Плагин для модуля Flag, который при попытке анонимного пользователя поставить флаг покажет в диалоге форму входа.
// src/Plugin/ActionLink/AjaxLinkWithAuth.php
namespace Drupal\MODULENAME\Plugin\ActionLink;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Url;
use Drupal\flag\FlagInterface;
use Drupal\flag\Plugin\ActionLink\AJAXactionLink;
/**
* @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;
}
}
Созданный плагин нужно будет выбрать в форме редактирования флага.
Написанное актуально для
Flag 4
Похожие записи
- Показать второй шаг многошаговой формы в модальном окне
- Изменение результата ajax запроса на примере выполнения своей ajax-команды при установке/снятии флага
- Сделать чтобы форма входа открывалась в диалоге
- Открыть страницу или форму в диалоговом окне
- Показать в jQuery UI Dialog результат отправки формы
Добавить комментарий