function submitOnce(obj, formId, procText) {
// if named button clicked, change text
if (obj.value != null) {
- obj.value = procText + " ...";
+ cj('input[name=' + obj.name + ']').val(procText + " ...");
}
cj(obj).closest('form').attr('data-warn-changes', 'false');
if (document.getElementById) { // disable submit button for newer browsers
- obj.disabled = true;
+ cj('input[name=' + obj.name + ']').attr("disabled", true);
document.getElementById(formId).submit();
return true;
}
* @param options object
*/
$.fn.crmSelect2 = function(options) {
+ if (options === 'destroy') {
+ return $(this).each(function() {
+ $(this)
+ .removeClass('crm-ajax-select')
+ .select2('destroy');
+ });
+ }
return $(this).each(function () {
var
$el = $(this),
* @param options object
*/
$.fn.crmEntityRef = function(options) {
+ if (options === 'destroy') {
+ return $(this).each(function() {
+ var entity = $(this).data('api-entity') || '';
+ $(this)
+ .off('.crmEntity')
+ .removeClass('crm-form-entityref crm-' + entity.toLowerCase() + '-ref')
+ .crmSelect2('destroy');
+ });
+ }
options = options || {};
options.select = options.select || {};
return $(this).each(function() {
selectParams = {};
$el.data('api-entity', entity);
$el.data('select-params', $.extend({}, $el.data('select-params') || {}, options.select));
- $el.data('api-params', $.extend({}, $el.data('api-params') || {}, options.api));
+ $el.data('api-params', $.extend(true, {}, $el.data('api-params') || {}, options.api));
$el.data('create-links', options.create || $el.data('create-links'));
$el.addClass('crm-form-entityref crm-' + entity.toLowerCase() + '-ref');
var settings = {
minimumInputLength: 1,
formatResult: CRM.utils.formatSelect2Result,
formatSelection: function(row) {
- return row.label;
+ return (row.prefix !== undefined ? row.prefix + ' ' : '') + row.label + (row.suffix !== undefined ? ' ' + row.suffix : '');
},
escapeMarkup: function (m) {return m;},
initSelection: function($el, callback) {
});
}
+ /**
+ * @see http://wiki.civicrm.org/confluence/display/CRMDOC/crmDatepicker
+ */
$.fn.crmDatepicker = function(options) {
return $(this).each(function() {
if ($(this).is('.crm-form-date-wrapper .crm-hidden-date')) {
$timeField = $(),
$clearLink = $();
- if (settings.allowClear !== undefined ? settings.allowClear : !$dataField.hasClass('required')) {
+ if (settings.allowClear !== undefined ? settings.allowClear : !$dataField.is('.required, [required]')) {
$clearLink = $('<a class="crm-hover-button crm-clear-link" title="'+ ts('Clear') +'"><span class="icon ui-icon-close"></span></a>')
.insertAfter($dataField);
}
$dateField = $('<input>').insertAfter($dataField);
copyAttributes($dataField, $dateField, ['placeholder', 'style', 'class', 'disabled']);
$dateField.addClass('crm-form-text crm-form-date');
- settings.dateFormat = settings.dateFormat || CRM.config.dateInputFormat;
- settings.changeMonth = _.includes('m', settings.dateFormat);
- settings.changeYear = _.includes('y', settings.dateFormat);
+ settings.date = typeof settings.date === 'string' ? settings.date : CRM.config.dateInputFormat;
+ settings.changeMonth = _.includes('m', settings.date);
+ settings.changeYear = _.includes('y', settings.date);
$dateField.datepicker(settings).change(updateDataField);
}
// Rudimentary validation. TODO: Roll into use of jQUery validate and ui.datepicker.validation
function isValidDate() {
try {
- $.datepicker.parseDate(settings.dateFormat, $dateField.val());
+ $.datepicker.parseDate(settings.date, $dateField.val());
return true;
} catch (e) {
return false;
else if (row.icon_class) {
markup += '<div class="crm-select2-icon"><div class="crm-icon ' + row.icon_class + '-icon"></div></div>';
}
- markup += '<div><div class="crm-select2-row-label '+(row.label_class || '')+'">' + row.label + '</div>';
- markup += '<div class="crm-select2-row-description">';
+ markup += '<div><div class="crm-select2-row-label '+(row.label_class || '')+'">' +
+ (row.prefix !== undefined ? row.prefix + ' ' : '') + row.label + (row.suffix !== undefined ? ' ' + row.suffix : '') +
+ '</div>' +
+ '<div class="crm-select2-row-description">';
$.each(row.description || [], function(k, text) {
markup += '<p>' + text + '</p>';
});
CRM.confirm({
title: ts('Preview'),
resizable: true,
+ // Prevent overlap with the menubar
+ maxHeight: $(window).height() - 30,
+ position: {my: 'center', at: 'center center+15', of: window},
message: '<div class="crm-custom-image-popup"><img style="max-width: 100%" src="' + $(this).attr('href') + '"></div>',
options: null
});
};
// Round while preserving sigfigs
- CRM.sigfig = function(n, digits) {
+ CRM.utils.sigfig = function(n, digits) {
var len = ("" + n).length;
var scale = Math.pow(10.0, len-digits);
return Math.round(n / scale) * scale;