Index: pageroute.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageroute/pageroute.module,v
retrieving revision 1.71.2.9
diff -u -r1.71.2.9 pageroute.module
--- pageroute.module	17 Aug 2009 11:38:30 -0000	1.71.2.9
+++ pageroute.module	19 Aug 2009 09:55:57 -0000
@@ -1,5 +1,5 @@
 <?php
-// $Id: pageroute.module,v 1.71.2.9 2009/08/17 11:38:30 fago Exp $
+// $Id: pageroute.module,v 1.71.2.8 2009/08/05 14:36:32 fago Exp $
 
 /**
  * @file
@@ -137,7 +137,7 @@
 
   if (isset($form_state['target'])) {
     $route->setSuggestedPage($form_state['target'], $form_state['clicked_button']['#tab-button']);
-
+    
     $uid = isset($args['uid']) ? $args['uid'] : NULL;
     $nid = isset($args['nid']) ? $args['nid'] : NULL;
 
@@ -175,6 +175,7 @@
 
   drupal_set_title(check_plain($page_data->title));
 
+  $page = PageroutePage::getObject($page_data, $page_data->module);
   // loads the page variable with a page object
   $route->getForm($form, $page_data, $page, $form_state, $args);
 
@@ -182,7 +183,8 @@
     $args['hide_pageroute_buttons'] = FALSE;
   }
 
-  pageroute_decorate($form, $page_data, $args['hide_pageroute_buttons']);
+  
+  pageroute_decorate($form, $page, $args['hide_pageroute_buttons']);
 
   $form['#theme_saved'] = isset($form['#theme']) ? $form['#theme'] : array();
   $form['#theme'] = 'pageroute_embedded_form_reuse';
@@ -208,7 +210,8 @@
     $page = &$form_state['page'];
   }
   else {
-    $page = &PageroutePage::getObject($form_state['storage']['route']->pageDataCurrent);
+    $pageCurrentData = $form_state['storage']['route']->pageDataCurrent;
+    $page = &PageroutePage::getObject($pageCurrentData, $pageCurrentData->module);
     $form_state['page'] = &$page;
   }
 
@@ -228,7 +231,7 @@
       case $options['forward']: // add form submit handler
       case $options['back']:
         // add default submit handler
-        if (!$info['useForm']) {
+        if (!isset($info['useForm']) || !$info['useForm']) {
           $function = 'getDefaultSubmitHandler';
           pageroute_insert_handlers($form, $form_state, call_user_func(array($class, $function), $form));
           // add default validate handler
@@ -236,7 +239,7 @@
           pageroute_insert_handlers($form, $form_state, call_user_func(array($class, $function), $form), FALSE);
         }
       default:
-        if (!$info['useForm']) {
+        if (!isset($info['useForm']) || !$info['useForm']) {
           pageroute_insert_handlers($form, $form_state, 'pageroute_page_form_submit_prepare_target');
           pageroute_insert_handlers($form, $form_state, 'pageroute_page_form_submit');
         }
@@ -554,8 +557,13 @@
 function pageroute_add_buttons(&$form, &$page, $button_name = 'page_op') {
   //get the right options first
   $options = pageroute_invoke($page, 'options');
-  $options = (isset($options)) ? $options : $page->options;
-
+  if (isset($page->options['current_group']) && $page->options['current_group']!='') {
+    $options = $page->options[$page->options['current_group']];
+  }
+  else {
+    $options = $page->options;
+  }
+  
   $form_buttons = array();
 
   foreach (array('back', 'forward') as $key => $name) {
Index: pageroute.page_manage.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageroute/pageroute.page_manage.inc,v
retrieving revision 1.1.2.7
diff -u -r1.1.2.7 pageroute.page_manage.inc
--- pageroute.page_manage.inc	5 Aug 2009 14:36:32 -0000	1.1.2.7
+++ pageroute.page_manage.inc	19 Aug 2009 09:55:58 -0000
@@ -26,18 +26,21 @@
 
     switch ($args['todo']['action']) {
       case t('Add'):
-        $args['hide_pageroute_buttons'] = TRUE;
+        $this->options['current_group'] = 'add';
+        $args['hide_pageroute_buttons'] = FALSE;
         $args['default_target'] = PAGEROUTE_CURRENT;
         PageroutePageAdd::setNodeAddForm($form, $form_state, $this);
+        parent::unsetForm($form, 'add');
         break;
 
       case t('Edit'):
-        $args['hide_pageroute_buttons'] = TRUE;
+        $this->options['current_group'] = 'edit';
+        $args['hide_pageroute_buttons'] = FALSE;
         $args['default_target'] = PAGEROUTE_CURRENT;
         $args['nid'] = $args['todo']['target'];
         $node = isset($form_state['node']) ? $form_state['node'] : NULL;
-
         PageroutePageEdit::setNodeEditForm($form, $form_state, $this, $args, $node);
+        parent::unsetForm($form, 'edit');
         break;
 
       case t('Delete'):
@@ -57,24 +60,6 @@
         $args['hide_pageroute_buttons'] = FALSE;
         $form += array('pageroute-manage' => PageroutePageManage::pageroutePageManageOverview($form_state, $this, $this->options['content-type']));
     }
-    parent::unsetForm($form);
-  }
-
-  /**
-   * Clear unnecessary buttons
-   */
-  public function unsetForm(&$form) {
-    if (isset($this->options['preview']) && !$this->options['preview']) {
-      unset($form['buttons']['preview']);
-    }
-
-    if (isset($this->options['submit']) && !$this->options['submit']) {
-      unset($form['buttons']['submit']);
-    }
-
-    if (isset($this->options['nodelete']) && $this->options['nodelete']) {
-      unset($form['buttons']['delete']);
-    }
   }
 
   /**
Index: pageroute.route.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageroute/pageroute.route.inc,v
retrieving revision 1.1.2.8
diff -u -r1.1.2.8 pageroute.route.inc
--- pageroute.route.inc	17 Aug 2009 11:38:30 -0000	1.1.2.8
+++ pageroute.route.inc	19 Aug 2009 09:55:58 -0000
@@ -190,9 +190,6 @@
    * Build and return the form for the current page
    */
   public function getForm(&$form, &$page_data, &$page, &$form_state, &$args) {
-    // Include needed type!
-    $page = PageroutePage::getObject($page_data);
-
     if (!$page) {
       return FALSE;
     }
@@ -209,7 +206,7 @@
     }
   }
 
