? availability_calendars-333149-25.patch
Index: availability_calendars.css
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/availability_calendars/availability_calendars.css,v
retrieving revision 1.1.4.4
diff -u -p -r1.1.4.4 availability_calendars.css
--- availability_calendars.css	14 Sep 2009 00:07:53 -0000	1.1.4.4
+++ availability_calendars.css	29 Aug 2010 13:05:17 -0000
@@ -15,27 +15,27 @@ tr.caldays {
   color: #ccc;
 }
 
-td.calnote {
+table.cal tr td.calnote {
   color: #000;
 }
 
-td.calother {
-  background: #fff; 
+table.cal tr td.calother {
+  background: #fff;
 }
 
-td.calavailable {
+table.cal tr td.calavailable {
   color: #000;
   background: lightgreen;
   text-align: center;
 }
 
-td.calnotavailable {
+table.cal tr td.calnotavailable {
   color: #fff;
   text-align: center;
   background: lightpink;
 }
 
-td.calnotavailableprov {
+table.cal tr td.calnotavailableprov {
   color: #ccc;
   text-align: center;
   background: lightyellow;
@@ -52,4 +52,8 @@ div.month_title{
 
 div.calmonth-wrapper {
   float:left;
-}
\ No newline at end of file
+}
+.caltoday {
+  border: 1px solid #A00000;
+}
+
Index: availability_calendars.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/availability_calendars/availability_calendars.module,v
retrieving revision 1.1.4.9
diff -u -p -r1.1.4.9 availability_calendars.module
--- availability_calendars.module	10 Oct 2009 04:21:51 -0000	1.1.4.9
+++ availability_calendars.module	29 Aug 2010 13:05:17 -0000
@@ -21,8 +21,11 @@ function availability_calendars_init() {
 /**
  * A callback function to see if allowed to edit the calendar.
  */
-function availability_can_edit() {
-  return user_access('edit availability calendars') || user_access('edit own availability calendars');
+function availability_can_edit($nid) {
+  $node = node_load($nid);
+  global $user;
+  return user_access('edit availability calendars') ||
+  (user_access('edit own availability calendars') && $user->uid == $node->uid);
 }
 
 /**
@@ -38,14 +41,14 @@ function availability_calendars_menu() {
     'page arguments' => array('availability_calendars_admin_settings'),
     'access arguments' => array('edit availability calendars')
   );
-
-  $items['availability-calendars'] = array(
+  $items['availability-calendars/%'] = array(
     'title' => 'Availability calendar',
     'page callback' => 'availability_calendars_page',
+    'page arguments' => array(1),
     'access callback' => 'availability_can_edit',
+    'access arguments' => array(1),
     'type' => MENU_CALLBACK,
   );
-
   return $items;
 }
 
@@ -269,13 +272,14 @@ function availability_calendars_node_edi
  */
 function availability_calendars_theme() {
 
-  return array('availability_calendars_node' => array(
-                 'arguments' => array('node' => NULL, 'year' => 2008, 'month' => 01, 'monthstodisplay' => 12)
-         ),
-         'availability_calendars_month' => array(
-                 'arguments' => array('node' => NULL, 'year' => 2008, 'month' => 01, 'startofweek' => NULL, 'booked' => NULL, 'firstletter' => NULL)
-         )
-   );
+  return array(
+    'availability_calendars_node' => array(
+      'arguments' => array('node' => NULL, 'year' => 2008, 'month' => 01, 'monthstodisplay' => 12)
+    ),
+    'availability_calendars_month' => array(
+      'arguments' => array('node' => NULL, 'year' => 2008, 'month' => 01, 'startofweek' => NULL, 'booked' => NULL, 'firstletter' => NULL)
+    )
+  );
 
 }
 
@@ -297,7 +301,7 @@ function theme_availability_calendars_no
   $firstletter = variable_get('availability_calendars_'. $node->nid .'_firstletter', 0);
 
   // Create our key for the availability calendar if the node has it set to do so
-  if($showkey == 1) { 
+  if($showkey == 1) {
     $output .= availability_calendars_key();
   }
 
@@ -313,17 +317,17 @@ function theme_availability_calendars_no
   }
 
   // add an extra three months for editors only
-  if (user_access('edit availability calendars')) {
+  if ( availability_can_edit($node->nid) ) {
     $monthsremaining = 3;
     while ($monthsremaining > 0) {
       $output .= theme('availability_calendars_month', $node, $year, $month, $startofweek, $booked, $firstletter);
-      $monthsremaining--; 
+      $monthsremaining--;
       $month++;
       if ($month > 12) {
         $month = 1;
-        $year++; 
+        $year++;
       }
-    } 
+    }
   }
 
   return $output;
@@ -361,9 +365,9 @@ function availability_calendars_month_me
   $month_meta['weeksinmonth'] = ceil($tempDays / 7);
 
   // Stop empty weeks occuring at start of month
-  if ($month_meta['firstday'] > 6) { 
-    $month_meta['firstday'] = $month_meta['firstday'] - 7; 
-    $month_meta['weeksinmonth'] --;  
+  if ($month_meta['firstday'] > 6) {
+    $month_meta['firstday'] = $month_meta['firstday'] - 7;
+    $month_meta['weeksinmonth'] --;
   }
   return $month_meta;
 }
@@ -398,12 +402,12 @@ function theme_availability_calendars_mo
       $week[$j][$i] = $counter;
       // offset the days
       $week[$j][$i] -= $month_meta['firstday'];
-      if (($week[$j][$i] < 1) || ($week[$j][$i] > $month_meta['daysinmonth'])) {    
+      if (($week[$j][$i] < 1) || ($week[$j][$i] > $month_meta['daysinmonth'])) {
         $week[$j][$i] = "";
       }
     }
   }
-  if (user_access('edit availability calendars')) { //month_title has the edit link if permissable
+  if ( availability_can_edit($node->nid)) { //month_title has the edit link if permissable
     $month_title = t("@date", array('@date' => format_date(mktime(12, 0, 0, $month, 1, $year), 'custom', 'F Y'))).' '.l(t('edit'), 'availability-calendars/'. $node->nid .'/'. date('Y/m', mktime(0, 0, 0, $month, 1, $year)) .'/edit', array('query' => 'destination=node/'. $node->nid));
   }
   else { // no edit link
@@ -428,6 +432,7 @@ function theme_availability_calendars_mo
     $day_status[$status['day']] = $status['status'];
   }
   $availability_calendars_options = availability_calendars_options();
+  $today = date("j,m,Y");
   $rows = array(); // our container for rows
   $cells = array(); // our container for cells
   foreach ($week as $key => $val) {
@@ -436,14 +441,18 @@ function theme_availability_calendars_mo
     for ($i=0; $i<7; $i++) {
       // if there's a date, it's part of this month
       if ($week[$key][$i]) {
+        $todayclass = '';
+        if ( $today == $week[$key][$i] . ',' . $month . ',' . $year) {
+          $todayclass = 'caltoday';
+        }
         if ($day_status[$week[$key][$i]] == 1) { // booked
-          array_push($cells, array('data' => $week[$key][$i], 'class' => 'calnotavailable'));
+          array_push($cells, array('data' => $week[$key][$i], 'class' => "calnotavailable $todayclass"));
         }
         elseif ($day_status[$week[$key][$i]] == 2) { // provisionally booked
-          array_push($cells, array('data' => $week[$key][$i], 'class' => 'calnotavailableprov'));
+          array_push($cells, array('data' => $week[$key][$i], 'class' => "calnotavailableprov $todayclass"));
         }
         else { // available
-          array_push($cells, array('data' => $week[$key][$i], 'class' => 'calavailable'));
+          array_push($cells, array('data' => $week[$key][$i], 'class' => "calavailable $todayclass"));
         }
       }
       else { // empty, typically row 1 or 5 in a month
@@ -594,7 +603,7 @@ function availability_calendars_enabled(
 /**
  * All block functions
  */
- 
+
 /**
  * Implementation of hook_block().
  *
@@ -627,5 +636,6 @@ function availability_calendars_block_ke
   $block = array();
   $block['subject'] = variable_get('availability_calendars_title', t('Availability Key'));
   $block['content'] = availability_calendars_key();
-  return($block);  
-}
\ No newline at end of file
+  return($block);
+}
+
