--- ctm.orig/ctm.module 2011-10-17 23:48:43.000000000 +0200 +++ ctm.module 2011-11-02 10:14:48.000000000 +0100 @@ -21,6 +21,15 @@ '#default_value' => $default_values, '#options' => $options, ); + + // Menu expand behaviour settings + $form['menu_settings']['menu_expand'] = array( + '#type' => 'checkboxes', + '#title' => t('Menu expand behaviour'), + '#default_value' => $default_values, + '#options' => array('expand_by_default' => t('Expand new menu items by default')), + ); + $form['#submit'][] = 'ctm_node_type_form_submit'; } // Menu Settings for Node Edit (Form) @@ -51,10 +60,40 @@ } /** + * Implementation of hook_nodeapi(). + */ +function ctm_nodeapi(&$node, $op) { + switch ($op) { + case 'update': + case 'insert': + if (isset($node->menu)) { + $item = &$node->menu; + if (empty($item['delete']) && trim($item['link_title'])) { + $item['link_title'] = trim($item['link_title']); + $item['link_path'] = "node/$node->nid"; + if (!$item['customized']) { + $item['options']['attributes']['title'] = trim($node->title); + } + + $menu_settings = variable_get($node->type.'_menu_settings', NULL); + if ($menu_settings && $menu_settings['expand_by_default']) { + $item['expanded'] = 1; + } + + if (!menu_link_save($item)) { + drupal_set_message(t('There was an error saving the menu link.'), 'error'); + } + } + } + break; + } +} + +/** * Content Type Form Submit - Save Menu Settings for Content Type. */ function ctm_node_type_form_submit(&$form, $form_state) { - $menu_settings = array_filter($form_state['values']['menu']); + $menu_settings = array_merge(array_filter($form_state['values']['menu']), array_filter($form_state['values']['menu_expand'])); if ($menu_settings) { variable_set($form_state['values']['type'].'_menu_settings', $menu_settings); } else {