From 2c78b3d76a96169b59748fe7fc781ff5c99ad345 Mon Sep 17 00:00:00 2001 From: helmutm Date: Mon, 17 Dec 2007 09:10:31 +0000 Subject: [PATCH] glossary grouped by first letter git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2254 fd906abe-77d9-0310-91a1-e0d9ade77398 --- browser/concept.py | 20 ++++++++++++++++---- browser/loops.css | 16 ++++++++++++++++ knowledge/glossary/view_macros.pt | 21 +++++++++++++++++++-- 3 files changed, 51 insertions(+), 6 deletions(-) diff --git a/browser/concept.py b/browser/concept.py index cfbb743..1135fcb 100644 --- a/browser/concept.py +++ b/browser/concept.py @@ -22,6 +22,7 @@ Definition of the concept view classes. $Id$ """ +from itertools import groupby from zope import interface, component, schema from zope.app import zapi from zope.app.catalog.interfaces import ICatalog @@ -139,16 +140,17 @@ class ConceptView(BaseView): widget.setRenderedValue(value) yield dict(title=f.title, value=value, id=n, widget=widget) - def children(self): + def children(self, topLevelOnly=True, sort=True): cm = self.loopsRoot.getConceptManager() hasType = cm.getTypePredicate() standard = cm.getDefaultPredicate() #rels = self.context.getChildRelations() rels = (ConceptRelationView(r, self.request, contextIsSecond=True) for r in self.context.getChildRelations(sort=None)) - rels = sorted(rels, key=lambda r: (r.order, r.title.lower())) + if sort: + rels = sorted(rels, key=lambda r: (r.order, r.title.lower())) for r in rels: - if r.predicate == hasType: + if topLevelOnly and r.predicate == hasType: # only show top-level entries for type instances: skip = False for parent in r.context.getParents((standard,)): @@ -157,7 +159,17 @@ class ConceptView(BaseView): break if skip: continue yield r - #yield ConceptRelationView(r, self.request, contextIsSecond=True) + + def childrenAlphaGroups(self): + letters = [] + relations = {} + rels = self.children(topLevelOnly=False, sort=False) + rels = sorted(rels, key=lambda r: r.title.lower()) + for letter, group in groupby(rels, lambda r: r.title.lower()[0]): + letter = letter.upper() + letters.append(letter) + relations[letter] = list(group) + return dict(letters=letters, relations=relations) def parents(self): rels = sorted(self.context.getParentRelations(), diff --git a/browser/loops.css b/browser/loops.css index a01dd3b..97d4c3b 100644 --- a/browser/loops.css +++ b/browser/loops.css @@ -112,6 +112,22 @@ img.notselected { border: 2px solid #eff8ff; } +.navlink { + font-size: 130%; + margin-bottom: 1em; +} + +.navlink a { + font-weight: bold; + text-decoration: underline; +} + +.subtitle { + font-size: 140%; + font-weight: bold; + margin: 1em 0 0.5em 0; +} + /* search stuff */ diff --git a/knowledge/glossary/view_macros.pt b/knowledge/glossary/view_macros.pt index e224ffe..593a46d 100755 --- a/knowledge/glossary/view_macros.pt +++ b/knowledge/glossary/view_macros.pt @@ -1,15 +1,32 @@ - + +
 
+
+ + A + +
 
-
+
+
A +
+