|
|
| version 1.28, 2004/11/29 17:18:13 | version 1.29, 2004/12/02 12:01:08 |
|---|---|
| Line 1 | Line 1 |
| import string | import string |
| import socket | import socket |
| import urllib | import urllib |
| import string | |
| import xml.dom.minidom | import xml.dom.minidom |
| from types import * | from types import * |
| from Products.PageTemplates.PageTemplateFile import PageTemplateFile | from Products.PageTemplates.PageTemplateFile import PageTemplateFile |
| from OFS.SimpleItem import SimpleItem | |
| from Globals import package_home | from Globals import package_home |
| import Globals | |
| from AccessControl import ClassSecurityInfo | |
| import os.path | import os.path |
| displayTypes = ['ZSQLExtendFolder','ZSQLBibliography','ECHO_group','ECHO_collection','ECHO_resource','ECHO_link','ECHO_sqlElement','ECHO_pageTemplate','ECHO_externalLink','ImageCollectionIFrame','VLP_resource','VLP_essay','ECHO_ZCatalogElement','ImageCollection','versionedFileFolder'] | displayTypes = ['ZSQLExtendFolder','ZSQLBibliography','ECHO_group','ECHO_collection','ECHO_resource','ECHO_link','ECHO_sqlElement','ECHO_pageTemplate','ECHO_externalLink','ImageCollectionIFrame','VLP_resource','VLP_essay','ECHO_ZCatalogElement','ImageCollection','versionedFileFolder'] |
| Line 123 class ECHO_basis: | Line 127 class ECHO_basis: |
| manage_options=({'label':'change ECHO Navigation Entries','action':'changeECHOEntriesForm'},) | manage_options=({'label':'change ECHO Navigation Entries','action':'changeECHOEntriesForm'},) |
| def getMapAreas(self): | |
| """returns the list of MapAreas""" | |
| # get all contained MapAreas | |
| areas = [res[1] for res in self.ZopeFind(self, obj_metatypes=('MapArea'))] | |
| return areas | |
| def addMapArea(self, newarea): | |
| """add a map area to this object""" | |
| if (newarea.id is None): | |
| # create new id | |
| areas = self.getMapAreas() | |
| newarea.id = "a%02d"%len(areas) | |
| self._setObject(newarea.id, newarea) | |
| def ECHO_addCoords(self,RESPONSE=None): | |
| """change or add MapArea""" | |
| #return self.REQUEST | |
| # change existing areas | |
| 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_graphicEntry') | |
| 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) | |
| # add new area | |
| if self.REQUEST.has_key('add'): | |
| coordstring = self.REQUEST.get('coords.new', '') | |
| coords = string.split(coordstring, ',') | |
| angle = self.REQUEST.get('angle.new', '0') | |
| type = self.REQUEST.get('type.new', 'area') | |
| if len(coords) == 4: | |
| coords.append(angle) | |
| area = MapArea(None, coords, type=type) | |
| self.addMapArea(area) | |
| # return to edit area menu | |
| if RESPONSE is not None: | |
| RESPONSE.redirect('ECHO_graphicEntry') | |
| #ende der echo erweiterungen | #ende der echo erweiterungen |
| Line 398 def checkDiffs(self,metadict): | Line 453 def checkDiffs(self,metadict): |
| return diffs | return diffs |
| def zptFile(self, path): | |
| """returns a page template file from the product""" | |
| pt=PageTemplateFile(os.path.join(package_home(globals()), path)).__of__(self) | |
| return pt | |
| def sendFile(self, filename, type): | def sendFile(self, filename, type): |
| Line 421 def sendFile(self, filename, type): | Line 480 def sendFile(self, filename, type): |
| self.REQUEST.RESPONSE.write(file(fn).read()) | self.REQUEST.RESPONSE.write(file(fn).read()) |
| return | return |
| class BrowserCheck: | class BrowserCheck: |
| """check the browsers request to find out the browser type""" | """check the browsers request to find out the browser type""" |
| def __init__(self, zope): | def __init__(self, zope): |
| """initialisiere""" | """initialisiere""" |
| self.ua = zope.REQUEST.get_header("HTTP_USER_AGENT") | 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.isN4 = False |
| self.isIE = string.find(self.ua, 'MSIE') > -1 | self.isIE = False |
| if string.find(self.ua, 'MSIE') > -1: | |
| self.isIE = True | |
| else: | |
| self.isN4 = string.find(self.ua, 'Mozilla/4.') > -1 | |
| try: | |
| self.nav = self.ua[string.find(self.ua, '('):] | self.nav = self.ua[string.find(self.ua, '('):] |
| ie = string.split(self.nav, "; ")[1] | ie = string.split(self.nav, "; ")[1] |
| if string.find(ie, "MSIE") > -1: | if string.find(ie, "MSIE") > -1: |
| self.versIE = string.split(ie, " ")[1] | self.versIE = string.split(ie, " ")[1] |
| except: pass | |
| self.isMac = string.find(self.ua, 'Macintosh') > -1 | self.isMac = string.find(self.ua, 'Macintosh') > -1 |
| self.isWin = string.find(self.ua, 'Windows') > -1 | self.isWin = string.find(self.ua, 'Windows') > -1 |
| self.isIEWin = self.isIE and self.isWin | self.isIEWin = self.isIE and self.isWin |
| self.isIEMac = self.isIE and self.isMac | self.isIEMac = self.isIE and self.isMac |
| def writeMetadata(url,metadict,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None,xmlfrag=None,digiliburlprefix=None): | def writeMetadata(url,metadict,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None,xmlfrag=None,digiliburlprefix=None): |
| """Einlesen der Metadaten und und erstellen des geaenderten XML file""" | """Einlesen der Metadaten und und erstellen des geaenderten XML file""" |
| Line 594 def readMetadata(url): | Line 659 def readMetadata(url): |
| return metadict,"" | return metadict,"" |
| class MapArea(SimpleItem): | |
| """simple class to hold coordinates""" | |
| meta_type = 'MapArea' | |
| # Create a SecurityInfo for this class. | |
| security = ClassSecurityInfo() | |
| security.setDefaultAccess("allow") | |
| # type constants | |
| TYPE_AREA = 'area' | |
| TYPE_ARROW = 'arrow' | |
| def __init__(self, id, coords, label=None, type=None, text=None): | |
| """init""" | |
| self.coords = coords[0:4] | |
| if len(coords) > 4: | |
| self.angle = coords[4] | |
| else: | |
| self.angle = 0 | |
| self.id = id | |
| self.label = label | |
| self.setType(type) | |
| self.text = text | |
| def setCoords(self, coords): | |
| """sets the coords""" | |
| self.coords = coords | |
| def getCoordString(self): | |
| """returns coordinates as a string""" | |
| return string.join(self.coords, ',') | |
| def setCoordString(self, coordstring): | |
| """sets coordinates from a string""" | |
| coords = string.split(coordstring, ',') | |
| self.coords = [c.strip() for c in coords] | |
| def getFullId(self, prefix=None): | |
| """returns the id with prefixed parent id""" | |
| if prefix is None: | |
| if hasattr(self, 'aq_parent'): | |
| prefix = self.aq_parent.id | |
| else: | |
| prefix = "id" | |
| fid = prefix + "." + self.id | |
| return fid | |
| def getType(self): | |
| """returns the type""" | |
| return self.type | |
| def setType(self, type): | |
| """sets the type""" | |
| if type == MapArea.TYPE_ARROW: | |
| self.type = MapArea.TYPE_ARROW | |
| elif type == MapArea.TYPE_AREA: | |
| self.type = MapArea.TYPE_AREA | |
| else: | |
| self.type = MapArea.TYPE_AREA | |
| def isTypeArea(self): | |
| """returns if the type is area""" | |
| return self.type == MapArea.TYPE_AREA | |
| def isTypeArrow(self): | |
| """returns if the type is arrow""" | |
| return self.type == MapArea.TYPE_ARROW | |
| def getAngle(self): | |
| """returns the angle""" | |
| return self.angle | |
| def setAngle(self, angle): | |
| """sets the angle""" | |
| self.angle = angle | |
| def getText(self): | |
| """returns the popup text""" | |
| if self.text is None: | |
| if hasattr(self, 'aq_parent'): | |
| parent = self.aq_parent | |
| if parent.contentType == 'text-popup': | |
| return parent.description | |
| return self.text | |
| def setText(self, text): | |
| """sets the text""" | |
| self.text = text | |
| def getLabel(self): | |
| """returns the link label""" | |
| if self.label is None: | |
| if hasattr(self, 'aq_parent'): | |
| return self.aq_parent.label or self.aq_parent.id | |
| return self.label | |
| def setLabel(self, label): | |
| """sets the label""" | |
| self.label = label | |
| def getLinkId(self): | |
| if hasattr(self, 'aq_parent'): | |
| return self.aq_parent.id | |
| return self.id | |
| # call this to initialize framework classes, which | |
| # does the right thing with the security assertions. | |
| Globals.InitializeClass(MapArea) |