--- loncom/lonnet/perl/lonnet.pm 2023/11/03 01:12:17 1.1517 +++ loncom/lonnet/perl/lonnet.pm 2023/12/23 02:17:39 1.1520 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.1517 2023/11/03 01:12:17 raeburn Exp $ +# $Id: lonnet.pm,v 1.1520 2023/12/23 02:17:39 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -2757,8 +2757,7 @@ sub get_domain_defaults { 'selfenrollment','coursecategories', 'ssl','autoenroll','trust', 'helpsettings','wafproxy', - 'ltisec','toolsec','domexttool', - 'exttool','privacy'],$domain); + 'ltisec','toolsec','privacy'],$domain); my @coursetypes = ('official','unofficial','community','textbook','placement'); if (ref($domconfig{'defaults'}) eq 'HASH') { $domdefaults{'lang_def'} = $domconfig{'defaults'}{'lang_def'}; @@ -2854,6 +2853,11 @@ sub get_domain_defaults { } else { $domdefaults{$type.'exttool'} = 0; } + if (ref($domconfig{'coursedefaults'}{'crsauthor'}) eq 'HASH') { + $domdefaults{$type.'crsauthor'} = $domconfig{'coursedefaults'}{'crsauthor'}{$type}; + } else { + $domdefaults{$type.'crsauthor'} = 1; + } } if (ref($domconfig{'coursedefaults'}{'canclone'}) eq 'HASH') { if (ref($domconfig{'coursedefaults'}{'canclone'}{'instcode'}) eq 'ARRAY') { @@ -7053,7 +7057,11 @@ sub rolesinit { $gotcoauconfig{$area} = 1; foreach my $item (@ca_settings) { if (exists($info{$item})) { - $coauthorenv{"environment.internal.$item.$area"} = $info{$item}; + my $name = $item; + if ($item eq 'authoreditors') { + $name = 'editors'; + } + $coauthorenv{"environment.internal.$name.$area"} = $info{$item}; } } } @@ -8240,7 +8248,6 @@ sub usertools_access { } elsif ($context eq 'authordefaults') { %tools = ( webdav => 1, - editors => 1, ); } else { %tools = ( @@ -8267,8 +8274,6 @@ sub usertools_access { } elsif ($context eq 'authordefaults') { if ($tool eq 'webdav') { return $env{'environment.availabletools.'.$tool}; - } elsif ($tool eq 'editors') { - return $env{'environment.authoreditors'}; } } else { return $env{'environment.availabletools.'.$tool}; @@ -8282,8 +8287,6 @@ sub usertools_access { } elsif ($context eq 'authordefaults') { if ($tool eq 'webdav') { $envkey = 'tools.'.$tool; - } elsif ($tool eq 'editors') { - $envkey = 'author'.$tool; } } else { $envkey = $context.'.'.$tool; @@ -9217,6 +9220,22 @@ sub constructaccess { if (($ownername eq $env{'course.'.$env{'request.course.id'}.'.num'}) && ($ownerdomain eq $env{'course.'.$env{'request.course.id'}.'.domain'})) { if (&allowed('mdc',$env{'request.course.id'})) { + return if ($env{'course.'.$env{'request.course.id'}.'.internal.crsauthor'} eq '0'); + unless ($env{'course.'.$env{'request.course.id'}.'.internal.crsauthor'}) { + my %domdefs = &get_domain_defaults($ownerdomain); + my $type = lc($env{'course.'.$env{'request.course.id'}.'.type'}); + unless (($type eq 'community') || ($type eq 'placement')) { + $type = 'unofficial'; + if ($env{'course.'.$env{'request.course.id'}.'internal.coursecode'} ne '') { + $type = 'official'; + } elsif ($env{'course.'.$env{'request.course.id'}.'internal.textbook'} ne '') { + $type = 'textbook'; + } else { + $type = 'unofficial'; + } + } + return if ($domdefs{$type.'crsauthor'} eq '0'); + } $ownerhome = $env{'course.'.$env{'request.course.id'}.'.home'}; return ($ownername,$ownerdomain,$ownerhome); }