version 1.5, 2005/08/09 07:34:51
|
version 1.6, 2005/08/09 15:04:50
|
Line 232 sub make_reservation {
|
Line 232 sub make_reservation {
|
} |
} |
|
|
sub release_slot { |
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 |
# 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 |
# 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 |
# 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("<p>Released Reservation: $description</p>"); |
|
if ($inhibit_return_link) { |
|
$r->print('<p><a href="/adm/flip?postdata=return:">'. |
|
&mt('Return to last resource').'</a></p>'); |
|
} |
|
return 1; |
} |
} |
|
|
sub get_slot { |
sub get_slot { |
Line 246 sub get_slot {
|
Line 281 sub get_slot {
|
my $slot_name=&check_for_conflict($symb,$env{'form.slotname'}); |
my $slot_name=&check_for_conflict($symb,$env{'form.slotname'}); |
if ($slot_name) { |
if ($slot_name) { |
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 $description1=&get_description($slot_name,\%slot); |
$r->print("<p>Already have a reservation: $description</p>"); |
%slot=&Apache::lonnet::get_slot($env{'form.slotname'}); |
$r->print('<p><a href="/adm/flip?postdata=return:">'. |
my $description2=&get_description($env{'form.slotname'},\%slot); |
|
$r->print("<p>Already have a reservation: $description1</p>"); |
|
$r->print(<<STUFF); |
|
<form method="POST" action="/adm/slotrequest"> |
|
<input type="hidden" name="symb" value="$env{'form.symb'}" /> |
|
<input type="hidden" name="slotname" value="$env{'form.slotname'}" /> |
|
<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 <a href="/adm/flip?postdata=return:">'. |
&mt('Return to last resource').'</a></p>'); |
&mt('Return to last resource').'</a></p>'); |
# FIXME add button to free current reservation adn get new one |
$r->print(<<STUFF); |
|
</form> |
|
STUFF |
|
# FIXME add button to free current reservation and get new one |
return; |
return; |
} |
} |
my %slot=&Apache::lonnet::get_slot($env{'form.slotname'}); |
my %slot=&Apache::lonnet::get_slot($env{'form.slotname'}); |
Line 447 sub handler {
|
Line 500 sub handler {
|
&release_slot($r,$symb); |
&release_slot($r,$symb); |
} elsif ($env{'form.command'} eq 'get') { |
} elsif ($env{'form.command'} eq 'get') { |
&get_slot($r,$symb); |
&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); |
&end_page($r); |
return OK; |
return OK; |