203 if fieldset: |
203 if fieldset: |
204 w(u'<legend>%s</legend>' % self._cw._(fieldset)) |
204 w(u'<legend>%s</legend>' % self._cw._(fieldset)) |
205 w(u'<table class="%s">' % self.table_class) |
205 w(u'<table class="%s">' % self.table_class) |
206 for field in fields: |
206 for field in fields: |
207 w(u'<tr class="%s_%s_row">' % (field.name, field.role)) |
207 w(u'<tr class="%s_%s_row">' % (field.name, field.role)) |
208 if self.display_label: |
208 if self.display_label and field.label is not None: |
209 w(u'<th class="labelCol">%s</th>' % self.render_label(form, field)) |
209 w(u'<th class="labelCol">%s</th>' % self.render_label(form, field)) |
|
210 w('<td') |
|
211 if field.label is None: |
|
212 w(' colspan="2"') |
210 error = form.field_error(field) |
213 error = form.field_error(field) |
211 if error: |
214 if error: |
212 w(u'<td class="error">') |
215 w(u' class="error"') |
213 self.render_error(w, error) |
216 w(u'>') |
214 else: |
|
215 w(u'<td>') |
|
216 w(field.render(form, self)) |
217 w(field.render(form, self)) |
217 if self.display_help: |
218 if self.display_help: |
218 w(self.render_help(form, field)) |
219 w(self.render_help(form, field)) |
219 w(u'</td></tr>') |
220 w(u'</td></tr>') |
220 w(u'</table></fieldset>') |
221 w(u'</table></fieldset>') |
390 </td></tr> |
391 </td></tr> |
391 </tbody> |
392 </tbody> |
392 </table>""" % tuple(button.render(form) for button in form.form_buttons)) |
393 </table>""" % tuple(button.render(form) for button in form.form_buttons)) |
393 else: |
394 else: |
394 super(EntityFormRenderer, self).render_buttons(w, form) |
395 super(EntityFormRenderer, self).render_buttons(w, form) |
395 |
|
396 def relations_form(self, w, form): |
|
397 try: |
|
398 srels_by_cat = form.srelations_by_category('generic', 'add', strict=True) |
|
399 warn('[3.6] %s: srelations_by_category is deprecated, override ' |
|
400 'editable_relations instead' % classid(form), DeprecationWarning) |
|
401 except AttributeError: |
|
402 srels_by_cat = form.editable_relations() |
|
403 if not srels_by_cat: |
|
404 return u'' |
|
405 req = self._cw |
|
406 _ = req._ |
|
407 __ = _ |
|
408 label = u'%s :' % __('This %s' % form.edited_entity.e_schema).capitalize() |
|
409 eid = form.edited_entity.eid |
|
410 w(u'<fieldset class="subentity">') |
|
411 w(u'<legend class="iformTitle">%s</legend>' % label) |
|
412 w(u'<table id="relatedEntities">') |
|
413 for rschema, target, related in form.relations_table(): |
|
414 # already linked entities |
|
415 if related: |
|
416 w(u'<tr><th class="labelCol">%s</th>' % rschema.display_name(req, target)) |
|
417 w(u'<td>') |
|
418 w(u'<ul>') |
|
419 for viewparams in related: |
|
420 w(u'<li class="invisible">%s<div id="span%s" class="%s">%s</div></li>' |
|
421 % (viewparams[1], viewparams[0], viewparams[2], viewparams[3])) |
|
422 if not form.force_display and form.maxrelitems < len(related): |
|
423 link = (u'<span class="invisible">' |
|
424 '[<a href="javascript: window.location.href+=\'&__force_display=1\'">%s</a>]' |
|
425 '</span>' % self._cw._('view all')) |
|
426 w(u'<li class="invisible">%s</li>' % link) |
|
427 w(u'</ul>') |
|
428 w(u'</td>') |
|
429 w(u'</tr>') |
|
430 pendings = list(form.restore_pending_inserts()) |
|
431 if not pendings: |
|
432 w(u'<tr><th> </th><td> </td></tr>') |
|
433 else: |
|
434 for row in pendings: |
|
435 # soon to be linked to entities |
|
436 w(u'<tr id="tr%s">' % row[1]) |
|
437 w(u'<th>%s</th>' % row[3]) |
|
438 w(u'<td>') |
|
439 w(u'<a class="handle" title="%s" href="%s">[x]</a>' % |
|
440 (_('cancel this insert'), row[2])) |
|
441 w(u'<a id="a%s" class="editionPending" href="%s">%s</a>' |
|
442 % (row[1], row[4], xml_escape(row[5]))) |
|
443 w(u'</td>') |
|
444 w(u'</tr>') |
|
445 w(u'<tr id="relationSelectorRow_%s" class="separator">' % eid) |
|
446 w(u'<th class="labelCol">') |
|
447 w(u'<select id="relationSelector_%s" tabindex="%s" ' |
|
448 'onchange="javascript:showMatchingSelect(this.options[this.selectedIndex].value,%s);">' |
|
449 % (eid, req.next_tabindex(), xml_escape(dumps(eid)))) |
|
450 w(u'<option value="">%s</option>' % _('select a relation')) |
|
451 for i18nrtype, rschema, target in srels_by_cat: |
|
452 # more entities to link to |
|
453 w(u'<option value="%s_%s">%s</option>' % (rschema, target, i18nrtype)) |
|
454 w(u'</select>') |
|
455 w(u'</th>') |
|
456 w(u'<td id="unrelatedDivs_%s"></td>' % eid) |
|
457 w(u'</tr>') |
|
458 w(u'</table>') |
|
459 w(u'</fieldset>') |
|
460 |
|
461 # NOTE: should_* and display_* method extracted and moved to the form to |
396 # NOTE: should_* and display_* method extracted and moved to the form to |
462 # ease overriding |
397 # ease overriding |
463 |
398 |
464 def inline_entities_form(self, w, form): |
399 def inline_entities_form(self, w, form): |
465 """create a form to edit entity's inlined relations""" |
400 """create a form to edit entity's inlined relations""" |