diff --git a/js/Common.js b/js/Common.js index 60c156b9da68..276444273793 100644 --- a/js/Common.js +++ b/js/Common.js @@ -728,10 +728,16 @@ if (!CRM.vars) CRM.vars = {}; }; $.fn.crmAjaxTable = function() { + // Strip the ids from ajax urls to make pageLength storage more generic + function simplifyUrl(url) { + return typeof url === 'string' ? url.replace(/[&?]\w*id=\d+/g, '') : null; + } + return $(this).each(function() { // Recall pageLength for this table - if ($(this).data('ajax') && window.localStorage && localStorage['dataTablePageLength:' + $(this).data('ajax')]) { - $(this).data('pageLength', localStorage['dataTablePageLength:' + $(this).data('ajax')]); + var url = simplifyUrl($(this).data('ajax')); + if (url && window.localStorage && localStorage['dataTablePageLength:' + url]) { + $(this).data('pageLength', localStorage['dataTablePageLength:' + url]); } // Declare the defaults for DataTables var defaults = { @@ -762,7 +768,7 @@ if (!CRM.vars) CRM.vars = {}; // Remember pageLength $(this).on('length.dt', function(e, settings, len) { if (settings.ajax && window.localStorage) { - localStorage['dataTablePageLength:' + settings.ajax] = len; + localStorage['dataTablePageLength:' + simplifyUrl(settings.ajax)] = len; } }); //Make the DataTables call