Annotation of ECHO_content/ECHO_language.py, revision 1.8

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):
                     25:          
                     26:          def __init__(self,id):
                     27:              """initialise"""
                     28:              self.id=id
                     29:              self.entries=[]
                     30:              
                     31:          
                     32:          def getEntries(self):
                     33:              """get the entries"""
1.8     ! dwinter    34:              entries=self.entries
        !            35:              
        !            36:              for entry in entries: #backward compatibility, cannot be removed a.s.a.p.
        !            37:                  print entry
        !            38:                  if entry.has_key('master') and (len(entry['master'])<3):
        !            39:                      entry['master']=(entry['master'][0],entry['master'][1],'')
        !            40:                  if entry.has_key('slave') and (len(entry['slave'])<3):
        !            41:                      entry['slave']=(entry['slave'][0],entry['slave'][1],'')
        !            42:                  
1.7       dwinter    43:              return self.entries
                     44:          
                     45:          def deleteEntry(self,nr):
                     46:              """delete an entry"""
                     47:              del(self.entries[nr])
                     48:            
                     49:              
1.8     ! dwinter    50:          def appendEntry(self,fn,id,type,pagelink):
1.7       dwinter    51:              """append an entry"""
                     52:              #check if last entry is complete
                     53:              createNew=False
1.8     ! dwinter    54:             
1.7       dwinter    55:              if len(self.entries)==0: #noch gar kein Eintrag
                     56:                  createNew=True
                     57:              else:
                     58:                  entry=self.entries[-1]
                     59:                  if entry.get('master',None) and entry.get('slave',None):
                     60:                      createNew=True
                     61:              if createNew:
                     62: 
                     63:                  self.entries.append({})
                     64:                  entry=self.entries[-1]
                     65:              if type=="master":
1.8     ! dwinter    66:                  entry['master']=(fn,id,pagelink)
1.7       dwinter    67:              elif type=="slave":
1.8     ! dwinter    68:                  entry['slave']=(fn,id,pagelink)
1.7       dwinter    69:              
1.8     ! dwinter    70:              entries=self.entries[0:]
        !            71:              entries[-1]=entry 
        !            72:              self.entries=entries[0:]
1.7       dwinter    73:              
                     74: class ECHO_linkCreator(Folder):
                     75:      """creator for links"""
                     76:      
                     77:      meta_type="ECHO_linkCreator"
                     78:      
                     79: 
                     80:                  
                     81:                      
                     82:      def getCollectionEntries(self,collection):
                     83:          col=getattr(self,collection,None)
                     84:          if not col:
                     85:              return []
                     86:        
                     87:          return col.getEntries()
                     88:      
                     89:          
                     90:      def index_html(self,collection=None):
                     91:          """show create links"""
                     92:          if not collection:
1.8     ! dwinter    93:              return "no collection: need parameter collection=COLLECTION_NAME"
1.7       dwinter    94:          
                     95:               
                     96:          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ECHO_linkCreator_main')).__of__(self)
                     97:          
                     98:          col=getattr(self,collection,None)
                     99:          if not col:
                    100:              return []
                    101:        
                    102:          masterUrl=getattr(col,'masterUrl','')
                    103:          slaveUrl=getattr(col,'slaveUrl','')
                    104:          
                    105:          return pt(collection=collection,masterUrl=masterUrl,slaveUrl=slaveUrl)
                    106:      
1.8     ! dwinter   107:      def addEntry(self,collection,fn,id,type,pagelink,fromurl=None,RESPONSE=None,REQUEST=None):
1.7       dwinter   108:          """add an entry"""
1.8     ! dwinter   109:         
1.7       dwinter   110:          col=getattr(self, collection,None)
                    111:          if not col:
                    112:              self._setObject(collection,Collection(collection))
                    113:              col=getattr(self, collection)
1.8     ! dwinter   114:          
        !           115:          col.appendEntry(fn,id,type,pagelink)
1.7       dwinter   116:          
                    117:          if fromurl and RESPONSE:
1.8     ! dwinter   118:      
        !           119:              RESPONSE.setHeader("Expires",(DateTime()-1).rfc822())
        !           120:              RESPONSE.setHeader("Cache-Control", "no-cache")
1.7       dwinter   121:              RESPONSE.redirect(fromurl)
1.8     ! dwinter   122:     
1.7       dwinter   123:      def removeEntry(self,collection,nr,RESPONSE=None):
                    124:          """remove an entry"""
                    125:          col=getattr(self, collection,None)
                    126:          col.deleteEntry(nr)
                    127:          
                    128:          if RESPONSE:
                    129:              RESPONSE.redirect(self.absolute_url()+"?collection="+collection)
                    130:          
                    131:      def setUrls(self,collection,masterUrl,slaveUrl,RESPONSE=None):
                    132:          """set the urls for the document viewer"""
                    133:          col=getattr(self, collection,None)
                    134:          setattr(col,'masterUrl',masterUrl)
                    135:          setattr(col,'slaveUrl',slaveUrl)
                    136:          
                    137:          if RESPONSE:
                    138:              RESPONSE.redirect(self.absolute_url()+"?collection="+collection)
                    139:          
                    140:          
                    141:          #self.index_html(collection)
                    142:          
                    143: def manage_addECHO_linkCreatorForm(self,RESPONSE=None):
                    144:     """Form for adding"""
                    145:     manage_addECHO_linkCreator(self,RESPONSE)
                    146: 
                    147: def manage_addECHO_linkCreator(self,RESPONSE=None):
                    148:     """Add an ECHO_main"""
                    149:     id='linkCreator'
                    150:     self._setObject(id,ECHO_linkCreator(id))
                    151:     
                    152:   
                    153:     if RESPONSE is not None:
                    154:         RESPONSE.redirect('manage_main')      
                    155:          
                    156:          
                    157:          
                    158:          
                    159:          
                    160:          
                    161:          
                    162:          
                    163:          
                    164:          
                    165:          
                    166:          
                    167:          
                    168:          

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>