--- loncom/auth/lonroles.pm 2022/02/24 16:28:46 1.269.2.39.2.3 +++ loncom/auth/lonroles.pm 2022/05/29 12:46:35 1.269.2.39.2.4 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # User Roles Screen # -# $Id: lonroles.pm,v 1.269.2.39.2.3 2022/02/24 16:28:46 raeburn Exp $ +# $Id: lonroles.pm,v 1.269.2.39.2.4 2022/05/29 12:46:35 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -905,6 +905,9 @@ ENDCLOSE &Apache::loncommon::end_page()); } } else { + if ($env{'request.deeplink.login'}) { + &set_deeplink_target($cnum,$cdom); + } $msg = '

'.&mt('Entering [_1] ...', $env{'course.'.$cdom.'_'.$cnum.'.description'}). '

'; @@ -932,6 +935,9 @@ ENDCLOSE &Apache::loncommon::end_page()); } } else { + if ($env{'request.deeplink.login'}) { + &set_deeplink_target($cnum,$cdom); + } # Check to see if the user is a CC entering a course # for the first time if ((($role eq 'cc') || ($role eq 'co')) @@ -3383,6 +3389,34 @@ sub get_queued { $output.'
'; } +sub set_deeplink_target { + my ($cnum,$cdom) = @_; + if (($cnum ne '') && ($cdom ne '')) { + my $deeplink_symb = &Apache::loncommon::deeplink_login_symb($cnum,$cdom); + if ($deeplink_symb ne '') { + my $deeplink; + if ($deeplink_symb =~ /\.(page|sequence)$/) { + my $mapname = &Apache::lonnet::deversion((&Apache::lonnet::decode_symb($deeplink_symb))[2]); + my $navmap = Apache::lonnavmaps::navmap->new(); + if (ref($navmap)) { + $deeplink = $navmap->get_mapparam(undef,$mapname,'0.deeplink'); + } + } elsif ($deeplink_symb ne '') { + $deeplink = &Apache::lonnet::EXT('resource.0.deeplink',$deeplink_symb); + } + if ($deeplink ne '') { + my ($state,$others,$listed,$scope,$protect,$display,$target) = split(/,/,$deeplink); + if ($target ne '') { + &Apache::lonnet::appenv({'request.deeplink.target' => $target}); + } elsif (exists($env{'request.deeplink.target'})) { + &Apache::lonnet::delenv('request.deeplink.target'); + } + } + } + } + return; +} + 1; __END__