editoria11y-1.0.0-alpha8/src/Plugin/views/field/PagesByIssueLink.php

src/Plugin/views/field/PagesByIssueLink.php
<?php

namespace Drupal\editoria11y\Plugin\views\field;

use Drupal\Component\Render\MarkupInterface;
use Drupal\Core\GeneratedLink;
use Drupal\Core\Link;
use Drupal\Core\Url;
use Drupal\editoria11y\TestNames;
use Drupal\views\Plugin\views\field\Standard;
use Drupal\views\Render\ViewsRenderPipelineMarkup;
use Drupal\views\ResultRow;

/**
 * Render a field as a link to the pages by issue view.
 *
 * @ingroup views_field_handlers
 *
 * @ViewsField("editoria11y_pages_by_issue_link")
 */
class PagesByIssueLink extends Standard {

  /**
   * {@inheritdoc}
   */
  public function render(ResultRow $values): MarkupInterface|string|ViewsRenderPipelineMarkup|GeneratedLink {
    $value = parent::render($values);
    $label = $value;
    if (!empty($value)) {

      $translated = (new TestNames())->coreNames();
      if (isset($translated[$value->__toString()])) {
        $label = $translated[$value->__toString()];
      }
      elseif (isset($values->editoria11y_results_result_name)) {
        $label = $values->editoria11y_results_result_name;
      }

      $url = Url::fromUserInput("/admin/reports/editoria11y/alert", [
        'query' => [
          'alert' => $value,
        ],
      ]);

      $value = Link::fromTextAndUrl($label, $url)->toString();

    }

    return $value;
  }

}

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

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