===== Библиотека modals ===== Библиотека представлена файлом ''js/modals.js''. Позволяет ускорить процесс разработки с использованием модальных окон.\\ Есть 2 реализации: старая через глобальные функции и новая с использованием ''AModal''\\ Создание кнопки вызова модального окна в Perl коде выглядит так: my $load_to_modal_btn = $html->button( '', undef, { class => 'btn btn-sm btn-default', JAVASCRIPT => '', SKIP_HREF => 1, NO_LINK_FORMER => 1, ex_params => qq/onclick=loadToModal('?get_index=referral_show&header=2&USER_ID=$referrer_id')/, ICON => 'glyphicon glyphicon-tree-deciduous' } ); } Ниже представлено описание основных методов ==== Глобальные функции === Для показа используется объявленное в metategs.tpl модальное окно ''#PopupModal'', контент для показа загружается непосредственно внутрь блока, или в блок ''#modalContent'' \\ === loadToModal (url, [callback]) === Динамически загружает страницу по заданному url, создаёт обьект aModal, устанавливает полученную страницу в modal-body и показывает новое модальное окно. === loadRawToModal (url, [callback]) === Динамически загружает страницу по заданному url, создаёт обьект aModal, вставляет даные телом модального окна и показывает новое модальное окно.\\ **Если данные не обернуты в div.modal-body или div.modal-content, фон модалки будет прозрачным** === loadDataToModal(data, decorated, withoutButton) === Вставляет в модальное окно то, что передано в ''data''. \\ Если decorated=true, то ''data'' обёртывается в тело модального окна. Если withoutButton=true, то тело сгенерированного модального окна будет без кнопки. === showImgInModal(url) === Вставляет в модальное окно картинку, с атрибутом ''src'' равным заданному url ==== Объект AModal ==== Свойства: * id , дефолтное значение ('PopupModal') * header * body * footer * rawData Объект представляет собой реализацию конкретной части паттерна Builder.\\ Пример использования: Показать сообщение в модальном окне: var modal = aModal.clear() .setBody('
Самое обычное сообщение
') .show();
Показ сложного модального окна с обработчиком кнопки // Для того чтобы не забивать память созданием нового обьекта, // просто очищаем предыдущее модальное окно modal = aModal.clear(); modal // Устанавливаем id (необязательно) .setId('modalTest') // Устанавливаем modal-header (необязательно) .setHeader('Header') // Устанавливаем modal-body (необязательно) .setBody('

One fine body

') // Устанавливаем modal-footer (необязательно) .setFooter('Footer') // Добавляем кнопку закрытия (необязательно, в header есть крестик) .addButton('Cancel', 'modalCancelBtn', 'default') // Показываем и устанавливаем обработчик (необязательно) .show(function(){ // Устанавливаем обработчики. // Спрятать модальное окно по клику на кнопку '#modalCancelBtn' $('#modalCancelBtn').on('click', aModal.hide); } );
==== Особые окна ==== Если нужно использовать особые параметры модального окна, можно использовать метод setRawMode(true).\\ особое окно будет без заголовка и футера, можно вставлять собственные. При этом, значение, установленное через ''setBody()'' будет вставлено внутрь ''.modal-content'' Пример: var modal = aModal.clear(); modal.setRawMode(true) .setBody('
Самое обычное сообщение
') .show();
==== Открытие обычного (HTML) модального окна при загрузке страницы ==== Нужно прописать аттрибут ''data-open='1'''. Удобно использовать для этого переменную шаблона. Если есть несколько окон, которые нужно открыть, откроется первое найденное (обычно, которое прописано выше).