Add Kontainer Media Library widget
5 unresolved threads
5 unresolved threads
Closes #3413406
Merge request reports
Activity
1 <?php 2 3 namespace Drupal\kontainer\Plugin\Field\FieldWidget; 4 5 use Drupal\Core\Ajax\AjaxResponse; 6 use Drupal\Core\Ajax\OpenModalDialogCommand; 7 use Drupal\Core\Field\FieldItemListInterface; 8 use Drupal\Core\Form\FormStateInterface; 9 use Drupal\media_library\MediaLibraryUiBuilder; 10 use Drupal\media_library\Plugin\Field\FieldWidget\MediaLibraryWidget; 11 12 /** 13 * Plugin implementation of the 'media_library_widget' widget. Add the correct widget id to the documentation comment.
Edited by Domen Šlogarchanged this line in version 3 of the diff
3 namespace Drupal\kontainer\Plugin\Field\FieldWidget; 4 5 use Drupal\Core\Ajax\AjaxResponse; 6 use Drupal\Core\Ajax\OpenModalDialogCommand; 7 use Drupal\Core\Field\FieldItemListInterface; 8 use Drupal\Core\Form\FormStateInterface; 9 use Drupal\media_library\MediaLibraryUiBuilder; 10 use Drupal\media_library\Plugin\Field\FieldWidget\MediaLibraryWidget; 11 12 /** 13 * Plugin implementation of the 'media_library_widget' widget. 14 * 15 * @FieldWidget( 16 * id = "kontainer_media_library_widget", 17 * label = @Translation("Kontainer Media library"), 18 * description = @Translation("Allows you to select kontainer items from the media library."), changed this line in version 3 of the diff
25 class KontainerMediaLibraryWidget extends MediaLibraryWidget { 26 27 /** 28 * {@inheritdoc} 29 */ 30 public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) { 31 $element = parent::formElement($items, $delta, $element, $form, $form_state); 32 $element['open_button']['#media_library_state']->set('widget_id', $this->getPluginId()); 33 return $element; 34 } 35 36 /** 37 * {@inheritdoc} 38 */ 39 public static function openMediaLibrary(array $form, FormStateInterface $form_state) { 40 $triggering_element = $form_state->getTriggeringElement(); changed this line in version 3 of the diff
33 return $element; 34 } 35 36 /** 37 * {@inheritdoc} 38 */ 39 public static function openMediaLibrary(array $form, FormStateInterface $form_state) { 40 $triggering_element = $form_state->getTriggeringElement(); 41 $library_ui = \Drupal::service('media_library.ui_builder')->buildUi($triggering_element['#media_library_state']); 42 $dialog_options = MediaLibraryUiBuilder::dialogOptions(); 43 // Add widget_id to each Media type url available in dialog. 44 // We need it in order to attach the Kontainer select button in the form. 45 if (array_key_exists('menu', $library_ui) && is_array($library_ui['menu']) && array_key_exists('#links', $library_ui['menu']) && is_array($library_ui['menu']['#links'])) { 46 if (array_key_exists('#media_library_state', $triggering_element)) { 47 /** @var \Drupal\media_library\MediaLibraryState $mediaLibrayState */ 48 $mediaLibraryState = $triggering_element['#media_library_state']; changed this line in version 3 of the diff
172 169 } 173 170 } 171 172 /** 173 * Implements hook_form_alter(). 174 */ 175 function kontainer_form_alter(&$form, FormStateInterface $form_state, $form_id) { 176 if ($form_id === 'views_exposed_form') { 177 $form_state_storage = $form_state->getStorage(); 178 if (array_key_exists('view', $form_state_storage)) { 179 /** @var \Drupal\views\ViewExecutable $view */ 180 $view = $form_state_storage['view']; 181 $query_parameters = $view->getRequest()->query->all(); 182 if (array_key_exists('widget_id', $query_parameters) && $query_parameters['widget_id'] === 'kontainer_media_library_widget') { 183 /** @var \Drupal\kontainer\Service\KontainerServiceInterface $kontainer_service */ 184 $kontainer_service = Drupal::service('kontainer_service'); changed this line in version 3 of the diff
added 2 commits
added 6 commits
Toggle commit list
Please register or sign in to reply