-  private function getPage($page_name, $target = PAGEROUTE_CURRENT) {
+  protected function getPage($page_name, $target = PAGEROUTE_CURRENT) {
 
     if (!isset($this->pageIndex[$page_name])) {
       return FALSE;
Index: pageroute.page.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageroute/pageroute.page.inc,v
retrieving revision 1.1.2.7
diff -u -r1.1.2.7 pageroute.page.inc
--- pageroute.page.inc	5 Aug 2009 14:36:32 -0000	1.1.2.7
+++ pageroute.page.inc	19 Aug 2009 09:55:58 -0000
@@ -66,10 +66,9 @@
    * @return
    *   New page object
    */
-  public static function getObject($page_data) {
+  public static function getObject($page_data, $module = '') {
     $type = $page_data->type;
     $bases = pageroute_get_types('base');
-
     pageroute_include_page_type($module, $type);
     $page_class = pageroute_get_page_class($page_data->module, $page_data->type);
     $page = new $page_class($page_data);
@@ -84,7 +83,7 @@
    * @param $delete
    *    Wheter the "delete checkbox" should be added.
    */
-  public function nodeUI($page, &$form, $delete = TRUE) {
+  protected function nodeUI($page, &$form, $delete = TRUE) {
     $form['options']['preview'] = array(
       '#type' => 'checkbox',
       '#title' => t('Display preview button'),
@@ -110,16 +109,22 @@
   /**
    * Remove any unnecessary buttons.
    */
-  public function unsetForm(&$form) {
-    if (isset($this->options['preview']) && !$this->options['preview']) {
+  public function unsetForm(&$form, $group = '') {  
+    if ($group) {
+      $options = $this->options[$group];  
+    }
+    else {
+      $options = $this->options;
+    }
+    if (isset($options['preview']) && !$options['preview']) {
       unset($form['buttons']['preview']);
     }
 
-    if (isset($this->options['submit']) && !$this->options['submit']) {
+    if (isset($options['submit']) && !$options['submit']) {
       unset($form['buttons']['submit']);
     }
 
-    if (isset($this->options['nodelete']) && $this->options['nodelete']) {
+    if (isset($options['nodelete']) && $options['nodelete']) {
       unset($form['buttons']['delete']);
     }
   }
Index: pageroute.page_edit.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageroute/pageroute.page_edit.inc,v
retrieving revision 1.1.2.8
diff -u -r1.1.2.8 pageroute.page_edit.inc
--- pageroute.page_edit.inc	17 Aug 2009 11:38:30 -0000	1.1.2.8
+++ pageroute.page_edit.inc	19 Aug 2009 09:55:58 -0000
@@ -35,7 +35,7 @@
   public static function setNodeEditForm(&$form, &$form_state, &$page, &$args, $node = NULL) {
 
     if (!$node) {
-      ($args && isset($args['nid'])) ? $nid = $args['nid'] : $nid = $page->options['nid'];
+      $nid = ($args && isset($args['nid'])) ? $args['nid'] : $page->options['nid'];
 
       if (empty($nid) && $page->options['content-type']) {
         PageroutePageAdd::setNodeAddForm($form, $form_state, $page);
Index: pageroute.page_add.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageroute/pageroute.page_add.inc,v
retrieving revision 1.1.2.8
diff -u -r1.1.2.8 pageroute.page_add.inc
--- pageroute.page_add.inc	17 Aug 2009 11:38:30 -0000	1.1.2.8
+++ pageroute.page_add.inc	19 Aug 2009 09:55:58 -0000
@@ -27,7 +27,7 @@
 
     // If a node type has been specified, validate its existence.
     if (node_access('create', $type)) {
-      $account = user_load(array('uid' => pageroute_page_get_uid($this, 'administer nodes')));
+      $account = user_load(array('uid' => pageroute_page_get_uid($page, 'administer nodes')));
 
       // Initialize settings:
       $node = array('uid' => $account->uid, 'name' => $account->name, 'type' => $type);
