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];
if (settings.openInline) {
settings.autoClose = $el.crmSnippet('isOriginalUrl');
$(this).off('.openInline').on('click.openInline', settings.openInline, function(e) {
- if ($(this).is(exclude + ', .crm-popup')) {
+ if ($(this).is(exclude + ', .crm-popup, [target=crm-popup]')) {
return;
}
if ($(this).hasClass('open-inline-noreturn')) {
$(function($) {
$('body')
- .on('click', 'a.crm-popup', CRM.popup)
+ .on('click', 'a.crm-popup, a[target=crm-popup]', CRM.popup)
// Close unsaved dialog messages
.on('dialogopen', function(e) {
$('.alert.unsaved-dialog .ui-notify-cross', '#crm-notification-container').click();