Diff for /ECHO_content/ECHO_language.py between versions 1.7 and 1.10

version 1.7, 2006/09/14 14:31:53 version 1.10, 2006/10/18 14:42:33
Line 6  from OFS.SimpleItem import SimpleItem Line 6  from OFS.SimpleItem import SimpleItem
 from OFS.Folder import Folder  from OFS.Folder import Folder
 import xml.parsers  import xml.parsers
 import os.path  import os.path
   import urlparse,urllib
 from Globals import package_home  from Globals import package_home
   
 class ECHO_language:  class ECHO_language:
Line 22  class ECHO_language: Line 23  class ECHO_language:
             #return DonatusFile(txt=self.getPage(_pn=nr)).convertedXML()              #return DonatusFile(txt=self.getPage(_pn=nr)).convertedXML()
                   
 class Collection(SimpleItem):  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):           def __init__(self,id):
              """initialise"""               """initialise"""
Line 31  class Collection(SimpleItem): Line 36  class Collection(SimpleItem):
                     
          def getEntries(self):           def getEntries(self):
              """get the entries"""               """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               return self.entries
                     
          def deleteEntry(self,nr):           def deleteEntry(self,nr):
              """delete an entry"""               """delete an entry"""
              del(self.entries[nr])               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"""               """append an entry"""
              #check if last entry is complete               #check if last entry is complete
              createNew=False               createNew=False
              print "Here",fn,id,type              
              if len(self.entries)==0: #noch gar kein Eintrag               if len(self.entries)==0: #noch gar kein Eintrag
                  createNew=True                   createNew=True
              else:               else:
Line 54  class Collection(SimpleItem): Line 75  class Collection(SimpleItem):
                  self.entries.append({})                   self.entries.append({})
                  entry=self.entries[-1]                   entry=self.entries[-1]
              if type=="master":               if type=="master":
                  entry['master']=(fn,id)                   entry['master']=(fn,id,pagelink)
              elif type=="slave":               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):  class ECHO_linkCreator(Folder):
      """creator for links"""       """creator for links"""
Line 76  class ECHO_linkCreator(Folder): Line 99  class ECHO_linkCreator(Folder):
          return col.getEntries()           return col.getEntries()
             
                     
        def getCollectionXML(self,collection=None,RESPONSE=None):
            """exports the collection as an XML file"""
            if not collection:
                return "<error>no collection: need parameter collection=COLLECTION_NAME</error>"
          
            i=0
            ret=""
            ret+="""<?xml version="1.0" encoding="UTF-8"?>"""
            ret+="""<linklist xmlns="http://www.mpiwg-berlin.mpg.de/namespace">"""
            ret+="""<linklistname>%s</linklistname>"""%collection
            ret+="""<masterurl ref="%s"/>"""%self.getUrls(collection)[0]
            ret+="""<slaveurl ref="%s"/>"""%self.getUrls(collection)[1]
            
            for entry in self.getCollectionEntries(collection):
                ret+="""<link id="%s">"""%i
                i+=1
                
                if entry.has_key('master'):
                    ms=entry['master']
     
                
                    try:
                        if urlparse.urlparse(ms[0])[0]=="http": # url
                            ret+="""<source filename="%s"/>"""%urllib.quote(ms[0])
                        else:
                            ret+="""<source filename="%s" refid="%s">"""%(ms[0],ms[1])
                            splitted=ms[2].split("/")
                            if (len(splitted)>3):
                                ret+="""<pagelink refid="%s" selectionNodeIndex="%s"/>"""%(splitted[0],splitted[3])
    
                            ret+="""</source>"""
                    except: #ohne pagelink&
                        ret+="""<source filename="%s" refid="%s"/>"""%ms
                if entry.has_key('slave'):
                    ms=entry['slave']
                    try:
                       if urlparse.urlparse(ms[0])[0]=="http": # url
                           ret+="""<target filename="%s"/>"""%urllib.quote(ms[0])
                       else:
                           ret+="""<target filename="%s" refid="%s">"""%(ms[0],ms[1])
                           splitted=ms[2].split("/")
                           if (len(splitted)>3):
                               ret+="""<pagelink refid="%s" selectionNodeIndex="%s"/>"""%(splitted[0],splitted[3])
                           ret+="""</target>"""
                    except: #ohne pagelink
                        ret+="""<target filename="%s" refid="%s"/>"""%ms
                     
                ret+="</link>"
            ret+="""</linklist>"""
            if RESPONSE:
                RESPONSE.setHeader("Content-Type","text/xml")
            return ret
      def index_html(self,collection=None):       def index_html(self,collection=None):
          """show create links"""           """show create links"""
          if not collection:           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)           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ECHO_linkCreator_main')).__of__(self)
Line 93  class ECHO_linkCreator(Folder): Line 168  class ECHO_linkCreator(Folder):
                     
          return pt(collection=collection,masterUrl=masterUrl,slaveUrl=slaveUrl)           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"""           """add an entry"""
          print "hello"          
          col=getattr(self, collection,None)           col=getattr(self, collection,None)
          if not col:           if not col:
              self._setObject(collection,Collection(collection))               self._setObject(collection,Collection(collection))
              col=getattr(self, collection)               col=getattr(self, collection)
          print "XXXXX2",col             
          col.appendEntry(fn,id,type)           col.appendEntry(fn,id,type,pagelink)
                     
          if fromurl and RESPONSE:           if fromurl and RESPONSE:
        
                RESPONSE.setHeader("Expires",(DateTime()-1).rfc822())
                RESPONSE.setHeader("Cache-Control", "no-cache")
              RESPONSE.redirect(fromurl)               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):       def removeEntry(self,collection,nr,RESPONSE=None):
          """remove an entry"""           """remove an entry"""
          col=getattr(self, collection,None)           col=getattr(self, collection,None)
Line 122  class ECHO_linkCreator(Folder): Line 210  class ECHO_linkCreator(Folder):
          if RESPONSE:           if RESPONSE:
              RESPONSE.redirect(self.absolute_url()+"?collection="+collection)               RESPONSE.redirect(self.absolute_url()+"?collection="+collection)
                     
                 def getUrls(self,collection,RESPONSE=None):
          #self.index_html(collection)           """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):  def manage_addECHO_linkCreatorForm(self,RESPONSE=None):
     """Form for adding"""      """Form for adding"""

Removed from v.1.7  
changed lines
  Added in v.1.10


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