// $Id$
/**
* Internal function to check using Ajax if clean URLs can be enabled on the
* settings page.
*
* This function is not used to verify whether or not clean URLs
* are currently enabled.
*/
Drupal.behaviors.cleanURLsSettingsCheck = function(context) {
// This behavior attaches by ID, so is only valid once on a page.
// Also skip if we are on an install page, as Drupal.cleanURLsInstallCheck will handle
// the processing.
if ($("#clean-url.clean-url-processed, #clean-url.install").size()) {
return;
}
var url = Drupal.settings.basePath +"admin/settings/clean-urls/check";
$("#clean-url .description span").html('
'+ Drupal.t('Testing clean URLs...') +"
");
$("#clean-url p").hide();
$.ajax({
url: location.protocol +"//"+ location.host + url,
dataType: 'json',
success: function () {
// Check was successful.
$("#clean-url input.form-radio").attr("disabled", false);
$("#clean-url .description span").append(''+ Drupal.t('Your server has been successfully tested to support this feature.') +"
");
$("#testing").hide();
},
error: function() {
// Check failed.
$("#clean-url .description span").append(''+ Drupal.t('Your system configuration does not currently support this feature. The
handbook page on Clean URLs has additional troubleshooting information.') +"
");
$("#testing").hide();
}
});
$("#clean-url").addClass('clean-url-processed');
};
/**
* Internal function to check using Ajax if clean URLs can be enabled on the
* install page.
*
* This function is not used to verify whether or not clean URLs
* are currently enabled.
*/
Drupal.cleanURLsInstallCheck = function() {
var url = location.protocol +"//"+ location.host + Drupal.settings.basePath +"admin/settings/clean-urls/check";
$("#clean-url .description").append(''+ Drupal.settings.cleanURL.testing +"
");
$("#clean-url.install").css("display", "block");
$.ajax({
url: url,
dataType: 'json',
success: function () {
// Check was successful.
$("#clean-url input.form-radio").attr("disabled", false);
$("#clean-url input.form-radio").attr("checked", 1);
$("#clean-url .description span").append(''+ Drupal.settings.cleanURL.success +"
");
$("#testing").hide();
},
error: function() {
// Check failed.
$("#clean-url .description span").append(''+ Drupal.settings.cleanURL.failure +"
");
$("#testing").hide();
}
});
$("#clean-url").addClass('clean-url-processed');
};
/**
* When a field is filled out, apply its value to other fields that will likely
* use the same value. In the installer this is used to populate the
* administrator e-mail address with the same value as the site e-mail address.
*/
Drupal.behaviors.copyFieldValue = function (context) {
for (var sourceId in Drupal.settings.copyFieldValue) {
// Get the list of target fields.
targetIds = Drupal.settings.copyFieldValue[sourceId];
if (!$('#'+ sourceId + '.copy-field-values-processed').size(), context) {
// Add the behavior to update target fields on blur of the primary field.
sourceField = $('#' + sourceId);
sourceField.bind('blur', function() {
for (var delta in targetIds) {
var targetField = $('#'+ targetIds[delta]);
if (targetField.val() == '') {
targetField.val(this.value);
}
}
});
sourceField.addClass('copy-field-values-processed');
}
}
};
/**
* Show/hide custom format sections on the date-time settings page.
*/
Drupal.behaviors.dateTime = function(context) {
// Show/hide custom format depending on the select's value.
$('select.date-format:not(.date-time-processed)', context).change(function() {
$(this).addClass('date-time-processed').parents("div.date-container").children("div.custom-container")[$(this).val() == "custom" ? "show" : "hide"]();
});
// Attach keyup handler to custom format inputs.
$('input.custom-format:not(.date-time-processed)', context).addClass('date-time-processed').keyup(function() {
var input = $(this);
var url = Drupal.settings.dateTime.lookup +(Drupal.settings.dateTime.lookup.match(/\?q=/) ? "&format=" : "?format=") + Drupal.encodeURIComponent(input.val());
$.getJSON(url, function(data) {
$("div.description span", input.parent()).html(data);
});
});
// Trigger the event handler to show the form input if necessary.
$('select.date-format', context).trigger('change');
};