--- ECHO_content/ECHO_collection.py 2004/05/10 14:18:33 1.76 +++ ECHO_content/ECHO_collection.py 2004/05/13 19:11:06 1.84 @@ -21,12 +21,15 @@ from OFS.SimpleItem import SimpleItem from AccessControl import ClassSecurityInfo from Globals import InitializeClass from Globals import DTMLFile +import Globals from Products.PageTemplates.PageTemplateFile import PageTemplateFile from Products.PageTemplates.PageTemplate import PageTemplate from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate from Globals import Persistent, package_home from Acquisition import Implicit from ECHO_helpers import displayTypes + + try: from psycopg import libpq except: @@ -170,7 +173,7 @@ def writeMetadata(url,metadict): metanode.appendChild(metanodeneu) - return dom.toxml().encode('utf-8') + return dom.topxml().encode('utf-8') def readMetadata(url): """Methode zum Auslesen der Metadateninformation zu einer Resource @@ -385,7 +388,22 @@ class ECHO_resource(Folder): return self.viewClassification else: return "" - + + def getFullTextXML(self,noredirect=None): + """getFullTextXML""" + try: + fh=urllib.urlopen(self.metalink) + dom=xml.dom.minidom.parse(fh) + texttools=dom.getElementsByTagName('texttool') + text=texttools[0].getElementsByTagName('text') + texturl=getText(text[0].childNodes) + if not noredirect: + self.REQUEST.RESPONSE.redirect(texturl) + else: + return texturl + except: + return None + def getCredits(self): """Ausgabe der credits""" if self.credits: @@ -515,7 +533,10 @@ class ECHO_resource(Folder): def changeECHO_resource_coords(self,coords,viewClassification,RESPONSE=None): """Änderung der Properties - coords""" - try: + if type(coords)==StringType: + coords=[coords] + + try: coordsnew=[ string.split(x,",") for x in coords] except: coordsnew=[] @@ -868,8 +889,11 @@ class ECHO_link(ECHO_externalLink): def content_html(self): - """template fuer content""" - return content_html(self,'link') + """template fuer link""" + if hasattr(self,"link_template"): + return content_html(self,'link') + else: + return content_html(self,'collection') def manage_addECHO_linkForm(self): """Form for external Links""" @@ -890,6 +914,7 @@ def manage_addECHO_link(self,id,title,la class ECHO_collection(Folder, Persistent, Implicit): """ECHO Collection""" + security=ClassSecurityInfo() meta_type='ECHO_collection' viewClassificationList=viewClassificationListMaster @@ -909,10 +934,13 @@ class ECHO_collection(Folder, Persistent """title""" return self.label.encode('utf-8') + + def createRessourcesFromXMLForm(self): """form""" pt=PageTemplateFile('Products/ECHO_content/zpt/createRessourcesFromXMLForm.zpt').__of__(self) return pt() + def createRessourcesFromXML(self,fileupload): """read an XML file for generating resources""" dom=xml.dom.minidom.parse(fileupload) @@ -1219,6 +1247,7 @@ class ECHO_collection(Folder, Persistent pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_content_overview.zpt').__of__(self) return pt() + security.declareProtected('View','index_html') def index_html(self): """standard page""" @@ -1254,13 +1283,11 @@ class ECHO_collection(Folder, Persistent def hl_lib_js(self): """javascript""" - sendFile(self, 'js/hl_lib.js', 'text/plain') - return + return sendFile(self, 'js/hl_lib.js', 'text/plain') def js_lib_js(self): """javascript""" - sendFile(self, 'js/js_lib.js', 'text/plain') - return + return sendFile(self, 'js/js_lib.js', 'text/plain') def getGraphicCoords(self): """Give list of coordinates""" @@ -1294,9 +1321,8 @@ class ECHO_collection(Folder, Persistent getSubCols = ECHO_helpers.getSubCols - - - + +Globals.InitializeClass(ECHO_collection) def manage_addECHO_collectionForm(self): """Add collection form""" @@ -1317,6 +1343,7 @@ def manage_addECHO_collection(self,id,ti class ECHO_group(ECHO_collection): """ECHO Gruppe""" + security=ClassSecurityInfo() meta_type="ECHO_group" manage_options = Folder.manage_options+( @@ -1324,7 +1351,8 @@ class ECHO_group(ECHO_collection): {'label':'Rerender Links','action':'ECHO_rerenderLinksMD'}, {'label':'Graphics','action':'ECHO_graphicEntry'}, ) - + + security.declareProtected('View','index_html') def index_html(self): """standard page""" displayedObjects=self.ZopeFind(self,obj_metatypes=displayTypes) @@ -1418,7 +1446,7 @@ def manage_addECHO_group(self,id,title,l if RESPONSE is not None: RESPONSE.redirect('manage_main') - +Globals.InitializeClass(ECHO_group) class ECHO_root(Folder,Persistent,Implicit): """ECHO Root Folder""" @@ -1700,7 +1728,79 @@ class ECHO_root(Folder,Persistent,Implic ret.append((collection[0].getId(),collection[1].getId(),collection[2])) return ret - + def getResourcesHTML(self,viewerType=None,filter=None): + """gebe all ressourcen aus""" + + def sortHTML(x,y): + return cmp(x[1].title,y[1].title) + + ret="""

Resources in ECHO

""" + + resources = self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1) + ret+="""

Found %i resources

"""%len(resources) + resources.sort(sortHTML) + for resource in resources: + echo_url=resource[1].absolute_url() + + if hasattr(resource[1],'title'): + title=resource[1].title + else: + title="None" + if filter: + if re.search(filter,title): + ret+="""\n

%s

"""%(echo_url,title) + else: + ret+="""\n

%s

"""%(echo_url,title) + + ret +="""\n""" + + #self.REQUEST.RESPONSE.setHeader("Content-Type", "text/html") + #self.REQUEST.RESPONSE.write(ret) + return ret + + def getResourcesXML(self,viewerType=None,filter=None): + """gebe all ressourcen aus""" + ret=""" + """ + for resource in self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1): + + echo_url=resource[1].absolute_url() + if hasattr(resource[1],'link'): + viewer_url=resource[1].link + else: + viewer_url="NO URL" + if filter: + if re.search(filter,viewer_url): + ret+="""\n"""%(urllib.quote(echo_url,safe='/:?'),urllib.quote(viewer_url,safe='/:?')) + else: + ret+="""\n"""%(urllib.quote(echo_url,safe='/:?'),urllib.quote(viewer_url,safe='/:?')) + ret +="""\n""" + + self.REQUEST.RESPONSE.setHeader("Content-Type", "text/xml") + self.REQUEST.RESPONSE.write(ret) + + def getFullTextsXML(self,viewerType=None,filter=None): + """gebe all ressourcen aus""" + ret=""" + """ + for resource in self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1): + + echo_url=resource[1].absolute_url() + if resource[1].getFullTextXML(noredirect="yes"): + if hasattr(resource[1],'link'): + viewer_url=echo_url+"/getFullTextXML" + else: + viewer_url="NO URL" + if filter: + if re.search(filter,viewer_url): + ret+="""\n"""%(urllib.quote(echo_url,safe='/:?'),urllib.quote(viewer_url,safe='/:?')) + else: + ret+="""\n"""%(urllib.quote(echo_url,safe='/:?'),urllib.quote(viewer_url,safe='/:?')) + ret +="""\n""" + print ret + + self.REQUEST.RESPONSE.setHeader("Content-Type", "text/xml") + self.REQUEST.RESPONSE.write(ret) def manage_addECHO_root(self,id,title,RESPONSE=None): """Add an ECHO_root"""