? includes/database/install.inc
? sites/all/modules/cvs
Index: modules/block/block.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.module,v
retrieving revision 1.321
diff -u -p -r1.321 block.module
--- modules/block/block.module	3 Feb 2009 12:30:14 -0000	1.321
+++ modules/block/block.module	9 Feb 2009 03:13:45 -0000
@@ -176,7 +176,7 @@ function block_menu() {
  * Menu item access callback - only admin or enabled themes can be accessed.
  */
 function _block_themes_access($theme) {
-  return user_access('administer blocks') && ($theme->status || $theme->name == variable_get('admin_theme', '0'));
+  return user_access('administer blocks') && ($theme->status || $theme->name == variable_get('admin_theme', 0));
 }
 
 /**
Index: modules/system/system.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v
retrieving revision 1.124
diff -u -p -r1.124 system.admin.inc
--- modules/system/system.admin.inc	3 Feb 2009 18:55:31 -0000	1.124
+++ modules/system/system.admin.inc	9 Feb 2009 03:13:50 -0000
@@ -138,9 +138,8 @@ function system_settings_overview() {
  * @ingroup forms
  * @see system_settings_form()
  */
-function system_admin_theme_settings() {
+function system_admin_theme_form() {
   $themes = system_theme_data();
-
   uasort($themes, 'system_sort_modules_by_info_name');
 
   $options[0] = '<' . t('System default') . '>';
@@ -153,18 +152,31 @@ function system_admin_theme_settings() {
     '#options' => $options,
     '#title' => t('Administration theme'),
     '#description' => t('Choose which theme the administration pages should display in. If you choose "System default" the administration pages will use the same theme as the rest of the site.'),
-    '#default_value' => '0',
+    '#default_value' => 0,
   );
 
-  $form['node_admin_theme'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Use administration theme for content editing'),
-    '#description' => t('Use the administration theme when editing existing posts or creating new ones.'),
-    '#default_value' => '0',
+  $form['admin_theme_paths'] = array(
+    '#type' => 'textarea',
+    '#title' => t('Also use administration theme on the listed pages'),
+    '#description' => t("Enter one page per line as Drupal paths. The '*' character is a wildcard. Example paths are %node-create for the create content pages and %node-edit for every edit content page. %front is the front page.", array('%node-create' => 'node/add*', '%node-edit' => 'node/*/edit', '%front' => '<front>')),
+    '#default_value' => '',
   );
 
-  $form['#submit'][] = 'system_admin_theme_submit';
-  return system_settings_form($form, TRUE);
+  $form['#submit'][] = 'system_admin_theme_form_submit';
+  return system_settings_form($form);
+}
+
+/**
+ * Process admin theme form submissions.
+ */
+function system_admin_theme_form_submit($form, &$form_state) {
+  // If we're changing themes, make sure the theme has its blocks initialized.
+  if ($form_state['values']['admin_theme'] && $form_state['values']['admin_theme'] != variable_get('admin_theme', 0)) {
+    $result = db_result(db_query("SELECT COUNT(*) FROM {block} WHERE theme = '%s'", $form_state['values']['admin_theme']));
+    if (!$result) {
+      system_initialize_theme_blocks($form_state['values']['admin_theme']);
+    }
+  }
 }
 
 /**
@@ -174,10 +186,9 @@ function system_admin_theme_settings() {
  * @see system_themes_form_submit()
  */
 function system_themes_form() {
-
   drupal_clear_css_cache();
-  $themes = system_theme_data();
 
+  $themes = system_theme_data();
   uasort($themes, 'system_sort_modules_by_info_name');
 
   $status = array();
@@ -203,7 +214,7 @@ function system_themes_form() {
     );
     $options[$theme->name] = '';
 
-    if (!empty($theme->status) || $theme->name == variable_get('admin_theme', '0')) {
+    if (!empty($theme->status) || $theme->name == variable_get('admin_theme', 0)) {
       $form[$theme->name]['operations'] = array('#markup' => l(t('configure'), 'admin/build/themes/settings/' . $theme->name) );
     }
     else {
@@ -272,7 +283,7 @@ function system_themes_form_submit($form
         }
       }
     }
-    if (($admin_theme = variable_get('admin_theme', '0')) != '0' && $admin_theme != $form_state['values']['theme_default']) {
+    if (($admin_theme = variable_get('admin_theme', 0)) && $admin_theme != $form_state['values']['theme_default']) {
       drupal_set_message(t('Please note that the <a href="!admin_theme_page">administration theme</a> is still set to the %admin_theme theme; consequently, the theme on this page remains unchanged. All non-administrative sections of the site, however, will show the selected %selected_theme theme by default.', array(
         '!admin_theme_page' => url('admin/settings/admin'),
         '%admin_theme' => $admin_theme,
Index: modules/system/system.install
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.install,v
retrieving revision 1.306
diff -u -p -r1.306 system.install
--- modules/system/system.install	3 Feb 2009 12:30:14 -0000	1.306
+++ modules/system/system.install	9 Feb 2009 03:13:55 -0000
@@ -3213,6 +3213,22 @@ function system_update_7018() {
 }
 
 /**
+ * Replace the node_admin_theme variable with the admin_theme_paths variable.
+function system_update_7019() {
+  $ret = array();
+
+  if (variable_get('node_admin_theme', 0)) {
+    variable_set('admin_theme_paths', "node/add*" . PHP_EOL . "node/*/edit");
+    $ret[] = array('success' => TRUE, 'query' => "variable_set('admin_theme_paths')");
+  }
+
+  variable_del('node_admin_theme');
+  $ret[] = array('success' => TRUE, 'query' => "variable_del('node_admin_theme')");
+
+  return $ret;
+}
+
+/**
  * @} End of "defgroup updates-6.x-to-7.x"
  * The next series of updates should start at 8000.
  */
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.666
diff -u -p -r1.666 system.module
--- modules/system/system.module	3 Feb 2009 18:55:31 -0000	1.666
+++ modules/system/system.module	9 Feb 2009 03:13:57 -0000
@@ -504,21 +504,12 @@ function system_menu() {
     'page callback' => 'system_admin_menu_block_page',
     'access arguments' => array('access administration pages'),
   );
-  $items['admin/settings/admin'] = array(
-    'title' => 'Administration theme',
-    'description' => 'Settings for how your administrative pages should look.',
-    'position' => 'left',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('system_admin_theme_settings'),
-    'access arguments' => array('administer site configuration'),
-    'block callback' => 'system_admin_theme_settings',
-  );
   // Themes:
   $items['admin/build/themes'] = array(
     'title' => 'Themes',
     'description' => 'Change which theme your site uses or allows users to set.',
     'page callback' => 'drupal_get_form',
-    'page arguments' => array('system_themes_form', NULL),
+    'page arguments' => array('system_themes_form'),
     'access arguments' => array('administer site configuration'),
   );
   $items['admin/build/themes/select'] = array(
@@ -527,6 +518,14 @@ function system_menu() {
     'type' => MENU_DEFAULT_LOCAL_TASK,
     'weight' => -1,
   );
+  $items['admin/build/themes/admin'] = array(
+    'title' => 'Administration theme',
+    'description' => 'Settings for how your administrative pages should look.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_admin_theme_form'),
+    'access arguments' => array('administer site configuration'),
+    'type' => MENU_LOCAL_TASK,
+  );
   $items['admin/build/themes/settings'] = array(
     'title' => 'Configure',
     'page arguments' => array('system_theme_settings'),
@@ -782,7 +781,7 @@ function blocked_ip_load($iid) {
  * Menu item access callback - only admin or enabled themes can be accessed.
  */
 function _system_themes_access($theme) {
-  return user_access('administer site configuration') && ($theme->status || $theme->name == variable_get('admin_theme', '0'));
+  return user_access('administer site configuration') && ($theme->status || $theme->name == variable_get('admin_theme', 0));
 }
 
 /**
@@ -790,9 +789,9 @@ function _system_themes_access($theme) {
  */
 function system_init() {
   // Use the administrative theme if the user is looking at a page in the admin/* path.
-  if (arg(0) == 'admin' || (variable_get('node_admin_theme', '0') && arg(0) == 'node' && (arg(1) == 'add' || arg(2) == 'edit'))) {
+  if (arg(0) == 'admin' || (($paths = variable_get('admin_theme_paths', '')) && drupal_match_path($_GET['q'], $paths))) {
     global $custom_theme;
-    $custom_theme = variable_get('admin_theme', '0');
+    $custom_theme = variable_get('admin_theme', 0);
     drupal_add_css(drupal_get_path('module', 'system') . '/admin.css');
   }
 
@@ -982,19 +981,6 @@ function system_admin_menu_block($item) 
 }
 
 /**
- * Process admin theme form submissions.
- */
-function system_admin_theme_submit($form, &$form_state) {
-  // If we're changing themes, make sure the theme has its blocks initialized.
-  if ($form_state['values']['admin_theme'] && $form_state['values']['admin_theme'] != variable_get('admin_theme', '0')) {
-    $result = db_result(db_query("SELECT COUNT(*) FROM {block} WHERE theme = '%s'", $form_state['values']['admin_theme']));
-    if (!$result) {
-      system_initialize_theme_blocks($form_state['values']['admin_theme']);
-    }
-  }
-}
-
-/**
  * Returns a fieldset containing the theme select form.
  *
  * @param $description
