Diff for /ECHO_content/VLPExtension.py between versions 1.6 and 1.24

version 1.6, 2004/06/08 15:25:11 version 1.24, 2004/09/01 14:32:32
Line 1 Line 1
 from ECHO_collection import *  from Products.ECHO_content.ECHO_collection import *
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile  from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 from Products.PageTemplates.PageTemplate import PageTemplate  from Products.PageTemplates.PageTemplate import PageTemplate
 from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate  from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
   
   try:
 from Products.zogiLib import zogiLib  from Products.zogiLib import zogiLib
   except:
       print "Zogilib not installed, VLP_resource will not work"
   
   import xml.dom.minidom
   import urllib
   import xmlrpclib
   
   
   
   
   def lemmatize(str):
       """takes a str and addes links the dictionary service"""
       server = xmlrpclib.ServerProxy("http://archimedes.fas.harvard.edu/cgi-bin/donatus-rpc")
       if server:
           splitted=str.split(" ")
           wordlist=["<w>%s</w>"%split for split in splitted].join()
       return wordlist
   
           
   
           
   def makeXML(str):
           try:
               dom=xml.dom.minidom.parseString(str)
               return str
           except:
               
               return """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><page>
                         %s
                     </page>"""%str
           
   
 def getText(nodelist):  def getText(nodelist):
   
Line 18  class VLP_essay(Folder): Line 50  class VLP_essay(Folder):
   
     meta_type="VLP_essay"      meta_type="VLP_essay"
   
       manage_options = Folder.manage_options+(
           {'label':'Main Config','action':'ConfigVLP_essayForm'},
           {'label':'Generate Essay Template','action':'generateEssayTemplateHTML'},
                   )
   
       def content_html(self,type='collection'):
           """template fuer content"""
           #templates = self.ZopeFind(self.aq_parent,obj_ids=[type+"_template"])
           #
           #if templates:
           #    return templates[0][1]()
       
           if hasattr(self,type+"_template"):
               obj=getattr(self,type+"_template")
               return obj()
           else:
               pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_%s_template_standard.zpt'%type).__of__(self)
               pt.content_type="text/html"
               return pt()
   
       def ConfigVLP_essayForm(self):
           """Form for adding"""
           pt=PageTemplateFile('Products/ECHO_content/vlp/ChangeVLP_essay.zpt').__of__(self)
           return pt()
   
       def ChangeVLP_essay(self,title,label,description,RESPONSE=None):
           """Change vlp_essay"""
           self.title=title
           self.label=label
           self.description=description
   
           if RESPONSE is not None:
               RESPONSE.redirect('manage_main')
   
     def __init__(self,id,title,label):      def __init__(self,id,title,label):
         """init"""          """init"""
         self.id=id          self.id=id
         self.title=title          self.title=title
         self.label=label          self.label=label
   
       def index_html(self):
       
           """show the rendered file"""
           
           if hasattr(self,'essayTemplate.html'):
               return getattr(self,'essayTemplate.html')()
   
           pt=PageTemplateFile('Products/ECHO_content/vlp/essay_template.zpt').__of__(self)
           pt.content_type="text/html"
           return pt()
   
       def generateEssayTemplateHTML(self,RESPONSE=None):
           """lege standard index.html an"""
   
       if not hasattr(self,'essayTemplate.html'):
               zt=ZopePageTemplate('essayTemplate.html')
               self._setObject('essayTemplate.html',zt)
               default_content_fn = os.path.join(package_home(globals()),
                                                  'vlp/essay_template.zpt')
               text = open(default_content_fn).read()
               zt.pt_edit(text, 'text/html')
   
           else:
               return "already exists!"
           
           if RESPONSE is not None:
               RESPONSE.redirect('manage_main')
   
   
     def getPage(self,pagenum):      def getPage(self,pagenum):
         """gibt essay page mit num aus"""          """gibt essay page mit num aus"""
         def sortFind(x,y):          def sortFind(x,y):
             return cmp(x[0],y[0])              return cmp(x[0],y[0])
                       pages=[]
         pages=self.ZopeFind(self,obj_metatypes=['DTML Document','File'])          pagestmp=self.ZopeFind(self,obj_metatypes=['DTML Document','File'])
       for page in pagestmp:
           if not (page[1].getId()[0]=="."):
               pages.append(page)
                   
         pages.sort(sortFind)          pages.sort(sortFind)
         #print str(pages[int(pagenum)][1]())          #print str(pages[int(pagenum)][1]())
         if pages[int(pagenum)-1][1].meta_type=='File':          if pages[int(pagenum)-1][1].meta_type=='File':
             return str(pages[int(pagenum)-1][1])          #return makeXML(str(pages[int(pagenum)-1][1]))
           print "A"
           return self.xml2html(makeXML(str(pages[int(pagenum)-1][1])),quote="no")
         else:          else:
             return str(pages[int(pagenum)-1][1]())          print "B"
           #return makeXML(str(pages[int(pagenum)-1][1]))
           return self.xml2html(makeXML(pages[int(pagenum)-1][1]()),quote="no")
                   
     def nextPage(self,pagenum,url):      def nextPage(self,pagenum,url):
         pages=len(self.ZopeFind(self,obj_metatypes=['DTML Document'])) # teste ob performance ok, sonst in variable          pages=len(self.ZopeFind(self,obj_metatypes=['DTML Document','File'])) # teste ob performance ok, sonst in variable
         if int(pagenum)+1 <= pages:          if int(pagenum)+1 <= pages:
             retstr=url+"?p="+str(int(pagenum)+1)              retstr=url+"?p="+str(int(pagenum)+1)
             return """<td align="right" <a href="%s">next</a></td>"""%retstr              return """<td align="right" <a href="%s">next</a></td>"""%retstr
                   
     def previousPage(self,pagenum,url):      def previousPage(self,pagenum,url):
         pages=len(self.ZopeFind(self,obj_metatypes=['DTML Document'])) # teste ob performance ok, sonst in variable          
         if int(pagenum)-1 > 0:          if int(pagenum)-1 > 0:
             retstr=url+"?p="+str(int(pagenum)-1)              retstr=url+"?p="+str(int(pagenum)-1)
             return """<td align="left" <a href="%s">previous</a></td>"""%retstr              return """<td align="left" <a href="%s">previous</a></td>"""%retstr
                   
       def nextURL(self,pagenum,url):
           pages=len(self.ZopeFind(self,obj_metatypes=['DTML Document','File'])) # teste ob performance ok, sonst in variable
           if int(pagenum)+1 <= pages:
               retstr=url+"?p="+str(int(pagenum)+1)
               return retstr
           
       def previousURL(self,pagenum,url):
           
           if int(pagenum)-1 > 0:
               retstr=url+"?p="+str(int(pagenum)-1)
               return retstr
           
                   
 def manage_addVLP_essayForm(self):  def manage_addVLP_essayForm(self):
     """Form for adding"""      """Form for adding"""
