degov-8.x-2.0/modules/degov_media_gallery/degov_media_gallery.module
modules/degov_media_gallery/degov_media_gallery.module
<?php
/**
* @file
* Contains hooks and custom functionds for the degov_media_gallery module.
*/
use Drupal\degov_common\Common;
use Drupal\media\Entity\Media;
/**
* Implements hook_preprocess().
*/
function degov_media_gallery_preprocess(&$variables, $hook, &$info)
{
// Add template suggestions and libraries implemented in this module.
Common::addThemeSuggestions($variables, $hook, $info, [
'module_name' => 'degov_media_gallery',
'entity_type' => 'media',
'entity_bundles' => ['gallery'],
'entity_view_modes' => [
'usage',
'preview',
'search',
'embedded',
'reference',
],
]);
}
/**
* Implements hook_preprocess_media().
*/
function degov_media_gallery_preprocess_media(&$variables)
{
/** @var \Drupal\media\Entity\Media $media */
$media = $variables['elements']['#media'];
if ($media->bundle() === 'gallery') {
/** @var \Drupal\Core\Entity\Entity\EntityViewDisplay $display */
$display = \Drupal::entityTypeManager()
->getStorage('entity_view_display')
->load('media.gallery.default');
$component = $display->getComponent('field_gallery_images');
$component['settings']['view_mode'] = 'teaser_squared_1_1';
$variables['content']['preview'] = $media->get('field_gallery_images')->view($component);
$variables['content']['totalImages'] = $media->get('field_gallery_images')->count();
/** @var \Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem $item */
foreach ($media->get('field_gallery_images') as $item) {
$media = Media::load($item->getValue('id')['target_id']);
$uri = $item->entity->image->get(0)->entity->uri->value;
$fieldAllowDownload = NULL;
if (!empty($mediaFirstValue = $media->get('field_allow_download')->first())) {
$fieldAllowDownload = $mediaFirstValue->getValue()['value'];
}
$variables['#attached']['drupalSettings']['degov_media_gallery']['imagesDownloadLinks'][] = [
'uri' => file_create_url($uri),
'width' => $item->entity->image->get(0)->width,
'height' => $item->entity->image->get(0)->height,
'field_allow_download' => $fieldAllowDownload,
];
}
$media_current = $variables['elements']['#media'];
$variables['gallery_url'] = $media_current->url();
}
}
/**
* Implements hook_preprocess_type().
*/
function degov_media_gallery_preprocess_media__gallery(&$variables)
{
$variables['created'] = $variables['elements']['#media']->created->value;
}
