--- BookMadeSimple/book_made_simple.module	2009-06-10 20:49:16.000000000 +0200
+++ book_made_simple.module	2009-07-31 15:35:47.000000000 +0200
@@ -1,310 +1,347 @@
 <?php
 // $Id: book_made_simple.module,v 1.1.2.1.2.6 2009/06/10 18:49:16 marcelbichon Exp $
-// Author: M. Morin
+/**
+ * @file
+ * Create a main book page for selected content types
+ *
+ * This module will create a main book page for content type selected in
+ * BookMadeSimple settings. This is a shortcut to create a node and click
+ * on Update book outline.
+ *
+ * A dropdown listbox will be added in books links. Selecting a content type
+ * will add it as a child page of the book page.
+ *
+ * Author: M. Morin
+ */
+
 /**
  * Implementation of hook_help().
  */
 function book_made_simple_help($path, $arg) {
-	switch ($path) {
-        case 'admin/settings/book_made_simple':
-            $output = '<p>'. t('You can define in this page context-types allowed as child of book and those that will be automatically created as book.') .'</p>';
-            $output .= t('You can also defined childs by content-type in') .  ' ' . l(t('content-type settings'),'admin/content/types/list') . t(' in the BookMadeSimple section');
-            return $output;     
-            break;
-    }
+  switch ($path) {
+    case 'admin/settings/book_made_simple':
+      $output = '<p>' . t('You can define in this page context-types allowed as child of book and those that will be automatically created as book.') . '</p>';
+      $output .= t('You can also defined childs by content-type in') .  ' ' . l(t('content-type settings'), 'admin/content/types/list') . t(' in the BookMadeSimple section');
+      return $output;
+      break;
+  }
 }
+
 /**
  * Implementation of hook_menu().
  */
 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 = 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',
+  'page arguments'   => array(1),
+    'access callback'   => 'book_made_simple_is_access',
     'access arguments'   => array(1),
     'type' => MENU_LOCAL_TASK,
-	'weight' =>2
-
-	);
+  'weight' => 2
+  );
 
-     return $items;
+  return $items;
 }
+
 /**
  * Return access rights for book
  */
-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_is_access($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;
 }
 
 /**
-* Shortcut to reorder book page
-*/
+ * Shortcut to reorder book page
+ */
 function book_made_simple_reorder($id) {
-	$node = node_load($id);
-	drupal_goto("admin/content/book/" . $node->book['bid'] , "destination=node/" . $node->nid);
+  $node = node_load($id);
+  drupal_goto("admin/content/book/" . $node->book['bid'] , "destination=node/" . $node->nid);
 }
+
 /**
  * Implementation of hook_settings_form).
  */
 function book_made_simple_settings_form() {
-    $types = node_get_types("names");
+  $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);
+}
+
+/**
+ * Implementation of hook_form_alter().
+ */
+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 (is_book_access(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('Select node types that can be included in a book'),
+        '#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,
-        '#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',   
+      );
+
+      $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_add_types', array()),
+        '#multiple' => TRUE,
+        '#default_value' => variable_get('book_made_simple_for_type_' . $type, array()),
       );
 
-      $form['book_made_simple2'] = 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',
-        '#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',   
+      );
+      $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' => variable_get('book_made_simple_auto_main_page', array()),
+        '#multiple' => TRUE,
+        '#default_value' => $aa,
       );
-      $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);
-}
 
-/**
- * Implementation of hook_form_alter().
- */
-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()
+      $form['book_made_simple']['3'] = array(
+        '#attributes' => array('style' => 'float:none;clear:both;'),
+        '#type' => 'fieldset',
+        '#collapsible' => TRUE,
+        '#collapsed' => FALSE,
+      );
+
+      $var_types = variable_get('book_made_simple_auto_main_page', array());
+      $default = (array_key_exists($type, $var_types) && $var_types[$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.'),
+      );
+
+      $var_types = variable_get('book_made_simple_add_types', array());
+      $default = (array_key_exists($type, $var_types) && $var_types[$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;
+  }
+}
 
 /**
  * Implementation of hook_form_submit().
  */
 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);
+  $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);
 }
 
 /**
  * Implementation of hook_link(). Add dropdown listbox to links
  */
