? TODO
? pageroute_5_fixes.patch
Index: pageroute.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageroute/pageroute.module,v
retrieving revision 1.24
diff -u -r1.24 pageroute.module
--- pageroute.module	5 Mar 2007 14:06:40 -0000	1.24
+++ pageroute.module	5 Mar 2007 21:28:21 -0000
@@ -29,10 +29,10 @@
  */
 function pageroute_pageroute_info() {
   return array(
-    'add' => array('name' => t('node adding form'), 'base' => 'pageroute'),
-    'edit' => array('name' => t('node edit form'), 'base' => 'pageroute'),
-    'view' => array('name' => t('node display'), 'base' => 'pageroute'),
-    'manage' => array('name' => t('node management'), 'base' => 'pageroute'),
+    'add' => array('name' => t('Node adding form'), 'base' => 'pageroute'),
+    'edit' => array('name' => t('Node edit form'), 'base' => 'pageroute'),
+    'view' => array('name' => t('Node display'), 'base' => 'pageroute'),
+    'manage' => array('name' => t('Node management'), 'base' => 'pageroute'),
   );
 }
 
@@ -111,39 +111,35 @@
 }
 
 /*
- * Call drupal_get_form() with the given $form_id, and add properties to the
- * resulting form so that the form fits well into inner pageroute workings.
- * (Currently, the '#base' property is added so that the 
- * pageroute_page_form_validate() and pageroute_page_form_submit() functions
- * are called.)
- */
-function pageroute_get_form($form_id) {
-  $args = func_get_args();
-  $form = call_user_func_array('drupal_get_form', $args);
-  $form['#base'] = 'pageroute_page_form';
-  return $form;
-}
-
-/*
  * Prepare for the submit function...
  */
 function pageroute_page_form_validate($form_id, &$form_values, &$form) {
   global $page;
 
   //Determine which button has been pressed
-  if ($form_values['op']) {
-    form_set_value($form['op'], array('key' => 'op'));
+  if ($_POST['op']) {
+    form_set_value($form['op'], array(
+      'key' => 'op',
+      'button' => $_POST['op'],
+    ));
     return;
   }
   if ($_POST['op2']) {
-    form_set_value($form['op'], array('key' => 'op2'));
+    form_set_value($form['op'], array(
+      'key' => 'op2',
+      'button' => $_POST['op2'],
+    ));
     return;
   }
   // A node management add/edit button?
   if (isset($form['output'])) {
     foreach (array_keys($form['output']) as $nid) {
-      if ($form_values['op_'. $nid]) {
-        form_set_value($form['op'], array('key' => 'op_'. $nid, 'nid' => $nid));
+      if ($_POST['op_'. $nid]) {
+        form_set_value($form['op'], array(
+          'key' => 'op_'. $nid,
+          'nid' => $nid,
+          'button' => $_POST['op_'. $nid],
+        ));
         return;
       }
     }
@@ -151,8 +147,12 @@
   // A tab button?
   if ($page->route->options['tabs']) {
     foreach (array_keys($form['tabs']) as $page_name) {
-      if ($form_values['op_'. $page_name]) {
-        form_set_value($form['op'], array('key' => 'op_'. $page_name, 'page_name' => $page_name));
+      if ($_POST['op_'. $page_name]) {
+        form_set_value($form['op'], array(
+          'key' => 'op_'. $page_name,
+          'page_name' => $page_name,
+          'button' => $_POST['op_'. $nid],
+        ));
         return;
       }
     }
@@ -164,18 +164,20 @@
  */
 function pageroute_page_form_submit($form_id, &$form_values) {
   global $page, $user;
-  
+
   //invoke submit hook
   pageroute_invoke('submit', $page);
 
   if ($form_values['op']['key'] == 'op') {
-    if ($form_values['op'] == t($page->options['add_button'])) {
+    if ($form_values['op']['button'] == t($page->options['add_button'])) {
       $path = _pageroute_create_path($page, $page->name .'/add');
     }
-    else if ($form_values['op'] == t($page->options['back'])) {
+    else if ($form_values['op']['button'] == t($page->options['back'])) {
       $path = _pageroute_create_path($page, $page->options['neighbours']['back']);
     }
-    else if (($form_values['op'] == t($page->options['forward']) || $form_values['op'] == t('Submit')) && $page->options['neighbours']['forward']) {
+    else if (($form_values['op']['button'] == t($page->options['forward'])
+              || $form_values['op']['button'] == t('Submit'))
+             && $page->options['neighbours']['forward']) {
       $path = _pageroute_create_path($page, $page->options['neighbours']['forward']);
     }
   }
@@ -307,9 +309,51 @@
 
 
 /*
+ * Add tabs, buttons and other necessary properties to the form. (Currently,
+ * the '#base' property is added so that the pageroute_page_form_validate()
+ * and pageroute_page_form_submit() functions are called.)
+ */
+function pageroute_decorate(&$form, $page, $button_name = 'op') {
+  pageroute_add_tabs($form, $page);
+  pageroute_add_buttons($form, $page, $button_name);
+  $form['#base'] = 'pageroute_page_form';
+}
+
+/*
+ * Return an already rendered form of plain pageroute buttons.
+ */
+function pageroute_get_buttons_form($page, $button_name = 'op')  {
+  return drupal_get_form('pageroute_buttons_form', $page, $button_name);
+}
+
+function pageroute_buttons_form($page, $button_name) {
+  $form = array();
+  pageroute_add_buttons($form, $page, $button_name);
+  $form['#base'] = 'pageroute_page_form';
+  $form['op'] = array('#type' => 'value');
+  return $form;
+}
+
+/*
+ * Return an already rendered form of plain pageroute tabs.
+ */
+function pageroute_get_tabs_form($page)  {
+  return drupal_get_form('pageroute_tabs_form', $page);
+}
+
+function pageroute_tabs_form($page) {
+  $form = array();
+  pageroute_add_tabs($form, $page);
+  $form['#base'] = 'pageroute_page_form';
+  $form['op'] = array('#type' => 'value');
+  return $form;
+}
+
+
+/*
  * Add the pageroute buttons to a given form.
  */
-function pageroute_add_buttons(&$form, $page, $button_name = 'op')  {
+function pageroute_add_buttons(&$form, $page, $button_name = 'op') {
 
   if ($page->type == 'manage' && $form['#node']) {
     $options = $form['#node']->nid ? $page->options['edit'] : $page->options['add'];
@@ -337,21 +381,6 @@
 }
 
 /*
- * Return an already rendered form of plain pageroute buttons.
- */
-function pageroute_get_buttons_form($page, $button_name = 'op')  {
-  return pageroute_get_form('pageroute_buttons_form', $page, $button_name);
-}
-
-function pageroute_buttons_form($page, $button_name) {
-  $form = array();
-  pageroute_add_buttons($form, $page, $button_name);
-  $form['op'] = array('#type' => 'value');
-  return $form;
-}
-
-
-/*
  * Add the pageroute tabs to a given form.
  */
 function pageroute_add_tabs(&$form, $page)  {
@@ -394,20 +423,6 @@
   $form['tabs']['#weight'] = -100;
 }
 
-/*
- * Return an already rendered form of plain pageroute tabs.
- */
-function pageroute_get_tabs_form($page)  {
-  return pageroute_get_form('pageroute_tabs_form', $page);
-}
-
-function pageroute_tabs_form($page) {
-  $form = array();
-  pageroute_add_tabs($form, $page);
-  $form['op'] = array('#type' => 'value');
-  return $form;
-}
-
 
 /*
  * Theme the tab-like submit buttons of a route.
Index: pageroute_pages.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageroute/pageroute_pages.inc,v
retrieving revision 1.7
diff -u -r1.7 pageroute_pages.inc
--- pageroute_pages.inc	5 Mar 2007 14:15:14 -0000	1.7
+++ pageroute_pages.inc	5 Mar 2007 21:28:21 -0000
@@ -26,7 +26,7 @@
       else if (!is_numeric($nid) || 
                !($node = node_load($page->options['content-type'] ? array('nid' => $nid, 'type' => $page->options['content-type']) : $nid)) ) {
         drupal_not_found();
-        return;
+        exit;
       }
       //show edit form
       if ($_POST['op'] == t('Delete')) {
@@ -38,7 +38,11 @@
       }
       if (node_access('update', $node)) {
         //show edit form
-        return node_form($node);
+        return drupal_get_form('node_form', $node);
+      }
+      else {
+        drupal_access_denied();
+        exit;
       }
       break;
 
@@ -59,18 +63,20 @@
           node_tag_new($node->nid);
 
           pageroute_invoke('load', $page);
-          return pageroute_get_form('pageroute_page_form', $page, $node);
+          return drupal_get_form('pageroute_page_form', $page, $node);
         }
         else if (db_result(db_query('SELECT nid FROM {node} WHERE nid = %d', $page->options['nid']))) {
           drupal_access_denied();
+          exit;
         }
         else {
           drupal_not_found();
+          exit;
         }
       break;
 
     default:
-     return 'Invalid page type.';
+      return 'Invalid page type.';
   }
 }
 
@@ -81,9 +87,8 @@
 function pageroute_page_form($page, $node) {
   $form = array();
 
-  //add tabs and buttons
-  pageroute_add_tabs($form, $page);
-  pageroute_add_buttons($form, $page);
+  //add tabs, buttons and other pageroute stuff
+  pageroute_decorate($form, $page);
   $form['buttons']['#weight'] = 10;
 
   //add the node's actual content
@@ -99,16 +104,15 @@
 function pageroute_form_alter($form_id, &$form) { 
   global $page;
 
-  if (isset($form['type']) && $form['type']['#value'] == $page->options['content-type'] &&
-      $form['type']['#value'] .'_node_form' == $form_id) {
+  if ($form_id == 'node_form' && isset($form['type'])
+      && $form['type']['#value'] == $page->options['content-type']) {
     //this is a node form viewed during a pageroute
- 
+
     $preview = $form['preview'];
     //write into $form['preview'], so that the buttons get rendered at the bottom of the page
 
-    //add/hide buttons
-    pageroute_add_tabs($form, $page);
-    pageroute_add_buttons($form, $page, ($page->type == 'manage') ? 'op2' : 'op');
+    //add tabs, buttons and other pageroute stuff
+    pageroute_decorate($form, $page, ($page->type == 'manage') ? 'op2' : 'op');
     $form['preview'] = $form['buttons'];
     unset($form['buttons']);
 
@@ -165,7 +169,7 @@
     $form = pageroute_page_manage_overview($content_type, $form, $sub_page, pageroute_page_get_uid($page));
 
     if ($form && !$sub_page) {
-      return pageroute_get_form('pageroute_page_manage_content_type', $form);
+      return drupal_get_form('pageroute_page_manage_content_type', $form);
     }
     else if ($sub_page) {
       return $form;
@@ -189,7 +193,7 @@
     case 'edit':
       if (!is_numeric(pageroute_arg($route, 2)) || !($node = node_load(pageroute_arg($route, 2)))) {
         drupal_not_found();
-        return;
+        exit;
       }
       $page->arg_offset = 3;
       pageroute_invoke('load', $page);
@@ -203,15 +207,18 @@
       }
       if (node_access('update', $node)) {
         //show edit form
-        return node_form($node);
+        return drupal_get_form('node_form',$node);
       }
-      drupal_not_found();
-      return;
-    
+      else {
+        drupal_not_found();
+        exit;
+      }
+      break;
+
     case 'delete':
       if (!is_numeric(pageroute_arg($route, 2)) || !($node = node_load(pageroute_arg($route, 2)))) {
         drupal_not_found();
-        return;
+        exit;
       }
       $page->arg_offset = 3;
       pageroute_invoke('load', $page);
@@ -219,7 +226,7 @@
 
     default:
       drupal_not_found();
-      return;      
+      exit;
   }
 }
 
@@ -278,11 +285,7 @@
     $types = node_get_types('names');
     $form['output'] = array('#value' => t('There is no @type.', array('@type' => $types[$content_type])));
   }
-  
-  if (!$sub_page) {
-    pageroute_add_tabs($form, $page);
-  }
-  
+
   //add buttons
   if ($page->options['add_button'] && (!module_exists('nodefamily') || nodefamily_content_type_get_max($page->options['content-type']) != $i-1 || $i == 1)
      && !($i == 1 && $page->options['empty_add'])) {
@@ -292,7 +295,7 @@
 
   if (!$sub_page) {
     $form['op'] = array('#type' => 'value');
-    pageroute_add_buttons($form, $page);
+    pageroute_decorate($form, $page);
   }
 
   return $form;
Index: pageroute_subform.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageroute/pageroute_subform.module,v
retrieving revision 1.2
diff -u -r1.2 pageroute_subform.module
--- pageroute_subform.module	5 Mar 2007 14:06:40 -0000	1.2
+++ pageroute_subform.module	5 Mar 2007 21:28:21 -0000
@@ -136,7 +136,7 @@
           drupal_set_title(check_plain($page->title));
         }
         pageroute_invoke('load', $page);
-        return pageroute_get_form('pageroute_subform_user_form', $page);
+        return drupal_get_form('pageroute_subform_user_form', $page);
 
     default:
      return 'Invalid page type.';
@@ -154,11 +154,10 @@
   $form['user'] += _user_forms($edit, $account, $page->options['category']);
   $form['user']['_category'] = array('#type' => 'value', '#value' => $page->options['category']);
   $form['user']['_account'] = array('#type' => 'value', '#value' => $account);
-  $form['user']['#root_form_id'] = 'pageroute_page_form'; // as defined in pageroute_get_form()
+  $form['user']['#root_form_id'] = 'pageroute_page_form';
 
-  //add tabs and buttons
-  pageroute_add_tabs($form, $page);
-  pageroute_add_buttons($form, $page);
+  //add tabs, buttons and other pageroute stuff
+  pageroute_decorate($form, $page);
   $form['op'] = array('#type' => 'value');
   $form['#attributes']['enctype'] = 'multipart/form-data';
 
Index: pageroute_ui.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageroute/pageroute_ui.module,v
retrieving revision 1.20
diff -u -r1.20 pageroute_ui.module
--- pageroute_ui.module	5 Mar 2007 14:06:40 -0000	1.20
+++ pageroute_ui.module	5 Mar 2007 21:28:22 -0000
@@ -27,7 +27,7 @@
         return t('Have a look at the pageroute !link for some explanation of '.
                  'the pageroute page types.',
                  array(
-                   '!link' => l(t('documentation'), 'admin/help/pageroute_ui')
+                   '!link' => l(t('Documentation'), 'admin/help/pageroute_ui')
                  ));
       }
       else {
@@ -65,18 +65,11 @@
       'path' => 'admin/build/pageroute/add',
       'title' => t('Add route'),
       'callback' => 'drupal_get_form',
-      'callback arguments' => array('pageroute_ui_route_edit'),
+      'callback arguments' => array('pageroute_ui_route_edit', 'add'),
       'access' => $access,
       'type' => MENU_LOCAL_TASK
     );
     $items[] = array(
-      'path' => 'admin/build/pageroute/edit',
-      'callback' => 'drupal_get_form',
-      'callback arguments' => array('pageroute_ui_route_edit'),
-      'access' => $access,
-      'type' => MENU_CALLBACK
-    );
-    $items[] = array(
       'path' => 'admin/build/pageroute/delete',
       'callback' => 'drupal_get_form',
       'callback arguments' => array('pageroute_ui_route_delete_confirm'),
@@ -86,6 +79,15 @@
   }
   else if (is_numeric(arg(4))) {
     $items[] = array(
+      'path' => 'admin/build/pageroute/route/'. arg(4) .'/edit',
+      'title' => t('Edit route'),
+      'callback' => 'drupal_get_form',
+      'callback arguments' => array('pageroute_ui_route_edit', 'edit', arg(4)),
+      'access' => $access,
+      'type' => MENU_LOCAL_TASK,
+      'weight' => -20,
+    );
+    $items[] = array(
       'path' => 'admin/build/pageroute/route/'. arg(4),
       'callback' => 'pageroute_ui_page_edit_page',
       'type' => MENU_CALLBACK,
@@ -93,19 +95,19 @@
     );
     $items[] = array(
       'path' => 'admin/build/pageroute/route/'. arg(4) .'/list',
-      'title' => t('list pages'),
+      'title' => t('List pages'),
       'type' => MENU_DEFAULT_LOCAL_TASK,
       'weight' => -10
     );
     $items[] = array(
       'path' => 'admin/build/pageroute/route/'. arg(4) .'/add',
-      'title' => t('add page'),
+      'title' => t('Add page'),
       'callback' => 'pageroute_ui_page_edit_page',
       'access' => $access,
       'type' => MENU_LOCAL_TASK
     );
     $items[] = array(
-      'path' => 'admin/build/pageroute/route/'. arg(4) .'/edit',
+      'path' => 'admin/build/pageroute/route/'. arg(4) .'/edit/'. arg(6),
       'callback' => 'pageroute_ui_page_edit_page',
       'access' => $access,
       'type' => MENU_CALLBACK
@@ -133,14 +135,14 @@
 
   $result = db_query("SELECT * FROM {pageroute_routes} ORDER BY path");
 
-  $header = array(t('path'), array('data' => t('Operations'), 'colspan' => '3'));
+  $header = array(t('Path'), array('data' => t('Operations'), 'colspan' => '3'));
 
   while ($route = db_fetch_object($result)) {
     $row = array();
     $row[] = check_plain($route->path);
-    $row[] = l(t('edit route'), "admin/build/pageroute/edit/$route->prid");
-    $row[] = l(t('edit pages'), "admin/build/pageroute/route/$route->prid/list");
-    $row[] = l(t('add page'), "admin/build/pageroute/route/$route->prid/add");
+    $row[] = l(t('Edit route'), "admin/build/pageroute/route/$route->prid/edit");
+    $row[] = l(t('Edit pages'), "admin/build/pageroute/route/$route->prid/list");
+    $row[] = l(t('Add page'), "admin/build/pageroute/route/$route->prid/add");
     $rows[] = $row;
   }
 
@@ -152,15 +154,15 @@
 }
 
 
-function pageroute_ui_route_edit() {
-  if (arg(3) != 'add' && is_numeric(arg(4))) {
-    $route = db_fetch_object(db_query("SELECT * FROM {pageroute_routes} WHERE prid = %d", arg(4)));
+function pageroute_ui_route_edit($op = 'add', $prid = NULL) {
+  if ($op != 'add' && is_numeric($prid)) {
+    $route = db_fetch_object(db_query("SELECT * FROM {pageroute_routes} WHERE prid = %d", $prid));
     $route->options = unserialize($route->options);
-    drupal_set_title(t('edit route'));
+    drupal_set_title(t('Edit route'));
   }
 
   $form['path'] = array('#type' => 'textfield', 
-                        '#title' => t('path'), 
+                        '#title' => t('Path'), 
                         '#maxlength' => 127,
                         '#default_value' => $route ? $route->path : '',
                         '#required' => TRUE,
@@ -191,7 +193,9 @@
     '#type' => 'fieldset',
     '#title' => t('Access control'),
     '#description' => t('Restricts access to the whole pageroute.') .'<br />'.
-                      t('Warning: This is only about this route, so it doesn\'t affect the usual node creation, edit and view pages.'),
+                      t('Warning: This is only about this route, so it '.
+                        'doesn\'t affect the usual node creation, edit and '.
+                        'view pages.'),
     '#collapsible' => TRUE,
     '#collapsed' => TRUE,
   );
@@ -330,7 +334,7 @@
 
   $form['name'] = array(
     '#type' => 'textfield',
-    '#title' => t('name'),
+    '#title' => t('Name'),
     '#maxlength' => 63,
     '#default_value' => $page->name,
     '#required' => TRUE,
@@ -341,7 +345,7 @@
 
   $form['title'] = array(
     '#type' => 'textfield',
-    '#title' => t('title'),
+    '#title' => t('Title'),
     '#maxlength' => 255,
     '#default_value' => $page->title,
     '#description' => t('An optional title which will be set when the page is viewed.'),
@@ -356,17 +360,17 @@
   );
   $form['options']['forward'] = array(
     '#type' => 'textfield',
-    '#title' => t('forward button label'),
+    '#title' => t('Forward button label'),
     '#maxlength' => 32,
-    '#default_value' => isset($page->options['forward']) ? $page->options['forward'] : t('forward'),
+    '#default_value' => isset($page->options['forward']) ? $page->options['forward'] : t('Forward'),
     '#description' => t('The label of the forward button. Leave it empty to hide the button.'),
     '#weight' => 3,
   );
   $form['options']['back'] = array(
     '#type' => 'textfield',
-    '#title' => t('back button label'),
+    '#title' => t('Back button label'),
     '#maxlength' => 32,
-    '#default_value' => isset($page->options['back']) ? $page->options['back'] : t('back'),
+    '#default_value' => isset($page->options['back']) ? $page->options['back'] : t('Back'),
     '#description' => t('The label of the back button. Leave it empty to hide the button.'),
     '#weight' => 4,
   );
@@ -412,7 +416,7 @@
     case 'manage':
         $form['options']['content-type'] = array(
           '#type' => 'select',
-          '#title' => t('content type'),
+          '#title' => t('Content type'),
           '#options' => node_get_types('names'),
           '#required' => TRUE,
           '#default_value' => $page->options['content-type'],
@@ -426,15 +430,15 @@
         );
         $form['options']['add_button'] = array(
           '#type' => 'textfield',
-          '#title' => t('add button label'),
+          '#title' => t('Add button label'),
           '#maxlength' => 32,
-          '#default_value' => isset($page->options['add_button']) ? $page->options['add_button'] : t('add'),
-          '#description' => t('The label of the add button. Leave it empty to hide the button.'),
+          '#default_value' => isset($page->options['add_button']) ? $page->options['add_button'] : t('Add'),
+          '#description' => t('The label of the Add button. Leave it empty to hide the button.'),
           '#weight' => 4,
         );
         $groups = array(
-          'add' => t('node add form'),
-          'edit' => t('node edit form')
+          'add' => t('Node add form'),
+          'edit' => t('Node edit form')
         );
         foreach ($groups as $name => $title) {
           $form['options'][$name] = array(
@@ -446,15 +450,15 @@
           );
           $form['options'][$name]['forward'] = array(
             '#type' => 'textfield', 
-            '#title' => t('forward button label'),
+            '#title' => t('Forward button label'),
             '#maxlength' => 32,
-            '#default_value' => isset($page->options[$name]['forward']) ? $page->options[$name]['forward'] : t('forward'),
+            '#default_value' => isset($page->options[$name]['forward']) ? $page->options[$name]['forward'] : t('Forward'),
             '#description' => t('The label of the forward button. Leave it empty to hide the button.'),
             '#weight' => 3,
           );
           $form['options'][$name]['back'] = array(
             '#type' => 'textfield', 
-            '#title' => t('back button label'),
+            '#title' => t('Back button label'),
             '#maxlength' => 32,
             '#default_value' => $page->options[$name]['back'],
             '#description' => t('The label of the back button. Leave it empty to hide the button.'),
@@ -486,7 +490,7 @@
     case 'add':
         $form['options']['content-type'] = array(
           '#type' => 'select',
-          '#title' => t('content type'),
+          '#title' => t('Content type'),
           '#options' => node_get_types('names'),
           '#required' => TRUE,
           '#default_value' => $page->options['content-type'],
@@ -515,7 +519,7 @@
     case 'view':
         $form['options']['nid'] = array(
           '#type' => 'textfield',
-          '#title' => t('node ID'),
+          '#title' => t('Node ID'),
           '#description' => t('Enter the node ID of the node that should be '.
                               'displayed at this page. Enter 0 to use the '.
                               'second argument as node ID like the node edit '.
@@ -532,7 +536,7 @@
       }
       $form['options']['category'] = array(
         '#type' => 'select',
-        '#title' => t('category'),
+        '#title' => t('Category'),
         '#description' => t('The form of the chosen category will be used for this page.'),
         '#required' => TRUE,
         '#default_value' => $page->options['category'],
@@ -546,7 +550,7 @@
   if ($type == 'edit') {
     $form['options']['content-type'] = array(
       '#type' => 'select',
-      '#title' => t('content type for new nodes'),
+      '#title' => t('Content type for new nodes'),
       '#options' => array('' => '') + node_get_types('names'),
       '#default_value' => $page->options['content-type'],
       '#weight' => 2,
@@ -604,7 +608,7 @@
   drupal_set_title(check_plain($route->path));
   $result = db_query("SELECT * FROM {pageroute_pages} WHERE prid = %d ORDER BY weight, name", $route->prid);
   
-  $header = array(t('name'), t('title'), t('type'), t('weight'), array('data' => t('Operations'), 'colspan' => '2'));
+  $header = array(t('Name'), t('Title'), t('Type'), t('Weight'), array('data' => t('Operations'), 'colspan' => '2'));
   $types = pageroute_get_types();
 
   $rows = array();
@@ -613,10 +617,12 @@
     $row = array();
     $row[] = l($page->name, $route->path .'/'. $page->name);
     $row[] = check_plain($page->title);
-    $row[] = $page->type == 'view' ? l($types[$page->type], 'node/'. $page->options['nid']) : $types[$page->type];
+    $row[] = ($page->type == 'view' && $page->options['nid'] != 0)
+               ? l($types[$page->type], 'node/'. $page->options['nid'])
+               : $types[$page->type];
     $row[] = $page->weight;
-    $row[] = l(t('edit'), "admin/build/pageroute/route/$route->prid/edit/$page->name");
-    $row[] = l(t('delete'), "admin/build/pageroute/route/$route->prid/delete/$page->name");
+    $row[] = l(t('Edit'), "admin/build/pageroute/route/$route->prid/edit/$page->name");
+    $row[] = l(t('Delete'), "admin/build/pageroute/route/$route->prid/delete/$page->name");
     $rows[] = $row;
   }
 
@@ -640,7 +646,7 @@
   );
   $form['submit'] = array(
     '#type' => submit,
-    '#value' => t('forward'),
+    '#value' => t('Forward'),
   );
   return $form;
 }
@@ -740,20 +746,22 @@
  * Stores the updated $page in the database
  */
 function pageroute_ui_update_page(&$route, &$page, $old_name) {
-  db_query("UPDATE {pageroute_pages} SET name = '%s', title='%s', weight = %d, options = '%s' WHERE prid = %d AND name = '%s'", 
-             $page->name, $page->title, $page->weight, serialize($page->options), $route->prid, $old_name);
+  db_query("UPDATE {pageroute_pages} SET name = '%s', title='%s', ".
+           "weight = %d, options = '%s' WHERE prid = %d AND name = '%s'",
+           $page->name, $page->title, $page->weight,
+           serialize($page->options), $route->prid, $old_name);
 }
 
 
 function pageroute_ui_get_lonely_node_types($op = 'types') {
-  if (!module_exist('nodefamily')) {
+  if (!module_exists('nodefamily')) {
     return array();
   }
   $types = node_get_types($op);
   $lonely_node_types = array();
   foreach($types as $typename => $type) {
     if (nodefamily_content_type_get_max($typename) == 1) {
-      $lonely_node_types[$typename] = $op;
+      $lonely_node_types[$typename] = $type;
     }
   }
   return $lonely_node_types;
