--- loncom/auth/lonroles.pm 2023/11/17 17:02:21 1.372 +++ loncom/auth/lonroles.pm 2025/02/23 05:16:01 1.376 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # User Roles Screen # -# $Id: lonroles.pm,v 1.372 2023/11/17 17:02:21 raeburn Exp $ +# $Id: lonroles.pm,v 1.376 2025/02/23 05:16:01 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -181,6 +181,7 @@ document.body.addEventListener('click', ENDREDIR } + $r->print('
'."\n"); return; } @@ -210,6 +211,7 @@ $msg // ]]> $link +
$end_page END return; @@ -682,17 +684,24 @@ sub handler { $env{'environment.key.'.$cdom.'_'.$cnum}, $authdom,$authnum)) { # there is no valid key + my $swinfo=&Apache::lonmenu::rawconfig(); + my $crumbtext = 'User Roles'; + my $show_course=&Apache::loncommon::show_course(); + if ($show_course) { + $crumbtext = 'Courses'; + } if ($env{'form.newkey'}) { # student attempts to register a new key &Apache::loncommon::content_type($r,'text/html'); &Apache::loncommon::no_cache($r); $r->send_http_header; - my $swinfo=&Apache::lonmenu::rawconfig(); + my $pagetitle = 'Verifying Access Key to Unlock this Course'; + my $brcrum =[{href=>"/adm/roles",text=>$crumbtext}, + {href=>"/adm/roles",text=>'Verify Access Key'}]; my $start_page=&Apache::loncommon::start_page - ('Verifying Access Key to Unlock this Course'); + ($pagetitle, undef,{bread_crumbs=>$brcrum,}); my $end_page=&Apache::loncommon::end_page(); - my $buttontext=&mt('Enter Course'); - my $message=&mt('Successfully registered key'); + my ($buttontext,$message,$inputitem,$accessheader); my $ip = &Apache::lonnet::get_requestor_ip(); my $assignresult= &Apache::lonnet::assign_access_key( @@ -703,41 +712,63 @@ sub handler { $env{'user.name'}, &mt('Assigned from [_1] at [_2] for [_3]' ,$ip - ,&Apache::lonlocal::locallocaltime() + ,&Apache::lonlocal::locallocaltime($now) ,$trolecode) ); - unless ($assignresult eq 'ok') { - $assignresult=~s/^error\:\s*//; - $message=&mt($assignresult). - '
'. - &mt('Logout').''; - $buttontext=&mt('Re-Enter Key'); - } - $r->print(<&"')).'
'. + &mt('Result').': '.&mt($assignresult); + my $labeltext = &mt('Enter access key'); + $inputitem = ''; + } + $r->print(<<"ENDREGKEY"); $start_page -
+ +
+ -$message
+$inputitem +
$end_page -ENDENTEREDKEY +ENDREGKEY return OK; } else { # print form to enter a new key &Apache::loncommon::content_type($r,'text/html'); &Apache::loncommon::no_cache($r); $r->send_http_header; - my $swinfo=&Apache::lonmenu::rawconfig(); + my $pagetitle = 'Enter Access Key to Unlock this Course'; + my $brcrum =[{href=>"/adm/roles",text=>$crumbtext}, + {href=>"/adm/roles",text=>'Enter Access Key'}]; my $start_page=&Apache::loncommon::start_page - ('Enter Access Key to Unlock this Course'); + ($pagetitle,undef,{bread_crumbs=>$brcrum,}); my $end_page=&Apache::loncommon::end_page(); + my $accessheader = &mt('Access to this course requires an access key'); + my $preamble = &mt('Once you have successfully entered a valid key, you will no longer be prompted for one when entering the course.'); + my $labeltext = &mt('Enter access key'); + my $submittext = &mt('Submit'); $r->print(< @@ -745,12 +776,17 @@ $start_page $swinfo // ]]> +
+

$accessheader

+

$preamble

- - + +
+
$end_page ENDENTERKEY return OK; @@ -806,6 +842,9 @@ ENDENTERKEY ENDCLOSE &start_loading_course($r,$title,$only_body); + if ($only_body) { + $r->print('

'.$title.'

'); + } my %prog_state = &Apache::lonhtmlcommon::Create_PrgWin($r,undef,$preamble); &Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Loading ...')); $r->rflush(); @@ -956,6 +995,7 @@ ENDCLOSE $env{'course.'.$cdom.'_'.$cnum.'.description'}). '

'. '

'.&mt('Please try again.').'

'. + ''. &Apache::loncommon::end_page()); } } else { @@ -1237,16 +1277,18 @@ ENDCLOSE $start_page=&Apache::loncommon::start_page($pagetitle,undef, {bread_crumbs=>$brcrum,crstype=>'Placement'}); } else { - my $crumbsright; + my ($crumbsright,$crumbs_style); unless (($norolelist) && ((split(/:/,$env{'user.error.msg'}))[2])) { $funcs = &get_roles_functions($showcount,$cattype,$domdefs{'userapprovals'}); if ($env{'browser.mobile'}) { $crumbsright = $funcs; undef($funcs); + $crumbs_style = 'overflow: visible;'; } } $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); my $noscript='
'.&mt('Use of LON-CAPA requires Javascript to be enabled in your web browser.').'
'.&mt('As this is not the case, most functionality in the system will be unavailable.').'

'; @@ -1354,17 +1396,18 @@ ENDHEADER } } if ($nochoose) { - $r->print("

".&mt('Sorry ...')."

\n". + $r->print("
+

".&mt('Sorry ...')."

\n". &mt('This action is currently not authorized.').''); if ($error && $norolelist) { - $r->print('

'. + $r->print('

'. &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.'). - '

'. - '

'. + '

'. + '

'. &mt('You may need to login to LON-CAPA directly, or re-launch from a different external system.'). - '

'); + '

'); } - $r->print(&Apache::loncommon::end_page()); + $r->print('
'.&Apache::loncommon::end_page()); return OK; } else { if ($updateresult || $reqauthor || $hotlist) { @@ -1959,7 +2002,7 @@ sub roletable_headers { .&Apache::loncommon::start_data_table('LC_textsize_mobile') .&Apache::loncommon::start_data_table_header_row() ); - if (!$nochoose) { $r->print(' '); } + if (!$nochoose) { $r->print(''.&mt('Action').''); } $r->print(''.&mt('User Role').'' .''.&mt('Extent').'' .''.&mt('Start').'' @@ -2245,7 +2288,7 @@ sub build_roletext { $trolecode."','".$buttonname.'\');" />'; } } - if (($trolecode !~ m/^(dc|ca|au|aa)\./) && (!$skipcal)) { + if (($trolecode !~ m/^(ca|aa)\./) && ($trest ne '') && (!$skipcal)) { $tremark.=&Apache::lonannounce::showday(time,1, &Apache::lonannounce::readcalendar($tdom.'_'.$trest)); } @@ -3454,7 +3497,7 @@ sub get_roles_functions { foreach my $link (@links) { $funcs .= &Apache::lonhtmlcommon::add_item_funclist( ''. - ''.$link->[2].''. + ''. $link->[2].''); } $funcs .= &Apache::lonhtmlcommon::end_funclist(); @@ -3632,7 +3675,9 @@ sub ltienroll { &LONCAPA::ltiutils::batchaddroster($item); } } + $rosterupdates = []; } + return OK; } sub set_deeplink_target {