Line 118  class VLP_collection(ECHO_collection): Line 232  class VLP_collection(ECHO_collection):
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
   
       def copyFullTextsFromDB(self,RESPONSE=None):
           """copy fulltext aus DB"""
   
           ress=self.ZopeFind(self,obj_metatypes=['VLP_resource'])
           ret=""
           for res in ress:
               tmp=res[1].copyTranscriptionFromDB()
               ret+=tmp
   
               if RESPONSE:
                   RESPONSE.write(tmp+"\n")
           if not RESPONSE:            
               return ret
           else:
               RESPONSE.write("END\n")
               
   
 def manage_addVLP_collectionForm(self):  def manage_addVLP_collectionForm(self):
         """Form for adding a ressource"""          """Form for adding a ressource"""
Line 154  class VLP_resource(ECHO_resource): Line 284  class VLP_resource(ECHO_resource):
         {'label':'Update Index','action':'createIndexFile'},          {'label':'Update Index','action':'createIndexFile'},
         {'label':'Reset MetaLink','action':'resetMetaLink'},          {'label':'Reset MetaLink','action':'resetMetaLink'},
         {'label':'Generate Title','action':'generate_title'},          {'label':'Generate Title','action':'generate_title'},
       {'label':'Generate Library Template','action':'generateLibraryTemplateHTML'},
         )          )
   
   
     def printDict(self):      def transcription(self):
         """dict"""          """show the rendered transcriptiofile"""
         return self.__dict__          
           if hasattr(self,'libraryTranscriptionTemplate.html'):
               return getattr(self,'libraryTranscriptionTemplate.html')()
   
           pt=PageTemplateFile('Products/ECHO_content/vlp/library_transcriptionTemplate.zpt').__of__(self)
           pt.content_type="text/html"
           return pt()
   
   
   
       def copyTranscriptionFromDB(self):
           """checks if transcription exits in DB"""
           founds=self.search(var='select * from vl_transcript where source=\''+self.resourceID+'\' order by id')
   
           
           ret="""<?xml version="1.0" encoding="utf-8"?>
                  <text>"""
           
     ## def __init__(self,id,link,metalink,resourceID,title,label,description,contentType,renderingType,responsible,credits,weight,coords):          if founds:
 ##         """angepasstes init"""  
                   
               for found in founds:
                   text=found.transcript
                   if not text: text=""
                   ret+="<page><pb/>"+text+"</page>"
                           
 ##         return ECHO_resource(id,link,metalink,resourceID,title,label,description,contentType,renderingType,responsible,credits,weight,coords)              ret+="</text>"
               re2=ret[0:]
               re3=re2.decode('latin-1')
   
               ft=self.ZopeFind(self,obj_metatypes=['ECHO_fullText'])
               
               if ft:
               
                   ft[0][1].pt_edit(re3.encode('utf-8','ignore'),'text/xml')
               
               else:
                   self._setObject('fulltext',ECHO_fullText(id,re3))
               
               return "FT: %s"%self.getId()
           else:
               return "no: %s"%self.getId()
                   
     def resetMetaLink(self,all="no",RESPONSE=None):      def resetMetaLink(self,all="no",RESPONSE=None):
         """resets metalink to standard resp. in case of server change it sets to the new server url"""          """resets metalink to standard resp. in case of server change it sets to the new server url"""
