121 |
121 |
122 w = self.w |
122 w = self.w |
123 req = self.req |
123 req = self.req |
124 _ = req._ |
124 _ = req._ |
125 w(u'<h1>%s</h1>\n' % _(self.title)) |
125 w(u'<h1>%s</h1>\n' % _(self.title)) |
126 # we don't want this in each sub-forms XXX |
|
127 w(u'<div id="progress">%s</div>' % self.req._('validating...')) |
|
128 for label, group, form in sorted((_(g), g, f) |
126 for label, group, form in sorted((_(g), g, f) |
129 for g, f in mainopts.iteritems()): |
127 for g, f in mainopts.iteritems()): |
130 status = css_class(self._group_status(group)) |
128 status = css_class(self._group_status(group)) |
131 w(u'<h2 class="propertiesform">%s</h2>\n' % |
129 w(u'<h2 class="propertiesform">%s</h2>\n' % |
132 (make_togglable_link('fieldset_' + group, label.capitalize()))) |
130 (make_togglable_link('fieldset_' + group, label.capitalize()))) |
139 for g, o in groupedopts.iteritems()): |
137 for g, o in groupedopts.iteritems()): |
140 status = css_class(self._group_status(group)) |
138 status = css_class(self._group_status(group)) |
141 w(u'<h2 class="propertiesform">%s</h2>\n' % |
139 w(u'<h2 class="propertiesform">%s</h2>\n' % |
142 (make_togglable_link('fieldset_' + group, label.capitalize()))) |
140 (make_togglable_link('fieldset_' + group, label.capitalize()))) |
143 w(u'<div id="fieldset_%s" %s>' % (group, status)) |
141 w(u'<div id="fieldset_%s" %s>' % (group, status)) |
144 |
142 |
145 # create selection |
143 # create selection |
146 sorted_objects = sorted((self.req.__('%s_%s' % (group, o)), o, f) |
144 sorted_objects = sorted((self.req.__('%s_%s' % (group, o)), o, f) |
147 for o, f in objects.iteritems()) |
145 for o, f in objects.iteritems()) |
148 for label, oid, form in sorted_objects: |
146 for label, oid, form in sorted_objects: |
149 w(u'''<div class="componentLink"><a href="javascript:noop();" onclick="javascript:toggleVisibility('field_%(oid)s_%(group)s')" class="componentTitle">%(label)s</a>''' % {'label':label, 'oid':oid, 'group':group}) |
147 w(u'<div class="component">') |
150 w(u''' (<div class="openlink"><a href="javascript:noop();" onclick="javascript:closeFieldset('fieldset_%(group)s')">%(label)s</a></div>)''' |
148 w(u'''<div class="componentLink"><a href="javascript:noop();" |
151 % {'label':_('close all'), 'group':group}) |
149 onclick="javascript:toggleVisibility('field_%(oid)s_%(group)s')" |
|
150 class="componentTitle">%(label)s</a>''' % {'label':label, 'oid':oid, 'group':group}) |
|
151 w(u''' (<div class="openlink"><a href="javascript:noop();" |
|
152 onclick="javascript:openFieldset('fieldset_%(group)s')">%(label)s</a></div>)''' |
|
153 % {'label':_('open all'), 'group':group}) |
152 w(u'</div>') |
154 w(u'</div>') |
153 docmsgid = '%s_%s_description' % (group, oid) |
155 docmsgid = '%s_%s_description' % (group, oid) |
154 doc = _(docmsgid) |
156 doc = _(docmsgid) |
155 if doc != docmsgid: |
157 if doc != docmsgid: |
156 w(u'<div class="helper">%s</div>' % html_escape(doc).capitalize()) |
158 w(u'<div class="helper">%s</div>' % html_escape(doc).capitalize()) |
157 |
159 w(u'</div>') |
158 w(u'<fieldset id="field_%(oid)s_%(group)s" class="%(group)s preferences">' |
160 w(u'<fieldset id="field_%(oid)s_%(group)s" class="%(group)s preferences hidden">' |
159 % {'oid':oid, 'group':group}) |
161 % {'oid':oid, 'group':group}) |
160 w(form) |
162 w(form) |
161 w(u'</fieldset>') |
163 w(u'</fieldset>') |
162 w(u'</div>') |
164 w(u'</div>') |
163 |
165 |
186 return entity |
188 return entity |
187 |
189 |
188 def form(self, formid, keys, splitlabel=False): |
190 def form(self, formid, keys, splitlabel=False): |
189 buttons = [SubmitButton()] |
191 buttons = [SubmitButton()] |
190 form = CompositeForm(self.req, domid=formid, action=self.build_url(), |
192 form = CompositeForm(self.req, domid=formid, action=self.build_url(), |
191 form_buttons=buttons, |
193 form_buttons=buttons, |
192 onsubmit="return validatePrefsForm('%s')" % formid, |
194 onsubmit="return validatePrefsForm('%s')" % formid, |
193 submitmsg=self.req._('changes applied')) |
195 submitmsg=self.req._('changes applied')) |
194 path = self.req.relative_path() |
196 path = self.req.relative_path() |
195 if '?' in path: |
197 if '?' in path: |
196 path, params = path.split('?', 1) |
198 path, params = path.split('?', 1) |
207 if splitlabel: |
209 if splitlabel: |
208 label = key.split('.')[-1] |
210 label = key.split('.')[-1] |
209 else: |
211 else: |
210 label = key |
212 label = key |
211 subform = EntityFieldsForm(self.req, entity=entity, set_error_url=False) |
213 subform = EntityFieldsForm(self.req, entity=entity, set_error_url=False) |
212 |
214 |
213 subform.append_field(PropertyValueField(name='value', label=label, |
215 subform.append_field(PropertyValueField(name='value', label=label, |
214 eidparam=True)) |
216 eidparam=True)) |
215 subform.vreg = self.vreg |
217 subform.vreg = self.vreg |
216 subform.form_add_hidden('pkey', key, eidparam=True) |
218 subform.form_add_hidden('pkey', key, eidparam=True) |
217 subform.form_add_hidden("current-value:%s" % entity.eid,) |
219 subform.form_add_hidden("current-value:%s" % entity.eid,) |
218 form.form_add_subform(subform) |
220 form.form_add_subform(subform) |
219 return subform |
221 return subform |
220 |
222 |
221 def is_user_prefs(cls, req, rset, row=None, col=0, **kwargs): |
223 def is_user_prefs(cls, req, rset, row=None, col=0, **kwargs): |
222 return req.user.eid == rset[row or 0][col] |
224 return req.user.eid == rset[row or 0][col] |
223 |
225 |
224 |
226 |
225 class EPropertiesForm(SystemEPropertiesForm): |
227 class EPropertiesForm(SystemEPropertiesForm): |
337 self.help = pdef['help'] |
339 self.help = pdef['help'] |
338 vocab = pdef['vocabulary'] |
340 vocab = pdef['vocabulary'] |
339 if vocab is not None: |
341 if vocab is not None: |
340 if callable(vocab): |
342 if callable(vocab): |
341 # list() just in case its a generator function |
343 # list() just in case its a generator function |
342 self.choices = list(vocab(form.req)) |
344 self.choices = list(vocab(form.req)) |
343 else: |
345 else: |
344 self.choices = vocab |
346 self.choices = vocab |
345 wdg = Select() |
347 wdg = Select() |
346 else: |
348 else: |
347 wdg = FIELDS[pdef['type']].widget() |
349 wdg = FIELDS[pdef['type']].widget() |
355 """specific renderer for cwproperties""" |
357 """specific renderer for cwproperties""" |
356 |
358 |
357 def open_form(self, form, values): |
359 def open_form(self, form, values): |
358 err = '<div class="formsg"></div>' |
360 err = '<div class="formsg"></div>' |
359 return super(EPropertiesFormRenderer, self).open_form(form, values) + err |
361 return super(EPropertiesFormRenderer, self).open_form(form, values) + err |
360 |
362 |
361 def _render_fields(self, fields, w, form): |
363 def _render_fields(self, fields, w, form): |
362 for field in fields: |
364 for field in fields: |
363 w(u'<div class="preffield">\n') |
365 w(u'<div class="preffield">\n') |
364 if self.display_label: |
366 if self.display_label: |
365 w(u'%s' % self.render_label(form, field)) |
367 w(u'%s' % self.render_label(form, field)) |