version 1.129, 2010/11/01 18:19:01
|
version 1.136.6.2, 2012/02/08 19:35:20
|
Line 342 sub print_upload_manager_header {
|
Line 342 sub print_upload_manager_header {
|
."</p>\n"); |
."</p>\n"); |
$r->print('<div class="LC_left_float"><h3>'. |
$r->print('<div class="LC_left_float"><h3>'. |
&mt('Identify fields in uploaded list')."</h3>\n"); |
&mt('Identify fields in uploaded list')."</h3>\n"); |
$r->print(&mt('Enter as many fields as you can.<br /> The system will inform you and bring you back to this page, <br /> if the data selected are insufficient to add users.')."<br />\n"); |
$r->print(&mt('Enter as many fields as you can.').'<br />'. |
|
&mt('The system will inform you and bring you back to this page, [_1]if the data selected are insufficient to add users.','<br />')."<br />\n"); |
$r->print(&hidden_input('action','upload'). |
$r->print(&hidden_input('action','upload'). |
&hidden_input('state','got_file'). |
&hidden_input('state','got_file'). |
&hidden_input('associate',''). |
&hidden_input('associate',''). |
Line 534 END
|
Line 535 END
|
if (message!='') { |
if (message!='') { |
message+='\\n'; |
message+='\\n'; |
} |
} |
|
message+='$alert{'section'}'; |
} |
} |
if (foundemail==0) { |
if (foundemail==0) { |
if (message!='') { |
if (message!='') { |
Line 588 END
|
Line 590 END
|
############################################################### |
############################################################### |
sub upload_manager_javascript_forward_associate { |
sub upload_manager_javascript_forward_associate { |
my ($can_assign) = @_; |
my ($can_assign) = @_; |
my $auth_update; |
my ($auth_update,$numbuttons,$argreset); |
if (ref($can_assign) eq 'HASH') { |
if (ref($can_assign) eq 'HASH') { |
if (keys(%{$can_assign}) > 1) { |
if ($can_assign->{'krb4'} || $can_assign->{'krb5'}) { |
|
$argreset .= " vf.krbarg.value='';\n"; |
|
$numbuttons ++ ; |
|
} |
|
if ($can_assign->{'int'}) { |
|
$argreset .= " vf.intarg.value='';\n"; |
|
$numbuttons ++; |
|
} |
|
if ($can_assign->{'loc'}) { |
|
$argreset .= " vf.locarg.value='';\n"; |
|
$numbuttons ++; |
|
} |
|
if (!$can_assign->{'int'}) { |
|
my $warning = &mt('You may not specify an initial password for each user, as this is only available when new users use LON-CAPA internal authentication.\n'). |
|
&mt('Your current role does not have rights to create users with that authentication type.'); |
|
$auth_update = <<"END"; |
|
// Currently the initial password field is only supported for internal auth |
|
// (see bug 6368). |
|
if (nw==9) { |
|
eval('vf.f'+tf+'.selectedIndex=0;') |
|
alert('$warning'); |
|
} |
|
END |
|
} elsif ($numbuttons > 1) { |
$auth_update = <<"END"; |
$auth_update = <<"END"; |
// If we set the password, make the password form below correspond to |
// If we set the password, make the password form below correspond to |
// the new value. |
// the new value. |
if (nw==9) { |
if (nw==9) { |
changed_radio('int',document.studentform); |
changed_radio('int',document.studentform); |
set_auth_radio_buttons('int',document.studentform); |
set_auth_radio_buttons('int',document.studentform); |
|
$argreset |
|
} |
|
|
END |
END |
} |
} |
if ($can_assign->{'krb4'} || $can_assign->{'krb5'}) { |
|
$auth_update .= " vf.krbarg.value='';\n"; |
|
} |
|
if ($can_assign->{'int'}) { |
|
$auth_update .= " vf.intarg.value='';\n"; |
|
} |
|
if ($can_assign->{'loc'}) { |
|
$auth_update .= " vf.locarg.value='';\n"; |
|
} |
|
$auth_update .= " |
|
}\n"; |
|
} |
} |
|
|
return(<<ENDPICK); |
return(<<ENDPICK); |
Line 707 ENDPICK
|
Line 724 ENDPICK
|
############################################################### |
############################################################### |
sub upload_manager_javascript_reverse_associate { |
sub upload_manager_javascript_reverse_associate { |
my ($can_assign) = @_; |
my ($can_assign) = @_; |
my $auth_update; |
my ($auth_update,$numbuttons,$argreset); |
if (ref($can_assign) eq 'HASH') { |
if (ref($can_assign) eq 'HASH') { |
if (keys(%{$can_assign}) > 1) { |
if ($can_assign->{'krb4'} || $can_assign->{'krb5'}) { |
|
$argreset .= " vf.krbarg.value='';\n"; |
|
$numbuttons ++ ; |
|
} |
|
if ($can_assign->{'int'}) { |
|
$argreset .= " vf.intarg.value='';\n"; |
|
$numbuttons ++; |
|
} |
|
if ($can_assign->{'loc'}) { |
|
$argreset .= " vf.locarg.value='';\n"; |
|
$numbuttons ++; |
|
} |
|
if (!$can_assign->{'int'}) { |
|
my $warning = &mt('You may not specify an initial password, as this is only available when new users use LON-CAPA internal authentication.\n'). |
|
&mt('Your current role does not have rights to create users with that authentication type.'); |
|
$auth_update = <<"END"; |
|
// Currently the initial password field is only supported for internal auth |
|
// (see bug 6368). |
|
if (tf==8 && nw!=0) { |
|
eval('vf.f'+tf+'.selectedIndex=0;') |
|
alert('$warning'); |
|
} |
|
END |
|
} elsif ($numbuttons > 1) { |
$auth_update = <<"END"; |
$auth_update = <<"END"; |
// initial password specified, pick internal authentication |
// initial password specified, pick internal authentication |
if (tf==8 && nw!=0) { |
if (tf==8 && nw!=0) { |
changed_radio('int',document.studentform); |
changed_radio('int',document.studentform); |
set_auth_radio_buttons('int',document.studentform); |
set_auth_radio_buttons('int',document.studentform); |
|
$argreset |
|
} |
|
|
END |
END |
} |
} |
if ($can_assign->{'krb'}) { |
|
$auth_update .= " vf.krbarg.value='';\n"; |
|
} |
|
if ($can_assign->{'int'}) { |
|
$auth_update .= " vf.intarg.value='';\n"; |
|
} |
|
if ($can_assign->{'loc'}) { |
|
$auth_update .= " vf.locarg.value='';\n"; |
|
} |
|
$auth_update .= " |
|
}\n"; |
|
} |
} |
|
|
return(<<ENDPICK); |
return(<<ENDPICK); |
function verify(vf,sec_caller) { |
function verify(vf,sec_caller) { |
var founduname=0; |
var founduname=0; |
Line 736 function verify(vf,sec_caller) {
|
Line 769 function verify(vf,sec_caller) {
|
var foundname=0; |
var foundname=0; |
var foundid=0; |
var foundid=0; |
var foundsec=0; |
var foundsec=0; |
|
var foundemail=0; |
var foundrole=0; |
var foundrole=0; |
var founddomain=0; |
var founddomain=0; |
var foundinststatus=0; |
var foundinststatus=0; |
Line 747 function verify(vf,sec_caller) {
|
Line 781 function verify(vf,sec_caller) {
|
if (i==6 && tw!=0) { foundid=1; } |
if (i==6 && tw!=0) { foundid=1; } |
if (i==7 && tw!=0) { foundsec=1; } |
if (i==7 && tw!=0) { foundsec=1; } |
if (i==8 && tw!=0) { foundpwd=1; } |
if (i==8 && tw!=0) { foundpwd=1; } |
if (i==9 && tw!=0) { foundrole=1; } |
if (i==9 && tw!=0) { foundemail=1; } |
if (i==10 && tw!=0) { founddomain=1; } |
if (i==10 && tw!=0) { foundrole=1; } |
if (i==13 && tw!=0) { foundinstatus=1; } |
if (i==11 && tw!=0) { founddomain=1; } |
|
if (i==12 && tw!=0) { foundinstatus=1; } |
} |
} |
verify_message(vf,founduname,foundpwd,foundname,foundid,foundsec,foundrole,founddomain,foundinststatus); |
verify_message(vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail,foundrole,founddomain,foundinststatus); |
} |
} |
|
|
function flip(vf,tf) { |
function flip(vf,tf) { |
Line 2287 END
|
Line 2322 END
|
'type' => "enroll type/action", |
'type' => "enroll type/action", |
'email' => "e-mail address", |
'email' => "e-mail address", |
'photo' => "photo", |
'photo' => "photo", |
|
'lastlogin' => "last login" |
'extent' => "extent", |
'extent' => "extent", |
'pr' => "Proceed", |
'pr' => "Proceed", |
'ca' => "check all", |
'ca' => "check all", |
Line 2335 END
|
Line 2371 END
|
push(@cols,'groups'); |
push(@cols,'groups'); |
} |
} |
push(@cols,'email'); |
push(@cols,'email'); |
|
if ($context eq 'course') { |
|
push(@cols,'lastlogin'); |
|
} |
} |
} |
|
|
my $rolefilter = $env{'form.showrole'}; |
my $rolefilter = $env{'form.showrole'}; |
Line 2559 END
|
Line 2598 END
|
Future => 'Future', |
Future => 'Future', |
Expired => 'Expired', |
Expired => 'Expired', |
); |
); |
|
# If this is for a single course get last course "log-in". |
|
my %crslogins; |
|
if ($context eq 'course') { |
|
%crslogins=&Apache::lonnet::dump('nohist_crslastlogin',$cdom,$cnum); |
|
} |
# Get groups, role, permanent e-mail so we can sort on them if |
# Get groups, role, permanent e-mail so we can sort on them if |
# necessary. |
# necessary. |
foreach my $user (keys(%{$userlist})) { |
foreach my $user (keys(%{$userlist})) { |
Line 2695 END
|
Line 2739 END
|
$in{'clicker'} = $clickers; |
$in{'clicker'} = $clickers; |
my $role = $in{'role'}; |
my $role = $in{'role'}; |
$in{'role'}=&Apache::lonnet::plaintext($sdata->[$index{'role'}],$crstype); |
$in{'role'}=&Apache::lonnet::plaintext($sdata->[$index{'role'}],$crstype); |
if (! defined($in{'start'}) || $in{'start'} == 0) { |
unless ($mode eq 'excel') { |
$in{'start'} = &mt('none'); |
if (! defined($in{'start'}) || $in{'start'} == 0) { |
} else { |
$in{'start'} = &mt('none'); |
$in{'start'} = &Apache::lonlocal::locallocaltime($in{'start'}); |
} else { |
|
$in{'start'} = &Apache::lonlocal::locallocaltime($in{'start'}); |
|
} |
|
if (! defined($in{'end'}) || $in{'end'} == 0) { |
|
$in{'end'} = &mt('none'); |
|
} else { |
|
$in{'end'} = &Apache::lonlocal::locallocaltime($in{'end'}); |
|
} |
} |
} |
if (! defined($in{'end'}) || $in{'end'} == 0) { |
if ($context eq 'course') { |
$in{'end'} = &mt('none'); |
my $lastlogin = $crslogins{$in{'username'}.':'.$in{'domain'}.':'.$in{'section'}.':'.$role}; |
} else { |
if ($lastlogin ne '') { |
$in{'end'} = &Apache::lonlocal::locallocaltime($in{'end'}); |
$in{'lastlogin'} = &Apache::lonlocal::locallocaltime($lastlogin); |
|
} |
} |
} |
if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll' || $mode eq 'pickauthor') { |
if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll' || $mode eq 'pickauthor') { |
$r->print(&Apache::loncommon::start_data_table_row()); |
$r->print(&Apache::loncommon::start_data_table_row()); |
Line 2805 END
|
Line 2857 END
|
} elsif ($mode eq 'csv') { |
} elsif ($mode eq 'csv') { |
next if (! defined($CSVfile)); |
next if (! defined($CSVfile)); |
# no need to bother with $linkto |
# no need to bother with $linkto |
if (! defined($in{'start'}) || $in{'start'} == 0) { |
|
$in{'start'} = &mt('none'); |
|
} else { |
|
$in{'start'} = &Apache::lonlocal::locallocaltime($in{'start'}); |
|
} |
|
if (! defined($in{'end'}) || $in{'end'} == 0) { |
|
$in{'end'} = &mt('none'); |
|
} else { |
|
$in{'end'} = &Apache::lonlocal::locallocaltime($in{'end'}); |
|
} |
|
my @line = (); |
my @line = (); |
foreach my $item (@cols) { |
foreach my $item (@cols) { |
push @line,&Apache::loncommon::csv_translate($in{$item}); |
push @line,&Apache::loncommon::csv_translate($in{$item}); |
Line 2824 END
|
Line 2866 END
|
my $col = 0; |
my $col = 0; |
foreach my $item (@cols) { |
foreach my $item (@cols) { |
if ($item eq 'start' || $item eq 'end') { |
if ($item eq 'start' || $item eq 'end') { |
if (defined($item) && $item != 0) { |
if ((defined($in{$item})) && ($in{$item} != 0)) { |
$excel_sheet->write($row,$col++, |
$excel_sheet->write($row,$col++, |
&Apache::lonstathelpers::calc_serial($in{item}), |
&Apache::lonstathelpers::calc_serial($in{$item}), |
$format->{'date'}); |
$format->{'date'}); |
} else { |
} else { |
$excel_sheet->write($row,$col++,'none'); |
$excel_sheet->write($row,$col++,'none'); |
Line 3966 sub upfile_drop_add {
|
Line 4008 sub upfile_drop_add {
|
official => 'Institutional', |
official => 'Institutional', |
unofficial => 'Non-institutional', |
unofficial => 'Non-institutional', |
); |
); |
map { $cancreate{$_} = &can_create_user($domain,$context,$_); } keys(%longtypes); |
my $newuserdom = $env{'request.role.domain'}; |
|
map { $cancreate{$_} = &can_create_user($newuserdom,$context,$_); } keys(%longtypes); |
# Get new users list |
# Get new users list |
foreach my $line (@userdata) { |
foreach my $line (@userdata) { |
my @secs; |
my @secs; |
Line 4121 sub upfile_drop_add {
|
Line 4164 sub upfile_drop_add {
|
my (%rulematch,%inst_results,%idinst_results); |
my (%rulematch,%inst_results,%idinst_results); |
my $uhome=&Apache::lonnet::homeserver($username,$userdomain); |
my $uhome=&Apache::lonnet::homeserver($username,$userdomain); |
if ($uhome eq 'no_host') { |
if ($uhome eq 'no_host') { |
if ($userdomain ne $domain) { |
if ($userdomain ne $newuserdom) { |
$r->print('<br />'. |
if ($context eq 'course') { |
&mt('[_1]: The domain specified ([_2]) is different to that of the course.', |
$r->print('<br />'. |
'<b>'.$username.'</b>',$userdomain).'<br />'. |
&mt('[_1]: The domain specified ([_2]) is different to that of the course.', |
&mt('The user does not already exist, and you may not create a new user in a different domain.')); |
'<b>'.$username.'</b>',$userdomain).'<br />'); |
|
} elsif ($context eq 'author') { |
|
$r->print(&mt('[_1]: The domain specified ([_2]) is different to that of the author.', |
|
'<b>'.$username.'</b>',$userdomain).'<br />'); |
|
} else { |
|
$r->print(&mt('[_1]: The domain specified ([_2]) is different to that of your current role.', |
|
'<b>'.$username.'</b>',$userdomain).'<br />'); |
|
} |
|
$r->print(&mt('The user does not already exist, and you may not create a new user in a different domain.')); |
next; |
next; |
} |
} |
$checkid = 1; |
$checkid = 1; |
$newuser = 1; |
$newuser = 1; |
my $user = $username.':'.$domain; |
if ($username =~/^[^\@]+\@[^\@]+$/) { |
|
if ($email eq '') { |
|
$email = $username; |
|
} |
|
my $lc_email; |
|
if ($username eq $email) { |
|
$lc_email = lc($email); |
|
} |
|
my $lc_username = lc($username); |
|
if ($lc_username ne $username) { |
|
if ($username eq $email) { |
|
$email = $lc_username; |
|
} |
|
$username = $lc_username; |
|
$uhome=&Apache::lonnet::homeserver($username,$userdomain); |
|
if ($uhome ne 'no_host') { |
|
$newuser = 0; |
|
} |
|
} |
|
} |
|
} |
|
my $user = $username.':'.$newuserdom; |
|
if ($newuser) { |
my $checkhash; |
my $checkhash; |
my $checks = { 'username' => 1 }; |
my $checks = { 'username' => 1 }; |
$checkhash->{$username.':'.$domain} = { 'newuser' => 1, }; |
$checkhash->{$user} = { 'newuser' => 1, }; |
&Apache::loncommon::user_rule_check($checkhash,$checks, |
&Apache::loncommon::user_rule_check($checkhash,$checks, |
\%alerts,\%rulematch,\%inst_results,\%curr_rules, |
\%alerts,\%rulematch,\%inst_results,\%curr_rules, |
\%got_rules); |
\%got_rules); |
if (ref($alerts{'username'}) eq 'HASH') { |
if (ref($alerts{'username'}) eq 'HASH') { |
if (ref($alerts{'username'}{$domain}) eq 'HASH') { |
if (ref($alerts{'username'}{$newuserdom}) eq 'HASH') { |
if ($alerts{'username'}{$domain}{$username}) { |
if ($alerts{'username'}{$newuserdom}{$username}) { |
$r->print('<br />'. |
$r->print('<br />'. |
&mt('[_1]: matches the username format at your institution, but is not known to your directory service.','<b>'.$username.'</b>').'<br />'. |
&mt('[_1]: matches the username format at your institution, but is not known to your directory service.','<b>'.$username.'</b>').'<br />'. |
&mt('Consequently, the user was not created.')); |
&mt('Consequently, the user was not created.')); |
Line 4155 sub upfile_drop_add {
|
Line 4228 sub upfile_drop_add {
|
} |
} |
unless ($cancreate{$usertype}) { |
unless ($cancreate{$usertype}) { |
my $showtype = $longtypes{$usertype}; |
my $showtype = $longtypes{$usertype}; |
$r->print('<br />'. |
if ($usertype eq 'unofficial') { |
&mt("[_1]: The user does not exist, and you are not permitted to create users of type: $showtype.",'<b>'.$username.'</b>')); |
$r->print('<br />'. |
|
&mt("[_1]: The user does not exist, and the new user's username must be an e-mail address.",'<b>'.$username.'</b>')); |
|
} else { |
|
$r->print('<br />'. |
|
&mt("[_1]: The user does not exist, and you are not permitted to create users of type: [_2].",'<b>'.$username.'</b>',$showtype)); |
|
} |
next; |
next; |
} |
} |
} else { |
} else { |
Line 5237 sub can_modify_userinfo {
|
Line 5315 sub can_modify_userinfo {
|
} |
} |
|
|
sub check_usertype { |
sub check_usertype { |
my ($dom,$uname,$rules) = @_; |
my ($dom,$uname,$rules,$curr_rules,$got_rules) = @_; |
my $usertype; |
my $usertype; |
if (ref($rules) eq 'HASH') { |
if ((ref($got_rules) eq 'HASH') && (ref($curr_rules) eq 'HASH')) { |
my @user_rules = keys(%{$rules}); |
if (!$got_rules->{$dom}) { |
if (@user_rules > 0) { |
my %domconfig = &Apache::lonnet::get_dom('configuration', |
my %rule_check = &Apache::lonnet::inst_rulecheck($dom,$uname,undef,'username',\@user_rules); |
['usercreation'],$dom); |
if (keys(%rule_check) > 0) { |
if (ref($domconfig{'usercreation'}) eq 'HASH') { |
$usertype = 'unofficial'; |
foreach my $item ('username','id') { |
foreach my $item (keys(%rule_check)) { |
if (ref($domconfig{'usercreation'}{$item.'_rule'}) eq 'ARRAY') { |
if ($rule_check{$item}) { |
$curr_rules->{$dom}{$item} = |
$usertype = 'official'; |
$domconfig{'usercreation'}{$item.'_rule'}; |
last; |
} |
|
} |
|
} |
|
$got_rules->{$dom} = 1; |
|
} |
|
if (ref($rules) eq 'HASH') { |
|
my @user_rules; |
|
if (ref($curr_rules->{$dom}{'username'}) eq 'ARRAY') { |
|
foreach my $rule (keys(%{$rules})) { |
|
if (grep(/^\Q$rule\E/,@{$curr_rules->{$dom}{'username'}})) { |
|
push(@user_rules,$rule); |
|
} |
|
} |
|
} |
|
if (@user_rules > 0) { |
|
my %rule_check = &Apache::lonnet::inst_rulecheck($dom,$uname,undef,'username',\@user_rules); |
|
if (keys(%rule_check) > 0) { |
|
$usertype = 'unofficial'; |
|
foreach my $item (keys(%rule_check)) { |
|
if ($rule_check{$item}) { |
|
$usertype = 'official'; |
|
last; |
|
} |
} |
} |
} |
} |
} |
} |