--- loncom/lonnet/perl/lonnet.pm 2000/11/16 12:00:01 1.65 +++ loncom/lonnet/perl/lonnet.pm 2000/11/24 19:59:31 1.69 @@ -67,7 +67,7 @@ # 10/04 Gerd Kortemeyer # 10/04 Guy Albertelli # 10/06,10/09,10/10,10/11,10/14,10/20,10/23,10/25,10/26,10/27,10/28,10/29, -# 10/30,10/31,11/2,11/14,11/15,11/16 Gerd Kortemeyer +# 10/30,10/31,11/2,11/14,11/15,11/16,11/20,11/21,11/22,11/25 Gerd Kortemeyer package Apache::lonnet; @@ -776,8 +776,9 @@ sub allowed { } # Course: uri itself is a course - - if ($ENV{'user.priv.'.$ENV{'request.role'}.'./'.$uri} + my $courseuri=$uri; + $courseuri=~s/\_(\d)/\/$1/; + if ($ENV{'user.priv.'.$ENV{'request.role'}.'./'.$courseuri} =~/$priv\&([^\:]*)/) { $thisallowed.=$1; } @@ -1193,6 +1194,7 @@ sub condval { sub EXT { my $varname=shift; + unless ($varname) { return ''; } my ($realm,$space,$qualifier,@therest)=split(/\./,$varname); my $rest; if ($therest[0]) { @@ -1257,21 +1259,41 @@ sub EXT { } elsif ($realm eq 'resource') { if ($ENV{'request.course.id'}) { # ----------------------------------------------------- Cascading lookup scheme - my $symbparm=&symbread().'.'.$spacequalifierrest; - my $reslevel= - $ENV{'request.course.id'}.'.'.$symbparm; + my $symbp=&symbread(); + my $mapp=(split(/\_\_\_/,$symbp))[0]; + + my $symbparm=$symbp.'.'.$spacequalifierrest; + my $mapparm=$mapp.'___(all).'.$spacequalifierrest; + my $seclevel= - $ENV{'request.course.id'}.'.'. - $ENV{'request.course.sec'}.'.'.$spacequalifierrest; + $ENV{'request.course.id'}.'.['. + $ENV{'request.course.sec'}.'].'.$spacequalifierrest; + my $seclevelr= + $ENV{'request.course.id'}.'.['. + $ENV{'request.course.sec'}.'].'.$symbparm; + my $seclevelm= + $ENV{'request.course.id'}.'.['. + $ENV{'request.course.sec'}.'].'.$mapparm; + my $courselevel= $ENV{'request.course.id'}.'.'.$spacequalifierrest; + my $courselevelr= + $ENV{'request.course.id'}.'.'.$symbparm; + my $courselevelm= + $ENV{'request.course.id'}.'.'.$mapparm; + # ----------------------------------------------------------- first, check user - my %resourcedata=get('resourcedata',($reslevel,$seclevel,$courselevel)); - if ($resourcedata{$reslevel}!~/^error\:/) { - if ($resourcedata{$reslevel}) { return $resourcedata{$reslevel}; } - if ($resourcedata{$seclevel}) { return $resourcedata{$seclevel}; } + my %resourcedata=get('resourcedata', + ($courselevelr,$courselevelm,$courselevel)); + if ($resourcedata{$courselevelr}!~/^error\:/) { + + if ($resourcedata{$courselevelr}) { + return $resourcedata{$courselevelr}; } + if ($resourcedata{$courselevelm}) { + return $resourcedata{$courselevelm}; } if ($resourcedata{$courselevel}) { return $resourcedata{$courselevel}; } + } # -------------------------------------------------------- second, check course my $section=''; @@ -1282,16 +1304,25 @@ sub EXT { $ENV{'course.'.$ENV{'request.course.id'}.$section.'.domain'}.':'. $ENV{'course.'.$ENV{'request.course.id'}.$section.'.num'}. ':resourcedata:'. - escape($reslevel).':'.escape($seclevel).':'.escape($courselevel), + escape($seclevelr).':'.escape($seclevelm).':'.escape($seclevel).':'. + escape($courselevelr).':'.escape($courselevelm).':'.escape($courselevel), $ENV{'course.'.$ENV{'request.course.id'}.$section.'.home'}); if ($reply!~/^error\:/) { map { my ($name,$value)=split(/\=/,$_); $resourcedata{unescape($name)}=unescape($value); } split(/\&/,$reply); - if ($resourcedata{$reslevel}) { return $resourcedata{$reslevel}; } - if ($resourcedata{$seclevel}) { return $resourcedata{$seclevel}; } + + if ($resourcedata{$seclevelr}) { return $resourcedata{$seclevelr}; } + if ($resourcedata{$seclevelm}) { return $resourcedata{$seclevelm}; } + if ($resourcedata{$seclevel}) { return $resourcedata{$seclevel}; } + + if ($resourcedata{$courselevelr}) { + return $resourcedata{$courselevelr}; } + if ($resourcedata{$courselevelm}) { + return $resourcedata{$courselevelm}; } if ($resourcedata{$courselevel}) { return $resourcedata{$courselevel}; } + } # ------------------------------------------------------ third, check map parms @@ -1307,7 +1338,7 @@ sub EXT { # --------------------------------------------- last, look in resource metadata my $uri=&declutter($ENV{'request.filename'}); - my $filename=$perlvar{'lonDocRoot'}.'/res/'.$ENV.'.meta'; + my $filename=$perlvar{'lonDocRoot'}.'/res/'.$uri.'.meta'; if (-e $filename) { my @content; {