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>