t('Advanced options'), '#type' => 'fieldset', '#collapsible' => true, '#collapsed' => ($hidden == 1) && (($type & MENU_VISIBLE_IN_BREADCRUMB) > 0), '#weight' => 1, '#tree' => false, ); $form['menu']['options']['tree'] = array( '#type' => 'checkbox', '#title' => t('Visible in tree views') . (empty($hidden) ? '' : ' ' . t('(currently invisible)')), '#default_value' => empty($hidden), '#description' => t('Defines whether the menu item should be visible in tree views. (Affects the enabled/disabled option directly)'), ); $form['menu']['options']['breadcrumb'] = array( '#type' => 'checkbox', '#title' => t('Visible in breadcrumbs'), '#default_value' => ($type & MENU_VISIBLE_IN_BREADCRUMB) > 0, '#description' => t('Defines whether the menu item should be shown in breadcrumbs.'), ); $form['#submit'][] = 'advanced_menu_edit_item_submit'; } /** * Validate the additional fields and merge them into $form_state['values']['type'] */ function advanced_menu_edit_item_submit($form, &$form_state) { //die(var_dump($form, $form_state)); form_set_value(array('#parents' => array('menu', 'customized')), 1, $form_state); if ($form_state['values']['tree']) { form_set_value(array('#parents' => array('menu', 'hidden')), 0, $form_state); // form_set_value(array('#parents' => array('menu', 'original_item', 'hidden')), 0, $form_state); // form_set_value(array('#parents' => array('menu', 'original_item', 'type')), $form_state['values']['menu']['original_item']['type'] |= MENU_VISIBLE_IN_TREE, $form_state); } else { form_set_value(array('#parents' => array('menu', 'hidden')), 1, $form_state); // form_set_value(array('#parents' => array('menu', 'original_item', 'hidden')), 1, $form_state); // form_set_value(array('#parents' => array('menu', 'original_item', 'type')), $form_state['values']['menu']['original_item']['type'] &= ~MENU_VISIBLE_IN_TREE, $form_state); } if ($form_state['values']['breadcrumb']) { $form_state['values']['menu']['original_item']['type'] |= MENU_VISIBLE_IN_BREADCRUMB; } else { $form_state['values']['menu']['original_item']['type'] &= ~MENU_VISIBLE_IN_BREADCRUMB; } }