web/views/formrenderers.py
changeset 4277 35cd057339b2
parent 4252 6c4f109c2b03
child 4278 24736a127bf1
equal deleted inserted replaced
4276:e2ed81c20e74 4277:35cd057339b2
   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+=\'&amp;__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>&#160;</th><td>&#160;</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"""