2012-09-25 1 views
0

Plone 4.2 (4.0.1 이상)로 업그레이드하고 테마 제품을 XDV에서 Diazo로 옮깁니다.Diazo : Plone의 스타일 오버레이 창이 없습니다.

오버레이에서 사용자 지정 페이지 서식 파일로 양식을 제출할 때 결과 페이지가 '보통'으로 표시되는 버그가있었습니다. '보통'은 내가 볼 수있는 유일한 컨텐트가 메인 컨텐트 영역이라는 것을 의미합니다. plone nav, 로고가 없습니다. 스타일 시트가 없습니다.이 페이지로 전달되는 'info'메시지가 있으며 렌더링시 렌더링됩니다. 페이지의 상단 (아무것도 plone 또는 테마 스타일과 함께 스타일)입니다. 대상 페이지가 Plone 공간 외부에서 렌더링되는 것과 같습니다.

내 rules.xml을 추가하고 해당 ajax_load = python : request.form.get ('ajax_load')을 테마 제어판 '고급 설정'섹션의 매개 변수에 추가하려고했습니다. 오버레이는 여전히 주제이지만, 폼 타겟 페이지는 여전히 '평범'입니다 (나는 언텝 된 Plone 페이지에도 여전히 기본 로고, nav 등이 있습니다.

또한이 ID가있는 항목을 내 오버레이 템플릿에 붙여 넣어 보았습니다. 오버레이는 여전히 테마를 가져 왔습니다.

나는 오버레이가 테마를 유지하는 이유 테마 규칙

확실하지를 사용하여이 문제의 일부인 경우입니까? 또한 서식 대상 페이지 서식 파일이 '일반'으로 렌더링되는 이유를 잘 모릅니다. 내가 (오버레이에서하지 않음) 일반적으로 같은 양식을 제출하면

는 대상 페이지는이 큰 감사 것 디버깅하는 ... 테마 제대로

모든 팁을 렌더링합니다.

Plone 4.2.0.1 및 plone.app.theming 1.1a2를 사용중인 경우, 내 테마는 파일 시스템을 기반으로합니다.


편집 : OK 내 오버레이 형태의 일부가 제대로 작동하고 있습니다.

형태의 탈 : 차이는 양식 행동이 어디 것 같다 - 속성 = "액션 요청/URL은"OK

형태의 탈을 작동 : $ {컨텍스트/absolute_url}/@ : "액션 문자열을 = 속성 @view "- 오버레이 폼에서 호출 될 때 처음에는 '보통'페이지를 제공합니다 (위에서 설명한 것처럼 오버레이가 아닌 동일한 폼에서 호출 할 때 괜찮습니다)

'일반'페이지 html은 (Plone 또는 Theme head inclusions는 없습니다) :

<!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> 
... 

내 테마 제품을 완전히 제거하려고했는데 바닐라 플론에서 이러한 특정 오버레이 양식과 동일한 동작이 계속 발생합니다 ...

+2

템플릿의 코드를 표시 할 수 있습니까? 리소스를로드하지 않거나 리소스를 전혀 참조하지 않고 있습니까? 오버레이에서 제출할 때 페이지의 URL이 다른가요? –

답변

2

JavaScript .prepOverlay() 호출을 사용하여 아약스 오버레이를 설정하는 경우 자동으로 오버레이에 표시되는 코드를 얻으려면 AJAX를 통해 사용되는 쿼리 문자열의 일부로서 ajax_load 플래그를 추가합니다.

ajax_load가 수행하는 작업에 대한 설명은 http://pypi.python.org/pypi/plone.app.jquerytools/1.5#ajax을 참조하십시오. 간단히 말해서, 서버는 내용 영역을 제외한 모든 부분을 제거합니다. 그 목적은 이미 페이지 내에 표시되어있는 오버레이에 불필요한 페이지 부분을로드하는 것을 방지하기위한 것입니다.

당신이 자체 (매우 일반적인 조프/플론 (Plone) 연습)에 게시되어로드 양식, 다음 ajax_load 매개 변수의 형식은 액션 URL에있을 수있는 경우

.따라서 반환 된 콘텐츠 영역 만 가져옵니다.

양식 작업을 설정하기 전에 URL의 쿼리 문자열에서 "ajax_load"를 제거하기 위해 사용자 지정 양식 템플릿에서 일부 작업을 수행해야합니다. 또한 양식에서 "ajax_load"숨겨진 입력을 제거하십시오.

+0

감사합니다. 스티브, 확실히 양식 작업 또는 숨겨진 필드에 ajax_load가 없습니다. –

+0

자체에 게시 할 때 잘 작동합니다 ... 'form tal : attributes = "작업 요청/URL"- 작동 OK form tal : attributes = "action string : $ { context/absolute_url}/@@ view "는 제출 후 일반 페이지를 생성합니다. self.request.URL의 ajax_load 매개 변수가 보이지 않습니다. 다른 곳에서 찾으려면 검사해야합니까? 내가 사용하는 pdb ... 참고 :이 오버레이 폼은 Plone 4.0.1에서 제대로 작동하는 데 사용되었지만 Plone 4.2로 업그레이드하면이 버그가 시작되었습니다. 건배 –

+0

확인 self.request.keys()에 'ajax_load'가 있으며 오버레이에서 양식을 제출할 때 여전히 설정되어 있습니다. 해결 방법처럼 보이지만 양식을 구문 분석 할 때 이것을 제거해야합니까? 이 작업을 수행하는 방법에 대한 정보는 무엇입니까? self.request [ 'ajax_load']을 self.request가 'instance'유형으로 식별하고 dir (self.request)을 통해 제거 할 수있는 메소드를 볼 수 없으므로 pdb를 사용하여 쉽게 제거 할 수 없습니다. –

관련 문제