--- ECHO_content/ECHO_language.py 2006/09/14 14:31:53 1.7 +++ ECHO_content/ECHO_language.py 2007/01/09 17:01:01 1.11 @@ -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""" @@ -31,18 +36,35 @@ 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): + entry['master']=(entry['master'][0],entry['master'][1],'') + if entry.has_key('slave') and (len(entry['slave'])<3): + entry['slave']=(entry['slave'][0],entry['slave'][1],'') + return self.entries def deleteEntry(self,nr): """delete an entry""" del(self.entries[nr]) + def changeEntry(self,nr,slaveUrl,masterID): + """change an entry, only slaveUrl""" + tmp=self.entries[nr] + tm=tmp['master'] + tmp['slave']=(slaveUrl,"","") + tmp['master']=(tm[0],tm[1],masterID) + entries=self.entries[0:] + entries[nr]=tmp + self.entries=entries[0:] - def appendEntry(self,fn,id,type): + def appendEntry(self,fn,id,type,pagelink): """append an entry""" #check if last entry is complete createNew=False - print "Here",fn,id,type + if len(self.entries)==0: #noch gar kein Eintrag createNew=True else: @@ -54,11 +76,13 @@ class Collection(SimpleItem): self.entries.append({}) entry=self.entries[-1] if type=="master": - entry['master']=(fn,id) + entry['master']=(fn,id,pagelink) elif type=="slave": - entry['slave']=(fn,id) + entry['slave']=(fn,id,pagelink) - self.entries[-1]=entry + entries=self.entries[0:] + entries[-1]=entry + self.entries=entries[0:] class ECHO_linkCreator(Folder): """creator for links""" @@ -75,11 +99,72 @@ class ECHO_linkCreator(Folder): return col.getEntries() - + def getAllRefIDs(self,collection): + """return all refids""" + ret=[] + entries=self.getCollectionEntries(collection) + + for entry in entries: + ret.append('_pagelink='+entry['master'][2]) + return "&".join(ret) + + + 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: - return "no collection" + return "no collection: need parameter collection=COLLECTION_NAME" pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ECHO_linkCreator_main')).__of__(self) @@ -93,18 +178,31 @@ class ECHO_linkCreator(Folder): return pt(collection=collection,masterUrl=masterUrl,slaveUrl=slaveUrl) - def addEntry(self,collection,fn,id,type,fromurl=None,RESPONSE=None): + def addEntry(self,collection,fn,id,type,pagelink,fromurl=None,RESPONSE=None,REQUEST=None): """add an entry""" - print "hello" + col=getattr(self, collection,None) if not col: self._setObject(collection,Collection(collection)) col=getattr(self, collection) - print "XXXXX2",col - col.appendEntry(fn,id,type) + + col.appendEntry(fn,id,type,pagelink) if fromurl and RESPONSE: + + RESPONSE.setHeader("Expires",(DateTime()-1).rfc822()) + RESPONSE.setHeader("Cache-Control", "no-cache") RESPONSE.redirect(fromurl) + + + def changeEntry(self,collection,nr,slaveUrl,masterID,RESPONSE=None): + """change an entry 8only slaveUrl at the moment""" + col=getattr(self, collection,None) + col.changeEntry(nr,slaveUrl,masterID) + + if RESPONSE: + RESPONSE.redirect(self.absolute_url()+"?collection="+collection) + def removeEntry(self,collection,nr,RESPONSE=None): """remove an entry""" col=getattr(self, collection,None) @@ -122,8 +220,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"""