You are here

function panopoly_media_form_entity_embed_dialog_alter in Panopoly 8.2

Implements hook_form_FORM_ID_alter().

Alters the display mode offerings of the embed entity module to be more user friendly, and reflect what is available.

File

modules/panopoly/panopoly_media/panopoly_media.module, line 57
Hook implementations for Panopoly Media.

Code

function panopoly_media_form_entity_embed_dialog_alter(&$form, FormStateInterface $form_state) {
  if ($form_state
    ->get('step') == 'embed') {

    /** @var \Drupal\Core\Entity\EntityInterface $entity */
    $entity = $form_state
      ->get('entity');
    switch ($entity
      ->bundle()) {
      case 'panopoly_media_image':
        $options =& $form['attributes']['data-entity-embed-display']['#options'];
        $enabled_options = [
          'view_mode:media.embed_large' => t('Original size'),
          'view_mode:media.embed_medium' => t('Quarter size'),
          'view_mode:media.embed_small' => t('Thumbnail'),
          'entity_reference:media_thumbnail' => t('Custom'),
        ];
        foreach ($options as $key => $option) {
          if (isset($enabled_options)) {
            $options[$key] = $enabled_options[$key];
          }
          else {
            unset($options[$key]);
          }
        }
        $embed_display_element =& $form['attributes']['data-entity-embed-display-settings'];
        if (array_key_exists('image_style', $embed_display_element)) {
          foreach ($embed_display_element['image_style']['#options'] as $key => $option) {

            // @todo Expose this as a setting in Panopoly settings.
            if (strpos($key, 'panopoly_') === FALSE) {
              unset($embed_display_element['image_style']['#options'][$key]);
            }
          }
        }
        break;

      // There are no custom displays for files or videos. Force to default
      // for now, until file (PDF preview) or video formatters (set size) added.
      case 'panopoly_media_video':
      case 'panopoly_media_file':
        $form['attributes']['data-entity-embed-display']['#default_value'] = 'view_mode:media.embed_large';
        $form['attributes']['data-entity-embed-display']['#access'] = FALSE;
    }
  }
}