--- loncom/interface/slotrequest.pm 2009/08/05 13:40:10 1.100
+++ loncom/interface/slotrequest.pm 2011/01/03 18:04:56 1.110
@@ -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.110 2011/01/03 18:04:56 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -562,7 +562,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 +633,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 +675,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).'
'); } @@ -847,7 +862,7 @@ 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); @@ -1026,6 +1041,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); @@ -1049,7 +1065,11 @@ sub show_table { } if (!keys(%slots)) { - $r->print(''
.&mt('Instructors may use a reservation system to place restrictions on when and where assignments can be worked on.')
.'
'
.&mt('One example is for management of laboratory space, which is only available at certain times, and has a limited number of seats.')
- .'
' - .&mt('Your reservation status for any such assignments is listed below:') .'
' ); if (!defined($navmap)) { - $r->print(''."\n"); for (my $i=0; $i<$depth; $i++) { $r->print(''); @@ -1585,11 +1630,19 @@ sub manage_reservations { } } } + if ($shownheader) { + $r->print(' |
'.
+ $r->print(' '.
&mt('Reservation History').'
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.
-
+
@@ -2129,7 +2248,7 @@ sub csvuploadmap_footer {
-
+
ENDPICK
}
@@ -2228,6 +2347,7 @@ sub csvupload_fields {
['starttime','Start Time of slot'],
['endtime','End Time of slot'],
['startreserve','Reservation Start Time'],
+ ['reservationmsg','Message when reservation changed'],
['ip','IP or DNS restriction'],
['proctor','List of proctor ids'],
['description','Slot Description'],
@@ -2309,6 +2429,20 @@ sub csv_upload_assign {
next;
}
+ if ($slot{'type'} eq 'schedulable_student') {
+ if ($entries{$fields{'reservationmsg'}}) {
+ if (($entries{$fields{'reservationmsg'}} eq 'only_student') ||
+ ($entries{$fields{'reservationmsg'}} eq 'student_and_user_notes_screen')) {
+ $slot{'reservationmsg'}=$entries{$fields{'reservationmsg'}};
+ } else {
+ unless (($entries{$fields{'reservationmsg'}} eq 'none') ||
+ ($entries{$fields{'reservationmsg'}} eq '')) {
+ push(@errors,"$name -- Slot's reservationmsg setting ignored - not one of: 'only_student', 'student_and_user_notes_screen', 'none' or ''");
+ }
+ }
+ }
+ }
+
foreach my $key ('ip','proctor','description','maxspace',
'secret','symb') {
if ($entries{$fields{$key}}) {
@@ -2358,6 +2492,15 @@ sub slot_command_titles {
return %titles;
}
+sub slot_reservationmsg_options {
+ my %options = &Apache::lonlocal::texthash (
+ only_student => 'Sent to student',
+ student_and_user_notes_screen => 'Sent to student and added to user notes',
+ none => 'None sent and no record in user notes',
+ );
+ return %options;
+}
+
sub handler {
my $r=shift;
@@ -2487,7 +2630,26 @@ sub handler {
} elsif ($env{'form.command'} eq 'get') {
&get_slot($r,$symb);
} elsif ($env{'form.command'} eq 'change') {
- if (&get_slot($r,$symb,$env{'form.releaseslot'},1)) {
+ if ($env{'form.nochange'}) {
+ my $slot_name = $env{'form.releaseslot'};
+ my @slots = &check_for_reservation($symb,'allslots');
+ my $msg;
+ if (($slot_name ne '') && (grep(/^\Q$slot_name\E/,@slots))) {
+ my %slot=&Apache::lonnet::get_slot($env{'form.releaseslot'});
+ my $description=&get_description($slot_name,\%slot);
+ $msg = ''.
+ &mt('Unchanged reservation: [_1]',$description).'
';
+ my $person =
+ &Apache::loncommon::plainname($env{'user.name'},$env{'user.domain'});
+ my $subject = &mt('Reservation unchanged: [_1]',$description);
+ my $msgbody = &mt('No change to existing registration by [_1] for [_2].',$person,$description);
+ $msg .= &slot_change_messaging($slot{'reservationmsg'},$subject,$msgbody,'nochange');
+ } else {
+ $msg = ''.&mt('Reservation no longer reported as available.').'';
+ }
+ $r->print($msg);
+ &return_link($r);
+ } elsif (&get_slot($r,$symb,$env{'form.releaseslot'},1)) {
&release_slot($r,$symb,$env{'form.releaseslot'});
}
} else {