среда, 23 января 2013 г.

Закрытие формы K2 smartforms, отображающейся в модальном окне SharePoint


Не так давно, в примере по открытию формы K2 smartforms в модальном окне SharePoint (http://k2guru.blogspot.ru/2012/12/k2-smartforms-sharepoint.html) я показал, как можно отображать формы K2 smartforms в модальном окне, и остановился на этом. Открыть – открыли, а как закрывать будем? :)




Ведь форма K2 smartforms в модальном окне отображается внутри iFrame, делать редирект на какую-то обычную весбстраницу бесполезно – будет осуществлен переход на эту страницу непосредственно в самом модальном окне. Скрипты закрытия окна броузера приведут именно к закрытию окна – не уверен, что это именно та функциональность, которая нужна Вашим пользователям. Конечно, остается вариант нажатия кнопки Х в верхнем правом углу формы, однако очень часто встречаются определенные требования заказчика к интерфейсу, где четко сказано, что форма должна закрываться по кнопке «Отмена» или «Закрыть» и никак иначе .
На самом деле не все так страшно. Нужно всего лишь выполнить следующие несколько шагов:

1. Создаем новую веб или вики-страницу в SharePoint. Я создал свою вот в таком виде, назвав ClosePopup.aspx, и затем открываем созданную страницу на редактирование:


2. Добавляем вебпарт HTML Form Web part на страницу (не принципиально куда):



3. Редактируем только что добавленный вебпарт, нажимаем кнопку “Source Editor”:


4. Заменяем существующий там контент на:
<script>window.frameElement.commonModalDialogClose(1, 'Close');</script>



5. Нажимаем Save, затем OK и сохраняем страницу, выходя из режима редактирования

6. Осталось добавить на нашу форму K2 smartforms кнопку закрытия и сконфигурировать правило на нажатие этой кнопки:


Действие, которое мы будем выполнять при нажатии на кнопку «Закрыть окно» называется “Navigate to URL”:


В новом релизе смартформ у Вам будет еще дополнительный атрибут «Open In», для которого нужно указать значение «Current Window».


7. Сохраняем изменения в форме и можно приступать к тестированию. Модальная форма будет закрываться.

8. Опционально. Если форма может быть открыта как в модальном, так и в немодальном режиме, то лучше всего вызывать форму с параметром (popup=true/false), и при конфигурирования события нажатия на кнопку закрытия окна проверять значение этого параметра с соответствующим вызовом разных страниц, правил и т.п.

2 комментария:

  1. Андрей, разве нельзя повесить на кнопку Закрыть выполнения JS кода? Должно получится без этих костылей с доп. веб-частями.

    По поводу JS вы недавно писали, вот только видимо это решение потянет за собой установку кастомного контрола. (http://k2guru.blogspot.ru/2013/01/javascript-k2-smartforms.html#more)

    ОтветитьУдалить
    Ответы
    1. Денис, спасибо за вопрос!

      Все дело в том, что K2 smartforms загружаются в iFrame, поэтому закрыть именно модальное окно SharePoint не получится - можно только целиком окно броузера. Попробуйте, если у Вас получится - поделитесь кодом, с удовольствием его опубликую здесь. Я, честно говоря, не нашел способа закрыть его, кроме как описано выше.

      Андрей Холинов

      Удалить