mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-23 08:23:12 +01:00
Get submit actions (like Insert in document) working
This commit is contained in:
parent
b05290d494
commit
ea838035b6
@ -172,6 +172,7 @@ class etemplate_widget_nextmatch extends etemplate_widget
|
|||||||
|
|
||||||
$value['start'] = (int)$queriedRange['start'];
|
$value['start'] = (int)$queriedRange['start'];
|
||||||
$value['num_rows'] = (int)$queriedRange['num_rows'];
|
$value['num_rows'] = (int)$queriedRange['num_rows'];
|
||||||
|
if($value['num_rows'] == 0) $value['num_rows'] = 20;
|
||||||
// if app supports parent_id / hierarchy ($value['parent_id'] not empty), set parent_id as filter
|
// if app supports parent_id / hierarchy ($value['parent_id'] not empty), set parent_id as filter
|
||||||
if (($parent_id = $value['parent_id']))
|
if (($parent_id = $value['parent_id']))
|
||||||
{
|
{
|
||||||
@ -687,6 +688,13 @@ class etemplate_widget_nextmatch extends etemplate_widget
|
|||||||
// On client, rows does not get its own namespace, but all apps are expecting it
|
// On client, rows does not get its own namespace, but all apps are expecting it
|
||||||
$value['rows'] = $value;
|
$value['rows'] = $value;
|
||||||
|
|
||||||
|
// Legacy support - action popups were not properly namespaced
|
||||||
|
$preserve = self::get_array(self::$request->preserv, $form_name);
|
||||||
|
if($value[$preserve['action_var']] && $content[$value[$preserve['action_var']].'_popup'])
|
||||||
|
{
|
||||||
|
$validated += $content[$value[$preserve['action_var']].'_popup'];
|
||||||
|
}
|
||||||
|
|
||||||
// Save current column settings as default (admins only)
|
// Save current column settings as default (admins only)
|
||||||
if($value['as_default'])
|
if($value['as_default'])
|
||||||
{
|
{
|
||||||
|
@ -114,7 +114,7 @@ function nm_action(_action, _senders, _target, _ids)
|
|||||||
// open div styled as popup contained in current form and named action.id+'_popup'
|
// open div styled as popup contained in current form and named action.id+'_popup'
|
||||||
if (nm_popup_action == null)
|
if (nm_popup_action == null)
|
||||||
{
|
{
|
||||||
nm_open_popup(_action, _ids);
|
nm_open_popup(_action, _ids.ids);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// fall through, if popup is open --> submit form
|
// fall through, if popup is open --> submit form
|
||||||
@ -145,12 +145,24 @@ function nm_action(_action, _senders, _target, _ids)
|
|||||||
"checkboxes": checkboxes_elem ? checkboxes_elem.value : null
|
"checkboxes": checkboxes_elem ? checkboxes_elem.value : null
|
||||||
};
|
};
|
||||||
value[nextmatch.options.settings.action_var]= _action.id;
|
value[nextmatch.options.settings.action_var]= _action.id;
|
||||||
|
if(_target && _target.id) value[_target.id] = true;
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
nextmatch.getInstanceManager().submit();
|
|
||||||
|
|
||||||
// Clear action in case there's another one
|
if(_action.data.nm_action == 'popup')
|
||||||
delete nextmatch.getValue;
|
{
|
||||||
|
nextmatch.getInstanceManager().submit();
|
||||||
|
|
||||||
|
// Clear action in case there's another one
|
||||||
|
delete nextmatch.getValue;
|
||||||
|
|
||||||
|
// TODO: force nextmatch to re-load affected rows
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Full POST
|
||||||
|
nextmatch.getInstanceManager().postSubmit();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -245,6 +257,27 @@ function nm_open_popup(_action, _ids)
|
|||||||
nm_popup_action = _action;
|
nm_popup_action = _action;
|
||||||
nm_popup_ids = _ids;
|
nm_popup_ids = _ids;
|
||||||
popup.style.display = 'block';
|
popup.style.display = 'block';
|
||||||
|
/*
|
||||||
|
Not working yet - DOM manipulation causes et2 problems
|
||||||
|
var dialog = jQuery('.action_popup-content',popup);
|
||||||
|
var d_buttons = [];
|
||||||
|
jQuery('button',popup).each(function(index) {
|
||||||
|
var but = jQuery(this);
|
||||||
|
d_buttons.push({
|
||||||
|
text: but.text(),
|
||||||
|
click: this.onclick ? this.onclick : function(e) {
|
||||||
|
dialog.dialog("close");
|
||||||
|
// Need to destroy the dialog, etemplate widget needs divs back where they were
|
||||||
|
dialog.dialog("destroy");
|
||||||
|
nm_popup_action.data.nextmatch.getRoot().getWidgetById(but.attr("id")).onclick.apply(nm_popup_action.data.nextmatch.getRoot().getWidgetById(but.attr("id")), e.currentTarget);}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
dialog.dialog({
|
||||||
|
title: jQuery('.promptheader',popup).text(),
|
||||||
|
modal: true,
|
||||||
|
buttons: d_buttons
|
||||||
|
});
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -257,16 +290,20 @@ function nm_submit_popup(button)
|
|||||||
{
|
{
|
||||||
button.form.submit_button.value = button.name; // set name of button (sub-action)
|
button.form.submit_button.value = button.name; // set name of button (sub-action)
|
||||||
}
|
}
|
||||||
|
else if (nm_popup_action.data.nextmatch)
|
||||||
|
{
|
||||||
|
nm_popup_action.data.nextmatch.getRoot().getWidgetById(button.id).clicked = true;
|
||||||
|
}
|
||||||
|
|
||||||
// Mangle senders to get IDs where nm_action() wants them
|
// Mangle senders to get IDs where nm_action() wants them
|
||||||
// No idea why this is needed
|
// No idea why this is needed
|
||||||
var ids = {ids:[]};
|
var ids = {ids:[]};
|
||||||
for(var i in nm_popup_ids)
|
for(var i in nm_popup_ids)
|
||||||
{
|
{
|
||||||
ids.ids.push(nm_popup_ids[i].id);
|
ids.ids.push(nm_popup_ids[i]);
|
||||||
}
|
}
|
||||||
// call regular nm_action to transmit action and senders correct
|
// call regular nm_action to transmit action and senders correct
|
||||||
nm_action(nm_popup_action,nm_popup_ids, null, ids);
|
nm_action(nm_popup_action,nm_popup_ids, button, ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -122,12 +122,15 @@ var et2_button = et2_baseWidget.extend([et2_IInput, et2_IDetachedDOM], {
|
|||||||
},
|
},
|
||||||
|
|
||||||
onclick: function(_node) {
|
onclick: function(_node) {
|
||||||
|
this.clicked = true;
|
||||||
|
|
||||||
// Execute the JS code connected to the event handler
|
// Execute the JS code connected to the event handler
|
||||||
if (this.options.onclick)
|
if (this.options.onclick)
|
||||||
{
|
{
|
||||||
// Exectute the legacy JS code
|
// Exectute the legacy JS code
|
||||||
if (!(et2_compileLegacyJS(this.options.onclick, this, _node))())
|
if (!(et2_compileLegacyJS(this.options.onclick, this, _node))())
|
||||||
{
|
{
|
||||||
|
this.clicked = false;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -135,10 +138,9 @@ var et2_button = et2_baseWidget.extend([et2_IInput, et2_IDetachedDOM], {
|
|||||||
// Submit the form
|
// Submit the form
|
||||||
if (this._type != "buttononly")
|
if (this._type != "buttononly")
|
||||||
{
|
{
|
||||||
this.clicked = true;
|
|
||||||
this.getInstanceManager().submit(this); //TODO: this only needs to be passed if it's in a datagrid
|
this.getInstanceManager().submit(this); //TODO: this only needs to be passed if it's in a datagrid
|
||||||
this.clicked = false;
|
|
||||||
}
|
}
|
||||||
|
this.clicked = false;
|
||||||
},
|
},
|
||||||
|
|
||||||
set_label: function(_value) {
|
set_label: function(_value) {
|
||||||
|
@ -293,6 +293,44 @@ etemplate2.prototype.submit = function(button)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Does a full form post submit.
|
||||||
|
* Only use this one if you need it, use the ajax submit() instead
|
||||||
|
*/
|
||||||
|
etemplate2.prototype.postSubmit = function()
|
||||||
|
{
|
||||||
|
// Get the form values
|
||||||
|
var values = this.getValues(this.widgetContainer);
|
||||||
|
|
||||||
|
// Trigger the submit event
|
||||||
|
var canSubmit = true;
|
||||||
|
this.widgetContainer.iterateOver(function(_widget) {
|
||||||
|
if (_widget.submit(values) === false)
|
||||||
|
{
|
||||||
|
canSubmit = false;
|
||||||
|
}
|
||||||
|
}, this, et2_ISubmitListener);
|
||||||
|
|
||||||
|
if (canSubmit)
|
||||||
|
{
|
||||||
|
var form = document.createElement("form");
|
||||||
|
form.method = "POST";
|
||||||
|
form.action = egw().webserverUrl +"/json.php?menuaction=etemplate::ajax_process_post";
|
||||||
|
|
||||||
|
var etemplate_id = document.createElement("input");
|
||||||
|
etemplate_id.name = 'etemplate_exec_id';
|
||||||
|
etemplate_id.value = this.etemplate_exec_id;
|
||||||
|
form.appendChild(etemplate_id);
|
||||||
|
|
||||||
|
var input = document.createElement("input");
|
||||||
|
input.name = 'value';
|
||||||
|
input.value = egw().jsonEncode(values);
|
||||||
|
form.appendChild(input);
|
||||||
|
|
||||||
|
form.submit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetches all input element values and returns them in an associative
|
* Fetches all input element values and returns them in an associative
|
||||||
* array. Widgets which introduce namespacing can use the internal _target
|
* array. Widgets which introduce namespacing can use the internal _target
|
||||||
|
Loading…
Reference in New Issue
Block a user