Annotation of MPIWGWeb/MPIWGTemplate.py, revision 1.1.2.7
1.1.2.1 dwinter 1: from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
1.1.2.2 dwinter 2: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
1.1.2.1 dwinter 3: from Globals import package_home
4: import string
5: import re
6: import os
7: import logging
8: from OFS.Folder import Folder
9: from AccessControl import ClassSecurityInfo
10: from MPIWGHelper import *
11:
1.1.2.3 casties 12:
13: def getBreadcrumbs(self):
14: """return list of breadcrumbs from here to the root"""
15: crumbs = [(self.title, self.absolute_url(), self)]
16: parent = self.aq_parent
17: if hasattr(parent, 'getBreadcrumbs'):
18: if self.title:
19: return parent.getBreadcrumbs() + crumbs
20: else:
21: # if there's no title, skip this level
22: return parent.getBreadcrumbs()
23:
24: return crumbs
25:
26:
27: def getSection(self):
28: """returns the current section name"""
29: p = self
30: sec = None
31: # descend parents to the root (and remember the last id)
32: while p is not None and p.meta_type != 'MPIWGRoot':
33: sec = p.getId()
34: p = p.aq_parent
35:
36: return sec
37:
1.1.2.7 ! casties 38: def getSubSection(self):
! 39: """returns the current subsection name"""
! 40: p = self
! 41: sec = None
! 42: subsec = None
! 43: # descend parents to the root (and remember the last id)
! 44: while p is not None and p.meta_type != 'MPIWGRoot':
! 45: subsec = sec
! 46: sec = p.getId()
! 47: p = p.aq_parent
! 48:
! 49: return subsec
! 50:
1.1.2.3 casties 51:
1.1.2.1 dwinter 52: class MPIWGTemplate(ZopePageTemplate):
53: """Create a layout Template for different purposes"""
54:
55: meta_type="MPIWGTemplate"
56:
57: manage_options=ZopePageTemplate.manage_options+(
58: {'label':'Change Weight','action':'changeWeightForm'},
59: )
60:
61: def changeWeightForm(self):
62: """change weight form"""
63: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','MPIWGTemplateChangeWeight.zpt')).__of__(self)
64: return pt()
65:
66: def changeWeight(self,weight,RESPONSE=None):
67: """change weight"""
68: self.weight=weight
69: if RESPONSE is not None:
70: RESPONSE.redirect('manage')
71:
72:
1.1.2.3 casties 73: def __init__(self, id, text=None, content_type="text/html",MPIWGType=None):
1.1.2.1 dwinter 74: self.id = str(id)
75: self.ZBindings_edit(self._default_bindings)
76: if text is None:
77: self._default_content_fn = os.path.join(package_home(globals()),
78: 'zpt/MPIWG_%s_template_standard.zpt'%MPIWGType)
79: text = open(self._default_content_fn).read()
80: self.pt_edit(text, content_type)
81:
82:
83: def isActiveItem(self):
84: """teste ob ausgewaehlt"""
85: if self.absolute_url()==self.REQUEST['URL']:
86: return "aktiv"
87: else:
88: return ""
1.1.2.3 casties 89:
90: getBreadcrumbs = getBreadcrumbs
91: getSection = getSection
1.1.2.7 ! casties 92: getSubSection = getSubSection
! 93:
1.1.2.4 dwinter 94: def harvest_page(self):
95: """harvest main"""
96: try:
97: return self.pt_render()
98: except:
99: logging.error("cannot harvest: %s"%self.absolute_url())
1.1.2.1 dwinter 100:
1.1.2.4 dwinter 101:
102:
1.1.2.1 dwinter 103: def manage_addMPIWGTemplateForm(self):
104: """Form for adding"""
105: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGTemplate.zpt')).__of__(self)
106: return pt()
107:
108:
109:
110: def manage_addMPIWGTemplate(self, MPIWGType,id, text="",title=None,weight=0,REQUEST=None):
111: "Add a Page Template with optional file content."
112: if type(MPIWGType)==StringType:
113: MPIWGTypes=[MPIWGType]
114: else:
115: MPIWGTypes=MPIWGType
116:
117: for singleType in MPIWGTypes:
118:
119:
120: if REQUEST is None:
121: self._setObject(id, MPIWGTemplate(id, text,EchoType=singleType))
122: ob = getattr(self, id)
123:
124: if title:
125: ob.pt_setTitle(title)
126: return ob
127: else:
128: file = REQUEST.form.get('file')
129: headers = getattr(file, 'headers', None)
130: if headers is None or not file.filename:
131: zpt = MPIWGTemplate(id,MPIWGType=singleType)
132: else:
133: zpt = MPIWGTemplate(id, file, headers.get('content_type'))
134:
135: self._setObject(id, zpt)
136: ob = getattr(self, id)
137: if title:
138: ob.pt_setTitle(title)
139:
140: try:
141: u = self.DestinationURL()
142: except AttributeError:
143: u = REQUEST['URL1']
144:
145: ob = getattr(self, id)
146: ob.weight=weight
147:
148: REQUEST.RESPONSE.redirect(u+'/manage_main')
149: return ''
150:
1.1.2.3 casties 151:
152:
153: class MPIWGFolder(Folder):
154: """special Folder object for MPIWG website """
155:
156: meta_type="MPIWGFolder"
157:
158: manage_options=Folder.manage_options+(
159: {'label':'Change Weight','action':'changeWeightForm'},
160: {'label':'Main Config','action':'changeForm'},
161: )
162:
163: changeWeightForm = PageTemplateFile('zpt/MPIWGFolderChangeWeight', globals())
164: changeForm = PageTemplateFile('zpt/MPIWGFolderConfig', globals())
165:
166: def __init__(self, id, title=None, weight=0, canonicalName=None):
167: self.id = str(id)
168: self.weight = weight
169: if title is None:
170: self.title = id
171: else:
172: self.title = title
173:
174: if canonicalName is None:
175: self.canonicalName = self.id
176: else:
177: self.canonicalName = canonicalName
178:
179: def changeWeight(self,weight,RESPONSE=None):
180: """change weight"""
181: self.weight=weight
182: if RESPONSE is not None:
183: RESPONSE.redirect('manage_main')
184:
185: def changeMPIWGFolder(self, title=None, weight=None, canonicalName=None, RESPONSE=None):
186: """change everything"""
187: if title is not None:
188: self.title = title
189: if weight is not None:
190: self.weight = weight
191: if canonicalName is not None:
192: self.canonicalName = canonicalName
193: if RESPONSE is not None:
194: RESPONSE.redirect('manage_main')
195:
196: getBreadcrumbs = getBreadcrumbs
197:
198: getSection = getSection
1.1.2.7 ! casties 199:
! 200: getSubSection = getSubSection
1.1.2.3 casties 201:
202:
203: def manage_addMPIWGFolderForm(self):
204: """Form for adding"""
205: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGFolder.zpt')).__of__(self)
206: return pt()
207:
208: def manage_addMPIWGFolder(self, id, title=None,weight=0,RESPONSE=None):
209: "Add a MPIWG Folder."
210: newObj=MPIWGFolder(id,title,weight)
211: self.Destination()._setObject(id,newObj)
212: if RESPONSE is not None:
213: RESPONSE.redirect('manage_main')
214:
1.1.2.5 casties 215:
216:
217: class MPIWGFeature(Folder):
218: """special object for feature texts on the MPIWG website """
219:
220: meta_type="MPIWGFeature"
221:
222: manage_options=Folder.manage_options+(
223: {'label':'Change Weight','action':'changeWeightForm'},
224: {'label':'Main Config','action':'changeForm'},
225: )
226:
227: changeWeightForm = PageTemplateFile('zpt/MPIWGFeatureChangeWeight', globals())
228: changeForm = PageTemplateFile('zpt/MPIWGFeatureConfig', globals())
229:
230: def __init__(self, id, title=None, weight=0):
231: self.id = str(id)
232: self.weight = weight
233: if title is None:
234: self.title = id
235: else:
236: self.title = title
237:
238: # add language folder and sample templates
239: self.manage_addFolder('en')
240: folder = getattr(self, 'en')
241: introid = 'intro.pt'
242: folder._setObject(introid, ZopePageTemplate(introid))
243: intro = getattr(folder,introid)
244: intro.pt_edit(open(os.path.join(package_home(globals()),'zpt/MPIWGFeature_template_intro.zpt')).read(),'text/html')
245: mainid = 'main.pt'
246: folder._setObject(mainid, ZopePageTemplate(mainid))
247: main = getattr(folder,mainid)
248: main.pt_edit(open(os.path.join(package_home(globals()),'zpt/MPIWGFeature_template_main.zpt')).read(),'text/html')
249:
250:
251: def index_html(self):
252: """default index page"""
253: return self.getMain()
1.1.2.7 ! casties 254:
! 255: def getFullTitle(self):
! 256: """returns the full title (from main.pt)"""
! 257: # get Language from MPIWGRoot
! 258: lang = self.getLang()
! 259: dir = getattr(self, lang, self.en)
! 260: pt = getattr(dir, 'main.pt')
! 261: t = pt.title
! 262: if not t:
! 263: t = self.title
! 264:
! 265: return t
1.1.2.5 casties 266:
267: def getIntro(self, **args):
268: """returns the intro as PageTemplate"""
1.1.2.7 ! casties 269: # get Language from MPIWGRoot
! 270: lang = self.getLang()
! 271: dir = getattr(self, lang, self.en)
! 272: pt = getattr(dir, 'intro.pt')
1.1.2.5 casties 273: return pt(**args)
274:
275: def getMain(self, **args):
276: """returns the main part as PageTemplate"""
1.1.2.7 ! casties 277: # get Language from MPIWGRoot
! 278: lang = self.getLang()
! 279: dir = getattr(self, lang, self.en)
! 280: pt = getattr(dir, 'main.pt')
1.1.2.5 casties 281: return pt(**args)
282:
283: def getFrontpageImg(self):
284: """returns the image object for the frontpage"""
285: img = getattr(self, 'img-frontpage.jpg')
286: return img
287:
288: def getFrontpageImgUrl(self):
289: """returns the URL of the image object for the frontpage"""
290: img = getattr(self, 'img-frontpage.jpg')
291: return img.absolute_url()
292:
1.1.2.6 casties 293: def getFrontpageThumb(self):
1.1.2.5 casties 294: """returns the image object for the frontpage thumbnail"""
1.1.2.6 casties 295: img = getattr(self, 'img-frontthumb.jpg')
296: return img
297:
298: def getFrontpageThumbUrl(self):
299: """returns the URL of the image object for the frontpage thumbnail"""
300: img = getattr(self, 'img-frontthumb.jpg')
301: return img.absolute_url()
302:
303: def getThumbImg(self):
304: """returns the image object for the sidebar thumbnail"""
1.1.2.5 casties 305: img = getattr(self, 'img-thumb.jpg')
306: return img
307:
308: def getThumbImgUrl(self):
1.1.2.6 casties 309: """returns the URL of the image object for the sidebar thumbnail"""
1.1.2.5 casties 310: img = getattr(self, 'img-thumb.jpg')
311: return img.absolute_url()
312:
313: def changeWeight(self,weight,RESPONSE=None):
314: """change weight"""
315: self.weight=weight
316: if RESPONSE is not None:
317: RESPONSE.redirect('manage_main')
318:
319: def changeMPIWGFeature(self, title=None, weight=None, RESPONSE=None):
320: """change everything"""
321: if title is not None:
322: self.title = title
323: if weight is not None:
324: self.weight = weight
325: if RESPONSE is not None:
326: RESPONSE.redirect('manage_main')
327:
1.1.2.7 ! casties 328: def getBreadcrumbs(self):
! 329: """return list of breadcrumbs from here to the root"""
! 330: crumbs = [(self.getFullTitle(), self.absolute_url(), self)]
! 331: parent = self.aq_parent
! 332: if hasattr(parent, 'getBreadcrumbs'):
! 333: if self.title:
! 334: return parent.getBreadcrumbs() + crumbs
! 335: else:
! 336: # if there's no title, skip this level
! 337: return parent.getBreadcrumbs()
! 338:
! 339: return crumbs
1.1.2.5 casties 340:
341: getSection = getSection
1.1.2.7 ! casties 342:
! 343: getSubSection = getSubSection
1.1.2.5 casties 344:
345:
346: def manage_addMPIWGFeatureForm(self):
347: """Form for adding"""
348: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGFeature.zpt')).__of__(self)
349: return pt()
350:
351: def manage_addMPIWGFeature(self, id, title=None,weight=0,RESPONSE=None):
352: "Add a MPIWG Feature object"
353: newObj=MPIWGFeature(id,title,weight)
354: self.Destination()._setObject(id,newObj)
355: if RESPONSE is not None:
356: RESPONSE.redirect('manage_main')
357:
1.1.2.1 dwinter 358:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>