version 1.160.6.86, 2017/10/17 14:07:23
|
version 1.160.6.96, 2019/08/03 16:17:39
|
Line 265 sub handler {
|
Line 265 sub handler {
|
{col1 => 'Internal Authentication', |
{col1 => 'Internal Authentication', |
col2 => 'Value'}, |
col2 => 'Value'}, |
{col1 => 'Institutional user types', |
{col1 => 'Institutional user types', |
col2 => 'Assignable to e-mail usernames'}], |
col2 => 'Name displayed'}], |
print => \&print_defaults, |
print => \&print_defaults, |
modify => \&modify_defaults, |
modify => \&modify_defaults, |
}, |
}, |
Line 347 sub handler {
|
Line 347 sub handler {
|
col2 => 'Enabled?'}, |
col2 => 'Enabled?'}, |
{col1 => 'Institutional user type (login/SSO self-creation)', |
{col1 => 'Institutional user type (login/SSO self-creation)', |
col2 => 'Information user can enter'}, |
col2 => 'Information user can enter'}, |
{col1 => 'Self-creation with e-mail as username', |
{col1 => 'Self-creation with e-mail verification', |
col2 => 'Settings'}], |
col2 => 'Settings'}], |
print => \&print_selfcreation, |
print => \&print_selfcreation, |
modify => \&modify_selfcreation, |
modify => \&modify_selfcreation, |
Line 528 $javascript_validations
|
Line 528 $javascript_validations
|
$coursebrowserjs |
$coursebrowserjs |
END |
END |
} |
} |
|
if (grep(/^selfcreation$/,@actions)) { |
|
$js .= &selfcreate_javascript(); |
|
} |
if (grep(/^contacts$/,@actions)) { |
if (grep(/^contacts$/,@actions)) { |
$js .= &contacts_javascript(); |
$js .= &contacts_javascript(); |
} |
} |
Line 624 sub process_changes {
|
Line 627 sub process_changes {
|
} elsif ($action eq 'usercreation') { |
} elsif ($action eq 'usercreation') { |
$output = &modify_usercreation($dom,%domconfig); |
$output = &modify_usercreation($dom,%domconfig); |
} elsif ($action eq 'selfcreation') { |
} elsif ($action eq 'selfcreation') { |
$output = &modify_selfcreation($dom,%domconfig); |
$output = &modify_selfcreation($dom,$lastactref,%domconfig); |
} elsif ($action eq 'usermodification') { |
} elsif ($action eq 'usermodification') { |
$output = &modify_usermodification($dom,%domconfig); |
$output = &modify_usermodification($dom,%domconfig); |
} elsif ($action eq 'contacts') { |
} elsif ($action eq 'contacts') { |
Line 1278 sub print_login {
|
Line 1281 sub print_login {
|
} else { |
} else { |
$datatable .= '<input type="file" name="loginheadtag_'.$lonhost.'" />'; |
$datatable .= '<input type="file" name="loginheadtag_'.$lonhost.'" />'; |
} |
} |
$datatable .= '</td><td><input type="textbox" name="loginheadtagexempt_'.$lonhost.'" value="'.$exempt.'" /></td></tr>'; |
$datatable .= '</td><td><input type="text" name="loginheadtagexempt_'.$lonhost.'" value="'.$exempt.'" /></td></tr>'; |
} |
} |
$datatable .= '</table></td></tr>'; |
$datatable .= '</table></td></tr>'; |
} |
} |
Line 1438 sub display_color_options {
|
Line 1441 sub display_color_options {
|
my $datatable = '<tr'.$css_class.'>'. |
my $datatable = '<tr'.$css_class.'>'. |
'<td>'.$choices->{'font'}.'</td>'; |
'<td>'.$choices->{'font'}.'</td>'; |
if (!$is_custom->{'font'}) { |
if (!$is_custom->{'font'}) { |
$datatable .= '<td>'.&mt('Default in use:').' <span id="css_default_'.$role.'_font" style="color: '.$defaults->{'font'}.';">'.$defaults->{'font'}.'</span></td>'; |
$datatable .= '<td>'.&mt('Default in use:').' <span class="css_default_'.$role.'_font" style="color: '.$defaults->{'font'}.';">'.$defaults->{'font'}.'</span></td>'; |
} else { |
} else { |
$datatable .= '<td> </td>'; |
$datatable .= '<td> </td>'; |
} |
} |
Line 1447 sub display_color_options {
|
Line 1450 sub display_color_options {
|
$datatable .= '<td><span class="LC_nobreak">'. |
$datatable .= '<td><span class="LC_nobreak">'. |
'<input type="text" class="colorchooser" size="10" name="'.$role.'_font"'. |
'<input type="text" class="colorchooser" size="10" name="'.$role.'_font"'. |
' value="'.$current_color.'" /> '. |
' value="'.$current_color.'" /> '. |
' </td></tr>'; |
' </span></td></tr>'; |
unless ($role eq 'login') { |
unless ($role eq 'login') { |
$datatable .= '<tr'.$css_class.'>'. |
$datatable .= '<tr'.$css_class.'>'. |
'<td>'.$choices->{'fontmenu'}.'</td>'; |
'<td>'.$choices->{'fontmenu'}.'</td>'; |
if (!$is_custom->{'fontmenu'}) { |
if (!$is_custom->{'fontmenu'}) { |
$datatable .= '<td>'.&mt('Default in use:').' <span id="css_default_'.$role.'_font" style="color: '.$defaults->{'fontmenu'}.';">'.$defaults->{'fontmenu'}.'</span></td>'; |
$datatable .= '<td>'.&mt('Default in use:').' <span class="css_default_'.$role.'_font" style="color: '.$defaults->{'fontmenu'}.';">'.$defaults->{'fontmenu'}.'</span></td>'; |
} else { |
} else { |
$datatable .= '<td> </td>'; |
$datatable .= '<td> </td>'; |
} |
} |
Line 1462 sub display_color_options {
|
Line 1465 sub display_color_options {
|
'<input class="colorchooser" type="text" size="10" name="' |
'<input class="colorchooser" type="text" size="10" name="' |
.$role.'_fontmenu"'. |
.$role.'_fontmenu"'. |
' value="'.$current_color.'" /> '. |
' value="'.$current_color.'" /> '. |
' </td></tr>'; |
' </span></td></tr>'; |
} |
} |
my $switchserver = &check_switchserver($dom,$confname); |
my $switchserver = &check_switchserver($dom,$confname); |
foreach my $img (@{$images}) { |
foreach my $img (@{$images}) { |
Line 1521 sub display_color_options {
|
Line 1524 sub display_color_options {
|
if ($fullwidth ne '' && $fullheight ne '') { |
if ($fullwidth ne '' && $fullheight ne '') { |
if ($fullwidth > $width && $fullheight > $height) { |
if ($fullwidth > $width && $fullheight > $height) { |
my $size = $width.'x'.$height; |
my $size = $width.'x'.$height; |
system("convert -sample $size $input $output"); |
my @args = ('convert','-sample',$size,$input,$output); |
|
system({$args[0]} @args); |
$showfile = "/$imgdir/tn-".$filename; |
$showfile = "/$imgdir/tn-".$filename; |
} |
} |
} |
} |
Line 1579 sub display_color_options {
|
Line 1583 sub display_color_options {
|
my $bgs_def; |
my $bgs_def; |
foreach my $item (@{$bgs}) { |
foreach my $item (@{$bgs}) { |
if (!$is_custom->{$item}) { |
if (!$is_custom->{$item}) { |
$bgs_def .= '<td><span class="LC_nobreak">'.$choices->{$item}.'</span> <span id="css_default_'.$role.'_'.$item.'" style="background-color: '.$defaults->{'bgs'}{$item}.';"> </span><br />'.$defaults->{'bgs'}{$item}.'</td>'; |
$bgs_def .= '<td><span class="LC_nobreak">'.$choices->{$item}.'</span> <span class="css_default_'.$role.'_'.$item.'" style="background-color: '.$defaults->{'bgs'}{$item}.';"> </span><br />'.$defaults->{'bgs'}{$item}.'</td>'; |
} |
} |
} |
} |
if ($bgs_def) { |
if ($bgs_def) { |
Line 1607 sub display_color_options {
|
Line 1611 sub display_color_options {
|
my $links_def; |
my $links_def; |
foreach my $item (@{$links}) { |
foreach my $item (@{$links}) { |
if (!$is_custom->{$item}) { |
if (!$is_custom->{$item}) { |
$links_def .= '<td>'.$choices->{$item}.'<br /><span id="css_default_'.$role.'_'.$item.'" style="color: '.$defaults->{'links'}{$item}.';">'.$defaults->{'links'}{$item}.'</span></td>'; |
$links_def .= '<td>'.$choices->{$item}.'<br /><span class="css_default_'.$role.'_'.$item.'" style="color: '.$defaults->{'links'}{$item}.';">'.$defaults->{'links'}{$item}.'</span></td>'; |
} |
} |
} |
} |
if ($links_def) { |
if ($links_def) { |
Line 1693 sub image_changes {
|
Line 1697 sub image_changes {
|
my ($is_custom,$alt_text,$img_import,$showfile,$fullsize,$role,$img,$imgfile,$logincolors) = @_; |
my ($is_custom,$alt_text,$img_import,$showfile,$fullsize,$role,$img,$imgfile,$logincolors) = @_; |
my $output; |
my $output; |
if ($img eq 'login') { |
if ($img eq 'login') { |
# suppress image for Log-in header |
$output = '</td><td>'.$logincolors; # suppress image for Log-in header |
} elsif (!$is_custom) { |
} elsif (!$is_custom) { |
if ($img ne 'domlogo') { |
if ($img ne 'domlogo') { |
$output .= &mt('Default image:').'<br />'; |
$output = &mt('Default image:').'<br />'; |
} else { |
} else { |
$output .= &mt('Default in use:').'<br />'; |
$output = &mt('Default in use:').'<br />'; |
} |
} |
} |
} |
if ($img eq 'login') { # suppress image for Log-in header |
if ($img ne 'login') { |
$output .= '<td>'.$logincolors; |
|
} else { |
|
if ($img_import) { |
if ($img_import) { |
$output .= '<input type="hidden" name="'.$role.'_import_'.$img.'" value="'.$imgfile.'" />'; |
$output .= '<input type="hidden" name="'.$role.'_import_'.$img.'" value="'.$imgfile.'" />'; |
} |
} |
Line 2147 sub print_quotas {
|
Line 2149 sub print_quotas {
|
} |
} |
|
|
sub print_requestmail { |
sub print_requestmail { |
my ($dom,$action,$settings,$rowtotal) = @_; |
my ($dom,$action,$settings,$rowtotal,$customcss,$rowstyle) = @_; |
my ($now,$datatable,%currapp); |
my ($now,$datatable,%currapp); |
$now = time; |
$now = time; |
if (ref($settings) eq 'HASH') { |
if (ref($settings) eq 'HASH') { |
Line 2159 sub print_requestmail {
|
Line 2161 sub print_requestmail {
|
} |
} |
my $numinrow = 2; |
my $numinrow = 2; |
my $css_class; |
my $css_class; |
$css_class = ($$rowtotal%2? ' class="LC_odd_row"':''); |
if ($$rowtotal%2) { |
|
$css_class = 'LC_odd_row'; |
|
} |
|
if ($customcss) { |
|
$css_class .= " $customcss"; |
|
} |
|
$css_class =~ s/^\s+//; |
|
if ($css_class) { |
|
$css_class = ' class="'.$css_class.'"'; |
|
} |
|
if ($rowstyle) { |
|
$css_class .= ' style="'.$rowstyle.'"'; |
|
} |
my $text; |
my $text; |
if ($action eq 'requestcourses') { |
if ($action eq 'requestcourses') { |
$text = &mt('Receive notification of course requests requiring approval'); |
$text = &mt('Receive notification of course requests requiring approval'); |
Line 2314 sub print_textbookcourses {
|
Line 2328 sub print_textbookcourses {
|
$datatable .= '<option value="'.$k.'"'.$selstr.'>'.$vpos.'</option>'; |
$datatable .= '<option value="'.$k.'"'.$selstr.'>'.$vpos.'</option>'; |
} |
} |
$datatable .= '</select> '."\n". |
$datatable .= '</select> '."\n". |
'<input type="checkbox" name="'.$type.'_addbook" value="1" />'.&mt('Add').'</td>'."\n". |
'<input type="checkbox" name="'.$type.'_addbook" value="1" />'.&mt('Add').'</span></td>'."\n". |
'<td colspan="2">'. |
'<td colspan="2">'. |
'<span class="LC_nobreak">'.&mt('Subject:').'<input type="text" size="15" name="'.$type.'_addbook_subject" value="" /></span> '."\n". |
'<span class="LC_nobreak">'.&mt('Subject:').'<input type="text" size="15" name="'.$type.'_addbook_subject" value="" /></span> '."\n". |
(' 'x2). |
(' 'x2). |
Line 2331 sub print_textbookcourses {
|
Line 2345 sub print_textbookcourses {
|
} else { |
} else { |
$datatable .= '<input type="file" name="'.$type.'_addbook_image" value="" />'; |
$datatable .= '<input type="file" name="'.$type.'_addbook_image" value="" />'; |
} |
} |
|
$datatable .= '</span>'."\n"; |
} |
} |
$datatable .= '</span>'."\n". |
$datatable .= '<span class="LC_nobreak">'.&mt('LON-CAPA course:').' '. |
'<span class="LC_nobreak">'.&mt('LON-CAPA course:').' '. |
|
&Apache::loncommon::select_dom_form($env{'request.role.domain'},$type.'_addbook_cdom'). |
&Apache::loncommon::select_dom_form($env{'request.role.domain'},$type.'_addbook_cdom'). |
'<input type="text" size="25" name="'.$type.'_addbook_cnum" value="" />'. |
'<input type="text" size="25" name="'.$type.'_addbook_cnum" value="" />'. |
&Apache::loncommon::selectcourse_link |
&Apache::loncommon::selectcourse_link |
('display',$type.'_addbook_cnum',$type.'_addbook_cdom',undef,undef,undef,'Course'); |
('display',$type.'_addbook_cnum',$type.'_addbook_cdom',undef,undef,undef,'Course'). |
'</span></td>'."\n". |
'</span></td>'."\n". |
'</tr>'."\n"; |
'</tr>'."\n"; |
$itemcount ++; |
$itemcount ++; |
Line 2516 sub print_autoenroll {
|
Line 2530 sub print_autoenroll {
|
'<td>'.&mt('Failsafe for no drops when institutional data missing').'</td>'. |
'<td>'.&mt('Failsafe for no drops when institutional data missing').'</td>'. |
'<td class="LC_right_item"><span class="LC_nobreak">'. |
'<td class="LC_right_item"><span class="LC_nobreak">'. |
'<input type="text" name="autoenroll_failsafe"'. |
'<input type="text" name="autoenroll_failsafe"'. |
' value="'.$failsafe.'" size="4" /></td></tr>'; |
' value="'.$failsafe.'" size="4" /></span></td></tr>'; |
$$rowtotal += 4; |
$$rowtotal += 4; |
return $datatable; |
return $datatable; |
} |
} |
Line 2565 sub print_autoupdate {
|
Line 2579 sub print_autoupdate {
|
my $locknamesettings; |
my $locknamesettings; |
$datatable .= &insttypes_row($settings,$types,$usertypes, |
$datatable .= &insttypes_row($settings,$types,$usertypes, |
$dom,$numinrow,$othertitle, |
$dom,$numinrow,$othertitle, |
'lockablenames'); |
'lockablenames',$rowtotal); |
$$rowtotal ++; |
$$rowtotal ++; |
} else { |
} else { |
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom); |
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom); |
Line 2708 sub print_directorysrch {
|
Line 2722 sub print_directorysrch {
|
if (ref($usertypes) eq 'HASH') { |
if (ref($usertypes) eq 'HASH') { |
if (keys(%{$usertypes}) > 0) { |
if (keys(%{$usertypes}) > 0) { |
$datatable .= &insttypes_row($settings,$types,$usertypes,$dom, |
$datatable .= &insttypes_row($settings,$types,$usertypes,$dom, |
$numinrow,$othertitle,'cansearch'); |
$numinrow,$othertitle,'cansearch', |
|
$rowtotal); |
$cansrchrow = 1; |
$cansrchrow = 1; |
} |
} |
} |
} |
Line 2808 sub print_contacts {
|
Line 2823 sub print_contacts {
|
} |
} |
} elsif ($position eq 'middle') { |
} elsif ($position eq 'middle') { |
@mailings = ('errormail','packagesmail','lonstatusmail','requestsmail', |
@mailings = ('errormail','packagesmail','lonstatusmail','requestsmail', |
'updatesmail','idconflictsmail'); |
'updatesmail','idconflictsmail','hostipmail'); |
foreach my $type (@mailings) { |
foreach my $type (@mailings) { |
$otheremails{$type} = ''; |
$otheremails{$type} = ''; |
} |
} |
Line 2885 sub print_contacts {
|
Line 2900 sub print_contacts {
|
$checked{'requestsmail'}{'adminemail'} = ' checked="checked" '; |
$checked{'requestsmail'}{'adminemail'} = ' checked="checked" '; |
$checked{'updatesmail'}{'adminemail'} = ' checked="checked" '; |
$checked{'updatesmail'}{'adminemail'} = ' checked="checked" '; |
$checked{'idconflictsmail'}{'adminemail'} = ' checked="checked" '; |
$checked{'idconflictsmail'}{'adminemail'} = ' checked="checked" '; |
|
$checked{'hostipmail'}{'adminemail'} = ' checked="checked" '; |
} elsif ($position eq 'bottom') { |
} elsif ($position eq 'bottom') { |
$checked{'helpdeskmail'}{'supportemail'} = ' checked="checked" '; |
$checked{'helpdeskmail'}{'supportemail'} = ' checked="checked" '; |
$checked{'otherdomsmail'}{'supportemail'} = ' checked="checked" '; |
$checked{'otherdomsmail'}{'supportemail'} = ' checked="checked" '; |
Line 2943 sub print_contacts {
|
Line 2959 sub print_contacts {
|
'value="'.$bccemails{$type}.'" /></fieldset>'. |
'value="'.$bccemails{$type}.'" /></fieldset>'. |
'<fieldset><legend>'.&mt('Optional added text').'</legend>'. |
'<fieldset><legend>'.&mt('Optional added text').'</legend>'. |
&mt('Text automatically added to e-mail:').' '. |
&mt('Text automatically added to e-mail:').' '. |
'<input type="text" name="'.$type.'_includestr" value="'.$includestr{$type}.'" /><br >'. |
'<input type="text" name="'.$type.'_includestr" value="'.$includestr{$type}.'" /><br />'. |
'<span class="LC_nobreak">'.&mt('Location:').' '. |
'<span class="LC_nobreak">'.&mt('Location:').' '. |
'<label><input type="radio" name="'.$type.'_includeloc" value="s"'.$locchecked{'s'}.' />'.&mt('in subject').'</label>'. |
'<label><input type="radio" name="'.$type.'_includeloc" value="s"'.$locchecked{'s'}.' />'.&mt('in subject').'</label>'. |
(' 'x2). |
(' 'x2). |
Line 3004 sub print_contacts {
|
Line 3020 sub print_contacts {
|
if ($currfield{$field} eq 'no') { |
if ($currfield{$field} eq 'no') { |
$display = ' style="display:none"'; |
$display = ' style="display:none"'; |
} |
} |
$datatable .= '</td></tr><tr id="help_screenshotsize"'.$display.' />'. |
$datatable .= '</td></tr><tr id="help_screenshotsize"'.$display.'>'. |
'<td>'.&mt('Maximum size for upload (MB)').'</td><td>'. |
'<td>'.&mt('Maximum size for upload (MB)').'</td><td>'. |
'<input type="text" size="5" name="helpform_maxsize" value="'.$maxsize.'" />'; |
'<input type="text" size="5" name="helpform_maxsize" value="'.$maxsize.'" />'; |
} |
} |
Line 3210 sub print_helpsettings {
|
Line 3226 sub print_helpsettings {
|
\@templateroles,$newcust). |
\@templateroles,$newcust). |
&Apache::lonuserutils::custom_role_table('Course',\%full,\%levels, |
&Apache::lonuserutils::custom_role_table('Course',\%full,\%levels, |
\%levelscurrent,$newcust). |
\%levelscurrent,$newcust). |
'</fieldset></td></tr>'; |
'</fieldset>'. |
|
&helpsettings_javascript(\@roles_by_num,$maxnum,$hiddenstr,$formname). |
|
'</td></tr>'; |
$count ++; |
$count ++; |
$$rowtotal += $count; |
$$rowtotal += $count; |
} |
} |
Line 3491 sub print_coursedefaults {
|
Line 3509 sub print_coursedefaults {
|
coursecredits => 'Credits can be specified for courses', |
coursecredits => 'Credits can be specified for courses', |
uselcmath => 'Math preview uses LON-CAPA previewer (javascript) in place of DragMath (Java)', |
uselcmath => 'Math preview uses LON-CAPA previewer (javascript) in place of DragMath (Java)', |
usejsme => 'Molecule editor uses JSME (HTML5) in place of JME (Java)', |
usejsme => 'Molecule editor uses JSME (HTML5) in place of JME (Java)', |
|
texengine => 'Default method to display mathematics', |
postsubmit => 'Disable submit button/keypress following student submission', |
postsubmit => 'Disable submit button/keypress following student submission', |
canclone => "People who may clone a course (besides course's owner and coordinators)", |
canclone => "People who may clone a course (besides course's owner and coordinators)", |
mysqltables => 'Lifetime (s) of "Temporary" MySQL tables (student performance data) on homeserver', |
mysqltables => 'Lifetime (s) of "Temporary" MySQL tables (student performance data) on homeserver', |
Line 3508 sub print_coursedefaults {
|
Line 3527 sub print_coursedefaults {
|
'canclone' => 'none', |
'canclone' => 'none', |
); |
); |
@toggles = ('uselcmath','usejsme'); |
@toggles = ('uselcmath','usejsme'); |
|
my $deftex = $Apache::lonnet::deftex; |
|
if (ref($settings) eq 'HASH') { |
|
if ($settings->{'texengine'}) { |
|
if ($settings->{'texengine'} =~ /^(MathJax|mimetex|tth)$/) { |
|
$deftex = $settings->{'texengine'}; |
|
} |
|
} |
|
} |
|
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
|
my $mathdisp = '<tr'.$css_class.'><td style="vertical-align: top">'. |
|
'<span class="LC_nobreak">'.$choices{'texengine'}. |
|
'</span></td><td class="LC_right_item">'. |
|
'<select name="texengine">'."\n"; |
|
my %texoptions = ( |
|
MathJax => 'MathJax', |
|
mimetex => &mt('Convert to Images'), |
|
tth => &mt('TeX to HTML'), |
|
); |
|
foreach my $renderer ('MathJax','mimetex','tth') { |
|
my $selected = ''; |
|
if ($renderer eq $deftex) { |
|
$selected = ' selected="selected"'; |
|
} |
|
$mathdisp .= '<option value="'.$renderer.'"'.$selected.'>'.$texoptions{$renderer}.'</option>'."\n"; |
|
} |
|
$mathdisp .= '</select></td></tr>'."\n"; |
|
$itemcount ++; |
($datatable,$itemcount) = &radiobutton_prefs($settings,\@toggles,\%defaultchecked, |
($datatable,$itemcount) = &radiobutton_prefs($settings,\@toggles,\%defaultchecked, |
\%choices,$itemcount); |
\%choices,$itemcount); |
|
$datatable = $mathdisp.$datatable; |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$datatable .= |
$datatable .= |
'<tr'.$css_class.'><td valign="top">'. |
'<tr'.$css_class.'><td valign="top">'. |
Line 3927 sub print_validation_rows {
|
Line 3974 sub print_validation_rows {
|
'</label></span> '; |
'</label></span> '; |
} |
} |
} elsif ($item eq 'markup') { |
} elsif ($item eq 'markup') { |
$datatable .= '<textarea name="'.$caller.'_validation_markup" cols="50" rows="5" wrap="soft">'. |
$datatable .= '<textarea name="'.$caller.'_validation_markup" cols="50" rows="5">'. |
$currvalidation{$item}. |
$currvalidation{$item}. |
'</textarea>'; |
'</textarea>'; |
} |
} |
Line 3949 sub print_validation_rows {
|
Line 3996 sub print_validation_rows {
|
my ($numdc,$dctable,$rows) = &active_dc_picker($dom,$numinrow,'radio', |
my ($numdc,$dctable,$rows) = &active_dc_picker($dom,$numinrow,'radio', |
'validationdc',%currhash); |
'validationdc',%currhash); |
my $css_class = $itemcount%2 ? ' class="LC_odd_row"' : ''; |
my $css_class = $itemcount%2 ? ' class="LC_odd_row"' : ''; |
$datatable .= '</td></tr><tr'.$css_class.'><td>'; |
$datatable .= '<tr'.$css_class.'><td>'; |
if ($numdc > 1) { |
if ($numdc > 1) { |
$datatable .= &mt('Course creation processed as: (choose Dom. Coord.)'); |
$datatable .= &mt('Course creation processed as: (choose Dom. Coord.)'); |
} else { |
} else { |
Line 4393 sub print_loadbalancing {
|
Line 4440 sub print_loadbalancing {
|
my $numinrow = 1; |
my $numinrow = 1; |
my $datatable; |
my $datatable; |
my %servers = &Apache::lonnet::internet_dom_servers($dom); |
my %servers = &Apache::lonnet::internet_dom_servers($dom); |
my (%currbalancer,%currtargets,%currrules,%existing); |
my (%currbalancer,%currtargets,%currrules,%existing,%currcookies); |
if (ref($settings) eq 'HASH') { |
if (ref($settings) eq 'HASH') { |
%existing = %{$settings}; |
%existing = %{$settings}; |
} |
} |
if ((keys(%servers) > 1) || (keys(%existing) > 0)) { |
if ((keys(%servers) > 1) || (keys(%existing) > 0)) { |
&get_loadbalancers_config(\%servers,\%existing,\%currbalancer, |
&get_loadbalancers_config(\%servers,\%existing,\%currbalancer, |
\%currtargets,\%currrules); |
\%currtargets,\%currrules,\%currcookies); |
} else { |
} else { |
return; |
return; |
} |
} |
Line 4476 sub print_loadbalancing {
|
Line 4523 sub print_loadbalancing {
|
my %hostherechecked = ( |
my %hostherechecked = ( |
no => ' checked="checked"', |
no => ' checked="checked"', |
); |
); |
|
my %balcookiechecked = ( |
|
no => ' checked="checked"', |
|
); |
foreach my $sparetype (@sparestypes) { |
foreach my $sparetype (@sparestypes) { |
my $targettable; |
my $targettable; |
for (my $i=0; $i<$numspares; $i++) { |
for (my $i=0; $i<$numspares; $i++) { |
Line 4531 sub print_loadbalancing {
|
Line 4581 sub print_loadbalancing {
|
} |
} |
} |
} |
} |
} |
|
if ($currcookies{$lonhost}) { |
|
%balcookiechecked = ( |
|
yes => ' checked="checked"', |
|
); |
|
} |
$datatable .= &mt('Hosting on balancer itself').'<br />'. |
$datatable .= &mt('Hosting on balancer itself').'<br />'. |
'<label><input type="radio" name="loadbalancing_target_'.$balnum.'_hosthere" value="no"'. |
'<label><input type="radio" name="loadbalancing_target_'.$balnum.'_hosthere" value="no"'. |
$hostherechecked{'no'}.' />'.&mt('No').'</label><br />'; |
$hostherechecked{'no'}.' />'.&mt('No').'</label><br />'; |
Line 4539 sub print_loadbalancing {
|
Line 4594 sub print_loadbalancing {
|
'value="'.$sparetype.'"'.$hostherechecked{$sparetype}.' /><i>'.$typetitles{$sparetype}. |
'value="'.$sparetype.'"'.$hostherechecked{$sparetype}.' /><i>'.$typetitles{$sparetype}. |
'</i></label><br />'; |
'</i></label><br />'; |
} |
} |
$datatable .= '</div></td></tr>'. |
$datatable .= &mt('Use balancer cookie').'<br />'. |
|
'<label><input type="radio" name="loadbalancing_cookie_'.$balnum.'" value="1"'. |
|
$balcookiechecked{'yes'}.' />'.&mt('Yes').'</label><br />'. |
|
'<label><input type="radio" name="loadbalancing_cookie_'.$balnum.'" value="0"'. |
|
$balcookiechecked{'no'}.' />'.&mt('No').'</label><br />'. |
|
'</div></td></tr>'. |
&loadbalancing_rules($dom,$intdom,$currrules{$lonhost}, |
&loadbalancing_rules($dom,$intdom,$currrules{$lonhost}, |
$othertitle,$usertypes,$types,\%servers, |
$othertitle,$usertypes,$types,\%servers, |
\%currbalancer,$lonhost, |
\%currbalancer,$lonhost, |
Line 4553 sub print_loadbalancing {
|
Line 4613 sub print_loadbalancing {
|
} |
} |
|
|
sub get_loadbalancers_config { |
sub get_loadbalancers_config { |
my ($servers,$existing,$currbalancer,$currtargets,$currrules) = @_; |
my ($servers,$existing,$currbalancer,$currtargets,$currrules,$currcookies) = @_; |
return unless ((ref($servers) eq 'HASH') && |
return unless ((ref($servers) eq 'HASH') && |
(ref($existing) eq 'HASH') && (ref($currbalancer) eq 'HASH') && |
(ref($existing) eq 'HASH') && (ref($currbalancer) eq 'HASH') && |
(ref($currtargets) eq 'HASH') && (ref($currrules) eq 'HASH')); |
(ref($currtargets) eq 'HASH') && (ref($currrules) eq 'HASH') && |
|
(ref($currcookies) eq 'HASH')); |
if (keys(%{$existing}) > 0) { |
if (keys(%{$existing}) > 0) { |
my $oldlonhost; |
my $oldlonhost; |
foreach my $key (sort(keys(%{$existing}))) { |
foreach my $key (sort(keys(%{$existing}))) { |
Line 4575 sub get_loadbalancers_config {
|
Line 4636 sub get_loadbalancers_config {
|
$currbalancer->{$key} = 1; |
$currbalancer->{$key} = 1; |
$currtargets->{$key} = $existing->{$key}{'targets'}; |
$currtargets->{$key} = $existing->{$key}{'targets'}; |
$currrules->{$key} = $existing->{$key}{'rules'}; |
$currrules->{$key} = $existing->{$key}{'rules'}; |
|
if ($existing->{$key}{'cookie'}) { |
|
$currcookies->{$key} = 1; |
|
} |
} |
} |
} |
} |
} else { |
} else { |
Line 4630 sub loadbalancing_titles {
|
Line 4694 sub loadbalancing_titles {
|
'_LC_ipchange' => &mt('Non-SSO users with IP mismatch'), |
'_LC_ipchange' => &mt('Non-SSO users with IP mismatch'), |
); |
); |
my @alltypes = ('_LC_adv','_LC_author','_LC_internetdom','_LC_external','_LC_ipchangesso','_LC_ipchange'); |
my @alltypes = ('_LC_adv','_LC_author','_LC_internetdom','_LC_external','_LC_ipchangesso','_LC_ipchange'); |
|
my @available; |
if (ref($types) eq 'ARRAY') { |
if (ref($types) eq 'ARRAY') { |
unshift(@alltypes,@{$types},'default'); |
@available = @{$types}; |
|
} |
|
unless (grep(/^default$/,@available)) { |
|
push(@available,'default'); |
} |
} |
|
unshift(@alltypes,@available); |
my %titles; |
my %titles; |
foreach my $type (@alltypes) { |
foreach my $type (@alltypes) { |
if ($type =~ /^_LC_/) { |
if ($type =~ /^_LC_/) { |
Line 4765 sub contact_titles {
|
Line 4834 sub contact_titles {
|
'requestsmail' => 'E-mail from course requests requiring approval', |
'requestsmail' => 'E-mail from course requests requiring approval', |
'updatesmail' => 'E-mail from nightly check of LON-CAPA module integrity/updates', |
'updatesmail' => 'E-mail from nightly check of LON-CAPA module integrity/updates', |
'idconflictsmail' => 'E-mail from bi-nightly check for multiple users sharing same student/employee ID', |
'idconflictsmail' => 'E-mail from bi-nightly check for multiple users sharing same student/employee ID', |
|
'hostipmail' => 'E-mail from nightly check of hostname/IP network changes', |
); |
); |
my %short_titles = &Apache::lonlocal::texthash ( |
my %short_titles = &Apache::lonlocal::texthash ( |
adminemail => 'Admin E-mail address', |
adminemail => 'Admin E-mail address', |
Line 4985 sub print_usercreation {
|
Line 5055 sub print_usercreation {
|
|
|
sub print_selfcreation { |
sub print_selfcreation { |
my ($position,$dom,$settings,$rowtotal) = @_; |
my ($position,$dom,$settings,$rowtotal) = @_; |
my (@selfcreate,$createsettings,$processing,$datatable); |
my (@selfcreate,$createsettings,$processing,$emailoptions,$emailverified, |
|
$emaildomain,$datatable); |
if (ref($settings) eq 'HASH') { |
if (ref($settings) eq 'HASH') { |
if (ref($settings->{'cancreate'}) eq 'HASH') { |
if (ref($settings->{'cancreate'}) eq 'HASH') { |
$createsettings = $settings->{'cancreate'}; |
$createsettings = $settings->{'cancreate'}; |
Line 5002 sub print_selfcreation {
|
Line 5073 sub print_selfcreation {
|
if (ref($createsettings->{'selfcreateprocessing'}) eq 'HASH') { |
if (ref($createsettings->{'selfcreateprocessing'}) eq 'HASH') { |
$processing = $createsettings->{'selfcreateprocessing'}; |
$processing = $createsettings->{'selfcreateprocessing'}; |
} |
} |
|
if (ref($createsettings->{'emailoptions'}) eq 'HASH') { |
|
$emailoptions = $createsettings->{'emailoptions'}; |
|
} |
|
if (ref($createsettings->{'emailverified'}) eq 'HASH') { |
|
$emailverified = $createsettings->{'emailverified'}; |
|
} |
|
if (ref($createsettings->{'emaildomain'}) eq 'HASH') { |
|
$emaildomain = $createsettings->{'emaildomain'}; |
|
} |
} |
} |
} |
} |
} |
} |
my %radiohash; |
my %radiohash; |
my $numinrow = 4; |
my $numinrow = 4; |
map { $radiohash{'cancreate_'.$_} = 1; } @selfcreate; |
map { $radiohash{'cancreate_'.$_} = 1; } @selfcreate; |
|
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom); |
if ($position eq 'top') { |
if ($position eq 'top') { |
my %choices = &Apache::lonlocal::texthash ( |
my %choices = &Apache::lonlocal::texthash ( |
cancreate_login => 'Institutional Login', |
cancreate_login => 'Institutional Login', |
Line 5022 sub print_selfcreation {
|
Line 5103 sub print_selfcreation {
|
($datatable,$itemcount) = &radiobutton_prefs(\%radiohash,\@toggles,\%defaultchecked, |
($datatable,$itemcount) = &radiobutton_prefs(\%radiohash,\@toggles,\%defaultchecked, |
\%choices,$itemcount,$onclick); |
\%choices,$itemcount,$onclick); |
$$rowtotal += $itemcount; |
$$rowtotal += $itemcount; |
|
|
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom); |
|
|
|
if (ref($usertypes) eq 'HASH') { |
if (ref($usertypes) eq 'HASH') { |
if (keys(%{$usertypes}) > 0) { |
if (keys(%{$usertypes}) > 0) { |
$datatable .= &insttypes_row($createsettings,$types,$usertypes, |
$datatable .= &insttypes_row($createsettings,$types,$usertypes, |
$dom,$numinrow,$othertitle, |
$dom,$numinrow,$othertitle, |
'statustocreate',$$rowtotal); |
'statustocreate',$rowtotal); |
$$rowtotal ++; |
$$rowtotal ++; |
} |
} |
} |
} |
Line 5042 sub print_selfcreation {
|
Line 5121 sub print_selfcreation {
|
$datatable .= '<tr'.$css_class.'>'. |
$datatable .= '<tr'.$css_class.'>'. |
'<td class="LC_left_item">'.&mt('Mapping of Shibboleth environment variable names to user data fields (SSO auth)').'</td>'. |
'<td class="LC_left_item">'.&mt('Mapping of Shibboleth environment variable names to user data fields (SSO auth)').'</td>'. |
'<td class="LC_left_item">'."\n". |
'<td class="LC_left_item">'."\n". |
'<table><tr><td>'."\n"; |
'<table>'."\n"; |
for (my $i=0; $i<@fields; $i++) { |
for (my $i=0; $i<@fields; $i++) { |
$rem = $i%($numperrow); |
$rem = $i%($numperrow); |
if ($rem == 0) { |
if ($rem == 0) { |
Line 5074 sub print_selfcreation {
|
Line 5153 sub print_selfcreation {
|
$$rowtotal ++; |
$$rowtotal ++; |
} elsif ($position eq 'middle') { |
} elsif ($position eq 'middle') { |
my %domconf = &Apache::lonnet::get_dom('configuration',['usermodification'],$dom); |
my %domconf = &Apache::lonnet::get_dom('configuration',['usermodification'],$dom); |
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom); |
my @posstypes; |
$usertypes->{'default'} = $othertitle; |
|
if (ref($types) eq 'ARRAY') { |
if (ref($types) eq 'ARRAY') { |
push(@{$types},'default'); |
@posstypes = @{$types}; |
$usertypes->{'default'} = $othertitle; |
} |
foreach my $status (@{$types}) { |
unless (grep(/^default$/,@posstypes)) { |
$datatable .= &modifiable_userdata_row('selfcreate',$status,$domconf{'usermodification'}, |
push(@posstypes,'default'); |
$numinrow,$$rowtotal,$usertypes); |
} |
$$rowtotal ++; |
my %usertypeshash; |
} |
if (ref($usertypes) eq 'HASH') { |
|
%usertypeshash = %{$usertypes}; |
|
} |
|
$usertypeshash{'default'} = $othertitle; |
|
foreach my $status (@posstypes) { |
|
$datatable .= &modifiable_userdata_row('selfcreate',$status,$domconf{'usermodification'}, |
|
$numinrow,$$rowtotal,\%usertypeshash); |
|
$$rowtotal ++; |
} |
} |
} else { |
} else { |
my %choices = &Apache::lonlocal::texthash ( |
my %choices = &Apache::lonlocal::texthash ( |
cancreate_email => 'E-mail address as username', |
'cancreate_email' => 'Non-institutional username (via e-mail verification)', |
); |
); |
my @toggles = sort(keys(%choices)); |
my @toggles = sort(keys(%choices)); |
my %defaultchecked = ( |
my %defaultchecked = ( |
'cancreate_email' => 'off', |
'cancreate_email' => 'off', |
); |
); |
my $itemcount = 0; |
my $customclass = 'LC_selfcreate_email'; |
|
my $classprefix = 'LC_canmodify_emailusername_'; |
|
my $optionsprefix = 'LC_options_emailusername_'; |
my $display = 'none'; |
my $display = 'none'; |
|
my $rowstyle = 'display:none'; |
if (grep(/^\Qemail\E$/,@selfcreate)) { |
if (grep(/^\Qemail\E$/,@selfcreate)) { |
$display = 'block'; |
$display = 'block'; |
|
$rowstyle = 'display:table-row'; |
} |
} |
my $onclick = "toggleDisplay(this.form,'emailoptions');"; |
my $onclick = "toggleRows(this.form,'cancreate_email','selfassign','$customclass','$classprefix','$optionsprefix');"; |
my $additional = '<div id="emailoptions" style="display: '.$display.'">'; |
($datatable,$$rowtotal) = &radiobutton_prefs(\%radiohash,\@toggles,\%defaultchecked, |
|
\%choices,$$rowtotal,$onclick); |
|
$datatable .= &print_requestmail($dom,'selfcreation',$createsettings,$rowtotal,$customclass, |
|
$rowstyle); |
|
$$rowtotal ++; |
|
$datatable .= &captcha_choice('cancreate',$createsettings,$$rowtotal,$customclass, |
|
$rowstyle); |
|
$$rowtotal ++; |
|
my (@ordered,@posstypes,%usertypeshash); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom); |
my $usertypes = {}; |
my ($emailrules,$emailruleorder) = |
my $order = []; |
&Apache::lonnet::inst_userrules($dom,'email'); |
if ((ref($domdefaults{'inststatustypes'}) eq 'HASH') && (ref($domdefaults{'inststatusguest'}) eq 'ARRAY')) { |
my $primary_id = &Apache::lonnet::domain($dom,'primary'); |
$usertypes = $domdefaults{'inststatustypes'}; |
my $intdom = &Apache::lonnet::internet_dom($primary_id); |
$order = $domdefaults{'inststatusguest'}; |
if (ref($types) eq 'ARRAY') { |
} |
@posstypes = @{$types}; |
if (ref($order) eq 'ARRAY') { |
} |
push(@{$order},'default'); |
if (@posstypes) { |
if (@{$order} > 1) { |
unless (grep(/^default$/,@posstypes)) { |
$usertypes->{'default'} = &mt('Other users'); |
push(@posstypes,'default'); |
$additional .= '<table><tr>'; |
} |
foreach my $status (@{$order}) { |
if (ref($usertypes) eq 'HASH') { |
$additional .= '<th>'.$usertypes->{$status}.'</th>'; |
%usertypeshash = %{$usertypes}; |
} |
} |
$additional .= '</tr><tr>'; |
my $currassign; |
foreach my $status (@{$order}) { |
if (ref($domdefaults{'inststatusguest'}) eq 'ARRAY') { |
$additional .= '<td>'.&email_as_username($rowtotal,$processing,$status).'</td>'; |
$currassign = { |
|
selfassign => $domdefaults{'inststatusguest'}, |
|
}; |
|
@ordered = @{$domdefaults{'inststatusguest'}}; |
|
} else { |
|
$currassign = { selfassign => [] }; |
|
} |
|
my $onclicktypes = "toggleDataRow(this.form,'selfassign','$customclass','$optionsprefix',);". |
|
"toggleDataRow(this.form,'selfassign','$customclass','$classprefix',1);"; |
|
$datatable .= &insttypes_row($currassign,$types,$usertypes,$dom, |
|
$numinrow,$othertitle,'selfassign', |
|
$rowtotal,$onclicktypes,$customclass, |
|
$rowstyle); |
|
$$rowtotal ++; |
|
$usertypeshash{'default'} = $othertitle; |
|
foreach my $status (@posstypes) { |
|
my $css_class; |
|
if ($$rowtotal%2) { |
|
$css_class = 'LC_odd_row '; |
|
} |
|
$css_class .= $customclass; |
|
my $rowid = $optionsprefix.$status; |
|
my $hidden = 1; |
|
my $currstyle = 'display:none'; |
|
if (grep(/^\Q$status\E$/,@ordered)) { |
|
$currstyle = $rowstyle; |
|
$hidden = 0; |
|
} |
|
$datatable .= &noninst_users($processing,$emailverified,$emailoptions,$emaildomain, |
|
$emailrules,$emailruleorder,$settings,$status,$rowid, |
|
$usertypeshash{$status},$css_class,$currstyle,$intdom); |
|
unless ($hidden) { |
|
$$rowtotal ++; |
} |
} |
$additional .= '</tr></table>'; |
|
} else { |
|
$usertypes->{'default'} = &mt('All users'); |
|
$additional .= &email_as_username($rowtotal,$processing); |
|
} |
} |
|
} else { |
|
my $css_class; |
|
if ($$rowtotal%2) { |
|
$css_class = 'LC_odd_row '; |
|
} |
|
$css_class .= $customclass; |
|
$usertypeshash{'default'} = $othertitle; |
|
$datatable .= &noninst_users($processing,$emailverified,$emailoptions,$emaildomain, |
|
$emailrules,$emailruleorder,$settings,'default','', |
|
$othertitle,$css_class,$rowstyle,$intdom); |
|
$$rowtotal ++; |
} |
} |
$additional .= '</div>'."\n"; |
|
|
|
($datatable,$itemcount) = &radiobutton_prefs(\%radiohash,\@toggles,\%defaultchecked, |
|
\%choices,$$rowtotal,$onclick,$additional); |
|
$$rowtotal ++; |
|
$datatable .= &print_requestmail($dom,'selfcreation',$createsettings,$rowtotal); |
|
$$rowtotal ++; |
|
my ($infofields,$infotitles) = &Apache::loncommon::emailusername_info(); |
my ($infofields,$infotitles) = &Apache::loncommon::emailusername_info(); |
$numinrow = 1; |
$numinrow = 1; |
if (ref($order) eq 'ARRAY') { |
if (@posstypes) { |
foreach my $status (@{$order}) { |
foreach my $status (@posstypes) { |
|
my $rowid = $classprefix.$status; |
|
my $datarowstyle = 'display:none'; |
|
if (grep(/^\Q$status\E$/,@ordered)) { |
|
$datarowstyle = $rowstyle; |
|
} |
$datatable .= &modifiable_userdata_row('cancreate','emailusername_'.$status,$settings, |
$datatable .= &modifiable_userdata_row('cancreate','emailusername_'.$status,$settings, |
$numinrow,$$rowtotal,$usertypes,$infofields,$infotitles); |
$numinrow,$$rowtotal,\%usertypeshash,$infofields, |
$$rowtotal ++; |
$infotitles,$rowid,$customclass,$datarowstyle); |
|
unless ($datarowstyle eq 'display:none') { |
|
$$rowtotal ++; |
|
} |
} |
} |
|
} else { |
|
$datatable .= &modifiable_userdata_row('cancreate','emailusername_default',$settings, |
|
$numinrow,$$rowtotal,\%usertypeshash,$infofields, |
|
$infotitles,'',$customclass,$rowstyle); |
} |
} |
my ($emailrules,$emailruleorder) = |
} |
&Apache::lonnet::inst_userrules($dom,'email'); |
return $datatable; |
if (ref($emailrules) eq 'HASH') { |
} |
if (keys(%{$emailrules}) > 0) { |
|
$datatable .= &user_formats_row('email',$settings,$emailrules, |
sub selfcreate_javascript { |
$emailruleorder,$numinrow,$$rowtotal); |
return <<"ENDSCRIPT"; |
$$rowtotal ++; |
|
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
|
|
function toggleRows(form,radio,checkbox,target,prefix,altprefix) { |
|
var x = document.getElementsByClassName(target); |
|
var insttypes = 0; |
|
var insttypeRegExp = new RegExp(prefix); |
|
if ((x.length != undefined) && (x.length > 0)) { |
|
if (form.elements[radio].length != undefined) { |
|
for (var i=0; i<form.elements[radio].length; i++) { |
|
if (form.elements[radio][i].checked) { |
|
if (form.elements[radio][i].value == 1) { |
|
for (var j=0; j<x.length; j++) { |
|
if (x[j].id == 'undefined') { |
|
x[j].style.display = 'table-row'; |
|
} else if (insttypeRegExp.test(x[j].id)) { |
|
insttypes ++; |
|
} else { |
|
x[j].style.display = 'table-row'; |
|
} |
|
} |
|
} else { |
|
for (var j=0; j<x.length; j++) { |
|
x[j].style.display = 'none'; |
|
} |
|
} |
|
break; |
|
} |
|
} |
|
if (insttypes > 0) { |
|
toggleDataRow(form,checkbox,target,altprefix); |
|
toggleDataRow(form,checkbox,target,prefix,1); |
} |
} |
} |
} |
$datatable .= &captcha_choice('cancreate',$createsettings,$$rowtotal); |
|
} |
} |
return $datatable; |
return; |
} |
} |
|
|
sub email_as_username { |
function toggleDataRow(form,checkbox,target,prefix,docount) { |
my ($rowtotal,$processing,$type) = @_; |
if (form.elements[checkbox].length != undefined) { |
my %choices = |
var count = 0; |
&Apache::lonlocal::texthash ( |
if (docount) { |
automatic => 'Automatic approval', |
for (var i=0; i<form.elements[checkbox].length; i++) { |
approval => 'Queued for approval', |
if (form.elements[checkbox][i].checked) { |
); |
count ++; |
my $output; |
} |
foreach my $option ('automatic','approval') { |
} |
my $checked; |
} |
if (ref($processing) eq 'HASH') { |
for (var i=0; i<form.elements[checkbox].length; i++) { |
if ($type eq '') { |
var type = form.elements[checkbox][i].value; |
if (!exists($processing->{'default'})) { |
if (document.getElementById(prefix+type)) { |
if ($option eq 'automatic') { |
if (form.elements[checkbox][i].checked) { |
$checked = ' checked="checked"'; |
document.getElementById(prefix+type).style.display = 'table-row'; |
|
if (count % 2 == 1) { |
|
document.getElementById(prefix+type).className = target+' LC_odd_row'; |
|
} else { |
|
document.getElementById(prefix+type).className = target; |
} |
} |
|
count ++; |
} else { |
} else { |
if ($processing->{'default'} eq $option) { |
document.getElementById(prefix+type).style.display = 'none'; |
$checked = ' checked="checked"'; |
} |
|
} |
|
} |
|
} |
|
return; |
|
} |
|
|
|
function toggleEmailOptions(form,radio,prefix,altprefix,status) { |
|
var caller = radio+'_'+status; |
|
if (form.elements[caller].length != undefined) { |
|
for (var i=0; i<form.elements[caller].length; i++) { |
|
if (form.elements[caller][i].checked) { |
|
if (document.getElementById(altprefix+'_inst_'+status)) { |
|
var curr = form.elements[caller][i].value; |
|
if (prefix) { |
|
document.getElementById(prefix+'_'+status).style.display = 'none'; |
|
} |
|
document.getElementById(altprefix+'_inst_'+status).style.display = 'none'; |
|
document.getElementById(altprefix+'_noninst_'+status).style.display = 'none'; |
|
if (curr == 'custom') { |
|
if (prefix) { |
|
document.getElementById(prefix+'_'+status).style.display = 'inline'; |
|
} |
|
} else if (curr == 'inst') { |
|
document.getElementById(altprefix+'_inst_'+status).style.display = 'inline'; |
|
} else if (curr == 'noninst') { |
|
document.getElementById(altprefix+'_noninst_'+status).style.display = 'inline'; |
} |
} |
|
break; |
} |
} |
} else { |
} |
if (!exists($processing->{$type})) { |
} |
if ($option eq 'automatic') { |
} |
$checked = ' checked="checked"'; |
} |
|
|
|
// ]]> |
|
</script> |
|
|
|
ENDSCRIPT |
|
} |
|
|
|
sub noninst_users { |
|
my ($processing,$emailverified,$emailoptions,$emaildomain,$emailrules, |
|
$emailruleorder,$settings,$type,$rowid,$typetitle,$css_class,$rowstyle,$intdom) = @_; |
|
my $class = 'LC_left_item'; |
|
if ($css_class) { |
|
$css_class = ' class="'.$css_class.'"'; |
|
} |
|
if ($rowid) { |
|
$rowid = ' id="'.$rowid.'"'; |
|
} |
|
if ($rowstyle) { |
|
$rowstyle = ' style="'.$rowstyle.'"'; |
|
} |
|
my ($output,$description); |
|
if ($type eq 'default') { |
|
$description = &mt('Requests for: [_1]',$typetitle); |
|
} else { |
|
$description = &mt('Requests for: [_1] (status self-reported)',$typetitle); |
|
} |
|
$output = '<tr'.$css_class.$rowid.$rowstyle.'>'. |
|
"<td>$description</td>\n". |
|
'<td class="'.$class.'" colspan="2">'. |
|
'<table><tr>'; |
|
my %headers = &Apache::lonlocal::texthash( |
|
approve => 'Processing', |
|
email => 'E-mail', |
|
username => 'Username', |
|
); |
|
foreach my $item ('approve','email','username') { |
|
$output .= '<th>'.$headers{$item}.'</th>'; |
|
} |
|
$output .= '</tr><tr>'; |
|
foreach my $item ('approve','email','username') { |
|
$output .= '<td valign="top">'; |
|
my (%choices,@options,$hashref,$defoption,$name,$onclick,$hascustom); |
|
if ($item eq 'approve') { |
|
%choices = &Apache::lonlocal::texthash ( |
|
automatic => 'Automatically approved', |
|
approval => 'Queued for approval', |
|
); |
|
@options = ('automatic','approval'); |
|
$hashref = $processing; |
|
$defoption = 'automatic'; |
|
$name = 'cancreate_emailprocess_'.$type; |
|
} elsif ($item eq 'email') { |
|
%choices = &Apache::lonlocal::texthash ( |
|
any => 'Any e-mail', |
|
inst => 'Institutional only', |
|
noninst => 'Non-institutional only', |
|
custom => 'Custom restrictions', |
|
); |
|
@options = ('any','inst','noninst'); |
|
my $showcustom; |
|
if (ref($emailrules) eq 'HASH') { |
|
if (keys(%{$emailrules}) > 0) { |
|
push(@options,'custom'); |
|
$showcustom = 'cancreate_emailrule'; |
|
if (ref($settings) eq 'HASH') { |
|
if (ref($settings->{'email_rule'}) eq 'ARRAY') { |
|
foreach my $rule (@{$settings->{'email_rule'}}) { |
|
if (exists($emailrules->{$rule})) { |
|
$hascustom ++; |
|
} |
|
} |
|
} elsif (ref($settings->{'email_rule'}) eq 'HASH') { |
|
if (ref($settings->{'email_rule'}{$type}) eq 'ARRAY') { |
|
foreach my $rule (@{$settings->{'email_rule'}{$type}}) { |
|
if (exists($emailrules->{$rule})) { |
|
$hascustom ++; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
$onclick = ' onclick="toggleEmailOptions(this.form,'."'cancreate_emailoptions','$showcustom',". |
|
"'cancreate_emaildomain','$type'".');"'; |
|
$hashref = $emailoptions; |
|
$defoption = 'any'; |
|
$name = 'cancreate_emailoptions_'.$type; |
|
} elsif ($item eq 'username') { |
|
%choices = &Apache::lonlocal::texthash ( |
|
all => 'Same as e-mail', |
|
first => 'Omit @domain', |
|
free => 'Free to choose', |
|
); |
|
@options = ('all','first','free'); |
|
$hashref = $emailverified; |
|
$defoption = 'all'; |
|
$name = 'cancreate_usernameoptions_'.$type; |
|
} |
|
foreach my $option (@options) { |
|
my $checked; |
|
if (ref($hashref) eq 'HASH') { |
|
if ($type eq '') { |
|
if (!exists($hashref->{'default'})) { |
|
if ($option eq $defoption) { |
|
$checked = ' checked="checked"'; |
|
} |
|
} else { |
|
if ($hashref->{'default'} eq $option) { |
|
$checked = ' checked="checked"'; |
|
} |
} |
} |
} else { |
} else { |
if ($processing->{$type} eq $option) { |
if (!exists($hashref->{$type})) { |
$checked = ' checked="checked"'; |
if ($option eq $defoption) { |
|
$checked = ' checked="checked"'; |
|
} |
|
} else { |
|
if ($hashref->{$type} eq $option) { |
|
$checked = ' checked="checked"'; |
|
} |
} |
} |
} |
} |
|
} elsif (($item eq 'email') && ($hascustom)) { |
|
if ($option eq 'custom') { |
|
$checked = ' checked="checked"'; |
|
} |
|
} elsif ($option eq $defoption) { |
|
$checked = ' checked="checked"'; |
|
} |
|
$output .= '<span class="LC_nobreak"><label>'. |
|
'<input type="radio" name="'.$name.'"'. |
|
$checked.' value="'.$option.'"'.$onclick.' />'. |
|
$choices{$option}.'</label></span><br />'; |
|
if ($item eq 'email') { |
|
if ($option eq 'custom') { |
|
my $id = 'cancreate_emailrule_'.$type; |
|
my $display = 'none'; |
|
if ($checked) { |
|
$display = 'inline'; |
|
} |
|
my $numinrow = 2; |
|
$output .= '<fieldset id="'.$id.'" style="display:'.$display.';">'. |
|
'<legend>'.&mt('Disallow').'</legend><table>'. |
|
&user_formats_row('email',$settings,$emailrules, |
|
$emailruleorder,$numinrow,'',$type); |
|
'</table></fieldset>'; |
|
} elsif (($option eq 'inst') || ($option eq 'noninst')) { |
|
my %text = &Apache::lonlocal::texthash ( |
|
inst => 'must end:', |
|
noninst => 'cannot end:', |
|
); |
|
my $value; |
|
if (ref($emaildomain) eq 'HASH') { |
|
if (ref($emaildomain->{$type}) eq 'HASH') { |
|
$value = $emaildomain->{$type}->{$option}; |
|
} |
|
} |
|
if ($value eq '') { |
|
$value = '@'.$intdom; |
|
} |
|
my $condition = 'cancreate_emaildomain_'.$option.'_'.$type; |
|
my $display = 'none'; |
|
if ($checked) { |
|
$display = 'inline'; |
|
} |
|
$output .= '<div id="'.$condition.'" style="display:'.$display.';">'. |
|
'<span class="LC_domprefs_email">'.$text{$option}.'</span> '. |
|
'<input type="text" name="'.$condition.'" value="'.$value.'" size="10" />'. |
|
'</div>'; |
|
} |
} |
} |
} elsif ($option eq 'automatic') { |
|
$checked = ' checked="checked"'; |
|
} |
|
my $name = 'cancreate_emailprocess'; |
|
if (($type ne '') && ($type ne 'default')) { |
|
$name .= '_'.$type; |
|
} |
|
$output .= '<span class="LC_nobreak"><label>'. |
|
'<input type="radio" name="'.$name.'"'. |
|
$checked.' value="'.$option.'" />'. |
|
$choices{$option}.'</label></span>'; |
|
if ($type eq '') { |
|
$output .= ' '; |
|
} else { |
|
$output .= '<br />'; |
|
} |
} |
|
$output .= '</td>'."\n"; |
} |
} |
$$rowtotal ++; |
$output .= "</tr></table></td></tr>\n"; |
return $output; |
return $output; |
} |
} |
|
|
sub captcha_choice { |
sub captcha_choice { |
my ($context,$settings,$itemcount) = @_; |
my ($context,$settings,$itemcount,$customcss,$rowstyle) = @_; |
my ($keyentry,$currpub,$currpriv,%checked,$rowname,$pubtext,$privtext, |
my ($keyentry,$currpub,$currpriv,%checked,$rowname,$pubtext,$privtext, |
$vertext,$currver); |
$vertext,$currver); |
my %lt = &captcha_phrases(); |
my %lt = &captcha_phrases(); |
Line 5242 sub captcha_choice {
|
Line 5597 sub captcha_choice {
|
} else { |
} else { |
$checked{'original'} = ' checked="checked"'; |
$checked{'original'} = ' checked="checked"'; |
} |
} |
my $css_class = $itemcount%2?' class="LC_odd_row"':''; |
my $css_class; |
|
if ($itemcount%2) { |
|
$css_class = 'LC_odd_row'; |
|
} |
|
if ($customcss) { |
|
$css_class .= " $customcss"; |
|
} |
|
$css_class =~ s/^\s+//; |
|
if ($css_class) { |
|
$css_class = ' class="'.$css_class.'"'; |
|
} |
|
if ($rowstyle) { |
|
$css_class .= ' style="'.$rowstyle.'"'; |
|
} |
my $output = '<tr'.$css_class.'>'. |
my $output = '<tr'.$css_class.'>'. |
'<td class="LC_left_item">'.$rowname.'</td><td class="LC_left_item" colspan="2">'."\n". |
'<td class="LC_left_item">'.$rowname.'</td><td class="LC_left_item" colspan="2">'."\n". |
'<table><tr><td>'."\n"; |
'<table><tr><td>'."\n"; |
Line 5261 sub captcha_choice {
|
Line 5629 sub captcha_choice {
|
# specified for use with the key should be broad enough to accommodate all servers in the LON-CAPA domain. |
# specified for use with the key should be broad enough to accommodate all servers in the LON-CAPA domain. |
# |
# |
$output .= '</td></tr>'."\n". |
$output .= '</td></tr>'."\n". |
'<tr><td>'."\n". |
'<tr><td class="LC_zero_height">'."\n". |
'<span class="LC_nobreak"><span id="'.$context.'_recaptchapubtxt">'.$pubtext.'</span> '."\n". |
'<span class="LC_nobreak"><span id="'.$context.'_recaptchapubtxt">'.$pubtext.'</span> '."\n". |
'<input type="'.$keyentry.'" id="'.$context.'_recaptchapub" name="'.$context.'_recaptchapub" value="'. |
'<input type="'.$keyentry.'" id="'.$context.'_recaptchapub" name="'.$context.'_recaptchapub" value="'. |
$currpub.'" size="40" /></span><br />'."\n". |
$currpub.'" size="40" /></span><br />'."\n". |
Line 5277 sub captcha_choice {
|
Line 5645 sub captcha_choice {
|
} |
} |
|
|
sub user_formats_row { |
sub user_formats_row { |
my ($type,$settings,$rules,$ruleorder,$numinrow,$rowcount) = @_; |
my ($type,$settings,$rules,$ruleorder,$numinrow,$rowcount,$status) = @_; |
my $output; |
my $output; |
my %text = ( |
my %text = ( |
'username' => 'new usernames', |
'username' => 'new usernames', |
'id' => 'IDs', |
'id' => 'IDs', |
'email' => 'self-created accounts (e-mail)', |
|
); |
); |
my $css_class = $rowcount%2?' class="LC_odd_row"':''; |
unless ($type eq 'email') { |
$output = '<tr '.$css_class.'>'. |
my $css_class = $rowcount%2?' class="LC_odd_row"':''; |
'<td><span class="LC_nobreak">'; |
$output = '<tr '.$css_class.'>'. |
if ($type eq 'email') { |
'<td><span class="LC_nobreak">'. |
$output .= &mt("Formats disallowed for $text{$type}: "); |
&mt("Format rules to check for $text{$type}: "). |
} else { |
'</td><td class="LC_left_item" colspan="2"><table>'; |
$output .= &mt("Format rules to check for $text{$type}: "); |
|
} |
} |
$output .= '</span></td>'. |
|
'<td class="LC_left_item" colspan="2"><table>'; |
|
my $rem; |
my $rem; |
if (ref($ruleorder) eq 'ARRAY') { |
if (ref($ruleorder) eq 'ARRAY') { |
for (my $i=0; $i<@{$ruleorder}; $i++) { |
for (my $i=0; $i<@{$ruleorder}; $i++) { |
Line 5311 sub user_formats_row {
|
Line 5675 sub user_formats_row {
|
if (grep(/^\Q$ruleorder->[$i]\E$/,@{$settings->{$type.'_rule'}})) { |
if (grep(/^\Q$ruleorder->[$i]\E$/,@{$settings->{$type.'_rule'}})) { |
$check = ' checked="checked" '; |
$check = ' checked="checked" '; |
} |
} |
|
} elsif ((ref($settings->{$type.'_rule'}) eq 'HASH') && ($status ne '')) { |
|
if (ref($settings->{$type.'_rule'}->{$status}) eq 'ARRAY') { |
|
if (grep(/^\Q$ruleorder->[$i]\E$/,@{$settings->{$type.'_rule'}->{$status}})) { |
|
$check = ' checked="checked" '; |
|
} |
|
} |
} |
} |
} |
} |
|
my $name = $type.'_rule'; |
|
if ($type eq 'email') { |
|
$name .= '_'.$status; |
|
} |
$output .= '<td class="LC_left_item">'. |
$output .= '<td class="LC_left_item">'. |
'<span class="LC_nobreak"><label>'. |
'<span class="LC_nobreak"><label>'. |
'<input type="checkbox" name="'.$type.'_rule" '. |
'<input type="checkbox" name="'.$name.'" '. |
'value="'.$ruleorder->[$i].'"'.$check.'/>'. |
'value="'.$ruleorder->[$i].'"'.$check.'/>'. |
$rules->{$ruleorder->[$i]}{'name'}.'</label></span></td>'; |
$rules->{$ruleorder->[$i]}{'name'}.'</label></span></td>'; |
} |
} |
} |
} |
$rem = @{$ruleorder}%($numinrow); |
$rem = @{$ruleorder}%($numinrow); |
} |
} |
my $colsleft = $numinrow - $rem; |
my $colsleft; |
|
if ($rem) { |
|
$colsleft = $numinrow - $rem; |
|
} |
if ($colsleft > 1 ) { |
if ($colsleft > 1 ) { |
$output .= '<td colspan="'.$colsleft.'" class="LC_left_item">'. |
$output .= '<td colspan="'.$colsleft.'" class="LC_left_item">'. |
' </td>'; |
' </td>'; |
} elsif ($colsleft == 1) { |
} elsif ($colsleft == 1) { |
$output .= '<td class="LC_left_item"> </td>'; |
$output .= '<td class="LC_left_item"> </td>'; |
} |
} |
$output .= '</tr></table></td></tr>'; |
$output .= '</tr></table>'; |
|
unless ($type eq 'email') { |
|
$output .= '</td></tr>'; |
|
} |
return $output; |
return $output; |
} |
} |
|
|
Line 5525 sub print_defaults {
|
Line 5905 sub print_defaults {
|
1 => 'Yes, allow login then update passwd file using default cost (if higher)', |
1 => 'Yes, allow login then update passwd file using default cost (if higher)', |
2 => 'Yes, disallow login if stored cost is less than domain default', |
2 => 'Yes, disallow login if stored cost is less than domain default', |
); |
); |
$datatable .= '<table wisth="100%">'; |
$datatable .= '<table width="100%">'; |
foreach my $option (@options) { |
foreach my $option (@options) { |
my $checked = ' '; |
my $checked = ' '; |
my $onclick; |
my $onclick; |
Line 5551 sub print_defaults {
|
Line 5931 sub print_defaults {
|
} else { |
} else { |
my %defaults; |
my %defaults; |
if (ref($settings) eq 'HASH') { |
if (ref($settings) eq 'HASH') { |
if ((ref($settings->{'inststatusorder'}) eq 'ARRAY') && (ref($settings->{'inststatustypes'}) eq 'HASH') && |
if ((ref($settings->{'inststatusorder'}) eq 'ARRAY') && (ref($settings->{'inststatustypes'}) eq 'HASH')) { |
(ref($settings->{'inststatusguest'}) eq 'ARRAY')) { |
|
my $maxnum = @{$settings->{'inststatusorder'}}; |
my $maxnum = @{$settings->{'inststatusorder'}}; |
for (my $i=0; $i<$maxnum; $i++) { |
for (my $i=0; $i<$maxnum; $i++) { |
$css_class = $rownum%2?' class="LC_odd_row"':''; |
$css_class = $rownum%2?' class="LC_odd_row"':''; |
my $item = $settings->{'inststatusorder'}->[$i]; |
my $item = $settings->{'inststatusorder'}->[$i]; |
my $title = $settings->{'inststatustypes'}->{$item}; |
my $title = $settings->{'inststatustypes'}->{$item}; |
my $guestok; |
|
if (grep(/^\Q$item\E$/,@{$settings->{'inststatusguest'}})) { |
|
$guestok = 1; |
|
} |
|
my $chgstr = ' onchange="javascript:reorderTypes(this.form,'."'$item'".');"'; |
my $chgstr = ' onchange="javascript:reorderTypes(this.form,'."'$item'".');"'; |
$datatable .= '<tr'.$css_class.'>'. |
$datatable .= '<tr'.$css_class.'>'. |
'<td><span class="LC_nobreak">'. |
'<td><span class="LC_nobreak">'. |
Line 5574 sub print_defaults {
|
Line 5949 sub print_defaults {
|
} |
} |
$datatable .= '<option value="'.$k.'"'.$selstr.'>'.$vpos.'</option>'; |
$datatable .= '<option value="'.$k.'"'.$selstr.'>'.$vpos.'</option>'; |
} |
} |
my ($checkedon,$checkedoff); |
|
$checkedoff = ' checked="checked"'; |
|
if ($guestok) { |
|
$checkedon = $checkedoff; |
|
$checkedoff = ''; |
|
} |
|
$datatable .= '</select> '.&mt('Internal ID:').' <b>'.$item.'</b> '. |
$datatable .= '</select> '.&mt('Internal ID:').' <b>'.$item.'</b> '. |
'<input type="checkbox" name="inststatus_delete" value="'.$item.'" />'. |
'<input type="checkbox" name="inststatus_delete" value="'.$item.'" />'. |
&mt('delete').'</span></td>'. |
&mt('delete').'</span></td>'. |
'<td class="LC_left_item"><span class="LC_nobreak">'.&mt('Name displayed:'). |
'<td class="LC_left_item"><span class="LC_nobreak">'.&mt('Name displayed:'). |
'<input type="text" size="20" name="inststatus_title_'.$item.'" value="'.$title.'" />'. |
'<input type="text" size="20" name="inststatus_title_'.$item.'" value="'.$title.'" />'. |
'</span></td>'. |
'</span></td></tr>'; |
'<td class="LC_right_item"><span class="LC_nobreak">'. |
|
'<label><input type="radio" value="1" name="inststatus_guest_'.$item.'"'.$checkedon.' />'. |
|
&mt('Yes').'</label>'.(' 'x2). |
|
'<label><input type="radio" value="0" name="inststatus_guest_'.$item.'"'.$checkedoff.' />'. |
|
&mt('No').'</label></span></td></tr>'; |
|
} |
} |
$css_class = $rownum%2?' class="LC_odd_row"':''; |
$css_class = $rownum%2?' class="LC_odd_row"':''; |
my $chgstr = ' onchange="javascript:reorderTypes(this.form,'."'addinststatus_pos'".');"'; |
my $chgstr = ' onchange="javascript:reorderTypes(this.form,'."'addinststatus_pos'".');"'; |
Line 5610 sub print_defaults {
|
Line 5974 sub print_defaults {
|
'</span></td><td class="LC_left_item"><span class="LC_nobreak">'. |
'</span></td><td class="LC_left_item"><span class="LC_nobreak">'. |
&mt('Name displayed:'). |
&mt('Name displayed:'). |
'<input type="text" size="20" name="addinststatus_title" value="" /></span></td>'. |
'<input type="text" size="20" name="addinststatus_title" value="" /></span></td>'. |
'<td class="LC_right_item"><span class="LC_nobreak">'. |
|
'<label><input type="radio" value="1" name="addinststatus_guest" />'. |
|
&mt('Yes').'</label>'.(' 'x2). |
|
'<label><input type="radio" value="0" name="addinststatus_guest" />'. |
|
&mt('No').'</label></span></td></tr>'; |
|
'</tr>'."\n"; |
'</tr>'."\n"; |
$rownum ++; |
$rownum ++; |
} |
} |
Line 5876 sub print_coursecategories {
|
Line 6235 sub print_coursecategories {
|
'<input type="radio" name="coursecat_'.$item.'" value="'.$type.'"'.$ischecked. |
'<input type="radio" name="coursecat_'.$item.'" value="'.$type.'"'.$ischecked. |
' />'.$lt{$type}.'</label> '; |
' />'.$lt{$type}.'</label> '; |
} |
} |
$datatable .= '</td></tr>'; |
$datatable .= '</span></td></tr>'; |
$itemcount ++; |
$itemcount ++; |
} |
} |
$$rowtotal += $itemcount; |
$$rowtotal += $itemcount; |
Line 6087 sub print_coursecategories {
|
Line 6446 sub print_coursecategories {
|
$datatable .= &initialize_categories($itemcount); |
$datatable .= &initialize_categories($itemcount); |
} |
} |
} else { |
} else { |
$datatable .= '<td class="LC_right_item">'.$hdritem->{'header'}->[1]->{'col2'}.'</td>' |
$datatable .= '<tr><td class="LC_right_item">'.$hdritem->{'header'}->[1]->{'col2'}.'</td></tr>' |
.&initialize_categories($itemcount); |
.&initialize_categories($itemcount); |
} |
} |
$$rowtotal += $itemcount; |
$$rowtotal += $itemcount; |
Line 6135 sub print_serverstatuses {
|
Line 6494 sub print_serverstatuses {
|
'<span class="LC_nobreak">'. |
'<span class="LC_nobreak">'. |
'<input type="text" name="'.$type.'_machines" '. |
'<input type="text" name="'.$type.'_machines" '. |
'value="'.$machineaccess{$type}.'" size="10" />'. |
'value="'.$machineaccess{$type}.'" size="10" />'. |
'</td></tr>'."\n"; |
'</span></td></tr>'."\n"; |
} |
} |
$$rowtotal += $rownum; |
$$rowtotal += $rownum; |
return $datatable; |
return $datatable; |
Line 6360 sub initialize_categories {
|
Line 6719 sub initialize_categories {
|
my $select1 = ''; |
my $select1 = ''; |
foreach my $default ('instcode','communities') { |
foreach my $default ('instcode','communities') { |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$chgstr = ' onchange="javascript:reorderCats(this.form,'."'',$default"."_pos','0'".');"'; |
$chgstr = ' onchange="javascript:reorderCats(this.form,'."'','$default"."_pos','0'".');"'; |
if ($default eq 'communities') { |
if ($default eq 'communities') { |
$select1 = $select0; |
$select1 = $select0; |
$select0 = ''; |
$select0 = ''; |
Line 6385 sub initialize_categories {
|
Line 6744 sub initialize_categories {
|
.'<option value="0">1</option>' |
.'<option value="0">1</option>' |
.'<option value="1">2</option>' |
.'<option value="1">2</option>' |
.'<option value="2" selected="selected">3</option></select> ' |
.'<option value="2" selected="selected">3</option></select> ' |
.&mt('Add category').'</td><td>'.&mt('Name:') |
.&mt('Add category').'</span></td><tda<span class="LC_nobreak">>'.&mt('Name:') |
.' <input type="text" size="20" name="addcategory_name" value="" /></td></tr>'; |
.' <input type="text" size="20" name="addcategory_name" value="" /></span>' |
|
.'</td></tr>'; |
return $datatable; |
return $datatable; |
} |
} |
|
|
Line 6441 sub build_category_rows {
|
Line 6801 sub build_category_rows {
|
pop(@{$path}); |
pop(@{$path}); |
} |
} |
} else { |
} else { |
$text .= &mt('Add subcategory:').' </span><input type="textbox" size="20" name="addcategory_name_'; |
$text .= &mt('Add subcategory:').' </span><input type="text" size="20" name="addcategory_name_'; |
if ($j == $numchildren) { |
if ($j == $numchildren) { |
$text .= $name; |
$text .= $name; |
} else { |
} else { |
Line 6464 sub build_category_rows {
|
Line 6824 sub build_category_rows {
|
my $colspan; |
my $colspan; |
if ($parent ne 'instcode') { |
if ($parent ne 'instcode') { |
$colspan = $maxdepth - $depth - 1; |
$colspan = $maxdepth - $depth - 1; |
$text .= '<td colspan="'.$colspan.'">'.&mt('Add subcategory:').'<input type="textbox" size="20" name="subcat_'.$name.'" value="" /></td>'; |
$text .= '<td colspan="'.$colspan.'">'.&mt('Add subcategory:').'<input type="text" size="20" name="subcat_'.$name.'" value="" /></td>'; |
} |
} |
} |
} |
} |
} |
Line 6473 sub build_category_rows {
|
Line 6833 sub build_category_rows {
|
} |
} |
|
|
sub modifiable_userdata_row { |
sub modifiable_userdata_row { |
my ($context,$item,$settings,$numinrow,$rowcount,$usertypes,$fieldsref,$titlesref) = @_; |
my ($context,$item,$settings,$numinrow,$rowcount,$usertypes,$fieldsref,$titlesref, |
|
$rowid,$customcss,$rowstyle) = @_; |
my ($role,$rolename,$statustype); |
my ($role,$rolename,$statustype); |
$role = $item; |
$role = $item; |
if ($context eq 'cancreate') { |
if ($context eq 'cancreate') { |
if ($item =~ /^emailusername_(.+)$/) { |
if ($item =~ /^(emailusername)_(.+)$/) { |
$statustype = $1; |
$role = $1; |
$role = 'emailusername'; |
$statustype = $2; |
if (ref($usertypes) eq 'HASH') { |
if (ref($usertypes) eq 'HASH') { |
if ($usertypes->{$statustype}) { |
if ($usertypes->{$statustype}) { |
$rolename = &mt('Data provided by [_1]',$usertypes->{$statustype}); |
$rolename = &mt('Data provided by [_1]',$usertypes->{$statustype}); |
Line 6514 sub modifiable_userdata_row {
|
Line 6875 sub modifiable_userdata_row {
|
%fieldtitles = &Apache::loncommon::personal_data_fieldtitles(); |
%fieldtitles = &Apache::loncommon::personal_data_fieldtitles(); |
} |
} |
my $output; |
my $output; |
my $css_class = $rowcount%2?' class="LC_odd_row"':''; |
my $css_class; |
$output = '<tr '.$css_class.'>'. |
if ($rowcount%2) { |
|
$css_class = 'LC_odd_row'; |
|
} |
|
if ($customcss) { |
|
$css_class .= " $customcss"; |
|
} |
|
$css_class =~ s/^\s+//; |
|
if ($css_class) { |
|
$css_class = ' class="'.$css_class.'"'; |
|
} |
|
if ($rowstyle) { |
|
$css_class .= ' style="'.$rowstyle.'"'; |
|
} |
|
if ($rowid) { |
|
$rowid = ' id="'.$rowid.'"'; |
|
} |
|
|
|
$output = '<tr '.$css_class.$rowid.'>'. |
'<td><span class="LC_nobreak">'.$rolename.'</span></td>'. |
'<td><span class="LC_nobreak">'.$rolename.'</span></td>'. |
'<td class="LC_left_item" colspan="2"><table>'; |
'<td class="LC_left_item" colspan="2"><table>'; |
my $rem; |
my $rem; |
Line 6549 sub modifiable_userdata_row {
|
Line 6927 sub modifiable_userdata_row {
|
} |
} |
} |
} |
} |
} |
|
|
for (my $i=0; $i<@fields; $i++) { |
my $total = scalar(@fields); |
my $rem = $i%($numinrow); |
for (my $i=0; $i<$total; $i++) { |
|
$rem = $i%($numinrow); |
if ($rem == 0) { |
if ($rem == 0) { |
if ($i > 0) { |
if ($i > 0) { |
$output .= '</tr>'; |
$output .= '</tr>'; |
Line 6593 sub modifiable_userdata_row {
|
Line 6972 sub modifiable_userdata_row {
|
'</label>'; |
'</label>'; |
} |
} |
$output .= '</span></td>'; |
$output .= '</span></td>'; |
$rem = @fields%($numinrow); |
|
} |
} |
my $colsleft = $numinrow - $rem; |
$rem = $total%$numinrow; |
if ($colsleft > 1 ) { |
my $colsleft; |
|
if ($rem) { |
|
$colsleft = $numinrow - $rem; |
|
} |
|
if ($colsleft > 1) { |
$output .= '<td colspan="'.$colsleft.'" class="LC_left_item">'. |
$output .= '<td colspan="'.$colsleft.'" class="LC_left_item">'. |
' </td>'; |
' </td>'; |
} elsif ($colsleft == 1) { |
} elsif ($colsleft == 1) { |
Line 6607 sub modifiable_userdata_row {
|
Line 6989 sub modifiable_userdata_row {
|
} |
} |
|
|
sub insttypes_row { |
sub insttypes_row { |
my ($settings,$types,$usertypes,$dom,$numinrow,$othertitle,$context,$rownum) = @_; |
my ($settings,$types,$usertypes,$dom,$numinrow,$othertitle,$context,$rowtotal,$onclick, |
|
$customcss,$rowstyle) = @_; |
my %lt = &Apache::lonlocal::texthash ( |
my %lt = &Apache::lonlocal::texthash ( |
cansearch => 'Users allowed to search', |
cansearch => 'Users allowed to search', |
statustocreate => 'Institutional affiliation(s) able to create own account (login/SSO)', |
statustocreate => 'Institutional affiliation(s) able to create own account (login/SSO)', |
lockablenames => 'User preference to lock name', |
lockablenames => 'User preference to lock name', |
|
selfassign => 'Self-reportable affiliations', |
); |
); |
my $showdom; |
my $showdom; |
if ($context eq 'cansearch') { |
if ($context eq 'cansearch') { |
Line 6621 sub insttypes_row {
|
Line 7005 sub insttypes_row {
|
if ($context eq 'statustocreate') { |
if ($context eq 'statustocreate') { |
$class = 'LC_right_item'; |
$class = 'LC_right_item'; |
} |
} |
my $css_class = ' class="LC_odd_row"'; |
my $css_class; |
if ($rownum ne '') { |
if ($$rowtotal%2) { |
$css_class = ($rownum%2? ' class="LC_odd_row"':''); |
$css_class = 'LC_odd_row'; |
|
} |
|
if ($customcss) { |
|
$css_class .= ' '.$customcss; |
|
} |
|
$css_class =~ s/^\s+//; |
|
if ($css_class) { |
|
$css_class = ' class="'.$css_class.'"'; |
|
} |
|
if ($rowstyle) { |
|
$css_class .= ' style="'.$rowstyle.'"'; |
|
} |
|
if ($onclick) { |
|
$onclick = 'onclick="'.$onclick.'" '; |
} |
} |
my $output = '<tr'.$css_class.'>'. |
my $output = '<tr'.$css_class.'>'. |
'<td>'.$lt{$context}.$showdom. |
'<td>'.$lt{$context}.$showdom. |
Line 6652 sub insttypes_row {
|
Line 7049 sub insttypes_row {
|
$output .= '<td class="LC_left_item">'. |
$output .= '<td class="LC_left_item">'. |
'<span class="LC_nobreak"><label>'. |
'<span class="LC_nobreak"><label>'. |
'<input type="checkbox" name="'.$context.'" '. |
'<input type="checkbox" name="'.$context.'" '. |
'value="'.$types->[$i].'"'.$check.'/>'. |
'value="'.$types->[$i].'"'.$check.$onclick.'/>'. |
$usertypes->{$types->[$i]}.'</label></span></td>'; |
$usertypes->{$types->[$i]}.'</label></span></td>'; |
} |
} |
} |
} |
$rem = @{$types}%($numinrow); |
$rem = @{$types}%($numinrow); |
} |
} |
my $colsleft = $numinrow - $rem; |
my $colsleft = $numinrow - $rem; |
if (($rem == 0) && (@{$types} > 0)) { |
if ($rem == 0) { |
$output .= '<tr>'; |
$output .= '<tr>'; |
} |
} |
if ($colsleft > 1) { |
if ($colsleft > 1) { |
Line 6679 sub insttypes_row {
|
Line 7076 sub insttypes_row {
|
} |
} |
$output .= '<span class="LC_nobreak"><label>'. |
$output .= '<span class="LC_nobreak"><label>'. |
'<input type="checkbox" name="'.$context.'" '. |
'<input type="checkbox" name="'.$context.'" '. |
'value="default"'.$defcheck.'/>'. |
'value="default"'.$defcheck.$onclick.'/>'. |
$othertitle.'</label></span></td>'. |
$othertitle.'</label></span></td>'. |
'</tr></table></td></tr>'; |
'</tr></table></td></tr>'; |
return $output; |
return $output; |
Line 7715 sub publishlogo {
|
Line 8112 sub publishlogo {
|
} else { |
} else { |
my $source = $filepath.'/'.$file; |
my $source = $filepath.'/'.$file; |
my $logfile; |
my $logfile; |
if (!open($logfile,">>$source".'.log')) { |
if (!open($logfile,">>",$source.'.log')) { |
return (&mt('No write permission to Authoring Space')); |
return (&mt('No write permission to Authoring Space')); |
} |
} |
print $logfile |
print $logfile |
"\n================= Publish ".localtime()." ================\n". |
"\n================= Publish ".localtime()." ================\n". |
$env{'user.name'}.':'.$env{'user.domain'}."\n"; |
$env{'user.name'}.':'.$env{'user.domain'}."\n"; |
# Save the file |
# Save the file |
if (!open(FH,'>'.$source)) { |
if (!open(FH,">",$source)) { |
&Apache::lonnet::logthis('Failed to create '.$source); |
&Apache::lonnet::logthis('Failed to create '.$source); |
return (&mt('Failed to create file')); |
return (&mt('Failed to create file')); |
} |
} |
Line 7783 $env{'user.name'}.':'.$env{'user.domain'
|
Line 8180 $env{'user.name'}.':'.$env{'user.domain'
|
if ($fullwidth ne '' && $fullheight ne '') { |
if ($fullwidth ne '' && $fullheight ne '') { |
if ($fullwidth > $thumbwidth && $fullheight > $thumbheight) { |
if ($fullwidth > $thumbwidth && $fullheight > $thumbheight) { |
my $thumbsize = $thumbwidth.'x'.$thumbheight; |
my $thumbsize = $thumbwidth.'x'.$thumbheight; |
system("convert -sample $thumbsize $inputfile $outfile"); |
my @args = ('convert','-sample',$thumbsize,$inputfile,$outfile); |
|
system({$args[0]} @args); |
chmod(0660, $filepath.'/tn-'.$file); |
chmod(0660, $filepath.'/tn-'.$file); |
if (-e $outfile) { |
if (-e $outfile) { |
my $copyfile=$targetdir.'/tn-'.$file; |
my $copyfile=$targetdir.'/tn-'.$file; |
Line 7862 sub write_metadata {
|
Line 8260 sub write_metadata {
|
{ |
{ |
print $logfile "\nWrite metadata file for ".$targetdir.'/'.$file; |
print $logfile "\nWrite metadata file for ".$targetdir.'/'.$file; |
my $mfh; |
my $mfh; |
if (open($mfh,'>'.$targetdir.'/'.$file.'.meta')) { |
if (open($mfh,">",$targetdir.'/'.$file.'.meta')) { |
foreach (sort(keys(%metadatafields))) { |
foreach (sort(keys(%metadatafields))) { |
unless ($_=~/\./) { |
unless ($_=~/\./) { |
my $unikey=$_; |
my $unikey=$_; |
Line 7896 sub notifysubscribed {
|
Line 8294 sub notifysubscribed {
|
next unless (ref($targetsource) eq 'ARRAY'); |
next unless (ref($targetsource) eq 'ARRAY'); |
my ($target,$source)=@{$targetsource}; |
my ($target,$source)=@{$targetsource}; |
if ($source ne '') { |
if ($source ne '') { |
if (open(my $logfh,'>>'.$source.'.log')) { |
if (open(my $logfh,">>",$source.'.log')) { |
print $logfh "\nCleanup phase: Notifications\n"; |
print $logfh "\nCleanup phase: Notifications\n"; |
my @subscribed=&subscribed_hosts($target); |
my @subscribed=&subscribed_hosts($target); |
foreach my $subhost (@subscribed) { |
foreach my $subhost (@subscribed) { |
Line 7922 sub notifysubscribed {
|
Line 8320 sub notifysubscribed {
|
sub subscribed_hosts { |
sub subscribed_hosts { |
my ($target) = @_; |
my ($target) = @_; |
my @subscribed; |
my @subscribed; |
if (open(my $fh,"<$target.subscription")) { |
if (open(my $fh,"<","$target.subscription")) { |
while (my $subline=<$fh>) { |
while (my $subline=<$fh>) { |
if ($subline =~ /^($match_lonid):/) { |
if ($subline =~ /^($match_lonid):/) { |
my $host = $1; |
my $host = $1; |
Line 8121 sub modify_quotas {
|
Line 8519 sub modify_quotas {
|
#FIXME need to obsolete item in RES space |
#FIXME need to obsolete item in RES space |
} elsif ($env{'form.'.$type.'_image_'.$i.'.filename'}) { |
} elsif ($env{'form.'.$type.'_image_'.$i.'.filename'}) { |
my ($cdom,$cnum) = split(/_/,$key); |
my ($cdom,$cnum) = split(/_/,$key); |
my ($imgurl,$error) = &process_textbook_image($r,$dom,$confname,$type.'_image_'.$i, |
if (&Apache::lonnet::homeserver($cnum,$cdom) eq 'no_host') { |
$cdom,$cnum,$type,$configuserok, |
$errors .= '<li><span class="LC_error">'.&mt('Image not saved: could not find textbook course').'</li>'; |
$switchserver,$author_ok); |
} else { |
if ($imgurl) { |
my ($imgurl,$error) = &process_textbook_image($r,$dom,$confname,$type.'_image_'.$i, |
$confhash{$type}{$key}{'image'} = $imgurl; |
$cdom,$cnum,$type,$configuserok, |
$changes{$type}{$key} = 1; |
$switchserver,$author_ok); |
} |
if ($imgurl) { |
if ($error) { |
$confhash{$type}{$key}{'image'} = $imgurl; |
&Apache::lonnet::logthis($error); |
$changes{$type}{$key} = 1; |
$errors .= '<li><span class="LC_error">'.$error.'</span></li>'; |
} |
|
if ($error) { |
|
&Apache::lonnet::logthis($error); |
|
$errors .= '<li><span class="LC_error">'.$error.'</span></li>'; |
|
} |
} |
} |
} elsif ($domconfig{$action}{$type}{$key}{'image'}) { |
} elsif ($domconfig{$action}{$type}{$key}{'image'}) { |
$confhash{$type}{$key}{'image'} = |
$confhash{$type}{$key}{'image'} = |
Line 8164 sub modify_quotas {
|
Line 8566 sub modify_quotas {
|
if ($type eq 'textbooks') { |
if ($type eq 'textbooks') { |
if ($env{'form.'.$type.'_addbook_image.filename'} ne '') { |
if ($env{'form.'.$type.'_addbook_image.filename'} ne '') { |
my ($cdom,$cnum) = split(/_/,$newbook{$type}); |
my ($cdom,$cnum) = split(/_/,$newbook{$type}); |
my ($imageurl,$error) = |
if (&Apache::lonnet::homeserver($cnum,$cdom) eq 'no_host') { |
&process_textbook_image($r,$dom,$confname,$type.'_addbook_image',$cdom,$cnum,$type, |
$errors .= '<li><span class="LC_error">'.&mt('Image not saved: could not find textbook course').'</li>'; |
$configuserok,$switchserver,$author_ok); |
} else { |
if ($imageurl) { |
my ($imageurl,$error) = |
$confhash{$type}{$newbook{$type}}{'image'} = $imageurl; |
&process_textbook_image($r,$dom,$confname,$type.'_addbook_image',$cdom,$cnum,$type, |
} |
$configuserok,$switchserver,$author_ok); |
if ($error) { |
if ($imageurl) { |
&Apache::lonnet::logthis($error); |
$confhash{$type}{$newbook{$type}}{'image'} = $imageurl; |
$errors .= '<li><span class="LC_error">'.$error.'</span></li>'; |
} |
|
if ($error) { |
|
&Apache::lonnet::logthis($error); |
|
$errors .= '<li><span class="LC_error">'.$error.'</span></li>'; |
|
} |
} |
} |
} |
} |
} |
} |
Line 8664 sub process_textbook_image {
|
Line 9070 sub process_textbook_image {
|
} elsif ($author_ok eq 'ok') { |
} elsif ($author_ok eq 'ok') { |
my ($result,$imageurl) = |
my ($result,$imageurl) = |
&publishlogo($r,'upload',$caller,$dom,$confname, |
&publishlogo($r,'upload',$caller,$dom,$confname, |
"$type/$dom/$cnum/cover",$width,$height); |
"$type/$cdom/$cnum/cover",$width,$height); |
if ($result eq 'ok') { |
if ($result eq 'ok') { |
$url = $imageurl; |
$url = $imageurl; |
} else { |
} else { |
Line 9264 sub modify_contacts {
|
Line 9670 sub modify_contacts {
|
my (%others,%to,%bcc,%includestr,%includeloc); |
my (%others,%to,%bcc,%includestr,%includeloc); |
my @contacts = ('supportemail','adminemail'); |
my @contacts = ('supportemail','adminemail'); |
my @mailings = ('errormail','packagesmail','helpdeskmail','otherdomsmail', |
my @mailings = ('errormail','packagesmail','helpdeskmail','otherdomsmail', |
'lonstatusmail','requestsmail','updatesmail','idconflictsmail'); |
'lonstatusmail','requestsmail','updatesmail','idconflictsmail','hostipmail'); |
my @toggles = ('reporterrors','reportupdates'); |
my @toggles = ('reporterrors','reportupdates'); |
my ($fields,$fieldtitles,$fieldoptions,$possoptions) = &helpform_fields(); |
my ($fields,$fieldtitles,$fieldoptions,$possoptions) = &helpform_fields(); |
foreach my $type (@mailings) { |
foreach my $type (@mailings) { |
Line 9380 sub modify_contacts {
|
Line 9786 sub modify_contacts {
|
$default{'lonstatusmail'} = 'adminemail'; |
$default{'lonstatusmail'} = 'adminemail'; |
$default{'requestsmail'} = 'adminemail'; |
$default{'requestsmail'} = 'adminemail'; |
$default{'updatesmail'} = 'adminemail'; |
$default{'updatesmail'} = 'adminemail'; |
|
$default{'hostipmail'} = 'adminemail'; |
foreach my $item (@contacts) { |
foreach my $item (@contacts) { |
if ($to{$item} ne $default{$item}) { |
if ($to{$item} ne $default{$item}) { |
$changes{$item} = 1; |
$changes{$item} = 1; |
Line 9561 sub modify_usercreation {
|
Line 9968 sub modify_usercreation {
|
if ($key eq 'cancreate') { |
if ($key eq 'cancreate') { |
if (ref($domconfig{'usercreation'}{$key}) eq 'HASH') { |
if (ref($domconfig{'usercreation'}{$key}) eq 'HASH') { |
foreach my $item (keys(%{$domconfig{'usercreation'}{$key}})) { |
foreach my $item (keys(%{$domconfig{'usercreation'}{$key}})) { |
if (($item eq 'selfcreate') || ($item eq 'statustocreate') || |
if (($item eq 'requestcrs') || ($item eq 'course') || ($item eq 'author')) { |
($item eq 'captcha') || ($item eq 'recaptchakeys') || |
|
($item eq 'recaptchaversion')) { |
|
$save_usercreate{$key}{$item} = $domconfig{'usercreation'}{$key}{$item}; |
|
} else { |
|
$curr_usercreation{$key}{$item} = $domconfig{'usercreation'}{$key}{$item}; |
$curr_usercreation{$key}{$item} = $domconfig{'usercreation'}{$key}{$item}; |
|
} else { |
|
$save_usercreate{$key}{$item} = $domconfig{'usercreation'}{$key}{$item}; |
} |
} |
} |
} |
} |
} |
Line 9769 sub modify_usercreation {
|
Line 10174 sub modify_usercreation {
|
} |
} |
|
|
sub modify_selfcreation { |
sub modify_selfcreation { |
my ($dom,%domconfig) = @_; |
my ($dom,$lastactref,%domconfig) = @_; |
my ($resulttext,$warningmsg,%curr_usercreation,%curr_usermodify,%changes,%cancreate); |
my ($resulttext,$warningmsg,%curr_usercreation,%curr_usermodify,%curr_inststatus,%changes,%cancreate); |
my (%save_usercreate,%save_usermodify); |
my (%save_usercreate,%save_usermodify,%save_inststatus,@types,%usertypes); |
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom,1); |
if (ref($types) eq 'ARRAY') { |
my ($othertitle,$usertypesref,$typesref) = &Apache::loncommon::sorted_inst_types($dom); |
$usertypes->{'default'} = $othertitle; |
if (ref($typesref) eq 'ARRAY') { |
push(@{$types},'default'); |
@types = @{$typesref}; |
|
} |
|
if (ref($usertypesref) eq 'HASH') { |
|
%usertypes = %{$usertypesref}; |
} |
} |
|
$usertypes{'default'} = $othertitle; |
# |
# |
# Retrieve current domain configuration for self-creation of usernames from $domconfig{'usercreation'}. |
# Retrieve current domain configuration for self-creation of usernames from $domconfig{'usercreation'}. |
# |
# |
Line 9786 sub modify_selfcreation {
|
Line 10195 sub modify_selfcreation {
|
if (ref($domconfig{'usercreation'}{$key}) eq 'HASH') { |
if (ref($domconfig{'usercreation'}{$key}) eq 'HASH') { |
foreach my $item (keys(%{$domconfig{'usercreation'}{$key}})) { |
foreach my $item (keys(%{$domconfig{'usercreation'}{$key}})) { |
if (($item eq 'selfcreate') || ($item eq 'statustocreate') || |
if (($item eq 'selfcreate') || ($item eq 'statustocreate') || |
($item eq 'captcha') || ($item eq 'recaptchakeys') || |
($item eq 'captcha') || ($item eq 'recaptchakeys') || |
($item eq 'recaptchaversion') || |
($item eq 'recaptchaversion') || ($item eq 'notify') || |
($item eq 'emailusername') || ($item eq 'notify') || |
($item eq 'emailusername') || ($item eq 'shibenv') || |
($item eq 'selfcreateprocessing') || ($item eq 'shibenv')) { |
($item eq 'selfcreateprocessing') || ($item eq 'emailverified') || |
|
($item eq 'emailoptions') || ($item eq 'emaildomain')) { |
$curr_usercreation{$key}{$item} = $domconfig{'usercreation'}{$key}{$item}; |
$curr_usercreation{$key}{$item} = $domconfig{'usercreation'}{$key}{$item}; |
} else { |
} else { |
$save_usercreate{$key}{$item} = $domconfig{'usercreation'}{$key}{$item}; |
$save_usercreate{$key}{$item} = $domconfig{'usercreation'}{$key}{$item}; |
Line 9815 sub modify_selfcreation {
|
Line 10225 sub modify_selfcreation {
|
} |
} |
} |
} |
} |
} |
|
# |
|
# Retrieve current domain configuration for institutional status types from $domconfig{'inststatus'}. |
|
# |
|
if (ref($domconfig{'inststatus'}) eq 'HASH') { |
|
foreach my $key (keys(%{$domconfig{'inststatus'}})) { |
|
if ($key eq 'inststatusguest') { |
|
$curr_inststatus{$key} = $domconfig{'inststatus'}{$key}; |
|
} else { |
|
$save_inststatus{$key} = $domconfig{'inststatus'}{$key}; |
|
} |
|
} |
|
} |
|
|
my @contexts = ('selfcreate'); |
my @contexts = ('selfcreate'); |
@{$cancreate{'selfcreate'}} = (); |
@{$cancreate{'selfcreate'}} = (); |
%{$cancreate{'emailusername'}} = (); |
%{$cancreate{'emailusername'}} = (); |
@{$cancreate{'statustocreate'}} = (); |
if (@types) { |
|
@{$cancreate{'statustocreate'}} = (); |
|
} |
%{$cancreate{'selfcreateprocessing'}} = (); |
%{$cancreate{'selfcreateprocessing'}} = (); |
%{$cancreate{'shibenv'}} = (); |
%{$cancreate{'shibenv'}} = (); |
|
%{$cancreate{'emailverified'}} = (); |
|
%{$cancreate{'emailoptions'}} = (); |
|
%{$cancreate{'emaildomain'}} = (); |
my %selfcreatetypes = ( |
my %selfcreatetypes = ( |
sso => 'users authenticated by institutional single sign on', |
sso => 'users authenticated by institutional single sign on', |
login => 'users authenticated by institutional log-in', |
login => 'users authenticated by institutional log-in', |
email => 'users who provide a valid e-mail address for use as username', |
email => 'users verified by e-mail', |
); |
); |
# |
# |
# Populate $cancreate{'selfcreate'} array reference with types of user, for which self-creation of user accounts |
# Populate $cancreate{'selfcreate'} array reference with types of user, for which self-creation of user accounts |
# is permitted. |
# is permitted. |
# |
# |
|
|
my @statuses; |
my ($emailrules,$emailruleorder) = &Apache::lonnet::inst_userrules($dom,'email'); |
if (ref($domconfig{'inststatus'}) eq 'HASH') { |
|
if (ref($domconfig{'inststatus'}{'inststatusguest'}) eq 'ARRAY') { |
|
@statuses = @{$domconfig{'inststatus'}{'inststatusguest'}}; |
|
} |
|
} |
|
push(@statuses,'default'); |
|
|
|
|
my (@statuses,%email_rule); |
foreach my $item ('login','sso','email') { |
foreach my $item ('login','sso','email') { |
if ($item eq 'email') { |
if ($item eq 'email') { |
if ($env{'form.cancreate_email'}) { |
if ($env{'form.cancreate_email'}) { |
push(@{$cancreate{'selfcreate'}},'email'); |
if (@types) { |
push(@contexts,'selfcreateprocessing'); |
my @poss_statuses = &Apache::loncommon::get_env_multiple('form.selfassign'); |
foreach my $type (@statuses) { |
foreach my $status (@poss_statuses) { |
if ($type eq 'default') { |
if (grep(/^\Q$status\E$/,(@types,'default'))) { |
$cancreate{'selfcreateprocessing'}{$type} = $env{'form.cancreate_emailprocess'}; |
push(@statuses,$status); |
} else { |
} |
$cancreate{'selfcreateprocessing'}{$type} = $env{'form.cancreate_emailprocess_'.$type}; |
} |
|
$save_inststatus{'inststatusguest'} = \@statuses; |
|
} else { |
|
push(@statuses,'default'); |
|
} |
|
if (@statuses) { |
|
my %curr_rule; |
|
if (ref($curr_usercreation{'email_rule'}) eq 'ARRAY') { |
|
foreach my $type (@statuses) { |
|
$curr_rule{$type} = $curr_usercreation{'email_rule'}; |
|
} |
|
} elsif (ref($curr_usercreation{'email_rule'}) eq 'HASH') { |
|
foreach my $type (@statuses) { |
|
$curr_rule{$type} = $curr_usercreation{'email_rule'}{$type}; |
|
} |
|
} |
|
push(@{$cancreate{'selfcreate'}},'email'); |
|
push(@contexts,('selfcreateprocessing','emailverified','emailoptions')); |
|
my %curremaildom; |
|
if (ref($curr_usercreation{'cancreate'}{'emaildomain'}) eq 'HASH') { |
|
%curremaildom = %{$curr_usercreation{'cancreate'}{'emaildomain'}}; |
|
} |
|
foreach my $type (@statuses) { |
|
if ($env{'form.cancreate_emailprocess_'.$type} =~ /^(?:approval|automatic)$/) { |
|
$cancreate{'selfcreateprocessing'}{$type} = $env{'form.cancreate_emailprocess_'.$type}; |
|
} |
|
if ($env{'form.cancreate_usernameoptions_'.$type} =~ /^(?:all|first|free)$/) { |
|
$cancreate{'emailverified'}{$type} = $env{'form.cancreate_usernameoptions_'.$type}; |
|
} |
|
if ($env{'form.cancreate_emailoptions_'.$type} =~ /^(any|inst|noninst|custom)$/) { |
|
# |
|
# Retrieve rules (if any) governing types of e-mail address which may be used to verify a username. |
|
# |
|
my $chosen = $1; |
|
if (($chosen eq 'inst') || ($chosen eq 'noninst')) { |
|
my $emaildom; |
|
if ($env{'form.cancreate_emaildomain_'.$chosen.'_'.$type} =~ /^\@[^\@]+$/) { |
|
$emaildom = $env{'form.cancreate_emaildomain_'.$chosen.'_'.$type}; |
|
$cancreate{'emaildomain'}{$type}{$chosen} = $emaildom; |
|
if (ref($curremaildom{$type}) eq 'HASH') { |
|
if (exists($curremaildom{$type}{$chosen})) { |
|
if ($curremaildom{$type}{$chosen} ne $emaildom) { |
|
push(@{$changes{'cancreate'}},'emaildomain'); |
|
} |
|
} elsif ($emaildom ne '') { |
|
push(@{$changes{'cancreate'}},'emaildomain'); |
|
} |
|
} elsif ($emaildom ne '') { |
|
push(@{$changes{'cancreate'}},'emaildomain'); |
|
} |
|
} |
|
$cancreate{'emailoptions'}{$type} = $env{'form.cancreate_emailoptions_'.$type}; |
|
} elsif ($chosen eq 'custom') { |
|
my @possemail_rules = &Apache::loncommon::get_env_multiple('form.email_rule_'.$type); |
|
$email_rule{$type} = []; |
|
if (ref($emailrules) eq 'HASH') { |
|
foreach my $rule (@possemail_rules) { |
|
if (exists($emailrules->{$rule})) { |
|
push(@{$email_rule{$type}},$rule); |
|
} |
|
} |
|
} |
|
if (@{$email_rule{$type}}) { |
|
$cancreate{'emailoptions'}{$type} = 'custom'; |
|
if (ref($curr_rule{$type}) eq 'ARRAY') { |
|
if (@{$curr_rule{$type}} > 0) { |
|
foreach my $rule (@{$curr_rule{$type}}) { |
|
if (!grep(/^\Q$rule\E$/,@{$email_rule{$type}})) { |
|
push(@{$changes{'email_rule'}},$type); |
|
} |
|
} |
|
} |
|
foreach my $type (@{$email_rule{$type}}) { |
|
if (!grep(/^\Q$type\E$/,@{$curr_rule{$type}})) { |
|
push(@{$changes{'email_rule'}},$type); |
|
} |
|
} |
|
} else { |
|
push(@{$changes{'email_rule'}},$type); |
|
} |
|
} |
|
} else { |
|
$cancreate{'emailoptions'}{$type} = $env{'form.cancreate_emailoptions_'.$type}; |
|
} |
|
} |
|
} |
|
if (@types) { |
|
if (ref($curr_inststatus{'inststatusguest'}) eq 'ARRAY') { |
|
my @changed = &Apache::loncommon::compare_arrays(\@statuses,$curr_inststatus{'inststatusguest'}); |
|
if (@changed) { |
|
push(@{$changes{'inststatus'}},'inststatusguest'); |
|
} |
|
} else { |
|
push(@{$changes{'inststatus'}},'inststatusguest'); |
|
} |
|
} |
|
} else { |
|
delete($env{'form.cancreate_email'}); |
|
if (ref($curr_inststatus{'inststatusguest'}) eq 'ARRAY') { |
|
if (@{$curr_inststatus{'inststatusguest'}} > 0) { |
|
push(@{$changes{'inststatus'}},'inststatusguest'); |
|
} |
|
} |
|
} |
|
} else { |
|
$save_inststatus{'inststatusguest'} = []; |
|
if (ref($curr_inststatus{'inststatusguest'}) eq 'ARRAY') { |
|
if (@{$curr_inststatus{'inststatusguest'}} > 0) { |
|
push(@{$changes{'inststatus'}},'inststatusguest'); |
} |
} |
} |
} |
} |
} |
Line 9859 sub modify_selfcreation {
|
Line 10389 sub modify_selfcreation {
|
} |
} |
} |
} |
} |
} |
my (@email_rule,%userinfo,%savecaptcha); |
my (%userinfo,%savecaptcha); |
my ($infofields,$infotitles) = &Apache::loncommon::emailusername_info(); |
my ($infofields,$infotitles) = &Apache::loncommon::emailusername_info(); |
# |
# |
# Populate $cancreate{'emailusername'}{$type} hash ref with information fields (if new user will provide data |
# Populate $cancreate{'emailusername'}{$type} hash ref with information fields (if new user will provide data |
Line 9868 sub modify_selfcreation {
|
Line 10398 sub modify_selfcreation {
|
|
|
if ($env{'form.cancreate_email'}) { |
if ($env{'form.cancreate_email'}) { |
push(@contexts,'emailusername'); |
push(@contexts,'emailusername'); |
if (ref($types) eq 'ARRAY') { |
if (@statuses) { |
foreach my $type (@{$types}) { |
foreach my $type (@statuses) { |
if (ref($infofields) eq 'ARRAY') { |
if (ref($infofields) eq 'ARRAY') { |
foreach my $field (@{$infofields}) { |
foreach my $field (@{$infofields}) { |
if ($env{'form.canmodify_emailusername_'.$type.'_'.$field} =~ /^(required|optional)$/) { |
if ($env{'form.canmodify_emailusername_'.$type.'_'.$field} =~ /^(required|optional)$/) { |
Line 9881 sub modify_selfcreation {
|
Line 10411 sub modify_selfcreation {
|
} |
} |
# |
# |
# Populate $cancreate{'notify'} hash ref with names of Domain Coordinators who are to be notified of |
# Populate $cancreate{'notify'} hash ref with names of Domain Coordinators who are to be notified of |
# queued requests for self-creation of account using e-mail address as username |
# queued requests for self-creation of account verified by e-mail. |
# |
# |
|
|
my @approvalnotify = &Apache::loncommon::get_env_multiple('form.selfcreationnotifyapproval'); |
my @approvalnotify = &Apache::loncommon::get_env_multiple('form.selfcreationnotifyapproval'); |
Line 9901 sub modify_selfcreation {
|
Line 10431 sub modify_selfcreation {
|
push(@{$changes{'cancreate'}},'notify'); |
push(@{$changes{'cancreate'}},'notify'); |
} |
} |
|
|
# |
|
# Retrieve rules (if any) governing types of e-mail address which may be used as a username |
|
# |
|
@email_rule = &Apache::loncommon::get_env_multiple('form.email_rule'); |
|
&process_captcha('cancreate',\%changes,\%savecaptcha,$curr_usercreation{'cancreate'}); |
&process_captcha('cancreate',\%changes,\%savecaptcha,$curr_usercreation{'cancreate'}); |
if (ref($curr_usercreation{'email_rule'}) eq 'ARRAY') { |
|
if (@{$curr_usercreation{'email_rule'}} > 0) { |
|
foreach my $type (@{$curr_usercreation{'email_rule'}}) { |
|
if (!grep(/^\Q$type\E$/,@email_rule)) { |
|
push(@{$changes{'email_rule'}},$type); |
|
} |
|
} |
|
} |
|
if (@email_rule > 0) { |
|
foreach my $type (@email_rule) { |
|
if (!grep(/^\Q$type\E$/,@{$curr_usercreation{'email_rule'}})) { |
|
push(@{$changes{'email_rule'}},$type); |
|
} |
|
} |
|
} |
|
} elsif (@email_rule > 0) { |
|
push(@{$changes{'email_rule'}},@email_rule); |
|
} |
|
} |
} |
# |
# |
# Check if domain default is set appropriately, if self-creation of accounts is to be available for |
# Check if domain default is set appropriately, if self-creation of accounts is to be available for |
# institutional log-in. |
# institutional log-in. |
# |
# |
if (grep(/^login$/,@{$cancreate{'selfcreate'}})) { |
if (grep(/^login$/,@{$cancreate{'selfcreate'}})) { |
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom,1); |
|
if (!((($domdefaults{'auth_def'} =~/^krb/) && ($domdefaults{'auth_arg_def'} ne '')) || |
if (!((($domdefaults{'auth_def'} =~/^krb/) && ($domdefaults{'auth_arg_def'} ne '')) || |
($domdefaults{'auth_def'} eq 'localauth'))) { |
($domdefaults{'auth_def'} eq 'localauth'))) { |
$warningmsg = &mt('Although account creation has been set to be available for institutional logins, currently default authentication in this domain has not been set to support this.').' '. |
$warningmsg = &mt('Although account creation has been set to be available for institutional logins, currently default authentication in this domain has not been set to support this.').' '. |
Line 9949 sub modify_selfcreation {
|
Line 10456 sub modify_selfcreation {
|
# which the user may supply, if institutional data is unavailable. |
# which the user may supply, if institutional data is unavailable. |
# |
# |
if (($env{'form.cancreate_login'}) || ($env{'form.cancreate_sso'})) { |
if (($env{'form.cancreate_login'}) || ($env{'form.cancreate_sso'})) { |
if (ref($types) eq 'ARRAY') { |
if (@types) { |
if (@{$types} > 1) { |
@{$cancreate{'statustocreate'}} = &Apache::loncommon::get_env_multiple('form.statustocreate'); |
@{$cancreate{'statustocreate'}} = &Apache::loncommon::get_env_multiple('form.statustocreate'); |
push(@contexts,'statustocreate'); |
push(@contexts,'statustocreate'); |
foreach my $type (@types) { |
} else { |
|
undef($cancreate{'statustocreate'}); |
|
} |
|
foreach my $type (@{$types}) { |
|
my @modifiable = &Apache::loncommon::get_env_multiple('form.canmodify_'.$type); |
my @modifiable = &Apache::loncommon::get_env_multiple('form.canmodify_'.$type); |
foreach my $field (@fields) { |
foreach my $field (@fields) { |
if (grep(/^\Q$field\E$/,@modifiable)) { |
if (grep(/^\Q$field\E$/,@modifiable)) { |
Line 9967 sub modify_selfcreation {
|
Line 10470 sub modify_selfcreation {
|
} |
} |
} |
} |
if (ref($curr_usermodify{'selfcreate'}) eq 'HASH') { |
if (ref($curr_usermodify{'selfcreate'}) eq 'HASH') { |
foreach my $type (@{$types}) { |
foreach my $type (@types) { |
if (ref($curr_usermodify{'selfcreate'}{$type}) eq 'HASH') { |
if (ref($curr_usermodify{'selfcreate'}{$type}) eq 'HASH') { |
foreach my $field (@fields) { |
foreach my $field (@fields) { |
if ($save_usermodify{'selfcreate'}{$type}{$field} ne |
if ($save_usermodify{'selfcreate'}{$type}{$field} ne |
Line 9979 sub modify_selfcreation {
|
Line 10482 sub modify_selfcreation {
|
} |
} |
} |
} |
} else { |
} else { |
foreach my $type (@{$types}) { |
foreach my $type (@types) { |
push(@{$changes{'selfcreate'}},$type); |
push(@{$changes{'selfcreate'}},$type); |
} |
} |
} |
} |
Line 10028 sub modify_selfcreation {
|
Line 10531 sub modify_selfcreation {
|
} |
} |
} elsif (ref($curr_usercreation{'cancreate'}{$item}) eq 'HASH') { |
} elsif (ref($curr_usercreation{'cancreate'}{$item}) eq 'HASH') { |
if (ref($cancreate{$item}) eq 'HASH') { |
if (ref($cancreate{$item}) eq 'HASH') { |
foreach my $curr (keys(%{$curr_usercreation{'cancreate'}{$item}})) { |
foreach my $type (keys(%{$curr_usercreation{'cancreate'}{$item}})) { |
if (ref($curr_usercreation{'cancreate'}{$item}{$curr}) eq 'HASH') { |
if (ref($curr_usercreation{'cancreate'}{$item}{$type}) eq 'HASH') { |
foreach my $field (keys(%{$curr_usercreation{'cancreate'}{$item}{$curr}})) { |
foreach my $field (keys(%{$curr_usercreation{'cancreate'}{$item}{$type}})) { |
unless ($curr_usercreation{'cancreate'}{$item}{$curr}{$field} eq $cancreate{$item}{$curr}{$field}) { |
unless ($curr_usercreation{'cancreate'}{$item}{$type}{$field} eq $cancreate{$item}{$type}{$field}) { |
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
push(@{$changes{'cancreate'}},$item); |
push(@{$changes{'cancreate'}},$item); |
} |
} |
} |
} |
} |
} |
} elsif ($item eq 'selfcreateprocessing') { |
} elsif (($item eq 'selfcreateprocessing') || ($item eq 'emailverified') || ($item eq 'emailoptions')) { |
if ($cancreate{$item}{$curr} ne $curr_usercreation{'cancreate'}{$item}{$curr}) { |
if ($cancreate{$item}{$type} ne $curr_usercreation{'cancreate'}{$item}{$type}) { |
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
|
push(@{$changes{'cancreate'}},$item); |
|
} |
|
} |
|
} else { |
|
if (!$cancreate{$item}{$curr}) { |
|
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
push(@{$changes{'cancreate'}},$item); |
push(@{$changes{'cancreate'}},$item); |
} |
} |
} |
} |
} |
} |
} |
} |
foreach my $field (keys(%{$cancreate{$item}})) { |
foreach my $type (keys(%{$cancreate{$item}})) { |
if (ref($cancreate{$item}{$field}) eq 'HASH') { |
if (ref($cancreate{$item}{$type}) eq 'HASH') { |
foreach my $inner (keys(%{$cancreate{$item}{$field}})) { |
foreach my $field (keys(%{$cancreate{$item}{$type}})) { |
if (ref($curr_usercreation{'cancreate'}{$item}{$field}) eq 'HASH') { |
if (ref($curr_usercreation{'cancreate'}{$item}{$type}) eq 'HASH') { |
unless ($curr_usercreation{'cancreate'}{$item}{$field}{$inner} eq $cancreate{$item}{$field}{$inner}) { |
unless ($curr_usercreation{'cancreate'}{$item}{$type}{$field} eq $cancreate{$item}{$type}{$field}) { |
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
push(@{$changes{'cancreate'}},$item); |
push(@{$changes{'cancreate'}},$item); |
} |
} |
Line 10066 sub modify_selfcreation {
|
Line 10563 sub modify_selfcreation {
|
} |
} |
} |
} |
} |
} |
} elsif ($item eq 'selfcreateprocessing') { |
} elsif (($item eq 'selfcreateprocessing') || ($item eq 'emailverified') || ($item eq 'emailoptions')) { |
if ($cancreate{$item}{$field} ne $curr_usercreation{'cancreate'}{$item}{$field}) { |
if ($cancreate{$item}{$type} ne $curr_usercreation{'cancreate'}{$item}{$type}) { |
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
|
push(@{$changes{'cancreate'}},$item); |
|
} |
|
} |
|
} else { |
|
if (!$curr_usercreation{'cancreate'}{$item}{$field}) { |
|
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
push(@{$changes{'cancreate'}},$item); |
push(@{$changes{'cancreate'}},$item); |
} |
} |
Line 10088 sub modify_selfcreation {
|
Line 10579 sub modify_selfcreation {
|
push(@{$changes{'cancreate'}},$item); |
push(@{$changes{'cancreate'}},$item); |
} |
} |
} |
} |
} elsif (ref($cancreate{$item}) eq 'HASH') { |
} |
if (!$cancreate{$item}{$curr_usercreation{'cancreate'}{$item}}) { |
} elsif (($item eq 'selfcreateprocessing') || ($item eq 'emailverified') || ($item eq 'emailoptions')) { |
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
if (ref($cancreate{$item}) eq 'HASH') { |
push(@{$changes{'cancreate'}},$item); |
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
} |
push(@{$changes{'cancreate'}},$item); |
} |
} |
} |
} |
} elsif ($item eq 'emailusername') { |
} elsif ($item eq 'emailusername') { |
Line 10125 sub modify_selfcreation {
|
Line 10616 sub modify_selfcreation {
|
if (ref($cancreate{'selfcreateprocessing'}) eq 'HASH') { |
if (ref($cancreate{'selfcreateprocessing'}) eq 'HASH') { |
$save_usercreate{'cancreate'}{'selfcreateprocessing'} = $cancreate{'selfcreateprocessing'}; |
$save_usercreate{'cancreate'}{'selfcreateprocessing'} = $cancreate{'selfcreateprocessing'}; |
} |
} |
|
if (ref($cancreate{'emailverified'}) eq 'HASH') { |
|
$save_usercreate{'cancreate'}{'emailverified'} = $cancreate{'emailverified'}; |
|
} |
|
if (ref($cancreate{'emailoptions'}) eq 'HASH') { |
|
$save_usercreate{'cancreate'}{'emailoptions'} = $cancreate{'emailoptions'}; |
|
} |
|
if (ref($cancreate{'emaildomain'}) eq 'HASH') { |
|
$save_usercreate{'cancreate'}{'emaildomain'} = $cancreate{'emaildomain'}; |
|
} |
if (ref($cancreate{'statustocreate'}) eq 'ARRAY') { |
if (ref($cancreate{'statustocreate'}) eq 'ARRAY') { |
$save_usercreate{'cancreate'}{'statustocreate'} = $cancreate{'statustocreate'}; |
$save_usercreate{'cancreate'}{'statustocreate'} = $cancreate{'statustocreate'}; |
} |
} |
Line 10132 sub modify_selfcreation {
|
Line 10632 sub modify_selfcreation {
|
$save_usercreate{'cancreate'}{'shibenv'} = $cancreate{'shibenv'}; |
$save_usercreate{'cancreate'}{'shibenv'} = $cancreate{'shibenv'}; |
} |
} |
$save_usercreate{'cancreate'}{'emailusername'} = $cancreate{'emailusername'}; |
$save_usercreate{'cancreate'}{'emailusername'} = $cancreate{'emailusername'}; |
$save_usercreate{'email_rule'} = \@email_rule; |
$save_usercreate{'email_rule'} = \%email_rule; |
|
|
my %userconfig_hash = ( |
my %userconfig_hash = ( |
usercreation => \%save_usercreate, |
usercreation => \%save_usercreate, |
usermodification => \%save_usermodify, |
usermodification => \%save_usermodify, |
|
inststatus => \%save_inststatus, |
); |
); |
|
|
my $putresult = &Apache::lonnet::put_dom('configuration',\%userconfig_hash, |
my $putresult = &Apache::lonnet::put_dom('configuration',\%userconfig_hash, |
$dom); |
$dom); |
# |
# |
# Accumulate details of changes to domain cofiguration for self-creation of usernames in $resulttext |
# Accumulate details of changes to domain configuration for self-creation of usernames in $resulttext |
# |
# |
if ($putresult eq 'ok') { |
if ($putresult eq 'ok') { |
if (keys(%changes) > 0) { |
if (keys(%changes) > 0) { |
Line 10149 sub modify_selfcreation {
|
Line 10651 sub modify_selfcreation {
|
if (ref($changes{'cancreate'}) eq 'ARRAY') { |
if (ref($changes{'cancreate'}) eq 'ARRAY') { |
my %lt = &selfcreation_types(); |
my %lt = &selfcreation_types(); |
foreach my $type (@{$changes{'cancreate'}}) { |
foreach my $type (@{$changes{'cancreate'}}) { |
my $chgtext; |
my $chgtext = ''; |
if ($type eq 'selfcreate') { |
if ($type eq 'selfcreate') { |
if (@{$cancreate{$type}} == 0) { |
if (@{$cancreate{$type}} == 0) { |
$chgtext .= &mt('Self creation of a new user account is not permitted.'); |
$chgtext .= &mt('Self creation of a new user account is not permitted.'); |
Line 10164 sub modify_selfcreation {
|
Line 10666 sub modify_selfcreation {
|
if (grep(/^(login|sso)$/,@{$cancreate{$type}})) { |
if (grep(/^(login|sso)$/,@{$cancreate{$type}})) { |
if (ref($cancreate{'statustocreate'}) eq 'ARRAY') { |
if (ref($cancreate{'statustocreate'}) eq 'ARRAY') { |
if (@{$cancreate{'statustocreate'}} == 0) { |
if (@{$cancreate{'statustocreate'}} == 0) { |
$chgtext .= '<br />'. |
$chgtext .= '<span class="LC_warning">'. |
'<span class="LC_warning">'. |
&mt("However, no institutional affiliations (including 'other') are currently permitted to create accounts via log-in or single sign-on."). |
&mt("However, no institutional affiliations (including 'other') are currently permitted to create accounts."). |
'</span><br />'; |
'</span>'; |
|
} |
} |
} |
} |
} |
} |
|
if (grep(/^email$/,@{$cancreate{$type}})) { |
|
if (!@statuses) { |
|
$chgtext .= '<span class="LC_warning">'. |
|
&mt("However, e-mail verification is currently set to 'unavailable' for all user types (including 'other'), so self-creation of accounts is not possible for non-institutional log-in."). |
|
'</span><br />'; |
|
|
|
} |
|
} |
} |
} |
} |
} |
} elsif ($type eq 'shibenv') { |
} elsif ($type eq 'shibenv') { |
if (keys(%{$cancreate{$type}}) == 0) { |
if (keys(%{$cancreate{$type}}) == 0) { |
$chgtext .= &mt('Shibboleth-autheticated user does not use environment variables to set user information'); |
$chgtext .= &mt('Shibboleth-autheticated user does not use environment variables to set user information').'<br />'; |
} else { |
} else { |
$chgtext .= &mt('Shibboleth-autheticated user information set from environment variables, as follows:'). |
$chgtext .= &mt('Shibboleth-autheticated user information set from environment variables, as follows:'). |
'<ul>'; |
'<ul>'; |
Line 10188 sub modify_selfcreation {
|
Line 10697 sub modify_selfcreation {
|
} |
} |
} |
} |
$chgtext .= '</ul>'; |
$chgtext .= '</ul>'; |
} |
} |
} elsif ($type eq 'statustocreate') { |
} elsif ($type eq 'statustocreate') { |
if ((ref($cancreate{'selfcreate'}) eq 'ARRAY') && |
if ((ref($cancreate{'selfcreate'}) eq 'ARRAY') && |
(ref($cancreate{'statustocreate'}) eq 'ARRAY')) { |
(ref($cancreate{'statustocreate'}) eq 'ARRAY')) { |
Line 10201 sub modify_selfcreation {
|
Line 10710 sub modify_selfcreation {
|
&mt("However, no institutional affiliations (including 'other') are currently permitted to create accounts."). |
&mt("However, no institutional affiliations (including 'other') are currently permitted to create accounts."). |
'</span>'; |
'</span>'; |
} |
} |
} elsif (ref($usertypes) eq 'HASH') { |
} elsif (keys(%usertypes) > 0) { |
if (grep(/^(login|sso)$/,@{$cancreate{'selfcreate'}})) { |
if (grep(/^(login|sso)$/,@{$cancreate{'selfcreate'}})) { |
$chgtext .= &mt('Creation of a new account for an institutional user is restricted to the following institutional affiliation(s):'); |
$chgtext .= &mt('Creation of a new account for an institutional user is restricted to the following institutional affiliation(s):'); |
} else { |
} else { |
Line 10212 sub modify_selfcreation {
|
Line 10721 sub modify_selfcreation {
|
if ($case eq 'default') { |
if ($case eq 'default') { |
$chgtext .= '<li>'.$othertitle.'</li>'; |
$chgtext .= '<li>'.$othertitle.'</li>'; |
} else { |
} else { |
$chgtext .= '<li>'.$usertypes->{$case}.'</li>'; |
$chgtext .= '<li>'.$usertypes{$case}.'</li>'; |
} |
} |
} |
} |
$chgtext .= '</ul>'; |
$chgtext .= '</ul>'; |
if (!grep(/^(login|sso)$/,@{$cancreate{'selfcreate'}})) { |
if (!grep(/^(login|sso)$/,@{$cancreate{'selfcreate'}})) { |
$chgtext .= '<br /><span class="LC_warning">'. |
$chgtext .= '<span class="LC_warning">'. |
&mt('However, users authenticated by institutional login/single sign on are not currently permitted to create accounts.'). |
&mt('However, users authenticated by institutional login/single sign on are not currently permitted to create accounts.'). |
'</span>'; |
'</span>'; |
} |
} |
Line 10229 sub modify_selfcreation {
|
Line 10738 sub modify_selfcreation {
|
$chgtext .= &mt('Although institutional affiliations permitted to create accounts were changed, self creation of accounts is not currently permitted for any authentication types.'); |
$chgtext .= &mt('Although institutional affiliations permitted to create accounts were changed, self creation of accounts is not currently permitted for any authentication types.'); |
} |
} |
} |
} |
|
$chgtext .= '<br />'; |
} |
} |
} elsif ($type eq 'selfcreateprocessing') { |
} elsif ($type eq 'selfcreateprocessing') { |
my %choices = &Apache::lonlocal::texthash ( |
my %choices = &Apache::lonlocal::texthash ( |
automatic => 'Automatic approval', |
automatic => 'Automatic approval', |
approval => 'Queued for approval', |
approval => 'Queued for approval', |
); |
); |
if (@statuses > 1) { |
if (@types) { |
$chgtext .= &mt('Processing of requests to create account with e-mail address as username set as follows:'). |
if (@statuses) { |
'<ul>'; |
$chgtext .= &mt('Processing of requests to create account with e-mail verification set as follows:'). |
foreach my $type (@statuses) { |
'<ul>'; |
if ($type eq 'default') { |
foreach my $status (@statuses) { |
$chgtext .= '<li>'.$othertitle.' -- '.$choices{$cancreate{'selfcreateprocessing'}{$type}}.'</li>'; |
if ($status eq 'default') { |
} else { |
$chgtext .= '<li>'.$othertitle.' -- '.$choices{$cancreate{'selfcreateprocessing'}{$status}}.'</li>'; |
$chgtext .= '<li>'.$usertypes->{$type}.' -- '.$choices{$cancreate{'selfcreateprocessing'}{$type}}.'</li>'; |
} else { |
} |
$chgtext .= '<li>'.$usertypes{$status}.' -- '.$choices{$cancreate{'selfcreateprocessing'}{$status}}.'</li>'; |
} |
} |
$chgtext .= '</ul>'; |
} |
|
$chgtext .= '</ul>'; |
|
} |
} else { |
} else { |
$chgtext .= &mt('Processing of requests to create account with e-mail address as username set to: "[_1]"', |
$chgtext .= &mt('Processing of requests to create account with e-mail verification set to: "[_1]"', |
$choices{$cancreate{'selfcreateprocessing'}{'default'}}); |
$choices{$cancreate{'selfcreateprocessing'}{'default'}}); |
|
} |
|
} elsif ($type eq 'emailverified') { |
|
my %options = &Apache::lonlocal::texthash ( |
|
all => 'Same as e-mail', |
|
first => 'Omit @domain', |
|
free => 'Free to choose', |
|
); |
|
if (@types) { |
|
if (@statuses) { |
|
$chgtext .= &mt('For self-created accounts verified by e-mail address, username is set as follows:'). |
|
'<ul>'; |
|
foreach my $status (@statuses) { |
|
if ($status eq 'default') { |
|
$chgtext .= '<li>'.$othertitle.' -- '.$options{$cancreate{'emailverified'}{$status}}.'</li>'; |
|
} else { |
|
$chgtext .= '<li>'.$usertypes{$status}.' -- '.$options{$cancreate{'emailverified'}{$status}}.'</li>'; |
|
} |
|
} |
|
$chgtext .= '</ul>'; |
|
} |
|
} else { |
|
$chgtext .= &mt("For self-created accounts verified by e-mail address, user's username is: '[_1]'", |
|
$options{$cancreate{'emailverified'}{'default'}}); |
|
} |
|
} elsif ($type eq 'emailoptions') { |
|
my %options = &Apache::lonlocal::texthash ( |
|
any => 'Any e-mail', |
|
inst => 'Institutional only', |
|
noninst => 'Non-institutional only', |
|
custom => 'Custom restrictions', |
|
); |
|
if (@types) { |
|
if (@statuses) { |
|
$chgtext .= &mt('For self-created accounts verified by e-mail address, requirements for e-mail address are as follows:'). |
|
'<ul>'; |
|
foreach my $status (@statuses) { |
|
if ($type eq 'default') { |
|
$chgtext .= '<li>'.$othertitle.' -- '.$options{$cancreate{'emailoptions'}{$status}}.'</li>'; |
|
} else { |
|
$chgtext .= '<li>'.$usertypes{$status}.' -- '.$options{$cancreate{'emailoptions'}{$status}}.'</li>'; |
|
} |
|
} |
|
$chgtext .= '</ul>'; |
|
} |
|
} else { |
|
if ($cancreate{'emailoptions'}{'default'} eq 'any') { |
|
$chgtext .= &mt('For self-created accounts verified by e-mail address, any e-mail may be used'); |
|
} else { |
|
$chgtext .= &mt('For self-created accounts verified by e-mail address, e-mail restricted to: "[_1]"', |
|
$options{$cancreate{'emailoptions'}{'default'}}); |
|
} |
|
} |
|
} elsif ($type eq 'emaildomain') { |
|
my $output; |
|
if (@statuses) { |
|
foreach my $type (@statuses) { |
|
if (ref($cancreate{'emaildomain'}{$type}) eq 'HASH') { |
|
if ($cancreate{'emailoptions'}{$type} eq 'inst') { |
|
if ($type eq 'default') { |
|
if ((ref($cancreate{'emaildomain'}{$type}) ne 'HASH') || |
|
($cancreate{'emaildomain'}{$type}{'inst'} eq '')) { |
|
$output = '<li>'.$othertitle.' -- '.&mt('No restriction on e-mail domain').'</li>'; |
|
} else { |
|
$output = '<li>'.$othertitle.' -- '.&mt("User's e-mail address needs to end: [_1]", |
|
$cancreate{'emaildomain'}{$type}{'inst'}).'</li>'; |
|
} |
|
} else { |
|
if ((ref($cancreate{'emaildomain'}{$type}) ne 'HASH') || |
|
($cancreate{'emaildomain'}{$type}{'inst'} eq '')) { |
|
$output = '<li>'.$usertypes{$type}.' -- '.&mt('No restriction on e-mail domain').'</li>'; |
|
} else { |
|
$output = '<li>'.$usertypes{$type}.' -- '.&mt("User's e-mail address needs to end: [_1]", |
|
$cancreate{'emaildomain'}{$type}{'inst'}).'</li>'; |
|
} |
|
} |
|
} elsif ($cancreate{'emailoptions'}{$type} eq 'noninst') { |
|
if ($type eq 'default') { |
|
if ((ref($cancreate{'emaildomain'}{$type}) ne 'HASH') || |
|
($cancreate{'emaildomain'}{$type}{'noninst'} eq '')) { |
|
$output = '<li>'.$othertitle.' -- '.&mt('No restriction on e-mail domain').'</li>'; |
|
} else { |
|
$output = '<li>'.$othertitle.' -- '.&mt("User's e-mail address must not end: [_1]", |
|
$cancreate{'emaildomain'}{$type}{'noninst'}).'</li>'; |
|
} |
|
} else { |
|
if ((ref($cancreate{'emaildomain'}{$type}) ne 'HASH') || |
|
($cancreate{'emaildomain'}{$type}{'noninst'} eq '')) { |
|
$output = '<li>'.$usertypes{$type}.' -- '.&mt('No restriction on e-mail domain').'</li>'; |
|
} else { |
|
$output = '<li>'.$usertypes{$type}.' -- '.&mt("User's e-mail address must not end: [_1]", |
|
$cancreate{'emaildomain'}{$type}{'noninst'}).'</li>'; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
if ($output ne '') { |
|
$chgtext .= &mt('For self-created accounts verified by e-mail address:'). |
|
'<ul>'.$output.'</ul>'; |
} |
} |
} elsif ($type eq 'captcha') { |
} elsif ($type eq 'captcha') { |
if ($savecaptcha{$type} eq 'notused') { |
if ($savecaptcha{$type} eq 'notused') { |
Line 10285 sub modify_selfcreation {
|
Line 10897 sub modify_selfcreation {
|
} |
} |
} elsif ($type eq 'emailusername') { |
} elsif ($type eq 'emailusername') { |
if (ref($cancreate{'emailusername'}) eq 'HASH') { |
if (ref($cancreate{'emailusername'}) eq 'HASH') { |
if (ref($types) eq 'ARRAY') { |
if (@statuses) { |
foreach my $type (@{$types}) { |
foreach my $type (@statuses) { |
if (ref($cancreate{'emailusername'}{$type}) eq 'HASH') { |
if (ref($cancreate{'emailusername'}{$type}) eq 'HASH') { |
if (keys(%{$cancreate{'emailusername'}{$type}}) > 0) { |
if (keys(%{$cancreate{'emailusername'}{$type}}) > 0) { |
$chgtext .= &mt('When self-creating account with e-mail as username, the following information will be provided by [_1]:',"'$usertypes->{$type}'"). |
$chgtext .= &mt('When self-creating account with e-mail verification, the following information will be provided by [_1]:',"'$usertypes{$type}'"). |
'<ul>'; |
'<ul>'; |
foreach my $field (@{$infofields}) { |
foreach my $field (@{$infofields}) { |
if ($cancreate{'emailusername'}{$type}{$field}) { |
if ($cancreate{'emailusername'}{$type}{$field}) { |
Line 10298 sub modify_selfcreation {
|
Line 10910 sub modify_selfcreation {
|
} |
} |
$chgtext .= '</ul>'; |
$chgtext .= '</ul>'; |
} else { |
} else { |
$chgtext .= &mt('When self creating account with e-mail as username, no information besides e-mail address will be provided by [_1].',"'$usertypes->{$type}'").'<br />'; |
$chgtext .= &mt('When self creating account with e-mail verification, no information besides e-mail address will be provided by [_1].',"'$usertypes{$type}'").'<br />'; |
} |
} |
} else { |
} else { |
$chgtext .= &mt('When self creating account with e-mail as username, no information besides e-mail address will be provided by [_1].',"'$usertypes->{$type}'").'<br />'; |
$chgtext .= &mt('When self creating account with e-mail verification, no information besides e-mail address will be provided by [_1].',"'$usertypes{$type}'").'<br />'; |
} |
} |
} |
} |
} |
} |
} |
} |
} elsif ($type eq 'notify') { |
} elsif ($type eq 'notify') { |
$chgtext = &mt('No Domain Coordinators will receive notification of username requests requiring approval.'); |
my $numapprove = 0; |
if (ref($changes{'cancreate'}) eq 'ARRAY') { |
if (ref($changes{'cancreate'}) eq 'ARRAY') { |
if ((grep(/^notify$/,@{$changes{'cancreate'}})) && (ref($cancreate{'notify'}) eq 'HASH')) { |
if ((grep(/^notify$/,@{$changes{'cancreate'}})) && (ref($cancreate{'notify'}) eq 'HASH')) { |
if ($cancreate{'notify'}{'approval'}) { |
if ($cancreate{'notify'}{'approval'}) { |
$chgtext = &mt('Notification of username requests requiring approval will be sent to: ').$cancreate{'notify'}{'approval'}; |
$chgtext .= &mt('Notification of username requests requiring approval will be sent to: ').$cancreate{'notify'}{'approval'}; |
|
$numapprove ++; |
} |
} |
} |
} |
} |
} |
|
unless ($numapprove) { |
|
$chgtext .= &mt('No Domain Coordinators will receive notification of username requests requiring approval.'); |
|
} |
} |
} |
if ($chgtext) { |
if ($chgtext) { |
$resulttext .= '<li>'.$chgtext.'</li>'; |
$resulttext .= '<li>'.$chgtext.'</li>'; |
} |
} |
} |
} |
} |
} |
if (ref($changes{'email_rule'}) eq 'ARRAY') { |
if ((ref($changes{'email_rule'}) eq 'ARRAY') && (@{$changes{'email_rule'}} > 0)) { |
my ($emailrules,$emailruleorder) = |
my ($emailrules,$emailruleorder) = |
&Apache::lonnet::inst_userrules($dom,'email'); |
&Apache::lonnet::inst_userrules($dom,'email'); |
my $chgtext = '<ul>'; |
foreach my $type (@{$changes{'email_rule'}}) { |
foreach my $type (@email_rule) { |
if (ref($email_rule{$type}) eq 'ARRAY') { |
if (ref($emailrules->{$type}) eq 'HASH') { |
my $chgtext = '<ul>'; |
$chgtext .= '<li>'.$emailrules->{$type}{'name'}.'</li>'; |
foreach my $rule (@{$email_rule{$type}}) { |
|
if (ref($emailrules->{$rule}) eq 'HASH') { |
|
$chgtext .= '<li>'.$emailrules->{$rule}{'name'}.'</li>'; |
|
} |
|
} |
|
$chgtext .= '</ul>'; |
|
my $typename; |
|
if (@types) { |
|
if ($type eq 'default') { |
|
$typename = $othertitle; |
|
} else { |
|
$typename = $usertypes{$type}; |
|
} |
|
$chgtext .= &mt('(Affiliation: [_1])',$typename); |
|
} |
|
if (@{$email_rule{$type}} > 0) { |
|
$resulttext .= '<li>'. |
|
&mt('Accounts may not be created by users verified by e-mail, for e-mail addresses of the following types: ', |
|
$usertypes{$type}). |
|
$chgtext. |
|
'</li>'; |
|
} else { |
|
$resulttext .= '<li>'. |
|
&mt('There are now no restrictions on e-mail addresses which may be used for verification when a user requests an account.'). |
|
'</li>'. |
|
&mt('(Affiliation: [_1])',$typename); |
|
} |
} |
} |
} |
} |
$chgtext .= '</ul>'; |
} |
if (@email_rule > 0) { |
if (ref($changes{'inststatus'}) eq 'ARRAY') { |
$resulttext .= '<li>'. |
if (ref($save_inststatus{'inststatusguest'}) eq 'ARRAY') { |
&mt('Accounts may not be created by users self-enrolling with e-mail addresses of the following types: '). |
if (@{$save_inststatus{'inststatusguest'}} > 0) { |
$chgtext. |
my $chgtext = '<ul>'; |
'</li>'; |
foreach my $type (@{$save_inststatus{'inststatusguest'}}) { |
} else { |
$chgtext .= '<li>'.$usertypes{$type}.'</li>'; |
$resulttext .= '<li>'. |
} |
&mt('There are now no restrictions on e-mail addresses which may be used as a username when self-enrolling.'). |
$chgtext .= '</ul>'; |
'</li>'; |
$resulttext .= '<li>'. |
|
&mt('A user will self-report one of the following affiliations when requesting an account verified by e-mail: '). |
|
$chgtext. |
|
'</li>'; |
|
} else { |
|
$resulttext .= '<li>'. |
|
&mt('No affiliations available for self-reporting when requesting an account verified by e-mail.'). |
|
'</li>'; |
|
} |
} |
} |
} |
} |
if (ref($changes{'selfcreate'}) eq 'ARRAY') { |
if (ref($changes{'selfcreate'}) eq 'ARRAY') { |
Line 10347 sub modify_selfcreation {
|
Line 10997 sub modify_selfcreation {
|
my %fieldtitles = &Apache::loncommon::personal_data_fieldtitles(); |
my %fieldtitles = &Apache::loncommon::personal_data_fieldtitles(); |
foreach my $type (@{$changes{'selfcreate'}}) { |
foreach my $type (@{$changes{'selfcreate'}}) { |
my $typename = $type; |
my $typename = $type; |
if (ref($usertypes) eq 'HASH') { |
if (keys(%usertypes) > 0) { |
if ($usertypes->{$type} ne '') { |
if ($usertypes{$type} ne '') { |
$typename = $usertypes->{$type}; |
$typename = $usertypes{$type}; |
} |
} |
} |
} |
my @modifiable; |
my @modifiable; |
Line 10372 sub modify_selfcreation {
|
Line 11022 sub modify_selfcreation {
|
$resulttext .= '</ul></li>'; |
$resulttext .= '</ul></li>'; |
} |
} |
$resulttext .= '</ul>'; |
$resulttext .= '</ul>'; |
|
my $cachetime = 24*60*60; |
|
$domdefaults{'inststatusguest'} = $save_inststatus{'inststatusguest'}; |
|
&Apache::lonnet::do_cache_new('domdefaults',$dom,\%domdefaults,$cachetime); |
|
if (ref($lastactref) eq 'HASH') { |
|
$lastactref->{'domdefaults'} = 1; |
|
} |
} else { |
} else { |
$resulttext = &mt('No changes made to self-creation settings'); |
$resulttext = &mt('No changes made to self-creation settings'); |
} |
} |
Line 10655 sub modify_defaults {
|
Line 11311 sub modify_defaults {
|
} |
} |
my @todelete = &Apache::loncommon::get_env_multiple('form.inststatus_delete'); |
my @todelete = &Apache::loncommon::get_env_multiple('form.inststatus_delete'); |
my @allpos; |
my @allpos; |
my %guests; |
|
my %alltypes; |
my %alltypes; |
my ($currtitles,$currguests,$currorder); |
my @inststatusguest; |
|
if (ref($currinststatus) eq 'HASH') { |
|
if (ref($currinststatus->{'inststatusguest'}) eq 'ARRAY') { |
|
foreach my $type (@{$currinststatus->{'inststatusguest'}}) { |
|
unless (grep(/^\Q$type\E$/,@todelete)) { |
|
push(@inststatusguest,$type); |
|
} |
|
} |
|
} |
|
} |
|
my ($currtitles,$currorder); |
if (ref($currinststatus) eq 'HASH') { |
if (ref($currinststatus) eq 'HASH') { |
if (ref($currinststatus->{'inststatusorder'}) eq 'ARRAY') { |
if (ref($currinststatus->{'inststatusorder'}) eq 'ARRAY') { |
foreach my $type (@{$currinststatus->{'inststatusorder'}}) { |
foreach my $type (@{$currinststatus->{'inststatusorder'}}) { |
Line 10672 sub modify_defaults {
|
Line 11337 sub modify_defaults {
|
$allpos[$position] = $type; |
$allpos[$position] = $type; |
$alltypes{$type} = $env{'form.inststatus_title_'.$type}; |
$alltypes{$type} = $env{'form.inststatus_title_'.$type}; |
$alltypes{$type} =~ s/`//g; |
$alltypes{$type} =~ s/`//g; |
if ($env{'form.inststatus_guest_'.$type}) { |
|
$guests{$type} = 1; |
|
} |
|
} |
} |
} |
} |
if (ref($currinststatus->{'inststatusguest'}) eq 'ARRAY') { |
|
$currguests = join(',',@{$currinststatus->{'inststatusguest'}}); |
|
} |
|
$currorder = join(',',@{$currinststatus->{'inststatusorder'}}); |
$currorder = join(',',@{$currinststatus->{'inststatusorder'}}); |
$currtitles =~ s/,$//; |
$currtitles =~ s/,$//; |
} |
} |
Line 10688 sub modify_defaults {
|
Line 11347 sub modify_defaults {
|
my $newtype = $env{'form.addinststatus'}; |
my $newtype = $env{'form.addinststatus'}; |
$newtype =~ s/\W//g; |
$newtype =~ s/\W//g; |
unless (exists($alltypes{$newtype})) { |
unless (exists($alltypes{$newtype})) { |
if ($env{'form.addinststatus_guest'}) { |
|
$guests{$newtype} = 1; |
|
} |
|
$alltypes{$newtype} = $env{'form.addinststatus_title'}; |
$alltypes{$newtype} = $env{'form.addinststatus_title'}; |
$alltypes{$newtype} =~ s/`//g; |
$alltypes{$newtype} =~ s/`//g; |
my $position = $env{'form.addinststatus_pos'}; |
my $position = $env{'form.addinststatus_pos'}; |
Line 10700 sub modify_defaults {
|
Line 11356 sub modify_defaults {
|
} |
} |
} |
} |
} |
} |
my (@orderedstatus,@orderedguests); |
my @orderedstatus; |
foreach my $type (@allpos) { |
foreach my $type (@allpos) { |
unless (($type eq '') || (grep(/^\Q$type\E$/,@orderedstatus))) { |
unless (($type eq '') || (grep(/^\Q$type\E$/,@orderedstatus))) { |
push(@orderedstatus,$type); |
push(@orderedstatus,$type); |
if ($guests{$type}) { |
|
push(@orderedguests,$type); |
|
} |
|
} |
} |
} |
} |
foreach my $type (keys(%alltypes)) { |
foreach my $type (keys(%alltypes)) { |
Line 10717 sub modify_defaults {
|
Line 11370 sub modify_defaults {
|
$defaults_hash{'inststatus'} = { |
$defaults_hash{'inststatus'} = { |
inststatustypes => \%alltypes, |
inststatustypes => \%alltypes, |
inststatusorder => \@orderedstatus, |
inststatusorder => \@orderedstatus, |
inststatusguest => \@orderedguests, |
inststatusguest => \@inststatusguest, |
}; |
}; |
if (ref($defaults_hash{'inststatus'}) eq 'HASH') { |
if (ref($defaults_hash{'inststatus'}) eq 'HASH') { |
foreach my $item ('inststatustypes','inststatusorder','inststatusguest') { |
foreach my $item ('inststatustypes','inststatusorder','inststatusguest') { |
Line 10727 sub modify_defaults {
|
Line 11380 sub modify_defaults {
|
if ($currorder ne join(',',@orderedstatus)) { |
if ($currorder ne join(',',@orderedstatus)) { |
$changes{'inststatus'}{'inststatusorder'} = 1; |
$changes{'inststatus'}{'inststatusorder'} = 1; |
} |
} |
if ($currguests ne join(',',@orderedguests)) { |
|
$changes{'inststatus'}{'inststatusguest'} = 1; |
|
} |
|
my $newtitles; |
my $newtitles; |
foreach my $item (@orderedstatus) { |
foreach my $item (@orderedstatus) { |
$newtitles .= $alltypes{$item}.','; |
$newtitles .= $alltypes{$item}.','; |
Line 10748 sub modify_defaults {
|
Line 11398 sub modify_defaults {
|
foreach my $item (sort(keys(%changes))) { |
foreach my $item (sort(keys(%changes))) { |
if ($item eq 'inststatus') { |
if ($item eq 'inststatus') { |
if (ref($changes{'inststatus'}) eq 'HASH') { |
if (ref($changes{'inststatus'}) eq 'HASH') { |
if (($changes{'inststatus'}{'inststatustypes'}) || $changes{'inststatus'}{'inststatusorder'}) { |
if (@orderedstatus) { |
$resulttext .= '<li>'.&mt('Institutional user status types set to:').' '; |
$resulttext .= '<li>'.&mt('Institutional user status types set to:').' '; |
foreach my $type (@orderedstatus) { |
foreach my $type (@orderedstatus) { |
$resulttext .= $alltypes{$type}.', '; |
$resulttext .= $alltypes{$type}.', '; |
} |
} |
$resulttext =~ s/, $//; |
$resulttext =~ s/, $//; |
$resulttext .= '</li>'; |
$resulttext .= '</li>'; |
} |
} else { |
if ($changes{'inststatus'}{'inststatusguest'}) { |
$resulttext .= '<li>'.&mt('Institutional user status types deleted').'</li>'; |
$resulttext .= '<li>'; |
|
if (@orderedguests) { |
|
$resulttext .= &mt('Types assignable to "non-institutional" usernames set to:').' '; |
|
foreach my $type (@orderedguests) { |
|
$resulttext .= $alltypes{$type}.', '; |
|
} |
|
$resulttext =~ s/, $//; |
|
} else { |
|
$resulttext .= &mt('Types assignable to "non-institutional" usernames set to none.'); |
|
} |
|
$resulttext .= '</li>'; |
|
} |
} |
} |
} |
} else { |
} else { |
Line 11169 sub modify_coursecategories {
|
Line 11808 sub modify_coursecategories {
|
} |
} |
$resulttext .= '</ul></li>'; |
$resulttext .= '</ul></li>'; |
} |
} |
|
&Apache::lonnet::do_cache_new('cats',$dom,$cathash,3600); |
|
if (ref($lastactref) eq 'HASH') { |
|
$lastactref->{'cats'} = 1; |
|
} |
} |
} |
$resulttext .= '</ul>'; |
$resulttext .= '</ul>'; |
if ($changes{'unauth'} || $changes{'auth'}) { |
if ($changes{'unauth'} || $changes{'auth'}) { |
Line 11662 sub modify_coursedefaults {
|
Line 12305 sub modify_coursedefaults {
|
postsubmit => 60, |
postsubmit => 60, |
mysqltables => 172800, |
mysqltables => 172800, |
); |
); |
|
my %texoptions = ( |
|
MathJax => 'MathJax', |
|
mimetex => &mt('Convert to Images'), |
|
tth => &mt('TeX to HTML'), |
|
); |
$defaultshash{'coursedefaults'} = {}; |
$defaultshash{'coursedefaults'} = {}; |
|
|
if (ref($domconfig{'coursedefaults'}) ne 'HASH') { |
if (ref($domconfig{'coursedefaults'}) ne 'HASH') { |
Line 11709 sub modify_coursedefaults {
|
Line 12356 sub modify_coursedefaults {
|
$defaultshash{'coursedefaults'}{$setting}{$type} = $newdef; |
$defaultshash{'coursedefaults'}{$setting}{$type} = $newdef; |
} |
} |
if ($currdef ne $newdef) { |
if ($currdef ne $newdef) { |
my $staticdef; |
|
if ($item eq 'anonsurvey_threshold') { |
if ($item eq 'anonsurvey_threshold') { |
unless (($currdef eq '') && ($newdef == $staticdefaults{$item})) { |
unless (($currdef eq '') && ($newdef == $staticdefaults{$item})) { |
$changes{$item} = 1; |
$changes{$item} = 1; |
Line 11722 sub modify_coursedefaults {
|
Line 12368 sub modify_coursedefaults {
|
} |
} |
} |
} |
} |
} |
|
my $texengine; |
|
if ($env{'form.texengine'} =~ /^(MathJax|mimetex|tth)$/) { |
|
$texengine = $env{'form.texengine'}; |
|
my $currdef = $domconfig{'coursedefaults'}{'texengine'}; |
|
if ($currdef eq '') { |
|
unless ($texengine eq $Apache::lonnet::deftex) { |
|
$changes{'texengine'} = 1; |
|
} |
|
} elsif ($currdef ne $texengine) { |
|
$changes{'texengine'} = 1; |
|
} |
|
} |
|
if ($texengine ne '') { |
|
$defaultshash{'coursedefaults'}{'texengine'} = $texengine; |
|
} |
my $currclone = $domconfig{'coursedefaults'}{'canclone'}; |
my $currclone = $domconfig{'coursedefaults'}{'canclone'}; |
my @currclonecode; |
my @currclonecode; |
if (ref($currclone) eq 'HASH') { |
if (ref($currclone) eq 'HASH') { |
Line 11842 sub modify_coursedefaults {
|
Line 12503 sub modify_coursedefaults {
|
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom,1); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom,1); |
if (($changes{'uploadquota'}) || ($changes{'postsubmit'}) || |
if (($changes{'uploadquota'}) || ($changes{'postsubmit'}) || |
($changes{'coursecredits'}) || ($changes{'uselcmath'}) || ($changes{'usejsme'}) || |
($changes{'coursecredits'}) || ($changes{'uselcmath'}) || ($changes{'usejsme'}) || |
($changes{'canclone'}) || ($changes{'mysqltables'})) { |
($changes{'canclone'}) || ($changes{'mysqltables'}) || ($changes{'texengine'})) { |
foreach my $item ('uselcmath','usejsme') { |
foreach my $item ('uselcmath','usejsme','texengine') { |
if ($changes{$item}) { |
if ($changes{$item}) { |
$domdefaults{$item}=$defaultshash{'coursedefaults'}{$item}; |
$domdefaults{$item}=$defaultshash{'coursedefaults'}{$item}; |
} |
} |
Line 11906 sub modify_coursedefaults {
|
Line 12567 sub modify_coursedefaults {
|
} else { |
} else { |
$resulttext .= '<li>'.&mt('Molecule editor uses JME (Java), if supported by client OS.').'</li>'; |
$resulttext .= '<li>'.&mt('Molecule editor uses JME (Java), if supported by client OS.').'</li>'; |
} |
} |
|
} elsif ($item eq 'texengine') { |
|
if ($defaultshash{'coursedefaults'}{'texengine'} ne '') { |
|
$resulttext .= '<li>'.&mt('Default method to display mathematics set to: "[_1]"', |
|
$texoptions{$defaultshash{'coursedefaults'}{'texengine'}}).'</li>'; |
|
} |
} elsif ($item eq 'anonsurvey_threshold') { |
} elsif ($item eq 'anonsurvey_threshold') { |
$resulttext .= '<li>'.&mt('Responder count required for display of anonymous survey submissions set to [_1].',$defaultshash{'coursedefaults'}{'anonsurvey_threshold'}).'</li>'; |
$resulttext .= '<li>'.&mt('Responder count required for display of anonymous survey submissions set to [_1].',$defaultshash{'coursedefaults'}{'anonsurvey_threshold'}).'</li>'; |
} elsif ($item eq 'uploadquota') { |
} elsif ($item eq 'uploadquota') { |
Line 12230 sub modify_selfenrollment {
|
Line 12896 sub modify_selfenrollment {
|
$resulttext .= '</ul></li>'; |
$resulttext .= '</ul></li>'; |
} |
} |
} |
} |
if ((exists($changes{'admin'})) || (exists($changes{'default'}))) { |
} |
my $cachetime = 24*60*60; |
if ((exists($changes{'admin'})) || (exists($changes{'default'}))) { |
&Apache::lonnet::do_cache_new('domdefaults',$dom,\%domdefaults,$cachetime); |
my $cachetime = 24*60*60; |
if (ref($lastactref) eq 'HASH') { |
&Apache::lonnet::do_cache_new('domdefaults',$dom,\%domdefaults,$cachetime); |
$lastactref->{'domdefaults'} = 1; |
if (ref($lastactref) eq 'HASH') { |
} |
$lastactref->{'domdefaults'} = 1; |
} |
} |
} |
} |
$resulttext .= '</ul>'; |
$resulttext .= '</ul>'; |
Line 12588 sub modify_loadbalancing {
|
Line 13254 sub modify_loadbalancing {
|
my @sparestypes = ('primary','default'); |
my @sparestypes = ('primary','default'); |
my %typetitles = &sparestype_titles(); |
my %typetitles = &sparestype_titles(); |
my $resulttext; |
my $resulttext; |
my (%currbalancer,%currtargets,%currrules,%existing); |
my (%currbalancer,%currtargets,%currrules,%existing,%currcookies); |
if (ref($domconfig{'loadbalancing'}) eq 'HASH') { |
if (ref($domconfig{'loadbalancing'}) eq 'HASH') { |
%existing = %{$domconfig{'loadbalancing'}}; |
%existing = %{$domconfig{'loadbalancing'}}; |
} |
} |
&get_loadbalancers_config(\%servers,\%existing,\%currbalancer, |
&get_loadbalancers_config(\%servers,\%existing,\%currbalancer, |
\%currtargets,\%currrules); |
\%currtargets,\%currrules,\%currcookies); |
my ($saveloadbalancing,%defaultshash,%changes); |
my ($saveloadbalancing,%defaultshash,%changes); |
my ($alltypes,$othertypes,$titles) = |
my ($alltypes,$othertypes,$titles) = |
&loadbalancing_titles($dom,$intdom,$usertypes,$types); |
&loadbalancing_titles($dom,$intdom,$usertypes,$types); |
Line 12645 sub modify_loadbalancing {
|
Line 13311 sub modify_loadbalancing {
|
} |
} |
$defaultshash{'loadbalancing'}{$balancer}{'targets'}{$sparetype} = \@offloadto; |
$defaultshash{'loadbalancing'}{$balancer}{'targets'}{$sparetype} = \@offloadto; |
} |
} |
|
if ($env{'form.loadbalancing_cookie_'.$i}) { |
|
$defaultshash{'loadbalancing'}{$balancer}{'cookie'} = 1; |
|
if (exists($currbalancer{$balancer})) { |
|
unless ($currcookies{$balancer}) { |
|
$changes{'curr'}{$balancer}{'cookie'} = 1; |
|
} |
|
} |
|
} elsif (exists($currbalancer{$balancer})) { |
|
if ($currcookies{$balancer}) { |
|
$changes{'curr'}{$balancer}{'cookie'} = 1; |
|
} |
|
} |
if (ref($currtargets{$balancer}) eq 'HASH') { |
if (ref($currtargets{$balancer}) eq 'HASH') { |
foreach my $sparetype (@sparestypes) { |
foreach my $sparetype (@sparestypes) { |
if (ref($currtargets{$balancer}{$sparetype}) eq 'ARRAY') { |
if (ref($currtargets{$balancer}{$sparetype}) eq 'ARRAY') { |
Line 12798 sub modify_loadbalancing {
|
Line 13476 sub modify_loadbalancing {
|
} |
} |
} |
} |
} |
} |
|
if ($changes{'curr'}{$balancer}{'cookie'}) { |
|
$resulttext .= '<li>'.&mt('Load Balancer: [_1] -- cookie use enabled', |
|
$balancer).'</li>'; |
|
} |
if (keys(%toupdate)) { |
if (keys(%toupdate)) { |
my %thismachine; |
my %thismachine; |
my $updatedhere; |
my $updatedhere; |
Line 13027 sub lonbalance_targets_js {
|
Line 13709 sub lonbalance_targets_js {
|
} |
} |
push(@alltypes,'default','_LC_adv','_LC_author','_LC_internetdom','_LC_external'); |
push(@alltypes,'default','_LC_adv','_LC_author','_LC_internetdom','_LC_external'); |
$allinsttypes = join("','",@alltypes); |
$allinsttypes = join("','",@alltypes); |
my (%currbalancer,%currtargets,%currrules,%existing); |
my (%currbalancer,%currtargets,%currrules,%existing,%currcookies); |
if (ref($settings) eq 'HASH') { |
if (ref($settings) eq 'HASH') { |
%existing = %{$settings}; |
%existing = %{$settings}; |
} |
} |
&get_loadbalancers_config($servers,\%existing,\%currbalancer, |
&get_loadbalancers_config($servers,\%existing,\%currbalancer, |
\%currtargets,\%currrules); |
\%currtargets,\%currrules,\%currcookies); |
my $balancers = join("','",sort(keys(%currbalancer))); |
my $balancers = join("','",sort(keys(%currbalancer))); |
return <<"END"; |
return <<"END"; |
|
|
Line 13517 function toggleDisplay(domForm,caller) {
|
Line 14199 function toggleDisplay(domForm,caller) {
|
var optionsElement = domForm.coursecredits; |
var optionsElement = domForm.coursecredits; |
var checkval = 1; |
var checkval = 1; |
var dispval = 'block'; |
var dispval = 'block'; |
|
var selfcreateRegExp = /^cancreate_emailverified/; |
if (caller == 'emailoptions') { |
if (caller == 'emailoptions') { |
optionsElement = domForm.cancreate_email; |
optionsElement = domForm.cancreate_email; |
} |
} |
Line 13527 function toggleDisplay(domForm,caller) {
|
Line 14210 function toggleDisplay(domForm,caller) {
|
optionsElement = domForm.canclone; |
optionsElement = domForm.canclone; |
checkval = 'instcode'; |
checkval = 'instcode'; |
} |
} |
|
if (selfcreateRegExp.test(caller)) { |
|
optionsElement = domForm.elements[caller]; |
|
checkval = 'other'; |
|
dispval = 'inline' |
|
} |
if (optionsElement.length) { |
if (optionsElement.length) { |
var currval; |
var currval; |
for (var i=0; i<optionsElement.length; i++) { |
for (var i=0; i<optionsElement.length; i++) { |
Line 13568 sub devalidate_remote_domconfs {
|
Line 14256 sub devalidate_remote_domconfs {
|
my %servers = &Apache::lonnet::internet_dom_servers($dom); |
my %servers = &Apache::lonnet::internet_dom_servers($dom); |
my %thismachine; |
my %thismachine; |
map { $thismachine{$_} = 1; } &Apache::lonnet::current_machine_ids(); |
map { $thismachine{$_} = 1; } &Apache::lonnet::current_machine_ids(); |
my @posscached = ('domainconfig','domdefaults','usersessions','directorysrch'); |
my @posscached = ('domainconfig','domdefaults','usersessions','directorysrch','cats'); |
if (keys(%servers)) { |
if (keys(%servers)) { |
foreach my $server (keys(%servers)) { |
foreach my $server (keys(%servers)) { |
next if ($thismachine{$server}); |
next if ($thismachine{$server}); |