• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Боремся с "лишними" переходами на сайте, или еще пара слов о попапах и аяксах.
 

Боремся с "лишними" переходами на сайте, или еще пара слов о попапах и аяксах.

on

  • 1,176 views

 

Statistics

Views

Total Views
1,176
Views on SlideShare
896
Embed Views
280

Actions

Likes
0
Downloads
1
Comments
0

6 Embeds 280

http://drupalforum.com.ua 270
http://www.drupalforum.com.ua 3
http://nipiogeo.amgrade.com 3
http://62.149.5.196 2
http://neighborly.amgrade.com 1
http://kaltura.amgrade.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Боремся с "лишними" переходами на сайте, или еще пара слов о попапах и аяксах. Боремся с "лишними" переходами на сайте, или еще пара слов о попапах и аяксах. Presentation Transcript

    •  
    • Боремся с «лишними» переходами на сайте, или еще пара слов о попапах и аяксах Талдыкин Егор Ardas Group
    • #ahah в Drupal6
      • // В конструкторе формы
      • $form['country'] = array(
      • '#type' => 'select',
      • '#title' => t('Country'),
      • '#options' => get_countries(),
      • '#ahah' => array(
      • 'path' => 'ahah/get-sities-list',
      • 'wrapper' => 'sities',
      • ),
      • );
    • Недос татки #ahah в D6
      • Нео бходимость реализовы вать menu callback
      • Необходимость работы с кешем формы
      • Сложность изменения Drupal.settings
      • Сложность добавления js/css-файлов
      • Изменение одной области страницы в результате ahah-запроса
    • #ajax в D7
      • Элементу изменяющему
      • '#ajax' => array(
      • 'callback' => 'sities_ajax_callback',
      • 'wrapper' => 'sities',
      • ),
      • Элементу изменяемому
      • '#prefix' => '<div id=&quot;sities&quot;>',
      • '#suffix' => '</div>'
      • Callback-функция
      • function sities_ajax_callback($form, $form_state) {
      • return $form['sity'];
      • }
    • ajax-сабмит формы
      • #prefix/#suffix для всей формы
      • Callback-функция возвращает всю форму
      • graceful degradation
    • Мультистеповые формы
      • Хранение текущего шага и данных предыдущих шагов в $form_state['storage']
      • В конструкторе формы switch/case для вывода нужного шага
      • В submit-е формы:
        • сохранение данных текущего шага
        • $step++
        • $form_state['rebuild'] = TRUE
    • Ajax-комманды
      • function test_ajax_callback($form, $form_state) {
      • $commands = array(
      • ajax_command_replace('#wrapper', drupal_render($form)),
      • ajax_command_invoke('.selected', 'hide'),
      • );
      • return array(
      • '#type' => 'ajax',
      • '#commands' => $commands);
      • }
    • Ajax submit for any form (asaf)
      • Позволяет сохранять любую форму через ajax
      • Вызывает хуки hook_asaf_form_ajax_commands_alter и hook_asaf_form_FORM_ID_ajax_commands_alter для измениния списка ajax-комманд.
      • Добавляет комманды:
        • обновить страницу ( asaf_ajax_command_reload )
        • перейти по урлу ( asaf_ajax_command_redirect )
    • Popup
      • Для «временного» или «быстрого» контента, которому не нужен постоянный урл
      • fancybox вместо overlay
      • 2 режима:
        • inline
        • iframe
    • inline popup
      • Для контента уже присутсвующего на странице
      • Реализуется переносом ветки DOM-объектов внутрь popup-а, а потом назад, для обеспечения работоспособности навешенных js-обработчиков
    • iframe popup
      • Iframe для изоляции js/css родителя и popup-а
      • Get-параметр для определения режима popup
      • Отключение рендеринга регионов
      • $list = &drupal_static('list_themes', array());
      • global $theme;
      • unset($list[$theme]->info['regions'][$region]);
    • Интеграция popup-ов и форм
      • Внутри popup-ов все формы сабмитятся ajax-ом (модуль asaf)
      • Дополнительные ajax-комманды:
        • обновить popup/родителя
        • перейти по урлу в popup-е/родителе
        • закрыть popup
      • Управление коммандами из аттрибутов ссылки (destination и битовая маска режима)
      • <a href=&quot;/feedback&quot; class=&quot;popup-link&quot; data-popup-mode=&quot;4&quot; data-popup-destination=&quot;feedback/thanks&quot;>Contact us</a>
    •