version 1.109.2.3, 2010/08/09 23:39:43
|
version 1.109.2.6, 2010/11/08 21:08:27
|
Line 296 sub hidden_input {
|
Line 296 sub hidden_input {
|
} |
} |
|
|
sub print_upload_manager_header { |
sub print_upload_manager_header { |
my ($r,$datatoken,$distotal,$krbdefdom,$context,$permission,$crstype)=@_; |
my ($r,$datatoken,$distotal,$krbdefdom,$context,$permission,$crstype,$formname, |
|
$can_assign)=@_; |
my $javascript; |
my $javascript; |
# |
# |
if (! exists($env{'form.upfile_associate'})) { |
if (! exists($env{'form.upfile_associate'})) { |
Line 310 sub print_upload_manager_header {
|
Line 311 sub print_upload_manager_header {
|
} |
} |
} |
} |
if ($env{'form.upfile_associate'} eq 'reverse') { |
if ($env{'form.upfile_associate'} eq 'reverse') { |
$javascript=&upload_manager_javascript_reverse_associate(); |
$javascript=&upload_manager_javascript_reverse_associate($can_assign); |
} else { |
} else { |
$javascript=&upload_manager_javascript_forward_associate(); |
$javascript=&upload_manager_javascript_forward_associate($can_assign); |
} |
} |
# |
# |
# Deal with restored settings |
# Deal with restored settings |
Line 326 sub print_upload_manager_header {
|
Line 327 sub print_upload_manager_header {
|
$password_choice = 'int'; |
$password_choice = 'int'; |
} |
} |
# |
# |
my $groupslist; |
my ($sectionjs,$groupslist); |
if ($context eq 'course') { |
if ($context eq 'course') { |
$groupslist = &get_groupslist(); |
$groupslist = &get_groupslist(); |
|
if ($env{'form.caller'} eq 'requestcrs') { |
|
$sectionjs = <<"ENDJS"; |
|
|
|
function toggleSectionsDefault() { |
|
var usingsecs; |
|
if (document.$formname.usesection.length > 1) { |
|
for (var i=0; i<document.$formname.usesection.length; i++) { |
|
if (document.$formname.usesection[i].checked) { |
|
usingsecs = document.$formname.usesection[i].value; |
|
} |
|
} |
|
} |
|
if (usingsecs == 1) { |
|
document.getElementById('defaultsec').style.display="block"; |
|
} else { |
|
document.getElementById('defaultsec').style.display="none"; |
|
document.$formname.newsec.value = ""; |
|
document.$formname.sections.value = ""; |
|
} |
|
return; |
|
} |
|
ENDJS |
|
} |
} |
} |
my $javascript_validations = |
my $javascript_validations = |
&javascript_validations('upload',$krbdefdom,$password_choice,undef, |
&javascript_validations('upload',$krbdefdom,$password_choice,undef, |
Line 341 sub print_upload_manager_header {
|
Line 365 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,'). |
|
'<br />'.&mt('if the data selected are insufficient to add users.')."<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',''). |
&hidden_input('datatoken',$datatoken). |
&hidden_input('datatoken',$datatoken). |
&hidden_input('fileupload',$env{'form.fileupload'}). |
&hidden_input('fileupload',$env{'form.fileupload'}). |
&hidden_input('upfiletype',$env{'form.upfiletype'}). |
&hidden_input('upfiletype',$env{'form.upfiletype'}). |
&hidden_input('upfile_associate',$env{'form.upfile_associate'})); |
&hidden_input('upfile_associate',$env{'form.upfile_associate'}). |
|
&hidden_input('caller',$env{'form.caller'})); |
$r->print('<br /><label><input type="checkbox" name="noFirstLine"'.$checked.' />'. |
$r->print('<br /><label><input type="checkbox" name="noFirstLine"'.$checked.' />'. |
&mt('Ignore First Line').'</label><br />'); |
&mt('Ignore First Line').'</label><br />'); |
$r->print('<br /><input type="button" value="'.&mt('Reverse Association').'" '. |
$r->print('<br /><input type="button" value="'.&mt('Reverse Association').'" '. |
Line 357 sub print_upload_manager_header {
|
Line 384 sub print_upload_manager_header {
|
$r->print("<br /><br />\n". |
$r->print("<br /><br />\n". |
'<script type="text/javascript" language="Javascript">'."\n". |
'<script type="text/javascript" language="Javascript">'."\n". |
'// <![CDATA['."\n". |
'// <![CDATA['."\n". |
$javascript."\n".$javascript_validations."\n". |
$javascript."\n".$javascript_validations."\n".$sectionjs."\n". |
'// ]]>'."\n". |
'// ]]>'."\n". |
'</script>'); |
'</script>'); |
} |
} |
Line 388 sub javascript_validations {
|
Line 415 sub javascript_validations {
|
if ($context eq 'course') { |
if ($context eq 'course') { |
if ($env{'request.course.sec'} eq '') { |
if ($env{'request.course.sec'} eq '') { |
$setsection_call = 'setSections(document.'.$param{'formname'}.",'$crstype'".');'; |
$setsection_call = 'setSections(document.'.$param{'formname'}.",'$crstype'".');'; |
$setsections_js = |
if ($env{'form.caller'} eq 'requestcrs') { |
&setsections_javascript($param{'formname'},$groupslist, |
$setsections_js = &newsections_javascript($param{'formname'}); |
$mode,'',$crstype); |
} else { |
|
$setsections_js = |
|
&setsections_javascript($param{'formname'},$groupslist, |
|
$mode,'',$crstype); |
|
} |
} else { |
} else { |
$setsection_call = "'ok'"; |
$setsection_call = "'ok'"; |
} |
} |
Line 518 END
|
Line 549 END
|
END |
END |
} else { |
} else { |
$section_checks = §ion_check_js(); |
$section_checks = §ion_check_js(); |
$optional_checks = (<<END); |
|
|
unless ($env{'form.caller'} eq 'requestcrs') { |
|
$optional_checks = (<<END); |
var message=''; |
var message=''; |
if (foundname==0) { |
if (foundname==0) { |
message='$alert{'name'}'; |
message='$alert{'name'}'; |
Line 553 END
|
Line 586 END
|
message+='$alert{'domain'}'; |
message+='$alert{'domain'}'; |
} |
} |
END |
END |
|
} |
if (($mode eq 'upload') && ($context eq 'domain')) { |
if (($mode eq 'upload') && ($context eq 'domain')) { |
$optional_checks .= (<<END); |
$optional_checks .= (<<END); |
|
|
Line 564 END
|
Line 598 END
|
} |
} |
END |
END |
} |
} |
$optional_checks .= (<<END); |
if ($env{'form.caller'} eq 'requestcrs') { |
|
$optional_checks .= (<<END); |
|
vf.state.value='enrolling'; |
|
$finish |
|
} |
|
END |
|
} else { |
|
$optional_checks .= (<<END); |
|
|
if (message!='') { |
if (message!='') { |
message+= '\\n$alert{'continue'}'; |
message+= '\\n$alert{'continue'}'; |
Line 578 END
|
Line 619 END
|
} |
} |
} |
} |
END |
END |
|
} |
} |
} |
my $result = $function_name.$auth_checks.$optional_checks."\n". |
my $result = $function_name.$auth_checks.$optional_checks."\n". |
$section_checks.$authheader; |
$section_checks.$authheader; |
Line 586 END
|
Line 628 END
|
############################################################### |
############################################################### |
############################################################### |
############################################################### |
sub upload_manager_javascript_forward_associate { |
sub upload_manager_javascript_forward_associate { |
|
my ($can_assign) = @_; |
|
my $auth_update; |
|
if (ref($can_assign) eq 'HASH') { |
|
if (keys(%{$can_assign}) > 1) { |
|
$auth_update = <<"END"; |
|
// If we set the password, make the password form below correspond to |
|
// the new value. |
|
if (nw==9) { |
|
changed_radio('int',document.studentform); |
|
set_auth_radio_buttons('int',document.studentform); |
|
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 662 function flip(vf,tf) {
|
Line 729 function flip(vf,tf) {
|
} |
} |
} |
} |
} |
} |
// If we set the password, make the password form below correspond to |
$auth_update |
// the new value. |
|
if (nw==9) { |
|
changed_radio('int',document.studentform); |
|
set_auth_radio_buttons('int',document.studentform); |
|
vf.intarg.value=''; |
|
vf.krbarg.value=''; |
|
vf.locarg.value=''; |
|
} |
|
} |
} |
|
|
function clearpwd(vf) { |
function clearpwd(vf) { |
Line 688 ENDPICK
|
Line 747 ENDPICK
|
############################################################### |
############################################################### |
############################################################### |
############################################################### |
sub upload_manager_javascript_reverse_associate { |
sub upload_manager_javascript_reverse_associate { |
|
my ($can_assign) = @_; |
|
my $auth_update; |
|
if (ref($can_assign) eq 'HASH') { |
|
if (keys(%{$can_assign}) > 1) { |
|
$auth_update = <<"END"; |
|
// initial password specified, pick internal authentication |
|
if (tf==8 && nw!=0) { |
|
changed_radio('int',document.studentform); |
|
set_auth_radio_buttons('int',document.studentform); |
|
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 727 function flip(vf,tf) {
|
Line 809 function flip(vf,tf) {
|
if ((tf>=2) && (tf<=5) && (nw!=0)) { |
if ((tf>=2) && (tf<=5) && (nw!=0)) { |
eval('vf.f1.selectedIndex=0;') |
eval('vf.f1.selectedIndex=0;') |
} |
} |
// intial password specified, pick internal authentication |
$auth_update |
if (tf==8 && nw!=0) { |
|
changed_radio('int',document.studentform); |
|
set_auth_radio_buttons('int',document.studentform); |
|
vf.krbarg.value=''; |
|
vf.intarg.value=''; |
|
vf.locarg.value=''; |
|
} |
|
} |
} |
|
|
function clearpwd(vf) { |
function clearpwd(vf) { |
Line 763 sub print_upload_manager_footer {
|
Line 838 sub print_upload_manager_footer {
|
$env{'form.ipwd_choice'} ne '') { |
$env{'form.ipwd_choice'} ne '') { |
$param{'curr_authtype'} = 'int'; |
$param{'curr_authtype'} = 'int'; |
} |
} |
|
if ($env{'form.caller'} eq 'requestcrs') { |
|
$param{'caller'} = $env{'form.caller'}; |
|
} |
my $krbform = &Apache::loncommon::authform_kerberos(%param); |
my $krbform = &Apache::loncommon::authform_kerberos(%param); |
my $intform = &Apache::loncommon::authform_internal(%param); |
my $intform = &Apache::loncommon::authform_internal(%param); |
my $locform = &Apache::loncommon::authform_local(%param); |
my $locform = &Apache::loncommon::authform_local(%param); |
Line 775 sub print_upload_manager_footer {
|
Line 853 sub print_upload_manager_footer {
|
|
|
$Str .= '<h3>'.&mt('Options').'</h3>' |
$Str .= '<h3>'.&mt('Options').'</h3>' |
.&Apache::lonhtmlcommon::start_pick_box(); |
.&Apache::lonhtmlcommon::start_pick_box(); |
|
if ($env{'form.caller'} eq 'requestcrs') { |
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Login Type')); |
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Default password')); |
|
} else { |
|
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Login Type')); |
|
} |
if ($context eq 'domain') { |
if ($context eq 'domain') { |
$Str .= '<p>' |
$Str .= '<p>' |
.&mt('Change authentication for existing users in domain "[_1]" to these settings?' |
.&mt('Change authentication for existing users in domain "[_1]" to these settings?' |
Line 790 sub print_upload_manager_footer {
|
Line 871 sub print_upload_manager_footer {
|
.'</span></p>'; |
.'</span></p>'; |
} else { |
} else { |
$Str .= '<p class="LC_info">'."\n". |
$Str .= '<p class="LC_info">'."\n". |
&mt('This will not take effect if the user already exists.'). |
&mt('This will not take effect if the user already exists.'); |
&Apache::loncommon::help_open_topic('Auth_Options'). |
my ($authnum,%can_assign) = &Apache::loncommon::get_assignable_auth($defdom); |
"</p>\n"; |
if ($authnum > 1) { |
|
$Str .= &Apache::loncommon::help_open_topic('Auth_Options'); |
|
} |
|
$Str .= "</p>\n"; |
} |
} |
$Str .= &set_login($defdom,$krbform,$intform,$locform); |
$Str .= &set_login($defdom,$krbform,$intform,$locform); |
|
if ($env{'form.caller'} eq 'requestcrs') { |
|
$Str .= '<input type="hidden" name="defaultdomain" value="gcitest" />'; |
|
} |
my ($home_server_pick,$numlib) = |
my ($home_server_pick,$numlib) = |
&Apache::loncommon::home_server_form_item($defdom,'lcserver', |
&Apache::loncommon::home_server_form_item($defdom,'lcserver', |
'default','hide'); |
'default','hide'); |
Line 811 sub print_upload_manager_footer {
|
Line 897 sub print_upload_manager_footer {
|
&Apache::lonhtmlcommon::row_closure(); |
&Apache::lonhtmlcommon::row_closure(); |
} |
} |
|
|
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Default domain')) |
unless ($env{'form.caller'} eq 'requestcrs') { |
.&Apache::loncommon::select_dom_form($defdom,'defaultdomain',undef,1) |
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Default domain')) |
.&Apache::lonhtmlcommon::row_closure(); |
.&Apache::loncommon::select_dom_form($defdom,'defaultdomain',undef,1) |
|
.&Apache::lonhtmlcommon::row_closure() |
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Starting and Ending Dates')) |
.&Apache::lonhtmlcommon::row_title(&mt('Starting and Ending Dates')) |
."<p>\n".$date_table."</p>\n" |
."<p>\n".$date_table."</p>\n" |
.&Apache::lonhtmlcommon::row_closure(); |
.&Apache::lonhtmlcommon::row_closure(); |
|
} |
if ($context eq 'domain') { |
if ($context eq 'domain') { |
$Str .= &Apache::lonhtmlcommon::row_title( |
$Str .= &Apache::lonhtmlcommon::row_title( |
&mt('Settings for assigning roles')) |
&mt('Settings for assigning roles')) |
Line 838 sub print_upload_manager_footer {
|
Line 924 sub print_upload_manager_footer {
|
&mt('Default role')) |
&mt('Default role')) |
.&mt('Choose the role to assign to users without a value specified in the uploaded file.') |
.&mt('Choose the role to assign to users without a value specified in the uploaded file.') |
} elsif ($context eq 'course') { |
} elsif ($context eq 'course') { |
$Str .= &Apache::lonhtmlcommon::row_title( |
if ($env{'form.caller'} eq 'requestcrs') { |
|
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Default section')). |
|
&mt('Students can be assigned to different sections.').'<br />'. |
|
&mt('Will you be using sections?').' '. |
|
'<input type="radio" name="usesection" value="1" '. |
|
'onclick="javascript:toggleSectionsDefault()" />'. |
|
' '.&mt('Yes').'</label>'. |
|
' <label>'. |
|
'<input type="radio" name="usesection" value="0" checked="checked" '. |
|
'onclick="javascript:toggleSectionsDefault()" />'. |
|
' '.&mt('No').'</label>'; |
|
} else { |
|
$Str .= &Apache::lonhtmlcommon::row_title( |
&mt('Default role and section')) |
&mt('Default role and section')) |
.&mt('Choose the role and/or section(s) to assign to users without values specified in the uploaded file.'); |
.&mt('Choose the role and/or section(s) to assign to users without values specified in the uploaded file.'); |
|
} |
} else { |
} else { |
$Str .= &Apache::lonhtmlcommon::row_title( |
$Str .= &Apache::lonhtmlcommon::row_title( |
&mt('Default role and/or section(s)')) |
&mt('Default role and/or section(s)')) |
Line 864 sub print_upload_manager_footer {
|
Line 963 sub print_upload_manager_footer {
|
} |
} |
} else { |
} else { |
my ($cnum,$cdom) = &get_course_identity(); |
my ($cnum,$cdom) = &get_course_identity(); |
my $rowtitle = &mt('section'); |
my ($rowtitle,$closure); |
|
if ($env{'form.caller'} eq 'requestcrs') { |
|
$closure = 1; |
|
$rowtitle = &mt('default section name (letters/numbers only)'); |
|
} else { |
|
$rowtitle = &mt('section'); |
|
} |
my $secbox = §ion_picker($cdom,$cnum,'Any',$rowtitle, |
my $secbox = §ion_picker($cdom,$cnum,'Any',$rowtitle, |
$permission,$context,'upload',$crstype); |
$permission,$context,'upload',$crstype, |
$Str .= $secbox |
$env{'form.caller'}). |
.&Apache::lonhtmlcommon::row_closure(); |
&Apache::lonhtmlcommon::row_closure($closure); |
|
if ($env{'form.caller'} eq 'requestcrs') { |
|
$Str .= '<div id ="defaultsec" style="display: none" />'.$secbox.'</div>'; |
|
} else { |
|
$Str .= $secbox; |
|
} |
my %lt; |
my %lt; |
if ($crstype eq 'Community') { |
if ($crstype eq 'Community') { |
%lt = &Apache::lonlocal::texthash ( |
%lt = &Apache::lonlocal::texthash ( |
Line 881 sub print_upload_manager_footer {
|
Line 991 sub print_upload_manager_footer {
|
stus => 'Students selected from this list can be dropped.' |
stus => 'Students selected from this list can be dropped.' |
); |
); |
} |
} |
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Full Update')) |
unless ($env{'form.caller'} eq 'requestcrs') { |
.'<label><input type="checkbox" name="fullup" value="yes" />' |
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Full Update')) |
.' '.$lt{'disp'} |
.'<label><input type="checkbox" name="fullup" value="yes" />' |
.'</label><br />' |
.' '.$lt{'disp'} |
.$lt{'stus'} |
.'</label><br />' |
.&Apache::lonhtmlcommon::row_closure(); |
.$lt{'stus'} |
|
.&Apache::lonhtmlcommon::row_closure(); |
|
} |
} |
} |
if ($context eq 'course' || $context eq 'domain') { |
if ($context eq 'course' || $context eq 'domain') { |
$Str .= &forceid_change($context); |
unless ($env{'form.caller'} eq 'requestcrs') { |
|
$Str .= &forceid_change($context); |
|
} |
} |
} |
|
|
$Str .= &Apache::lonhtmlcommon::end_pick_box(); |
$Str .= &Apache::lonhtmlcommon::end_pick_box(); |
Line 933 sub forceid_change {
|
Line 1047 sub forceid_change {
|
############################################################### |
############################################################### |
############################################################### |
############################################################### |
sub print_upload_manager_form { |
sub print_upload_manager_form { |
my ($r,$context,$permission,$crstype) = @_; |
my ($r,$context,$permission,$crstype,$formname) = @_; |
my $firstLine; |
my $firstLine; |
my $datatoken; |
my $datatoken; |
if (!$env{'form.datatoken'}) { |
if (!$env{'form.datatoken'}) { |
Line 979 sub print_upload_manager_form {
|
Line 1093 sub print_upload_manager_form {
|
my ($krbdef,$krbdefdom) = |
my ($krbdef,$krbdefdom) = |
&Apache::loncommon::get_kerberos_defaults($defdom); |
&Apache::loncommon::get_kerberos_defaults($defdom); |
# |
# |
|
my ($authnum,%can_assign) = &Apache::loncommon::get_assignable_auth($defdom); |
&print_upload_manager_header($r,$datatoken,$distotal,$krbdefdom,$context, |
&print_upload_manager_header($r,$datatoken,$distotal,$krbdefdom,$context, |
$permission,$crstype); |
$permission,$crstype,$formname,\%can_assign); |
my $i; |
my $i; |
my $keyfields; |
my $keyfields; |
if ($total>=0) { |
if ($total>=0) { |
my @field= |
my @field= |
(['username',&mt('Username'), $env{'form.username_choice'}], |
(['username',&mt('Username'), $env{'form.username_choice'}], |
|
['ipwd', &mt('Initial Password'),$env{'form.ipwd_choice'}], |
['names',&mt('Last Name, First Names'),$env{'form.names_choice'}], |
['names',&mt('Last Name, First Names'),$env{'form.names_choice'}], |
['fname',&mt('First Name'), $env{'form.fname_choice'}], |
['fname',&mt('First Name'), $env{'form.fname_choice'}], |
['mname',&mt('Middle Names/Initials'),$env{'form.mname_choice'}], |
['mname',&mt('Middle Names/Initials'),$env{'form.mname_choice'}], |
Line 993 sub print_upload_manager_form {
|
Line 1109 sub print_upload_manager_form {
|
['gen', &mt('Generation'), $env{'form.gen_choice'}], |
['gen', &mt('Generation'), $env{'form.gen_choice'}], |
['id', &mt('Student/Employee ID'),$env{'form.id_choice'}], |
['id', &mt('Student/Employee ID'),$env{'form.id_choice'}], |
['sec', &mt('Section'), $env{'form.sec_choice'}], |
['sec', &mt('Section'), $env{'form.sec_choice'}], |
['ipwd', &mt('Initial Password'),$env{'form.ipwd_choice'}], |
|
['email',&mt('E-mail Address'), $env{'form.email_choice'}], |
['email',&mt('E-mail Address'), $env{'form.email_choice'}], |
['role',&mt('Role'), $env{'form.role_choice'}], |
['role',&mt('Role'), $env{'form.role_choice'}], |
['domain',&mt('Domain'), $env{'form.domain_choice'}], |
['domain',&mt('Domain'), $env{'form.domain_choice'}], |
Line 2744 END
|
Line 2859 END
|
} |
} |
if ($role eq 'st') { |
if ($role eq 'st') { |
my $numsub = $stusubmissions{$in{'username'}.':'.$in{'domain'}."\0attempts"} + |
my $numsub = $stusubmissions{$in{'username'}.':'.$in{'domain'}."\0attempts"} + |
$stusubmissions{$in{'username'}.':'.$in{'domain'}."\0pilotsubs"}; |
$stusubmissions{$in{'username'}.':'.$in{'domain'}."\0surveysubs"}; |
if (!$numsub) { |
if (!$numsub) { |
$in{'submissions'} = 'unattempted'; |
$in{'submissions'} = 'not attempted'; |
} elsif ($numsub < $numparts) { |
} elsif ($numsub < $numparts) { |
$in{'submissions'} = 'incomplete ('.$numsub.'/'.$numparts.')'; |
$in{'submissions'} = 'incomplete ('.$numsub.'/'.$numparts.')'; |
} else { |
} else { |
Line 3333 ENDJS
|
Line 3448 ENDJS
|
} |
} |
|
|
sub section_picker { |
sub section_picker { |
my ($cdom,$cnum,$role,$rowtitle,$permission,$context,$mode,$crstype) = @_; |
my ($cdom,$cnum,$role,$rowtitle,$permission,$context,$mode,$crstype,$caller) = @_; |
my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum); |
my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum); |
my $sections_select .= &course_sections(\%sections_count,$role); |
my $sections_select .= &course_sections(\%sections_count,$role); |
my $secbox = '<p>'.&Apache::lonhtmlcommon::start_pick_box()."\n"; |
my $secbox = '<p>'.&Apache::lonhtmlcommon::start_pick_box()."\n"; |
if ($mode eq 'upload') { |
if ($mode eq 'upload' && $caller ne 'requestcrs') { |
my ($options,$cb_script,$coursepick) = |
my ($options,$cb_script,$coursepick) = |
&default_role_selector($context,1,$crstype); |
&default_role_selector($context,1,$crstype); |
$secbox .= &Apache::lonhtmlcommon::row_title(&mt('role'),'LC_oddrow_value'). |
$secbox .= &Apache::lonhtmlcommon::row_title(&mt('role'),'LC_oddrow_value'). |
$options. &Apache::lonhtmlcommon::row_closure(1)."\n"; |
$options. &Apache::lonhtmlcommon::row_closure(1)."\n"; |
} |
} |
$secbox .= &Apache::lonhtmlcommon::row_title($rowtitle,'LC_oddrow_value')."\n"; |
$secbox .= &Apache::lonhtmlcommon::row_title($rowtitle,'LC_oddrow_value')."\n"; |
if ($env{'request.course.sec'} eq '') { |
if ($caller eq 'requestcrs') { |
|
$secbox .= '<input type="hidden" name="defaultrole" value="st" />'."\n". |
|
'<input type="text" name="newsec" size="15" />'."\n". |
|
'<input type="hidden" name="sections" value="" />'."\n"; |
|
} elsif ($env{'request.course.sec'} eq '') { |
$secbox .= '<table class="LC_createuser"><tr class="LC_section_row">'."\n". |
$secbox .= '<table class="LC_createuser"><tr class="LC_section_row">'."\n". |
'<td align="center">'.&mt('Existing sections')."\n". |
'<td align="center">'.&mt('Existing sections')."\n". |
'<br />'.$sections_select.'</td><td align="center">'. |
'<br />'.$sections_select.'</td><td align="center">'. |
Line 3761 END
|
Line 3880 END
|
# Print out the initial form to get the file containing a list of users |
# Print out the initial form to get the file containing a list of users |
# |
# |
sub print_first_users_upload_form { |
sub print_first_users_upload_form { |
my ($r,$context) = @_; |
my ($r,$context,$noheader,$caller) = @_; |
my $str; |
my $str; |
$str = '<input type="hidden" name="phase" value="two" />'; |
$str = '<input type="hidden" name="phase" value="two" />'; |
$str .= '<input type="hidden" name="action" value="upload" />'; |
$str .= '<input type="hidden" name="action" value="upload" />'; |
$str .= '<input type="hidden" name="state" value="got_file" />'; |
$str .= '<input type="hidden" name="state" value="got_file" />'; |
|
|
$str .= '<h3>'.&mt('Upload a file containing information about users').'</h3>'."\n"; |
unless ($noheader) { |
|
$str .= '<h3>'.&mt('Upload a file containing information about users').'</h3>'."\n"; |
|
} |
|
|
# Excel and CSV Help |
# Excel and CSV Help |
$str .= '<div class="LC_left_float">' |
$str .= '<div class="LC_left_float">' |
Line 3781 sub print_first_users_upload_form {
|
Line 3902 sub print_first_users_upload_form {
|
.&Apache::lonhtmlcommon::row_title(&mt('File')) |
.&Apache::lonhtmlcommon::row_title(&mt('File')) |
.&Apache::loncommon::upfile_select_html() |
.&Apache::loncommon::upfile_select_html() |
.&Apache::lonhtmlcommon::row_closure() |
.&Apache::lonhtmlcommon::row_closure() |
.&Apache::lonhtmlcommon::row_title( |
.&Apache::lonhtmlcommon::row_title(&mt('Ignore First Line, e.g., contains column titles')) |
'<label for="noFirstLine">' |
.'<label><input type="radio" name="noFirstLine" id="noFirstLine" value="1" /> '.&mt('Yes').'</label>' |
.&mt('Ignore First Line') |
.' ' |
.'</label>') |
.'<label><input type="radio" name="noFirstLine" id="FirstLineOK" value="0" checked="checked" /> '.&mt('No').'</label>' |
.'<input type="checkbox" name="noFirstLine" id="noFirstLine" />' |
|
.&Apache::lonhtmlcommon::row_closure(1) |
.&Apache::lonhtmlcommon::row_closure(1) |
.&Apache::lonhtmlcommon::end_pick_box(); |
.&Apache::lonhtmlcommon::end_pick_box(); |
|
|
$str .= '<p>' |
$str .= '<p>' |
|
.'<input type="hidden" name=caller" value="'.$caller.'" />' |
.'<input type="submit" name="fileupload" value="'.&mt('Next').'" />' |
.'<input type="submit" name="fileupload" value="'.&mt('Next').'" />' |
.'</p>'; |
.'</p>'; |
|
|
Line 3852 sub upfile_drop_add {
|
Line 3973 sub upfile_drop_add {
|
$crstype = &Apache::loncommon::course_type($cid); |
$crstype = &Apache::loncommon::course_type($cid); |
} |
} |
} |
} |
my ($startdate,$enddate) = &get_dates_from_form(); |
my ($startdate,$enddate); |
if ($env{'form.makedatesdefault'}) { |
if ($env{'form.caller'} eq 'requestcrs') { |
$r->print(&make_dates_default($startdate,$enddate,$context,$crstype)); |
$startdate = $env{'course.'.$env{'request.course.id'}.'.default_enrollment_start_date'}; |
|
$enddate = $env{'course.'.$env{'request.course.id'}.'.default_enrollment_end_date'}; |
|
} else { |
|
($startdate,$enddate) = &get_dates_from_form(); |
|
if ($env{'form.makedatesdefault'}) { |
|
$r->print(&make_dates_default($startdate,$enddate,$context,$crstype)); |
|
} |
} |
} |
# Determine domain and desired host (home server) |
# Determine domain and desired host (home server) |
my $defdom=$env{'request.role.domain'}; |
my $defdom=$env{'request.role.domain'}; |
Line 4020 sub upfile_drop_add {
|
Line 4147 sub upfile_drop_add {
|
$r->print($groupwarn.'<br />'); |
$r->print($groupwarn.'<br />'); |
} |
} |
} |
} |
my (%curr_rules,%got_rules,%alerts); |
my (%curr_rules,%got_rules,%alerts,%cancreate); |
my %customroles = &my_custom_roles($crstype); |
my %customroles = &my_custom_roles($crstype); |
my @permitted_roles = |
my @permitted_roles = |
&roles_on_upload($context,$setting,$crstype,%customroles); |
&roles_on_upload($context,$setting,$crstype,%customroles); |
|
my %longtypes = &Apache::lonlocal::texthash( |
|
official => 'Institutional', |
|
unofficial => 'Non-institutional', |
|
); |
|
map { $cancreate{$_} = &can_create_user($domain,$context,$_); } keys(%longtypes); |
# Get new users list |
# Get new users list |
foreach my $line (@userdata) { |
foreach my $line (@userdata) { |
my @secs; |
my @secs; |
Line 4169 sub upfile_drop_add {
|
Line 4301 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') { |
next if ($userdomain ne $domain); |
if ($userdomain ne $domain) { |
|
$r->print('<br />'. |
|
&mt('[_1]: The domain specified ([_2]) is different to that of the course.', |
|
'<b>'.$username.'</b>',$userdomain).'<br />'. |
|
&mt('The user does not already exist, and you may not create a new user in a different domain.')); |
|
next; |
|
} |
$checkid = 1; |
$checkid = 1; |
$newuser = 1; |
$newuser = 1; |
|
my $user = $username.':'.$domain; |
|
if ($username =~/^[^\@]+\@[^\@]+$/) { |
|
if ($email eq '') { |
|
$email = $username; |
|
} |
|
if (&Apache::loncommon::needs_gci_custom()) { |
|
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; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
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'}{$domain}) eq 'HASH') { |
next if ($alerts{'username'}{$domain}{$username}); |
if ($alerts{'username'}{$domain}{$username}) { |
|
$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('Consequently, the user was not created.')); |
|
next; |
|
} |
|
} |
|
} |
|
my $usertype = 'unofficial'; |
|
if (ref($rulematch{$user}) eq 'HASH') { |
|
if ($rulematch{$user}{'username'}) { |
|
$usertype = 'official'; |
} |
} |
} |
} |
|
if (!$cancreate{$usertype}) { |
|
$r->print('<br />'. |
|
&mt("[_1]: The user does not exist, and you are not permitted to create users of type: $longtypes{$usertype}.",'<b>'.$username.'</b>')); |
|
next; |
|
} |
} else { |
} else { |
if ($context eq 'course' || $context eq 'author') { |
if ($context eq 'course' || $context eq 'author') { |
if ($userdomain eq $domain ) { |
if ($userdomain eq $domain ) { |
Line 4233 sub upfile_drop_add {
|
Line 4412 sub upfile_drop_add {
|
\%got_rules); |
\%got_rules); |
if (ref($alerts{'id'}) eq 'HASH') { |
if (ref($alerts{'id'}) eq 'HASH') { |
if (ref($alerts{'id'}{$userdomain}) eq 'HASH') { |
if (ref($alerts{'id'}{$userdomain}) eq 'HASH') { |
next if ($alerts{'id'}{$userdomain}{$id}); |
if ($alerts{'id'}{$userdomain}{$id}) { |
|
$r->print(&mt('[_1]: has a student/employee ID matching the format at your institution, but the ID is found by your directory service.', |
|
'<b>'.$username.'</b>').'<br />'. |
|
&mt('Consequently, the user was not created.')); |
|
next; |
|
} |
} |
} |
} |
} |
} |
} |
Line 4332 sub upfile_drop_add {
|
Line 4516 sub upfile_drop_add {
|
$r->print("</p>\n<p>\n".&mt('Processed [quant,_1,user].',$counts{'user'}). |
$r->print("</p>\n<p>\n".&mt('Processed [quant,_1,user].',$counts{'user'}). |
"</p>\n"); |
"</p>\n"); |
if ($counts{'role'} > 0) { |
if ($counts{'role'} > 0) { |
$r->print("<p>\n". |
if (&Apache::loncommon::needs_gci_custom()) { |
&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"); |
$r->print("<p>\n". |
|
&mt('[quant,_1,student] enrolled in Concept Test.',$counts{'role'}). |
|
"</p>\n"); |
|
} else { |
|
$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"); |
|
} |
} else { |
} else { |
$r->print('<p>'.&mt('No roles added').'</p>'); |
if (&Apache::loncommon::needs_gci_custom()) { |
|
$r->print('<p>'.&mt('No students enrolled').'</p>'); |
|
} else { |
|
$r->print('<p>'.&mt('No roles added').'</p>'); |
|
} |
} |
} |
if ($counts{'auth'} > 0) { |
if ($counts{'auth'} > 0) { |
$r->print("<p>\n". |
$r->print("<p>\n". |
Line 4989 function setSections(formname,crstype) {
|
Line 5183 function setSections(formname,crstype) {
|
if (crstype == 'Community') { |
if (crstype == 'Community') { |
alert("$alerts{'inea'} $alerts{'youh'} "+numsec+" $alerts{'secs'}\\n$alerts{'plmo'}"); |
alert("$alerts{'inea'} $alerts{'youh'} "+numsec+" $alerts{'secs'}\\n$alerts{'plmo'}"); |
} else { |
} else { |
alert("$alerts{'inco'} $alerts{'youh'} "+numsec+" $alerts{'secs'}\\n$alerts{'plmo'}"); |
alert("$alerts{'inec'} $alerts{'youh'} "+numsec+" $alerts{'secs'}\\n$alerts{'plmo'}"); |
} |
} |
return; |
return; |
} |
} |
Line 5021 ENDSECCODE
|
Line 5215 ENDSECCODE
|
return $setsection_js; |
return $setsection_js; |
} |
} |
|
|
|
sub newsections_javascript { |
|
my %alerts = &Apache::lonlocal::texthash( |
|
inea => 'In each course, each user may only have one student role at a time.', |
|
youh => 'You had selected ', |
|
secs => 'sections.', |
|
plmo => 'Please modify your selections so they include no more than one section.', |
|
mayn => 'may not be used as the name for a section, as it is a reserved word.', |
|
plch => 'Please choose a different section name.', |
|
); |
|
my $setsection_js = <<"ENDSECCODE"; |
|
|
|
function setSections(formname) { |
|
var newsecs = formname.newsec.value; |
|
var numsplit = 0; |
|
var numsec = 0; |
|
if (newsecs != null && newsecs != "") { |
|
numsplit = newsecs.split(/,/g); |
|
numsec = numsplit.length; |
|
} |
|
if (numsec > 1) { |
|
alert("$alerts{'inea'} $alerts{'youh'} "+numsec+" $alerts{'secs'}\\n$alerts{'plmo'}"); |
|
} else { |
|
if (numsplit > 0) { |
|
for (var j=0; j<numsplit.length; j++) { |
|
if ((numsplit[j] == 'all') || |
|
(numsplit[j] == 'none')) { |
|
alert("'"+numsplit[j]+"' $alerts{'mayn'}\\n$alerts{'plch'}"); |
|
return; |
|
} |
|
} |
|
formname.sections.value = newsecs; |
|
} |
|
} |
|
return 'ok'; |
|
} |
|
|
|
ENDSECCODE |
|
return $setsection_js; |
|
} |
|
|
sub can_create_user { |
sub can_create_user { |
my ($dom,$context,$usertype) = @_; |
my ($dom,$context,$usertype) = @_; |
my %domconf = &Apache::lonnet::get_dom('configuration',['usercreation'],$dom); |
my %domconf = &Apache::lonnet::get_dom('configuration',['usercreation'],$dom); |