Annotation of ECHO_content/ECHO_language.py, revision 1.9
1.1 dwinter 1: """Methoden fuer Language Technologies"""
1.2 dwinter 2:
1.7 dwinter 3: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
1.4 dwinter 4: from Products.ECHO_content.analyseAndTag.analyseAndTag import DonatusFile
1.7 dwinter 5: from OFS.SimpleItem import SimpleItem
6: from OFS.Folder import Folder
1.4 dwinter 7: import xml.parsers
1.7 dwinter 8: import os.path
9: from Globals import package_home
1.4 dwinter 10:
1.2 dwinter 11: class ECHO_language:
1.3 dwinter 12: """language methods"""
13:
1.4 dwinter 14:
1.7 dwinter 15: def tagLex(self,nr="1",id=None):
1.5 dwinter 16: """gerateword tags"""
1.7 dwinter 17:
1.4 dwinter 18:
1.7 dwinter 19: df=DonatusFile(txt=self.getPage(_pn=nr,_id=id),baseUri=self.baseUri)
1.4 dwinter 20:
1.5 dwinter 21: return df.convertedXML()
1.4 dwinter 22: #return DonatusFile(txt=self.getPage(_pn=nr)).convertedXML()
23:
1.7 dwinter 24: class Collection(SimpleItem):
1.9 ! dwinter 25: def getCollectionXML(self,RESPONSE=None):
! 26:
! 27: """get collection as xml"""
! 28: return self.aq_parent.getCollectionXML(collection=self.getId(),RESPONSE=RESPONSE)
1.7 dwinter 29:
30: def __init__(self,id):
31: """initialise"""
32: self.id=id
33: self.entries=[]
34:
35:
36: def getEntries(self):
37: """get the entries"""
1.8 dwinter 38: entries=self.entries
39: for entry in entries: #backward compatibility, cannot be removed a.s.a.p.
40: print entry
41: if entry.has_key('master') and (len(entry['master'])<3):
42: entry['master']=(entry['master'][0],entry['master'][1],'')
43: if entry.has_key('slave') and (len(entry['slave'])<3):
44: entry['slave']=(entry['slave'][0],entry['slave'][1],'')
45:
1.7 dwinter 46: return self.entries
47:
48: def deleteEntry(self,nr):
49: """delete an entry"""
50: del(self.entries[nr])
51:
52:
1.8 dwinter 53: def appendEntry(self,fn,id,type,pagelink):
1.7 dwinter 54: """append an entry"""
55: #check if last entry is complete
56: createNew=False
1.8 dwinter 57:
1.7 dwinter 58: if len(self.entries)==0: #noch gar kein Eintrag
59: createNew=True
60: else:
61: entry=self.entries[-1]
62: if entry.get('master',None) and entry.get('slave',None):
63: createNew=True
64: if createNew:
65:
66: self.entries.append({})
67: entry=self.entries[-1]
68: if type=="master":
1.8 dwinter 69: entry['master']=(fn,id,pagelink)
1.7 dwinter 70: elif type=="slave":
1.8 dwinter 71: entry['slave']=(fn,id,pagelink)
1.7 dwinter 72:
1.8 dwinter 73: entries=self.entries[0:]
74: entries[-1]=entry
75: self.entries=entries[0:]
1.7 dwinter 76:
77: class ECHO_linkCreator(Folder):
78: """creator for links"""
79:
80: meta_type="ECHO_linkCreator"
81:
82:
83:
84:
85: def getCollectionEntries(self,collection):
86: col=getattr(self,collection,None)
87: if not col:
88: return []
89:
90: return col.getEntries()
91:
1.9 ! dwinter 92:
! 93: def getCollectionXML(self,collection=None,RESPONSE=None):
! 94: """exports the collection as an XML file"""
! 95: if not collection:
! 96: return "<error>no collection: need parameter collection=COLLECTION_NAME</error>"
! 97:
! 98: i=0
! 99: ret=""
! 100: ret+="""<?xml version="1.0" encoding="UTF-8"?>"""
! 101: ret+="""<linklist xmlns="http://www.mpiwg-berlin.mpg.de/namespace">"""
! 102: ret+="""<linklistname>%s</linklistname>"""%collection
! 103: ret+="""<masterurl ref="%s"/>"""%self.getUrls(collection)[0]
! 104: ret+="""<slaveurl ref="%s"/>"""%self.getUrls(collection)[1]
! 105:
! 106: for entry in self.getCollectionEntries(collection):
! 107: ret+="""<link id="%s">"""%i
! 108: i+=1
! 109:
! 110: if entry.has_key('master'):
! 111: ms=entry['master']
! 112: try:
! 113: ret+="""<source filename="%s" refid="%s">"""%(ms[0],ms[1])
! 114: splitted=ms[2].split("/")
! 115: ret+="""<pagelink refid="%s" selectionNodeIndex="%s"/>"""%(splitted[0],splitted[-1])
! 116: ret+="""</source>"""
! 117: except: #ohne pagelink&
! 118: ret+="""<source filename="%s" refid="%s"/>"""%ms
! 119: if entry.has_key('slave'):
! 120: ms=entry['slave']
! 121: try:
! 122: ret+="""<target filename="%s" refid="%s">"""%(ms[0],ms[1])
! 123: splitted=ms[2].split("/")
! 124: ret+="""<pagelink refid="%s" selectionNodeIndex="%s"/>"""%(splitted[0],splitted[-1])
! 125: ret+="""</target>"""
! 126: except: #ohne pagelink
! 127: ret+="""<target filename="%s" refid="%s"/>"""%ms
! 128:
! 129: ret+="</link>"
! 130: ret+="""</linklist>"""
! 131: if RESPONSE:
! 132: RESPONSE.setHeader("Content-Type","text/xml")
! 133: return ret
1.7 dwinter 134: def index_html(self,collection=None):
135: """show create links"""
136: if not collection:
1.8 dwinter 137: return "no collection: need parameter collection=COLLECTION_NAME"
1.7 dwinter 138:
139:
140: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ECHO_linkCreator_main')).__of__(self)
141:
142: col=getattr(self,collection,None)
143: if not col:
144: return []
145:
146: masterUrl=getattr(col,'masterUrl','')
147: slaveUrl=getattr(col,'slaveUrl','')
148:
149: return pt(collection=collection,masterUrl=masterUrl,slaveUrl=slaveUrl)
150:
1.8 dwinter 151: def addEntry(self,collection,fn,id,type,pagelink,fromurl=None,RESPONSE=None,REQUEST=None):
1.7 dwinter 152: """add an entry"""
1.8 dwinter 153:
1.7 dwinter 154: col=getattr(self, collection,None)
155: if not col:
156: self._setObject(collection,Collection(collection))
157: col=getattr(self, collection)
1.8 dwinter 158:
159: col.appendEntry(fn,id,type,pagelink)
1.7 dwinter 160:
161: if fromurl and RESPONSE:
1.8 dwinter 162:
163: RESPONSE.setHeader("Expires",(DateTime()-1).rfc822())
164: RESPONSE.setHeader("Cache-Control", "no-cache")
1.7 dwinter 165: RESPONSE.redirect(fromurl)
1.8 dwinter 166:
1.7 dwinter 167: def removeEntry(self,collection,nr,RESPONSE=None):
168: """remove an entry"""
169: col=getattr(self, collection,None)
170: col.deleteEntry(nr)
171:
172: if RESPONSE:
173: RESPONSE.redirect(self.absolute_url()+"?collection="+collection)
174:
175: def setUrls(self,collection,masterUrl,slaveUrl,RESPONSE=None):
176: """set the urls for the document viewer"""
177: col=getattr(self, collection,None)
178: setattr(col,'masterUrl',masterUrl)
179: setattr(col,'slaveUrl',slaveUrl)
180:
181: if RESPONSE:
182: RESPONSE.redirect(self.absolute_url()+"?collection="+collection)
183:
1.9 ! dwinter 184: def getUrls(self,collection,RESPONSE=None):
! 185: """set the urls for the document viewer"""
! 186: col=getattr(self, collection,None)
! 187: x=getattr(col,'masterUrl')
! 188: y=getattr(col,'slaveUrl')
! 189: return x,y
1.7 dwinter 190:
191: def manage_addECHO_linkCreatorForm(self,RESPONSE=None):
192: """Form for adding"""
193: manage_addECHO_linkCreator(self,RESPONSE)
194:
195: def manage_addECHO_linkCreator(self,RESPONSE=None):
196: """Add an ECHO_main"""
197: id='linkCreator'
198: self._setObject(id,ECHO_linkCreator(id))
199:
200:
201: if RESPONSE is not None:
202: RESPONSE.redirect('manage_main')
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>