Skip to content
Snippets Groups Projects

Add Kontainer Media Library widget

5 unresolved threads

Closes #3413406

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
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.
  • 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."),
  • 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();
  • 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'];
  • 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');
  • added 2 commits

    Compare with previous version

  • added 6 commits

    • d7cef012 - 1 commit from branch project:1.x
    • fb7add6b - Add Kontainer Media Library widget
    • 3d7d0304 - Fix cardinality problems for Media Library widget
    • 7081ae9c - Attach Kontainer select button to the Media library dialog
    • 1339f6ab - Code style fixes
    • 9b5851dc - Resolve uninstall blockade

    Compare with previous version

  • Domen Šlogar added 1 commit

    added 1 commit

    Compare with previous version

  • Domen Šlogar approved this merge request

    approved this merge request

  • merged

  • Please register or sign in to reply
    Loading