--- loncom/publisher/lonrights.pm 2007/06/22 00:11:22 1.23 +++ loncom/publisher/lonrights.pm 2009/12/02 18:33:35 1.29 @@ -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.29 2009/12/02 18:33:35 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -55,9 +55,24 @@ sub handler { &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; + # Breadcrumbs + &Apache::lonhtmlcommon::clear_breadcrumbs(); + &Apache::lonhtmlcommon::add_breadcrumb({ + 'text' => 'Construction Space', + 'href' => &Apache::loncommon::authorspace(), + }); + &Apache::lonhtmlcommon::add_breadcrumb({ + 'text' => 'Custom Rights Editor', + 'title' => 'Custom Distribution Rights Editor', + 'href' => '',}); + my $js = &Apache::loncommon::coursebrowser_javascript(). &Apache::loncommon::studentbrowser_javascript(); - $r->print(&Apache::loncommon::start_page('Custom Distribution Rights',$js)); + # Breadcrumbs are included by &start_page + $r->print(&Apache::loncommon::start_page('Custom Distribution Rights',$js) + .&Apache::loncommon::head_subbox( + &Apache::loncommon::CSTR_pageheader()) + ); $r->rflush(); my $uri=$r->uri; @@ -110,13 +125,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 +142,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 +189,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 +211,7 @@ sub handler { if ($constructmode) { $r->print(&Apache::loncommon::select_form('','action_0', ('' => '', - 'insertbelow' => 'Insert rule below '))); + 'insertbelow' => &mt('Insert rule below')))); } else { $r->print(' '); @@ -212,6 +220,7 @@ sub handler { if ($constructmode) { $r->print(&Apache::loncommon::select_form ($token->[2]->{'effect'},'effect_0', + &Apache::lonlocal::texthash ('allow' => 'allow', 'deny' => 'deny'))); } else { @@ -234,10 +243,11 @@ sub handler { if ($constructmode) { $r->print(&Apache::loncommon::select_form( '','action_'.$rulecounter, + &Apache::lonlocal::texthash ('' => '', 'delete' => 'Delete this rule', 'insertabove' => 'Insert rule above', - 'insertbelow' => 'Insert rule below ', + 'insertbelow' => 'Insert rule below', 'moveup' => 'Move rule up', 'movedown' => 'Move rule down'))); } @@ -248,6 +258,7 @@ sub handler { $r->print(&Apache::loncommon::select_form ($token->[2]->{'effect'}, 'effect_'.$rulecounter, + &Apache::lonlocal::texthash ('allow' => 'allow', 'deny' => 'deny'))); } else { @@ -260,6 +271,7 @@ sub handler { if ($constructmode) { $r->print(&Apache::loncommon::select_form($type, 'type_'.$rulecounter, + &Apache::lonlocal::texthash ('course' => 'Course', 'user' => 'User'))); } else { @@ -268,15 +280,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) {