--- MPIWGWeb/MPIWGProjects.py 2005/05/09 10:01:54 1.47
+++ MPIWGWeb/MPIWGProjects.py 2005/08/31 08:24:29 1.47.2.21
@@ -19,7 +19,7 @@ import xmlhelper # Methoden zur Verwaltu
from OFS.SimpleItem import SimpleItem
from OFS.Folder import Folder
from Products.ZSQLMethods.SQL import SQLConnectionIDs
-
+from AccessControl import ClassSecurityInfo
from bibliography import *
import time
@@ -61,11 +61,111 @@ 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"""
+ #url1 beim link anstelle von url1, da link jeweils index_html als url hat.
+ if self.absolute_url()==self.REQUEST['URL1']:
+ 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"""
meta_type="MPIWGTemplate"
+ manage_options=ZopePageTemplate.manage_options+(
+ {'label':'Change Weight','action':'changeWeightForm'},
+ )
+
+ def changeWeightForm(self):
+ """change weight form"""
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','MPIWGTemplateChangeWeight.zpt')).__of__(self)
+ return pt()
+
+ def changeWeight(self,weight,RESPONSE=None):
+ """change weight"""
+ self.weight=weight
+ if RESPONSE is not None:
+ RESPONSE.redirect('manage')
+
+
def __init__(self, id, text=None, content_type=None,MPIWGType=None):
self.id = str(id)
@@ -81,7 +181,13 @@ class MPIWGTemplate(ZopePageTemplate):
"""change form"""
-
+ 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)
@@ -90,7 +196,7 @@ def manage_addMPIWGTemplateForm(self):
from urllib import quote
-def manage_addMPIWGTemplate(self, MPIWGType,id, title=None,REQUEST=None):
+def manage_addMPIWGTemplate(self, MPIWGType,id, title=None,weight=0,REQUEST=None):
"Add a Page Template with optional file content."
if type(MPIWGType)==StringType:
MPIWGTypes=[MPIWGType]
@@ -125,7 +231,9 @@ def manage_addMPIWGTemplate(self, MPIWGT
except AttributeError:
u = REQUEST['URL1']
-
+ ob = getattr(self, id)
+ ob.weight=weight
+
REQUEST.RESPONSE.redirect(u+'/manage_main')
return ''
@@ -136,7 +244,7 @@ class MPIWGRoot(ZSQLExtendFolder):
fieldLabels={'WEB_title':'WEB_Title','xdata_01':'Responsible Scientists','xdata_02':'Department',
'xdata_03':'Historical Persons','xdata_04':'Time period',
'xdata_05':'Sorting number','xdata_06':'Keywords','xdata_07':'Short title',
- 'xdata_08':'Other involved scholars' ,'xdata_09':'Part of','xdata_10':'Covered by',
+ 'xdata_08':'Other involved scholars' ,'xdata_09':'Disciplines','xdata_10':'Themes',
'xdata_11':'Object Digitallibrary','xdata_12':'Cooperation partners',
'xdata_13':'Funding institutions','WEB_project_header':'WEB_project_header',
'WEB_project_description':'WEB_project_description','WEB_related_pub':'WEB_related_pub'}
@@ -144,6 +252,99 @@ class MPIWGRoot(ZSQLExtendFolder):
folders=['MPIWGProject','Folder','ECHO_Navigation']
meta_type='MPIWGRoot'
+ def versionHeaderEN(self):
+ """version header text"""
+
+ date= self.REQUEST.get('date',None)
+ if date:
+ txt="""
This pages shows the project which existed at %s
"""%str(date)
+ return txt
+ return ""
+
+ def versionHeaderDE(self):
+ """version header text"""
+ date= self.REQUEST.get('date',None)
+ if date:
+ txt="""Auf dieser Seite finden Sie die Projekte mit Stand vom %s
"""%str(date)
+ return ""
+
+ def queryLink(self,link):
+ """append querystring to the link"""
+ return "%s?%s"%(link,self.REQUEST.get('QUERY_STRING',''))
+
+ def getKategory(self,url):
+ """kategorie"""
+ splitted=url.split("/")
+ return splitted[4]
+
+ def generateUrlProject(self,url,project=None):
+ """erzeuge aus absoluter url, relative des Projektes"""
+ if project:
+ splitted=url.split("/")
+ length=len(splitted)
+ short=splitted[length-2:length]
+
+ base=self.REQUEST['URL3']+"/"+"/".join(short)
+
+ else:
+ findPart=url.find("/projects/")
+ base=self.REQUEST['URL1']+"/"+url[findPart:]
+
+
+ return base
+
+ def isNewCapital(self,text=None,reset=None):
+ if reset:
+ self.REQUEST['capital']="A"
+ return True
+ else:
+ if len(text)>0 and not (text[0]==self.REQUEST['capital']):
+ self.REQUEST['capital']=text[0]
+ return True
+ else:
+ return False
+
+ 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 obj.meta_type in ['MPIWGTemplate','MPIWGLink']:
+ # id=obj.aq_parent.getId()
+ #else:
+
+ #id=obj.getId()
+
+
+ #suche die zweite ebene
+ if not obj.aq_parent.getId() in ['de','en']:
+ obj=obj.aq_parent
+
+ 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("/"):
+ if part==name:
+ return True
+ return False
+
+
def upDateSQL(self,fileName):
"""updates SQL databases using fm.jar"""
fmJarPath=os.path.join(package_home(globals()), 'updateSQL/fm.jar')
@@ -340,16 +541,32 @@ class MPIWGRoot(ZSQLExtendFolder):
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editHistoricalPersonsForm')).__of__(self)
return pt()
- def getProjectsByFieldContent(self,fieldName,fieldContentsEntry):
+ def getProjectsByFieldContent(self,fieldName,fieldContentsEntry, date=None):
"""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=[]
+ for x in projects:
+ obj=x.getObject()
+ obj=obj.getActualVersion(date)
+ if obj and (not getattr(obj,'invisible',None)):
+ #if not (x in ret):
+ ret.append(x)
+
+ ret.sort(sort)
+ return ret
def changeMPIWGRootForm(self):
"""edit"""
@@ -368,29 +585,32 @@ 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"""
return self.getProjectsByFieldContent('xdata_09',['biology'])[0].absolute_url
- def getContexts(self,childs=None,parents=None,depth=None):
+ def getContexts(self,childs=None,parents=None,depth=None,date=None):
"""childs alle childs, alle parents"""
ret=[]
+
if parents:
splitted=parents.split(".")
parentId=string.join(splitted[0:len(splitted)-1],".")
- for project in self.getProjectFields('xdata_05',sort='int'):
+ for project in self.getProjectFields('xdata_05',sort='int',date=date):
if project[1]==parentId:
ret.append(project)
if childs:
- for project in self.getProjectFields('xdata_05',sort='int'):
+ for project in self.getProjectFields('xdata_05',sort='int',date=date):
searchStr=childs+"(\..*)"
if re.match(searchStr,project[1]):
@@ -403,7 +623,7 @@ class MPIWGRoot(ZSQLExtendFolder):
ret.append(project)
return ret
- def getProjectFields(self,fieldName,actual="yes",folder=None,sort=None):
+ def getProjectFields(self,fieldName,date=None,folder=None,sort=None):
"""getListofFieldNames"""
ret=[]
@@ -412,8 +632,8 @@ class MPIWGRoot(ZSQLExtendFolder):
for object in objects:
obj=object[1]
-
- if (not getattr(obj,'invisible',None)) and (obj.isActual()):
+ obj=obj.getActualVersion(date)
+ if obj and (not getattr(obj,'invisible',None)):
if fieldName=="WEB_title_or_short":
if len(obj.getContent('xdata_07'))<3: # hack weil z.Z. manchmal noch ein Trennzeichen ; oder , im Feld statt leer
@@ -436,7 +656,7 @@ class MPIWGRoot(ZSQLExtendFolder):
def showNewProjects(self):
projects=[]
for objs in self.getProjectFields('WEB_title_or_short'): # Get all Projets
- if objs[0].xdata_05[0] == "":
+ if objs[0].xdata_05 and (objs[0].xdata_05[0] == ""):
projects.append(objs)
@@ -550,10 +770,11 @@ class MPIWGRoot(ZSQLExtendFolder):
return entry
- def getTree(self):
+ def getTree(self,date=None):
"""generate Tree from project list"""
+
returnList=[]
- for project in self.getProjectFields('xdata_05',sort="int"): # get Projects sorted by xdata_05
+ for project in self.getProjectFields('xdata_05',sort="int",date=date): # get Projects sorted by xdata_05
for idNr in project[1].split(";"): # more than one number
if not idNr=="":
@@ -563,11 +784,65 @@ 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
+ def formatElementsAsList(self,elements):
+ """formatiere tree als liste"""
+
+ actualDepth=0
+ ret=""
+ for element in elements:
+ if (element[0]>actualDepth):
+ #fuege soviele ul ein wie unterschied in tiefe
+ if element[0]==1:
+ ret+="""\n
\n"""
+ else:
+ for i in range(element[0]-actualDepth):
+ if i>0:
+ ret+="- "
+ ret+="""
\n"""
+
+ actualDepth=element[0]
+
+ elif (element[0]
\n"
+
+ #ret+="
\n\n\n\n"
+
+ if element[0]==1:
+ department=int(element[3].getContent('xdata_05'))-1
+
+ ret+="""
\n"""
+ if department==4: #hack
+ department=3
+
+ ret+="""
+ \n
\n
+ """%department
+
+ actualDepth=element[0]
+ else:
+ ret+="""\n\n"""
+ ret+="""- \n"""
+
+ if actualDepth==1:
+ departmentName={'1':'Department I','2':'Department II','3':'Department III', '4':'Ind. Research Group','5':'Ind. Research Group'}
+ department=element[3].getContent('xdata_05')
+ ret+="""
%s: """%(department,departmentName[department])
+
+ if self.REQUEST.has_key('date'):
+ ret+="""%s"""%(self.generateUrlProject(element[3].absolute_url())+"/index.html",self.REQUEST['date'],element[3].getContent('WEB_title'))
+ else:
+ ret+="""%s"""%(self.generateUrlProject(element[3].absolute_url())+"/index.html",element[3].getContent('WEB_title'))
+ return ret
+
def formatElementForOverview(self,element):
"""format the element for output in overview"""
if element[0]==1: #department
@@ -626,8 +901,9 @@ class MPIWGRoot(ZSQLExtendFolder):
for idNr in form.keys():
- fields[int(idNr)][3].xdata_05=form[idNr]
-
+ if not (fields[int(idNr)][3].xdata_05==form[idNr]):
+ fields[int(idNr)][3].xdata_05=form[idNr]
+ fields[int(idNr)][3].copyObjectToArchive()
if RESPONSE is not None:
@@ -707,17 +983,17 @@ class MPIWGRoot(ZSQLExtendFolder):
ret.append("%s"%person)
return string.join(ret,";")
- def getProjectsOfMembers(self):
+ def getProjectsOfMembers(self,date=None):
"""give tuple member /projects"""
ret=[]
members=self.getAllMembers()
#return str(members)
for x in members:
- ret+=self.getProjectsOfMember(name=x)
+ ret+=self.getProjectsOfMember(name=x,date=date)
return ret
- def getProjectsOfMember(self,name=None,email=None):
+ def getProjectsOfMember(self,name=None,email=None,date=None):
"""get project of a member"""
def sortP(x,y):
"""sort by sorting number"""
@@ -728,8 +1004,8 @@ class MPIWGRoot(ZSQLExtendFolder):
ret=[]
splitNeu=[]
if email:
- #print "IIII:",self.getId()
- members=self.ZopeFind(self,obj_metatypes=['MPIWGStaff'],obj_ids=[email],search_sub=1)
+
+ members=self.ZopeFind(self.members,obj_metatypes=['MPIWGStaff'],obj_ids=[email],search_sub=1)
name = members[0][1].title.decode('utf-8')
y=name
@@ -746,8 +1022,7 @@ class MPIWGRoot(ZSQLExtendFolder):
if proj:
proj2=[]
for x in proj:
-
- if not getattr(x.getObject(),'invisible',None):
+ if (not getattr(x.getObject(),'invisible',None)) and (getattr(x.getObject(),'archiveTime','')==''):
if not((splitted[1]==" Christoph") and (splitted[0]=="Hoffmann") and (str(x.WEB_title).find('Einstein')>0)):
proj2.append(x)
@@ -758,8 +1033,8 @@ class MPIWGRoot(ZSQLExtendFolder):
if proj:
names=[x.WEB_title for x in proj]
for x in proj:
-
- if not x.WEB_title in names:
+
+ if (not x.WEB_title in names) and (getattr(x.getObject(),'archiveTime','')==''):
proj2.append(x)
@@ -864,7 +1139,7 @@ def manage_addMPIWGRoot(self,id,title,co
class MPIWGProject(CatalogAware,Folder):
"""Class for Projects"""
-
+ security=ClassSecurityInfo()
meta_type='MPIWGProject'
default_catalog='ProjectCatalog'
@@ -883,6 +1158,47 @@ class MPIWGProject(CatalogAware,Folder):
return retTXT%(s,s)
else:
return ""
+
+ def getActualVersion(self,date=None):
+ """actuelle version"""
+ def sortProjectsByTime(x,y):
+ return cmp(x[1].archiveTime,y[1].archiveTime)
+
+ if not date:
+ if self.isActual():
+ return self
+ else:
+ return None
+
+ #suche ob aeltere versionen vorhanden sind
+
+ finds=self.ZopeFind(self,obj_metatypes=['MPIWGProject'])
+ if not finds: #wenn nicht dann teste ob die aktuelle version schon existiert hat.
+ ad=getattr(self,'creationTime','20050101000000')
+ if int(date)>int(ad):
+ return self
+ else:
+ return None
+
+
+ else:
+ finds.sort(sortProjectsByTime)
+
+ for find in finds:
+ #gehe durch die alten Projekte und finde das entprechende
+ if (int(find[1].archiveTime) > int(date)) and (int(date)>int(getattr(find[1],'creationTime','20050101000000'))):
+ return find[1]
+
+ #kein passendes gefunden, dann teste ob das aktuelle in frage kommt
+ ad=getattr(self,'creationTime','20050101000000')
+
+ if int(date)>int(ad):
+
+ return self
+ else:
+ return None
+
+
def isActual(self):
"""gibt 1 zurueck wenn aktuell, 0 sonst"""
actualTime=time.localtime()
@@ -959,8 +1275,9 @@ class MPIWGProject(CatalogAware,Folder):
RESPONSE.redirect('manage_main')
def __init__(self, id, argv=None):
- """initieriere classe"""
-
+ """initiere classe"""
+
+ self.creationTime=time.strftime("%Y%m%d%H%M%S",time.localtime())[0:]
self.id=id
self.title=id
if argv:
@@ -989,36 +1306,59 @@ class MPIWGProject(CatalogAware,Folder):
def sortProjectsByTime(x,y):
return cmp(x[1].archiveTime,y[1].archiveTime)
-
+
+ #suche ob aeltere versionen vorhanden sind
+
finds=self.ZopeFind(self,obj_metatypes=['MPIWGProject'])
- if not finds:
- return self.absolute_url()
+ if not finds: #wenn nicht dann teste ob die aktuelle version schon existiert hat.
+ ad=getattr(self,'creationTime','20050101000000')
+ if int(date)>int(ad):
+ return self.REQUEST['URL1']+"/"+self.getId()
+ else:
+ return self.REQUEST['URL1']+"/no_project"
+
+
else:
finds.sort(sortProjectsByTime)
for find in finds:
- if int(find[1].archiveTime) > int(date):
- return find[1].absolute_url()
+ #gehe durch die alten Projekte und finde das entprechende
+ if (int(find[1].archiveTime) > int(date)) and (int(date)>int(getattr(find[1],'creationTime','20050101000000'))):
+ return self.REQUEST['URL1']+"/"+find[1].getId()
- return self.absolute_url()
+ #kein passendes gefunden, dann teste ob das aktuelle in frage kommt
+ ad=getattr(self,'creationTime','20050101000000')
-
-
- def index_html(self):
- """show homepage"""
+ if int(date)>int(ad):
- if self.REQUEST.has_key('date') and self.REQUEST.SESSION.get('MPI_redirected',None)==None:
- self.REQUEST.SESSION['MPI_redirected']=1
- self.REQUEST.RESPONSE.redirect(self.checkDate(self.REQUEST['date']))
+ return self.REQUEST['URL1']+"/"+self.getId()
else:
- self.REQUEST.SESSION['MPI_redirected']=None
+ return self.REQUEST['URL1']+"/no_project"
- ext=self.ZopeFind(self.aq_parent,obj_ids=["project_main"])
-
+
+ def no_project(self):
+ """warnung: project noch nicht existent"""
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','no_project')).__of__(self)
+ return pt()
+
+ def index_html(self,request=True,context=None):
+ """show homepage"""
+ if not context:
+ context=self
+ if request:
+ if self.REQUEST.has_key('date') and self.REQUEST.SESSION.get('MPI_redirected',None)==None:
+ self.REQUEST.SESSION['MPI_redirected']=1
+ self.REQUEST.RESPONSE.redirect(self.checkDate(self.REQUEST['date'])+"?date="+self.REQUEST['date'])
+ else:
+ self.REQUEST.SESSION['MPI_redirected']=None
+
+ #ext=self.ZopeFind(self.aq_parent,obj_ids=["project_main"])
+ ext=getattr(self,"project_main",None)
if ext:
- return getattr(self,ext[0][1].getId())()
+ return getattr(self,ext.getId())()
+
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','project_main')).__of__(context)
- pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','project_main')).__of__(self)
return pt()
@@ -1039,7 +1379,7 @@ class MPIWGProject(CatalogAware,Folder):
"""get attrbiute"""
return getattr(self,field)
- def getContent(self,field):
+ def getContent(self,field,filter=None):
"""Inhalt des Feldes"""
text=u''
@@ -1071,25 +1411,121 @@ class MPIWGProject(CatalogAware,Folder):
if (text2=='') and (field=='WEB_project_header'):
return self.getContent('WEB_title')
+ if filter:
+ splitted=text2.split("""""")
+ if len(splitted)>1:
+ tmp=splitted[1].split("
")
+ #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
+
+ splitted=text3.split("""""")
+ if len(splitted)>1:
+ tmp=splitted[1].split("
")
+ self.imagecap=tmp[0].encode('utf-8')
+
+ split4="".join(tmp[1:])
+
+ text5=splitted[0]+split4
+ else:
+ #keine caption
+ text5=text3
+ else:
+ #kein bild
+ text5=text2
+ else:
+ text5=text2
+
#teste ob WEB_project_description und keine führenden p tags
- if (len(text2)>4) and (not text2[0:3]=='') and (field=='WEB_project_description'):
- return "
"+text2+"
"
+ if (len(text5)>4) and (not text5[0:3]=='') and (field=='WEB_project_description'):
+ text5= "
"+text5+"
"
- return text2.encode('utf-8')
-
+ #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"
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','MPIWGProject_index.zpt')).__of__(self)
return pt()
+ def saveFromPreview(self):
+ """save content aus preview"""
+ self.WEB_project_description=self.previewTemplate.WEB_project_description[0:]
+ self.REQUEST.RESPONSE.redirect("./index.html")
+
+ def saveEditedContent(self,kupu=None,preview=None):
+ """save Edited content"""
+
+ kupu=preview
+ #find content of body tags
+ start=kupu.find("")
+ end=kupu.find("")
+ newcontent= kupu[start+6:end]
+
+ if preview:
+ return self.preview(newcontent)
+
+ self.WEB_project_description=newcontent[0:]
+
+ self.REQUEST.RESPONSE.redirect("./edit")
+
+ return True
+
+ security.declareProtected('View managment screens','edit')
+ def edit(self):
+ """Edit pages"""
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGProjectNeu.zpt')).__of__(self)
+ return pt()
+
+ def preview(self,description):
+ """preview"""
+ tmpPro=getattr(self,"previewTemplate",None)
+ if not tmpPro:
+ tmpPro=MPIWGProject("previewTemplate")
+ self._setObject("previewTemplate",tmpPro)
+ for field in definedFields:
+ setattr(tmpPro,field,getattr(self,field))
+ tmpPro.WEB_project_description=description[0:]
+
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','previewFrame.zpt')).__of__(self)
+ return pt()
+
+ #return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+"/previewTemplate")
+
+
+ def getWebProject_description(self):
+ """get description"""
+
+ if type(self.WEB_project_description) is ListType:
+ return "Hello"+self.WEB_project_description[0]+""
+ else:
+ return self.WEB_project_description
+
+
def editMPIWGProjectForm(self):
"""editform"""
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGProject.zpt')).__of__(self)
return pt()
- def editMPIWGProject(self,RESPONSE=None):
+
+ def editMPIWGProject(self,RESPONSE=None,fromEdit=None):
"""edit the project and archive the old version"""
self.copyObjectToArchive() # archive the object
@@ -1100,17 +1536,29 @@ class MPIWGProject(CatalogAware,Folder):
setattr(self,x,[self.REQUEST[x].decode('utf-8')])
+ if fromEdit and (RESPONSE is not None):
+ RESPONSE.redirect('./editMPIWGBasisEditor')
+
+ else:
+ if RESPONSE is not None:
+ RESPONSE.redirect('manage_main')
-
- if RESPONSE is not None:
- RESPONSE.redirect('manage_main')
+
+ security.declareProtected('View managment screens','editMPIWGDisciplinesThemesEditor')
+ def editMPIWGDisciplinesThemesEditor(self):
+ """edit from edit"""
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGDisciplinesThemesNeu.zpt')).__of__(self)
+ return pt()
+
+
def editMPIWGDisciplinesThemesForm(self):
"""edit the disciplines and themes Form"""
+
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGDisciplinesThemes.zpt')).__of__(self)
return pt()
- def editMPIWGDisciplinesThemes(self,disciplines=None,themes=None,RESPONSE=None):
+ def editMPIWGDisciplinesThemes(self,disciplines=None,themes=None,RESPONSE=None,fromEdit=None):
"""edit disciplin and form"""
if disciplines:
if type(disciplines) is StringType:
@@ -1126,9 +1574,13 @@ class MPIWGProject(CatalogAware,Folder):
self.xdata_10=string.join(themes,";")
else:
self.xdata_10=""
-
- if RESPONSE is not None:
- RESPONSE.redirect('manage_main')
+
+ if fromEdit and (RESPONSE is not None):
+ RESPONSE.redirect('./editMPIWGDisciplinesThemesEditor')
+
+ else:
+ if RESPONSE is not None:
+ RESPONSE.redirect('manage_main')
def isChecked(self,wert,list):
@@ -1140,16 +1592,26 @@ 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
return 0
+
+ security.declareProtected('View management screens','editMPIWGBasisEditor')
+ def editMPIWGBasisEditor(self):
+ """editform"""
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGBasisNeu.zpt')).__of__(self)
+ return pt()
+
def editMPIWGBasisForm(self):
"""editform"""
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGBasis.zpt')).__of__(self)
return pt()
+
+
def editMPIWGRelatedPublicationsForm(self):
"""Edit related Publications"""
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGRelatedPublications.zpt')).__of__(self)
@@ -1207,6 +1669,6 @@ def manage_addMPIWGProject(self,id,RESPO
self._setObject(id,newObj)
-
+
if RESPONSE is not None:
RESPONSE.redirect('manage_main')