web/views/formrenderers.py
changeset 3369 7b88d12b4ee2
parent 3293 69c0ba095536
parent 3360 b02df886eb3e
child 3377 dd9d292b6a6d
child 3388 b8be8fc77c27
equal deleted inserted replaced
3300:c7c4775a5619 3369:7b88d12b4ee2
   473         w(u'<td id="unrelatedDivs_%s"></td>' % eid)
   473         w(u'<td id="unrelatedDivs_%s"></td>' % eid)
   474         w(u'</tr>')
   474         w(u'</tr>')
   475         w(u'</table>')
   475         w(u'</table>')
   476         w(u'</fieldset>')
   476         w(u'</fieldset>')
   477 
   477 
       
   478     # NOTE: should_* and display_* method extracted and moved to the form to
       
   479     # ease overriding
       
   480 
   478     def inline_entities_form(self, w, form):
   481     def inline_entities_form(self, w, form):
   479         """create a form to edit entity's inlined relations"""
   482         """create a form to edit entity's inlined relations"""
   480         if not hasattr(form, 'inlined_relations'):
   483         if not hasattr(form, 'inlined_relations'):
   481             return
   484             return
   482         for rschema, targettypes, role in form.inlined_relations():
   485         for rschema, targettypes, role in form.inlined_relations():
   492                 self.inline_relation_form(w, form, rschema, targettype, role)
   495                 self.inline_relation_form(w, form, rschema, targettype, role)
   493 
   496 
   494     def inline_relation_form(self, w, form, rschema, targettype, role):
   497     def inline_relation_form(self, w, form, rschema, targettype, role):
   495         entity = form.edited_entity
   498         entity = form.edited_entity
   496         __ = self.req.pgettext
   499         __ = self.req.pgettext
       
   500         i18nctx = 'inlined:%s.%s.%s' % (entity.e_schema, rschema, role)
   497         w(u'<div id="inline%sslot">' % rschema)
   501         w(u'<div id="inline%sslot">' % rschema)
   498         existant = entity.has_eid() and entity.related(rschema)
   502         existant = form.display_inline_edition_form(w, rschema, targettype,
   499         if existant:
   503                                                     role, i18nctx)
   500             # display inline-edition view for all existing related entities
       
   501             w(form.view('inline-edition', existant, rtype=rschema, role=role,
       
   502                         ptype=entity.e_schema, peid=entity.eid))
       
   503         if role == 'subject':
   504         if role == 'subject':
   504             card = rschema.rproperty(entity.e_schema, targettype, 'cardinality')[0]
   505             card = rschema.rproperty(entity.e_schema, targettype, 'cardinality')[0]
   505         else:
   506         else:
   506             card = rschema.rproperty(targettype, entity.e_schema, 'cardinality')[1]
   507             card = rschema.rproperty(targettype, entity.e_schema, 'cardinality')[1]
   507         # there is no related entity and we need at least one: we need to
   508         # there is no related entity and we need at least one: we need to
   508         # display one explicit inline-creation view
   509         # display one explicit inline-creation view
   509         if form.should_display_inline_creation_form(rschema, existant, card):
   510         if form.should_display_inline_creation_form(rschema, existant, card):
   510             w(form.view('inline-creation', None, etype=targettype,
   511             form.display_inline_creation_form(w, rschema, targettype,
   511                         peid=entity.eid, ptype=entity.e_schema,
   512                                               role, i18nctx)
   512                         rtype=rschema, role=role))
       
   513             existant = True
   513             existant = True
   514         # we can create more than one related entity, we thus display a link
   514         # we can create more than one related entity, we thus display a link
   515         # to add new related entities
   515         # to add new related entities
   516         if form.should_display_add_new_relation_link(rschema, existant, card):
   516         if form.should_display_add_new_relation_link(rschema, existant, card):
   517             divid = "addNew%s%s%s:%s" % (targettype, rschema, role, entity.eid)
   517             divid = "addNew%s%s%s:%s" % (targettype, rschema, role, entity.eid)
   518             w(u'<div class="inlinedform" id="%s" cubicweb:limit="true">'
   518             w(u'<div class="inlinedform" id="%s" cubicweb:limit="true">'
   519               % divid)
   519               % divid)
   520             js = "addInlineCreationForm('%s', '%s', '%s', '%s')" % (
   520             js = "addInlineCreationForm('%s', '%s', '%s', '%s', '%s')" % (
   521                 entity.eid, targettype, rschema, role)
   521                 entity.eid, targettype, rschema, role, i18nctx)
   522             if card in '1?':
   522             if form.should_hide_add_new_relation_link(rschema, card):
   523                 js = "toggleVisibility('%s'); %s" % (divid, js)
   523                 js = "toggleVisibility('%s'); %s" % (divid, js)
   524             ctx = 'inlined:%s.%s.%s' % (entity.e_schema, rschema, role)
       
   525             w(u'<a class="addEntity" id="add%s:%slink" href="javascript: %s" >+ %s.</a>'
   524             w(u'<a class="addEntity" id="add%s:%slink" href="javascript: %s" >+ %s.</a>'
   526               % (rschema, entity.eid, js, __(ctx, 'add a %s' % targettype)))
   525               % (rschema, entity.eid, js, __(i18nctx, 'add a %s' % targettype)))
   527             w(u'</div>')
   526             w(u'</div>')
   528             w(u'<div class="trame_grise">&#160;</div>')
   527             w(u'<div class="trame_grise">&#160;</div>')
   529         w(u'</div>')
   528         w(u'</div>')
   530 
   529 
   531 
   530 
   545             w(u'<div id="div-%(divid)s">' % values)
   544             w(u'<div id="div-%(divid)s">' % values)
   546         else:
   545         else:
   547             w(u'<div id="notice-%s" class="notice">%s</div>' % (
   546             w(u'<div id="notice-%s" class="notice">%s</div>' % (
   548                 values['divid'], self.req._('click on the box to cancel the deletion')))
   547                 values['divid'], self.req._('click on the box to cancel the deletion')))
   549         w(u'<div class="iformBody">')
   548         w(u'<div class="iformBody">')
   550         values['removemsg'] = self.req.__('remove this %s' % form.edited_entity.e_schema)
   549         eschema = form.edited_entity.e_schema
       
   550         ctx = values.pop('i18nctx')
       
   551         values['removemsg'] = self.req.pgettext(ctx, 'remove this %s' % eschema)
   551         w(u'<div class="iformTitle"><span>%(title)s</span> '
   552         w(u'<div class="iformTitle"><span>%(title)s</span> '
   552           '#<span class="icounter">%(counter)s</span> '
   553           '#<span class="icounter">%(counter)s</span> '
   553           '[<a href="javascript: %(removejs)s;noop();">%(removemsg)s</a>]</div>'
   554           '[<a href="javascript: %(removejs)s;noop();">%(removemsg)s</a>]</div>'
   554           % values)
   555           % values)
   555         # cleanup values
   556         # cleanup values