drupal-civicrm/sites/all/modules/backup_migrate/backup_migrate.js
2018-01-14 13:10:16 +00:00

115 lines
5.3 KiB
JavaScript

(function($) {
Drupal.behaviors.backupMigrate = {
attach: function(context) {
if (Drupal.settings.backup_migrate !== undefined) {
if (Drupal.settings.backup_migrate.dependents !== undefined) {
for (key in Drupal.settings.backup_migrate.dependents) {
info = Drupal.settings.backup_migrate.dependents[key];
dependent = $('#edit-' + info['dependent']);
for (key in info['dependencies']) {
$('[name="' + key + '"]').each(function() {
var dependentval = info['dependencies'][key];
var dependency = $(this);
(function(dependent, dependency) {
var checkval = function(inval) {
if (dependency.attr('type') == 'radio') {
var val = $('[name="' + dependency.attr('name') + '"]:checked').val();
return val == inval;
}
else if (dependency.attr('type') == 'checkbox') {
return dependency.is(':checked') && inval == dependency.val();
}
else {
return dependency.val() == inval;
}
return false;
};
if (!checkval(dependentval)) {
// Hide doesn't work inside collapsed fieldsets.
dependent.css('display', 'none');
}
dependency.bind('load change click keypress focus', function() {
if (checkval(dependentval)) {
dependent.slideDown();
}
else {
dependent.slideUp();
}
}).load();
})(dependent, dependency);
});
}
}
for (key in Drupal.settings.backup_migrate.destination_selectors) {
var info = Drupal.settings.backup_migrate.destination_selectors[key];
(function(info) {
var selector = $('#' + info['destination_selector']);
var copy = $('#' + info['copy'])
var copy_selector = $('#' + info['copy_destination_selector']);
var copy_selector_options = {};
// Store a copy of the secondary selector options.
copy_selector.find('optgroup').each(function() {
var label = $(this).attr('label');
copy_selector_options[label] = [];
$(this).find('option').each(function() {
copy_selector_options[label].push(this);
});
$(this).remove();
})
// Assign an action to the main selector to modify the secondary selector
selector.each(function() {
$(this).bind('load change click keypress focus', function() {
var group = $(this).find('option[value=' + $(this).val() + ']').parents('optgroup').attr('label');
if (group) {
copy.parent().find('.backup-migrate-destination-copy-label').text(info['labels'][group]);
copy_selector.empty();
for (var key in copy_selector_options) {
if (key != group) {
copy_selector.append(copy_selector_options[key]);
}
}
}
}).load();
});
})(info);
}
// Add the convert to checkboxes functionality to all multiselects.
$('#backup-migrate-ui-manual-backup-form select[multiple], #backup-migrate-crud-edit-form select[multiple]').each(function() {
var self = this;
$(self).after(
$('<div class="description backup-migrate-checkbox-link"></div>').append(
$('<a>'+ Drupal.settings.backup_migrate.checkboxLinkText +'</a>').click(function() {
var $select = $(self);
var $checkboxes = $('<div></div>').addClass('backup-migrate-tables-checkboxes');
$('option', $select).each(function(i) {
$checkboxes.append(
$('<div class="form-item"></div>').append(
$('<label class="option backup-migrate-table-select">' + this.value + '</label>').prepend(
$('<input type="checkbox" class="backup-migrate-tables-checkbox" name="'+ $select.attr('name') +'"'+ (this.selected ? 'checked="checked"' : '') +' value="'+ this.value +'"/>')
.bind('click change load', function() {
if (this.checked) {
$(this).parent().addClass('checked');
}
else {
$(this).parent().removeClass('checked');
}
}).load()
)
)
);
});
$select.parent().find('.backup-migrate-checkbox-link').remove();
$select.before($checkboxes);
$select.hide();
})
)
);
});
}
}
}
}
})(jQuery);