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"> </div>') |
527 w(u'<div class="trame_grise"> </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 |