--- MPIWGWeb/MPIWGProjects.py 2005/05/27 14:58:27 1.47.2.7 +++ MPIWGWeb/MPIWGProjects.py 2005/06/22 08:58:36 1.47.2.16 @@ -61,6 +61,89 @@ def sortI(x,y): except: return cmp(x[1],y[1]) +class MPIWGLink(SimpleItem): + """create a symbolic link to another page""" + + meta_type="MPIWGLink" + + def isActiveItem(self): + """teste ob ausgewaehlt""" + if self.absolute_url()==self.REQUEST['URL']: + return "aktiv" + else: + return "" + + def __init__(self,id,link,title='',weight=''): + """init mpiwglink""" + self.id=id + self.link=link + self.title=title + self.weight=weight + + def getObj(self): + """bekomme original""" + ## objpath=self.link.replace("/",".") +## if objpath[0]!=".": +## objpath="."+objpath + +## print objpath +## return eval("self"+objpath) + + + splitted=self.link.lstrip().split("/") + obj=self + for x in splitted: + if not x=="": + obj=getattr(obj,x) + + return obj + + def getWeight(self): + if self.linkWeight and linkWeight!="": + return self.linkWeight + else: + return self.getObj().weight + + manage_options=SimpleItem.manage_options+( + {'label':'main config','action':'changeLinkForm'}, + ) + + + def changeLinkForm(self): + """change MPIWG link""" + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','MPIWGLinkChange.zpt')).__of__(self) + return pt() + + def changeLink(self,link,title,weight,RESPONSE=None): + """change links""" + self.link=link + self.title=title + self.weight=weight + + if RESPONSE is not None: + RESPONSE.redirect('manage') + + def index_html(self): + """index""" + + return self.getObj().pt_render(extra_context={'here':self}) + + +def manage_addMPIWGLinkForm(self): + """Form for adding link""" + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGLink.zpt')).__of__(self) + return pt() + +def manage_addMPIWGLink(self,id,link,title,weight,RESPONSE=None): + """add link""" + newObj=MPIWGLink(id,link,title,weight) + + self._setObject(id,newObj) + + if RESPONSE is not None: + RESPONSE.redirect('manage_main') + + class MPIWGTemplate(ZopePageTemplate): """Create a layout Template for different purposes""" @@ -97,13 +180,13 @@ class MPIWGTemplate(ZopePageTemplate): """change form""" - def isActive(self): + def isActiveItem(self): """teste ob ausgewaehlt""" if self.absolute_url()==self.REQUEST['URL']: return "aktiv" else: return "" - + def manage_addMPIWGTemplateForm(self): """Form for adding""" pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGTemplate.zpt')).__of__(self) @@ -175,7 +258,7 @@ class MPIWGRoot(ZSQLExtendFolder): def generateUrlProject(self,url,project=None): """erzeuge aus absoluter url, relative des Projektes""" - + splitted=url.split("/") length=len(splitted) short=splitted[length-2:length] @@ -196,18 +279,34 @@ class MPIWGRoot(ZSQLExtendFolder): else: return False - def subNav(self,id): + def subNav(self,obj): + """return subnav elemente""" def sortWeight(x,y): x1=int(getattr(x[1],'weight','0')) y1=int(getattr(y[1],'weight','0')) return cmp(x1,y1) - if hasattr(self,id): - subs=self.ZopeFind(getattr(self,id),obj_metatypes=['MPIWGTemplate']) - subs.sort(sortWeight) - return subs + #if obj.meta_type in ['MPIWGTemplate','MPIWGLink']: + # id=obj.aq_parent.getId() + #else: + + #id=obj.getId() + while not self.ZopeFind(self,obj_ids=[obj.getId()]): + obj=obj.aq_parent + + if hasattr(self,obj.getId()): + + subs=self.ZopeFind(getattr(self,obj.getId()),obj_metatypes=['MPIWGTemplate','MPIWGLink']) + subret=[] + + for x in subs: + if not(x[1].title==""): + subret.append(x) + subret.sort(sortWeight) + return subret else: return None + def isActive(self,name): """teste ob subnavigation aktiv""" for part in self.REQUEST['URL'].split("/"): @@ -414,14 +513,22 @@ class MPIWGRoot(ZSQLExtendFolder): def getProjectsByFieldContent(self,fieldName,fieldContentsEntry): """gib alle Projekte aus mit Value von field mit fieldName enthält ein Element der Liste fieldContents""" - if type(fieldContentsEntry) is StringType: - fieldContents=[fieldContentsEntry] + def sort(x,y): + return cmp(x.WEB_title[0],y.WEB_title[0]) + + if type(fieldContentsEntry) is StringType: + fieldContentsTmp=[fieldContentsEntry] else: - fieldContents=fieldContentsEntry - - projects=self.ProjectCatalog({fieldName:string.join(fieldContents,' OR')}) + fieldContentsTmp=fieldContentsEntry + + fieldContents=[] + for x in fieldContentsTmp: + fieldContents.append(" AND ".join(x.split())) + projects=self.ProjectCatalog({fieldName:string.join(fieldContents,' AND')}) #print projects - return projects + ret=[x for x in projects] + ret.sort(sort) + return ret def changeMPIWGRootForm(self): """edit""" @@ -440,11 +547,13 @@ class MPIWGRoot(ZSQLExtendFolder): def getDisciplineList(self): """get disciplines as list""" - return self.disciplineList.split("\n") + list= self.disciplineList.split("\n") + return [x.rstrip().lstrip() for x in list] def getThemeList(self): """get themes as list""" - return self.themesList.split("\n") + list= self.themesList.split("\n") + return [x.rstrip().lstrip() for x in list] def test(self): """test""" @@ -635,7 +744,8 @@ class MPIWGRoot(ZSQLExtendFolder): #title=project[0].WEB_title title=[project[0].getContent('WEB_title')] #print title - returnList.append((depth,nr,title,project[0])) + if idNr[0]!="x": + returnList.append((depth,nr,title,project[0])) return returnList @@ -648,35 +758,44 @@ class MPIWGRoot(ZSQLExtendFolder): if (element[0]>actualDepth): #fuege soviele ul ein wie unterschied in tiefe if element[0]==1: - ret+="""
""") if len(splitted)>1: tmp=splitted[1].split("
") - self.REQUEST.SESSION['image']=tmp[0].split("\"")[1].encode('utf-8') + #return repr(splitted[1]) + try: + self.imageURL=tmp[0].split("\"")[1].encode('utf-8') + except: + self.imageURL=tmp[0].split("src=")[1].split(" ")[0].encode('utf-8') + split2="".join(tmp[1:]) text3=splitted[0]+split2 @@ -1196,7 +1320,8 @@ class MPIWGProject(CatalogAware,Folder): splitted=text3.split("""""") if len(splitted)>1: tmp=splitted[1].split("
") - self.REQUEST.SESSION['imagecap']=tmp[0].encode('utf-8') + self.imagecap=tmp[0].encode('utf-8') + split4="".join(tmp[1:]) text5=splitted[0]+split4 @@ -1211,14 +1336,21 @@ class MPIWGProject(CatalogAware,Folder): #teste ob WEB_project_description und keine führenden p tags if (len(text5)>4) and (not text5[0:3]=='') and (field=='WEB_project_description'): - return "
"+text5+"
" + text5= ""+text5+"
" #filter image - + return text5.encode('utf-8') - + + def showImagesOfPage(self,imageUrl=None): + """show Images of project""" + self.getContent('WEB_project_description',filter='yes') #get the content and store image infos into session + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','projectImageView.zpt')).__of__(self) + return pt() + + def show_html(self): """simple index""" #return "HI" @@ -1281,7 +1413,8 @@ class MPIWGProject(CatalogAware,Folder): else: splitted=list[0].split(";") - + splitted=[y.rstrip().lstrip() for y in splitted] + for x in splitted: if (not x==u'') and x in wert: return 1