Diff for /ECHO_content/VLPExtension.py between versions 1.17 and 1.27

version 1.17, 2004/08/06 11:46:30 version 1.27, 2004/10/05 14:58:56
Line 2  from Products.ECHO_content.ECHO_collecti Line 2  from Products.ECHO_content.ECHO_collecti
 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
   from OFS.Image import File
 try:  try:
     from Products.zogiLib import zogiLib      from Products.zogiLib import zogiLib
 except:  except:
Line 10  except: Line 10  except:
   
 import xml.dom.minidom  import xml.dom.minidom
 import urllib  import urllib
   import xmlrpclib
   import vlp_xmlhelpers
   from types import *
   
   
   
   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):  def makeXML(str):
         
         try:          try:
             dom=xml.dom.minidom.parseString(str)              dom=xml.dom.minidom.parseString(str)
             return str              return str
         except:          except:
             return """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><page>              str=str.replace("& ","&amp; ")
               return """<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><page>
                       %s                        %s
                   </page>"""%str                    </page>"""%str
                   
                    
           
 def getText(nodelist):  def getText(nodelist):
   
     rc = ""      rc = ""
Line 73  class VLP_essay(Folder): Line 93  class VLP_essay(Folder):
         self.title=title          self.title=title
         self.label=label          self.label=label
   
   
     def index_html(self):      def index_html(self):
           
         """show the rendered file"""          """show the rendered file"""
                   
         if self.REQUEST.get('p',None):          if hasattr(self,'essayTemplate.html'):
             self.REQUEST.set('pn',self.file2page(self.REQUEST.get('p',None)))              return getattr(self,'essayTemplate.html')()
   
         if hasattr(self,'libraryTemplate.html'):  
             return getattr(self,'EssayTemplate.html')()  
   
         pt=PageTemplateFile('Products/ECHO_content/vlp/essay_template.zpt').__of__(self)          pt=PageTemplateFile('Products/ECHO_content/vlp/essay_template.zpt').__of__(self)
         pt.content_type="text/html"          pt.content_type="text/html"
Line 119  class VLP_essay(Folder): Line 135  class VLP_essay(Folder):
         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 self.xml2html(makeXML(str(pages[int(pagenum)-1][1])),quote="no")          
           #return makeXML(str(pages[int(pagenum)-1][1]))
           #txt=pages[int(pagenum)-1][1].data.decode('utf-8')
           txt=pages[int(pagenum)-1][1].data
           #print txt.encode('utf-8')
           
           return self.xml2html(makeXML(txt),quote="no")
         else:          else:
             return str(self.xml2html(makeXML(pages[int(pagenum)-1][1]()),quote="no"))          
           
   
           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','File'])) # teste ob performance ok, sonst in variable          pages=len(self.ZopeFind(self,obj_metatypes=['DTML Document','File'])) # teste ob performance ok, sonst in variable
Line 135  class VLP_essay(Folder): Line 160  class VLP_essay(Folder):
             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 151  def manage_addVLP_essay(self, id,title,l Line 188  def manage_addVLP_essay(self, id,title,l
         RESPONSE.redirect('manage_main')          RESPONSE.redirect('manage_main')
           
   
   class VLP_encyclopaedia(VLP_essay):
       """essay"""
   
       meta_type="VLP_encyclopaedia"
       
       manage_options = VLP_essay.manage_options+(
           {'label':'Load File','action':'loadNewFileForm'},
           )
   
       
       def loadNewFileForm(self):
           """Neues XML-File einlesen"""
           pt=PageTemplateFile('Products/ECHO_content/vlp/VLP_newfile.zpt').__of__(self)
           return pt()
   
       def loadNewFile(self,RESPONSE=None):
           """einlesen des neuen files"""
           fileupload=self.REQUEST['fileupload']
           if fileupload:
               file_name=fileupload.filename
               filedata=fileupload.read()
   
               argv=vlp_xmlhelpers.proj2hash(self,filedata)
               textsStr=string.join(argv['text']).encode('utf-8')
               
               texts=textsStr.split("<pb/>")
               
               i=0
               for text in texts:
                   i+=1
                   pageName='page%03d.xml'%i
                   pages=self.ZopeFind(self,obj_ids=[pageName])
                   if pages:
                       pages[0][1].update_data(text)
   
                   else:
                       zt=File(pageName,pageName,text,content_type="text/plain")
                       self._setObject(pageName,zt)
                   
           if RESPONSE is not None:
               RESPONSE.redirect('manage_main')
               
       
   def manage_addVLP_encycForm(self):
       """Form for adding"""
       pt=PageTemplateFile('Products/ECHO_content/vlp/AddVLP_encyc.zpt').__of__(self)
       return pt()
   
   def manage_addVLP_encyc(self, id,title,label,RESPONSE=None):
       """add the copyright"""
   
       
       self._setObject(id, VLP_encyclopaedia(id, title,label))
   
       if RESPONSE is not None:
           RESPONSE.redirect('manage_main')
       
   
 class VLP_collection(ECHO_collection):  class VLP_collection(ECHO_collection):
     """VLP spezifische Erweiterung der Collection"""      """VLP spezifische Erweiterung der Collection"""
Line 203  class VLP_collection(ECHO_collection): Line 297  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 242  class VLP_resource(ECHO_resource): Line 352  class VLP_resource(ECHO_resource):
     {'label':'Generate Library Template','action':'generateLibraryTemplateHTML'},      {'label':'Generate Library Template','action':'generateLibraryTemplateHTML'},
         )          )
   
       
       def transcription(self):
           """show the rendered transcriptiofile"""
           
           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>"""
           
           if founds:
               
               for found in founds:
                   text=found.transcript
                   if not text: text=""
                   ret+="<page><pb/>"+text+"</page>"
   
               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"""
         if all=="yes":          if all=="yes":
Line 296  class VLP_resource(ECHO_resource): Line 451  class VLP_resource(ECHO_resource):
   
     def file2page(self,p):      def file2page(self,p):
         """converts filename to pagenumber"""          """converts filename to pagenumber"""
         dom=xml.dom.minidom.parse(urllib.urlopen(getattr(self,'index.xml').absolute_url()))          dom=xml.dom.minidom.parse(ECHO_helpers.urlopen(getattr(self,'index.xml').absolute_url()))
                   
         for page in dom.getElementsByTagName('page'):          for page in dom.getElementsByTagName('page'):
             if page.getAttribute('file')==p:           # 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 page.getAttribute('nr')
                           
         return 0          return 0
Line 327  class VLP_resource(ECHO_resource): Line 483  class VLP_resource(ECHO_resource):
           
     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 342  class VLP_resource(ECHO_resource): Line 498  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 357  class VLP_resource(ECHO_resource): Line 513  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 372  class VLP_resource(ECHO_resource): Line 528  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 388  class VLP_resource(ECHO_resource): Line 544  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"""
          try:
           pn=int(self.REQUEST.get('pn','1'))
          except:
           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.17  
changed lines
  Added in v.1.27


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