--- loncom/interface/slotrequest.pm 2008/09/20 02:53:13 1.83 +++ loncom/interface/slotrequest.pm 2009/02/02 02:56:12 1.87 @@ -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.83 2008/09/20 02:53:13 raeburn Exp $ +# $Id: slotrequest.pm,v 1.87 2009/02/02 02:56:12 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -165,6 +165,9 @@ sub check_for_reservation { sub get_consumed_uniqueperiods { my ($slots) = @_; my $navmap=Apache::lonnavmaps::navmap->new; + if (!defined($navmap)) { + return 'error: Unable to determine current status'; + } my @problems = $navmap->retrieveResources(undef, sub { $_[0]->is_problem() },1,0); my %used_slots; @@ -214,9 +217,13 @@ sub check_for_conflict { if (!ref($consumed_uniqueperiods)) { $consumed_uniqueperiods = &get_consumed_uniqueperiods($slots); - if (&Apache::lonnet::error(%$consumed_uniqueperiods)) { - return 'error: Unable to determine current status'; - } + if (ref($consumed_uniqueperiods) eq 'HASH') { + if (&Apache::lonnet::error(%$consumed_uniqueperiods)) { + return 'error: Unable to determine current status'; + } + } else { + return 'error: Unable to determine current status'; + } } my ($new_uniq_start,$new_uniq_end) = @{$new_slot->{'uniqueperiod'}}; @@ -229,7 +236,6 @@ sub check_for_conflict { } } return undef; - } sub make_reservation { @@ -339,8 +345,8 @@ sub remove_registration { return; } if (!%consumed) { - $r->print("<p>".&mt('Slot <tt>[_1]</tt> has no reservations.', - $slot_name)."</p>"); + $r->print('<p>'.&mt('Slot [_1] has no reservations.', + '<tt>'.$slot_name.'</tt>').'</p>'); return; } @@ -413,7 +419,11 @@ sub release_all_slot { my ($result,$msg) = &release_reservation($slot_name,$uname,$udom, $consumed{$entry}{'symb'},$mgr); - $r->print("<p>$msg</p>"); + if (!$result) { + $r->print('<p><span class="LC_error">'.&mt($msg).'</span></p>'); + } else { + $r->print("<p>$msg</p>"); + } $r->rflush(); } $r->print('<p><a href="/adm/slotrequest?command=showslots">'. @@ -439,7 +449,11 @@ sub release_slot { my ($result,$msg) = &release_reservation($slot_name,$uname,$udom,$symb,$mgr); - $r->print("<p>$msg</p>"); + if (!$result) { + $r->print('<p><span class="LC_error">'.&mt($msg).'</span></p>'); + } else { + $r->print("<p>$msg</p>"); + } if ($mgr eq 'F') { $r->print('<p><a href="/adm/slotrequest?command=showslots">'. @@ -464,6 +478,9 @@ sub release_reservation { # 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; + if (!defined($navmap)) { + return (0,'error: Unable to determine current status'); + } my $passed_resource = $navmap->getBySymb($symb); if ($passed_resource->is_map()) { my ($a_resource) = @@ -540,15 +557,15 @@ sub delete_slot { my $ret = &Apache::lonnet::cput('slots', {$slot_name => \%slot}, $cdom, $cnum); if ($ret eq 'ok') { - $r->print("<p>Slot <tt>$slot_name</tt> marked as deleted.</p>"); + $r->print('<p>'.&mt('Slot [_1] marked as deleted.','<tt>'.$slot_name.'</tt>').'</p>'); } else { - $r->print("<p><span class=\"LC_error\"> An error ($ret) occurse when attempting to delete Slot <tt>$slot_name</tt>.</span></p>"); + $r->print('<p><span class="LC_error">'.&mt('An error occurred when attempting to delete slot: [_1]','<tt>'.$slot_name.'</tt>')." ($ret)</span></p>"); } } else { if (%consumed) { - $r->print("<p>Slot <tt>$slot_name</tt> has active reservations.</p>"); + $r->print('<p>'.&mt('Slot [_1] has active reservations.','<tt>'.$slot_name.'</tt>').'</p>'); } else { - $r->print("<p>Slot <tt>$slot_name</tt> does not exist.</p>"); + $r->print('<p>'.&mt('Slot [_1] does not exist.','<tt>'.$slot_name.'</tt>').'</p>'); } } $r->print('<p><a href="/adm/slotrequest?command=showslots">'. @@ -580,7 +597,7 @@ sub get_slot { my $description1=&get_description($slot_name,\%slot); %slot=&Apache::lonnet::get_slot($env{'form.slotname'}); my $description2=&get_description($env{'form.slotname'},\%slot); - $r->print("<p>Already have a reservation: $description1</p>"); + $r->print('<p>'.&mt('Already have a reservation: [_1].',$description1).'</p>'); if ($slot_name ne $env{'form.slotname'}) { $r->print(<<STUFF); <form method="post" action="/adm/slotrequest"> @@ -589,13 +606,7 @@ sub get_slot { <input type="hidden" name="releaseslot" value="$slot_name" /> <input type="hidden" name="command" value="change" /> STUFF - $r->print("<p>You can either "); - $r->print(<<STUFF); - <input type="submit" name="change" value="Change" /> -STUFF - $r->print(' your reservation from <b>'.$description1.'</b> to <b>'. - $description2. - '</b> <br />or </p>'); + $r->print('<p>'.&mt('You can either [_1] your reservation from [2] to [_3] or [_4]','<input type="submit" name="change" value="'.&mt('Change').'" />','<b>'.$description1.'</b>','<b>'.$description2.'</b><br />','</p>')); &return_link($r); $r->print(<<STUFF); </form> @@ -616,17 +627,18 @@ STUFF .&mt('An error occurred while attempting to make a reservation. ([_1])',$1) .'</span></p>'); } elsif ($reserved > -1) { - $r->print("<p>Success: $description</p>"); + $r->print('<p>'.&mt('Success: [_1]',$description).'</p>'); $retvalue = 1; } elsif ($reserved < 0) { - $r->print("<p>Already reserved: $description</p>"); + $r->print('<p>'.&mt('Already reserved: [_1]',$description).'</p>'); } if (!$inhibit_return_link) { &return_link($r); } return 1; } my %lt=('request'=>"Availibility list", - 'try' =>'Try again'); + 'try' =>'Try again?', + 'or' => 'or'); %lt=&Apache::lonlocal::texthash(%lt); my $extra_input; @@ -634,8 +646,8 @@ STUFF $extra_input='<input type="hidden" name="releaseslot" value="'.$env{'form.slotname'}.'" />'; } + $r->print('<p>'.&mt('[_1]Failed[_2] to reserve a slot for [_3].','<span class="LC_warning">','</span>',$description).'</p>'); $r->print(<<STUFF); -<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'}" /> @@ -644,19 +656,20 @@ STUFF <input type="hidden" name="command" value="$env{'form.command'}" /> $extra_input </form> -? </p> <p> -or +$lt{'or'} <form method="post" action="/adm/slotrequest"> <input type="hidden" name="symb" value="$env{'form.symb'}" /> <input type="submit" name="requestattempt" value="$lt{'request'}" /> </form> -</p> -or STUFF - if (!$inhibit_return_link) { &return_link($r); } + if (!$inhibit_return_link) { + $r->print(&mt('or').'</p>').&return_link($r); + } else { + $r->print('</p>'); + } return 0; } @@ -737,7 +750,9 @@ sub allowed_slot { my $conflict = &check_for_conflict($symb,$slot_name,$slot,$slots, $consumed_uniqueperiods); - if ($conflict) { + if ($conflict =~ /^error: /) { + return 0; + } elsif ($conflict ne '') { if ($slots->{$conflict}{'starttime'} < time) { return 0; } @@ -763,10 +778,29 @@ sub show_choices { my ($cnum,$cdom)=&get_course(); my %slots=&Apache::lonnet::dump('slots',$cdom,$cnum); my $consumed_uniqueperiods = &get_consumed_uniqueperiods(\%slots); + if (ref($consumed_uniqueperiods) eq 'HASH') { + if (&Apache::lonnet::error(%$consumed_uniqueperiods)) { + $r->print('<span class="LC_error">'. + &mt('An error occurred determining slot availability'). + '</span>'); + return; + } + } elsif ($consumed_uniqueperiods =~ /^error: /) { + $r->print('<span class="LC_error">'. + &mt('An error occurred determining slot availability'). + '</span>'); + return; + } my $available; - $r->print('<table border="1">'); &Apache::lonxml::debug("Checking Slots"); my @got_slots=&check_for_reservation($symb,'allslots'); + if ($got_slots[0] =~ /^error: /) { + $r->print('<span class="LC_error">'. + &mt('An error occurred determining slot availability'). + '</span>'); + return; + } + $r->print('<table border="1">'); foreach my $slot (sort { return $slots{$a}->{'starttime'} <=> $slots{$b}->{'starttime'} } (keys(%slots))) { @@ -791,10 +825,16 @@ sub show_choices { my $conflict = &check_for_conflict($symb,$slot,$slots{$slot}, \%slots, $consumed_uniqueperiods); - if ($conflict) { - $text=&mt('Change Reservation'); - $command='get'; - } + if ($conflict) { + if ($conflict =~ /^error: /) { + $r->print('<tr><td><span class="LC_error" colspan="2">' + .&mt('Slot: [_1] has unknown status.',$description) + .'</span></td></tr>'); + } else { + $text=&mt('Change Reservation'); + $command='get'; + } + } } my $escsymb=&escape($symb); $form=<<STUFF; @@ -815,7 +855,8 @@ STUFF } if (!$available) { - $r->print('<tr><td>No available times. <a href="/adm/flip?postdata=return:">'. + $r->print('<tr><td>'.&mt('No available times.'). + ' <a href="/adm/flip?postdata=return:">'. &mt('Return to last resource').'</a></td></tr>'); } $r->print('</table>'); @@ -1136,7 +1177,7 @@ sub show_table { (@this_slot)) { my (undef,$id)=split("\0",$entry); my ($uname,$udom) = split(':',$consumed{$entry}{'name'}); - $ids.= '<nobr>'; + $ids.= '<span class="LC_nobreak">'; foreach my $item (@stu_display_order) { if ($stu_display{$item}) { if ($item eq 'fullname') { @@ -1147,7 +1188,7 @@ sub show_table { } } $ids.=&remove_link($slot,$entry,$uname,$udom, - $consumed{$entry}{'symb'}).'</nobr><br />'; + $consumed{$entry}{'symb'}).'</span><br />'; } } } @@ -1302,7 +1343,7 @@ sub upload_start { $result.=' <b>'. &mt('Specify a file containing the slot definitions.'). '</b></td></tr>'."\n"; - $result.='<tr bgcolor=#ffffe6><td>'."\n"; + $result.='<tr bgcolor="#ffffe6"><td>'."\n"; my $upfile_select=&Apache::loncommon::upfile_select_html(); my $ignore=&mt('Ignore First Line'); $result.=<<ENDUPFORM; @@ -1357,11 +1398,12 @@ ENDPICK sub csvuploadmap_footer { my ($request,$i,$keyfields) =@_; + my $buttontext = &mt('Create Slots'); $request->print(<<ENDPICK); </table> <input type="hidden" name="nfields" value="$i" /> <input type="hidden" name="keyfields" value="$keyfields" /> -<input type="button" onClick="javascript:verify(this.form)" value="Create Slots" /><br /> +<input type="button" onClick="javascript:verify(this.form)" value="$buttontext" /><br /> </form> ENDPICK } @@ -1478,7 +1520,7 @@ sub csv_upload_assign { my @slotdata = &Apache::loncommon::upfile_record_sep(); if ($env{'form.noFirstLine'}) { shift(@slotdata); } my %fields=&Apache::grades::get_fields(); - $r->print('<h3>Creating Slots</h3>'); + $r->print('<h3>'.&mt('Creating Slots').'</h3>'); my $cname=$env{'course.'.$env{'request.course.id'}.'.num'}; my $cdom=$env{'course.'.$env{'request.course.id'}.'.domain'}; my $countdone=0; @@ -1565,9 +1607,9 @@ sub csv_upload_assign { $r->rflush(); $countdone++; } - $r->print("<p>Created $countdone slots\n</p>"); + $r->print('<p>'.&mt('Created [quant,_1,slot]',$countdone)."\n".'</p>'); foreach my $error (@errors) { - $r->print("<p><span class=\"LC_warning\">$error</span></p>\n"); + $r->print('<p><span class="LC_warning">'.$error.'</span></p>'."\n"); } &show_table($r,$mgr); return ''; @@ -1655,7 +1697,7 @@ sub handler { &release_slot($r,$symb,$env{'form.releaseslot'}); } } else { - $r->print("<p>Unknown command: ".$env{'form.command'}."</p>"); + $r->print('<p>'.&mt('Unknown command: [_1]',$env{'form.command'}).'</p>'); } } &end_page($r);