diff --git a/modules/outline_designer_book/outline_designer_book.module b/modules/outline_designer_book/outline_designer_book.module index 5050d45..7f8585f 100644 --- a/modules/outline_designer_book/outline_designer_book.module +++ b/modules/outline_designer_book/outline_designer_book.module @@ -816,15 +816,14 @@ function _outline_designer_book_admin_edit_submit($form, &$form_state) { // This ensures parents are updated before their children, preventing orphans. $order = array_flip(array_keys($form_state['input']['table'])); $form['table'] = array_merge($order, $form['table']); + $update_order = false; foreach (element_children($form['table']) as $key) { if ($form['table'][$key]['#item']) { $row = $form['table'][$key]; $values = $form_state['values']['table'][$key]; // Update menu item if moved. if ($row['plid']['#default_value'] != $values['plid'] || $row['weight']['#default_value'] != $values['weight']) { - $row['#item']['plid'] = $values['plid']; - $row['#item']['weight'] = $values['weight']; - menu_link_save($row['#item']); + $update_order = true; } // Update the title if changed. if ($row['title']['#default_value'] != $values['title']) { @@ -839,4 +838,14 @@ function _outline_designer_book_admin_edit_submit($form, &$form_state) { } } } + if($update_order){ + $weight = count($order) * -1; + foreach($order as $node_key => $ordinal){ + //watchdog('content', $node_key.': '.$weight); + $form['table'][$node_key]['#item']['plid'] = $form_state['values']['table'][$node_key]['plid']; + $form['table'][$node_key]['#item']['weight'] = $weight; + menu_link_save($form['table'][$node_key]['#item']); + $weight += 2; + } + } } \ No newline at end of file