--- ECHO_content/ECHO_collection.py 2004/11/28 21:56:07 1.191 +++ ECHO_content/ECHO_collection.py 2005/06/09 08:34:49 1.224 @@ -9,7 +9,15 @@ class ECHO_externalLink contains informa """ +try: + from reportlab.pdfgen import canvas + from reportlab.lib.pagesizes import A4 +except: + print "PDF generation will not work" + + import string +import tempfile import re import os import OFS.Image @@ -53,11 +61,10 @@ import xml.dom.minidom import urllib import xml.dom.minidom -from ECHO_graphicalOverview import javaHandler,javaScriptMain import ECHO_helpers from ECHO_helpers import * from ECHO_language import * - +from ECHO_movie import * #regexp for extracting elements from xml patternTXT=r"<\s*txt.*?>(.*?)" @@ -67,12 +74,10 @@ regexpPage = re.compile(patternPage, re. -def setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordstrs,viewClassification=""): +def setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordstrs=""): """Allegemeine Informationen zu einer ECHO Collection""" - self.viewClassification=viewClassification - self.label = label self.title=title self.description=description @@ -81,22 +86,6 @@ def setECHO_collectionInformation(self,t self.credits=toList(credits) self.weight=weight - coords=[] - #coordinates of for rectangles - - - if coordstrs: - for coordstr in coordstrs: - - try: - temco=coordstr.split(",") - except: - temco=[] - - coords.append(temco) - - - self.coords=coords[0:] class ECHO_copyright(Folder,ECHO_basis): """Copyright informationen""" @@ -121,7 +110,7 @@ class ECHO_copyright(Folder,ECHO_basis): def ECHO_copyright_configForm(self): """change form""" - pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_copyright').__of__(self) + pt=zptFile(self, 'zpt/ChangeECHO_copyright') pt.content_type="text/html" return pt() @@ -137,7 +126,7 @@ class ECHO_copyright(Folder,ECHO_basis): def manage_addECHO_copyrightForm(self): """Form for adding""" - pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_copyright.zpt').__of__(self) + pt=zptFile(self, 'zpt/AddECHO_copyright.zpt') return pt() def manage_addECHO_copyright(self, id,title,RESPONSE=None): @@ -162,26 +151,18 @@ class ECHO_layoutTemplate(ZopePageTempla 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) + self._default_content_fn = os.path.join(package_home(globals()),'zpt','ECHO_%s_template_standard.zpt'%EchoType) text = open(self._default_content_fn).read() self.pt_edit(text, content_type) - - """change form""" - def manage_addECHO_layoutTemplateForm(self): """Form for adding""" - pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddECHO_layoutTemplate.zpt')).__of__(self) + pt=zptFile(self, 'zpt/AddECHO_layoutTemplate.zpt') return pt() -from urllib import quote - def manage_addECHO_layoutTemplate(self, EchoType,title=None,REQUEST=None): "Add a Page Template with optional file content." @@ -230,17 +211,16 @@ class ECHO_fullText(ZopePageTemplate,ECH def getPage(self,nr='1'): """get page n""" - dom=xml.dom.minidom.parseString(self()) + #return self().encode('latin-1','ignore') + dom=xml.dom.minidom.parseString(self().encode('utf-8','ignore')) pages=dom.getElementsByTagName('page') - return pages[int(nr)-1].toxml('utf-8') + return pages[int(nr)-1].toxml() # Product registration and Add support manage_addECHO_fullTextForm = PageTemplateFile( 'zpt/AddECHO_fullText.zpt', globals()) -from urllib import quote - def manage_addECHO_fullText(self, id, title=None, text=None, REQUEST=None, submit=None): "Add a Page Template with optional file content." @@ -268,20 +248,103 @@ def manage_addECHO_fullText(self, id, ti u = REQUEST['URL1'] if submit == " Add and Edit ": - u = "%s/%s" % (u, quote(id)) + u = "%s/%s" % (u, urllib.quote(id)) REQUEST.RESPONSE.redirect(u+'/manage_main') return '' + class ECHO_resource(Folder,Persistent,ECHO_basis): """ECHO Ressource""" security=ClassSecurityInfo() meta_type='ECHO_resource' - viewClassificationList=viewClassificationListMaster +# viewClassificationList=viewClassificationListMaster getSubCols = ECHO_helpers.getSubCols - security.declareProtected('View','index_html') + + security.declareProtected('View','createPDF') + def createPDF(self,RESPONSE=None,local=None,dpi=150): + """erzeuge pdf file""" + pages=1 + dpi=float(dpi) + imagePath=self.getImagePath().replace("/mpiwg/online","") + + + image="http://nausikaa2.mpiwg-berlin.mpg.de/digitallibrary/servlet/Scaler?fn="+imagePath+"&dw=%i&dh=%i&pn=%i" + xmlInfo="http://nausikaa2.mpiwg-berlin.mpg.de/digitallibrary/dlInfo-xml.jsp?fn="+imagePath + + dom=xml.dom.minidom.parse(urllib.urlopen(xmlInfo)) + for parameter in dom.getElementsByTagName('parameter'): + if parameter.getAttribute('name')=="pt": + pages=int(parameter.getAttribute('value')) + break + + + tempdir="/tmp/archivesImageServer" + if not os.path.exists(tempdir): + os.mkdir(tempdir) + + tmpPath=tempfile.mkdtemp(dir=tempdir) + + + tmpZip=tempfile.mktemp(dir=tempdir) + + tmpFn=os.path.split(tmpZip)[1] + + + + + if RESPONSE: + RESPONSE.setHeader("Content-Type","text/html") + RESPONSE.write("

I am creating the pdf

") + txt="

1. step: getting the images( %i pages)

"%pages + RESPONSE.write(txt) + + c=canvas.Canvas(tmpZip) + for i in range(1,pages+1): + if RESPONSE: + RESPONSE.write(str("

Get Page: %i
\n"%i)) + faktor=dpi/72.0 + + fn=tmpPath+"/%i"%i + + width,height=A4 + #print image%(width*faktor,height*faktor,i) + url=urllib.urlopen(image%(width*faktor,height*faktor,i)).read() + fh=file(fn,"w") + fh.write(url) + fh.close() + + + + c.drawImage(fn,0,0,width=width,height=height) + c.showPage() + c.save() + if RESPONSE: + RESPONSE.write("

finished
\n") + + if RESPONSE: + len=os.stat(tmpZip)[6] + downloadUrl=self.absolute_url()+"/downloadPDF" + RESPONSE.write("""

