--- loncom/interface/slotrequest.pm 2005/08/09 07:34:51 1.5 +++ loncom/interface/slotrequest.pm 2005/08/09 15:04:50 1.6 @@ -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.5 2005/08/09 07:34:51 albertel Exp $ +# $Id: slotrequest.pm,v 1.6 2005/08/09 15:04:50 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -232,12 +232,47 @@ sub make_reservation { } sub release_slot { - my ($r,$symb)=@_; + my ($r,$symb,$slot_name,$inhibit_return_link)=@_; + + if ($slot_name eq '') { $slot_name=$env{'form.slotname'}; } + my ($cnum,$cdom)=&get_course(); + # get parameter string, check for existance, rebuild string with the slot + + my @slots = split(/:/,&Apache::lonnet::EXT("resource.0.availablestudent", + $symb,$env{'user.domain'}, + $env{'user.name'})); + my @new_slots; + foreach my $exist_slot (@slots) { + if ($exist_slot eq $slot_name) { next; } + push(@new_slots,$exist_slot); + } + my $new_param = join(':',@new_slots); # get slot reservations, check if user has one, if so remove reservation - + my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum, + "^$slot_name\0"); + foreach my $entry (keys(%consumed)) { + if ( $consumed{$entry}->{'name'} eq + ($env{'user.name'}.'@'.$env{'user.domain'}) ) { + &Apache::lonnet::del('slot_reservations',[$entry], + $cdom,$cnum); + } + } # store new parameter string + my $result=&Apache::lonparmset::storeparm_by_symb($symb, + '0_availablestudent', + 1, $new_param, 'string', + $env{'user.name'}, + $env{'user.domain'}); + 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) { + $r->print('

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

'); + } + return 1; } sub get_slot { @@ -246,11 +281,29 @@ sub get_slot { my $slot_name=&check_for_conflict($symb,$env{'form.slotname'}); if ($slot_name) { my %slot=&Apache::lonnet::get_slot($slot_name); - my $description=&get_description($env{'form.slotname'},\%slot); - $r->print("

Already have a reservation: $description

"); - $r->print('

'. + 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("

Already have a reservation: $description1

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

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

'); - # FIXME add button to free current reservation adn get new one + $r->print(< +STUFF + # FIXME add button to free current reservation and get new one return; } my %slot=&Apache::lonnet::get_slot($env{'form.slotname'}); @@ -447,6 +500,9 @@ sub handler { &release_slot($r,$symb); } elsif ($env{'form.command'} eq 'get') { &get_slot($r,$symb); + } elsif ($env{'form.command'} eq 'change') { + &release_slot($r,$symb,$env{'form.releaseslot'},1); + &get_slot($r,$symb); } &end_page($r); return OK;