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

albertel lon-capa-cvs-allow@mail.lon-capa.org
Tue, 10 Apr 2007 23:26:52 -0000


albertel		Tue Apr 10 19:26:52 2007 EDT

  Modified files:              
    /loncom/interface	slotrequest.pm 
  Log:
  - bug #5232 show slot fullness
  
  
Index: loncom/interface/slotrequest.pm
diff -u loncom/interface/slotrequest.pm:1.73 loncom/interface/slotrequest.pm:1.74
--- loncom/interface/slotrequest.pm:1.73	Mon Dec 18 17:59:30 2006
+++ loncom/interface/slotrequest.pm	Tue Apr 10 19:26:49 2007
@@ -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.73 2006/12/18 22:59:30 albertel Exp $
+# $Id: slotrequest.pm,v 1.74 2007/04/10 23:26:49 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -932,7 +932,7 @@
 	     'endtime'         => 'End Time',
              'startreserve'    => 'Time students can start reserving',
 	     'secret'          => 'Secret Word',
-	     'maxspace'        => 'Maximum # of students',
+	     'space'           => '# of students/max',
 	     'ip'              => 'IP or DNS restrictions',
 	     'symb'            => 'Resource slot is restricted to.',
 	     'allowedsections' => 'Sections slot is restricted to.',
@@ -941,7 +941,7 @@
 	     'scheduled'       => 'Scheduled Students',
 	     'proctor'         => 'List of proctors');
     my @show_order=('name','description','type','starttime','endtime',
-		    'startreserve','secret','maxspace','ip','symb',
+		    'startreserve','secret','space','ip','symb',
 		    'allowedsections','allowedusers','uniqueperiod',
 		    'scheduled','proctor');
     my @show = 
@@ -1053,12 +1053,16 @@
 
     my %name_cache;
     my $slotsort = sub {
-	if ($env{'form.order'}=~/^(type|description|endtime|startreserve|maxspace|ip|symb|allowedsections|allowedusers)$/) {
+	if ($env{'form.order'}=~/^(type|description|endtime|startreserve|ip|symb|allowedsections|allowedusers)$/) {
 	    if (lc($slots{$a}->{$env{'form.order'}})
 		ne lc($slots{$b}->{$env{'form.order'}})) {
 		return (lc($slots{$a}->{$env{'form.order'}}) 
 			cmp lc($slots{$b}->{$env{'form.order'}}));
 	    }
+	} elsif ($env{'form.order'} eq 'space') {
+	    if ($slots{$a}{'maxspace'} ne $slots{$b}{'maxspace'}) {
+		return ($slots{$a}{'maxspace'} cmp $slots{$b}{'maxspace'});
+	    }
 	} elsif ($env{'form.order'} eq 'name') {
 	    if (lc($a) cmp lc($b)) {
 		return lc($a) cmp lc($b);
@@ -1078,6 +1082,14 @@
 	}
 	return $slots{$a}->{'starttime'} <=> $slots{$b}->{'starttime'};
     };
+
+    my %consumed;
+    if (exists($show{'scheduled'}) || exists($show{'space'}) ) {
+	%consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum);
+	my ($tmp)=%consumed;
+	if ($tmp =~ /^error: /) { undef(%consumed); }
+    }
+
     foreach my $slot (sort $slotsort (keys(%slots)))  {
 	if (!&to_show($slot,$slots{$slot},$when,
 		      $env{'form.deleted'},$name_filter)) { next; }
@@ -1086,12 +1098,12 @@
 	    #next;
 	}
 	my $description=&get_description($slot,$slots{$slot});
-	my $ids;
-	if (exists($show{'scheduled'})) {
-	    my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum,
-					       "^$slot\0");
-	    my ($tmp)=%consumed;
-	    if ($tmp !~ /^error: /) {
+	my ($id_count,$ids);
+	    
+	if (exists($show{'scheduled'}) || exists($show{'space'}) ) {
+	    my @this_slot = grep(/^$slot\0/,keys(%consumed));
+	    $id_count = scalar(@this_slot);
+	    if (exists($show{'scheduled'})) {
 		foreach my $entry (sort { $consumed{$a}{name} cmp 
 					      $consumed{$b}{name} }
 				   (keys(%consumed))) {
@@ -1216,8 +1228,15 @@
 	if (exists($show{'secret'})) {
 	    $colspan++;$r->print("<td>$slots{$slot}{'secret'}</td>\n");
 	}
-	if (exists($show{'maxspace'})) {
-	    $colspan++;$r->print("<td>$slots{$slot}{'maxspace'}</td>\n");
+	if (exists($show{'space'})) {
+	    my $display = $id_count;
+	    if ($slots{$slot}{'maxspace'}>0) {
+		$display.='/'.$slots{$slot}{'maxspace'};
+		if ($slots{$slot}{'maxspace'} <= $id_count) {
+		    $display = '<strong>'.$display.' (full) </strong>';
+		}
+	    }
+	    $colspan++;$r->print("<td>$display</td>\n");
 	}
 	if (exists($show{'ip'})) {
 	    $colspan++;$r->print("<td>$slots{$slot}{'ip'}</td>\n");