[Checkins] SVN: z3ext.preferences/trunk/ UI refactoring
Nikolay Kim
fafhrd at datacom.kz
Tue May 6 04:36:08 EDT 2008
Log message for revision 86486:
UI refactoring
Changed:
U z3ext.preferences/trunk/CHANGES.txt
U z3ext.preferences/trunk/setup.py
A z3ext.preferences/trunk/src/z3ext/preferences/browser/category.pt
A z3ext.preferences/trunk/src/z3ext/preferences/browser/category.py
U z3ext.preferences/trunk/src/z3ext/preferences/browser/configure.zcml
D z3ext.preferences/trunk/src/z3ext/preferences/browser/edit.pt
D z3ext.preferences/trunk/src/z3ext/preferences/browser/group.pt
A z3ext.preferences/trunk/src/z3ext/preferences/browser/group.pt
U z3ext.preferences/trunk/src/z3ext/preferences/browser/group.py
U z3ext.preferences/trunk/src/z3ext/preferences/browser/interfaces.py
U z3ext.preferences/trunk/src/z3ext/preferences/browser/layout.pt
U z3ext.preferences/trunk/src/z3ext/preferences/browser/navigation.pt
U z3ext.preferences/trunk/src/z3ext/preferences/browser/navigation.py
D z3ext.preferences/trunk/src/z3ext/preferences/browser/view.pt
D z3ext.preferences/trunk/src/z3ext/preferences/browser/view.py
-=-
Modified: z3ext.preferences/trunk/CHANGES.txt
===================================================================
--- z3ext.preferences/trunk/CHANGES.txt 2008-05-06 08:34:17 UTC (rev 86485)
+++ z3ext.preferences/trunk/CHANGES.txt 2008-05-06 08:36:08 UTC (rev 86486)
@@ -2,9 +2,11 @@
CHANGES
=======
-1.2.2 (2008-05-06)
+1.3.0 (2008-05-06)
------------------
+- UI refactoring
+
- Do not include permission checker for zope.Public permission
Modified: z3ext.preferences/trunk/setup.py
===================================================================
--- z3ext.preferences/trunk/setup.py 2008-05-06 08:34:17 UTC (rev 86485)
+++ z3ext.preferences/trunk/setup.py 2008-05-06 08:36:08 UTC (rev 86486)
@@ -21,7 +21,7 @@
def read(*rnames):
return open(os.path.join(os.path.dirname(__file__), *rnames)).read()
-version='1.2.2dev'
+version='1.3.0dev'
setup(name = 'z3ext.preferences',
@@ -66,6 +66,8 @@
'zope.cachedescriptors',
'zope.pagetemplate',
'zope.i18nmessageid',
+ 'zope.viewlet',
+ 'zope.contentprovider',
'zope.app.security',
'zope.app.component',
'zope.app.publisher',
Copied: z3ext.preferences/trunk/src/z3ext/preferences/browser/category.pt (from rev 86482, z3ext.preferences/trunk/src/z3ext/preferences/browser/group.pt)
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/category.pt (rev 0)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/category.pt 2008-05-06 08:36:08 UTC (rev 86486)
@@ -0,0 +1,8 @@
+<tal:block tal:content="structure view/renderForm" />
+
+<div class="frame" tal:condition="view/groups">
+ <tal:block tal:repeat="group view/groups">
+ <tal:block tal:content="structure group/render" />
+ <br />
+ </tal:block>
+</div>
Copied: z3ext.preferences/trunk/src/z3ext/preferences/browser/category.py (from rev 86482, z3ext.preferences/trunk/src/z3ext/preferences/browser/group.py)
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/category.py (rev 0)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/category.py 2008-05-06 08:36:08 UTC (rev 86486)
@@ -0,0 +1,55 @@
+##############################################################################
+#
+# Copyright (c) 2007 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+""" IPreferenceCategory view
+
+$Id$
+"""
+from zope import schema, interface
+from zope.component import getMultiAdapter
+
+from group import PreferenceGroup
+
+
+class PreferenceCategory(PreferenceGroup):
+
+ label = u''
+ description = u''
+
+ def update(self):
+ super(PreferenceCategory, self).update()
+
+ context = self.context
+ request = self.request
+
+ subgroups = []
+
+ for name, group in context.items():
+ if not group.isAvailable():
+ continue
+
+ view = getMultiAdapter((group, request), name='view.html')
+ view.update()
+
+ subgroups.append(view)
+
+ self.groups = subgroups
+
+ def renderForm(self):
+ if bool(schema.getFields(self.context.__schema__)):
+ return super(PreferenceCategory, self).render()
+ else:
+ return u''
+
+ def render(self):
+ return self.template()
Modified: z3ext.preferences/trunk/src/z3ext/preferences/browser/configure.zcml
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/configure.zcml 2008-05-06 08:34:17 UTC (rev 86485)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/configure.zcml 2008-05-06 08:36:08 UTC (rev 86486)
@@ -5,6 +5,7 @@
xmlns:browser="http://namespaces.zope.org/browser"
i18n_domain="z3ext">
+ <!-- layouts -->
<z3ext:layout
layout="portal"
name="workspace"
@@ -35,6 +36,7 @@
title="View"
permission="zope.Public" />
+ <!-- root preferences view -->
<z3ext:pagelet
for="..interfaces.IRootPreferences"
name="index.html"
@@ -42,27 +44,39 @@
class=".index.PreferencesView"
permission="zope.View" />
- <browser:page
+ <!-- preference category view -->
+ <z3ext:pagelet
name="index.html"
+ for="..interfaces.IPreferenceCategory"
+ template="category.pt"
+ class=".category.PreferenceCategory"
+ permission="zope.Public" />
+
+ <!-- preference group view -->
+ <z3ext:pagelet
+ name="index.html"
for="..interfaces.IPreferenceGroup"
class=".group.PreferenceGroup"
permission="zope.Public" />
- <browser:view
+ <z3ext:pagelet
+ name="view.html"
for="..interfaces.IPreferenceGroup"
- class=".view.PreferenceGroupView"
- provides=".interfaces.IPreferenceGroupView"
+ template="group.pt"
permission="zope.Public" />
- <adapter
- zcml:condition="installed z3c.breadcrumb"
- factory=".breadcrumb.PreferenceGroupBreadcrumb" />
-
- <browser:page
- name="navigation"
+ <!-- navigation -->
+ <browser:viewletManager
+ name="z3ext.preferences-navigation"
+ provides=".interfaces.IPreferencesNavigation"
for="..interfaces.IPreferenceGroup"
template="navigation.pt"
class=".navigation.Navigation"
permission="zope.Public" />
+ <!-- breadcrumb -->
+ <adapter
+ zcml:condition="installed z3c.breadcrumb"
+ factory=".breadcrumb.PreferenceGroupBreadcrumb" />
+
</configure>
Deleted: z3ext.preferences/trunk/src/z3ext/preferences/browser/edit.pt
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/edit.pt 2008-05-06 08:34:17 UTC (rev 86485)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/edit.pt 2008-05-06 08:36:08 UTC (rev 86486)
@@ -1,13 +0,0 @@
-<div class="frame">
- <h1 tal:content="view/label|nothing">Do something</h1>
- <div class="discreet" tal:content="view/description|nothing"></div>
- <br />
-
- <div class="z-form-fieldset">
- <div>
- <tal:block tal:repeat="widget view/widgets/values">
- <metal:block use-macro="macro:widget-row"/>
- </tal:block>
- </div>
- </div>
-</div>
Deleted: z3ext.preferences/trunk/src/z3ext/preferences/browser/group.pt
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/group.pt 2008-05-06 08:34:17 UTC (rev 86485)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/group.pt 2008-05-06 08:36:08 UTC (rev 86486)
@@ -1,34 +0,0 @@
-<form action="." metal:define-macro="master" i18n:domain="z3ext"
- tal:attributes="action request/URL" method="post"
- tal:omit-tag="view/subform"
- class="edit-form" enctype="multipart/form-data">
-
- <tal:block tal:content="structure view/form_result" />
-
- <div class="frame" tal:condition="view/editable" tal:omit-tag="not:view/category">
- <tal:block repeat="group view/subgroups">
- <div tal:condition="nocall:group/view"
- tal:content="structure python:group['view'].render(True)"></div>
- <br />
- </tal:block>
- </div>
-
- <div class="topframe" tal:condition="not:view/editable">
- <tal:block repeat="group view/subgroups">
- <div tal:condition="nocall:group/view"
- tal:content="structure group/view/render"></div>
- <br />
- </tal:block>
- </div>
-
- <div class="formControls"
- tal:condition="python:view.editable and not view.subform">
- <hr />
- <span class="actionButtons">
- <input type="submit"
- id="form-buttons-save" name="form.buttons.save"
- class="z-form-savebutton button-field" value="Save"
- i18n:attributes="value" />
- </span>
- </div>
-</form>
Copied: z3ext.preferences/trunk/src/z3ext/preferences/browser/group.pt (from rev 86482, z3ext.preferences/trunk/src/z3ext/preferences/browser/view.pt)
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/group.pt (rev 0)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/group.pt 2008-05-06 08:36:08 UTC (rev 86486)
@@ -0,0 +1,3 @@
+<h2><a tal:attributes="href string:${context/@@absolute_url}/"
+ tal:content="context/__title__"></a></h2>
+<div class="discreet" tal:content="context/__description__"></div>
Modified: z3ext.preferences/trunk/src/z3ext/preferences/browser/group.py
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/group.py 2008-05-06 08:34:17 UTC (rev 86485)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/group.py 2008-05-06 08:36:08 UTC (rev 86486)
@@ -15,28 +15,16 @@
$Id$
"""
-from zope import event, schema, interface
-from zope.component import getMultiAdapter, queryMultiAdapter
from zope.cachedescriptors.property import Lazy
-from zope.app.pagetemplate import ViewPageTemplateFile
-from zope.pagetemplate.interfaces import IPageTemplate
-
from z3ext.layoutform import Fields, PageletEditForm
-from z3ext.preferences.interfaces import IPreferenceCategory
-from interfaces import IPreferenceGroupView
-
class PreferenceGroup(PageletEditForm):
- edit = None
- editable = False
+ @property
+ def prefix(self):
+ return str(self.context.__id__)
- group = ViewPageTemplateFile('group.pt')
- template = ViewPageTemplateFile('edit.pt')
-
- category = False
-
@property
def label(self):
return self.context.__title__
@@ -47,62 +35,4 @@
@Lazy
def fields(self):
- return Fields(self.context.__schema__)
-
- def update(self):
- context = self.context
- request = self.request
-
- self.hasFields = bool(schema.getFields(context.__schema__))
- if self.hasFields:
- super(PreferenceGroup, self).update()
-
- if IPreferenceCategory.providedBy(context):
- subgroups = []
-
- for name, group in context.items():
- if not group.isAvailable():
- continue
-
- view = queryMultiAdapter((group, request), IPreferenceGroupView)
- subgroups.append((group.__title__, group, view))
-
- self.subgroups = [{'group': group, 'view': view}
- for t, group, view in subgroups]
-
- self.category = True
- else:
- subgroups = []
- for name, group in context.items():
- if not group.isAvailable():
- continue
-
- view = queryMultiAdapter((group, request), name='index.html')
- if not view:
- continue
-
- view.update()
- subgroups.append((group.__title__, group, view))
-
- self.subgroups = [{'group': group, 'view': view}
- for t, group, view in subgroups]
-
- if subgroups:
- self.editable = True
-
-
- form_result = u''
-
- def render(self, subform=False):
- self.subform = subform
-
- if self.hasFields:
- self.editable = True
- if self.template is None:
- template = getMultiAdapter(
- (self, self.request), IPageTemplate)
- self.form_result = template(self)
- else:
- self.form_result = self.template()
-
- return self.group()
+ return Fields(self.context.__schema__, omitReadOnly=True)
Modified: z3ext.preferences/trunk/src/z3ext/preferences/browser/interfaces.py
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/interfaces.py 2008-05-06 08:34:17 UTC (rev 86485)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/interfaces.py 2008-05-06 08:36:08 UTC (rev 86486)
@@ -1,6 +1,6 @@
##############################################################################
#
-# Copyright (c) 2007 Zope Corporation and Contributors.
+# Copyright (c) 2008 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
@@ -11,30 +11,12 @@
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
-""" interfaces relateds to view preference groups
+"""
$Id$
"""
-from zope import interface
+from zope.viewlet.interfaces import IViewletManager
-class IPreferences(interface.Interface):
- """ preferences """
-
-
-class IPreferenceGroupView(interface.Interface):
- """ group view """
-
- def isAvailable():
- """ is this view available """
-
- def render():
- """ render view """
-
-
-class IPreferenceGroupPreview(IPreferenceGroupView):
- """ group preview """
-
-
-class IDefaultPreferenceGroupView(interface.Interface):
- """ default preference view """
+class IPreferencesNavigation(IViewletManager):
+ """ preferences navigation viewlet manager """
Modified: z3ext.preferences/trunk/src/z3ext/preferences/browser/layout.pt
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/layout.pt 2008-05-06 08:34:17 UTC (rev 86485)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/layout.pt 2008-05-06 08:36:08 UTC (rev 86486)
@@ -1,6 +1,9 @@
-<div id="z-portal-workspace">
- <div class="page"
- tal:define="nav maincontext/@@navigation|nothing; rendered view/render; noNav not:nav">
+<div id="z-portal-workspace"
+ tal:define="context nocall:maincontext;
+ nav provider:z3ext.preferences-navigation;
+ noNav not:nav;
+ rendered view/render">
+ <div class="page">
<table class="wide" tal:omit-tag="noNav">
<tr style="vertical-align: top" tal:omit-tag="noNav">
<td style="padding-right: 1em; width: 200px"
Modified: z3ext.preferences/trunk/src/z3ext/preferences/browser/navigation.pt
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/navigation.pt 2008-05-06 08:34:17 UTC (rev 86485)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/navigation.pt 2008-05-06 08:36:08 UTC (rev 86486)
@@ -1,3 +1,6 @@
+<tal:block tal:repeat="viewlet view/viewlets"
+ tal:content="structure viewlet/render" />
+
<div class="x-listing box small">
<tal:block tal:repeat="item view/data">
<metal:block metal:define-macro="level">
@@ -13,7 +16,7 @@
</div>
</div>
<tal:block tal:repeat="item item/items">
- <metal:block use-macro="view/index/macros/level"/>
+ <metal:block use-macro="view/template/macros/level"/>
</tal:block>
</metal:block>
</tal:block>
Modified: z3ext.preferences/trunk/src/z3ext/preferences/browser/navigation.py
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/navigation.py 2008-05-06 08:34:17 UTC (rev 86485)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/navigation.py 2008-05-06 08:36:08 UTC (rev 86486)
@@ -16,17 +16,19 @@
$Id$
"""
from zope.component import queryMultiAdapter
+from zope.viewlet.manager import ViewletManagerBase
from z3ext.preferences.interfaces import IRootPreferences
from z3ext.preferences.interfaces import IPreferenceGroup
from z3ext.preferences.interfaces import IPreferenceCategory
-class Navigation(object):
+class Navigation(ViewletManagerBase):
- def __init__(self, context, request):
- self.context = context
- self.request = request
+ def update(self):
+ super(Navigation, self).update()
+ context = self.context
+
self.isRoot = IRootPreferences.providedBy(context)
if self.isRoot:
return
@@ -78,8 +80,9 @@
return data
- def __call__(self):
+ def render(self):
if self.isRoot:
- return ''
+ return u''
else:
- return self.index()
+ return super(Navigation, self).render()
+
Deleted: z3ext.preferences/trunk/src/z3ext/preferences/browser/view.pt
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/view.pt 2008-05-06 08:34:17 UTC (rev 86485)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/view.pt 2008-05-06 08:36:08 UTC (rev 86486)
@@ -1,3 +0,0 @@
-<h2><a tal:attributes="href string:${context/@@absolute_url}/"
- tal:content="context/__title__"></a></h2>
-<div class="discreet" tal:content="context/__description__"></div>
Deleted: z3ext.preferences/trunk/src/z3ext/preferences/browser/view.py
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/view.py 2008-05-06 08:34:17 UTC (rev 86485)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/view.py 2008-05-06 08:36:08 UTC (rev 86486)
@@ -1,27 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2007 Zope Corporation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""
-
-$Id$
-"""
-from zope import interface
-from zope.app.pagetemplate import ViewPageTemplateFile
-
-from interfaces import IDefaultPreferenceGroupView
-
-
-class PreferenceGroupView(object):
- interface.implements(IDefaultPreferenceGroupView)
-
- render = ViewPageTemplateFile('view.pt')
More information about the Checkins
mailing list