--- loncom/interface/slotrequest.pm	2007/04/10 23:31:18	1.77
+++ loncom/interface/slotrequest.pm	2008/09/20 02:53:13	1.83
@@ -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.77 2007/04/10 23:31:18 albertel Exp $
+# $Id: slotrequest.pm,v 1.83 2008/09/20 02:53:13 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -241,7 +241,8 @@ sub make_reservation {
 				   $env{'user.domain'},$env{'user.name'});
     &Apache::lonxml::debug("value is  $value<br />");
 
-    my $use_slots = &Apache::lonnet::EXT("resource.0.useslots");
+    my $use_slots = &Apache::lonnet::EXT("resource.0.useslots",$symb,
+					 $env{'user.domain'},$env{'user.name'});
     &Apache::lonxml::debug("use_slots is  $use_slots<br />");
 
     if (&Apache::lonnet::error($value) 
@@ -334,7 +335,7 @@ sub remove_registration {
     my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum,
 				       "^$slot_name\0");
     if (&Apache::lonnet::error(%consumed)) {
-	$r->print("<p>".&mt('A network error has occured.').'</p>');
+	$r->print("<p><span class=\"LC_error\">".&mt('A network error has occurred.').'</span></p>');
 	return;
     }
     if (!%consumed) {
@@ -459,9 +460,22 @@ sub release_reservation {
 	    return (0,&mt('Not allowed to release Reservation: [_1], as it has already ended.',$description));
 	}
     }
+
+    # if the reservation symb is for a map get a resource in that map
+    # to check slot parameters on
+    my $navmap=Apache::lonnavmaps::navmap->new;
+    my $passed_resource = $navmap->getBySymb($symb);
+    if ($passed_resource->is_map()) {
+	my ($a_resource) = 
+	    $navmap->retrieveResources($passed_resource, 
+				       sub {$_[0]->is_problem()},0,1);
+	$symb = $a_resource->symb();
+    }
+
     # get parameter string, check for existance, rebuild string with the slot
-    my @slots = split(/:/,&Apache::lonnet::EXT("resource.0.availablestudent",
-					       $symb,$udom,$uname));
+    my $student = &Apache::lonnet::EXT("resource.0.availablestudent",
+                                       $symb,$udom,$uname);
+    my @slots = split(/:/,$student);
 
     my @new_slots;
     foreach my $exist_slot (@slots) {
@@ -482,7 +496,8 @@ sub release_reservation {
 	}
     }
 
-    my $use_slots = &Apache::lonnet::EXT("resource.0.useslots");
+    my $use_slots = &Apache::lonnet::EXT("resource.0.useslots",
+					 $symb,$udom,$uname);
     &Apache::lonxml::debug("use_slots is  $use_slots<br />");
 
     if (&Apache::lonnet::error($use_slots)) { 
@@ -527,7 +542,7 @@ sub delete_slot {
 	if ($ret eq 'ok') {
 	    $r->print("<p>Slot <tt>$slot_name</tt> marked as deleted.</p>");
 	} else {
-	    $r->print("<p> An error ($ret) occurse when attempting to delete Slot <tt>$slot_name</tt>.</p>");
+	    $r->print("<p><span class=\"LC_error\"> An error ($ret) occurse when attempting to delete Slot <tt>$slot_name</tt>.</span></p>");
 	}
     } else {
 	if (%consumed) {
@@ -554,7 +569,9 @@ sub get_slot {
     my $slot_name=&check_for_conflict($symb,$env{'form.slotname'},\%slot);
 
     if ($slot_name =~ /^error: (.*)/) {
-	$r->print("<p>An error occured while attempting to make a reservation. ($1)</p>");
+	$r->print('<p><span class="LC_error">'
+                 .&mt('An error occurred while attempting to make a reservation. ([_1])',$1)
+                 .'</span></p>');
 	&return_link($r);
 	return 0;
     }
@@ -595,7 +612,9 @@ STUFF
     if (defined($reserved)) {
 	my $retvalue = 0;
 	if ($slot_name =~ /^error: (.*)/) {
-	    $r->print("<p>An error occured while attempting to make a reservation. ($1)</p>");
+	    $r->print('<p><span class="LC_error">'
+                     .&mt('An error occurred while attempting to make a reservation. ([_1])',$1)
+                     .'</span></p>');
 	} elsif ($reserved > -1) {
 	    $r->print("<p>Success: $description</p>");
 	    $retvalue = 1;
@@ -616,7 +635,7 @@ STUFF
     }
 
     $r->print(<<STUFF);
-<p> <font color="red">Failed</font> to reserve a spot for $description. </p>
+<p> <span class="LC_warning">Failed</span> to reserve a spot for $description. </p>
 <p>
 <form method="post" action="/adm/slotrequest">
    <input type="submit" name="Try Again" value="$lt{'try'}" />
@@ -1108,12 +1127,13 @@ sub show_table {
 	my ($id_count,$ids);
 	    
 	if (exists($show{'scheduled'}) || exists($show{'space'}) ) {
-	    my @this_slot = grep(/^$slot\0/,keys(%consumed));
+	    my $re_str = "$slot\0";
+	    my @this_slot = grep(/^\Q$re_str\E/,keys(%consumed));
 	    $id_count = scalar(@this_slot);
 	    if (exists($show{'scheduled'})) {
 		foreach my $entry (sort { $consumed{$a}{name} cmp 
 					      $consumed{$b}{name} }
-				   (keys(%consumed))) {
+				   (@this_slot)) {
 		    my (undef,$id)=split("\0",$entry);
 		    my ($uname,$udom) = split(':',$consumed{$entry}{'name'});
 		    $ids.= '<nobr>';
@@ -1547,7 +1567,7 @@ sub csv_upload_assign {
     }
     $r->print("<p>Created $countdone slots\n</p>");
     foreach my $error (@errors) {
-	$r->print("<p>$error\n</p>");
+	$r->print("<p><span class=\"LC_warning\">$error</span></p>\n");
     }
     &show_table($r,$mgr);
     return '';