? test.patch
? program/__station_program.install
Index: program/station_program.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/station/program/Attic/station_program.module,v
retrieving revision 1.5.2.3
diff -u -r1.5.2.3 station_program.module
--- program/station_program.module	13 Jun 2007 22:28:16 -0000	1.5.2.3
+++ program/station_program.module	24 Jul 2007 20:35:54 -0000
@@ -50,7 +50,8 @@
 
 function station_program_perm() {
   return array(
-    'edit own program',
+    'edit program content',
+    'edit own program content',
     'administer programs',
   );
 }
@@ -74,19 +75,27 @@
       break;
 
     case 'update':
-      // TODO: figure out how to allow the schedule's decide who can edit...
-      $djs = _station_schedule_program_load_djs($node->nid);
+      if (user_access('edit program content')) {
+        return TRUE;
+      }
 
-      // Node owner and DJs can edit the program.
+      // Node owner and DJs can also edit the program.
+      $djs = _station_schedule_program_load_djs($node->nid);
       if ($node->uid == $user->uid || isset($djs[$user->uid])) {
-        return user_access('edit own program');
+        return user_access('edit own program content');
       }
       break;
 
     case 'delete':
     case 'create':
     default:
-      return user_access('administer programs');
+      // If the schedule is enabled, defer to that permision.
+      if (module_exists('station_schedule')) {
+        return user_access('administer schedule');
+      }
+      else {
+        return user_access('administer programs');
+      }
   }
 }
 
