--- ECHO_content/ECHO_collection.py 2004/05/13 19:11:06 1.84 +++ ECHO_content/ECHO_collection.py 2004/05/24 18:48:23 1.88 @@ -19,6 +19,7 @@ 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 @@ -123,9 +124,25 @@ def sendFile(self, filename, type): self.REQUEST.RESPONSE.write(file(fn).read()) return +class BrowserCheck: + """check the browsers request to find out the browser type""" + + def __init__(self, zope): + self.ua = zope.REQUEST.get_header("HTTP_USER_AGENT") + self.isN4 = (string.find(self.ua, 'Mozilla/4.') > -1) and (string.find(self.ua, 'MSIE') < 0) + self.isIE = string.find(self.ua, 'MSIE') > -1 + self.nav = self.ua[string.find(self.ua, '('):] + ie = string.split(self.nav, "; ")[1] + if string.find(ie, "MSIE") > -1: + self.versIE = string.split(ie, " ")[1] + self.isMac = string.find(self.ua, 'Macintosh') > -1 + self.isWin = string.find(self.ua, 'Windows') > -1 + self.isIEWin = self.isIE and self.isWin + self.isIEMac = self.isIE and self.isMac + def writeMetadata(url,metadict): - """Einlesen der Metadaten und und erstellen des geänderten XML file""" + """Einlesen der Metadaten und und erstellen des geaenderten XML file""" try: geturl="" @@ -692,9 +709,15 @@ class ECHO_resource(Folder): for referenceTypeF in self.referencetypes: #print referenceTypeF[1].title,referenceType - if referenceTypeF[1].title == referenceType: + if referenceTypeF[1].title.lower() == referenceType.lower(): #print "OK" - bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields + try: + bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields + referenceType=referenceTypeF[1].title + except: + bibdata[referenceType]=referenceTypeF[1].fields + + bibdata['data']=referenceTypeF[1] self.fields=bibdata[referenceType] for field in fieldlist: @@ -713,8 +736,12 @@ class ECHO_resource(Folder): for referenceTypeF in self.referencetypes: - if referenceTypeF[1].title == referenceType: - bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields + if referenceTypeF[1].title.lower() == referenceType.lower(): + try: + bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields + referenceType=referenceTypeF[1].title + except: + bibdata[referenceType]=referenceTypeF[1].fields bibdata['data']=referenceTypeF[1] self.fields=bibdata[referenceType] for field in fieldlist: @@ -735,7 +762,7 @@ class ECHO_resource(Folder): return "ERROR:",error - if not (metadict['bib_type']==self.contentType): + if not (metadict['bib_type'].lower()==self.contentType.lower()): self.REQUEST.SESSION['contentStorage']=metadict['bib_type'] self.REQUEST.SESSION['contentZope']=self.contentType @@ -1004,7 +1031,7 @@ class ECHO_collection(Folder, Persistent return ret+""+getCollection(self)+"" def createJavaScript(self): - """CreateJava""" + """OLD CreateJava""" ret=javaScriptMain dynamical="\n" @@ -1018,7 +1045,7 @@ class ECHO_collection(Folder, Persistent return ret def createJSAreas(self): - """new version of createJavaScript""" + """create area calls for JavaScript""" dynamical="\n" for ob in self.getGraphicCoords(): if ob[5] == "area": @@ -1028,20 +1055,37 @@ class ECHO_collection(Folder, Persistent return dynamical def createMapHead(self): - """generate divs""" + """create javascript include and script tags for head""" pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/ECHO_content_map_frag_js')).__of__(self) return pt() + + def createMapImg(self): + """generate img-tag for map""" + bt = BrowserCheck(self) + tag = "" + src = self.REQUEST['URL1'] + "/overview" + if bt.isN4: + tag += ''%src + else: + tag += ''%src + return tag def createMapLink(self, ob, text=None): """generate map link""" + bt = BrowserCheck(self) id = ob[1] link = ob[1] if text == None: text = ob[2] - tag = '" + tag = "" + if bt.isN4: + tag += '" + else: + tag = '" return tag def createMapAux(self, ob, arrowsrc="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?dw=15&fn=icons/pfeil"): @@ -1050,18 +1094,39 @@ class ECHO_collection(Folder, Persistent link = ob[1] vtype = ob[5] ctype = ob[3].contentType - - tag = ''%(id,id,id,link) - if vtype == "view point": - rot = ob[4][4] - tag += ''%(id,arrowsrc,rot) + bt = BrowserCheck(self) + tag = "" + + if bt.isN4: + tag += ''%(id,id,id) + if vtype == "view point": + rot = ob[4][4] + tag += ''%(link,arrowsrc,rot) + else: + tag += ''%(id,id,id,link) + if vtype == "view point": + rot = ob[4][4] + if bt.isIEWin and bt.versIE > 5: + tag += ''%(id,arrowsrc,rot,arrowsrc,rot) + else: + tag += ''%(id,arrowsrc,rot) + else: + if bt.isIEWin: + tag += '
_sz: + _item=_host[-_sz:] + else: + _item=_host + fail=0 + for i in range(_sz): + h=_item[i] + o=_ob[i] + if (o != h) and (o != '*'): + fail=1 + break + if fail: + continue + return 1 + return 0 + +Globals.default__class_init__(ECHO_userFolder) + + + +def manage_addECHO_userFolder(self,dtself=None,REQUEST=None,**ignored): + """add a user folder """ + f=ECHO_userFolder() + self=self.this() + try: self._setObject('acl_users', f) + except: return MessageDialog( + title ='Item Exists', + message='This object already contains a User Folder', + action ='%s/manage_main' % REQUEST['URL1']) + self.__allow_groups__=f + if REQUEST is not None: + REQUEST['RESPONSE'].redirect(self.absolute_url()+'/manage_main') + +def manage_addECHO_userFolderForm(self): + """add a user folder form""" + return manage_addECHO_userFolder(self) + class ECHO_root(Folder,Persistent,Implicit): """ECHO Root Folder""" - meta_type="ECHO_root" + security=ClassSecurityInfo() + + meta_type="ECHO_root" + def getImageTag(self): """needed by main_template"""