--- loncom/interface/slotrequest.pm 2005/08/09 15:04:50 1.6 +++ loncom/interface/slotrequest.pm 2005/08/09 15:38:13 1.7 @@ -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.6 2005/08/09 15:04:50 albertel Exp $ +# $Id: slotrequest.pm,v 1.7 2005/08/09 15:38:13 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -125,9 +125,9 @@ sub check_for_reservation { &Apache::lonxml::debug(time." $slot_name ". $slots{$slot_name}->{'starttime'}." -- ". $slots{$slot_name}->{'startreserve'}); - if ($slots{$slot_name}->{'starttime'} > time && + if ($slots{$slot_name}->{'endtime'} > 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}); } } @@ -158,9 +158,6 @@ sub check_for_conflict { } -# FIXME - depends on the parameter for the resource to be correct -# to prevent multiple reservations - sub make_reservation { my ($slot_name,$slot,$symb)=@_; @@ -189,7 +186,6 @@ sub make_reservation { my (@ids)=&get_reservation_ids($slot_name); - # FIXME we could end up having holes... my $last=0; foreach my $id (@ids) { my $num=(split('\0',$id))[1]; @@ -198,9 +194,9 @@ sub make_reservation { my $wanted=$last+1; &Apache::lonxml::debug("wanted $wanted
"); - if ($wanted >= $max) { + if (scalar(@ids) >= $max) { # full up - return -1; + return undef; } my %reservation=('name' => $env{'user.name'}.'@'.$env{'user.domain'}, @@ -213,7 +209,6 @@ sub make_reservation { $cdom, $cnum); if ($success eq 'ok') { - #FIXME need to set the parm my $new_value=$slot_name; if ($value) { $new_value=$value.':'.$new_value; @@ -268,7 +263,7 @@ sub release_slot { my %slot=&Apache::lonnet::get_slot($slot_name); my $description=&get_description($env{'form.slotname'},\%slot); $r->print("

Released Reservation: $description

"); - if ($inhibit_return_link) { + if (!$inhibit_return_link) { $r->print('

'. &mt('Return to last resource').'

'); } @@ -285,44 +280,50 @@ sub get_slot { %slot=&Apache::lonnet::get_slot($env{'form.slotname'}); my $description2=&get_description($env{'form.slotname'},\%slot); $r->print("

Already have a reservation: $description1

"); - $r->print(<print(< STUFF - $r->print("

You can either "); - $r->print(<print("

You can either "); + $r->print(< STUFF - $r->print(' your reservation from '.$description1.' to '. - $description2. - '
or '. - &mt('Return to last resource').'

'); - $r->print(<print(' your reservation from '.$description1.' to '. + $description2. + '
or '. + &mt('Return to last resource').'

'); + $r->print(< STUFF - # FIXME add button to free current reservation and get new one + } else { + $r->print('

'. + &mt('Return to last resource').'

'); + } return; } my %slot=&Apache::lonnet::get_slot($env{'form.slotname'}); my $reserved=&make_reservation($env{'form.slotname'}, \%slot,$symb); my $description=&get_description($env{'form.slotname'},\%slot); - if ($reserved > -1) { - $r->print("

Success: $description

"); - $r->print('

'. - &mt('Return to last resource').'

'); - return; - } elsif ($reserved < 0) { - $r->print("

Already reserved: $description

"); - $r->print('

'. - &mt('Return to last resource').'

'); - return; + if (defined($reserved)) { + if ($reserved > -1) { + $r->print("

Success: $description

"); + $r->print('

'. + &mt('Return to last resource').'

'); + return; + } elsif ($reserved < 0) { + $r->print("

Already reserved: $description

"); + $r->print('

'. + &mt('Return to last resource').'

'); + return; + } } - my %lt=('request'=>"Request another attempt", + my %lt=('request'=>"Availibility list", 'try' =>'Try again'); %lt=&Apache::lonlocal::texthash(%lt); @@ -411,7 +412,8 @@ sub show_choices { my $description=&get_description($slot,$slots{$slot}); 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 $command='get'; if ($slot eq $got_slot) {