[Checkins] SVN: Sandbox/ulif/grokui.zodbbrowser/src/grokui/zodbbrowser/pages.py - add breadcrumbs.

Uli Fouquet uli at gnufix.de
Sat Feb 13 04:24:52 EST 2010


Log message for revision 108969:
  - add breadcrumbs.
  
  - reflect changes in ObjectInfo api.
  

Changed:
  U   Sandbox/ulif/grokui.zodbbrowser/src/grokui/zodbbrowser/pages.py

-=-
Modified: Sandbox/ulif/grokui.zodbbrowser/src/grokui/zodbbrowser/pages.py
===================================================================
--- Sandbox/ulif/grokui.zodbbrowser/src/grokui/zodbbrowser/pages.py	2010-02-13 09:23:34 UTC (rev 108968)
+++ Sandbox/ulif/grokui.zodbbrowser/src/grokui/zodbbrowser/pages.py	2010-02-13 09:24:51 UTC (rev 108969)
@@ -1,4 +1,4 @@
-"""ZODBbrowser pages.
+"""ZODBbrowser pages and other viewing components.
 """
 import grok
 from persistent import Persistent
@@ -29,7 +29,8 @@
             jar = self.jar()
             self.obj = jar.get(oid)
         self.info = IObjectInfo(self.obj)
-        self.info.name = name
+        self.info._name = name
+        self.getBreadCrumbs()
 
     def findClosestPersistent(self):
         obj = removeSecurityProxy(self.context)
@@ -72,6 +73,36 @@
         # this subview needs a reference to our context...
         view.parent_context = self.context
         return view
+
+    def getBreadCrumbs(self):
+        """Breadcrumb navigation.
+        """
+        root_oid = self.getRootOID()
+        curr = self.info
+        parent_list = [curr] #dict(name=curr.name, oid=curr.oid)]
+        while True:
+            parent = IObjectInfo(curr.getParent())
+            if parent.obj is not None:
+                parent_list.append(parent)
+            if parent.obj is None or parent.obj is curr.obj:
+                break
+            curr = parent
+        link_list = []
+        for info in parent_list:
+            name = info.name or '???'
+            if info.oid == root_oid:
+                name = '<root>'
+            link = '<a href="%s">%s</a>' % (self.getMemberLink(info), name)
+            link_list.append(link)
+        if parent_list[-1].oid != root_oid:
+            link_list.append('...')
+            link_list.append(
+                '<a href="%s">%s</a>' % (
+                    self.getMemberLink(IObjectInfo(self.context.root)),
+                    '&lt;root&gt;'))
+        link_list.reverse()
+        result = ' > '.join(link_list)
+        return result
     
 class MemberInfoView(grok.View):
     """View objectinfo as memberinfo.



More information about the checkins mailing list