Etemplate - make editableWidget a submitListener, so if someone submits while editing, the edit is still saved.

This commit is contained in:
nathangray 2019-08-22 14:20:55 -06:00
parent 1889adadfb
commit 3e8f2274f2

View File

@ -21,7 +21,7 @@
* *
* @augments et2_inputWidget * @augments et2_inputWidget
*/ */
var et2_editableWidget = (function(){ "use strict"; return et2_inputWidget.extend( var et2_editableWidget = (function(){ "use strict"; return et2_inputWidget.extend(et2_ISubmitListener,
{ {
attributes: { attributes: {
readonly: { readonly: {
@ -141,6 +141,7 @@ var et2_editableWidget = (function(){ "use strict"; return et2_inputWidget.exten
// No change, do nothing // No change, do nothing
if(value == oldValue) return; if(value == oldValue) return;
// Submit // Submit
if(this.options.save_callback) if(this.options.save_callback)
{ {
@ -155,9 +156,39 @@ var et2_editableWidget = (function(){ "use strict"; return et2_inputWidget.exten
} }
else else
{ {
this.set_value(value);
return this.getInstanceManager().submit(); return this.getInstanceManager().submit();
} }
} },
/**
* Called whenever the template gets submitted.
* If we have a save_callback, we call that before the submit (no check on
* the result)
*
* @param _values contains the values which will be sent to the server.
* Listeners may change these values before they get submitted.
*/
submit: function(_values) {
if(this.options.readonly)
{
// Not currently editing, just continue on
return true;
}
// Change back to readonly
this.set_readonly(true);
var params = [this.get_value()];
if(this.options.save_callback_params)
{
params = params.concat(this.options.save_callback_params.split(','));
}
if(this.options.save_callback)
{
egw.json(this.options.save_callback, params, function() {
}, this, true, this).sendRequest();
}
return true;
}
});}).call(this); });}).call(this);