--- loncom/interface/slotrequest.pm 2009/08/05 13:40:10 1.100
+++ loncom/interface/slotrequest.pm 2014/09/12 15:22:58 1.121
@@ -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.100 2009/08/05 13:40:10 bisitz Exp $
+# $Id: slotrequest.pm,v 1.121 2014/09/12 15:22:58 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -137,16 +137,20 @@ sub check_for_reservation {
return 'error: Unable to determine current status';
}
my @got;
- my @sorted_slots = &Apache::loncommon::sorted_slots(\@slots,\%slots);
+ my @sorted_slots = &Apache::loncommon::sorted_slots(\@slots,\%slots,'starttime');
foreach my $slot_name (@sorted_slots) {
next if (!defined($slots{$slot_name}) ||
!ref($slots{$slot_name}));
&Apache::lonxml::debug(time." $slot_name ".
$slots{$slot_name}->{'starttime'}." -- ".
- $slots{$slot_name}->{'startreserve'});
- if ($slots{$slot_name}->{'endtime'} > time &&
- $slots{$slot_name}->{'startreserve'} < time) {
- # between start of reservation times and end of slot
+ $slots{$slot_name}->{'startreserve'}." -- ".
+ $slots{$slot_name}->{'endreserve'});
+ if (($slots{$slot_name}->{'endtime'} > time) &&
+ ($slots{$slot_name}->{'startreserve'} < time) &&
+ ((!$slots{$slot_name}->{'endreserve'}) ||
+ ($slots{$slot_name}->{'endreserve'} > time))) {
+ # between start of reservation time and end of reservation time
+ # and before end of slot
if ($mode eq 'allslots') {
push(@got,$slot_name);
} else {
@@ -335,12 +339,12 @@ sub store_slot_parm {
context => $env{'form.context'},
);
- &Apache::lonnet::instructor_log('slotreservationslog',\%storehash,
- '',$env{'user.name'},$env{'user.domain'},
- $cnum,$cdom);
- &Apache::lonnet::instructor_log($cdom.'_'.$cnum.'_slotlog',\%storehash,
- 1,$env{'user.name'},$env{'user.domain'},
- $env{'user.name'},$env{'user.domain'});
+ &Apache::lonnet::write_log('course','slotreservationslog',\%storehash,
+ '',$env{'user.name'},$env{'user.domain'},
+ $cnum,$cdom);
+ &Apache::lonnet::write_log('course',$cdom.'_'.$cnum.'_slotlog',\%storehash,
+ 1,$env{'user.name'},$env{'user.domain'},
+ $env{'user.name'},$env{'user.domain'});
return;
}
@@ -534,10 +538,10 @@ sub release_reservation {
action => 'release',
context => $env{'form.context'},
);
- &Apache::lonnet::instructor_log('slotreservationslog',\%storehash,
- 1,$uname,$udom,$cnum,$cdom);
- &Apache::lonnet::instructor_log($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);
}
}
@@ -562,7 +566,11 @@ sub release_reservation {
if ($mgr eq 'F') {
$msg = &mt('Released Reservation for user: [_1]',"$uname:$udom");
} else {
- $msg = &mt('Released Reservation: [_1]',$description);
+ $msg = ''.&mt('Released reservation: [_1]',$description).'
';
+ my $person = &Apache::loncommon::plainname($env{'user.name'},$env{'user.domain'});
+ my $subject = &mt('Reservation change: [_1]',$description);
+ my $msgbody = &mt('Reservation released by [_1] for [_2].',$person,$description);
+ $msg .= &slot_change_messaging($slot{'reservationmsg'},$subject,$msgbody,'release');
}
return (1,$msg);
}
@@ -629,7 +637,6 @@ sub get_slot {
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('
'.&mt('Already have a reservation: [_1].',$description1).'
'); if ($slot_name ne $env{'form.slotname'}) { $r->print(<'
- .&mt('You can either [_1]Change[_2] your reservation from [_3] to [_4] or'
- ,''
- ,''.$description1.''
- ,''.$description2.'')
- .'
'.&mt('Reservation currently unchanged').'
'); + if ($slot_name ne '') { + $r->print(''.&mt('To complete the transaction you [_1]must confirm[_2] you want to [_3]process the change[_4] to [_5].'
+ ,'','','','',''.$description2.'')
+ .'
'
+ .&mt('Or you can choose to [_1]make no change[_2] and continue[_2] with the reservation you already had: [_3].'
+ ,'','',''.$description1.'')
+ .'
' + .'' + .(' 'x3) + .'' + .'
'); + } $r->print(<'.&mt('Already have a reservation: [_1].',$description1).'
'); &return_link($r); } return 0; @@ -667,8 +679,15 @@ STUFF .&mt('An error occurred while attempting to make a reservation. ([_1])',$1) .''); } elsif ($reserved > -1) { - $r->print(''.&mt('Success: [_1]',$description).'
'); + $r->print(''.&mt('Successfully signed up: [_1]',$description).'
'); $retvalue = 1; + my $person = &Apache::loncommon::plainname($env{'user.name'},$env{'user.domain'}); + my $subject = &mt('Reservation change: [_1]',$description); + my $msgbody = &mt('Successful reservation by [_1] for [_2].',$person,$description); + my $msg = &slot_change_messaging($slot{'reservationmsg'},$subject,$msgbody,'reserve'); + if ($msg) { + $r->print($msg); + } } elsif ($reserved < 0) { $r->print(''.&mt('Already reserved: [_1]',$description).'
'); } @@ -677,7 +696,7 @@ STUFF } my %lt = &Apache::lonlocal::texthash( - 'request' => 'Availibility list', + 'request' => 'Availability list', 'try' => 'Try again?', 'or' => 'or', ); @@ -741,6 +760,11 @@ sub allowed_slot { if ($slot->{'startreserve'} > time) { return 0; } + # reserve time ended + if (($slot->{'endreserve'}) && + ($slot->{'endreserve'} < time)) { + return 0; + } &Apache::lonxml::debug("$slot_name reserve good"); my $userallowed=0; @@ -818,18 +842,18 @@ sub show_choices { my ($r,$symb,$formname)=@_; my ($cnum,$cdom)=&get_course(); - my %slots=&Apache::lonnet::dump('slots',$cdom,$cnum); + my %slots = &Apache::lonnet::get_course_slots($cnum,$cdom); my $consumed_uniqueperiods = &get_consumed_uniqueperiods(\%slots); if (ref($consumed_uniqueperiods) eq 'HASH') { if (&Apache::lonnet::error(%$consumed_uniqueperiods)) { $r->print(''. - &mt('An error occurred determining slot availability'). + &mt('An error occurred determining slot availability.'). ''); return; } } elsif ($consumed_uniqueperiods =~ /^error: /) { $r->print(''. - &mt('An error occurred determining slot availability'). + &mt('An error occurred determining slot availability.'). ''); return; } @@ -838,7 +862,7 @@ sub show_choices { my @got_slots=&check_for_reservation($symb,'allslots'); if ($got_slots[0] =~ /^error: /) { $r->print(''. - &mt('An error occurred determining slot availability'). + &mt('An error occurred determining slot availability.'). ''); return; } @@ -847,13 +871,13 @@ sub show_choices { (keys(%slots))) { &Apache::lonxml::debug("Checking Slot $slot"); - next if (!&allowed_slot($slot,$slots{$slot},undef,\%slots, + next if (!&allowed_slot($slot,$slots{$slot},$symb,\%slots, $consumed_uniqueperiods)); push(@available,$slot); } if (!@available) { - $output = &mt('No available times.'); + $output = ''.&mt('No available times.').''; if ($env{'form.command'} ne 'manageresv') { $output .= ' '. &mt('Return to last resource').''; @@ -933,6 +957,7 @@ STUFF $output .= &Apache::loncommon::end_data_table(); } $r->print($output); + return; } sub to_show { @@ -1026,6 +1051,7 @@ sub show_table { my ($r,$mgr)=@_; my ($cnum,$cdom)=&get_course(); + my $crstype=&Apache::loncommon::course_type($cdom.'_'.$cnum); my %slots=&Apache::lonnet::dump('slots',$cdom,$cnum); if ( (keys(%slots))[0] =~ /^error: 2 /) { undef(%slots); @@ -1033,7 +1059,8 @@ 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('