version 1.73.2.3, 2009/03/21 06:21:55
|
version 1.93, 2009/05/11 13:07:24
|
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(&mt('Total number of records found in file: [_1]','<b>'.$distotal.'</b>'). |
"<br />\n"); |
"<br />\n"); |
$r->print('<div class="LC_left_float"><h3>'. |
$r->print('<div class="LC_left_float"><h3>'. |
Line 341 sub print_upload_manager_header {
|
Line 341 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" '. |
Line 401 sub javascript_validations {
|
Line 401 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 541 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 585 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 597 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 621 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 686 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 697 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 791 sub print_upload_manager_footer {
|
Line 813 sub print_upload_manager_footer {
|
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."<h3>".&mt('Full Update')."</h3>\n". |
'<p><label><input type="checkbox" name="fullup" value="yes">'. |
'<p><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.').'</p>'."\n"; |
' '.&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"; |
} |
} |
if ($context eq 'course' || $context eq 'domain') { |
if ($context eq 'course' || $context eq 'domain') { |
Line 816 sub forceid_change {
|
Line 838 sub forceid_change {
|
my ($context) = @_; |
my ($context) = @_; |
my $output = |
my $output = |
"<h3>".&mt('Student/Employee ID')."</h3>\n". |
"<h3>".&mt('Student/Employee ID')."</h3>\n". |
"<p>\n".'<label><input type="checkbox" name="forceid" value="yes">'. |
"<p>\n".'<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 .= '</p>'; |
Line 864 sub print_upload_manager_form {
|
Line 886 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 918 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 1308 sub print_userlist {
|
Line 1332 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 1526 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 1542 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 2056 END
|
Line 2080 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 2088 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", |
'clicker' => "Clicker-ID", |
'clicker' => "Clicker-ID", |
Line 2188 END
|
Line 2212 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 2468 END
|
Line 2492 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 2477 END
|
Line 2501 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 2513 END
|
Line 2537 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 2548 END
|
Line 2572 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 2835 sub select_actions {
|
Line 2859 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 3014 ENDJS
|
Line 3038 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 3235 sub show_drop_list {
|
Line 3259 sub show_drop_list {
|
$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 3353 END
|
Line 3377 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 3372 END
|
Line 3396 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 3386 END
|
Line 3414 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 .= '<h2>'.&mt('Upload a file containing information about users').'</h2>'."\n"; |
|
$str .= '<p class="LC_info">' |
|
.&mt('Please upload an UTF8 encoded file to ensure a correct character encoding in your classlist.') |
|
.'</p>'."\n"; |
$str .= &Apache::loncommon::upfile_select_html(); |
$str .= &Apache::loncommon::upfile_select_html(); |
$str .= '<p>'; |
$str .= '<p>'; |
$str .= &Apache::loncommon::help_open_topic("Course_Create_Class_List", |
$str .= &Apache::loncommon::help_open_topic("Course_Create_Class_List", |
Line 3402 sub print_first_users_upload_form {
|
Line 3433 sub print_first_users_upload_form {
|
$str .= '<label><input type="checkbox" name="noFirstLine" /> '. |
$str .= '<label><input type="checkbox" name="noFirstLine" /> '. |
&mt('Ignore First Line')."</label></p>\n"; |
&mt('Ignore First Line')."</label></p>\n"; |
$str .= '<input type="submit" name="fileupload" value="'. |
$str .= '<input type="submit" name="fileupload" value="'. |
&mt('Go to next step').'">'."<br />\n"; |
&mt('Next').'" />'."<br />\n"; |
$str .= &Apache::loncommon::end_page(); |
$str .= &Apache::loncommon::end_page(); |
$r->print($str); |
$r->print($str); |
return; |
return; |
Line 3447 sub upfile_drop_add {
|
Line 3478 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 3530 sub upfile_drop_add {
|
Line 3562 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 3578 sub upfile_drop_add {
|
Line 3611 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 3653 sub upfile_drop_add {
|
Line 3688 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 3673 sub upfile_drop_add {
|
Line 3708 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 3688 sub upfile_drop_add {
|
Line 3723 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 3717 sub upfile_drop_add {
|
Line 3752 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 3738 sub upfile_drop_add {
|
Line 3781 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 3795 sub upfile_drop_add {
|
Line 3843 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 3844 sub upfile_drop_add {
|
Line 3892 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 3864 sub upfile_drop_add {
|
Line 3912 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 3879 sub upfile_drop_add {
|
Line 3927 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 3899 sub upfile_drop_add {
|
Line 3948 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 4010 sub user_change_result {
|
Line 4059 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 4020 sub user_change_result {
|
Line 4069 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 4030 sub user_change_result {
|
Line 4079 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 4300 sub update_user_list {
|
Line 4349 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 4394 sub course_sections {
|
Line 4443 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"; |