[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__"/> </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