Index: program/station_program.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/station/program/station_program.module,v
retrieving revision 1.5
diff -u -r1.5 station_program.module
--- program/station_program.module	9 Feb 2007 17:13:33 -0000	1.5
+++ program/station_program.module	2 Apr 2007 15:26:49 -0000
@@ -50,7 +50,8 @@
 
 function station_program_perm() {
   return array(
-    'edit own program',
+    'edit program content',
+    'edit own program content',
     'administer programs',
   );
 }
@@ -74,18 +75,23 @@
       break;
 
     case 'update':
-      // TODO: figure out how to allow the schedule's decide who can edit...
+      if (user_access('edit program content')) {
+        return TRUE;
+      }
+
+      // Node owner and DJs can also edit the program.
       $djs = _station_schedule_program_load_djs($node->nid);
-      // if they're a DJ, check they should be able to do it.
-      if (isset($djs[$user->uid])) {
-        return user_access('edit own program');
+      if ($node->uid == $user->uid || isset($djs[$user->uid])) {
+        return user_access('edit own program content');
       }
       break;
 
     case 'delete':
     case 'create':
     default:
-      return user_access('administer programs');
+      // TODO: This is a bit of a circular dependency, schedule module controls
+      // creation and deleting of programs.
+      return user_access('administer schedule');
   }
 }
 
Index: schedule/station_schedule.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/station/schedule/station_schedule.module,v
retrieving revision 1.31
diff -u -r1.31 station_schedule.module
--- schedule/station_schedule.module	12 Feb 2007 20:33:00 -0000	1.31
+++ schedule/station_schedule.module	2 Apr 2007 15:26:49 -0000
@@ -151,7 +151,7 @@
     '#description' => t("This setting lets you determine what you'd like to call the users associated with programs. It should be plural."),
     '#required' => TRUE,
   );
-  
+
   $form['station_schedule_dj_role'] = array(
     '#type' => 'select',
     '#title' => t('DJs role'),
@@ -159,7 +159,7 @@
     '#options' => user_roles(TRUE),
     '#description' => t("This lets you restrict DJs to members of a specific role. If you don't want any restrictions, select <em>authenticated user</em>s."),
   );
-  
+
   $form['station_schedule_program_node_type'] = array(
     '#type' => 'item',
     '#title' => t('Scheduled node type'),
@@ -281,7 +281,7 @@
               form_set_error("djs][$key][username", t('You need to specify a valid user name.'));
             }
             if (!isset($user->roles[$dj_role])) {
-              form_set_error("djs][$key][username", t('%username is not a member of the %rolename role.', 
+              form_set_error("djs][$key][username", t('%username is not a member of the %rolename role.',
                   array('%username' => $user->name, '%rolename' => $roles[$dj_role])));
             }
           }
@@ -419,7 +419,7 @@
           );
         }
       }
-      
+
       $roles = user_roles(TRUE);
       $dj_role = variable_get('station_schedule_dj_role', DRUPAL_AUTHENTICATED_RID);
       $form['djs'] = array(
@@ -427,7 +427,7 @@
         '#title' => variable_get('station_schedule_dj_title', 'DJs'),
         '#weight' => 1,
         '#tree' => TRUE,
-        '#description' => t("Enter the names of users you'd like to add as @dj-title. The users must be members of the %role-name role.", 
+        '#description' => t("Enter the names of users you'd like to add as @dj-title. The users must be members of the %role-name role.",
             array('@dj-title' => variable_get('station_schedule_dj_title', 'DJs'), '%role-name' => $roles[$dj_role])),
       );
       if ($node->djs) {

