Commit 7f5aee03 authored by scott_earnest's avatar scott_earnest
Browse files

Issue #3267476 by droath: Support token replacement for link title.

parent c8bb61d1
Loading
Loading
Loading
Loading
+43 −3
Original line number Diff line number Diff line
@@ -2,7 +2,9 @@

namespace Drupal\media_video_micromodal\Plugin\Field\FieldFormatter;

use Drupal\Core\Utility\Token;
use Drupal\Component\Utility\Html;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Field\FieldDefinitionInterface;
use Drupal\Core\Field\FieldItemListInterface;
@@ -39,14 +41,28 @@ class MicromodalFieldFormatter extends FormatterBase {
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  private $entityTypeManager;
  private EntityTypeManagerInterface $entityTypeManager;

  /**
   * The state.
   *
   * @var \Drupal\Core\State\State
   */
  private $state;
  private State $state;

  /**
   * Token utility.
   *
   * @var \Drupal\Core\Utility\Token
   */
  protected Token $token;

  /**
   * Module handler.
   *
   * @var \Drupal\Core\Extension\ModuleHandlerInterface
   */
  protected ModuleHandlerInterface $moduleHandler;

  /**
   * Constructs a MicromodalFieldFormatter instance.
@@ -67,13 +83,19 @@ class MicromodalFieldFormatter extends FormatterBase {
   *   Any third party settings settings.
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   The entity type manager.
   * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
   *   The module handler service.
   * @param \Drupal\Core\Utility\Token $token
   *   The token service.
   * @param \Drupal\Core\State\State $state
   *   State.
   */
  public function __construct($plugin_id, $plugin_definition, FieldDefinitionInterface $field_definition, array $settings, $label, $view_mode, array $third_party_settings, EntityTypeManagerInterface $entity_type_manager, State $state) {
  public function __construct($plugin_id, $plugin_definition, FieldDefinitionInterface $field_definition, array $settings, $label, $view_mode, array $third_party_settings, EntityTypeManagerInterface $entity_type_manager, ModuleHandlerInterface $module_handler, Token $token, State $state) {
    parent::__construct($plugin_id, $plugin_definition, $field_definition, $settings, $label, $view_mode, $third_party_settings);
    $this->entityTypeManager = $entity_type_manager;
    $this->state = $state;
    $this->token = $token;
    $this->moduleHandler = $module_handler;
  }

  /**
@@ -89,6 +111,8 @@ class MicromodalFieldFormatter extends FormatterBase {
      $configuration['view_mode'],
      $configuration['third_party_settings'],
      $container->get('entity_type.manager'),
      $container->get('module_handler'),
      $container->get('token'),
      $container->get('state')
    );
  }
@@ -140,6 +164,16 @@ class MicromodalFieldFormatter extends FormatterBase {
        ],
      ];

      if ($this->moduleHandler->moduleExists('token')) {
        $settings['link_text']['#description'] .= $this->t('<br/><strong>Note</strong>: This field supports tokens.');
        $settings['token_replacement'] = [
          '#theme' => 'token_tree_link',
          '#token_types' => [
            $this->fieldDefinition->getTargetEntityTypeId(),
          ],
        ];
      }

    }

    // For oembed generated thumbnails - allow for choices of image styles.
@@ -357,6 +391,12 @@ class MicromodalFieldFormatter extends FormatterBase {
            // Check if the link text has been filled in.
            if (!empty($this->getSetting('link_text'))) {
              $label = Html::escape($this->getSetting('link_text'));
              if ($this->moduleHandler->moduleExists('token')) {
                $data = [
                  $media->getEntityTypeId() => $media,
                ];
                $label = $this->token->replace($label, $data, ['clear' => TRUE]);
              }
            }
            else {
              $label = $media->getName();