--- ECHO_content/ECHO_collection.py 2004/12/02 17:04:15 1.197 +++ ECHO_content/ECHO_collection.py 2005/01/21 16:28:58 1.204 @@ -61,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 * @@ -75,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 @@ -89,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""" @@ -170,8 +151,6 @@ 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()), @@ -179,9 +158,6 @@ class ECHO_layoutTemplate(ZopePageTempla text = open(self._default_content_fn).read() self.pt_edit(text, content_type) - - """change form""" - def manage_addECHO_layoutTemplateForm(self): """Form for adding""" @@ -282,7 +258,7 @@ class ECHO_resource(Folder,Persistent,EC security=ClassSecurityInfo() meta_type='ECHO_resource' - viewClassificationList=viewClassificationListMaster +# viewClassificationList=viewClassificationListMaster getSubCols = ECHO_helpers.getSubCols @@ -684,11 +660,11 @@ class ECHO_resource(Folder,Persistent,EC """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.""" @@ -842,7 +818,7 @@ class ECHO_resource(Folder,Persistent,EC coordsnew=[] self.coords=coordsnew - self.viewClassification="" +# self.viewClassification="" @@ -1024,17 +1000,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): + def changeECHO_resource(self,metalink,link,title,label,description,contentType,responsible,weight,coords=None,credits=None,RESPONSE=None): """Aenderung der Properties""" - try: - coordsnew=[ string.split(x,",") for x in coords] - except: - coordsnew=[] - - 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 @@ -1045,39 +1014,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':'Edit Coords','action':'ECHO_resource_config_coords'}, - {'label':'Change 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=zptFile(self, 'zpt/ECHO_draw.zpt') - 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""" @@ -1159,7 +1102,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(): @@ -1411,16 +1356,9 @@ class ECHO_externalLink(Folder,ECHO_basi def changeECHO_externalLink(self,link,title,label,description,contentType,responsible,weight,coords=None,credits=None,RESPONSE=None): - """Aenderung der Properties""" - try: - coordsnew=[ string.split(x,",") for x in coords] - except: - coordsnew=[] - - setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coords) + setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight) - self.coords=coordsnew[0:] self.link=link if RESPONSE is not None: RESPONSE.redirect('manage_main') @@ -1488,7 +1426,7 @@ class ECHO_collection(Folder, Persistent security=ClassSecurityInfo() meta_type='ECHO_collection' - viewClassificationList=viewClassificationListMaster +# viewClassificationList=viewClassificationListMaster displayTypes=displayTypes path="/mpiwg/online/permanent/shipbuilding" @@ -1552,7 +1490,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): @@ -1567,7 +1505,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): @@ -1582,7 +1520,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): @@ -1597,7 +1535,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): @@ -1612,7 +1550,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): @@ -1800,11 +1738,11 @@ 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): @@ -1880,116 +1818,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 newMapArea(self, id, coords=None): - """returns a new MapArea""" - if coords is None: - coords = [0,0,0,0] - return MapArea(id, coords) - - def createJSAreas(self, areas): - """create area calls for JavaScript""" - dynamical="\n" - for ob in areas: - if ob.isTypeArrow(): - dynamical+="""addArea('%s', 'overview', %s, 'arrow');\n"""%(ob.getFullId(),ob.getCoordString()) - else: - dynamical+="""addArea('%s', 'overview', %s, 'area');\n"""%(ob.getFullId(),ob.getCoordString()) - return dynamical - def createAllJSAreas(self): """create area calls for JavaScript""" areas = self.getAllMapAreas() return self.createJSAreas(areas) - def createMapHead(self): - """create javascript include and script tags for head""" - pt=zptFile(self, 'zpt/ECHO_content_map_frag_js') - return pt() - - def createMapImg(self): - """generate img-tag for map""" - bt = BrowserCheck(self) - tag = "" - src = self.REQUEST['URL1'] + "/overview" - if bt.isN4: - tag += ''%src - else: - tag += ''%src - return tag - - def createMapLink(self, ob, text=None): - """generate map link""" - bt = BrowserCheck(self) - id = ob.getFullId() - link = ob.getLinkId() - if text is None: - text = ob.getLabel() - if text is None: - text = "link" - 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""" - bt = BrowserCheck(self) - id = ob.getFullId() - link = ob.getLinkId() - tiptext = ob.getText() - tag = "" - - if bt.isN4: - tag += ''%(id,id,id) - if ob.isTypeArrow(): - rot = ob.angle - tag += ''%(link,arrowsrc,rot) - else: - tag += ''%(id,id,id,link) - if ob.isTypeArrow(): - rot = ob.angle - if bt.isIEWin and bt.versIE > 5: - tag += ''%(id,arrowsrc,rot,arrowsrc,rot) - else: - tag += ''%(id,arrowsrc,rot) - else: - if bt.isIEWin: - tag += '
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 getSubCols = ECHO_helpers.getSubCols @@ -2310,7 +2075,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') @@ -2383,14 +2148,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) @@ -2587,7 +2345,12 @@ class ECHO_root(Folder,Persistent,Implic meta_type="ECHO_root" - ###CDLI adds -> have to be removed + def getContentOverviewTemplate(self): + """produces overview template with macro""" + pt = zptObjectOrFile(self, 'content_overview_template') + return pt + + ###Cdli adds -> have to be removed def getTablet(self,item): #print "getTablet" try: @@ -2600,6 +2363,11 @@ 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 hasattr(self,"_v_checkResource") and self._v_checkResource.has_key(id): #existiert ein cache und id ist bereits drin? @@ -2742,7 +2510,7 @@ 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): @@ -2983,6 +2751,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""" @@ -3017,23 +2790,15 @@ 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): @@ -3749,3 +3514,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