--- 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__