Annotation of ECHO_content/VLPExtension.py, revision 1.26

1.10      dwinter     1: from Products.ECHO_content.ECHO_collection import *
1.1       dwinter     2: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
                      3: from Products.PageTemplates.PageTemplate import PageTemplate
                      4: from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
1.26    ! dwinter     5: from OFS.Image import File
1.13      dwinter     6: try:
                      7:    from Products.zogiLib import zogiLib
                      8: except:
                      9:    print "Zogilib not installed, VLP_resource will not work"
                     10: 
1.11      dwinter    11: import xml.dom.minidom
                     12: import urllib
1.20      dwinter    13: import xmlrpclib
1.26    ! dwinter    14: import vlp_xmlhelpers
        !            15: from types import *
1.20      dwinter    16: 
                     17: 
                     18: 
                     19: def lemmatize(str):
                     20:    """takes a str and addes links the dictionary service"""
                     21:    server = xmlrpclib.ServerProxy("http://archimedes.fas.harvard.edu/cgi-bin/donatus-rpc")
                     22:    if server:
                     23:        splitted=str.split(" ")
                     24:        wordlist=["<w>%s</w>"%split for split in splitted].join()
                     25:    return wordlist
                     26: 
                     27:        
                     28: 
                     29:        
1.14      dwinter    30: def makeXML(str):
1.26    ! dwinter    31:      
1.14      dwinter    32:        try:
                     33:            dom=xml.dom.minidom.parseString(str)
                     34:            return str
                     35:        except:
1.26    ! dwinter    36:            str=str.replace("& ","&amp; ")
        !            37:            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>
