--- rat/lonpageflip.pm 2021/07/19 15:48:25 1.106 +++ rat/lonpageflip.pm 2021/08/21 03:42:02 1.110 @@ -2,7 +2,7 @@ # # Page flip handler # -# $Id: lonpageflip.pm,v 1.106 2021/07/19 15:48:25 raeburn Exp $ +# $Id: lonpageflip.pm,v 1.110 2021/08/21 03:42:02 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -126,9 +126,9 @@ sub move { } $deeplinkonly = 0; if ($hash{'deeplinkonly_'.$next}) { - my ($value,$level) = split(/:/,$hash{'deeplinkonly_'.$next}); - my ($listed,$scope,$access) = split(/,/,$value); - unless (($access eq 'any') || ($hash{'is_map_'.$next})) { + my ($value,$level) = map { &unescape($_); } split(/:/,$hash{'deeplinkonly_'.$next}); + my ($state,$others,$listed,$scope,$protect) = split(/,/,$value); + unless (($state eq 'both') || ($hash{'is_map_'.$next})) { if ($level eq 'resource') { $deeplinkonly = 1; } elsif ($level eq 'map') { @@ -160,13 +160,12 @@ sub move { } } } elsif (($hash{'deeplinkonly_'.$prev}) && (!$firstres)) { - my ($value,$level) = split(/:/,$hash{'deeplinkonly_'.$prev}); - my ($listed,$scope,$access) = split(/,/,$value); - unless (($access eq 'any') || ($hash{'is_map_'.$prev})) { + my ($value,$level) = map { &unescape($_); } split(/:/,$hash{'deeplinkonly_'.$prev}); + my ($state,$others,$listed,$scope,$protect) = split(/,/,$value); + unless (($state eq 'both') || ($hash{'is_map_'.$prev})) { if ($level eq 'resource') { $deeplinkonly = 1; } elsif ($level eq 'map') { - my ($listed,$scope,$access) = split(/,/,$value); if ($scope eq 'rec') { unless ($mapid == $prevmapid) { unless ($deeplinkchecked) { @@ -204,7 +203,7 @@ sub move { (!$env{'request.role.adv'}) && (($hash{'randomout_'.$next}) || ($deeplinkonly) - || ($hash{'deeplinkout_'.$next}) + || ($hash{'deeplinkout_'.$next})) ) || (!$allowed) ) @@ -339,7 +338,7 @@ sub first_accessible_resource { if ($hash{'encrypted_'.$newrid}) { $furl=&Apache::lonenc::encrypted($furl); } - { + } } untie(%hash); return $furl; @@ -426,19 +425,15 @@ sub get_deeplink_login_pc { if (($env{'request.deeplink.login'}) && ($env{'request.course.id'})) { my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; - if ($env{'request.deeplink.login'}) { - my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; - my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; - my $deeplink_symb = &Apache::loncommon::deeplink_login_symb($cnum,$cdom); - if ($deeplink_symb) { - my $loginmap; - if ($deeplink_symb =~ /\.(page|sequence)$/) { - $loginmap = &Apache::lonnet::clutter((&Apache::lonnet::decode_symb($deeplink_symb))[2]); - } else { - $loginmap = &Apache::lonnet::clutter((&Apache::lonnet::decode_symb($deeplink_symb))[0]); - } - $deeplink_login_pc = $hash{'map_pc_'.$loginmap}; + my $deeplink_symb = &Apache::loncommon::deeplink_login_symb($cnum,$cdom); + if ($deeplink_symb) { + my $loginmap; + if ($deeplink_symb =~ /\.(page|sequence)$/) { + $loginmap = &Apache::lonnet::clutter((&Apache::lonnet::decode_symb($deeplink_symb))[2]); + } else { + $loginmap = &Apache::lonnet::clutter((&Apache::lonnet::decode_symb($deeplink_symb))[0]); } + $deeplink_login_pc = $hash{'map_pc_'.$loginmap}; } } return $deeplink_login_pc; @@ -695,7 +690,8 @@ sub handler { my $mapid = $hash{'map_pc_'.&Apache::lonnet::clutter($map)}; my $position_deeplink = $hash{'deeplinkonly_'.$mapid.'.'.$resid}; if ($position_deeplink) { - (my $value,$deeplinklevel) = split(/:/,$position_deeplink); + (my $value,$deeplinklevel) = map { &unescape($_); } + split(/:/,$position_deeplink); } } }