? menu.patch
? sites/default/files
? sites/default/settings.php
Index: modules/menu/menu.install
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.install,v
retrieving revision 1.19
diff -u -p -r1.19 menu.install
--- modules/menu/menu.install	20 Jul 2009 18:51:33 -0000	1.19
+++ modules/menu/menu.install	10 Aug 2009 03:28:58 -0000
@@ -33,6 +33,9 @@ function menu_install() {
 function menu_uninstall() {
   // Remove tables.
   drupal_uninstall_schema('menu');
+  foreach (node_type_get_types() as $type => $content_type) {
+    $setting = variable_del('menu_content_type_' . $type);
+  }
   menu_rebuild();
 }
 
Index: modules/menu/menu.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.module,v
retrieving revision 1.195
diff -u -p -r1.195 menu.module
--- modules/menu/menu.module	20 Jul 2009 18:51:33 -0000	1.195
+++ modules/menu/menu.module	10 Aug 2009 03:28:58 -0000
@@ -388,17 +388,42 @@ function _menu_parent_depth_limit($item)
 }
 
 /**
+ * Implement hook_form_node_type_form_alter(). Adds menu settings to the content type form.
+ */
+function menu_form_node_type_form_alter(&$form, $form_state) {
+  $form['menu'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Menu settings'),
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
+  );
+  $form['menu']['menu_content_type'] = array(
+    '#type' => 'radios',
+    '#title' => t('Menu options'),
+    '#options' => array(
+      '0' => 'No menu settings', 
+      'optional' => 'Optional menu settings', 
+      'required' => 'Required menu settings',
+    ),
+    '#default_value' => variable_get('menu_content_type_' . $form['#node_type']->type, 'optional'),
+    '#description' => t('Choose how to display the menu settings on the node form.'),
+  );
+}
+
+/**
  * Implement hook_form_alter(). Adds menu item fields to the node form.
  */
 function menu_form_alter(&$form, $form_state, $form_id) {
   if (!empty($form['#node_edit_form'])) {
     // Note - doing this to make sure the delete checkbox stays in the form.
     $form['#cache'] = TRUE;
-
+    $type = $form['type']['#value'];
+    
+    $access = user_access('administer menu') && variable_get('menu_content_type_' . $type, 'optional');
     $form['menu'] = array(
       '#type' => 'fieldset',
       '#title' => t('Menu settings'),
-      '#access' => user_access('administer menu'),
+      '#access' => $access,
       '#collapsible' => TRUE,
       '#collapsed' => FALSE,
       '#group' => 'additional_settings',
@@ -429,7 +454,7 @@ function menu_form_alter(&$form, $form_s
       '#title' => t('Menu link title'),
       '#default_value' => $item['link_title'],
       '#description' => t('The link text corresponding to this item that should appear in the menu. Leave blank if you do not wish to add this post to the menu.'),
-      '#required' => FALSE,
+      '#required' => variable_get('menu_content_type_' . $type, 'optional') == 'required' ? TRUE : FALSE,
     );
     // Generate a list of possible parents (not including this item or descendants).
     $options = menu_parent_options(menu_get_menus(), $item);
Index: profiles/default/default.profile
===================================================================
RCS file: /cvs/drupal/drupal/profiles/default/default.profile,v
retrieving revision 1.62
diff -u -p -r1.62 default.profile
--- profiles/default/default.profile	3 Aug 2009 03:04:34 -0000	1.62
+++ profiles/default/default.profile	10 Aug 2009 03:28:58 -0000
@@ -156,6 +156,10 @@ function default_profile_site_setup(&$in
 
   // Don't display date and author information for page nodes by default.
   variable_set('node_submitted_page', FALSE);
+  
+  // Require menu settings for page nodes, disable for article nodes.
+  variable_set('menu_content_type_page', 'required');
+  variable_set('menu_content_type_article', 0);
 
   // Create an image style.
   $style = array('name' => 'thumbnail');
