Диазо: не стиль наложения окон в Plone
Я обновляюсь до Plone 4.2 (с 4.0.1) и перевожу свой тематический продукт с XDV на Diazo.
Появилась ошибка, когда при отправке формы из оверлея в шаблон пользовательской страницы полученная страница была "простой". Под "простым" я подразумеваю, что единственным видимым содержимым является область основного содержимого, отсутствует навигация, логотип, нет таблиц стилей и т. Д. На эту страницу передается сообщение "Информация", которое отображается на верхняя часть страницы (однако, ничто не стилизовано под любые стили plone или темы). Это похоже на то, что целевая страница отображается за пределами пространства Plone.
Я попытался добавить в свой rules.xml и добавить соответствующий ajax_load = python: request.form.get('ajax_load') к параметрам в разделе расширенных настроек панели управления темами. Однако наложение по-прежнему тематическое, а целевая страница формы по-прежнему "обычная" (я не буду говорить "без тематики", поскольку даже у страницы без Plone по-прежнему есть базовый логотип, навигация и т. Д.).
Я также попытался добавить и прикрепить элемент с этим идентификатором в моем шаблоне наложения - наложение все еще становится тематическим.
Я использую правило темы
Не уверены, почему наложения остаются тематическими и если это является частью проблемы? Также не уверен, почему шаблон целевой страницы формы отображается как "обычный".
Если я отправляю ту же самую форму обычно (не из оверлея), целевая страница отображается правильно тематически...
Любые советы по отладке это было бы здорово, спасибо.
Я использую Plone 4.2.0.1 и plone.app.theming 1.1a2, моя тема основана на файловой системе.
Изменить: ОК, некоторые из моих оверлейных форм работают должным образом. Разница, кажется, в том, где действие формы:
form tal:attribute ="запрос действия /URL" - работает нормально
form tal:attribute ="строка действия:${context/absolute_url}/@@view" - дает мне "простую" страницу при первом рендеринге при вызове из оверлейной формы (как обсуждалось выше, хорошо, когда вызывается из той же формы, но не в оверлее)
Обратите внимание, что "простой" HTML-код страницы выглядит следующим образом (обратите внимание на отсутствие базовых включений Plone или заголовков тем):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><base href="http://localhost:8080/Plone/sectionfoo/sectionbar/mypage" /><!--[if lt IE7]></base><![endif]--></head>
<body class="template-view portaltype-myCustomType site-Plone section-sectionfoo icons-on havePortlets haveLeftPortlets haveRightPortlets" dir="ltr">
<h1 class="documentFirstHeading">Why is this page plain?</h1>
...
Я также попытался полностью удалить мой продукт темы - я все еще вижу то же поведение от этих конкретных форм наложения в ванильном Plone...
1 ответ
Если вы используете вызов JavaScript .prepOverlay() для настройки наложения ajax, он автоматически добавит флаг ajax_load как часть строки запроса, используемой через AJAX, чтобы получить код, отображаемый в наложении.
См. http://pypi.python.org/pypi/plone.app.jquerytools/1.5#ajax для объяснения того, что делает ajax_load. Короче говоря, это заставляет сервер удалять все, кроме области контента. Цель состоит в том, чтобы избежать загрузки ненужных частей страницы в оверлей, который уже отображается внутри страницы.
Если загружаемая вами форма отправляет сама на себя (очень распространенная практика Zope/Plone), то параметр ajax_load может быть в URL действия формы. Таким образом, вы получаете только возвращенную область содержимого.
Итак, вам нужно будет поработать с вашим пользовательским шаблоном формы, чтобы убедиться, что вы удалили "ajax_load" из строки запроса URL-адреса, прежде чем устанавливать действие формы. Кроме того, удалите любой скрытый ввод "ajax_load" из формы.