[Checkins] SVN: z3ext.preferences/trunk/ Simplify preferences navigation

Nikolay Kim fafhrd at datacom.kz
Fri Dec 12 00:37:04 EST 2008


Log message for revision 93926:
  Simplify preferences navigation

Changed:
  U   z3ext.preferences/trunk/CHANGES.txt
  U   z3ext.preferences/trunk/bootstrap.py
  U   z3ext.preferences/trunk/src/z3ext/preferences/browser/group.py
  U   z3ext.preferences/trunk/src/z3ext/preferences/browser/groupcategory.pt
  U   z3ext.preferences/trunk/src/z3ext/preferences/browser/index.pt
  U   z3ext.preferences/trunk/src/z3ext/preferences/browser/index.py
  U   z3ext.preferences/trunk/src/z3ext/preferences/browser/navigation.pt
  U   z3ext.preferences/trunk/src/z3ext/preferences/browser/navigation.py
  U   z3ext.preferences/trunk/src/z3ext/preferences/browser/styles.css

-=-
Modified: z3ext.preferences/trunk/CHANGES.txt
===================================================================
--- z3ext.preferences/trunk/CHANGES.txt	2008-12-12 02:14:57 UTC (rev 93925)
+++ z3ext.preferences/trunk/CHANGES.txt	2008-12-12 05:37:04 UTC (rev 93926)
@@ -2,9 +2,11 @@
 CHANGES
 =======
 
-1.4.3 (2008-??-??)
+1.4.3 (2008-12-12)
 ------------------
 
+- Simplify preferences navigation
+
 - raise Unauthorized exception if unauthenticated user access preferences panel
 
 

Modified: z3ext.preferences/trunk/bootstrap.py
===================================================================
--- z3ext.preferences/trunk/bootstrap.py	2008-12-12 02:14:57 UTC (rev 93925)
+++ z3ext.preferences/trunk/bootstrap.py	2008-12-12 05:37:04 UTC (rev 93926)
@@ -24,27 +24,52 @@
 
 tmpeggs = tempfile.mkdtemp()
 
-ez = {}
-exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py'
-                     ).read() in ez
-ez['use_setuptools'](to_dir=tmpeggs, download_delay=0)
+is_jython = sys.platform.startswith('java')
 
-import pkg_resources
+try:
+    import pkg_resources
+except ImportError:
+    ez = {}
+    exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py'
+                         ).read() in ez
+    ez['use_setuptools'](to_dir=tmpeggs, download_delay=0)
 
-cmd = 'from setuptools.command.easy_install import main; main()'
+    import pkg_resources
+
 if sys.platform == 'win32':
-    cmd = '"%s"' % cmd # work around spawn lamosity on windows
+    def quote(c):
+        if ' ' in c:
+            return '"%s"' % c # work around spawn lamosity on windows
+        else:
+            return c
+else:
+    def quote (c):
+        return c
 
-ws = pkg_resources.working_set
-assert os.spawnle(
-    os.P_WAIT, sys.executable, sys.executable,
-    '-c', cmd, '-mqNxd', tmpeggs, 'zc.buildout',
-    dict(os.environ,
-         PYTHONPATH=
-         ws.find(pkg_resources.Requirement.parse('setuptools')).location
-         ),
-    ) == 0
+cmd = 'from setuptools.command.easy_install import main; main()'
+ws  = pkg_resources.working_set
 
+if is_jython:
+    import subprocess
+    
+    assert subprocess.Popen([sys.executable] + ['-c', quote(cmd), '-mqNxd', 
+           quote(tmpeggs), 'zc.buildout'], 
+           env=dict(os.environ,
+               PYTHONPATH=
+               ws.find(pkg_resources.Requirement.parse('setuptools')).location
+               ),
+           ).wait() == 0
+
+else:
+    assert os.spawnle(
+        os.P_WAIT, sys.executable, quote (sys.executable),
+        '-c', quote (cmd), '-mqNxd', quote (tmpeggs), 'zc.buildout',
+        dict(os.environ,
+            PYTHONPATH=
+            ws.find(pkg_resources.Requirement.parse('setuptools')).location
+            ),
+        ) == 0
+
 ws.add_entry(tmpeggs)
 ws.require('zc.buildout')
 import zc.buildout.buildout

Modified: z3ext.preferences/trunk/src/z3ext/preferences/browser/group.py
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/group.py	2008-12-12 02:14:57 UTC (rev 93925)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/group.py	2008-12-12 05:37:04 UTC (rev 93926)
@@ -35,6 +35,12 @@
 
         self.subgroups = subgroups
         self.hasFields = bool(schema.getFields(self.context.__schema__))
+
+        if not self.hasFields and len(subgroups) == 1:
+            self.oneSubgroup = True
+        else:
+            self.oneSubgroup = False
+
         self.render = self.render()
 
 

Modified: z3ext.preferences/trunk/src/z3ext/preferences/browser/groupcategory.pt
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/groupcategory.pt	2008-12-12 02:14:57 UTC (rev 93925)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/groupcategory.pt	2008-12-12 05:37:04 UTC (rev 93926)
@@ -1,7 +1,12 @@
 <tal:block tal:condition="view/hasFields"
 	   tal:content="structure context/@@pagelet/preference.editGroup" />
 