Line 182  class VLP_resource(ECHO_resource): Line 346  class VLP_resource(ECHO_resource):
                           
     def show(self):      def show(self):
         """show the rendered file"""          """show the rendered file"""
   
           if self.REQUEST.get('p',None):
               self.REQUEST.set('pn',self.file2page(self.REQUEST.get('p',None)))
              
       if hasattr(self,'libraryTemplate.html'):
           return getattr(self,'libraryTemplate.html')()
       
         pt=PageTemplateFile('Products/ECHO_content/vlp/library_template.zpt').__of__(self)          pt=PageTemplateFile('Products/ECHO_content/vlp/library_template.zpt').__of__(self)
         pt.content_type="text/html"          pt.content_type="text/html"
         return pt()          return pt()
           
     index_html=show      index_html=show
           
       def generateLibraryTemplateHTML(self,RESPONSE=None):
           """lege standard index.html an"""
   
       if not hasattr(self,'libraryTemplate.html'):
               zt=ZopePageTemplate('libraryTemplate.html')
               self._setObject('libraryTemplate.html',zt)
               default_content_fn = os.path.join(package_home(globals()),
                                                  'vlp/library_template.zpt')
               text = open(default_content_fn).read()
               zt.pt_edit(text, 'text/html')
   
           else:
               return "already exists!"
           
           if RESPONSE is not None:
               RESPONSE.redirect('manage_main')
   
   
     def index_meta(self):      def index_meta(self):
         """index_meta"""          """index_meta"""
           
         pt=PageTemplateFile('Products/ECHO_content/vlp/index_meta.zpt').__of__(self)          pt=PageTemplateFile('Products/ECHO_content/vlp/index_meta.zpt').__of__(self)
         pt.content_type="text/html"          pt.content_type="text/html"
         return pt()          return pt()
           
       def file2page(self,p):
           """converts filename to pagenumber"""
           dom=xml.dom.minidom.parse(ECHO_helpers.urlopen(getattr(self,'index.xml').absolute_url()))
           
           for page in dom.getElementsByTagName('page'):
            # pageummer mit lo oder hi sind aequivalent
            if (page.getAttribute('file')==p) or ("%slo"%page.getAttribute('file')==p) or ("%shi"%page.getAttribute('file')==p):
                return page.getAttribute('nr')
               
           return 0
   
     def dir2index(self):      def dir2index(self):
         """dir to index"""          """dir to index"""
Line 212  class VLP_resource(ECHO_resource): Line 412  class VLP_resource(ECHO_resource):
         for x in ret:          for x in ret:
             if not (x[0]=="."):              if not (x[0]=="."):
                                   
                 temp.append(calculateName(x))                  temp.append((calculateName(x),os.path.splitext(x)[0]))
         return temp          return temp
   
       
     def firstPage(self,url=None):      def firstPage(self,url=None):
         """showlink to the first image"""          """showlink to the first image"""
         if self.REQUEST.get('pn')=="1": #erste seinte dann kein a tag          if self.REQUEST.get('pn','1')=="1": #erste seinte dann kein a tag
             return """<img src="../../images/first.gif" alt="first" width="14" height="14" border="0"><br>first"""              return """<img src="../../images/first.gif" alt="first" width="14" height="14" border="0"><br>first"""
   
         else:          else:
