--- loncom/interface/slotrequest.pm 2006/06/20 03:32:40 1.66 +++ loncom/interface/slotrequest.pm 2006/12/18 14:59:16 1.72 @@ -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.66 2006/06/20 03:32:40 albertel Exp $ +# $Id: slotrequest.pm,v 1.72 2006/12/18 14:59:16 rezaferry Exp $ # # Copyright Michigan State University Board of Trustees # @@ -77,7 +77,7 @@ sub end_page { =cut sub get_course { - (undef,my $courseid)=&Apache::lonxml::whichuser(); + (undef,my $courseid)=&Apache::lonnet::whichuser(); my $cdom=$env{'course.'.$courseid.'.domain'}; my $cnum=$env{'course.'.$courseid.'.num'}; return ($cnum,$cdom); @@ -90,7 +90,7 @@ sub get_reservation_ids { my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum, "^$slot_name\0"); - if (&network_error(%consumed)) { + if (&Apache::lonnet::error(%consumed)) { return 'error: Unable to determine current status'; } my ($tmp)=%consumed; @@ -127,8 +127,9 @@ sub check_for_reservation { my ($cnum,$cdom)=&get_course(); my %slots=&Apache::lonnet::get('slots', [@slots], $cdom, $cnum); - if (&network_error($student) || &network_error($course) || - &network_error(%slots)) { + if (&Apache::lonnet::error($student) + || &Apache::lonnet::error($course) + || &Apache::lonnet::error(%slots)) { return 'error: Unable to determine current status'; } my @got; @@ -175,7 +176,8 @@ sub get_consumed_uniqueperiods { my $course = &Apache::lonnet::EXT("resource.0.available", $symb, $env{'user.domain'}, $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'; } foreach my $slot (split(/:/,$student), split(/:/, $course)) { @@ -186,7 +188,7 @@ sub get_consumed_uniqueperiods { if (!ref($slots)) { my ($cnum,$cdom)=&get_course(); 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'; } $slots = \%slots; @@ -212,7 +214,7 @@ sub check_for_conflict { if (!ref($consumed_uniqueperiods)) { $consumed_uniqueperiods = &get_consumed_uniqueperiods($slots); - if (&network_error(%$consumed_uniqueperiods)) { + if (&Apache::lonnet::error(%$consumed_uniqueperiods)) { return 'error: Unable to determine current status'; } } @@ -230,14 +232,6 @@ 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 { my ($slot_name,$slot,$symb)=@_; @@ -250,7 +244,8 @@ sub make_reservation { my $use_slots = &Apache::lonnet::EXT("resource.0.useslots"); &Apache::lonxml::debug("use_slots is $use_slots
"); - 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'; } @@ -266,7 +261,7 @@ sub make_reservation { if ($other_slot eq $slot_name) { my %consumed=&Apache::lonnet::dump('slot_reservations', $cdom, $cnum, "^$slot_name\0"); - if (&network_error($value)) { + if (&Apache::lonnet::error($value)) { return 'error: Unable to determine current status'; } my $me=$env{'user.name'}.':'.$env{'user.domain'}; @@ -283,7 +278,7 @@ sub make_reservation { if (!defined($max)) { $max=99999; } my (@ids)=&get_reservation_ids($slot_name); - if (&network_error(@ids)) { + if (&Apache::lonnet::error(@ids)) { return 'error: Unable to determine current status'; } my $last=0; @@ -338,7 +333,7 @@ sub remove_registration { my ($cnum,$cdom)=&get_course(); my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum, "^$slot_name\0"); - if (&network_error(%consumed)) { + if (&Apache::lonnet::error(%consumed)) { $r->print("

".&mt('A network error has occured.').'

'); return; } @@ -438,7 +433,7 @@ sub release_slot { if ($mgr eq 'F' && defined($env{'form.symb'})) { - $symb = $env{'form.symb'}; + $symb = &unescape($env{'form.symb'}); } my ($result,$msg) = @@ -490,7 +485,7 @@ sub release_reservation { my $use_slots = &Apache::lonnet::EXT("resource.0.useslots"); &Apache::lonxml::debug("use_slots is $use_slots
"); - if (&network_error($use_slots)) { + if (&Apache::lonnet::error($use_slots)) { return (0,'error: Unable to determine current status'); } @@ -680,6 +675,16 @@ sub allowed_slot { split(',',$slot->{'allowedsections'}))) { $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"); @@ -754,7 +759,7 @@ sub show_choices { my $text=&mt('Select'); my $command='get'; if (grep(/^\Q$slot\E$/,@got_slots)) { - $text=&mt('Free Reservation'); + $text=&mt('Drop Reservation'); $command='release'; } else { my $conflict = &check_for_conflict($symb,$slot,$slots{$slot}, @@ -887,14 +892,19 @@ sub show_table { } my $available; if ($mgr eq 'F') { + # FIXME: This line should be deleted once Slots uses breadcrumbs + $r->print(&Apache::loncommon::help_open_topic('Slot About', 'Help on slots')); + $r->print('
'); $r->print('
'); + $r->print(&Apache::loncommon::help_open_topic('Slot CommaDelimited')); $r->print('
'); + $r->print(&Apache::loncommon::help_open_topic('Slot AddInterface')); $r->print('
'); } @@ -1273,9 +1283,11 @@ sub csvuploadmap_header { my $checked=(($env{'form.noFirstLine'})?' checked="checked"':''); my $ignore=&mt('Ignore First Line'); + my $help_field = &Apache::loncommon::help_open_topic('Slot SelectingField'); + $r->print(< -

Identify fields

+

Identify fields $help_field

Total number of records found in file: $distotal
Enter as many fields as you can. The system will inform you and bring you back to this page if the data selected is insufficient to create the slots.