? .DS_Store
? 392362-clean-url-install-cleanup.patch
? clean_url_form_04.patch
? clean_url_form_05.patch
? clean_url_settings_00.patch
? sites/.DS_Store
? sites/default/.DS_Store
? sites/default/files
? sites/default/settings.php
Index: install.php
===================================================================
RCS file: /cvs/drupal/drupal/install.php,v
retrieving revision 1.162
diff -u -p -r1.162 install.php
--- install.php	2 Apr 2009 20:39:44 -0000	1.162
+++ install.php	3 Apr 2009 20:31:16 -0000
@@ -727,7 +727,7 @@ function install_tasks($profile, $task) 
       drupal_add_js('misc/timezone.js');
       // We add these strings as settings because JavaScript translation does not
       // work on install time.
-      drupal_add_js(array('copyFieldValue' => array('edit-site-mail' => array('edit-account-mail')), 'cleanURL' => array('success' => st('Your server has been successfully tested to support this feature.'), 'failure' => st('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.'), 'testing' => st('Testing clean URLs...'))), 'setting');
+      drupal_add_js(array('copyFieldValue' => array('edit-site-mail' => array('edit-account-mail'))), 'setting');
       drupal_add_js('
 // Global Killswitch
 if (Drupal.jsEnabled) {
@@ -1042,15 +1042,9 @@ function install_configure_form(&$form_s
   );
 
   $form['server_settings']['clean_url'] = array(
-    '#type' => 'radios',
-    '#title' => st('Clean URLs'),
+    '#type' => 'hidden',
     '#default_value' => 0,
-    '#options' => array(0 => st('Disabled'), 1 => st('Enabled')),
-    '#description' => st('This option makes Drupal emit "clean" URLs (i.e. without <code>?q=</code> in the URL).'),
-    '#disabled' => TRUE,
-    '#prefix' => '<div id="clean-url" class="install">',
-    '#suffix' => '</div>',
-    '#weight' => 10,
+    '#attributes' => array('class' => 'install'),
   );
 
   $form['server_settings']['update_status_module'] = array(
Index: modules/system/system.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v
retrieving revision 1.131
diff -u -p -r1.131 system.admin.inc
--- modules/system/system.admin.inc	17 Mar 2009 15:26:29 -0000	1.131
+++ modules/system/system.admin.inc	3 Apr 2009 20:31:17 -0000
@@ -1765,31 +1765,60 @@ function system_site_maintenance_setting
  * @ingroup forms
  * @see system_settings_form()
  */
-function system_clean_url_settings() {
+function system_clean_url_settings() {drupal_set_message('CURL:' . variable_get('clean_url', 0));
   $form['clean_url'] = array(
-    '#type' => 'radios',
-    '#title' => t('Clean URLs'),
-    '#default_value' => 0,
-    '#options' => array(t('Disabled'), t('Enabled')),
-    '#description' => t('This option makes Drupal emit "clean" URLs (i.e. without <code>?q=</code> in the URL).'),
+    '#type' => 'checkbox',
+    '#title' => t('Enable clean URLs'),
+    // The form isn't always run through system_settings_form(), so we have to
+    // set the default value manually.
+    '#default_value' => variable_get('clean_url', 0),
+    '#description' => t('Use URLs like <code>example.com/user</code> instead of <code>example.com/?q=user</code>.'),
   );
 
-  if (!variable_get('clean_url', 0)) {
-    if (strpos(request_uri(), '?q=') !== FALSE) {
-      drupal_add_js(drupal_get_path('module', 'system') . '/system.js');
-
-      $form['clean_url']['#description'] .= ' <span>' . t('Before enabling clean URLs, you must perform a test to determine if your server is properly configured. If you are able to see this page again after clicking the "Run the clean URL test" link, the test has succeeded and the radio buttons above will be available. If instead you are directed to a "Page not found" error, you will need to change the configuration of your server. The <a href="@handbook">handbook page on Clean URLs</a> has additional troubleshooting information.', array('@handbook' => 'http://drupal.org/node/15365')) . '</span>';
-
-      $form['clean_url']['#disabled'] = TRUE;
-      $form['clean_url']['#prefix'] = '<div id="clean-url">';
-      $form['clean_url']['#suffix'] = '<p>' . t('<a href="@clean_url">Run the clean url test</a>.', array('@clean_url' => base_path() . 'admin/settings/clean-urls')) . '</p></div>';
-    }
-    else {
-      $form['clean_url']['#description'] .= ' <div class="ok">' . t('Your server has been successfully tested to support this feature.') . '</div>';
-    }
+  if (!variable_get('clean_url', 0) && strpos(request_uri(), '?q=') !== FALSE) {
+    drupal_add_js(drupal_get_path('module', 'system') . '/system.js');
+
+    $form['clean_url']['#description'] .= ' <span>' . t('Before enabling clean URLs, you must perform a test to determine if your server is properly configured. If you are able to see this page again after clicking the "Run the clean URL test" button, the test has succeeded and the checkbox above will be available. If instead you are directed to a "Page not found" error, you will need to change the configuration of your server. The <a href="@handbook">handbook page on Clean URLs</a> has additional troubleshooting information.', array('@handbook' => 'http://drupal.org/node/15365')) . '</span>';
+
+    $form['clean_url']['#disabled'] = TRUE;
+    $form['clean_url']['#prefix'] = '<div id="clean-url">';
+    $form['clean_url']['#suffix'] = '</div>';
+    $form['clean_url_test'] = array(
+      '#type' => 'submit',
+      '#value' => t('Run the clean url test'),
+      '#submit' => array('system_clean_url_settings_submit_manual'),
+    );
+  }
+  else {
+    // Clean URLs are available.
+    $form = system_settings_form($form, FALSE);
   }
 
-  return system_settings_form($form, TRUE);
+  return $form;
+}
+
+/**
+ * Submit callback; process a manual clean URL form submission.
+ * drupal_goto() cannot be used, since it forces a redirect without clean URLs.
+ *
+ * @ingroup forms
+ * @see system_clean_url_settings()
+ */
+function system_clean_url_settings_submit_manual(&$form, $form_state) {
+  global $base_url;
+
+  module_invoke_all('exit', 'admin/settings/clean-urls');
+
+  // Even though session_write_close() is registered as a shutdown function, we
+  // need all session data written to the database before redirecting.
+  session_write_close();
+
+  header('Location: '. $base_url . 'admin/settings/clean-urls', TRUE, 307);
+
+  // The "Location" header sends a redirect status code to the HTTP daemon. In
+  // some cases this can be wrong, so we make sure none of the code below the
+  // drupal_goto() call gets executed upon redirection.
+  exit();
 }
 
 /**
Index: modules/system/system.js
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.js,v
retrieving revision 1.21
diff -u -p -r1.21 system.js
--- modules/system/system.js	17 Mar 2009 15:26:29 -0000	1.21
+++ modules/system/system.js	3 Apr 2009 20:31:17 -0000
@@ -13,7 +13,7 @@ Drupal.behaviors.cleanURLsSettingsCheck 
     // 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()) {
+    if ($(".clean-url-processed, #edit-clean-url.install").size()) {
       return;
     }
     var url = settings.basePath +"admin/settings/clean-urls/check";
@@ -24,9 +24,7 @@ Drupal.behaviors.cleanURLsSettingsCheck 
       dataType: 'json',
       success: function () {
         // Check was successful.
-        $("#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>");
-        $("#testing").hide();
+        location = settings.basePath +"admin/settings/clean-urls";
       },
       error: function() {
         // Check failed.
@@ -47,8 +45,6 @@ Drupal.behaviors.cleanURLsSettingsCheck 
  */
 Drupal.cleanURLsInstallCheck = function() {
   var url = location.protocol +"//"+ location.host + Drupal.settings.basePath +"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");
   // Submit a synchronous request to avoid database errors associated with
   // concurrent requests during install.
   $.ajax({
@@ -57,18 +53,10 @@ Drupal.cleanURLsInstallCheck = function(
     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('<div class="ok">'+ Drupal.settings.cleanURL.success +"</div>");
-      $("#testing").hide();
+      $("#edit-clean-url").attr("value", 1);
     },
-    error: function() {
-      // Check failed.
-      $("#clean-url .description span").append('<div class="warning">'+ Drupal.settings.cleanURL.failure +"</div>");
-      $("#testing").hide();
-    }
   });
-  $("#clean-url").addClass('clean-url-processed');
+  $("#edit-clean-url").addClass('clean-url-processed');
 };
 
 /**
@@ -134,4 +122,4 @@ Drupal.behaviors.poweredByPreview = {
   }
 };
 
-})(jQuery);
\ No newline at end of file
+})(jQuery);
