t('BookMadeSimple settings'), 'page callback' => 'drupal_get_form', 'access arguments' => array('administer site configuration'), 'page arguments' => array('book_made_simple_settings_form'), 'type' => MENU_NORMAL_ITEM, 'description' => t('BookMadeSimple module settings.'), ); return $items; } function book_made_simple_settings_form() { $types = node_get_types("names"); $form['book_made_simple'] = array( '#attributes' => array('style' =>'float:left;;width:40%'), '#type' => 'fieldset', '#title' => t('Select node types that can be included in a book'), '#collapsible' => TRUE, '#collapsed' => FALSE, ); $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( '#attributes' => array('style' =>'float:right;width:40%'), '#type' => 'fieldset', '#title' => t('Select node types to auto-create main book page'), '#collapsible' => TRUE, '#collapsed' => FALSE, ); $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( '#attributes' => array('style' =>'float:none;clear:both'), '#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.'), ); return system_settings_form($form); } function book_made_simple_form_alter(&$form, $form_state, $form_id) { 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;'), '#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, ); $default = array_key_exists($type,variable_get('book_made_simple_auto_main_page',array())); $varTypes = variable_get('book_made_simple_auto_main_page',array()); $default = ($varTypes[$type] != "0"); $form['book_made_simple']['book_made_simple_auto_main_page'] = array( '#attributes' => array('style' =>'float:none;clear:both'), '#type' => 'checkbox', '#title' => '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 = ($varTypes[$type] != "0"); $form['book_made_simple']['book_made_simple_add_types'] = array( '#type' => 'checkbox', '#title' => 'Allow content type as child of default book.', '#default_value' => $default, '#description' => t('Checked will add by default this content type in the allowed child pages in books.'), ); 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()); // 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; } } if (count($allowedTypes) > 0) { asort($allowedTypes,SORT_STRING); $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) { $html = ""; foreach ($allowedTypes as $type => $name ) {$html .= "";} $isCleanUrl = variable_get('clean_url', 0); $newUrl = base_path() . "node/add/\" + this.value + \"?parent=" . $node->book["mlid"]; if (! $isCleanUrl) { $newUrl = base_path() . "?q=node/add/\" + this.value + \"&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) { $toCreate = array_key_exists($type,variable_get('book_made_simple_auto_main_page',array())); if ($toCreate) { $node->book["bid"] = $node->nid; _book_update_outline($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; } } }