Annotation of MPIWGWeb/MPIWGTemplate.py, revision 1.1.2.3
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.1 dwinter 81:
82: def manage_addMPIWGTemplateForm(self):
83: """Form for adding"""
84: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGTemplate.zpt')).__of__(self)
85: return pt()
86:
87:
88:
89: def manage_addMPIWGTemplate(self, MPIWGType,id, text="",title=None,weight=0,REQUEST=None):
90: "Add a Page Template with optional file content."
91: if type(MPIWGType)==StringType:
92: MPIWGTypes=[MPIWGType]
93: else:
94: MPIWGTypes=MPIWGType
95:
96: for singleType in MPIWGTypes:
97:
98:
99: if REQUEST is None:
100: self._setObject(id, MPIWGTemplate(id, text,EchoType=singleType))
101: ob = getattr(self, id)
102:
103: if title:
104: ob.pt_setTitle(title)
105: return ob
106: else:
107: file = REQUEST.form.get('file')
108: headers = getattr(file, 'headers', None)
109: if headers is None or not file.filename:
110: zpt = MPIWGTemplate(id,MPIWGType=singleType)
111: else:
112: zpt = MPIWGTemplate(id, file, headers.get('content_type'))
113:
114: self._setObject(id, zpt)
115: ob = getattr(self, id)
116: if title:
117: ob.pt_setTitle(title)
118:
119: try:
120: u = self.DestinationURL()
121: except AttributeError:
122: u = REQUEST['URL1']
123:
124: ob = getattr(self, id)
125: ob.weight=weight
126:
127: REQUEST.RESPONSE.redirect(u+'/manage_main')
128: return ''
129:
1.1.2.3 ! casties 130:
! 131:
! 132: class MPIWGFolder(Folder):
! 133: """special Folder object for MPIWG website """
! 134:
! 135: meta_type="MPIWGFolder"
! 136:
! 137: manage_options=Folder.manage_options+(
! 138: {'label':'Change Weight','action':'changeWeightForm'},
! 139: {'label':'Main Config','action':'changeForm'},
! 140: )
! 141:
! 142: changeWeightForm = PageTemplateFile('zpt/MPIWGFolderChangeWeight', globals())
! 143: changeForm = PageTemplateFile('zpt/MPIWGFolderConfig', globals())
! 144:
! 145: def __init__(self, id, title=None, weight=0, canonicalName=None):
! 146: self.id = str(id)
! 147: self.weight = weight
! 148: if title is None:
! 149: self.title = id
! 150: else:
! 151: self.title = title
! 152:
! 153: if canonicalName is None:
! 154: self.canonicalName = self.id
! 155: else:
! 156: self.canonicalName = canonicalName
! 157:
! 158: def changeWeight(self,weight,RESPONSE=None):
! 159: """change weight"""
! 160: self.weight=weight
! 161: if RESPONSE is not None:
! 162: RESPONSE.redirect('manage_main')
! 163:
! 164: def changeMPIWGFolder(self, title=None, weight=None, canonicalName=None, RESPONSE=None):
! 165: """change everything"""
! 166: if title is not None:
! 167: self.title = title
! 168: if weight is not None:
! 169: self.weight = weight
! 170: if canonicalName is not None:
! 171: self.canonicalName = canonicalName
! 172: if RESPONSE is not None:
! 173: RESPONSE.redirect('manage_main')
! 174:
! 175: getBreadcrumbs = getBreadcrumbs
! 176:
! 177: getSection = getSection
! 178:
! 179:
! 180: def manage_addMPIWGFolderForm(self):
! 181: """Form for adding"""
! 182: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGFolder.zpt')).__of__(self)
! 183: return pt()
! 184:
! 185: def manage_addMPIWGFolder(self, id, title=None,weight=0,RESPONSE=None):
! 186: "Add a MPIWG Folder."
! 187: newObj=MPIWGFolder(id,title,weight)
! 188: self.Destination()._setObject(id,newObj)
! 189: if RESPONSE is not None:
! 190: RESPONSE.redirect('manage_main')
! 191:
1.1.2.1 dwinter 192:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>