ebt_core-1.0.0-alpha3/src/Services/GenerateJS.php

src/Services/GenerateJS.php
<?php

namespace Drupal\ebt_core\Services;

use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\media\Entity\Media;
use Drupal\media\OEmbed\UrlResolver;
use Drupal\Core\File\FileUrlGeneratorInterface;

/**
 * Transform Block settings in JS.
 */
class GenerateJS {

  /**
   * The EBT Core configuration.
   *
   * @var \Drupal\Core\Config\Config
   */
  protected $config;

  /**
   * Converts oEmbed media URLs into endpoint-specific resource URLs.
   *
   * @var \Drupal\media\OEmbed\UrlResolver
   */
  protected $urlResolver;

  /**
   * The file URL generator.
   *
   * @var \Drupal\Core\File\FileUrlGeneratorInterface
   */
  protected $fileUrlGenerator;

  /**
   * Constructs a new GenerateCSS object.
   *
   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
   *   Config factory.
   * @param \Drupal\media\OEmbed\UrlResolver $url_resolver
   *   Converts oEmbed media URLs into endpoint-specific resource URLs.
   * @param \Drupal\Core\File\FileUrlGeneratorInterface $file_url_generator
   *   The file URL generator.
   */
  public function __construct(ConfigFactoryInterface $config_factory, UrlResolver $url_resolver, FileUrlGeneratorInterface $file_url_generator = NULL) {
    $this->config = $config_factory->get('ebt_core.settings');
    $this->urlResolver = $url_resolver;
    if (!$file_url_generator && \Drupal::hasService('file_url_generator')) {
      $file_url_generator = \Drupal::service('file_url_generator');
    }
    $this->fileUrlGenerator = $file_url_generator;
  }

  /**
   * Generate JS from $settings.
   */
  public function generateFromSettings($settings) {
    $javascript_data = [];

    if (!empty($settings['other_settings']['background_media'])) {
      $media = Media::load($settings['other_settings']['background_media']);
      if (!empty($media) && $media->bundle() == 'image') {
        /** @var \Drupal\file\Entity\File $file */
        $file = $media->field_media_image->entity;
        $uri = $file->getFileUri();
        if ($this->fileUrlGenerator !== NULL) {
          $media_url = $this->fileUrlGenerator->generateAbsoluteString($uri);
        }
        else {
          // Add support for Drupal 9.2 and below.
          $media_url = file_url_transform_relative(file_create_url($uri));
        }
        if (!empty($media_url) && !empty($settings['other_settings']['background_image_style']) &&
          $settings['other_settings']['background_image_style'] == 'parallax') {
          $javascript_data['ebtCoreParallax']['mediaUrl'] = $media_url;
        }
      }
      elseif (!empty($media) && $media->bundle() == 'remote_video') {
        $javascript_data['ebtCoreBackgroundRemoteVideo']['mediaUrl'] = $media->field_media_oembed_video->value;
        $provider = $this->urlResolver->getProviderByUrl($media->field_media_oembed_video->value);
        if ($provider->getName() == 'YouTube') {
          $javascript_data['ebtCoreBackgroundRemoteVideo']['mediaProvider'] = 'YouTube';
        }
      }
    }

    return $javascript_data;
  }

}

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

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