--- ECHO_content/ECHO_language.py 2006/09/10 22:57:38 1.5 +++ ECHO_content/ECHO_language.py 2006/10/12 16:37:33 1.9 @@ -1,21 +1,216 @@ """Methoden fuer Language Technologies""" - +from Products.PageTemplates.PageTemplateFile import PageTemplateFile from Products.ECHO_content.analyseAndTag.analyseAndTag import DonatusFile - +from OFS.SimpleItem import SimpleItem +from OFS.Folder import Folder import xml.parsers +import os.path +from Globals import package_home class ECHO_language: """language methods""" - def tagLex(self,nr="1"): + def tagLex(self,nr="1",id=None): """gerateword tags""" - txt=self.getPage(_pn=nr) + - df=DonatusFile(txt=self.getPage(_pn=nr)) + df=DonatusFile(txt=self.getPage(_pn=nr,_id=id),baseUri=self.baseUri) return df.convertedXML() #return DonatusFile(txt=self.getPage(_pn=nr)).convertedXML() - \ No newline at end of file +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""" + self.id=id + self.entries=[] + + + 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 appendEntry(self,fn,id,type,pagelink): + """append an entry""" + #check if last entry is complete + createNew=False + + if len(self.entries)==0: #noch gar kein Eintrag + createNew=True + else: + entry=self.entries[-1] + if entry.get('master',None) and entry.get('slave',None): + createNew=True + if createNew: + + self.entries.append({}) + entry=self.entries[-1] + if type=="master": + entry['master']=(fn,id,pagelink) + elif type=="slave": + entry['slave']=(fn,id,pagelink) + + entries=self.entries[0:] + entries[-1]=entry + self.entries=entries[0:] + +class ECHO_linkCreator(Folder): + """creator for links""" + + meta_type="ECHO_linkCreator" + + + + + def getCollectionEntries(self,collection): + col=getattr(self,collection,None) + if not col: + return [] + + 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: + ret+=""""""%(ms[0],ms[1]) + splitted=ms[2].split("/") + ret+=""""""%(splitted[0],splitted[-1]) + ret+="""""" + except: #ohne pagelink& + ret+=""""""%ms + if entry.has_key('slave'): + ms=entry['slave'] + try: + ret+=""""""%(ms[0],ms[1]) + splitted=ms[2].split("/") + ret+=""""""%(splitted[0],splitted[-1]) + 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: need parameter collection=COLLECTION_NAME" + + + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ECHO_linkCreator_main')).__of__(self) + + col=getattr(self,collection,None) + if not col: + return [] + + masterUrl=getattr(col,'masterUrl','') + slaveUrl=getattr(col,'slaveUrl','') + + return pt(collection=collection,masterUrl=masterUrl,slaveUrl=slaveUrl) + + def addEntry(self,collection,fn,id,type,pagelink,fromurl=None,RESPONSE=None,REQUEST=None): + """add an entry""" + + col=getattr(self, collection,None) + if not col: + self._setObject(collection,Collection(collection)) + col=getattr(self, collection) + + 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 removeEntry(self,collection,nr,RESPONSE=None): + """remove an entry""" + col=getattr(self, collection,None) + col.deleteEntry(nr) + + if RESPONSE: + RESPONSE.redirect(self.absolute_url()+"?collection="+collection) + + def setUrls(self,collection,masterUrl,slaveUrl,RESPONSE=None): + """set the urls for the document viewer""" + col=getattr(self, collection,None) + setattr(col,'masterUrl',masterUrl) + setattr(col,'slaveUrl',slaveUrl) + + if RESPONSE: + RESPONSE.redirect(self.absolute_url()+"?collection="+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""" + manage_addECHO_linkCreator(self,RESPONSE) + +def manage_addECHO_linkCreator(self,RESPONSE=None): + """Add an ECHO_main""" + id='linkCreator' + self._setObject(id,ECHO_linkCreator(id)) + + + if RESPONSE is not None: + RESPONSE.redirect('manage_main') + + + + + + + + + + + + + + \ No newline at end of file