[LON-CAPA-cvs] cvs: loncom /interface slotrequest.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Tue, 09 Aug 2005 15:04:50 -0000
albertel Tue Aug 9 11:04:50 2005 EDT
Modified files:
/loncom/interface slotrequest.pm
Log:
- can now change a reservation or freee one
Index: loncom/interface/slotrequest.pm
diff -u loncom/interface/slotrequest.pm:1.5 loncom/interface/slotrequest.pm:1.6
--- loncom/interface/slotrequest.pm:1.5 Tue Aug 9 03:34:51 2005
+++ loncom/interface/slotrequest.pm Tue Aug 9 11:04:50 2005
@@ -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 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("<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 {
@@ -246,11 +281,29 @@
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("<p>Already have a reservation: $description</p>");
- $r->print('<p><a href="/adm/flip?postdata=return:">'.
+ 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(<<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>');
- # 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;
}
my %slot=&Apache::lonnet::get_slot($env{'form.slotname'});
@@ -447,6 +500,9 @@
&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;