-<div class="z-frame" tal:condition="view/subgroups">
+<tal:block tal:condition="nocall:view/oneSubgroup">
+  <tal:block tal:define="group python:view.subgroups[0]"
+	     tal:content="structure group/@@pagelet/preference.editGroup" />
+</tal:block>
+
+<div class="z-form" tal:condition="python: not view.oneSubgroup and view.subgroups">
   <tal:block tal:repeat="group view/subgroups">
     <tal:block tal:content="structure group/@@pagelet/preference.previewGroup" />
     <br />

Modified: z3ext.preferences/trunk/src/z3ext/preferences/browser/index.pt
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/index.pt	2008-12-12 02:14:57 UTC (rev 93925)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/index.pt	2008-12-12 05:37:04 UTC (rev 93926)
@@ -1,23 +1,23 @@
-<div class="z-frame">
-  <ul class="z-prefs-listing">
+<div class="z-form">
+  <ul class="z-listing">
     <li tal:repeat="item view/groups">
       <tal:block tal:define="group item/group">
-	<div class="z-prefs-icon" tal:define="icon group/@@zmi_icon|nothing"
+	<div class="z-listing-icon" tal:define="icon group/@@zmi_icon|nothing"
 	     tal:condition="icon">
 	  <tal:block tal:condition="icon" tal:content="structure icon"/>
 	</div>
-	<div class="z-prefs-details">
+	<div class="z-listing-details">
 	  <a tal:attributes="href string:${group/__id__}/">
 	    <tal:block tal:content="group/__title__"/></a>
 	  <div><tal:block tal:content="group/__description__"/> &nbsp;</div>
 
-	  <ul class="z-prefs-listing" tal:condition="item/subgroups">
+	  <ul class="z-listing" tal:condition="item/subgroups">
 	    <li tal:repeat="sgroup item/subgroups">
-	      <div class="z-prefs-icon" tal:define="icon sgroup/group/@@zmi_icon|nothing"
+	      <div class="z-listing-icon" tal:define="icon sgroup/group/@@zmi_icon|nothing"
 		   tal:condition="icon">
 		<tal:block tal:condition="icon" tal:content="structure icon" />
 	      </div>
-	      <div class="z-prefs-details">
+	      <div class="z-listing-details">
 		<a tal:attributes="href string:${group/__id__}/${sgroup/id}/">
 		  <tal:block tal:content="sgroup/group/__title__"/></a>
 		<div><tal:block tal:content="sgroup/group/__description__"/> 

Modified: z3ext.preferences/trunk/src/z3ext/preferences/browser/index.py
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/index.py	2008-12-12 02:14:57 UTC (rev 93925)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/index.py	2008-12-12 05:37:04 UTC (rev 93926)
@@ -38,10 +38,12 @@
                               sgroup.__id__.split('.')[-1], sgroup)
                              for t, sgroup in group.items() 
                              if sgroup.isAvailable()]
-                if subgroups or hasEditableFields(group):
+                if (len(subgroups) > 1) or hasEditableFields(group):
                     groups.append((group.__title__, group,
                                    [{'id': id, 'group': sgroup}
                                     for t, id, sgroup in subgroups]))
+                elif len(subgroups) == 1:
+                    groups.append((group.__title__, group, ()))
             else:
                 groups.append((group.__title__, group, ()))
 

Modified: z3ext.preferences/trunk/src/z3ext/preferences/browser/navigation.pt
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/navigation.pt	2008-12-12 02:14:57 UTC (rev 93925)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/navigation.pt	2008-12-12 05:37:04 UTC (rev 93926)
@@ -8,8 +8,10 @@
 	   tal:attributes="class python:item['selected'] and 'z-prefs-nav-item-selected' 
 			   or 'z-prefs-nav-item'">
 	<div tal:omit-tag="not:item/level|nothing"
-	     tal:attributes="class string:z-prefs-level${item/level|nothing}">
-	  <a tal:attributes="href string:${item/prefs/@@absolute_url}/">
+	     tal:attributes="class string:z-level${item/level|nothing}">
+	  <a tal:attributes="href string:${item/prefs/@@absolute_url}/;
+			     title item/description"
+	     tal:omit-tag="not:item/editable">
 	    <al:block tal:content="structure item/icon" />
 	    <tal:block tal:content="item/title" />
 	  </a>

Modified: z3ext.preferences/trunk/src/z3ext/preferences/browser/navigation.py
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/navigation.py	2008-12-12 02:14:57 UTC (rev 93925)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/navigation.py	2008-12-12 05:37:04 UTC (rev 93926)
@@ -60,24 +60,32 @@
 
                 info = {'name': name,
                         'title': prefs.__title__,
+                        'description': prefs.__description__,
                         'icon': queryMultiAdapter(
-                             (prefs, request), name='zmi_icon'),
+                                       (prefs, request), name='zmi_icon'),
                         'items': (),
                         'selected': False,
                         'prefs': prefs,
