Index: install.php
===================================================================
RCS file: /cvs/drupal/drupal/install.php,v
retrieving revision 1.133
diff -u -p -r1.133 install.php
--- install.php	20 Sep 2008 20:22:23 -0000	1.133
+++ install.php	30 Sep 2008 08:57:48 -0000
@@ -122,17 +122,20 @@ function install_main() {
     }
 
     // Check the installation requirements for Drupal and this profile.
-    install_check_requirements($profile, $verify);
+    $requirements = install_check_requirements($profile, $verify);
 
     // Verify existence of all required modules.
-    $modules = drupal_verify_profile($profile, $install_locale);
+    $requirements += drupal_verify_profile($profile, $install_locale);
 
-    // If any error messages are set now, it means a requirement problem.
-    $messages = drupal_set_message();
-    if (!empty($messages['error'])) {
+    // Check the severity of the requirements reported.
+    $severity = drupal_requirements_severity($requirements);
+
+    if ($severity == REQUIREMENT_ERROR) {
       install_task_list('requirements');
       drupal_set_title(st('Requirements problem'));
-      print theme('install_page', '');
+      $status_report = theme('status_report', $requirements);
+      $status_report .= st('Please check the error messages and <a href="!url">try again</a>.', array('!url' => request_uri()));
+      print theme('install_page', $status_report);
       exit;
     }
 
@@ -147,6 +150,7 @@ function install_main() {
     // Save the list of other modules to install for the 'profile-install'
     // task. variable_set() can be used now that system.module is installed
     // and drupal is bootstrapped.
+    $modules = drupal_profile_modules($profile, $install_locale);
     variable_set('install_profile_modules', array_diff($modules, array('system')));
   }
 
@@ -890,6 +894,8 @@ function install_reserved_tasks() {
  * Check installation requirements and report any errors.
  */
 function install_check_requirements($profile, $verify) {
+  // Check the profile requirements.
+  $requirements = drupal_check_profile($profile);
 
   // If Drupal is not set up already, we need to create a settings file.
   if (!$verify) {
@@ -909,48 +915,37 @@ function install_check_requirements($pro
         $exists = TRUE;
       }
     }
+
     if (!$exists) {
-      drupal_set_message(st('The @drupal installer requires that you create a settings file as part of the installation process.
-<ol>
-<li>Copy the %default_file file to %file.</li>
-<li>Change file permissions so that it is writable by the web server. If you are unsure how to grant file permissions, please consult the <a href="@handbook_url">on-line handbook</a>.</li>
-</ol>
-More details about installing Drupal are available in INSTALL.txt.', array('@drupal' => drupal_install_profile_name(), '%file' => $file, '%default_file' => $conf_path .'/default.settings.php', '@handbook_url' => 'http://drupal.org/server-permissions')), 'error');
+      $requirements['settings file exists'] = array(
+        'title'       => st('Settings file'),
+        'value'       => st('The settings file does not exist.'),
+        'severity'    => REQUIREMENT_ERROR,
+        'description' => st('The @drupal installer requires that you create a settings file as part of the installation process. Copy the %default_file file to %file. More details about installing Drupal are available in INSTALL.txt.', array('@drupal' => drupal_install_profile_name(), '%file' => $file, '%default_file' => $conf_path .'/default.settings.php')),
+      );
     }
-    elseif (!$writable) {
-      drupal_set_message(st('The @drupal installer requires write permissions to %file during the installation process. If you are unsure how to grant file permissions, please consult the <a href="@handbook_url">online handbook</a>.', array('@drupal' => drupal_install_profile_name(), '%file' => $file, '@handbook_url' => 'http://drupal.org/server-permissions')), 'error');
+    elseif ($exists) {
+      $requirements['settings file exists'] = array(
+        'title'       => st('Settings file'),
+        'value'       => st('The settings file exists.'),
+      );
     }
-  }
-
-  // Check the other requirements.
-  $requirements = drupal_check_profile($profile);
-  $severity = drupal_requirements_severity($requirements);
-
-  // If there are issues, report them.
-  if ($severity == REQUIREMENT_ERROR) {
-
-    foreach ($requirements as $requirement) {
-      if (isset($requirement['severity']) && $requirement['severity'] == REQUIREMENT_ERROR) {
-        $message = $requirement['description'];
-        if (isset($requirement['value']) && $requirement['value']) {
-          $message .= ' (' . st('Currently using !item !version', array('!item' => $requirement['title'], '!version' => $requirement['value'])) . ')';
-        }
-        drupal_set_message($message, 'error');
-      }
+    if (!$writable) {
+      $requirements['settings file writable'] = array(
+        'title'       => st('Settings file'),
+        'value'       => st('The settings file is not writable.'),
+        'severity'    => REQUIREMENT_ERROR,
+        'description' => st('The @drupal installer requires write permissions to %file during the installation process. If you are unsure how to grant file permissions, please consult the <a href="@handbook_url">online handbook</a>.', array('@drupal' => drupal_install_profile_name(), '%file' => $file, '@handbook_url' => 'http://drupal.org/server-permissions')),
+      );
     }
-  }
-  if ($severity == REQUIREMENT_WARNING) {
-
-    foreach ($requirements as $requirement) {
-      if (isset($requirement['severity']) && $requirement['severity'] == REQUIREMENT_WARNING) {
-        $message = $requirement['description'];
-        if (isset($requirement['value']) && $requirement['value']) {
-          $message .= ' (' . st('Currently using !item !version', array('!item' => $requirement['title'], '!version' => $requirement['value'])) . ')';
-        }
-        drupal_set_message($message, 'warning');
-      }
+    elseif ($writable) {
+      $requirements['settings file'] = array(
+        'title'       => st('Settings file'), 
+        'value'       => st('Settings file is writable.'),
+      );
     }
   }
+  return $requirements;
 }
 
 /**
Index: includes/install.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/install.inc,v
retrieving revision 1.71
diff -u -p -r1.71 install.inc
--- includes/install.inc	27 Sep 2008 20:03:35 -0000	1.71
+++ includes/install.inc	30 Sep 2008 09:23:02 -0000
@@ -415,6 +415,24 @@ function drupal_get_install_files($modul
 }
 
 /**
+ * Get a list of modules required by an installation profile.
+ *
+ * @param profile
+ *   Name of profile.
+ * @param locale
+ *   Name of locale used (if any).
+ * @return
+ *   The list of modules to install.
+ */
+function drupal_profile_modules($profile, $locale = 'en') {
+  $profile_file = "./profiles/$profile/$profile.profile";
+  require_once($profile_file);
+  // Get a list of modules required by this profile.
+  $function = $profile . '_profile_modules';
+  return array_merge(drupal_required_modules(), $function(), ($locale != 'en' ? array('locale') : array()));
+}
+
+/**
  * Verify an install profile for installation.
  *
  * @param $profile
@@ -434,11 +452,7 @@ function drupal_verify_profile($profile,
     install_no_profile_error();
   }
 
-  require_once $profile_file;
-
-  // Get a list of modules required by this profile.
-  $function = $profile . '_profile_modules';
-  $module_list = array_merge(drupal_required_modules(), $function(), ($locale != 'en' ? array('locale') : array()));
+  $module_list = drupal_profile_modules($profile, $locale);
 
   // Get a list of modules that exist in Drupal's assorted subdirectories.
   $present_modules = array();
@@ -448,14 +462,22 @@ function drupal_verify_profile($profile,
 
   // Verify that all of the profile's required modules are present.
   $missing_modules = array_diff($module_list, $present_modules);
+  
+  $requirements = array();
+  
   if (count($missing_modules)) {
+    $modules = array();
     foreach ($missing_modules as $module) {
-      drupal_set_message(st('The %module module is required but was not found. Please move it into the <em>modules</em> subdirectory.', array('%module' => $module)), 'error');
+      $modules[] = '<span class="admin-missing">' . drupal_ucfirst($module) . '</span>';
     }
+    $requirements['required_modules'] = array(
+      'title' => st('Required modules'),
+      'value'       => st('Required modules not found.'),
+      'severity'    => REQUIREMENT_ERROR,
+      'description' => st('The following modules are required but were not found. Please move them into the specific <em>modules</em> subdirectory. Missing modules: !modules', array('!modules' => implode(', ', $modules))),
+    );
   }
-  else {
-    return $module_list;
-  }
+  return $requirements;
 }
 
 /**
Index: includes/theme.maintenance.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/theme.maintenance.inc,v
retrieving revision 1.18
diff -u -p -r1.18 theme.maintenance.inc
--- includes/theme.maintenance.inc	20 Sep 2008 20:22:23 -0000	1.18
+++ includes/theme.maintenance.inc	30 Sep 2008 09:23:19 -0000
@@ -66,6 +66,7 @@ function _drupal_maintenance_theme() {
   drupal_add_css(drupal_get_path('module', 'system') . '/system.css', 'module');
   drupal_add_css(drupal_get_path('module', 'system') . '/system-menus.css', 'module');
   drupal_add_css(drupal_get_path('module', 'system') . '/maintenance.css', 'module');
+  drupal_add_css(drupal_get_path('module', 'system') . '/admin.css', 'module');
 }
 
 /**
Index: modules/simpletest/drupal_web_test_case.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/drupal_web_test_case.php,v
retrieving revision 1.45
diff -u -p -r1.45 drupal_web_test_case.php
--- modules/simpletest/drupal_web_test_case.php	20 Sep 2008 20:22:24 -0000	1.45
+++ modules/simpletest/drupal_web_test_case.php	30 Sep 2008 09:24:01 -0000
@@ -691,7 +691,7 @@ class DrupalWebTestCase {
 
     // Add the specified modules to the list of modules in the default profile.
     $args = func_get_args();
-    $modules = array_unique(array_merge(drupal_verify_profile('default', 'en'), $args));
+    $modules = array_unique(array_merge(drupal_profile_modules('default', 'en'), $args));
     drupal_install_modules($modules);
 
     // Because the schema is static cached, we need to flush
