--- loncom/publisher/lonrights.pm 2003/03/14 02:26:12 1.1 +++ loncom/publisher/lonrights.pm 2003/03/20 16:17:37 1.3 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to show and edit custom distribution rights # -# $Id: lonrights.pm,v 1.1 2003/03/14 02:26:12 www Exp $ +# $Id: lonrights.pm,v 1.3 2003/03/20 16:17:37 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -34,6 +34,8 @@ use strict; use Apache::Constants qw(:common :http); use Apache::lonnet(); use Apache::loncommon(); +use HTML::LCParser; +use Apache::File; sub handler { @@ -41,10 +43,95 @@ sub handler { $r->content_type('text/html'); $r->send_http_header; - $r->print('LON-CAPA Custom Distribution Rights'); + $r->print( + 'LON-CAPA Custom Distribution Rights'); $r->print(&Apache::loncommon::bodytag('Custom Distribution Rights')); + my $uri=$r->uri; + my $fn=&Apache::lonnet::filelocation('',$uri); + my $contents=''; + my $constructmode=($uri=~/^\/\~/); + unless ($constructmode) { +# =========================================== This is not in construction space + $contents=&Apache::lonnet::getfile($fn); + if ($contents==-1) { $contents=''; } + } else { +# =============================================== This is in construction space + if (-e $fn) { + my $fh=Apache::File->new($fn); + $contents=join('',<$fh>); + $fh->close(); + } + $r->print('
'); + } + my $parser=HTML::LCParser->new(\$contents); + my $token; + my $rulecounter=0; +# ---------------------------------------------------------- Start table output + $r->print(''); +# --------------------------------------------------------------------- Default +# Fast forward to first rule + $token=$parser->get_token; + while ($token->[1] ne 'accessrule') { $token=$parser->get_token; } +# print default + $r->print(''); +# Additional roles + while ($token=$parser->get_token) { + if (($token->[0] eq 'S') && ($token->[1] eq 'accessrule')) { + $rulecounter++; + $r->print(''); + } + } + $r->print('
 '); + if ($constructmode) { + $r->print(&Apache::loncommon::select_form + ($token->[2]->{'effect'},'effect_0', + ('allow' => 'allow', + 'deny' => 'deny'))); + } else { + $r->print($token->[2]->{'effect'}); + } + $r->print('Default'); + if (($token->[2]->{'realm'}) || ($token->[2]->{'role'})) { + $r->print(' - Error! No default set.'); + } + $r->print('
'); +# inset, delete, etc + $r->print(''); +# effect + if ($constructmode) { + $r->print(&Apache::loncommon::select_form + ($token->[2]->{'effect'}, + 'effect_'.$rulecounter, + ('allow' => 'allow', + 'deny' => 'deny'))); + } else { + $r->print($token->[2]->{'effect'}); + } + $r->print(''); +# realm + my $realm=$token->[2]->{'realm'}; + $realm=~s/^\W//; + my ($rdom,$rcourse,$rsec)=split(/(\/|\_)/,$realm); + if ($constructmode) { + $r->print(&Apache::loncommon::select_dom_form($rdom, + 'domain_'.$rulecounter)); + } else { + $r->print($token->[2]->{'realm'}); + } + $r->print(''); +# role + if ($constructmode) { + } else { + $r->print($token->[2]->{'role'}); + } +# close row + $r->print('
'); +# ------------------------------------------------------------ End table output + if ($constructmode) { + $r->print('
'); + } $r->print(''); return OK; }