--- loncom/interface/slotrequest.pm 2019/06/22 19:18:28 1.125.2.7 +++ loncom/interface/slotrequest.pm 2015/09/23 23:04:53 1.126 @@ -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.125.2.7 2019/06/22 19:18:28 raeburn Exp $ +# $Id: slotrequest.pm,v 1.126 2015/09/23 23:04:53 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -162,24 +162,9 @@ $js var startdate = startm+"/"+startd+"/"+starty; var starttime = new Date(startdate).getTime(); starttime = starttime/1000; - var starth = form.start_hour.options[form.start_hour.selectedIndex].value; - if (numberRegExp.test(starth)) { - starth = parseInt(starth); - if (starth > 0 && starth <= 23) { - starttime += 3600 * starth; - } - } var enddate = endm+"/"+endd+"/"+endy; var endtime = new Date(enddate).getTime(); endtime = endtime/1000; - var endh = form.end_hour.options[form.end_hour.selectedIndex].value; - if (numberRegExp.test(endh)) { - endh = parseInt(endh); - if (endh > 0 && endh <= 23) { - endtime += 3600 * endh; - } - } - var shown = 0; for (var i=0; i<$i; i++) { if ((slotstart[i] >= starttime) && (slotend[i] <= endtime)) { @@ -729,39 +714,13 @@ sub release_reservation { } my $new_param = join(':',@new_slots); - # Get value of useslots parameter in effect for this user. - # If value is map or map_map, then the parm level is 2 (i.e., - # non-recursive enclosing map/folder level for specific user) - # and the symb for this reservation in slot_reservations.db - # will be the symb of the map itself. - - my $use_slots = &Apache::lonnet::EXT("resource.0.useslots", - $symb,$udom,$uname); - &Apache::lonxml::debug("use_slots is $use_slots
"); - - if (&Apache::lonnet::error($use_slots)) { - return (0,'error: Unable to determine current status'); - } - - my $parm_level = 1; - my $parm_symb = $passed_resource->symb(); - if ($use_slots eq 'map' || $use_slots eq 'map_map') { - $parm_level = 2; - unless ($passed_resource->is_map()) { - my ($map) = &Apache::lonnet::decode_symb($parm_symb); - $parm_symb = &Apache::lonnet::symbread($map); - } - } - my ($cnum,$cdom)=&get_course(); - # get slot reservations, check if user has one for the - # correct symb, and if so, remove the 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 $uname.':'.$udom) && - ($consumed{$entry}->{'symb'} eq $parm_symb)) { + if ( $consumed{$entry}->{'name'} eq ($uname.':'.$udom) ) { &Apache::lonnet::del('slot_reservations',[$entry], $cdom,$cnum); my %storehash = ( @@ -770,13 +729,25 @@ sub release_reservation { action => 'release', context => $env{'form.context'}, ); - &Apache::lonnet::write_log('course','slotreservationslog', - \%storehash,1,$uname,$udom,$cnum,$cdom); - &Apache::lonnet::write_log('course',$cdom.'_'.$cnum.'_slotlog', - \%storehash,1,$uname,$udom,$uname,$udom); + &Apache::lonnet::write_log('slotreservationslog',\%storehash, + 1,$uname,$udom,$cnum,$cdom); + &Apache::lonnet::write_log($cdom.'_'.$cnum.'_slotlog',\%storehash, + 1,$uname,$udom,$uname,$udom); } } + my $use_slots = &Apache::lonnet::EXT("resource.0.useslots", + $symb,$udom,$uname); + &Apache::lonxml::debug("use_slots is $use_slots
"); + + if (&Apache::lonnet::error($use_slots)) { + return (0,'error: Unable to determine current status'); + } + + my $parm_level = 1; + if ($use_slots eq 'map' || $use_slots eq 'map_map') { + $parm_level = 2; + } # store new parameter string my $result=&Apache::lonparmset::storeparm_by_symb($symb, '0_availablestudent', @@ -855,15 +826,9 @@ sub get_slot { if ($slot_name && $slot_name ne $conflictable_slot) { my %slot=&Apache::lonnet::get_slot($slot_name); my $description1=&get_description($slot_name,\%slot); - my $slottype1=$slot{'type'}; %slot=&Apache::lonnet::get_slot($env{'form.slotname'}); my $description2=&get_description($env{'form.slotname'},\%slot); - if ($slottype1 eq 'preassigned') { - $r->print('

