version 1.162, 2007/07/30 00:31:27
|
version 1.172, 2007/08/15 16:25:14
|
Line 204 sub print_username_entry_form {
|
Line 204 sub print_username_entry_form {
|
my ($jsback,$elements) = &crumb_utilities(); |
my ($jsback,$elements) = &crumb_utilities(); |
|
|
my $jscript = &Apache::loncommon::studentbrowser_javascript()."\n". |
my $jscript = &Apache::loncommon::studentbrowser_javascript()."\n". |
'<script type"text/javascript">'."\n". |
'<script type="text/javascript">'."\n". |
&Apache::lonhtmlcommon::set_form_elements($elements->{$formtoset}). |
&Apache::lonhtmlcommon::set_form_elements($elements->{$formtoset}). |
'</script>'."\n"; |
'</script>'."\n"; |
|
|
Line 216 sub print_username_entry_form {
|
Line 216 sub print_username_entry_form {
|
$jscript,{'add_entries' => \%loaditems,}); |
$jscript,{'add_entries' => \%loaditems,}); |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:backPage(document.crtuser)", |
({href=>"javascript:backPage(document.crtuser)", |
text=>"User/custom role search", |
text=>"User modify/custom role edit", |
faq=>282,bug=>'Instructor Interface',}); |
faq=>282,bug=>'Instructor Interface',}); |
|
|
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('User Management'); |
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('User Management'); |
Line 232 sub print_username_entry_form {
|
Line 232 sub print_username_entry_form {
|
'ecrp' => "Edit Custom Role Privileges", |
'ecrp' => "Edit Custom Role Privileges", |
'nr' => "Name of Role", |
'nr' => "Name of Role", |
'cre' => "Custom Role Editor", |
'cre' => "Custom Role Editor", |
|
'mod' => "to add/modify roles", |
); |
); |
my $help = &Apache::loncommon::help_open_menu(undef,undef,282,'Instructor Interface'); |
my $help = &Apache::loncommon::help_open_menu(undef,undef,282,'Instructor Interface'); |
my $helpsiur=&Apache::loncommon::help_open_topic('Course_Change_Privileges'); |
my $helpsiur=&Apache::loncommon::help_open_topic('Course_Change_Privileges'); |
Line 244 sub print_username_entry_form {
|
Line 245 sub print_username_entry_form {
|
$start_page |
$start_page |
$crumbs |
$crumbs |
<h2>$lt{siur}$helpsiur</h2> |
<h2>$lt{siur}$helpsiur</h2> |
<h3>$lt{'srch'} $sellink</h3> |
<h3>$lt{'srch'} $sellink $lt{'mod'}</h3> |
$response"); |
$response"); |
$r->print(&entry_form($defdom,$srch,$forcenewuser)); |
$r->print(&entry_form($defdom,$srch,$forcenewuser)); |
if (&Apache::lonnet::allowed('mcr','/')) { |
if (&Apache::lonnet::allowed('mcr','/')) { |
Line 328 $jsback
|
Line 329 $jsback
|
ENDSCRIPT |
ENDSCRIPT |
|
|
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
'srch' => "User Search", |
'srch' => "User Search to add/modify roles", |
'username' => "username", |
'username' => "username", |
'domain' => "domain", |
'domain' => "domain", |
'lastname' => "last name", |
'lastname' => "last name", |
Line 338 ENDSCRIPT
|
Line 339 ENDSCRIPT
|
$r->print(&Apache::loncommon::start_page('Create Users, Change User Privileges',$jscript)); |
$r->print(&Apache::loncommon::start_page('Create Users, Change User Privileges',$jscript)); |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:backPage(document.usersrchform,'','')", |
({href=>"javascript:backPage(document.usersrchform,'','')", |
text=>"User/custom role search", |
text=>"User modify/custom role edit", |
faq=>282,bug=>'Instructor Interface',}, |
faq=>282,bug=>'Instructor Interface',}, |
{href=>"javascript:backPage(document.usersrchform,'get_user_info','select')", |
{href=>"javascript:backPage(document.usersrchform,'get_user_info','select')", |
text=>"Select User", |
text=>"Select User", |
Line 346 ENDSCRIPT
|
Line 347 ENDSCRIPT
|
$r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management')); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management')); |
$r->print("<b>$lt{'srch'}</b><br />"); |
$r->print("<b>$lt{'srch'}</b><br />"); |
$r->print(&entry_form($srch->{'srchdomain'},$srch)); |
$r->print(&entry_form($srch->{'srchdomain'},$srch)); |
$r->print('<h3>'.&mt('Select a user').'</h3>'); |
$r->print('<h3>'.&mt('Select a user to add/modify roles').'</h3>'); |
$r->print('<form name="usersrchform" method="post">'. |
$r->print('<form name="usersrchform" method="post">'. |
&Apache::loncommon::start_data_table()."\n". |
&Apache::loncommon::start_data_table()."\n". |
&Apache::loncommon::start_data_table_header_row()."\n". |
&Apache::loncommon::start_data_table_header_row()."\n". |
Line 359 ENDSCRIPT
|
Line 360 ENDSCRIPT
|
$r->print(&Apache::loncommon::end_data_table_header_row()); |
$r->print(&Apache::loncommon::end_data_table_header_row()); |
|
|
my @sorted_users = sort { |
my @sorted_users = sort { |
lc($srch_results->{$a}->{$sortby}) cmp lc($srch_results->{$b}->{$sortby}) |
lc($srch_results->{$a}->{$sortby}) cmp lc($srch_results->{$b}->{$sortby}) |
|| |
|| |
lc($srch_results->{$a}->{lastname}) cmp lc($srch_results->{$b}->{lastname}) |
lc($srch_results->{$a}->{lastname}) cmp lc($srch_results->{$b}->{lastname}) |
|| |
|| |
lc($srch_results->{$a}->{firstname}) cmp lc($srch_results->{$b}->{firstname}) |
lc($srch_results->{$a}->{firstname}) cmp lc($srch_results->{$b}->{firstname}) |
|
|| |
|
lc($a) cmp lc($b) |
} (keys(%$srch_results)); |
} (keys(%$srch_results)); |
|
|
foreach my $user (@sorted_users) { |
foreach my $user (@sorted_users) { |
Line 630 ENDSECCODE
|
Line 633 ENDSECCODE
|
$js,{'add_entries' => \%loaditem,}); |
$js,{'add_entries' => \%loaditem,}); |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:backPage(document.cu)", |
({href=>"javascript:backPage(document.cu)", |
text=>"User/custom role search", |
text=>"User modify/custom role edit", |
faq=>282,bug=>'Instructor Interface',}); |
faq=>282,bug=>'Instructor Interface',}); |
|
|
if ($env{'form.phase'} eq 'userpicked') { |
if ($env{'form.phase'} eq 'userpicked') { |
Line 1133 ENDNOPRIV
|
Line 1136 ENDNOPRIV
|
<td><input type="hidden" name="start_'.$cudom.'_'.$cuname.'_ca" value="" /> |
<td><input type="hidden" name="start_'.$cudom.'_'.$cuname.'_ca" value="" /> |
<a href= |
<a href= |
"javascript:pjump('."'date_start','Start Date Co-Author',document.cu.start_$cudom\_$cuname\_ca.value,'start_$cudom\_$cuname\_ca','cu.pres','dateset'".')">'.$lt{'ssd'}.'</a></td> |
"javascript:pjump('."'date_start','Start Date Co-Author',document.cu.start_$cudom\_$cuname\_ca.value,'start_$cudom\_$cuname\_ca','cu.pres','dateset'".')">'.$lt{'ssd'}.'</a></td> |
<td><input type=hidden name="end_'.$cudom.'_'.$cuname.'_ca" value="" /> |
<td><input type="hidden" name="end_'.$cudom.'_'.$cuname.'_ca" value="" /> |
<a href= |
<a href= |
"javascript:pjump('."'date_end','End Date Co-Author',document.cu.end_$cudom\_$cuname\_ca.value,'end_$cudom\_$cuname\_ca','cu.pres','dateset'".')">'.$lt{'sed'}.'</a></td>'."\n". |
"javascript:pjump('."'date_end','End Date Co-Author',document.cu.end_$cudom\_$cuname\_ca.value,'end_$cudom\_$cuname\_ca','cu.pres','dateset'".')">'.$lt{'sed'}.'</a></td>'."\n". |
&Apache::loncommon::end_data_table_row()."\n". |
&Apache::loncommon::end_data_table_row()."\n". |
Line 1141 ENDNOPRIV
|
Line 1144 ENDNOPRIV
|
'<td><input type=checkbox name="act_'.$cudom.'_'.$cuname.'_aa" /></td> |
'<td><input type=checkbox name="act_'.$cudom.'_'.$cuname.'_aa" /></td> |
<td>'.$lt{'caa'}.'</td> |
<td>'.$lt{'caa'}.'</td> |
<td>'.$cudom.'_'.$cuname.'</td> |
<td>'.$cudom.'_'.$cuname.'</td> |
<td><input type=hidden name="start_'.$cudom.'_'.$cuname.'_aa" value="" /> |
<td><input type="hidden" name="start_'.$cudom.'_'.$cuname.'_aa" value="" /> |
<a href= |
<a href= |
"javascript:pjump('."'date_start','Start Date Assistant Co-Author',document.cu.start_$cudom\_$cuname\_aa.value,'start_$cudom\_$cuname\_aa','cu.pres','dateset'".')">'.$lt{'ssd'}.'</a></td> |
"javascript:pjump('."'date_start','Start Date Assistant Co-Author',document.cu.start_$cudom\_$cuname\_aa.value,'start_$cudom\_$cuname\_aa','cu.pres','dateset'".')">'.$lt{'ssd'}.'</a></td> |
<td><input type=hidden name="end_'.$cudom.'_'.$cuname.'_aa" value="" /> |
<td><input type="hidden" name="end_'.$cudom.'_'.$cuname.'_aa" value="" /> |
<a href= |
<a href= |
"javascript:pjump('."'date_end','End Date Assistant Co-Author',document.cu.end_$cudom\_$cuname\_aa.value,'end_$cudom\_$cuname\_aa','cu.pres','dateset'".')">'.$lt{'sed'}.'</a></td>'."\n". |
"javascript:pjump('."'date_end','End Date Assistant Co-Author',document.cu.end_$cudom\_$cuname\_aa.value,'end_$cudom\_$cuname\_aa','cu.pres','dateset'".')">'.$lt{'sed'}.'</a></td>'."\n". |
&Apache::loncommon::end_data_table_row()."\n". |
&Apache::loncommon::end_data_table_row()."\n". |
Line 1176 ENDNOPRIV
|
Line 1179 ENDNOPRIV
|
'<td><input type=checkbox name="act_'.$thisdomain.'_'.$role.'" /></td> |
'<td><input type=checkbox name="act_'.$thisdomain.'_'.$role.'" /></td> |
<td>'.$plrole.'</td> |
<td>'.$plrole.'</td> |
<td>'.$thisdomain.'</td> |
<td>'.$thisdomain.'</td> |
<td><input type=hidden name="start_'.$thisdomain.'_'.$role.'" value="" /> |
<td><input type="hidden" name="start_'.$thisdomain.'_'.$role.'" value="" /> |
<a href= |
<a href= |
"javascript:pjump('."'date_start','Start Date $plrole',document.cu.start_$thisdomain\_$role.value,'start_$thisdomain\_$role','cu.pres','dateset'".')">'.$lt{'ssd'}.'</a></td> |
"javascript:pjump('."'date_start','Start Date $plrole',document.cu.start_$thisdomain\_$role.value,'start_$thisdomain\_$role','cu.pres','dateset'".')">'.$lt{'ssd'}.'</a></td> |
<td><input type=hidden name="end_'.$thisdomain.'_'.$role.'" value="" /> |
<td><input type="hidden" name="end_'.$thisdomain.'_'.$role.'" value="" /> |
<a href= |
<a href= |
"javascript:pjump('."'date_end','End Date $plrole',document.cu.end_$thisdomain\_$role.value,'end_$thisdomain\_$role','cu.pres','dateset'".')">'.$lt{'sed'}.'</a></td>'. |
"javascript:pjump('."'date_end','End Date $plrole',document.cu.end_$thisdomain\_$role.value,'end_$thisdomain\_$role','cu.pres','dateset'".')">'.$lt{'sed'}.'</a></td>'. |
&Apache::loncommon::end_data_table_row(); |
&Apache::loncommon::end_data_table_row(); |
Line 1230 sub update_user_data {
|
Line 1233 sub update_user_data {
|
$r->print(&Apache::loncommon::start_page($title,$jscript)); |
$r->print(&Apache::loncommon::start_page($title,$jscript)); |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:backPage(document.userupdate)", |
({href=>"javascript:backPage(document.userupdate)", |
text=>"User/custom role search", |
text=>"User modify/custom role edit", |
faq=>282,bug=>'Instructor Interface',}); |
faq=>282,bug=>'Instructor Interface',}); |
if ($env{'form.prevphase'} eq 'userpicked') { |
if ($env{'form.prevphase'} eq 'userpicked') { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
Line 1307 sub update_user_data {
|
Line 1310 sub update_user_data {
|
$r->print($error.&mt('Invalid login mode or password').$end); |
$r->print($error.&mt('Invalid login mode or password').$end); |
return; |
return; |
} |
} |
|
|
|
|
|
$r->print('<h2>'.&mt('User [_1] in domain [_2]', |
|
$env{'form.ccuname'}, $env{'form.ccdomain'}).'</h2>'); |
|
|
if ($env{'form.makeuser'}) { |
if ($env{'form.makeuser'}) { |
# Create a new user |
$r->print('<h3>'.&mt('Creating new account.').'</h3>'); |
my %lt=&Apache::lonlocal::texthash( |
|
'cru' => "Creating user", |
|
'id' => "in domain" |
|
); |
|
$r->print(<<ENDNEWUSERHEAD); |
|
<h3>$lt{'cru'} "$env{'form.ccuname'}" $lt{'id'} "$env{'form.ccdomain'}"</h3> |
|
ENDNEWUSERHEAD |
|
# Check for the authentication mode and password |
# Check for the authentication mode and password |
if (! $amode || ! $genpwd) { |
if (! $amode || ! $genpwd) { |
$r->print($error.&mt('Invalid login mode or password').$end); |
$r->print($error.&mt('Invalid login mode or password').$end); |
Line 1348 ENDNEWUSERHEAD
|
Line 1349 ENDNEWUSERHEAD
|
} elsif (($env{'form.login'} ne 'nochange') && |
} elsif (($env{'form.login'} ne 'nochange') && |
($env{'form.login'} ne '' )) { |
($env{'form.login'} ne '' )) { |
# Modify user privileges |
# Modify user privileges |
my %lt=&Apache::lonlocal::texthash( |
|
'usr' => "User", |
|
'id' => "in domain" |
|
); |
|
$r->print(<<ENDMODIFYUSERHEAD); |
|
<h2>$lt{'usr'} "$env{'form.ccuname'}" $lt{'id'} "$env{'form.ccdomain'}"</h2> |
|
ENDMODIFYUSERHEAD |
|
if (! $amode || ! $genpwd) { |
if (! $amode || ! $genpwd) { |
$r->print($error.'Invalid login mode or password'.$end); |
$r->print($error.'Invalid login mode or password'.$end); |
return; |
return; |
Line 1518 END
|
Line 1512 END
|
# They did not want to change the users name but we can |
# They did not want to change the users name but we can |
# still tell them what the name is |
# still tell them what the name is |
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
'usr' => "User", |
|
'id' => "in domain", |
|
'gen' => "Generation", |
|
'mail' => "Permanent e-mail", |
'mail' => "Permanent e-mail", |
'disk' => "Disk space allocated to user's portfolio files", |
'disk' => "Disk space allocated to user's portfolio files", |
); |
); |
$r->print(<<"END"); |
$r->print(<<"END"); |
<h2>$lt{'usr'} "$env{'form.ccuname'}" $lt{'id'} "$env{'form.ccdomain'}"</h2> |
<h4>$userenv{'firstname'} $userenv{'middlename'} $userenv{'lastname'} $userenv{'generation'}</h4> |
<h4>$userenv{'firstname'} $userenv{'middlename'} $userenv{'lastname'} </h4> |
|
<h4>$lt{'gen'}: $userenv{'generation'}</h4> |
|
<h4>$lt{'mail'}: $userenv{'permanentemail'}</h4> |
<h4>$lt{'mail'}: $userenv{'permanentemail'}</h4> |
END |
END |
if ($putresult eq 'ok') { |
if ($putresult eq 'ok') { |
Line 1548 END
|
Line 1537 END
|
if ($key=~/^form\.rev/) { |
if ($key=~/^form\.rev/) { |
if ($key=~/^form\.rev\:([^\_]+)\_([^\_\.]+)$/) { |
if ($key=~/^form\.rev\:([^\_]+)\_([^\_\.]+)$/) { |
# Revoke standard role |
# Revoke standard role |
$r->print(&mt('Revoking').' '.$2.' in '.$1.': <b>'. |
my ($scope,$role) = ($1,$2); |
&Apache::lonnet::revokerole($env{'form.ccdomain'}, |
my $result = |
$env{'form.ccuname'},$1,$2).'</b><br />'); |
&Apache::lonnet::revokerole($env{'form.ccdomain'}, |
if ($2 eq 'st') { |
$env{'form.ccuname'}, |
$1=~m{^/($match_domain)/($match_courseid)}; |
$scope,$role); |
my $cid=$1.'_'.$2; |
$r->print(&mt('Revoking [_1] in [_2]: [_3]', |
my $user = $env{'form.ccuname'}.':'.$env{'form.ccdomain'}; |
$role,$scope,'<b>'.$result.'</b>').'<br />'); |
my $result = |
if ($role eq 'st') { |
&Apache::lonnet::cput('classlist', |
my $result = &classlist_drop($scope,$env{'form.ccuname'}, |
{ $user => $now }, |
$env{'form.ccdomain'},$now); |
$env{'course.'.$cid.'.domain'}, |
$r->print($result); |
$env{'course.'.$cid.'.num'}); |
|
$r->print(&mt('Drop from classlist: [_1]', |
|
'<b>'.$result.'</b>').'<br />'); |
|
} |
} |
} |
} |
if ($key=~m{^form\.rev\:([^_]+)_cr\.cr/($match_domain)/($match_username)/(\w+)$}) { |
if ($key=~m{^form\.rev\:([^_]+)_cr\.cr/($match_domain)/($match_username)/(\w+)$ }s) { |
# Revoke custom role |
# Revoke custom role |
$r->print(&mt('Revoking custom role:'). |
$r->print(&mt('Revoking custom role:'). |
' '.$4.' by '.$3.':'.$2.' in '.$1.': <b>'. |
' '.$4.' by '.$3.':'.$2.' in '.$1.': <b>'. |
Line 1575 END
|
Line 1561 END
|
} elsif ($key=~/^form\.del/) { |
} elsif ($key=~/^form\.del/) { |
if ($key=~/^form\.del\:([^\_]+)\_([^\_\.]+)$/) { |
if ($key=~/^form\.del\:([^\_]+)\_([^\_\.]+)$/) { |
# Delete standard role |
# Delete standard role |
$r->print(&mt('Deleting').' '.$2.' in '.$1.': '. |
my ($scope,$role) = ($1,$2); |
&Apache::lonnet::assignrole($env{'form.ccdomain'}, |
my $result = |
$env{'form.ccuname'},$1,$2,$now,0,1).'<br />'); |
&Apache::lonnet::assignrole($env{'form.ccdomain'}, |
if ($2 eq 'st') { |
$env{'form.ccuname'}, |
$1=~m{^/($match_domain)/($match_courseid)}; |
$scope,$role,$now,0,1); |
my $cid=$1.'_'.$2; |
$r->print(&mt('Deleting [_1] in [_2]: [_3]',$role,$scope, |
my $user = $env{'form.ccuname'}.':'.$env{'form.ccdomain'}; |
'<b>'.$result.'</b>').'<br />'); |
my $result = |
if ($role eq 'st') { |
&Apache::lonnet::cput('classlist', |
my $result = &classlist_drop($scope,$env{'form.ccuname'}, |
{ $user => $now }, |
$env{'form.ccdomain'},$now); |
$env{'course.'.$cid.'.domain'}, |
$r->print($result); |
$env{'course.'.$cid.'.num'}); |
|
$r->print(&mt('Drop from classlist: [_1]', |
|
'<b>'.$result.'</b>').'<br />'); |
|
} |
} |
} |
} |
if ($key=~m{^form\.del\:([^_]+)_cr\.cr/($match_domain)/($match_username)/(\w+)$}) { |
if ($key=~m{^form\.del\:([^_]+)_cr\.cr/($match_domain)/($match_username)/(\w+)$}) { |
my ($url,$rdom,$rnam,$rolename) = ($1,$2,$3,$4); |
my ($url,$rdom,$rnam,$rolename) = ($1,$2,$3,$4); |
# Delete custom role |
# Delete custom role |
$r->print(&mt('Deleting custom role [_1] by [_2]@[_3] in [_4]', |
$r->print(&mt('Deleting custom role [_1] by [_2]:[_3] in [_4]', |
$rolename,$rnam,$rdom,$url).': <b>'. |
$rolename,$rnam,$rdom,$url).': <b>'. |
&Apache::lonnet::assigncustomrole($env{'form.ccdomain'}, |
&Apache::lonnet::assigncustomrole($env{'form.ccdomain'}, |
$env{'form.ccuname'},$url,$rdom,$rnam,$rolename,$now, |
$env{'form.ccuname'},$url,$rdom,$rnam,$rolename,$now, |
Line 1755 END
|
Line 1738 END
|
} # End of foreach (keys(%env)) |
} # End of foreach (keys(%env)) |
# Flush the course logs so reverse user roles immediately updated |
# Flush the course logs so reverse user roles immediately updated |
&Apache::lonnet::flushcourselogs(); |
&Apache::lonnet::flushcourselogs(); |
$r->print('<p><a href="/adm/createuser">Create/Modify Another User</a></p>'); |
$r->print('<p><a href="/adm/createuser">'.&mt('Create/Modify Another User').'</a></p>'); |
$r->print('<form name="userupdate" method="post" />'."\n"); |
$r->print('<form name="userupdate" method="post" />'."\n"); |
foreach my $item ('srchby','srchin','srchtype','srchterm','srchdomain','ccuname','ccdomain') { |
foreach my $item ('srchby','srchin','srchtype','srchterm','srchdomain','ccuname','ccdomain') { |
$r->print('<input type="hidden" name="'.$item.'" value="'.$env{'form.'.$item}.'" />'."\n"); |
$r->print('<input type="hidden" name="'.$item.'" value="'.$env{'form.'.$item}.'" />'."\n"); |
Line 1771 END
|
Line 1754 END
|
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
} |
} |
|
|
|
sub classlist_drop { |
|
my ($scope,$uname,$udom,$now) = @_; |
|
my ($cdom,$cnum) = ($scope=~m{^/($match_domain)/($match_courseid)}); |
|
my $cid=$cdom.'_'.$cnum; |
|
my $user = $uname.':'.$udom; |
|
if (!&active_student_roles($cnum,$cdom,$uname,$udom)) { |
|
my $result = |
|
&Apache::lonnet::cput('classlist', |
|
{ $user => $now }, |
|
$env{'course.'.$cid.'.domain'}, |
|
$env{'course.'.$cid.'.num'}); |
|
return &mt('Drop from classlist: [_1]', |
|
'<b>'.$result.'</b>').'<br />'; |
|
} |
|
} |
|
|
|
sub active_student_roles { |
|
my ($cnum,$cdom,$uname,$udom) = @_; |
|
my %roles = |
|
&Apache::lonnet::get_my_roles($uname,$udom,'userroles', |
|
['future','active'],['st']); |
|
return exists($roles{"$cnum:$cdom:st"}); |
|
} |
|
|
sub quota_admin { |
sub quota_admin { |
my ($setquota,$changeHash) = @_; |
my ($setquota,$changeHash) = @_; |
my $quotachanged; |
my $quotachanged; |
Line 1897 sub custom_role_editor {
|
Line 1904 sub custom_role_editor {
|
$r->print(&Apache::loncommon::start_page('Custom Role Editor',$head_script)); |
$r->print(&Apache::loncommon::start_page('Custom Role Editor',$head_script)); |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:backPage(document.form1,'','')", |
({href=>"javascript:backPage(document.form1,'','')", |
text=>"User/custom role search", |
text=>"User modify/custom role edit", |
faq=>282,bug=>'Instructor Interface',}, |
faq=>282,bug=>'Instructor Interface',}, |
{href=>"javascript:backPage(document.form1,'','')", |
{href=>"javascript:backPage(document.form1,'','')", |
text=>"Edit custom role", |
text=>"Edit custom role", |
Line 2037 sub set_custom_role {
|
Line 2044 sub set_custom_role {
|
$r->print(&Apache::loncommon::start_page('Save Custom Role'),$jscript); |
$r->print(&Apache::loncommon::start_page('Save Custom Role'),$jscript); |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:backPage(document.customresult,'','')", |
({href=>"javascript:backPage(document.customresult,'','')", |
text=>"User/custom role search", |
text=>"User modify/custom role edit", |
faq=>282,bug=>'Instructor Interface',}, |
faq=>282,bug=>'Instructor Interface',}, |
{href=>"javascript:backPage(document.customresult,'selected_custom_edit','')", |
{href=>"javascript:backPage(document.customresult,'selected_custom_edit','')", |
text=>"Edit custom role", |
text=>"Edit custom role", |
Line 2136 sub handler {
|
Line 2143 sub handler {
|
if ($env{'form.phase'} eq 'get_user_info') { |
if ($env{'form.phase'} eq 'get_user_info') { |
my ($state,$response,$forcenewuser,$results) = |
my ($state,$response,$forcenewuser,$results) = |
&user_search_result($srch); |
&user_search_result($srch); |
print STDERR "Got $state,$response,$forcenewuser\n"; |
|
if ($state eq 'select') { |
if ($state eq 'select') { |
&print_user_selection_page($r,$response,$srch,$results); |
&print_user_selection_page($r,$response,$srch,$results); |
} elsif ($state eq 'modify') { |
} elsif ($state eq 'modify') { |
Line 2183 sub handler {
|
Line 2189 sub handler {
|
#-------------------------------------------------- functions for &phase_two |
#-------------------------------------------------- functions for &phase_two |
sub user_search_result { |
sub user_search_result { |
my ($srch) = @_; |
my ($srch) = @_; |
my @alldomains = sort(&Apache::lonnet::all_domains()); |
|
my %allhomes; |
my %allhomes; |
my %inst_matches; |
my %inst_matches; |
my %srch_results; |
my %srch_results; |
Line 2203 sub user_search_result {
|
Line 2208 sub user_search_result {
|
} |
} |
if (($srch->{'srchin'} eq 'dom') || ($srch->{'srchin'} eq 'instd')) { |
if (($srch->{'srchin'} eq 'dom') || ($srch->{'srchin'} eq 'instd')) { |
if (($srch->{'srchdomain'} eq '') || |
if (($srch->{'srchdomain'} eq '') || |
(!(grep/^\Q$srch->{'srchdomain'}\E$/,@alldomains))) { |
! (&Apache::lonnet::domain($srch->{'srchdomain'}))) { |
$response = &mt('You must specify a valid domain when searching in a domain or institutional directory.') |
$response = &mt('You must specify a valid domain when searching in a domain or institutional directory.') |
} |
} |
} |
} |
Line 2220 sub user_search_result {
|
Line 2225 sub user_search_result {
|
} |
} |
} |
} |
if ($response ne '') { |
if ($response ne '') { |
return ($state,$response); |
return ($state,'<span class="LC_warning">'.$response.'</span>'); |
} |
} |
if ($srch->{'srchby'} eq 'uname') { |
if ($srch->{'srchby'} eq 'uname') { |
if (($srch->{'srchin'} eq 'dom') || ($srch->{'srchin'} eq 'crs')) { |
if (($srch->{'srchin'} eq 'dom') || ($srch->{'srchin'} eq 'crs')) { |
Line 2252 sub user_search_result {
|
Line 2257 sub user_search_result {
|
&build_search_response($srch,%srch_results); |
&build_search_response($srch,%srch_results); |
} |
} |
} else { |
} else { |
my %courseusers = &get_courseusers(); |
my $courseusers = &get_courseusers(); |
if ($srch->{'srchtype'} eq 'exact') { |
if ($srch->{'srchtype'} eq 'exact') { |
if (exists($courseusers{$srch->{'srchterm'}.':'.$srch->{'srchdomain'}})) { |
if (exists($courseusers->{$srch->{'srchterm'}.':'.$srch->{'srchdomain'}})) { |
$state = 'modify'; |
$state = 'modify'; |
} else { |
} else { |
($state,$response,$forcenewuser) = |
($state,$response,$forcenewuser) = |
&build_search_response($srch,%srch_results); |
&build_search_response($srch,%srch_results); |
} |
} |
} else { |
} else { |
foreach my $user (keys(%courseusers)) { |
foreach my $user (keys(%$courseusers)) { |
my ($cuname,$cudomain) = split(/:/,$user); |
my ($cuname,$cudomain) = split(/:/,$user); |
if ($cudomain eq $srch->{'srchdomain'}) { |
if ($cudomain eq $srch->{'srchdomain'}) { |
if ($cuname =~ /\Q$srch->{'srchterm'}\E/i) { |
if ($cuname =~ /\Q$srch->{'srchterm'}\E/i) { |
$srch_results{$user} = ''; |
$srch_results{$user} = |
|
{&Apache::lonnet::get('environment', |
|
['firstname', |
|
'lastname', |
|
'permanentemail'])}; |
} |
} |
} |
} |
} |
} |
Line 2287 sub user_search_result {
|
Line 2296 sub user_search_result {
|
($state,$response,$forcenewuser) = |
($state,$response,$forcenewuser) = |
&build_search_response($srch,%srch_results); |
&build_search_response($srch,%srch_results); |
} elsif ($srch->{'srchin'} eq 'crs') { |
} elsif ($srch->{'srchin'} eq 'crs') { |
my %courseusers = &get_courseusers(); |
my $courseusers = &get_courseusers(); |
foreach my $user (keys(%courseusers)) { |
foreach my $user (keys(%$courseusers)) { |
my ($uname,$udom) = split(/:/,$user); |
my ($uname,$udom) = split(/:/,$user); |
my %names = &Apache::loncommon::getnames($uname,$udom); |
my %names = &Apache::loncommon::getnames($uname,$udom); |
my %emails = &Apache::loncommon::getemails($uname,$udom); |
my %emails = &Apache::loncommon::getemails($uname,$udom); |
Line 2345 sub directorysrch_check {
|
Line 2354 sub directorysrch_check {
|
['directorysrch'],$srch->{'srchdomain'}); |
['directorysrch'],$srch->{'srchdomain'}); |
if (ref($dom_inst_srch{'directorysrch'}) eq 'HASH') { |
if (ref($dom_inst_srch{'directorysrch'}) eq 'HASH') { |
if (!$dom_inst_srch{'directorysrch'}{'available'}) { |
if (!$dom_inst_srch{'directorysrch'}{'available'}) { |
return &mt('Directory search unavailable in domain: [_1]',$srch->{'srchdomain'}); |
return &mt('Institutional directory search unavailable in domain: [_1]',$srch->{'srchdomain'}); |
} |
} |
if ($dom_inst_srch{'directorysrch'}{'localonly'}) { |
if ($dom_inst_srch{'directorysrch'}{'localonly'}) { |
if ($env{'request.role.domain'} ne $srch->{'srchdomain'}) { |
if ($env{'request.role.domain'} ne $srch->{'srchdomain'}) { |
return &mt('Directory search in domain: [_1] is only allowed for users with a current role in the domain.',$srch->{'srchdomain'}); |
return &mt('Insitutional directory search in domain: [_1] is only allowed for users with a current role in the domain.',$srch->{'srchdomain'}); |
} |
} |
my @usertypes = split(/:/,$env{'environment.inststatus'}); |
my @usertypes = split(/:/,$env{'environment.inststatus'}); |
if (!@usertypes) { |
if (!@usertypes) { |
Line 2379 sub directorysrch_check {
|
Line 2388 sub directorysrch_check {
|
return &mt('Directory search has not been configured for domain: [_1]',$srch->{'srchdomain'}); |
return &mt('Directory search has not been configured for domain: [_1]',$srch->{'srchdomain'}); |
} |
} |
my %longtext = &Apache::lonlocal::texthash ( |
my %longtext = &Apache::lonlocal::texthash ( |
uname => 'username', |
uname => 'username', |
lastfirst => 'last name, first name', |
lastfirst => 'last name, first name', |
lastname => 'last name', |
lastname => 'last name', |
contains => 'is contained in', |
contains => 'contains', |
exact => 'as exact match to' |
exact => 'as exact match to' |
); |
); |
if ($can_search) { |
if ($can_search) { |
if (ref($dom_inst_srch{'directorysrch'}{'searchby'}) eq 'ARRAY') { |
if (ref($dom_inst_srch{'directorysrch'}{'searchby'}) eq 'ARRAY') { |
if (!grep(/^\Q$srch->{'srchby'}\E$/,@{$dom_inst_srch{'directorysrch'}{'searchby'}})) { |
if (!grep(/^\Q$srch->{'srchby'}\E$/,@{$dom_inst_srch{'directorysrch'}{'searchby'}})) { |
return &mt('Directory search in domain: [_1] is not available for searching by [_2]',$srch->{'srchdomain'},$longtext{$srch->{'srchby'}}); |
return &mt('Directory search in domain: [_1] is not available for searching by "[_2]"',$srch->{'srchdomain'},$longtext{$srch->{'srchby'}}); |
} |
} |
} else { |
} else { |
return &mt('Directory search in domain: [_1] is not available.', $srch->{'srchdomain'}); |
return &mt('Directory search in domain: [_1] is not available.', $srch->{'srchdomain'}); |
Line 2399 sub directorysrch_check {
|
Line 2408 sub directorysrch_check {
|
($dom_inst_srch{'directorysrch'}{'searchtypes'} eq $srch->{'srchtype'})) { |
($dom_inst_srch{'directorysrch'}{'searchtypes'} eq $srch->{'srchtype'})) { |
return 'ok'; |
return 'ok'; |
} else { |
} else { |
return &mt('Directory search in domain [_1] is not available for the requested search type: [_2]',$srch->{'srchdomain'},$longtext{$srch->{'srchtype'}}); |
return &mt('Directory search in domain [_1] is not available for the requested search type: "[_2]"',$srch->{'srchdomain'},$longtext{$srch->{'srchtype'}}); |
} |
} |
} |
} |
} |
} |
Line 2407 sub directorysrch_check {
|
Line 2416 sub directorysrch_check {
|
|
|
sub get_courseusers { |
sub get_courseusers { |
my %advhash; |
my %advhash; |
|
my $classlist = &Apache::loncoursedata::get_classlist(); |
my %coursepersonnel=&Apache::lonnet::get_course_adv_roles(); |
my %coursepersonnel=&Apache::lonnet::get_course_adv_roles(); |
foreach my $role (sort(keys(%coursepersonnel))) { |
foreach my $role (sort(keys(%coursepersonnel))) { |
foreach my $user (split(/\,/,$coursepersonnel{$role})) { |
foreach my $user (split(/\,/,$coursepersonnel{$role})) { |
$advhash{$user} = ''; |
if (!exists($classlist->{$user})) { |
|
$classlist->{$user} = []; |
|
} |
} |
} |
} |
} |
my $classlist = &Apache::loncoursedata::get_classlist(); |
return $classlist; |
my %combined = (%advhash, %{$classlist}); |
|
return %combined; |
|
} |
} |
|
|
sub build_search_response { |
sub build_search_response { |
Line 2445 sub build_search_response {
|
Line 2455 sub build_search_response {
|
$state = 'modify'; |
$state = 'modify'; |
$response = &mt("$single{$srch->{'srchtype'}} was found for this $names{$srch->{'srchby'}} ([_1]) in $names{$srch->{'srchin'}}.",$srch->{'srchterm'}); |
$response = &mt("$single{$srch->{'srchtype'}} was found for this $names{$srch->{'srchby'}} ([_1]) in $names{$srch->{'srchin'}}.",$srch->{'srchterm'}); |
} else { |
} else { |
$response = &mt("$nomatch{$srch->{'srchtype'}} found for this $names{$srch->{'srchby'}} ([_1]) in $names{$srch->{'srchin'}}.",$srch->{'srchterm'}); |
$response = '<span class="LC_warning">'.&mt("$nomatch{$srch->{'srchtype'}} found for this $names{$srch->{'srchby'}} ([_1]) in $names{$srch->{'srchin'}}.",$srch->{'srchterm'}).'</span>'; |
if ($srch->{'srchin'} ne 'alc') { |
if ($srch->{'srchin'} ne 'alc') { |
$forcenewuser = 1; |
$forcenewuser = 1; |
my $cansrchinst = 0; |
my $cansrchinst = 0; |
Line 2467 sub build_search_response {
|
Line 2477 sub build_search_response {
|
} |
} |
} |
} |
} |
} |
$response .= '<br />'.&mt("To add as a new user:").'<ul><li>'.&mt("Enter the proposed username in the <i>'Search for'</i> box").'</li><li>'.&mt("Set <i>'Make new user if no match found</i>' to <b>Yes</b>").'</li><li>'.&mt("Click <i>'Search'</i>").'</li></ul>'.&mt("Note: you can only create new users in the domain of your current role -".$env{'request.role.domain'}).'<br /><br />'; |
|
} |
} |
} |
} |
} |
} |
Line 2563 sub course_level_table {
|
Line 2572 sub course_level_table {
|
$table .= '<td> </td>'; |
$table .= '<td> </td>'; |
} |
} |
$table .= <<ENDTIMEENTRY; |
$table .= <<ENDTIMEENTRY; |
<td><input type=hidden name="start_$protectedcourse\_$role" value='' /> |
<td><input type="hidden" name="start_$protectedcourse\_$role" value='' /> |
<a href= |
<a href= |
"javascript:pjump('date_start','Start Date $plrole',document.cu.start_$protectedcourse\_$role.value,'start_$protectedcourse\_$role','cu.pres','dateset')">$lt{'ssd'}</a></td> |
"javascript:pjump('date_start','Start Date $plrole',document.cu.start_$protectedcourse\_$role.value,'start_$protectedcourse\_$role','cu.pres','dateset')">$lt{'ssd'}</a></td> |
<td><input type=hidden name="end_$protectedcourse\_$role" value='' /> |
<td><input type="hidden" name="end_$protectedcourse\_$role" value='' /> |
<a href= |
<a href= |
"javascript:pjump('date_end','End Date $plrole',document.cu.end_$protectedcourse\_$role.value,'end_$protectedcourse\_$role','cu.pres','dateset')">$lt{'sed'}</a></td> |
"javascript:pjump('date_end','End Date $plrole',document.cu.end_$protectedcourse\_$role.value,'end_$protectedcourse\_$role','cu.pres','dateset')">$lt{'sed'}</a></td> |
ENDTIMEENTRY |
ENDTIMEENTRY |
Line 2599 ENDTIMEENTRY
|
Line 2608 ENDTIMEENTRY
|
'name="sec_'.$customrole.'" /></td>'; |
'name="sec_'.$customrole.'" /></td>'; |
} |
} |
$table .= <<ENDENTRY; |
$table .= <<ENDENTRY; |
<td><input type=hidden name="start_$customrole" value='' /> |
<td><input type="hidden" name="start_$customrole" value='' /> |
<a href= |
<a href= |
"javascript:pjump('date_start','Start Date $plrole',document.cu.start_$customrole.value,'start_$customrole','cu.pres','dateset')">$lt{'ssd'}</a></td> |
"javascript:pjump('date_start','Start Date $plrole',document.cu.start_$customrole.value,'start_$customrole','cu.pres','dateset')">$lt{'ssd'}</a></td> |
<td><input type=hidden name="end_$customrole" value='' /> |
<td><input type="hidden" name="end_$customrole" value='' /> |
<a href= |
<a href= |
"javascript:pjump('date_end','End Date $plrole',document.cu.end_$customrole.value,'end_$customrole','cu.pres','dateset')">$lt{'sed'}</a></td> |
"javascript:pjump('date_end','End Date $plrole',document.cu.end_$customrole.value,'end_$customrole','cu.pres','dateset')">$lt{'sed'}</a></td> |
ENDENTRY |
ENDENTRY |
Line 2694 sub course_level_dc {
|
Line 2703 sub course_level_dc {
|
'<input type="hidden" name="groups" value="" /></td>'. |
'<input type="hidden" name="groups" value="" /></td>'. |
'</tr></table></td>'; |
'</tr></table></td>'; |
$otheritems .= <<ENDTIMEENTRY; |
$otheritems .= <<ENDTIMEENTRY; |
<td><input type=hidden name="start" value='' /> |
<td><input type="hidden" name="start" value='' /> |
<a href= |
<a href= |
"javascript:pjump('date_start','Start Date',document.cu.start.value,'start','cu.pres','dateset')">$lt{'ssd'}</a></td> |
"javascript:pjump('date_start','Start Date',document.cu.start.value,'start','cu.pres','dateset')">$lt{'ssd'}</a></td> |
<td><input type=hidden name="end" value='' /> |
<td><input type="hidden" name="end" value='' /> |
<a href= |
<a href= |
"javascript:pjump('date_end','End Date',document.cu.end.value,'end','cu.pres','dateset')">$lt{'sed'}</a></td> |
"javascript:pjump('date_end','End Date',document.cu.end.value,'end','cu.pres','dateset')">$lt{'sed'}</a></td> |
ENDTIMEENTRY |
ENDTIMEENTRY |