version 1.109.2.6, 2010/11/08 21:08:27
|
version 1.112, 2010/01/14 18:15:31
|
Line 36 use Apache::loncommon();
|
Line 36 use Apache::loncommon();
|
use Apache::lonhtmlcommon; |
use Apache::lonhtmlcommon; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::longroup; |
use Apache::longroup; |
use Apache::lonnavmaps; |
|
use LONCAPA qw(:DEFAULT :match); |
use LONCAPA qw(:DEFAULT :match); |
|
|
############################################################### |
############################################################### |
Line 296 sub hidden_input {
|
Line 295 sub hidden_input {
|
} |
} |
|
|
sub print_upload_manager_header { |
sub print_upload_manager_header { |
my ($r,$datatoken,$distotal,$krbdefdom,$context,$permission,$crstype,$formname, |
my ($r,$datatoken,$distotal,$krbdefdom,$context,$permission,$crstype)=@_; |
$can_assign)=@_; |
|
my $javascript; |
my $javascript; |
# |
# |
if (! exists($env{'form.upfile_associate'})) { |
if (! exists($env{'form.upfile_associate'})) { |
Line 311 sub print_upload_manager_header {
|
Line 309 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($can_assign); |
$javascript=&upload_manager_javascript_reverse_associate(); |
} else { |
} else { |
$javascript=&upload_manager_javascript_forward_associate($can_assign); |
$javascript=&upload_manager_javascript_forward_associate(); |
} |
} |
# |
# |
# Deal with restored settings |
# Deal with restored settings |
Line 327 sub print_upload_manager_header {
|
Line 325 sub print_upload_manager_header {
|
$password_choice = 'int'; |
$password_choice = 'int'; |
} |
} |
# |
# |
my ($sectionjs,$groupslist); |
my $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 365 ENDJS
|
Line 340 ENDJS
|
."</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 />'. |
$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"); |
&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 384 ENDJS
|
Line 356 ENDJS
|
$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".$sectionjs."\n". |
$javascript."\n".$javascript_validations."\n". |
'// ]]>'."\n". |
'// ]]>'."\n". |
'</script>'); |
'</script>'); |
} |
} |
Line 415 sub javascript_validations {
|
Line 387 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'".');'; |
if ($env{'form.caller'} eq 'requestcrs') { |
$setsections_js = |
$setsections_js = &newsections_javascript($param{'formname'}); |
&setsections_javascript($param{'formname'},$groupslist, |
} else { |
$mode,'',$crstype); |
$setsections_js = |
|
&setsections_javascript($param{'formname'},$groupslist, |
|
$mode,'',$crstype); |
|
} |
|
} else { |
} else { |
$setsection_call = "'ok'"; |
$setsection_call = "'ok'"; |
} |
} |
Line 549 END
|
Line 517 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 586 END
|
Line 552 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 598 END
|
Line 563 END
|
} |
} |
END |
END |
} |
} |
if ($env{'form.caller'} eq 'requestcrs') { |
$optional_checks .= (<<END); |
$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 619 END
|
Line 577 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 628 END
|
Line 585 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 729 function flip(vf,tf) {
|
Line 661 function flip(vf,tf) {
|
} |
} |
} |
} |
} |
} |
$auth_update |
// 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); |
|
vf.intarg.value=''; |
|
vf.krbarg.value=''; |
|
vf.locarg.value=''; |
|
} |
} |
} |
|
|
function clearpwd(vf) { |
function clearpwd(vf) { |
Line 747 ENDPICK
|
Line 687 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 809 function flip(vf,tf) {
|
Line 726 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;') |
} |
} |
$auth_update |
// intial password specified, pick internal authentication |
|
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 838 sub print_upload_manager_footer {
|
Line 762 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 853 sub print_upload_manager_footer {
|
Line 774 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('Default password')); |
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Login Type')); |
} 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 871 sub print_upload_manager_footer {
|
Line 789 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.'). |
my ($authnum,%can_assign) = &Apache::loncommon::get_assignable_auth($defdom); |
&Apache::loncommon::help_open_topic('Auth_Options'). |
if ($authnum > 1) { |
"</p>\n"; |
$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 897 sub print_upload_manager_footer {
|
Line 810 sub print_upload_manager_footer {
|
&Apache::lonhtmlcommon::row_closure(); |
&Apache::lonhtmlcommon::row_closure(); |
} |
} |
|
|
unless ($env{'form.caller'} eq 'requestcrs') { |
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Default domain')) |
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Default domain')) |
.&Apache::loncommon::select_dom_form($defdom,'defaultdomain',undef,1) |
.&Apache::loncommon::select_dom_form($defdom,'defaultdomain',undef,1) |
.&Apache::lonhtmlcommon::row_closure(); |
.&Apache::lonhtmlcommon::row_closure() |
|
.&Apache::lonhtmlcommon::row_title(&mt('Starting and Ending Dates')) |
$Str .= &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 924 sub print_upload_manager_footer {
|
Line 837 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') { |
if ($env{'form.caller'} eq 'requestcrs') { |
$Str .= &Apache::lonhtmlcommon::row_title( |
$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 963 sub print_upload_manager_footer {
|
Line 863 sub print_upload_manager_footer {
|
} |
} |
} else { |
} else { |
my ($cnum,$cdom) = &get_course_identity(); |
my ($cnum,$cdom) = &get_course_identity(); |
my ($rowtitle,$closure); |
my $rowtitle = &mt('section'); |
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); |
$env{'form.caller'}). |
$Str .= $secbox |
&Apache::lonhtmlcommon::row_closure($closure); |
.&Apache::lonhtmlcommon::row_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 991 sub print_upload_manager_footer {
|
Line 880 sub print_upload_manager_footer {
|
stus => 'Students selected from this list can be dropped.' |
stus => 'Students selected from this list can be dropped.' |
); |
); |
} |
} |
unless ($env{'form.caller'} eq 'requestcrs') { |
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Full Update')) |
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Full Update')) |
.'<label><input type="checkbox" name="fullup" value="yes" />' |
.'<label><input type="checkbox" name="fullup" value="yes" />' |
.' '.$lt{'disp'} |
.' '.$lt{'disp'} |
.'</label><br />' |
.'</label><br />' |
.$lt{'stus'} |
.$lt{'stus'} |
.&Apache::lonhtmlcommon::row_closure(); |
.&Apache::lonhtmlcommon::row_closure(); |
|
} |
|
} |
} |
if ($context eq 'course' || $context eq 'domain') { |
if ($context eq 'course' || $context eq 'domain') { |
unless ($env{'form.caller'} eq 'requestcrs') { |
$Str .= &forceid_change($context); |
$Str .= &forceid_change($context); |
|
} |
|
} |
} |
|
|
$Str .= &Apache::lonhtmlcommon::end_pick_box(); |
$Str .= &Apache::lonhtmlcommon::end_pick_box(); |
Line 1047 sub forceid_change {
|
Line 932 sub forceid_change {
|
############################################################### |
############################################################### |
############################################################### |
############################################################### |
sub print_upload_manager_form { |
sub print_upload_manager_form { |
my ($r,$context,$permission,$crstype,$formname) = @_; |
my ($r,$context,$permission,$crstype) = @_; |
my $firstLine; |
my $firstLine; |
my $datatoken; |
my $datatoken; |
if (!$env{'form.datatoken'}) { |
if (!$env{'form.datatoken'}) { |
Line 1093 sub print_upload_manager_form {
|
Line 978 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,$formname,\%can_assign); |
$permission,$crstype); |
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 1109 sub print_upload_manager_form {
|
Line 992 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 1301 sub default_role_selector {
|
Line 1185 sub default_role_selector {
|
'exs' => "Existing sections", |
'exs' => "Existing sections", |
'new' => "New section", |
'new' => "New section", |
); |
); |
$options = '<select name="defaultrole">'."\n"; |
$options = '<select name="defaultrole">'."\n". |
unless (($context eq 'course') && (&Apache::loncommon::needs_gci_custom())) { |
' <option value="">'.&mt('Please select').'</option>'."\n"; |
$options .= ' <option value="">'.&mt('Please select').'</option>'."\n"; |
|
} |
|
if ($context eq 'course') { |
if ($context eq 'course') { |
$options .= &default_course_roles($context,$checkpriv,$crstype,%customroles); |
$options .= &default_course_roles($context,$checkpriv,$crstype,%customroles); |
} elsif ($context eq 'author') { |
} elsif ($context eq 'author') { |
Line 1566 sub print_userlist {
|
Line 1448 sub print_userlist {
|
} |
} |
if (!(($context eq 'domain') && |
if (!(($context eq 'domain') && |
(($env{'form.roletype'} eq 'course') || ($env{'form.roletype'} eq 'community')))) { |
(($env{'form.roletype'} eq 'course') || ($env{'form.roletype'} eq 'community')))) { |
$r->print(' '.&list_submit_button(&mt('Update Display')). |
$r->print( |
"\n</p>\n"); |
"\n</p>\n" |
|
.'<p>' |
|
.&list_submit_button(&mt('Update Display')) |
|
."</p>\n" |
|
); |
} |
} |
my ($indexhash,$keylist) = &make_keylist_array(); |
my ($indexhash,$keylist) = &make_keylist_array(); |
my (%userlist,%userinfo,$clearcoursepick); |
my (%userlist,%userinfo,$clearcoursepick); |
Line 1806 sub role_filter {
|
Line 1692 sub role_filter {
|
$role_select .= '</select>'; |
$role_select .= '</select>'; |
$output = '<label><span class="LC_nobreak">' |
$output = '<label><span class="LC_nobreak">' |
.&mt('Role: [_1]',$role_select) |
.&mt('Role: [_1]',$role_select) |
.'</span></label>'; |
.'</span></label> '; |
} |
} |
return $output; |
return $output; |
} |
} |
Line 1846 sub section_group_filter {
|
Line 1732 sub section_group_filter {
|
} |
} |
if (@options > 0) { |
if (@options > 0) { |
my $currsel; |
my $currsel; |
$markup = '<select name="'.$name{$item}.'" />'."\n"; |
$markup = '<select name="'.$name{$item}.'">'."\n"; |
foreach my $option ('all','none',@options) { |
foreach my $option ('all','none',@options) { |
$currsel = ''; |
$currsel = ''; |
if ($env{'form.'.$name{$item}} eq $option) { |
if ($env{'form.'.$name{$item}} eq $option) { |
Line 1861 sub section_group_filter {
|
Line 1747 sub section_group_filter {
|
$markup .= '</option>'."\n"; |
$markup .= '</option>'."\n"; |
} |
} |
$markup .= '</select>'."\n"; |
$markup .= '</select>'."\n"; |
$output .= (' 'x3).'<label>'.$title{$item}.': '.$markup.'</label>'; |
$output .= (' 'x3).'<span class="LC_nobreak">' |
|
.'<label>'.$title{$item}.': '.$markup.'</label>' |
|
.'</span> '; |
} |
} |
} |
} |
return $output; |
return $output; |
Line 2211 sub process_date_info {
|
Line 2099 sub process_date_info {
|
|
|
sub show_users_list { |
sub show_users_list { |
my ($r,$context,$mode,$permission,$statusmode,$userlist,$keylist,$formname)=@_; |
my ($r,$context,$mode,$permission,$statusmode,$userlist,$keylist,$formname)=@_; |
my $custommenu; |
|
if ($formname eq '') { |
if ($formname eq '') { |
$formname = 'studentform'; |
$formname = 'studentform'; |
} |
} |
Line 2236 sub show_users_list {
|
Line 2123 sub show_users_list {
|
$sortby = 'username'; |
$sortby = 'username'; |
} |
} |
my $setting = $env{'form.roletype'}; |
my $setting = $env{'form.roletype'}; |
my ($cid,$cdom,$cnum,$classgroups,$displayphotos,$displayclickers,$crstype, |
my ($cid,$cdom,$cnum,$classgroups,$displayphotos,$displayclickers,$crstype); |
$clickersupport,$displaygroups); |
|
if ($context eq 'course') { |
if ($context eq 'course') { |
$cid = $env{'request.course.id'}; |
$cid = $env{'request.course.id'}; |
$crstype = &Apache::loncommon::course_type(); |
$crstype = &Apache::loncommon::course_type(); |
($cnum,$cdom) = &get_course_identity($cid); |
($cnum,$cdom) = &get_course_identity($cid); |
$custommenu = &Apache::loncommon::needs_gci_custom(); |
|
unless ($custommenu) { |
|
$clickersupport = 1; |
|
$displaygroups = 1; |
|
} |
|
($classgroups) = &Apache::loncoursedata::get_group_memberships( |
($classgroups) = &Apache::loncoursedata::get_group_memberships( |
$userlist,$keylist,$cdom,$cnum); |
$userlist,$keylist,$cdom,$cnum); |
if ($mode eq 'autoenroll') { |
if ($mode eq 'autoenroll') { |
Line 2367 END
|
Line 2248 END
|
'role' => "role", |
'role' => "role", |
'type' => "enroll type/action", |
'type' => "enroll type/action", |
'email' => "e-mail address", |
'email' => "e-mail address", |
'lastlogin' => "last login", |
|
'submissions' => "test status", |
|
'photo' => "photo", |
'photo' => "photo", |
'extent' => "extent", |
'extent' => "extent", |
'pr' => "Proceed", |
'pr' => "Proceed", |
Line 2415 END
|
Line 2294 END
|
push(@cols,'status'); |
push(@cols,'status'); |
} |
} |
if ($context eq 'course') { |
if ($context eq 'course') { |
if ($displaygroups) { |
push(@cols,'groups'); |
push(@cols,'groups'); |
|
} |
|
} |
} |
push(@cols,'email'); |
push(@cols,'email'); |
if ($context eq 'course') { |
|
if ($custommenu) { |
|
push(@cols,'lastlogin'); |
|
if (($env{'form.showrole'} eq 'Any') || ($env{'form.showrole'} eq 'st')) { |
|
push(@cols,'submissions'); |
|
} |
|
} |
|
} |
|
} |
} |
|
|
my $rolefilter = $env{'form.showrole'}; |
my $rolefilter = $env{'form.showrole'}; |
Line 2534 END
|
Line 2403 END
|
if ($env{'form.userwin'}) { |
if ($env{'form.userwin'}) { |
$checkwin = ' checked="checked"'; |
$checkwin = ' checked="checked"'; |
} |
} |
$output .= '</td><td valign="top"><span class="LC_nobreak"><input type="checkbox" name="userwin" value="1"'.$checkwin.' />'.$lt{'owin'}.'</span></td></tr></table></fieldset></div>'; |
$output .= '</td><td valign="top" style="border-left: 1px solid;"><span class="LC_nobreak"><input type="checkbox" name="userwin" value="1"'.$checkwin.' />'.$lt{'owin'}.'</span></td></tr></table></fieldset></div>'; |
} |
} |
$output .= "\n".'<div class="LC_clear_float_footer"> </div>'."\n". |
$output .= "\n".'<div class="LC_clear_float_footer"> </div>'."\n". |
&Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table(). |
Line 2550 END
|
Line 2419 END
|
} |
} |
} |
} |
foreach my $item (@cols) { |
foreach my $item (@cols) { |
if (grep(/^\Q$item\E$/,@sortable)) { |
$output .= "<th><a href=\"javascript:document.$formname.sortby.value='$item';document.$formname.submit();\">$lt{$item}</a></th>\n"; |
$output .= "<th><a href=\"javascript:document.$formname.sortby.value='$item';document.$formname.submit();\">$lt{$item}</a></th>\n"; |
|
} else { |
|
$output .= "<th>$lt{$item}</th>\n"; |
|
} |
|
} |
} |
my %role_types = &role_type_names(); |
my %role_types = &role_type_names(); |
if ($context eq 'course' && $mode ne 'autoenroll') { |
if ($context eq 'course' && $mode ne 'autoenroll') { |
if ($env{'form.showrole'} eq 'st' || $env{'form.showrole'} eq 'Any') { |
if ($env{'form.showrole'} eq 'st' || $env{'form.showrole'} eq 'Any') { |
# Clicker display on or off? |
# Clicker display on or off? |
if ($clickersupport) { |
my %clicker_options = ( |
my %clicker_options = ( |
'on' => 'Show', |
'on' => 'Show', |
'off' => 'Hide', |
'off' => 'Hide', |
); |
); |
my $clickerchg = 'on'; |
my $clickerchg = 'on'; |
if ($displayclickers eq 'on') { |
if ($displayclickers eq 'on') { |
$clickerchg = 'off'; |
$clickerchg = 'off'; |
} |
} |
$output .= ' <th>'."\n".' ' |
$output .= ' <th>'."\n".' ' |
.&mt('[_1]'.$clicker_options{$clickerchg}.'[_2] clicker id' |
.&mt('[_1]'.$clicker_options{$clickerchg}.'[_2] clicker id' |
|
,'<a href="javascript:document.'.$formname.'.displayclickers.value=' |
,'<a href="javascript:document.'.$formname.'.displayclickers.value=' |
."'".$clickerchg."'".';document.'.$formname.'.submit();">' |
."'".$clickerchg."'".';document.'.$formname.'.submit();">' |
,'</a>') |
,'</a>') |
."\n".' </th>'."\n"; |
."\n".' </th>'."\n"; |
} |
|
# Photo display on or off? |
# Photo display on or off? |
if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) { |
if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) { |
my %photo_options = &Apache::lonlocal::texthash( |
my %photo_options = &Apache::lonlocal::texthash( |
Line 2614 END
|
Line 2478 END
|
$CSVfile = undef; |
$CSVfile = undef; |
} |
} |
# |
# |
if ($clickersupport) { |
push @cols,'clicker'; |
push @cols,'clicker'; |
|
} |
|
# Write headers and data to file |
# Write headers and data to file |
print $CSVfile '"'.$results_description.'"'."\n"; |
print $CSVfile '"'.$results_description.'"'."\n"; |
print $CSVfile '"'.join('","',map { |
print $CSVfile '"'.join('","',map { |
&Apache::loncommon::csv_translate($lt{$_}) |
&Apache::loncommon::csv_translate($lt{$_}) |
} (@cols))."\"\n"; |
} (@cols))."\"\n"; |
} elsif ($mode eq 'excel') { |
} elsif ($mode eq 'excel') { |
if ($clickersupport) { |
push @cols,'clicker'; |
push @cols,'clicker'; |
|
} |
|
# Create the excel spreadsheet |
# Create the excel spreadsheet |
($excel_workbook,$excel_filename,$format) = |
($excel_workbook,$excel_filename,$format) = |
&Apache::loncommon::create_workbook($r); |
&Apache::loncommon::create_workbook($r); |
Line 2661 END
|
Line 2521 END
|
Future => 'Future', |
Future => 'Future', |
Expired => 'Expired', |
Expired => 'Expired', |
); |
); |
# If this is for a single course get last course "log-in" and submissions. |
|
my (%crslogins,%stusubmissions,%elapsed,$numparts,%nummultipart,$multipart); |
|
my $now = time; |
|
if ($context eq 'course') { |
|
if ($custommenu) { |
|
%crslogins=&Apache::lonnet::dump('nohist_crslastlogin',$cdom,$cnum); |
|
%stusubmissions=&Apache::lonnet::dump('nohist_submissiontracker',$cdom,$cnum); |
|
%elapsed = &Apache::lonlocal::texthash( |
|
-1 => 'more than a month ago', |
|
2592000 => 'within last 30 days', |
|
604800 => 'within last 7 days', |
|
86400 => 'within last 24 hours', |
|
); |
|
my $navmap = Apache::lonnavmaps::navmap->new(); |
|
if (defined($navmap)) { |
|
my @allres=$navmap->retrieveResources('/uploaded/'.$cdom.'/'.$cnum.'/default_1261144274.sequence',sub { $_[0]->is_problem() },0); |
|
foreach my $resource (@allres) { |
|
my @parts = $resource->parts(); |
|
my $count = scalar(@parts); |
|
if ($count > 1) { |
|
$nummultipart{$count} ++; |
|
} |
|
$numparts += $count; |
|
} |
|
if (keys(%nummultipart) > 0) { |
|
$multipart = '<br />'.'contains'; |
|
foreach my $key (sort {$a <=> $b} keys(%nummultipart)) { |
|
$multipart .= " nummultipart{$key} multipart questions (with $key parts)"; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
|
|
# 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 2841 END
|
Line 2667 END
|
} else { |
} else { |
$in{'end'} = &Apache::lonlocal::locallocaltime($in{'end'}); |
$in{'end'} = &Apache::lonlocal::locallocaltime($in{'end'}); |
} |
} |
if ($context eq 'course') { |
|
if ($custommenu) { |
|
my $lastlogin = $crslogins{$in{'username'}.':'.$in{'domain'}.':'.$in{'section'}.':'.$role}; |
|
if ($lastlogin ne '') { |
|
my $sincelogin = $now - $lastlogin; |
|
if ($sincelogin < 86400) { |
|
$in{'lastlogin'} = $elapsed{'86400'}; |
|
} elsif ($sincelogin < 604800) { |
|
$in{'lastlogin'} = $elapsed{'604800'}; |
|
} elsif ($sincelogin < 2592000 ) { |
|
$in{'lastlogin'} = $elapsed{'2592000'}; |
|
} else { |
|
$in{'lastlogin'} = $elapsed{'-1'}; |
|
} |
|
} |
|
} |
|
if ($role eq 'st') { |
|
my $numsub = $stusubmissions{$in{'username'}.':'.$in{'domain'}."\0attempts"} + |
|
$stusubmissions{$in{'username'}.':'.$in{'domain'}."\0surveysubs"}; |
|
if (!$numsub) { |
|
$in{'submissions'} = 'not attempted'; |
|
} elsif ($numsub < $numparts) { |
|
$in{'submissions'} = 'incomplete ('.$numsub.'/'.$numparts.')'; |
|
} else { |
|
$in{'submissions'} = 'completed'; |
|
} |
|
} |
|
} |
|
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()); |
my $checkval; |
my $checkval; |
Line 2942 END
|
Line 2740 END
|
$showitem = $ltstatus{$in{$item}}; |
$showitem = $ltstatus{$in{$item}}; |
} |
} |
$r->print('<td>'.$showitem.'</td>'."\n"); |
$r->print('<td>'.$showitem.'</td>'."\n"); |
} elsif ($item eq 'submissions') { |
|
if ($in{$item} =~ /^incomplete/) { |
|
$r->print('<td>'.$in{$item}.$multipart.'</td>'); |
|
} else { |
|
$r->print('<td>'.$in{$item}.'</td>'."\n"); |
|
} |
|
} else { |
} else { |
$r->print('<td>'.$in{$item}.'</td>'."\n"); |
$r->print('<td>'.$in{$item}.'</td>'."\n"); |
} |
} |
} |
} |
if (($context eq 'course') && ($mode ne 'autoenroll')) { |
if (($context eq 'course') && ($mode ne 'autoenroll')) { |
if ($env{'form.showrole'} eq 'st' || $env{'form.showrole'} eq 'Any') { |
if ($env{'form.showrole'} eq 'st' || $env{'form.showrole'} eq 'Any') { |
if ($clickersupport) { |
if ($displayclickers eq 'on') { |
if ($displayclickers eq 'on') { |
my $clickers = |
my $clickers = |
|
(&Apache::lonnet::userenvironment($in{'domain'},$in{'username'},'clickers'))[1]; |
(&Apache::lonnet::userenvironment($in{'domain'},$in{'username'},'clickers'))[1]; |
if ($clickers!~/\w/) { $clickers='-'; } |
if ($clickers!~/\w/) { $clickers='-'; } |
$r->print('<td>'.$clickers.'</td>'); |
$r->print('<td>'.$clickers.'</td>'); |
} else { |
} else { |
$r->print(' <td> </td> '); |
$r->print(' <td> </td> '); |
} |
|
} |
} |
if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) { |
if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) { |
if ($displayphotos eq 'on' && $role eq 'st' && $in{'photo'} ne '') { |
if ($displayphotos eq 'on' && $role eq 'st' && $in{'photo'} ne '') { |
Line 3153 sub print_username_link {
|
Line 2943 sub print_username_link {
|
$output = $in->{'username'}; |
$output = $in->{'username'}; |
} else { |
} else { |
$output = '<a href="javascript:username_display_launch('. |
$output = '<a href="javascript:username_display_launch('. |
"'$in->{'username'}','$in->{'domain'}'".')" />'. |
"'$in->{'username'}','$in->{'domain'}'".')">'. |
$in->{'username'}.'</a>'; |
$in->{'username'}.'</a>'; |
} |
} |
return $output; |
return $output; |
Line 3448 ENDJS
|
Line 3238 ENDJS
|
} |
} |
|
|
sub section_picker { |
sub section_picker { |
my ($cdom,$cnum,$role,$rowtitle,$permission,$context,$mode,$crstype,$caller) = @_; |
my ($cdom,$cnum,$role,$rowtitle,$permission,$context,$mode,$crstype) = @_; |
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' && $caller ne 'requestcrs') { |
if ($mode eq 'upload') { |
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 ($caller eq 'requestcrs') { |
if ($env{'request.course.sec'} eq '') { |
$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 3682 sub show_drop_list {
|
Line 3468 sub show_drop_list {
|
my ($r,$classlist,$nosort,$permission,$crstype) = @_; |
my ($r,$classlist,$nosort,$permission,$crstype) = @_; |
my $cid = $env{'request.course.id'}; |
my $cid = $env{'request.course.id'}; |
my ($cnum,$cdom) = &get_course_identity($cid); |
my ($cnum,$cdom) = &get_course_identity($cid); |
my $displaygroups; |
|
unless (&Apache::loncommon::needs_gci_custom()) { |
|
$displaygroups = 1; |
|
} |
|
if (! exists($env{'form.sortby'})) { |
if (! exists($env{'form.sortby'})) { |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['sortby']); |
['sortby']); |
Line 3763 END
|
Line 3545 END
|
<th>$lt{'sec'}</th> |
<th>$lt{'sec'}</th> |
<th>$lt{'start'}</th> |
<th>$lt{'start'}</th> |
<th>$lt{'end'}</th> |
<th>$lt{'end'}</th> |
|
<th>$lt{'groups'}</th> |
END |
END |
if ($displaygroups) { |
|
$r->print(" <th>$lt{'groups'}</th>\n"); |
|
} |
|
$r->print(&Apache::loncommon::end_data_table_header_row()); |
$r->print(&Apache::loncommon::end_data_table_header_row()); |
} else { |
} else { |
$r->print(&Apache::loncommon::start_data_table(). |
$r->print(&Apache::loncommon::start_data_table(). |
Line 3787 END
|
Line 3567 END
|
<a href="/adm/createuser?action=$action&sortby=start">$lt{'start'}</a> |
<a href="/adm/createuser?action=$action&sortby=start">$lt{'start'}</a> |
</th><th> |
</th><th> |
<a href="/adm/createuser?action=$action&sortby=end">$lt{'end'}</a> |
<a href="/adm/createuser?action=$action&sortby=end">$lt{'end'}</a> |
|
</th><th> |
|
<a href="/adm/createuser?action=$action&sortby=groups">$lt{'groups'}</a> |
</th> |
</th> |
END |
END |
if ($displaygroups) { |
|
$r->print("<th> |
|
<a href=\"/adm/createuser?action=$action&sortby=groups\">$lt{'groups'}</a> |
|
</th>\n"); |
|
} |
|
$r->print(&Apache::loncommon::end_data_table_header_row()); |
$r->print(&Apache::loncommon::end_data_table_header_row()); |
} |
} |
# |
# |
Line 3846 END
|
Line 3623 END
|
<td>$section</td> |
<td>$section</td> |
<td>$start $startitem</td> |
<td>$start $startitem</td> |
<td>$end</td> |
<td>$end</td> |
|
<td>$active_groups</td> |
END |
END |
if ($displaygroups) { |
|
$r->print(" <td>$active_groups</td>\n"); |
|
} |
|
$r->print(&Apache::loncommon::end_data_table_row()); |
$r->print(&Apache::loncommon::end_data_table_row()); |
} |
} |
$r->print(&Apache::loncommon::end_data_table().'<br />'); |
$r->print(&Apache::loncommon::end_data_table().'<br />'); |
Line 3880 END
|
Line 3655 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,$noheader,$caller) = @_; |
my ($r,$context) = @_; |
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" />'; |
|
|
unless ($noheader) { |
$str .= '<h2>'.&mt('Upload a file containing information about users').'</h2>'."\n"; |
$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 3899 sub print_first_users_upload_form {
|
Line 3672 sub print_first_users_upload_form {
|
&mt("How do I create a CSV file from a spreadsheet")) |
&mt("How do I create a CSV file from a spreadsheet")) |
.'</div><br clear="all" />'."\n"; |
.'</div><br clear="all" />'."\n"; |
$str .= &Apache::lonhtmlcommon::start_pick_box() |
$str .= &Apache::lonhtmlcommon::start_pick_box() |
.&Apache::lonhtmlcommon::row_title(&mt('File')) |
.&Apache::lonhtmlcommon::row_title(&mt('File')); |
.&Apache::loncommon::upfile_select_html() |
if (&Apache::lonlocal::current_language() ne 'en') { |
|
if ($context eq 'course') { |
|
$str .= '<p class="LC_info">'."\n" |
|
.&mt('Please upload an UTF8 encoded file to ensure a correct character encoding in your classlist.')."\n" |
|
.'</p>'."\n"; |
|
} |
|
} |
|
$str .= &Apache::loncommon::upfile_select_html() |
.&Apache::lonhtmlcommon::row_closure() |
.&Apache::lonhtmlcommon::row_closure() |
.&Apache::lonhtmlcommon::row_title(&mt('Ignore First Line, e.g., contains column titles')) |
.&Apache::lonhtmlcommon::row_title( |
.'<label><input type="radio" name="noFirstLine" id="noFirstLine" value="1" /> '.&mt('Yes').'</label>' |
'<label for="noFirstLine">' |
.' ' |
.&mt('Ignore First Line') |
.'<label><input type="radio" name="noFirstLine" id="FirstLineOK" value="0" checked="checked" /> '.&mt('No').'</label>' |
.'</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 3973 sub upfile_drop_add {
|
Line 3753 sub upfile_drop_add {
|
$crstype = &Apache::loncommon::course_type($cid); |
$crstype = &Apache::loncommon::course_type($cid); |
} |
} |
} |
} |
my ($startdate,$enddate); |
my ($startdate,$enddate) = &get_dates_from_form(); |
if ($env{'form.caller'} eq 'requestcrs') { |
if ($env{'form.makedatesdefault'}) { |
$startdate = $env{'course.'.$env{'request.course.id'}.'.default_enrollment_start_date'}; |
$r->print(&make_dates_default($startdate,$enddate,$context,$crstype)); |
$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 4147 sub upfile_drop_add {
|
Line 3921 sub upfile_drop_add {
|
$r->print($groupwarn.'<br />'); |
$r->print($groupwarn.'<br />'); |
} |
} |
} |
} |
my (%curr_rules,%got_rules,%alerts,%cancreate); |
my (%curr_rules,%got_rules,%alerts); |
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 4301 sub upfile_drop_add {
|
Line 4070 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) { |
next 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->{$user} = { 'newuser' => 1, }; |
$checkhash->{$username.':'.$domain} = { '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') { |
if ($alerts{'username'}{$domain}{$username}) { |
next 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 4412 sub upfile_drop_add {
|
Line 4134 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') { |
if ($alerts{'id'}{$userdomain}{$id}) { |
next 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 4516 sub upfile_drop_add {
|
Line 4233 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) { |
if (&Apache::loncommon::needs_gci_custom()) { |
$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('[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 { |
if (&Apache::loncommon::needs_gci_custom()) { |
$r->print('<p>'.&mt('No roles added').'</p>'); |
$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 5183 function setSections(formname,crstype) {
|
Line 4890 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{'inec'} $alerts{'youh'} "+numsec+" $alerts{'secs'}\\n$alerts{'plmo'}"); |
alert("$alerts{'inco'} $alerts{'youh'} "+numsec+" $alerts{'secs'}\\n$alerts{'plmo'}"); |
} |
} |
return; |
return; |
} |
} |
Line 5215 ENDSECCODE
|
Line 4922 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); |
Line 5369 sub roles_by_context {
|
Line 5036 sub roles_by_context {
|
if ($env{'request.role'} =~ m{^dc\./}) { |
if ($env{'request.role'} =~ m{^dc\./}) { |
push(@allroles,'ad'); |
push(@allroles,'ad'); |
} |
} |
if (&Apache::loncommon::needs_gci_custom()) { |
push(@allroles,('ta','ep','in')); |
if ($crstype eq 'Community') { |
if ($crstype eq 'Community') { |
push(@allroles,'co'); |
push(@allroles,'co'); |
} else { |
|
push(@allroles,'cc'); |
|
} |
|
} else { |
} else { |
push(@allroles,('ta','ep','in')); |
push(@allroles,'cc'); |
if ($crstype eq 'Community') { |
} |
push(@allroles,'co'); |
if ($custom) { |
} else { |
push(@allroles,'cr'); |
push(@allroles,'cc'); |
|
} |
|
if ($custom) { |
|
push(@allroles,'cr'); |
|
} |
|
} |
} |
} elsif ($context eq 'author') { |
} elsif ($context eq 'author') { |
@allroles = ('ca','aa'); |
@allroles = ('ca','aa'); |