--- loncom/lti/ltiutils.pm	2018/04/14 02:30:07	1.6
+++ loncom/lti/ltiutils.pm	2018/05/15 04:33:17	1.9
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Utility functions for managing LON-CAPA LTI interactions 
 #
-# $Id: ltiutils.pm,v 1.6 2018/04/14 02:30:07 raeburn Exp $
+# $Id: ltiutils.pm,v 1.9 2018/05/15 04:33:17 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -324,6 +324,7 @@ sub sign_params {
     if ($sigmethod eq '') {
         $sigmethod = 'HMAC-SHA1';
     }
+    srand( time() ^ ($$ + ($$ << 15))  ); # Seed rand.
     my $nonce = Digest::SHA::sha1_hex(sprintf("%06x%06x",rand(0xfffff0),rand(0xfffff0)));
     my $request = Net::OAuth->request("request token")->new(
             consumer_key => $key,
@@ -481,13 +482,27 @@ sub lti_provider_scope {
             $scope = 'map';
             $realuri = $tail;
         } else {
-            $scope = 'resource';
             my ($map,$resid,$url) = &Apache::lonnet::decode_symb($tail);
             $realuri = &Apache::lonnet::clutter($url);
-            if (($url =~ /\.sequence$/) &&
-                ($env{'course.'.$env{'request.course.id'}.'.type'} ne 'Placement')) {
-                $realuri .= '?navmap=1';
+            if ($url =~ /\.sequence$/) {
+                $scope = 'map';
             } else {
+                $scope = 'resource';
+                $realuri .= '?symb='.$tail;
+            }
+        }
+    } elsif ($tail =~ m{^/res/$match_domain/$match_username/.+\.(?:sequence|page)(|___\d+___.+)$}) {
+        my $rest = $1;
+        if ($rest eq '') {
+            $scope = 'map';
+            $realuri = $tail;
+        } else {
+            my ($map,$resid,$url) = &Apache::lonnet::decode_symb($tail);
+            $realuri = &Apache::lonnet::clutter($url);
+            if ($url =~ /\.sequence$/) {
+                $scope = 'map';
+            } else {
+                $scope = 'resource';
                 $realuri .= '?symb='.$tail;
             }
         }
@@ -516,18 +531,12 @@ sub lti_provider_scope {
             if ((&Apache::lonnet::EXT('resource.0.encrypturl',$symb) =~ /^yes$/i) &&
                 (!$env{'request.role.adv'})) {
                 $realuri = &Apache::lonenc::encrypted(&Apache::lonnet::clutter($url));
-                if (($url =~ /\.sequence$/) &&
-                    ($env{'course.'.$env{'request.course.id'}.'.type'} ne 'Placement')) {
-                    $realuri .= '?navmap=1';
-                } else {
+                if ($scope eq 'resource') {
                     $realuri .= '?symb='.&Apache::lonenc::encrypted($symb);
                 }
             } else {
                 $realuri = &Apache::lonnet::clutter($url);
-                if (($url =~ /\.sequence$/) &&
-                    ($env{'course.'.$env{'request.course.id'}.'.type'} ne 'Placement')) {
-                    $realuri .= '?navmap=1';
-                } else {
+                if ($scope eq 'resource') {
                     $realuri .= '?symb='.$symb;
                 }
             }