version 1.269.2.39.2.3, 2022/02/24 16:28:46
|
version 1.269.2.42, 2024/12/29 02:02:29
|
Line 181 sub finish_loading_course {
|
Line 181 sub finish_loading_course {
|
&HTML::Entities::encode($url,'"<>&').'">'.&mt('Continue').'</a></div>'; |
&HTML::Entities::encode($url,'"<>&').'">'.&mt('Continue').'</a></div>'; |
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); |
my $remote_js; |
|
if ($env{'environment.remote'} eq 'on') { |
|
my ($menucoll,$deeplinkmenu,$menuref) = &Apache::loncommon::menucoll_in_effect(); |
|
if ($menucoll) { |
|
&Apache::lonnet::put('environment',{'remote' => 'off'}); |
|
&Apache::lonnet::appenv({'environment.remote' => 'off'}); |
|
my $menu_name = &Apache::lonmenu::get_menu_name(); |
|
$remote_js = <<ENDCLOSE; |
|
window.status='Accessing Remote Control'; |
|
menu=window.open("/adm/rat/empty.html","$menu_name", |
|
"height=350,width=150,scrollbars=no,menubar=no"); |
|
window.status='Disabling Remote Control'; |
|
menu.active=0; |
|
menu.autologout=0; |
|
window.status='Closing Remote Control'; |
|
menu.close(); |
|
window.status='Done.'; |
|
ENDCLOSE |
|
} |
|
} |
|
$r->print(<<END); |
$r->print(<<END); |
$msg |
$msg |
<script type="text/javascript"> |
<script type="text/javascript"> |
Line 209 $msg
|
Line 189 $msg
|
\$("#LC_course_loaded").css("display","block"); |
\$("#LC_course_loaded").css("display","block"); |
\$('.isDisabled > a').removeAttr("aria-disabled"); |
\$('.isDisabled > a').removeAttr("aria-disabled"); |
\$('.isDisabled').removeClass("isDisabled"); |
\$('.isDisabled').removeClass("isDisabled"); |
$remote_js |
|
var url = "$js_url"; |
var url = "$js_url"; |
\$(location).attr('href',url); |
\$(location).attr('href',url); |
}); |
}); |
Line 278 sub handler {
|
Line 257 sub handler {
|
my $r = shift; |
my $r = shift; |
|
|
# Check for critical messages and redirect if present. |
# Check for critical messages and redirect if present. |
my ($redirect,$url) = &Apache::loncommon::critical_redirect(300,'roles'); |
my ($redirect,$url) = &Apache::loncommon::critical_redirect(300); |
if ($redirect) { |
if ($redirect) { |
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
$r->header_out(Location => $url); |
$r->header_out(Location => $url); |
Line 296 sub handler {
|
Line 275 sub handler {
|
$update = $then; |
$update = $then; |
} |
} |
|
|
my ($norolelist,$blocked_by_ip,$blocked_type,$clientip); |
my ($blocked_by_ip,$blocked_type,$clientip); |
$clientip = &Apache::lonnet::get_requestor_ip($r); |
$clientip = &Apache::lonnet::get_requestor_ip($r); |
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; |
|
} |
|
} |
|
} |
|
} |
|
|
|
if ($env{'form.selectrole'}) { |
if ($env{'form.selectrole'}) { |
my ($role,$cdom,$cnum,$rest); |
my ($role,$cdom,$cnum,$rest); |
Line 695 sub handler {
|
Line 639 sub handler {
|
$env{'user.name'}, |
$env{'user.name'}, |
&mt('Assigned from [_1] at [_2] for [_3]' |
&mt('Assigned from [_1] at [_2] for [_3]' |
,$ip |
,$ip |
,&Apache::lonlocal::locallocaltime() |
,&Apache::lonlocal::locallocaltime($now) |
,$trolecode) |
,$trolecode) |
); |
); |
unless ($assignresult eq 'ok') { |
unless ($assignresult eq 'ok') { |
Line 790 ENDCLOSE
|
Line 734 ENDCLOSE
|
my %prog_state = &Apache::lonhtmlcommon::Create_PrgWin($r,undef,$preamble); |
my %prog_state = &Apache::lonhtmlcommon::Create_PrgWin($r,undef,$preamble); |
&Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Loading ...')); |
&Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Loading ...')); |
$r->rflush(); |
$r->rflush(); |
my ($msg,$blockcrit,$critmsg_check); |
my ($msg,$critmsg_check); |
$critmsg_check = 1; |
$critmsg_check = 1; |
$blockcrit = &Apache::loncommon::blocking_status('alert',$clientip,$cnum,$cdom,undef,1); |
|
if ($blockcrit) { |
|
my $checkrole = "cm./$cdom/$cnum"; |
|
if ($csec ne '') { |
|
$checkrole .= "/$csec"; |
|
} |
|
unless ((&Apache::lonnet::allowed('evb',undef,undef,$checkrole)) && |
|
($trolecode !~ m{^st\./$cdom/$cnum})) { |
|
$critmsg_check = 0; |
|
} |
|
} |
|
my ($furl,$ferr)= |
my ($furl,$ferr)= |
&Apache::lonuserstate::readmap($cdom.'/'.$cnum,$critmsg_check); |
&Apache::lonuserstate::readmap($cdom.'/'.$cnum,$critmsg_check); |
&Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Finished!')); |
&Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Finished!')); |
Line 1001 ENDCLOSE
|
Line 934 ENDCLOSE
|
$msg = '<p>'.&mt('Entering [_1] ...', |
$msg = '<p>'.&mt('Entering [_1] ...', |
$env{'course.'.$cdom.'_'.$cnum.'.description'}). |
$env{'course.'.$cdom.'_'.$cnum.'.description'}). |
'</p>'; |
'</p>'; |
if ($env{'form.ttoken'}) { |
|
$dest .= (($dest =~/\?/)? '&':'?').'ttoken='.$env{'form.ttoken'}; |
|
} |
|
&finish_loading_course($r,$msg,$dest); |
&finish_loading_course($r,$msg,$dest); |
$r->rflush(); |
$r->rflush(); |
return OK; |
return OK; |
Line 1059 ENDCLOSE
|
Line 989 ENDCLOSE
|
} else { |
} else { |
$access = &Apache::lonnet::allowed('bre',$unencfurl); |
$access = &Apache::lonnet::allowed('bre',$unencfurl); |
} |
} |
if ((!$access) || ($access eq 'B') || ($access eq 'D')) { |
if ((!$access) || ($access eq 'B')) { |
$furl = &Apache::lonpageflip::first_accessible_resource(); |
$furl = &Apache::lonpageflip::first_accessible_resource(); |
if ($furl eq '') { |
if ($furl eq '') { |
$furl = '/adm/navmaps?showOnlyHomework=1'; |
$furl = '/adm/navmaps?showOnlyHomework=1'; |
Line 1136 ENDCLOSE
|
Line 1066 ENDCLOSE
|
$recent = &mt('Recent Courses'); |
$recent = &mt('Recent Courses'); |
$standby = &mt('Course selected. Please stand by.'); |
$standby = &mt('Course selected. Please stand by.'); |
} |
} |
if (($norolelist) && ((split(/:/,$env{'user.error.msg'}))[2])) { |
|
$crumbtext = 'Access Denied'; |
|
$pagetitle = 'Unauthorized'; |
|
} |
|
my $brcrum =[{href=>"/adm/roles",text=>$crumbtext}]; |
my $brcrum =[{href=>"/adm/roles",text=>$crumbtext}]; |
|
|
my %roles_in_env; |
my %roles_in_env; |
Line 1151 ENDCLOSE
|
Line 1077 ENDCLOSE
|
if ($domdefs{'catauth'}) { |
if ($domdefs{'catauth'}) { |
$cattype = $domdefs{'catauth'}; |
$cattype = $domdefs{'catauth'}; |
} |
} |
my ($funcs,$crumbsright); |
my ($funcs,$crumbsright,$crumbs_style); |
unless (($norolelist) && ((split(/:/,$env{'user.error.msg'}))[2])) { |
$funcs = &get_roles_functions($showcount,$cattype); |
$funcs = &get_roles_functions($showcount,$cattype); |
if ($env{'browser.mobile'}) { |
if ($env{'browser.mobile'}) { |
$crumbsright = $funcs; |
$crumbsright = $funcs; |
undef($funcs); |
undef($funcs); |
$crumbs_style = 'overflow: visible;'; |
} |
|
} |
} |
my $start_page=&Apache::loncommon::start_page($pagetitle,undef,{bread_crumbs=>$brcrum, |
my $start_page=&Apache::loncommon::start_page($pagetitle,undef,{bread_crumbs=>$brcrum, |
bread_crumbs_component=>$crumbsright}); |
bread_crumbs_component=>$crumbsright, |
|
bread_crumbs_style=>$crumbs_style,}); |
&js_escape(\$standby); |
&js_escape(\$standby); |
my $noscript='<br /><span class="LC_error">'.&mt('Use of LON-CAPA requires Javascript to be enabled in your web browser.').'<br />'.&mt('As this is not the case, most functionality in the system will be unavailable.').'</span><br />'; |
my $noscript='<br /><span class="LC_error">'.&mt('Use of LON-CAPA requires Javascript to be enabled in your web browser.').'<br />'.&mt('As this is not the case, most functionality in the system will be unavailable.').'</span><br />'; |
|
|
Line 1264 ENDHEADER
|
Line 1190 ENDHEADER
|
} |
} |
if ($nochoose) { |
if ($nochoose) { |
$r->print("<h2>".&mt('Sorry ...')."</h2>\n<span class='LC_error'>". |
$r->print("<h2>".&mt('Sorry ...')."</h2>\n<span class='LC_error'>". |
&mt('This action is currently not authorized.').'</span>'); |
&mt('This action is currently not authorized.').'</span>'. |
if ($error && $norolelist) { |
&Apache::loncommon::end_page()); |
$r->print('<br /><br /><h4><span class="LC_error">'. |
|
&mt('As your session was launched from a web page external to LON-CAPA some course content may be unavailable, including the resource you were trying to access.'). |
|
'</span></h4>'. |
|
'<h4><span class="LC_error">'. |
|
&mt('You may need to login to LON-CAPA directly, or re-launch from a different external system.'). |
|
'</span></h4>'); |
|
} |
|
$r->print(&Apache::loncommon::end_page()); |
|
return OK; |
return OK; |
} else { |
} else { |
if ($updateresult || $reqauthor || $hotlist) { |
if ($updateresult || $reqauthor || $hotlist) { |
Line 1343 ENDHEADER
|
Line 1261 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 1661 sub gather_roles {
|
Line 1559 sub gather_roles {
|
foreach my $rolename (sort(keys(%{$domdef{'adhocroles'}}))) { |
foreach my $rolename (sort(keys(%{$domdef{'adhocroles'}}))) { |
if (ref($domdef{'adhocroles'}{$rolename}) eq 'HASH') { |
if (ref($domdef{'adhocroles'}{$rolename}) eq 'HASH') { |
$adhocdesc{$tdom}{$rolename} = $domdef{'adhocroles'}{$rolename}{'desc'}; |
$adhocdesc{$tdom}{$rolename} = $domdef{'adhocroles'}{$rolename}{'desc'}; |
$desc = $adhocdesc{$tdom}{$rolename}; |
|
} |
} |
} |
} |
|
$desc = $adhocdesc{$tdom}{$rolename}; |
} |
} |
} |
} |
if ($desc ne '') { |
if ($desc ne '') { |
Line 2102 sub build_roletext {
|
Line 2000 sub build_roletext {
|
$trolecode."','".$buttonname.'\');" /></td>'; |
$trolecode."','".$buttonname.'\');" /></td>'; |
} |
} |
} |
} |
if (($trolecode !~ m/^(dc|ca|au|aa)\./) && (!$skipcal)) { |
if (($trolecode !~ m/^(ca|aa)\./) && ($trest ne '') && (!$skipcal)) { |
$tremark.=&Apache::lonannounce::showday(time,1, |
$tremark.=&Apache::lonannounce::showday(time,1, |
&Apache::lonannounce::readcalendar($tdom.'_'.$trest)); |
&Apache::lonannounce::readcalendar($tdom.'_'.$trest)); |
} |
} |
Line 2367 sub display_cc_role {
|
Line 2265 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 { |