304 |
304 |
305 class EntityCompositeFormRenderer(FormRenderer): |
305 class EntityCompositeFormRenderer(FormRenderer): |
306 """specific renderer for multiple entities edition form (muledit)""" |
306 """specific renderer for multiple entities edition form (muledit)""" |
307 id = 'composite' |
307 id = 'composite' |
308 |
308 |
|
309 _main_display_fields = None |
|
310 |
309 def render_fields(self, w, form, values): |
311 def render_fields(self, w, form, values): |
310 if not form.is_subform: |
312 if not form.is_subform: |
311 w(u'<table class="listing">') |
313 w(u'<table class="listing">') |
312 super(EntityCompositeFormRenderer, self).render_fields(w, form, values) |
314 super(EntityCompositeFormRenderer, self).render_fields(w, form, values) |
313 if not form.is_subform: |
315 if not form.is_subform: |
314 w(u'</table>') |
316 w(u'</table>') |
|
317 if self._main_display_fields: |
|
318 super(EntityCompositeFormRenderer, self)._render_fields( |
|
319 self._main_display_fields, w, form) |
315 |
320 |
316 def _render_fields(self, fields, w, form): |
321 def _render_fields(self, fields, w, form): |
317 if form.is_subform: |
322 if form.is_subform: |
318 entity = form.edited_entity |
323 entity = form.edited_entity |
319 values = form.form_previous_values |
324 values = form.form_previous_values |
332 if isinstance(field.widget, (fwdgs.Select, fwdgs.CheckBox, fwdgs.Radio)): |
337 if isinstance(field.widget, (fwdgs.Select, fwdgs.CheckBox, fwdgs.Radio)): |
333 field.widget.attrs['onchange'] = cbsetstate |
338 field.widget.attrs['onchange'] = cbsetstate |
334 elif isinstance(field.widget, fwdgs.Input): |
339 elif isinstance(field.widget, fwdgs.Input): |
335 field.widget.attrs['onkeypress'] = cbsetstate |
340 field.widget.attrs['onkeypress'] = cbsetstate |
336 w(u'<div>%s</div>' % field.render(form, self)) |
341 w(u'<div>%s</div>' % field.render(form, self)) |
337 w(u'</td>') |
342 w(u'</td></tr>') |
338 else: |
343 else: |
339 # main form, display table headers |
344 self._main_display_fields = fields |
340 w(u'<tr class="header">') |
345 subfields = [field for field in form.forms[0].fields |
341 w(u'<th align="left">%s</th>' |
346 if self.display_field(form, field) |
342 % tags.input(type='checkbox', title=self.req._('toggle check boxes'), |
347 and field.is_visible()] |
343 onclick="setCheckboxesState('eid', this.checked)")) |
348 if subfields: |
344 for field in self.forms[0].fields: |
349 # main form, display table headers |
345 if self.display_field(form, field) and field.is_visible(): |
350 w(u'<tr class="header">') |
|
351 w(u'<th align="left">%s</th>' % |
|
352 tags.input(type='checkbox', |
|
353 title=self.req._('toggle check boxes'), |
|
354 onclick="setCheckboxesState('eid', this.checked)")) |
|
355 for field in subfields: |
346 w(u'<th>%s</th>' % self.req._(field.label)) |
356 w(u'<th>%s</th>' % self.req._(field.label)) |
347 w(u'</tr>') |
357 w(u'</tr>') |
348 |
358 |
349 |
359 |
350 class EntityFormRenderer(EntityBaseFormRenderer): |
360 class EntityFormRenderer(EntityBaseFormRenderer): |
351 """specific renderer for entity edition form (edition)""" |
361 """specific renderer for entity edition form (edition)""" |
352 id = 'default' |
362 id = 'default' |