Annotation of MPIWGWeb/MPIWGTemplate.py, revision 1.1.2.5
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:
38:
1.1.2.1 dwinter 39: class MPIWGTemplate(ZopePageTemplate):
40: """Create a layout Template for different purposes"""
41:
42: meta_type="MPIWGTemplate"
43:
44: manage_options=ZopePageTemplate.manage_options+(
45: {'label':'Change Weight','action':'changeWeightForm'},
46: )
47:
48: def changeWeightForm(self):
49: """change weight form"""
50: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','MPIWGTemplateChangeWeight.zpt')).__of__(self)
51: return pt()
52:
53: def changeWeight(self,weight,RESPONSE=None):
54: """change weight"""
55: self.weight=weight
56: if RESPONSE is not None:
57: RESPONSE.redirect('manage')
58:
59:
1.1.2.3 casties 60: def __init__(self, id, text=None, content_type="text/html",MPIWGType=None):
1.1.2.1 dwinter 61: self.id = str(id)
62: self.ZBindings_edit(self._default_bindings)
63: if text is None:
64: self._default_content_fn = os.path.join(package_home(globals()),
65: 'zpt/MPIWG_%s_template_standard.zpt'%MPIWGType)
66: text = open(self._default_content_fn).read()
67: self.pt_edit(text, content_type)
68:
69:
70: def isActiveItem(self):
71: """teste ob ausgewaehlt"""
72: if self.absolute_url()==self.REQUEST['URL']:
73: return "aktiv"
74: else:
75: return ""
1.1.2.3 casties 76:
77: getBreadcrumbs = getBreadcrumbs
78:
79: getSection = getSection
80:
1.1.2.4 dwinter 81: def harvest_page(self):
82: """harvest main"""
83: try:
84: return self.pt_render()
85: except:
86: logging.error("cannot harvest: %s"%self.absolute_url())
1.1.2.1 dwinter 87:
1.1.2.4 dwinter 88:
89:
1.1.2.1 dwinter 90: def manage_addMPIWGTemplateForm(self):
91: """Form for adding"""
92: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGTemplate.zpt')).__of__(self)
93: return pt()
94:
95:
96:
97: def manage_addMPIWGTemplate(self, MPIWGType,id, text="",title=None,weight=0,REQUEST=None):
98: "Add a Page Template with optional file content."
99: if type(MPIWGType)==StringType:
100: MPIWGTypes=[MPIWGType]
101: else:
102: MPIWGTypes=MPIWGType
103:
104: for singleType in MPIWGTypes:
105:
106:
107: if REQUEST is None:
108: self._setObject(id, MPIWGTemplate(id, text,EchoType=singleType))
109: ob = getattr(self, id)
110:
111: if title:
112: ob.pt_setTitle(title)
113: return ob
114: else:
115: file = REQUEST.form.get('file')
116: headers = getattr(file, 'headers', None)
117: if headers is None or not file.filename:
118: zpt = MPIWGTemplate(id,MPIWGType=singleType)
119: else:
120: zpt = MPIWGTemplate(id, file, headers.get('content_type'))
121:
122: self._setObject(id, zpt)
123: ob = getattr(self, id)
124: if title:
125: ob.pt_setTitle(title)
126:
127: try:
128: u = self.DestinationURL()
129: except AttributeError:
130: u = REQUEST['URL1']
131:
132: ob = getattr(self, id)
133: ob.weight=weight
134:
135: REQUEST.RESPONSE.redirect(u+'/manage_main')
136: return ''
137:
1.1.2.3 casties 138:
139:
140: class MPIWGFolder(Folder):
141: """special Folder object for MPIWG website """
142:
143: meta_type="MPIWGFolder"
144:
145: manage_options=Folder.manage_options+(
146: {'label':'Change Weight','action':'changeWeightForm'},
147: {'label':'Main Config','action':'changeForm'},
148: )
149:
150: changeWeightForm = PageTemplateFile('zpt/MPIWGFolderChangeWeight', globals())
151: changeForm = PageTemplateFile('zpt/MPIWGFolderConfig', globals())
152:
153: def __init__(self, id, title=None, weight=0, canonicalName=None):
154: self.id = str(id)
155: self.weight = weight
156: if title is None:
157: self.title = id
158: else:
159: self.title = title
160:
161: if canonicalName is None:
162: self.canonicalName = self.id
163: else:
164: self.canonicalName = canonicalName
165:
166: def changeWeight(self,weight,RESPONSE=None):
167: """change weight"""
168: self.weight=weight
169: if RESPONSE is not None:
170: RESPONSE.redirect('manage_main')
171:
172: def changeMPIWGFolder(self, title=None, weight=None, canonicalName=None, RESPONSE=None):
173: """change everything"""
174: if title is not None:
175: self.title = title
176: if weight is not None:
177: self.weight = weight
178: if canonicalName is not None:
179: self.canonicalName = canonicalName
180: if RESPONSE is not None:
181: RESPONSE.redirect('manage_main')
182:
183: getBreadcrumbs = getBreadcrumbs
184:
185: getSection = getSection
186:
187:
188: def manage_addMPIWGFolderForm(self):
189: """Form for adding"""
190: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGFolder.zpt')).__of__(self)
191: return pt()
192:
193: def manage_addMPIWGFolder(self, id, title=None,weight=0,RESPONSE=None):
194: "Add a MPIWG Folder."
195: newObj=MPIWGFolder(id,title,weight)
196: self.Destination()._setObject(id,newObj)
197: if RESPONSE is not None:
198: RESPONSE.redirect('manage_main')
199:
1.1.2.5 ! casties 200:
! 201:
! 202: class MPIWGFeature(Folder):
! 203: """special object for feature texts on the MPIWG website """
! 204:
! 205: meta_type="MPIWGFeature"
! 206:
! 207: manage_options=Folder.manage_options+(
! 208: {'label':'Change Weight','action':'changeWeightForm'},
! 209: {'label':'Main Config','action':'changeForm'},
! 210: )
! 211:
! 212: changeWeightForm = PageTemplateFile('zpt/MPIWGFeatureChangeWeight', globals())
! 213: changeForm = PageTemplateFile('zpt/MPIWGFeatureConfig', globals())
! 214:
! 215: def __init__(self, id, title=None, weight=0):
! 216: self.id = str(id)
! 217: self.weight = weight
! 218: if title is None:
! 219: self.title = id
! 220: else:
! 221: self.title = title
! 222:
! 223: # add language folder and sample templates
! 224: self.manage_addFolder('en')
! 225: folder = getattr(self, 'en')
! 226: introid = 'intro.pt'
! 227: folder._setObject(introid, ZopePageTemplate(introid))
! 228: intro = getattr(folder,introid)
! 229: intro.pt_edit(open(os.path.join(package_home(globals()),'zpt/MPIWGFeature_template_intro.zpt')).read(),'text/html')
! 230: mainid = 'main.pt'
! 231: folder._setObject(mainid, ZopePageTemplate(mainid))
! 232: main = getattr(folder,mainid)
! 233: main.pt_edit(open(os.path.join(package_home(globals()),'zpt/MPIWGFeature_template_main.zpt')).read(),'text/html')
! 234:
! 235:
! 236: def index_html(self):
! 237: """default index page"""
! 238: return self.getMain()
! 239:
! 240: def getIntro(self, **args):
! 241: """returns the intro as PageTemplate"""
! 242: pt = getattr(self.en, 'intro.pt')
! 243: return pt(**args)
! 244:
! 245: def getMain(self, **args):
! 246: """returns the main part as PageTemplate"""
! 247: pt = getattr(self.en, 'main.pt')
! 248: return pt(**args)
! 249:
! 250: def getFrontpageImg(self):
! 251: """returns the image object for the frontpage"""
! 252: img = getattr(self, 'img-frontpage.jpg')
! 253: return img
! 254:
! 255: def getFrontpageImgUrl(self):
! 256: """returns the URL of the image object for the frontpage"""
! 257: img = getattr(self, 'img-frontpage.jpg')
! 258: return img.absolute_url()
! 259:
! 260: def getThumbImg(self):
! 261: """returns the image object for the frontpage thumbnail"""
! 262: img = getattr(self, 'img-thumb.jpg')
! 263: return img
! 264:
! 265: def getThumbImgUrl(self):
! 266: """returns the URL of the image object for the frontpage thumbnail"""
! 267: img = getattr(self, 'img-thumb.jpg')
! 268: return img.absolute_url()
! 269:
! 270:
! 271: def changeWeight(self,weight,RESPONSE=None):
! 272: """change weight"""
! 273: self.weight=weight
! 274: if RESPONSE is not None:
! 275: RESPONSE.redirect('manage_main')
! 276:
! 277:
! 278: def changeMPIWGFeature(self, title=None, weight=None, RESPONSE=None):
! 279: """change everything"""
! 280: if title is not None:
! 281: self.title = title
! 282: if weight is not None:
! 283: self.weight = weight
! 284: if RESPONSE is not None:
! 285: RESPONSE.redirect('manage_main')
! 286:
! 287: getBreadcrumbs = getBreadcrumbs
! 288:
! 289: getSection = getSection
! 290:
! 291:
! 292: def manage_addMPIWGFeatureForm(self):
! 293: """Form for adding"""
! 294: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGFeature.zpt')).__of__(self)
! 295: return pt()
! 296:
! 297: def manage_addMPIWGFeature(self, id, title=None,weight=0,RESPONSE=None):
! 298: "Add a MPIWG Feature object"
! 299: newObj=MPIWGFeature(id,title,weight)
! 300: self.Destination()._setObject(id,newObj)
! 301: if RESPONSE is not None:
! 302: RESPONSE.redirect('manage_main')
! 303:
1.1.2.1 dwinter 304:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>