--- loncom/publisher/lonrights.pm 2007/06/22 00:11:22 1.23 +++ loncom/publisher/lonrights.pm 2009/05/25 14:31:00 1.25 @@ -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.25 2009/05/25 14:31:00 bisitz 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'); } } @@ -183,15 +174,17 @@ sub handler { my $token; my $rulecounter=0; my $colzero=&mt($constructmode?'Edit action':'Rule'); - my %lt=&Apache::lonlocal::texthash('ef' => 'Effect', + my %lt=&Apache::lonlocal::texthash( + 'ef' => 'Effect', + 'ty' => 'Type', 'do' => 'Domain', - 'co' => 'Course', + 'co' => 'Course / User', 'se' => 'Section', 'ro' => 'Role'); # ---------------------------------------------------------- Start table output $r->print(&Apache::loncommon::start_data_table(). &Apache::loncommon::start_data_table_header_row(). - "$colzero$lt{'ef'}Type$lt{'do'}". + "$colzero$lt{'ef'}$lt{'ty'}$lt{'do'}". "$lt{'co'}$lt{'se'}$lt{'ro'}". &Apache::loncommon::end_data_table_header_row()); # --------------------------------------------------------------------- Default @@ -203,7 +196,7 @@ sub handler { if ($constructmode) { $r->print(&Apache::loncommon::select_form('','action_0', ('' => '', - 'insertbelow' => 'Insert rule below '))); + 'insertbelow' => 'Insert rule below'))); } else { $r->print(' '); @@ -237,7 +230,7 @@ sub handler { ('' => '', 'delete' => 'Delete this rule', 'insertabove' => 'Insert rule above', - 'insertbelow' => 'Insert rule below ', + 'insertbelow' => 'Insert rule below', 'moveup' => 'Move rule up', 'movedown' => 'Move rule down'))); } @@ -268,15 +261,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) {