version 1.181, 2017/01/18 21:07:31
|
version 1.184.4.4, 2019/08/22 19:31:20
|
Line 438 sub javascript_validations {
|
Line 438 sub javascript_validations {
|
} elsif ($context eq 'domain') { |
} elsif ($context eq 'domain') { |
$setsection_call = 'setCourse()'; |
$setsection_call = 'setCourse()'; |
$setsections_js = &dc_setcourse_js($param{'formname'},$mode, |
$setsections_js = &dc_setcourse_js($param{'formname'},$mode, |
$context,$showcredits); |
$context,$showcredits,$domain); |
} |
} |
$finish = " var checkSec = $setsection_call\n". |
$finish = " var checkSec = $setsection_call\n". |
" if (checkSec == 'ok') {\n". |
" if (checkSec == 'ok') {\n". |
Line 531 END
|
Line 531 END
|
/* regexp here to check for non \d \. in credits */ |
/* regexp here to check for non \d \. in credits */ |
END |
END |
} else { |
} else { |
|
my ($numrules,$intargjs) = |
|
&passwd_validation_js('vf.elements[current.argfield].value',$domain); |
$auth_checks .= (<<END); |
$auth_checks .= (<<END); |
foundatype=1; |
foundatype=1; |
if (current.argfield == null || current.argfield == '') { |
if (current.argfield == null || current.argfield == '') { |
|
// The login radiobutton checked does not have an associated textbox |
|
} else if (vf.elements[current.argfield].value == '') { |
var alertmsg = ''; |
var alertmsg = ''; |
switch (current.radiovalue) { |
switch (current.radiovalue) { |
case 'krb': |
case 'krb': |
alertmsg = '$alert{'krb'}'; |
alertmsg = '$alert{'krb'}'; |
break; |
break; |
case 'loc': |
case 'loc': |
case 'fsys': |
case 'int': |
alertmsg = '$alert{'ipass'}'; |
alertmsg = '$alert{'ipass'}'; |
break; |
break; |
case 'fsys': |
case 'fsys': |
alertmsg = ''; |
alertmsg = '$alert{'ipass'}'; |
break; |
break; |
default: |
default: |
alertmsg = ''; |
alertmsg = ''; |
Line 553 END
|
Line 557 END
|
alert(alertmsg); |
alert(alertmsg); |
return; |
return; |
} |
} |
|
} else if (current.radiovalue == 'int') { |
|
if ($numrules > 0) { |
|
$intargjs |
|
} |
} |
} |
END |
END |
} |
} |
Line 641 END
|
Line 649 END
|
$section_checks.$authheader; |
$section_checks.$authheader; |
return $result; |
return $result; |
} |
} |
|
|
|
sub passwd_validation_js { |
|
my ($currpasswdval,$domain) = @_; |
|
my %passwdconf = &Apache::lonnet::get_passwdconf($domain); |
|
my ($min,$max,@chars,$numrules,$intargjs,%alert); |
|
$numrules = 0; |
|
if (ref($passwdconf{'chars'}) eq 'ARRAY') { |
|
if ($passwdconf{'min'} =~ /^\d+$/) { |
|
$min = $passwdconf{'min'}; |
|
$numrules ++; |
|
} |
|
if ($passwdconf{'max'} =~ /^\d+$/) { |
|
$max = $passwdconf{'max'}; |
|
$numrules ++; |
|
} |
|
@chars = @{$passwdconf{'chars'}}; |
|
if (@chars) { |
|
$numrules ++; |
|
} |
|
} else { |
|
$min = 7; |
|
$numrules ++; |
|
} |
|
if (($min ne '') || ($max ne '') || (@chars > 0)) { |
|
my $alertmsg = &mt('Initial password did not satisfy requirement(s):').'\n\n'; |
|
if ($min) { |
|
$alert{'min'} = &mt('minimum [quant,_1,character]',$min).'\n'; |
|
} |
|
if ($max) { |
|
$alert{'max'} = &mt('maximum [quant,_1,character]',$max).'\n'; |
|
} |
|
my (@charalerts,@charrules); |
|
if (@chars) { |
|
if (grep(/^uc$/,@chars)) { |
|
push(@charalerts,&mt('contain at least one upper case letter')); |
|
push(@charrules,'uc'); |
|
} |
|
if (grep(/^lc$/,@chars)) { |
|
push(@charalerts,&mt('contain at least one lower case letter')); |
|
push(@charrules,'lc'); |
|
} |
|
if (grep(/^num$/,@chars)) { |
|
push(@charalerts,&mt('contain at least one number')); |
|
push(@charrules,'num'); |
|
} |
|
if (grep(/^spec$/,@chars)) { |
|
push(@charalerts,&mt('contain at least one non-alphanumeric')); |
|
push(@charrules,'spec'); |
|
} |
|
} |
|
$intargjs = qq| var rulesmsg = '';\n|. |
|
qq| var currpwval = $currpasswdval;\n|; |
|
if ($min) { |
|
$intargjs .= qq| |
|
if (currpwval.length < $min) { |
|
rulesmsg += ' - $alert{min}'; |
|
} |
|
|; |
|
} |
|
if ($max) { |
|
$intargjs .= qq| |
|
if (currpwval.length > $max) { |
|
rulesmsg += ' - $alert{max}'; |
|
} |
|
|; |
|
} |
|
if (@chars > 0) { |
|
my $charrulestr = '"'.join('","',@charrules).'"'; |
|
my $charalertstr = '"'.join('","',@charalerts).'"'; |
|
$intargjs .= qq| var brokerules = new Array();\n|. |
|
qq| var charrules = new Array($charrulestr);\n|. |
|
qq| var charalerts = new Array($charalertstr);\n|; |
|
my %rules; |
|
map { $rules{$_} = 1; } @chars; |
|
if ($rules{'uc'}) { |
|
$intargjs .= qq| |
|
var ucRegExp = /[A-Z]/; |
|
if (!ucRegExp.test(currpwval)) { |
|
brokerules.push('uc'); |
|
} |
|
|; |
|
} |
|
if ($rules{'lc'}) { |
|
$intargjs .= qq| |
|
var lcRegExp = /[a-z]/; |
|
if (!lcRegExp.test(currpwval)) { |
|
brokerules.push('lc'); |
|
} |
|
|; |
|
} |
|
if ($rules{'num'}) { |
|
$intargjs .= qq| |
|
var numRegExp = /[0-9]/; |
|
if (!numRegExp.test(currpwval)) { |
|
brokerules.push('num'); |
|
} |
|
|; |
|
} |
|
if ($rules{'spec'}) { |
|
$intargjs .= q| |
|
var specRegExp = /[!"#$%&'()*+,\-.\/:;<=>?@[\\^\]_`{\|}~]/; |
|
if (!specRegExp.test(currpwval)) { |
|
brokerules.push('spec'); |
|
} |
|
|; |
|
} |
|
$intargjs .= qq| |
|
if (brokerules.length > 0) { |
|
for (var i=0; i<brokerules.length; i++) { |
|
for (var j=0; j<charrules.length; j++) { |
|
if (brokerules[i] == charrules[j]) { |
|
rulesmsg += ' - '+charalerts[j]+'\\n'; |
|
break; |
|
} |
|
} |
|
} |
|
} |
|
|; |
|
} |
|
$intargjs .= qq| |
|
if (rulesmsg != '') { |
|
rulesmsg = '$alertmsg'+rulesmsg; |
|
alert(rulesmsg); |
|
return false; |
|
} |
|
|; |
|
} |
|
return ($numrules,$intargjs); |
|
} |
|
|
############################################################### |
############################################################### |
############################################################### |
############################################################### |
sub upload_manager_javascript_forward_associate { |
sub upload_manager_javascript_forward_associate { |
Line 1121 sub print_upload_manager_form {
|
Line 1259 sub print_upload_manager_form {
|
if (!$env{'form.datatoken'}) { |
if (!$env{'form.datatoken'}) { |
$datatoken=&Apache::loncommon::upfile_store($r); |
$datatoken=&Apache::loncommon::upfile_store($r); |
} else { |
} else { |
$datatoken=$env{'form.datatoken'}; |
$datatoken=&Apache::loncommon::valid_datatoken($env{'form.datatoken'}); |
&Apache::loncommon::load_tmp_file($r); |
if ($datatoken ne '') { |
|
&Apache::loncommon::load_tmp_file($r,$datatoken); |
|
} |
|
} |
|
if ($datatoken eq '') { |
|
$r->print('<p class="LC_error">'.&mt('Error').': '. |
|
&mt('Invalid datatoken').'</p>'); |
|
return 'missingdata'; |
} |
} |
my @records=&Apache::loncommon::upfile_record_sep(); |
my @records=&Apache::loncommon::upfile_record_sep(); |
if($env{'form.noFirstLine'}){ |
if($env{'form.noFirstLine'}){ |
Line 1206 sub print_upload_manager_form {
|
Line 1351 sub print_upload_manager_form {
|
} |
} |
&print_upload_manager_footer($r,$i,$keyfields,$defdom,$today,$halfyear, |
&print_upload_manager_footer($r,$i,$keyfields,$defdom,$today,$halfyear, |
$context,$permission,$crstype,$showcredits); |
$context,$permission,$crstype,$showcredits); |
|
return 'ok'; |
} |
} |
|
|
sub setup_date_selectors { |
sub setup_date_selectors { |
Line 2279 sub build_user_record {
|
Line 2425 sub build_user_record {
|
|
|
sub courses_selector { |
sub courses_selector { |
my ($cdom,$formname) = @_; |
my ($cdom,$formname) = @_; |
my %coursecodes = (); |
|
my %codes = (); |
my %codes = (); |
my @codetitles = (); |
my @codetitles = (); |
my %cat_titles = (); |
my %cat_titles = (); |
Line 2292 sub courses_selector {
|
Line 2437 sub courses_selector {
|
my $jscript = ''; |
my $jscript = ''; |
|
|
my $totcodes = 0; |
my $totcodes = 0; |
$totcodes = |
my $instcats = &Apache::lonnet::get_dom_instcats($cdom); |
&Apache::courseclassifier::retrieve_instcodes(\%coursecodes, |
if (ref($instcats) eq 'HASH') { |
$cdom,$totcodes); |
if ((ref($instcats->{'codetitles'}) eq 'ARRAY') && (ref($instcats->{'codes'}) eq 'HASH') && |
if ($totcodes > 0) { |
(ref($instcats->{'cat_titles'}) eq 'HASH') && (ref($instcats->{'cat_order'}) eq 'HASH')) { |
$format_reply = |
%codes = %{$instcats->{'codes'}}; |
&Apache::lonnet::auto_instcode_format($caller,$cdom,\%coursecodes, |
@codetitles = @{$instcats->{'codetitles'}}; |
\%codes,\@codetitles,\%cat_titles,\%cat_order); |
%cat_titles = %{$instcats->{'cat_titles'}}; |
if ($format_reply eq 'ok') { |
%cat_order = %{$instcats->{'cat_order'}}; |
|
$totcodes = scalar(keys(%codes)); |
my $numtypes = @codetitles; |
my $numtypes = @codetitles; |
&Apache::courseclassifier::build_code_selections(\%codes,\@codetitles,\%cat_titles,\%cat_order,\%idlist,\%idnums,\%idlist_titles); |
&Apache::courseclassifier::build_code_selections(\%codes,\@codetitles,\%cat_titles,\%cat_order,\%idlist,\%idnums,\%idlist_titles); |
my ($scripttext,$longtitles) = &Apache::courseclassifier::javascript_definitions(\@codetitles,\%idlist,\%idlist_titles,\%idnums,\%cat_titles); |
my ($scripttext,$longtitles) = &Apache::courseclassifier::javascript_definitions(\@codetitles,\%idlist,\%idlist_titles,\%idnums,\%cat_titles); |
Line 2336 function setCourseCat(formname) {
|
Line 2482 function setCourseCat(formname) {
|
} |
} |
courseSet('$codetitles[1]'); |
courseSet('$codetitles[1]'); |
for (var j=0; j<formname.Department.length; j++) { |
for (var j=0; j<formname.Department.length; j++) { |
if (formname.Department.options[j].value == "$env{'form.Department'}") { formname.Department.options[j].selected = true; |
if (formname.Department.options[j].value == "$env{'form.Department'}") { |
|
formname.Department.options[j].selected = true; |
} |
} |
} |
} |
if (formname.Department.options[formname.Department.selectedIndex].value == -1) { |
if (formname.Department.options[formname.Department.selectedIndex].value == -1) { |
Line 2757 END
|
Line 2904 END
|
.'<input type="checkbox" name="userwin" value="1"'.$checkwin.' />'.$lt{'owin'} |
.'<input type="checkbox" name="userwin" value="1"'.$checkwin.' />'.$lt{'owin'} |
.'</label></span></td></tr></table></fieldset></div>'; |
.'</label></span></td></tr></table></fieldset></div>'; |
} |
} |
$output .= "\n".'<br clear="all" />'."\n". |
$output .= "\n".'<div style="padding:0;clear:both;margin:0;border:0"></div>'."\n". |
&Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table_header_row(); |
&Apache::loncommon::start_data_table_header_row(); |
if ($mode eq 'autoenroll') { |
if ($mode eq 'autoenroll') { |
Line 3101 END
|
Line 3248 END
|
} |
} |
if ($showcheckbox) { |
if ($showcheckbox) { |
$r->print('<td><input type="checkbox" name="'. |
$r->print('<td><input type="checkbox" name="'. |
'actionlist" value="'.&HTML::Entities::encode($checkval,'&<>"').'" /></td>'); |
'actionlist" value="'. |
|
&HTML::Entities::encode($checkval,'&<>"').'" />'); |
|
foreach my $item ('start','end') { |
|
$r->print('<input type="hidden" name="'. |
|
&HTML::Entities::encode($checkval.'_'.$item,'&<>"').'"'. |
|
' value="'.$sdata->[$index{$item}].'" />'); |
|
} |
|
$r->print('</td>'); |
} else { |
} else { |
$r->print('<td> </td>'); |
$r->print('<td> </td>'); |
} |
} |
Line 3115 END
|
Line 3269 END
|
foreach my $item (@cols) { |
foreach my $item (@cols) { |
if ($item eq 'username') { |
if ($item eq 'username') { |
$r->print('<td>'.&print_username_link($mode,\%in).'</td>'); |
$r->print('<td>'.&print_username_link($mode,\%in).'</td>'); |
} elsif (($item eq 'start' || $item eq 'end') && ($actionselect)) { |
|
$r->print('<td>'.$in{$item}.'<input type="hidden" name="'.&HTML::Entities::encode($checkval.'_'.$item.'" value="'.$sdata->[$index{$item}],'&<>"').'" /></td>'."\n"); |
|
} elsif ($item eq 'status') { |
} elsif ($item eq 'status') { |
my $showitem = $in{$item}; |
my $showitem = $in{$item}; |
if (defined($ltstatus{$in{$item}})) { |
if (defined($ltstatus{$in{$item}})) { |
Line 4091 sub print_first_users_upload_form {
|
Line 4243 sub print_first_users_upload_form {
|
.&Apache::lonhtmlcommon::end_pick_box(); |
.&Apache::lonhtmlcommon::end_pick_box(); |
|
|
$str .= '<p>' |
$str .= '<p>' |
.'<input type="submit" name="fileupload" value="'.&mt('Next').'"' |
.'<input type="button" name="fileupload" value="'.&mt('Next').'"' |
.' onclick="javascript:checkUpload(this.form);" />' |
.' onclick="javascript:checkUpload(this.form);" />' |
.'</p>'; |
.'</p>'; |
|
|
Line 4102 sub print_first_users_upload_form {
|
Line 4254 sub print_first_users_upload_form {
|
# ================================================= Drop/Add from uploaded file |
# ================================================= Drop/Add from uploaded file |
sub upfile_drop_add { |
sub upfile_drop_add { |
my ($r,$context,$permission,$showcredits) = @_; |
my ($r,$context,$permission,$showcredits) = @_; |
&Apache::loncommon::load_tmp_file($r); |
my $datatoken = &Apache::loncommon::valid_datatoken($env{'form.datatoken'}); |
|
if ($datatoken ne '') { |
|
&Apache::loncommon::load_tmp_file($r,$datatoken); |
|
} |
my @userdata=&Apache::loncommon::upfile_record_sep(); |
my @userdata=&Apache::loncommon::upfile_record_sep(); |
if($env{'form.noFirstLine'}){shift(@userdata);} |
if($env{'form.noFirstLine'}){shift(@userdata);} |
my @keyfields = split(/\,/,$env{'form.keyfields'}); |
my @keyfields = split(/\,/,$env{'form.keyfields'}); |
Line 4116 sub upfile_drop_add {
|
Line 4271 sub upfile_drop_add {
|
$fields{$env{'form.f'.$i}}=$keyfields[$i]; |
$fields{$env{'form.f'.$i}}=$keyfields[$i]; |
} |
} |
} |
} |
if ($env{'form.fullup'} ne 'yes') { |
|
$r->print('<form name="studentform" method="post" action="/adm/createuser">'."\n". |
|
'<input type="hidden" name="action" value="'.$env{'form.action'}.'" />'); |
|
} |
|
# |
# |
# Store the field choices away |
# Store the field choices away |
my @storefields = qw/username names fname mname lname gen id |
my @storefields = qw/username names fname mname lname gen id |
Line 4164 sub upfile_drop_add {
|
Line 4315 sub upfile_drop_add {
|
} else { |
} else { |
my %home_servers = &Apache::lonnet::get_servers($defdom,'library'); |
my %home_servers = &Apache::lonnet::get_servers($defdom,'library'); |
if (! exists($home_servers{$desiredhost})) { |
if (! exists($home_servers{$desiredhost})) { |
$r->print('<span class="LC_error">'.&mt('Error'). |
$r->print('<p class="LC_error">'.&mt('Error').': '. |
&mt('Invalid home server specified').'</span>'); |
&mt('Invalid home server specified').'</p>'); |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
return; |
return 'invalidhome'; |
} |
} |
} |
} |
# Determine authentication mechanism |
# Determine authentication mechanism |
Line 4177 sub upfile_drop_add {
|
Line 4328 sub upfile_drop_add {
|
} |
} |
my $amode = ''; |
my $amode = ''; |
my $genpwd = ''; |
my $genpwd = ''; |
|
my @genpwdfail; |
if ($env{'form.login'} eq 'krb') { |
if ($env{'form.login'} eq 'krb') { |
$amode='krb'; |
$amode='krb'; |
$amode.=$env{'form.krbver'}; |
$amode.=$env{'form.krbver'}; |
Line 4185 sub upfile_drop_add {
|
Line 4337 sub upfile_drop_add {
|
$amode='internal'; |
$amode='internal'; |
if ((defined($env{'form.intarg'})) && ($env{'form.intarg'})) { |
if ((defined($env{'form.intarg'})) && ($env{'form.intarg'})) { |
$genpwd=$env{'form.intarg'}; |
$genpwd=$env{'form.intarg'}; |
|
@genpwdfail = |
|
&Apache::loncommon::check_passwd_rules($domain,$genpwd); |
} |
} |
} elsif ($env{'form.login'} eq 'loc') { |
} elsif ($env{'form.login'} eq 'loc') { |
$amode='localauth'; |
$amode='localauth'; |
Line 4263 sub upfile_drop_add {
|
Line 4417 sub upfile_drop_add {
|
\@statuses,\@poss_roles); |
\@statuses,\@poss_roles); |
&gather_userinfo($context,'view',\%userlist,$indexhash,\%info, |
&gather_userinfo($context,'view',\%userlist,$indexhash,\%info, |
\%cstr_roles,$permission); |
\%cstr_roles,$permission); |
|
|
} |
} |
} |
} |
} |
} |
|
if ($datatoken eq '') { |
|
$r->print('<p class="LC_error">'.&mt('Error').': '. |
|
&mt('Invalid datatoken').'</p>'); |
|
return 'missingdata'; |
|
} |
if ( $domain eq &LONCAPA::clean_domain($domain) |
if ( $domain eq &LONCAPA::clean_domain($domain) |
&& ($amode ne '')) { |
&& ($amode ne '')) { |
####################################### |
####################################### |
Line 4336 sub upfile_drop_add {
|
Line 4494 sub upfile_drop_add {
|
my $newuserdom = $env{'request.role.domain'}; |
my $newuserdom = $env{'request.role.domain'}; |
map { $cancreate{$_} = &can_create_user($newuserdom,$context,$_); } keys(%longtypes); |
map { $cancreate{$_} = &can_create_user($newuserdom,$context,$_); } keys(%longtypes); |
# Get new users list |
# Get new users list |
my (%existinguser,%userinfo,%disallow,%rulematch,%inst_results,%alerts,%checkuname); |
my (%existinguser,%userinfo,%disallow,%rulematch,%inst_results,%alerts,%checkuname, |
|
%showpasswdrules,$haspasswdmap); |
my $counter = -1; |
my $counter = -1; |
foreach my $line (@userdata) { |
foreach my $line (@userdata) { |
$counter ++; |
$counter ++; |
Line 4464 sub upfile_drop_add {
|
Line 4623 sub upfile_drop_add {
|
} |
} |
} |
} |
# determine user password |
# determine user password |
my $password = $genpwd; |
my $password; |
|
my $passwdfromfile; |
if (defined($fields{'ipwd'})) { |
if (defined($fields{'ipwd'})) { |
if ($entries{$fields{'ipwd'}}) { |
if ($entries{$fields{'ipwd'}}) { |
$password=$entries{$fields{'ipwd'}}; |
$password=$entries{$fields{'ipwd'}}; |
|
$passwdfromfile = 1; |
|
if ($env{'form.login'} eq 'int') { |
|
my $uhome=&Apache::lonnet::homeserver($username,$userdomain); |
|
if (($uhome eq 'no_host') || ($changeauth)) { |
|
my @brokepwdrules = |
|
&Apache::loncommon::check_passwd_rules($domain,$password); |
|
if (@brokepwdrules) { |
|
$disallow{$counter} = &mt('[_1]: Password included in file for this user did not meet requirements.', |
|
'<b>'.$username.'</b>'); |
|
map { $showpasswdrules{$_} = 1; } @brokepwdrules; |
|
next; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
unless ($passwdfromfile) { |
|
if ($env{'form.login'} eq 'int') { |
|
if (@genpwdfail) { |
|
my $uhome=&Apache::lonnet::homeserver($username,$userdomain); |
|
if (($uhome eq 'no_host') || ($changeauth)) { |
|
$disallow{$counter} = &mt('[_1]: No specific password in file for this user; default password did not meet requirements', |
|
'<b>'.$username.'</b>'); |
|
unless ($haspasswdmap) { |
|
map { $showpasswdrules{$_} = 1; } @genpwdfail; |
|
$haspasswdmap = 1; |
|
} |
|
} |
|
next; |
|
} |
} |
} |
|
$password = $genpwd; |
} |
} |
# determine user role |
# determine user role |
my $role = ''; |
my $role = ''; |
Line 4819 sub upfile_drop_add {
|
Line 5010 sub upfile_drop_add {
|
"</p>\n"); |
"</p>\n"); |
if ($counts{'role'} > 0) { |
if ($counts{'role'} > 0) { |
$r->print("<p>\n". |
$r->print("<p>\n". |
&mt('Roles added for [quant,_1,user].',$counts{'role'}).' '.&mt('If a user is currently logged-in to LON-CAPA, any new roles which are active will be available when the user next logs in.')."</p>\n"); |
&mt('Roles added for [quant,_1,user].',$counts{'role'}).' '. |
|
&mt('If a user is currently logged-in to LON-CAPA, any new roles which are active will be available when the user next logs in.'). |
|
"</p>\n"); |
} else { |
} else { |
$r->print('<p>'.&mt('No roles added').'</p>'); |
$r->print('<p>'.&mt('No roles added').'</p>'); |
} |
} |
Line 4829 sub upfile_drop_add {
|
Line 5022 sub upfile_drop_add {
|
$counts{'auth'})."</p>\n"); |
$counts{'auth'})."</p>\n"); |
} |
} |
$r->print(&print_namespacing_alerts($domain,\%alerts,\%curr_rules)); |
$r->print(&print_namespacing_alerts($domain,\%alerts,\%curr_rules)); |
|
$r->print(&passwdrule_alerts($domain,\%showpasswdrules)); |
##################################### |
##################################### |
# Display list of students to drop # |
# Display list of students to drop # |
##################################### |
##################################### |
Line 4837 sub upfile_drop_add {
|
Line 5031 sub upfile_drop_add {
|
# Get current classlist |
# Get current classlist |
my $classlist = &Apache::loncoursedata::get_classlist(); |
my $classlist = &Apache::loncoursedata::get_classlist(); |
if (! defined($classlist)) { |
if (! defined($classlist)) { |
$r->print('<form name="studentform" method="post" action="/adm/createuser">'. |
$r->print('<p class="LC_info">'. |
'<input type="hidden" name="action" value="'.$env{'form.action'}.'" />'. |
&mt('There are no students with current/future access to the course.'). |
'<p class="LC_info">'.&mt('There are no students with current/future access to the course.').'</p>'. |
'</p>'."\n"); |
'</form>'."\n"); |
|
} elsif (ref($classlist) eq 'HASH') { |
} elsif (ref($classlist) eq 'HASH') { |
# Remove the students we just added from the list of students. |
# Remove the students we just added from the list of students. |
foreach my $line (@userdata) { |
foreach my $line (@userdata) { |
Line 4856 sub upfile_drop_add {
|
Line 5049 sub upfile_drop_add {
|
} |
} |
} |
} |
} # end of unless |
} # end of unless |
if ($env{'form.fullup'} ne 'yes') { |
return 'ok'; |
$r->print('</form>'); |
|
} |
|
} |
} |
|
|
sub print_namespacing_alerts { |
sub print_namespacing_alerts { |
Line 4901 sub print_namespacing_alerts {
|
Line 5092 sub print_namespacing_alerts {
|
} |
} |
} |
} |
|
|
|
sub passwdrule_alerts { |
|
my ($domain,$passwdrules) = @_; |
|
my $warning; |
|
if (ref($passwdrules) eq 'HASH') { |
|
my %showrules = %{$passwdrules}; |
|
if (keys(%showrules)) { |
|
my %passwdconf = &Apache::lonnet::get_passwdconf($domain); |
|
$warning = '<b>'.&mt('Password requirement(s) unmet for one or more users:').'</b><ul>'; |
|
if ($showrules{'min'}) { |
|
$warning .= '<li>'.&mt('minimum [quant,_1,character]',$passwdconf{'min'}).'</li>'; |
|
} |
|
if ($showrules{'max'}) { |
|
$warning .= '<li>'.&mt('maximum [quant,_1,character]',$passwdconf{'max'}).'</li>'; |
|
} |
|
if ($showrules{'uc'}) { |
|
$warning .= '<li>'.&mt('contain at least one upper case letter').'</li>'; |
|
} |
|
if ($showrules{'lc'}) { |
|
$warning .= '<li>'.&mt('contain at least one lower case letter').'</li>'; |
|
} |
|
if ($showrules{'num'}) { |
|
$warning .= '<li>'.&mt('contain at least one number').'</li>'; |
|
} |
|
if ($showrules{'spec'}) { |
|
$warning .= '<li>'.&mt('contain at least one non-alphanumeric').'</li>'; |
|
} |
|
$warning .= '</ul>'; |
|
} |
|
} |
|
return $warning; |
|
} |
|
|
sub user_change_result { |
sub user_change_result { |
my ($r,$userresult,$authresult,$roleresult,$idresult,$counts,$flushc, |
my ($r,$userresult,$authresult,$roleresult,$idresult,$counts,$flushc, |
$username,$userdomain,$userchg) = @_; |
$username,$userdomain,$userchg) = @_; |
Line 5833 sub roles_by_context {
|
Line 6056 sub roles_by_context {
|
} elsif ($context eq 'author') { |
} elsif ($context eq 'author') { |
@allroles = ('ca','aa'); |
@allroles = ('ca','aa'); |
} elsif ($context eq 'domain') { |
} elsif ($context eq 'domain') { |
@allroles = ('li','ad','dg','dh','sc','au','dc'); |
@allroles = ('li','ad','dg','dh','da','sc','au','dc'); |
} |
} |
return @allroles; |
return @allroles; |
} |
} |
Line 5982 sub get_course_identity {
|
Line 6205 sub get_course_identity {
|
} |
} |
|
|
sub dc_setcourse_js { |
sub dc_setcourse_js { |
my ($formname,$mode,$context,$showcredits) = @_; |
my ($formname,$mode,$context,$showcredits,$domain) = @_; |
my ($dc_setcourse_code,$authen_check); |
my ($dc_setcourse_code,$authen_check); |
my $cctext = &Apache::lonnet::plaintext('cc'); |
my $cctext = &Apache::lonnet::plaintext('cc'); |
my $cotext = &Apache::lonnet::plaintext('co'); |
my $cotext = &Apache::lonnet::plaintext('co'); |
Line 5991 sub dc_setcourse_js {
|
Line 6214 sub dc_setcourse_js {
|
if ($mode eq 'upload') { |
if ($mode eq 'upload') { |
$role = 'courserole'; |
$role = 'courserole'; |
} else { |
} else { |
$authen_check = &verify_authen($formname,$context); |
$authen_check = &verify_authen($formname,$context,$domain); |
} |
} |
$dc_setcourse_code = (<<"SCRIPTTOP"); |
$dc_setcourse_code = (<<"SCRIPTTOP"); |
$authen_check |
$authen_check |
Line 6135 ENDSCRIPT
|
Line 6358 ENDSCRIPT
|
} |
} |
|
|
sub verify_authen { |
sub verify_authen { |
my ($formname,$context) = @_; |
my ($formname,$context,$domain) = @_; |
my %alerts = &authcheck_alerts(); |
my %alerts = &authcheck_alerts(); |
my $finish = "return 'ok';"; |
my $finish = "return 'ok';"; |
if ($context eq 'author') { |
if ($context eq 'author') { |
$finish = "document.$formname.submit();"; |
$finish = "document.$formname.submit();"; |
} |
} |
|
my ($numrules,$intargjs) = |
|
&passwd_validation_js('argpicked',$domain); |
my $outcome = <<"ENDSCRIPT"; |
my $outcome = <<"ENDSCRIPT"; |
|
|
function auth_check() { |
function auth_check() { |
Line 6174 function auth_check() {
|
Line 6399 function auth_check() {
|
break; |
break; |
case 'int': |
case 'int': |
alertmsg = '$alerts{'ipass'}'; |
alertmsg = '$alerts{'ipass'}'; |
|
break; |
case 'fsys': |
case 'fsys': |
alertmsg = '$alerts{'ipass'}'; |
alertmsg = '$alerts{'ipass'}'; |
break; |
break; |
Line 6187 function auth_check() {
|
Line 6413 function auth_check() {
|
alert(alertmsg); |
alert(alertmsg); |
return; |
return; |
} |
} |
|
} else if (logintype == 'int') { |
|
var numrules = $numrules; |
|
if (numrules > 0) { |
|
$intargjs |
|
} |
} |
} |
$finish |
$finish |
} |
} |