version 1.350, 2021/06/12 23:14:56
|
version 1.354, 2021/11/15 22:36:38
|
Line 158 sub start_loading_course {
|
Line 158 sub start_loading_course {
|
my $brcrum = [{'href' => '', |
my $brcrum = [{'href' => '', |
'text' => $title},]; |
'text' => $title},]; |
my $start_page = &Apache::loncommon::start_page($title,undef, |
my $start_page = &Apache::loncommon::start_page($title,undef, |
{'bread_crumbs' => $brcrum,}); |
{'bread_crumbs' => $brcrum, |
|
'bread_crumbs_nomenu' => 1, |
|
'links_disabled' => 1}); |
$r->print(<<ENDREDIR); |
$r->print(<<ENDREDIR); |
$start_page |
$start_page |
<script type="text/javascript"> |
<script type="text/javascript"> |
// <![CDATA[ |
// <![CDATA[ |
$swinfo |
$swinfo |
|
|
|
document.body.addEventListener('click', function (event) { |
|
// filter out clicks on any other elements |
|
if (event.target.nodeName == 'A' && event.target.getAttribute('aria-disabled') == 'true') { |
|
event.preventDefault(); |
|
} |
|
}); |
// ]]> |
// ]]> |
</script> |
</script> |
ENDREDIR |
ENDREDIR |
Line 172 ENDREDIR
|
Line 181 ENDREDIR
|
|
|
sub finish_loading_course { |
sub finish_loading_course { |
my ($r,$msg,$url) = @_; |
my ($r,$msg,$url) = @_; |
#FIXME add continue link, and add jquery to enable menu links when page is loaded |
my $link = '<div id="LC_course_loaded" style="display:none"><a href="'.$url.'">'.&mt('Continue').'</a></div>'; |
my $link; |
|
my $end_page = &Apache::loncommon::end_page(); |
my $end_page = &Apache::loncommon::end_page(); |
my $js_url = &js_escape($url); |
my $js_url = &js_escape($url); |
$r->print(<<END); |
$r->print(<<END); |
Line 181 $msg
|
Line 189 $msg
|
<script type="text/javascript"> |
<script type="text/javascript"> |
// <![CDATA[ |
// <![CDATA[ |
\$(document).ready(function() { |
\$(document).ready(function() { |
|
\$("#LC_course_loaded").css("display","block"); |
|
\$('.isDisabled > a').removeAttr("aria-disabled"); |
|
\$('.isDisabled').removeClass("isDisabled"); |
var url = "$js_url"; |
var url = "$js_url"; |
\$(location).attr('href',url); |
\$(location).attr('href',url); |
}); |
}); |
Line 266 sub handler {
|
Line 277 sub handler {
|
$update = $then; |
$update = $then; |
} |
} |
|
|
|
my $norolelist; |
|
if (($env{'request.course.id'}) && ($env{'request.deeplink.login'})) { |
|
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
my $crstype = $env{'course.'.$env{'request.course.id'}.'.type'}; |
|
my $deeplink_symb = &Apache::loncommon::deeplink_login_symb($cnum,$cdom); |
|
if ($deeplink_symb) { |
|
my ($menucoll,$deeplinkmenu,$menuref) = &Apache::loncommon::menucoll_in_effect(); |
|
if (ref($menuref) eq 'HASH') { |
|
unless (($menuref->{'role'}) || ($env{'request.role.adv'})) { |
|
foreach my $envkey (keys(%env)) { |
|
next unless ($envkey =~ /^form\./); |
|
if ($envkey =~ m{\./($match_domain)/($match_courseid)(?:/(\w+)|$)}) { |
|
unless (($1 eq $cdom) && ($2 eq $cnum)) { |
|
delete($env{$envkey}); |
|
} |
|
} |
|
} |
|
if ($env{'form.selectrole'}) { |
|
if ($env{'form.switchrole'} =~ m{\./($match_domain)/($match_courseid)(?:/(\w+)|$)}) { |
|
unless (($1 eq $cdom) && ($2 eq $cnum)) { |
|
delete($env{'form.selectrole'}); |
|
delete($env{'form.switchrole'}); |
|
} |
|
} elsif ($env{'form.newrole'} =~ m{\./($match_domain)/($match_courseid)(?:/(\w+)|$)}) { |
|
unless (($1 eq $cdom) && ($2 eq $cnum)) { |
|
delete($env{'form.selectrole'}); |
|
delete($env{'form.newrole'}); |
|
} |
|
} |
|
} |
|
$norolelist = 1; |
|
} |
|
} |
|
} |
|
} |
|
|
$registered_cleanup=0; |
$registered_cleanup=0; |
@{$rosterupdates}=(); |
@{$rosterupdates}=(); |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}); |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}); |
Line 875 ENDCLOSE
|
Line 923 ENDCLOSE
|
$dest .= (($dest =~/\?/)? '&':'?').'symb='.$esc_symb; |
$dest .= (($dest =~/\?/)? '&':'?').'symb='.$esc_symb; |
} |
} |
} |
} |
|
if ($env{'form.ttoken'}) { |
|
$dest .= (($dest =~/\?/)? '&':'?').'ttoken='.$env{'form.ttoken'}; |
|
} |
unless ($env{'request.lti.login'}) { |
unless ($env{'request.lti.login'}) { |
$msg = '<p>'.&mt('Entering [_1] ...', |
$msg = '<p>'.&mt('Entering [_1] ...', |
$env{'course.'.$cdom.'_'.$cnum.'.description'}). |
$env{'course.'.$cdom.'_'.$cnum.'.description'}). |
Line 902 ENDCLOSE
|
Line 953 ENDCLOSE
|
} |
} |
} |
} |
# Are we allowed to look at the first resource? |
# Are we allowed to look at the first resource? |
my $access; |
# |
if ($furl =~ m{^(/adm/wrapper|)/ext/}) { |
# $furl returned by lonuserstate::readmap() has format: |
# If it's an external resource, |
# $url?symb=escaped($symb). If the resource has the |
# strip off the symb argument and possible query |
# encrypturl parameter in effect, the entire string |
my ($exturl,$symb) = ($furl =~ m{^(.+)(?:\?|\&)symb=(.+)$}); |
# $url?symb=escaped($symb) is encrypted as a string |
# Unencode $symb |
# beginning /enc/. |
$symb = &unescape($symb); |
# |
# Then check for permission |
my ($access,$unencfurl,$unencsymb); |
$access = &Apache::lonnet::allowed('bre',$exturl,$symb); |
if ($furl =~ m{^(.+)(?:\?|\&)symb=([^&]+)(?:$|&)}) { |
# For other resources just check for permission |
my ($poss_url,$poss_symb) = ($1,$2); |
|
$unencsymb = &unescape($poss_symb); |
|
$unencfurl = $poss_url; |
|
} elsif ($furl =~ m{^/enc/}) { |
|
my $unenc = &Apache::lonenc::unencrypted($furl); |
|
if ($unenc =~ m{^(.+)(?:\?|\&)symb=([^&]+)(?:$|&)}) { |
|
($unencfurl,$unencsymb) = ($1,$2); |
|
$unencsymb = &unescape($unencsymb); |
|
} else { |
|
$unencfurl = $unenc; |
|
} |
} else { |
} else { |
$access = &Apache::lonnet::allowed('bre',$furl); |
$unencfurl = $furl; |
} |
} |
if ((!$access) || ($access eq 'D')) { |
if ($unencsymb) { |
|
my $symb = &Apache::lonnet::symbclean($unencsymb); |
|
if (($symb ne '') && (&Apache::lonnet::symbverify($symb,$unencfurl))) { |
|
$access = &Apache::lonnet::allowed('bre',$unencfurl,$symb); |
|
} else { |
|
$access = &Apache::lonnet::allowed('bre',$unencfurl); |
|
} |
|
} else { |
|
$access = &Apache::lonnet::allowed('bre',$unencfurl); |
|
} |
|
if ((!$access) || ($access eq 'B') || ($access eq 'D')) { |
$furl = &Apache::lonpageflip::first_accessible_resource(); |
$furl = &Apache::lonpageflip::first_accessible_resource(); |
} elsif ($access eq 'B') { |
if ($furl eq '') { |
$furl = '/adm/navmaps?showOnlyHomework=1'; |
$furl = '/adm/navmaps?showOnlyHomework=1'; |
|
} |
} |
} |
if ($env{'request.lti.login'}) { |
if ($env{'request.lti.login'}) { |
undef($msg); |
undef($msg); |
Line 1219 ENDHEADER
|
Line 1291 ENDHEADER
|
} |
} |
} |
} |
|
|
|
if ($norolelist) { |
|
if ($env{'request.role'}) { |
|
my ($roletext,$role_text_end) = &display_curr_role($env{'request.role'}); |
|
if ($roletext) { |
|
$r->print(&Apache::loncommon::start_data_table('LC_textsize_mobile'). |
|
&Apache::loncommon::start_data_table_row(). |
|
$roletext. |
|
&Apache::loncommon::end_data_table_row()); |
|
if ($role_text_end) { |
|
$r->print(&Apache::loncommon::continue_data_table_row(). |
|
$role_text_end. |
|
&Apache::loncommon::end_data_table_row()); |
|
} |
|
$r->print(&Apache::loncommon::end_data_table()); |
|
} |
|
} |
|
$r->print(&Apache::loncommon::end_page()); |
|
return OK; |
|
} |
|
|
# No active roles |
# No active roles |
if ($countactive==0) { |
if ($countactive==0) { |
my $elapsed = 0; |
my $elapsed = 0; |
Line 2252 sub display_cc_role {
|
Line 2344 sub display_cc_role {
|
} |
} |
} |
} |
return ($roletext,$roletext_end); |
return ($roletext,$roletext_end); |
|
} |
|
|
|
sub display_curr_role { |
|
my ($currentrole) = @_; |
|
my ($roletext,$roletext_end); |
|
my $advanced = $env{'user.adv'}; |
|
my $tryagain = $env{'form.tryagain'}; |
|
my ($role,$rest) = split(m{\./},$currentrole,2); |
|
unless (!defined($role) || $role eq '') { |
|
if ($rest =~ m{^($match_domain)/($match_courseid)(?:/(\w+)|$)}) { |
|
my $cdom = $1; |
|
my $cnum = $2; |
|
my $csec = $3; |
|
my $cid = $cdom.'_'.$cnum; |
|
my $ttype = $env{'course.'.$cid.'.type'}; |
|
my $skipcal = 1; |
|
my $tbg='LC_roles_is'; |
|
my $twhere = $env{'course.'.$cid.'.description'}. |
|
' <span class="LC_fontsize_small">'. |
|
&Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$cnum,$cdom). |
|
'</span>'; |
|
my $trole = &Apache::lonnet::plaintext($role,$ttype,$cid); |
|
if ($csec) { |
|
$twhere.= ' '.&mt('Section').': '.$csec; |
|
} |
|
if ($role ne 'st') { |
|
$twhere.= ' '.&mt('Domain').': '.$cdom; |
|
} |
|
($roletext,$roletext_end) = &build_roletext($currentrole,$cdom,$cnum,'is',$tryagain,$advanced,'',$tbg,$trole,$twhere,'','','',1,'','','',$skipcal); |
|
} |
|
} |
|
return ($roletext,$roletext_end); |
} |
} |
|
|
sub adhoc_roles_row { |
sub adhoc_roles_row { |