You are here

function media_directories_editor_form_entity_embed_dialog_alter in Media Directories 2.x

Same name and namespace in other branches
  1. 8 modules/media_directories_editor/media_directories_editor.module \media_directories_editor_form_entity_embed_dialog_alter()

Implements hook_form_FORM_ID_alter().

File

modules/media_directories_editor/media_directories_editor.module, line 79
Main module file.

Code

function media_directories_editor_form_entity_embed_dialog_alter(&$form, FormStateInterface $form_state, $form_id) {
  $storage = $form_state
    ->getStorage();

  /** @var \Drupal\media\Entity\Media $entity */
  $entity = $storage['entity'];

  /** @var \Drupal\embed\Entity\EmbedButton $embed_button */
  $embed_button = $storage['embed_button'];
  if ($entity !== NULL) {

    /** @var \Drupal\file\Entity\File $file */
    $file = $entity
      ->get('thumbnail')->entity;
    $image = [
      '#theme' => 'image_style',
      '#style_name' => 'thumbnail',
      '#alt' => $entity
        ->label(),
      '#uri' => $file
        ->getFileUri(),
    ];
    $link = [
      '#type' => 'link',
      '#title' => $image,
      '#url' => $entity
        ->toUrl(),
      '#attributes' => [
        'target' => '_blank',
      ],
    ];
    $form['entity']['#title'] = t('Selected item');
    $form['entity']['link'] = $link;
    unset($form['entity']['#markup']);
  }
  if (isset($form['attributes']['data-entity-embed-display-settings']) && $entity
    ->bundle() === 'image') {
    $entity_element = $form_state
      ->get('entity_element');
    if (isset($entity_element['data-entity-embed-display-settings']) && !is_array($entity_element['data-entity-embed-display-settings'])) {
      $entity_element['data-entity-embed-display-settings'] = Json::decode($entity_element['data-entity-embed-display-settings']);
    }
  }

  // Add bundle validation constraint to entity browser.
  if (isset($form['entity_browser'])) {
    $bundles = $embed_button
      ->getTypeSetting('bundles');
    $bundles = array_combine($bundles, $bundles);
    $form['entity_browser']['#entity_browser_validators']['target_bundles'] = [
      'bundle' => $bundles,
    ];
  }
}