varbase_media-9.0.0-alpha1/modules/varbase_media_instagram/varbase_media_instagram.module

modules/varbase_media_instagram/varbase_media_instagram.module
<?php

/**
 * @file
 * Support for instagram posts as media entities.
 */

use Drupal\Core\Form\FormStateInterface;
use Drupal\entity_browser_generic_embed\OverrideHelper;
use Drupal\varbase_media_instagram\Plugin\media\Source\VarbaseMediaInstagram;

/**
 * Implements hook_media_source_info_alter().
 */
function varbase_media_instagram_media_source_info_alter(array &$sources) {

  if ($sources['oembed:instagram']) {
    $sources['oembed:instagram']['input_match'] = [
      'constraint' => 'InstagramEmbedCode',
      'field_types' => [
        'string',
        'string_long',
      ],
    ];
    $sources['oembed:instagram']['preview'] = TRUE;

    OverrideHelper::pluginClass($sources['oembed:instagram'], VarbaseMediaInstagram::class);
  }
  elseif ($sources['instagram']) {
    $sources['instagram']['input_match'] = [
      'constraint' => 'InstagramEmbedCode',
      'field_types' => [
        'string',
        'string_long',
      ],
    ];
    $sources['instagram']['preview'] = TRUE;

    OverrideHelper::pluginClass($sources['instagram'], VarbaseMediaInstagram::class);
  }
}

/**
 * Implements hook_form_FORM_ID_alter().
 */
function varbase_media_instagram_form_entity_embed_dialog_alter(&$form, FormStateInterface $form_state, $form_id) {
  // Only at the embed step.
  if ($form_state->get('step') == 'embed') {

    // Get the entity values and attributes.
    $entity_element = [];
    $entity_element += $form_state->get('entity_element');
    $form_state->set('entity_element', $entity_element);
    $entity = $form_state->get('entity');

    // Get the entity bundle type.
    $bundle_type = $entity->bundle();

    if ($bundle_type == "instagram") {
      $builder = \Drupal::entityTypeManager()->getViewBuilder($entity->getEntityTypeId());

      // Render the Embed entity.
      $form['entity'] = [
        '#type' => 'item',
        '#markup' => \Drupal::service('renderer')->renderRoot($builder->view($entity, 's06')),
      ];

      if (isset($form['attributes']['data-align'])) {
        unset($form['attributes']['data-align']);
      }

      if (isset($form['attributes']['data-entity-embed-display-settings'])) {
        unset($form['attributes']['data-entity-embed-display-settings']);
      }

      if (isset($form['attributes']['data-caption'])) {
        unset($form['attributes']['data-caption']);
      }

      if (isset($form['attributes']['data-entity-embed-display'])) {
        $form['attributes']['data-entity-embed-display']['#access'] = FALSE;
        $form['attributes']['data-entity-embed-display']['#default_value'] = 'view_mode:media.original';
      }
    }
  }
}

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

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