From 7cf0b338862c282d3ffb68188825c91c982a73a6 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Wed, 21 Apr 2021 16:06:54 -0400 Subject: [PATCH] CRM.url - Encode url path if slashes in placeholder were also encoded --- js/crm.ajax.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/js/crm.ajax.js b/js/crm.ajax.js index b7ce1d9465..aabfd28f3a 100644 --- a/js/crm.ajax.js +++ b/js/crm.ajax.js @@ -22,14 +22,19 @@ mode = CRM.config && CRM.config.isFrontend ? 'front' : 'back'; } query = query || ''; - var frag = path.split('?'); - var url = tplURL[mode].replace("civicrm/placeholder-url-path", frag[0]); + var url, + frag = path.split('?'); + // Encode url path only if slashes in placeholder were also encoded + if (tplURL[mode].indexOf('civicrm/placeholder-url-path') >= 0) { + url = tplURL[mode].replace('civicrm/placeholder-url-path', frag[0]); + } else { + url = tplURL[mode].replace('civicrm%2Fplaceholder-url-path', encodeURIComponent(frag[0])); + } - if (!query) { + if (_.isEmpty(query)) { url = url.replace(/[?&]civicrm-placeholder-url-query=1/, ''); - } - else { - url = url.replace("civicrm-placeholder-url-query=1", typeof query === 'string' ? query : $.param(query)); + } else { + url = url.replace('civicrm-placeholder-url-query=1', typeof query === 'string' ? query : $.param(query)); } if (frag[1]) { url += (url.indexOf('?') < 0 ? '?' : '&') + frag[1]; -- 2.25.1