Рейтинг:1

Как я могу использовать другой диалог для снятия флага, чем для установки флага?

флаг pe

В моем проекте есть специальный флаг с полем ссылки на сущность в нем для узлов типа контента, который я назову здесь «корзина».

Как это работает:

  • Флаг «добавить в корзину» появляется на узлах типа «Статья».
  • Если пользователь хочет поместить узел в корзину, он нажимает флаг «добавить в корзину».
  • Флаг «добавить в корзину» настроен на отображение диалога (на данный момент не модального)
  • Диалог позволяет им выбрать ведро; при отправке диалога пометка создается с отношением к выбранному сегменту

Все это отлично работает (просмотры позволяют пользователю видеть статьи в каждой корзине)

Проблема возникает, когда пользователь решает удалить пометка от узла.

Модуль флага использует тот же диалог, только с добавленной в него кнопкой «удалить». Поскольку это тот же диалог, который используется для добавления флажков, в нем есть поле ссылки на объект со списком сегментов... но это бессмысленно. Нажатие «Удалить» удаляет пометку независимо от того, к какому «сегменту» она относится.

В диалоговом окне также есть кнопка «Сохранить», которая не имеет смысла в этом контексте.

Я бы хотел, чтобы пользователи не видели поле ссылки на сущность при снятии флага... а также не видели кнопку сохранения.

Опция 1: возможно для этого есть настройка в конфигурации флага и я иду на фейспалм . . . но я не вижу настройку, если она существует. (Слепота от усталости? Я делал это раньше!)

Вариант 2: используйте CSS, чтобы скрыть эти два элемента. Проблема: не существует классов, позволяющих отличить контекст удаления от контекста добавления. Может я что-то там упускаю? Я вижу, что в моей теме form.html.twig обрабатывает отдельные элементы формы, но я не вижу, какой шаблон генерирует диалог.С этой информацией, может быть, какая-то логика может войти в шаблон, чтобы создать некоторые классы для неизменности?

Вариант 3: заставить его использовать другую форму для сброса. ... Как это сделать?

Может быть, есть модуль, который может это сделать, или их комбинация? Я не нашел ни одного.

Если мне нужно будет закодировать модуль, какие-нибудь советы по общему подходу? (Примечание: раньше я кодировал, может быть, два крошечных модуля, в основном вырезал и вставлял, так что... уровень навыков для этого, вероятно, «ниже новичка». Так что используйте короткие слова, лол)

Рейтинг:0
флаг cn

У меня есть сайт, который в основном имеет ту же настройку, что и ваш: некоторые флаги имеют поля, и я использую Форма ввода поля тип ссылки, чтобы пользователь мог установить поля для пометки.

Однако установка полей на снятие флага не имеет смысла, поэтому я хочу прямую ссылку на снятие флага.

Настраивать

  1. Перейдите на страницу редактирования администратора для вашего флага по адресу /админ/структура/флаги/управление/.
  2. За Тип ссылки, использовать Форма ввода поля.

Это позволит пользователям редактировать поля, когда они помечают их, но не отображать поля при снятии флажков.

Я почти уверен, что это все, что вам нужно сделать. Это определенно работает на моем сайте, поэтому, если этого недостаточно, дайте мне знать, и я покопаюсь в своем коде и посмотрю, что я изменил. (Я написал это пару лет назад, поэтому я не очень хорошо его помню.)

флаг pe
Спасибо, но этот ящик уже включен. Что вы выбрали в разделе «Поведение формы»? Кроме того, если это ошибка, какую версию модуля Flag вы используете и какую версию Drupal? (у меня сейчас 8.x-4.0-beta3 и D 9.3.12)
флаг cn
Поведение формы установлено на «Новая страница». Также работает 4.0-beta3 + 9.3.12.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.