Модальная форма из Конструктора форм

 
Посетитель
small user social cms
Сообщений: 71
Заказчик захотел, чтобы по кнопкам "Записаться" и "Обратная связь" выскакивали модальные окошки-формы с полями для обратной связи...
Стал ваять...
1. Сделал модули под каждую форму. Задал CSS_префикс, назначил классу этого модуля display:none. Теперь обе формы выводятся невидимыми на каждой странице.
2. Сделал кнопки с видимых модулей, которые делают формы видимыми. Но... в случае ошибки заполнения формы, сообщения, которые идут по тэгу
div class="sess_messages" и далее по дереву почему-то находятся не внутри модуля...
Ну ладно... в template.php допустим я переставлю sess_messages в нужный мне контейнер. Но в случае ошибки снова перегружается страница и снова форма будет невидима...
Сейчас попробую сделать форму в виде отдельной статьи со своей страницей и шаблоном, чтобы сразу выглядела как модальная...
Блин, и как вот ошибки подставить в вывод формы...
Есть идеи как это все сделать не меняя архитектуру Инстанта???
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 692
Львенок:
Есть идеи как это все сделать не меняя архитектуру Инстанта???

Не доводить до крайности и прямо в модуле подключаемой формы сделать свою, грубо говоря "предварительную проверку" полей, благо JavaScript с этим справляется легко... ну где-то так.
Skype: pasha--g
Реклама
cms
InstantCMS Team
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 4336
например так:
1. грузить код формы по ajax через отдельный файл, т.е. чтобы было универсально, передавать этому файлу например id нужной вам формы.
2. добавить свой фильтр или подделать существующий, чтобы вместо формы показывал ссылку на форму, которая бы грузилась в модалке по ajax.
3. подправить компонент forms примерно так http://pastebin.com/yP44vB5r
4. в js проверять ответ соответственно, при аякс запросе система будет отдавать ответы в json формате.

P.s. добавить в ядро пару методов
Код PHP:
  1. private static function detectContext(){
  2. if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
  3. $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
  4. self::$is_ajax = true;
  5. } else {
  6. self::$is_ajax = false;
  7. }
  8. }
  9. public static function isAjax(){
  10. return self::$is_ajax;
  11. }
а в конструктор ядра добавить
Код PHP:
  1. self::detectContext();
к слову сказать все это будет (уже есть) в новом дистрибутиве.
Редактировалось: 1 раз (Последний: 14 сентября 2013 в 21:49)
Видео каталог для InstantCMS | Аудио каталог для InstantCMS | Мы Вконтакте | Предложение для спонсоров
Посетитель
small user social cms
Сообщений: 71
Не хочу лезть в ядро. Разбираться и отлаживать косяки, которые будут потом, некогда и желания нет.
Сделал отдельный шаблон для статьи. Сделал пару отдельных статей в которые вставлены формы. В шаблон прописал несколько DIVов. Яваскриптом выдергиваю сообщения об ошибках и цепляю к нужному ДИВу...
Следующие грабли теперь - в случае успешного отправления сообщения снова выдается эта форма, когда она уже не нужна (имхо не продумано разработчиками)...
Сделать что ли проверку на наличие "успешного" сообщения и в случае наличия скрывать форму и перебрасывать потом на -2 странички из history...

Кстати, а где находится код, который отвечает за генерацию форм из Конструктора???
Редактировалось: 1 раз (Последний: 16 сентября 2013 в 16:46)
InstantCMS Team
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 4336
Львенок:
Разбираться и отлаживать косяки, которые будут потом, некогда и желания нет.
я вам дал рабочий код из 1.10.3, при желании подробнее можно посмотреть в траке
Львенок:
где находится код, который отвечает за генерацию форм из Конструктора
form.class.php
Видео каталог для InstantCMS | Аудио каталог для InstantCMS | Мы Вконтакте | Предложение для спонсоров
Посетитель
small user social cms
Сообщений: 71
Fuze:

Львенок:
Разбираться и отлаживать косяки, которые будут потом, некогда и желания нет.
я вам дал рабочий код из 1.10.3, при желании подробнее можно посмотреть в траке
Я обязательно буду разбираться, но потом. Сейчас время, которое я могу уделить этому проекту, сильно ограничено.
Fuze:

Львенок:
где находится код, который отвечает за генерацию форм из Конструктора
form.class.php
Спасибо. Супер.
upd: Есть небольшое пожелание к разработчикам, чтобы можно было в Конструкторе выбирать альтернативные шаблоны форм. Сейчас он жестко в классе прописан...
Редактировалось: 1 раз (Последний: 16 сентября 2013 в 20:56)
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.