123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- (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.attr('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);
|