ept_core-1.4.2/src/Services/GenerateJS.php
src/Services/GenerateJS.php
<?php
namespace Drupal\ept_core\Services;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\media\OEmbed\UrlResolver;
use Drupal\Core\File\FileUrlGeneratorInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
/**
* Transform Paragraph settings in JS.
*/
class GenerateJS {
/**
* The EPT 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;
/**
* The entity type manager.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;
/**
* 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.
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* The entity type manager.
*/
public function __construct(ConfigFactoryInterface $config_factory, UrlResolver $url_resolver, FileUrlGeneratorInterface $file_url_generator, EntityTypeManagerInterface $entity_type_manager) {
$this->config = $config_factory->get('ept_core.settings');
$this->urlResolver = $url_resolver;
$this->fileUrlGenerator = $file_url_generator;
$this->entityTypeManager = $entity_type_manager;
}
/**
* Generate JS from $settings.
*/
public function generateFromSettings($settings) {
$javascript_data = [];
if (!empty($settings['other_settings']['background_media'])) {
$media = $this->entityTypeManager->getStorage('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();
$media_url = $this->fileUrlGenerator->generateAbsoluteString($uri);
if (!empty($media_url) && !empty($settings['other_settings']['background_image_style']) &&
$settings['other_settings']['background_image_style'] == 'parallax') {
$javascript_data['eptCoreParallax']['mediaUrl'] = $media_url;
}
}
elseif (!empty($media) && $media->bundle() == 'remote_video') {
$javascript_data['eptCoreBackgroundRemoteVideo']['mediaUrl'] = $media->field_media_oembed_video->value;
$provider = $this->urlResolver->getProviderByUrl($media->field_media_oembed_video->value);
if ($provider->getName() == 'YouTube') {
$javascript_data['eptCoreBackgroundRemoteVideo']['mediaProvider'] = 'YouTube';
}
}
}
return $javascript_data;
}
}
