version 1.65, 2006/06/16 19:54:02
|
version 1.68.2.2, 2006/10/31 15:58:41
|
Line 90 sub get_reservation_ids {
|
Line 90 sub get_reservation_ids {
|
|
|
my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum, |
my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum, |
"^$slot_name\0"); |
"^$slot_name\0"); |
if (&network_error(%consumed)) { |
if (&Apache::lonnet::error(%consumed)) { |
return 'error: Unable to determine current status'; |
return 'error: Unable to determine current status'; |
} |
} |
my ($tmp)=%consumed; |
my ($tmp)=%consumed; |
Line 127 sub check_for_reservation {
|
Line 127 sub check_for_reservation {
|
my ($cnum,$cdom)=&get_course(); |
my ($cnum,$cdom)=&get_course(); |
my %slots=&Apache::lonnet::get('slots', [@slots], $cdom, $cnum); |
my %slots=&Apache::lonnet::get('slots', [@slots], $cdom, $cnum); |
|
|
if (&network_error($student) || &network_error($course) || |
if (&Apache::lonnet::error($student) |
&network_error(%slots)) { |
|| &Apache::lonnet::error($course) |
|
|| &Apache::lonnet::error(%slots)) { |
return 'error: Unable to determine current status'; |
return 'error: Unable to determine current status'; |
} |
} |
my @got; |
my @got; |
Line 175 sub get_consumed_uniqueperiods {
|
Line 176 sub get_consumed_uniqueperiods {
|
my $course = &Apache::lonnet::EXT("resource.0.available", |
my $course = &Apache::lonnet::EXT("resource.0.available", |
$symb, $env{'user.domain'}, |
$symb, $env{'user.domain'}, |
$env{'user.name'}); |
$env{'user.name'}); |
if (&network_error($student) || &network_error($course)) { |
if (&Apache::lonnet::error($student) |
|
|| &Apache::lonnet::error($course)) { |
return 'error: Unable to determine current status'; |
return 'error: Unable to determine current status'; |
} |
} |
foreach my $slot (split(/:/,$student), split(/:/, $course)) { |
foreach my $slot (split(/:/,$student), split(/:/, $course)) { |
Line 186 sub get_consumed_uniqueperiods {
|
Line 188 sub get_consumed_uniqueperiods {
|
if (!ref($slots)) { |
if (!ref($slots)) { |
my ($cnum,$cdom)=&get_course(); |
my ($cnum,$cdom)=&get_course(); |
my %slots=&Apache::lonnet::get('slots', [keys(%used_slots)], $cdom, $cnum); |
my %slots=&Apache::lonnet::get('slots', [keys(%used_slots)], $cdom, $cnum); |
if (&network_error(%slots)) { |
if (&Apache::lonnet::error(%slots)) { |
return 'error: Unable to determine current status'; |
return 'error: Unable to determine current status'; |
} |
} |
$slots = \%slots; |
$slots = \%slots; |
Line 212 sub check_for_conflict {
|
Line 214 sub check_for_conflict {
|
|
|
if (!ref($consumed_uniqueperiods)) { |
if (!ref($consumed_uniqueperiods)) { |
$consumed_uniqueperiods = &get_consumed_uniqueperiods($slots); |
$consumed_uniqueperiods = &get_consumed_uniqueperiods($slots); |
if (&network_error(%$consumed_uniqueperiods)) { |
if (&Apache::lonnet::error(%$consumed_uniqueperiods)) { |
return 'error: Unable to determine current status'; |
return 'error: Unable to determine current status'; |
} |
} |
} |
} |
Line 230 sub check_for_conflict {
|
Line 232 sub check_for_conflict {
|
|
|
} |
} |
|
|
sub network_error { |
|
my ($result) = @_; |
|
if ($result =~ /^(con_lost|no_such_host|error: [^2])/) { |
|
return 1; |
|
} |
|
return 0; |
|
} |
|
|
|
sub make_reservation { |
sub make_reservation { |
my ($slot_name,$slot,$symb)=@_; |
my ($slot_name,$slot,$symb)=@_; |
|
|
Line 250 sub make_reservation {
|
Line 244 sub make_reservation {
|
my $use_slots = &Apache::lonnet::EXT("resource.0.useslots"); |
my $use_slots = &Apache::lonnet::EXT("resource.0.useslots"); |
&Apache::lonxml::debug("use_slots is $use_slots<br />"); |
&Apache::lonxml::debug("use_slots is $use_slots<br />"); |
|
|
if (&network_error($value) || &network_error($use_slots)) { |
if (&Apache::lonnet::error($value) |
|
|| &Apache::lonnet::error($use_slots)) { |
return 'error: Unable to determine current status'; |
return 'error: Unable to determine current status'; |
} |
} |
|
|
my $parm_symb = $symb; |
my $parm_symb = $symb; |
my $parm_level = 1; |
my $parm_level = 1; |
if ($use_slots eq 'map') { |
if ($use_slots eq 'map' || $use_slots eq 'map_map') { |
my ($map) = &Apache::lonnet::decode_symb($symb); |
my ($map) = &Apache::lonnet::decode_symb($symb); |
$parm_symb = &Apache::lonnet::symbread($map); |
$parm_symb = &Apache::lonnet::symbread($map); |
$parm_level = 2; |
$parm_level = 2; |
Line 266 sub make_reservation {
|
Line 261 sub make_reservation {
|
if ($other_slot eq $slot_name) { |
if ($other_slot eq $slot_name) { |
my %consumed=&Apache::lonnet::dump('slot_reservations', $cdom, |
my %consumed=&Apache::lonnet::dump('slot_reservations', $cdom, |
$cnum, "^$slot_name\0"); |
$cnum, "^$slot_name\0"); |
if (&network_error($value)) { |
if (&Apache::lonnet::error($value)) { |
return 'error: Unable to determine current status'; |
return 'error: Unable to determine current status'; |
} |
} |
my $me=$env{'user.name'}.':'.$env{'user.domain'}; |
my $me=$env{'user.name'}.':'.$env{'user.domain'}; |
Line 283 sub make_reservation {
|
Line 278 sub make_reservation {
|
if (!defined($max)) { $max=99999; } |
if (!defined($max)) { $max=99999; } |
|
|
my (@ids)=&get_reservation_ids($slot_name); |
my (@ids)=&get_reservation_ids($slot_name); |
if (&network_error(@ids)) { |
if (&Apache::lonnet::error(@ids)) { |
return 'error: Unable to determine current status'; |
return 'error: Unable to determine current status'; |
} |
} |
my $last=0; |
my $last=0; |
Line 338 sub remove_registration {
|
Line 333 sub remove_registration {
|
my ($cnum,$cdom)=&get_course(); |
my ($cnum,$cdom)=&get_course(); |
my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum, |
my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum, |
"^$slot_name\0"); |
"^$slot_name\0"); |
if (&network_error(%consumed)) { |
if (&Apache::lonnet::error(%consumed)) { |
$r->print("<p>".&mt('A network error has occured.').'</p>'); |
$r->print("<p>".&mt('A network error has occured.').'</p>'); |
return; |
return; |
} |
} |
Line 438 sub release_slot {
|
Line 433 sub release_slot {
|
|
|
if ($mgr eq 'F' |
if ($mgr eq 'F' |
&& defined($env{'form.symb'})) { |
&& defined($env{'form.symb'})) { |
$symb = $env{'form.symb'}; |
$symb = &unescape($env{'form.symb'}); |
} |
} |
|
|
my ($result,$msg) = |
my ($result,$msg) = |
Line 490 sub release_reservation {
|
Line 485 sub release_reservation {
|
my $use_slots = &Apache::lonnet::EXT("resource.0.useslots"); |
my $use_slots = &Apache::lonnet::EXT("resource.0.useslots"); |
&Apache::lonxml::debug("use_slots is $use_slots<br />"); |
&Apache::lonxml::debug("use_slots is $use_slots<br />"); |
|
|
if (&network_error($use_slots)) { |
if (&Apache::lonnet::error($use_slots)) { |
return (0,'error: Unable to determine current status'); |
return (0,'error: Unable to determine current status'); |
} |
} |
|
|
my $parm_level = 1; |
my $parm_level = 1; |
if ($use_slots eq 'map') { |
if ($use_slots eq 'map' || $use_slots eq 'map_map') { |
$parm_level = 2; |
$parm_level = 2; |
} |
} |
# store new parameter string |
# store new parameter string |
Line 680 sub allowed_slot {
|
Line 675 sub allowed_slot {
|
split(',',$slot->{'allowedsections'}))) { |
split(',',$slot->{'allowedsections'}))) { |
$userallowed=1; |
$userallowed=1; |
} |
} |
|
if (defined($env{'request.course.groups'})) { |
|
my @groups = split(/:/,$env{'request.course.groups'}); |
|
my @allowed_sec = split(',',$slot->{'allowedsections'}); |
|
foreach my $group (@groups) { |
|
if (grep {$_ eq $group} (@allowed_sec)) { |
|
$userallowed=1; |
|
last; |
|
} |
|
} |
|
} |
} |
} |
&Apache::lonxml::debug("$slot_name sections is $userallowed"); |
&Apache::lonxml::debug("$slot_name sections is $userallowed"); |
|
|
Line 754 sub show_choices {
|
Line 759 sub show_choices {
|
my $text=&mt('Select'); |
my $text=&mt('Select'); |
my $command='get'; |
my $command='get'; |
if (grep(/^\Q$slot\E$/,@got_slots)) { |
if (grep(/^\Q$slot\E$/,@got_slots)) { |
$text=&mt('Free Reservation'); |
$text=&mt('Drop Reservation'); |
$command='release'; |
$command='release'; |
} else { |
} else { |
my $conflict = &check_for_conflict($symb,$slot,$slots{$slot}, |
my $conflict = &check_for_conflict($symb,$slot,$slots{$slot}, |
Line 1570 sub handler {
|
Line 1575 sub handler {
|
} |
} |
my (undef,undef,$res)=&Apache::lonnet::decode_symb($symb); |
my (undef,undef,$res)=&Apache::lonnet::decode_symb($symb); |
my $useslots = &Apache::lonnet::EXT("resource.0.useslots",$symb); |
my $useslots = &Apache::lonnet::EXT("resource.0.useslots",$symb); |
if ($useslots ne 'resource' && $useslots ne 'map') { |
if ($useslots ne 'resource' |
|
&& $useslots ne 'map' |
|
&& $useslots ne 'map_map') { |
&fail($r,'not_available'); |
&fail($r,'not_available'); |
return OK; |
return OK; |
} |
} |