X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=js%2Fcrm.ajax.js;h=aabfd28f3aaf6b55edaf3d9d651258039ee65b8f;hb=f72dc3d8c7ba1c0441da976efc65bb493990141a;hp=9a3c3f1ce572d21cec0c0012a9a4840d339c7a83;hpb=bcef009a812a47000001a506f7c37be87665e7b8;p=civicrm-core.git diff --git a/js/crm.ajax.js b/js/crm.ajax.js index 9a3c3f1ce5..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'); @@ -517,12 +522,12 @@ added.push(identifier); } // display:none causes the form to not submit when pressing "enter" - $el.parents(buttonContainers).css({height: 0, padding: 0, margin: 0, overflow: 'hidden'}).find('.crm-button-icon').hide(); + $el.parents(buttonContainers).css({height: 0, padding: 0, margin: 0, overflow: 'hidden'}); }); $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