--- ECHO_content/ECHO_collection.py 2004/05/10 15:27:32 1.77 +++ ECHO_content/ECHO_collection.py 2004/05/28 10:43:05 1.93 @@ -19,14 +19,18 @@ from Globals import DTMLFile from OFS.Folder import Folder from OFS.SimpleItem import SimpleItem from AccessControl import ClassSecurityInfo +from AccessControl.User import UserFolder from Globals import InitializeClass from Globals import DTMLFile +import Globals from Products.PageTemplates.PageTemplateFile import PageTemplateFile from Products.PageTemplates.PageTemplate import PageTemplate from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate from Globals import Persistent, package_home from Acquisition import Implicit from ECHO_helpers import displayTypes + + try: from psycopg import libpq except: @@ -48,24 +52,34 @@ viewClassificationListMaster=['view poin def checkDiffs(self,metadict): """check differences""" + + + def NoneToEmpty(obj): if obj: return obj else: return "" + + diffs={} + tags=self.findTagsFromMapping(self.contentType) + self.referencetypes=tags[2] + self.fields=tags[3] + + for field in tags[1]: try: if (NoneToEmpty(self.getFieldValue(self.getFieldTag(tags,field)))==metadict[self.getFieldTag(tags,field)]): diffs[self.getFieldTag(tags,field)]=1 else: - print "DIFF",field,self.getFieldValue(self.getFieldTag(tags,field)),metadict[self.getFieldTag(tags,field)] + diffs[self.getFieldTag(tags,field)]=0 except: diffs[self.getFieldTag(tags,field)]=0 - print "EX",field + return diffs def content_html(self,type): @@ -120,9 +134,25 @@ def sendFile(self, filename, type): self.REQUEST.RESPONSE.write(file(fn).read()) return +class BrowserCheck: + """check the browsers request to find out the browser type""" + + def __init__(self, zope): + self.ua = zope.REQUEST.get_header("HTTP_USER_AGENT") + self.isN4 = (string.find(self.ua, 'Mozilla/4.') > -1) and (string.find(self.ua, 'MSIE') < 0) + self.isIE = string.find(self.ua, 'MSIE') > -1 + self.nav = self.ua[string.find(self.ua, '('):] + ie = string.split(self.nav, "; ")[1] + if string.find(ie, "MSIE") > -1: + self.versIE = string.split(ie, " ")[1] + self.isMac = string.find(self.ua, 'Macintosh') > -1 + self.isWin = string.find(self.ua, 'Windows') > -1 + self.isIEWin = self.isIE and self.isWin + self.isIEMac = self.isIE and self.isMac + def writeMetadata(url,metadict): - """Einlesen der Metadaten und und erstellen des geänderten XML file""" + """Einlesen der Metadaten und und erstellen des geaenderten XML file""" try: geturl="" @@ -146,7 +176,7 @@ def writeMetadata(url,metadict): metanode=metanodes[0] for metaData in metadict.keys(): - print metaData,metanode + try: nodeOld=metanode.getElementsByTagName(metaData) except: @@ -165,13 +195,18 @@ def writeMetadata(url,metadict): metanode.removeChild(nodeOld[0]).unlink() metanodeneu=dom.createElement(metaData) - metanodetext=dom.createTextNode(unicode(metadict[metaData],"utf8")) + try: + metanodetext=dom.createTextNode(unicode(metadict[metaData],"utf-8")) + except: + metanodetext=dom.createTextNode(metadict[metaData].encode('utf-8')) metanodeneu.appendChild(metanodetext) metanode.appendChild(metanodeneu) - return dom.topxml().encode('utf-8') + return dom.toxml().encode('utf-8') + + def readMetadata(url): """Methode zum Auslesen der Metadateninformation zu einer Resource Vorerst noch Typ bib""" @@ -196,7 +231,7 @@ def readMetadata(url): if len(metanode)==0: metanode=dom.getElementsByTagName('archimedes') metadict['bib_type']='Archimedes' - #print "HELLO" + if not len(metanode)==0: metacontent=metanode[0].childNodes @@ -208,7 +243,7 @@ def readMetadata(url): for node in metacontent: try: - metadict[re.sub('-','_',node.tagName.lower())]=getText(node.childNodes) + metadict[re.sub('-','_',node.tagName.lower())]=urllib.unquote(getText(node.childNodes)) except: """nothing""" @@ -233,15 +268,15 @@ def setECHO_collectionInformation(self,t coords=[] #coordinates of for rectangles - #print "cs", coordstrs + if coordstrs: for coordstr in coordstrs: - #print "cs", coordstr + try: temco=coordstr.split(",") except: temco=[] - #temco.append(angle) + coords.append(temco) @@ -361,7 +396,7 @@ def manage_addECHO_layoutTemplate(self, REQUEST.RESPONSE.redirect(u+'/manage_main') return '' -class ECHO_resource(Folder): +class ECHO_resource(Folder,Persistent): """ECHO Ressource""" meta_type='ECHO_resource' @@ -385,7 +420,32 @@ class ECHO_resource(Folder): return self.viewClassification else: return "" - + + def getFullTextXML(self,noredirect=None): + """getFullTextXML; gives the FullText as an XML Document, and if somthing goes wrong.""" + try: + fh=urllib.urlopen(self.metalink) + dom=xml.dom.minidom.parse(fh) + texttools=dom.getElementsByTagName('texttool') + text=texttools[0].getElementsByTagName('text') + texturl=getText(text[0].childNodes) + self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml') + if not noredirect: + self.REQUEST.RESPONSE.redirect(texturl) + else: + return texturl + except: + + if not noredirect: + self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml') + self.REQUEST.RESPONSE.write("no fulltext available") + else: + return "no fulltext available" + + def getCopyright(self): + """gib link auf copyright notiz aus""" + return """copyright""" + def getCredits(self): """Ausgabe der credits""" if self.credits: @@ -393,7 +453,7 @@ class ECHO_resource(Folder): else: return [] - def __init__(self,id,link,metalink,title,label,description,contentType,responsible,credits,weight,coords): + def __init__(self,id,link,metalink,resourceID,title,label,description,contentType,renderingType,responsible,credits,weight,coords): self.id = id """Festlegen der ID""" @@ -406,8 +466,10 @@ class ECHO_resource(Folder): self.credits=toList(credits) self.description=description self.contentType=contentType + self.renderingType=renderingType self.responsible=responsible - + self.resourceID=resourceID + if coords: coordsnew=[ string.split(x,",") for x in coords] else: @@ -485,8 +547,7 @@ class ECHO_resource(Folder): for data in self.metadata: data_neu=re.sub('-','_',data) self.metaDataHash[data_neu]=getattr(self,data) - #print data_neu, getattr(self,data) - #print self.metaDataHash,self.metadata + pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_resource_metadata.zpt').__of__(self) return pt() @@ -515,7 +576,10 @@ class ECHO_resource(Folder): def changeECHO_resource_coords(self,coords,viewClassification,RESPONSE=None): """Änderung der Properties - coords""" - try: + if type(coords)==StringType: + coords=[coords] + + try: coordsnew=[ string.split(x,",") for x in coords] except: coordsnew=[] @@ -536,6 +600,17 @@ class ECHO_resource(Folder): RESPONSE.redirect('manage_main') + def changeECHO_resource_metadata_local(self,RESPONSE=None): + """change metadata""" + tags=self.findTagsFromMapping(self.contentType) + for field in tags[1]: + self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)] + + + + if RESPONSE is not None: + RESPONSE.redirect('manage_main') + def changeECHO_resource_metadata(self,RESPONSE=None): """change metadata""" tags=self.findTagsFromMapping(self.contentType) @@ -553,12 +628,20 @@ class ECHO_resource(Folder): RESPONSE.redirect('manage_main') + def getMDValue(self,fieldName): + return self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%self.contentType) + def newMetaXML(self): """new index.meta""" self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml') return writeMetadata(self.metalink,self.OSAS_meta) - + + def getMetaDataXML(self): + """prints out metadata as stored in the echo environment, format is the index.meta format""" + self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml') + return writeMetadata(self.metalink,self.metaDataHash) + def changeECHO_resource(self,metalink,link,title,label,description,contentType,responsible,weight,viewClassification="",coords=None,credits=None,RESPONSE=None): """Änderung der Properties""" @@ -649,7 +732,7 @@ class ECHO_resource(Folder): def getFieldValue(self,field): """get value""" - #print field + try: ret=self.metaDataHash[field] @@ -660,75 +743,138 @@ class ECHO_resource(Folder): except: return None + def getMetaDataHash(self): + """md hash""" + return self.metaDataHash + + def setFieldValue(self,field,value): + """get value""" + + if not hasattr(self,'metaDataHash'): + setattr(self,'metaDataHash',{}) + self.metaDataHash[field]=value[0:] + + + def findLabelsFromMapping(self,referenceType): """gib hash mit label -> generic zurueck""" - self.referencetypes=self.ZopeFind(self.standardMD) - #print "RT",referenceType + #return {},[] + + temp=self.ZopeFind(self.standardMD) + + if referenceType=="": + referenceType="book" + bibdata={} retdata={} + fields=[] fieldlist=self.standardMD.fieldList for referenceTypeF in self.referencetypes: - #print referenceTypeF[1].title,referenceType - if referenceTypeF[1].title == referenceType: - #print "OK" - bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields + + if referenceTypeF[1].title.lower() == referenceType.lower(): + + try: + bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields + referenceType=referenceTypeF[1].title + except: + bibdata[referenceType]=referenceTypeF[1].fields + + bibdata['data']=referenceTypeF[1] - self.fields=bibdata[referenceType] + fields=bibdata[referenceType] for field in fieldlist: retdata[field]=referenceTypeF[1].getValue(field)[1] - #print retdata,fieldlist - return retdata,fieldlist + + return retdata,fieldlist,temp,fields def findTagsFromMapping(self,referenceType): """gib hash mit label -> generic zurueck""" - self.referencetypes=self.ZopeFind(self.standardMD) + + if referenceType=="": + referenceType="book" + temp = self.ZopeFind(self.standardMD)[0:] + + + #self.referencetypes=temp[0:] + + + + + + bibdata={} retdata={} fieldlist=self.standardMD.fieldList - for referenceTypeF in self.referencetypes: + for referenceTypeF in temp: - if referenceTypeF[1].title == referenceType: - bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields + if referenceTypeF[1].title.lower() == referenceType.lower(): + try: + bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields + referenceType=referenceTypeF[1].title + except: + bibdata[referenceType]=referenceTypeF[1].fields bibdata['data']=referenceTypeF[1] - self.fields=bibdata[referenceType] + fields=bibdata[referenceType] for field in fieldlist: retdata[field]=referenceTypeF[1].getValue(field)[0] - return retdata,fieldlist + return retdata,fieldlist,temp,fields - - + + def copyIndex_meta2echo_resource(self,RESPONSE=None): + """copy MD von Index_meta to the echo_resource""" + + (metadict, error)=readMetadata(self.metalink) + + self.metaDataHash={} + if not error=="": #Fehler beim Auslesen des Metafiles + return "ERROR:",error + fields=self.findTagsFromMapping(self.contentType) + #fields=self.findLabelsFromMapping(self.contentType) + for field in fields[1]: + if self.isDefinedInThisSet(fields,field): + self.setFieldValue(self.getFieldTag(fields,field),metadict.get(self.getFieldTag(fields,field),'')) + + + + if RESPONSE: + return RESPONSE.redirect('manage_main') + def ECHO_getResourceMD(self,template="yes"): """Einlesen der Metadaten und Anlegen dieser Metadaten als Informationen zur Resource""" (metadict, error)=readMetadata(self.metalink) - + if not error=="": #Fehler beim Auslesen des Metafiles return "ERROR:",error - if not (metadict['bib_type']==self.contentType): + if not (metadict['bib_type'].lower()==self.contentType.lower()): self.REQUEST.SESSION['contentStorage']=metadict['bib_type'] self.REQUEST.SESSION['contentZope']=self.contentType return PageTemplateFile('Products/ECHO_content/zpt/ECHO_getResourceMDErrorContentType.zpt').__of__(self)() - - self.REQUEST.SESSION['metadict']=metadict - self.REQUEST.SESSION['diffs']=checkDiffs(self,metadict) + self.REQUEST.SESSION['metadict']=metadict + + + + self.REQUEST.SESSION['diffs']=checkDiffs(self,self.REQUEST.SESSION['metadict']) + if template=="yes": - pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_resourceMD.zpt').__of__(self) - return pt() + pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_resourceMD.zpt').__of__(self) + return pt() + @@ -741,12 +887,49 @@ class ECHO_resource(Folder): return self.REQUEST.RESPONSE.redirect(self.link) + def startpage_html(self): + """prints out a startpage for a resource for use e.g. in the BVE""" + + # suche ob startpage.html in dem Ordner vorhanden ist, dann wir diese angezeigt + + sp=self.ZopeFind(self,obj_ids=['startpage.html']) + + if sp: + return sp[1]() + + #prüfen ob irgendwo ein template + if hasattr(self,'startpage_index_template'): + return self.startpage_index_template() + + #generisches template ausgeben + + pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_startpage_index_template_standard.zpt').__of__(self) + pt.content_type="text/html" + return pt() + + def toc_html(self): + + sp=self.ZopeFind(self,obj_ids=['toc.html']) + + if sp: + return sp[0][1]() + + + def generate_label(self): """Erzeugt_standard_Label aus Template""" pt=getattr(self,"label_template_"+self.bib_type) return pt() + def generate_title(self,RESPONSE=None): + """Erzeugt_standard_Label aus Template""" + pt=getattr(self,"label_template_"+self.contentType) + + self.title=pt() + + return pt() + def manage_addECHO_resourceForm(self): """Form for adding a ressource""" pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_resourceForm.zpt').__of__(self) @@ -754,10 +937,10 @@ def manage_addECHO_resourceForm(self): -def manage_addECHO_resource(self,id,title,label,description,contentType,responsible,link,metalink,weight,credits=None,coords=None,RESPONSE=None): +def manage_addECHO_resource(self,id,title,label,description,responsible,link,metalink,weight,resourceID=None,contentType=None,renderingType=None,credits=None,coords=None,RESPONSE=None): """addaresource""" - newObj=ECHO_resource(id,link,metalink,title,label,description,contentType,responsible,credits,weight,coords) + newObj=ECHO_resource(id,link,metalink,resourceID,title,label,description,contentType,renderingType,responsible,credits,weight,coords) self._setObject(id,newObj) @@ -806,7 +989,7 @@ class ECHO_externalLink(Folder): if not hasattr(self,'coords'): self.coords=[''] - #print "G",self.coords + pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_externalLink.zpt').__of__(self) return pt() @@ -868,8 +1051,11 @@ class ECHO_link(ECHO_externalLink): def content_html(self): - """template fuer content""" - return content_html(self,'link') + """template fuer link""" + if hasattr(self,"link_template"): + return content_html(self,'link') + else: + return content_html(self,'collection') def manage_addECHO_linkForm(self): """Form for external Links""" @@ -890,6 +1076,7 @@ def manage_addECHO_link(self,id,title,la class ECHO_collection(Folder, Persistent, Implicit): """ECHO Collection""" + security=ClassSecurityInfo() meta_type='ECHO_collection' viewClassificationList=viewClassificationListMaster @@ -909,10 +1096,13 @@ class ECHO_collection(Folder, Persistent """title""" return self.label.encode('utf-8') + + def createRessourcesFromXMLForm(self): """form""" pt=PageTemplateFile('Products/ECHO_content/zpt/createRessourcesFromXMLForm.zpt').__of__(self) return pt() + def createRessourcesFromXML(self,fileupload): """read an XML file for generating resources""" dom=xml.dom.minidom.parse(fileupload) @@ -976,7 +1166,7 @@ class ECHO_collection(Folder, Persistent return ret+""+getCollection(self)+"" def createJavaScript(self): - """CreateJava""" + """OLD CreateJava""" ret=javaScriptMain dynamical="\n" @@ -990,7 +1180,7 @@ class ECHO_collection(Folder, Persistent return ret def createJSAreas(self): - """new version of createJavaScript""" + """create area calls for JavaScript""" dynamical="\n" for ob in self.getGraphicCoords(): if ob[5] == "area": @@ -1000,20 +1190,37 @@ class ECHO_collection(Folder, Persistent return dynamical def createMapHead(self): - """generate divs""" + """create javascript include and script tags for head""" pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/ECHO_content_map_frag_js')).__of__(self) return pt() + + def createMapImg(self): + """generate img-tag for map""" + bt = BrowserCheck(self) + tag = "" + src = self.REQUEST['URL1'] + "/overview" + if bt.isN4: + tag += ''%src + else: + tag += ''%src + return tag def createMapLink(self, ob, text=None): """generate map link""" + bt = BrowserCheck(self) id = ob[1] link = ob[1] if text == None: text = ob[2] - tag = '" + tag = "" + if bt.isN4: + tag += '" + else: + tag = '" return tag def createMapAux(self, ob, arrowsrc="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?dw=15&fn=icons/pfeil"): @@ -1022,18 +1229,39 @@ class ECHO_collection(Folder, Persistent link = ob[1] vtype = ob[5] ctype = ob[3].contentType - - tag = ''%(id,id,id,link) - if vtype == "view point": - rot = ob[4][4] - tag += ''%(id,arrowsrc,rot) + bt = BrowserCheck(self) + tag = "" + + if bt.isN4: + tag += ''%(id,id,id) + if vtype == "view point": + rot = ob[4][4] + tag += ''%(link,arrowsrc,rot) + else: + tag += ''%(id,id,id,link) + if vtype == "view point": + rot = ob[4][4] + if bt.isIEWin and bt.versIE > 5: + tag += ''%(id,arrowsrc,rot,arrowsrc,rot) + else: + tag += ''%(id,arrowsrc,rot) + else: + if bt.isIEWin: + tag += '
_sz: + _item=_host[-_sz:] + else: + _item=_host + fail=0 + for i in range(_sz): + h=_item[i] + o=_ob[i] + if (o != h) and (o != '*'): + fail=1 + break + if fail: + continue + return 1 + return 0 + +Globals.default__class_init__(ECHO_userFolder) + + + +def manage_addECHO_userFolder(self,dtself=None,REQUEST=None,**ignored): + """add a user folder """ + f=ECHO_userFolder() + self=self.this() + try: self._setObject('acl_users', f) + except: return MessageDialog( + title ='Item Exists', + message='This object already contains a User Folder', + action ='%s/manage_main' % REQUEST['URL1']) + self.__allow_groups__=f + if REQUEST is not None: + REQUEST['RESPONSE'].redirect(self.absolute_url()+'/manage_main') + +def manage_addECHO_userFolderForm(self): + """add a user folder form""" + return manage_addECHO_userFolder(self) + class ECHO_root(Folder,Persistent,Implicit): """ECHO Root Folder""" + + security=ClassSecurityInfo() + meta_type="ECHO_root" + + def getBibTag(self,tag,content): + """get field tag für index-meta-generation""" + if not content or content=="": + return "" + ret="<%s>"%tag + ret+=urllib.quote(content) + ret+=""%tag + return ret + + def getValueFromClass(self,field,found): + """retattribute falss existing""" + try: + return getattr(found,field) + except: + return "" def getImageTag(self): """needed by main_template""" @@ -1539,7 +1906,7 @@ class ECHO_root(Folder,Persistent,Implic def checkIfArrow(obj): if hasattr(obj,'coords'): for coordtemp in obj.coords: - #print obj.title,len(coordtemp) + if (len(coordtemp)>4) and not (coordtemp[4]==''): return 4 return None @@ -1611,7 +1978,7 @@ class ECHO_root(Folder,Persistent,Implic for word in words: strUrl=url%word - #print "str",strUrl + retStr+="""%s
"""%(strUrl,word) str=retStr if str: @@ -1622,12 +1989,12 @@ class ECHO_root(Folder,Persistent,Implic def link2html(self,str): """link2html fuer VLP muss hier noch raus""" if str: - #print str + str=re.sub("\&","&",str) dom=xml.dom.minidom.parseString(""+str+"") links=dom.getElementsByTagName("link") - #print "link",links + for link in links: link.tagName="a" ref=link.getAttribute("ref") @@ -1642,7 +2009,6 @@ class ECHO_root(Folder,Persistent,Implic dbs={'vl_literature':'AND CD LIKE \'%lise%\'','vl_technology':'','vl_people':''} res=None for db in dbs.keys(): - #print ref,"select reference from %s where reference =\'%s\' %s"%(db,ref,dbs[db]) res=res or self.search(var=str("select reference from %s where reference =\'%s\' %s"%(db,ref,dbs[db]))) return res @@ -1651,7 +2017,7 @@ class ECHO_root(Folder,Persistent,Implic def PgQuoteString(self,string): """Quote string""" - #print "PG",string + return libpq.PgQuoteString(string) def getPartners(self): @@ -1700,7 +2066,79 @@ class ECHO_root(Folder,Persistent,Implic ret.append((collection[0].getId(),collection[1].getId(),collection[2])) return ret - + def getResourcesHTML(self,viewerType=None,filter=None): + """gebe all ressourcen aus""" + + def sortHTML(x,y): + return cmp(x[1].title,y[1].title) + + ret="""

Resources in ECHO

""" + + resources = self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1) + ret+="""

Found %i resources

"""%len(resources) + resources.sort(sortHTML) + for resource in resources: + echo_url=resource[1].absolute_url() + + if hasattr(resource[1],'title'): + title=resource[1].title + else: + title="None" + if filter: + if re.search(filter,title): + ret+="""\n

%s

"""%(echo_url,title) + else: + ret+="""\n

%s

"""%(echo_url,title) + + ret +="""\n""" + + #self.REQUEST.RESPONSE.setHeader("Content-Type", "text/html") + #self.REQUEST.RESPONSE.write(ret) + return ret + + def getResourcesXML(self,viewerType=None,filter=None): + """gebe all ressourcen aus""" + ret=""" + """ + for resource in self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1): + + echo_url=resource[1].absolute_url() + if hasattr(resource[1],'link'): + viewer_url=resource[1].link + else: + viewer_url="NO URL" + if filter: + if re.search(filter,viewer_url): + ret+="""\n"""%(urllib.quote(echo_url,safe='/:?'),urllib.quote(viewer_url,safe='/:?')) + else: + ret+="""\n"""%(urllib.quote(echo_url,safe='/:?'),urllib.quote(viewer_url,safe='/:?')) + ret +="""\n""" + + self.REQUEST.RESPONSE.setHeader("Content-Type", "text/xml") + self.REQUEST.RESPONSE.write(ret) + + def getFullTextsXML(self,viewerType=None,filter=None): + """gebe all ressourcen aus""" + ret=""" + """ + for resource in self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1): + + echo_url=resource[1].absolute_url() + if resource[1].getFullTextXML(noredirect="yes"): + if hasattr(resource[1],'link'): + viewer_url=echo_url+"/getFullTextXML" + else: + viewer_url="NO URL" + if filter: + if re.search(filter,viewer_url): + ret+="""\n"""%(urllib.quote(echo_url,safe='/:?'),urllib.quote(viewer_url,safe='/:?')) + else: + ret+="""\n"""%(urllib.quote(echo_url,safe='/:?'),urllib.quote(viewer_url,safe='/:?')) + ret +="""\n""" + + + self.REQUEST.RESPONSE.setHeader("Content-Type", "text/xml") + self.REQUEST.RESPONSE.write(ret) def manage_addECHO_root(self,id,title,RESPONSE=None): """Add an ECHO_root""" @@ -1713,6 +2151,53 @@ def manage_addECHO_rootForm(self): """Nothing yet""" pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_root.zpt').__of__(self) return pt() + +class ECHO_copyrightType(Folder): + """copyright typ""" + + meta_type="ECHO_copyrightType" + + def __init__(self,id,title,label): + """init""" + self.id=id + self.title=title + self.label=label + + manage_options = Folder.manage_options+( + {'label':'Main Config','action':'ECHO_copyrightType_config_mainForm'}, + ) + + def ECHO_copyrightType_config_mainForm(self): + """change form""" + pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_copyrightType').__of__(self) + pt.content_type="text/html" + return pt() + + def ECHO_copyrightType_config_main(self,title,label,RESPONSE=None): + """change""" + self.title=title + self.label=label + + if RESPONSE is not None: + RESPONSE.redirect('manage_main') + +def manage_addECHO_copyrightTypeForm(self): + """Form for adding a ressource""" + pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_copyrightTypeForm.zpt').__of__(self) + return pt() + + +def manage_addECHO_copyrightType(self,id,title,label,RESPONSE=None): + """addaresource""" + + newObj=ECHO_copyrightType(id,title,label) + + self._setObject(id,newObj) + + if RESPONSE is not None: + RESPONSE.redirect('manage_main') + + class ECHO_partner(Image,Persistent): """ECHO Partner"""