// http://civicrm.org/licensing
(function($, _) {
+ // FIXME: Much of this code is redundant with CRM.loadForm
var ajaxFormParams = {
dataType:'json',
beforeSubmit: function(arr, $form, options) {
$form.block();
},
+ beforeSerialize: function(form, options) {
+ // Copied from crm.ajax.js
+ if (window.CKEDITOR && window.CKEDITOR.instances) {
+ $.each(CKEDITOR.instances, function() {
+ this.updateElement && this.updateElement();
+ });
+ }
+ if (window.tinyMCE && tinyMCE.editors) {
+ $.each(tinyMCE.editors, function() {
+ this.save();
+ });
+ }
+ },
success: requestHandler,
error: errorHandler
};
o.trigger('crmFormSuccess', [response]);
$('.crm-inline-edit-container').addClass('crm-edit-ready');
var data = o.data('edit-params');
- var dependent = o.data('dependent-fields') || [];
+ var dependent = $((o.data('dependent-fields') || []).join(','));
// Clone the add-new link if replacing it, and queue the clone to be refreshed as a dependent block
if (o.hasClass('add-new') && response.addressId) {
data.aid = response.addressId;
var locNo = clData.locno++;
cl.attr('id', cl.attr('id').replace(locNo, clData.locno)).removeClass('form');
o.closest('.crm-summary-block').after(clone);
- $.merge(dependent, $('.crm-inline-edit', clone));
+ dependent = dependent.add($('.crm-inline-edit', clone));
}
$('a.ui-notify-close', '#crm-notification-container').click();
// Delete an address
}
else {
// Reload this block plus all dependent blocks
- var update = $.merge([o], dependent);
- _.each(update, reloadBlock);
+ reloadBlock(dependent.add(o));
CRM.status(ts('Saved'));
}
- // Update changelog tab and contact footer
- if (response.changeLog.count) {
- CRM.tabHeader.updateCount('#tab_log', response.changeLog.count);
- }
- $("#crm-record-log").replaceWith(response.changeLog.markup);
- // Refresh tab contents - Simple logging
- if (!CRM.reloadChangeLogTab && $('#changeLog').closest('.ui-tabs-panel').data('civiCrmSnippet')) {
- $('#changeLog').closest('.ui-tabs-panel').crmSnippet('destroy');
- }
}
else {
// Handle formRule error
$('.crm-container-snippet', o).replaceWith(response.content);
$('form', o).validate(CRM.validate.params);
$('form', o).ajaxForm(ajaxFormParams);
- o.trigger('crmFormError', [response]).trigger('crmFormLoad');
+ o.trigger('crmFormError', [response]).trigger('crmFormLoad').trigger('crmLoad');
}
- };
+ }
/**
* Configure optimistic locking mechanism for inplace editing
var errorTag = o.find('.update_oplock_ts');
if (errorTag.length > 0) {
$('<span>')
- .addClass('crm-lock-button')
+ .addClass('crm-lock-button css_right')
.appendTo(errorTag);
var buttonContainer = o.find('.crm-lock-button');
.click(function() {
$(form).find('input[name=oplock_ts]').val(errorTag.attr('data:update_oplock_ts'));
errorTag.parent().hide();
- $(this).closest('form').find('.form-submit.default').first().click();
+ $(this).closest('form').find('.crm-form-submit.default').first().click();
return false;
})
.appendTo(buttonContainer)
$('.crm-inline-edit.form form').unblock();
}
- $('document').ready(function() {
+ $(function() {
// don't perform inline edit during print mode
if (CRM.summaryPrint.mode) {
$('div').removeClass('crm-inline-edit');
}
})
// handle delete link within blocks
- .on('click', '.crm-delete-inline', function() {
+ .on('click', '.crm-delete-inline', function(e) {
var row = $(this).closest('tr');
var form = $(this).closest('form');
- row.addClass('hiddenElement');
+ row.hide();
$('input', row).val('');
//if the primary is checked for deleted block
//unset and set first as primary
$('[class$=is_primary] input:first', form).prop('checked', true );
}
$('.add-more-inline', form).show();
+ e.preventDefault();
})
// Delete an address
- .on('click', '.crm-inline-edit.address .delete-button', function() {
+ .on('click', '.crm-inline-edit.address .delete-button', function(e) {
var $block = $(this).closest('.crm-inline-edit.address');
- CRM.confirm(function() {
- CRM.api('address', 'delete', {id: $block.data('edit-params').aid}, {success:
- function(data) {
- CRM.status(ts('Address Deleted'));
+ CRM.confirm({message: ts('Are you sure you want to delete this address?')})
+ .on('crmConfirm:yes', function() {
+ CRM.api3('address', 'delete', {id: $block.data('edit-params').aid}, true)
+ .done(function(data) {
$('.crm-inline-edit-container').addClass('crm-edit-ready');
$block.remove();
- }
+ reloadBlock('.crm-inline-edit.address:not(.add-new)');
+ });
});
- },
- {
- message: ts('Are you sure you want to delete this address?')
- }
- );
- return false;
+ e.preventDefault();
})
// add more and set focus to new row
- .on('click', '.add-more-inline', function() {
+ .on('click', '.add-more-inline', function(e) {
var form = $(this).closest('form');
var row = $('tr[class="hiddenElement"]:first', form);
row.removeClass('hiddenElement');
if ($('tr[class="hiddenElement"]').length < 1) {
$(this).hide();
}
+ e.preventDefault();
});
// Trigger cancel button on esc keypress
$(document).keydown(function(key) {
}
$('#crm-contact-actions-list').hide();
})
+ .on('crmFormSuccess crmLoad', function(e, data) {
+ // Update changelog tab and contact footer
+ if (data && data.changeLog) {
+ if (data.changeLog.count) {
+ CRM.tabHeader.updateCount('#tab_log', data.changeLog.count);
+ }
+ if (data.changeLog.markup) {
+ $("#crm-record-log").replaceWith(data.changeLog.markup);
+ }
+ }
+ })
.on('crmFormSuccess', function(e, data) {
- // Reload changelog whenever an inline or popup form submits
- CRM.reloadChangeLogTab && CRM.reloadChangeLogTab();
+ // Refresh changeLog - advanced logging
+ if (CRM.reloadChangeLogTab) {
+ CRM.reloadChangeLogTab();
+ }
+ // Refresh changeLog - simple logging
+ // If we didn't get a changelog count in the response, force refresh the changelog tab to populate it
+ else {
+ CRM.tabHeader.resetTab('#tab_log', !(data && data.changeLog && data.changeLog.count));
+ }
// Refresh dependent blocks
if (data && data.reloadBlocks) {
- _.each(data.reloadBlocks, reloadBlock);
+ reloadBlock(data.reloadBlocks.join(','));
}
});
});