? simplified_notifications_ui.patch
Index: notifications.manage.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/notifications/Attic/notifications.manage.inc,v
retrieving revision 1.1.2.3.2.5
diff -u -p -r1.1.2.3.2.5 notifications.manage.inc
--- notifications.manage.inc	13 Nov 2009 14:10:49 -0000	1.1.2.3.2.5
+++ notifications.manage.inc	29 Dec 2009 05:26:40 -0000
@@ -31,13 +31,20 @@ function notifications_manage_user_subsc
     $form = notifications_multiple_delete_confirm($form_state, array_filter($form_state['values']['subscriptions']));
     return $form;
   }
+
+  // Display the filter form.
   $form = notifications_subscriptions_filter_form();
   $form['filters']['#title'] = t('Filter');
+
   // Display collapsed only when no filters set
   $form['filters'] += array('#collapsible' => TRUE, '#collapsed' => empty($_SESSION['subscriptions_overview_filter']));
-  $form['#theme'] = 'notifications_subscriptions_filter_form';
+
+  // Display a list of subscriptions ready for bulk operations.
   $form['admin']  = notifications_manage_subscriptions_form($account);
 
+  // Add on the account, to make it easier to alter this.
+  $form['account'] = array('#type' => 'value', '#value' => $account);
+
   return $form;
 }
 
@@ -119,7 +126,7 @@ function notifications_manage_subscripti
     $form['send_interval'][$sub->sid] = array('#value' => !empty($send_intervals[$sub->send_interval]) ? $send_intervals[$sub->send_interval] : $sub->send_interval);  
     $form['status'][$sub->sid] =  array('#value' => $status[$sub->status]);
     $operations = array(
-      l(t('edit'), 'notifications/subscription/' . $sub->sid, array('query' => $destination)),
+      l(t('edit'), 'user/'. $account->uid .'/notifications/subscriptions/' . $sub->sid, array('query' => $destination)),
       l(t('drop'), 'notifications/unsubscribe/sid/' . $sub->sid, array('query' => $destination)),
     );
     $form['operations'][$sub->sid] = array('#value' => implode(', ', $operations));
@@ -509,17 +516,3 @@ function theme_notifications_manage_subs
 
   return $output;
 }
-
-/**
- * Theme node administration filter form.
- *
- * @ingroup themeable
- */
-function theme_notifications_subscriptions_filter_form($form) {
-  $output = '';
-  $output .= '<div id="notifications-admin-filter">';
-  $output .= drupal_render($form['filters']);
-  $output .= '</div>';
-  $output .= drupal_render($form);
-  return $output;
-}
Index: notifications.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/notifications/notifications.module,v
retrieving revision 1.6.2.9.2.50.2.15
diff -u -p -r1.6.2.9.2.50.2.15 notifications.module
--- notifications.module	8 Dec 2009 01:12:33 -0000	1.6.2.9.2.50.2.15
+++ notifications.module	29 Dec 2009 05:26:40 -0000
@@ -120,16 +120,6 @@ function notifications_menu() {
     'access callback' => TRUE,
     'file' => 'notifications.pages.inc',
   );
-  // Edit subscription
-  $items['notifications/subscription/%notifications_subscription'] = array(
-    'type' => MENU_CALLBACK,
-    'title' => 'Edit subscription',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('notifications_subscription_form', 2),
-    'access callback' => 'notifications_subscription_access',
-    'access arguments' => array('edit', 2),
-    'file' => 'notifications.pages.inc',
-  );
   $items['user/%user/notifications'] = array(
     'type' => MENU_LOCAL_TASK,
     'title' => 'Notifications',
@@ -155,6 +145,16 @@ function notifications_menu() {
     'access arguments' => array(1, 'manage'),
     'file' => 'notifications.manage.inc',
   );
+  // Edit subscription
+  $items['user/%user/notifications/subscriptions/%notifications_subscription'] = array(
+    'type' => MENU_LOCAL_TASK,
+    'title' => 'Edit subscription',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('notifications_subscription_form', 4),
+    'access callback' => 'notifications_subscription_access',
+    'access arguments' => array('edit', 4),
+    'file' => 'notifications.pages.inc',
+  );
   $items['user/%user/notifications/update/%'] = array(
     'type' => MENU_CALLBACK,
     'title' => 'Update subscriptions',
Index: notifications_ui/notifications_ui.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/notifications/notifications_ui/notifications_ui.module,v
retrieving revision 1.3.2.8.2.19.2.6
diff -u -p -r1.3.2.8.2.19.2.6 notifications_ui.module
--- notifications_ui/notifications_ui.module	13 Nov 2009 19:00:10 -0000	1.3.2.8.2.19.2.6
+++ notifications_ui/notifications_ui.module	29 Dec 2009 05:26:40 -0000
@@ -41,49 +41,20 @@ function notifications_ui_menu() {
     'page callback' => 'notifications_ui_page_user_add',
     'page arguments' => array(1),
     'access callback' => 'notifications_ui_access_user_add',
-    'access arguments' => array(1, 4),
+    'access arguments' => array(1),
     'file' => 'notifications_ui.pages.inc',
     'weight' => 100,
   );
 
-  // Enabled pages for user account and subscription types
-  /*
-  foreach (notifications_subscription_types() as $type => $info) {
-    $info = notifications_subscription_types($type);
-    if (!empty($info['page callback'])) {
-      $items['user/%user/notifications/' . $type] = array(  
-        'type' => MENU_LOCAL_TASK,
-        'access callback' => 'notifications_ui_access_page', 
-        'access arguments' => array($type, 1),
-        'title' => $info['title'],
-        'page callback' => $info['page callback'],
-        'page arguments' => array(1),
-        'weight' => 10,
-      );
-    }
-  }
-  */
   return $items;
 }
 
 /**
- * Implementation of hook_menu_alter()
- */
-function notifications_ui_menu_alter(&$items) {
-  foreach (notifications_subscription_types() as $type => $info) {
-    if (!empty($info['user page'])) {
-      $items[$info['user page']]['access callback'] = 'notifications_ui_access_page';
-      $items[$info['user page']]['access arguments'] = array($type, 1);
-    }
-  }
-}
-
-/**
  * Menu access callback: add subscription
  */
-function notifications_ui_access_user_add($account, $type = NULL) {
-  // Main tab, visible only if any subscription type enabled
-  $check_types = $type ? array($type) : array_keys(notifications_ui_subscription_types());
+function notifications_ui_access_user_add($account) {
+  // Main tab, visible only if any subscription type enabled.
+  $check_types = array_keys(notifications_ui_subscription_types());
   foreach ($check_types as $type) {
     if (notifications_ui_subscription_type($type) && notifications_ui_user_options('create') && notifications_access_user_add($account, $type)) {
       return TRUE;
