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;
}
}
}