version 1.6, 2005/08/09 15:04:50
|
version 1.8, 2005/08/15 19:54:26
|
Line 38 use Apache::lonnet;
|
Line 38 use Apache::lonnet;
|
sub fail { |
sub fail { |
my ($r,$code)=@_; |
my ($r,$code)=@_; |
if ($code eq 'not_valid') { |
if ($code eq 'not_valid') { |
$r->print('<p>'.&mt('Unable to understand what resource you wanted to sign up for.').'</p>'.$env{'form.symb'}); |
$r->print('<p>'.&mt('Unable to understand what resource you wanted to sign up for.').'</p>'); |
|
|
|
} elsif ($code eq 'not_allowed') { |
|
$r->print('<p>'.&mt('Not allowed to sign up or change reservations at this time.').'</p>'); |
|
} else { |
|
$r->print('<p>'.&mt('Failed.').'</p>'); |
} |
} |
|
|
$r->print('<p><a href="/adm/flip?postdata=return:">'. |
$r->print('<p><a href="/adm/flip?postdata=return:">'. |
&mt('Return to last resource').'</a></p>'); |
&mt('Return to last resource').'</a></p>'); |
&end_page($r); |
&end_page($r); |
Line 125 sub check_for_reservation {
|
Line 130 sub check_for_reservation {
|
&Apache::lonxml::debug(time." $slot_name ". |
&Apache::lonxml::debug(time." $slot_name ". |
$slots{$slot_name}->{'starttime'}." -- ". |
$slots{$slot_name}->{'starttime'}." -- ". |
$slots{$slot_name}->{'startreserve'}); |
$slots{$slot_name}->{'startreserve'}); |
if ($slots{$slot_name}->{'starttime'} > time && |
if ($slots{$slot_name}->{'endtime'} > time && |
$slots{$slot_name}->{'startreserve'} < time) { |
$slots{$slot_name}->{'startreserve'} < time) { |
# between start of reservation times and start of slot |
# between start of reservation times and end of slot |
return($slot_name, $slots{$slot_name}); |
return($slot_name, $slots{$slot_name}); |
} |
} |
} |
} |
Line 158 sub check_for_conflict {
|
Line 163 sub check_for_conflict {
|
|
|
} |
} |
|
|
# FIXME - depends on the parameter for the resource to be correct |
|
# to prevent multiple reservations |
|
|
|
sub make_reservation { |
sub make_reservation { |
my ($slot_name,$slot,$symb)=@_; |
my ($slot_name,$slot,$symb)=@_; |
|
|
Line 189 sub make_reservation {
|
Line 191 sub make_reservation {
|
|
|
my (@ids)=&get_reservation_ids($slot_name); |
my (@ids)=&get_reservation_ids($slot_name); |
|
|
# FIXME we could end up having holes... |
|
my $last=0; |
my $last=0; |
foreach my $id (@ids) { |
foreach my $id (@ids) { |
my $num=(split('\0',$id))[1]; |
my $num=(split('\0',$id))[1]; |
Line 198 sub make_reservation {
|
Line 199 sub make_reservation {
|
|
|
my $wanted=$last+1; |
my $wanted=$last+1; |
&Apache::lonxml::debug("wanted $wanted<br />"); |
&Apache::lonxml::debug("wanted $wanted<br />"); |
if ($wanted >= $max) { |
if (scalar(@ids) >= $max) { |
# full up |
# full up |
return -1; |
return undef; |
} |
} |
|
|
my %reservation=('name' => $env{'user.name'}.'@'.$env{'user.domain'}, |
my %reservation=('name' => $env{'user.name'}.'@'.$env{'user.domain'}, |
Line 213 sub make_reservation {
|
Line 214 sub make_reservation {
|
$cdom, $cnum); |
$cdom, $cnum); |
|
|
if ($success eq 'ok') { |
if ($success eq 'ok') { |
#FIXME need to set the parm |
|
my $new_value=$slot_name; |
my $new_value=$slot_name; |
if ($value) { |
if ($value) { |
$new_value=$value.':'.$new_value; |
$new_value=$value.':'.$new_value; |
Line 268 sub release_slot {
|
Line 268 sub release_slot {
|
my %slot=&Apache::lonnet::get_slot($slot_name); |
my %slot=&Apache::lonnet::get_slot($slot_name); |
my $description=&get_description($env{'form.slotname'},\%slot); |
my $description=&get_description($env{'form.slotname'},\%slot); |
$r->print("<p>Released Reservation: $description</p>"); |
$r->print("<p>Released Reservation: $description</p>"); |
if ($inhibit_return_link) { |
if (!$inhibit_return_link) { |
$r->print('<p><a href="/adm/flip?postdata=return:">'. |
$r->print('<p><a href="/adm/flip?postdata=return:">'. |
&mt('Return to last resource').'</a></p>'); |
&mt('Return to last resource').'</a></p>'); |
} |
} |
Line 285 sub get_slot {
|
Line 285 sub get_slot {
|
%slot=&Apache::lonnet::get_slot($env{'form.slotname'}); |
%slot=&Apache::lonnet::get_slot($env{'form.slotname'}); |
my $description2=&get_description($env{'form.slotname'},\%slot); |
my $description2=&get_description($env{'form.slotname'},\%slot); |
$r->print("<p>Already have a reservation: $description1</p>"); |
$r->print("<p>Already have a reservation: $description1</p>"); |
$r->print(<<STUFF); |
if ($slot_name ne $env{'form.slotname'}) { |
|
$r->print(<<STUFF); |
<form method="POST" action="/adm/slotrequest"> |
<form method="POST" action="/adm/slotrequest"> |
<input type="hidden" name="symb" value="$env{'form.symb'}" /> |
<input type="hidden" name="symb" value="$env{'form.symb'}" /> |
<input type="hidden" name="slotname" value="$env{'form.slotname'}" /> |
<input type="hidden" name="slotname" value="$env{'form.slotname'}" /> |
<input type="hidden" name="releaseslot" value="$slot_name" /> |
<input type="hidden" name="releaseslot" value="$slot_name" /> |
<input type="hidden" name="command" value="change" /> |
<input type="hidden" name="command" value="change" /> |
STUFF |
STUFF |
$r->print("<p>You can either "); |
$r->print("<p>You can either "); |
$r->print(<<STUFF); |
$r->print(<<STUFF); |
<input type="submit" name="change" value="Change" /> |
<input type="submit" name="change" value="Change" /> |
STUFF |
STUFF |
$r->print(' your reservation from <b>'.$description1.'</b> to <b>'. |
$r->print(' your reservation from <b>'.$description1.'</b> to <b>'. |
$description2. |
$description2. |
'</b> <br />or <a href="/adm/flip?postdata=return:">'. |
'</b> <br />or <a href="/adm/flip?postdata=return:">'. |
&mt('Return to last resource').'</a></p>'); |
&mt('Return to last resource').'</a></p>'); |
$r->print(<<STUFF); |
$r->print(<<STUFF); |
</form> |
</form> |
STUFF |
STUFF |
# FIXME add button to free current reservation and get new one |
} else { |
|
$r->print('<p><a href="/adm/flip?postdata=return:">'. |
|
&mt('Return to last resource').'</a></p>'); |
|
} |
return; |
return; |
} |
} |
my %slot=&Apache::lonnet::get_slot($env{'form.slotname'}); |
my %slot=&Apache::lonnet::get_slot($env{'form.slotname'}); |
my $reserved=&make_reservation($env{'form.slotname'}, |
my $reserved=&make_reservation($env{'form.slotname'}, |
\%slot,$symb); |
\%slot,$symb); |
my $description=&get_description($env{'form.slotname'},\%slot); |
my $description=&get_description($env{'form.slotname'},\%slot); |
if ($reserved > -1) { |
if (defined($reserved)) { |
$r->print("<p>Success: $description</p>"); |
if ($reserved > -1) { |
$r->print('<p><a href="/adm/flip?postdata=return:">'. |
$r->print("<p>Success: $description</p>"); |
&mt('Return to last resource').'</a></p>'); |
$r->print('<p><a href="/adm/flip?postdata=return:">'. |
return; |
&mt('Return to last resource').'</a></p>'); |
} elsif ($reserved < 0) { |
return; |
$r->print("<p>Already reserved: $description</p>"); |
} elsif ($reserved < 0) { |
$r->print('<p><a href="/adm/flip?postdata=return:">'. |
$r->print("<p>Already reserved: $description</p>"); |
&mt('Return to last resource').'</a></p>'); |
$r->print('<p><a href="/adm/flip?postdata=return:">'. |
return; |
&mt('Return to last resource').'</a></p>'); |
|
return; |
|
} |
} |
} |
|
|
my %lt=('request'=>"Request another attempt", |
my %lt=('request'=>"Availibility list", |
'try' =>'Try again'); |
'try' =>'Try again'); |
%lt=&Apache::lonlocal::texthash(%lt); |
%lt=&Apache::lonlocal::texthash(%lt); |
|
|
Line 411 sub show_choices {
|
Line 417 sub show_choices {
|
my $description=&get_description($slot,$slots{$slot}); |
my $description=&get_description($slot,$slots{$slot}); |
|
|
my $form=&mt('Unavailable'); |
my $form=&mt('Unavailable'); |
if (&space_available($slot,$slots{$slot},$symb)) { |
if (($slot eq $got_slot) || |
|
&space_available($slot,$slots{$slot},$symb)) { |
my $text=&mt('Select'); |
my $text=&mt('Select'); |
my $command='get'; |
my $command='get'; |
if ($slot eq $got_slot) { |
if ($slot eq $got_slot) { |
Line 484 STUFF
|
Line 491 STUFF
|
sub handler { |
sub handler { |
my $r=shift; |
my $r=shift; |
|
|
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}); |
&start_page($r); |
&start_page($r); |
my $symb=&Apache::lonnet::unescape($env{'form.symb'}); |
my $symb=&Apache::lonnet::unescape($env{'form.symb'}); |
my (undef,undef,$res)=&Apache::lonnet::decode_symb($symb); |
my (undef,undef,$res)=&Apache::lonnet::decode_symb($symb); |
Line 491 sub handler {
|
Line 499 sub handler {
|
&fail($r,'not_valid'); |
&fail($r,'not_valid'); |
return OK; |
return OK; |
} |
} |
|
$env{'request.symb'}=$symb; |
if ($env{'form.command'} eq 'showslots') { |
my ($status) = &Apache::lonhomework::check_task_access('0'); |
|
if ($status eq 'CAN_ANSWER' || |
|
$status eq 'NEEDS_CHECKIN' || |
|
$status eq 'WAITING_FOR_GRADE') { |
|
&fail($r,'not_allowed'); |
|
return OK; |
|
} |
|
my $vgr=&Apache::lonnet::allowed('vgr',$env{'request.course.id'}); |
|
if ($env{'form.command'} eq 'showslots' && $vgr eq 'F') { |
&show_table($r,$symb); |
&show_table($r,$symb); |
} elsif ($env{'form.requestattempt'}) { |
} elsif ($env{'form.requestattempt'}) { |
&show_choices($r,$symb); |
&show_choices($r,$symb); |
Line 503 sub handler {
|
Line 519 sub handler {
|
} elsif ($env{'form.command'} eq 'change') { |
} elsif ($env{'form.command'} eq 'change') { |
&release_slot($r,$symb,$env{'form.releaseslot'},1); |
&release_slot($r,$symb,$env{'form.releaseslot'},1); |
&get_slot($r,$symb); |
&get_slot($r,$symb); |
|
} else { |
|
$r->print("<p>Unknown command: ".$env{'form.command'}."</p>"); |
} |
} |
|
$r->print('<p>1'.$symb.'</p>'); |
|
$r->print('<p>2'.&Apache::lonnet::symbread().'</p>'); |
|
$r->print(&check_for_reservation($symb)); |
|
$r->print( &Apache::lonhomework::check_task_access('0')); |
&end_page($r); |
&end_page($r); |
return OK; |
return OK; |
} |
} |