'. t('You can define in this page context-types allowed as child of book and those that will be automatically created as book.') .'

'; $output .= t('You can also defined childs by content-type in content-type settings. in the BookMadeSimple section'); return $output; break; } } function book_made_simple_menu() { $items = array(); $items['admin/settings/book_made_simple'] = array( 'title' => t('BookMadeSimple settings'), 'page callback' => 'drupal_get_form', 'page arguments' => array('book_made_simple_settings_form'), 'access arguments' => array('administer site configuration'), 'description' => t('BookMadeSimple module settings.'), 'type' => MENU_NORMAL_ITEM, ); $items['node/%/reorder'] = array( 'title' => t('Reorder the book'), 'page callback' => 'book_made_simple_reorder', 'page arguments' => array(1), 'access callback' => 'isBookAccess', 'access arguments' => array(1), 'type' => MENU_LOCAL_TASK, 'weight' =>2 ); return $items; } function isBookAccess($arg, $node = NULL) { if ($node == NULL && is_numeric($arg)) { $node = node_load($arg); } if (isset($node->book) && $node->book['bid'] > 0 && _book_outline_access($node) ) {return true;} return false; } function book_made_simple_reorder($id) { $node = node_load($id); drupal_goto("admin/content/book/" . $node->book['bid'] , "destination=node/" . $node->nid); } function book_made_simple_settings_form() { $types = node_get_types("names"); $form['book_made_simple'] = array( '#type' => 'fieldset', '#title' => t('Select node types that can be included in a book'), '#collapsible' => TRUE, '#collapsed' => FALSE, '#description' => t('Check content-type that can be included as child in a book. This selection is overriden by selection in content-type settings.'), ); $form['book_made_simple']['book_made_simple_add_types'] = array( '#type' => 'checkboxes', '#options' => $types, '#multiple' => true, '#default_value' => variable_get('book_made_simple_add_types', array()), ); $form['book_made_simple2'] = array( '#type' => 'fieldset', '#title' => t('Select node types to auto-create main book page'), '#collapsible' => TRUE, '#collapsed' => FALSE, '#description' => t('Check content-types if you want they will automatically be created as main page of a book.'), ); $form['book_made_simple2']['book_made_simple_auto_main_page'] = array( '#type' => 'checkboxes', '#options' => $types, '#multiple' => true, '#default_value' => variable_get('book_made_simple_auto_main_page', array()), ); $form['book_made_simple_hide_default_add_child'] = array( '#type' => 'checkbox', '#title' => t('Hide default add child link'), '#default_value' => variable_get('book_made_simple_hide_default_add_child', true), '#description' => t('Check to hide default add child page link.'), ); $form['book_made_simple_child_list_style'] = array( '#type' => 'radios', '#title' => t('Style of child list'), '#options' => array("DDLIST" => t("Dropdown listbox"),"LI" => t("Unordered list"),"THEME" => t("Themeable function")), '#default_value' => variable_get('book_made_simple_child_list_style', "DDLIST"), '#description' => t('Choose the style of the child list.'), ); return system_settings_form($form); } function book_made_simple_form_alter(&$form, $form_state, $form_id) { if (isset($form['type']) && isset($form['#node']) && $form['type']['#value'] .'_node_form' == $form_id) { $node = $form['#node']; $book = $node->book; if (isBookAccess(null, $form['#node'])) { /*$form['book_made_simple'] = array( '#type' => 'fieldset', '#title' => t('BookMadeSimple'), '#collapsible' => TRUE, '#collapsed' => TRUE, );*/ $form['book']['reorder'] = array( '#type' => 'item', '#value' => l(t("Reorder the book"), "admin/content/book/" . $book['bid'] , array('query' =>"destination=node/" . $node->nid)), '#description' => t("Shortcut to reorder the entire book"), '#weight' => 10, ); } return $form; } switch ($form["#id"]) { case "node-type-form" : // $type . '_node_settings': $type = $form["#node_type"]->type; $default = array_key_exists($type,variable_get('book_made_simple_auto_main_page',array())); $form['book_made_simple'] = array( '#type' => 'fieldset', '#title' => t('BookMadeSimple'), '#collapsible' => TRUE, '#collapsed' => TRUE, ); $form['book_made_simple']['1'] = array( '#attributes' => array('style' =>'float:left;;width:40%'), '#type' => 'fieldset', '#collapsible' => TRUE, '#collapsed' => FALSE, ); $types = node_get_types("names"); $form['book_made_simple']['1']['book_made_simple_for_type'] = array( '#type' => 'checkboxes', '#title' => t('Select content-types allowed as child.'), '#options' => $types, '#multiple' => true, '#default_value' => variable_get('book_made_simple_for_type_' . $type, array()), ); $aa = array(); unset($types[$type]); foreach ($types as $ctype => $name) { $a = variable_get('book_made_simple_for_type_' . $ctype, array()); if (array_search($type,$a) !== FALSE) {array_push($aa,$ctype);} } $form['book_made_simple']['2'] = array( '#attributes' => array('style' =>'float:right;width:40%'), '#type' => 'fieldset', '#collapsible' => TRUE, '#collapsed' => FALSE, ); $form['book_made_simple']['2']['book_made_simple_for_book'] = array( '#type' => 'checkboxes', '#title' => t('Select content-types allowed as parent'), '#options' => $types, '#multiple' => true, '#default_value' => $aa, ); $form['book_made_simple']['3'] = array( '#attributes' => array('style' =>'float:none;clear:both;'), '#type' => 'fieldset', '#collapsible' => TRUE, '#collapsed' => FALSE, ); $varTypes = variable_get('book_made_simple_auto_main_page',array()); $default = (array_key_exists($type, $varTypes) && $varTypes[$type] != "0"); $form['book_made_simple']['3']['book_made_simple_auto_main_page'] = array( '#attributes' => array('style' =>'float:none;clear:both'), '#type' => 'checkbox', '#title' => t('Auto create book main page'), '#default_value' => $default, '#description' => t('Checked will create a new book main page when adding.'),); $varTypes = variable_get('book_made_simple_add_types',array()); $default = (array_key_exists($type, $varTypes) && $varTypes[$type] != "0"); $form['book_made_simple']['3']['book_made_simple_add_types'] = array( '#type' => 'checkbox', '#title' => t('Allow content type as child of default book.'), '#default_value' => $default, '#description' => t('Checked will add this content-type to books where no content-types has been selected.'), ); array_push($form['#submit'],"book_made_simple_form_submit"); break; } // endswitch $form_id } // endfunction book_made_simple_form_alter() function book_made_simple_form_submit($form, &$form_state) { $values = $form_state["values"]; $text = $values["book_made_simple_auto_main_page"]; $type = $values["type"]; variable_del("book_made_simple_add_types_" . $type); variable_del("book_made_simple_auto_main_page_" . $type); $types = variable_get('book_made_simple_auto_main_page', array()); if ($text != "0") {$types[$type]= $type;} else {unset($types[$type]);} variable_set('book_made_simple_auto_main_page', $types); $text = $values["book_made_simple_add_types"]; $types = variable_get('book_made_simple_add_types', array()); if ($text != "0") {$types[$type]= $type;} else {unset($types[$type]);} variable_set('book_made_simple_add_types', $types); $text = $values["book_made_simple_for_type"]; if (count($text) == 0) {variable_del("book_made_simple_for_type_" . $type);} $types = node_get_types("names"); $saved = $values["book_made_simple_for_book"]; $a2 = array(); foreach ($types as $ctype => $name) { if ($ctype != $type) { $a = variable_get('book_made_simple_for_type_' . $ctype, array()); $ind = array_search($type,$a); if ($ind !== FALSE) {unset($a[$ind]);} variable_set('book_made_simple_for_type_' . $ctype, $a); } } foreach ($saved as $ctype => $name) { if ($name != "0") { $a = variable_get('book_made_simple_for_type_' . $ctype, array()); $a[$type]= $type; variable_set('book_made_simple_for_type_' . $ctype, $a); } } variable_del("book_made_simple_for_book_" . $type); } function book_made_simple_link($type, $node = null, $teaser = false) { $links = array(); if ($type == 'node' && !$teaser && isset($node->book["bid"]) && user_access('create book content') && $node->status == 1) { $html = ""; $allowedTypes = array(); // Search for content-type for this one $aTypes = variable_get('book_made_simple_for_type_' . $node->type, array()); $style = variable_get('book_made_simple_child_list_style', "DDLIST"); // No content-type, so print all if (count($aTypes) == 0) { $aTypes = variable_get('book_made_simple_add_types', array()); } foreach ($aTypes as $allowedType => $allowedName) { $type = node_get_types("type",$allowedName); if (node_access('create', $type->type)) { $allowedTypes[$type->type] = $type->name; } } $book_link = $node->book; if (count($allowedTypes) > 0) { asort($allowedTypes,SORT_STRING); if ($style == "LI") { foreach ($allowedTypes as $type => $name ) { $links['book_add_' . $type] = array( 'title' => t('Add @type',array('@type' => t($name))), 'href' => "node/add/". str_replace('_', '-', $type), 'query' => "parent=". $node->book['mlid'], ); } } elseif ($style == "DDLIST") { $links['book_made_simple'] = array( 'title' => "" . book_made_simple_add_child_book_content_types_ddlist($allowedTypes, $node) . "", 'html'=>true); } else { $links['book_made_simple'] = array( 'title' => theme('add_child_book_content_types',$allowedTypes, $node), 'html'=>true); } } } $links["book_add_child"] = array(); return $links; } function book_made_simple_theme() { return array( 'add_child_book_content_types' => array( 'arguments' => array('allowedTypes' => NULL, "node"=>null), ), ); } function theme_add_child_book_content_types($allowedTypes, &$node) { return ""; } function book_made_simple_add_child_book_content_types_ddlist($allowedTypes, &$node) { $child_type = variable_get('book_child_type', 'book'); $html = ""; foreach ($allowedTypes as $type => $name ) { $html .= ""; } $isCleanUrl = variable_get('clean_url', 0); $url = url("node/add/"); $op = "&"; if ($isCleanUrl) {$op = "?";} $newUrl = $url ."\" + this.value + \"" . $op . "parent=" . $node->book["mlid"]; return ""; } function book_made_simple_nodeapi(&$node, $op, $teaser, $page) { if (empty($node->book["bid"])) { $type = $node->type; switch ($op) { case 'insert': if ((user_access('add content to books') || user_access('administer book outlines')) && node_access('create', $type) && $node->book['depth'] < MENU_MAX_DEPTH) { $bookTypes = variable_get('book_made_simple_auto_main_page',array()); $bookType = $bookTypes[$type]; $toCreate = false; if (null != $bookType && $bookType != "0") {$toCreate = true;} if ($toCreate) { $node->book["bid"] = $node->nid; _book_update_outline($node); } } break; case "prepare translation": $translation = $node->translation_source; if (isset($translation) && $translation->book['plid'] > 0) { $plid = $translation->book['plid']; $parentBook = book_link_load($plid); print_r($node); if (isset($parentBook)) { $pnid = $parentBook['nid']; $query= "SELECT bid, mlid FROM {node} n left join {book} b on b.nid = n.nid where tnid= $pnid and language='" . $node->language . "'"; $mlid = db_fetch_object(db_query($query)); $node->parent = $mlid->mlid; $node->book['bid'] = $mlid->bid; $node->book['mlid'] = $mlid->mlid; $node->book['plid'] = $plid; } print_r($node); } break; } } else { switch ($op) { case 'alter': if (variable_get('book_made_simple_hide_default_add_child',true)) { if (array_key_exists("book_add_child",$node->links)) { unset($node->links["book_add_child"]); } } break; } } }