X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=js%2Fcrm.ajax.js;h=aabfd28f3aaf6b55edaf3d9d651258039ee65b8f;hb=6410620d48bfbbad7966c91b35a03443947dd58a;hp=e65bd7b2a22c946265f100899d9b50b24a6b6a5c;hpb=49d47ca8bc67cc07c5622f731366a6e01b4a3803;p=civicrm-core.git diff --git a/js/crm.ajax.js b/js/crm.ajax.js index e65bd7b2a2..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]; @@ -498,7 +503,7 @@ var buttonContainers = '.crm-submit-buttons, .action-link', buttons = [], added = []; - $(buttonContainers, $el).find('input.crm-form-submit, a.button, button').each(function() { + $(buttonContainers, $el).find('.crm-form-submit, .crm-form-xbutton, a.button, button').each(function() { var $el = $(this), label = $el.is('input') ? $el.attr('value') : $el.text(), identifier = $el.attr('name') || $el.attr('href'); @@ -522,7 +527,7 @@ $el.dialog('option', 'buttons', buttons); } // Allow a button to prevent ajax submit - $('input[data-no-ajax-submit=true]').click(function() { + $('input[data-no-ajax-submit=true], button[data-no-ajax-submit=true]').click(function() { $(this).closest('form').ajaxFormUnbind(); }); // For convenience, focus the first field