Вы здесь

Создание модального окна через CTools

0

Доброго времени суток.

Задача следующая: сделать через CTools модальное окно для подтверждения удаления материала (на странице редактирования материала). При этом редактирование материала происходит в переопределённом шаблоне (без оверлея) и доступно для пользователя, создавшего ноду.

Нашёл кучу ссылок в гугле о том, как показать любую форму в модальном окне, но как показать не какую-то кастомную форму, а страницу удаления материала (node/[nid]/delete) — не очень понимаю.

Иными словами: пользователь нажимает "Изменить материал", кликает на кнопку (стандартную, друпаловскую) "Удалить" и вместо перехода на стандартную страницу node/[nid]/delete появляется модальное окошко с этой страницей. Жмём на "Удалить" — нода удаляется, окошко закрывается, происходит редирект на главную (или в профиль пользователя — без разницы), а если нажать на стандартную ссылку "Отмена" — то окошко просто закрывается (без редиректа).

Вроде как в этом может помочь модуль CTools Auto-modal. В примере написано следующее:

function mymodule_menu() {
  $items['mymodule/form'] = array(
    'page callback' => 'drupal_get_form',
    'page arguments' => array('mymodule_form'),
    'access arguments' => array('administer mymodule'),
    'modal' => TRUE, // This line is where the magic happens.
  );
}

Но опять же — не понимаю, как это использовать для моей задачи?

Короче говоря, буду рад любой помощи..

Версия Drupal: 
7.x
Категория: 
AJAX
Связанные проекты: 
Chaos tool suite (ctools)
Вопрос задан 31.08.2015 - 16:56

c модальными окнами CTools не работал. Но судя по примеру, нужно реализовать hook_menu_alter

function my_module_menu_alter(&$items) {
  $items['node/%node/delete']['modal'] = TRUE;
}
Комментарий оставлен 31.08.2015 - 21:20

Да, тоже пробовал через hook_menu_alter() сделать, но без результата. Атрибут добавляется, но при клике так же перебрасывает на страницу, вместо модалки..

Мне думается, что та страница (node/[nid]/delete) — это всё же не форма (в привычном понимании), а обычная страница с кнопкой и ссылкой. Следовательно вот так её не вызвать, добавив modal="1".

Комментарий оставлен 01.09.2015 - 12:50

Ответы

1

Страница удаления это обычная форма с id "node_delete_confirm".

В модальном окне форму можно вывести через ctools_modal_form_wrapper().

Ответ дан 02.09.2015 - 21:46