File:  [Repository] / ECHO_content / VLPExtension.py
Revision 1.1: download - view: text, annotated - select for diffs - revision graph
Wed May 26 07:56:28 2004 UTC (20 years ago) by dwinter
Branches: MAIN
CVS tags: HEAD
VLP preliminary insertedS

    1: from 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: import xml.dom.minidom
    6: from Products.zogiLib import zogiLib
    7: 
    8: def getText(nodelist):
    9: 
   10:     rc = ""
   11:     for node in nodelist:
   12:     	if node.nodeType == node.TEXT_NODE:
   13:            rc = rc + node.data
   14:     return rc
   15: 
   16: 
   17: class VLP_resource(ECHO_resource):
   18:     """VLP spezifische Erweiterung"""
   19: 
   20:     meta_type="VLP_resource"
   21: 
   22:     vlp_basis="/mpiwg/online/permanent/vlp"
   23: 
   24:     
   25:     referencetypes=[]
   26: 
   27:     manage_options=ECHO_resource.manage_options+(
   28:         {'label':'Update Index','action':'createIndexFile'},
   29:         {'label':'Reset MetaLink','action':'resetMetaLink'},
   30:         {'label':'Generate Title','action':'generate_title'},
   31:         )
   32: 
   33: 
   34:     def __init__(self,id,link,metalink,resourceID,title,label,description,contentType,renderingType,responsible,credits,weight,coords):
   35:         """angepasstes init"""
   36:         if metalink=='':
   37:             metalink=self.absolute_url()+"/index_meta"
   38:             
   39:         return ECHO_resource(self,id,link,metalink,resourceID,title,label,description,contentType,renderingType,responsible,credits,weight,coords)
   40:         
   41:     def resetMetaLink(self,all="no",RESPONSE=None):
   42:         """resets metalink to standard resp. in case of server change it sets to the new server url"""
   43:         if all=="yes":
   44:             self.metalink=self.absolute_url()+"/index_meta"
   45:         else:
   46:             splitted=self.metalink.split("/")
   47:             if (len(splitted)>1) and (splitted[len(splitted)-1]=="index_meta") and (splitted[len(splitted)-2]==self.getId()): # heuristic nur generische Metadatafiles andern
   48:                 self.metalink=self.absolute_url()+"/index_meta"
   49: 
   50:         if RESPONSE:
   51:             return "done"
   52:             
   53:     def show(self):
   54:         """show the rendered file"""
   55:         pt=PageTemplateFile('Products/ECHO_content/vlp/library_template.zpt').__of__(self)
   56:         pt.content_type="text/html"
   57:         return pt()
   58:     
   59:     
   60:     def index_meta(self):
   61:         """index_meta"""
   62:         pt=PageTemplateFile('Products/ECHO_content/vlp/index_meta.zpt').__of__(self)
   63:         pt.content_type="text/html"
   64:         return pt()
   65:     
   66: 
   67:     def dir2index(self):
   68:         """dir to index"""
   69: 
   70:         def calculateName(str):
   71:             ret="%s: %s"%(str[0],str[1:5])
   72:             return ret
   73:         
   74:         ret=os.listdir(os.path.join(self.vlp_basis,self.resourceID,'pageimg'))
   75:         temp=[]
   76:         for x in ret:
   77:             if not (x[0]=="."):
   78:                 
   79:                 temp.append(calculateName(x))
   80:         return temp
   81: 
   82:     def firstPage(self,url=None):
   83:         """showlink to the first image"""
   84:         if self.REQUEST.get('pn')=="1": #erste seinte dann kein a tag
   85:             return """<img src="../../images/first.gif" alt="first" width="14" height="14" border="0"><br>first"""
   86: 
   87:         else:
   88:             return """<a href=%s>
   89:                          <img src="../../images/first.gif" alt="first" width="14" height="14" border="0"><br>first
   90:                          </a>
   91:                          """%(self.REQUEST['URL']+"?pn=1")
   92: 
   93:     def lastPage(self,url=None):
   94:         """showlink to the first image"""
   95:         pages=self.readIndexFile(url)
   96:         if pages:
   97:             ln=len(pages)
   98:         
   99:         if self.REQUEST.get('pn')==str(ln): #letzte seite dann kein a tag
  100:             return """<img src="../../images/last.gif" alt="last" width="14" height="14" border="0"><br>last"""
  101: 
  102:         else:
  103:             return """<a href=%s>
  104:                          <img src="../../images/last.gif" alt="last" width="14" height="14" border="0"><br>last
  105:                          </a>
  106:                          """%(self.REQUEST['URL']+"?pn="+str(ln))
  107:             
  108:     def prevPage(self,url=None):
  109:         """showlink to the first image"""
  110:         
  111: 
  112:         nn = int(self.REQUEST.get('pn','1'))-1
  113:         if nn < 1: #letzte  seite dann kein a tag
  114:             return """<img src="../../images/prev.gif" alt="prev" width="14" height="14" border="0"><br>prev"""
  115: 
  116:         else:
  117:             return """<a href=%s>
  118:                          <img src="../../images/prev.gif" alt="prev" width="14" height="14" border="0"><br>prev
  119:                          </a>
  120:                          """%(self.REQUEST['URL']+"?pn="+str(nn))
  121: 
  122:     def nextPage(self,url=None):
  123:         """showlink to the first image"""
  124:         pages=self.readIndexFile(url)
  125:         if pages:
  126:             ln=len(pages)
  127: 
  128:         nn = int(self.REQUEST.get('pn','1'))+1
  129:         if nn>int(ln): #letzte  seite dann kein a tag
  130:             return """<img src="../../images/next.gif" alt="next" width="14" height="14" border="0"><br>next"""
  131: 
  132:         else:
  133:             return """<a href=%s>
  134:                          <img src="../../images/next.gif" alt="next" width="14" height="14" border="0"><br>next
  135:                          </a>
  136:                          """%(self.REQUEST['URL']+"?pn="+str(nn))
  137:         
  138:     
  139:     def readIndexFile(self,url=None):
  140:         """reads the indexfile. presently url not None isn't implemented. In the future url can be defined."""
  141:         pagelist=[]
  142:         if not url:
  143:             url=self.absolute_url()+"/index.xml"
  144: 
  145:         fh=urllib.urlopen(url)
  146:         dom=xml.dom.minidom.parse(fh)
  147:         
  148:         
  149:         for page in dom.getElementsByTagName('page'):
  150:             text=getText(page.childNodes)
  151:             pageNum=page.getAttribute('nr')
  152:             pagelist.append((pageNum,text))
  153: 
  154:         return pagelist
  155:     
  156:     def createIndexFile(self,RESPONSE=None):
  157:         """create index file"""
  158: 
  159:         
  160:         pt=PageTemplateFile('Products/ECHO_content/vlp/index_template.zpt').__of__(self)()
  161: 
  162: 
  163:         
  164:         if not hasattr(self,'index.xml'):
  165:             zt=ZopePageTemplate('index.xml')
  166:             self._setObject('index.xml',zt)
  167:         else:
  168:             zt=getattr(self,'index.xml')
  169:             
  170:             
  171:         zt.pt_edit(pt, 'text/xml')
  172: 
  173:         if RESPONSE is not None:
  174:             RESPONSE.redirect('manage_main')
  175: 
  176:         
  177: def manage_addVLP_resourceForm(self):
  178:         """Form for adding a ressource"""
  179:         pt=PageTemplateFile('Products/ECHO_content/vlp/AddVLP_resourceForm.zpt').__of__(self)
  180:         return pt()
  181: 
  182: 
  183: 
  184: 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):
  185:     """addaresource"""
  186: 
  187:     
  188:     newObj=VLP_resource(id,link,metalink,resourceID,title,label,description,contentType,renderingType,responsible,credits,weight,coords)
  189: 
  190:     self._setObject(id,newObj)
  191: 
  192:     if RESPONSE is not None:
  193:         RESPONSE.redirect('manage_main')
  194:  

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