version 1.80.8.10.2.1, 2020/05/25 16:42:59
|
version 1.80.8.13, 2021/12/14 21:34:45
|
Line 231 sub first_accessible_resource {
|
Line 231 sub first_accessible_resource {
|
if (tie(%hash,'GDBM_File',$env{'request.course.fn'}.'.db', |
if (tie(%hash,'GDBM_File',$env{'request.course.fn'}.'.db', |
&GDBM_READER(),0640)) { |
&GDBM_READER(),0640)) { |
$furl=$hash{'first_url'}; |
$furl=$hash{'first_url'}; |
my %args; |
my (%args,$url,$argstr); |
my ($url,$args) = split(/\?/,$furl); |
if ($furl =~ m{^/enc/}) { |
foreach my $pair (split(/\&/,$args)) { |
($url,$argstr) = split(/\?/,&Apache::lonenc::unencrypted($furl)); |
|
} else { |
|
($url,$argstr) = split(/\?/,$furl); |
|
} |
|
foreach my $pair (split(/\&/,$argstr)) { |
my ($name,$value) = split(/=/,$pair); |
my ($name,$value) = split(/=/,$pair); |
$args{&unescape($name)} = &unescape($value); |
$args{&unescape($name)} = &unescape($value); |
} |
} |
Line 241 sub first_accessible_resource {
|
Line 245 sub first_accessible_resource {
|
# Wow, we cannot see this ... move forward to the next one that we can see |
# Wow, we cannot see this ... move forward to the next one that we can see |
my ($newrid,$newmap)=&move($hash{'first_rid'},$hash{'first_mapurl'},'forward'); |
my ($newrid,$newmap)=&move($hash{'first_rid'},$hash{'first_mapurl'},'forward'); |
# Build the new URL |
# Build the new URL |
my ($newmapid,$newresid)=split(/\./,$newrid); |
if ($newrid eq '') { |
my $symb=&Apache::lonnet::encode_symb($newmap,$newresid,$hash{'src_'.$newrid}); |
$furl = '/adm/navmaps'; |
$furl=&add_get_param($hash{'src_'.$newrid},{ 'symb' => $symb }); |
} else { |
if ($hash{'encrypted_'.$newrid}) { |
my ($newmapid,$newresid)=split(/\./,$newrid); |
$furl=&Apache::lonenc::encrypted($furl); |
my $symb=&Apache::lonnet::encode_symb($newmap,$newresid,$hash{'src_'.$newrid}); |
|
$furl=&add_get_param($hash{'src_'.$newrid},{ 'symb' => $symb }); |
|
if ($hash{'encrypted_'.$newrid}) { |
|
$furl=&Apache::lonenc::encrypted($furl); |
|
} |
} |
} |
} |
} |
untie(%hash); |
untie(%hash); |
return $furl; |
return $furl; |
} else { |
} else { |
Line 255 sub first_accessible_resource {
|
Line 263 sub first_accessible_resource {
|
} |
} |
} |
} |
|
|
|
sub check_http_req { |
|
my ($srcref,$hostname) = @_; |
|
return unless (ref($srcref) eq 'SCALAR'); |
|
my $usehttp; |
|
if ($env{'request.course.id'}) { |
|
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
if (($$srcref =~ m{^\Q/public/$cdom/$cnum/syllabus\E($|\?)}) && |
|
($ENV{'SERVER_PORT'} == 443) && |
|
($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ m{^http://})) { |
|
unless ((&Apache::lonnet::uses_sts()) || |
|
(&Apache::lonnet::waf_allssl($hostname))) { |
|
$$srcref .= (($$srcref =~/\?/)? '&':'?') . 'usehttp=1'; |
|
$usehttp = 1; |
|
} |
|
} elsif (($$srcref =~ m{^\Q/adm/wrapper/ext/\E(?!https:)}) && |
|
($ENV{'SERVER_PORT'} == 443)) { |
|
unless ((&Apache::lonnet::uses_sts()) || |
|
(&Apache::lonnet::waf_allssl($hostname))) { |
|
my ($url,$anchor) = ($$srcref =~ /^([^\#]+)(?:|(\#[^\#]+))$/); |
|
$$srcref = $url . (($$srcref =~/\?/)? '&':'?') . 'usehttp=1' .$anchor; |
|
$usehttp = 1; |
|
} |
|
} |
|
} |
|
return $usehttp; |
|
} |
|
|
sub reinited_js { |
sub reinited_js { |
my ($url,$cid,$timeout) = @_; |
my ($url,$cid,$timeout) = @_; |
if (!$timeout) { |
if (!$timeout) { |
Line 296 sub handler {
|
Line 332 sub handler {
|
my %prog_state=(); |
my %prog_state=(); |
my ($redirecturl,$redirectsymb,$enc,$anchor); |
my ($redirecturl,$redirectsymb,$enc,$anchor); |
my $next=''; |
my $next=''; |
|
my $hostname = $r->hostname(); |
my @possibilities=(); |
my @possibilities=(); |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['postdata']); |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['postdata']); |
if (($env{'form.postdata'})&&($env{'request.course.fn'})) { |
if (($env{'form.postdata'})&&($env{'request.course.fn'})) { |
Line 340 sub handler {
|
Line 377 sub handler {
|
my $preamble = '<div id="LC_update_'.$env{'request.course.id'}.'" class="LC_info">'. |
my $preamble = '<div id="LC_update_'.$env{'request.course.id'}.'" class="LC_info">'. |
'<br />'. |
'<br />'. |
&mt('Your course session is being updated because of recent changes by course personnel.'). |
&mt('Your course session is being updated because of recent changes by course personnel.'). |
' '.&mt('Please be patient.').'<br /></div>'. |
' '.&mt('Please be patient').'.<br /></div>'. |
'<div style="padding:0;clear:both;margin:0;border:0"></div>'; |
'<div style="padding:0;clear:both;margin:0;border:0"></div>'; |
%prog_state = &Apache::lonhtmlcommon::Create_PrgWin($r,undef,$preamble); |
%prog_state = &Apache::lonhtmlcommon::Create_PrgWin($r,undef,$preamble); |
&Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Updating course')); |
&Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Updating course')); |
my ($furl,$ferr) = &Apache::lonuserstate::readmap("$cdom/$cnum"); |
my ($furl,$ferr) = &Apache::lonuserstate::readmap("$cdom/$cnum"); |
&Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Finished')); |
&Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Finished!')); |
if ($ferr) { |
if ($ferr) { |
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); |
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); |
my $requrl = $r->uri; |
my $requrl = $r->uri; |
Line 364 sub handler {
|
Line 401 sub handler {
|
} |
} |
if ($direction eq 'firstres') { |
if ($direction eq 'firstres') { |
my $furl=&first_accessible_resource(); |
my $furl=&first_accessible_resource(); |
$furl=&Apache::lonnet::absolute_url().$furl; |
my $usehttp = &check_http_req(\$furl,$hostname); |
|
if (($usehttp) && ($hostname ne '')) { |
|
$furl='http://'.$hostname.$furl; |
|
} else { |
|
$furl=&Apache::lonnet::absolute_url().$furl; |
|
} |
if ($reinitcheck eq 'update') { |
if ($reinitcheck eq 'update') { |
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); |
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); |
$r->print(&reinited_js($furl,$env{'request.course.id'},100)); |
$r->print(&reinited_js($furl,$env{'request.course.id'},100)); |
Line 376 sub handler {
|
Line 418 sub handler {
|
return REDIRECT; |
return REDIRECT; |
} |
} |
} |
} |
if ($direction eq 'return') { |
if ($direction eq 'return') { |
# -------------------------------------------------------- Return to last known |
# -------------------------------------------------------- Return to last known |
my $newloc; |
my ($newloc,$usehttp); |
if (($last) && (tie(%hash,'GDBM_File',$env{'request.course.fn'}.'.db', |
if (($last) && (tie(%hash,'GDBM_File',$env{'request.course.fn'}.'.db', |
&GDBM_READER(),0640))) { |
&GDBM_READER(),0640))) { |
my ($murl,$id,$fn)=&Apache::lonnet::decode_symb($last); |
my ($murl,$id,$fn)=&Apache::lonnet::decode_symb($last); |
$id=$hash{'map_pc_'.&Apache::lonnet::clutter($murl)}.'.'.$id; |
$id=$hash{'map_pc_'.&Apache::lonnet::clutter($murl)}.'.'.$id; |
$newloc=$hash{'src_'.$id}; |
$newloc=$hash{'src_'.$id}; |
if ($newloc) { |
if ($newloc) { |
if ($hash{'encrypted_'.$id}) { $newloc=&Apache::lonenc::encrypted($newloc); } |
$usehttp = &check_http_req(\$newloc,$hostname); |
|
if ($hash{'encrypted_'.$id}) { |
|
$newloc=&Apache::lonenc::encrypted($newloc); |
|
} |
|
if ($newloc =~ m{^(/adm/wrapper/ext/[^\#]+)(?:|(\#[^\#]+))$}) { |
|
my ($url,$anchor) = ($1,$2); |
|
if ($anchor) { |
|
$newloc = $url.(($url=~/\?/)?'&':'?').'symb='.&escape($last).$anchor; |
|
} |
|
} |
} else { |
} else { |
$newloc='/adm/navmaps'; |
$newloc='/adm/navmaps'; |
} |
} |
Line 393 sub handler {
|
Line 444 sub handler {
|
} else { |
} else { |
$newloc='/adm/navmaps'; |
$newloc='/adm/navmaps'; |
} |
} |
$newloc=&Apache::lonnet::absolute_url().$newloc; |
if (($usehttp) && ($hostname ne '')) { |
|
$newloc='http://'.$hostname.$newloc; |
|
} else { |
|
$newloc=&Apache::lonnet::absolute_url().$newloc |
|
} |
if ($reinitcheck eq 'update') { |
if ($reinitcheck eq 'update') { |
$r->print(&reinited_js($newloc,$env{'request.course.id'},100)); |
$r->print(&reinited_js($newloc,$env{'request.course.id'},100)); |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
Line 509 sub handler {
|
Line 564 sub handler {
|
&Apache::lonnet::linklog($redirecturl,$currenturl); |
&Apache::lonnet::linklog($redirecturl,$currenturl); |
} |
} |
# ------------------------------------- Check for and display critical messages |
# ------------------------------------- Check for and display critical messages |
my ($redirect, $url) = &Apache::loncommon::critical_redirect(300,'flip'); |
my ($redirect, $url) = &Apache::loncommon::critical_redirect(300); |
unless ($redirect) { |
unless ($redirect) { |
$url=&Apache::lonnet::absolute_url().$redirecturl; |
my $usehttp = &check_http_req(\$redirecturl,$hostname); |
|
if (($usehttp) && ($hostname ne '')) { |
|
$url='http://'.$hostname.$redirecturl; |
|
} else { |
|
$url=&Apache::lonnet::absolute_url().$redirecturl; |
|
} |
my $addanchor; |
my $addanchor; |
if (($anchor ne '') && (!$enc || $env{'request.role.adv'})) { |
if (($anchor ne '') && (!$enc || $env{'request.role.adv'})) { |
$addanchor = 1; |
$addanchor = 1; |
Line 566 $lt{'pick'}:
|
Line 626 $lt{'pick'}:
|
<tr><th>$lt{'titleheader'}</th><th>$lt{'type'}</th></tr> |
<tr><th>$lt{'titleheader'}</th><th>$lt{'type'}</th></tr> |
ENDSTART |
ENDSTART |
foreach my $id (@possibilities) { |
foreach my $id (@possibilities) { |
|
my $src = $multichoicehash{'src_'.$id}; |
|
my $usehttp = &check_http_req(\$src,$hostname); |
|
if (($usehttp) && ($hostname ne '')) { |
|
$src = 'http://'.$hostname.$src; |
|
} |
$r->print( |
$r->print( |
'<tr><td><a href="'. |
'<tr><td><a href="'. |
&add_get_param($multichoicehash{'src_'.$id}, |
&add_get_param($src, |
{'symb' => |
{'symb' => |
$multichoicehash{'symb_'.$id}, |
$multichoicehash{'symb_'.$id}, |
}).'">'. |
}).'">'. |