diff options
author | Gábor Hojtsy <gabor@hojtsy.hu> | 2007-10-27 11:32:05 +0000 |
---|---|---|
committer | Gábor Hojtsy <gabor@hojtsy.hu> | 2007-10-27 11:32:05 +0000 |
commit | bb7bf237df5c0757c2e3de676b2929532a6649fe (patch) | |
tree | 3ee0021d65c2630e74a6e76f09843a2083c3558d | |
parent | 987e462b465775bbd34e321b8f4cd7cddfb44164 (diff) | |
download | brdo-bb7bf237df5c0757c2e3de676b2929532a6649fe.tar.gz brdo-bb7bf237df5c0757c2e3de676b2929532a6649fe.tar.bz2 |
#175944 by kkaefer and Pasqualle: fix clean URL check to use a dedicated URL with proper JSON output so certain server setup problems are cured
-rw-r--r-- | modules/system/system.js | 36 | ||||
-rw-r--r-- | modules/system/system.module | 7 |
2 files changed, 26 insertions, 17 deletions
diff --git a/modules/system/system.js b/modules/system/system.js index 45741e76a..aa9db2c2c 100644 --- a/modules/system/system.js +++ b/modules/system/system.js @@ -14,21 +14,23 @@ Drupal.behaviors.cleanURLsSettingsCheck = function(context) { if ($("#clean-url.clean-url-processed, #clean-url.install").size()) { return; } - var url = location.pathname +"admin/settings/clean-urls"; + var url = location.pathname +"admin/settings/clean-urls/check"; $("#clean-url .description span").html('<div id="testing">'+ Drupal.t('Testing clean URLs...') +"</div>"); $("#clean-url p").hide(); - $.ajax({url: location.protocol +"//"+ location.host + url, type: "GET", data: " ", complete: function(response) { - $("#testing").toggle(); - if (response.status == 200) { + $.ajax({ + url: location.protocol +"//"+ location.host + url, + dataType: 'json', + success: function () { // Check was successful. - $("#clean-url input.form-radio").attr("disabled", ""); + $("#clean-url input.form-radio").attr("disabled", false); $("#clean-url .description span").append('<div class="ok">'+ Drupal.t('Your server has been successfully tested to support this feature.') +"</div>"); - } - else { + $("#testing").toggle(); + }, + error: function() { // Check failed. $("#clean-url .description span").append('<div class="warning">'+ Drupal.t('Your system configuration does not currently support this feature. The <a href="http://drupal.org/node/15365">handbook page on Clean URLs</a> has additional troubleshooting information.') +"</div>"); } - }}); + }); $("#clean-url").addClass('clean-url-processed'); }; @@ -40,23 +42,23 @@ Drupal.behaviors.cleanURLsSettingsCheck = function(context) { * are currently enabled. */ Drupal.cleanURLsInstallCheck = function() { - var pathname = location.pathname +""; - var url = pathname.replace(/\/[^\/]*$/, "/") +"node"; + var url = location.protocol +"//"+ location.host + location.pathname.replace(/\/[^\/]*$/, "/") +"admin/settings/clean-urls/check"; $("#clean-url .description").append('<span><div id="testing">'+ Drupal.settings.cleanURL.testing +"</div></span>"); $("#clean-url.install").css("display", "block"); - $.ajax({url: location.protocol +"//"+ location.host + url, type: "GET", data: " ", complete: function(response) { - $("#testing").toggle(); - if (response.status == 200) { + $.ajax({ + url: url, + dataType: 'json', + success: function () { // Check was successful. - $("#clean-url input.form-radio").attr("disabled", ""); + $("#clean-url input.form-radio").attr("disabled", false); $("#clean-url .description span").append('<div class="ok">'+ Drupal.settings.cleanURL.success +"</div>"); $("#clean-url input.form-radio").attr("checked", 1); - } - else { + }, + error: function() { // Check failed. $("#clean-url .description span").append('<div class="warning">'+ Drupal.settings.cleanURL.failure +"</div>"); } - }}); + }); $("#clean-url").addClass('clean-url-processed'); }; diff --git a/modules/system/system.module b/modules/system/system.module index 55d9bf5c4..13c9cfb6f 100644 --- a/modules/system/system.module +++ b/modules/system/system.module @@ -401,6 +401,13 @@ function system_menu() { 'page arguments' => array('system_clean_url_settings'), 'file' => 'system.admin.inc', ); + $items['admin/settings/clean-urls/check'] = array( + 'title' => 'Clean URL check', + 'page callback' => 'drupal_json', + 'page arguments' => array(array('status' => TRUE)), + 'access callback' => TRUE, + 'type' => MENU_CALLBACK, + ); // Reports: $items['admin/reports'] = array( |