88use Drupal \Core \Field \FieldItemListInterface ;
99use Drupal \Core \Form \FormStateInterface ;
1010use Drupal \Core \Render \RendererInterface ;
11- use Drupal \file \FileInterface ;
1211use Symfony \Component \DependencyInjection \ContainerInterface ;
1312
1413/**
14+ * A view mode selector icons widget.
15+ *
1516 * @FieldWidget(
1617 * id = "view_mode_selector_icons",
1718 * label = @Translation("Icons"),
2122class ViewModeSelectorIcons extends ViewModeSelectorRadios {
2223
2324 /**
24- * @var \Drupal\Core\Render\RendererInterface $renderer
25+ * The renderer service.
26+ *
27+ * @var \Drupal\Core\Render\RendererInterface
2528 */
2629 protected $ renderer ;
2730
2831 /**
32+ * The entity type manager.
33+ *
2934 * @var \Drupal\Core\Entity\EntityTypeManagerInterface
3035 */
3136 protected $ entityTypeManager ;
@@ -34,12 +39,21 @@ class ViewModeSelectorIcons extends ViewModeSelectorRadios {
3439 * ViewModeSelectorIcons constructor.
3540 *
3641 * @param string $plugin_id
42+ * The plugin_id for the widget.
3743 * @param mixed $plugin_definition
44+ * The plugin implementation definition.
3845 * @param \Drupal\Core\Field\FieldDefinitionInterface $field_definition
46+ * The definition of the field to which the widget is associated.
3947 * @param array $settings
48+ * The widget settings.
4049 * @param array $third_party_settings
50+ * Any third party settings.
4151 * @param \Drupal\Core\Entity\EntityDisplayRepositoryInterface $entity_display_repository
52+ * The entity display repository.
53+ * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
54+ * The entity type manager.
4255 * @param \Drupal\Core\Render\RendererInterface $renderer
56+ * The renderer.
4357 */
4458 public function __construct ($ plugin_id , $ plugin_definition , FieldDefinitionInterface $ field_definition , array $ settings , array $ third_party_settings , EntityDisplayRepositoryInterface $ entity_display_repository , EntityTypeManagerInterface $ entity_type_manager , RendererInterface $ renderer ) {
4559 parent ::__construct ($ plugin_id , $ plugin_definition , $ field_definition , $ settings , $ third_party_settings , $ entity_display_repository );
@@ -79,7 +93,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
7993 $ output = [];
8094
8195 if (!empty ($ settings ['view_modes ' ][$ view_mode ]['icon ' ][0 ])) {
82- /** @var FileInterface $icon */
96+ /** @var \Drupal\file\ FileInterface $icon */
8397 $ icon = $ this ->entityTypeManager ->getStorage ('file ' )->load ($ settings ['view_modes ' ][$ view_mode ]['icon ' ][0 ]);
8498
8599 if (!$ icon ) {
@@ -89,49 +103,12 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
89103 $ render = [
90104 '#theme ' => 'image ' ,
91105 '#uri ' => $ icon ->getFileUri (),
92- '#alt ' => t ('Sample original image ' ),
106+ '#alt ' => $ this -> t ('Sample original image ' ),
93107 '#title ' => $ this ->viewModes [$ view_mode ],
94108 ];
95109
96110 $ output [] = $ this ->renderer ->render ($ render );
97111 }
98- /*
99- elseif (\Drupal::moduleHandler()->moduleExists('ds') && isset($ds_view_modes[$view_mode])) {
100- $field = $items->getFieldDefinition();
101- $entity_type = $field->getTargetEntityTypeId();
102- $bundle = $field->getTargetBundle();
103-
104- // When Display Suite is installed we can show a nice preview.
105- // @todo integrate with DS regions
106- $layout = $ds_view_modes[$view_mode]['layout'];
107-
108- // Create a new empty entity for the preview.
109- $entity_properties = ['type' => $entity_bundle, 'id' => FALSE];
110- $entity = entity_create($entity_type, $entity_properties);
111- $entity_view = entity_view($entity_type, [$entity], $view_mode);
112-
113- // Render one field containing a placeholder <div> in every region.
114- foreach ($layout['settings']['regions'] as $region_settings) {
115- foreach ($region_settings as $field) {
116- $entity_view[$entity_type][0][$field] = [
117- '#type' => 'html_tag',
118- '#tag' => 'div',
119- '#value' => '',
120- '#attributes' => ['class' => 'placeholder'],
121- '#field_name' => $field,
122- ];
123-
124- continue;
125- }
126- }
127-
128- // Disable contextual links.
129- $entity_view[$entity_type][0]['#contextual_links'] = FALSE;
130-
131- // Render the preview.
132- $output[] = drupal_render($entity_view);
133- }
134- */
135112 else {
136113 $ element ['value ' ][$ view_mode ]['#attributes ' ]['class ' ][] = 'no-preview ' ;
137114 }
@@ -141,7 +118,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
141118 }
142119
143120 // Use the generated markup as our label value.
144- $ element ['value ' ]['#options ' ][$ view_mode ] = implode ($ output , '' );
121+ $ element ['value ' ]['#options ' ][$ view_mode ] = implode ($ output , NULL );
145122 }
146123
147124 return $ element ;
0 commit comments