--- MPIWGWeb/Attic/MPIWGHelper.py 2008/10/23 07:53:50 1.1.2.7 +++ MPIWGWeb/Attic/MPIWGHelper.py 2009/04/16 15:55:19 1.1.2.8 @@ -111,3 +111,46 @@ def shortenString(s, l, ellipsis='...'): """returns a string of length l (or l-1) by omitting characters in the middle of s, replacing with ellipsis.""" l1 = int((l - len(ellipsis)) / 2) return "%s%s%s"%(s[:l1],ellipsis,s[-l1:]) + + +# +# navigation methods (should better be a mixin class) +# +def getBreadcrumbs(self): + """return list of breadcrumbs from here to the root""" + crumbs = [(self.title, self.absolute_url(), self)] + parent = self.aq_parent + if hasattr(parent, 'getBreadcrumbs'): + if self.title: + return parent.getBreadcrumbs() + crumbs + else: + # if there's no title, skip this level + return parent.getBreadcrumbs() + + return crumbs + + +def getSection(self): + """returns the current section name""" + p = self + sec = None + # descend parents to the root (and remember the last id) + while p is not None and p.meta_type != 'MPIWGRoot': + sec = p.getId() + p = p.aq_parent + + return sec + +def getSubSection(self): + """returns the current subsection name""" + p = self + sec = None + subsec = None + # descend parents to the root (and remember the last id) + while p is not None and p.meta_type != 'MPIWGRoot': + subsec = sec + sec = p.getId() + p = p.aq_parent + + return subsec +