File:  [Repository] / ECHO_content / VLPExtension.py
Revision 1.3: download - view: text, annotated - select for diffs - revision graph
Fri May 28 15:01:43 2004 UTC (20 years ago) by dwinter
Branches: MAIN
CVS tags: HEAD
vlp additions

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

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