Annotation of ECHO_content/VLPExtension.py, revision 1.4

1.1       dwinter     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
1.2       dwinter     5: 
1.1       dwinter     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: 
1.2       dwinter    16: class VLP_collection(ECHO_collection):
                     17:     """VLP spezifische Erweiterung der Collection"""
                     18: 
1.3       dwinter    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:
1.4     ! dwinter    59:             if fileName[0:3]=="lit":
1.3       dwinter    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: 
1.2       dwinter    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: 
1.3       dwinter    75: 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    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)
1.3       dwinter    82:     setattr(newObj,'path',path)
1.2       dwinter    83: 
                     84:     if RESPONSE is not None:
                     85:         RESPONSE.redirect('manage_main')
                     86: 
                     87: 
1.1       dwinter    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: 
1.2       dwinter   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:         
1.1       dwinter   113:             
1.2       dwinter   114: ##         return ECHO_resource(id,link,metalink,resourceID,title,label,description,contentType,renderingType,responsible,credits,weight,coords)
                    115: 
1.1       dwinter   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:     
1.3       dwinter   135:     index_html=show
1.1       dwinter   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
1.2       dwinter   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'
1.1       dwinter   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:     
1.2       dwinter   270:     if metalink=='':
                    271:         metalink=self.absolute_url()+"/"+id+"/index_meta"
                    272:             
1.1       dwinter   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>