Index: book_manager.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/book_manager/book_manager.module,v retrieving revision 1.1.2.14.2.25 diff -u -p -r1.1.2.14.2.25 book_manager.module --- book_manager.module 21 Dec 2010 19:41:13 -0000 1.1.2.14.2.25 +++ book_manager.module 21 Dec 2010 20:08:22 -0000 @@ -710,20 +710,30 @@ function book_manager_outline_form_submi * That allows the user to check the box and create a personal book rather than a global book */ function _book_manager_set_personal(&$form) { - if (user_access('create new books') && user_access('create personal books')) { - $node = $form['#node']; - if ($node->nid) { - $bid = db_fetch_array(db_query('SELECT bid FROM {book_manager} WHERE bid = %d', $node->nid)); - if ($bid['bid']) { - $ispersonal = TRUE; - } - else { - $ispersonal = FALSE; - } + $node = $form['#node']; + if ($node->nid) { + $bid = db_fetch_array(db_query('SELECT bid FROM {book_manager} WHERE bid = %d', $node->nid)); + if ($bid['bid']) { + $ispersonal = TRUE; } else { + $ispersonal = FALSE; + } + } + else { + if (user_access('create personal books') && !user_access('create books')) { + $ispersonal = TRUE; + } + elseif (user_access('create books') && user_access('create personal books')) { $ispersonal = variable_get('book_manager_personal_book_default', 0); } + else { + $ispersonal == 'FALSE'; + } + } + + + if (user_access('create new books') && user_access('create personal books')) { drupal_add_js(array('book_manager' => array('nid' => $node->nid)), "setting"); drupal_add_js(drupal_get_path('module', 'book_manager') . '/book_manager.js'); @@ -735,6 +745,15 @@ function _book_manager_set_personal(&$fo '#description' => t('If checked this book will be a personal book, and will only be able to contain nodes from a single author'), ); } + elseif (isset($form['book'])) { + // This covers the use case where the editing user may not have the same permissions as the + // book owner. In this case we just preserve the personal book setting. + $form['book']['ispersonal'] = array( + '#type' => 'value', + '#value' => $ispersonal, + ); + } +dpm($form); } /**