--- loncom/interface/domainprefs.pm 2017/10/15 18:51:15 1.160.6.84.2.4
+++ loncom/interface/domainprefs.pm 2020/04/06 21:56:01 1.160.6.84.6.1
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set domain-wide configuration settings
#
-# $Id: domainprefs.pm,v 1.160.6.84.2.4 2017/10/15 18:51:15 raeburn Exp $
+# $Id: domainprefs.pm,v 1.160.6.84.6.1 2020/04/06 21:56:01 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -27,7 +27,7 @@
#
#
###############################################################
-###############################################################
+##############################################################
=pod
@@ -2658,7 +2658,7 @@ sub print_autoupdate {
my $locknamesettings;
$datatable .= &insttypes_row($settings,$types,$usertypes,
$dom,$numinrow,$othertitle,
- 'lockablenames',$rowtotal);
+ 'lockablenames');
$$rowtotal ++;
} else {
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
@@ -2801,8 +2801,7 @@ sub print_directorysrch {
if (ref($usertypes) eq 'HASH') {
if (keys(%{$usertypes}) > 0) {
$datatable .= &insttypes_row($settings,$types,$usertypes,$dom,
- $numinrow,$othertitle,'cansearch',
- $rowtotal);
+ $numinrow,$othertitle,'cansearch');
$cansrchrow = 1;
}
}
@@ -3003,54 +3002,7 @@ sub print_contacts {
$to{$item}.'" />';
$rownum ++;
}
- } elsif ($position eq 'bottom') {
- $css_class = $rownum%2?' class="LC_odd_row"':'';
- $datatable .= '
'.
- ''.&mt('Extra helpdesk form fields:').' '.
- &mt('(e-mail, subject, and description always shown)').
- ' ';
- if ((ref($fields) eq 'ARRAY') && (ref($fieldtitles) eq 'HASH') &&
- (ref($fieldoptions) eq 'HASH') && (ref($possoptions) eq 'HASH')) {
- $datatable .= '';
- }
- $datatable .= ' '."\n";
- $rownum ++;
- }
- unless ($position eq 'top') {
+ } else {
foreach my $type (@mailings) {
$css_class = $rownum%2?' class="LC_odd_row"':'';
$datatable .= ''.
@@ -3110,138 +3062,56 @@ sub print_contacts {
\%choices,$rownum);
$datatable .= $reports;
} elsif ($position eq 'bottom') {
- my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
- my (@posstypes,%usertypeshash);
- if (ref($types) eq 'ARRAY') {
- @posstypes = @{$types};
- }
- if (@posstypes) {
- if (ref($usertypes) eq 'HASH') {
- %usertypeshash = %{$usertypes};
- }
- my @overridden;
- my $numinrow = 4;
- if (ref($settings) eq 'HASH') {
- if (ref($settings->{'overrides'}) eq 'HASH') {
- foreach my $key (sort(keys(%{$settings->{'overrides'}}))) {
- if (ref($settings->{'overrides'}{$key}) eq 'HASH') {
- push(@overridden,$key);
- foreach my $item (@contacts) {
- if ($settings->{'overrides'}{$key}{$item}) {
- $checked{'override_'.$key}{$item} = ' checked="checked" ';
- }
- }
- $otheremails{'override_'.$key} = $settings->{'overrides'}{$key}{'others'};
- $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});
- }
+ $css_class = $rownum%2?' class="LC_odd_row"':'';
+ $datatable .= ' '.
+ ''.&mt('Extra helpdesk form fields:').' '.
+ &mt('(e-mail, subject, and description always shown)').
+ ' ';
+ if ((ref($fields) eq 'ARRAY') && (ref($fieldtitles) eq 'HASH') &&
+ (ref($fieldoptions) eq 'HASH') && (ref($possoptions) eq 'HASH')) {
+ $datatable .= ''.&mt('Field').' '.&mt('Status').' ';
+ foreach my $field (@{$fields}) {
+ $datatable .= ''.$fieldtitles->{$field};
+ if (($field eq 'screenshot') || ($field eq 'cc')) {
+ $datatable .= ' '.&mt('(logged-in users)');
+ }
+ $datatable .=' ';
+ 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 .= ''.
+ ' '.$fieldoptions->{$option}.
+ ' '.(' 'x2);
}
}
- }
- my $customclass = 'LC_helpdesk_override';
- my $optionsprefix = 'LC_options_helpdesk_';
-
- my $onclicktypes = "toggleHelpdeskRow(this.form,'overrides','$customclass','$optionsprefix');";
-
- $datatable .= &insttypes_row($settings,$types,$usertypes,$dom,
- $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 ++;
+ if ($field eq 'screenshot') {
+ my $display;
+ if ($currfield{$field} eq 'no') {
+ $display = ' style="display:none"';
+ }
+ $datatable .= ' '.
+ ''.&mt('Maximum size for upload (MB)').' '.
+ ' ';
}
+ $datatable .= ' ';
}
+ $datatable .= '
';
}
+ $datatable .= ' '."\n";
+ $rownum ++;
}
$$rowtotal += $rownum;
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)',"$typetitle ");
- $output = ''.
- "$description \n".
- ''.
- ''.&mt('E-mail recipient(s)').' '.
- '';
- 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 .= ''.
- ' '.$title.' ';
- }
- }
- $output .= ' '.&mt('Others').': '.
- ' ';
- my %locchecked;
- foreach my $loc ('s','b') {
- if ($includeloc eq $loc) {
- $locchecked{$loc} = ' checked="checked"';
- last;
- }
- }
- $output .= ' '.&mt('Bcc:').(' 'x6).
- ' '.
- ''.&mt('Optional added text').' '.
- &mt('Text automatically added to e-mail:').' '.
- ' '.
- ''.&mt('Location:').' '.
- ' '.&mt('in subject').' '.
- (' 'x2).
- ' '.&mt('in body').' '.
- ' '.
- ' '."\n";
- return $output;
-}
-
sub contacts_javascript {
return <<"ENDSCRIPT";
@@ -3259,37 +3129,6 @@ function screenshotSize(field) {
return;
}
-function toggleHelpdeskRow(form,checkbox,target,prefix,docount) {
- if (form.elements[checkbox].length != undefined) {
- var count = 0;
- if (docount) {
- for (var i=0; i
@@ -5380,8 +5219,8 @@ sub contact_titles {
'adminemail' => 'Default Server Admin E-mail address',
'errormail' => 'Error reports to be e-mailed to',
'packagesmail' => 'Package update alerts to be e-mailed to',
- 'helpdeskmail' => "Helpdesk requests from all users in this domain",
- 'otherdomsmail' => 'Helpdesk requests from users in other (unconfigured) domains',
+ 'helpdeskmail' => "Helpdesk requests for this domain's users",
+ 'otherdomsmail' => 'Helpdesk requests for other (unconfigured) domains',
'lonstatusmail' => 'E-mail from nightly status check (warnings/errors)',
'requestsmail' => 'E-mail from course requests requiring approval',
'updatesmail' => 'E-mail from nightly check of LON-CAPA module integrity/updates',
@@ -5650,7 +5489,7 @@ sub print_selfcreation {
if (keys(%{$usertypes}) > 0) {
$datatable .= &insttypes_row($createsettings,$types,$usertypes,
$dom,$numinrow,$othertitle,
- 'statustocreate',$rowtotal);
+ 'statustocreate',$$rowtotal);
$$rowtotal ++;
}
}
@@ -7228,13 +7067,11 @@ sub modifiable_userdata_row {
}
sub insttypes_row {
- my ($settings,$types,$usertypes,$dom,$numinrow,$othertitle,$context,$rowtotal,$onclick,
- $customcss,$rowstyle) = @_;
+ my ($settings,$types,$usertypes,$dom,$numinrow,$othertitle,$context,$rownum) = @_;
my %lt = &Apache::lonlocal::texthash (
cansearch => 'Users allowed to search',
statustocreate => 'Institutional affiliation(s) able to create own account (login/SSO)',
lockablenames => 'User preference to lock name',
- overrides => "Override domain's helpdesk settings based on requester's affiliation",
);
my $showdom;
if ($context eq 'cansearch') {
@@ -7244,22 +7081,9 @@ sub insttypes_row {
if ($context eq 'statustocreate') {
$class = 'LC_right_item';
}
- my $css_class;
- 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.'"';
- }
- if ($onclick) {
- $onclick = 'onclick="'.$onclick.'" ';
+ my $css_class = ' class="LC_odd_row"';
+ if ($rownum ne '') {
+ $css_class = ($rownum%2? ' class="LC_odd_row"':'');
}
my $output = ''.
''.$lt{$context}.$showdom.
@@ -7281,10 +7105,6 @@ sub insttypes_row {
if (grep(/^\Q$types->[$i]\E$/,@{$settings->{$context}})) {
$check = ' checked="checked" ';
}
- } elsif (ref($settings->{$context}) eq 'HASH') {
- if (ref($settings->{$context}->{$types->[$i]}) eq 'HASH') {
- $check = ' checked="checked" ';
- }
} elsif ($context eq 'statustocreate') {
$check = ' checked="checked" ';
}
@@ -7299,38 +7119,29 @@ sub insttypes_row {
$rem = @{$types}%($numinrow);
}
my $colsleft = $numinrow - $rem;
- if ($context eq 'overrides') {
- if ($colsleft > 1) {
- $output .= ' ';
- } else {
- $output .= ' ';
- }
- $output .= ' ';
+ if (($rem == 0) && (@{$types} > 0)) {
+ $output .= ' ';
+ }
+ if ($colsleft > 1) {
+ $output .= '';
} else {
- if (($rem == 0) && (@{$types} > 0)) {
- $output .= ' ';
- }
- if ($colsleft > 1) {
- $output .= '';
- } else {
- $output .= ' ';
- }
- 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') {
+ $output .= ' ';
+ }
+ 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" ';
}
- $output .= ''.
- ' '.
- $othertitle.' ';
}
- $output .= ' ';
+ $output .= ''.
+ ' '.
+ $othertitle.' '.
+ '';
return $output;
}
@@ -10536,57 +10347,17 @@ sub modify_contacts {
my $value = $env{'form.helpform_'.$field};
$value =~ s/^\s+|\s+$//g;
if (grep(/^\Q$value\E$/,@{$possoptions->{$field}})) {
- $contacts_hash{'contacts'}{'helpform'}{$field} = $value;
+ $contacts_hash{contacts}{'helpform'}{$field} = $value;
if ($field eq 'screenshot') {
$env{'form.helpform_maxsize'} =~ s/^\s+|\s+$//g;
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) {
foreach my $item (@contacts) {
if ($to{$item} ne $currsetting{$item}) {
@@ -10641,33 +10412,6 @@ 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 {
my %default;
$default{'supportemail'} = $Apache::lonnet::perlvar{'lonSupportEMail'};
@@ -10782,60 +10526,6 @@ sub modify_contacts {
$resulttext .= '';
}
}
- if (ref($changes{'overrides'}) eq 'ARRAY') {
- my @deletions;
- foreach my $type (@{$changes{'overrides'}}) {
- if ($usertypeshash{$type}) {
- if (grep(/^\Q$type\E/,@overrides)) {
- $resulttext .= ''.&mt("Overrides based on requester's affiliation set for [_1]",
- $usertypeshash{$type}).'';
- 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]',
- ''.join(', ',@text).' ');
- }
- if ($newsetting{'override_'.$type}{'bcc'} ne '') {
- my $bcctext;
- if (@text) {
- $bcctext = ' '.&mt('with Bcc to');
- } else {
- $bcctext = '(Bcc)';
- }
- $resulttext .= $bcctext.': '.$newsetting{'override_'.$type}{'bcc'}.' ';
- } elsif (!@text) {
- $resulttext .= &mt('Helpdesk e-mail sent to no one');
- }
- $resulttext .= ' ';
- if ($newsetting{'override_'.$type}{'include'} ne '') {
- my ($loc,$str) = split(/:/,$newsetting{'override_'.$type}{'include'});
- if ($loc eq 'b') {
- $resulttext .= ''.&mt('Text automatically added to e-mail body:').' '.&unescape($str).' ';
- } elsif ($loc eq 's') {
- $resulttext .= ''.&mt('Text automatically added to e-mail subject:').' '.&unescape($str).' ';
- }
- }
- }
- $resulttext .= ' ';
- } else {
- push(@deletions,$usertypeshash{$type});
- }
- }
- }
- if (@deletions) {
- $resulttext .= ''.&mt("Overrides based on requester's affiliation discontinued for: [_1]",
- join(', ',@deletions)).' ';
- }
- }
my @offon = ('off','on');
if ($changes{'reporterrors'}) {
$resulttext .= ''.
@@ -10891,6 +10581,7 @@ sub modify_contacts {
&mt('Max size for file uploaded to help form by logged-in user set to [_1] MB.',
$contacts_hash{'contacts'}{'helpform'}{'maxsize'}).
' ';
+
}
}
$resulttext .= '';
@@ -11484,7 +11175,7 @@ sub modify_selfcreation {
$save_usercreate{'cancreate'}{'shibenv'} = $cancreate{'shibenv'};
}
$save_usercreate{'cancreate'}{'emailusername'} = $cancreate{'emailusername'};
- $save_usercreate{'email_rule'} = \@email_rule;
+ $save_usercreate{'emailrule'} = \@email_rule;
my %userconfig_hash = (
usercreation => \%save_usercreate,