Commit 03dd6c06 authored by Aurelien Campeas's avatar Aurelien Campeas
Browse files

[reledit] relation edition : cleanup a bit #343123

--HG--
branch : tls-sprint
parent 61d026ced19f
......@@ -488,38 +488,29 @@ function inlineValidateAttributeForm(formid, rtype, eid, divid, reload) {
return false;
}
function inlineValidateRelationForm(formid, rtype, eid, divid, reload) {
function inlineValidateRelationForm(formid, rtype, eid, divid, vid) {
try {
var form = getNode(formid);
var zipped = formContents(form);
var d = asyncRemoteExec('edit_relation', 'apply', zipped[0], zipped[1], rtype, eid);
var d = asyncRemoteExec('edit_relation', 'apply', zipped[0], zipped[1], rtype, eid, vid);
} catch (ex) {
log('got exception', ex);
return false;
}
d.addCallback(function (result, req) {
handleFormValidationResponse(formid, noop, result);
if (reload) {
log(result[1]);
//document.location.href = result[1];
} else {
log(result[2]);
var fieldview = getNode(divid);
// XXX using innerHTML is very fragile and won't work if
// we mix XHTML and HTML
fieldview.innerHTML = result[2];
// switch inline form off only if no error
if (result[0]) {
// hide global error messages
jQuery('div.errorMessage').remove();
jQuery('#appMsg').hide();
cancelInlineEdit(eid, rtype, divid);
}
var fieldview = getNode(divid);
fieldview.innerHTML = result[2];
// switch inline form off only if no error
if (result[0]) {
// hide global error messages
jQuery('div.errorMessage').remove();
jQuery('#appMsg').hide();
cancelInlineEdit(eid, rtype, divid);
}
return false;
return false;
});
return false;
return false;
}
......
......@@ -405,7 +405,7 @@ class JSonController(Controller):
@jsonize
def js_edit_relation(self, action, names, values,
rtype, eid, role='subject', vid='list'):
rtype, eid, vid, role='subject'):
success, args = self.validate_form(action, names, values)
if success:
entity = self.req.eid_rset(eid).get_entity(0, 0)
......
......@@ -68,7 +68,7 @@ class FinalView(AnyRsetView):
def cell_call(self, row, col, props=None, displaytime=False, format='text/html'):
etype = self.rset.description[row][col]
value = self.rset.rows[row][col]
if etype == 'String':
entity, rtype = self.rset.related_entity(row, col)
if entity is not None:
......
......@@ -94,7 +94,7 @@ class ClickAndEditFormView(FormViewMixIn, EntityView):
ondblclick = "showInlineEditionForm(%(eid)s, '%(rtype)s', '%(divid)s')"
def cell_call(self, row, col, rtype=None, role='subject', reload=False,
vid='list'):
vid='textoutofcontext'):
"""display field to edit entity's `rtype` relation on double-click"""
rschema = self.schema.rschema(rtype)
entity = self.entity(row, col)
......@@ -105,43 +105,43 @@ class ClickAndEditFormView(FormViewMixIn, EntityView):
value = entity.printable_value(rtype)
else:
rset = entity.related(rtype, role)
value = ' %s ' % self.view(vid, rset, 'null')
value = self.view(vid, rset, 'null')
if not entity.has_perm('update'):
self.w(value)
return
if rschema.is_final():
self._edit_attribute(entity, value, rtype, role, reload, row, col)
form = self._build_attribute_form(entity, value, rtype, role, reload, row, col)
else:
self._edit_relation(entity, value, rtype, role, reload, row, col)
form = self._build_relation_form(entity, value, rtype, role, row, col, vid)
form.form_add_hidden(u'__maineid', entity.eid)
renderer = FormRenderer(display_label=False, display_help=False,
display_fields=[(rtype, role)],
table_class='', button_bar_class='buttonbar',
display_progress_div=False)
self.w(form.form_render(renderer=renderer))
def _edit_relation(self, entity, value, rtype, role, reload, row, col):
def _build_relation_form(self, entity, value, rtype, role, row, col, vid):
rtype = 'person_in_charge'
entity = self.entity(row, col)
divid = 'd%s' % make_uid('%s-%s' % (rtype, entity.eid))
event_data = {'divid' : divid, 'eid' : entity.eid, 'rtype' : rtype,
'reload' : dumps(reload)}
event_data = {'divid' : divid, 'eid' : entity.eid, 'rtype' : rtype, 'vid' : vid}
form = EntityFieldsForm(self.req, None, entity=entity, action='#',
domid='%s-form' % divid,
cssstyle='display: none',
onsubmit=("return inlineValidateRelationForm('%(divid)s-form', '%(rtype)s', "
"'%(eid)s', '%(divid)s', %(reload)s);" % event_data),
"'%(eid)s', '%(divid)s', '%(vid)s');" % event_data),
form_buttons=[SubmitButton(),
Button(stdmsgs.BUTTON_CANCEL,
onclick="cancelInlineEdit(%s,\'%s\',\'%s\')" %\
(entity.eid, rtype, divid))])
form.form_add_hidden(u'__maineid', entity.eid)
form.append_field(RelationField(name=rtype, sort=True,
widget=Select(dict(size=1)),
label=u' '))
renderer = FormRenderer(display_label=False, display_help=False,
display_fields=[(rtype, role)],
table_class='', button_bar_class='buttonbar',
display_progress_div=False)
self.w(tags.div(value, klass='editableField', id=divid,
ondblclick=self.ondblclick % event_data))
self.w(form.form_render(renderer=renderer))
return form
def _edit_attribute(self, entity, value, rtype, role, reload, row, col):
def _build_attribute_form(self, entity, value, rtype, role, reload, row, col):
eid = entity.eid
divid = 'd%s' % make_uid('%s-%s' % (rtype, eid))
event_data = {'divid' : divid, 'eid' : eid, 'rtype' : rtype,
......@@ -155,14 +155,9 @@ class ClickAndEditFormView(FormViewMixIn, EntityView):
domid='%s-form' % divid, action='#',
cssstyle='display: none',
onsubmit=self.onsubmit % event_data)
form.form_add_hidden(u'__maineid', eid)
renderer = FormRenderer(display_label=False, display_help=False,
display_fields=[(rtype, role)],
table_class='', button_bar_class='buttonbar',
display_progress_div=False)
self.w(tags.div(value, klass='editableField', id=divid,
ondblclick=self.ondblclick % event_data))
self.w(form.form_render(renderer=renderer))
return form
class EditionFormView(FormViewMixIn, EntityView):
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment