--- ECHO_content/ECHO_collection.py 2004/11/28 21:56:07 1.191 +++ ECHO_content/ECHO_collection.py 2004/12/02 20:11:49 1.199 @@ -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,7 +61,6 @@ 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 * @@ -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="",viewClassification=""): """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): @@ -177,11 +166,9 @@ class ECHO_layoutTemplate(ZopePageTempla 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." @@ -239,8 +226,6 @@ class ECHO_fullText(ZopePageTemplate,ECH 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,10 +253,11 @@ 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() @@ -283,6 +269,91 @@ class ECHO_resource(Folder,Persistent,EC 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""" ret=getRDFDescription(self,self.link,urn=urn) @@ -426,7 +497,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() @@ -523,7 +594,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() @@ -636,8 +707,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 +730,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 +780,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 +796,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 +823,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 +851,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 +883,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 +907,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] + 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') - try: - coordsnew=[ string.split(x,",") for x in coords] - except: - coordsnew=[] - - 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 @@ -932,16 +1006,9 @@ class ECHO_resource(Folder,Persistent,EC 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=[] + """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 +1019,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""" @@ -1167,7 +1207,7 @@ class ECHO_resource(Folder,Persistent,EC 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 +1218,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 +1230,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": @@ -1205,7 +1245,7 @@ class ECHO_resource(Folder,Persistent,EC 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 +1261,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,7 +1302,7 @@ 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() @@ -1314,21 +1354,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') @@ -1346,7 +1379,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() @@ -1376,7 +1409,7 @@ 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() @@ -1427,25 +1460,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 +1493,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 +1508,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 +1523,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): @@ -1505,7 +1538,7 @@ class ECHO_collection(Folder, Persistent ret+=resource[1].getId()+" "+argv[resource[1].getId()]+"
" resource[1].weight=argv[resource[1].getId()][0:] except: - """not""" + pass return ret def changeTitlesInCollection(self): @@ -1520,7 +1553,7 @@ class ECHO_collection(Folder, Persistent ret+=resource[1].getId()+" "+argv[resource[1].getId()]+"
" resource[1].title=argv[resource[1].getId()][0:] except: - """not""" + pass return ret def updateCollection(self,RESPONSE=None): @@ -1570,7 +1603,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 +1628,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 +1652,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 +1703,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() @@ -1717,7 +1750,7 @@ class ECHO_collection(Folder, Persistent 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): @@ -1779,7 +1812,7 @@ class ECHO_collection(Folder, Persistent element=getattr(object,entry) try: if element.meta_type in ["ECHO_collection","ECHO_group"]: - collections+="" + collections+="" collections+=getCollection(element,depth)+"\n" except: """nothing""" @@ -1788,106 +1821,11 @@ class ECHO_collection(Folder, Persistent ret="""""" return ret+""+getCollection(self)+"" - 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 + 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,7 +2055,7 @@ 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() @@ -2201,7 +2078,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 +2123,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 +2139,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 +2151,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) @@ -2305,7 +2175,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() @@ -2521,7 +2391,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 +2503,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 +2525,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 +2566,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 @@ -2834,7 +2704,7 @@ class ECHO_root(Folder,Persistent,Implic """nothing""" return retStr - mediaTypes=['all','text','images','sound','video'] # konfigurierbar in neuer version über echoroot?? + mediaTypes=['all','text','images','sound','video'] # konfigurierbar in neuer version ueber echoroot?? def mediaTypeSelector_HTML(self,selected=None): """give type selector""" @@ -2874,6 +2744,11 @@ class ECHO_root(Folder,Persistent,Implic return "changed all contenttypes in: "+self.title + def repairAllCoords(self): + """updates map coordinates on the same and sublevels""" + return repairCoords(self) + + def patchViewClassification(self,obj=None): """setze viewClassification heuristisch""" @@ -2908,24 +2783,17 @@ class ECHO_root(Folder,Persistent,Implic def deleteCache(self,obj=None,RESPONSE=None): """setze alle collections auf cache = CacheManager""" - - if not obj: obj = self - entries=obj.ZopeFind(obj,search_sub=1) - for entry in entries: if hasattr(entry[1],'_v_hash'): entry[1]._v_hash=None - - - return "changed all CM in: "+self.title - + security.declarePublic('ECHO_newViewerLink') def ECHO_newViewerLink(self,obj=None): """change links (:86 faellt weg)""" @@ -3275,7 +3143,7 @@ def manage_addECHO_root(self,id,title,RE def manage_addECHO_rootForm(self): """Nothing yet""" - pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_root.zpt').__of__(self) + pt=zptFile(self, 'zpt/AddECHO_root.zpt') return pt() class ECHO_copyrightType(Folder,ECHO_basis): @@ -3296,7 +3164,7 @@ class ECHO_copyrightType(Folder,ECHO_bas def ECHO_copyrightType_config_mainForm(self): """change form""" - pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_copyrightType').__of__(self) + pt=zptFile(self, 'zpt/ChangeECHO_copyrightType') pt.content_type="text/html" return pt() @@ -3311,7 +3179,7 @@ class ECHO_copyrightType(Folder,ECHO_bas def manage_addECHO_copyrightTypeForm(self): """Form for adding a ressource""" - pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_copyrightTypeForm.zpt').__of__(self) + pt=zptFile(self, 'zpt/AddECHO_copyrightTypeForm.zpt') return pt() @@ -3368,7 +3236,7 @@ class ECHO_partner(Image,Persistent,ECHO """Main configuration""" if not hasattr(self,'url'): self.url="" - pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_partner.zpt').__of__(self) + pt=zptFile(self, 'zpt/ChangeECHO_partner.zpt') return pt() @@ -3427,7 +3295,7 @@ class ECHO_linkList(ZopePageTemplate,ECH def changeECHO_linkListWeightForm(self): """change""" - pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_linkListTemplate.zpt').__of__(self) + pt=zptFile(self, 'zpt/ChangeECHO_linkListTemplate.zpt') return pt() def changeECHO_linkListWeight(self,contentType,label,RESPONSE=None): @@ -3465,11 +3333,9 @@ class ECHO_linkList(ZopePageTemplate,ECH def manage_addECHO_linkListForm(self): """Form for adding""" - pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_linkListTemplate.zpt').__of__(self) + pt=zptFile(self, 'zpt/AddECHO_linkListTemplate.zpt') return pt() -from urllib import quote - def manage_addECHO_linkList(self, id, label,contentType=0,title=None, text=None, REQUEST=None, submit=None): @@ -3502,7 +3368,7 @@ def manage_addECHO_linkList(self, id, la 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 '' @@ -3532,7 +3398,7 @@ class ECHO_support(Folder,ECHO_basis): def ECHO_support_configForm(self): """change form""" - pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_support').__of__(self) + pt=zptFile(self, 'zpt/ChangeECHO_support') pt.content_type="text/html" return pt() @@ -3546,7 +3412,7 @@ class ECHO_support(Folder,ECHO_basis): def manage_addECHO_supportForm(self): """Form for adding""" - pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_support.zpt').__of__(self) + pt=zptFile(self, 'zpt/AddECHO_support.zpt') return pt() def manage_addECHO_support(self, id,institutions=None,RESPONSE=None): @@ -3598,7 +3464,7 @@ class ECHO_institution(Image,Persistent, """Main configuration""" if not hasattr(self,'url'): self.url="" - pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_institution.zpt').__of__(self) + pt=zptFile(self, 'zpt/ChangeECHO_institution.zpt') return pt() @@ -3641,3 +3507,42 @@ def manage_addECHO_institution(self, id, REQUEST.RESPONSE.redirect('%s/manage_main' % url) return id +def repairCoords(self): + """updates map coordinates to new MapArea objects""" + msg = "" + for cols in self.ZopeFind(self, obj_metatypes=['ECHO_collection','ECHO_resource'], search_sub=1): + col = cols[1] + if not hasattr(col, 'coords'): + continue + print "fixing: ", col.id + msg += "fixing: "+col.id+"\n" + coords = col.coords + if len(coords) > 0: + # delete old MapAreas + for areas in self.ZopeFind(col, obj_metatypes=['MapArea']): + #area = areas[1] + id = areas[0] + print " deleting: ", id + msg += " deleting: "+id+"\n" + col._delObject(id) + # add new MapAreas + areacnt = 0 + for coord in coords: + if len(coord) < 4: + continue + type = col.viewClassification + if type == 'view point': + type = 'arrow' + if type is None: + if len(coord) > 4: + type = 'arrow' + else: + type = 'area' + newid = "a%02d"%areacnt + areacnt += 1 + area = MapArea(newid, coord, type=type) + print " adding: ", newid + msg += " adding: "+newid+"\n" + col.addMapArea(area) + msg += "\nDone!" + return msg