Author: rspivak Date: Wed Nov 2 00:10:01 2005 New Revision: 28876 Added: z3lab/cpsblog/trunk/browser/pageform.pt (contents, props changed) Removed: z3lab/cpsblog/trunk/browser/blogentryform.pt z3lab/cpsblog/trunk/browser/blogform.pt Modified: z3lab/cpsblog/trunk/browser/blog.py z3lab/cpsblog/trunk/browser/blogentry.py z3lab/cpsblog/trunk/browser/skin/blog.pt z3lab/cpsblog/trunk/browser/skin/blogentry.pt z3lab/cpsblog/trunk/browser/skin/blogportal.py z3lab/cpsblog/trunk/browser/skin/template.pt Log: - Refactored macro stuff for menu actions - Blog and BlogEntry now use general pageform.pt template for formlib based 'edit' view
Modified: z3lab/cpsblog/trunk/browser/blog.py ============================================================================== --- z3lab/cpsblog/trunk/browser/blog.py (original) +++ z3lab/cpsblog/trunk/browser/blog.py Wed Nov 2 00:10:01 2005 @@ -6,12 +6,10 @@ from zope.component.interfaces import IFactory from zope.formlib import form -from cpsblog.interfaces import IBlog - -from zope.app import zapi from zope.app.catalog.interfaces import ICatalog from zope.index.text.parsetree import ParseError +from cpsblog.interfaces import IBlog from cpsblog.browser.widgets import FCKEditorWidget class BlogListing: @@ -27,7 +25,7 @@ class BlogEditView(form.EditForm): form_fields = form.Fields(IBlog) - template = ViewPageTemplateFile('blogform.pt') + template = ViewPageTemplateFile('pageform.pt') form_fields['description'].custom_widget = FCKEditorWidget Modified: z3lab/cpsblog/trunk/browser/blogentry.py ============================================================================== --- z3lab/cpsblog/trunk/browser/blogentry.py (original) +++ z3lab/cpsblog/trunk/browser/blogentry.py Wed Nov 2 00:10:01 2005 @@ -18,7 +18,7 @@ form_fields['content'].custom_widget = FCKEditorWidget form_fields['summary'].custom_widget = FCKEditorWidget - template = ViewPageTemplateFile('blogentryform.pt') + template = ViewPageTemplateFile('pageform.pt') class BlogEntryAddView(form.AddForm): form_fields = form.Fields(IBlogEntry) Added: z3lab/cpsblog/trunk/browser/pageform.pt ============================================================================== --- (empty file) +++ z3lab/cpsblog/trunk/browser/pageform.pt Wed Nov 2 00:10:01 2005 @@ -0,0 +1,155 @@ +<html metal:extend-macro="context/@@standard_macros/view" + metal:define-macro="main"> +<head> +<!-- XXX Need test --> +</head> + +<body> + + <div metal:fill-slot="menu_actions"> + <tal:block define="actions context/@@blogportal/menu_actions"> + <tal:block condition="python:actions=='blogmainmenu'"> + <metal:block use-macro="context/@@blogmenu_macros/mainmenu" /> + </tal:block> + <tal:block condition="python:actions=='entrymainmenu'"> + <metal:block use-macro="context/@@blogmenu_macros/entrymainmenu" /> + </tal:block> + </tal:block> + </div> + +<div metal:fill-slot="body"> + +<div metal:define-macro="form"> + +<form action="." metal:define-macro="master" + tal:attributes="action request/URL" method="post" + class="edit-form" enctype="multipart/form-data" + id="zc.page.browser_form"> + +<script type="text/javascript"><!-- + +function toggleFormFieldHelp(ob,state) { + // ob is the label element + var field = ob.form[ob.htmlFor]; + if (field) { + field.style.visibility = state && 'hidden' || 'visible'; + var help = document.getElementById("field-help-for-" + field.name); + if (help) { + help.style.visibility = state && 'visible' || 'hidden'; + } + } +} + +//--> +</script> + +<div id="viewspace" metal:define-slot="viewspace"> + + <h1 i18n:translate="" + tal:condition="view/label" + tal:content="view/label" + metal:define-slot="heading" + >Do something</h1> + + <metal:block define-macro="header"> + + <div class="form-status" + tal:define="status view/status" + tal:condition="status"> + + <div class="summary" + i18n:translate="" + tal:content="view/status"> + Form status summary + </div> + + <ul class="errors" tal:condition="view/errors"> + <li tal:repeat="error view/error_views"> + <span tal:replace="structure error">Error Type</span> + </li> + </ul> + </div> + + </metal:block> + + <div metal:define-slot="extra_info" tal:replace="nothing"> + </div> + + <table class="form-fields"> + <tr class="row" metal:define-slot="extra_top" tal:replace="nothing"> + <td class="label">Extra top</td> + <td class="label"><input type="text" /></td> + </tr> + <tbody metal:define-slot="formbody" tal:omit-tag=""> + <tr tal:repeat="widget view/widgets"> + <td class="label" tal:define="hint widget/hint" + metal:define-macro="labelcell"> + <label tal:condition="python:hint" + tal:attributes="for widget/name" + onmousedown="toggleFormFieldHelp(this,1)" + onmouseup="toggleFormFieldHelp(this,0)" + onmouseout="toggleFormFieldHelp(this,0)" + style="cursor: help"> + <span class="required" tal:condition="widget/required" + >*</span><span i18n:translate="" + tal:content="widget/label">label</span> + </label> + <label tal:condition="python:not hint" + tal:attributes="for widget/name"> + <span class="required" tal:condition="widget/required" + >*</span><span i18n:translate="" + tal:content="widget/label">label</span> + </label> + </td> + <td class="field" tal:define="hint widget/hint" + metal:define-macro="widgetcell"> + <div class="form-fields-help" + i18n:translate="" + tal:content="hint" + tal:condition="hint" + tal:attributes="id string:field-help-for-${widget/name}" + onclick="this.style.visibility='hidden';" + style="visibility: hidden; position: absolute;" + >Title of this content object.</div> + <div class="widget" tal:content="structure widget"> + <input type="text" /></div> + <div class="error" + tal:condition="widget/error" + > + <!-- XXX Put this back, the Zope3 way. + <img src="alert.gif" alt="Error" + tal:replace="structure context/alert.gif" /> + --> + <span tal:replace="structure widget/error">error</span> + </div> + </td> + </tr> + </tbody> + <tr class="row" metal:define-slot="extra_bottom" tal:replace="nothing"> + <td class="label">Extra bottom</td> + <td class="label"><input type="text" /></td> + </tr> + </table> + <metal:block define-slot="above_buttons" /> +</div> +<div id="actionsView"> + <span class="actionButtons" + tal:condition="view/availableActions" + metal:define-slot="bottom_buttons"> + <input tal:repeat="action view/actions" + tal:replace="structure action/render" + /> + </span> +</div> + +</form> +<script type="text/javascript" metal:define-slot="trackChanges"> + zc_trackChanges(document.getElementById('zc.page.browser_form')); +</script> + +<script type="text/javascript" + tal:define="extra_script view/extra_script | nothing" + tal:condition="extra_script" + tal:content="structure extra_script" /> + +</div></div></body></html> Modified: z3lab/cpsblog/trunk/browser/skin/blog.pt ============================================================================== --- z3lab/cpsblog/trunk/browser/skin/blog.pt (original) +++ z3lab/cpsblog/trunk/browser/skin/blog.pt Wed Nov 2 00:10:01 2005 @@ -1,7 +1,6 @@ <html metal:use-macro="views/@@standard_macros/page"> - <div metal:fill-slot="header"> + <div metal:fill-slot="menu_actions"> <metal:block use-macro="context/@@blogmenu_macros/mainmenu" /> - <metal:block use-macro="context/@@blogmenu_macros/searchfield" /> </div> <body> Modified: z3lab/cpsblog/trunk/browser/skin/blogentry.pt ============================================================================== --- z3lab/cpsblog/trunk/browser/skin/blogentry.pt (original) +++ z3lab/cpsblog/trunk/browser/skin/blogentry.pt Wed Nov 2 00:10:01 2005 @@ -1,7 +1,6 @@ <html metal:use-macro="views/standard_macros/page"> - <div metal:fill-slot="header"> + <div metal:fill-slot="menu_actions"> <metal:block use-macro="context/@@blogmenu_macros/entrymainmenu" /> - <metal:block use-macro="context/@@blogmenu_macros/searchfield" /> </div> <div metal:fill-slot="body"> Modified: z3lab/cpsblog/trunk/browser/skin/blogportal.py ============================================================================== --- z3lab/cpsblog/trunk/browser/skin/blogportal.py (original) +++ z3lab/cpsblog/trunk/browser/skin/blogportal.py Wed Nov 2 00:10:01 2005 @@ -1,5 +1,6 @@ # $Id$ from zope.app.security.interfaces import IUnauthenticatedPrincipal +from cpsblog.interfaces import IBlog, IBlogEntry class BlogPortalView(object): @@ -12,3 +13,11 @@ self.authenticated = False else: self.authenticated = True + + def getMenuActions(self): + if IBlog.providedBy(self.context): + return 'blogmainmenu' + elif IBlogEntry.providedBy(self.context): + return 'entrymainmenu' + + menu_actions = property(getMenuActions) Modified: z3lab/cpsblog/trunk/browser/skin/template.pt ============================================================================== --- z3lab/cpsblog/trunk/browser/skin/template.pt (original) +++ z3lab/cpsblog/trunk/browser/skin/template.pt Wed Nov 2 00:10:01 2005 @@ -46,7 +46,10 @@ <a href="" tal:attributes="href string:${context/@@absolute_url}/++site++">logo</a> </h1> - <metal:block define-slot="header" /> + <div> + <metal:block define-slot="menu_actions" /> + <metal:block use-macro="context/@@blogmenu_macros/searchfield" /> + </div> </div> <metal:slot define-slot="breadcrumbs"> -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins