Fix some sidebar menus are not working for apps (eg. smallpart app)

This commit is contained in:
Hadi Nategh 2022-10-31 10:03:03 +01:00
parent e5a88c35f5
commit 3463363997

View File

@ -1131,19 +1131,20 @@ import {tapAndSwipe} from "../../api/js/tapandswipe";
var href_regexp = /^javascript:([^\(]+)\((.*)?\);?$/;
jQuery('#egw_fw_topmenu_items,#egw_fw_topmenu_info_items,#egw_fw_sidemenu,#egw_fw_footer').on('click','a[href^="javascript:"]',function(ev){
ev.stopPropagation(); // do NOT execute regular event, as it will violate CSP, when handler does NOT return false
var matches = this.href.match(href_regexp);
// fix for Chrome 94.0.4606.54 returning all but first single quote "'" in href as "%27" :(
var matches = this.href.replaceAll(/%27/g, "'").replaceAll(/%22/g, '"').match(href_regexp);
var args = [];
if (matches.length > 1 && matches[2] !== undefined)
{
try {
args = JSON.parse('['+decodeURI(matches[2])+']');
args = JSON.parse('['+matches[2]+']');
}
catch(e) { // deal with '-encloded strings (JSON allows only ")
catch(e) { // deal with '-enclosed strings (JSON allows only ")
args = JSON.parse('['+matches[2].replace(/','/g, '","').replace(/((^|,)'|'(,|$))/g, '$2"$3')+']');
}
}
args.unshift(matches[1]);
et2_call.apply(this, args);
if (matches[1] !== 'void') et2_call.apply(this, args);
return false; // IE11 seems to require this, ev.stopPropagation() does NOT stop link from being executed
});
});