Annotation of ECHO_content/VLPExtension.py, revision 1.6

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

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