"""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
import urlparse,urllib
from Globals import package_home
class ECHO_language:
"""language methods"""
def tagLex(self,nr="1",id=None):
"""gerateword tags"""
df=DonatusFile(txt=self.getPage(_pn=nr,_id=id),baseUri=self.baseUri)
return df.convertedXML()
#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"""
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 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"""
#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:
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: 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 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)
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')