[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