--- loncom/interface/lontiny.pm 2023/07/05 19:20:19 1.8.2.5 +++ loncom/interface/lontiny.pm 2024/02/10 14:24:46 1.8.2.6 @@ -2,7 +2,7 @@ # Extract domain, courseID, and symb from a shortened URL, # and switch role to a role in designated course. # -# $Id: lontiny.pm,v 1.8.2.5 2023/07/05 19:20:19 raeburn Exp $ +# $Id: lontiny.pm,v 1.8.2.6 2024/02/10 14:24:46 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -308,7 +308,8 @@ sub handler { sub launch_check { my ($linkuri,$symb) = @_; - my ($linkprotector,$linkproturi,$linkprotexit,$linkprotpbid,$linkprotpburl,$linkkey,$newlauncher); + my ($linkprotector,$linkproturi,$linkprotexit,$linkprotpbid,$linkprotpburl, + $linkkey,$newlauncher,$prevlaunch); if ($env{'form.ttoken'}) { my %link_info = &Apache::lonnet::tmpget($env{'form.ttoken'}); &Apache::lonnet::tmpdel($env{'form.ttoken'}); @@ -380,6 +381,9 @@ sub launch_check { if ($link_info{'checklaunch'}) { $newlauncher = 1; } + if ($link_info{'prevlaunch'} ne '') { + $prevlaunch = $link_info{'prevlaunch'}; + } } my $currdeeplinklogin = $env{'request.deeplink.login'}; my $deeplink; @@ -438,32 +442,46 @@ sub launch_check { } else { unless ($currdeeplinklogin eq $linkuri) { if (($linkprotector) || ($linkkey ne '')) { - if ($linkprotector) { - &Apache::lonnet::appenv({'request.linkprot' => $linkprotector.':'.$linkproturi}); - } elsif ($env{'request.linkprot'}) { - &Apache::lonnet::delenv('request.linkprot'); - } + $newlauncher = 1; + } + } + if ($linkprotector) { + &Apache::lonnet::appenv({'request.linkprot' => $linkprotector.':'.$linkproturi}); + } elsif ($env{'request.linkprot'}) { + &Apache::lonnet::delenv('request.linkprot'); + } + if ($linkkey ne '') { + &Apache::lonnet::appenv({'request.linkkey' => $linkkey}); + } elsif ($env{'request.linkkey'} ne '') { + &Apache::lonnet::delenv('request.linkkey'); + } + if (($linkprotector) || ($linkkey ne '')) { + if ($linkprotexit ne $env{'request.linkprotexit'}) { if ($linkprotexit) { &Apache::lonnet::appenv({'request.linkprotexit' => $linkprotexit}); } elsif ($env{'request.linkprotexit'}) { &Apache::lonnet::delenv('request.linkprotexit'); } + } + if ($linkprotpbid ne $env{'request.linkprotpbid'}) { if ($linkprotpbid) { &Apache::lonnet::appenv({'request.linkprotpbid' => $linkprotpbid}); } elsif ($env{'request.linkprotpbid'}) { &Apache::lonnet::delenv('request.linkprotpbid'); } + } + if ($linkprotpburl ne $env{'request.linkprotpburl'}) { if ($linkprotpburl) { &Apache::lonnet::appenv({'request.linkprotpburl' => $linkprotpburl}); } elsif ($env{'request.linkprotpburl'}) { &Apache::lonnet::delenv('request.linkprotpburl'); } - if ($linkkey ne '') { - &Apache::lonnet::appenv({'request.linkkey' => $linkkey}); - } elsif ($env{'request.linkkey'} ne '') { - &Apache::lonnet::delenv('request.linkkey'); + } + } elsif ($prevlaunch) { + foreach my $requestkey ('linkprotpbid','linkprotpburl','linkprotexit') { + if ($env{"request.$requestkey"}) { + &Apache::lonnet::delenv("request.$requestkey"); } - $newlauncher = 1; } } &Apache::lonnet::appenv({'request.deeplink.login' => $linkuri});