File:  [Repository] / ECHO_content / VLPExtension.py
Revision 1.29: download - view: text, annotated - select for diffs - revision graph
Wed Oct 13 14:55:15 2004 UTC (19 years, 8 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
sendmail in vlpextension added

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

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