--- loncom/publisher/lonrights.pm 2003/09/22 15:39:53 1.10 +++ loncom/publisher/lonrights.pm 2007/05/02 01:34:23 1.22 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to show and edit custom distribution rights # -# $Id: lonrights.pm,v 1.10 2003/09/22 15:39:53 www Exp $ +# $Id: lonrights.pm,v 1.22 2007/05/02 01:34:23 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -32,7 +32,7 @@ package Apache::lonrights; use strict; use Apache::Constants qw(:common :http); -use Apache::lonnet(); +use Apache::lonnet; use Apache::loncommon(); use HTML::LCParser; use Apache::File; @@ -41,14 +41,23 @@ use Apache::lonlocal; sub handler { my $r=shift; + my $target = $env{'form.grade_target'}; + if ($target eq 'meta') { + &Apache::loncommon::content_type($r,'text/html'); + $r->send_http_header; + $env{'request.uri'}=$r->uri; + my $file = &Apache::lonnet::filelocation("",$r->uri); + my $content=&Apache::lonnet::getfile($file); + my $result=&Apache::lonxml::xmlparse(undef,'meta',$content); + $r->print($result); + return OK; + } &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; - $r->print( - 'LON-CAPA Custom Distribution Rights'. - &Apache::loncommon::coursebrowser_javascript().''); + my $js = &Apache::loncommon::coursebrowser_javascript(); - $r->print(&Apache::loncommon::bodytag('Custom Distribution Rights')); + $r->print(&Apache::loncommon::start_page('Custom Distribution Rights',$js)); $r->rflush(); my $uri=$r->uri; @@ -58,16 +67,16 @@ sub handler { # ============================================================ Modify and store if ($constructmode) { - if ($ENV{'form.store'}) { + if ($env{'form.store'}) { my @newrules=(); undef @newrules; # read rules from form - foreach (keys %ENV) { + foreach (keys %env) { if ($_=~/^form\.effect\_(\d+)$/) { my $number=$1; my %rulehash=(); foreach ('effect','domain','course','section','role') { - $rulehash{$_}=$ENV{'form.'.$_.'_'.$number}; + $rulehash{$_}=$env{'form.'.$_.'_'.$number}; } if ($rulehash{'role'} eq 'au') { $rulehash{'course'}=''; @@ -80,11 +89,11 @@ sub handler { ($rulehash{'effect'} eq 'allow')) { $rulehash{'effect'}='deny'; } - $rulehash{'domain'}=~s/\W//g; - $rulehash{'course'}=~s/\W//g; + $rulehash{'domain'} = &LONCAPA::clean_domain($rulehash{'domain'}); + $rulehash{'course'} = &LONCAPA::clean_courseid($rulehash{'course'}); $rulehash{'section'}=~s/\W//g; unless ($rulehash{'domain'}) { - $rulehash{'domain'}=$ENV{'user.domain'}; + $rulehash{'domain'}=$env{'user.domain'}; } my $realm=''; if ($number) { @@ -101,27 +110,27 @@ sub handler { } } # edit actions? - foreach (keys %ENV) { + foreach (keys %env) { if ($_=~/^form\.action\_(\d+)$/) { my $number=$1; - if ($ENV{$_} eq 'delete') { $newrules[$number]=''; } - if (($ENV{$_} eq 'moveup') && ($number>2)) { + if ($env{$_} eq 'delete') { $newrules[$number]=''; } + if (($env{$_} eq 'moveup') && ($number>1)) { my $buffer=$newrules[$number]; $newrules[$number]=$newrules[$number-1]; $newrules[$number-1]=$buffer; } - if (($ENV{$_} eq 'movedown') && ($number<$#newrules)) { + if (($env{$_} eq 'movedown') && ($number<$#newrules)) { my $buffer=$newrules[$number]; $newrules[$number]=$newrules[$number+1]; $newrules[$number+1]=$buffer; } - if ($ENV{$_} eq 'insertabove') { + if ($env{$_} eq 'insertabove') { for (my $i=$#newrules;$i>=$number;$i--) { $newrules[$i+1]=$newrules[$i]; } $newrules[$number]='deny'; } - if ($ENV{$_} eq 'insertbelow') { + if ($env{$_} eq 'insertbelow') { for (my $i=$#newrules;$i>$number;$i--) { $newrules[$i+1]=$newrules[$i]; } @@ -163,11 +172,11 @@ sub handler { my $token; my $rulecounter=0; my $colzero=&mt($constructmode?'Edit action':'Rule'); -my %lt=&Apache::loncommon::texthash('ef' => 'Effect', - 'do' => 'Domain', - 'co' => 'Course', - 'se' => 'Section/Group', - 'ro' => 'Role'); + my %lt=&Apache::lonlocal::texthash('ef' => 'Effect', + 'do' => 'Domain', + 'co' => 'Course', + 'se' => 'Section', + 'ro' => 'Role'); # ---------------------------------------------------------- Start table output $r->print(< @@ -234,11 +243,12 @@ ENDSTARTTABLE $r->print(''); # ---- realm my $realm=$token->[2]->{'realm'}; - $realm=~s/^\W//; my ($rdom,$rcourse,$rsec)=split(/[\/\_]/,$realm); + $rdom = &LONCAPA::clean_domain($rdom); + $rcourse = &LONCAPA::clean_courseid($rcourse); # realm domain if ($constructmode) { - unless ($rdom) { $rdom=$ENV{'user.domain'}; } + unless ($rdom) { $rdom=$env{'user.domain'}; } $r->print(&Apache::loncommon::select_dom_form($rdom, 'domain_'.$rulecounter)); } else { @@ -280,11 +290,14 @@ ENDSTARTTABLE $r->print(''); if ($rcourse) { my %descript= - &Apache::lonnet::coursedescription($rdom.'_'.$rcourse); + &Apache::lonnet::coursedescription($rdom.'_'.$rcourse, + {'one_time' => 1}); $r->print($descript{'description'}.'   '); } - $r->print(&Apache::loncommon::selectcourse_link('rules', - 'course_'.$rulecounter,'domain_'.$rulecounter)); + if ($constructmode) { + $r->print(&Apache::loncommon::selectcourse_link('rules', + 'course_'.$rulecounter,'domain_'.$rulecounter)); + } # close row $r->print(''); } @@ -292,9 +305,9 @@ ENDSTARTTABLE $r->print(''); # ------------------------------------------------------------ End table output if ($constructmode) { - $r->print(''); + $r->print(''); } - $r->print(''); + $r->print(&Apache::loncommon::end_page()); return OK; }