--- loncom/interface/slotrequest.pm 2019/06/28 19:46:03 1.141 +++ loncom/interface/slotrequest.pm 2025/04/02 23:44:01 1.152 @@ -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.141 2019/06/28 19:46:03 raeburn Exp $ +# $Id: slotrequest.pm,v 1.152 2025/04/02 23:44:01 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -50,16 +50,23 @@ sub fail { } else { $r->print('
'.&mt('Failed.').'
'); } - + &return_link($r); &end_page($r); } sub start_page { - my ($r,$title,$brcrum,$js)=@_; + my ($r,$title,$brcrum,$bread_crumbs_component,$js,$mgr)=@_; my $args; if (ref($brcrum) eq 'ARRAY') { $args = {bread_crumbs => $brcrum}; + if ($bread_crumbs_component) { + $args->{bread_crumbs_component} = $bread_crumbs_component; + } + if ((($env{'form.requestattempt'}) || ($env{'form.context'} eq 'user')) && + ($env{'form.symb'})) { + $args->{'bread_crumbs_nomenu'} = 1; + } } if (($env{'form.requestattempt'}) || ($env{'form.command'} eq 'manageresv')) { my %loaditems = ( @@ -71,12 +78,40 @@ sub start_page { $args = { 'add_entries' => \%loaditems }; } } + unless (($env{'form.context'} eq 'usermanage') || (($mgr eq 'F') && + (($env{'form.command'} eq 'release') || + ($env{'form.command'} eq 'remove_registration')))) { + if ($env{'form.symb'}) { + my $symb=&unescape($env{'form.symb'}); + if ($symb =~ m{^/enc/}) { + $symb = &Apache::lonenc::unencrypted($symb); + } + my ($mapurl,$id,$resurl) = &Apache::lonnet::decode_symb($symb); + if ($resurl =~ /ext\.tool$/) { + my $target; + my ($marker,$exttool) = (split(m{/},$resurl))[3,4]; + $marker=~s/\D//g; + if (($marker) && ($exttool) && ($env{'request.course.id'})) { + my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; + my ($idx,$crstool,$is_tool,%toolhash,%toolsettings); + if ($resurl eq "adm/$cdom/$cnum/$marker/$exttool") { + my %toolsettings=&Apache::lonnet::dump('exttool_'.$marker,$cdom,$cnum); + $target = $toolsettings{'target'}; + } + } + if ($target eq 'iframe') { + $args->{'only_body'} = 1; + } + } + } + } $r->print(&Apache::loncommon::start_page($title,$js,$args)); } sub end_page { my ($r)=@_; - $r->print(&Apache::loncommon::end_page()); + $r->print(''.&Apache::loncommon::end_page()); } sub reservation_js { @@ -256,7 +291,7 @@ function uncheckSlotRadio() { } if (slotpicks.length) { for (var i=0; i'.&mt('Releasing reservations').'
'); foreach my $entry (sort { $consumed{$a}{'name'} cmp @@ -741,7 +780,7 @@ sub release_all_slot { if (!$result) { $r->print(''.&mt($msg).'
'); } else { - $r->print("$msg
"); + $r->print($msg); } $r->rflush(); } @@ -764,16 +803,19 @@ sub release_slot { if ($mgr eq 'F' && defined($env{'form.symb'})) { $symb = &unescape($env{'form.symb'}); + if ($symb =~ m{^/enc/}) { + $symb = &Apache::lonenc::unencrypted($symb); + } } my ($result,$msg) = &release_reservation($slot_name,$uname,$udom,$symb,$mgr); if (!$result) { - $r->print(''.&mt($msg).'
'); + $r->print(''.&mt($msg).'
'); } else { $r->print("$msg
"); } - + if ($mgr eq 'F') { $r->print(''. &mt('Return to slot list').'
'); @@ -941,7 +983,7 @@ sub release_reservation { } else { if (keys(%to_delete)) { $msg = &mt('Reservation release partially complete for [_1]',$description); - } else { + } else { $msg = &mt('No entries found for this user to release for [_1].',$description); } return (0,$msg); @@ -995,7 +1037,7 @@ sub release_reservation { # # If release is *not* because of a reservation change, i.e., this is a "drop" - # by a student, or a removal for a single student by an instructor then + # by a student, or a removal for a single student by an instructor then # only remove one entry from slot_reservations.db, where both the user # and the symb match the current context. If useslots was set to map or # map_map, then the symb to match in slot_reservations.db is the symb of @@ -1006,7 +1048,7 @@ sub release_reservation { if ($parm_level == 2) { $symb_to_check = $map_symb; } else { - $symb_to_check = $parm_symb; + $symb_to_check = $parm_symb; } foreach my $entry (keys(%consumed)) { if ( $consumed{$entry}->{'name'} eq ($uname.':'.$udom) ) { @@ -1024,16 +1066,17 @@ sub release_reservation { $cnum,$udom,$uname,$context) =~ /^error/) { if ($mgr eq 'F') { $msg = &mt('Reservation release partially complete for: [_1]',"$uname:$udom").''. + &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); @@ -1119,7 +1162,7 @@ sub delete_slot { if ($ret eq 'ok') { $r->print(''.&mt('Slot [_1] marked as deleted.',''.$slot_name.'').'
'); } else { - $r->print(''.&mt('An error occurred when attempting to delete slot: [_1]',''.$slot_name.'')." ($ret)
"); + $r->print(''.&mt('An error occurred when attempting to delete slot: [_1]',''.$slot_name.'')." ($ret)
"); } } else { if (%consumed) { @@ -1135,15 +1178,32 @@ sub delete_slot { sub return_link { my ($r) = @_; + my $target = &return_target(); if (($env{'form.command'} eq 'manageresv') || ($env{'form.context'} eq 'usermanage')) { - $r->print(''.
- &mt('Return to reservations'));
+ $r->print(' '.
+ &mt('Return to reservations').' '.
+ $r->print(' '.
&mt('Return to last resource').' '
+ $r->print(' '
.&mt('An error occurred while attempting to make a reservation. ([_1])',$1)
- .' '
+ $r->print(' '
.&mt('An error occurred while attempting to make a reservation. ([_1])',$1)
- .'
'.&mt('Successfully signed up: [_1]',$description).'
'); $retvalue = 1; @@ -1295,7 +1355,7 @@ sub allowed_slot { if (($slot->{'endreserve'}) && ($slot->{'endreserve'} < time)) { return 0; - } + } &Apache::lonxml::debug("$slot_name reserve good"); my $userallowed=0; @@ -1401,9 +1461,10 @@ sub show_choices { return; } if (!@{$available}) { - $output = ''.&mt('No available times.').''; + $output = ''.&mt('No available times.').'
'; if ($env{'form.command'} ne 'manageresv') { - $output .= ' '. + my $target = &return_target(); + $output .= ' '. &mt('Return to last resource').''; } if ($class) { @@ -1411,6 +1472,10 @@ sub show_choices { } else { return $output; } + } elsif ($env{'form.command'} ne 'manageresv') { + my $title = &Apache::lonnet::gettitle($symb); + my $headertext = &mt('Manage Reservation(s) for [_1]',$title); + $output .= '