X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=js%2Fcrm.ajax.js;h=3ee5394097030ed6f75b0043d9036826edd986bb;hb=da8f0cf5b79bdf01e67fb96e5aa9120594ac5fc0;hp=c492f21b9ead3d182d3575d09ade617ab0dc8a59;hpb=9fab7c013cc2bc4908e3a77df8994c465a1ddbe1;p=civicrm-core.git diff --git a/js/crm.ajax.js b/js/crm.ajax.js index c492f21b9e..3ee5394097 100644 --- a/js/crm.ajax.js +++ b/js/crm.ajax.js @@ -12,7 +12,8 @@ var tplURL; CRM.url = function (path, query, mode) { if (typeof path === 'object') { - return tplURL = path; + tplURL = path; + return path; } if (!tplURL) { CRM.console('error', 'Error: CRM.url called before initialization'); @@ -206,7 +207,7 @@ }, _onFailure: function(data, status) { var msg, title = ts('Network Error'); - this.options.block && this.element.unblock(); + if (this.options.block) this.element.unblock(); this.element.trigger('crmAjaxFail', data); switch (status) { case 'Forbidden': @@ -239,7 +240,7 @@ _handleOrderLinks: function() { var that = this; $('a.crm-weight-arrow', that.element).click(function(e) { - that.options.block && that.element.block(); + if (that.options.block) that.element.block(); $.getJSON(that._formatUrl(this.href)).done(function() { that.refresh(); }); @@ -250,13 +251,13 @@ refresh: function() { var that = this; var url = this._formatUrl(this.options.url); - this.options.crmForm && $('form', this.element).ajaxFormUnbind(); + if (this.options.crmForm) $('form', this.element).ajaxFormUnbind(); if (this._originalContent === null) { this._originalContent = this.element.contents().detach(); } - this.options.block && this.element.block(); + if (this.options.block) this.element.block(); $.getJSON(url, function(data) { - that.options.block && that.element.unblock(); + if (that.options.block) that.element.unblock(); if (!$.isPlainObject(data)) { that._onFailure(data); return; @@ -271,7 +272,7 @@ that.element.html(data.content); that._handleOrderLinks(); that.element.trigger('crmLoad', data); - that.options.crmForm && that.element.trigger('crmFormLoad', data); + if (that.options.crmForm) that.element.trigger('crmFormLoad', data); }).fail(function(data, msg, status) { that._onFailure(data, status); }); @@ -286,7 +287,7 @@ } }); } - this.options.crmForm && $('form', this.element).ajaxFormUnbind(); + if (this.options.crmForm) $('form', this.element).ajaxFormUnbind(); }, _destroy: function() { this.element.removeClass('crm-ajax-container').trigger('crmUnload'); @@ -312,7 +313,7 @@ height: '75%' }; } - options && $.extend(true, settings, options); + if (options) $.extend(true, settings, options); settings.url = url; // Create new dialog if (settings.dialog) { @@ -372,12 +373,12 @@ validate: true, refreshAction: ['next_new', 'submit_savenext', 'upload_new'], cancelButton: '.cancel', - openInline: 'a.open-inline, a.button, a.action-item', + openInline: 'a.open-inline, a.button, a.action-item, a.open-inline-noreturn', onCancel: function(event) {} } }; // Move options that belong to crmForm. Others will be passed through to crmSnippet - options && $.each(options, function(key, value) { + if (options) $.each(options, function(key, value) { if (typeof(settings.crmForm[key]) !== 'undefined') { settings.crmForm[key] = value; } @@ -403,7 +404,7 @@ } } - widget.data('uiDialog') && widget.on('dialogbeforeclose', function(e) { + if (widget.data('uiDialog')) widget.on('dialogbeforeclose', function(e) { // CRM-14353 - Warn unsaved changes if user clicks close button or presses "esc" if (e.originalEvent) { cancelAction(); @@ -413,7 +414,7 @@ widget.on('crmFormLoad.crmForm', function(event, data) { var $el = $(this).attr('data-unsaved-changes', 'false'), settings = $el.crmSnippet('option', 'crmForm'); - settings.cancelButton && $(settings.cancelButton, this).click(function(e) { + if (settings.cancelButton) $(settings.cancelButton, this).click(function(e) { e.preventDefault(); var returnVal = settings.onCancel.call($el, e); if (returnVal !== false) { @@ -451,7 +452,7 @@ } } else { - $el.crmSnippet('option', 'block') && $el.unblock(); + if ($el.crmSnippet('option', 'block')) $el.unblock(); response.url = data.url; $el.html(response.content).trigger('crmLoad', response).trigger('crmFormLoad', response); if (response.status === 'form_error') { @@ -466,7 +467,7 @@ beforeSerialize: function(form, options) { if (window.CKEDITOR && window.CKEDITOR.instances) { $.each(CKEDITOR.instances, function() { - this.updateElement && this.updateElement(); + if (this.updateElement) this.updateElement(); }); } if (window.tinyMCE && tinyMCE.editors) { @@ -477,15 +478,19 @@ }, beforeSubmit: function(submission) { $.each(formErrors, function() { - this && this.close && this.close(); + if (this && this.close) this.close(); }); - $el.crmSnippet('option', 'block') && $el.block(); + if ($el.crmSnippet('option', 'block')) $el.block(); $el.trigger('crmFormSubmit', submission); } }, settings.ajaxForm)); if (settings.openInline) { settings.autoClose = $el.crmSnippet('isOriginalUrl'); $(settings.openInline, this).not(exclude + ', .crm-popup').click(function(event) { + if ($(this).hasClass('open-inline-noreturn')) { + // Force reset of original url + $el.data('civiCrmSnippet')._originalUrl = $(this).attr('href'); + } $el.crmSnippet('option', 'url', $(this).attr('href')).crmSnippet('refresh'); return false; }); @@ -507,14 +512,14 @@ if ($icon.length) { button.icons = {primary: $icon.attr('class')}; } else { - var action = $el.hasClass('cancel') ? 'close' : (identifier.substr(identifier.length-4) === '_new' ? 'plus' : 'check'); + var action = $el.attr('crm-icon') || ($el.hasClass('cancel') ? 'close' : 'check'); button.icons = {primary: 'ui-icon-' + action}; } buttons.push(button); 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'}); + $el.parents(buttonContainers).css({height: 0, padding: 0, margin: 0, overflow: 'hidden'}).find('.crm-button-icon').hide(); }); $el.dialog('option', 'buttons', buttons); } @@ -575,7 +580,7 @@ if ($table.length && $.fn.DataTable.fnIsDataTable($table[0]) && $table.dataTable().fnSettings().sAjaxSource) { // Refresh ALL datatables - needed for contact relationship tab $.each($.fn.dataTable.fnTables(), function() { - $(this).dataTable().fnSettings().sAjaxSource && $(this).unblock().dataTable().fnDraw(); + if ($(this).dataTable().fnSettings().sAjaxSource) $(this).unblock().dataTable().fnDraw(); }); } // Otherwise refresh the nearest crmSnippet