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;
}
}
