forked from extern/egroupware
Try to send the request as POST if the url is exceeding certain number of characters.
This commit is contained in:
parent
886b2e0357
commit
a0a0dd1aa0
@ -120,7 +120,47 @@ function nm_action(_action, _senders, _target, _ids)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'popup':
|
case 'popup':
|
||||||
egw.open_link(url,target,_action.data.width+'x'+_action.data.height);
|
|
||||||
|
// Accoring to microsoft, IE 10/11 can only accept a url with 2083 caharacters
|
||||||
|
// therefore we need to send request to compose window with POST method
|
||||||
|
// instead of GET. We create a temporary <Form> and will post emails.
|
||||||
|
// ** WebServers and other browsers also have url length limit:
|
||||||
|
// Firefox:~ 65k, Safari:80k, Chrome: 2MB, Apache: 4k, Nginx: 4k
|
||||||
|
if (url.length > 2083)
|
||||||
|
{
|
||||||
|
var $tmpForm = jQuery(document.createElement('form'));
|
||||||
|
var $tmpSubmitInput = jQuery(document.createElement('input')).attr({type:"submit"});
|
||||||
|
var params = url.split('&');
|
||||||
|
url = params[0];
|
||||||
|
for (var i=1;i<params.length;i++)
|
||||||
|
{
|
||||||
|
var values = params[i].split('=');
|
||||||
|
switch (values[0])
|
||||||
|
{
|
||||||
|
case 'cd':
|
||||||
|
case 'tz':
|
||||||
|
case 'menuaction':
|
||||||
|
case 'hasupdate':
|
||||||
|
url = url + '&' + values.join('=');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$tmpForm.append(jQuery(document.createElement('input')).attr({name:values[0], type:"text", value: values[1]}));
|
||||||
|
}
|
||||||
|
var postRequest = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
var popup_window = egw.open_link(url,target,_action.data.width+'x'+_action.data.height);
|
||||||
|
|
||||||
|
if (postRequest)
|
||||||
|
{
|
||||||
|
popup_window.name = popup_window.name ? popup_window.name : 'postRequest';
|
||||||
|
// Set the temporary form's attributes
|
||||||
|
$tmpForm.attr({target:popup_window.name, action:url, method:"post"})
|
||||||
|
.append($tmpSubmitInput).appendTo('body');
|
||||||
|
$tmpForm.submit();
|
||||||
|
// Remove the form after submit
|
||||||
|
$tmpForm.remove();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'long_task':
|
case 'long_task':
|
||||||
|
Loading…
Reference in New Issue
Block a user