-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;
-            }
+function book_made_simple_link($type, $node = NULL, $teaser = FALSE) {
+  $links = array();
+  if ($type == 'node' && !$teaser && isset($node->book["bid"])
+    && ((user_access('add content to books') || user_access('administer book outlines')))
+    && $node->status == 1
+    && $node->book['depth'] < MENU_MAX_DEPTH) {
+    $html = "";
+    $allowed_types = array();
+    // Search for content-type for this one
+
+    $a_types = 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($a_types) == 0) {
+      $a_types = variable_get('book_made_simple_add_types', array());
+    }
+    foreach ($a_types as $allowed_type => $allowed_name) {
+      $type  = node_get_types("type", $allowed_name);
+      if (node_access('create', $type->type)) {
+        $allowed_types[$type->type] = $type->name;
+      }
+    }
+
+    $book_link = $node->book;
+    if (count($allowed_types) > 0) {
+      asort($allowed_types, SORT_STRING);
+
+      if ($style == "LI") {
+        foreach ($allowed_types as $type => $name ) {
+        $links['book_add_' . $type] = array(
+        'title' => t('Add') . ' ' . t($name),
+        'href' => "node/add/". str_replace('_', '-', $type),
+        'query' => "parent=". $node->book['mlid'],
+        );
         }
-		
-		
-		$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') . ' ' . t($name),
-					'href' => "node/add/". str_replace('_', '-', $type),
-					'query' => "parent=". $node->book['mlid'],
-					); 
-				}
-			}
-			elseif ($style == "DDLIST") {
-				$links['book_made_simple'] = array(
-                    'title' => "<span id='book_made_simple'>" . book_made_simple_add_child_book_content_types_ddlist($allowedTypes, $node)  . "</span>",
-                    'html'=>true);
-			}
-			else {
-				$links['book_made_simple'] = array(
-                    'title' => theme('add_child_book_content_types',$allowedTypes, $node),
-                    'html'=>true);
-			}
-		}
+      }
+      elseif ($style == "DDLIST") {
+        $links['book_made_simple'] = array(
+          'title' => "<span id='book_made_simple'>" . book_made_simple_add_child_book_content_types_ddlist($allowed_types, $node)  . "</span>",
+          'html' => TRUE);
+      }
+      else {
+        $links['book_made_simple'] = array(
+          'title' => theme('add_child_book_content_types', $allowed_types, $node),
+          'html' => TRUE);
+      }
     }
-    $links["book_add_child"] = array();
-    return $links;
-  
+  }
+  $links["book_add_child"] = array();
+  return $links;
 }
 
 /**
@@ -313,104 +350,111 @@ function book_made_simple_link($type, $n
 function book_made_simple_theme() {
   return array(
     'add_child_book_content_types' => array(
-      'arguments' => array('allowedTypes' => NULL, "node"=>null),
+      'arguments' => array('allowed_types' => NULL, "node" => NULL),
     ),
   );
 }
 
 /**
  * Themeable function to display alloawed child types of book().
- * @param $allowedTypes
+ * @param $allowed_types
  *   Array of allowed child type.
  * @param $node
  *   Source node
- * @return 
+ * @return
  *   Html code to display allowed child type
-
  */
