version 1.73.2.2, 2009/01/05 17:03:13
|
version 1.98, 2009/08/28 22:47:07
|
Line 86 sub modifystudent {
|
Line 86 sub modifystudent {
|
sub modifyuserrole { |
sub modifyuserrole { |
my ($context,$setting,$changeauth,$cid,$udom,$uname,$uid,$umode,$upass, |
my ($context,$setting,$changeauth,$cid,$udom,$uname,$uid,$umode,$upass, |
$first,$middle,$last,$gene,$sec,$forceid,$desiredhome,$email,$role, |
$first,$middle,$last,$gene,$sec,$forceid,$desiredhome,$email,$role, |
$end,$start,$checkid) = @_; |
$end,$start,$checkid,$inststatus) = @_; |
my ($scope,$userresult,$authresult,$roleresult,$idresult); |
my ($scope,$userresult,$authresult,$roleresult,$idresult); |
if ($setting eq 'course' || $context eq 'course') { |
if ($setting eq 'course' || $context eq 'course') { |
$scope = '/'.$cid; |
$scope = '/'.$cid; |
Line 124 sub modifyuserrole {
|
Line 124 sub modifyuserrole {
|
$userresult = |
$userresult = |
&Apache::lonnet::modifyuser($udom,$uname,$uid,$umode,$upass,$first, |
&Apache::lonnet::modifyuser($udom,$uname,$uid,$umode,$upass,$first, |
$middle,$last,$gene,$forceid,$desiredhome, |
$middle,$last,$gene,$forceid,$desiredhome, |
$email,$role,$start,$end); |
$email,$inststatus); |
if ($userresult eq 'ok') { |
if ($userresult eq 'ok') { |
if ($role ne '') { |
if ($role ne '') { |
$role =~ s/_/\//g; |
$role =~ s/_/\//g; |
Line 328 sub print_upload_manager_header {
|
Line 328 sub print_upload_manager_header {
|
&javascript_validations('upload',$krbdefdom,$password_choice,undef, |
&javascript_validations('upload',$krbdefdom,$password_choice,undef, |
$env{'request.role.domain'},$context, |
$env{'request.role.domain'},$context, |
$groupslist); |
$groupslist); |
my $checked=(($env{'form.noFirstLine'})?' checked="checked" ':''); |
my $checked=(($env{'form.noFirstLine'})?' checked="checked"':''); |
$r->print(&mt('Total number of records found in file: [_1]','<b>'.$distotal.'</b>'). |
$r->print('<p>' |
"<br />\n"); |
.&mt('Total number of records found in file: [_1]' |
|
,'<b>'.$distotal.'</b>') |
|
."</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 /> The system will inform you and bring you back to this page, <br /> if the data selected are insufficient to add users.')."<br />\n"); |
Line 341 sub print_upload_manager_header {
|
Line 343 sub print_upload_manager_header {
|
&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'})); |
$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').'" '. |
'name="Reverse Association" '. |
'name="Reverse Association" '. |
'onClick="javascript:this.form.associate.value=\'Reverse Association\';submit(this.form);" />'); |
'onclick="javascript:this.form.associate.value=\'Reverse Association\';submit(this.form);" />'); |
$r->print("<br /><br />\n". |
$r->print("<br /><br />\n". |
'<script type="text/javascript" language="Javascript">'."\n". |
'<script type="text/javascript" language="Javascript">'."\n". |
$javascript."\n".$javascript_validations.'</script>'); |
'// <![CDATA['."\n". |
|
$javascript."\n".$javascript_validations."\n". |
|
'// ]]>'."\n". |
|
'</script>'); |
} |
} |
|
|
############################################################### |
############################################################### |
Line 401 sub javascript_validations {
|
Line 406 sub javascript_validations {
|
krb => 'You need to specify the Kerberos domain.', |
krb => 'You need to specify the Kerberos domain.', |
ipass => 'You need to specify the initial password.', |
ipass => 'You need to specify the initial password.', |
name => 'The optional name field was not specified.', |
name => 'The optional name field was not specified.', |
snum => 'The optional ID number field was not specified.', |
snum => 'The optional student/employee ID field was not specified.', |
section => 'The optional section field was not specified.', |
section => 'The optional section field was not specified.', |
email => 'The optional email address field was not specified.', |
email => 'The optional e-mail address field was not specified.', |
role => 'The optional role field was not specified.', |
role => 'The optional role field was not specified.', |
domain => 'The optional domain field was not specified.', |
domain => 'The optional domain field was not specified.', |
continue => 'Continue adding users?', |
continue => 'Continue adding users?', |
); |
); |
|
if (($mode eq 'upload') && ($context eq 'domain')) { |
|
$alert{'inststatus'} = &mt('The optional affiliation field was not specified'); |
|
} |
my $function_name = <<"END"; |
my $function_name = <<"END"; |
$setsections_js |
$setsections_js |
|
|
function verify_message (vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail,foundrole,founddomain) { |
function verify_message (vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail,foundrole,founddomain,foundinststatus) { |
END |
END |
my ($authnum,%can_assign) = &Apache::loncommon::get_assignable_auth($domain); |
my ($authnum,%can_assign) = &Apache::loncommon::get_assignable_auth($domain); |
my $auth_checks; |
my $auth_checks; |
Line 538 END
|
Line 546 END
|
} |
} |
message+='$alert{'domain'}'; |
message+='$alert{'domain'}'; |
} |
} |
|
END |
|
if (($mode eq 'upload') && ($context eq 'domain')) { |
|
$optional_checks .= (<<END); |
|
|
|
if (foundinststatus==0) { |
|
if (message!='') { |
|
message+='\\n'; |
|
} |
|
message+='$alert{'inststatus'}'; |
|
} |
|
END |
|
} |
|
$optional_checks .= (<<END); |
|
|
if (message!='') { |
if (message!='') { |
message+= '\\n$alert{'continue'}'; |
message+= '\\n$alert{'continue'}'; |
if (confirm(message)) { |
if (confirm(message)) { |
Line 568 function verify(vf,sec_caller) {
|
Line 590 function verify(vf,sec_caller) {
|
var foundemail=0; |
var foundemail=0; |
var foundrole=0; |
var foundrole=0; |
var founddomain=0; |
var founddomain=0; |
|
var foundinststatus=0; |
var tw; |
var tw; |
for (i=0;i<=vf.nfields.value;i++) { |
for (i=0;i<=vf.nfields.value;i++) { |
tw=eval('vf.f'+i+'.selectedIndex'); |
tw=eval('vf.f'+i+'.selectedIndex'); |
Line 579 function verify(vf,sec_caller) {
|
Line 602 function verify(vf,sec_caller) {
|
if (tw==10) { foundemail=1; } |
if (tw==10) { foundemail=1; } |
if (tw==11) { foundrole=1; } |
if (tw==11) { foundrole=1; } |
if (tw==12) { founddomain=1; } |
if (tw==12) { founddomain=1; } |
|
if (tw==13) { foundinststatus=1; } |
} |
} |
verify_message(vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail,foundrole,founddomain); |
verify_message(vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail,foundrole,founddomain,foundinststatus); |
} |
} |
|
|
// |
// |
Line 602 function verify(vf,sec_caller) {
|
Line 626 function verify(vf,sec_caller) {
|
// 10 = email address |
// 10 = email address |
// 11 = role |
// 11 = role |
// 12 = domain |
// 12 = domain |
|
// 13 = inststatus |
|
|
function flip(vf,tf) { |
function flip(vf,tf) { |
var nw=eval('vf.f'+tf+'.selectedIndex'); |
var nw=eval('vf.f'+tf+'.selectedIndex'); |
Line 666 function verify(vf,sec_caller) {
|
Line 691 function verify(vf,sec_caller) {
|
var foundsec=0; |
var foundsec=0; |
var foundrole=0; |
var foundrole=0; |
var founddomain=0; |
var founddomain=0; |
|
var foundinststatus=0; |
var tw; |
var tw; |
for (i=0;i<=vf.nfields.value;i++) { |
for (i=0;i<=vf.nfields.value;i++) { |
tw=eval('vf.f'+i+'.selectedIndex'); |
tw=eval('vf.f'+i+'.selectedIndex'); |
Line 676 function verify(vf,sec_caller) {
|
Line 702 function verify(vf,sec_caller) {
|
if (i==8 && tw!=0) { foundpwd=1; } |
if (i==8 && tw!=0) { foundpwd=1; } |
if (i==9 && tw!=0) { foundrole=1; } |
if (i==9 && tw!=0) { foundrole=1; } |
if (i==10 && tw!=0) { founddomain=1; } |
if (i==10 && tw!=0) { founddomain=1; } |
|
if (i==13 && tw!=0) { foundinstatus=1; } |
} |
} |
verify_message(vf,founduname,foundpwd,foundname,foundid,foundsec,foundrole,founddomain); |
verify_message(vf,founduname,foundpwd,foundname,foundid,foundsec,foundrole,founddomain,foundinststatus); |
} |
} |
|
|
function flip(vf,tf) { |
function flip(vf,tf) { |
Line 735 sub print_upload_manager_footer {
|
Line 762 sub print_upload_manager_footer {
|
my $locform = &Apache::loncommon::authform_local(%param); |
my $locform = &Apache::loncommon::authform_local(%param); |
my $date_table = &date_setting_table(undef,undef,$context,undef, |
my $date_table = &date_setting_table(undef,undef,$context,undef, |
$formname,$permission); |
$formname,$permission); |
|
|
my $Str = "\n".'<div class="LC_left_float">'; |
my $Str = "\n".'<div class="LC_left_float">'; |
$Str .= &hidden_input('nfields',$i); |
$Str .= &hidden_input('nfields',$i); |
$Str .= &hidden_input('keyfields',$keyfields); |
$Str .= &hidden_input('keyfields',$keyfields); |
$Str .= "<h3>".&mt('Login Type')."</h3>\n"; |
|
|
$Str .= '<h3>'.&mt('Options').'</h3>' |
|
.&Apache::lonhtmlcommon::start_pick_box(); |
|
|
|
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Login Type')); |
if ($context eq 'domain') { |
if ($context eq 'domain') { |
$Str .= '<p>'.&mt('Change authentication for existing users in domain "[_1]" to these settings?',$defdom).' <span class="LC_nobreak"><label><input type="radio" name="changeauth" value="No" checked="checked" />'.&mt('No').'</label> <label><input type="radio" name="changeauth" value="Yes" />'.&mt('Yes').'</label></span></p>'; |
$Str .= '<p>' |
|
.&mt('Change authentication for existing users in domain "[_1]" to these settings?' |
|
,$defdom) |
|
.' <span class="LC_nobreak"><label>' |
|
.'<input type="radio" name="changeauth" value="No" checked="checked" />' |
|
.&mt('No').'</label>' |
|
.' <label>' |
|
.'<input type="radio" name="changeauth" value="Yes" />' |
|
.&mt('Yes').'</label>' |
|
.'</span></p>'; |
} else { |
} else { |
$Str .= "<p>\n". |
$Str .= '<p class="LC_info">'."\n". |
&mt('Note: 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'). |
&Apache::loncommon::help_open_topic('Auth_Options'). |
"</p>\n"; |
"</p>\n"; |
} |
} |
$Str .= &set_login($defdom,$krbform,$intform,$locform); |
$Str .= &set_login($defdom,$krbform,$intform,$locform); |
|
|
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'); |
if ($numlib > 1) { |
if ($numlib > 1) { |
$Str .= '<h3>'.&mt('LON-CAPA Home Server for New Users')."</h3>\n". |
$Str .= &Apache::lonhtmlcommon::row_closure() |
&mt('LON-CAPA domain: [_1] with home server: [_2]',$defdom, |
.&Apache::lonhtmlcommon::row_title( |
$home_server_pick).'<br />'; |
&mt('LON-CAPA Home Server for New Users')) |
} else { |
.&mt('LON-CAPA domain: [_1] with home server:','"'.$defdom.'"') |
$Str .= $home_server_pick; |
.$home_server_pick |
} |
.&Apache::lonhtmlcommon::row_closure(); |
$Str .= '<h3>'.&mt('Default domain').'</h3>'."\n". |
} else { |
&Apache::loncommon::select_dom_form($defdom,'defaultdomain',undef,1); |
$Str .= $home_server_pick. |
$Str .= '<h3>'.&mt('Starting and Ending Dates'). |
&Apache::lonhtmlcommon::row_closure(); |
"</h3>\n"; |
} |
$Str .= "<p>\n".$date_table."</p>\n"; |
|
|
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Default domain')) |
|
.&Apache::loncommon::select_dom_form($defdom,'defaultdomain',undef,1) |
|
.&Apache::lonhtmlcommon::row_closure(); |
|
|
|
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Starting and Ending Dates')) |
|
."<p>\n".$date_table."</p>\n" |
|
.&Apache::lonhtmlcommon::row_closure(); |
|
|
if ($context eq 'domain') { |
if ($context eq 'domain') { |
$Str .= '<h3>'.&mt('Settings for assigning roles:').'</h3>'."\n". |
$Str .= &Apache::lonhtmlcommon::row_title( |
&mt('Pick the action to take on roles for these users:').'<br /><span class="LC_nobreak"><label><input type="radio" name="roleaction" value="norole" checked="checked" /> '.&mt('No role changes').'</label> <label><input type="radio" name="roleaction" value="domain" /> '.&mt('Add a domain role').'</label> <label><input type="radio" name="roleaction" value="course" /> '.&mt('Add a course role').'</label></span>'; |
&mt('Settings for assigning roles')) |
} |
.&mt('Pick the action to take on roles for these users:').'<br />' |
if ($context eq 'author') { |
.'<span class="LC_nobreak"><label>' |
$Str .= '<h3>'.&mt('Default role')."</h3>\n". |
.'<input type="radio" name="roleaction" value="norole" checked="checked" />' |
&mt('Choose the role to assign to users without a value specified in the uploaded file'); |
.' '.&mt('No role changes').'</label>' |
|
.' <label>' |
|
.'<input type="radio" name="roleaction" value="domain" />' |
|
.' '.&mt('Add a domain role').'</label>' |
|
.' <label>' |
|
.'<input type="radio" name="roleaction" value="course" />' |
|
.' '.&mt('Add a course role').'</label>' |
|
.'</span>'; |
|
} elsif ($context eq 'author') { |
|
$Str .= &Apache::lonhtmlcommon::row_title( |
|
&mt('Default role')) |
|
.&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 .= '<h3>'.&mt('Default role and section')."</h3>\n". |
$Str .= &Apache::lonhtmlcommon::row_title( |
&mt('Choose the role and/or section(s) to assign to users without values specified in the uploaded file'); |
&mt('Default role and section')) |
} else { |
.&mt('Choose the role and/or section(s) to assign to users without values specified in the uploaded file.'); |
$Str .= '<br /><br /><b>'.&mt('Default role and/or section(s)')."</b><br />\n". |
} else { |
&mt('Role and/or section(s) for users without values specified in the uploaded file.'); |
$Str .= &Apache::lonhtmlcommon::row_title( |
|
&mt('Default role and/or section(s)')) |
|
.&mt('Role and/or section(s) for users without values specified in the uploaded file.'); |
} |
} |
$Str .= '<br />'; |
|
if (($context eq 'domain') || ($context eq 'author')) { |
if (($context eq 'domain') || ($context eq 'author')) { |
|
$Str .= '<br />'; |
my ($options,$cb_script,$coursepick) = &default_role_selector($context,1); |
my ($options,$cb_script,$coursepick) = &default_role_selector($context,1); |
if ($context eq 'domain') { |
if ($context eq 'domain') { |
$Str .= '<span class="LC_role_level">'.&mt('Domain Level').'</span><br />'.$options.'<br /><br /><span class="LC_role_level">'.&mt('Course Level').'</span><br />'.$cb_script.$coursepick; |
$Str .= '<p>' |
|
.'<b>'.&mt('Domain Level').'</b><br />' |
|
.$options |
|
.'</p><p>' |
|
.'<b>'.&mt('Course Level').'</b>' |
|
.'</p>' |
|
.$cb_script.$coursepick |
|
.&Apache::lonhtmlcommon::row_closure(); |
} elsif ($context eq 'author') { |
} elsif ($context eq 'author') { |
$Str .= $options; |
$Str .= $options |
|
.&Apache::lonhtmlcommon::row_closure(1); # last row in pick_box |
} |
} |
} else { |
} else { |
my ($cnum,$cdom) = &get_course_identity(); |
my ($cnum,$cdom) = &get_course_identity(); |
my $rowtitle = &mt('section'); |
my $rowtitle = &mt('section'); |
my $secbox = §ion_picker($cdom,$cnum,'Any',$rowtitle, |
my $secbox = §ion_picker($cdom,$cnum,'Any',$rowtitle, |
$permission,$context,'upload'); |
$permission,$context,'upload'); |
$Str .= $secbox."<h3>".&mt('Full Update')."</h3>\n". |
$Str .= $secbox |
'<p><label><input type="checkbox" name="fullup" value="yes">'. |
.&Apache::lonhtmlcommon::row_closure(); |
' '.&mt('Display students with current/future access who are not in the uploaded file.').'</label><br />'.&mt('Students selected from this list can be dropped.').'</p>'."\n"; |
|
|
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Full Update')) |
|
.'<label><input type="checkbox" name="fullup" value="yes" />'. |
|
' '.&mt('Display students with current/future access who are not in the uploaded file.') |
|
.'</label><br />' |
|
.&mt('Students selected from this list can be dropped.') |
|
.&Apache::lonhtmlcommon::row_closure(); |
} |
} |
if ($context eq 'course' || $context eq 'domain') { |
if ($context eq 'course' || $context eq 'domain') { |
$Str .= &forceid_change($context); |
$Str .= &forceid_change($context); |
} |
} |
|
|
|
$Str .= &Apache::lonhtmlcommon::end_pick_box(); |
$Str .= '</div>'; |
$Str .= '</div>'; |
$Str .= '<div class="LC_clear_float_footer">'; |
|
|
# Footer |
|
$Str .= '<div class="LC_clear_float_footer">' |
|
.'<hr />'; |
if ($context eq 'course') { |
if ($context eq 'course') { |
$Str .= '<div class="LC_info">' |
$Str .= '<p class="LC_info">' |
.&mt('Note: For large courses, this operation may be time consuming.') |
.&mt('Note: For large courses, this operation may be time consuming.') |
.'</div>'; |
.'</p>'; |
} |
} |
$Str .= '<input type="button"' |
$Str .= '<p><input type="button"' |
.'onClick="javascript:verify(this.form,this.form.csec)" ' |
.' onclick="javascript:verify(this.form,this.form.csec)"' |
.'value="'.&mt('Update Users').'" />'."\n" |
.' value="'.&mt('Update Users').'" />' |
|
.'</p>'."\n" |
.'</div>'; |
.'</div>'; |
$r->print($Str); |
$r->print($Str); |
return; |
return; |
Line 815 sub print_upload_manager_footer {
|
Line 898 sub print_upload_manager_footer {
|
sub forceid_change { |
sub forceid_change { |
my ($context) = @_; |
my ($context) = @_; |
my $output = |
my $output = |
"<h3>".&mt('Student/Employee ID')."</h3>\n". |
&Apache::lonhtmlcommon::row_title(&mt('Student/Employee ID')) |
"<p>\n".'<label><input type="checkbox" name="forceid" value="yes">'. |
.'<label><input type="checkbox" name="forceid" value="yes" />' |
&mt('Disable Student/Employee ID Safeguard and force change of conflicting IDs'). |
.&mt('Disable Student/Employee ID Safeguard and force change of conflicting IDs') |
'</label><br />'."\n". |
.'</label><br />'."\n" |
&mt('(only do if you know what you are doing.)')."\n"; |
.&mt('(only do if you know what you are doing.)')."\n"; |
if ($context eq 'domain') { |
if ($context eq 'domain') { |
$output .= '<br /><label><input type="checkbox" name="recurseid"'. |
$output .= '<br /><label><input type="checkbox" name="recurseid"'. |
' value="yes">'. |
' value="yes" />'. |
&mt('Update Student/Employee ID in courses in which user is active/future student,[_1](if forcing change).','<br />'). |
&mt('Update student/employee ID in courses in which user is active/future student,[_1](if forcing change).','<br />'). |
'</label>'."\n"; |
'</label>'."\n"; |
} |
} |
$output .= '</p>'; |
$output .= &Apache::lonhtmlcommon::row_closure(1); # last row in pick_box |
return $output; |
return $output; |
} |
} |
|
|
Line 864 sub print_upload_manager_form {
|
Line 947 sub print_upload_manager_form {
|
'email_choice' => 'scalar', |
'email_choice' => 'scalar', |
'role_choice' => 'scalar', |
'role_choice' => 'scalar', |
'domain_choice' => 'scalar', |
'domain_choice' => 'scalar', |
|
'inststatus_choice' => 'scalar', |
}; |
}; |
my $defdom = $env{'request.role.domain'}; |
my $defdom = $env{'request.role.domain'}; |
if ($context eq 'course') { |
if ($context eq 'course') { |
Line 895 sub print_upload_manager_form {
|
Line 979 sub print_upload_manager_form {
|
['ipwd', &mt('Initial Password'),$env{'form.ipwd_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'}], |
|
['inststatus',&mt('Affiliation'), $env{'form.inststatus_choice'}]); |
if ($env{'form.upfile_associate'} eq 'reverse') { |
if ($env{'form.upfile_associate'} eq 'reverse') { |
&Apache::loncommon::csv_print_samples($r,\@records); |
&Apache::loncommon::csv_print_samples($r,\@records); |
$i=&Apache::loncommon::csv_print_select_table($r,\@records, |
$i=&Apache::loncommon::csv_print_select_table($r,\@records, |
Line 1098 sub default_role_selector {
|
Line 1183 sub default_role_selector {
|
'<th>'.$lt{'grs'}.'</th>'. |
'<th>'.$lt{'grs'}.'</th>'. |
&Apache::loncommon::end_data_table_header_row(). |
&Apache::loncommon::end_data_table_header_row(). |
&Apache::loncommon::start_data_table_row()."\n". |
&Apache::loncommon::start_data_table_row()."\n". |
'<td><input type="text" name="coursedesc" value="" onFocus="this.blur();opencrsbrowser('."'studentform','dccourse','dcdomain','coursedesc',''".')" /></td>'."\n". |
'<td><input type="text" name="coursedesc" value="" onfocus="this.blur();opencrsbrowser('."'studentform','dccourse','dcdomain','coursedesc',''".')" /></td>'."\n". |
'<td><select name="courserole">'."\n". |
'<td><select name="courserole">'."\n". |
&default_course_roles($context,$checkpriv,%customroles)."\n". |
&default_course_roles($context,$checkpriv,%customroles)."\n". |
'</select></td><td>'. |
'</select></td><td>'. |
Line 1291 sub print_userlist {
|
Line 1376 sub print_userlist {
|
'html' => 'HTML'); |
'html' => 'HTML'); |
my $output_selector = '<select size="1" name="output" >'; |
my $output_selector = '<select size="1" name="output" >'; |
foreach my $outputformat ('html','csv','excel') { |
foreach my $outputformat ('html','csv','excel') { |
my $option = '<option value="'.$outputformat.'" '; |
my $option = '<option value="'.$outputformat.'"'; |
if ($outputformat eq $env{'form.output'}) { |
if ($outputformat eq $env{'form.output'}) { |
$option .= 'selected '; |
$option .= ' selected="selected"'; |
} |
} |
$option .='>'.$lt{$outputformat}.'</option>'; |
$option .='>'.$lt{$outputformat}.'</option>'; |
$output_selector .= "\n".$option; |
$output_selector .= "\n".$option; |
Line 1308 sub print_userlist {
|
Line 1393 sub print_userlist {
|
.'</span></label>'.(' 'x3)."\n"); |
.'</span></label>'.(' 'x3)."\n"); |
my $roleselected = ''; |
my $roleselected = ''; |
if ($env{'form.showrole'} eq 'Any') { |
if ($env{'form.showrole'} eq 'Any') { |
$roleselected = ' selected="selected" '; |
$roleselected = ' selected="selected"'; |
} |
} |
my ($cnum,$cdom); |
my ($cnum,$cdom); |
$r->print(&role_filter($context)); |
$r->print(&role_filter($context)); |
Line 1502 sub role_filter {
|
Line 1587 sub role_filter {
|
my $output; |
my $output; |
my $roleselected = ''; |
my $roleselected = ''; |
if ($env{'form.showrole'} eq 'Any') { |
if ($env{'form.showrole'} eq 'Any') { |
$roleselected = ' selected="selected" '; |
$roleselected = ' selected="selected"'; |
} |
} |
my ($role_select); |
my ($role_select); |
if ($context eq 'domain') { |
if ($context eq 'domain') { |
Line 1518 sub role_filter {
|
Line 1603 sub role_filter {
|
foreach my $role (@poss_roles) { |
foreach my $role (@poss_roles) { |
$roleselected = ''; |
$roleselected = ''; |
if ($role eq $env{'form.showrole'}) { |
if ($role eq $env{'form.showrole'}) { |
$roleselected = ' selected="selected" '; |
$roleselected = ' selected="selected"'; |
} |
} |
my $plrole; |
my $plrole; |
if ($role eq 'cr') { |
if ($role eq 'cr') { |
Line 1575 sub section_group_filter {
|
Line 1660 sub section_group_filter {
|
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) { |
$currsel = ' selected="selected" '; |
$currsel = ' selected="selected"'; |
} |
} |
$markup .= ' <option value="'.$option.'"'.$currsel.'>'; |
$markup .= ' <option value="'.$option.'"'.$currsel.'>'; |
if (($option eq 'all') || ($option eq 'none')) { |
if (($option eq 'all') || ($option eq 'none')) { |
Line 1914 sub aggregate_user_info {
|
Line 1999 sub aggregate_user_info {
|
sub process_date_info { |
sub process_date_info { |
my ($userdata) = @_; |
my ($userdata) = @_; |
my $now = time; |
my $now = time; |
$userdata->{'status'} = &mt('Active'); |
$userdata->{'status'} = 'Active'; |
if ($userdata->{'start'} > 0) { |
if ($userdata->{'start'} > 0) { |
if ($now < $userdata->{'start'}) { |
if ($now < $userdata->{'start'}) { |
$userdata->{'status'} = &mt('Future'); |
$userdata->{'status'} = 'Future'; |
} |
} |
} |
} |
if ($userdata->{'end'} > 0) { |
if ($userdata->{'end'} > 0) { |
if ($now > $userdata->{'end'}) { |
if ($now > $userdata->{'end'}) { |
$userdata->{'status'} = &mt('Expired'); |
$userdata->{'status'} = 'Expired'; |
} |
} |
} |
} |
return; |
return; |
Line 1974 sub show_users_list {
|
Line 2059 sub show_users_list {
|
if ($env{'course.'.$cid.'.internal.showphoto'}) { |
if ($env{'course.'.$cid.'.internal.showphoto'}) { |
$r->print(' |
$r->print(' |
<script type="text/javascript"> |
<script type="text/javascript"> |
|
// <![CDATA[ |
function photowindow(photolink) { |
function photowindow(photolink) { |
var title = "Photo_Viewer"; |
var title = "Photo_Viewer"; |
var options = "scrollbars=1,resizable=1,menubar=0"; |
var options = "scrollbars=1,resizable=1,menubar=0"; |
Line 1981 function photowindow(photolink) {
|
Line 2067 function photowindow(photolink) {
|
stdeditbrowser = open(photolink,title,options,"1"); |
stdeditbrowser = open(photolink,title,options,"1"); |
stdeditbrowser.focus(); |
stdeditbrowser.focus(); |
} |
} |
|
// ]]> |
</script> |
</script> |
'); |
'); |
} |
} |
Line 1997 END
|
Line 2084 END
|
$r->print(<<END); |
$r->print(<<END); |
|
|
<script type="text/javascript" language="Javascript"> |
<script type="text/javascript" language="Javascript"> |
|
// <![CDATA[ |
$check_uncheck_js |
$check_uncheck_js |
|
|
$verify_action_js |
$verify_action_js |
Line 2034 function username_display_launch(usernam
|
Line 2122 function username_display_launch(usernam
|
document.location.href = '/adm/'+domain+'/'+username+'/aboutme'; |
document.location.href = '/adm/'+domain+'/'+username+'/aboutme'; |
} |
} |
} |
} |
|
if (target == 'track') { |
|
if (document.$formname.userwin.checked == true) { |
|
var url = '/adm/trackstudent?selected_student='+username+':'+domain+'&only_body=1'; |
|
var options = 'height=600,width=800,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no'; |
|
var trackwin = window.open(url,'',options,1); |
|
trackwin.focus(); |
|
return; |
|
} else { |
|
document.location.href = '/adm/trackstudent?selected_student='+username+':'+domain; |
|
} |
|
} |
} |
} |
|
// ]]> |
</script> |
</script> |
$date_sec_selector |
$date_sec_selector |
<input type="hidden" name="state" value="$env{'form.state'}" /> |
<input type="hidden" name="state" value="$env{'form.state'}" /> |
Line 2056 END
|
Line 2156 END
|
'status' => "status", |
'status' => "status", |
'role' => "role", |
'role' => "role", |
'type' => "enroll type/action", |
'type' => "enroll type/action", |
'email' => "email address", |
'email' => "e-mail address", |
'photo' => "photo", |
'photo' => "photo", |
'extent' => "extent", |
'extent' => "extent", |
'pr' => "Proceed", |
'pr' => "Proceed", |
Line 2064 END
|
Line 2164 END
|
'ua' => "uncheck all", |
'ua' => "uncheck all", |
'ac' => "Action to take for selected users", |
'ac' => "Action to take for selected users", |
'link' => "Behavior of clickable username link for each user", |
'link' => "Behavior of clickable username link for each user", |
'aboutme' => "Display a user's personal page", |
'aboutme' => "Display a user's personal information page", |
'owin' => "Open in a new window", |
'owin' => "Open in a new window", |
'modify' => "Modify a user's information", |
'modify' => "Modify a user's information", |
|
'track' => "View a user's recent activity", |
'clicker' => "Clicker-ID", |
'clicker' => "Clicker-ID", |
); |
); |
if ($context eq 'domain' && $env{'form.roletype'} eq 'course') { |
if ($context eq 'domain' && $env{'form.roletype'} eq 'course') { |
Line 2129 END
|
Line 2230 END
|
END |
END |
if ($actionselect) { |
if ($actionselect) { |
$output .= <<"END"; |
$output .= <<"END"; |
<div class="LC_left_float"><fieldset><legend><b>$lt{'ac'}</b></legend> |
<div class="LC_left_float"><fieldset><legend>$lt{'ac'}</legend> |
$actionselect |
$actionselect |
<br/><br /><input type="button" value="$lt{'ca'}" onclick="javascript:checkAll(document.$formname.actionlist)" /> |
<br/><br /><input type="button" value="$lt{'ca'}" onclick="javascript:checkAll(document.$formname.actionlist)" /> |
<input type="button" value="$lt{'ua'}" onclick="javascript:uncheckAll(document.$formname.actionlist)" /><br /><input type="button" value="$lt{'pr'}" onclick="javascript:verify_action('actionlist')" /></fieldset></div> |
<input type="button" value="$lt{'ua'}" onclick="javascript:uncheckAll(document.$formname.actionlist)" /><br /><input type="button" value="$lt{'pr'}" onclick="javascript:verify_action('actionlist')" /></fieldset></div> |
Line 2174 END
|
Line 2275 END
|
} |
} |
} |
} |
} |
} |
$output .= '<div class="LC_left_float"><fieldset><legend><b>'.$lt{'link'}.'</b></legend>'. |
$output .= '<div class="LC_left_float"><fieldset><legend>'.$lt{'link'}.'</legend>'. |
'<table><tr>'; |
'<table><tr>'; |
my @linkdests = ('aboutme'); |
my @linkdests = ('aboutme'); |
if ($permission->{'cusr'}) { |
if ($permission->{'cusr'}) { |
unshift (@linkdests,'modify'); |
unshift (@linkdests,'modify'); |
} |
} |
|
if (&Apache::lonnet::allowed('vsa', $env{'request.course.id'}) || |
|
&Apache::lonnet::allowed('vsa', $env{'request.course.id'}.'/'. |
|
$env{'request.course.sec'})) { |
|
push(@linkdests,'track'); |
|
} |
|
|
$output .= '<td>'; |
$output .= '<td>'; |
my $usernamelink = $env{'form.usernamelink'}; |
my $usernamelink = $env{'form.usernamelink'}; |
if ($usernamelink eq '') { |
if ($usernamelink eq '') { |
Line 2188 END
|
Line 2295 END
|
foreach my $item (@linkdests) { |
foreach my $item (@linkdests) { |
my $checkedstr = ''; |
my $checkedstr = ''; |
if ($item eq $usernamelink) { |
if ($item eq $usernamelink) { |
$checkedstr = ' checked="checked" '; |
$checkedstr = ' checked="checked"'; |
} |
} |
$output .= '<span class="LC_nobreak"><label><input type="radio" name="usernamelink" value="'.$item.'"'.$checkedstr.'> '.$lt{$item}.'</label></span><br />'; |
$output .= '<span class="LC_nobreak"><label><input type="radio" name="usernamelink" value="'.$item.'"'.$checkedstr.' /> '.$lt{$item}.'</label></span><br />'; |
} |
} |
my $checkwin; |
my $checkwin; |
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"><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 2309 END
|
Line 2416 END
|
$grpfilter = 'all'; |
$grpfilter = 'all'; |
} |
} |
} |
} |
|
my %ltstatus = &Apache::lonlocal::texthash( |
|
Active => 'Active', |
|
Future => 'Future', |
|
Expired => 'Expired', |
|
); |
# 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 2463 END
|
Line 2575 END
|
$cellentry = '<b>'.&mt('auto').'</b> <label><input type="checkbox" name="chgauto" value="'.$in{'username'}.':'.$in{'domain'}.'" /> Change</label>'; |
$cellentry = '<b>'.&mt('auto').'</b> <label><input type="checkbox" name="chgauto" value="'.$in{'username'}.':'.$in{'domain'}.'" /> Change</label>'; |
$autocount ++; |
$autocount ++; |
} else { |
} else { |
$cellentry = '<table border="0" cellspacing="0"><tr><td rowspan="2"><b>'.&mt('manual').'</b></td><td><nobr><label><input type="checkbox" name="chgmanual" value="'.$in{'username'}.':'.$in{'domain'}.'" /> Change</label></nobr></td></tr><tr><td><nobr>'; |
$cellentry = '<table border="0" cellspacing="0"><tr><td rowspan="2"><b>'.&mt('manual').'</b></td><td><span class="LC_nobreak"><label><input type="checkbox" name="chgmanual" value="'.$in{'username'}.':'.$in{'domain'}.'" /> Change</label></span></td></tr><tr><td><span class="LC_nobreak">'; |
$manualcount ++; |
$manualcount ++; |
if ($in{'lockedtype'}) { |
if ($in{'lockedtype'}) { |
$cellentry .= '<label><input type="checkbox" name="unlockchg" value="'.$in{'username'}.':'.$in{'domain'}.'" /> '.&mt('Unlock').'</label>'; |
$cellentry .= '<label><input type="checkbox" name="unlockchg" value="'.$in{'username'}.':'.$in{'domain'}.'" /> '.&mt('Unlock').'</label>'; |
Line 2472 END
|
Line 2584 END
|
$cellentry .= '<label><input type="checkbox" name="lockchg" value="'.$in{'username'}.':'.$in{'domain'}.'" /> '.&mt('Lock').'</label>'; |
$cellentry .= '<label><input type="checkbox" name="lockchg" value="'.$in{'username'}.':'.$in{'domain'}.'" /> '.&mt('Lock').'</label>'; |
$lockcount ++; |
$lockcount ++; |
} |
} |
$cellentry .= '</nobr></td></tr></table>'; |
$cellentry .= '</span></td></tr></table>'; |
} |
} |
$r->print("<td>$cellentry</td>\n"); |
$r->print("<td>$cellentry</td>\n"); |
} else { |
} else { |
Line 2508 END
|
Line 2620 END
|
} |
} |
} |
} |
$r->print('<td><input type="checkbox" name="'. |
$r->print('<td><input type="checkbox" name="'. |
'actionlist" value="'.$checkval.'"></td>'); |
'actionlist" value="'.$checkval.'" /></td>'); |
} else { |
} else { |
$r->print('<td> </td>'); |
$r->print('<td> </td>'); |
} |
} |
Line 2521 END
|
Line 2633 END
|
$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)) { |
} elsif (($item eq 'start' || $item eq 'end') && ($actionselect)) { |
$r->print('<td>'.$in{$item}.'<input type="hidden" name="'.$checkval.'_'.$item.'" value="'.$sdata->[$index{$item}].'" /></td>'."\n"); |
$r->print('<td>'.$in{$item}.'<input type="hidden" name="'.$checkval.'_'.$item.'" value="'.$sdata->[$index{$item}].'" /></td>'."\n"); |
|
} elsif ($item eq 'status') { |
|
my $showitem = $in{$item}; |
|
if (defined($ltstatus{$in{$item}})) { |
|
$showitem = $ltstatus{$in{$item}}; |
|
} |
|
$r->print('<td>'.$showitem.'</td>'."\n"); |
} else { |
} else { |
$r->print('<td>'.$in{$item}.'</td>'."\n"); |
$r->print('<td>'.$in{$item}.'</td>'."\n"); |
} |
} |
Line 2537 END
|
Line 2655 END
|
} |
} |
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 '') { |
$r->print(' <td align="right"><a href="javascript:photowindow('."'".$in{'photo'}."'".')"><img src="'.$in{'thumbnail'}.'" border="1"></a></td>'); |
$r->print(' <td align="right"><a href="javascript:photowindow('."'".$in{'photo'}."'".')"><img src="'.$in{'thumbnail'}.'" border="1" alt="" /></a></td>'); |
} else { |
} else { |
$r->print(' <td> </td> '); |
$r->print(' <td> </td> '); |
} |
} |
Line 2824 sub select_actions {
|
Line 2942 sub select_actions {
|
} |
} |
} |
} |
if ($choices{'sections'}) { |
if ($choices{'sections'}) { |
$output .= '<input type="hidden" name="retainsec" value= "" />'."\n". |
$output .= '<input type="hidden" name="retainsec" value="" />'."\n". |
'<input type="hidden" name="newsecs" value= "" />'."\n"; |
'<input type="hidden" name="newsecs" value="" />'."\n"; |
} |
} |
} |
} |
return $output; |
return $output; |
Line 2839 sub date_section_javascript {
|
Line 2957 sub date_section_javascript {
|
delete => "Check the boxes for any users for whom roles are to be deleted, and click 'Proceed'", |
delete => "Check the boxes for any users for whom roles are to be deleted, and click 'Proceed'", |
none => "Choose an action to take for selected users", |
none => "Choose an action to take for selected users", |
); |
); |
my $output = ' |
my $output = <<"ENDONE"; |
<script type="text/javascript">'."\n"; |
<script type="text/javascript"> |
$output .= <<"ENDONE"; |
// <![CDATA[ |
function opendatebrowser(callingform,formname,calledby) { |
function opendatebrowser(callingform,formname,calledby) { |
var bulkaction = callingform.bulkaction.options[callingform.bulkaction.selectedIndex].value; |
var bulkaction = callingform.bulkaction.options[callingform.bulkaction.selectedIndex].value; |
var url = '/adm/createuser?'; |
var url = '/adm/createuser?'; |
Line 2864 ENDONE
|
Line 2982 ENDONE
|
stdeditbrowser = open(url,title,options,'1'); |
stdeditbrowser = open(url,title,options,'1'); |
stdeditbrowser.focus(); |
stdeditbrowser.focus(); |
} |
} |
|
// ]]> |
</script> |
</script> |
ENDTWO |
ENDTWO |
return $output; |
return $output; |
Line 2877 sub date_section_selector {
|
Line 2996 sub date_section_selector {
|
my $sec_js = &setsections_javascript($formname,$groupslist); |
my $sec_js = &setsections_javascript($formname,$groupslist); |
my $output = <<"END"; |
my $output = <<"END"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
|
// <![CDATA[ |
|
|
$sec_js |
$sec_js |
|
|
Line 2945 END
|
Line 3065 END
|
|
|
$verify_action_js |
$verify_action_js |
|
|
|
// ]]> |
</script> |
</script> |
ENDJS |
ENDJS |
my %lt = &Apache::lonlocal::texthash ( |
my %lt = &Apache::lonlocal::texthash ( |
Line 3003 ENDJS
|
Line 3124 ENDJS
|
$output .= $info.$secbox; |
$output .= $info.$secbox; |
} |
} |
$output .= '<p>'. |
$output .= '<p>'. |
'<input type="button" name="dateselection" value="'.&mt('Make changes').'" onclick="javascript:saveselections(this.form)" /></p>'."\n". |
'<input type="button" name="dateselection" value="'.&mt('Save').'" onclick="javascript:saveselections(this.form)" /></p>'."\n". |
'</form>'; |
'</form>'; |
return $output; |
return $output; |
} |
} |
Line 3221 sub show_drop_list {
|
Line 3342 sub show_drop_list {
|
<input type="hidden" name="action" value="$action" /> |
<input type="hidden" name="action" value="$action" /> |
<input type="hidden" name="state" value="done" /> |
<input type="hidden" name="state" value="done" /> |
<script type="text/javascript" language="Javascript"> |
<script type="text/javascript" language="Javascript"> |
|
// <![CDATA[ |
$check_uncheck_js |
$check_uncheck_js |
|
// ]]> |
</script> |
</script> |
<p> |
<p> |
<input type="hidden" name="phase" value="four"> |
<input type="hidden" name="phase" value="four" /> |
END |
END |
my ($indexhash,$keylist) = &make_keylist_array(); |
my ($indexhash,$keylist) = &make_keylist_array(); |
my $studentcount = 0; |
my $studentcount = 0; |
Line 3342 END
|
Line 3465 END
|
# |
# |
$r->print(&Apache::loncommon::start_data_table_row()); |
$r->print(&Apache::loncommon::start_data_table_row()); |
$r->print(<<"END"); |
$r->print(<<"END"); |
<td><input type="checkbox" name="droplist" value="$studentkey"></td> |
<td><input type="checkbox" name="droplist" value="$studentkey" /></td> |
<td>$username</td> |
<td>$username</td> |
<td>$domain</td> |
<td>$domain</td> |
<td>$id</td> |
<td>$id</td> |
Line 3361 END
|
Line 3484 END
|
'ua' => "uncheck all", |
'ua' => "uncheck all", |
); |
); |
$r->print(<<"END"); |
$r->print(<<"END"); |
</p><p> |
</p> |
<input type="button" value="$lt{'ca'}" onclick="javascript:checkAll(document.studentform.droplist)"> |
<p> |
<input type="button" value="$lt{'ua'}" onclick="javascript:uncheckAll(document.studentform.droplist)"> |
<input type="button" value="$lt{'ca'}" onclick="javascript:checkAll(document.studentform.droplist)" /> |
<p><input type=submit value="$lt{'dp'}"></p> |
<input type="button" value="$lt{'ua'}" onclick="javascript:uncheckAll(document.studentform.droplist)" /> |
|
</p> |
|
<p> |
|
<input type="submit" value="$lt{'dp'}" /> |
|
</p> |
END |
END |
return; |
return; |
} |
} |
Line 3375 END
|
Line 3502 END
|
sub print_first_users_upload_form { |
sub print_first_users_upload_form { |
my ($r,$context) = @_; |
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" />'; |
$str .= "<h3>".&mt('Upload a file containing information about users')."</h3>\n"; |
|
$str .= &Apache::loncommon::upfile_select_html(); |
$str .= '<h2>'.&mt('Upload a file containing information about users').'</h2>'."\n"; |
$str .= '<p>'; |
|
$str .= &Apache::loncommon::help_open_topic("Course_Create_Class_List", |
# Excel and CSV Help |
&mt("How do I create a users list from a spreadsheet")). |
$str .= '<p>' |
"<br />\n"; |
.&Apache::loncommon::help_open_topic("Course_Create_Class_List", |
$str .= &Apache::loncommon::help_open_topic("Course_Convert_To_CSV", |
&mt("How do I create a users list from a spreadsheet")) |
&mt("How do I create a CSV file from a spreadsheet")); |
."<br />\n" |
$str .= "</p>\n"; |
.&Apache::loncommon::help_open_topic("Course_Convert_To_CSV", |
$str .= "<p>\n"; |
&mt("How do I create a CSV file from a spreadsheet")) |
$str .= '<label><input type="checkbox" name="noFirstLine" /> '. |
."</p>\n"; |
&mt('Ignore First Line')."</label></p>\n"; |
|
$str .= '<input type="submit" name="fileupload" value="'. |
$str .= &Apache::lonhtmlcommon::start_pick_box() |
&mt('Go to next step').'">'."<br />\n"; |
.&Apache::lonhtmlcommon::row_title(&mt('File')) |
|
.'<p class="LC_info">'."\n" |
|
.&mt('Please upload an UTF8 encoded file to ensure a correct character encoding in your classlist.')."\n" |
|
.'</p>'."\n" |
|
.&Apache::loncommon::upfile_select_html() |
|
.&Apache::lonhtmlcommon::row_closure() |
|
.&Apache::lonhtmlcommon::row_title( |
|
'<label for="noFirstLine">' |
|
.&mt('Ignore First Line') |
|
.'</label>') |
|
.'<input type="checkbox" name="noFirstLine" id="noFirstLine" />' |
|
.&Apache::lonhtmlcommon::row_closure(1) |
|
.&Apache::lonhtmlcommon::end_pick_box(); |
|
|
|
$str .= '<p>' |
|
.'<input type="submit" name="fileupload" value="'.&mt('Next').'" />' |
|
.'</p>'; |
|
|
$str .= &Apache::loncommon::end_page(); |
$str .= &Apache::loncommon::end_page(); |
|
|
$r->print($str); |
$r->print($str); |
return; |
return; |
} |
} |
Line 3436 sub upfile_drop_add {
|
Line 3581 sub upfile_drop_add {
|
'ipwd_choice' => 'scalar', |
'ipwd_choice' => 'scalar', |
'email_choice' => 'scalar', |
'email_choice' => 'scalar', |
'role_choice' => 'scalar', |
'role_choice' => 'scalar', |
'domain_choice' => 'scalar'}); |
'domain_choice' => 'scalar', |
|
'inststatus_choice' => 'scalar'}); |
# |
# |
my ($startdate,$enddate) = &get_dates_from_form(); |
my ($startdate,$enddate) = &get_dates_from_form(); |
if ($env{'form.makedatesdefault'}) { |
if ($env{'form.makedatesdefault'}) { |
Line 3519 sub upfile_drop_add {
|
Line 3665 sub upfile_drop_add {
|
'permanentemail','id'); |
'permanentemail','id'); |
my %canmodify; |
my %canmodify; |
if (&Apache::lonnet::allowed('mau',$domain)) { |
if (&Apache::lonnet::allowed('mau',$domain)) { |
|
push(@userinfo,'inststatus'); |
foreach my $field (@userinfo) { |
foreach my $field (@userinfo) { |
$canmodify{$field} = 1; |
$canmodify{$field} = 1; |
} |
} |
Line 3567 sub upfile_drop_add {
|
Line 3714 sub upfile_drop_add {
|
} else { |
} else { |
$r->print('<h3>'.&mt('Adding/Modifying Users')."</h3>\n<p>\n"); |
$r->print('<h3>'.&mt('Adding/Modifying Users')."</h3>\n<p>\n"); |
} |
} |
|
$r->rflush; |
|
|
my %counts = ( |
my %counts = ( |
user => 0, |
user => 0, |
auth => 0, |
auth => 0, |
Line 3642 sub upfile_drop_add {
|
Line 3791 sub upfile_drop_add {
|
if ($entries{$fields{'username'}} |
if ($entries{$fields{'username'}} |
ne &LONCAPA::clean_username($entries{$fields{'username'}})) { |
ne &LONCAPA::clean_username($entries{$fields{'username'}})) { |
$r->print('<br />'. |
$r->print('<br />'. |
&mt('<b>[_1]</b>: Unacceptable username for user [_2] [_3] [_4] [_5]', |
&mt('[_1]: Unacceptable username for user [_2] [_3] [_4] [_5]', |
$entries{$fields{'username'}},$fname,$mname,$lname,$gen)); |
'<b>'.$entries{$fields{'username'}}.'</b>',$fname,$mname,$lname,$gen)); |
next; |
next; |
} else { |
} else { |
if ($entries{$fields{'domain'}} |
if ($entries{$fields{'domain'}} |
Line 3662 sub upfile_drop_add {
|
Line 3811 sub upfile_drop_add {
|
$entries{$fields{'sec'}} =~ s/\W//g; |
$entries{$fields{'sec'}} =~ s/\W//g; |
my $item = $entries{$fields{'sec'}}; |
my $item = $entries{$fields{'sec'}}; |
if ($item eq "none" || $item eq 'all') { |
if ($item eq "none" || $item eq 'all') { |
$r->print('<br />'.&mt('<b>[_1]</b>: Unable to enroll user [_2] [_3] [_4] [_5] in a section named "[_6]" - this is a reserved word.',$username,$fname,$mname,$lname,$gen,$item)); |
$r->print('<br />'.&mt('[_1]: Unable to enroll user [_2] [_3] [_4] [_5] in a section named "[_6]" - this is a reserved word.','<b>'.$username.'</b>',$fname,$mname,$lname,$gen,$item)); |
next; |
next; |
} elsif (exists($curr_groups{$item})) { |
} elsif (exists($curr_groups{$item})) { |
$r->print('<br />'.&mt('<b>[_1]</b>: Unable to enroll user [_2] [_3] [_4] [_5] in a section named "[_6]" - this is a course group.',$username,$fname,$mname,$lname,$gen,$item).' '.&mt('Section names and group names must be distinct.')); |
$r->print('<br />'.&mt('[_1]: Unable to enroll user [_2] [_3] [_4] [_5] in a section named "[_6]" - this is a course group.','<b>'.$username.'</b>',$fname,$mname,$lname,$gen,$item).' '.&mt('Section names and group names must be distinct.')); |
next; |
next; |
} else { |
} else { |
push(@secs,$item); |
push(@secs,$item); |
Line 3677 sub upfile_drop_add {
|
Line 3826 sub upfile_drop_add {
|
if (ref($userlist{$username.':'.$userdomain}) eq 'ARRAY') { |
if (ref($userlist{$username.':'.$userdomain}) eq 'ARRAY') { |
my $currsec = $userlist{$username.':'.$userdomain}[$secidx]; |
my $currsec = $userlist{$username.':'.$userdomain}[$secidx]; |
if ($currsec ne $env{'request.course.sec'}) { |
if ($currsec ne $env{'request.course.sec'}) { |
$r->print('<br />'.&mt('<b>[_1]</b>: Unable to enroll user [_2] [_3] [_4] [_5] in a section named "[_6]".',$username,$fname,$mname,$lname,$gen,$secs[0]).'<br />'); |
$r->print('<br />'.&mt('[_1]: Unable to enroll user [_2] [_3] [_4] [_5] in a section named "[_6]".','<b>'.$username.'</b>',$fname,$mname,$lname,$gen,$secs[0]).'<br />'); |
if ($currsec eq '') { |
if ($currsec eq '') { |
$r->print(&mt('This user already has an active/future student role in the course, unaffiliated to any section.')); |
$r->print(&mt('This user already has an active/future student role in the course, unaffiliated to any section.')); |
|
|
Line 3706 sub upfile_drop_add {
|
Line 3855 sub upfile_drop_add {
|
if (defined($fields{'email'})) { |
if (defined($fields{'email'})) { |
if (defined($entries{$fields{'email'}})) { |
if (defined($entries{$fields{'email'}})) { |
$email=$entries{$fields{'email'}}; |
$email=$entries{$fields{'email'}}; |
unless ($email=~/^[^\@]+\@[^\@]+$/) { $email=''; } } |
unless ($email=~/^[^\@]+\@[^\@]+$/) { $email=''; } |
|
} |
|
} |
|
# determine affiliation |
|
my $inststatus=''; |
|
if (defined($fields{'inststatus'})) { |
|
if (defined($entries{$fields{'inststatus'}})) { |
|
$inststatus=$entries{$fields{'inststatus'}}; |
|
} |
} |
} |
# determine user password |
# determine user password |
my $password = $genpwd; |
my $password = $genpwd; |
Line 3727 sub upfile_drop_add {
|
Line 3884 sub upfile_drop_add {
|
} |
} |
if ($role eq '') { |
if ($role eq '') { |
my $rolestr = join(', ',@permitted_roles); |
my $rolestr = join(', ',@permitted_roles); |
$r->print('<br />'. |
$r->print('<br />' |
&mt('<b>[_1]</b>: You do not have permission to add the requested role [_2] for the user.',$entries{$fields{'username'}},$entries{$fields{'role'}}).'<br />'.&mt('Allowable role(s) is/are: [_1].',$rolestr)."\n"); |
.&mt('[_1]: You do not have permission to add the requested role [_2] for the user.' |
|
,'<b>'.$entries{$fields{'username'}}.'</b>' |
|
,$entries{$fields{'role'}}) |
|
.'<br />' |
|
.&mt('Allowable role(s) is/are: [_1].',$rolestr)."\n" |
|
); |
next; |
next; |
} |
} |
} |
} |
Line 3784 sub upfile_drop_add {
|
Line 3946 sub upfile_drop_add {
|
} |
} |
} |
} |
my @newinfo = (\$fname,\$mname,\$lname,\$gen,\$email,\$id); |
my @newinfo = (\$fname,\$mname,\$lname,\$gen,\$email,\$id); |
for (my $i=0; $i<@userinfo; $i++) { |
for (my $i=0; $i<@newinfo; $i++) { |
if (${$newinfo[$i]} ne '') { |
if (${$newinfo[$i]} ne '') { |
if (!$canmodify{$userinfo[$i]}) { |
if (!$canmodify{$userinfo[$i]}) { |
${$newinfo[$i]} = ''; |
${$newinfo[$i]} = ''; |
Line 3833 sub upfile_drop_add {
|
Line 3995 sub upfile_drop_add {
|
$fname,$mname,$lname,$gen,$sec,$enddate, |
$fname,$mname,$lname,$gen,$sec,$enddate, |
$startdate,$env{'form.forceid'}, |
$startdate,$env{'form.forceid'}, |
$desiredhost,$email,'manual','',$cid, |
$desiredhost,$email,'manual','',$cid, |
'',$context); |
'',$context,$inststatus); |
$userresult = $roleresult; |
$userresult = $roleresult; |
} else { |
} else { |
if ($role ne '') { |
if ($role ne '') { |
Line 3853 sub upfile_drop_add {
|
Line 4015 sub upfile_drop_add {
|
$mname,$lname,$gen,$sec, |
$mname,$lname,$gen,$sec, |
$env{'form.forceid'},$desiredhost, |
$env{'form.forceid'},$desiredhost, |
$email,$role,$enddate, |
$email,$role,$enddate, |
$startdate,$checkid); |
$startdate,$checkid,$inststatus); |
} |
} |
} elsif (@secs > 0) { |
} elsif (@secs > 0) { |
$singlesec = $secs[0]; |
$singlesec = $secs[0]; |
Line 3868 sub upfile_drop_add {
|
Line 4030 sub upfile_drop_add {
|
$id,$amode,$password,$fname, |
$id,$amode,$password,$fname, |
$mname,$lname,$gen,$singlesec, |
$mname,$lname,$gen,$singlesec, |
$env{'form.forceid'},$desiredhost, |
$env{'form.forceid'},$desiredhost, |
$email,$role,$enddate,$startdate,$checkid); |
$email,$role,$enddate,$startdate, |
|
$checkid,$inststatus); |
} |
} |
} |
} |
if ($multiple) { |
if ($multiple) { |
Line 3888 sub upfile_drop_add {
|
Line 4051 sub upfile_drop_add {
|
} else { |
} else { |
if ($context eq 'course') { |
if ($context eq 'course') { |
$r->print('<br />'. |
$r->print('<br />'. |
&mt('<b>[_1]</b>: Unable to enroll. No password specified.',$username) |
&mt('[_1]: Unable to enroll. No password specified.','<b>'.$username.'</b>') |
); |
); |
} elsif ($context eq 'author') { |
} elsif ($context eq 'author') { |
$r->print('<br />'. |
$r->print('<br />'. |
&mt('<b>[_1]</b>: Unable to add co-author. No password specified.',$username) |
&mt('[_1]: Unable to add co-author. No password specified.','<b>'.$username.'</b>') |
); |
); |
} else { |
} else { |
$r->print('<br />'. |
$r->print('<br />'. |
&mt('<b>[_1]</b>: Unable to add user. No password specified.',$username) |
&mt('[_1]: Unable to add user. No password specified.','<b>'.$username.'</b>') |
); |
); |
} |
} |
} |
} |
Line 3999 sub user_change_result {
|
Line 4162 sub user_change_result {
|
if ($userresult =~ /^error:(.+)$/) { |
if ($userresult =~ /^error:(.+)$/) { |
my $error = $1; |
my $error = $1; |
$r->print('<br />'. |
$r->print('<br />'. |
&mt('<b>[_1]</b>: Unable to add/modify: [_2]',$username.':'.$userdomain,$error)); |
&mt('[_1]: Unable to add/modify: [_2]','<b>'.$username.':'.$userdomain.'</b>',$error)); |
} |
} |
} else { |
} else { |
$counts->{'user'} ++; |
$counts->{'user'} ++; |
Line 4009 sub user_change_result {
|
Line 4172 sub user_change_result {
|
if ($authresult =~ /^error:(.+)$/) { |
if ($authresult =~ /^error:(.+)$/) { |
my $error = $1; |
my $error = $1; |
$r->print('<br />'. |
$r->print('<br />'. |
&mt('<b>[_1]</b>: Unable to modify authentication: [_2]',$username.':'.$userdomain,$error)); |
&mt('[_1]: Unable to modify authentication: [_2]','<b>'.$username.':'.$userdomain.'</b>',$error)); |
} |
} |
} else { |
} else { |
$counts->{'auth'} ++; |
$counts->{'auth'} ++; |
Line 4019 sub user_change_result {
|
Line 4182 sub user_change_result {
|
if ($roleresult =~ /^error:(.+)$/) { |
if ($roleresult =~ /^error:(.+)$/) { |
my $error = $1; |
my $error = $1; |
$r->print('<br />'. |
$r->print('<br />'. |
&mt('<b>[_1]</b>: Unable to add role: [_2]',$username.':'.$userdomain,$error)); |
&mt('[_1]: Unable to add role: [_2]','<b>'.$username.':'.$userdomain.'</b>',$error)); |
} |
} |
} else { |
} else { |
$counts->{'role'} ++; |
$counts->{'role'} ++; |
Line 4289 sub update_user_list {
|
Line 4452 sub update_user_list {
|
$r->print('<p><b>'.&mt("$result_text{'ok'}{$choice} role(s) for [quant,_1,user,users,no users].",$count).'</b></p>'); |
$r->print('<p><b>'.&mt("$result_text{'ok'}{$choice} role(s) for [quant,_1,user,users,no users].",$count).'</b></p>'); |
if ($count > 0) { |
if ($count > 0) { |
if ($choice eq 'revoke' || $choice eq 'drop') { |
if ($choice eq 'revoke' || $choice eq 'drop') { |
$r->print('<p>'.&mt('Re-enabling will re-activate data for the role.</p>')); |
$r->print('<p>'.&mt('Re-enabling will re-activate data for the role.').'</p>'); |
} |
} |
# Flush the course logs so reverse user roles immediately updated |
# Flush the course logs so reverse user roles immediately updated |
&Apache::lonnet::flushcourselogs(); |
&Apache::lonnet::flushcourselogs(); |
Line 4383 sub course_sections {
|
Line 4546 sub course_sections {
|
my $output = ''; |
my $output = ''; |
my @sections = (sort {$a <=> $b} keys %{$sections_count}); |
my @sections = (sort {$a <=> $b} keys %{$sections_count}); |
my $numsec = scalar(@sections); |
my $numsec = scalar(@sections); |
my $is_selected = ' selected="selected" '; |
my $is_selected = ' selected="selected"'; |
if ($numsec <= 1) { |
if ($numsec <= 1) { |
$output = '<select name="currsec_'.$role.'" >'."\n". |
$output = '<select name="currsec_'.$role.'" >'."\n". |
' <option value="">'.&mt('Select').'</option>'."\n"; |
' <option value="">'.&mt('Select').'</option>'."\n"; |