version 1.54, 2008/05/12 17:52:08
|
version 1.60, 2008/07/12 23:56:13
|
Line 319 sub print_upload_manager_header {
|
Line 319 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 /><input type="button" value="Reverse Association" '. |
$r->print('<br /><input type="button" value="'.&mt('Reverse Association').'" '. |
'name="'.&mt('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('<label><input type="checkbox" name="noFirstLine"'.$checked.'/>'. |
$r->print('<label><input type="checkbox" name="noFirstLine"'.$checked.'/>'. |
&mt('Ignore First Line').'</label>'); |
&mt('Ignore First Line').'</label>'); |
Line 383 sub javascript_validations {
|
Line 383 sub javascript_validations {
|
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 email 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.', |
continue => 'Continue adding users?', |
continue => 'Continue adding users?', |
); |
); |
my $function_name = <<"END"; |
my $function_name = <<"END"; |
$setsections_js |
$setsections_js |
|
|
function verify_message (vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail) { |
function verify_message (vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail,foundrole,founddomain) { |
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 503 END
|
Line 504 END
|
} |
} |
message+='$alert{'email'}'; |
message+='$alert{'email'}'; |
} |
} |
|
if (foundrole==0) { |
|
if (message!='') { |
|
message+='\\n'; |
|
} |
|
message+='$alert{'role'}'; |
|
} |
|
if (founddomain==0) { |
|
if (message!='') { |
|
message+='\\n'; |
|
} |
|
message+='$alert{'domain'}'; |
|
} |
if (message!='') { |
if (message!='') { |
message+= '\\n$alert{'continue'}'; |
message+= '\\n$alert{'continue'}'; |
if (confirm(message)) { |
if (confirm(message)) { |
Line 532 function verify(vf,sec_caller) {
|
Line 545 function verify(vf,sec_caller) {
|
var foundsec=0; |
var foundsec=0; |
var foundemail=0; |
var foundemail=0; |
var foundrole=0; |
var foundrole=0; |
|
var founddomain=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 542 function verify(vf,sec_caller) {
|
Line 556 function verify(vf,sec_caller) {
|
if (tw==9) { foundpwd=1; } |
if (tw==9) { foundpwd=1; } |
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; } |
} |
} |
verify_message(vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail,foundrole); |
verify_message(vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail,foundrole,founddom); |
} |
} |
|
|
// |
// |
Line 564 function verify(vf,sec_caller) {
|
Line 579 function verify(vf,sec_caller) {
|
// 9 = ipwd (password) |
// 9 = ipwd (password) |
// 10 = email address |
// 10 = email address |
// 11 = role |
// 11 = role |
|
// 12 = domain |
|
|
function flip(vf,tf) { |
function flip(vf,tf) { |
var nw=eval('vf.f'+tf+'.selectedIndex'); |
var nw=eval('vf.f'+tf+'.selectedIndex'); |
Line 627 function verify(vf,sec_caller) {
|
Line 643 function verify(vf,sec_caller) {
|
var foundid=0; |
var foundid=0; |
var foundsec=0; |
var foundsec=0; |
var foundrole=0; |
var foundrole=0; |
|
var founddomain=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 636 function verify(vf,sec_caller) {
|
Line 653 function verify(vf,sec_caller) {
|
if (i==7 && tw!=0) { foundsec=1; } |
if (i==7 && tw!=0) { foundsec=1; } |
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; } |
} |
} |
verify_message(vf,founduname,foundpwd,foundname,foundid,foundsec,foundrole); |
verify_message(vf,founduname,foundpwd,foundname,foundid,foundsec,foundrole,founddomain); |
} |
} |
|
|
function flip(vf,tf) { |
function flip(vf,tf) { |
Line 700 sub print_upload_manager_footer {
|
Line 718 sub print_upload_manager_footer {
|
$Str .= &hidden_input('keyfields',$keyfields); |
$Str .= &hidden_input('keyfields',$keyfields); |
$Str .= "<h3>".&mt('Login Type')."</h3>\n"; |
$Str .= "<h3>".&mt('Login Type')."</h3>\n"; |
if ($context eq 'domain') { |
if ($context eq 'domain') { |
$Str .= '<p>'.&mt('Change authentication for existing users to these settings?').' <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>\n". |
&mt('Note: this will not take effect if the user already exists'). |
&mt('Note: this will not take effect if the user already exists'). |
Line 718 sub print_upload_manager_footer {
|
Line 736 sub print_upload_manager_footer {
|
} else { |
} else { |
$Str .= $home_server_pick; |
$Str .= $home_server_pick; |
} |
} |
|
$Str .= '<h3>'.&mt('Default domain').'</h3>'."\n". |
|
&Apache::loncommon::select_dom_form($defdom,'defaultdomain',undef,1); |
$Str .= '<h3>'.&mt('Starting and Ending Dates'). |
$Str .= '<h3>'.&mt('Starting and Ending Dates'). |
"</h3>\n"; |
"</h3>\n"; |
$Str .= "<p>\n".$date_table."</p>\n"; |
$Str .= "<p>\n".$date_table."</p>\n"; |
Line 757 sub print_upload_manager_footer {
|
Line 777 sub print_upload_manager_footer {
|
} |
} |
$Str .= '</div><div class="LC_clear_float_footer"><br /><input type="button"'. |
$Str .= '</div><div class="LC_clear_float_footer"><br /><input type="button"'. |
'onClick="javascript:verify(this.form,this.form.csec)" '. |
'onClick="javascript:verify(this.form,this.form.csec)" '. |
'value="Update Users" />'."<br />\n"; |
'value="'.&mt('Update Users').'" />'."<br />\n"; |
if ($context eq 'course') { |
if ($context eq 'course') { |
$Str .= &mt('Note: for large courses, this operation may be time '. |
$Str .= &mt('Note: for large courses, this operation may be time '. |
'consuming'); |
'consuming'); |
Line 818 sub print_upload_manager_form {
|
Line 838 sub print_upload_manager_form {
|
'ipwd_choice' => 'scalar', |
'ipwd_choice' => 'scalar', |
'email_choice' => 'scalar', |
'email_choice' => 'scalar', |
'role_choice' => 'scalar', |
'role_choice' => 'scalar', |
|
'domain_choice' => 'scalar', |
}; |
}; |
my $defdom = $env{'request.role.domain'}; |
my $defdom = $env{'request.role.domain'}; |
if ($context eq 'course') { |
if ($context eq 'course') { |
Line 848 sub print_upload_manager_form {
|
Line 869 sub print_upload_manager_form {
|
['sec', &mt('Section'), $env{'form.sec_choice'}], |
['sec', &mt('Section'), $env{'form.sec_choice'}], |
['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'}]); |
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 1863 sub process_date_info {
|
Line 1885 sub process_date_info {
|
} |
} |
|
|
sub show_users_list { |
sub show_users_list { |
my ($r,$context,$mode,$permission,$statusmode,$userlist,$keylist)=@_; |
my ($r,$context,$mode,$permission,$statusmode,$userlist,$keylist,$formname)=@_; |
|
if ($formname eq '') { |
|
$formname = 'studentform'; |
|
} |
# |
# |
# Variables for excel output |
# Variables for excel output |
my ($excel_workbook, $excel_sheet, $excel_filename,$row,$format); |
my ($excel_workbook, $excel_sheet, $excel_filename,$row,$format); |
Line 1878 sub show_users_list {
|
Line 1903 sub show_users_list {
|
} else { |
} else { |
push(@sortable,'extent'); |
push(@sortable,'extent'); |
} |
} |
|
if ($mode eq 'pickauthor') { |
|
@sortable = ('username','fullname','email','status'); |
|
} |
if (!grep(/^\Q$sortby\E$/,@sortable)) { |
if (!grep(/^\Q$sortby\E$/,@sortable)) { |
$sortby = 'username'; |
$sortby = 'username'; |
} |
} |
Line 1918 function photowindow(photolink) {
|
Line 1946 function photowindow(photolink) {
|
END |
END |
} |
} |
} |
} |
if ($mode ne 'autoenroll') { |
if ($mode ne 'autoenroll' && $mode ne 'pickauthor') { |
my $check_uncheck_js = &Apache::loncommon::check_uncheck_jscript(); |
my $check_uncheck_js = &Apache::loncommon::check_uncheck_jscript(); |
my $alert = &mt("You must select at least one user by checking a user's 'Select' checkbox"); |
|
my $singconfirm = &mt(' for a single user?'); |
|
my $multconfirm = &mt(' for multiple users?'); |
|
my $date_sec_selector = &date_section_javascript($context,$setting,$statusmode); |
my $date_sec_selector = &date_section_javascript($context,$setting,$statusmode); |
my %lt = &Apache::lonlocal::texthash( |
my $verify_action_js = &bulkaction_javascript($formname); |
acwi => 'Access will be set to start immediately', |
|
asyo => 'as you did not select an end date in the pop-up window', |
|
accw => 'Access will be set to continue indefinitely', |
|
asyd => 'as you did not select an end date in the pop-up window', |
|
sewi => "Sections will be switched to 'No section'", |
|
ayes => "as you either selected the 'No section' option", |
|
oryo => 'or you did not select a section in the pop-up window', |
|
arol => 'A role with no section will be added', |
|
swbs => 'Sections will be switched to:', |
|
rwba => 'Roles will be added for section(s):', |
|
); |
|
$r->print(<<END); |
$r->print(<<END); |
|
|
<script type="text/javascript" language="Javascript"> |
<script type="text/javascript" language="Javascript"> |
$check_uncheck_js |
$check_uncheck_js |
|
|
function verify_action (field) { |
$verify_action_js |
var numchecked = 0; |
|
var singconf = '$singconfirm'; |
|
var multconf = '$multconfirm'; |
|
if (field.length > 0) { |
|
for (i = 0; i < field.length; i++) { |
|
if (field[i].checked == true) { |
|
numchecked ++; |
|
} |
|
} |
|
} else { |
|
if (field.checked == true) { |
|
numchecked ++; |
|
} |
|
} |
|
if (numchecked == 0) { |
|
alert("$alert"); |
|
} |
|
else { |
|
var message = document.studentform.bulkaction[document.studentform.bulkaction.selectedIndex].text; |
|
var choice = document.studentform.bulkaction[document.studentform.bulkaction.selectedIndex].value; |
|
if (numchecked == 1) { |
|
message += singconf; |
|
} |
|
else { |
|
message += multconf; |
|
} |
|
if (choice == 'chgdates' || choice == 'reenable' || choice == 'activate') { |
|
var datemsg = ''; |
|
if ((document.studentform.startdate_month.value == '') && |
|
(document.studentform.startdate_day.value == '') && |
|
(document.studentform.startdate_year.value == '')) { |
|
datemsg = "\\n$lt{'acwi'},\\n$lt{'asyo'}.\\n"; |
|
} |
|
if ((document.studentform.enddate_month.value == '') && |
|
(document.studentform.enddate_day.value == '') && |
|
(document.studentform.enddate_year.value == '')) { |
|
datemsg += "\\n$lt{'accw'},\\n$lt{'asyd'}.\\n"; |
|
} |
|
if (datemsg != '') { |
|
message += "\\n"+datemsg; |
|
} |
|
} |
|
if (choice == 'chgsec') { |
|
var rolefilter = document.studentform.showrole.options[document.studentform.showrole.selectedIndex].value; |
|
var retained = document.studentform.retainsec.value; |
|
var secshow = document.studentform.newsecs.value; |
|
if (secshow == '') { |
|
if (rolefilter == 'st' || retained == 0 || retained == "") { |
|
message += "\\n\\n$lt{'sewi'},\\n$lt{'ayes'},\\n$lt{'oryo'}.\\n"; |
|
} else { |
|
message += "\\n\\n$lt{'arol'}\\n$lt{'ayes'},\\n$lt{'oryo'}.\\n"; |
|
} |
|
} else { |
|
if (rolefilter == 'st' || retained == 0 || retained == "") { |
|
message += "\\n\\n$lt{'swbs'} "+secshow+".\\n"; |
|
} else { |
|
message += "\\n\\n$lt{'rwba'} "+secshow+".\\n"; |
|
} |
|
} |
|
} |
|
if (confirm(message)) { |
|
document.studentform.phase.value = 'bulkchange'; |
|
document.studentform.submit(); |
|
} |
|
} |
|
} |
|
|
|
function username_display_launch(username,domain) { |
function username_display_launch(username,domain) { |
var target; |
var target; |
for (var i=0; i<document.studentform.usernamelink.length; i++) { |
for (var i=0; i<document.$formname.usernamelink.length; i++) { |
if (document.studentform.usernamelink[i].checked) { |
if (document.$formname.usernamelink[i].checked) { |
target = document.studentform.usernamelink[i].value; |
target = document.$formname.usernamelink[i].value; |
} |
} |
} |
} |
if (target == 'modify') { |
if (target == 'modify') { |
if (document.studentform.userwin.checked == true) { |
if (document.$formname.userwin.checked == true) { |
var url = '/adm/createuser?srchterm='+username+'&srchdomain='+domain+'&phase=get_user_info&action=singleuser&srchin=dom&srchby=uname&srchtype=exact&popup=1'; |
var url = '/adm/createuser?srchterm='+username+'&srchdomain='+domain+'&phase=get_user_info&action=singleuser&srchin=dom&srchby=uname&srchtype=exact&popup=1'; |
var options = 'height=600,width=800,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no'; |
var options = 'height=600,width=800,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no'; |
modifywin = window.open(url,'',options,1); |
modifywin = window.open(url,'',options,1); |
modifywin.focus(); |
modifywin.focus(); |
return; |
return; |
} else { |
} else { |
document.studentform.srchterm.value=username; |
document.$formname.srchterm.value=username; |
document.studentform.srchdomain.value=domain; |
document.$formname.srchdomain.value=domain; |
document.studentform.phase.value='get_user_info'; |
document.$formname.phase.value='get_user_info'; |
document.studentform.action.value = 'singleuser'; |
document.$formname.action.value = 'singleuser'; |
document.studentform.submit(); |
document.$formname.submit(); |
} |
} |
} |
} |
if (target == 'aboutme') { |
if (target == 'aboutme') { |
if (document.studentform.userwin.checked == true) { |
if (document.$formname.userwin.checked == true) { |
var url = '/adm/'+domain+'/'+username+'/aboutme?popup=1'; |
var url = '/adm/'+domain+'/'+username+'/aboutme?popup=1'; |
var options = 'height=600,width=800,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no'; |
var options = 'height=600,width=800,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no'; |
aboutmewin = window.open(url,'',options,1); |
aboutmewin = window.open(url,'',options,1); |
Line 2065 END
|
Line 2013 END
|
'role' => "role", |
'role' => "role", |
'type' => "enroll type/action", |
'type' => "enroll type/action", |
'email' => "email address", |
'email' => "email address", |
'clicker' => "clicker id", |
|
'photo' => "photo", |
'photo' => "photo", |
'extent' => "extent", |
'extent' => "extent", |
'go' => "go", |
|
'pr' => "Proceed", |
'pr' => "Proceed", |
'ca' => "check all", |
'ca' => "check all", |
'ua' => "uncheck all", |
'ua' => "uncheck all", |
'ac' => "Action to take for selected users", |
'ac' => "Action to take for selected users", |
'link' => "Behavior of username links", |
'link' => "Behavior of clickable username link for each user", |
'aboutme' => "Display a user's personal page", |
'aboutme' => "Display a user's personal 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", |
Line 2083 END
|
Line 2029 END
|
} elsif ($context eq 'author') { |
} elsif ($context eq 'author') { |
$lt{'extent'} = &mt('Author'); |
$lt{'extent'} = &mt('Author'); |
} |
} |
my @cols = ('username','domain','id','fullname'); |
my @cols; |
if ($context eq 'course') { |
if ($mode eq 'pickauthor') { |
push(@cols,'section'); |
@cols = ('username','fullname','status','email'); |
} |
} else { |
if (!($context eq 'domain' && $env{'form.roletype'} eq 'course')) { |
@cols = ('username','domain','id','fullname'); |
push(@cols,('start','end')); |
if ($context eq 'course') { |
} |
push(@cols,'section'); |
if ($env{'form.showrole'} eq 'Any' || $env{'form.showrole'} eq 'cr') { |
} |
push(@cols,'role'); |
if (!($context eq 'domain' && $env{'form.roletype'} eq 'course')) { |
} |
push(@cols,('start','end')); |
if ($context eq 'domain' && ($env{'form.roletype'} eq 'author' || |
} |
$env{'form.roletype'} eq 'course')) { |
if ($env{'form.showrole'} eq 'Any' || $env{'form.showrole'} eq 'cr') { |
push (@cols,'extent'); |
push(@cols,'role'); |
} |
} |
if (($statusmode eq 'Any') && |
if ($context eq 'domain' && ($env{'form.roletype'} eq 'author' || |
(!($context eq 'domain' && $env{'form.roletype'} eq 'course'))) { |
$env{'form.roletype'} eq 'course')) { |
push(@cols,'status'); |
push (@cols,'extent'); |
} |
} |
if ($context eq 'course') { |
if (($statusmode eq 'Any') && |
push(@cols,'groups'); |
(!($context eq 'domain' && $env{'form.roletype'} eq 'course'))) { |
|
push(@cols,'status'); |
|
} |
|
if ($context eq 'course') { |
|
push(@cols,'groups'); |
|
} |
|
push(@cols,'email'); |
} |
} |
push(@cols,'email'); |
|
|
|
my $rolefilter = $env{'form.showrole'}; |
my $rolefilter = $env{'form.showrole'}; |
if ($env{'form.showrole'} eq 'cr') { |
if ($env{'form.showrole'} eq 'cr') { |
Line 2116 END
|
Line 2067 END
|
if ($mode ne 'autoenroll') { |
if ($mode ne 'autoenroll') { |
$results_description = &results_header_row($rolefilter,$statusmode, |
$results_description = &results_header_row($rolefilter,$statusmode, |
$context,$permission,$mode); |
$context,$permission,$mode); |
$r->print('<b>'.$results_description.'</b><br />'); |
$r->print('<b>'.$results_description.'</b><br /><br />'); |
} |
} |
my ($output,$actionselect,%canchange,%canchangesec); |
my ($output,$actionselect,%canchange,%canchangesec); |
if ($mode eq 'html' || $mode eq 'view' || $mode eq 'autoenroll') { |
if ($mode eq 'html' || $mode eq 'view' || $mode eq 'autoenroll' || $mode eq 'pickauthor') { |
if ($mode ne 'autoenroll') { |
if ($mode ne 'autoenroll' && $mode ne 'pickauthor') { |
if ($permission->{'cusr'}) { |
if ($permission->{'cusr'}) { |
$actionselect = &select_actions($context,$setting,$statusmode); |
$actionselect = &select_actions($context,$setting,$statusmode,$formname); |
} |
} |
$r->print(<<END); |
$r->print(<<END); |
<input type="hidden" name="srchby" value="uname" /> |
<input type="hidden" name="srchby" value="uname" /> |
Line 2131 END
|
Line 2082 END
|
<input type="hidden" name="srchterm" value="" /> |
<input type="hidden" name="srchterm" value="" /> |
<input type="hidden" name="srchdomain" value="" /> |
<input type="hidden" name="srchdomain" value="" /> |
END |
END |
$output = '<p>'; |
|
my @linkdests = ('aboutme'); |
|
if ($permission->{'cusr'}) { |
|
unshift (@linkdests,'modify'); |
|
} |
|
$output .= '<span class="LC_nobreak">'.$lt{'link'}.': '; |
|
my $usernamelink = $env{'form.usernamelink'}; |
|
if ($usernamelink eq '') { |
|
$usernamelink = 'aboutme'; |
|
} |
|
foreach my $item (@linkdests) { |
|
my $checkedstr = ''; |
|
if ($item eq $usernamelink) { |
|
$checkedstr = ' checked="checked" '; |
|
} |
|
$output .= '<label><input type="radio" name="usernamelink" value="'.$item.'"'.$checkedstr.'> '.$lt{$item}.'</label> '; |
|
} |
|
my $checkwin; |
|
if ($env{'form.userwin'}) { |
|
$checkwin = 'checked = "checked"'; |
|
} |
|
$output .= ' <input type="checkbox" name="userwin" value="1" $checkwin />'.$lt{'owin'}.'</span><br />'; |
|
if ($actionselect) { |
if ($actionselect) { |
$output .= <<"END"; |
$output .= <<"END"; |
$lt{'ac'}: $actionselect <input type="button" value="$lt{'go'}" onclick="javascript:opendatebrowser(this.form,'studentform','go')" /></p> |
<div class="LC_left_float"><fieldset><legend><b>$lt{'ac'}</b></legend> |
<p><input type="button" value="$lt{'ca'}" onclick="javascript:checkAll(document.studentform.actionlist)" /> |
$actionselect |
<input type="button" value="$lt{'ua'}" onclick="javascript:uncheckAll(document.studentform.actionlist)" /><br /><br /><input type="button" value="$lt{'pr'}" onclick="javascript:verify_action(document.studentform.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> |
END |
END |
my @allroles; |
my @allroles; |
if ($env{'form.showrole'} eq 'Any') { |
if ($env{'form.showrole'} eq 'Any') { |
Line 2199 END
|
Line 2129 END
|
} |
} |
} |
} |
} |
} |
|
$output .= '<div class="LC_left_float"><fieldset><legend><b>'.$lt{'link'}.'</b></legend>'. |
|
'<table><tr>'; |
|
my @linkdests = ('aboutme'); |
|
if ($permission->{'cusr'}) { |
|
unshift (@linkdests,'modify'); |
|
} |
|
$output .= '<td>'; |
|
my $usernamelink = $env{'form.usernamelink'}; |
|
if ($usernamelink eq '') { |
|
$usernamelink = 'aboutme'; |
|
} |
|
foreach my $item (@linkdests) { |
|
my $checkedstr = ''; |
|
if ($item eq $usernamelink) { |
|
$checkedstr = ' checked="checked" '; |
|
} |
|
$output .= '<span class="LC_nobreak"><label><input type="radio" name="usernamelink" value="'.$item.'"'.$checkedstr.'> '.$lt{$item}.'</label></span><br />'; |
|
} |
|
my $checkwin; |
|
if ($env{'form.userwin'}) { |
|
$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 .= "\n<p>\n". |
$output .= "\n".'<div class="LC_clear_float_footer"> </div>'."\n". |
&Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table_header_row(); |
&Apache::loncommon::start_data_table_header_row(); |
if ($mode eq 'autoenroll') { |
if ($mode eq 'autoenroll') { |
$output .= " |
$output .= " |
<th><a href=\"javascript:document.studentform.sortby.value='type';document.studentform.submit();\">$lt{'type'}</a></th> |
<th><a href=\"javascript:document.$formname.sortby.value='type';document.$formname.submit();\">$lt{'type'}</a></th> |
"; |
"; |
} else { |
} else { |
$output .= "\n".'<th>'.&mt('Count').'</th>'."\n"; |
if ($mode eq 'pickauthor') { |
|
$output .= "\n".'<th> </th>'."\n"; |
|
} else { |
|
$output .= "\n".'<th>'.&mt('Count').'</th>'."\n"; |
|
} |
if ($actionselect) { |
if ($actionselect) { |
$output .= '<th>'.&mt('Select').'</th>'."\n"; |
$output .= '<th>'.&mt('Select').'</th>'."\n"; |
} |
} |
} |
} |
foreach my $item (@cols) { |
foreach my $item (@cols) { |
$output .= "<th><a href=\"javascript:document.studentform.sortby.value='$item';document.studentform.submit();\">$lt{$item}</a></th>\n"; |
$output .= "<th><a href=\"javascript:document.$formname.sortby.value='$item';document.$formname.submit();\">$lt{$item}</a></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? |
my %clicker_options = &Apache::lonlocal::texthash( |
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".' ' |
'<a href="javascript:document.studentform.displayclickers.value='. |
.&mt('[_1]'.$clicker_options{$clickerchg}.'[_2] clicker id' |
"'".$clickerchg."'".';document.studentform.submit();">'. |
,'<a href="javascript:document.'.$formname.'.displayclickers.value=' |
$clicker_options{$clickerchg}.'</a> '.$lt{'clicker'}."\n". |
."'".$clickerchg."'".';document.'.$formname.'.submit();">' |
' </th>'."\n"; |
,'</a>') |
|
."\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'}) { |
Line 2245 END
|
Line 2203 END
|
$photochg = 'off'; |
$photochg = 'off'; |
} |
} |
$output .= ' <th>'."\n".' '. |
$output .= ' <th>'."\n".' '. |
'<a href="javascript:document.studentform.displayphotos.value='. |
'<a href="javascript:document.'.$formname.'.displayphotos.value='. |
"'".$photochg."'".';document.studentform.submit();">'. |
"'".$photochg."'".';document.'.$formname.'.submit();">'. |
$photo_options{$photochg}.'</a> '.$lt{'photo'}."\n". |
$photo_options{$photochg}.'</a> '.$lt{'photo'}."\n". |
' </th>'."\n"; |
' </th>'."\n"; |
} |
} |
Line 2445 END
|
Line 2403 END
|
} else { |
} else { |
$in{'end'} = &Apache::lonlocal::locallocaltime($in{'end'}); |
$in{'end'} = &Apache::lonlocal::locallocaltime($in{'end'}); |
} |
} |
if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll') { |
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; |
if ($mode eq 'autoenroll') { |
if ($mode eq 'autoenroll') { |
Line 2467 END
|
Line 2425 END
|
} |
} |
$r->print("<td>$cellentry</td>\n"); |
$r->print("<td>$cellentry</td>\n"); |
} else { |
} else { |
$r->print("<td>$rowcount</td>\n"); |
if ($mode ne 'pickauthor') { |
|
$r->print("<td>$rowcount</td>\n"); |
|
} |
if ($actionselect) { |
if ($actionselect) { |
my $showcheckbox; |
my $showcheckbox; |
if ($role =~ /^cr\//) { |
if ($role =~ /^cr\//) { |
Line 2501 END
|
Line 2461 END
|
} else { |
} else { |
$r->print('<td> </td>'); |
$r->print('<td> </td>'); |
} |
} |
|
} elsif ($mode eq 'pickauthor') { |
|
$r->print('<td><input type="button" name="chooseauthor" onclick="javascript:gochoose('."'$in{'username'}'".');" value="'.&mt('Select').'" /></td>'); |
} |
} |
} |
} |
foreach my $item (@cols) { |
foreach my $item (@cols) { |
Line 2568 END
|
Line 2530 END
|
$row++; |
$row++; |
} |
} |
} |
} |
if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll') { |
if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll' || $mode eq 'pickauthor') { |
$r->print(&Apache::loncommon::end_data_table().'<br />'); |
$r->print(&Apache::loncommon::end_data_table().'<br />'); |
} elsif ($mode eq 'excel') { |
} elsif ($mode eq 'excel') { |
$excel_workbook->close(); |
$excel_workbook->close(); |
Line 2588 END
|
Line 2550 END
|
} |
} |
} |
} |
|
|
|
sub bulkaction_javascript { |
|
my ($formname,$caller) = @_; |
|
my $docstart = 'document'; |
|
if ($caller eq 'popup') { |
|
$docstart = 'opener.document'; |
|
} |
|
my %lt = &Apache::lonlocal::texthash( |
|
acwi => 'Access will be set to start immediately', |
|
asyo => 'as you did not select an end date in the pop-up window', |
|
accw => 'Access will be set to continue indefinitely', |
|
asyd => 'as you did not select an end date in the pop-up window', |
|
sewi => "Sections will be switched to 'No section'", |
|
ayes => "as you either selected the 'No section' option", |
|
oryo => 'or you did not select a section in the pop-up window', |
|
arol => 'A role with no section will be added', |
|
swbs => 'Sections will be switched to:', |
|
rwba => 'Roles will be added for section(s):', |
|
); |
|
my $alert = &mt("You must select at least one user by checking a user's 'Select' checkbox"); |
|
my $noaction = &mt("You need to select an action to take for the user(s) you have selected"); |
|
my $singconfirm = &mt(' for a single user?'); |
|
my $multconfirm = &mt(' for multiple users?'); |
|
my $output = <<"ENDJS"; |
|
function verify_action (field) { |
|
var numchecked = 0; |
|
var singconf = '$singconfirm'; |
|
var multconf = '$multconfirm'; |
|
if ($docstart.$formname.elements[field].length > 0) { |
|
for (i=0; i<$docstart.$formname.elements[field].length; i++) { |
|
if ($docstart.$formname.elements[field][i].checked == true) { |
|
numchecked ++; |
|
} |
|
} |
|
} else { |
|
if ($docstart.$formname.elements[field].checked == true) { |
|
numchecked ++; |
|
} |
|
} |
|
if (numchecked == 0) { |
|
alert("$alert"); |
|
return; |
|
} else { |
|
var message = $docstart.$formname.bulkaction[$docstart.$formname.bulkaction.selectedIndex].text; |
|
var choice = $docstart.$formname.bulkaction[$docstart.$formname.bulkaction.selectedIndex].value; |
|
if (choice == '') { |
|
alert("$noaction"); |
|
return; |
|
} else { |
|
if (numchecked == 1) { |
|
message += singconf; |
|
} else { |
|
message += multconf; |
|
} |
|
ENDJS |
|
if ($caller ne 'popup') { |
|
$output .= <<"NEWWIN"; |
|
if (choice == 'chgdates' || choice == 'reenable' || choice == 'activate' || choice == 'chgsec') { |
|
opendatebrowser(document.$formname,'$formname','go'); |
|
return; |
|
|
|
} else { |
|
if (confirm(message)) { |
|
document.$formname.phase.value = 'bulkchange'; |
|
document.$formname.submit(); |
|
return; |
|
} |
|
} |
|
NEWWIN |
|
} else { |
|
$output .= <<"POPUP"; |
|
if (choice == 'chgdates' || choice == 'reenable' || choice == 'activate') { |
|
var datemsg = ''; |
|
if (($docstart.$formname.startdate_month.value == '') && |
|
($docstart.$formname.startdate_day.value == '') && |
|
($docstart.$formname.startdate_year.value == '')) { |
|
datemsg = "\\n$lt{'acwi'},\\n$lt{'asyo'}.\\n"; |
|
} |
|
if (($docstart.$formname.enddate_month.value == '') && |
|
($docstart.$formname.enddate_day.value == '') && |
|
($docstart.$formname.enddate_year.value == '')) { |
|
datemsg += "\\n$lt{'accw'},\\n$lt{'asyd'}.\\n"; |
|
} |
|
if (datemsg != '') { |
|
message += "\\n"+datemsg; |
|
} |
|
} |
|
if (choice == 'chgsec') { |
|
var rolefilter = $docstart.$formname.showrole.options[$docstart.$formname.showrole.selectedIndex].value; |
|
var retained = $docstart.$formname.retainsec.value; |
|
var secshow = $docstart.$formname.newsecs.value; |
|
if (secshow == '') { |
|
if (rolefilter == 'st' || retained == 0 || retained == "") { |
|
message += "\\n\\n$lt{'sewi'},\\n$lt{'ayes'},\\n$lt{'oryo'}.\\n"; |
|
} else { |
|
message += "\\n\\n$lt{'arol'}\\n$lt{'ayes'},\\n$lt{'oryo'}.\\n"; |
|
} |
|
} else { |
|
if (rolefilter == 'st' || retained == 0 || retained == "") { |
|
message += "\\n\\n$lt{'swbs'} "+secshow+".\\n"; |
|
} else { |
|
message += "\\n\\n$lt{'rwba'} "+secshow+".\\n"; |
|
} |
|
} |
|
} |
|
if (confirm(message)) { |
|
$docstart.$formname.phase.value = 'bulkchange'; |
|
$docstart.$formname.submit(); |
|
window.close(); |
|
} |
|
POPUP |
|
} |
|
$output .= ' |
|
} |
|
} |
|
} |
|
'; |
|
return $output; |
|
} |
|
|
sub print_username_link { |
sub print_username_link { |
my ($mode,$in) = @_; |
my ($mode,$in) = @_; |
my $output; |
my $output; |
Line 2611 sub role_type_names {
|
Line 2692 sub role_type_names {
|
} |
} |
|
|
sub select_actions { |
sub select_actions { |
my ($context,$setting,$statusmode) = @_; |
my ($context,$setting,$statusmode,$formname) = @_; |
my %lt = &Apache::lonlocal::texthash( |
my %lt = &Apache::lonlocal::texthash( |
revoke => "Revoke user roles", |
revoke => "Revoke user roles", |
delete => "Delete user roles", |
delete => "Delete user roles", |
Line 2672 sub select_actions {
|
Line 2753 sub select_actions {
|
} |
} |
} |
} |
if ($options) { |
if ($options) { |
$output = '<select name="bulkaction" onchange="javascript:opendatebrowser(this.form,'."'studentform','change'".')" />'."\n". |
$output = '<select name="bulkaction">'."\n". |
'<option value="" selected="selected">'. |
'<option value="" selected="selected">'. |
&mt('Please select').'</option>'."\n".$options."\n".'</select>'; |
&mt('Please select').'</option>'."\n".$options."\n".'</select>'; |
if ($choices{'dates'}) { |
if ($choices{'dates'}) { |
Line 2688 sub select_actions {
|
Line 2769 sub select_actions {
|
'<input type="hidden" name="enddate_year" value="" />'."\n". |
'<input type="hidden" name="enddate_year" value="" />'."\n". |
'<input type="hidden" name="enddate_hour" value="" />'."\n". |
'<input type="hidden" name="enddate_hour" value="" />'."\n". |
'<input type="hidden" name="enddate_minute" value="" />'."\n". |
'<input type="hidden" name="enddate_minute" value="" />'."\n". |
'<input type="hidden" name="enddate_second" value="" />'."\n"; |
'<input type="hidden" name="enddate_second" value="" />'."\n". |
|
'<input type="hidden" name="no_end_date" value="" />'."\n"; |
if ($context eq 'course') { |
if ($context eq 'course') { |
$output .= '<input type="hidden" name="makedatesdefault" value="" />'."\n"; |
$output .= '<input type="hidden" name="makedatesdefault" value="" />'."\n"; |
} |
} |
Line 2714 sub date_section_javascript {
|
Line 2796 sub date_section_javascript {
|
$output .= <<"ENDONE"; |
$output .= <<"ENDONE"; |
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; |
if (bulkaction == 'revoke' || bulkaction == 'delete' || bulkaction == '') { |
|
if (calledby == 'go') { |
|
if (bulkaction == 'revoke') { |
|
alert("$nopopup{'revoke'}"); |
|
} |
|
if (bulkaction == 'delete') { |
|
alert("$nopopup{'delete'}"); |
|
} |
|
if (bulkaction == '') { |
|
alert("$nopopup{'none'}"); |
|
} |
|
} |
|
return; |
|
} |
|
var url = '/adm/createuser?'; |
var url = '/adm/createuser?'; |
var type = ''; |
var type = ''; |
var showrole = callingform.showrole.options[callingform.showrole.selectedIndex].value; |
var showrole = callingform.showrole.options[callingform.showrole.selectedIndex].value; |
Line 2781 END
|
Line 2849 END
|
setSections(formname); |
setSections(formname); |
if (seccheck == 'ok') { |
if (seccheck == 'ok') { |
opener.document.$callingform.newsecs.value = formname.sections.value; |
opener.document.$callingform.newsecs.value = formname.sections.value; |
window.close(); |
|
} |
} |
return; |
|
END |
END |
} else { |
} else { |
if ($context eq 'course') { |
if ($context eq 'course') { |
Line 2817 END
|
Line 2883 END
|
opener.document.$callingform.enddate_hour.value = formname.enddate_hour.options[formname.enddate_hour.selectedIndex].value; |
opener.document.$callingform.enddate_hour.value = formname.enddate_hour.options[formname.enddate_hour.selectedIndex].value; |
opener.document.$callingform.enddate_minute.value = formname.enddate_minute.value; |
opener.document.$callingform.enddate_minute.value = formname.enddate_minute.value; |
opener.document.$callingform.enddate_second.value = formname.enddate_second.value; |
opener.document.$callingform.enddate_second.value = formname.enddate_second.value; |
window.close(); |
if (formname.no_end_date.checked) { |
|
opener.document.$callingform.no_end_date.value = '1'; |
|
} else { |
|
opener.document.$callingform.no_end_date.value = '0'; |
|
} |
END |
END |
} |
} |
$output .= ' |
my $verify_action_js = &bulkaction_javascript($callingform,'popup'); |
|
$output .= <<"ENDJS"; |
|
verify_action('actionlist'); |
} |
} |
|
|
|
$verify_action_js |
|
|
</script> |
</script> |
'; |
ENDJS |
my %lt = &Apache::lonlocal::texthash ( |
my %lt = &Apache::lonlocal::texthash ( |
chac => 'Access dates to apply for selected users', |
chac => 'Access dates to apply for selected users', |
chse => 'Changes in section affiliation to apply to selected users', |
chse => 'Changes in section affiliation to apply to selected users', |
Line 2880 END
|
Line 2955 END
|
$output .= $info.$secbox; |
$output .= $info.$secbox; |
} |
} |
$output .= '<p>'. |
$output .= '<p>'. |
&mt('Use "Save" to update the main window with your selections.').'<br /><br />'. |
'<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 2894 sub section_picker {
|
Line 2968 sub section_picker {
|
if ($mode eq 'upload') { |
if ($mode eq 'upload') { |
my ($options,$cb_script,$coursepick) = |
my ($options,$cb_script,$coursepick) = |
&default_role_selector($context,1); |
&default_role_selector($context,1); |
$secbox .= &Apache::lonhtmlcommon::row_title('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"; |
Line 3295 sub upfile_drop_add {
|
Line 3369 sub upfile_drop_add {
|
# |
# |
# Store the field choices away |
# Store the field choices away |
foreach my $field (qw/username names |
foreach my $field (qw/username names |
fname mname lname gen id sec ipwd email role/) { |
fname mname lname gen id sec ipwd email role domain/) { |
$env{'form.'.$field.'_choice'}=$fields{$field}; |
$env{'form.'.$field.'_choice'}=$fields{$field}; |
} |
} |
&Apache::loncommon::store_course_settings('enrollment_upload', |
&Apache::loncommon::store_course_settings('enrollment_upload', |
Line 3309 sub upfile_drop_add {
|
Line 3383 sub upfile_drop_add {
|
'sec_choice' => 'scalar', |
'sec_choice' => 'scalar', |
'ipwd_choice' => 'scalar', |
'ipwd_choice' => 'scalar', |
'email_choice' => 'scalar', |
'email_choice' => 'scalar', |
'role_choice' => 'scalar' }); |
'role_choice' => 'scalar', |
|
'domain_choice' => 'scalar'}); |
# |
# |
my ($startdate,$enddate) = &get_dates_from_form(); |
my ($startdate,$enddate) = &get_dates_from_form(); |
if ($env{'form.makedatesdefault'}) { |
if ($env{'form.makedatesdefault'}) { |
$r->print(&make_dates_default($startdate,$enddate,$context)); |
$r->print(&make_dates_default($startdate,$enddate,$context)); |
} |
} |
# Determine domain and desired host (home server) |
# Determine domain and desired host (home server) |
my $domain=$env{'request.role.domain'}; |
my $defdom=$env{'request.role.domain'}; |
|
my $domain; |
|
if ($env{'form.defaultdomain'} ne '') { |
|
$domain = $env{'form.defaultdomain'}; |
|
} else { |
|
$domain = $defdom; |
|
} |
my $desiredhost = $env{'form.lcserver'}; |
my $desiredhost = $env{'form.lcserver'}; |
if (lc($desiredhost) eq 'default') { |
if (lc($desiredhost) eq 'default') { |
$desiredhost = undef; |
$desiredhost = undef; |
} else { |
} else { |
my %home_servers = &Apache::lonnet::get_servers($domain,'library'); |
my %home_servers = &Apache::lonnet::get_servers($defdom,'library'); |
if (! exists($home_servers{$desiredhost})) { |
if (! exists($home_servers{$desiredhost})) { |
$r->print('<span class="LC_error">'.&mt('Error'). |
$r->print('<span class="LC_error">'.&mt('Error'). |
&mt('Invalid home server specified').'</span>'); |
&mt('Invalid home server specified').'</span>'); |
Line 3512 sub upfile_drop_add {
|
Line 3593 sub upfile_drop_add {
|
'</b>'); |
'</b>'); |
next; |
next; |
} else { |
} else { |
|
my $baddom = 0; |
|
if ($entries{$fields{'dom'}} |
|
ne &LONCAPA::clean_domain($entries{$fields{'domain'}})) { |
|
$baddom = 1; |
|
} else { |
|
if (&Apache::lonnet::domain($entries{$fields{'domain'}}) eq '') { |
|
$baddom = 1; |
|
} |
|
} |
|
if ($baddom) { |
|
$r->print('<br />'. '<b>'.$entries{$fields{'domain'}}. |
|
'</b>: '.&mt('Unacceptable domain for user [_2] [_3] [_4] [_5]',$fname,$mname,$lname,$gen).'</b>'); |
|
next; |
|
} |
my $username = $entries{$fields{'username'}}; |
my $username = $entries{$fields{'username'}}; |
|
my $userdomain = $entries{$fields{'domain'}}; |
|
if ($userdomain eq '') { |
|
$userdomain = $domain; |
|
} |
if (defined($fields{'sec'})) { |
if (defined($fields{'sec'})) { |
if (defined($entries{$fields{'sec'}})) { |
if (defined($entries{$fields{'sec'}})) { |
$entries{$fields{'sec'}} =~ s/\W//g; |
$entries{$fields{'sec'}} =~ s/\W//g; |
Line 3530 sub upfile_drop_add {
|
Line 3629 sub upfile_drop_add {
|
} |
} |
if ($env{'request.course.sec'} ne '') { |
if ($env{'request.course.sec'} ne '') { |
@secs = ($env{'request.course.sec'}); |
@secs = ($env{'request.course.sec'}); |
if (ref($userlist{$username.':'.$domain}) eq 'ARRAY') { |
if (ref($userlist{$username.':'.$userdomain}) eq 'ARRAY') { |
my $currsec = $userlist{$username.':'.$domain}[$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('<b>[_1]</b>: Unable to enroll user [_2] [_3] [_4] [_5] in a section named "[_6]".',$username,$fname,$mname,$lname,$gen,$secs[0]).'<br />'); |
if ($currsec eq '') { |
if ($currsec eq '') { |
Line 3593 sub upfile_drop_add {
|
Line 3692 sub upfile_drop_add {
|
$role = $defaultrole; |
$role = $defaultrole; |
} |
} |
# Clean up whitespace |
# Clean up whitespace |
foreach (\$domain,\$username,\$id,\$fname,\$mname, |
foreach (\$id,\$fname,\$mname,\$lname,\$gen) { |
\$lname,\$gen) { |
|
$$_ =~ s/(\s+$|^\s+)//g; |
$$_ =~ s/(\s+$|^\s+)//g; |
} |
} |
# check against rules |
# check against rules |
my $checkid = 0; |
my $checkid = 0; |
my $newuser = 0; |
my $newuser = 0; |
my (%rulematch,%inst_results,%idinst_results); |
my (%rulematch,%inst_results,%idinst_results); |
my $uhome=&Apache::lonnet::homeserver($username,$domain); |
my $uhome=&Apache::lonnet::homeserver($username,$userdomain); |
if ($uhome eq 'no_host') { |
if ($uhome eq 'no_host') { |
|
next if ($userdomain ne $domain); |
$checkid = 1; |
$checkid = 1; |
$newuser = 1; |
$newuser = 1; |
my $checkhash; |
my $checkhash; |
Line 3618 sub upfile_drop_add {
|
Line 3717 sub upfile_drop_add {
|
} |
} |
} else { |
} else { |
if ($context eq 'course' || $context eq 'author') { |
if ($context eq 'course' || $context eq 'author') { |
if ($role eq '') { |
if ($userdomain eq $domain ) { |
my @checkroles; |
if ($role eq '') { |
foreach my $role (@poss_roles) { |
my @checkroles; |
my $endkey; |
foreach my $role (@poss_roles) { |
if ($role ne 'st') { |
my $endkey; |
$endkey = ':'.$role; |
if ($role ne 'st') { |
} |
$endkey = ':'.$role; |
if (exists($userlist{$username.':'.$domain.$endkey})) { |
} |
if (!grep(/^\Q$role\E$/,@checkroles)) { |
if (exists($userlist{$username.':'.$userdomain.$endkey})) { |
push(@checkroles,$role); |
if (!grep(/^\Q$role\E$/,@checkroles)) { |
|
push(@checkroles,$role); |
|
} |
} |
} |
} |
} |
|
if (@checkroles > 0) { |
|
%canmodify = &can_modify_userinfo($context,$domain,\@userinfo,\@checkroles); |
|
} |
|
} elsif (ref($modifiable_fields{$role}) eq 'HASH') { |
|
%canmodify = %{$modifiable_fields{$role}}; |
} |
} |
if (@checkroles > 0) { |
|
%canmodify = &can_modify_userinfo($context,$domain,\@userinfo,\@checkroles); |
|
} |
|
} elsif (ref($modifiable_fields{$role}) eq 'HASH') { |
|
%canmodify = %{$modifiable_fields{$role}}; |
|
} |
} |
} |
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<@userinfo; $i++) { |
if (${$newinfo[$i]} ne '') { |
if (${$newinfo[$i]} ne '') { |
if (!$canmodify{$userinfo[$i]}) { |
if (!$canmodify{$userinfo[$i]}) { |
${$newinfo[$i]} = ''; |
${$newinfo[$i]} = ''; |
} |
} |
} |
} |
} |
} |
} |
} |
} |
if ($id ne '') { |
if ($id ne '') { |
if (!$newuser) { |
if (!$newuser) { |
my %idhash = &Apache::lonnet::idrget($domain,($username)); |
my %idhash = &Apache::lonnet::idrget($userdomain,($username)); |
if ($idhash{$username} ne $id) { |
if ($idhash{$username} ne $id) { |
$checkid = 1; |
$checkid = 1; |
} |
} |
Line 3657 sub upfile_drop_add {
|
Line 3758 sub upfile_drop_add {
|
if ($checkid) { |
if ($checkid) { |
my $checkhash; |
my $checkhash; |
my $checks = { 'id' => 1 }; |
my $checks = { 'id' => 1 }; |
$checkhash->{$username.':'.$domain} = { 'newuser' => $newuser, |
$checkhash->{$username.':'.$userdomain} = { 'newuser' => $newuser, |
'id' => $id }; |
'id' => $id }; |
&Apache::loncommon::user_rule_check($checkhash,$checks, |
&Apache::loncommon::user_rule_check($checkhash,$checks, |
\%alerts,\%rulematch,\%idinst_results,\%curr_rules, |
\%alerts,\%rulematch,\%idinst_results,\%curr_rules, |
\%got_rules); |
\%got_rules); |
if (ref($alerts{'id'}) eq 'HASH') { |
if (ref($alerts{'id'}) eq 'HASH') { |
if (ref($alerts{'id'}{$domain}) eq 'HASH') { |
if (ref($alerts{'id'}{$userdomain}) eq 'HASH') { |
next if ($alerts{'id'}{$domain}{$id}); |
next if ($alerts{'id'}{$userdomain}{$id}); |
} |
} |
} |
} |
} |
} |
Line 3679 sub upfile_drop_add {
|
Line 3780 sub upfile_drop_add {
|
if (@secs > 0) { |
if (@secs > 0) { |
$sec = $secs[0]; |
$sec = $secs[0]; |
} |
} |
&modifystudent($domain,$username,$cid,$sec, |
&modifystudent($userdomain,$username,$cid,$sec, |
$desiredhost,$context); |
$desiredhost,$context); |
$roleresult = |
$roleresult = |
&Apache::lonnet::modifystudent |
&Apache::lonnet::modifystudent |
($domain,$username,$id,$amode,$password, |
($userdomain,$username,$id,$amode,$password, |
$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, |
Line 3702 sub upfile_drop_add {
|
Line 3803 sub upfile_drop_add {
|
foreach my $sec (@secs) { |
foreach my $sec (@secs) { |
($userres{$sec},$authres{$sec},$roleres{$sec},$idres{$sec}) = |
($userres{$sec},$authres{$sec},$roleres{$sec},$idres{$sec}) = |
&modifyuserrole($context,$setting, |
&modifyuserrole($context,$setting, |
$changeauth,$cid,$domain,$username, |
$changeauth,$cid,$userdomain,$username, |
$id,$amode,$password,$fname, |
$id,$amode,$password,$fname, |
$mname,$lname,$gen,$sec, |
$mname,$lname,$gen,$sec, |
$env{'form.forceid'},$desiredhost, |
$env{'form.forceid'},$desiredhost, |
Line 3718 sub upfile_drop_add {
|
Line 3819 sub upfile_drop_add {
|
if (!$multiple) { |
if (!$multiple) { |
($userresult,$authresult,$roleresult,$idresult) = |
($userresult,$authresult,$roleresult,$idresult) = |
&modifyuserrole($context,$setting, |
&modifyuserrole($context,$setting, |
$changeauth,$cid,$domain,$username, |
$changeauth,$cid,$userdomain,$username, |
$id,$amode,$password,$fname, |
$id,$amode,$password,$fname, |
$mname,$lname,$gen,$singlesec, |
$mname,$lname,$gen,$singlesec, |
$env{'form.forceid'},$desiredhost, |
$env{'form.forceid'},$desiredhost, |
Line 3730 sub upfile_drop_add {
|
Line 3831 sub upfile_drop_add {
|
$flushc = |
$flushc = |
&user_change_result($r,$userres{$sec},$authres{$sec}, |
&user_change_result($r,$userres{$sec},$authres{$sec}, |
$roleres{$sec},$idres{$sec},\%counts,$flushc, |
$roleres{$sec},$idres{$sec},\%counts,$flushc, |
$username,\%userchg); |
$username,$userdomain,\%userchg); |
|
|
} |
} |
} else { |
} else { |
$flushc = |
$flushc = |
&user_change_result($r,$userresult,$authresult, |
&user_change_result($r,$userresult,$authresult, |
$roleresult,$idresult,\%counts,$flushc, |
$roleresult,$idresult,\%counts,$flushc, |
$username,\%userchg); |
$username,$userdomain,\%userchg); |
} |
} |
} else { |
} else { |
if ($context eq 'course') { |
if ($context eq 'course') { |
Line 3847 sub print_namespacing_alerts {
|
Line 3948 sub print_namespacing_alerts {
|
|
|
sub user_change_result { |
sub user_change_result { |
my ($r,$userresult,$authresult,$roleresult,$idresult,$counts,$flushc, |
my ($r,$userresult,$authresult,$roleresult,$idresult,$counts,$flushc, |
$username,$userchg) = @_; |
$username,$userdomain,$userchg) = @_; |
my $okresult = 0; |
my $okresult = 0; |
if ($userresult ne 'ok') { |
if ($userresult ne 'ok') { |
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,$error)); |
&mt('<b>[_1]</b>: Unable to add/modify: [_2]',$username.':'.$userdomain,$error)); |
} |
} |
} else { |
} else { |
$counts->{'user'} ++; |
$counts->{'user'} ++; |
Line 3863 sub user_change_result {
|
Line 3964 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,$error)); |
&mt('<b>[_1]</b>: Unable to modify authentication: [_2]',$username.':'.$userdomain,$error)); |
} |
} |
} else { |
} else { |
$counts->{'auth'} ++; |
$counts->{'auth'} ++; |
Line 3873 sub user_change_result {
|
Line 3974 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,$error)); |
&mt('<b>[_1]</b>: Unable to add role: [_2]',$username.':'.$userdomain,$error)); |
} |
} |
} else { |
} else { |
$counts->{'role'} ++; |
$counts->{'role'} ++; |
Line 3881 sub user_change_result {
|
Line 3982 sub user_change_result {
|
} |
} |
if ($okresult) { |
if ($okresult) { |
$flushc++; |
$flushc++; |
$userchg->{$username}=1; |
$userchg->{$username.':'.$userdomain}=1; |
$r->print('. '); |
$r->print('. '); |
if ($flushc>15) { |
if ($flushc>15) { |
$r->rflush; |
$r->rflush; |
Line 4472 sub can_modify_userinfo {
|
Line 4573 sub can_modify_userinfo {
|
if (ref($userroles) eq 'ARRAY') { |
if (ref($userroles) eq 'ARRAY') { |
foreach my $role (@{$userroles}) { |
foreach my $role (@{$userroles}) { |
my $testrole; |
my $testrole; |
if ($role =~ /^cr\//) { |
if ($context eq 'selfcreate') { |
$testrole = 'cr'; |
|
} else { |
|
$testrole = $role; |
$testrole = $role; |
|
} else { |
|
if ($role =~ /^cr\//) { |
|
$testrole = 'cr'; |
|
} else { |
|
$testrole = $role; |
|
} |
} |
} |
if (ref($domconfig{'usermodification'}{$context}{$testrole}) eq 'HASH') { |
if (ref($domconfig{'usermodification'}{$context}{$testrole}) eq 'HASH') { |
if ($domconfig{'usermodification'}{$context}{$testrole}{$field}) { |
if ($domconfig{'usermodification'}{$context}{$testrole}{$field}) { |