Click here for download ( %i Byte)

\n"""%(tmpFn,len)) + RESPONSE.write("""

The file will be stored for a while, you can download it later, the URL is:

+

%s?fn=%s\n"""%(tmpFn,downloadUrl,tmpFn)) + RESPONSE.close() + + + def downloadPDF(self,fn): + """download prepared set""" + filename="/tmp/archivesImageServer/"+fn + namePDF=self.getId()+".pdf" + self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename="%s" """%namePDF) + self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream") + len=os.stat(filename)[6] + self.REQUEST.RESPONSE.setHeader("Content-Length",len) + images=file(filename).read() + self.REQUEST.RESPONSE.write(images) + self.REQUEST.RESPONSE.close() + def getRDF(self,urn=None): """rdf""" @@ -426,7 +489,7 @@ class ECHO_resource(Folder,Persistent,EC """Form for changing the startpage""" - pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_resourceStartPage.zpt').__of__(self) + pt=zptFile(self, 'zpt/ChangeECHO_resourceStartPage.zpt') pt.content_type="text/html" return pt() @@ -495,7 +558,7 @@ class ECHO_resource(Folder,Persistent,EC startpage=self.createImageUrl() params="startpage=%s"%startpage - print 'http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params)) + #print 'http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params)) ECHO_helpers.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read() @@ -523,7 +586,7 @@ class ECHO_resource(Folder,Persistent,EC def changeViewerTemplateSetForm(self): """change the viewer template set""" - pt=PageTemplateFile('Products/ECHO_content/zpt/changeResourceViewerTemplateSet').__of__(self) + pt=zptFile(self, 'zpt/changeResourceViewerTemplateSet') return pt() @@ -589,16 +652,16 @@ class ECHO_resource(Folder,Persistent,EC - + security.declarePublic('content_html') def content_html(self): """template fuer content""" return ECHO_basis.content_html(self,'resource') - def getViewClassification(self): - if hasattr(self,'viewClassification'): - return self.viewClassification - else: - return "" +# def getViewClassification(self): +# if hasattr(self,'viewClassification'): +# return self.viewClassification +# else: +# return "" def getFullTextXML(self,noredirect=None): """getFullTextXML; gives the FullText as an XML Document, and if somthing goes wrong.""" @@ -636,8 +699,11 @@ class ECHO_resource(Folder,Persistent,EC else: return "no fulltext available" - - def getImageView(self,noredirect=None): + def getImagePath(self): + """gibt pfad zum image aus""" + return self.getImageView(noredirect="yes",onlyPath="yes") + + def getImageView(self,noredirect=None,onlyPath=None): """getImages; give Imageviewr and if somthing goes wrong.""" try: fh=ECHO_helpers.urlopen(self.metalink) @@ -656,7 +722,10 @@ class ECHO_resource(Folder,Persistent,EC self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml') self.REQUEST.RESPONSE.redirect(imageurl) else: - return imageurl + if not onlyPath: + return imageurl + else: + return archivepath+"/"+imagetemp except: if not noredirect: @@ -703,7 +772,7 @@ class ECHO_resource(Folder,Persistent,EC return ret def getInstitutionsHTML(self): - """gibt Liste der fšrdernden Institutionen aus""" + """gibt Liste der foerdernden Institutionen aus""" if hasattr(self,'support'): obj=self.support @@ -719,6 +788,8 @@ class ECHO_resource(Folder,Persistent,EC return self.credits else: return [] + + def __init__(self,id,link,metalink,resourceID,title,label,description,contentType,renderingType,copyrightType,responsible,credits,weight,coords): @@ -744,18 +815,9 @@ class ECHO_resource(Folder,Persistent,EC coordsnew=[] self.coords=coordsnew +# self.viewClassification="" - def getCoords(self): - """gibt coordinaten als String zurück und löscht zugleich einträge die keine Koordinaten sind, letzteres zur korrektur der Eingabe der alten version""" - retList=[] - if hasattr(self,'coords'): - for x in self.coords: - if len(x)>1: - retList.append(string.join(x,",")) - return retList - - def getContentType(self): try: @@ -781,34 +843,29 @@ class ECHO_resource(Folder,Persistent,EC if not hasattr(self,'weight'): self.weight="" - pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_resource.zpt').__of__(self) + pt=zptFile(self, 'zpt/ChangeECHO_resource.zpt') return pt() def ECHO_resource_config_main(self): """Main configuration""" - if not hasattr(self,'weight'): self.weight="" - - pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_resource_main.zpt').__of__(self) + pt=zptFile(self, 'zpt/ChangeECHO_resource_main.zpt') return pt() def ECHO_resource_config_coords(self): """Coords configuration """ - - pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_resource_coords.zpt').__of__(self) + pt=zptFile(self, 'zpt/ChangeECHO_resource_coords.zpt') return pt() def ECHO_resource_config_credits(self): """Main configuration""" - - pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_resource_credits.zpt').__of__(self) + pt=zptFile(self, 'zpt/ChangeECHO_resource_credits.zpt') return pt() def ECHO_resource_config_metadata(self): """Main configuration""" - if (hasattr(self,'metadata')) and not (hasattr(self,'metaDataHash')): self.metaDataHash={} self.contentType=self.bib_type @@ -818,14 +875,14 @@ class ECHO_resource(Folder,Persistent,EC DataHash[data_neu]=getattr(self,data)[0:] - pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_resource_metadata.zpt').__of__(self) + pt=zptFile(self, 'zpt/ChangeECHO_resource_metadata.zpt') return pt() def changeECHO_resource_main(self,metalink,link,title,label,description,contentType,renderingType,weight,resourceID,RESPONSE=None): - """Änderung der Properties""" + """Aenderung der Properties""" self.resourceID=resourceID self.title=title self.label=label @@ -842,25 +899,34 @@ class ECHO_resource(Folder,Persistent,EC RESPONSE.redirect('manage_main') - def changeECHO_resource_coords(self,coords,viewClassification,RESPONSE=None): - """Änderung der Properties - coords""" - - if type(coords)==StringType: - coords=[coords] - - try: - coordsnew=[ string.split(x,",") for x in coords] - except: - coordsnew=[] + def changeECHO_resource_coords(self,RESPONSE=None): + """Aenderung der Properties - coords""" + #return self.REQUEST + for area in self.getMapAreas(): + id = area.getId() + if self.REQUEST.has_key('del.'+id): + # delete this area + self._delObject(id) + # return to same menu + if RESPONSE is not None: + RESPONSE.redirect('ECHO_resource_config_coords') + return + # modify this area + coordstring = self.REQUEST.get('coords.'+id, '') + coords = string.split(coordstring, ',') + angle = self.REQUEST.get('angle.'+id, '0') + type = self.REQUEST.get('type.'+id, 'area') + if len(coords) == 4: + area.setCoordString(coordstring) + area.setAngle(angle) + area.setType(type) + # return to main menu + if RESPONSE is not None: + RESPONSE.redirect('manage_main') - self.coords=coordsnew[0:] - self.viewClassification=viewClassification - - if RESPONSE is not None: - RESPONSE.redirect('manage_main') def changeECHO_resource_credits(self,credits,responsible,copyrightType,RESPONSE=None): - """Änderung der Properties""" + """Aenderung der Properties""" self.credits=credits self.responsible=responsible self.copyrightType=copyrightType @@ -899,7 +965,7 @@ class ECHO_resource(Folder,Persistent,EC def getMDValue(self,fieldName,empty=None): - if empty: + if not empty: return self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%self.contentType) else: @@ -931,17 +997,10 @@ class ECHO_resource(Folder,Persistent,EC 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""" - - try: - coordsnew=[ string.split(x,",") for x in coords] - except: - coordsnew=[] + def changeECHO_resource(self,metalink,link,title,label,description,contentType,responsible,weight,coords=None,credits=None,RESPONSE=None): + """Aenderung der Properties""" - setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordsnew) - self.viewClassification=viewClassification - self.coords=coordsnew[0:] + setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight) self.link=link self.metalink=metalink @@ -952,40 +1011,13 @@ class ECHO_resource(Folder,Persistent,EC manage_options = Folder.manage_options+( {'label':'Main Config','action':'ECHO_resource_config_main'}, {'label':'Change Metadata','action':'ECHO_resource_config_metadata'}, - {'label':'Change Coords','action':'ECHO_resource_config_coords'}, - {'label':'Add coords','action':'ECHO_graphicEntry'}, + {'label':'Graphic Coords','action':'ECHO_graphicEntry'}, {'label':'Sync Metadata','action':'ECHO_getResourceMD'}, {'label':'Change TemplateSets and Image Viewer','action':'changeViewerTemplateSetForm'}, {'label':'set/change startpage','action':'setStartPageForm'}, {'label':'Copy MD for indexing and search','action':'copySearchFields'}, ) - def getOverview(self): - """overview graphics""" - - return self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['overview'])[0][1] - - def ECHO_graphicEntry(self): - """DO nothing""" - overview = self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['overview']) - if overview: - pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_draw.zpt').__of__(self) - return pt() - else: - return "NO OVERVIEW GRAPHICS" - - def ECHO_enterCoords(self,coordstr,angle="",RESPONSE=None): - """Enter coords""" - coords=self.coords - temco=coordstr.split(",") - temco.append(angle) - coords.append(temco) - - self.coords=coords[0:] - - if RESPONSE is not None: - RESPONSE.redirect('ECHO_graphicEntry') - def isDefinedInThisSet(self,fields,field): """checks if field is defined in fields""" @@ -1030,7 +1062,8 @@ class ECHO_resource(Folder,Persistent,EC if ret == "": return None else: - return ret + + return ret except: return None @@ -1067,7 +1100,9 @@ class ECHO_resource(Folder,Persistent,EC retdata={} fields=[] fieldlist=self.standardMD.fieldList - + + tags=self.findTagsFromMapping(self.contentType) + self.referencetypes=tags[2] for referenceTypeF in self.referencetypes: if referenceTypeF[1].title.lower() == referenceType.lower(): @@ -1162,12 +1197,14 @@ class ECHO_resource(Folder,Persistent,EC if not error=="": #Fehler beim Auslesen des Metafiles return "ERROR:",error - + if not self.contentType: + self.contentType=metadict['bib_type'].lower() + 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)() + return zptFile(self, 'zpt/ECHO_getResourceMDErrorContentType.zpt')() self.REQUEST.SESSION['metadict']=metadict @@ -1178,7 +1215,7 @@ class ECHO_resource(Folder,Persistent,EC if template=="yes": - pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_resourceMD.zpt').__of__(self) + pt=zptFile(self, 'zpt/ECHO_resourceMD.zpt') return pt() @@ -1190,7 +1227,7 @@ class ECHO_resource(Folder,Persistent,EC return getattr(self,item) def checkRDF(self,path): - """check if pdf behind path""" + """check if pdf in the path""" try: for fileName in os.listdir(path): if os.path.splitext(fileName)[1]==".pdf": @@ -1200,12 +1237,13 @@ class ECHO_resource(Folder,Persistent,EC return None + security.declareProtected('View','index_html') def index_html(self): """standard page""" pdf=self.checkRDF(self.link) if pdf: fh=file(pdf,'r').read() - self.REQUEST.RESPONSE.setHeader('Content-Type','x-Application/pdf') + self.REQUEST.RESPONSE.setHeader('Content-Type','application/pdf') self.REQUEST.RESPONSE.write(fh) self.REQUEST.RESPONSE.close() return @@ -1221,13 +1259,13 @@ class ECHO_resource(Folder,Persistent,EC if sp: return sp[1]() - #prüfen ob irgendwo ein template + #pruefen 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=zptFile(self, 'zpt/ECHO_startpage_index_template_standard.zpt') pt.content_type="text/html" return pt() @@ -1262,13 +1300,13 @@ Globals.InitializeClass(ECHO_resource) def manage_addECHO_resourceForm(self): """Form for adding a ressource""" - pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_resourceForm.zpt').__of__(self) + pt=zptFile(self, 'zpt/AddECHO_resourceForm.zpt') return pt() -def manage_addECHO_resource(self,id,title,label,description,responsible,link,metalink,weight,copyrightType=None,resourceID=None,contentType=None,renderingType=None,credits=None,coords=None,RESPONSE=None): - """addaresource""" +def manage_addECHO_resource(self,id,title,label,description="",responsible="",link="",metalink="",weight="",copyrightType=None,resourceID=None,contentType=None,renderingType=None,credits=None,coords=None,RESPONSE=None): + """addresource""" newObj=ECHO_resource(id,link,metalink,resourceID,title,label,description,contentType,renderingType,copyrightType,responsible,credits,weight,coords) @@ -1283,7 +1321,7 @@ class ECHO_externalLink(Folder,ECHO_basi security=ClassSecurityInfo() meta_type='ECHO_externalLink' - + security.declarePublic('content_html') def content_html(self): """template fuer content""" return ECHO_basis.content_html(self,'externalLink') @@ -1314,21 +1352,14 @@ class ECHO_externalLink(Folder,ECHO_basi self.coords=[''] - pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_externalLink.zpt').__of__(self) + 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): + """Aenderung der Properties""" + setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight) - """Änderung der Properties""" - try: - coordsnew=[ string.split(x,",") for x in coords] - except: - coordsnew=[] - - setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coords) - - self.coords=coordsnew[0:] self.link=link if RESPONSE is not None: RESPONSE.redirect('manage_main') @@ -1336,6 +1367,7 @@ class ECHO_externalLink(Folder,ECHO_basi manage_options = Folder.manage_options+( {'label':'Main Config','action':'ECHO_externalLink_config'}, + {'label':'Graphic Coords','action':'ECHO_graphicEntry'}, ) @@ -1346,7 +1378,7 @@ class ECHO_externalLink(Folder,ECHO_basi def manage_addECHO_externalLinkForm(self): """Form for external Links""" - pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_externalLinkForm.zpt').__of__(self) + pt=zptFile(self, 'zpt/AddECHO_externalLinkForm.zpt') return pt() @@ -1366,7 +1398,7 @@ class ECHO_link(ECHO_externalLink): meta_type="ECHO_link" - + def content_html(self): """template fuer link""" if hasattr(self,"link_template"): @@ -1376,11 +1408,11 @@ class ECHO_link(ECHO_externalLink): def manage_addECHO_linkForm(self): """Form for external Links""" - pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_linkForm.zpt').__of__(self) + pt=zptFile(self, 'zpt/AddECHO_linkForm.zpt') return pt() -def manage_addECHO_link(self,id,title,label,description,contentType,responsible,link,weight,coords=None,credits=None,RESPONSE=None): +def manage_addECHO_link(self,id,title,label,description="",contentType="",responsible="",link="",weight="",coords=[],credits=None,RESPONSE=None): """Add an external Link""" newObj=ECHO_link(id,link,title,label,description,contentType,responsible,credits,weight,coords) @@ -1396,7 +1428,7 @@ class ECHO_collection(Folder, Persistent security=ClassSecurityInfo() meta_type='ECHO_collection' - viewClassificationList=viewClassificationListMaster +# viewClassificationList=viewClassificationListMaster displayTypes=displayTypes path="/mpiwg/online/permanent/shipbuilding" @@ -1427,25 +1459,25 @@ class ECHO_collection(Folder, Persistent def changeLabels(self): """change form""" - pt=PageTemplateFile('Products/ECHO_content/zpt/changeLabelsForm').__of__(self) + pt=zptFile(self, 'zpt/changeLabelsForm') pt.content_type="text/html" return pt() def changeTitles(self): """change form""" - pt=PageTemplateFile('Products/ECHO_content/zpt/changeTitleForm').__of__(self) + pt=zptFile(self, 'zpt/changeTitleForm') pt.content_type="text/html" return pt() def changeWeights(self): """change form""" - pt=PageTemplateFile('Products/ECHO_content/zpt/changeWeightForm').__of__(self) + pt=zptFile(self, 'zpt/changeWeightForm') pt.content_type="text/html" return pt() def changeMetaDataLinks(self): """change form""" - pt=PageTemplateFile('Products/ECHO_content/zpt/changeMetaDataLinkForm').__of__(self) + pt=zptFile(self, 'zpt/changeMetaDataLinkForm') pt.content_type="text/html" return pt() def changeAccessRightsCollection(self): @@ -1460,7 +1492,7 @@ class ECHO_collection(Folder, Persistent ret+=resource[1].getId()+" "+argv[resource[1].getId()]+"
" resource[1].changeAccessRightMD(argv[resource[1].getId()]) except: - """not""" + pass return ret def changeMetaDataLinkInCollection(self): @@ -1475,7 +1507,7 @@ class ECHO_collection(Folder, Persistent ret+=resource[1].getId()+" "+argv[resource[1].getId()]+"
" resource[1].metalink=argv[resource[1].getId()][0:] except: - """not""" + pass return ret def changeMetaDataLinkInCollection(self): @@ -1490,7 +1522,7 @@ class ECHO_collection(Folder, Persistent ret+=resource[1].getId()+" "+argv[resource[1].getId()]+"
" resource[1].metalink=argv[resource[1].getId()][0:] except: - """not""" + pass return ret def changeWeightsInCollection(self): @@ -1498,14 +1530,14 @@ class ECHO_collection(Folder, Persistent ret="" argv=self.REQUEST.form - resources=self.ZopeFind(self,obj_metatypes=['ECHO_pageTemplate','ECHO_resource','ECHO_collection','ECHO_link','ECHO_externalLink']) + 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: - """not""" + pass return ret def changeTitlesInCollection(self): @@ -1513,16 +1545,31 @@ class ECHO_collection(Folder, Persistent ret="" argv=self.REQUEST.form - resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource']) + 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: - """not""" + 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 updateCollection(self,RESPONSE=None): """liest verzeichnisse aus dem pfad und legt sie dann als objekte in den ordner""" files=os.listdir(self.path) @@ -1570,7 +1617,7 @@ class ECHO_collection(Folder, Persistent def changeViewerTemplateSetsForm(self): """change the viewer template set""" - pt=PageTemplateFile('Products/ECHO_content/zpt/changeViewerTemplateSet').__of__(self) + pt=zptFile(self, 'zpt/changeViewerTemplateSet') return pt() def getViewerTemplateSets(self,obj_ids=None,RESPONSE=None): @@ -1595,7 +1642,7 @@ class ECHO_collection(Folder, Persistent def isSelectedViewerTemplateSet(self,obj,id): - """is ausgewählt""" + """is ausgewaehlt""" if self.REQUEST['viewerTemplateSet']==id: return 1 @@ -1619,7 +1666,7 @@ class ECHO_collection(Folder, Persistent """Form for changing the startpage""" - pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_resourceStartPageFolder.zpt').__of__(self) + pt=zptFile(self, 'zpt/ChangeECHO_resourceStartPageFolder.zpt') pt.content_type="text/html" return pt() @@ -1670,7 +1717,7 @@ class ECHO_collection(Folder, Persistent def reloadMetaDataFromStorageWarning(self,RESPONSE=None): """warning""" - pt=PageTemplateFile('Products/ECHO_content/zpt/reloadMetaDataFromStorageWarning.zpt').__of__(self) + pt=zptFile(self, 'zpt/reloadMetaDataFromStorageWarning.zpt') pt.content_type="text/html" return pt() @@ -1708,16 +1755,16 @@ class ECHO_collection(Folder, Persistent """nothing""" return retStr - def getViewClassification(self): - if hasattr(self,'viewClassification'): - return self.viewClassification - else: - return "" +# def getViewClassification(self): +# if hasattr(self,'viewClassification'): +# return self.viewClassification +# else: +# return "" def createRessourcesFromXMLForm(self): """form""" - pt=PageTemplateFile('Products/ECHO_content/zpt/createRessourcesFromXMLForm.zpt').__of__(self) + pt=zptFile(self, 'zpt/createRessourcesFromXMLForm.zpt') return pt() def createRessourcesFromXML(self,fileupload): @@ -1734,7 +1781,8 @@ class ECHO_collection(Folder, Persistent ret+="

"+label+"

" manage_addECHO_resource(self,id,label.encode('ascii'),label.encode('ascii'),"","","",link.encode('ascii'),"","") return ret - + + security.declarePublic('getImageTag') def getImageTag(self): """GetTag""" try: @@ -1742,6 +1790,23 @@ class ECHO_collection(Folder, Persistent except: return "" + + def addMovie(self,id,title,label,description,contentType,responsible,link,thumbUrl,rawFile,lowresFile,metalink,weight,credits=None,coords=None,RESPONSE=None): + """SSS""" + print "we are here" + #manage_addECHO_movie(self,id,title,label,description,responsible,link,thumbUrl,rawFile,metalink,weight,credits=None,coords=None,RESPONSE=None) + if not hasattr(self,id): + try: + manage_addECHO_movie(self,id,title,label,description,responsible,link,thumbUrl,rawFile,lowresFile,metalink,weight,credits=None,coords=None,RESPONSE=None) + return "done" + except: + return None + else: + obj=getattr(self,id) + obj.changeECHO_movie_main(metalink,link,rawFile,lowresFile,thumbUrl,title,label,description,contentType,weight=weight) + + return "changed" + def addResource(self,id,title,label,description,contentType,responsible,link,metalink,weight,credits=None,coords=None,RESPONSE=None): """SSS""" try: @@ -1764,130 +1829,38 @@ class ECHO_collection(Folder, Persistent except: return "" - def getCollectionTreeXML(self): + def getCollectionTreeXML(self,pwstr=None): """Tree as XML""" - def addPassWd(str): + def addPassWd(str,pwstr=None): """adds a user/passwd to an url""" - txt2=re.sub(r"(http://)(.*?)","\g<1>www:3333@\g<2>",str) + if pwstr: + txt2=re.sub(r"(http://)(.*?)","\g<1>%s@\g<2>"%pwstr,str) + else: + txt2=re.sub(r"(http://)(.*?)","\g<1>www:3333@\g<2>",str) return txt2 - def getCollection(object,depth=0): + def getCollection(object,depth=0,pwstr=None): depth+=1 collections="" for entry in object.__dict__.keys(): element=getattr(object,entry) try: if element.meta_type in ["ECHO_collection","ECHO_group"]: - collections+="" + collections+="" collections+=getCollection(element,depth)+"\n" except: """nothing""" return collections ret="""""" - return ret+""+getCollection(self)+"" + return ret+""+getCollection(self,pwstr=pwstr)+"" - def createJavaScript(self): - """OLD CreateJava""" - ret=javaScriptMain - - dynamical="\n" - for ob in self.getGraphicCoords(): - if ob[4][4] == "": - dynamical+="""Coords.push(new Coord('%s', Img, %s));\n"""%(ob[1],ob[0]) - else: - dynamical+="""Coords.push(new Coord('%s', Img, %s));//%s\n"""%(ob[1],ob[0],ob[4][4]) - dynamical+="ShowArrow(new getObj('i.%s'),Img,%s);\n"%(ob[1],ob[0]) - ret+=javaHandler%dynamical - return ret - - def createJSAreas(self): + def createAllJSAreas(self): """create area calls for JavaScript""" - dynamical="\n" - for ob in self.getGraphicCoords(): - if ob[5] == "area": - dynamical+="""addArea('%s', 'overview', %s, 'area');\n"""%(ob[1],ob[0]) - else: - dynamical+="""addArea('%s', 'overview', %s, 'arrow');\n"""%(ob[1],ob[0]) - return dynamical - - def createMapHead(self): - """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() + areas = self.getAllMapAreas() + return self.createJSAreas(areas) - 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 = "" - 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"): - """generate map link image, text and other stuff""" - id = ob[1] - link = ob[1] - vtype = ob[5] - ctype = ob[3].contentType - 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 += '
3: - coord=coordtemp[0:4] - label="" - vc="" - if hasattr(object,'label') and not object.label=="": - label=object.label - elif hasattr(object,'title') and not object.title=="": - label=object.title - else: - label=object.getId() - if object.viewClassification != "": - vc=object.viewClassification - else: - if len(coordtemp) > 4 and coordtemp[4] != "": - vc="view point" - else: - vc="area" - ids.append([string.join(coord,", "),object.getId(),label,object,coordtemp,vc]) - return ids - + def hl_add_js(self): + """javascript""" + return sendFile(self, 'js/hl_add.js', 'text/plain') + def getAllMapAreas(self): + """Give list of coordinates""" + mapColTypes=['ECHO_collection','ECHO_resource','ECHO_link','ECHO_externalLink'] + areas=[] + for entry in self.getSubCols(subColTypes=mapColTypes): + object=entry + areas.extend(object.getMapAreas()) + return areas + + + def deleteMapAreas(self): + """deletes all map areas from this object""" + for obs in self.ZopeFind(self, obj_metatypes=['MapArea'], search_sub=1): + ob = obs[1] + id = ob.id + parent = ob.aq_parent + print "deleting: ", ob.id + parent._delObject(id) + return "Done" getSubCols = ECHO_helpers.getSubCols @@ -2178,11 +2092,11 @@ Globals.InitializeClass(ECHO_collection) def manage_addECHO_collectionForm(self): """Add collection form""" - pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_collectionForm.zpt').__of__(self) + pt=zptFile(self, 'zpt/AddECHO_collectionForm.zpt') return pt() -def manage_addECHO_collection(self,id,title,label,description,contentType,responsible,weight,sortfield,coords="",secondaryLinkTitle="",secondaryLink="",credits=None,RESPONSE=None,imageTag="",bgcolour=""): +def manage_addECHO_collection(self,id,title,label,description="",contentType="",responsible="",weight=0,sortfield="weight",coords="",secondaryLinkTitle="",secondaryLink="",credits=None,RESPONSE=None,imageTag="",bgcolour=""): """add a echo collection""" @@ -2201,7 +2115,7 @@ class ECHO_group(ECHO_collection): manage_options = Folder.manage_options+( {'label':'Main Config','action':'ECHO_group_config'}, {'label':'Rerender Links','action':'ECHO_rerenderLinksMDWarning'}, - {'label':'Graphics','action':'ECHO_graphicEntry'}, + {'label':'Graphic Coords','action':'ECHO_graphicEntry'}, ) security.declareProtected('View','index_html') @@ -2246,7 +2160,7 @@ class ECHO_group(ECHO_collection): elif hasattr(self,'main_index_template'): return self.main_index_template() - pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_main_index_template_standard.zpt').__of__(self) + pt=zptFile(self, 'zpt/ECHO_main_index_template_standard.zpt') pt.content_type="text/html" return pt() @@ -2262,11 +2176,11 @@ class ECHO_group(ECHO_collection): if not hasattr(self,'coords'): self.coords=[] - pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_group.zpt').__of__(self) + pt=zptFile(self, 'zpt/ChangeECHO_group.zpt') return pt() def changeECHO_group(self,title,label,description,contentType,responsible,weight,secondaryLink,secondaryLinkTitle,credits=None,sortfield="weight",coords=None,RESPONSE=None,imageTag="",bgcolour="",logo=""): - """Änderung der Properties""" + """Aenderung der Properties""" self.secondaryLink=secondaryLink self.secondaryLinkTitle=secondaryLinkTitle @@ -2274,14 +2188,7 @@ class ECHO_group(ECHO_collection): self.bgcolour=bgcolour self.logo=logo - if coords: - coordsnew=[ string.split(x,",") for x in coords] - self.coords=coordsnew[0:] - else: - coordsnew=None - self.coords=None - - setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordsnew) + setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight) @@ -2297,6 +2204,7 @@ class ECHO_group(ECHO_collection): except: return "ECHO_groups" + security.declarePublic('content_html') def content_html(self): """template fuer content""" return ECHO_basis.content_html(self,'group') @@ -2305,7 +2213,7 @@ class ECHO_group(ECHO_collection): def manage_addECHO_groupForm(self): """Add group form""" - pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_groupForm.zpt').__of__(self) + pt=zptFile(self, 'zpt/AddECHO_groupForm.zpt') return pt() @@ -2478,7 +2386,31 @@ class ECHO_root(Folder,Persistent,Implic meta_type="ECHO_root" - ###CDLI adds -> have to be removed + def printer(self,txt): + print txt + print txt[2] + print txt[2].getImageTag() + print "HO" + return txt[2].getImageTag() + + def printer2(self,txt): + print txt + + + def item2(self,txt): + return txt[2] + + def getContentOverviewTemplate(self): + """produces overview template with macro""" + pt = zptObjectOrFile(self, 'content_overview_template') + return pt + + def mapstyle_css(self): + """send mapstyle.css""" + sendFile(self, 'html/ECHO_mapstyle.css', 'text/css') + + + ###Cdli adds -> have to be removed def getTablet(self,item): #print "getTablet" try: @@ -2491,8 +2423,17 @@ class ECHO_root(Folder,Persistent,Implic ###END CDLI add + def URLquote(self, text): + """urllib.quote fuer Michael""" + return urllib.quote(text) + + def checkResource(self,id): """checks if a resource is in the tree, gives back none or list of resources""" + if not id: + id="" + splitted=id.split("/") + id=splitted[len(splitted)-1] if hasattr(self,"_v_checkResource") and self._v_checkResource.has_key(id): #existiert ein cache und id ist bereits drin? return self._v_checkResource[id] @@ -2521,7 +2462,7 @@ class ECHO_root(Folder,Persistent,Implic def generateFromRDFForm(self): """change form""" - pt=PageTemplateFile('Products/ECHO_content/zpt/generateFromRDFForm').__of__(self) + pt=zptFile(self, 'zpt/generateFromRDFForm') pt.content_type="text/html" return pt() @@ -2633,12 +2574,12 @@ class ECHO_root(Folder,Persistent,Implic ret+=resource[1].getId()+" "+argv[resource[1].getId()]+"
" resource[1].weight=argv[resource[1].getId()][0:] except: - """not""" + pass return ret def changeWeights(self): """change form""" - pt=PageTemplateFile('Products/ECHO_content/zpt/changeWeightForm').__of__(self) + pt=zptFile(self, 'zpt/changeWeightForm') pt.content_type="text/html" return pt() getSubCols = ECHO_helpers.getSubCols @@ -2655,7 +2596,7 @@ class ECHO_root(Folder,Persistent,Implic def reloadMetaDataFromStorageWarning(self,RESPONSE=None): """warning""" - pt=PageTemplateFile('Products/ECHO_content/zpt/reloadMetaDataFromStorageWarning.zpt').__of__(self) + pt=zptFile(self, 'zpt/reloadMetaDataFromStorageWarning.zpt') pt.content_type="text/html" return pt() @@ -2696,7 +2637,7 @@ class ECHO_root(Folder,Persistent,Implic def getBibTag(self,tag,content): - """get field tag für index-meta-generation""" + """get field tag for index-meta-generation""" if not content or content=="": return "" ret="<%s>"%tag @@ -2713,10 +2654,12 @@ class ECHO_root(Folder,Persistent,Implic return getattr(found,field).decode('ascii','ignore') except: return "" - + + security.declarePublic('getImageTag') def getImageTag(self): """needed by main_template""" return "" + secondaryLink="" #needed by main_template secondaryLinkTitle="" #needed by main_template @@ -2724,6 +2667,7 @@ class ECHO_root(Folder,Persistent,Implic """hack""" return "#dddddd" + security.declareProtected('View','contentTypeSelector_HTML') def contentTypeSelector_HTML(self,selected=None): """give type selector""" if not selected: @@ -2766,23 +2710,6 @@ class ECHO_root(Folder,Persistent,Implic """nothing""" return retStr - def renderingTypeSelector_HTML(self,selected=None): - """give type selector""" - if not selected: - retStr="