version 1.160.6.99, 2019/08/25 14:35:21
|
version 1.160.6.104, 2020/02/09 05:18:20
|
Line 718 sub print_config_box {
|
Line 718 sub print_config_box {
|
if ($numheaders > 1) { |
if ($numheaders > 1) { |
my $colspan = ''; |
my $colspan = ''; |
my $rightcolspan = ''; |
my $rightcolspan = ''; |
|
my $leftnobr = ''; |
if (($action eq 'rolecolors') || ($action eq 'defaults') || |
if (($action eq 'rolecolors') || ($action eq 'defaults') || |
($action eq 'directorysrch') || |
($action eq 'directorysrch') || |
(($action eq 'login') && ($numheaders < 4))) { |
(($action eq 'login') && ($numheaders < 4))) { |
Line 726 sub print_config_box {
|
Line 727 sub print_config_box {
|
if ($action eq 'usersessions') { |
if ($action eq 'usersessions') { |
$rightcolspan = ' colspan="3"'; |
$rightcolspan = ' colspan="3"'; |
} |
} |
|
if ($action eq 'passwords') { |
|
$leftnobr = ' LC_nobreak'; |
|
} |
$output .= ' |
$output .= ' |
<tr> |
<tr> |
<td> |
<td> |
<table class="LC_nested"> |
<table class="LC_nested"> |
<tr class="LC_info_row"> |
<tr class="LC_info_row"> |
<td class="LC_left_item"'.$colspan.'>'.&mt($item->{'header'}->[0]->{'col1'}).'</td> |
<td class="LC_left_item'.$leftnobr.'"'.$colspan.'>'.&mt($item->{'header'}->[0]->{'col1'}).'</td> |
<td class="LC_right_item"'.$rightcolspan.'>'.&mt($item->{'header'}->[0]->{'col2'}).'</td> |
<td class="LC_right_item"'.$rightcolspan.'>'.&mt($item->{'header'}->[0]->{'col2'}).'</td> |
</tr>'; |
</tr>'; |
$rowtotal ++; |
$rowtotal ++; |
Line 790 sub print_config_box {
|
Line 794 sub print_config_box {
|
<td> |
<td> |
<table class="LC_nested"> |
<table class="LC_nested"> |
<tr class="LC_info_row"> |
<tr class="LC_info_row"> |
<td class="LC_left_item"'.$colspan.'>'.&mt($item->{'header'}->[2]->{'col1'}).'</td> |
<td class="LC_left_item'.$leftnobr.'"'.$colspan.'>'.&mt($item->{'header'}->[2]->{'col1'}).'</td> |
<td class="LC_right_item">'.&mt($item->{'header'}->[2]->{'col2'}).'</td> |
<td class="LC_right_item">'.&mt($item->{'header'}->[2]->{'col2'}).'</td> |
</tr>'."\n"; |
</tr>'."\n"; |
if ($action eq 'coursecategories') { |
if ($action eq 'coursecategories') { |
Line 2968 sub print_contacts {
|
Line 2972 sub print_contacts {
|
$to{$item}.'" /></td></tr>'; |
$to{$item}.'" /></td></tr>'; |
$rownum ++; |
$rownum ++; |
} |
} |
} else { |
} elsif ($position eq 'bottom') { |
|
$css_class = $rownum%2?' class="LC_odd_row"':''; |
|
$datatable .= '<tr'.$css_class.'>'. |
|
'<td>'.&mt('Extra helpdesk form fields:').'<br />'. |
|
&mt('(e-mail, subject, and description always shown)'). |
|
'</td><td class="LC_left_item">'; |
|
if ((ref($fields) eq 'ARRAY') && (ref($fieldtitles) eq 'HASH') && |
|
(ref($fieldoptions) eq 'HASH') && (ref($possoptions) eq 'HASH')) { |
|
$datatable .= '<table><tr><th>'.&mt('Field').'</th><th>'.&mt('Status').'</th></tr>'; |
|
foreach my $field (@{$fields}) { |
|
$datatable .= '<tr><td>'.$fieldtitles->{$field}; |
|
if (($field eq 'screenshot') || ($field eq 'cc')) { |
|
$datatable .= ' '.&mt('(logged-in users)'); |
|
} |
|
$datatable .='</td><td>'; |
|
my $clickaction; |
|
if ($field eq 'screenshot') { |
|
$clickaction = ' onclick="screenshotSize(this);"'; |
|
} |
|
if (ref($possoptions->{$field}) eq 'ARRAY') { |
|
foreach my $option (@{$possoptions->{$field}}) { |
|
my $checked; |
|
if ($currfield{$field} eq $option) { |
|
$checked = ' checked="checked"'; |
|
} |
|
$datatable .= '<span class="LC_nobreak"><label>'. |
|
'<input type="radio" name="helpform_'.$field.'" '. |
|
'value="'.$option.'"'.$checked.$clickaction.' />'.$fieldoptions->{$option}. |
|
'</label></span>'.(' 'x2); |
|
} |
|
} |
|
if ($field eq 'screenshot') { |
|
my $display; |
|
if ($currfield{$field} eq 'no') { |
|
$display = ' style="display:none"'; |
|
} |
|
$datatable .= '</td></tr><tr id="help_screenshotsize"'.$display.'>'. |
|
'<td>'.&mt('Maximum size for upload (MB)').'</td><td>'. |
|
'<input type="text" size="5" name="helpform_maxsize" value="'.$maxsize.'" />'; |
|
} |
|
$datatable .= '</td></tr>'; |
|
} |
|
$datatable .= '</table>'; |
|
} |
|
$datatable .= '</td></tr>'."\n"; |
|
$rownum ++; |
|
} |
|
unless ($position eq 'top') { |
foreach my $type (@mailings) { |
foreach my $type (@mailings) { |
$css_class = $rownum%2?' class="LC_odd_row"':''; |
$css_class = $rownum%2?' class="LC_odd_row"':''; |
$datatable .= '<tr'.$css_class.'>'. |
$datatable .= '<tr'.$css_class.'>'. |
Line 3028 sub print_contacts {
|
Line 3079 sub print_contacts {
|
\%choices,$rownum); |
\%choices,$rownum); |
$datatable .= $reports; |
$datatable .= $reports; |
} elsif ($position eq 'bottom') { |
} elsif ($position eq 'bottom') { |
$css_class = $rownum%2?' class="LC_odd_row"':''; |
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom); |
$datatable .= '<tr'.$css_class.'>'. |
my (@posstypes,%usertypeshash); |
'<td>'.&mt('Extra helpdesk form fields:').'<br />'. |
if (ref($types) eq 'ARRAY') { |
&mt('(e-mail, subject, and description always shown)'). |
@posstypes = @{$types}; |
'</td><td class="LC_left_item">'; |
} |
if ((ref($fields) eq 'ARRAY') && (ref($fieldtitles) eq 'HASH') && |
if (@posstypes) { |
(ref($fieldoptions) eq 'HASH') && (ref($possoptions) eq 'HASH')) { |
if (ref($usertypes) eq 'HASH') { |
$datatable .= '<table><tr><th>'.&mt('Field').'</th><th>'.&mt('Status').'</th></tr>'; |
%usertypeshash = %{$usertypes}; |
foreach my $field (@{$fields}) { |
} |
$datatable .= '<tr><td>'.$fieldtitles->{$field}; |
my @overridden; |
if (($field eq 'screenshot') || ($field eq 'cc')) { |
my $numinrow = 4; |
$datatable .= ' '.&mt('(logged-in users)'); |
if (ref($settings) eq 'HASH') { |
} |
if (ref($settings->{'overrides'}) eq 'HASH') { |
$datatable .='</td><td>'; |
foreach my $key (sort(keys(%{$settings->{'overrides'}}))) { |
my $clickaction; |
if (ref($settings->{'overrides'}{$key}) eq 'HASH') { |
if ($field eq 'screenshot') { |
push(@overridden,$key); |
$clickaction = ' onclick="screenshotSize(this);"'; |
foreach my $item (@contacts) { |
} |
if ($settings->{'overrides'}{$key}{$item}) { |
if (ref($possoptions->{$field}) eq 'ARRAY') { |
$checked{'override_'.$key}{$item} = ' checked="checked" '; |
foreach my $option (@{$possoptions->{$field}}) { |
} |
my $checked; |
} |
if ($currfield{$field} eq $option) { |
$otheremails{'override_'.$key} = $settings->{'overrides'}{$key}{'others'}; |
$checked = ' checked="checked"'; |
$bccemails{'override_'.$key} = $settings->{'overrides'}{$key}{'bcc'}; |
|
$includeloc{'override_'.$key} = ''; |
|
$includestr{'override_'.$key} = ''; |
|
if ($settings->{'overrides'}{$key}{'include'} ne '') { |
|
($includeloc{'override_'.$key},$includestr{'override_'.$key}) = |
|
split(/:/,$settings->{'overrides'}{$key}{'include'},2); |
|
$includestr{'override_'.$key} = &unescape($includestr{'override_'.$key}); |
|
} |
} |
} |
$datatable .= '<span class="LC_nobreak"><label>'. |
|
'<input type="radio" name="helpform_'.$field.'" '. |
|
'value="'.$option.'"'.$checked.$clickaction.' />'.$fieldoptions->{$option}. |
|
'</label></span>'.(' 'x2); |
|
} |
} |
} |
} |
if ($field eq 'screenshot') { |
} |
my $display; |
my $customclass = 'LC_helpdesk_override'; |
if ($currfield{$field} eq 'no') { |
my $optionsprefix = 'LC_options_helpdesk_'; |
$display = ' style="display:none"'; |
|
} |
my $onclicktypes = "toggleHelpdeskRow(this.form,'overrides','$customclass','$optionsprefix');"; |
$datatable .= '</td></tr><tr id="help_screenshotsize"'.$display.'>'. |
|
'<td>'.&mt('Maximum size for upload (MB)').'</td><td>'. |
$datatable .= &insttypes_row($settings,$types,$usertypes,$dom, |
'<input type="text" size="5" name="helpform_maxsize" value="'.$maxsize.'" />'; |
$numinrow,$othertitle,'overrides', |
|
\$rownum,$onclicktypes,$customclass); |
|
$rownum ++; |
|
$usertypeshash{'default'} = $othertitle; |
|
foreach my $status (@posstypes) { |
|
my $css_class; |
|
if ($rownum%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$/,@overridden)) { |
|
$currstyle = 'display:table-row'; |
|
$hidden = 0; |
|
} |
|
my $key = 'override_'.$status; |
|
$datatable .= &overridden_helpdesk($checked{$key},$otheremails{$key},$bccemails{$key}, |
|
$includeloc{$key},$includestr{$key},$status,$rowid, |
|
$usertypeshash{$status},$css_class,$currstyle, |
|
\@contacts,$short_titles); |
|
unless ($hidden) { |
|
$rownum ++; |
} |
} |
$datatable .= '</td></tr>'; |
|
} |
} |
$datatable .= '</table>'; |
|
} |
} |
$datatable .= '</td></tr>'."\n"; |
|
$rownum ++; |
|
} |
} |
$$rowtotal += $rownum; |
$$rowtotal += $rownum; |
return $datatable; |
return $datatable; |
} |
} |
|
|
|
sub overridden_helpdesk { |
|
my ($checked,$otheremails,$bccemails,$includeloc,$includestr,$type,$rowid, |
|
$typetitle,$css_class,$rowstyle,$contacts,$short_titles) = @_; |
|
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); |
|
$description = &mt('Helpdesk requests from: [_1] in this domain (overrides default)',"<b>$typetitle</b>"); |
|
$output = '<tr'.$css_class.$rowid.$rowstyle.'>'. |
|
"<td>$description</td>\n". |
|
'<td class="'.$class.'" colspan="2">'. |
|
'<fieldset><legend>'.&mt('E-mail recipient(s)').'</legend>'. |
|
'<span class="LC_nobreak">'; |
|
if (ref($contacts) eq 'ARRAY') { |
|
foreach my $item (@{$contacts}) { |
|
my $check; |
|
if (ref($checked) eq 'HASH') { |
|
$check = $checked->{$item}; |
|
} |
|
my $title; |
|
if (ref($short_titles) eq 'HASH') { |
|
$title = $short_titles->{$item}; |
|
} |
|
$output .= '<label>'. |
|
'<input type="checkbox" name="override_'.$type.'"'.$check. |
|
' value="'.$item.'" />'.$title.'</label> '; |
|
} |
|
} |
|
$output .= '</span><br />'.&mt('Others').': '. |
|
'<input type="text" name="override_'.$type.'_others" '. |
|
'value="'.$otheremails.'" />'; |
|
my %locchecked; |
|
foreach my $loc ('s','b') { |
|
if ($includeloc eq $loc) { |
|
$locchecked{$loc} = ' checked="checked"'; |
|
last; |
|
} |
|
} |
|
$output .= '<br />'.&mt('Bcc:').(' 'x6). |
|
'<input type="text" name="override_'.$type.'_bcc" '. |
|
'value="'.$bccemails.'" /></fieldset>'. |
|
'<fieldset><legend>'.&mt('Optional added text').'</legend>'. |
|
&mt('Text automatically added to e-mail:').' '. |
|
'<input type="text" name="override_'.$type.'_includestr" value="'.$includestr.'" /><br />'. |
|
'<span class="LC_nobreak">'.&mt('Location:').' '. |
|
'<label><input type="radio" name="override_'.$type.'_includeloc" value="s"'.$locchecked{'s'}.' />'.&mt('in subject').'</label>'. |
|
(' 'x2). |
|
'<label><input type="radio" name="override_'.$type.'_includeloc" value="b"'.$locchecked{'b'}.' />'.&mt('in body').'</label>'. |
|
'</span></fieldset>'. |
|
'</td></tr>'."\n"; |
|
return $output; |
|
} |
|
|
sub contacts_javascript { |
sub contacts_javascript { |
return <<"ENDSCRIPT"; |
return <<"ENDSCRIPT"; |
|
|
Line 3095 function screenshotSize(field) {
|
Line 3228 function screenshotSize(field) {
|
return; |
return; |
} |
} |
|
|
|
function toggleHelpdeskRow(form,checkbox,target,prefix,docount) { |
|
if (form.elements[checkbox].length != undefined) { |
|
var count = 0; |
|
if (docount) { |
|
for (var i=0; i<form.elements[checkbox].length; i++) { |
|
if (form.elements[checkbox][i].checked) { |
|
count ++; |
|
} |
|
} |
|
} |
|
for (var i=0; i<form.elements[checkbox].length; i++) { |
|
var type = form.elements[checkbox][i].value; |
|
if (document.getElementById(prefix+type)) { |
|
if (form.elements[checkbox][i].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 { |
|
document.getElementById(prefix+type).style.display = 'none'; |
|
} |
|
} |
|
} |
|
} |
|
return; |
|
} |
|
|
// ]]> |
// ]]> |
</script> |
</script> |
|
|
Line 4110 sub print_passwords {
|
Line 4273 sub print_passwords {
|
$casesens{$item} = 1; |
$casesens{$item} = 1; |
$postlink{$item} = ['username','email']; |
$postlink{$item} = ['username','email']; |
} |
} |
} |
|
} |
} |
$casesens{'default'} = 1; |
$casesens{'default'} = 1; |
$postlink{'default'} = ['username','email']; |
$postlink{'default'} = ['username','email']; |
Line 4141 sub print_passwords {
|
Line 4303 sub print_passwords {
|
$datatable .= '<span class="LC_nobreak"><label>'. |
$datatable .= '<span class="LC_nobreak"><label>'. |
'<input type="checkbox" name="passwords_case_sensitive" value="'. |
'<input type="checkbox" name="passwords_case_sensitive" value="'. |
$item.'"'.$checkedcase.' />'.$usertypes->{$item}.'</label>'. |
$item.'"'.$checkedcase.' />'.$usertypes->{$item}.'</label>'. |
'<span> '; |
'</span> '; |
} |
} |
} |
} |
my $checkedcase; |
my $checkedcase; |
Line 4245 sub print_passwords {
|
Line 4407 sub print_passwords {
|
&mt('(If you use the same account ... reset a password from this page.)').'</span><br /><br />'. |
&mt('(If you use the same account ... reset a password from this page.)').'</span><br /><br />'. |
&mt('Include custom text:'); |
&mt('Include custom text:'); |
if ($customurl) { |
if ($customurl) { |
my $link = &Apache::loncommon::modal_link($customurl,&mt('Custom text file'),600,500, |
my $link = &Apache::loncommon::modal_link($customurl,&mt('custom text'),600,500, |
undef,undef,undef,undef,'background-color:#ffffff'); |
undef,undef,undef,undef,'background-color:#ffffff'); |
$datatable .= '<span class="LC_nobreak"> '.$link. |
$datatable .= '<span class="LC_nobreak"> '.$link. |
'<label><input type="checkbox" name="passwords_custom_del"'. |
'<label><input type="checkbox" name="passwords_custom_del"'. |
Line 4414 sub print_passwords {
|
Line 4576 sub print_passwords {
|
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$datatable .= '<tr'.$css_class.'><td>'.$titles{'numsaved'}.'</td>'. |
$datatable .= '<tr'.$css_class.'><td>'.$titles{'numsaved'}.'</td>'. |
'<td class="LC_left_item"><span class="LC_nobreak">'. |
'<td class="LC_left_item"><span class="LC_nobreak">'. |
'<input type="text" name="passwords_numsaved" value="'.$numsaved.'" size="3" . |
'<input type="text" name="passwords_numsaved" value="'.$numsaved.'" size="3" '. |
'onblur="javascript:warnIntPass(this);" />'. |
'onblur="javascript:warnIntPass(this);" />'. |
'<span class="LC_fontsize_small"> '.&mt('(Leave blank to not save previous passwords)').'</span>'. |
'<span class="LC_fontsize_small"> '.&mt('(Leave blank to not save previous passwords)').'</span>'. |
'</span></td></tr>'; |
'</span></td></tr>'; |
Line 4461 sub print_passwords {
|
Line 4623 sub print_passwords {
|
$datatable .= '<span class="LC_nobreak"><label>'. |
$datatable .= '<span class="LC_nobreak"><label>'. |
'<input type="checkbox" name="passwords_crsowner_'.$item.'" value="'. |
'<input type="checkbox" name="passwords_crsowner_'.$item.'" value="'. |
$type.'"'.$checked.' />'.$usertypes->{$type}.'</label>'. |
$type.'"'.$checked.' />'.$usertypes->{$type}.'</label>'. |
'<span> '; |
'</span> '; |
} |
} |
} |
} |
my $checked; |
my $checked; |
Line 5294 sub contact_titles {
|
Line 5456 sub contact_titles {
|
'adminemail' => 'Default Server Admin E-mail address', |
'adminemail' => 'Default Server Admin E-mail address', |
'errormail' => 'Error reports to be e-mailed to', |
'errormail' => 'Error reports to be e-mailed to', |
'packagesmail' => 'Package update alerts to be e-mailed to', |
'packagesmail' => 'Package update alerts to be e-mailed to', |
'helpdeskmail' => "Helpdesk requests for this domain's users", |
'helpdeskmail' => "Helpdesk requests from all users in this domain", |
'otherdomsmail' => 'Helpdesk requests for other (unconfigured) domains', |
'otherdomsmail' => 'Helpdesk requests from users in other (unconfigured) domains', |
'lonstatusmail' => 'E-mail from nightly status check (warnings/errors)', |
'lonstatusmail' => 'E-mail from nightly status check (warnings/errors)', |
'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', |
Line 7212 function warnIntPass(field) {
|
Line 7374 function warnIntPass(field) {
|
alert('$intalert{passnum}'); |
alert('$intalert{passnum}'); |
} |
} |
} |
} |
|
field.value = ''; |
} |
} |
field.value = ''; |
|
} |
} |
} |
} |
} |
} |
Line 7366 sub initialize_categories {
|
Line 7528 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').'</span></td><tda<span class="LC_nobreak">>'.&mt('Name:') |
.&mt('Add category').'</span></td><td><span class="LC_nobreak">'.&mt('Name:') |
.' <input type="text" size="20" name="addcategory_name" value="" /></span>' |
.' <input type="text" size="20" name="addcategory_name" value="" /></span>' |
.'</td></tr>'; |
.'</td></tr>'; |
return $datatable; |
return $datatable; |
Line 7618 sub insttypes_row {
|
Line 7780 sub insttypes_row {
|
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', |
selfassign => 'Self-reportable affiliations', |
|
overrides => "Override domain's helpdesk settings based on requester's affiliation", |
); |
); |
my $showdom; |
my $showdom; |
if ($context eq 'cansearch') { |
if ($context eq 'cansearch') { |
Line 7664 sub insttypes_row {
|
Line 7827 sub insttypes_row {
|
if (grep(/^\Q$types->[$i]\E$/,@{$settings->{$context}})) { |
if (grep(/^\Q$types->[$i]\E$/,@{$settings->{$context}})) { |
$check = ' checked="checked" '; |
$check = ' checked="checked" '; |
} |
} |
|
} elsif (ref($settings->{$context}) eq 'HASH') { |
|
if (ref($settings->{$context}->{$types->[$i]}) eq 'HASH') { |
|
$check = ' checked="checked" '; |
|
} |
} elsif ($context eq 'statustocreate') { |
} elsif ($context eq 'statustocreate') { |
$check = ' checked="checked" '; |
$check = ' checked="checked" '; |
} |
} |
Line 7678 sub insttypes_row {
|
Line 7845 sub insttypes_row {
|
$rem = @{$types}%($numinrow); |
$rem = @{$types}%($numinrow); |
} |
} |
my $colsleft = $numinrow - $rem; |
my $colsleft = $numinrow - $rem; |
if ($rem == 0) { |
if ($context eq 'overrides') { |
$output .= '<tr>'; |
if ($colsleft > 1) { |
} |
$output .= '<td colspan="'.$colsleft.'" class="LC_left_item">'; |
if ($colsleft > 1) { |
} else { |
$output .= '<td colspan="'.$colsleft.'" class="LC_left_item">'; |
$output .= '<td class="LC_left_item">'; |
|
} |
|
$output .= ' '; |
} else { |
} else { |
$output .= '<td class="LC_left_item">'; |
if ($rem == 0) { |
} |
$output .= '<tr>'; |
my $defcheck = ' '; |
} |
if (ref($settings) eq 'HASH') { |
if ($colsleft > 1) { |
if (ref($settings->{$context}) eq 'ARRAY') { |
$output .= '<td colspan="'.$colsleft.'" class="LC_left_item">'; |
if (grep(/^default$/,@{$settings->{$context}})) { |
} else { |
|
$output .= '<td class="LC_left_item">'; |
|
} |
|
my $defcheck = ' '; |
|
if (ref($settings) eq 'HASH') { |
|
if (ref($settings->{$context}) eq 'ARRAY') { |
|
if (grep(/^default$/,@{$settings->{$context}})) { |
|
$defcheck = ' checked="checked" '; |
|
} |
|
} elsif ($context eq 'statustocreate') { |
$defcheck = ' checked="checked" '; |
$defcheck = ' checked="checked" '; |
} |
} |
} elsif ($context eq 'statustocreate') { |
|
$defcheck = ' checked="checked" '; |
|
} |
} |
|
$output .= '<span class="LC_nobreak"><label>'. |
|
'<input type="checkbox" name="'.$context.'" '. |
|
'value="default"'.$defcheck.$onclick.' />'. |
|
$othertitle.'</label></span>'; |
} |
} |
$output .= '<span class="LC_nobreak"><label>'. |
$output .= '</td></tr></table></td></tr>'; |
'<input type="checkbox" name="'.$context.'" '. |
|
'value="default"'.$defcheck.$onclick.'/>'. |
|
$othertitle.'</label></span></td>'. |
|
'</tr></table></td></tr>'; |
|
return $output; |
return $output; |
} |
} |
|
|
Line 10332 sub modify_contacts {
|
Line 10508 sub modify_contacts {
|
my $value = $env{'form.helpform_'.$field}; |
my $value = $env{'form.helpform_'.$field}; |
$value =~ s/^\s+|\s+$//g; |
$value =~ s/^\s+|\s+$//g; |
if (grep(/^\Q$value\E$/,@{$possoptions->{$field}})) { |
if (grep(/^\Q$value\E$/,@{$possoptions->{$field}})) { |
$contacts_hash{contacts}{'helpform'}{$field} = $value; |
$contacts_hash{'contacts'}{'helpform'}{$field} = $value; |
if ($field eq 'screenshot') { |
if ($field eq 'screenshot') { |
$env{'form.helpform_maxsize'} =~ s/^\s+|\s+$//g; |
$env{'form.helpform_maxsize'} =~ s/^\s+|\s+$//g; |
if ($env{'form.helpform_maxsize'} =~ /^\d+\.?\d*$/) { |
if ($env{'form.helpform_maxsize'} =~ /^\d+\.?\d*$/) { |
$contacts_hash{contacts}{'helpform'}{'maxsize'} = $env{'form.helpform_maxsize'}; |
$contacts_hash{'contacts'}{'helpform'}{'maxsize'} = $env{'form.helpform_maxsize'}; |
} |
} |
} |
} |
} |
} |
} |
} |
} |
} |
} |
} |
|
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom); |
|
my (@statuses,%usertypeshash,@overrides); |
|
if ((ref($types) eq 'ARRAY') && (@{$types} > 0)) { |
|
@statuses = @{$types}; |
|
if (ref($usertypes) eq 'HASH') { |
|
%usertypeshash = %{$usertypes}; |
|
} |
|
} |
|
if (@statuses) { |
|
my @possoverrides = &Apache::loncommon::get_env_multiple('form.overrides'); |
|
foreach my $type (@possoverrides) { |
|
if (($type ne '') && (grep(/^\Q$type\E$/,@statuses))) { |
|
push(@overrides,$type); |
|
} |
|
} |
|
if (@overrides) { |
|
foreach my $type (@overrides) { |
|
my @standard = &Apache::loncommon::get_env_multiple('form.override_'.$type); |
|
foreach my $item (@contacts) { |
|
if (grep(/^\Q$item\E$/,@standard)) { |
|
$contacts_hash{'contacts'}{'overrides'}{$type}{$item} = 1; |
|
$newsetting{'override_'.$type}{$item} = 1; |
|
} else { |
|
$contacts_hash{'contacts'}{'overrides'}{$type}{$item} = 0; |
|
$newsetting{'override_'.$type}{$item} = 0; |
|
} |
|
} |
|
$contacts_hash{'contacts'}{'overrides'}{$type}{'others'} = $env{'form.override_'.$type.'_others'}; |
|
$contacts_hash{'contacts'}{'overrides'}{$type}{'bcc'} = $env{'form.override_'.$type.'_bcc'}; |
|
$newsetting{'override_'.$type}{'others'} = $env{'form.override_'.$type.'_others'}; |
|
$newsetting{'override_'.$type}{'bcc'} = $env{'form.override_'.$type.'_bcc'}; |
|
if (($env{'form.override_'.$type.'_includestr'} ne '') && ($env{'form.override_'.$type.'_includeloc'} =~ /^s|b$/)) { |
|
$includestr{$type} = $env{'form.override_'.$type.'_includestr'}; |
|
$includeloc{$type} = $env{'form.override_'.$type.'_includeloc'}; |
|
$contacts_hash{'contacts'}{'overrides'}{$type}{'include'} = $includeloc{$type}.':'.&escape($includestr{$type}); |
|
$newsetting{'override_'.$type}{'include'} = $contacts_hash{'contacts'}{'overrides'}{$type}{'include'}; |
|
} |
|
} |
|
} |
|
} |
if (keys(%currsetting) > 0) { |
if (keys(%currsetting) > 0) { |
foreach my $item (@contacts) { |
foreach my $item (@contacts) { |
if ($to{$item} ne $currsetting{$item}) { |
if ($to{$item} ne $currsetting{$item}) { |
Line 10397 sub modify_contacts {
|
Line 10613 sub modify_contacts {
|
} |
} |
} |
} |
} |
} |
|
if (@statuses) { |
|
if (ref($currsetting{'overrides'}) eq 'HASH') { |
|
foreach my $key (keys(%{$currsetting{'overrides'}})) { |
|
if (ref($currsetting{'overrides'}{$key}) eq 'HASH') { |
|
if (ref($newsetting{'override_'.$key}) eq 'HASH') { |
|
foreach my $item (@contacts,'bcc','others','include') { |
|
if ($currsetting{'overrides'}{$key}{$item} ne $newsetting{'override_'.$key}{$item}) { |
|
push(@{$changes{'overrides'}},$key); |
|
last; |
|
} |
|
} |
|
} else { |
|
push(@{$changes{'overrides'}},$key); |
|
} |
|
} |
|
} |
|
foreach my $key (@overrides) { |
|
unless (exists($currsetting{'overrides'}{$key})) { |
|
push(@{$changes{'overrides'}},$key); |
|
} |
|
} |
|
} else { |
|
foreach my $key (@overrides) { |
|
push(@{$changes{'overrides'}},$key); |
|
} |
|
} |
|
} |
} else { |
} else { |
my %default; |
my %default; |
$default{'supportemail'} = $Apache::lonnet::perlvar{'lonSupportEMail'}; |
$default{'supportemail'} = $Apache::lonnet::perlvar{'lonSupportEMail'}; |
Line 10512 sub modify_contacts {
|
Line 10755 sub modify_contacts {
|
$resulttext .= '</li>'; |
$resulttext .= '</li>'; |
} |
} |
} |
} |
|
if (ref($changes{'overrides'}) eq 'ARRAY') { |
|
my @deletions; |
|
foreach my $type (@{$changes{'overrides'}}) { |
|
if ($usertypeshash{$type}) { |
|
if (grep(/^\Q$type\E/,@overrides)) { |
|
$resulttext .= '<li>'.&mt("Overrides based on requester's affiliation set for [_1]", |
|
$usertypeshash{$type}).'<ul><li>'; |
|
if (ref($newsetting{'override_'.$type}) eq 'HASH') { |
|
my @text; |
|
foreach my $item (@contacts) { |
|
if ($newsetting{'override_'.$type}{$item}) { |
|
push(@text,$short_titles->{$item}); |
|
} |
|
} |
|
if ($newsetting{'override_'.$type}{'others'} ne '') { |
|
push(@text,$newsetting{'override_'.$type}{'others'}); |
|
} |
|
|
|
if (@text) { |
|
$resulttext .= &mt('Helpdesk e-mail sent to: [_1]', |
|
'<span class="LC_cusr_emph">'.join(', ',@text).'</span>'); |
|
} |
|
if ($newsetting{'override_'.$type}{'bcc'} ne '') { |
|
my $bcctext; |
|
if (@text) { |
|
$bcctext = ' '.&mt('with Bcc to'); |
|
} else { |
|
$bcctext = '(Bcc)'; |
|
} |
|
$resulttext .= $bcctext.': <span class="LC_cusr_emph">'.$newsetting{'override_'.$type}{'bcc'}.'</span>'; |
|
} elsif (!@text) { |
|
$resulttext .= &mt('Helpdesk e-mail sent to no one'); |
|
} |
|
$resulttext .= '</li>'; |
|
if ($newsetting{'override_'.$type}{'include'} ne '') { |
|
my ($loc,$str) = split(/:/,$newsetting{'override_'.$type}{'include'}); |
|
if ($loc eq 'b') { |
|
$resulttext .= '<li>'.&mt('Text automatically added to e-mail body:').' '.&unescape($str).'</li>'; |
|
} elsif ($loc eq 's') { |
|
$resulttext .= '<li>'.&mt('Text automatically added to e-mail subject:').' '.&unescape($str).'</li>'; |
|
} |
|
} |
|
} |
|
$resulttext .= '</li></ul></li>'; |
|
} else { |
|
push(@deletions,$usertypeshash{$type}); |
|
} |
|
} |
|
} |
|
if (@deletions) { |
|
$resulttext .= '<li>'.&mt("Overrides based on requester's affiliation discontinued for: [_1]", |
|
join(', ',@deletions)).'</li>'; |
|
} |
|
} |
my @offon = ('off','on'); |
my @offon = ('off','on'); |
if ($changes{'reporterrors'}) { |
if ($changes{'reporterrors'}) { |
$resulttext .= '<li>'. |
$resulttext .= '<li>'. |
Line 10567 sub modify_contacts {
|
Line 10864 sub modify_contacts {
|
&mt('Max size for file uploaded to help form by logged-in user set to [_1] MB.', |
&mt('Max size for file uploaded to help form by logged-in user set to [_1] MB.', |
$contacts_hash{'contacts'}{'helpform'}{'maxsize'}). |
$contacts_hash{'contacts'}{'helpform'}{'maxsize'}). |
'</li>'; |
'</li>'; |
|
|
} |
} |
} |
} |
$resulttext .= '</ul>'; |
$resulttext .= '</ul>'; |
Line 10649 sub modify_passwords {
|
Line 10945 sub modify_passwords {
|
if ($current{'resetlink'} ne $linklife) { |
if ($current{'resetlink'} ne $linklife) { |
$changes{'reset'} = 1; |
$changes{'reset'} = 1; |
} |
} |
} elsif (!exists($domconfig{passwords})) { |
} elsif (!ref($domconfig{passwords}) eq 'HASH') { |
if ($staticdefaults{'resetlink'} ne $linklife) { |
if ($staticdefaults{'resetlink'} ne $linklife) { |
$changes{'reset'} = 1; |
$changes{'reset'} = 1; |
} |
} |
Line 10670 sub modify_passwords {
|
Line 10966 sub modify_passwords {
|
if (@diffs > 0) { |
if (@diffs > 0) { |
$changes{'reset'} = 1; |
$changes{'reset'} = 1; |
} |
} |
} elsif (!exists($domconfig{passwords})) { |
} elsif (!ref($domconfig{passwords}) eq 'HASH') { |
my @diffs = &Apache::loncommon::compare_arrays($staticdefaults{'resetcase'},\@casesens); |
my @diffs = &Apache::loncommon::compare_arrays($staticdefaults{'resetcase'},\@casesens); |
if (@diffs > 0) { |
if (@diffs > 0) { |
$changes{'reset'} = 1; |
$changes{'reset'} = 1; |
Line 10682 sub modify_passwords {
|
Line 10978 sub modify_passwords {
|
if ($current{'resetprelink'} ne $newvalues{'resetprelink'}) { |
if ($current{'resetprelink'} ne $newvalues{'resetprelink'}) { |
$changes{'reset'} = 1; |
$changes{'reset'} = 1; |
} |
} |
} elsif (!exists($domconfig{passwords})) { |
} elsif (!ref($domconfig{passwords}) eq 'HASH') { |
if ($staticdefaults{'resetprelink'} ne $newvalues{'resetprelink'}) { |
if ($staticdefaults{'resetprelink'} ne $newvalues{'resetprelink'}) { |
$changes{'reset'} = 1; |
$changes{'reset'} = 1; |
} |
} |
Line 10709 sub modify_passwords {
|
Line 11005 sub modify_passwords {
|
} else { |
} else { |
$changes{'reset'} = 1; |
$changes{'reset'} = 1; |
} |
} |
} elsif (!exists($domconfig{passwords})) { |
} elsif (!ref($domconfig{passwords}) eq 'HASH') { |
my @diffs = &Apache::loncommon::compare_arrays($staticdefaults{'resetpostlink'}{$type},\@postlink); |
my @diffs = &Apache::loncommon::compare_arrays($staticdefaults{'resetpostlink'}{$type},\@postlink); |
if (@diffs > 0) { |
if (@diffs > 0) { |
$changes{'reset'} = 1; |
$changes{'reset'} = 1; |
Line 10731 sub modify_passwords {
|
Line 11027 sub modify_passwords {
|
if (@diffs > 0) { |
if (@diffs > 0) { |
$changes{'reset'} = 1; |
$changes{'reset'} = 1; |
} |
} |
} elsif (!exists($domconfig{passwords})) { |
} elsif (!ref($domconfig{passwords}) eq 'HASH') { |
my @diffs = &Apache::loncommon::compare_arrays($staticdefaults{'resetemail'},\@resetemail); |
my @diffs = &Apache::loncommon::compare_arrays($staticdefaults{'resetemail'},\@resetemail); |
if (@diffs > 0) { |
if (@diffs > 0) { |
$changes{'reset'} = 1; |
$changes{'reset'} = 1; |
Line 10838 sub modify_passwords {
|
Line 11134 sub modify_passwords {
|
if ($staticdefaults{$rule} ne $newvalues{$rule}) { |
if ($staticdefaults{$rule} ne $newvalues{$rule}) { |
$changes{'rules'} = 1; |
$changes{'rules'} = 1; |
} |
} |
|
} else { |
|
$changes{'rules'} = 1; |
} |
} |
} elsif (exists($current{$rule})) { |
} elsif (exists($current{$rule})) { |
$changes{'rules'} = 1; |
$changes{'rules'} = 1; |
Line 10886 sub modify_passwords {
|
Line 11184 sub modify_passwords {
|
} |
} |
} |
} |
} |
} |
} elsif (!exists($domconfig{passwords})) { |
} elsif (!(ref($domconfig{passwords}) eq 'HASH')) { |
foreach my $item ('by','for') { |
foreach my $item ('by','for') { |
if (@{$crsownerchg{$item}} > 0) { |
if (@{$crsownerchg{$item}} > 0) { |
$changes{'crsownerchg'} = 1; |
$changes{'crsownerchg'} = 1; |
Line 10916 sub modify_passwords {
|
Line 11214 sub modify_passwords {
|
$resulttext .= '<li>'.&mt('CAPTCHA validation set to use: original CAPTCHA').'</li>'; |
$resulttext .= '<li>'.&mt('CAPTCHA validation set to use: original CAPTCHA').'</li>'; |
} elsif ($confighash{'passwords'}{'captcha'} eq 'recaptcha') { |
} elsif ($confighash{'passwords'}{'captcha'} eq 'recaptcha') { |
$resulttext .= '<li>'.&mt('CAPTCHA validation set to use: reCAPTCHA').' '. |
$resulttext .= '<li>'.&mt('CAPTCHA validation set to use: reCAPTCHA').' '. |
&mt('version: [_1]',$confighash{'passwords'}{'recaptchaversion'}).'<br />'. |
&mt('version: [_1]',$confighash{'passwords'}{'recaptchaversion'}).'<br />'; |
&mt('Public key: [_1]',$confighash{'passwords'}{'recaptchapub'}).'</br>'. |
if (ref($confighash{'passwords'}{'recaptchakeys'}) eq 'HASH') { |
&mt('Private key: [_1]',$confighash{'passwords'}{'recaptchapriv'}).'</li>'; |
$resulttext .= &mt('Public key: [_1]',$confighash{'passwords'}{'recaptchakeys'}{'public'}).'</br>'. |
|
&mt('Private key: [_1]',$confighash{'passwords'}{'recaptchakeys'}{'private'}).'</li>'; |
|
} |
} else { |
} else { |
$resulttext .= '<li>'.&mt('No CAPTCHA validation').'</li>'; |
$resulttext .= '<li>'.&mt('No CAPTCHA validation').'</li>'; |
} |
} |
Line 10997 sub modify_passwords {
|
Line 11297 sub modify_passwords {
|
} |
} |
if ($confighash{'passwords'}{'resetcustom'}) { |
if ($confighash{'passwords'}{'resetcustom'}) { |
my $customlink = &Apache::loncommon::modal_link($confighash{'passwords'}{'resetcustom'}, |
my $customlink = &Apache::loncommon::modal_link($confighash{'passwords'}{'resetcustom'}, |
$titles{custom},600,500); |
&mt('custom text'),600,500,undef,undef, |
$resulttext .= '<li>'.&mt('Preamble to "Forgot Password" form includes [_1]',$customlink).'</li>'; |
undef,undef,'background-color:#ffffff'); |
|
$resulttext .= '<li>'.&mt('Preamble to "Forgot Password" form includes: [_1]',$customlink).'</li>'; |
} else { |
} else { |
$resulttext .= '<li>'.&mt('No custom text included in preamble to "Forgot Password" form').'</li>'; |
$resulttext .= '<li>'.&mt('No custom text included in preamble to "Forgot Password" form').'</li>'; |
} |
} |
Line 11044 sub modify_passwords {
|
Line 11345 sub modify_passwords {
|
$resulttext .= '<li>'.&mt('[_1] set to [_2]',$titles{$rule},$confighash{'passwords'}{$rule}).'</li>'; |
$resulttext .= '<li>'.&mt('[_1] set to [_2]',$titles{$rule},$confighash{'passwords'}{$rule}).'</li>'; |
} |
} |
} |
} |
|
if (ref($confighash{'passwords'}{'chars'}) eq 'ARRAY') { |
|
if (@{$confighash{'passwords'}{'chars'}} > 0) { |
|
my %rulenames = &Apache::lonlocal::texthash( |
|
uc => 'At least one upper case letter', |
|
lc => 'At least one lower case letter', |
|
num => 'At least one number', |
|
spec => 'At least one non-alphanumeric', |
|
); |
|
my $needed = '<ul><li>'. |
|
join('</li><li>',map {$rulenames{$_} } @{$confighash{'passwords'}{'chars'}}). |
|
'</li></ul>'; |
|
$resulttext .= '<li>'.&mt('[_1] set to: [_2]',$titles{'chars'},$needed).'</li>'; |
|
} else { |
|
$resulttext .= '<li>'.&mt('[_1] set to none',$titles{'chars'}).'</li>'; |
|
} |
|
} else { |
|
$resulttext .= '<li>'.&mt('[_1] set to none',$titles{'chars'}).'</li>'; |
|
} |
} elsif ($key eq 'crsownerchg') { |
} elsif ($key eq 'crsownerchg') { |
if (ref($confighash{'passwords'}{'crsownerchg'}) eq 'HASH') { |
if (ref($confighash{'passwords'}{'crsownerchg'}) eq 'HASH') { |
if ((@{$confighash{'passwords'}{'crsownerchg'}{'by'}} == 0) || |
if ((@{$confighash{'passwords'}{'crsownerchg'}{'by'}} == 0) || |
Line 12184 sub modify_selfcreation {
|
Line 12503 sub modify_selfcreation {
|
} |
} |
|
|
sub process_captcha { |
sub process_captcha { |
my ($container,$changes,$newsettings,$current) = @_; |
my ($container,$changes,$newsettings,$currsettings) = @_; |
return unless ((ref($changes) eq 'HASH') && (ref($newsettings) eq 'HASH') || (ref($current) eq 'HASH')); |
return unless ((ref($changes) eq 'HASH') && (ref($newsettings) eq 'HASH')); |
$newsettings->{'captcha'} = $env{'form.'.$container.'_captcha'}; |
$newsettings->{'captcha'} = $env{'form.'.$container.'_captcha'}; |
unless ($newsettings->{'captcha'} eq 'recaptcha' || $newsettings->{'captcha'} eq 'notused') { |
unless ($newsettings->{'captcha'} eq 'recaptcha' || $newsettings->{'captcha'} eq 'notused') { |
$newsettings->{'captcha'} = 'original'; |
$newsettings->{'captcha'} = 'original'; |
} |
} |
if ($current->{'captcha'} ne $newsettings->{'captcha'}) { |
my %current; |
|
if (ref($currsettings) eq 'HASH') { |
|
%current = %{$currsettings}; |
|
} |
|
if ($current{'captcha'} ne $newsettings->{'captcha'}) { |
if ($container eq 'cancreate') { |
if ($container eq 'cancreate') { |
if (ref($changes->{'cancreate'}) eq 'ARRAY') { |
if (ref($changes->{'cancreate'}) eq 'ARRAY') { |
push(@{$changes->{'cancreate'}},'captcha'); |
push(@{$changes->{'cancreate'}},'captcha'); |
} elsif (!defined($changes->{'cancreate'})) { |
} elsif (!defined($changes->{'cancreate'})) { |
$changes->{'cancreate'} = ['captcha']; |
$changes->{'cancreate'} = ['captcha']; |
} |
} |
|
} elsif ($container eq 'passwords') { |
|
$changes->{'reset'} = 1; |
} else { |
} else { |
$changes->{'captcha'} = 1; |
$changes->{'captcha'} = 1; |
} |
} |
Line 12218 sub process_captcha {
|
Line 12543 sub process_captcha {
|
} |
} |
$newsettings->{'recaptchaversion'} = $newversion; |
$newsettings->{'recaptchaversion'} = $newversion; |
} |
} |
if (ref($current->{'recaptchakeys'}) eq 'HASH') { |
if (ref($current{'recaptchakeys'}) eq 'HASH') { |
$currpub = $current->{'recaptchakeys'}{'public'}; |
$currpub = $current{'recaptchakeys'}{'public'}; |
$currpriv = $current->{'recaptchakeys'}{'private'}; |
$currpriv = $current{'recaptchakeys'}{'private'}; |
unless ($newsettings->{'captcha'} eq 'recaptcha') { |
unless ($newsettings->{'captcha'} eq 'recaptcha') { |
$newsettings->{'recaptchakeys'} = { |
$newsettings->{'recaptchakeys'} = { |
public => '', |
public => '', |
Line 12228 sub process_captcha {
|
Line 12553 sub process_captcha {
|
} |
} |
} |
} |
} |
} |
if ($current->{'captcha'} eq 'recaptcha') { |
if ($current{'captcha'} eq 'recaptcha') { |
$currversion = $current->{'recaptchaversion'}; |
$currversion = $current{'recaptchaversion'}; |
if ($currversion ne '2') { |
if ($currversion ne '2') { |
$currversion = 1; |
$currversion = 1; |
} |
} |
Line 12241 sub process_captcha {
|
Line 12566 sub process_captcha {
|
} elsif (!defined($changes->{'cancreate'})) { |
} elsif (!defined($changes->{'cancreate'})) { |
$changes->{'cancreate'} = ['recaptchaversion']; |
$changes->{'cancreate'} = ['recaptchaversion']; |
} |
} |
|
} elsif ($container eq 'passwords') { |
|
$changes->{'reset'} = 1; |
} else { |
} else { |
$changes->{'recaptchaversion'} = 1; |
$changes->{'recaptchaversion'} = 1; |
} |
} |
Line 12252 sub process_captcha {
|
Line 12579 sub process_captcha {
|
} elsif (!defined($changes->{'cancreate'})) { |
} elsif (!defined($changes->{'cancreate'})) { |
$changes->{'cancreate'} = ['recaptchakeys']; |
$changes->{'cancreate'} = ['recaptchakeys']; |
} |
} |
|
} elsif ($container eq 'passwords') { |
|
$changes->{'reset'} = 1; |
} else { |
} else { |
$changes->{'recaptchakeys'} = 1; |
$changes->{'recaptchakeys'} = 1; |
} |
} |