diff --git a/browser/concept.py b/browser/concept.py index 7d6b398..69e53b4 100644 --- a/browser/concept.py +++ b/browser/concept.py @@ -89,7 +89,9 @@ class ConceptView(BaseView): cm = self.loopsRoot.getConceptManager() hasType = cm.getTypePredicate() standard = cm.getDefaultPredicate() - for r in self.context.getChildRelations(): + rels = sorted(self.context.getChildRelations(), + key=(lambda x: x.second.title)) + for r in rels: if r.predicate == hasType: # only show top-level entries for type instances: skip = False @@ -101,11 +103,15 @@ class ConceptView(BaseView): yield ConceptRelationView(r, self.request, contextIsSecond=True) def parents(self): - for r in self.context.getParentRelations(): + rels = sorted(self.context.getParentRelations(), + key=(lambda x: x.first.title)) + for r in rels: yield ConceptRelationView(r, self.request) def resources(self): - for r in self.context.getResourceRelations(): + rels = sorted(self.context.getResourceRelations(), + key=(lambda x: x.second.title)) + for r in rels: yield ConceptRelationView(r, self.request, contextIsSecond=True) @Lazy @@ -238,11 +244,6 @@ class ConceptConfigureView(ConceptView): result = [r for r in result if r.conceptType is None] return self.viewIterator(result) - def viewIterator(self, objs): - request = self.request - for o in objs: - yield BaseView(o, request) - def conceptTypes(self): return util.KeywordVocabulary([(t.token, t.title) for t in ITypeManager(self.context).listTypes(('concept',))]) diff --git a/browser/configure.zcml b/browser/configure.zcml index 8f2af13..1aa9dd7 100644 --- a/browser/configure.zcml +++ b/browser/configure.zcml @@ -521,6 +521,14 @@ permission="zope.View" /> + diff --git a/browser/node.py b/browser/node.py index d615982..fe107fb 100644 --- a/browser/node.py +++ b/browser/node.py @@ -242,6 +242,17 @@ class ListPages(NodeView): return self +class ListResources(NodeView): + + @Lazy + def macro(self): + return self.template.macros['listresources'] + + @Lazy + def view(self): + return self + + class ConfigureView(NodeView): """ An editing view for configuring a node, optionally creating a target object. diff --git a/browser/node_macros.pt b/browser/node_macros.pt index 5cd8dd7..aea1bd3 100644 --- a/browser/node_macros.pt +++ b/browser/node_macros.pt @@ -80,6 +80,8 @@ + +
+ +
+ Listing +

+
+ +
+
+ +