1.15      dwinter    38:                      %s
                     39:                  </page>"""%str
1.14      dwinter    40:        
1.26    ! dwinter    41:                 
1.20      dwinter    42:        
1.1       dwinter    43: def getText(nodelist):
                     44: 
                     45:     rc = ""
                     46:     for node in nodelist:
                     47:        if node.nodeType == node.TEXT_NODE:
                     48:            rc = rc + node.data
                     49:     return rc
                     50: 
1.6       dwinter    51: class VLP_essay(Folder):
                     52:     """classe für VLP essays"""
                     53: 
                     54:     meta_type="VLP_essay"
                     55: 
1.8       dwinter    56:     manage_options = Folder.manage_options+(
                     57:        {'label':'Main Config','action':'ConfigVLP_essayForm'},
1.17      dwinter    58:        {'label':'Generate Essay Template','action':'generateEssayTemplateHTML'},
1.8       dwinter    59:                 )
                     60: 
1.9       dwinter    61:     def content_html(self,type='collection'):
                     62:         """template fuer content"""
                     63:         #templates = self.ZopeFind(self.aq_parent,obj_ids=[type+"_template"])
                     64:         #
                     65:         #if templates:
                     66:         #    return templates[0][1]()
                     67:    
                     68:         if hasattr(self,type+"_template"):
                     69:             obj=getattr(self,type+"_template")
                     70:             return obj()
                     71:         else:
                     72:             pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_%s_template_standard.zpt'%type).__of__(self)
                     73:             pt.content_type="text/html"
                     74:             return pt()
                     75: 
1.8       dwinter    76:     def ConfigVLP_essayForm(self):
                     77:         """Form for adding"""
                     78:         pt=PageTemplateFile('Products/ECHO_content/vlp/ChangeVLP_essay.zpt').__of__(self)
                     79:         return pt()
                     80: 
                     81:     def ChangeVLP_essay(self,title,label,description,RESPONSE=None):
                     82:         """Change vlp_essay"""
                     83:         self.title=title
                     84:         self.label=label
                     85:         self.description=description
                     86: 
                     87:         if RESPONSE is not None:
                     88:             RESPONSE.redirect('manage_main')
                     89: 
1.6       dwinter    90:     def __init__(self,id,title,label):
                     91:         """init"""
                     92:         self.id=id
                     93:         self.title=title
                     94:         self.label=label
                     95: 
1.17      dwinter    96:     def index_html(self):
                     97:    
                     98:        """show the rendered file"""
                     99:        
1.18      dwinter   100:        if hasattr(self,'essayTemplate.html'):
                    101:            return getattr(self,'essayTemplate.html')()
1.17      dwinter   102: 
                    103:        pt=PageTemplateFile('Products/ECHO_content/vlp/essay_template.zpt').__of__(self)
                    104:        pt.content_type="text/html"
                    105:        return pt()
                    106: 
                    107:     def generateEssayTemplateHTML(self,RESPONSE=None):
                    108:         """lege standard index.html an"""
                    109: 
                    110:    if not hasattr(self,'essayTemplate.html'):
                    111:             zt=ZopePageTemplate('essayTemplate.html')
                    112:             self._setObject('essayTemplate.html',zt)
                    113:             default_content_fn = os.path.join(package_home(globals()),
                    114:                                                'vlp/essay_template.zpt')
                    115:             text = open(default_content_fn).read()
                    116:             zt.pt_edit(text, 'text/html')
                    117: 
                    118:         else:
                    119:             return "already exists!"
                    120:         
                    121:         if RESPONSE is not None:
                    122:             RESPONSE.redirect('manage_main')
                    123: 
                    124: 
1.6       dwinter   125:     def getPage(self,pagenum):
                    126:         """gibt essay page mit num aus"""
                    127:         def sortFind(x,y):
                    128:             return cmp(x[0],y[0])
1.16      dwinter   129:         pages=[]
                    130:         pagestmp=self.ZopeFind(self,obj_metatypes=['DTML Document','File'])
                    131:    for page in pagestmp:
                    132:        if not (page[1].getId()[0]=="."):
                    133:            pages.append(page)
                    134:            
1.6       dwinter   135:         pages.sort(sortFind)
                    136:         #print str(pages[int(pagenum)][1]())
                    137:         if pages[int(pagenum)-1][1].meta_type=='File':
1.26    ! dwinter   138:        
1.20      dwinter   139:        #return makeXML(str(pages[int(pagenum)-1][1]))
1.26    ! dwinter   140:        #txt=pages[int(pagenum)-1][1].data.decode('utf-8')
        !           141:        txt=pages[int(pagenum)-1][1].data
        !           142:        #print txt.encode('utf-8')
        !           143:        
        !           144:        return self.xml2html(makeXML(txt),quote="no")
1.6       dwinter   145:         else:
1.26    ! dwinter   146:        
1.20      dwinter   147:        #return makeXML(str(pages[int(pagenum)-1][1]))
1.26    ! dwinter   148:        
1.20      dwinter   149:        return self.xml2html(makeXML(pages[int(pagenum)-1][1]()),quote="no")
1.6       dwinter   150:         
                    151:     def nextPage(self,pagenum,url):
1.7       dwinter   152:         pages=len(self.ZopeFind(self,obj_metatypes=['DTML Document','File'])) # teste ob performance ok, sonst in variable
1.6       dwinter   153:         if int(pagenum)+1 <= pages:
                    154:             retstr=url+"?p="+str(int(pagenum)+1)
                    155:             return """<td align="right" <a href="%s">next</a></td>"""%retstr
                    156:         
                    157:     def previousPage(self,pagenum,url):
1.7       dwinter   158:         
1.6       dwinter   159:         if int(pagenum)-1 > 0:
                    160:             retstr=url+"?p="+str(int(pagenum)-1)
                    161:             return """<td align="left" <a href="%s">previous</a></td>"""%retstr
                    162:         
1.19      dwinter   163:     def nextURL(self,pagenum,url):
                    164:         pages=len(self.ZopeFind(self,obj_metatypes=['DTML Document','File'])) # teste ob performance ok, sonst in variable
                    165:         if int(pagenum)+1 <= pages:
                    166:             retstr=url+"?p="+str(int(pagenum)+1)
                    167:             return retstr
                    168:         
                    169:     def previousURL(self,pagenum,url):
                    170:         
                    171:         if int(pagenum)-1 > 0:
                    172:             retstr=url+"?p="+str(int(pagenum)-1)
                    173:             return retstr
                    174:         
1.6       dwinter   175:         
                    176: def manage_addVLP_essayForm(self):
                    177:     """Form for adding"""
                    178:     pt=PageTemplateFile('Products/ECHO_content/vlp/AddVLP_essay.zpt').__of__(self)
                    179:     return pt()
                    180: 
                    181: def manage_addVLP_essay(self, id,title,label,RESPONSE=None):
                    182:    """add the copyright"""
                    183: 
                    184:    
                    185:    self._setObject(id, VLP_essay(id, title,label))
                    186: 
                    187:    if RESPONSE is not None:
                    188:        RESPONSE.redirect('manage_main')
                    189:    
                    190: 
1.26    ! dwinter   191: class VLP_encyclopaedia(VLP_essay):
        !           192:    """essay"""
        !           193: 
        !           194:    meta_type="VLP_encyclopaedia"
        !           195:    
        !           196:    manage_options = VLP_essay.manage_options+(
        !           197:        {'label':'Load File','action':'loadNewFileForm'},
        !           198:        )
        !           199: 
        !           200:    
        !           201:    def loadNewFileForm(self):
        !           202:        """Neues XML-File einlesen"""
        !           203:        pt=PageTemplateFile('Products/ECHO_content/vlp/VLP_newfile.zpt').__of__(self)
        !           204:        return pt()
        !           205: 
        !           206:    def loadNewFile(self,RESPONSE=None):
        !           207:        """einlesen des neuen files"""
        !           208:        fileupload=self.REQUEST['fileupload']
        !           209:        if fileupload:
        !           210:            file_name=fileupload.filename
        !           211:            filedata=fileupload.read()
        !           212: 
        !           213:            argv=vlp_xmlhelpers.proj2hash(self,filedata)
        !           214:            textsStr=string.join(argv['text']).encode('utf-8')
        !           215:            
        !           216:            texts=textsStr.split("<pb/>")
        !           217:            
        !           218:            i=0
        !           219:            for text in texts:
        !           220:                i+=1
        !           221:                pageName='page%03d.xml'%i
        !           222:                pages=self.ZopeFind(self,obj_ids=[pageName])
        !           223:                if pages:
        !           224:                    pages[0][1].update_data(text)
        !           225: 
        !           226:                else:
        !           227:                    zt=File(pageName,pageName,text,content_type="text/plain")
        !           228:                    self._setObject(pageName,zt)
        !           229:                
        !           230:        if RESPONSE is not None:
        !           231:            RESPONSE.redirect('manage_main')
        !           232:            
        !           233:    
        !           234: def manage_addVLP_encycForm(self):
        !           235:     """Form for adding"""
        !           236:     pt=PageTemplateFile('Products/ECHO_content/vlp/AddVLP_encyc.zpt').__of__(self)
        !           237:     return pt()
        !           238: 
        !           239: def manage_addVLP_encyc(self, id,title,label,RESPONSE=None):
        !           240:    """add the copyright"""
        !           241: 
        !           242:    
        !           243:    self._setObject(id, VLP_encyclopaedia(id, title,label))
        !           244: 
        !           245:    if RESPONSE is not None:
        !           246:        RESPONSE.redirect('manage_main')
        !           247:    
1.6       dwinter   248: 
1.2       dwinter   249: class VLP_collection(ECHO_collection):
                    250:     """VLP spezifische Erweiterung der Collection"""
                    251: 
1.3       dwinter   252:     meta_type="VLP_collection"
                    253:     manage_options=ECHO_collection.manage_options+(
                    254:         {'label':'Change Path','action':'VLP_path_configForm'},
                    255:         {'label':'Update Library','action':'updateCollection'},
                    256:         {'label':'Update Metadata','action':'updateCollectionMD'},
                    257:         )
                    258: 
                    259:     def VLP_path_configForm(self):
1.5       dwinter   260:         """change pt"""
                    261:         path=PageTemplateFile('Products/ECHO_content/vlp/ChangeVLPPath.zpt').__of__(self)
1.3       dwinter   262:         return pt()
                    263: 
                    264:     def VLP_path_config(self,path,RESPONSE=None):
                    265:         """config"""
                    266:         self.path=path
                    267:         if RESPONSE is not None:
                    268:             RESPONSE.redirect('manage_main')
                    269: 
                    270:     def updateCollection(self,RESPONSE=None):
                    271:         """liest verzeichnisse aus dem pfad und legt sie dann als objekte in den ordner"""
                    272:         files=os.listdir(self.path)
                    273:         for fileName in files:
                    274:             
                    275:             if fileName[0:3]=="lit":
                    276:                 
                    277:                 metalink=self.REQUEST['URL1']+"/"+fileName+"/index_meta"
                    278:                 newObj=VLP_resource(fileName,'',metalink,fileName,fileName,fileName,'generated','book','','','','','','')
                    279:                 self._setObject(fileName,newObj)
                    280:                 
                    281:                 genObj=getattr(self,fileName)
                    282:                 genObj.createIndexFile()
                    283:                 
                    284:                 
                    285:         if RESPONSE is not None:
                    286:             RESPONSE.redirect('manage_main')
                    287: 
                    288:     def updateCollectionMD(self,RESPONSE=None):
                    289:         """updateMD"""
                    290:         files=os.listdir(self.path)
                    291:         for fileName in files:
1.4       dwinter   292:             if fileName[0:3]=="lit":
1.3       dwinter   293:                 genObj=getattr(self,fileName)
                    294:                 genObj.copyIndex_meta2echo_resource()
                    295:                 genObj.generate_title()
                    296: 
                    297:         if RESPONSE is not None:
                    298:             RESPONSE.redirect('manage_main')
                    299: 
1.20      dwinter   300:     def copyFullTextsFromDB(self,RESPONSE=None):
                    301:        """copy fulltext aus DB"""
1.2       dwinter   302: 
1.20      dwinter   303:        ress=self.ZopeFind(self,obj_metatypes=['VLP_resource'])
                    304:        ret=""
                    305:        for res in ress:
                    306:            tmp=res[1].copyTranscriptionFromDB()
                    307:            ret+=tmp
                    308: 
                    309:            if RESPONSE:
                    310:                RESPONSE.write(tmp+"\n")
                    311:        if not RESPONSE:            
                    312:            return ret
                    313:        else:
                    314:            RESPONSE.write("END\n")
                    315:            
                    316:        
1.2       dwinter   317: def manage_addVLP_collectionForm(self):
                    318:         """Form for adding a ressource"""
                    319:         pt=PageTemplateFile('Products/ECHO_content/vlp/AddVLP_collectionForm.zpt').__of__(self)
                    320:         return pt()
                    321: 
                    322: 
                    323: 
1.3       dwinter   324: def manage_addVLP_collection(self,id,title,label,description,contentType,responsible,weight,sortfield,path,coords="",secondaryLinkTitle="",secondaryLink="",credits=None,RESPONSE=None,imageTag="",bgcolour=""):
1.2       dwinter   325:     """add a echo collection"""
                    326:     
                    327: 
                    328:     newObj=VLP_collection(id,title,label,description,contentType,responsible,credits,weight,sortfield,coords,secondaryLinkTitle=secondaryLinkTitle,secondaryLink=secondaryLink,imageTag=imageTag,bgcolour="")
                    329: 
                    330:     self._setObject(id,newObj)
1.3       dwinter   331:     setattr(newObj,'path',path)
1.2       dwinter   332: 
                    333:     if RESPONSE is not None:
                    334:         RESPONSE.redirect('manage_main')
                    335: 
                    336: 
1.1       dwinter   337: 
                    338: class VLP_resource(ECHO_resource):
                    339:     """VLP spezifische Erweiterung"""
                    340: 
                    341:     meta_type="VLP_resource"
                    342: 
                    343:     vlp_basis="/mpiwg/online/permanent/vlp"
                    344: 
                    345:     
                    346:     referencetypes=[]
                    347: 
                    348:     manage_options=ECHO_resource.manage_options+(
                    349:         {'label':'Update Index','action':'createIndexFile'},
                    350:         {'label':'Reset MetaLink','action':'resetMetaLink'},
                    351:         {'label':'Generate Title','action':'generate_title'},
1.14      dwinter   352:    {'label':'Generate Library Template','action':'generateLibraryTemplateHTML'},
1.1       dwinter   353:         )
                    354: 
1.20      dwinter   355:     
                    356:     def transcription(self):
                    357:        """show the rendered transcriptiofile"""
                    358:        
                    359:        if hasattr(self,'libraryTranscriptionTemplate.html'):
                    360:            return getattr(self,'libraryTranscriptionTemplate.html')()
                    361: 
                    362:        pt=PageTemplateFile('Products/ECHO_content/vlp/library_transcriptionTemplate.zpt').__of__(self)
                    363:        pt.content_type="text/html"
                    364:        return pt()
                    365: 
                    366: 
                    367: 
                    368:     def copyTranscriptionFromDB(self):
                    369:        """checks if transcription exits in DB"""
                    370:        founds=self.search(var='select * from vl_transcript where source=\''+self.resourceID+'\' order by id')
                    371: 
                    372:        
                    373:        ret="""<?xml version="1.0" encoding="utf-8"?>
                    374:                <text>"""
                    375:         
                    376:        if founds:
                    377:            
                    378:            for found in founds:
                    379:                text=found.transcript
                    380:                if not text: text=""
                    381:                ret+="<page><pb/>"+text+"</page>"
                    382: 
                    383:            ret+="</text>"
                    384:            re2=ret[0:]
                    385:            re3=re2.decode('latin-1')
                    386:            
                    387:            ft=self.ZopeFind(self,obj_metatypes=['ECHO_fullText'])
                    388:            
                    389:            if ft:
                    390:            
                    391:                ft[0][1].pt_edit(re3.encode('utf-8','ignore'),'text/xml')
                    392:            
                    393:            else:
                    394:                self._setObject('fulltext',ECHO_fullText(id,re3))
                    395:            
                    396:            return "FT: %s"%self.getId()
                    397:        else:
                    398:            return "no: %s"%self.getId()
                    399:        
1.1       dwinter   400:     def resetMetaLink(self,all="no",RESPONSE=None):
                    401:         """resets metalink to standard resp. in case of server change it sets to the new server url"""
                    402:         if all=="yes":
                    403:             self.metalink=self.absolute_url()+"/index_meta"
                    404:         else:
                    405:             splitted=self.metalink.split("/")
                    406:             if (len(splitted)>1) and (splitted[len(splitted)-1]=="index_meta") and (splitted[len(splitted)-2]==self.getId()): # heuristic nur generische Metadatafiles andern
                    407:                 self.metalink=self.absolute_url()+"/index_meta"
                    408: 
                    409:         if RESPONSE:
                    410:             return "done"
                    411:             
                    412:     def show(self):
                    413:         """show the rendered file"""
1.11      dwinter   414: 
                    415:         if self.REQUEST.get('p',None):
                    416:             self.REQUEST.set('pn',self.file2page(self.REQUEST.get('p',None)))
1.12      dwinter   417:            
1.14      dwinter   418:    if hasattr(self,'libraryTemplate.html'):
                    419:        return getattr(self,'libraryTemplate.html')()
                    420:    
1.1       dwinter   421:         pt=PageTemplateFile('Products/ECHO_content/vlp/library_template.zpt').__of__(self)
                    422:         pt.content_type="text/html"
                    423:         return pt()
                    424:     
1.3       dwinter   425:     index_html=show
1.14      dwinter   426: 
                    427:     def generateLibraryTemplateHTML(self,RESPONSE=None):
                    428:         """lege standard index.html an"""
                    429: 
                    430:    if not hasattr(self,'libraryTemplate.html'):
                    431:             zt=ZopePageTemplate('libraryTemplate.html')
                    432:             self._setObject('libraryTemplate.html',zt)
                    433:             default_content_fn = os.path.join(package_home(globals()),
                    434:                                                'vlp/library_template.zpt')
                    435:             text = open(default_content_fn).read()
                    436:             zt.pt_edit(text, 'text/html')
                    437: 
                    438:         else:
                    439:             return "already exists!"
                    440:         
                    441:         if RESPONSE is not None:
                    442:             RESPONSE.redirect('manage_main')
                    443: 
                    444: 
1.1       dwinter   445:     def index_meta(self):
                    446:         """index_meta"""
1.11      dwinter   447:         
1.1       dwinter   448:         pt=PageTemplateFile('Products/ECHO_content/vlp/index_meta.zpt').__of__(self)
                    449:         pt.content_type="text/html"
                    450:         return pt()
1.11      dwinter   451: 
                    452:     def file2page(self,p):
                    453:         """converts filename to pagenumber"""
1.21      dwinter   454:         dom=xml.dom.minidom.parse(ECHO_helpers.urlopen(getattr(self,'index.xml').absolute_url()))
1.11      dwinter   455:         
                    456:         for page in dom.getElementsByTagName('page'):
1.23      dwinter   457:         # pageummer mit lo oder hi sind aequivalent
                    458:         if (page.getAttribute('file')==p) or ("%slo"%page.getAttribute('file')==p) or ("%shi"%page.getAttribute('file')==p):
                    459:             return page.getAttribute('nr')
1.11      dwinter   460:             
                    461:         return 0
1.1       dwinter   462:     
                    463:     def dir2index(self):
                    464:         """dir to index"""
                    465: 
                    466:         def calculateName(str):
                    467:             ret="%s: %s"%(str[0],str[1:5])
                    468:             return ret
1.2       dwinter   469: 
                    470:         try:
                    471:             ret=os.listdir(os.path.join(self.vlp_basis,self.resourceID,'pageimg'))
                    472:             self.imagePath='pageimg'
                    473:         except:
                    474:             ret=os.listdir(os.path.join(self.vlp_basis,self.resourceID,'pagesHi'))
                    475:             self.imagePath='pagesHi'
1.1       dwinter   476:         temp=[]
                    477:         for x in ret:
                    478:             if not (x[0]=="."):
                    479:                 
1.11      dwinter   480:                 temp.append((calculateName(x),os.path.splitext(x)[0]))
1.1       dwinter   481:         return temp
                    482: 
1.11      dwinter   483:     
1.1       dwinter   484:     def firstPage(self,url=None):
                    485:         """showlink to the first image"""
1.24      dwinter   486:         if self.REQUEST.get('pn','1')=="1": #erste seinte dann kein a tag
1.1       dwinter   487:             return """<img src="../../images/first.gif" alt="first" width="14" height="14" border="0"><br>first"""
                    488: 
                    489:         else:
                    490:             return """<a href=%s>
                    491:                          <img src="../../images/first.gif" alt="first" width="14" height="14" border="0"><br>first
                    492:                          </a>
                    493:                          """%(self.REQUEST['URL']+"?pn=1")
                    494: 
                    495:     def lastPage(self,url=None):
                    496:         """showlink to the first image"""
                    497:         pages=self.readIndexFile(url)
                    498:         if pages:
                    499:             ln=len(pages)
                    500:         
1.24      dwinter   501:         if (self.REQUEST.get('pn')==str(ln)) or (ln==1): #letzte seite dann kein a tag oder nur eine Seite
1.1       dwinter   502:             return """<img src="../../images/last.gif" alt="last" width="14" height="14" border="0"><br>last"""
                    503: 
                    504:         else:
                    505:             return """<a href=%s>
                    506:                          <img src="../../images/last.gif" alt="last" width="14" height="14" border="0"><br>last
                    507:                          </a>
                    508:                          """%(self.REQUEST['URL']+"?pn="+str(ln))
                    509:             
                    510:     def prevPage(self,url=None):
                    511:         """showlink to the first image"""
                    512:         
                    513: 
                    514:         nn = int(self.REQUEST.get('pn','1'))-1
                    515:         if nn < 1: #letzte  seite dann kein a tag
1.22      dwinter   516:             return """<img src="../../images/lisePrev.gif" alt="prev" width="14" height="14" border="0"><br>prev"""
1.1       dwinter   517: 
                    518:         else:
                    519:             return """<a href=%s>
