diff -r 3864c7dfddf0 -r 20f429eb5f46 web/views/editforms.py --- a/web/views/editforms.py Mon Oct 19 20:26:22 2009 +0200 +++ b/web/views/editforms.py Mon Oct 19 20:33:30 2009 +0200 @@ -112,6 +112,9 @@ attrcategories = ('primary', 'secondary', 'metadata') _onclick = u"showInlineEditionForm(%(eid)s, '%(rtype)s', '%(divid)s')" + _onsubmit = ("return inlineValidateRelationForm('%(rtype)s', '%(role)s', '%(eid)s', " + "'%(divid)s', %(reload)s, '%(vid)s', '%(default)s', '%(lzone)s');") + _cancelclick = "hideInlineEdit(%s,\'%s\',\'%s\')" _defaultlandingzone = (u'') @@ -134,16 +137,16 @@ display_help=False, display_fields=[(rtype, role)], table_class='', button_bar_class='buttonbar', display_progress_div=False) - def _build_form(self, entity, rtype, role, formid, default, onsubmit, reload, + def _build_form(self, entity, rtype, role, formid, default, reload, extradata=None, **formargs): - divid = 'd%s' % make_uid('%s-%s' % (rtype, entity.eid)) + divid = '%s-%s-%s' % (entity.eid, rtype, role) event_data = {'divid' : divid, 'eid' : entity.eid, 'rtype' : rtype, - 'reload' : dumps(reload), 'default' : default} + 'reload' : dumps(reload), 'default' : default, 'role' : role, 'vid' : u'', + 'lzone' : self._build_landing_zone(None)} if extradata: event_data.update(extradata) - onsubmit %= event_data - cancelclick = "hideInlineEdit(%s,\'%s\',\'%s\')" % (entity.eid, rtype, - divid) + onsubmit = self._onsubmit % event_data + cancelclick = self._cancelclick % (entity.eid, rtype, divid) form = self.vreg['forms'].select( formid, self.req, entity=entity, domid='%s-form' % divid, cssstyle='display: none', onsubmit=onsubmit, action='#', @@ -162,7 +165,7 @@ ): """display field to edit entity's `rtype` relation on click""" assert rtype - assert role in ('subject', 'object') + assert role in ('subject', 'object'), '%s is not an acceptable role value' % role if default is None: default = xml_escape(self.req._('')) entity = self.entity(row, col) @@ -170,17 +173,14 @@ lzone = self._build_landing_zone(landing_zone) # compute value, checking perms, build form if rschema.final: - onsubmit = ("return inlineValidateAttributeForm('%(rtype)s', '%(eid)s', '%(divid)s', " - "%(reload)s, '%(default)s');") - form = self._build_form( - entity, rtype, role, 'edition', default, onsubmit, reload, - attrcategories=self.attrcategories) + form = self._build_form(entity, rtype, role, 'edition', default, reload, + attrcategories=self.attrcategories) if not self.should_edit_attribute(entity, rschema, role, form): self.w(entity.printable_value(rtype)) return value = entity.printable_value(rtype) or default - self.attribute_form(lzone, value, form, - self._build_renderer(entity, rtype, role)) + self.relation_form(lzone, value, form, + self._build_renderer(entity, rtype, role)) else: if rvid is None: rvid = self._compute_best_vid(entity.e_schema, rschema, role) @@ -193,11 +193,8 @@ if rset: self.w(value) return - onsubmit = ("return inlineValidateRelationForm('%(rtype)s', '%(role)s', '%(eid)s', " - "'%(divid)s', %(reload)s, '%(vid)s', '%(default)s', '%(lzone)s');") - form = self._build_form( - entity, rtype, role, 'base', default, onsubmit, reload, - dict(vid=rvid, role=role, lzone=lzone)) + form = self._build_form(entity, rtype, role, 'base', default, reload, + dict(vid=rvid, lzone=lzone)) field = guess_field(entity.e_schema, entity.schema.rschema(rtype), role) form.append_field(field) self.relation_form(lzone, value, form, @@ -227,26 +224,6 @@ return False return True - def attribute_form(self, lzone, value, form, renderer): - """div (class=field) - +-xxx div - | +-xxx div (class=editableField) - | | +-landing zone - | +-value-xxx div - | +-value - +-form-xxx div - """ - w = self.w - w(u'
') - w(u'
' % form.event_data['divid']) - w(tags.div(lzone, klass='editableField', - onclick=self._onclick % form.event_data)) - w(u'
%s
' % - (form.event_data['divid'], value)) - w(u'
') - w(form.form_render(renderer=renderer)) - w(u'
') - def relation_form(self, lzone, value, form, renderer): """xxx-reledit div (class=field) +-xxx div (class="editableField")