? front-page-config.patch
? sites/default/files
? sites/default/settings.php
Index: modules/system/system.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v
retrieving revision 1.284
diff -u -p -r1.284 system.admin.inc
--- modules/system/system.admin.inc	21 May 2010 11:37:55 -0000	1.284
+++ modules/system/system.admin.inc	22 May 2010 15:36:59 -0000
@@ -1519,21 +1519,6 @@ function system_site_information_setting
     '#description' => t("The <em>From</em> address in automated e-mails sent during registration and new password requests, and other notifications. (Use an address ending in your site's domain to help prevent this e-mail being flagged as spam.)"),
     '#required' => TRUE,
   );
-  $form['site_frontpage'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Default front page'),
-    '#default_value' => drupal_get_path_alias(variable_get('site_frontpage', 'node')),
-    '#size' => 40,
-    '#description' => t('The home page displays content from this relative URL. If unsure, specify "node".'),
-    '#field_prefix' => url(NULL, array('absolute' => TRUE)) . (variable_get('clean_url', 0) ? '' : '?q='),
-    '#required' => TRUE,
-  );
-  $form['default_nodes_main'] = array(
-    '#type' => 'select', '#title' => t('Number of posts on front page'),
-    '#default_value' => variable_get('default_nodes_main', 10),
-    '#options' => drupal_map_assoc(array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30)),
-    '#description' => t('The maximum number of posts displayed on overview pages such as the front page.')
-  );
   $form['site_403'] = array(
     '#type' => 'textfield',
     '#title' => t('Default 403 (access denied) page'),
@@ -1571,6 +1556,37 @@ function system_site_information_setting
   if ($error = user_validate_mail($form_state['values']['site_mail'])) {
     form_set_error('site_mail', $error);
   }
+}
+
+/**
+ * Form builder; prints front page configuration
+ */
+function system_front_page_settings(){
+  $form['site_frontpage'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Default front page'),
+    '#default_value' => drupal_get_path_alias(variable_get('site_frontpage', 'node')),
+    '#size' => 40,
+    '#description' => t('The home page displays content from this relative URL. If unsure, specify "node".'),
+    '#field_prefix' => url(NULL, array('absolute' => TRUE)) . (variable_get('clean_url', 0) ? '' : '?q='),
+    '#required' => TRUE,
+  );
+  $form['default_nodes_main'] = array(
+    '#type' => 'select', '#title' => t('Number of posts on front page'),
+    '#default_value' => variable_get('default_nodes_main', 10),
+    '#options' => drupal_map_assoc(array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30)),
+    '#description' => t('The maximum number of posts displayed on overview pages such as the front page.')
+  );
+  
+  $form['#validate'][] = 'system_front_page_settings_validate';
+
+  return system_settings_form($form, FALSE);
+}
+
+/**
+ * Validate the submitted front page settings form.
+ */
+function system_front_page_settings_validate($form, &$form_state) {
   // Get the normal path of the front page.
   form_set_value($form['site_frontpage'], drupal_get_normal_path($form_state['values']['site_frontpage']), $form_state);
   // Validate front page path.
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.933
diff -u -p -r1.933 system.module
--- modules/system/system.module	20 May 2010 08:47:00 -0000	1.933
+++ modules/system/system.module	22 May 2010 15:37:01 -0000
@@ -563,6 +563,16 @@ function system_menu() {
     'access arguments' => array('access administration pages'),
     'file' => 'system.admin.inc',
   );
+  // Front page.
+  $items['admin/structure/front-page'] = array(
+    'title' => 'Front Page',
+    'description' => 'Administer content shown on the front page.',
+    'position' => 'left',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_front_page_settings'),
+    'access arguments' => array('access administration pages'),
+    'file' => 'system.admin.inc',
+  );
   // Appearance.
   $items['admin/appearance'] = array(
     'title' => 'Appearance',
