content_lock-8.x-2.1/src/Plugin/views/field/ContentLockBreak.php

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

namespace Drupal\content_lock\Plugin\views\field;

use Drupal\Component\Render\MarkupInterface;
use Drupal\Core\GeneratedLink;
use Drupal\Core\Link;
use Drupal\Core\Url;
use Drupal\views\Attribute\ViewsField;
use Drupal\views\Plugin\views\field\FieldPluginBase;
use Drupal\views\ResultRow;

/**
 * Field handler to present a link to an entity.
 *
 * @group views_field_handlers
 *
 * @ViewsField("content_lock_break_link")
 */
#[ViewsField('content_lock_break_link')]
class ContentLockBreak extends FieldPluginBase {

  /**
   * Prepares link to the file.
   *
   * @param string|\Drupal\Component\Render\MarkupInterface $data
   *   The XSS safe string for the link text.
   * @param \Drupal\views\ResultRow $values
   *   The values retrieved from a single row of a view's query result.
   *
   * @return \Drupal\Core\GeneratedLink
   *   Returns the generated link.
   */
  protected function renderLink(string|MarkupInterface $data, ResultRow $values): GeneratedLink {
    $entity = $this->getEntity($values);
    $url = Url::fromRoute(
      'content_lock.break_lock.' . $entity->getEntityTypeId(),
      [
        'entity' => $entity->id(),
        'langcode' => $entity->language()->getId(),
        'form_op' => $values->content_lock_form_op ?? '*',
      ]
    );

    $break_link = Link::fromTextAndUrl($this->t('Break lock'), $url);
    return $break_link->toString();
  }

  /**
   * {@inheritdoc}
   */
  public function render(ResultRow $values): string|MarkupInterface {
    $value = $this->getValue($values);
    return $this->renderLink($this->sanitizeValue($value), $values);
  }

}

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

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