--- loncom/auth/lonroles.pm 2022/01/01 19:28:28 1.269.2.39.2.1 +++ 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.1 2022/01/01 19:28:28 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,9 +177,30 @@ 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; + if ($env{'environment.remote'} eq 'on') { + my ($menucoll,$deeplinkmenu,$menuref) = &Apache::loncommon::menucoll_in_effect(); + if ($menucoll) { + &Apache::lonnet::put('environment',{'remote' => 'off'}); + &Apache::lonnet::appenv({'environment.remote' => 'off'}); + my $menu_name = &Apache::lonmenu::get_menu_name(); + $remote_js = <print(< @@ -188,9 +209,11 @@ $msg \$("#LC_course_loaded").css("display","block"); \$('.isDisabled > a').removeAttr("aria-disabled"); \$('.isDisabled').removeClass("isDisabled"); + $remote_js var url = "$js_url"; \$(location).attr('href',url); }); +// ]]> $link $end_page @@ -882,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'}). '

'; @@ -909,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')) @@ -3360,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__