--- loncom/interface/lonnavmaps.pm 2016/11/22 00:43:12 1.525 +++ loncom/interface/lonnavmaps.pm 2017/02/20 18:29:22 1.528 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Navigate Maps Handler # -# $Id: lonnavmaps.pm,v 1.525 2016/11/22 00:43:12 raeburn Exp $ +# $Id: lonnavmaps.pm,v 1.528 2017/02/20 18:29:22 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1684,6 +1684,18 @@ END undef($args->{'sort'}); } + # Determine if page will be served with https in case + # it contains a syllabus which uses an external URL + # which points at an http site. + + my ($is_ssl,$cdom,$cnum); + if ($ENV{'SERVER_PORT'} == 443) { + $is_ssl = 1; + } + if ($env{'request.course.id'}) { + $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; + } while (1) { if ($args->{'sort'}) { @@ -1817,8 +1829,19 @@ END $stack=$it->getStack(); } ($src,$symb,$anchor)=getLinkForResource($stack); + my $srcHasQuestion = $src =~ /\?/; + if ($env{'request.course.id'}) { + if (($src =~ m{^\Q/public/$cdom/$cnum/syllabus\E($|\?)}) && ($is_ssl) && + ($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ m{^http://})) { + my $hostname = $r->hostname(); + if ($hostname ne '') { + $src = 'http://'.$hostname.$src; + } + $src .= ($srcHasQuestion? '&' : '?') . 'usehttp=1'; + $srcHasQuestion = 1; + } + } if (defined($anchor)) { $anchor='#'.$anchor; } - my $srcHasQuestion = $src =~ /\?/; $args->{"resourceLink"} = $src. ($srcHasQuestion?'&':'?') . 'symb=' . &escape($symb).$anchor; @@ -2688,7 +2711,13 @@ sub parmval_real { } foreach my $item (@recurseup) { my $norecursechk=$usercourseprefix.'.'.$item.'___(all).'.$what; - last if (defined($$useropt{$norecursechk})); + if (defined($$useropt{$norecursechk})) { + if ($what =~ /\.(encrypturl|hiddenresource)$/) { + return [$$useropt{$norecursechk},'map']; + } else { + last; + } + } my $recursechk=$usercourseprefix.'.'.$item.'___(rec).'.$what; if (defined($$useropt{$recursechk})) { return [$$useropt{$recursechk},'map']; } } @@ -2706,7 +2735,13 @@ sub parmval_real { } foreach my $item (@recurseup) { my $norecursechk=$usercourseprefix.'.['.$cgroup.'].'.$item.'___(all).'.$what; - last if (defined($$courseopt{$norecursechk})); + if (defined($$courseopt{$norecursechk})) { + if ($what =~ /\.(encrypturl|hiddenresource)$/) { + return [$$courseopt{$norecursechk},'map']; + } else { + last; + } + } my $recursechk=$usercourseprefix.'.['.$cgroup.'].'.$item.'___(rec).'.$what; if (defined($$courseopt{$recursechk})) { return [$$courseopt{$recursechk},'map']; } } @@ -2723,7 +2758,13 @@ sub parmval_real { } foreach my $item (@recurseup) { my $norecursechk=$usercourseprefix.'.['.$csec.'].'.$item.'___(all).'.$what; - last if (defined($$courseopt{$norecursechk})); + if (defined($$courseopt{$norecursechk})) { + if ($what =~ /\.(encrypturl|hiddenresource)$/) { + return [$$courseopt{$norecursechk},'map']; + } else { + last; + } + } my $recursechk=$usercourseprefix.'.['.$csec.'].'.$item.'___(rec).'.$what; if (defined($$courseopt{$recursechk})) { return [$$courseopt{$recursechk},'map']; } } @@ -2757,7 +2798,13 @@ sub parmval_real { } foreach my $item (@recurseup) { my $norecursechk=$usercourseprefix.'.'.$item.'___(all).'.$what; - last if (defined($$courseopt{$norecursechk})); + if (defined($$courseopt{$norecursechk})) { + if ($what =~ /\.(encrypturl|hiddenresource)$/) { + return [$$courseopt{$norecursechk},'map']; + } else { + last; + } + } my $recursechk=$usercourseprefix.'.'.$item.'___(rec).'.$what; if (defined($$courseopt{$recursechk})) { return [$$courseopt{$recursechk},'map']; @@ -2896,7 +2943,13 @@ sub get_mapparam { } foreach my $item (@recurseup) { my $norecursechk=$usercourseprefix.'.'.$item.'___(all).'.$what; - last if (defined($$useropt{$norecursechk})); + if (defined($$useropt{$norecursechk})) { + if ($what =~ /\.(encrypturl|hiddenresource)$/) { + return $$useropt{$norecursechk}; + } else { + last; + } + } my $recursechk=$usercourseprefix.'.'.$item.'___(rec).'.$what; if (defined($$useropt{$recursechk})) { return $$useropt{$recursechk}; @@ -2921,7 +2974,13 @@ sub get_mapparam { } foreach my $item (@recurseup) { my $norecursechk=$usercourseprefix.'.['.$cgroup.'].'.$item.'___(all).'.$what; - last if (defined($$courseopt{$norecursechk})); + if (defined($$courseopt{$norecursechk})) { + if ($what =~ /\.(encrypturl|hiddenresource)$/) { + return $$courseopt{$norecursechk}; + } else { + last; + } + } my $recursechk=$usercourseprefix.'.['.$cgroup.'].'.$item.'___(rec).'.$what; if (defined($$courseopt{$recursechk})) { return $$courseopt{$recursechk}; @@ -2945,7 +3004,13 @@ sub get_mapparam { } foreach my $item (@recurseup) { my $norecursechk=$usercourseprefix.'.['.$csec.'].'.$item.'___(all).'.$what; - last if (defined($$courseopt{$norecursechk})); + if (defined($$courseopt{$norecursechk})) { + if ($what =~ /\.(encrypturl|hiddenresource)$/) { + return $$courseopt{$norecursechk}; + } else { + last; + } + } my $recursechk=$usercourseprefix.'.['.$csec.'].'.$item.'___(rec).'.$what; if (defined($$courseopt{$recursechk})) { return $$courseopt{$recursechk}; @@ -2976,7 +3041,13 @@ sub get_mapparam { if (@recurseup) { foreach my $item (@recurseup) { my $norecursechk=$usercourseprefix.'.'.$item.'___(all).'.$what; - last if (defined($$courseopt{$norecursechk})); + if (defined($$courseopt{$norecursechk})) { + if ($what =~ /\.(encrypturl|hiddenresource)$/) { + return $$courseopt{$norecursechk}; + } else { + last; + } + } my $recursechk=$usercourseprefix.'.'.$item.'___(rec).'.$what; if (defined($$courseopt{$recursechk})) { return $$courseopt{$recursechk};