-function theme_add_child_book_content_types($allowedTypes, &$node) {
-	return "";
+function theme_add_child_book_content_types($allowed_types, &$node) {
+  return "";
 }
 
 /**
  * Display alloawed child type as dropdown listbox.
  */
-function book_made_simple_add_child_book_content_types_ddlist($allowedTypes, &$node) {
-    $child_type = variable_get('book_child_type', 'book');
-    $html = "<option value='" . str_replace('_', '-', $child_type) . "'>" . t("Add child page") . "</option>";        
-    foreach ($allowedTypes as $type => $name ) {
-        $html .= "<option value='" . str_replace('_', '-',$type) ."'>" . t($name) . "</option>";
-    }
-    $isCleanUrl = variable_get('clean_url', 0);
-	$url = url("node/add/");
-	$op = "&";
-	if ($isCleanUrl) {$op = "?";}
-    $newUrl =  $url ."\" + this.value + \"" . $op . "parent=" . $node->book["mlid"];
-    return "<select onchange='location.href=\"" . $newUrl . "\"'>$html</select>";
-        
+function book_made_simple_add_child_book_content_types_ddlist($allowed_types, &$node) {
+  $child_type = variable_get('book_child_type', 'book');
+  $html = "<option value='" . str_replace('_', '-', $child_type) . "'>" . t("Add child page") . "</option>";
+  foreach ($allowed_types as $type => $name ) {
+    $html .= "<option value='" . str_replace('_', '-', $type) . "'>" . t($name) . "</option>";
+  }
+  $is_clean_url = variable_get('clean_url', 0);
+  $url = url("node/add/");
+  $op = "&";
+  if ($is_clean_url) {
+    $op = "?";
+  }
+  $new_url =  $url . "\" + this.value + \"" . $op . "parent=" . $node->book["mlid"];
+  return "<select onchange='location.href=\"" . $new_url . "\"'>$html</select>";
 }
+
 /**
  * Implementation of hook_nodeapi().
  */
 function book_made_simple_nodeapi(&$node, $op, $teaser, $page) {
   if (empty($node->book["bid"])) {
-
     $type = $node->type;
     switch ($op) {
-		// Node creation
-        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);
-                }
+    // Node creation
+      case 'insert':
+        if ((user_access('add content to books') || user_access('administer book outlines'))
+          && node_access('create', $type)
+          &&  $node->book['depth'] < MENU_MAX_DEPTH) {
+          $book_types = variable_get('book_made_simple_auto_main_page', array());
+          $book_type = $book_types[$type];
+          $to_create = FALSE;
+          if (NULL != $book_type && $book_type != "0") {
+            $to_create = TRUE;
+          }
+          if ($to_create) {
+            $node->book["bid"] = $node->nid;
+            _book_update_outline($node);
+          }
+        }
+        break;
+      // Hack for translation module. Adding parent property to automatically select parent book.
+      case "prepare translation":
+      $translation = $node->translation_source;
+      if (isset($translation->book) && (!isset($_GET["parent"]))) {
+        // get parent menu link for the node + language
+        $plid = $translation->book['plid'];
+        $parent_page = book_link_load($plid);
+        if (isset($parent_page)) {
+          $pnid = $parent_page['nid'];
+          $query= "SELECT bid, mlid FROM {node} n left join {book} b on b.nid = n.nid where tnid= $pnid and language='" . $node->language . "'";
+          $translated_parent = db_fetch_object(db_query($query));
+          if ($translated_parent) {
+            $mlid = $translated_parent->mlid;
+            $params = array();
+            $params[] = "parent=$mlid";
+            foreach ($_GET as $key => $value) {
+              if ($key == "q") {
+                $path = $value;
+              }
+              else {
+                $params[] = $key . "=" . $value;
+              }
             }
-            break;
-		// Hack for translation module. Adding parent property to automatically select parent book.
-		case "prepare translation":		
-			$translation = $node->translation_source;
-			if (isset($translation->book) && (! isset($_GET["parent"]))) {
-				// get parent menu link for the node + language
-				$plid = $translation->book['plid'];
-				$parentPage = book_link_load($plid);
-				if (isset($parentPage)) {
-					$pnid = $parentPage['nid'];
-					$query= "SELECT bid, mlid FROM {node} n left join {book} b on b.nid = n.nid where tnid= $pnid and language='" . $node->language . "'";
-					$translatedParent = db_fetch_object(db_query($query));
-					if ($translatedParent) {
-						$mlid = $translatedParent->mlid;
-						$params = array();
-						$params[] = "parent=$mlid";
-						foreach ($_GET as $key => $value) {
-							if ($key == "q") {$path = $value;}
-							else {$params[] = $key . "=" . $value;}
-						}
-						$queryString = implode("&",$params);
-						drupal_goto($path, $queryString);
-					}
-					else {
-						drupal_set_message("WARNING : This node have no translated parent, so no book selected","warning");
-					}
-				}
-			}
-			break;
+            $query_string = implode("&", $params);
+            drupal_goto($path, $query_string);
+          }
+          else {
+            drupal_set_message("WARNING : This node have no translated parent, so no book selected", "warning");
+          }
+        }
+      }
+      break;
     }
   }
   else {
     switch ($op) {
-		// Hide standard add Child link
-        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;
+    // Hide standard add Child link
+      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;
     }
   }
 }
