Diff for /ECHO_content/VLPExtension.py between versions 1.20 and 1.47

version 1.20, 2004/08/17 15:22:14 version 1.47, 2005/09/12 16:42:10
Line 1 Line 1
   """
   This module contains extensions which where originally made for the VLP.
   """
   from OFS.Cache import Cacheable
 from Products.ECHO_content.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
   from OFS.Image import File
 try:  try:
     from Products.zogiLib import zogiLib      from Products.zogiLib import zogiLib
 except:  except:
Line 11  except: Line 15  except:
 import xml.dom.minidom  import xml.dom.minidom
 import urllib  import urllib
 import xmlrpclib  import xmlrpclib
   import vlp_xmlhelpers
   import sys
   from types import *
   from Globals import package_home
   
   
   
Line 27  def lemmatize(str): Line 34  def lemmatize(str):
   
                   
 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:
                           str=str.replace("& ","& ")
             return """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><page>              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 45  def getText(nodelist): Line 54  def getText(nodelist):
            rc = rc + node.data             rc = rc + node.data
     return rc      return rc
   
   class sendMailForm(ZopePageTemplate):
       """sendMailForm"""
       meta_type="sendMailForm"
   
       _default_content_fn = os.path.join(package_home(globals()), 'vlp','sendMail_template.zpt')
   
       manage_options = ZopePageTemplate.manage_options+(
           {'label':'Main Config','action':'main_configForm'},
           )
   
       main_configForm = PageTemplateFile(
       'vlp/changeSendMailForm', globals())
   
       def main_config(self, toAddrs,mailServer, subjectAdd=None, RESPONSE=None):
           """main_config"""
           self.toAddrs=toAddrs.split("\n")
           self.mailServer=mailServer
           self.subjectAdd=subjectAdd
           if RESPONSE:
               RESPONSE.redirect('manage_main')
   
       def sendForm(self,fromaddr,subject,content,nextPage="index_html",RESPONSE=None):
           """sendform"""
           fromaddr=fromaddr.strip("\r\n\t") # sicherstellen dass keine zusaetzlichen headerzeilen eingefuegt werden
           subject=subject.strip("\r\n\t") # sicherstellen dass keine zusaetzlichen headerzeilen eingefuegt werden
           toaddrs=self.toAddrs
   
           subject="%s %s"%(self.subjectAdd,subject)
           
           msg = ("From: %s\r\nSubject: %s\r\nTo: %s\r\n\r\n"
                  % (fromaddr, subject, ", ".join(toaddrs)))
           server = smtplib.SMTP(self.mailServer)
               #server.set_debuglevel(1)
           msg=msg+content
           server.sendmail(fromaddr, toaddrs, msg)
           server.quit()
   
           if RESPONSE:
               RESPONSE.redirect(nextPage)
   
   manage_addSendMailFormForm = PageTemplateFile(
       'vlp/addSendMailForm', globals(), __name__='manage_addSendMailFormFrom')
   
   from urllib import quote
   
   def manage_addSendMailForm(self, id, toAddrs,mailServer, title=None, text=None, subjectAdd=None,
                              REQUEST=None, submit=None):
       "Add a Page Template with optional file content."
       toAddrsList=toAddrs.split("\n")
       id = str(id)
       if REQUEST is None:
           self._setObject(id, sendMailForm(id, text))
           ob = getattr(self, id)
           if title:
               ob.pt_setTitle(title)
       setattr(ob,'toAddrs',toAddrsList)
       setattr(ob,'mailServer',mailServer)
       setattr(ob,'subjectAdd',subjectAdd)
           return ob
       else:
           file = REQUEST.form.get('file')
           headers = getattr(file, 'headers', None)
           if headers is None or not file.filename:
               zpt = sendMailForm(id)
           else:
               zpt = sendMailForm(id, file, headers.get('content_type'))
   
           self._setObject(id, zpt)
   
           try:
               u = self.DestinationURL()
           except AttributeError:
               u = REQUEST['URL1']
   
           if submit == " Add and Edit ":
               u = "%s/%s" % (u, quote(id))
           
       ob = getattr(self, id)
           if title:
               ob.pt_setTitle(title)
           
       setattr(ob,'toAddrs',toAddrsList)
       setattr(ob,'mailServer',mailServer)
       setattr(ob,'subjectAdd',subjectAdd)
           REQUEST.RESPONSE.redirect(u+'/manage_main')
       return ''
   
       
 class VLP_essay(Folder):  class VLP_essay(Folder):
     """classe für VLP essays"""      """classe für VLP essays"""
   
Line 66  class VLP_essay(Folder): Line 163  class VLP_essay(Folder):
             obj=getattr(self,type+"_template")              obj=getattr(self,type+"_template")
             return obj()              return obj()
         else:          else:
             pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_%s_template_standard.zpt'%type).__of__(self)              pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ECHO_%s_template_standard.zpt'%type)).__of__(self)
             pt.content_type="text/html"              pt.content_type="text/html"
             return pt()              return pt()
   
     def ConfigVLP_essayForm(self):      def ConfigVLP_essayForm(self):
         """Form for adding"""          """Form for adding"""
         pt=PageTemplateFile('Products/ECHO_content/vlp/ChangeVLP_essay.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'vlp','ChangeVLP_essay.zpt')).__of__(self)
         return pt()          return pt()
   
     def ChangeVLP_essay(self,title,label,description,RESPONSE=None):      def ChangeVLP_essay(self,title,label,description,RESPONSE=None):
Line 97  class VLP_essay(Folder): Line 194  class VLP_essay(Folder):
         if hasattr(self,'essayTemplate.html'):          if hasattr(self,'essayTemplate.html'):
             return getattr(self,'essayTemplate.html')()              return getattr(self,'essayTemplate.html')()
   
         pt=PageTemplateFile('Products/ECHO_content/vlp/essay_template.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'vlp','essay_template.zpt')).__of__(self)
         pt.content_type="text/html"          pt.content_type="text/html"
         return pt()          return pt()
   
Line 132  class VLP_essay(Folder): Line 229  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 makeXML(str(pages[int(pagenum)-1][1]))          #return makeXML(str(pages[int(pagenum)-1][1]))
         print "A"          #txt=pages[int(pagenum)-1][1].data.decode('utf-8')
         return self.xml2html(makeXML(str(pages[int(pagenum)-1][1])),quote="no")          txt=pages[int(pagenum)-1][1].data
           #print txt.encode('utf-8')
           
           return self.xml2html(makeXML(txt),quote="no")
         else:          else:
         print "B"          
         #return makeXML(str(pages[int(pagenum)-1][1]))          
   
         return 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):
Line 167  class VLP_essay(Folder): Line 269  class VLP_essay(Folder):
                   
 def manage_addVLP_essayForm(self):  def manage_addVLP_essayForm(self):
     """Form for adding"""      """Form for adding"""
     pt=PageTemplateFile('Products/ECHO_content/vlp/AddVLP_essay.zpt').__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()),'vlp','AddVLP_essay.zpt')).__of__(self)
     return pt()      return pt()
   
 def manage_addVLP_essay(self, id,title,label,RESPONSE=None):  def manage_addVLP_essay(self, id,title,label,RESPONSE=None):
Line 180  def manage_addVLP_essay(self, id,title,l Line 282  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(os.path.join(package_home(globals()),'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(os.path.join(package_home(globals()),'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_subcollection(ECHO_collection):
       """ subcollection of elements"""
   
       meta_type="VLP_subcollection"
       
       def checkForFrontMatter(self,item):
           """Teste ob Frontmatter exists"""
           if not item==self.getId():
               return False
           
           if self.ZopeFind(self,obj_ids=[self.getId()]):
               return True
           else:
               return False
           
       def generateSubCollectionFromDB(self):
           """erzeuge subcollection"""
           for item in self.ZSQLSimpleSearch("select * from vl_literature where volumeid like '%s'"%self.id):
               manage_addECHO_link(self,item.reference,item.titlerefdisplay,item.titlerefdisplay)
   
   
       def index_html(self):
           """erzeuge darstellung"""
           
           if hasattr(self,'subCollection_template.html'):
               return getattr(self,'subCollection_template.html')()
   
           pt=zptFile(self, 'vlp/subCollection_template.zpt')
           return pt()
   
   
   def manage_addVLP_subCollection(self,id,title,label,RESPONSE=None):
   
       self._setObject(id,VLP_subcollection(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"""
   
       
     meta_type="VLP_collection"      meta_type="VLP_collection"
     manage_options=ECHO_collection.manage_options+(      manage_options=ECHO_collection.manage_options+(
         {'label':'Change Path','action':'VLP_path_configForm'},          {'label':'Change Path','action':'VLP_path_configForm'},
Line 191  class VLP_collection(ECHO_collection): Line 389  class VLP_collection(ECHO_collection):
         {'label':'Update Metadata','action':'updateCollectionMD'},          {'label':'Update Metadata','action':'updateCollectionMD'},
         )          )
   
   
   
       def generateSubCollections(self,errorsTXT=""):
           """erzeuge subcollectionen"""
           founds=self.ZSQLSimpleSearch("select * from vl_literature where referencetype in ('(Book)','(Collection)','(Journal)')")
           
           self.REQUEST.RESPONSE.write("<h2>Create Subcollections</h2>\n")
           for found in founds:
               try:
                   foundCol=self.ZopeFind(self,obj_ids=[found.reference])
                   if foundCol:
   
                       self.manage_delObjects([foundCol[0][0]])
   
                   manage_addVLP_subCollection(self,found.reference,found.titlerefdisplay,found.titlerefdisplay)
                   #getattr(self,found.reference).generateSubCollectionFromDB()
                   #teste ob es Images auf dem Server gibt mit gleichem Namen (frontmatter)
                   if os.path.exists(os.path.join(self.vlp_basis,found.reference)):
   
                       obj=getattr(self,found.reference)
                       if not self.ZopeFind(obj,obj_ids=[found.reference]):
                           metalink=self.REQUEST['URL1']+"/"+found.reference+"/"+found.reference+"/index_meta"
                           newObj=VLP_resource(found.reference,'',metalink,found.reference,found.reference,found.reference,'generated','book','','','','','','')
                           obj._setObject(found.reference,newObj)
                       genObj=getattr(obj,found.reference)
                       genObj.createIndexFile()
   
                   self.REQUEST.RESPONSE.write("<p>%s</p>\n"%found.reference)
               except:
                   error=sys.exc_info()[0:2]
                   RESPONSE.write("(ERROR: %s %s)\n"%error)
                   errorsTXT+="<p>No subcollection of %s  "+"(ERROR: %s %s)</p>"%error
   
           return errorsTXT
           
     def VLP_path_configForm(self):      def VLP_path_configForm(self):
         """change pt"""          """change pt"""
         path=PageTemplateFile('Products/ECHO_content/vlp/ChangeVLPPath.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'vlp','ChangeVLPPath.zpt')).__of__(self)
         return pt()          return pt()
   
     def VLP_path_config(self,path,RESPONSE=None):      def VLP_path_config(self,path,RESPONSE=None):
         """config"""          """config"""
         self.path=path          self.vlp_basis=path
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
   
     def updateCollection(self,RESPONSE=None):      def updateCollection(self,RESPONSE=None):
         """liest verzeichnisse aus dem pfad und legt sie dann als objekte in den ordner"""          """liest verzeichnisse aus dem pfad und legt sie dann als objekte in den ordner"""
         files=os.listdir(self.path)      errorsTXT="<h2>Errors</h2>"
       RESPONSE.write("<html><body>")
           files=os.listdir(self.vlp_basis)
   
       errorsTXT+="<h3>New Ressources</h3>"
         for fileName in files:          for fileName in files:
                           
             if fileName[0:3]=="lit":              if fileName[0:3]=="lit":
                                   
                 metalink=self.REQUEST['URL1']+"/"+fileName+"/index_meta"                  metalink=self.REQUEST['URL1']+"/"+fileName+"/index_meta"
           try:
               if not hasattr(self,fileName):
                 newObj=VLP_resource(fileName,'',metalink,fileName,fileName,fileName,'generated','book','','','','','','')                  newObj=VLP_resource(fileName,'',metalink,fileName,fileName,fileName,'generated','book','','','','','','')
                 self._setObject(fileName,newObj)                  self._setObject(fileName,newObj)
                                   
               RESPONSE.write("<p>got: %s\n</p>"%fileName)
                 genObj=getattr(self,fileName)                  genObj=getattr(self,fileName)
               if hasattr(genObj,'createIndexFile'):
                   try:
                 genObj.createIndexFile()                  genObj.createIndexFile()
                                   except:
                                       error=sys.exc_info()[0:2]
                       RESPONSE.write("<p>(ERROR: %s %s)</p>\n"%error)
                       errorsTXT+="<p>No indexfile of %s  "+"(ERROR: %s %s)</p>"%error
           except:
               error=sys.exc_info()[0:2]
               RESPONSE.write("<p>(ERROR: %s %s)</p>\n"%error)
               errorsTXT+="<p>File not created:%s  "+"(ERROR: %s %s)</p>"%error
                   
       errorsTXT+=self.generateSubCollections()
       errorsTXT+="/n"
       RESPONSE.write(errorsTXT)
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
   
     def updateCollectionMD(self,RESPONSE=None):      def updateCollectionMD(self,RESPONSE=None):
         """updateMD"""          """updateMD"""
         files=os.listdir(self.path)          files=os.listdir(self.vlp_basis)
         for fileName in files:          for fileName in files:
             if fileName[0:3]=="lit":              if fileName[0:3]=="lit":
                 genObj=getattr(self,fileName)                  genObj=getattr(self,fileName)
Line 251  class VLP_collection(ECHO_collection): Line 503  class VLP_collection(ECHO_collection):
                   
 def manage_addVLP_collectionForm(self):  def manage_addVLP_collectionForm(self):
         """Form for adding a ressource"""          """Form for adding a ressource"""
         pt=PageTemplateFile('Products/ECHO_content/vlp/AddVLP_collectionForm.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'vlp','AddVLP_collectionForm.zpt')).__of__(self)
         return pt()          return pt()
   
   
Line 270  def manage_addVLP_collection(self,id,tit Line 522  def manage_addVLP_collection(self,id,tit
   
   
   
 class VLP_resource(ECHO_resource):  class VLP_resource(ECHO_resource,Cacheable):
     """VLP spezifische Erweiterung"""      """VLP spezifische Erweiterung"""
   
     meta_type="VLP_resource"      meta_type="VLP_resource"
   
     vlp_basis="/mpiwg/online/permanent/vlp"      #vlp_basis="/mpiwg/online/permanent/vlp"
   
           
     referencetypes=[]      referencetypes=[]
   
     manage_options=ECHO_resource.manage_options+(      manage_options=ECHO_resource.manage_options+Cacheable.manage_options+(
         {'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'},
Line 288  class VLP_resource(ECHO_resource): Line 540  class VLP_resource(ECHO_resource):
         )          )
   
           
       def getImagePath(self):
           """Pfad zu den Images"""
           
           if os.path.isdir(os.path.join(self.vlp_basis,self.resourceID,'pageimg')):
               return os.path.join(self.vlp_basis,self.resourceID,'pageimg')
           elif os.path.isdir(os.path.join(self.vlp_basis,self.resourceID,'pagesHi')):
               return os.path.join(self.vlp_basis,self.resourceID,'pagesHi')
           else:
               return "<error>no images </error>"
       
   
           
     def transcription(self):      def transcription(self):
         """show the rendered transcriptiofile"""          """show the rendered transcriptiofile"""
                   
         if hasattr(self,'libraryTranscriptionTemplate.html'):          if hasattr(self,'libraryTranscriptionTemplate.html'):
             return getattr(self,'libraryTranscriptionTemplate.html')()              return getattr(self,'libraryTranscriptionTemplate.html')()
   
         pt=PageTemplateFile('Products/ECHO_content/vlp/library_transcriptionTemplate.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'vlp','library_transcriptionTemplate.zpt')).__of__(self)
         pt.content_type="text/html"          pt.content_type="text/html"
         return pt()          return pt()
   
Line 302  class VLP_resource(ECHO_resource): Line 566  class VLP_resource(ECHO_resource):
   
     def copyTranscriptionFromDB(self):      def copyTranscriptionFromDB(self):
         """checks if transcription exits in DB"""          """checks if transcription exits in DB"""
         founds=self.search(var='select * from vl_transcript where source=\''+self.resourceID+'\' order by id')          founds=self.ZSQLSimpleSearch('select * from vl_transcript where source=\''+self.resourceID+'\' order by id')
   
                   
         ret="""<?xml version="1.0" encoding="utf-8"?>          ret="""<?xml version="1.0" encoding="utf-8"?>
Line 311  class VLP_resource(ECHO_resource): Line 575  class VLP_resource(ECHO_resource):
         if founds:          if founds:
                           
             for found in founds:              for found in founds:
               
                 text=found.transcript                  text=found.transcript
                 if not text: text=""                  if not text: text=""
                 ret+="<page><pb/>"+text+"</page>"                  ret+="<page><pb/>"+text+"</page>"
   
             ret+="</text>"              ret+="</text>"
             re2=ret[0:]              re2=ret[0:]
             re3=re2.decode('latin-1')              re3=re2.decode('latin-1').encode('utf-8')
                           #re3=re2
             ft=self.ZopeFind(self,obj_metatypes=['ECHO_fullText'])              ft=self.ZopeFind(self,obj_metatypes=['ECHO_fullText'])
                           
             if ft:              if ft:
                           
                 ft[0][1].pt_edit(re3.encode('utf-8','ignore'),'text/xml')                  ft[0][1].pt_edit(re3,'text/xml')
                           
             else:              else:
                 self._setObject('fulltext',ECHO_fullText(id,re3))      
                   self._setObject('fulltext',ECHO_fullText(id,''))
   
                           try:
                       getattr(self,'fulltext').pt_edit(re3.encode('utf-8','ignore'),'text/xml')
                   except:
                                   getattr(self,'fulltext').pt_edit(re3.encode('latin-1').decode('utf-8'),'text/xml')
                           
             return "FT: %s"%self.getId()              return "FT: %s"%self.getId()
         else:          else:
Line 348  class VLP_resource(ECHO_resource): Line 619  class VLP_resource(ECHO_resource):
         """show the rendered file"""          """show the rendered file"""
   
         if self.REQUEST.get('p',None):          if self.REQUEST.get('p',None):
             self.REQUEST.set('pn',self.file2page(self.REQUEST.get('p',None)))              #self.REQUEST.set('pn',self.file2page(self.REQUEST.get('p',None)))
           self.REQUEST.RESPONSE.redirect(self.REQUEST['URL']+"?pn="+self.file2page(self.REQUEST.get('p',None)))
   
                         
     if hasattr(self,'libraryTemplate.html'):      if hasattr(self,'libraryTemplate.html'):
         return getattr(self,'libraryTemplate.html')()          return getattr(self,'libraryTemplate.html')()
           
         pt=PageTemplateFile('Products/ECHO_content/vlp/library_template.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'vlp','library_template.zpt')).__of__(self)
         pt.content_type="text/html"          pt.content_type="text/html"
         return pt()          return pt()
           
     index_html=show      def index_html(self):
           """index_html"""
           #return self.REQUEST
           if not self.REQUEST.has_key("ws"):
               self.REQUEST.form["ws"]="1.5"
   
           return self.show()
   
     def generateLibraryTemplateHTML(self,RESPONSE=None):      def generateLibraryTemplateHTML(self,RESPONSE=None):
         """lege standard index.html an"""          """lege standard index.html an"""
Line 380  class VLP_resource(ECHO_resource): Line 659  class VLP_resource(ECHO_resource):
     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(os.path.join(package_home(globals()),'vlp','index_meta.zpt')).__of__(self)
         pt.content_type="text/html"          pt.content_type="text/html"
         return pt()          return pt()
   
     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 397  class VLP_resource(ECHO_resource): Line 677  class VLP_resource(ECHO_resource):
     def dir2index(self):      def dir2index(self):
         """dir to index"""          """dir to index"""
   
       excludeNames=['Icon']
       
         def calculateName(str):          def calculateName(str):
             ret="%s: %s"%(str[0],str[1:5])          name=os.path.splitext(str[1:])[0]
               ret="%s: %s"%(str[0],name)
             return ret              return ret
   
         try:          try:
Line 408  class VLP_resource(ECHO_resource): Line 691  class VLP_resource(ECHO_resource):
             ret=os.listdir(os.path.join(self.vlp_basis,self.resourceID,'pagesHi'))              ret=os.listdir(os.path.join(self.vlp_basis,self.resourceID,'pagesHi'))
             self.imagePath='pagesHi'              self.imagePath='pagesHi'
         temp=[]          temp=[]
       ret.sort()
         for x in ret:          for x in ret:
             if not (x[0]=="."):              if (not (x[0]==".")) and (not x[0:4] in excludeNames):
                                   
                 temp.append((calculateName(x),os.path.splitext(x)[0]))                  temp.append((calculateName(x),os.path.splitext(x)[0]))
         return temp          return temp
Line 417  class VLP_resource(ECHO_resource): Line 701  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:
           ws=self.REQUEST.get('ws','1')
             return """<a href=%s>              return """<a href=%s>
                          <img src="../../images/first.gif" alt="first" width="14" height="14" border="0"><br>first                           <img src="../../images/first.gif" alt="first" width="14" height="14" border="0"><br>first
                          </a>                           </a>
                          """%(self.REQUEST['URL']+"?pn=1")                           """%(self.REQUEST['URL']+"?pn=1&ws=%s"%ws)
   
     def lastPage(self,url=None):      def lastPage(self,url=None):
         """showlink to the first image"""          """showlink to the first image"""
Line 432  class VLP_resource(ECHO_resource): Line 717  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:
           ws=self.REQUEST.get('ws','1')
             return """<a href=%s>              return """<a href=%s>
                          <img src="../../images/last.gif" alt="last" width="14" height="14" border="0"><br>last                           <img src="../../images/last.gif" alt="last" width="14" height="14" border="0"><br>last
                          </a>                           </a>
                          """%(self.REQUEST['URL']+"?pn="+str(ln))                           """%(self.REQUEST['URL']+"?pn="+str(ln)+"&ws="+ws)
                           
     def prevPage(self,url=None):      def prevPage(self,url=None):
         """showlink to the first image"""          """showlink to the first image"""
Line 447  class VLP_resource(ECHO_resource): Line 733  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:
           ws=self.REQUEST.get('ws','1')
             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)+"&ws="+ws)
   
     def nextPage(self,url=None):      def nextPage(self,url=None):
         """showlink to the first image"""          """showlink to the first image"""
Line 462  class VLP_resource(ECHO_resource): Line 749  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:
           ws=self.REQUEST.get('ws','1')
             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)+"&ws="+ws)
                   
           
     def readIndexFile(self,url=None):      def readIndexFile(self,url=None):
         """reads the indexfile. presently url not None isn't implemented. In the future url can be defined."""          """reads the indexfile. presently url not None isn't implemented. In the future url can be defined."""
         pagelist=[]  
         if not url:          if not url:
             url=self.absolute_url()+"/index.xml"              url=self.absolute_url()+"/index.xml"
   
         fh=urllib.urlopen(url)      if self.ZCacheable_isCachingEnabled():
               
               result = self.ZCacheable_get(view_name=url)
               if result is not None:
                   # Got a cached value.
                   return result
   
           pagelist=[]
      
           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))
   
       self.ZCacheable_set(pagelist,view_name=url)
         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"""
   
                   
         pt=PageTemplateFile('Products/ECHO_content/vlp/index_template.zpt').__of__(self)()          pt=PageTemplateFile(os.path.join(package_home(globals()),'vlp','index_template.zpt')).__of__(self)()
   
   
                   
Line 512  class VLP_resource(ECHO_resource): Line 819  class VLP_resource(ECHO_resource):
                   
 def manage_addVLP_resourceForm(self):  def manage_addVLP_resourceForm(self):
         """Form for adding a ressource"""          """Form for adding a ressource"""
         pt=PageTemplateFile('Products/ECHO_content/vlp/AddVLP_resourceForm.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'vlp','AddVLP_resourceForm.zpt')).__of__(self)
         return pt()          return pt()
   
   

Removed from v.1.20  
changed lines
  Added in v.1.47


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