diff --git a/menu_attributes.module b/menu_attributes.module index 894d5f6..7cb7686 100644 --- a/menu_attributes.module +++ b/menu_attributes.module @@ -119,7 +119,7 @@ function menu_attributes_get_menu_attribute_info() { * * @see menu_edit_item() * @see _menu_attributes_form_alter() - * @see menu_attributes_form_menu_edit_item_submit() + * @see _menu_attributes_form_submit() */ function menu_attributes_form_menu_edit_item_alter(&$form, $form_state) { $item = $form['menu']['#item']; @@ -132,6 +132,7 @@ function menu_attributes_form_menu_edit_item_alter(&$form, $form_state) { * Adds menu attribute options to the node's edit menu item form. * * @see _menu_attributes_form_alter() + * @see _menu_attributes_form_submit() */ function menu_attributes_form_alter(&$form, $form_state, $form_id) { if (isset($form['type']) && isset($form['#node']) && $form['type']['#value'] .'_node_form' == $form_id && isset($form['menu'])) { @@ -148,9 +149,14 @@ function menu_attributes_form_alter(&$form, $form_state, $form_id) { * so it will not be overridden by the node title in menu_nodeapi(). */ function menu_attributes_form_node_form_submit($form, &$form_state) { - if (!empty($form_state['values']['menu']['options']['attributes']['title'])) { + if (!empty($form_state['values']['menu']['menu_attributes']['title'])) { $form_state['values']['menu']['customized'] = 1; } + + $attributes = menu_attributes_get_menu_attribute_info(); + foreach ($attributes as $attribute => $info) { + $form_state['values']['menu']['options']['attributes'][$attribute] = $form_state['values']['menu']['menu_attributes'][$attribute]; + } } /** @@ -162,18 +168,13 @@ function menu_attributes_form_node_form_submit($form, &$form_state) { * The optional existing menu item for context. */ function _menu_attributes_form_alter(&$form, $item = array(), &$complete_form) { - $form['options']['#tree'] = TRUE; - $form['options']['#weight'] = 50; - - // Unset the previous value so that the new values get saved. - unset($form['options']['#value']['attributes']); - - $form['options']['attributes'] = array( + $form['menu_attributes'] = array( '#type' => 'fieldset', '#title' => t('Menu item attributes'), '#collapsible' => TRUE, '#collapsed' => FALSE, '#tree' => TRUE, + '#weight' => 50, ); $attributes = menu_attributes_get_menu_attribute_info(); @@ -187,7 +188,7 @@ function _menu_attributes_form_alter(&$form, $item = array(), &$complete_form) { // If this is an existing link, use the raw default (usually empty). $info['form']['#default_value'] = $info['default']; } - $form['options']['attributes'][$attribute] = $info['form'] + array( + $form['menu_attributes'][$attribute] = $info['form'] + array( '#access' => $info['enabled'], ); } @@ -227,15 +228,16 @@ function _menu_attributes_form_alter(&$form, $item = array(), &$complete_form) { /** * Form submit handler for menu item links. * - * Move the title attributes value into the 'description' value so that it - * will get properly saved. + * Move the title attribute value into the 'description' value and all the other + * attributes in the 'options' value so that they will get properly saved. */ function _menu_attributes_form_submit($form, &$form_state) { - if (isset($form_state['values']['menu']['options']['attributes']['title'])) { - $form_state['values']['menu']['description'] = $form_state['values']['menu']['options']['attributes']['title']; - } - elseif (isset($form_state['values']['options']['attributes']['title'])) { - $form_state['values']['description'] = $form_state['values']['options']['attributes']['title']; + $form_state['values']['description'] = $form_state['values']['menu_attributes']['title']; + + $attributes = menu_attributes_get_menu_attribute_info(); + unset($attributes['title']); + foreach ($attributes as $attribute => $info) { + $form_state['values']['options']['attributes'][$attribute] = $form_state['values']['menu_attributes'][$attribute]; } }