Drupal → Показать форму входа при попытке анонимного пользователя поставить флаг
Плагин для модуля Flag, который при попытке анонимного пользователя поставить флаг покажет в диалоге форму входа.
// src/Plugin/ActionLink/AjaxLinkWithAuth.php /** * @ActionLinkType( * id = "ajax_link_with_auth", * label = @Translation("AJAX link with authentication"), * description = "An AJAX JavaScript request will be made without reloading the page." * ) */ class AjaxLinkWithAuth extends AJAXactionLink { /** * {@inheritDoc} */ public function getAsFlagLink(FlagInterface $flag, EntityInterface $entity) { if ($this->currentUser->isAuthenticated()) { $build = parent::getAsFlagLink($flag, $entity); } else { $build = [ '#theme' => 'flag', '#flag' => $flag, '#flaggable' => $entity, '#action' => 'flag', '#access' => TRUE, '#title' => [ '#markup' => $flag->getShortText('flag'), ], '#attributes' => [ 'title' => $flag->getLongText('flag'), 'href' => Url::fromRoute('user.login')->toString(), 'class' => ['use-ajax'], 'data-dialog-type' => 'modal', ], '#attached' => [ 'library' => ['core/drupal.ajax'], ], ]; } return $build; } }
Созданный плагин нужно будет выбрать в форме редактирования флага.
Оставить комментарий