'.&mt('You already have a reservation: "[_1]", assigned by your instructor.', - $description1).'

'. - '

'.&mt('Your instructor must unassign it before you can make a new reservation.'). - '

'); - } elsif ($slot_name ne $env{'form.slotname'}) { + if ($slot_name ne $env{'form.slotname'}) { $r->print(< @@ -1035,10 +1000,21 @@ sub allowed_slot { return 0 if (!$userallowed); # not allowed for this resource - if (defined($slot->{'symb'}) - && $slot->{'symb'} ne $symb) { - unless ((ref($toskip) eq 'HASH') && ($toskip->{'symb'})) { - return 0; + if (defined($slot->{'symb'})) { + my $exclude = 1; + my ($slotmap,$slotid,$sloturl) = &Apache::lonnet::decode_symb($slot->{'symb'}); + if ($sloturl=~/\.(page|sequence)$/) { + my ($map,$id,$url) = &Apache::lonnet::decode_symb($symb); + if (($map ne '') && ($map eq $slotmap)) { + $exclude = 0; + } + } elsif ($slot->{'symb'} eq $symb) { + $exclude = 0; + } + if ($exclude) { + unless ((ref($toskip) eq 'HASH') && ($toskip->{'symb'})) { + return 0; + } } } @@ -1384,7 +1360,7 @@ sub show_table { 'secret' => 'Secret Word', 'space' => '# of students/max', 'ip' => 'IP or DNS restrictions', - 'symb' => 'Resource slot is restricted to.', + 'symb' => 'Resource/Map slot is restricted to.', 'allowedsections' => 'Sections slot is restricted to.', 'allowedusers' => 'Users slot is restricted to.', 'uniqueperiod' => 'Period of time slot is unique', @@ -1496,16 +1472,15 @@ sub show_table { $r->print(''); $r->print('

'); my $linkstart=''.$show_fields{$which}.''; + $r->print(''.$linkstart.$which.'">'.$show_fields{$which}.''); } } - $tableheader .= &Apache::loncommon::end_data_table_header_row(); - my $shownheader = 0; + $r->print(&Apache::loncommon::end_data_table_header_row()); my %name_cache; my $slotsort = sub { @@ -1654,39 +1629,30 @@ sub show_table { delete => 'Delete', slotlog => 'History', ); - my ($edit,$delete,$showlog,$remove_all); - if ($mgr) { - $edit=(<<"EDITLINK"); + my $edit=(<<"EDITLINK"); $lt{'edit'} EDITLINK - $delete=(<<"DELETELINK"); + my $delete=(<<"DELETELINK"); $lt{'delete'} DELETELINK - $remove_all=&remove_link($slot,'remove all').'
'; - - if ($ids eq '') { - undef($remove_all); - } else { - undef($delete); - } - } - - $showlog=(<<"LOGLINK"); + my $showlog=(<<"LOGLINK"); $lt{'slotlog'} LOGLINK + my $remove_all=&remove_link($slot,'remove all').'
'; + + if ($ids eq '') { + undef($remove_all); + } else { + undef($delete); + } if ($slots{$slot}{'type'} ne 'schedulable_student') { undef($showlog); undef($remove_all); } - unless ($shownheader) { - $r->print($tableheader); - $shownheader = 1; - } - my $row_start=&Apache::loncommon::start_data_table_row(); my $row_end=&Apache::loncommon::end_data_table_row(); $r->print($row_start. @@ -1755,12 +1721,7 @@ $row_end STUFF } } - if ($shownheader) { - $r->print(&Apache::loncommon::end_data_table()); - } else { - $r->print('

'.&mt('No slots meet the criteria for display').'

'); - } - $r->print(''); + $r->print(&Apache::loncommon::end_data_table().''); return; } @@ -2116,16 +2077,14 @@ sub show_reservations { if ($showntablehdr) { $r->print(&Apache::loncommon::end_data_table().'
'); if (($curr{'page'} > 1) || ($more_records)) { - $r->print('

'); + $r->print(''); if ($curr{'page'} > 1) { - $r->print(''); + $r->print(''); } if ($more_records) { - $r->print(''); + $r->print(''); } - $r->print('

'); + $r->print('
'.&mt('Previous [_1] changes',$curr{'show'}).''.&mt('Next [_1] changes',$curr{'show'}).'
'); $r->print(<<"ENDSCRIPT");