degov-8.x-2.0/modules/degov_paragraph_media_reference/degov_paragraph_media_reference.module

modules/degov_paragraph_media_reference/degov_paragraph_media_reference.module
<?php

use Drupal\degov_common\Common;

/**
 * Implements hook_preprocess().
 */
function degov_paragraph_media_reference_preprocess(&$variables, $hook, &$info) {
  // Add template suggestions and libraries implemented in this module.
  Common::addThemeSuggestions($variables, $hook, $info, [
    'module_name' => 'degov_paragraph_media_reference',
    'entity_type' => 'paragraph',
    'entity_bundles' => ['media_reference'],
    'entity_view_modes' => ['default', 'preview'],
  ]);
}

/**
 * Implements hook_field_widget_form_alter().
 */
function degov_paragraph_media_reference_field_widget_form_alter(&$element, \Drupal\Core\Form\FormStateInterface $form_state, $context) {
  /** @var \Drupal\Core\Field\WidgetBase $widget */
  $widget = $context['widget'];
  // Add media_reference library on every media reference paragraph.
  if ($widget->getPluginId() == 'entity_reference_paragraphs' && !empty($element['subform']['field_media_reference_media'])) {
    $element['#attached']['library'][] = 'degov_paragraph_media_reference/media_reference';
  }
  if (in_array($widget->getPluginId(), ['entity_browser_entity_reference'])) {
    $formObject = $form_state->getFormObject();
    if ($formObject instanceof \Drupal\paragraphs_edit\Form\ParagraphEditForm) {
      $paragraph = $formObject->getEntity();
      if ($paragraph->bundle() == 'media_reference') {
        $element['#attached']['library'][] = 'degov_paragraph_media_reference/media_reference';
      }
    }
  }
}

/**
 * Implements hook_modules_installed().
 *
 * @param $modules
 *   An array of the modules that were installed.
 */
function degov_paragraph_media_reference_modules_installed($modules) {
  if (in_array('degov_paragraph_media_reference', $modules)) {
    // Set target bundles.
    /** @var \Drupal\Core\Config\ConfigInstallerInterface $config_installer */
    $config_installer = \Drupal::service('config.installer');
    if (!$config_installer->isSyncing()) {
      // Set target bundles.
      _degov_media_reference_bundle_list();
    }
  }
}

/**
 * Update field reference target bundles.
 */
function _degov_media_reference_bundle_list() {
  $enabled_bundles = [];
  $media_types = \Drupal\media\Entity\MediaType::loadMultiple();
  /** @var \Drupal\media\Entity\MediaType $media_type */
  foreach ($media_types as $media_type) {
    $enabled_bundles[$media_type->id()] = $media_type->id();
  }
  if (!empty($enabled_bundles)) {
    // Load the configuration for node_reference field storage.
    $config = \Drupal::configFactory()
      ->getEditable('field.field.paragraph.media_reference.field_media_reference_media');
    $settings = $config->get('settings');
    if (!empty($settings)) {
      $settings['handler_settings']['target_bundles'] = $enabled_bundles;
      $config->set('settings', $settings);
      $config->save(TRUE);
    }
  } else {
    drupal_set_message(t('There are no media bundles available'), 'warning');
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc