В данной статье я на небольших примерах покажу как использовать стандартные JavaScript классы CDialog и CAdminDialog для вывода модальных диалоговых popup окон а административной и публичной частях проекта на 1С-Битрикс.
[spoiler]
Подключение скриптов для работы с диалоговыми окнами производится следующим образом:
Диалоговое окно с подгрузкой страницы из url
Диалоговое окно с текстом:
Стандартные кнопки "Сохранить" и "Отменить" (стандартная кнопка "Сохранить" подразумевает наличие формы внутри окна).
Кнопка "Сохранить" с собственным обработчиком (в данном примере по нажатию осуществляется вывод сообщения через alert и закрытие окна).
CAdminDialog является надстройкой над классом CDialog, и если исходить из комментариев в коде js-библиотеки битрикс (/bitrix/js/main/core/core_window.js), класс CAdminDialog следует использовать в публичной части (хотя на деле он повсеместно используется в административной). Если же посмотреть в код, то CAdminDialog отличается от CDialog только css-классами некоторых элементов.
Функции для работы с уже созданными окнами
Следует заметить,что при закрытии окна, его объект не уничтожается, окно просто скрывается, и его можно опять открыть при помощи функции Show.
При этом с помощью других функций можно выполнять различные манипуляции над окнами, как скрытыми, так и открытыми:
Очистка всех кнопок
Добавление кнопок
Установка контента
Закрытие окна
В некоторых случаях может потребоваться полное удаление окна (такой функции нет, но можно сделать так):
События
Функции, реагирующие на различные события, связанные с диалоговыми окнами, можно зарегистрировать следующим образом:
Список событий:
[spoiler]
Подключение скриптов для работы с диалоговыми окнами производится следующим образом:
|
|
|
|
|
CAdminDialog является надстройкой над классом CDialog, и если исходить из комментариев в коде js-библиотеки битрикс (/bitrix/js/main/core/core_window.js), класс CAdminDialog следует использовать в публичной части (хотя на деле он повсеместно используется в административной). Если же посмотреть в код, то CAdminDialog отличается от CDialog только css-классами некоторых элементов.
Функции для работы с уже созданными окнами
Следует заметить,что при закрытии окна, его объект не уничтожается, окно просто скрывается, и его можно опять открыть при помощи функции Show.
При этом с помощью других функций можно выполнять различные манипуляции над окнами, как скрытыми, так и открытыми:
Очистка всех кнопок
|
Добавление кнопок
|
Установка контента
|
Закрытие окна
|
В некоторых случаях может потребоваться полное удаление окна (такой функции нет, но можно сделать так):
|
События
Функции, реагирующие на различные события, связанные с диалоговыми окнами, можно зарегистрировать следующим образом:
|
- onWindowRegister
- onWindowUnRegister(bool_clean)
- onWindowError(arr_messages)
- onBeforeWindowClose
- onWindowClose(object)
- onWindowResizeStart
- onWindowResize
- onWindowResizeFinished
- onWindowResizeExt(arr_size)
- onWindowExpand
- onWindowNarrow
- onWindowDragStart
- onWindowDrag
- onWindowDragFinished
- onDynamicModeChange
- onMenuOpenerMoved
- onMenuOpenerUnhide
17.12.201321:5717.12.2013 21:57:51
27.03.2014 15:37:30
BX.CDialog не работает в режиме правки если туда указать урл с компонентом?
27.03.2014 16:01:53
Если я правильно понял, вы создали отдельную страницу без хедера и футера, разместили там компонент и указали адрес этой страницы в content_url? Тогда да, наверно будут какие-то проблемы с режимом правки. Тогда вы можете указать у компонента array("HIDE_ICONS" => "Y"), это должно решить проблему (это ПЯТЫЙ параметр $APPLICATION->InclideComponent).
27.03.2014 16:13:31
Спасибо конечно.. но не помогает.. думаю там куча проблем возникнет... тот же компонент с fancybox например нормально работает
27.03.2014 19:04:08
Ну если вам для публички только, то да, фансибокс однозначно лучше. Эти окна имеет смысл использовать наверно только если не хочется подключать jquery по какой-то причине, например, в админке.