"""New version of the produc started February, 8th. Without scientific classification, use content-type for further classification.""" """Echo collection provides the classes for the ECHO content web-site. class ECHO_collection is the basis class for an ECHO collection. class ECHO_resource contains information on ECHO resources (e.g. an Display environment for Metadata class ECHO_externalLink contains information on externalLinks """ try: from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import A4 except: print "PDF generation will not work" import urlparse import string import tempfile import zipfile import re import os,shutil import OFS.Image from types import * from OFS.Cache import Cacheable from OFS.Image import Image 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,manage_addPageTemplate from Globals import Persistent, package_home from Acquisition import Implicit from Products.ZCatalog.CatalogPathAwareness import CatalogAware from Products.ZCTextIndex.ZCTextIndex import manage_addLexicon try: from Products.MetaDataProvider.MetaDataClient import MetaDataClient except: print "no metadataclient" import urllib import urllib2 import cgi import smtplib import time from Ft.Xml.Domlette import NonvalidatingReader from Ft.Xml.Domlette import PrettyPrint, Print from Ft.Xml import EMPTY_NAMESPACE import Ft.Xml.XPath import cStringIO import sys try: from psycopg import libpq except: try: from pyPgSQL import libpq except: print "ECHO_collection: Warning - No libpq imported!" import xml.dom.minidom import urllib import xml.dom.minidom import ECHO_helpers from ECHO_helpers import * try: from ECHO_language import * except: print "no echo_language" class ECHO_language: """ leere Klasse""" pass from ECHO_movie import * import vlp_xmlhelpers #TODO: vlp elemente aus echo herausnehmen import xmlrpclib import logging #ersetzt logging.info def logger(txt,method,txt2): """logging""" logging.info(txt+ txt2) def setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordstrs=""): """Allegemeine Informationen zu einer ECHO Collection""" self.label = label self.title=title self.description=description self.contentType=contentType self.responsible=responsible self.credits=toList(credits) self.weight=weight import ECHO_resource from ECHO_resource import manage_addECHO_resource class ECHO_resource(ECHO_resource.ECHO_resource): """depricated use class in ECHO_resource.py""" class ECHO_partner(Image,Persistent,ECHO_basis): """ECHO Partner""" meta_type="ECHO_partner" def __init__(self, id, title,url, file, copyrightType, person, email, country, color, content_type='', precondition=''): self.__name__=id self.title=title self.url=url self.person=person self.email=email self.country=country self.color=color self.precondition=precondition self.copyrightType=copyrightType data, size = self._read_data(file) content_type=self._get_content_type(file, data, id, content_type) self.update_data(data, content_type, size) manage_options = Image.manage_options+( {'label':'Partner Information','action':'ECHO_partner_config'}, ) def changeECHO_partner(self,url,copyrightType,person, email, country, color, RESPONSE=None): """Change main information""" self.url=url self.person=person self.email=email self.country=country self.color=color self.copyrightType=copyrightType if RESPONSE is not None: RESPONSE.redirect('manage_main') def ECHO_partner_config(self): """Main configuration""" if not hasattr(self,'url'): self.url="" pt=zptFile(self, 'zpt/ChangeECHO_partner.zpt') return pt() manage_addECHO_partnerForm=DTMLFile('dtml/ECHO_partnerAdd',globals(), Kind='ECHO_partner',kind='ECHO_partner') def manage_addECHO_partner(self, id, url, person, email, country, color, file=None, copyrightType='', title='', precondition='', content_type='', REQUEST=None): """ Add a new ECHO_partner object. Creates a new ECHO_partner object 'id' with the contents of 'file'. Based on Image.manage_addImage """ id=str(id) title=str(title) content_type=str(content_type) precondition=str(precondition) id, title = OFS.Image.cookId(id, title, file) self=self.this() # First, we create the image without data: self._setObject(id, ECHO_partner(id,title,url,'',copyrightType, person, email, country, color, content_type, precondition)) # Now we "upload" the data. By doing this in two steps, we # can use a database trick to make the upload more efficient. if file: self._getOb(id).manage_upload(file) if content_type: self._getOb(id).content_type=content_type if REQUEST is not None: try: url=self.DestinationURL() except: url=REQUEST['URL1'] REQUEST.RESPONSE.redirect('%s/manage_main' % url) return id class ECHO_locale(ZopePageTemplate): """localisierung""" meta_type="ECHO_locale" def __init__(self,id,lang,title,label,text=None,content_type=None): self.lang=lang self.title=title self.label=label # default content if not text: text = open(self._default_content_fn).read() content_type = 'text/html' self.pt_edit(text, content_type) self.id=id manage_options = ZopePageTemplate.manage_options+( {'label':'Main Config','action':'change_ECHO_localeForm'}, ) def change_ECHO_localeForm(self): """change form""" pt=zptFile(self, 'zpt/ChangeECHO_localeForm.zpt') return pt() def change_ECHO_locale(self,lang,title,label,text=None,content_type=None,RESPONSE=None): """change echo locale""" self.lang=lang self.title=title self.label=label if not text is None: if content_type is None: content_type = self.content_type self.pt_edit(text, content_type) if RESPONSE is not None: RESPONSE.redirect('manage_main') def manage_addECHO_localeForm(self): """Form for adding""" pt=zptFile(self, 'zpt/AddECHO_localeForm.zpt') return pt() def manage_addECHO_locale(self,lang,title,label,text=None,content_type=None,RESPONSE=None): """add echo locale""" id="locale_"+lang self._setObject(id, ECHO_locale(id,lang,title,label,text,content_type)) if RESPONSE is not None: RESPONSE.redirect('manage_main') class ECHO_copyright(Folder,ECHO_basis): """Copyright informationen""" meta_type="ECHO_copyright" def __init__(self,id,title,copyrights): """init""" self.title=title self.id=id self.copyrights=copyrights[0:] def getCopyrights(self): """return coyprights""" return self.copyrights manage_options = Folder.manage_options+( {'label':'Main Config','action':'ECHO_copyright_configForm'}, ) def ECHO_copyright_configForm(self): """change form""" pt=zptFile(self, 'zpt/ChangeECHO_copyright') pt.content_type="text/html" return pt() def ECHO_copyright_config(self,title,RESPONSE=None): """change""" self.title=title self.copyrights=[] self.copyrights=getCopyrightsFromForm(self,self.REQUEST.form)[0:] if RESPONSE is not None: RESPONSE.redirect('manage_main') def manage_addECHO_copyrightForm(self): """Form for adding""" pt=zptFile(self, 'zpt/AddECHO_copyright.zpt') return pt() def manage_addECHO_copyright(self, id,title,RESPONSE=None): """add the copyright""" meta_type="ECHO_copyright" #first generate copyrights as list of tripels (mediaType,partner,copyrightType) self._setObject(id, ECHO_copyright(id, title,getCopyrightsFromForm(self,self.REQUEST.form))) if RESPONSE is not None: RESPONSE.redirect('manage_main') class ECHO_layoutTemplate(ZopePageTemplate,ECHO_basis): """Create a layout Template for different purposes""" meta_type="ECHO_layoutTemplate" def __init__(self, id, text=None, content_type=None,EchoType=None): self.id = str(id) self.ZBindings_edit(self._default_bindings) if text is None: self._default_content_fn = os.path.join(package_home(globals()),'zpt','ECHO_%s_template_standard.zpt'%EchoType) text = open(self._default_content_fn).read() if content_type is None: content_type = self.content_type self.pt_edit(text, content_type) def manage_addECHO_layoutTemplateForm(self): """Form for adding""" pt=zptFile(self, 'zpt/AddECHO_layoutTemplate.zpt') return pt() def manage_addECHO_layoutTemplate(self, EchoType,title=None,REQUEST=None): "Add a Page Template with optional file content." if type(EchoType)==StringType: EchoTypes=[EchoType] else: EchoTypes=EchoType for singleType in EchoTypes: id = str(singleType)+"_template" if REQUEST is None: self._setObject(id, ECHO_layoutTemplate(id, text,EchoType=singleType)) ob = getattr(self, id) if title: ob.pt_setTitle(title) return ob else: file = REQUEST.form.get('file') headers = getattr(file, 'headers', None) if headers is None or not file.filename: zpt = ECHO_layoutTemplate(id,EchoType=singleType) else: zpt = ECHO_layoutTemplate(id, file, headers.get('content_type')) self._setObject(id, zpt) ob = getattr(self, id) if title: ob.pt_setTitle(title) try: u = self.DestinationURL() except AttributeError: u = REQUEST['URL1'] REQUEST.RESPONSE.redirect(u+'/manage_main') return '' class ECHO_fullText(ZopePageTemplate,ECHO_basis,ECHO_language): """echo fulltext in xml""" meta_type="ECHO_fullText" def getPage(self,nr='1'): """get page n""" #return self().encode('latin-1','ignore') try: dom=xml.dom.minidom.parseString(self()) except: dom=xml.dom.minidom.parseString(self().encode('latin-1')) pages=dom.getElementsByTagName('page') return pages[int(nr)-1].toxml() # Product registration and Add support manage_addECHO_fullTextForm = PageTemplateFile( 'zpt/AddECHO_fullText.zpt', globals()) def manage_addECHO_fullText(self, id, title=None, text=None, REQUEST=None, submit=None): "Add a Page Template with optional file content." id = str(id) if REQUEST is None: self._setObject(id, ECHO_fullText(id, text)) ob = getattr(self, id) if title: ob.pt_setTitle(title) return ob else: file = REQUEST.form.get('file') headers = getattr(file, 'headers', None) if headers is None or not file.filename: zpt = ECHO_fullText(id) else: zpt = ECHO_fullText(id, file, headers.get('content_type')) self._setObject(id, zpt) try: u = self.DestinationURL() except AttributeError: u = REQUEST['URL1'] if submit == " Add and Edit ": u = "%s/%s" % (u, urllib.quote(id)) REQUEST.RESPONSE.redirect(u+'/manage_main') return '' class ECHO_externalLink(Folder,ECHO_basis): """Link zu einer externen Ressource""" security=ClassSecurityInfo() meta_type='ECHO_externalLink' security.declarePublic('content_html') def content_html(self): """template fuer content""" ret= ECHO_basis.content_html(self,'externalLink') if type(ret) is StringType: return ret.decode('utf-8') else: return ret def __init__(self,id,link,title,label,description,contentType,responsible,credits,weight,coords,linkType): self.id = id """Festlegen der ID""" self.credits=toList(credits) self.label = label self.link= link self.title=title self.weight=weight self.description=description self.contentType=contentType self.responsible=responsible coordsnew=[ string.split(x,",") for x in coords] self.coords=coordsnew self.linkType = linkType # Linktypen 'otherPresentation','external' def ECHO_externalLink_config(self): """Main configuration""" if not hasattr(self,'weight'): self.weight="" if not hasattr(self,'coords'): self.coords=[''] pt=zptFile(self, 'zpt/ChangeECHO_externalLink.zpt') return pt() def changeECHO_externalLink(self,link,title,label,description,contentType,responsible,weight,coords=None,credits=None,RESPONSE=None,linkType='otherPresentation'): """Aenderung der Properties""" setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight) self.link=link self.linkType = linkType if RESPONSE is not None: RESPONSE.redirect('manage_main') def getLinkType(self): """ return linkType """ if hasattr(self,"linkType"): return self.linkType else : return 'otherPresentation' def setLinkType(self,type): """ set linkType """ self.linkType = type def checkLink(self): """ returns tuple (isWorking,Error) """ try: urllib2.urlopen(self.link) return (True, '') except urllib2.HTTPError, e: return (False, e.code) except urllib2.URLError, e: return (False, str(e.reason)) except: return (False, 'unknown Error') manage_options = ( {'label':'Main Config','action':'ECHO_externalLink_config'}, {'label':'Graphic Coords','action':'ECHO_graphicEntry'}, )+Folder.manage_options def index_html(self): """standard page""" return self.REQUEST.RESPONSE.redirect(self.link) def manage_addECHO_externalLinkForm(self): """Form for external Links""" pt=zptFile(self, 'zpt/AddECHO_externalLinkForm.zpt') return pt() def manage_addECHO_externalLink(self,id,title,label,description,contentType,responsible,link,weight,coords=None,credits=None,RESPONSE=None,linkType='otherPresentation'): """Add an external Link""" newObj=ECHO_externalLink(id,link,title,label,description,contentType,responsible,credits,weight,coords,linkType) self._setObject(id,newObj) if RESPONSE is not None: RESPONSE.redirect('manage_main') class ECHO_link(ECHO_externalLink): """external_link""" meta_type="ECHO_link" manage_options = ECHO_externalLink.manage_options+( {'label':'add links config','action':'ECHO_link_addLinksForm'}, ) def ECHO_link_addLinksForm(self): """Main configuration""" pt=zptFile(self, 'zpt/ChangeECHO_link_addLinks.zpt') return pt() def ECHO_link_addLinks(self,addLinks,RESPONSE): """add links""" self.addLinks=addLinks if RESPONSE is not None: RESPONSE.redirect('manage_main') def content_html(self): """template fuer link""" if hasattr(self,"link_template"): ret=ECHO_basis.content_html(self,'link') else: ret=ECHO_basis.content_html(self,'collection') #return ret return ret # # # try: # return ret.decode('utf-8') # except: # try: # return ret.decode('latin-1') # except: # # return ret # def getCopyrightsHTML(self): """gib (link auf copyright link, mediatyp, institution, copyrightType, label von copyrightType) aus""" if hasattr(self,'copyrightModel'): obj=self.copyrightModel else: return "ERROR" ret=[] for copyright in obj.getCopyrights(): #copyright - media / partner / copyrightID try: if hasattr(self.copyrightTypes,copyright[2]): copyrightTypeObj=getattr(self.copyrightTypes,copyright[2]) link="copyrightTypes/"+copyright[2]+'/copyright.html' else: copyrightTypeObj=getattr(obj,copyright[2]) link="copyrightModel/"+copyright[2]+'/copyright.html' label=copyrightTypeObj.label url=getattr(copyrightTypeObj, 'url', '') if url!='': ret.append((url,copyright[0],copyright[1],copyright[2],label)) else: if hasattr(copyrightTypeObj, 'copyright.html'): ret.append(("""%s?partner=%s"""%(link,copyright[1]),copyright[0],copyright[1],copyright[2],label)) else: ret.append(('empty',copyright[0],copyright[1],copyright[2],label)) except: """nothing""" return ret def getInstitutionsHTML(self): """gibt Liste der foerdernden Institutionen aus""" if hasattr(self,'support'): obj=self.support ret=obj.getSupporter() return ret else: return '' def getOwnerOriginalsHTML(self): """gibt Liste der foerdernden Institutionen aus""" if hasattr(self,'ownerOriginal'): obj=self.ownerOriginal ret=obj.getOwner() return ret else: return '' def getDigiCopyByHTML(self): """gibt Liste der foerdernden Institutionen aus""" if hasattr(self,'digiCopyBy'): obj=self.digiCopyBy ret=obj.getDigiCopyBy() return ret else: return '' def index_html(self): """standard link""" if self.link: splitted=self.link.split("?") if len(splitted)>1: params=cgi.parse_qs(splitted[1]) for x in params.keys(): if type(params[x]) is ListType: params[x]=params[x][0] else: params={} if getattr(self,'addLinks','yes')=="yes": params['backLink']=self.aq_parent.absolute_url() params['startLink']=splitted[0]+"?"+urllib.urlencode(params) return self.REQUEST.RESPONSE.redirect(splitted[0]+"?"+urllib.urlencode(params)) else: return "" def manage_addECHO_linkForm(self): """Form for external Links""" pt=zptFile(self, 'zpt/AddECHO_linkForm.zpt') return pt() def manage_addECHO_link(self,id,title,label,description="",contentType="",responsible="",link="",weight="",coords=[],credits=None,linkType="external",RESPONSE=None): """Add an external Link""" newObj=ECHO_link(id,link,title,label,description,contentType,responsible,credits,weight,coords,linkType) self._setObject(id,newObj) getattr(self,id).addLinks='no' if RESPONSE is not None: RESPONSE.redirect('manage_main') class ECHO_collection(CatalogAware, Folder, Persistent, Implicit, Cacheable,ECHO_basis): """ECHO Collection""" management_page_charset="utf-8" security=ClassSecurityInfo() meta_type='ECHO_collection' default_catalog='resourceCatalog' # viewClassificationList=viewClassificationListMaster displayTypes=displayTypes path="/mpiwg/online/permanent/shipbuilding" def exportImportObjects_html(self,RESPONSE): """ImportObject""" pt=zptFile(self, 'zpt/exportImportObjects.zpt') pt.content_type="text/html" return pt() def importObjects_html(self,RESPONSE): """ImportObject""" pt=zptFile(self, 'zpt/importObjects.zpt') pt.content_type="text/html" return pt() def importObjects(self,zfile,RESPONSE=None,REQUEST=None): """import object from file""" zf=zipfile.ZipFile(zfile,"r") tmpdir=tempfile.mkdtemp() # create tempdir ret=None for name in zf.namelist(): ds,fn=tempfile.mkstemp() tf=file(fn,"w") x=zf.read(name) tf.write(x) tf.close() try: self._importObjectFromFile(fn,set_owner=1) except: if not ret: ret="" ret+="Cannot import: %s (Already existing?)
"%name os.close(ds) os.remove(fn) zf.close() if ret: return """%s"""%ret if RESPONSE: RESPONSE.redirect(self.absolute_url()) def exportObjects_html(self,RESPONSE): """Export objects""" pt=zptFile(self, 'zpt/exportObjects.zpt') pt.content_type="text/html" return pt() def exportObjects(self,ids,RESPONSE=None): """export objects with type id""" if not (type(ids) is ListType): ids=[ids] tmpdir=tempfile.mkdtemp() # create tempdir objs=self.ZopeFind(self,obj_ids=ids) tmpfile=tempfile.mkstemp()[1] zf=zipfile.ZipFile(tmpfile,"w") for obj in objs: f = os.path.join(tmpdir, '%s.zexp' %obj[0]) #print E.absolute_url() obj[1]._p_jar.exportFile(obj[1]._p_oid, f) zf.write(f,obj[0]) zf.close() shutil.rmtree(tmpdir) if RESPONSE: RESPONSE.setHeader("Content-Type","application/octet-stream") len=os.stat(tmpfile)[6] RESPONSE.setHeader("Content-Length",len) RESPONSE.setHeader("Content-Disposition","""attachement; filename=%s"""%"export.zip") fh=file(tmpfile) for x in fh.read(): RESPONSE.write(x) fh.close() def getMDValueSimpleSearchField(self): """returns value for simple search""" return " ".join([self.title,self.description]) def getTitleAndLabel(self): """gibt title und label zurueck""" return (getattr(self,'title',''),getattr(self,'label','')) def localizeObjects(self): """localize all objects""" contents=self.ZopeFind(self,obj_metatypes=['ECHO_externalLink','ECHO_link','ECHO_mapText']) find=self.ZopeFind(self,obj_ids=('locale_en')) if not find: self.manage_addECHO_locale("en",'','') for content in contents: if content[1].meta_type in ['ECHO_link','ECHO_externalLink']: find=content[1].ZopeFind(content[1],obj_metatypes=('ECHO_mapText')) if find: root=find[0][1] locale=find[0][1].ZopeFind(find[0][1],obj_ids=('locale_en')) else: root=None else: root=content[1] locale=content[1].ZopeFind(content[1],obj_ids=('locale_en')) if root and not locale: root.manage_addECHO_locale("en",'','') pt=zptFile(self, 'zpt/localizeObjects.zpt') return pt() def localize(self,REQUEST,RESPONSE): """localize""" for key in REQUEST.form.keys(): splitted=key.split("!") if splitted[0]=="" or splitted[0]=="en" or splitted[0]=="title" or splitted[0]=="label": if splitted[0]=="en": setattr(self.locale_en,splitted[1],REQUEST.form[key]) else: setattr(self,splitted[0],REQUEST.form[key]) else: obj=getattr(self,splitted[0]) if obj.meta_type=="ECHO_mapText": if splitted[1]=="en": obj.locale_en.pt_edit(REQUEST.form[key],obj.locale_en.content_type) else: obj.pt_edit(REQUEST.form[key],obj.content_type) else: text=obj.ZopeFind(obj,obj_metatypes=['ECHO_mapText']) if splitted[1]=="en": text[0][1].locale_en.pt_edit(REQUEST.form[key],text[0][1].locale_en.content_type) else: text[0][1].pt_edit(REQUEST.form[key],text[0][1].content_type) if RESPONSE is not None: RESPONSE.redirect('manage_main') def getRDF(self,urn=None): """rdf of the collection""" contents=self.ZopeFind(self,obj_metatypes=['ECHO_group','ECHO_resource','ECHO_collection']) ret=getRDFDescription(self,self.absolute_url(),urn=urn) if not urn: urn=self.absolute_url() li="""\n""" for content in contents: try: ret+=content[1].getRDF()+"\n" except: logging.error("getRDF: "+repr(content[1].getRDF())) ret+=self.unicodify(content[1].getRDF())+"\n" ret+="""\n"""%urn for content in contents: nurn=content[1].absolute_url() ret+=li%nurn return ret+"" def changeLabels(self): """change form""" pt=zptFile(self, 'zpt/changeLabelsForm') pt.content_type="text/html" return pt() def changeTitles(self): """change form""" pt=zptFile(self, 'zpt/changeTitleForm') pt.content_type="text/html" return pt() def changeWeights(self): """change form""" pt=zptFile(self, 'zpt/changeWeightForm') pt.content_type="text/html" return pt() def changeMetaDataLinks(self): """change form""" pt=zptFile(self, 'zpt/changeMetaDataLinkForm') pt.content_type="text/html" return pt() def changeAccessRightsCollectionForm(self,preselect=None): """change access rights of all resources in this collection""" pt=zptFile(self, 'zpt/changeAccessRightsCollectionForm') pt.content_type="text/html" return pt(preselect=preselect) def changeAccessRightsCollection(self): """change""" ret="" argv=self.REQUEST.form resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource']) for resource in resources: if argv.has_key(resource[1].getId()+'_xml'): ret+=resource[1].getId()+" "+argv[resource[1].getId()+'_xml']+"
" resource[1].setAccessRightXML(argv[resource[1].getId()+'_xml']) resource[1].accessRight=argv[resource[1].getId()+'_xml'] elif argv.has_key(resource[1].getId()+'_echo'): ret+="only local:"+resource[1].getId()+" "+argv[resource[1].getId()+'_echo']+"
" resource[1].accessRight=argv[resource[1].getId()+'_echo'] else: ret+="ERROR:" +resource[0] return ret def changeMetaDataLinkInCollection(self): """change all lables of a collection""" ret="" argv=self.REQUEST.form resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource']) for resource in resources: try: ret+=resource[1].getId()+" "+argv[resource[1].getId()]+"
" resource[1].metalink=argv[resource[1].getId()][0:] except: pass return ret def changeMetaDataLinkInCollection(self): """change all lables of a collection""" ret="" argv=self.REQUEST.form resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource']) for resource in resources: try: ret+=resource[1].getId()+" "+argv[resource[1].getId()]+"
" resource[1].metalink=argv[resource[1].getId()][0:] except: pass return ret def changeWeightsInCollection(self): """change all lables of a collection""" ret="" argv=self.REQUEST.form resources=self.ZopeFind(self,obj_metatypes=['ECHO_pageTemplate','ECHO_movie','ECHO_resource','ECHO_collection','ECHO_link','ECHO_externalLink']) for resource in resources: try: ret+=resource[1].getId()+" "+argv[resource[1].getId()]+"
" resource[1].weight=argv[resource[1].getId()][0:] except: pass return ret def changeTitlesInCollection(self): """change all lables of a collection""" ret="" argv=self.REQUEST.form resources=self.ZopeFind(self,obj_metatypes=['ECHO_pageTemplate','ECHO_movie','ECHO_resource','ECHO_collection','ECHO_link','ECHO_externalLink']) for resource in resources: try: ret+=resource[1].getId()+" "+argv[resource[1].getId()]+"
" resource[1].title=argv[resource[1].getId()][0:] except: pass return ret def changeLabelsInCollection(self): """change all lables of a collection""" ret="" argv=self.REQUEST.form resources=self.ZopeFind(self,obj_metatypes=['ECHO_pageTemplate','ECHO_movie','ECHO_resource','ECHO_collection','ECHO_link','ECHO_externalLink']) for resource in resources: try: ret+=resource[1].getId()+" "+argv[resource[1].getId()]+"
" resource[1].label=argv[resource[1].getId()][0:] except: pass return ret def importCollection(self,path=None,RESPONSE=None): """liest verzeichnisse aus dem pfad und legt sie dann als objekte in den ordner""" if path is None: pt=zptFile(self, 'zpt/importCollection.zpt') return pt() files=os.listdir(path) ret="" for fileName in files: if fileName: tempPath=re.sub("/mpiwg/online","",path) link="http://echo.mpiwg-berlin.mpg.de/zogilib_book?fn="+tempPath+"/"+fileName+"/pageimg" metalink=self.path+"/"+fileName+"/index.meta" try: #link="http://nausikaa2.mpiwg-berlin.mpg.de/cgi-bin/toc/toc.x.cgi?dir="+fileName+"&step=thumb" newObj=ECHO_resource(fileName,link,metalink,fileName,fileName,fileName,'generated','book','','','','','','') self._setObject(fileName,newObj) genObj=getattr(self,fileName) #genObj.createIndexFile() ret+="OK:"+fileName+"
" except: print "ERROR" ret+="ERROR:"+fileName+"
" return ret if RESPONSE is not None: RESPONSE.redirect('manage_main') def changeViewerTemplateSetsForm(self): """change the viewer template set""" pt=zptFile(self, 'zpt/changeViewerTemplateSet') return pt() def getViewerTemplateSets(self,obj_ids=None,RESPONSE=None): """Get the ViewerTemplateSet title for configuration""" ret=[] try: viewerTemplateSets=self.ZopeFind(self.viewerTemplateSets,obj_metatypes=['OSAS_viewerTemplateSet'],obj_ids=obj_ids)#assumes viewerTemplateSets folder somewhere in the hierarchie. for viewerTemplateSet in viewerTemplateSets: ret.append((viewerTemplateSet[1].title,viewerTemplateSet[0],viewerTemplateSet[1])) return ret except: return [('no ViewerTemplateSetfolders','')] def getTextToolsField(self,name,default=''): """Lese viewerTemplateSet der Collection not implemented yet!""" return default def isSelectedViewerTemplateSet(self,obj,id): """is ausgewaehlt""" if self.REQUEST['viewerTemplateSet']==id: return 1 else: return None def changeViewer(self,newViewer,REQUEST=None,RESPONSE=None): """changes all ressources to the newViewer""" resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1) if RESPONSE is not None: RESPONSE.write("") for resource in resources: done,msg=resource[1].changeViewer(newViewer) if done: if RESPONSE is not None: RESPONSE.write("

OK: %s"%resource[0]) else: if RESPONSE is not None: RESPONSE.write("

ERROR: %s (%s)"%(resource[1].absolute_url()+'/ECHO_resource_config_main',resource[0],msg)) if RESPONSE is not None: RESPONSE.write("

Done

") def changeViewerTemplateSets(self,project,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix,RESPONSE=None): """change the templates""" resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1) for resource in resources: resource[1].changeViewerTemplateSet(project,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix) if RESPONSE is not None: RESPONSE.redirect('manage_main') def setStartpageFolderForm(self): """Form for changing the startpage""" pt=zptFile(self, 'zpt/ChangeECHO_resourceStartPageFolder.zpt') pt.content_type="text/html" return pt() def setStartpageFolder(self,startpage=None,RESPONSE=None): """change the templates""" resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1) for resource in resources: resource[1].setStartPage(startpage) if RESPONSE is not None: RESPONSE.redirect('manage_main') def copyTitleToInfoXMLFolder(self,RESPONSE=None): """copy title into the title field of info.xml author and date werden leer!!! """ resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1) for resource in resources: ret,txt=resource[1].copyTitleToInfoXML() if (not ret) and RESPONSE: RESPONSE.write("error: %s\n"%txt) if ret and RESPONSE: RESPONSE.write("ok: %s\n"%txt) #logger("ECHO (copyTitleToInfoXMLFolder)",logging.INFO,txt) if RESPONSE is not None: RESPONSE.write("done!\n") RESPONSE.close() RESPONSE.redirect('manage_main') def copySearchFields(self,RESPONSE=None): """copys < metadatafields to the object""" resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1) for resource in resources: resource[1].copySearchFields() if RESPONSE is not None: RESPONSE.redirect('manage_main') def reloadMetaDataFromStorageWarning(self,RESPONSE=None): """warning""" pt=zptFile(self, 'zpt/reloadMetaDataFromStorageWarning.zpt') pt.content_type="text/html" return pt() def reloadMetaDataFromStorage(self,RESPONSE=None): """copy metadata from the storage to ECHO""" return reloadMetaDataFromStorage(self,RESPONSE) def getPartnerCopyright(self,name,sonst="generic"): """gibt generisches copyright eines partners aus, sonst behalte jetzige einsteillung""" #print "hi",name,sonst #print getattr(self.partners,name).copyrightType try: partner=getattr(self.partners,name) return partner.copyrightType except: print "error" return sonst def partnerSelector_HTML(self,selected=None): """give type selector""" if not selected: retStr="