--- loncom/interface/slotrequest.pm	2009/08/13 10:24:29	1.102
+++ loncom/interface/slotrequest.pm	2009/11/04 15:37:23	1.106
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Handler for requesting to have slots added to a students record
 #
-# $Id: slotrequest.pm,v 1.102 2009/08/13 10:24:29 raeburn Exp $
+# $Id: slotrequest.pm,v 1.106 2009/11/04 15:37:23 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1026,6 +1026,7 @@ sub show_table {
     my ($r,$mgr)=@_;
 
     my ($cnum,$cdom)=&get_course();
+    my $crstype=&Apache::loncommon::course_type($cdom.'_'.$cnum);
     my %slots=&Apache::lonnet::dump('slots',$cdom,$cnum);
     if ( (keys(%slots))[0] =~ /^error: 2 /) {
 	undef(%slots);
@@ -1049,7 +1050,11 @@ sub show_table {
     }
 
     if (!keys(%slots)) {
-        $r->print('<div>'.&mt('No slots have been created in this course.').'</div>');
+        if ($crstype eq 'Community') {
+            $r->print('<div>'.&mt('No slots have been created in this community.').'</div>');
+        } else {
+            $r->print('<div>'.&mt('No slots have been created in this course.').'</div>');
+        }
         return;
     }
     
@@ -1085,6 +1090,10 @@ sub show_table {
 	     'uniqueperiod'    => 'Period of time slot is unique',
 	     'scheduled'       => 'Scheduled Students',
 	     'proctor'         => 'List of proctors');
+    if ($crstype eq 'Community') {
+        $show_fields{'startreserve'} = &mt('Time members can start reserving');
+        $show_fields{'scheduled'} = &mt('Scheduled Members');
+    }
     my @show_order=('name','description','type','starttime','endtime',
 		    'startreserve','secret','space','ip','symb',
 		    'allowedsections','allowedusers','uniqueperiod',
@@ -1429,21 +1438,23 @@ STUFF
 }
 
 sub manage_reservations {
-    my ($r,$type) = @_;
+    my ($r,$crstype) = @_;
     my $navmap = Apache::lonnavmaps::navmap->new();
     $r->print('<p>'
              .&mt('Instructors may use a reservation system to place restrictions on when and where assignments can be worked on.')
              .'<br />'
              .&mt('One example is for management of laboratory space, which is only available at certain times, and has a limited number of seats.')
-             .'</p><p>'
-             .&mt('Your reservation status for any such assignments is listed below:')
              .'</p>'
     );
     if (!defined($navmap)) {
-        $r->print('<div class="LC_error">'.
-                  &mt('Unable to retrieve information about course contents').
-                  '</div>');
-        &Apache::lonnet::logthis('Manage Reservations - could not create navmap object in '.lc($type).':'.$env{'request.course.id'});
+        $r->print('<div class="LC_error">');
+        if ($crstype eq 'Community') {
+            $r->print(&mt('Unable to retrieve information about community contents'));
+        } else {
+            $r->print(&mt('Unable to retrieve information about course contents'));
+        }
+        $r->print('</div>');
+        &Apache::lonnet::logthis('Manage Reservations - could not create navmap object in '.lc($crstype).':'.$env{'request.course.id'});
         return;
     }
     my (%parent,%shownparent,%container,%container_title,%contents);
@@ -1451,7 +1462,11 @@ sub manage_reservations {
     my @backgrounds = ("LC_odd_row","LC_even_row");
     my $numcolors = scalar(@backgrounds);
     my $location=&Apache::loncommon::lonhttpdurl("/adm/lonIcons/whitespace_21.gif");
-    $r->print('<table class="LC_data_table LC_tableOfContent">'."\n");
+    my $slotheader = '<p>'.
+                 &mt('Your reservation status for any such assignments is listed below:').
+                 '</p>'.
+                 '<table class="LC_data_table LC_tableOfContent">'."\n";
+    my $shownheader = 0;
     my $it=$navmap->getIterator(undef,undef,undef,1,undef,undef);
     while (my $resource = $it->next()) {
         if ($resource == $it->BEGIN_MAP()) {
@@ -1546,11 +1561,19 @@ sub manage_reservations {
                     foreach my $item (@maprows) {
                         $rownum ++;
                         my $bgcolor = $backgrounds[$rownum % $numcolors];
+                        if (!$shownheader) {
+                            $r->print($slotheader);
+                            $shownheader = 1;
+                        }
                         $r->print('<tr class="'.$bgcolor.'">'.$item.'</tr>'."\n");
                     }
                 }
                 $rownum ++;
                 my $bgcolor = $backgrounds[$rownum % $numcolors];
+                if (!$shownheader) {
+                    $r->print($slotheader);
+                    $shownheader = 1;
+                }
                 $r->print('<tr class="'.$bgcolor.'"><td>'."\n");
                 for (my $i=0; $i<$depth; $i++) {
                     $r->print('<img src="'.$location.'" alt="" />');
@@ -1585,11 +1608,19 @@ sub manage_reservations {
             }
         }
     }
+    if ($shownheader) {
+        $r->print('</table>');
+    }
     if (!$reservable) {
-        $r->print('<span class="LC_info">'.&mt('No course items currently require a reservation to gain access.').'</span>');
+        $r->print('<span class="LC_info">');
+        if ($crstype eq 'Community') {
+            $r->print(&mt('No community items currently require a reservation to gain access.'));
+        } else {
+            $r->print(&mt('No course items currently require a reservation to gain access.'));
+        }
+        $r->print('</span>');
     }
-    $r->print('</table>'.
-              '<p><a href="/adm/slotrequest?command=showresv">'.
+    $r->print('<p><a href="/adm/slotrequest?command=showresv">'.
               &mt('Reservation History').'</a></p>');
 }
 
@@ -1620,12 +1651,21 @@ sub show_reservations {
     my $formname = 'slotlog';
     my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+    my $crstype = &Apache::loncommon::course_type();
     my %log=&Apache::lonnet::dump('nohist_'.$cdom.'_'.$cnum.'_slotlog',$udom,$uname);
     if ($env{'form.origin'} eq 'aboutme') {
-        $r->print('<div class="LC_fontsize_large">'.
-                  &mt('History of student-reservable slots for: [_1]',
-                      &Apache::loncommon::plainname($env{'form.uname'},$env{'form.udom'},
-                                                    'firstname')).'</div>');
+        $r->print('<div class="LC_fontsize_large">');
+        my $name = &Apache::loncommon::plainname($env{'form.uname'},$env{'form.udom'},
+                                                    'firstname');
+        if ($crstype eq 'Community') {
+            $r->print(&mt('History of member-reservable slots for: [_1]',
+                          $name));
+        } else {
+            $r->print(&mt('History of student-reservable slots for: [_1]',
+                          $name));
+
+        }
+        $r->print('</div>');
     }
     $r->print('<form action="/adm/slotrequest" method="post" name="'.$formname.'">');
     # set defaults
@@ -1674,7 +1714,7 @@ sub show_reservations {
         }
     }
     my (%titles,%maptitles);
-    my %lt = &reservationlog_contexts();
+    my %lt = &reservationlog_contexts($crstype);
     foreach my $id (sort { $log{$b}{'exe_time'}<=>$log{$a}{'exe_time'} } (keys(%log))) {
         next if (($log{$id}{'exe_time'} < $curr{'log_start_date'}) ||
                  ($log{$id}{'exe_time'} > $curr{'log_end_date'}));
@@ -1754,6 +1794,7 @@ ENDSCRIPT
 sub show_reservations_log {
     my ($r) = @_;
     my $badslot;
+    my $crstype = &Apache::loncommon::course_type();
     if ($env{'form.slotname'} eq '') {
         $r->print('<div class="LC_warning">'.&mt('No slot name provided').'</div>');
         $badslot = 1;
@@ -1764,7 +1805,13 @@ sub show_reservations_log {
             $badslot = 1;
         } elsif ($slot{type} ne 'schedulable_student') {
             my $description = &get_description($env{'form.slotname'},\%slot);
-            $r->print('<div class="LC_warning">'.&mt('Reservation history unavailable for non-student-reservable slot: [_1].',$description).'</div>');
+            $r->print('<div class="LC_warning">');
+            if ($crstype eq 'Community') {
+                $r->print(&mt('Reservation history unavailable for non-member-reservable slot: [_1].',$description));
+            } else {
+                $r->print(&mt('Reservation history unavailable for non-student-reservable slot: [_1].',$description));
+            }
+            $r->print('</div>');
             $badslot = 1;
         }
     }
@@ -1835,9 +1882,13 @@ sub show_reservations_log {
 
     my %slot=&Apache::lonnet::get_slot($env{'form.slotname'});
     my $description = $slot{'description'};
-    $r->print('<span class="LC_fontsize_large">'.
-              &mt('Reservation changes for student-reservable slot: [_1]',$description).'</span><br />');
-
+    $r->print('<span class="LC_fontsize_large">');
+    if ($crstype eq 'Community') {
+        $r->print(&mt('Reservation changes for member-reservable slot: [_1]',$description));
+    } else {
+        $r->print(&mt('Reservation changes for student-reservable slot: [_1]',$description));
+    }
+    $r->print('</span><br />');
     $r->print(&display_filter($formname,$cdom,$cnum,\%curr,$version,\@allsymbs));
     my $showntablehdr = 0;
     my $tablehdr = &Apache::loncommon::start_data_table().
@@ -1855,7 +1906,7 @@ sub show_reservations_log {
             $minshown = 1 + ($curr{'page'} - 1) * $curr{'show'};
         }
     }
-    my %lt = &reservationlog_contexts();
+    my %lt = &reservationlog_contexts($crstype);
     my (%titles,%maptitles);
     foreach my $id (sort { $log{$b}{'exe_time'}<=>$log{$a}{'exe_time'} } (keys(%log))) {
         next if (($log{$id}{'exe_time'} < $curr{'log_start_date'}) ||
@@ -1975,6 +2026,7 @@ sub get_resource_title {
 }
 
 sub reservationlog_contexts {
+    my ($crstype) = @_;
     my %lt = &Apache::lonlocal::texthash (
                                              any        => 'Any',
                                              user       => 'By student',
@@ -1984,6 +2036,10 @@ sub reservationlog_contexts {
                                              release    => 'Dropped reservation',
                                              usermanage => 'By student', 
                                          );
+    if ($crstype eq 'Community') {
+        $lt{'user'} = &mt('By member');
+        $lt{'usermanage'} = $lt{'user'};
+    }
     return %lt;
 }
 
@@ -2004,7 +2060,8 @@ sub display_filter {
         &Apache::lonhtmlcommon::date_setter($formname,'log_end_date',
                                             $curr->{'log_end_date'},undef,
                                             undef,undef,undef,undef,undef,undef,$nolink);
-    my %lt = &reservationlog_contexts();
+    my $crstype = &Apache::loncommon::course_type();
+    my %lt = &reservationlog_contexts($crstype);
     $output .= '<td valign="top"><b>'.&mt('Window during which changes occurred:').
                '</b><br /><table><tr><td>'.&mt('After:').
                '</td><td>'.$startform.'</td></tr><tr><td>'.&mt('Before:').'</td><td>'.
@@ -2054,7 +2111,7 @@ sub display_filter {
                &mt('Update Display').'" /></tr></table>'.
                '<p class="LC_info">'.
                &mt('Only changes made from servers running LON-CAPA [_1] or later are displayed.'
-                  ,'2.8.99.0');
+                  ,'2.9.0');
     if ($version) {
         $output .= ' '.&mt('This LON-CAPA server is version [_1]',$version);
     }