From: Coleman Watts Date: Thu, 5 May 2016 18:46:51 +0000 (-0400) Subject: CRM-18286 - Strip the ids out of ajax urls to make them more generic X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=ea7597bab38053d2202d441ba5582d5549f6dc5e;p=civicrm-core.git CRM-18286 - Strip the ids out of ajax urls to make them more generic --- diff --git a/js/Common.js b/js/Common.js index 60c156b9da..d9ec1d7a1d 100644 --- a/js/Common.js +++ b/js/Common.js @@ -728,10 +728,18 @@ if (!CRM.vars) CRM.vars = {}; }; $.fn.crmAjaxTable = function() { + // Strip the ids from ajax urls to make pageLength storage more generic + function simplifyUrl(ajax) { + // Datatables ajax prop could be a url string or an object containing the url + var url = typeof ajax === 'object' ? ajax.url : ajax; + 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 +770,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