# HG changeset patch # User casties # Date 1361907574 -3600 # Node ID c711fe75d0ac6c50c8d1e7f93dcb7aa22de2e0b2 # Parent 5db416602e85abd6685e62e10331c3df5ea571b3 order by weight form for MPIWGFolder. more cleanup. diff -r 5db416602e85 -r c711fe75d0ac .hgignore --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Tue Feb 26 20:39:34 2013 +0100 @@ -0,0 +1,5 @@ + +syntax: regexp +^\.project$ +syntax: regexp +^\.pydevproject$ \ No newline at end of file diff -r 5db416602e85 -r c711fe75d0ac MPIWGFolder.py --- a/MPIWGFolder.py Fri Feb 15 20:51:34 2013 +0100 +++ b/MPIWGFolder.py Tue Feb 26 20:39:34 2013 +0100 @@ -8,15 +8,17 @@ class MPIWGFolder(Folder): """special Folder object for MPIWG website """ - meta_type="MPIWGFolder" + meta_type = "MPIWGFolder" - manage_options=Folder.manage_options+( - {'label':'Change Weight','action':'changeWeightForm'}, - {'label':'Main Config','action':'changeForm'}, + manage_options = Folder.manage_options + ( + {'label':'Change Weight', 'action':'changeWeightForm'}, + {'label':'Rearrange Weights', 'action':'changeWeightsForm'}, + {'label':'Configure', 'action':'changeForm'}, ) changeWeightForm = PageTemplateFile('zpt/MPIWGFolderChangeWeight', globals()) changeForm = PageTemplateFile('zpt/MPIWGFolderConfig', globals()) + changeWeightsForm = PageTemplateFile('zpt/folder/manage_change_weights', globals()) def __init__(self, id, title=None, weight=0, canonicalName=None): self.id = str(id) @@ -31,16 +33,35 @@ else: self.canonicalName = canonicalName - def changeWeight(self,weight,RESPONSE=None): + def getNavItems(self): + """returns sorted list of sub-items""" + # get all nav-type items + items = self.objectItems(self.nav_meta_types) + # unpack into simple list and omit empty titles + items = [s[1] for s in items if s[1].title != ""] + # sort by weight + items.sort(key=lambda x:int(x.weight)) + return items + + def changeWeight(self, weight, RESPONSE=None): """change weight""" - self.weight=weight + self.weight = weight if RESPONSE is not None: RESPONSE.redirect('manage_main') - def deleteObject(self,id): - """ delete an object inside the MPIWGFolder """ - if self.hasObject(id): - self._delObject(id) + def changeWeightsInFolder(self, REQUEST=None): + """change all weights of a collection""" + ret = "" + form = REQUEST.form + resources = self.getNavItems() + for resource in resources: + try: + id = resource.getId() + ret += id + " " + form[id] + "\n" + resource.changeWeight(form[id]) + except Exception, e: + ret += "ERROR: %s\n"%e + return ret def changeMPIWGFolder(self, title=None, weight=None, canonicalName=None, RESPONSE=None): """change everything""" @@ -62,13 +83,13 @@ def manage_addMPIWGFolderForm(self): """Form for adding""" - pt=PageTemplateFile('zpt/AddMPIWGFolder', globals()).__of__(self) + pt = PageTemplateFile('zpt/AddMPIWGFolder', globals()).__of__(self) return pt() -def manage_addMPIWGFolder(self, id, title=None,weight=0,RESPONSE=None): +def manage_addMPIWGFolder(self, id, title=None, weight=0, RESPONSE=None): "Add a MPIWG Folder." - newObj=MPIWGFolder(id,title,weight) - self.Destination()._setObject(id,newObj) + newObj = MPIWGFolder(id, title, weight) + self.Destination()._setObject(id, newObj) if RESPONSE is not None: RESPONSE.redirect('manage_main') diff -r 5db416602e85 -r c711fe75d0ac MPIWGHelper.py --- a/MPIWGHelper.py Fri Feb 15 20:51:34 2013 +0100 +++ b/MPIWGHelper.py Tue Feb 26 20:39:34 2013 +0100 @@ -1,5 +1,6 @@ from Products.PageTemplates.PageTemplateFile import PageTemplateFile +import SrvTxtUtils import logging definedFields=['WEB_title','xdata_01','xdata_02','xdata_03','xdata_04','xdata_05','xdata_06','xdata_07','xdata_08','xdata_09','xdata_10','xdata_11','xdata_12','xdata_13','WEB_project_header','WEB_project_description','WEB_related_pub'] @@ -86,28 +87,11 @@ return cmp(x[1],y[1]) -def unicodify(s): - """decode str (utf-8 or latin-1 representation) into unicode object""" - if not s: - return u"" - if isinstance(s, str): - try: - return s.decode('utf-8') - except: - return s.decode('latin-1') - else: - return s +# decode str (utf-8 or latin-1 representation) into unicode object +unicodify = SrvTxtUtils.unicodify -def utf8ify(s): - """encode unicode object or string into byte string in utf-8 representation. - assumes string objects to be utf-8""" - if not s: - return "" - if isinstance(s, str): - return s - else: - return s.encode('utf-8') - +# encode unicode object or string into byte string in utf-8 representation. +utf8ify = SrvTxtUtils.utf8ify 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.""" diff -r 5db416602e85 -r c711fe75d0ac MPIWGRoot.py --- a/MPIWGRoot.py Fri Feb 15 20:51:34 2013 +0100 +++ b/MPIWGRoot.py Tue Feb 26 20:39:34 2013 +0100 @@ -225,10 +225,11 @@ subret.sort(sortWeight) return subret - def subNav(self,obj): - """return sub-navigation elements i.e. below sections""" - # get section -> parent should be MPIWGRoot - p = obj + def getSubsections(self, here=None): + """return sub-navigation elements i.e. elements below sections""" + p = here + if p is None: + p = self sec = None # descend parents to the root (and remember the last id) while p is not None and p.meta_type != 'MPIWGRoot': @@ -239,6 +240,9 @@ subsecs = [s for s in subsecs if s[1].title != ""] subsecs.sort(sortWeight) return subsecs + + # compatibility + subNav = getSubsections def isType(self,object,meta_type): """teste ob ein object vom meta_type ist.""" diff -r 5db416602e85 -r c711fe75d0ac zpt/folder/manage_change_weights.zpt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/zpt/folder/manage_change_weights.zpt Tue Feb 26 20:39:34 2013 +0100 @@ -0,0 +1,21 @@ +
If there are significant errors in the labels, please check also the Metadata of the resource
+ +