-                        'level': level}
+                        'level': level,
+                        'editable': True}
 
                 if prefs.__id__ == path[0].__id__:
                     info['items'] = self._process(prefs, path[1:], level+1)
+                elif prefs.__parent__.__id__ == '':
+                    info['items'] = self._process(prefs, [self.root], level+1)
+                    if len(info['items']) == 1:
+                        info['items'] = ()
 
                 if prefs.__id__ == self.context.__id__:
                     info['selected'] = True
-                    #info['items'] = self._process(prefs, [prefs], level+1)
 
-                if IPreferenceCategory.providedBy(prefs) and not info['items']:
-                    if not self._process(prefs, [prefs], level+1) \
-                            and not hasEditableFields(prefs):
-                        continue
+                if IPreferenceCategory.providedBy(prefs):
+                    if not info['items']:
+                        if not self._process(prefs, [prefs], level+1) \
+                                and not hasEditableFields(prefs):
+                            continue
+                    elif not hasEditableFields(prefs):
+                        info['editable'] = False
 
                 data.append(info)
 

Modified: z3ext.preferences/trunk/src/z3ext/preferences/browser/styles.css
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/styles.css	2008-12-12 02:14:57 UTC (rev 93925)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/styles.css	2008-12-12 05:37:04 UTC (rev 93926)
@@ -40,120 +40,37 @@
     width: 200px;
   }
   
-  #z-preferences .z-prefs-nav {
+  .z-prefs-nav {
     border: borderWidth borderStyle globalBorderColor;
     border-bottom: none;
     background: contentBackgroundColor;
     font-size: fontSmallSize;
   }
   
-  #z-preferences .z-prefs-nav a {
+  .z-prefs-nav a {
     text-decoration: none;
   }
   
-  #z-preferences .z-prefs-nav-item {
+  .z-prefs-nav-item {
     padding: 0.8em 0.4em 0.5em 0.4em;
     border-bottom: borderWidth borderStyle globalBorderColor;
   }
   
-  #z-preferences .z-prefs-nav-item-selected {
+  .z-prefs-nav-item-selected {
     padding: 0.8em 0.4em 0.5em 0.4em;
     background-color: globalBackgroundColor;
     border-bottom: borderWidth borderStyle globalBorderColor;
   }
   
-  #z-preferences .z-prefs-nav-item:hover {
+  .z-prefs-nav-item:hover {
     background-color: globalBackgroundColor;
   }
   
-  #z-preferences .z-prefs-nav-item li span {
+  .z-prefs-nav-item li span {
     border: 0;
     border-bottom: 1px dotted discreetColor;
   }
 
-  ul.z-prefs-listing {
-    margin: 0.5em 0;
-    list-style: none;
-    list-style-image: none;
-    list-style-type: none;
-  }
-  
-  ul.z-prefs-listing li {
-    clear: both;
-    margin-bottom: 0.5em;
-    list-style: none;
-    list-style-image: none;
-  }
-  
-  ul.z-prefs-listing li .z-prefs-icon {
-    float: left;
-    padding-top: 8px;
-    padding-right: 0.5em;
-    height: 32px;
-  }
-  
-  ul.z-prefs-listing li a,
-  ul.z-prefs-listing li .z-cp-details a {
-    color: linkColor;
-    border: 0;
-    border-bottom: 1px dotted discreetColor;
-    text-decoration: none;
-  }
-  
-  ul.z-prefs-listing li a:visited,
-  ul.z-prefs-listing li .z-prefs-details a:visited {
-    color: linkColor;
-    background-color: transparent;
-  }
-  
-  ul.z-prefs-listing li a:active,
-  ul.z-prefs-listing li .z-prefs-details a:active {
-    color: linkColor;
-    background-color: transparent;
-  }
-  
-  ul.z-prefs-listing li span {
-    border: 0;
-    border-bottom: 1px dotted discreetColor;
-  }
-  
-  ul.z-prefs-listing li .z-prefs-details span a {
-    border-bottom: 0px;
-  }
-  
-  ul.z-prefs-listing li label {
-    font-weight: bold;
-    border-bottom: borderWidth dotted discreetColor;
-  }
-  
-  ul.z-prefs-listing li {
-    border: 1px solid contentBackgroundColor;
-  }
-  
-  ul.z-prefs-listing li .z-prefs-details div {
-    color: discreetColor;
-    font-size: fontSmallSize;
-  }
-  
-  ul.z-prefs-listing li ul.z-prefs-listing {
-    margin-left: 1.5em;
-    font-size: 110%;
-  }
-  
-  ul.z-prefs-listing li .z-prefs-details div span {
-    color: discreetColor;
-    font-size: fontSmallSize;
-    border: 0;
-  }
-
-  .z-prefs-level1 {
-    padding-left: 0.8em;
-  }
-  
-  .z-prefs-level2 {
-    padding-left: 1.6em;
-  }
-
   #z-preferences .z-form,
   #z-preferences .z-form-add,
   #z-preferences .z-form-edit {



More information about the Checkins mailing list