--- loncom/publisher/lonrights.pm 2007/06/22 00:11:22 1.23 +++ loncom/publisher/lonrights.pm 2007/07/13 18:35:28 1.24 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to show and edit custom distribution rights # -# $Id: lonrights.pm,v 1.23 2007/06/22 00:11:22 albertel Exp $ +# $Id: lonrights.pm,v 1.24 2007/07/13 18:35:28 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -110,13 +110,14 @@ sub handler { $rulehash{'domain'}=$env{'user.domain'}; } my $realm=''; + my $separator = ($rulehash{'type'} eq 'course') ? '_' : '/'; if ($number) { $realm=$rulehash{'domain'}; if ($rulehash{'course'}) { - $realm.='_'.$rulehash{'course'}; + $realm.=$separator.$rulehash{'course'}; } if ($rulehash{'section'}) { - $realm.='_'.$rulehash{'section'}; + $realm.=$separator.$rulehash{'section'}; } } $newrules[$number]=$rulehash{'effect'}.':'. @@ -126,28 +127,18 @@ sub handler { foreach my $key (keys(%env)) { next if ($key!~/^form\.action\_(\d+)$/); my $number=$1; - if ($env{$key} eq 'delete') { $newrules[$number]=''; } + if ($env{$key} eq 'delete') { splice(@newrules,$number,1); } if (($env{$key} eq 'moveup') && ($number>1)) { - my $buffer=$newrules[$number]; - $newrules[$number]=$newrules[$number-1]; - $newrules[$number-1]=$buffer; + @newrules[$number-1,$number] = @newrules[$number,$number-1]; } if (($env{$key} eq 'movedown') && ($number<$#newrules)) { - my $buffer=$newrules[$number]; - $newrules[$number]=$newrules[$number+1]; - $newrules[$number+1]=$buffer; + @newrules[$number+1,$number] = @newrules[$number,$number+1]; } if ($env{$key} eq 'insertabove') { - for (my $i=$#newrules;$i>=$number;$i--) { - $newrules[$i+1]=$newrules[$i]; - } - $newrules[$number]='deny'; + splice(@newrules,$number,0,'deny'); } if ($env{$key} eq 'insertbelow') { - for (my $i=$#newrules;$i>$number;$i--) { - $newrules[$i+1]=$newrules[$i]; - } - $newrules[$number+1]='deny'; + splice(@newrules,$number+1,0,'deny'); } } @@ -185,7 +176,7 @@ sub handler { my $colzero=&mt($constructmode?'Edit action':'Rule'); my %lt=&Apache::lonlocal::texthash('ef' => 'Effect', 'do' => 'Domain', - 'co' => 'Course', + 'co' => 'Course / User', 'se' => 'Section', 'ro' => 'Role'); # ---------------------------------------------------------- Start table output @@ -268,15 +259,14 @@ sub handler { # ---- realm my $realm=$token->[2]->{'realm'}; - my ($rdom,$rcourse,$rsec)=split(/[\/\_]/,$realm); - $rdom = &LONCAPA::clean_domain($rdom); + my ($rdom,$rcourse,$rsec); if ($type eq 'course') { + ($rdom,$rcourse,$rsec) = split(m{[/_]},$realm,3); $rcourse = &LONCAPA::clean_courseid($rcourse); } else { + ($rdom,$rcourse,$rsec) = split(m{/},$realm,3); $rcourse = &LONCAPA::clean_username($rcourse); } - - $r->print(''); # realm domain if ($constructmode) {