[LON-CAPA-cvs] cvs: loncom /interface slotrequest.pm

albertel lon-capa-cvs@mail.lon-capa.org
Mon, 14 Nov 2005 23:21:55 -0000


This is a MIME encoded message

--albertel1132010515
Content-Type: text/plain

albertel		Mon Nov 14 18:21:55 2005 EDT

  Modified files:              
    /loncom/interface	slotrequest.pm 
  Log:
  - adding time restricttors
  
  
--albertel1132010515
Content-Type: text/plain
Content-Disposition: attachment; filename="albertel-20051114182155.txt"

Index: loncom/interface/slotrequest.pm
diff -u loncom/interface/slotrequest.pm:1.29 loncom/interface/slotrequest.pm:1.30
--- loncom/interface/slotrequest.pm:1.29	Mon Nov  7 22:13:20 2005
+++ loncom/interface/slotrequest.pm	Mon Nov 14 18:21:55 2005
@@ -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.29 2005/11/08 03:13:20 albertel Exp $
+# $Id: slotrequest.pm,v 1.30 2005/11/14 23:21:55 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -450,6 +450,49 @@
     $r->print('</table>');
 }
 
+sub to_show {
+    my ($when,$slot) = @_;
+    my $time=time;
+    my $week=60*60*24*7;
+    if ($when eq 'now') {
+	if ($time > $slot->{'starttime'} &&
+	    $time < $slot->{'endtime'}) {
+	    return 1;
+	}
+	return 0;
+    } elsif ($when eq 'nextweek') {
+	if ( ($time        < $slot->{'starttime'} &&
+	      ($time+$week) > $slot->{'starttime'})
+	     ||
+	     ($time        < $slot->{'endtime'} &&
+	      ($time+$week) > $slot->{'endtime'}) ) {
+	    return 1;
+	}
+	return 0;
+    } elsif ($when eq 'lastweek') {
+	if ( ($time        > $slot->{'starttime'} &&
+	      ($time-$week) < $slot->{'starttime'})
+	     ||
+	     ($time        > $slot->{'endtime'} &&
+	      ($time-$week) < $slot->{'endtime'}) ) {
+	    return 1;
+	}
+	return 0;
+    } elsif ($when eq 'willopen') {
+	if ($time < $slot->{'starttime'}) {
+	    return 1;
+	}
+	return 0;
+    } elsif ($when eq 'wereopen') {
+	if ($time > $slot->{'endtime'}) {
+	    return 1;
+	}
+	return 0;
+    }
+    
+    return 1;
+}
+
 sub show_table {
     my ($r,$mgr)=@_;
 
@@ -460,6 +503,7 @@
     } 
     my $available;
     if ($mgr eq 'F') {
+	$r->print('<div>');
 	$r->print('<form method="POST" action="/adm/slotrequest">
 <input type="hidden" name="command" value="uploadstart" />
 <input type="submit" name="start" value="'.&mt('Upload Slot List').'" />
@@ -467,14 +511,17 @@
 	$r->print('<form method="POST" action="/adm/helper/newslot.helper">
 <input type="submit" name="newslot" value="'.&mt('Create a New Slot').'" />
 </form>');
+	$r->print('</div>');
     }
     
-    my %Saveable_Parameters = ('show' => 'array');
+    my %Saveable_Parameters = ('show'  => 'array',
+			       'when'  => 'scalar',
+			       'order' => 'scalar');
 
-    &Apache::loncommon::store_course_settings('chart',\%Saveable_Parameters);
-    &Apache::loncommon::restore_course_settings('chart',\%Saveable_Parameters);
+    &Apache::loncommon::store_course_settings('slotrequest',\%Saveable_Parameters);
+    &Apache::loncommon::restore_course_settings('slotrequest',\%Saveable_Parameters);
 
-    my %fields=&Apache::lonlocal::texthash(
+    my %show_fields=&Apache::lonlocal::texthash(
 	     'name'         => 'Slot Name',
 	     'description'  => 'Description',
 	     'type'         => 'Type',
@@ -487,26 +534,40 @@
 	     'symb'         => 'Resource slot is restricted to.',
 	     'uniqueperiod' => 'Period of time slot is unique',
 	     'proctor'      => 'List of proctors');
-    my @order=('name','description','type','starttime','endtime',
+    my @show_order=('name','description','type','starttime','endtime',
 	       'startreserve','secret','maxspace','ip','symb',
 	       'uniqueperiod','proctor');
-    my @sel = 
+    my @show = 
 	(exists($env{'form.show'})) ? &Apache::loncommon::get_env_multiple('form.show')
-	                            : keys(%fields);
-    my %sel =  map { $_ => 1 } (@sel);
+	                            : keys(%show_fields);
+    my %show =  map { $_ => 1 } (@show);
+
+    my %when_fields=&Apache::lonlocal::texthash(
+	     'now' => 'Open now',
+	     'nextweek' => 'Open within the next week',
+	     'lastweek' => 'Were open last week',
+	     'willopen' => 'Will open later',
+	     'wereopen' => 'Were open');
+    my @when_order=('now','nextweek','lastweek','willopen','wereopen');
+    $when_fields{'select_form_order'} = \@when_order;
+    my $when = 	(exists($env{'form.when'})) ? $env{'form.when'}
+                                            : 'now';
 
     $r->print('<form method="POST" action="/adm/slotrequest">
-<input type="hidden" name="command" value="showslots" />
-<input type="submit" name="start" value="'.&mt('Change').'" />');
-    $r->print('<table><tr><td>Show: '.&Apache::loncommon::multiple_select_form('show',\@sel,6,\%fields,\@order).
+<input type="hidden" name="command" value="showslots" />');
+    $r->print('<div>');
+    $r->print('<table class="inline"><tr><th>'.&mt('Show').'</th><th>'.&mt('Open').'</th></tr><tr><td>'.&Apache::loncommon::multiple_select_form('show',\@show,6,\%show_fields,\@show_order).
+	      '</td><td>'.&Apache::loncommon::select_form($when,'when',%when_fields).
 	      '</td></tr></table>');
+    $r->print('</div>');
+    $r->print('<p><input type="submit" name="start" value="'.&mt('Update Display').'" /></p>');
     my $linkstart='<a href="/adm/slotrequest?command=showslots&amp;order=';
-    $r->print('<table border="1">
+    $r->print('<table class="thinborder">
 <tr>
   <th></th>');
-    foreach my $which (@order) {
-	if ($which ne 'proctor' && exists($sel{$which})) {
-	    $r->print('<th>'.$linkstart.$which.'">'.$fields{$which}.'</a></th>');
+    foreach my $which (@show_order) {
+	if ($which ne 'proctor' && exists($show{$which})) {
+	    $r->print('<th>'.$linkstart.$which.'">'.$show_fields{$which}.'</a></th>');
 	}
     }
     $r->print('<th>Scheduled Students</th></tr>');
@@ -539,6 +600,7 @@
 	return $slots{$a}->{'starttime'} <=> $slots{$b}->{'starttime'};
     };
     foreach my $slot (sort $slotsort (keys(%slots)))  {
+	if (!&to_show($when,$slots{$slot})) { next; }
 	if (defined($slots{$slot}->{'type'})
 	    && $slots{$slot}->{'type'} ne 'schedulable_student') {
 	    #next;
@@ -574,7 +636,7 @@
 	my @proctors;
 	my $rowspan=1;
 	my $colspan=1;
-	if (exists($sel{'proctor'})) {
+	if (exists($show{'proctor'})) {
 	    $rowspan=2;
 	    @proctors= map {
 		my ($uname,$udom)=split(/@/,$_);
@@ -598,41 +660,41 @@
 EDITFORM
  
         $r->print("<tr>\n<td rowspan=\"$rowspan\">$edit</td>\n");
-	if (exists($sel{'name'})) {
+	if (exists($show{'name'})) {
 	    $colspan++;$r->print("<td>$slot</td>");
 	}
-	if (exists($sel{'type'})) {
+	if (exists($show{'type'})) {
 	    $colspan++;$r->print("<td>$slots{$slot}->{'type'}</td>\n");
 	}
-	if (exists($sel{'description'})) {
+	if (exists($show{'description'})) {
 	    $colspan++;$r->print("<td>$description</td>\n");
 	}
-	if (exists($sel{'starttime'})) {
+	if (exists($show{'starttime'})) {
 	    $colspan++;$r->print("<td>$start</td>\n");
 	}
-	if (exists($sel{'endtime'})) {
+	if (exists($show{'endtime'})) {
 	    $colspan++;$r->print("<td>$end</td>\n");
 	}
-	if (exists($sel{'startreserve'})) {
+	if (exists($show{'startreserve'})) {
 	    $colspan++;$r->print("<td>$start_reserve</td>\n");
 	}
-	if (exists($sel{'secret'})) {
+	if (exists($show{'secret'})) {
 	    $colspan++;$r->print("<td>$slots{$slot}{'secret'}</td>\n");
 	}
-	if (exists($sel{'maxspace'})) {
+	if (exists($show{'maxspace'})) {
 	    $colspan++;$r->print("<td>$slots{$slot}{'maxspace'}</td>\n");
 	}
-	if (exists($sel{'ip'})) {
+	if (exists($show{'ip'})) {
 	    $colspan++;$r->print("<td>$slots{$slot}{'ip'}</td>\n");
 	}
-	if (exists($sel{'symb'})) {
+	if (exists($show{'symb'})) {
 	    $colspan++;$r->print("<td>$title</td>\n");
 	}
-	if (exists($sel{'uniqueperiod'})) {
+	if (exists($show{'uniqueperiod'})) {
 	    $colspan++;$r->print("<td>$unique</td>\n");
 	}
 	$colspan++;$r->print("<td>$ids</td>\n</tr>\n");
-	if (exists($sel{'proctor'})) {
+	if (exists($show{'proctor'})) {
 	    $r->print(<<STUFF);
 <tr>
  <td colspan="$colspan">$proctors</td>
@@ -872,6 +934,13 @@
 sub handler {
     my $r=shift;
 
+    &Apache::loncommon::content_type($r,'text/html');
+    &Apache::loncommon::no_cache($r);
+    if ($r->header_only()) {
+	$r->send_http_header();
+	return OK;
+    }
+
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'});
     
     my $vgr=&Apache::lonnet::allowed('vgr',$env{'request.course.id'});

--albertel1132010515--