// $Id: features.js,v 1.1.2.10 2010/08/09 14:56:58 yhahn Exp $
Drupal.behaviors.features = function() {
// Features management form package tabs
$("ul#features-form-links li a:not(.features-processed)").each(function() {
$(this).addClass('features.processed').click(function() {
$(".features-package-active").removeClass('features-package-active');
var panel = $(this).attr('href').split('#')[1];
$("div.package-" + panel).addClass('features-package-active');
$(this).addClass('features-package-active');
return false;
});
});
// Features management form
$('table.features:not(.processed)').addClass('processed').each(function() {
// Check the overridden status of each feature
Drupal.features.checkStatus();
// Add some nicer row hilighting when checkboxes change values
$('input', this).bind('change', function() {
if (!$(this).attr('checked')) {
$(this).parents('tr').removeClass('enabled').addClass('disabled');
}
else {
$(this).parents('tr').addClass('enabled').removeClass('disabled');
}
});
});
// Export form component selector
$('form.features-export-form select.features-select-components:not(.processed)').each(function() {
$(this)
.addClass('processed')
.change(function() {
var target = $(this).val();
$('div.features-select').hide();
$('div.features-select-' + target).show();
return false;
});
});
// Export form machine-readable JS
$('.feature-name:not(.processed)').each(function() {
$('.feature-name')
.addClass('processed')
.after(' ');
if ($('.feature-module-name').val() === $('.feature-name').val().toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/_+/g, '_') || $('.feature-module-name').val() === '') {
$('.feature-module-name').parents('.form-item').hide();
$('.feature-name').keyup(function() {
var machine = $(this).val().toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/_+/g, '_');
if (machine !== '_' && machine !== '') {
$('.feature-module-name').val(machine);
$('.feature-module-name-suffix').empty().append(' Machine name: ' + machine + ' [').append($(''+ Drupal.t('Edit') +'').click(function() {
$('.feature-module-name').parents('.form-item').show();
$('.feature-module-name-suffix').hide();
$('.feature-name').unbind('keyup');
return false;
})).append(']');
}
else {
$('.feature-module-name').val(machine);
$('.feature-module-name-suffix').text('');
}
});
$('.feature-name').keyup();
}
});
};
Drupal.features = {
'checkStatus': function() {
if ($('table.features').is('.loading')) {
return;
}
$('table.features tbody tr:not(.processed):first').addClass('processed').each(function() {
var uri = $(this).find('a.admin-check').attr('href'), elem = $(this);
if (uri) {
$('table.features').addClass('loading');
$.get(uri, [], function(data) {
$(elem).find('.admin-loading').hide();
switch (data.storage) {
case 3:
$(elem).find('.admin-rebuilding').show();
break;
case 2:
$(elem).find('.admin-needs-review').show();
break;
case 1:
$(elem).find('.admin-overridden').show();
break;
default:
$(elem).find('.admin-default').show();
break;
}
$('table.features').removeClass('loading');
Drupal.features.checkStatus();
}, 'json');
}
else {
Drupal.features.checkStatus();
}
});
}
};