--- ECHO_content/ECHO_language.py 2006/10/11 16:55:26 1.8 +++ ECHO_content/ECHO_language.py 2006/10/18 14:42:33 1.10 @@ -6,6 +6,7 @@ from OFS.SimpleItem import SimpleItem from OFS.Folder import Folder import xml.parsers import os.path +import urlparse,urllib from Globals import package_home class ECHO_language: @@ -22,6 +23,10 @@ class ECHO_language: #return DonatusFile(txt=self.getPage(_pn=nr)).convertedXML() class Collection(SimpleItem): + def getCollectionXML(self,RESPONSE=None): + + """get collection as xml""" + return self.aq_parent.getCollectionXML(collection=self.getId(),RESPONSE=RESPONSE) def __init__(self,id): """initialise""" @@ -32,7 +37,6 @@ class Collection(SimpleItem): def getEntries(self): """get the entries""" entries=self.entries - for entry in entries: #backward compatibility, cannot be removed a.s.a.p. print entry if entry.has_key('master') and (len(entry['master'])<3): @@ -46,6 +50,14 @@ class Collection(SimpleItem): """delete an entry""" del(self.entries[nr]) + def changeEntry(self,nr,slaveUrl): + """change an entry, only slaveUrl""" + tmp=self.entries[nr] + tmp['slave']=(slaveUrl,"","") + + entries=self.entries[0:] + entries[nr]=tmp + self.entries=entries[0:] def appendEntry(self,fn,id,type,pagelink): """append an entry""" @@ -86,7 +98,59 @@ class ECHO_linkCreator(Folder): return col.getEntries() - + + def getCollectionXML(self,collection=None,RESPONSE=None): + """exports the collection as an XML file""" + if not collection: + return "no collection: need parameter collection=COLLECTION_NAME" + + i=0 + ret="" + ret+="""""" + ret+="""""" + ret+="""%s"""%collection + ret+=""""""%self.getUrls(collection)[0] + ret+=""""""%self.getUrls(collection)[1] + + for entry in self.getCollectionEntries(collection): + ret+=""""""%i + i+=1 + + if entry.has_key('master'): + ms=entry['master'] + + + try: + if urlparse.urlparse(ms[0])[0]=="http": # url + ret+=""""""%urllib.quote(ms[0]) + else: + ret+=""""""%(ms[0],ms[1]) + splitted=ms[2].split("/") + if (len(splitted)>3): + ret+=""""""%(splitted[0],splitted[3]) + + ret+="""""" + except: #ohne pagelink& + ret+=""""""%ms + if entry.has_key('slave'): + ms=entry['slave'] + try: + if urlparse.urlparse(ms[0])[0]=="http": # url + ret+=""""""%urllib.quote(ms[0]) + else: + ret+=""""""%(ms[0],ms[1]) + splitted=ms[2].split("/") + if (len(splitted)>3): + ret+=""""""%(splitted[0],splitted[3]) + ret+="""""" + except: #ohne pagelink + ret+=""""""%ms + + ret+="" + ret+="""""" + if RESPONSE: + RESPONSE.setHeader("Content-Type","text/xml") + return ret def index_html(self,collection=None): """show create links""" if not collection: @@ -119,7 +183,16 @@ class ECHO_linkCreator(Folder): RESPONSE.setHeader("Expires",(DateTime()-1).rfc822()) RESPONSE.setHeader("Cache-Control", "no-cache") RESPONSE.redirect(fromurl) - + + + def changeEntry(self,collection,nr,slaveUrl,RESPONSE=None): + """change an entry 8only slaveUrl at the moment""" + col=getattr(self, collection,None) + col.changeEntry(nr,slaveUrl) + + if RESPONSE: + RESPONSE.redirect(self.absolute_url()+"?collection="+collection) + def removeEntry(self,collection,nr,RESPONSE=None): """remove an entry""" col=getattr(self, collection,None) @@ -137,8 +210,12 @@ class ECHO_linkCreator(Folder): if RESPONSE: RESPONSE.redirect(self.absolute_url()+"?collection="+collection) - - #self.index_html(collection) + def getUrls(self,collection,RESPONSE=None): + """set the urls for the document viewer""" + col=getattr(self, collection,None) + x=getattr(col,'masterUrl') + y=getattr(col,'slaveUrl') + return x,y def manage_addECHO_linkCreatorForm(self,RESPONSE=None): """Form for adding"""