Drupal → Модуль Auto-Dialog — показываем контент и формы в jQuery диалоге

19.04.2014

Выложил свой модуль Auto-Dialog в котором попытался воспроизвести в Drupal 7 диалоговую систему из Drupal 8. Модуль позволяет открывать любые страницы в jQuery диалоге.

Использование очень простое — достаточно включить модуль и добавить на страницу ссылку с классом autodialog:

<a href="/contact" class="autodialog">Обратная связь</a>

Результат клика по такой ссылке:

Модуль поддерживает пользовательские настройки диалога, которые должны указываться в атрибутах data-dialog-{option-name}. Например:

<a href="/contact" class="autodialog" data-dialog-width="500">Диалог шириной 500 пикселей</a>
<a href="/contact" class="autodialog" data-dialog-title="Feedback">Диалог с заголовком "Feedback"</a>

Так же модуль умеет AJAX-ифицировать открываемые формы с помощью Asaf. Для этого нужно добавить ссылке атрибут data-dialog-ajax="true" (сам Asaf при этом настраивать не нужно):

<a href="/contact" class="autodialog" data-dialog-ajax="true">Обратная связь</a>

Некоторые формы после сабмита перезагружают страницу или делают редирект. Чтобы этого не происходило и диалог не закрывался, нужно добавить ссылке атрибут data-dialog-ajax-disable-redirect="true":

<a href="/contact" class="autodialog" data-dialog-ajax="true" data-dialog-ajax-disable-redirect="true">Обратная связь</a>

Видео:

Написанное актуально для
Drupal 7
Похожие записи

Комментарии

Гость
11.06.2017, 22:27

Не работало для гостей. Оказалось что надо дать права на Quick Edit (Доступ до встроенного редактора)

Подскажите как привязать форму добавления комментариев (модуль Comment) к этому модулю?

Так же, как любую другую форму. Пример есть в посте.

Странно в примере указана ссылка на страницу /contact. Drupal знаю пока плохо. но как все же указать cодержимое формы в ссылке :
Диалог шириной 500 пикселей
В описании к моду сказано "Модуль позволяет открывать любые страницы в jQuery диалоге." Получается только страницы?

Ну а куда вы форму собрались отправлять если у неё нет страницы?

То есть нужно создать материал в котором следует расположить форму?

Нужно иметь страницу с формой. Как вы её создадите значение не имеет.

Понятно, проверил на формах созданных при помощи модуля webform, у которых имеется страница, все работает. Получается у формы добавления комментариев нет своей страницы.

Делаю добавление field collection с autodialog. field collection вывожу через вьюс. После сохранения перекидывает в окне на страницу подтверждения. Как реализовать автоматическое закрытие autodialog окна после сохранения field collection?

<a href="/[field_path]/[item_id]/edit?destination=[host_entity_path]" class="autodialog" data-dialog-ajax="true" data-dialog-ajax-disable-redirect="true">Edit</a>

Вот такая ссылка у меня

Вопрос свожу до минимума: как в своем js закрыть открытый диалог?

Гость
22.11.2017, 23:45

Приветствую. Подскажите пожалуйста, как из куки подставить значение в поля? Для форм, которые не используют autodialog, есть написанный js — работает. Но вот при открытии через autodialog, js уже не срабатывает.

Гость
23.11.2017, 13:18

Спасибо. Разобрался. Работает.

Долго копался... В своем js закрываю диалог окно $('.autodialog-content').dialog("close"); Это работает, но скрипт работает постоянно и при последующем открытии сразу закрывает окно. Как можно решить эту проблему?

Проблема. Открываю диалог, потом закрываю (на крест вверху или кликаю на поле вне диалога). Опять открываю на этой же странице. Появляется сообщение об ошибке "Uncaught Error: cannot call methods on dialog prior to initialization; attempted to call method 'option'", а наряду с окном нового диалога - внизу страницы - старый диалог.

Сергей
24.12.2018, 14:48

Здравствуйте
Реализация понравилась, очень. Если Вам позволит время и будет желание, пожалуйста, подскажите:
1. Хочу использовать скрытую капчу. Но в "окошке" эта капча видна. Каким образом ее скрыть?
2. В README.txt написано использовать два файла. Их подключать нужно именно таким образом как написано, или подойдет "друпаловский" способ? (хотя " Исходный код страницы" говорит, что эти файлы подключены, но jquery.ui.dialog.scrollfix.css - не "работает")
Спасибо!

О какой капче речь? В каком README? Какие два файла? Каким образом написано их подключать? Что значит "jquery.ui.dialog.scrollfix.css не работает"?

