--- loncom/interface/loncreateuser.pm 2008/12/03 19:26:05 1.265 +++ loncom/interface/loncreateuser.pm 2008/12/08 22:46:28 1.267 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Create a user # -# $Id: loncreateuser.pm,v 1.265 2008/12/03 19:26:05 mielkec Exp $ +# $Id: loncreateuser.pm,v 1.267 2008/12/08 22:46:28 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -122,11 +122,20 @@ sub auth_abbrev { sub portfolio_quota { my ($ccuname,$ccdomain) = @_; my %lt = &Apache::lonlocal::texthash( - 'disk' => "Disk space allocated to user's portfolio files", - 'cuqu' => "Current quota", - 'cust' => "Custom quota", - 'defa' => "Default", - 'chqu' => "Change quota", + 'usrt' => "User Tools", + 'blog' => "Personal User Blog", + 'aboutme' => "Personal Information Page", + 'portfolio' => "Personal User Portfolio", + 'avai' => "Available", + 'cusa' => "availability", + 'chse' => "Change setting", + 'disk' => "Disk space allocated to user's portfolio files", + 'cuqu' => "Current quota", + 'cust' => "Custom quota", + 'defa' => "Default", + 'usde' => "Use default", + 'uscu' => "Use custom", + 'chqu' => "Change quota", ); my ($currquota,$quotatype,$inststatus,$defquota) = &Apache::loncommon::get_user_quota($ccuname,$ccdomain); @@ -175,27 +184,82 @@ END_SCRIPT " affiliation ([_2]).",$defquota,$longinsttype); } } - my $output = $quota_javascript. - '<h3>'.$lt{'disk'}.'</h3>'. - &Apache::loncommon::start_data_table(). - &Apache::loncommon::start_data_table_row(). - '<td>'.$lt{'cuqu'}.': '.$currquota.' Mb. '. - $defaultinfo.'</td>'. - &Apache::loncommon::end_data_table_row(). - &Apache::loncommon::start_data_table_row(). - '<td><span class="LC_nobreak">'.$lt{'chqu'}. - ': <label>'. - '<input type="radio" name="customquota" value="0" '. - $custom_off.' onchange="javascript:quota_changes('."'custom'".')" - />'.$lt{'defa'}.' ('.$defquota.' Mb).</label> '. - ' <label><input type="radio" name="customquota" value="1" '. - $custom_on.' onchange="javascript:quota_changes('."'custom'".')" />'. - $lt{'cust'}.':</label> '. - '<input type="text" name="portfolioquota" size ="5" value="'. - $showquota.'" onfocus="javascript:quota_changes('."'quota'".')" '. - '/> Mb</span></td>'. - &Apache::loncommon::end_data_table_row(). - &Apache::loncommon::end_data_table(); + + my $output = $quota_javascript."\n". + '<h3>'.$lt{'usrt'}.'</h3>'."\n". + &Apache::loncommon::start_data_table(); + + if (&Apache::lonnet::allowed('mut',$ccdomain)) { + my %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname, + 'tools.aboutme','tools.portfolio','tools.blog'); + my @usertools = ('aboutme','blog','portfolio'); + foreach my $item (@usertools) { + my ($custom_access,$curr_access,$cust_on,$cust_off,$tool_on,$tool_off); + $cust_off = 'checked="checked" '; + $tool_on = 'checked="checked" '; + $curr_access = &Apache::lonnet::usertools_access($ccuname,$ccdomain,$item); + if ($userenv{'tools.'.$item} eq '') { + $custom_access = 'default'; + if (!$curr_access) { + $tool_off = 'checked="checked" '; + $tool_on = ''; + } + } else { + $custom_access = 'custom'; + $cust_on = ' checked="checked" '; + $cust_off = ''; + if ($userenv{'tools.'.$item} == 0) { + $tool_off = 'checked="checked" '; + $tool_on = ''; + } + } + $curr_access = &Apache::lonnet::usertools_access($ccuname,$ccdomain,$item); + $output .= ' <tr class="LC_info_row">'."\n". + ' <td>'.$lt{$item}.'</td>'."\n". + ' </tr>'."\n". + &Apache::loncommon::start_data_table_row()."\n". + ' <td>'.&mt('Availability determined currently from [_1] setting.',$custom_access). + ' '.$lt{'avai'}.': '. + ($curr_access?&mt('Yes'):&mt('No')).'</td>'."\n". + &Apache::loncommon::end_data_table_row()."\n". + &Apache::loncommon::start_data_table_row()."\n". + ' <td><span class="LC_nobreak">'.$lt{'chse'}.': <label>'. + '<input type="radio" name="custom'.$item.'" value="0" '. + $cust_off.'/>'.$lt{'usde'}.'</label> '. + '<label><input type="radio" name="custom'.$item.'" value="1" '. + $cust_on.'/>'.$lt{'uscu'}.'</label> -- '. + $lt{'cusa'}.': <label>'. + '<input type="radio" name="tools_'.$item.'" value="1" '. + $tool_on.'/>'.&mt('On').'</label> <label>'. + '<input type="radio" name="tools_'.$item.'" value="0" '. + $tool_off.'/>'.&mt('Off').'</label></span></td>'."\n". + &Apache::loncommon::end_data_table_row()."\n"; + } + } + if (&Apache::lonnet::allowed('mpq',$ccdomain)) { + $output .= '<tr class="LC_info_row">'."\n". + ' <td>'.$lt{'disk'}.'</td>'."\n". + ' </tr>'."\n". + &Apache::loncommon::start_data_table_row()."\n". + ' <td>'.$lt{'cuqu'}.': '. + $currquota.' Mb. '. + $defaultinfo.'</td>'."\n". + &Apache::loncommon::end_data_table_row()."\n". + &Apache::loncommon::start_data_table_row()."\n". + ' <td><span class="LC_nobreak">'.$lt{'chqu'}. + ': <label>'. + '<input type="radio" name="customquota" value="0" '. + $custom_off.' onchange="javascript:quota_changes('."'custom'".')"'. + ' />'.$lt{'defa'}.' ('.$defquota.' Mb).</label> '. + ' <label><input type="radio" name="customquota" value="1" '. + $custom_on.' onchange="javascript:quota_changes('."'custom'".')" />'. + $lt{'cust'}.':</label> '. + '<input type="text" name="portfolioquota" size ="5" value="'. + $showquota.'" onfocus="javascript:quota_changes('."'quota'".')" '. + '/> Mb</span></td>'."\n". + &Apache::loncommon::end_data_table_row()."\n"; + } + $output .= &Apache::loncommon::end_data_table(); return $output; } @@ -651,8 +715,9 @@ ENDFORMINFO } if ($newuser) { my $portfolioform; - if (&Apache::lonnet::allowed('mpq',$env{'request.role.domain'})) { - # Current user has quota modification privileges + if ((&Apache::lonnet::allowed('mpq',$env{'request.role.domain'})) || + (&Apache::lonnet::allowed('mut',$env{'request.role.domain'}))) { + # Current user has quota or user tools modification privileges $portfolioform = '<br />'.&portfolio_quota($ccuname,$ccdomain); } &initialize_authen_forms($ccdomain,$formname); @@ -777,35 +842,62 @@ ENDCHANGEUSER } $r->print('</div>'); my $user_auth_text = &user_authentication($ccuname,$ccdomain,$formname); - my $user_quota_text; - if (&Apache::lonnet::allowed('mpq',$ccdomain)) { + my ($user_quota_text,$user_tools_text); + if ((&Apache::lonnet::allowed('mpq',$ccdomain)) || + (&Apache::lonnet::allowed('mut',$ccdomain))) { # Current user has quota modification privileges $user_quota_text = &portfolio_quota($ccuname,$ccdomain); - } elsif (&Apache::lonnet::allowed('mpq',$env{'request.role.domain'})) { - # Get the user's portfolio information - my %portq = &Apache::lonnet::get('environment',['portfolioquota'], - $ccdomain,$ccuname); - - my %lt=&Apache::lonlocal::texthash( - 'dska' => "Disk space allocated to user's portfolio files", - 'youd' => "You do not have privileges to modify the portfolio quota for this user.", - 'ichr' => "If a change is required, contact a domain coordinator for the domain", - ); - $user_quota_text = <<ENDNOPORTPRIV; + } + if (!&Apache::lonnet::allowed('mpq',$ccdomain)) { + if (&Apache::lonnet::allowed('mpq',$env{'request.role.domain'})) { + # Get the user's portfolio information + my %portq = &Apache::lonnet::get('environment',['portfolioquota'], + $ccdomain,$ccuname); + my %lt=&Apache::lonlocal::texthash( + 'dska' => "Disk space allocated to user's portfolio files", + 'youd' => "You do not have privileges to modify the portfolio quota for this user.", + 'ichr' => "If a change is required, contact a domain coordinator for the domain", + ); + $user_quota_text = <<ENDNOPORTPRIV; <h3>$lt{'dska'}</h3> $lt{'youd'} $lt{'ichr'}: $ccdomain ENDNOPORTPRIV + } + } + if (!&Apache::lonnet::allowed('mut',$ccdomain)) { + if (&Apache::lonnet::allowed('mut',$env{'request.role.domain'})) { + my %lt=&Apache::lonlocal::texthash( + 'utav' => "User Tools Availability", + 'yodo' => "You do not have privileges to modify Portfolio, Blog or Home Page settings for this user.", + 'ifch' => "If a change is required, contact a domain coordinator for the domain", + ); + $user_tools_text = <<ENDNOTOOLSPRIV; +<h3>$lt{'utav'}</h3> +$lt{'yodo'} $lt{'ifch'}: $ccdomain +ENDNOTOOLSPRIV + } } if ($user_auth_text ne '') { $r->print('<div class="LC_left_float">'.$user_auth_text); if ($user_quota_text ne '') { $r->print($user_quota_text); } + if ($user_tools_text ne '') { + $r->print($user_tools_text); + } if ($env{'form.action'} eq 'singlestudent') { $r->print(&date_sections_select($context,$newuser,$formname)); } } elsif ($user_quota_text ne '') { $r->print('<div class="LC_left_float">'.$user_quota_text); + if ($user_tools_text ne '') { + $r->print($user_tools_text); + } + if ($env{'form.action'} eq 'singlestudent') { + $r->print(&date_sections_select($context,$newuser,$formname)); + } + } elsif ($user_tools_text ne '') { + $r->print('<div class="LC_left_float">'.$user_tools_text); if ($env{'form.action'} eq 'singlestudent') { $r->print(&date_sections_select($context,$newuser,$formname)); } @@ -1647,6 +1739,7 @@ sub update_user_data { $r->print('<h3>'.&mt('User [_1] in domain [_2]', $env{'form.ccuname'}, $env{'form.ccdomain'}).'</h3>'); my (%alerts,%rulematch,%inst_results,%curr_rules); + my @usertools = ('aboutme','blog','portfolio'); if ($env{'form.makeuser'}) { $r->print('<h3>'.&mt('Creating new account.').'</h3>'); # Check for the authentication mode and password @@ -1706,26 +1799,34 @@ sub update_user_data { $r->print(&mt('Generating user').': '.$result); $uhome = &Apache::lonnet::homeserver($env{'form.ccuname'}, $env{'form.ccdomain'}); - if (($uhome ne 'no_host') && ($env{'form.customquota'} == 1)) { - my (%changeHash,$newportfolioquota); - if ($env{'form.portfolioquota'} eq '') { - $newportfolioquota = 0; - } else { - $newportfolioquota = $env{'form.portfolioquota'}; - $newportfolioquota =~ s/[^\d\.]//g; + my (%changeHash,%newcustom,%changed); + if ($uhome ne 'no_host') { + if ($env{'form.customquota'} == 1) { + if ($env{'form.portfolioquota'} eq '') { + $newcustom{'quota'} = 0; + } else { + $newcustom{'quota'} = $env{'form.portfolioquota'}; + $newcustom{'quota'} =~ s/[^\d\.]//g; + } + $changed{'quota'} = "a_admin($newcustom{'quota'},\%changeHash); } - my $quotachanged = "a_admin($newportfolioquota,\%changeHash); - if ($quotachanged) { + foreach my $item (@usertools) { + if ($env{'form.custom'.$item} == 1) { + $newcustom{$item} = $env{'form.tools_'.$item}; + $changed{$item} = &tool_admin($item,$newcustom{$item},\%changeHash); + } + } + if (keys(%changed)) { $changeHash{'firstname'} = $env{'form.cfirstname'}; $changeHash{'middlename'} = $env{'form.cmiddlename'}; $changeHash{'lastname'} = $env{'form.clastname'}; $changeHash{'generation'} = $env{'form.cgeneration'}; $changeHash{'id'} = $env{'form.cid'}; $changeHash{'permanentemail'} = $env{'form.cpermanentemail'}; - my $quotachgresult = - &Apache::lonnet::put('environment',\%changeHash, - $env{'form.ccdomain'},$env{'form.ccuname'}); - } + my $chgresult = + &Apache::lonnet::put('environment',\%changeHash, + $env{'form.ccdomain'},$env{'form.ccuname'}); + } } $r->print('<br />'.&mt('Home server').': '.$uhome.' '. &Apache::lonnet::hostname($uhome)); @@ -1758,7 +1859,8 @@ sub update_user_data { # Check for need to change my %userenv = &Apache::lonnet::get ('environment',['firstname','middlename','lastname','generation', - 'id','permanentemail','portfolioquota','inststatus'], + 'id','permanentemail','portfolioquota','inststatus','tools.aboutme', + 'tools.blog','tools.portfolio'], $env{'form.ccdomain'},$env{'form.ccuname'}); my ($tmp) = keys(%userenv); if ($tmp =~ /^(con_lost|error)/i) { @@ -1883,14 +1985,17 @@ sub update_user_data { } my ($quotachanged,$oldportfolioquota,$newportfolioquota, $inststatus,$oldisdefault,$newisdefault,$olddefquotatext, - $newdefquotatext); + $newdefquotatext,%oldaccess,%oldaccesstext,%newaccess,%newaccesstext); my ($defquota,$settingstatus) = &Apache::loncommon::default_quota($env{'form.ccdomain'},$inststatus); - my $showquota; + my ($showquota,$showtools); if (&Apache::lonnet::allowed('mpq',$env{'form.ccdomain'})) { $showquota = 1; } - my %changeHash; + if (&Apache::lonnet::allowed('mut',$env{'form.ccdomain'})) { + $showtools = 1; + } + my (%changeHash,%changed); $changeHash{'portfolioquota'} = $userenv{'portfolioquota'}; if ($userenv{'portfolioquota'} ne '') { $oldportfolioquota = $userenv{'portfolioquota'}; @@ -1902,10 +2007,10 @@ sub update_user_data { $newportfolioquota =~ s/[^\d\.]//g; } if ($newportfolioquota != $oldportfolioquota) { - $quotachanged = "a_admin($newportfolioquota,\%changeHash); + $changed{'quota'} = "a_admin($newportfolioquota,\%changeHash); } } else { - $quotachanged = "a_admin('',\%changeHash); + $changed{'quota'} = "a_admin('',\%changeHash); $newportfolioquota = $defquota; $newisdefault = 1; } @@ -1919,7 +2024,7 @@ sub update_user_data { $newportfolioquota = $env{'form.portfolioquota'}; $newportfolioquota =~ s/[^\d\.]//g; } - $quotachanged = "a_admin($newportfolioquota,\%changeHash); + $changed{'quota'} = "a_admin($newportfolioquota,\%changeHash); } else { $newportfolioquota = $defquota; $newisdefault = 1; @@ -1931,6 +2036,74 @@ sub update_user_data { if ($newisdefault) { $newdefquotatext = &get_defaultquota_text($settingstatus); } + + foreach my $tool (@usertools) { + if ($userenv{'tools.'.$tool} ne '') { + $oldaccess{$tool} = &mt('custom'); + if ($userenv{'tools_'.$tool}) { + $oldaccesstext{$tool} = &mt("availability set to 'on'"); + } else { + $oldaccesstext{$tool} = &mt("availability set to 'off'"); + } + $changeHash{'tools.'.$tool} = $userenv{'tools.'.$tool}; + if ($env{'form.custom'.$tool} == 1) { + if ($env{'form.tools_'.$tool} ne $userenv{'tools.'.$tool}) { + $changed{$tool} = &tool_admin($tool,$env{'form.tools_'.$tool}, + \%changeHash); + if ($changed{$tool}) { + $newaccess{$tool} = &mt('custom'); + if ($env{'form.tools_'.$tool}) { + $newaccesstext{$tool} = &mt("availability set to 'on'"); + } else { + $newaccesstext{$tool} = &mt("availability set to 'off'"); + } + } else { + $newaccess{$tool} = $oldaccess{$tool}; + if ($userenv{'tools.'.$tool}) { + $newaccesstext{$tool} = &mt("availability set to 'on'"); + } else { + $newaccesstext{$tool} = &mt("availability set to 'off'"); + } + } + } else { + $newaccess{$tool} = $oldaccess{$tool}; + $newaccesstext{$tool} = $oldaccesstext{$tool}; + } + } else { + $changed{$tool} = &tool_admin($tool,'',\%changeHash); + print STDERR "for $tool - changed is $changed{$tool}\n"; + if ($changed{$tool}) { + $newaccess{$tool} = &mt('default'); + } else { + $newaccess{$tool} = $oldaccess{$tool}; + if ($userenv{'tools.'.$tool}) { + $newaccesstext{$tool} = &mt("availability set to 'on'"); + } else { + $newaccesstext{$tool} = &mt("availability set to 'off'"); + } + } + } + } else { + $oldaccess{$tool} = &mt('default'); + if ($env{'form.custom'.$tool} == 1) { + $changed{$tool} = &tool_admin($tool,$env{'form.tools_'.$tool}, + \%changeHash); + if ($changed{$tool}) { + $newaccess{$tool} = &mt('custom'); + if ($env{'form.tools_'.$tool}) { + $newaccesstext{$tool} = &mt("availability set to 'on'"); + } else { + $newaccesstext{$tool} = &mt("availability set to 'off'"); + } + } else { + $newaccess{$tool} = $oldaccess{$tool}; + } + } else { + $newaccess{$tool} = $oldaccess{$tool}; + } + } + } + if ($env{'form.cfirstname'} ne $userenv{'firstname'} || $env{'form.cmiddlename'} ne $userenv{'middlename'} || $env{'form.clastname'} ne $userenv{'lastname'} || @@ -1939,18 +2112,33 @@ sub update_user_data { $env{'form.cpermanentemail'} ne $userenv{'permanentemail'} ) { $namechanged = 1; } - if ($namechanged || $quotachanged) { + if (($namechanged) || (keys(%changed) > 0)) { $changeHash{'firstname'} = $env{'form.cfirstname'}; $changeHash{'middlename'} = $env{'form.cmiddlename'}; $changeHash{'lastname'} = $env{'form.clastname'}; $changeHash{'generation'} = $env{'form.cgeneration'}; $changeHash{'id'} = $env{'form.cid'}; $changeHash{'permanentemail'} = $env{'form.cpermanentemail'}; - my ($quotachgresult,$namechgresult); - if ($quotachanged) { - $quotachgresult = + my ($chgresult,$namechgresult); + if (keys(%changed) > 0) { + $chgresult = &Apache::lonnet::put('environment',\%changeHash, $env{'form.ccdomain'},$env{'form.ccuname'}); + if ($chgresult eq 'ok') { + my %newenvhash; + my $hashid="$env{'form.ccuname'}:$env{'form.ccdomain'}"; + foreach my $key (keys(%changed)) { + if ($key ne 'quota') { + &Apache::lonnet::devalidate_cache_new('usertools.'.$key,$hashid); + $newenvhash{'environment.tools.'.$key} = + $changeHash{'tools.'.$key}; + } + } + if (($env{'user.name'} eq $env{'form.ccuname'}) && + ($env{'user.domain'} eq $env{'form.ccdomain'})) { + &Apache::lonnet::appenv(\%newenvhash); + } + } } if ($namechanged) { # Make the change @@ -1969,19 +2157,22 @@ sub update_user_data { ); } if (($namechanged && $namechgresult eq 'ok') || - ($quotachanged && $quotachgresult eq 'ok')) { + ((keys(%changed) > 0) && $chgresult eq 'ok')) { # Tell the user we changed the name my %lt=&Apache::lonlocal::texthash( - 'uic' => "User Information Changed", - 'frst' => "first", - 'mddl' => "middle", - 'lst' => "last", - 'gen' => "generation", - 'id' => "Student/Employee ID", - 'mail' => "permanent e-mail", - 'disk' => "disk space allocated to portfolio files", - 'prvs' => "Previous", - 'chto' => "Changed To" + 'uic' => "User Information Changed", + 'frst' => "First", + 'mddl' => "Middle", + 'lst' => "Last", + 'gen' => "Generation", + 'id' => "Student/Employee ID", + 'mail' => "Permanent E-mail", + 'disk' => "Disk space allocated to portfolio files", + 'blog' => "Blog Availability", + 'aboutme' => "Home Page Availability", + 'portfolio' => "Portfolio Availability", + 'prvs' => "Previous", + 'chto' => "Changed To" ); $r->print('<h4>'.$lt{'uic'}.'</h4>'. &Apache::loncommon::start_data_table(). @@ -1999,6 +2190,12 @@ END $r->print(" <th>$lt{'disk'}</th>\n"); } + if ($showtools) { + foreach my $item (@usertools) { + $r->print(" + <th>$lt{$item}</th>\n"); + } + } $r->print(&Apache::loncommon::end_data_table_header_row(). &Apache::loncommon::start_data_table_row()); $r->print(<<"END"); @@ -2014,10 +2211,16 @@ END $r->print(" <td>$oldportfolioquota Mb $olddefquotatext </td>\n"); } + if ($showtools) { + foreach my $item (@usertools) { + $r->print(" + <td>$oldaccess{$item} $oldaccesstext{$item} </td>\n"); + } + } $r->print(&Apache::loncommon::end_data_table_row(). &Apache::loncommon::start_data_table_row()); $r->print(<<"END"); - <td><b>$lt{'chto'}</b></td> + <td><span class="LC_nobreak"><b>$lt{'chto'}</b></span></td> <td>$env{'form.cfirstname'} </td> <td>$env{'form.cmiddlename'} </td> <td>$env{'form.clastname'} </td> @@ -2029,6 +2232,12 @@ END $r->print(" <td>$newportfolioquota Mb $newdefquotatext </td>\n"); } + if ($showtools) { + foreach my $item (@usertools) { + $r->print(" + <td>$newaccess{$item} $newaccesstext{$item} </td>\n"); + } + } $r->print(&Apache::loncommon::end_data_table_row(). &Apache::loncommon::end_data_table().'<br />'); if ($env{'form.cid'} ne $userenv{'id'}) { @@ -2057,12 +2266,15 @@ END $env{'form.ccdomain'}.'</span><br />'); } } else { # End of if ($env ... ) logic - # They did not want to change the users name or quota but we can - # still tell them what the name and quota are + # They did not want to change the users name, quota or tool availability, + # but we can still tell them what the name and quota and availabilities are my %lt=&Apache::lonlocal::texthash( - 'id' => "Student/Employee ID", - 'mail' => "Permanent e-mail", - 'disk' => "Disk space allocated to user's portfolio files", + 'id' => "Student/Employee ID", + 'mail' => "Permanent e-mail", + 'disk' => "Disk space allocated to user's portfolio files", + 'blog' => "Blog Availability", + 'aboutme' => "Home Page Availability", + 'portfolio' => "Portfolio Availability", ); $r->print(<<"END"); <h4>$userenv{'firstname'} $userenv{'middlename'} $userenv{'lastname'} $userenv{'generation'} @@ -2071,8 +2283,14 @@ END $r->print('<br />['.$lt{'mail'}.': '. $userenv{'permanentemail'}.']'); } + if ($showtools) { + foreach my $item (@usertools) { + $r->print('<br />['.$lt{$item}.': '.$newaccess{$item}.' '. + $newaccesstext{$item}.']'."\n"); + } + } if ($showquota) { - $r->print('<br />['.$lt{'disk'}.': '.$oldportfolioquota.' Mb '. + $r->print('<br />['.$lt{'disk'}.': '.$oldportfolioquota.' Mb '. $olddefquotatext.']'); } $r->print('</h4>'); @@ -2248,8 +2466,8 @@ sub update_roles { my $result=&Apache::lonnet::assignrole($env{'form.ccdomain'}, $env{'form.ccuname'},$url,$role,0,$now,'','', $context); - $output = &mt('Re-enabling [_1] in [_2]: <b>[_3]</b>', - $role,$url,$result).'<br />'; + $output = &mt('Re-enabling [_1] in [_2]: [_3]', + $role,$url,'<b>'.$result.'</b>').'<br />'; } $r->print($output); if (!grep(/^\Q$role\E$/,@rolechanges)) { @@ -2262,8 +2480,8 @@ sub update_roles { my $result = &Apache::lonnet::assigncustomrole( $env{'form.ccdomain'}, $env{'form.ccuname'}, $url,$rdom,$rnam,$rolename,0,$now,undef,$context); - $r->print(&mt('Re-enabling custom role [_1] by [_2]@[_3] in [_4] : <b>[_5]</b>', - $rolename,$rnam,$rdom,$url,$result).'<br />'); + $r->print(&mt('Re-enabling custom role [_1] by [_2]@[_3] in [_4] : [_5]', + $rolename,$rnam,$rdom,$url,'<b>'.$result.'</b>').'<br />'); if (!grep(/^cr$/,@rolechanges)) { push(@rolechanges,'cr'); } @@ -2492,12 +2710,27 @@ sub quota_admin { my $quotachanged; if (&Apache::lonnet::allowed('mpq',$env{'form.ccdomain'})) { # Current user has quota modification privileges - $quotachanged = 1; - $changeHash->{'portfolioquota'} = $setquota; + if (ref($changeHash) eq 'HASH') { + $quotachanged = 1; + $changeHash->{'portfolioquota'} = $setquota; + } } return $quotachanged; } +sub tool_admin { + my ($tool,$settool,$changeHash) = @_; + my $toolchanged; + if (&Apache::lonnet::allowed('mut',$env{'form.ccdomain'})) { + # Current user has quota modification privileges + if (ref($changeHash) eq 'HASH') { + $toolchanged = 1; + $changeHash->{'tools.'.$tool} = $settool; + } + } + return $toolchanged; +} + sub build_roles { my ($sectionstr,$sections,$role) = @_; my $num_sections = 0; @@ -4450,10 +4683,30 @@ sub build_search_response { &Apache::lonuserutils::can_create_user($env{'request.role.domain'},$context); if ($cancreate) { my $showdom = &display_domain_info($env{'request.role.domain'}); - $response .= '<br /><br />'.&mt("<b>To add a new user</b> (you can only create new users in your current role's domain - <span class=\"LC_cusr_emph\">[_1]</span>):",$env{'request.role.domain'}).'<ul><li>'.&mt("Set 'Domain/institution to search' to: <span class=\"LC_cusr_emph\">[_1]</span>",$showdom).'<li>'.&mt("Set 'Search criteria' to: <span class=\"LC_cusr_emph\">'username is ...... in selected LON-CAPA domain'").'</span></li><li>'.&mt('Provide the proposed username').'</li><li>'.&mt('Search').'</li></ul><br />'; + $response .= '<br /><br />' + .'<b>'.&mt('To add a new user:').'</b>' + .'<br />' + .&mt("(You can only create new users in your current role's domain - [_1])" + ,'<span class="LC_cusr_emph">'.$env{'request.role.domain'}.'</span>') + .'<ul><li>' + .&mt("Set 'Domain/institution to search' to: [_1]",'<span class="LC_cusr_emph">'.$showdom.'</span>') + .'</li><li>' + .&mt("Set 'Search criteria' to: [_1]username is ..... in selected LON-CAPA domain[_2]",'<span class="LC_cusr_emph">','</span>') + .'</li><li>' + .&mt('Provide the proposed username') + .'</li><li>' + .&mt("Click 'Search'") + .'</li></ul><br />'; } else { my $helplink = ' href="javascript:helpMenu('."'display'".')"'; - $response .= '<br /><br />'.&mt("You are not authorized to create new users in your current role's domain - <span class=\"LC_cusr_emph\">[_1]</span>.",$env{'request.role.domain'}).'<br />'.&mt('Contact the <a[_1]>helpdesk</a> if you need to create a new user.',$helplink).'<br /><br />'; + $response .= '<br /><br />' + .&mt("You are not authorized to create new users in your current role's domain - [_1]." + ,'<span class="LC_cusr_emph">'.$env{'request.role.domain'}.'</span>') + .'<br />' + .&mt('Contact the [_1]helpdesk[_2] if you need to create a new user.' + ,' <a'.$helplink.'>' + ,'</a>') + .'<br /><br />'; } } }