--- ECHO_content/ECHO_language.py 2006/09/14 14:31:53 1.7
+++ 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"""
@@ -31,18 +36,34 @@ 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):
+ """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):
+ 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 +75,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 +98,63 @@ 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+=""""""
+ 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 +168,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,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)
@@ -122,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"""