--- loncom/publisher/lonrights.pm 2007/06/22 00:11:22 1.23 +++ loncom/publisher/lonrights.pm 2010/06/06 02:40:44 1.30 @@ -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.30 2010/06/06 02:40:44 raeburn 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 @@ -202,18 +210,19 @@ sub handler { $r->print(&Apache::loncommon::start_data_table_row().''); if ($constructmode) { $r->print(&Apache::loncommon::select_form('','action_0', - ('' => '', - 'insertbelow' => 'Insert rule below '))); + {'' => '', + 'insertbelow' => &mt('Insert rule below')})); } else { $r->print(' '); } $r->print(''); if ($constructmode) { - $r->print(&Apache::loncommon::select_form - ($token->[2]->{'effect'},'effect_0', + my %lt = &Apache::lonlocal::texthash ('allow' => 'allow', - 'deny' => 'deny'))); + 'deny' => 'deny'); + $r->print(&Apache::loncommon::select_form + ($token->[2]->{'effect'},'effect_0',\%lt)); } else { $r->print($token->[2]->{'effect'}); } @@ -232,24 +241,28 @@ sub handler { # insert, delete, etc $r->print(''.$rulecounter.'. '); if ($constructmode) { + my %lt = &Apache::lonlocal::texthash + ('' => '', + 'delete' => 'Delete this rule', + 'insertabove' => 'Insert rule above', + 'insertbelow' => 'Insert rule below', + 'moveup' => 'Move rule up', + 'movedown' => 'Move rule down' + ); + $r->print(&Apache::loncommon::select_form( - '','action_'.$rulecounter, - ('' => '', - 'delete' => 'Delete this rule', - 'insertabove' => 'Insert rule above', - 'insertbelow' => 'Insert rule below ', - 'moveup' => 'Move rule up', - 'movedown' => 'Move rule down'))); + '','action_'.$rulecounter,\%lt)); } $r->print(''. ''); # effect if ($constructmode) { + my %lt = &Apache::lonlocal::texthash + ('allow' => 'allow', + 'deny' => 'deny'); $r->print(&Apache::loncommon::select_form ($token->[2]->{'effect'}, - 'effect_'.$rulecounter, - ('allow' => 'allow', - 'deny' => 'deny'))); + 'effect_'.$rulecounter,\%lt)); } else { $r->print($token->[2]->{'effect'}); } @@ -258,25 +271,25 @@ sub handler { $r->print(''); my $type = ($token->[2]{'type'} || 'course'); if ($constructmode) { + my %lt = &Apache::lonlocal::texthash + ('course' => 'Course', + 'user' => 'User'); $r->print(&Apache::loncommon::select_form($type, - 'type_'.$rulecounter, - ('course' => 'Course', - 'user' => 'User'))); + 'type_'.$rulecounter,\%lt)); } else { $r->print($type); } # ---- 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) { @@ -317,7 +330,7 @@ sub handler { my $role=$token->[2]->{'role'}; unless ($role) { $role=''; } $r->print(&Apache::loncommon::select_form( - $role,'role_'.$rulecounter,%hash)); + $role,'role_'.$rulecounter,\%hash)); } else { $r->print(&Apache::lonnet::plaintext($token->[2]->{'role'})); }