--- loncom/auth/lonroles.pm 2022/07/08 15:45:20 1.269.2.39.2.5
+++ loncom/auth/lonroles.pm 2024/09/18 14:05:14 1.269.2.39.2.11
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# User Roles Screen
#
-# $Id: lonroles.pm,v 1.269.2.39.2.5 2022/07/08 15:45:20 raeburn Exp $
+# $Id: lonroles.pm,v 1.269.2.39.2.11 2024/09/18 14:05:14 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -508,6 +508,7 @@ sub handler {
"request.course.sec" => '',
"request.course.tied" => '',
"request.course.timechecked" => '',
+ "request.course.suppupdated" => '',
"request.role" => 'cm',
"request.role.adv" => $env{'user.adv'},
"request.role.domain" => $env{'user.domain'}});
@@ -706,7 +707,7 @@ 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') {
@@ -863,7 +864,6 @@ ENDCLOSE
my ($feeds,$syllabus_time);
&Apache::lonrss::advertisefeeds($cnum,$cdom,undef,\$feeds);
&Apache::lonnet::appenv({'request.course.feeds' => $feeds});
- &Apache::lonnet::get_numsuppfiles($cnum,$cdom,1);
unless ($env{'course.'.$cdom.'_'.$cnum.'.updatedsyllabus'}) {
unless (($env{'course.'.$cdom.'_'.$cnum.'.externalsyllabus'}) ||
($env{'course.'.$cdom.'_'.$cnum.'.uploadedsyllabus'})) {
@@ -896,6 +896,8 @@ ENDCLOSE
if ($env{'form.symb'}) {
$furl .= '&symb='.&HTML::Entities::encode($env{'form.symb'},'<>&"');
}
+ } else {
+ &set_supplemental_access($cnum,$cdom);
}
if (($ferr) && ($tadv)) {
&error_page($r,$ferr,$furl);
@@ -957,6 +959,7 @@ ENDCLOSE
&Apache::loncommon::end_page());
}
} else {
+ &set_supplemental_access($cnum,$cdom);
if ($env{'request.deeplink.login'}) {
&set_deeplink_target($cnum,$cdom);
}
@@ -1114,6 +1117,12 @@ ENDCLOSE
$redirect_url .= $where;
}
$redirect_url .= '/';
+ if ($env{'form.orgurl'} =~ /^\Q$redirect_url\E/) {
+ my ($path) = ($env{'form.orgurl'} =~ m{^(.+)/[^/]+$});
+ if (($path ne '') && (-e $Apache::lonnet::perlvar{'lonDocRoot'}.$path)) {
+ $redirect_url = $env{'form.orgurl'};
+ }
+ }
&redirect_user($r,&mt('Entering Authoring Space'),
$redirect_url);
return OK;
@@ -1181,16 +1190,18 @@ ENDCLOSE
if ($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);
if ($env{'browser.mobile'}) {
$crumbsright = $funcs;
undef($funcs);
+ $crumbs_style = 'overflow: visible;';
}
}
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);
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.').'
';
@@ -1691,9 +1702,9 @@ sub gather_roles {
foreach my $rolename (sort(keys(%{$domdef{'adhocroles'}}))) {
if (ref($domdef{'adhocroles'}{$rolename}) eq 'HASH') {
$adhocdesc{$tdom}{$rolename} = $domdef{'adhocroles'}{$rolename}{'desc'};
- $desc = $adhocdesc{$tdom}{$rolename};
}
}
+ $desc = $adhocdesc{$tdom}{$rolename};
}
}
if ($desc ne '') {
@@ -2132,7 +2143,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));
}
@@ -2591,6 +2602,22 @@ sub update_session_roles {
}
} else {
$newrole{$rolekey} = $status_in_db;
+ if ($role eq 'au') {
+ my %userenv =
+ &Apache::lonnet::userenvironment($env{'user.domain'},
+ $env{'user.name'},'authoreditors');
+ if ($userenv{'authoreditors'}) {
+ $userenv{'editors'} = $userenv{'authoreditors'};
+ } else {
+ my %domdef = &Apache::lonnet::get_domain_defaults($env{'user.domain'});
+ if ($domdef{'editors'} ne '') {
+ $userenv{'editors'} = $domdef{'editors'};
+ } else {
+ $userenv{'editors'} = 'edit,xml';
+ }
+ }
+ &Apache::lonnet::appenv(\%userenv);
+ }
}
}
}
@@ -3441,6 +3468,14 @@ sub set_deeplink_target {
return;
}
+sub set_supplemental_access {
+ my ($cnum,$cdom) = @_;
+ my ($supplemental,$refs_updated) = &Apache::loncommon::get_supplemental($cnum,$cdom);
+ unless ($refs_updated) {
+ &Apache::loncommon::set_supp_httprefs($cnum,$cdom,$supplemental);
+ }
+}
+
1;
__END__