--- loncom/interface/loncreateuser.pm 2003/07/18 13:45:14 1.60 +++ loncom/interface/loncreateuser.pm 2003/07/18 19:50:28 1.61 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Create a user # -# $Id: loncreateuser.pm,v 1.60 2003/07/18 13:45:14 www Exp $ +# $Id: loncreateuser.pm,v 1.61 2003/07/18 19:50:28 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -25,28 +25,6 @@ # # http://www.lon-capa.org/ # -# (Create a course -# (My Desk -# -# (Internal Server Error Handler -# -# (Login Screen -# 5/21/99,5/22,5/25,5/26,5/31,6/2,6/10,7/12,7/14, -# 1/14/00,5/29,5/30,6/1,6/29,7/1,11/9 Gerd Kortemeyer) -# -# YEAR=2001 -# 3/1/1 Gerd Kortemeyer) -# -# 3/1 Gerd Kortemeyer) -# -# 2/14 Gerd Kortemeyer) -# -# 2/14,2/17,2/19,2/20,2/21,2/22,2/23,3/2,3/17,3/24,04/12 Gerd Kortemeyer -# April Guy Albertelli -# 05/10,10/16 Gerd Kortemeyer -# 02/11/02 Matthew Hall -# -# $Id: loncreateuser.pm,v 1.60 2003/07/18 13:45:14 www Exp $ ### package Apache::loncreateuser; @@ -90,7 +68,7 @@ sub my_custom_roles { my %rolehash=&Apache::lonnet::dump('roles'); foreach (keys %rolehash) { if ($_=~/^rolesdef\_(\w+)$/) { - $returnhash{$_}=$_; + $returnhash{$1}=$1; } } return %returnhash; @@ -873,11 +851,17 @@ sub custom_role_editor { $r->print(&Apache::loncommon::bodytag( 'Create Users, Change User Privileges').'

'); + my $syspriv=''; + my $dompriv=''; + my $coursepriv=''; my ($rdummy,$roledef)= &Apache::lonnet::get('roles',["rolesdef_$rolename"]); # ------------------------------------------------------- Does this role exist? if (($rdummy ne 'con_lost') && ($roledef ne '')) { $r->print('Existing Role "'); +# ------------------------------------------------- Get current role privileges + ($syspriv,$dompriv,$coursepriv)=split(/\_/,$roledef); + $r->print($syspriv.' '.$dompriv.' '.$coursepriv); } else { $r->print('New Role "'); $roledef=''; @@ -886,26 +870,118 @@ sub custom_role_editor { # ------------------------------------------------------- What can be assigned? my %full=(); my %courselevel=(); + my %courselevelcurrent=(); foreach (split(/\:/,$Apache::lonnet::pr{'cr:c'})) { my ($priv,$restrict)=split(/\&/,$_); unless ($restrict) { $restrict='F'; } $courselevel{$priv}=$restrict; + if ($coursepriv=~/\:$priv/) { + $courselevelcurrent{$priv}=1; + } $full{$priv}=1; } my %domainlevel=(); + my %domainlevelcurrent=(); foreach (split(/\:/,$Apache::lonnet::pr{'cr:d'})) { my ($priv,$restrict)=split(/\&/,$_); unless ($restrict) { $restrict='F'; } $domainlevel{$priv}=$restrict; + if ($dompriv=~/\:$priv/) { + $domainlevelcurrent{$priv}=1; + } $full{$priv}=1; } - $r->print(''); + my %systemlevel=(); + my %systemlevelcurrent=(); + foreach (split(/\:/,$Apache::lonnet::pr{'cr:s'})) { + my ($priv,$restrict)=split(/\&/,$_); + unless ($restrict) { $restrict='F'; } + $systemlevel{$priv}=$restrict; + if ($syspriv=~/\:$priv/) { + $systemlevelcurrent{$priv}=1; + } + $full{$priv}=1; + } + $r->print(< + + +
PrivilegeCourse LevelDomain Level
+ + +ENDCCF foreach (sort keys %full) { $r->print(''); + ($courselevel{$_}?'':' '). + ''); } - $r->print('
PrivilegeCourse LevelDomain LevelSystem Level
'.&Apache::lonnet::plaintext($_).''. - $courselevel{$_}.''.$domainlevel{$_}.'
'. + ($domainlevel{$_}?'':' '). + ''. + ($systemlevel{$_}?'':' '). + '
'); - $r->print('Not yet implemented.'); + $r->print( + ''); +} + +# ---------------------------------------------------------- Call to definerole +sub set_custom_role { + my $r=shift; + + my $rolename=$ENV{'form.rolename'}; + + $rolename=~s/\W//gs; + + unless ($rolename) { + &print_username_entry_form($r); + return; + } + + $r->print(&Apache::loncommon::bodytag( + 'Create Users, Change User Privileges').'

'); + my ($rdummy,$roledef)= + &Apache::lonnet::get('roles',["rolesdef_$rolename"]); +# ------------------------------------------------------- Does this role exist? + if (($rdummy ne 'con_lost') && ($roledef ne '')) { + $r->print('Existing Role "'); + } else { + $r->print('New Role "'); + $roledef=''; + } + $r->print($rolename.'"

'); +# ------------------------------------------------------- What can be assigned? + my $sysrole=''; + my $domrole=''; + my $courole=''; + + foreach (split(/\:/,$Apache::lonnet::pr{'cr:c'})) { + my ($priv,$restrict)=split(/\&/,$_); + unless ($restrict) { $restrict=''; } + if ($ENV{'form.'.$priv.':c'}) { + $courole.=':'.$_; + } + } + + foreach (split(/\:/,$Apache::lonnet::pr{'cr:d'})) { + my ($priv,$restrict)=split(/\&/,$_); + unless ($restrict) { $restrict=''; } + if ($ENV{'form.'.$priv.':d'}) { + $domrole.=':'.$_; + } + } + + foreach (split(/\:/,$Apache::lonnet::pr{'cr:s'})) { + my ($priv,$restrict)=split(/\&/,$_); + unless ($restrict) { $restrict=''; } + if ($ENV{'form.'.$priv.':s'}) { + $sysrole.=':'.$_; + } + } + $r->print('Defining Role: '. + &Apache::lonnet::definerole($rolename,$sysrole,$domrole,$courole)); + $r->print(''); } # ================================================================ Main Handler @@ -935,6 +1011,8 @@ sub handler { &update_user_data($r); } elsif ($ENV{'form.phase'} eq 'selected_custom_edit') { &custom_role_editor($r); + } elsif ($ENV{'form.phase'} eq 'set_custom_roles') { + &set_custom_role($r); } } else { $ENV{'user.error.msg'}=