--- loncom/auth/lonroles.pm 2022/01/16 17:32:44 1.269.2.39.2.2 +++ 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.2 2022/01/16 17:32:44 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 # @@ -177,7 +177,8 @@ ENDREDIR sub finish_loading_course { my ($r,$msg,$url) = @_; - my $link = ''; + my $link = ''; my $end_page = &Apache::loncommon::end_page(); my $js_url = &js_escape($url); my $remote_js; @@ -212,6 +213,7 @@ $msg var url = "$js_url"; \$(location).attr('href',url); }); +// ]]> $link $end_page @@ -903,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'}). '

'; @@ -930,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')) @@ -3381,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__