--- loncom/interface/lonuserutils.pm 2007/12/22 17:33:26 1.27 +++ loncom/interface/lonuserutils.pm 2007/12/22 19:12:51 1.28 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Utility functions for managing LON-CAPA user accounts # -# $Id: lonuserutils.pm,v 1.27 2007/12/22 17:33:26 raeburn Exp $ +# $Id: lonuserutils.pm,v 1.28 2007/12/22 19:12:51 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -3467,7 +3467,7 @@ sub upfile_drop_add { } } if (!$multiple) { - ($userresult,$authresult,$roleresult) = + ($userresult,$authresult,$roleresult,$idresult) = &modifyuserrole($context,$setting, $changeauth,$cid,$domain,$username, $id,$amode,$password,$fname, @@ -3487,7 +3487,7 @@ sub upfile_drop_add { } else { $flushc = &user_change_result($r,$userresult,$authresult, - $roleresult,\%counts,$flushc, + $roleresult,$idresult,\%counts,$flushc, $username,%userchg); } } else { @@ -3732,7 +3732,6 @@ sub update_user_list { } } my $plrole = &Apache::lonnet::plaintext($role); - my ($uid,$first,$middle,$last,$gene,$sec); my $start = $env{'form.'.$item.'_start'}; my $end = $env{'form.'.$item.'_end'}; if ($choice eq 'drop') { @@ -3752,15 +3751,12 @@ sub update_user_list { &Apache::lonnet::revokerole($udom,$uname,$scope,$role); } } elsif ($choice eq 'delete') { - $start = -1; - $end = -1; if ($role eq 'st') { -# FIXME - how does role deletion affect classlist? &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid); } else { $result = &Apache::lonnet::assignrole($udom,$uname,$scope,$role,$now, - 0,1); + $start,1); } } else { #reenable, activate, change access dates or change section @@ -3803,27 +3799,36 @@ sub update_user_list { $nochg = 1; } } else { - if (!grep(/^\Q$sec\E$/,@newsecs)) { - $revresult = - &Apache::lonnet::revokerole($udom,$uname,$scope,$role); + if (@newsecs > 0) { + if (grep(/^\Q$sec\E$/,@newsecs)) { + push(@retained,$sec); + } else { + $revresult = + &Apache::lonnet::revokerole($udom,$uname, + $scope,$role); + } } else { - push(@retained,$sec); + $revresult = + &Apache::lonnet::revokerole($udom,$uname, + $scope,$role); } } } else { - push(@retained,$sec); + if ($sec eq '') { + $nochg = 1; + } else { + push(@retained,$sec); + } } # add new sections if (@newsecs == 0) { if (!$nochg) { - if ($sec ne '') { - if ($role eq 'st') { - $result = - &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,undef,$end,$start,$type,$locktype,$cid); - } else { - my $newscope = $scopestem; - $result = &Apache::lonnet::assignrole($udom,$uname,$newscope,$role,$end,$start); - } + if ($role eq 'st') { + $result = + &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,undef,$end,$start,$type,$locktype,$cid); + } else { + my $newscope = $scopestem; + $result = &Apache::lonnet::assignrole($udom,$uname,$newscope,$role,$end,$start); } } } else { @@ -3986,16 +3991,27 @@ sub get_groupslist { } sub setsections_javascript { - my ($form,$groupslist) = @_; - my ($checkincluded,$finish,$roleplace,$setsection_js); - if ($form eq 'cu') { + my ($formname,$groupslist,$mode) = @_; + my ($checkincluded,$finish,$rolecode,$setsection_js); + if ($mode eq 'upload') { + $checkincluded = 'formname.name == "'.$formname.'"'; + $finish = "return 'ok';"; + $rolecode = "var role = formname.defaultrole.options[formname.defaultrole.selectedIndex].value;\n"; + } elsif ($formname eq 'cu') { $checkincluded = 'formname.elements[i-1].checked == true'; $finish = 'formname.submit()'; - $roleplace = 3; + $rolecode = "var match = str.split('_'); + var role = match[3];\n"; + } elsif ($formname eq 'enrollstudent') { + $checkincluded = 'formname.name == "'.$formname.'"'; + $finish = 'formname.submit()'; + $rolecode = "var match = str.split('_'); + var role = match[1];\n"; } else { - $checkincluded = 'formname.name == "'.$form.'"'; + $checkincluded = 'formname.name == "'.$formname.'"'; $finish = "seccheck = 'ok';"; - $roleplace = 1; + $rolecode = "var match = str.split('_'); + var role = match[1];\n"; $setsection_js = "var seccheck = 'alert';"; } my %alerts = &Apache::lonlocal::texthash( @@ -4020,8 +4036,7 @@ function setSections(formname) { var checkcurr = str.match(re1); if (checkcurr != null) { if ($checkincluded) { - var match = str.split('_'); - var role = match[$roleplace]; + $rolecode if (role == 'cc') { alert("$alerts{'secd'}\\n$alerts{'accr'}"); } @@ -4096,6 +4111,9 @@ sub can_create_user { my ($dom,$context,$usertype) = @_; my %domconf = &Apache::lonnet::get_dom('configuration',['usercreation'],$dom); my $cancreate = 1; + if (&Apache::lonnet::allowed('mau',$dom)) { + return $cancreate; + } if (ref($domconf{'usercreation'}) eq 'HASH') { if (ref($domconf{'usercreation'}{'cancreate'}) eq 'HASH') { if ($context eq 'course' || $context eq 'author') { @@ -4250,7 +4268,8 @@ sub get_permission { } else { my @allroles = &roles_by_context($context); foreach my $role (@allroles) { - if (&Apache::lonnet::allowed('c'.$role,$env{'request.role.domain'})) { $permission{'cusr'} = 1; + if (&Apache::lonnet::allowed('c'.$role,$env{'request.role.domain'})) { + $permission{'cusr'} = 1; last; } } @@ -4459,6 +4478,5 @@ sub sectioncheck_alerts { return %alerts; } - 1;