Line 232  class VLP_resource(ECHO_resource): Line 433  class VLP_resource(ECHO_resource):
         if pages:          if pages:
             ln=len(pages)              ln=len(pages)
                   
         if self.REQUEST.get('pn')==str(ln): #letzte seite dann kein a tag          if (self.REQUEST.get('pn')==str(ln)) or (ln==1): #letzte seite dann kein a tag oder nur eine Seite
             return """<img src="../../images/last.gif" alt="last" width="14" height="14" border="0"><br>last"""              return """<img src="../../images/last.gif" alt="last" width="14" height="14" border="0"><br>last"""
   
         else:          else:
Line 247  class VLP_resource(ECHO_resource): Line 448  class VLP_resource(ECHO_resource):
   
         nn = int(self.REQUEST.get('pn','1'))-1          nn = int(self.REQUEST.get('pn','1'))-1
         if nn < 1: #letzte  seite dann kein a tag          if nn < 1: #letzte  seite dann kein a tag
             return """<img src="../../images/prev.gif" alt="prev" width="14" height="14" border="0"><br>prev"""              return """<img src="../../images/lisePrev.gif" alt="prev" width="14" height="14" border="0"><br>prev"""
   
         else:          else:
             return """<a href=%s>              return """<a href=%s>
                          <img src="../../images/prev.gif" alt="prev" width="14" height="14" border="0"><br>prev                           <img src="../../images/lisePrev.gif" alt="prev" width="14" height="14" border="0"><br>prev
                          </a>                           </a>
                          """%(self.REQUEST['URL']+"?pn="+str(nn))                           """%(self.REQUEST['URL']+"?pn="+str(nn))
   
Line 262  class VLP_resource(ECHO_resource): Line 463  class VLP_resource(ECHO_resource):
             ln=len(pages)              ln=len(pages)
   
         nn = int(self.REQUEST.get('pn','1'))+1          nn = int(self.REQUEST.get('pn','1'))+1
         if nn>int(ln): #letzte  seite dann kein a tag          if (nn>int(ln)) or (ln==1): #letzte  seite dann kein a tag
             return """<img src="../../images/next.gif" alt="next" width="14" height="14" border="0"><br>next"""              return """<img src="../../images/liseNext.gif" alt="next" width="14" height="14" border="0"><br>next"""
   
         else:          else:
             return """<a href=%s>              return """<a href=%s>
                          <img src="../../images/next.gif" alt="next" width="14" height="14" border="0"><br>next                           <img src="../../images/liseNext.gif" alt="next" width="14" height="14" border="0"><br>next
                          </a>                           </a>
                          """%(self.REQUEST['URL']+"?pn="+str(nn))                           """%(self.REQUEST['URL']+"?pn="+str(nn))
                   
Line 278  class VLP_resource(ECHO_resource): Line 479  class VLP_resource(ECHO_resource):
         if not url:          if not url:
             url=self.absolute_url()+"/index.xml"              url=self.absolute_url()+"/index.xml"
   
         fh=urllib.urlopen(url)          fh=ECHO_helpers.urlopen(url)
         dom=xml.dom.minidom.parse(fh)          dom=xml.dom.minidom.parse(fh)
                   
                   
         for page in dom.getElementsByTagName('page'):          for page in dom.getElementsByTagName('page'):
             text=getText(page.childNodes)              text=getText(page.childNodes)
             pageNum=page.getAttribute('nr')              pageNum=page.getAttribute('nr')
             pagelist.append((pageNum,text))          fileName=page.getAttribute('file')
               pagelist.append((pageNum,text,fileName))
   
         return pagelist          return pagelist
           
       def getFileName(self):
          """getNameOfCurrentFile"""
          pn=int(self.REQUEST.get('pn','1'))
          pageinfo=self.readIndexFile()[pn-1]
          return pageinfo[2]
      
     def createIndexFile(self,RESPONSE=None):      def createIndexFile(self,RESPONSE=None):
         """create index file"""          """create index file"""
   

Removed from v.1.6  
changed lines
  Added in v.1.24


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