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];
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');
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