diff options
Diffstat (limited to 'modules/book/book.module')
-rw-r--r-- | modules/book/book.module | 63 |
1 files changed, 41 insertions, 22 deletions
diff --git a/modules/book/book.module b/modules/book/book.module index 8ed14872a..6612ea38b 100644 --- a/modules/book/book.module +++ b/modules/book/book.module @@ -187,15 +187,18 @@ function book_load($node) { return db_fetch_object(db_query('SELECT * FROM {book} WHERE vid = %d', $node->vid)); } -function book_form_alter($form_id, &$form) { - if ($form_id == 'node_delete_confirm') { - $form['#submit']['book_node_delete_confirm_submit'] = array(); - } +/** + * Implementation of hook_insert(). + */ +function book_insert($node) { + db_query("INSERT INTO {book} (nid, vid, parent, weight) VALUES (%d, %d, %d, %d)", $node->nid, $node->vid, $node->parent, $node->weight); } -function book_node_submit($form_id, $node) { - $node = (object)$node; - if ($node->is_new || $node->revision) { +/** + * Implementation of hook_update(). + */ +function book_update($node) { + if ($node->revision) { db_query("INSERT INTO {book} (nid, vid, parent, weight) VALUES (%d, %d, %d, %d)", $node->nid, $node->vid, $node->parent, $node->weight); } else { @@ -203,16 +206,30 @@ function book_node_submit($form_id, $node) { } } -function book_node_delete_confirm_submit($form_id, $form_values) { - db_query('DELETE FROM {book} WHERE nid = %d OR parent = %d', $form_values['node']->nid, $form_values['node']->nid); +/** + * Implementation of hook_delete(). + */ +function book_delete(&$node) { + db_query('DELETE FROM {book} WHERE nid = %d', $node->nid); } /** - * Implementation of hook_form(). + * Implementation of hook_submit(). */ -function book_form(&$node) { +function book_submit(&$node) { global $user; + // Set default values for non-administrators. + if (!user_access('administer nodes')) { + $node->revision = 1; + $book->uid = $user->uid; + $book->name = $user->uid ? $user->name : ''; + } +} +/** + * Implementation of hook_form(). + */ +function book_form(&$node) { $type = node_get_types('type', $node); if ($node->nid && !$node->parent && !user_access('create new books')) { $form['parent'] = array('#type' => 'value', '#value' => $node->parent); @@ -248,23 +265,22 @@ function book_form(&$node) { '#description' => t('An explanation of the additions or updates being made to help other authors understand your motivations.'), ); - $form['weight'] = array('#type' => 'weight', - '#title' => t('Weight'), - '#access' => user_access('administer nodes'), - '#default_value' => $node->weight, - '#delta' => 15, - '#weight' => 5, - '#description' => t('Pages at a given level are ordered first by weight and then by title.'), - ); - - if (!user_access('administer nodes')) { + if (user_access('administer nodes')) { + $form['weight'] = array('#type' => 'weight', + '#title' => t('Weight'), + '#default_value' => $node->weight, + '#delta' => 15, + '#weight' => 5, + '#description' => t('Pages at a given level are ordered first by weight and then by title.'), + ); + } + else { // If a regular user updates a book page, we preserve the node weight; otherwise // we use 0 as the default for new pages $form['weight'] = array( '#type' => 'value', '#value' => isset($node->weight) ? $node->weight : 0, ); - $form['name'] = array('#type' => 'value', '#value' => $user->uid ? $user->name : ''); } return $form; @@ -465,6 +481,9 @@ function book_nodeapi(&$node, $op, $teaser, $page) { case 'delete revision': db_query('DELETE FROM {book} WHERE vid = %d', $node->vid); break; + case 'delete': + db_query('DELETE FROM {book} WHERE nid = %d', $node->nid); + break; } } |