--- loncom/interface/slotrequest.pm 2015/05/10 03:58:12 1.122
+++ loncom/interface/slotrequest.pm 2019/06/24 03:23:36 1.125.2.3.4.1
@@ -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.122 2015/05/10 03:58:12 raeburn Exp $
+# $Id: slotrequest.pm,v 1.125.2.3.4.1 2019/06/24 03:23:36 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -37,7 +37,7 @@ use Apache::lonnet;
use Apache::lonnavmaps();
use Date::Manip;
use lib '/home/httpd/lib/perl/';
-use LONCAPA;
+use LONCAPA qw(:DEFAULT :match);
sub fail {
my ($r,$code)=@_;
@@ -162,9 +162,24 @@ $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)) {
@@ -237,7 +252,7 @@ function uncheckSlotRadio() {
if (document.getElementsByClassName) {
slotpicks = document.getElementsByClassName('LC_slotpick_radio');
} else {
- sloctpicks = getElementsByClassName(document.body,'LC_slotpick_radio');
+ slotpicks = getElementsByClassName(document.body,'LC_slotpick_radio');
}
if (slotpicks.length) {
for (var i=0; i '.&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.').
+ ' '.&mt('No slots meet the criteria for display').' ');
if ($curr{'page'} > 1) {
- $r->print('
");
+
+ 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, if so remove reservation
+ # get slot reservations, check if user has one for the
+ # correct symb, and if so, remove the 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) ) {
+ if (($consumed{$entry}->{'name'} eq $uname.':'.$udom) &&
+ ($consumed{$entry}->{'symb'} eq $parm_symb)) {
&Apache::lonnet::del('slot_reservations',[$entry],
$cdom,$cnum);
my %storehash = (
@@ -723,25 +770,13 @@ sub release_reservation {
action => 'release',
context => $env{'form.context'},
);
- &Apache::lonnet::write_log('slotreservationslog',\%storehash,
- 1,$uname,$udom,$cnum,$cdom);
- &Apache::lonnet::write_log($cdom.'_'.$cnum.'_slotlog',\%storehash,
- 1,$uname,$udom,$uname,$udom);
+ &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);
}
}
- 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',
@@ -820,9 +855,15 @@ 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 ($slot_name ne $env{'form.slotname'}) {
+ if ($slottype1 eq 'preassigned') {
+ $r->print(''.$linkstart.$which.'">'.$show_fields{$which}.' ';
}
}
- $r->print(&Apache::loncommon::end_data_table_header_row());
+ $tableheader .= &Apache::loncommon::end_data_table_header_row();
+ my $shownheader = 0;
my %name_cache;
my $slotsort = sub {
@@ -1612,30 +1654,39 @@ sub show_table {
delete => 'Delete',
slotlog => 'History',
);
- my $edit=(<<"EDITLINK");
+ my ($edit,$delete,$showlog,$remove_all);
+ if ($mgr) {
+ $edit=(<<"EDITLINK");
$lt{'edit'}
EDITLINK
- my $delete=(<<"DELETELINK");
+ $delete=(<<"DELETELINK");
$lt{'delete'}
DELETELINK
- my $showlog=(<<"LOGLINK");
+ $remove_all=&remove_link($slot,'remove all').'
';
+
+ if ($ids eq '') {
+ undef($remove_all);
+ } else {
+ undef($delete);
+ }
+ }
+
+ $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.
@@ -1704,7 +1755,12 @@ $row_end
STUFF
}
}
- $r->print(&Apache::loncommon::end_data_table().'');
+ if ($shownheader) {
+ $r->print(&Apache::loncommon::end_data_table());
+ } else {
+ $r->print('
');
if (($curr{'page'} > 1) || ($more_records)) {
- $r->print('
');
+ $r->print('');
+ $r->print(' '.&mt('Previous [_1] changes',$curr{'show'}).' ');
+ $r->print('');
}
if ($more_records) {
- $r->print(''.&mt('Next [_1] changes',$curr{'show'}).' ');
+ $r->print('');
}
- $r->print('