ajax в drupal 7

21
AJAX в Drupal 7 Drupal Camp Minsk 2012

Upload: hazel

Post on 21-Jan-2016

101 views

Category:

Documents


0 download

DESCRIPTION

Drupal Camp Minsk 2012. AJAX в Drupal 7. Недостатки AHAH в Drupal 6. Возможность изменения только одной области Нет инструментов, позволяющих загрузить css или js динамически Механизм по перезагрузке полей формы приходится писать самостоятельно - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: AJAX  в  Drupal  7

AJAX в Drupal 7

Drupal Camp Minsk 2012

Page 2: AJAX  в  Drupal  7

Недостатки AHAH в Drupal 6 Возможность изменения только одной области

Нет инструментов, позволяющих загрузить css или js динамически

Механизм по перезагрузке полей формы приходится писать самостоятельно

Нет возможности загрузить новую форму через AJAX, которая также использовала бы AJAX

Нет единой страницы для AJAX callback

Page 3: AJAX  в  Drupal  7

Демонстрация работы AJAX

Page 4: AJAX  в  Drupal  7

AJAX и Forms API

#ajax['callback']#ajax['path']#ajax['wrapper']#ajax['effect']#ajax['event']#ajax['keypress']#ajax['method']#ajax['progress']#ajax['trigger_as']

Page 5: AJAX  в  Drupal  7

Обработка #ajax[‘callback’]

Запрос посылается на /system/ajax

Загружается форма из {cache_block}

Обработка загруженной формы

Вызов функции из #ajax[‘callback’]

Page 6: AJAX  в  Drupal  7

Создание AJAX страниц

Page 7: AJAX  в  Drupal  7

Команды AJAX Framework

Серверная часть – массив данных

Page 8: AJAX  в  Drupal  7

Команды AJAX Framework

Клиентская часть - набор функций массива

Drupal.ajax.prototype.commands

Page 9: AJAX  в  Drupal  7

Команды AJAX Framework ajax_command_after($selector, $html, $settings = NULL) ajax_command_alert($text) ajax_command_append($selector, $html, $settings = NULL) ajax_command_before($selector, $html, $settings = NULL) ajax_command_changed($selector, $asterisk = '') ajax_command_css($selector, $argument) ajax_command_data($selector, $name, $value) ajax_command_html($selector, $html, $settings) ajax_command_insert($selector, $html, $settings = NULL) ajax_command_invoke($selector, $method, $arguments =

array()) ajax_command_prepend($selector, $html, $settings = NULL) ajax_command_remove($selector) ajax_command_replace($selector, $html, $settings = NULL) ajax_command_restripe($selector) ajax_command_settings($argument, $merge = FALSE)

Page 10: AJAX  в  Drupal  7

Создание своей AJAX команды

Серверная часть

Page 11: AJAX  в  Drupal  7

Создание своей AJAX команды

Клиентская часть

Page 12: AJAX  в  Drupal  7

ajax_deliver()

1. Выставление правильных хедеров для ответа от сервера

2. Обработка данных из page callback3. Загрузка добавленных css и js4. Изменение настроек в

Drupal.settings5. Преобразование AJAX комманд в

JSON6. Вызов хука hook_exit()

Page 13: AJAX  в  Drupal  7

Создание AJAX ссылок

Page 14: AJAX  в  Drupal  7

Перезагрузка форм

1. Создание селектора для AJAX ответа

2. Добавление #ajax атрибута

Page 15: AJAX  в  Drupal  7

Перезагрузка форм

3. Написание обработчика AJAX

Page 16: AJAX  в  Drupal  7

Создание многошаговых форм

1. Создание селектора для AJAX ответа

2. Получение текущего шага

Page 17: AJAX  в  Drupal  7

Создание многошаговых форм

3. Создание элементов в зависимости от шага

Page 18: AJAX  в  Drupal  7

Создание многошаговых форм

4. Добавляем к кнопкам AJAX

5. Пишем AJAX обработчик

Page 19: AJAX  в  Drupal  7

Создание многошаговых форм

6. Пишем к форме функцию сабмита

Page 20: AJAX  в  Drupal  7

Chaos Tools и AJAX

Дополнительные AJAX команды ctools_ajax_command_attr($selector, $name, $value) ctools_ajax_command_redirect($url, $delay = 0, $options =

array()) ctools_ajax_command_reload() ctools_ajax_command_submit($selector)

Работа с мультистеп формами

Работа с модальными окнами

Примеры в модуле ctools_ajax_sample

Page 21: AJAX  в  Drupal  7

Спасибо за внимание!

Масловский Евгений

http://drupalace.ru