Сергей
24.12.2018, 19:10

В этих капчах некоторые поля скрыты должны быть, и в вебформах они скрыты. А в окошке autodialog-а они видимы, что не должно быть)

Сергей
26.12.2018, 22:46

Исходя из даты публикации и учитывая изменения в "библиотеках" на сегодня, сабж "из коробки" работать будет не совсем так же))

Гость
18.03.2019, 00:06

Доброго времени суток.
Спасибо за модуль очень помог. Подскажите пожалуйста как можно запустить процесс "индексации" ссылок autodialog самостоятельно.
У меня возникла проблема с id ссылок после того как часть страницы обновляется по ajax (подгружается ссылки для модуля, но они не проиндексированы и соответственно не отрабатываю).
Подскажите как можно запустить "индексацию" после обновления части контента по ajax

Роман
10.04.2019, 22:29

Добрый вечер. Большое спасибо за модуль, очень полезный.
Столкнулся с такой задачкой.
В данном диалоге запускаю форму добавления ноды определенного типа с опциями data-dialog-ajax="true" и data-dialog-ajax-disable-redirect="true". Не смог пока решить вопрос, как можно прицепиться к сабмиту данной формы с помощью JavaScript / JQuery. То есть, я ввожу данные новой ноды, нажимаю кнопку "Сохранить" и если происходит сохранение ноды, а не ошибка валидации, то выполняется какое-то действие.
Вы случайно не знаете, как решить такую задачу?
Заранее благодарен за ответ.

В hook_asaf_form_ajax_commands_alter() добавьте нужную ajax команду

Долго мучался, наконец понял что data-dialog-ajax="true" и data-dialog-ajax-disable-redirect="true" работают только со включенным модулем Asaf :D
Автору, Спасибо за модуль (Auto-Dialog)!

Роман
13.04.2019, 19:48

Добрый вечер.
Еще один вопрос по модулю.
Допустим, я с помощью этого диалога вызываю некую форму.
Возможно ли с помощью data-dialog-{my-param} передать какие-то свои параметры так, чтобы можно было их получить через hook_form_alter ?
Или возможно только таким способом, как

Роман
13.04.2019, 19:57

Всё, нашел решение по своему вопросу.
$form['#autodialog_options']

Привет,

подскажите как вывести messages, если у меня например по форме человек не прошел валидацию?

Спасибо.

Сори, уточнение к пред. комментарию, вывести messages в диалоговом окне

Андрей
09.10.2019, 16:20

Добрый день
Сейчас когда установлен Asaf и проставлены два параметра
data-dialog-ajax="true" data-dialog-ajax-disable-redirect="true"
То в модальном окне форма создания например ноды успешно отрабатывает в Ajax-е
А можно ли при успешном сабмите формы, когда нода сохранилась и после того как друпал написал о том, что материал успешно сохранён, то окно автоматически через определенное кол-во секунд само закрывалось

Павел
04.11.2019, 22:50

Доброго времени суток!
Подскажите как сделать так чтобы всплывающие (созданное с помощью вашего модуля) окно можно было двигать за рамки экрана?

Что не так с политикой безопасности у этого модуля?
"This project is not covered by the security advisory policy.
Use at your own risk! It may have publicly disclosed vulnerabilities."

Модуль не проходил аудит на безопасность

Использовать как есть и его уже не вылечить?

Модуль безопасен, просто его никто не проверял и уже не будет проверять.

Михаил
19.03.2023, 06:31

Доброго дня! Не подскажите, как пофиксить: с помощью auto-dialog открывается форма Ajax, после отправки формы модальное окно перестраивается в рамках нового контента и сбивается в лево, становится не по центру. Не подскажите, куда копать? Был бы очень признателен.

Михаил
19.03.2023, 08:55

Вопрос снимается))) все через css работает

Михаил
23.03.2023, 14:29

Доброго дня! Подскажите, через ссылку с классом autodialog можно передать GET параметр в форму, которая открывается по этой ссылке? Или это нот риал из-за того что адрес в строке не меняется?

Михаил
24.03.2023, 05:26

@xandeadx такой вариант первым делом попробовал, но $_GET пустой в форму приходит.

Семён
25.02.2024, 19:42

Как сделать вызов своих(ей) или существующих(ей) в системе форм(ы) без тега A с URL?

Не очень хорошая SEO идея: на сайте по страницам много кнопок в URL-ах (перезвоните, заказать и т.д.) ведущих к форме, которая в поиске не абсолютно нуждается…

Добавить комментарий