Index: pageroute.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageroute/pageroute.module,v
retrieving revision 1.71.2.8
diff -u -r1.71.2.8 pageroute.module
--- pageroute.module	5 Aug 2009 14:36:32 -0000	1.71.2.8
+++ pageroute.module	12 Aug 2009 13:26:14 -0000
@@ -136,13 +136,12 @@
   drupal_add_css($path, 'module', 'all', FALSE);
 
   if (isset($form_state['target'])) {
-    $route->setSuggestedPage($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;
 
     if (module_exists('rules')) {
-      $args = &$form_state['args'];
       rules_invoke_event('pageroute_used', $route, $user, $uid, $nid);
     }
     module_invoke_all('pageroute_used',  $route, $user, $uid, $nid);
@@ -215,7 +214,10 @@
 
   $options = $page->options;
   $button = $form_state['clicked_button'];
-
+  
+  $class = get_class($page);
+  $info = call_user_func(array($class, 'info'));
+  
   if (!isset($button['#tab-button'])) {  // not a tab-like submit button
     switch ($button['#value']) {
       case $options['cancel']:
@@ -225,26 +227,33 @@
         return $form;
       case $options['forward']: // add form submit handler
       case $options['back']:
-        $class = get_class($page);
         // add default submit handler
-        $function = 'getDefaultSubmitHandler';
-        pageroute_insert_handlers($form_state['submit_handlers'], call_user_func(array($class, $function), $form));
-        // add default validate handler
-        $function = 'getDefaultValidateHandler';
-        pageroute_insert_handlers($form_state['validate_handlers'], call_user_func(array($class, $function), $form));
+        if (!$info['useForm']) {
+          $function = 'getDefaultSubmitHandler';
+          pageroute_insert_handlers($form, $form_state, call_user_func(array($class, $function), $form));
+          // add default validate handler
+          $function = 'getDefaultValidateHandler';
+          pageroute_insert_handlers($form, $form_state, call_user_func(array($class, $function), $form), FALSE);
+        }
       default:
-        $form_state['submit_handlers'][] = 'pageroute_page_form_submit_prepare_target';
-        $form_state['submit_handlers'][] = 'pageroute_page_form_submit';
+        if (!$info['useForm']) {
+          pageroute_insert_handlers($form, $form_state, 'pageroute_page_form_submit_prepare_target');
+          pageroute_insert_handlers($form, $form_state, 'pageroute_page_form_submit');
+        }
+        else {
+          $form['#submit'][] = 'pageroute_page_form_submit_prepare_target';
+          $form['#submit'][] = 'pageroute_page_form_submit';
+        }
     }
   }
   else {  // tab-like submit button
     $class = get_class($page);
     // add default submit handler
     $function = 'getDefaultSubmitHandler';
-    pageroute_insert_handlers($form_state['submit_handlers'], call_user_func(array($class, $function), $form));
+    pageroute_insert_handlers($form, $form_state['submit_handlers'], call_user_func(array($class, $function), $form));
     // add default validate handler
     $function = 'getDefaultValidateHandler';
-    pageroute_insert_handlers($form_state['validate_handlers'], call_user_func(array($class, $function), $form));
+    pageroute_insert_handlers($form, $form_state['validate_handlers'], call_user_func(array($class, $function), $form), FALSE);
   }
 
   // in case validate fails
@@ -256,12 +265,13 @@
 /**
  * Insert submit/validate handlers into array
  */
-function pageroute_insert_handlers(&$array, $handlers) {
-  if ($handlers) {
-    $save = $array;
-    $array = $handlers;
-    if ($save) {
-      $array += $save;
+function pageroute_insert_handlers(&$form, &$form_state, $handler, $submit = TRUE) {
+  if ($handler) {
+    if ($submit) {
+      $form_state['submit_handlers'][] = $handler;
+    }
+    else {
+      $form_state['validate_handlers'][] = $handler;
     }
   }
 }
@@ -356,7 +366,7 @@
   $page = &$form_state['page'];
   $route = &$page->route;
 
-  $form_state['target'] = $page->get_cancel_target();
+  $form_state['target'] = $page->getCancelTarget();
 
   if (!$route->checkPageAccess($page->name, $form_state['target'])) {
     if ($route->options['redirect_path']) {
Index: pageroute.page_useredit.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageroute/Attic/pageroute.page_useredit.inc,v
retrieving revision 1.1.2.2
diff -u -r1.1.2.2 pageroute.page_useredit.inc
--- pageroute.page_useredit.inc	10 Aug 2009 10:13:31 -0000	1.1.2.2
+++ pageroute.page_useredit.inc	12 Aug 2009 13:26:14 -0000
@@ -27,12 +27,6 @@
       pageroute_exit_now();
     }
 
-    if (isset($args['todo']['action']) && $args['todo']['action'] == t('Delete')) {
-      $args['hide_pageroute_buttons'] = TRUE;
-      $form += pageroute_node_delete_confirm($account, $form, $page, $args);
-      return;
-    }
-
     $args['hide_pageroute_buttons'] = FALSE;
     $args['default_target'] = PAGEROUTE_FORWARD;
 
@@ -41,7 +35,7 @@
     );
 
     $form += drupal_retrieve_form('user_profile_form', $form_state, $account, $this->options['category']);
-    drupal_prepare_form('user_edit_form', $form, $form_state);
+    drupal_prepare_form('user_profile_form', $form, $form_state);
   }
 
   public function getAdminForm($page, &$form) {
@@ -66,22 +60,15 @@
   }
 
   public static function info() {
-    return array('name' => t('User editing form'));
+    return array('name' => t('User editing form'), 'useForm' => TRUE);
   }
 
   public function formSubmitted(&$form_state) {
     $todo = NULL;
     $args = &$form_state['storage']['route']->args;
-
-    if ($form_state['clicked_button']['#value'] == t('Delete')) {
-        if (is_numeric($form_state['clicked_button']['#name'])) {
-          $target = $form_state['clicked_button']['#name'];
-        }
-        else {
-          $target = $args['todo']['target'];
-        }
-
-        $todo = array('action' => $form_state['clicked_button']['#value'], 'target' => $target);
+    
+    if ($form_state['clicked_button']['#value'] == 'Save') {
+      $args['default_target'] = PAGEROUTE_CURRENT;
     }
 
     return $todo;
@@ -90,41 +77,8 @@
   public function setUp() {
     include_once(drupal_get_path('module', 'user') .'/user.pages.inc');
   }
-}
-
-/*
- * Provide an extra delete page to keep control about the destination parameter.
- */
-function pageroute_user_delete_confirm($user, $form, &$page, $args = NULL) {
-  if (user_access('delete', $user)) {
-
-    $form = array();
-    $form['uid'] = array('#type' => 'value', '#value' => $user->uid);
-
-    $form = confirm_form($form,
-      t('Are you sure you want to delete %name?', array('%name' => $user->name)),
-      pageroute_get_page_path($page, $args),
-      t('This action cannot be undone.'), t('Delete'), t('Cancel')
-    );
-
-    $form['actions']['submit']['#submit'][] = 'pageroute_node_delete_confirm_submit';
-
-    return $form;
-  }
-  drupal_access_denied();
-  pageroute_exit_now();
-}
-
-function pageroute_user_delete_confirm_submit($form, &$form_state) {
-  $form_state['target'] = PAGEROUTE_CURRENT;
-
-  if ($form_state['values']['confirm']) {
-    user_delete($form_state['values']['uid']);
+  
+  public static function getDefaultSubmitHandler($form) {
+    return 'user_profile_form_submit';
   }
-
-  $form_state['rebuild'] = TRUE;
-  unset($form_state['values']['target']);
-  unset($form_state['button_clicked']);
-  unset($form_state['args']['todo']);
-  unset($form_state['todo']);
 }
Index: pageroute.route.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageroute/pageroute.route.inc,v
retrieving revision 1.1.2.7
diff -u -r1.1.2.7 pageroute.route.inc
--- pageroute.route.inc	5 Aug 2009 14:36:32 -0000	1.1.2.7
+++ pageroute.route.inc	12 Aug 2009 13:26:15 -0000
@@ -32,7 +32,7 @@
     $this->pageAccess = $route_data->pageAccess;
 
     $this->pageDataCurrent = NULL;
-    $this->page_data_previous = NULL;
+    $this->pageDataPrevious = NULL;
   }
 
   /**
@@ -118,21 +118,26 @@
    * Default page if no page was specified or access denied to specified page
    * else specified page
    */
-  public function setSuggestedPage($target = PAGEROUTE_CURRENT) {
+  public function setSuggestedPage($target = PAGEROUTE_CURRENT, $button_name = NULL) {
     $page = &$this->pageDataCurrent;
 
     if ($page) {
-      $page_next = &$this->getPage($page->name, $target);
+      if (isset($button_name)) {
+        $page_next = &$this->getPage($button_name, $target);
+      }
+      else {
+        $page_next = &$this->getPage($page->name, $target);
+      }
 
       if ($page_next) {
         if (empty($this->pageAccess) || $this->pageAccess[$page_next->name]) {
-          $this->page_data_previous = &$this->pageDataCurrent;
+          $this->pageDataPrevious = &$this->pageDataCurrent;
           $this->pageDataCurrent = &$page_next;
         }
       }
     }
     else {
-      $this->page_data_previous = &$this->pageDataCurrent;
+      $this->pageDataPrevious = &$this->pageDataCurrent;
       $this->pageDataCurrent = &$this->getDefaultPage();
     }
 
Index: pageroute.page_edit.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageroute/pageroute.page_edit.inc,v
retrieving revision 1.1.2.7
diff -u -r1.1.2.7 pageroute.page_edit.inc
--- pageroute.page_edit.inc	5 Aug 2009 14:36:32 -0000	1.1.2.7
+++ pageroute.page_edit.inc	12 Aug 2009 13:26:14 -0000
@@ -120,7 +120,7 @@
   }
 
   public static function getDefaultSubmitHandler($form) {
-    return $form['buttons']['submit']['#submit'];
+    return $form['buttons']['submit']['#submit'][0];
   }
 }
 
Index: pageroute.page_add.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pageroute/pageroute.page_add.inc,v
retrieving revision 1.1.2.7
diff -u -r1.1.2.7 pageroute.page_add.inc
--- pageroute.page_add.inc	5 Aug 2009 14:36:32 -0000	1.1.2.7
+++ pageroute.page_add.inc	12 Aug 2009 13:26:14 -0000
@@ -84,6 +84,6 @@
   }
 
   public static function getDefaultSubmitHandler($form) {
-    return $form['buttons']['submit']['#submit'];
+    return $form['buttons']['submit']['#submit'][0];
   }
 }
