Annotation of ECHO_content/VLPExtension.py, revision 1.1
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
! 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>