File:  [Repository] / ECHO_content / VLPExtension.py
Revision 1.2: download - view: text, annotated - select for diffs - revision graph
Thu May 27 09:31:25 2004 UTC (20 years, 1 month ago) by dwinter
Branches: MAIN
CVS tags: HEAD
resourceid added bei creating a resource

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

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