version 1.179, 2007/08/26 21:09:43
|
version 1.184.2.1, 2007/10/03 13:45:58
|
Line 699 ENDFORMINFO
|
Line 699 ENDFORMINFO
|
if (($instsrch->{'srchterm'} ne '') && ($instsrch->{'srchdomain'} ne '')) { |
if (($instsrch->{'srchterm'} ne '') && ($instsrch->{'srchdomain'} ne '')) { |
$newuser = $instsrch->{'srchterm'}.':'.$instsrch->{'srchdomain'}; |
$newuser = $instsrch->{'srchterm'}.':'.$instsrch->{'srchdomain'}; |
} |
} |
my (%dirsrch_results,%inst_results); |
my (%dirsrch_results,%inst_results,$dirsrchres); |
if ($newuser) { |
if ($newuser) { |
if (&directorysrch_check($instsrch) eq 'ok') { |
if (&directorysrch_check($instsrch) eq 'ok') { |
%dirsrch_results = &Apache::lonnet::inst_directory_query($instsrch); |
($dirsrchres,%dirsrch_results) = &Apache::lonnet::inst_directory_query($instsrch); |
if (ref($dirsrch_results{$newuser}) eq 'HASH') { |
if ($dirsrchres eq 'ok') { |
%inst_results = %{$dirsrch_results{$newuser}}; |
if (ref($dirsrch_results{$newuser}) eq 'HASH') { |
|
%inst_results = %{$dirsrch_results{$newuser}}; |
|
} |
} |
} |
} |
} |
} |
} |
Line 1012 END
|
Line 1014 END
|
$loginscript = &Apache::loncommon::authform_header(%param); |
$loginscript = &Apache::loncommon::authform_header(%param); |
} |
} |
# Check for a bad authentication type |
# Check for a bad authentication type |
unless ($currentauth=~/^krb(4|5):/ or |
if ($currentauth !~ /^(krb4|krb5|unix|internal|localauth):/) { |
$currentauth=~/^unix:/ or |
# bad authentication scheme |
$currentauth=~/^internal:/ or |
|
$currentauth=~/^localauth:/ |
|
) { # bad authentication scheme |
|
if (&Apache::lonnet::allowed('mau',$ccdomain)) { |
if (&Apache::lonnet::allowed('mau',$ccdomain)) { |
&initialize_authen_forms(); |
&initialize_authen_forms(); |
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
Line 1111 $lt{'yodo'} $lt{'ifch'}: $ccdomain
|
Line 1110 $lt{'yodo'} $lt{'ifch'}: $ccdomain
|
ENDNOPRIV |
ENDNOPRIV |
} |
} |
} |
} |
if (&Apache::lonnet::allowed('mpq',$env{'request.role.domain'})) { |
|
# Current user has quota modification privileges |
|
$r->print(&portfolio_quota($ccuname,$ccdomain)); |
|
} |
|
} ## End of "check for bad authentication type" logic |
} ## End of "check for bad authentication type" logic |
|
if (&Apache::lonnet::allowed('mpq',$ccdomain)) { |
|
# Current user has quota modification privileges |
|
$r->print(&portfolio_quota($ccuname,$ccdomain)); |
|
} elsif (&Apache::lonnet::allowed('mpq',$env{'request.role.domain'})) { |
|
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", |
|
); |
|
$r->print(<<ENDNOPORTPRIV); |
|
<hr /> |
|
<h3>$lt{'dska'}</h3> |
|
$lt{'youd'} $lt{'ichr'}: $ccdomain |
|
ENDNOPORTPRIV |
|
} |
} ## End of new user/old user logic |
} ## End of new user/old user logic |
$r->print('<hr /><h3>'.&mt('Add Roles').'</h3>'); |
$r->print('<hr /><h3>'.&mt('Add Roles').'</h3>'); |
# |
# |
Line 1357 sub update_user_data {
|
Line 1367 sub update_user_data {
|
($env{'form.ccdomain'},$env{'form.ccuname'},$env{'form.cstid'}, |
($env{'form.ccdomain'},$env{'form.ccuname'},$env{'form.cstid'}, |
$amode,$genpwd,$env{'form.cfirst'}, |
$amode,$genpwd,$env{'form.cfirst'}, |
$env{'form.cmiddle'},$env{'form.clast'},$env{'form.cgen'}, |
$env{'form.cmiddle'},$env{'form.clast'},$env{'form.cgen'}, |
undef,$desiredhost |
undef,$desiredhost,$env{'form.cemail'} |
); |
); |
$r->print(&mt('Generating user').': '.$result); |
$r->print(&mt('Generating user').': '.$result); |
my $home = &Apache::lonnet::homeserver($env{'form.ccuname'}, |
my $home = &Apache::lonnet::homeserver($env{'form.ccuname'}, |
Line 2211 sub user_search_result {
|
Line 2221 sub user_search_result {
|
my %allhomes; |
my %allhomes; |
my %inst_matches; |
my %inst_matches; |
my %srch_results; |
my %srch_results; |
my ($response,$currstate,$forcenewuser); |
my ($response,$currstate,$forcenewuser,$dirsrchres); |
$srch->{'srchterm'} =~ s/^\s+//; |
$srch->{'srchterm'} =~ s/\s+/ /g; |
$srch->{'srchterm'} =~ s/\s+$//; |
|
|
|
if ($srch->{'srchby'} !~ /^(uname|lastname|lastfirst)$/) { |
if ($srch->{'srchby'} !~ /^(uname|lastname|lastfirst)$/) { |
$response = &mt('Invalid search.'); |
$response = &mt('Invalid search.'); |
} |
} |
Line 2227 sub user_search_result {
|
Line 2235 sub user_search_result {
|
if ($srch->{'srchterm'} eq '') { |
if ($srch->{'srchterm'} eq '') { |
$response = &mt('You must enter a search term.'); |
$response = &mt('You must enter a search term.'); |
} |
} |
|
if ($srch->{'srchterm'} =~ /^\s+$/) { |
|
$response = &mt('Your search term must contain more than just spaces.'); |
|
} |
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 '') || |
! (&Apache::lonnet::domain($srch->{'srchdomain'}))) { |
! (&Apache::lonnet::domain($srch->{'srchdomain'}))) { |
Line 2241 sub user_search_result {
|
Line 2252 sub user_search_result {
|
} |
} |
} |
} |
} |
} |
|
if ($response ne '') { |
|
$response = '<span class="LC_warning">'.$response.'</span>'; |
|
} |
if ($srch->{'srchin'} eq 'instd') { |
if ($srch->{'srchin'} eq 'instd') { |
my $instd_chk = &directorysrch_check($srch); |
my $instd_chk = &directorysrch_check($srch); |
if ($instd_chk ne 'ok') { |
if ($instd_chk ne 'ok') { |
$response = $instd_chk; |
$response = '<span class="LC_warning">'.$instd_chk.'</span>'. |
|
'<br />'.&mt('You may want to search in the LON-CAPA domain instead of the institutional directory.').'<br /><br />'; |
} |
} |
} |
} |
if ($response ne '') { |
if ($response ne '') { |
return ($currstate,'<span class="LC_warning">'.$response.'</span>'); |
return ($currstate,$response); |
} |
} |
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 2257 sub user_search_result {
|
Line 2272 sub user_search_result {
|
my $uhome=&Apache::lonnet::homeserver($srch->{'srchterm'},$srch->{'srchdomain'}); |
my $uhome=&Apache::lonnet::homeserver($srch->{'srchterm'},$srch->{'srchdomain'}); |
if ($uhome eq 'no_host') { |
if ($uhome eq 'no_host') { |
my $domdesc = &Apache::lonnet::domain($env{'request.role.domain'},'description'); |
my $domdesc = &Apache::lonnet::domain($env{'request.role.domain'},'description'); |
$response = &mt('New users can only be created in the domain to which you current role belongs - [_1].',$env{'request.role.domain'}.' ('.$domdesc.')'); |
my $showdom = &display_domain_info($env{'request.role.domain'}); |
|
$response = &mt('New users can only be created in the domain to which your current role belongs - [_1].',$showdom); |
} else { |
} else { |
$currstate = 'modify'; |
$currstate = 'modify'; |
} |
} |
Line 2319 sub user_search_result {
|
Line 2335 sub user_search_result {
|
} elsif ($srch->{'srchin'} eq 'alc') { |
} elsif ($srch->{'srchin'} eq 'alc') { |
$currstate = 'query'; |
$currstate = 'query'; |
} elsif ($srch->{'srchin'} eq 'instd') { |
} elsif ($srch->{'srchin'} eq 'instd') { |
%srch_results = &Apache::lonnet::inst_directory_query($srch); |
($dirsrchres,%srch_results) = &Apache::lonnet::inst_directory_query($srch); |
($currstate,$response,$forcenewuser) = |
if ($dirsrchres eq 'ok') { |
&build_search_response($srch,%srch_results); |
($currstate,$response,$forcenewuser) = |
|
&build_search_response($srch,%srch_results); |
|
} else { |
|
my $showdom = &display_domain_info($srch->{'srchdomain'}); |
|
$response = '<span class="LC_warning">'. |
|
&mt('Institutional directory search is not available in domain: [_1]',$showdom). |
|
'</span><br />'. |
|
&mt('You may want to search in the LON-CAPA domain instead of the institutional directory.'). |
|
'<br /><br />'; |
|
} |
} |
} |
} else { |
} else { |
if ($srch->{'srchin'} eq 'dom') { |
if ($srch->{'srchin'} eq 'dom') { |
Line 2383 sub user_search_result {
|
Line 2408 sub user_search_result {
|
} elsif ($srch->{'srchin'} eq 'alc') { |
} elsif ($srch->{'srchin'} eq 'alc') { |
$currstate = 'query'; |
$currstate = 'query'; |
} elsif ($srch->{'srchin'} eq 'instd') { |
} elsif ($srch->{'srchin'} eq 'instd') { |
%srch_results = &Apache::lonnet::inst_directory_query($srch); |
($dirsrchres,%srch_results) = &Apache::lonnet::inst_directory_query($srch); |
($currstate,$response,$forcenewuser) = |
if ($dirsrchres eq 'ok') { |
&build_search_response($srch,%srch_results); |
($currstate,$response,$forcenewuser) = |
|
&build_search_response($srch,%srch_results); |
|
} else { |
|
my $showdom = &display_domain_info($srch->{'srchdomain'}); $response = '<span class="LC_warning">'. |
|
&mt('Institutional directory search is not available in domain: [_1]',$showdom). |
|
'</span><br />'. |
|
&mt('You may want to search in the LON-CAPA domain instead of the institutional directory.'). |
|
'<br /><br />'; |
|
} |
} |
} |
} |
} |
return ($currstate,$response,$forcenewuser,\%srch_results); |
return ($currstate,$response,$forcenewuser,\%srch_results); |
Line 2397 sub directorysrch_check {
|
Line 2430 sub directorysrch_check {
|
my $response; |
my $response; |
my %dom_inst_srch = &Apache::lonnet::get_dom('configuration', |
my %dom_inst_srch = &Apache::lonnet::get_dom('configuration', |
['directorysrch'],$srch->{'srchdomain'}); |
['directorysrch'],$srch->{'srchdomain'}); |
|
my $showdom = &display_domain_info($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('Institutional directory search unavailable in domain: [_1]',$srch->{'srchdomain'}); |
return &mt('Institutional directory search is not available in domain: [_1]',$showdom); |
} |
} |
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('Insitutional directory search in domain: [_1] is only allowed for users with a current role in the domain.',$srch->{'srchdomain'}); |
return &mt('Institutional directory search in domain: [_1] is only allowed for users with a current role in the domain.',$showdom); |
} |
} |
my @usertypes = split(/:/,$env{'environment.inststatus'}); |
my @usertypes = split(/:/,$env{'environment.inststatus'}); |
if (!@usertypes) { |
if (!@usertypes) { |
Line 2424 sub directorysrch_check {
|
Line 2458 sub directorysrch_check {
|
push (@longtypes,$insttypes->{$item}); |
push (@longtypes,$insttypes->{$item}); |
} |
} |
my $insttype_str = join(', ',@longtypes); |
my $insttype_str = join(', ',@longtypes); |
return &mt('Directory search in domain: [_1] is unavailable to your user type: ',$srch->{'srchdomain'}).$insttype_str; |
return &mt('Institutional directory search in domain: [_1] is not available to your user type: ',$showdom).$insttype_str; |
} |
} |
} else { |
} else { |
$can_search = 1; |
$can_search = 1; |
} |
} |
} else { |
} else { |
return &mt('Directory search has not been configured for domain: [_1]',$srch->{'srchdomain'}); |
return &mt('Institutional directory search has not been configured for domain: [_1]',$showdom); |
} |
} |
my %longtext = &Apache::lonlocal::texthash ( |
my %longtext = &Apache::lonlocal::texthash ( |
uname => 'username', |
uname => 'username', |
Line 2443 sub directorysrch_check {
|
Line 2477 sub directorysrch_check {
|
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('Institutional directory search in domain: [_1] is not available for searching by "[_2]"',$showdom,$longtext{$srch->{'srchby'}}); |
} |
} |
} else { |
} else { |
return &mt('Directory search in domain: [_1] is not available.', $srch->{'srchdomain'}); |
return &mt('Institutional directory search in domain: [_1] is not available.', $showdom); |
} |
} |
} |
} |
if ($can_search) { |
if ($can_search) { |
Line 2454 sub directorysrch_check {
|
Line 2488 sub directorysrch_check {
|
if (grep(/^\Q$srch->{'srchtype'}\E/,@{$dom_inst_srch{'directorysrch'}{'searchtypes'}})) { |
if (grep(/^\Q$srch->{'srchtype'}\E/,@{$dom_inst_srch{'directorysrch'}{'searchtypes'}})) { |
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('Institutional directory search in domain [_1] is not available for the requested search type: "[_2]"',$showdom,$longtext{$srch->{'srchtype'}}); |
} |
} |
} else { |
} else { |
if ((($dom_inst_srch{'directorysrch'}{'searchtypes'} eq 'specify') && |
if ((($dom_inst_srch{'directorysrch'}{'searchtypes'} eq 'specify') && |
Line 2462 sub directorysrch_check {
|
Line 2496 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('Institutional directory search in domain [_1] is not available for the requested search type: "[_2]"',$showdom,$longtext{$srch->{'srchtype'}}); |
} |
} |
} |
} |
} |
} |
Line 2491 sub build_search_response {
|
Line 2525 sub build_search_response {
|
'lastname' => 'last name', |
'lastname' => 'last name', |
'lastfirst' => 'last name, first name', |
'lastfirst' => 'last name, first name', |
'crs' => 'this course', |
'crs' => 'this course', |
'dom' => 'this domain', |
'dom' => 'LON-CAPA domain: ', |
'instd' => "your institution's directory", |
'instd' => 'the institutional directory for domain: ', |
); |
); |
|
|
my %single = ( |
my %single = ( |
|
begins => 'A match', |
contains => 'A match', |
contains => 'A match', |
exact => 'An exact match', |
exact => 'An exact match', |
); |
); |
my %nomatch = ( |
my %nomatch = ( |
|
begins => 'No match', |
contains => 'No match', |
contains => 'No match', |
exact => 'No exact match', |
exact => 'No exact match', |
); |
); |
if (keys(%srch_results) > 1) { |
if (keys(%srch_results) > 1) { |
$currstate = 'select'; |
$currstate = 'select'; |
} else { |
} else { |
if (keys(%srch_results) == 1) { |
if (keys(%srch_results) == 1) { |
$currstate = 'modify'; |
$currstate = '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 the $names{$srch->{'srchby'}} ([_1]) in $names{$srch->{'srchin'}}.",$srch->{'srchterm'}); |
|
if ($srch->{'srchin'} eq 'dom' || $srch->{'srchin'} eq 'instd') { |
|
$response .= &display_domain_info($srch->{'srchdomain'}); |
|
} |
} else { |
} else { |
$response = '<span class="LC_warning">'.&mt("$nomatch{$srch->{'srchtype'}} found for this $names{$srch->{'srchby'}} ([_1]) in $names{$srch->{'srchin'}}.",$srch->{'srchterm'}).'</span>'; |
$response = '<span class="LC_warning">'.&mt("$nomatch{$srch->{'srchtype'}} found for the $names{$srch->{'srchby'}} ([_1]) in $names{$srch->{'srchin'}}",$srch->{'srchterm'}); |
|
if ($srch->{'srchin'} eq 'dom' || $srch->{'srchin'} eq 'instd') { |
|
$response .= &display_domain_info($srch->{'srchdomain'}); |
|
} |
|
$response .= '</span>'; |
if ($srch->{'srchin'} ne 'alc') { |
if ($srch->{'srchin'} ne 'alc') { |
$forcenewuser = 1; |
$forcenewuser = 1; |
my $cansrchinst = 0; |
my $cansrchinst = 0; |
Line 2522 sub build_search_response {
|
Line 2565 sub build_search_response {
|
} |
} |
} |
} |
} |
} |
if (($srch->{'srchby'} eq 'lastfirst') || |
if ((($srch->{'srchby'} eq 'lastfirst') || |
($srch->{'srchby'} eq 'lastname')) { |
($srch->{'srchby'} eq 'lastname')) && |
if ($srch->{'srchin'} eq 'crs') { |
($srch->{'srchin'} eq 'dom')) { |
$response .= '<br />'.&mt('You may want to broaden your search to the whole domain.'); |
if ($cansrchinst) { |
} elsif ($srch->{'srchin'} eq 'dom') { |
$response .= '<br />'.&mt('You may want to broaden your search to a search of the institutional directory for the domain.'); |
if ($cansrchinst) { |
|
$response .= '<br />'.&mt('You may want to broaden your search to a search of the institutional directory for this domain.'); |
|
} |
|
} |
} |
} |
} |
|
if ($srch->{'srchin'} eq 'crs') { |
|
$response .= '<br />'.&mt('You may want to broaden your search to the selected LON-CAPA domain.'); |
|
} |
|
} |
|
if (!($srch->{'srchby'} eq 'uname' && $srch->{'srchin'} eq 'dom' && $srch->{'srchtype'} eq 'exact' && $srch->{'srchdomain'} eq $env{'request.role.domain'})) { |
|
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 />'; |
} |
} |
} |
} |
} |
} |
return ($currstate,$response,$forcenewuser); |
return ($currstate,$response,$forcenewuser); |
} |
} |
|
|
|
sub display_domain_info { |
|
my ($dom) = @_; |
|
my $output = $dom; |
|
if ($dom ne '') { |
|
my $domdesc = &Apache::lonnet::domain($dom,'description'); |
|
if ($domdesc ne '') { |
|
$output .= ' <span class="LC_cusr_emph">('.$domdesc.')</span>'; |
|
} |
|
} |
|
return $output; |
|
} |
|
|
sub crumb_utilities { |
sub crumb_utilities { |
my %elements = ( |
my %elements = ( |
crtuser => { |
crtuser => { |