отображать Plone FormGen во всплывающем окне

Я создал форму с помощью инструмента PloneFormGen. Теперь я хотел бы отобразить эту форму во всплывающем окне так же, как форма входа в систему отображается при нажатии кнопки. Я просмотрел модуль инструментов jquery, который дает мне возможность загружать формы URL/ajax во всплывающем окне. Я попытался загрузить URL-адрес в iframe, но во всплывающем окне отображается вся страница. Мне нужен только раздел формы для отображения. Нужно ли каким-то образом настраивать форму plone formgen, чтобы инструменты jquery ее понимали? Или мне нужно создавать формы каким-то другим способом? Дело в том, что мне нужна функциональность почтовой программы также после того, как моя форма будет успешно отправлена, поэтому Plone FormGen соответствует требованиям в этом случае. Любые рекомендации/указатели по этому поводу будут полезны. Предложите несколько указателей.


person Avinash    schedule 20.01.2012    source источник
comment
Кажется, что вы не используете правильный селектор jquery для выбора формы. Не могли бы вы опубликовать свой код (только часть всплывающего окна), чтобы мы могли его исправить?   -  person Giacomo Spettoli    schedule 20.01.2012
comment
Мой javascript выглядит следующим образом: jq(document).ready(function(){ jq('#view_screenshot').prepOverlay({subtype: 'iframe', urlmatch:'home/view-screen-shots', formselector: 'form '}); }); Я получаю следующее сообщение об ошибке: Ошибка: this.getContent не является функцией Исходный файл: www.example.com/Home/portal_javascripts/My%20Theme/++resource++plone.app.jquerytools.overlayhelpers.js Я звоню эта функция при нажатии на изображение.   -  person Avinash    schedule 20.01.2012


Ответы (2)


Взгляните на то, как Plone настраивает свои всплывающие формы в plone_ecmascript/popupforms.js. Он покажет вам несколько действительно работающих примеров того, как делать всплывающие формы. Например, настройка контактной формы:

// contact form
$('#siteaction-contact a').prepOverlay(
    {
        subtype: 'ajax',
        filter: common_content_filter,
        formselector: 'form[name="feedback_form"]',
        noform: function(el) {return $.plonepopups.noformerrorshow(el, 'close');}
    }
);

Формы PFG ничем не отличаются. Обратите внимание на спецификацию «фильтра»: это то, что гарантирует, что вы не покажете больше страницы, чем хотите. Такая фильтрация возможна во всплывающем окне AJAX, но не в iframe.

Полная информация на http://pypi.python.org/pypi/plone.app.jquerytools/1.4b1

person SteveM    schedule 20.01.2012
comment
Стив, я попробовал решение, но когда я изменил подтип на ajax, я получил это сообщение Нет ответа от сервера. Пожалуйста, попробуйте позже. jq('#view_screenshot').prepOverlay({subtype: 'ajax',filter: common_content_filter, formselector: 'form[name=edit_form]', noform: function(el) {return jq.plonepopups.noformerrorshow(el, 'close ');} });Когда я создаю форму с помощью plone form gen, я всегда получаю одно и то же имя, прикрепленное к форме. Итак, в настоящее время я не могу отличить свои разные формы, которые я создал, есть ли какой-либо механизм для присвоения имени другой форме при создании формы - person Avinash; 21.01.2012
comment
Селектор в части jq() должен указывать на ссылку на страницу формы. Подозреваю, что у вас нет. Если вы перейдете по этой ссылке (без использования prepOverlay), она должна отобразить страницу вашей формы. Процедура prepOverlay вместо этого настраивает отображение формы. PFG формирует сообщения для себя. Они отличаются своими URL-адресами. - person SteveM; 21.01.2012
comment
Вы можете использовать встроенный режим Plone formgen с помощью jquerytools. URL-адрес, используемый в iframe, должен быть yourform/fg_embedded_view_p3. - person toutpt; 21.01.2012
comment
Спасибо, это сработало! но когда я отправляю форму, после сбоя проверки форма не отображается во встроенном представлении. Как я могу показать форму с ошибками во встроенном представлении? - person Avinash; 23.01.2012

Вы можете взглянуть на всплывающие формы для Plone: ​​http://plone.org/products/pipbox.portlet.popform

person Davi Lima    schedule 23.01.2012