1.22      dwinter   520:                          <img src="../../images/lisePrev.gif" alt="prev" width="14" height="14" border="0"><br>prev
1.1       dwinter   521:                          </a>
                    522:                          """%(self.REQUEST['URL']+"?pn="+str(nn))
                    523: 
                    524:     def nextPage(self,url=None):
                    525:         """showlink to the first image"""
                    526:         pages=self.readIndexFile(url)
                    527:         if pages:
                    528:             ln=len(pages)
                    529: 
                    530:         nn = int(self.REQUEST.get('pn','1'))+1
1.24      dwinter   531:         if (nn>int(ln)) or (ln==1): #letzte  seite dann kein a tag
1.22      dwinter   532:             return """<img src="../../images/liseNext.gif" alt="next" width="14" height="14" border="0"><br>next"""
1.1       dwinter   533: 
                    534:         else:
                    535:             return """<a href=%s>
1.22      dwinter   536:                          <img src="../../images/liseNext.gif" alt="next" width="14" height="14" border="0"><br>next
1.1       dwinter   537:                          </a>
                    538:                          """%(self.REQUEST['URL']+"?pn="+str(nn))
                    539:         
                    540:     
                    541:     def readIndexFile(self,url=None):
                    542:         """reads the indexfile. presently url not None isn't implemented. In the future url can be defined."""
                    543:         pagelist=[]
                    544:         if not url:
                    545:             url=self.absolute_url()+"/index.xml"
                    546: 
1.21      dwinter   547:         fh=ECHO_helpers.urlopen(url)
1.1       dwinter   548:         dom=xml.dom.minidom.parse(fh)
                    549:         
                    550:         
                    551:         for page in dom.getElementsByTagName('page'):
                    552:             text=getText(page.childNodes)
                    553:             pageNum=page.getAttribute('nr')
1.22      dwinter   554:        fileName=page.getAttribute('file')
                    555:             pagelist.append((pageNum,text,fileName))
1.1       dwinter   556: 
                    557:         return pagelist
1.22      dwinter   558: 
                    559:     def getFileName(self):
                    560:       """getNameOfCurrentFile"""
1.25      dwinter   561:       try:
                    562:        pn=int(self.REQUEST.get('pn','1'))
                    563:       except:
                    564:        pn=1
1.22      dwinter   565:       pageinfo=self.readIndexFile()[pn-1]
                    566:       return pageinfo[2]
                    567:    
1.1       dwinter   568:     def createIndexFile(self,RESPONSE=None):
                    569:         """create index file"""
                    570: 
                    571:         
                    572:         pt=PageTemplateFile('Products/ECHO_content/vlp/index_template.zpt').__of__(self)()
                    573: 
                    574: 
                    575:         
                    576:         if not hasattr(self,'index.xml'):
                    577:             zt=ZopePageTemplate('index.xml')
                    578:             self._setObject('index.xml',zt)
                    579:         else:
                    580:             zt=getattr(self,'index.xml')
                    581:             
                    582:             
                    583:         zt.pt_edit(pt, 'text/xml')
                    584: 
                    585:         if RESPONSE is not None:
                    586:             RESPONSE.redirect('manage_main')
                    587: 
                    588:         
                    589: def manage_addVLP_resourceForm(self):
                    590:         """Form for adding a ressource"""
                    591:         pt=PageTemplateFile('Products/ECHO_content/vlp/AddVLP_resourceForm.zpt').__of__(self)
                    592:         return pt()
                    593: 
                    594: 
                    595: 
                    596: def manage_addVLP_resource(self,id,title,label,description,responsible,link,metalink,weight,resourceID=None,contentType=None,renderingType=None,credits=None,coords=None,RESPONSE=None):
                    597:     """addaresource"""
                    598: 
                    599:     
1.2       dwinter   600:     if metalink=='':
                    601:         metalink=self.absolute_url()+"/"+id+"/index_meta"
                    602:             
1.1       dwinter   603:     newObj=VLP_resource(id,link,metalink,resourceID,title,label,description,contentType,renderingType,responsible,credits,weight,coords)
                    604: 
                    605:     self._setObject(id,newObj)
                    606: 
                    607:     if RESPONSE is not None:
                    608:         RESPONSE.redirect('manage_main')
                    609:  

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