--- loncom/interface/domainprefs.pm 2017/01/23 22:46:44 1.288
+++ loncom/interface/domainprefs.pm 2017/04/25 22:18:59 1.296
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set domain-wide configuration settings
#
-# $Id: domainprefs.pm,v 1.288 2017/01/23 22:46:44 raeburn Exp $
+# $Id: domainprefs.pm,v 1.296 2017/04/25 22:18:59 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -265,6 +265,8 @@ sub handler {
help => 'Domain_Configuration_LangTZAuth',
header => [{col1 => 'Setting',
col2 => 'Value'},
+ {col1 => 'Internal Authentication',
+ col2 => 'Value'},
{col1 => 'Institutional user types',
col2 => 'Assignable to e-mail usernames'}],
print => \&print_defaults,
@@ -486,7 +488,7 @@ sub handler {
},
'ltitools' =>
{text => 'External Tools (LTI)',
- help => 'Domain_configuration_LTI_Tools',
+ help => 'Domain_Configuration_LTI_Tools',
header => [{col1 => 'Setting',
col2 => 'Value',}],
print => \&print_ltitools,
@@ -499,6 +501,8 @@ sub handler {
col2 => 'Certificate Status'},
{col1 => 'Connections to other servers',
col2 => 'Rules'},
+ {col1 => 'Connections from other servers',
+ col2 => 'Rules'},
{col1 => "Replicating domain's published content",
col2 => 'Rules'}],
print => \&print_ssl,
@@ -673,7 +677,7 @@ sub process_changes {
} elsif ($action eq 'autocreate') {
$output = &modify_autocreate($dom,%domconfig);
} elsif ($action eq 'directorysrch') {
- $output = &modify_directorysrch($dom,%domconfig);
+ $output = &modify_directorysrch($dom,$lastactref,%domconfig);
} elsif ($action eq 'usercreation') {
$output = &modify_usercreation($dom,%domconfig);
} elsif ($action eq 'selfcreation') {
@@ -806,7 +810,7 @@ sub print_config_box {
if (($action eq 'autoupdate') || ($action eq 'usercreation') ||
($action eq 'selfcreation') || ($action eq 'selfenrollment') ||
($action eq 'usersessions') || ($action eq 'coursecategories') ||
- ($action eq 'ssl') || ($action eq 'trust') || ($action eq 'contacts')) {
+ ($action eq 'trust') || ($action eq 'contacts') || ($action eq 'defaults')) {
if ($action eq 'coursecategories') {
$output .= &print_coursecategories('middle',$dom,$item,$settings,\$rowtotal);
$colspan = ' colspan="2"';
@@ -866,6 +870,28 @@ sub print_config_box {
($action eq 'defaults') || ($action eq 'directorysrch') ||
($action eq 'helpsettings')) {
$output .= $item->{'print'}->('bottom',$dom,$settings,\$rowtotal);
+ } elsif ($action eq 'ssl') {
+ $output .= $item->{'print'}->('connto',$dom,$settings,\$rowtotal).'
+
+
+
+
+
+
+
+ '.&mt($item->{'header'}->[3]->{'col1'}).'
+ '.&mt($item->{'header'}->[3]->{'col2'}).' '.
+ $item->{'print'}->('bottom',$dom,$settings,\$rowtotal);
} elsif ($action eq 'login') {
if ($numheaders == 4) {
$output .= &print_login('page',$dom,$confname,$phase,$settings,\$rowtotal).'
@@ -3024,7 +3050,7 @@ sub print_contacts {
if (exists($settings->{'helpform'}{'maxsize'})) {
$maxsize = $settings->{'helpform'}{'maxsize'};
} else {
- $maxsize = '1.0';
+ $maxsize = '1.0';
}
} else {
if (ref($fields) eq 'ARRAY') {
@@ -3041,7 +3067,7 @@ sub print_contacts {
$to{'adminemail'} = $Apache::lonnet::perlvar{'lonAdmEMail'};
$checked{'errormail'}{'adminemail'} = ' checked="checked" ';
$checked{'packagesmail'}{'adminemail'} = ' checked="checked" ';
- $checked{'lonstatusmail'}{'adminemail'} = ' checked="checked" ';
+ $checked{'lonstatusmail'}{'adminemail'} = ' checked="checked" ';
$checked{'requestsmail'}{'adminemail'} = ' checked="checked" ';
$checked{'updatesmail'}{'adminemail'} = ' checked="checked" ';
$checked{'idconflictsmail'}{'adminemail'} = ' checked="checked" ';
@@ -3117,8 +3143,8 @@ sub print_contacts {
if ($position eq 'middle') {
my %choices;
$choices{'reporterrors'} = &mt('E-mail error reports to [_1]',
- &Apache::loncommon::modal_link('http://loncapa.org/core.html',
- &mt('LON-CAPA core group - MSU'),600,500));
+ &Apache::loncommon::modal_link('http://loncapa.org/core.html',
+ &mt('LON-CAPA core group - MSU'),600,500));
$choices{'reportupdates'} = &mt('E-mail record of completed LON-CAPA updates to [_1]',
&Apache::loncommon::modal_link('http://loncapa.org/core.html',
&mt('LON-CAPA core group - MSU'),600,500));
@@ -3134,7 +3160,7 @@ sub print_contacts {
''.&mt('Extra helpdesk form fields:').' '.
&mt('(e-mail, subject, and description always shown)').
' ';
- if ((ref($fields) eq 'ARRAY') && (ref($fieldtitles) eq 'HASH') &&
+ 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}) {
@@ -3188,7 +3214,7 @@ sub contacts_javascript {
function screenshotSize(field) {
if (document.getElementById('help_screenshotsize')) {
if (field.value == 'no') {
- document.getElementById('help_screenshotsize').style.display="none";
+ document.getElementById('help_screenshotsize').style.display="none";
} else {
document.getElementById('help_screenshotsize').style.display="";
}
@@ -3250,7 +3276,7 @@ sub print_helpsettings {
my $context = 'domprefs';
my $crstype = 'Course';
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
- my @accesstypes = ('all','none');
+ my @accesstypes = ('all','dh','da','none');
my ($numstatustypes,@jsarray);
if (ref($types) eq 'ARRAY') {
if (@{$types} > 0) {
@@ -3259,7 +3285,7 @@ sub print_helpsettings {
@jsarray = ('bystatus');
}
}
- my %domhelpdesk = &Apache::lonnet::get_active_domroles($dom,['dh']);
+ my %domhelpdesk = &Apache::lonnet::get_active_domroles($dom,['dh','da']);
if (keys(%domhelpdesk)) {
push(@accesstypes,('inc','exc'));
push(@jsarray,('notinc','notexc'));
@@ -3468,7 +3494,7 @@ function helpdeskAccess(num) {
shown = Array('notinc');
hidden = Array('notexc','bystatus');
}
- if (curraccess == 'all') {
+ if ((curraccess == 'all') || (curraccess == 'dh') || (curraccess == 'da')) {
hidden = Array('notinc','notexc','bystatus');
}
}
@@ -3497,7 +3523,7 @@ function helpdeskAccess(num) {
function toggleHelpdeskItem(num,field) {
if (document.getElementById('helproles_'+num+'_'+field)) {
if (document.getElementById('helproles_'+num+'_'+field).className.match(/(?:^|\\s)LC_hidden(?!\\S)/)) {
- document.getElementById('helproles_'+num+'_'+field).className =
+ document.getElementById('helproles_'+num+'_'+field).className =
document.getElementById('helproles_'+num+'_'+field).className.replace(/(?:^|\\s)LC_hidden(?!\\S)/g ,'');
if (document.getElementById('helproles_'+num+'_'+field+'_vis')) {
document.getElementById('helproles_'+num+'_'+field+'_vis').value = '$html_js_lt{hide}';
@@ -3525,7 +3551,9 @@ sub helpdeskroles_access {
my %lt = &Apache::lonlocal::texthash(
'rou' => 'Role usage',
'whi' => 'Which helpdesk personnel may use this role?',
- 'all' => 'All',
+ 'all' => 'All with domain helpdesk or helpdesk assistant role',
+ 'dh' => 'All with domain helpdesk role',
+ 'da' => 'All with domain helpdesk assistant role',
'none' => 'None',
'status' => 'Determined based on institutional status',
'inc' => 'Include all, but exclude specific personnel',
@@ -3623,7 +3651,7 @@ sub radiobutton_prefs {
} else {
$datatable .= '';
}
- $datatable .=
+ $datatable .=
''.
' '.&mt('Yes').
@@ -3726,6 +3754,8 @@ sub print_ltitools {
if ($settings->{$item}->{'display'}->{'height'} =~ /^(\d+)$/) {
$currdisp{'height'} = $1;
}
+ $currdisp{'linktext'} = $settings->{$item}->{'display'}->{'linktext'};
+ $currdisp{'explanation'} = $settings->{$item}->{'display'}->{'explanation'};
} else {
$currdisp{'iframe'} = ' checked="checked"';
}
@@ -3739,6 +3769,12 @@ sub print_ltitools {
' '.
(' 'x2);
}
+ $datatable .= ' '.
+ ''.$lt{'linktext'}.' '.
+ '
'.
+ ''.$lt{'explanation'}.' '.
+ '
';
$datatable .= ' ';
foreach my $extra ('passback','roster') {
my $checkedon = '';
@@ -3820,7 +3856,7 @@ sub print_ltitools {
}
}
$datatable .= ''.&mt('Configurable in course').' ';
- foreach my $item ('label','title','target') {
+ foreach my $item ('label','title','target','linktext','explanation') {
my $checked;
if ($courseconfig{$item}) {
$checked = ' checked="checked"';
@@ -3898,7 +3934,12 @@ sub print_ltitools {
' '.
(' 'x2);
}
- $datatable .= ' ';
+ $datatable .= ' '.
+ ''.$lt{'linktext'}.' '.
+ '
'.
+ ''.$lt{'explanation'}.' '.
+ ''.
+ '
';
foreach my $extra ('passback','roster') {
$datatable .= $lt{$extra}.' '.
' '.
@@ -3936,10 +3977,10 @@ sub print_ltitools {
}
$datatable .= '
'.
''.&mt('Configurable in course').' ';
- foreach my $item ('label','title','target') {
- $datatable .= ''.
- ' '.
- $lt{'crs'.$item}.' '.(' ' x2)."\n";
+ foreach my $item ('label','title','target','linktext','explanation') {
+ $datatable .= ''.
+ ' '.
+ $lt{'crs'.$item}.' '.(' ' x2)."\n";
}
$datatable .= ' '.
''.&mt('Custom items sent on launch').' '.
@@ -3957,28 +3998,32 @@ sub print_ltitools {
sub ltitools_names {
my %lt = &Apache::lonlocal::texthash(
- 'title' => 'Title',
- 'version' => 'Version',
- 'msgtype' => 'Message Type',
- 'url' => 'URL',
- 'key' => 'Key',
- 'secret' => 'Secret',
- 'icon' => 'Icon',
- 'user' => 'Username:domain',
- 'fullname' => 'Full Name',
- 'firstname' => 'First Name',
- 'lastname' => 'Last Name',
- 'email' => 'E-mail',
- 'roles' => 'Role',
- 'window' => 'Window/Tab',
- 'iframe' => 'iFrame',
- 'height' => 'Height',
- 'width' => 'Width',
- 'passback' => 'Tool can return grades:',
- 'roster' => 'Tool can retrieve roster:',
- 'crstarget' => 'Display target',
- 'crslabel' => 'Course label',
- 'crstitle' => 'Course title',
+ 'title' => 'Title',
+ 'version' => 'Version',
+ 'msgtype' => 'Message Type',
+ 'url' => 'URL',
+ 'key' => 'Key',
+ 'secret' => 'Secret',
+ 'icon' => 'Icon',
+ 'user' => 'Username:domain',
+ 'fullname' => 'Full Name',
+ 'firstname' => 'First Name',
+ 'lastname' => 'Last Name',
+ 'email' => 'E-mail',
+ 'roles' => 'Role',
+ 'window' => 'Window/Tab',
+ 'iframe' => 'iFrame',
+ 'height' => 'Height',
+ 'width' => 'Width',
+ 'linktext' => 'Default Link Text',
+ 'explanation' => 'Default Explanation',
+ 'passback' => 'Tool can return grades:',
+ 'roster' => 'Tool can retrieve roster:',
+ 'crstarget' => 'Display target',
+ 'crslabel' => 'Course label',
+ 'crstitle' => 'Course title',
+ 'crslinktext' => 'Link Text',
+ 'crsexplanation' => 'Explanation',
);
return %lt;
}
@@ -4009,7 +4054,7 @@ sub print_coursedefaults {
'canuse_pdfforms' => 'off',
'uselcmath' => 'on',
'usejsme' => 'on',
- 'canclone' => 'none',
+ 'canclone' => 'none',
);
@toggles = ('canuse_pdfforms','uselcmath','usejsme');
($datatable,$itemcount) = &radiobutton_prefs($settings,\@toggles,\%defaultchecked,
@@ -4048,7 +4093,7 @@ sub print_coursedefaults {
$currcanclone = $settings->{'canclone'};
}
}
- }
+ }
foreach my $option (@cloneoptions) {
my ($checked,$additional);
if ($currcanclone eq $option) {
@@ -4117,7 +4162,7 @@ sub print_coursedefaults {
foreach my $type (@types) {
if (ref($settings->{'postsubmit'}->{'timeout'}) eq 'HASH') {
if ($settings->{'postsubmit'}->{'timeout'}->{$type} =~ /^\d+$/) {
- $deftimeout{$type} = $settings->{'postsubmit'}->{'timeout'}->{$type};
+ $deftimeout{$type} = $settings->{'postsubmit'}->{'timeout'}->{$type};
} else {
$deftimeout{$type} = $staticdefaults{'postsubmit'};
}
@@ -4233,7 +4278,7 @@ sub print_coursedefaults {
foreach my $type (@types) {
$datatable .= ''.&mt($type).' '.
' ';
+ ' value="'.$currmysql{$type}.'" size="8" /> ';
}
$datatable .= '
'."\n";
$itemcount ++;
@@ -4655,7 +4700,32 @@ sub print_ssl {
my @domservers = &Apache::lonnet::get_servers($dom);
my %servers = &Apache::lonnet::internet_dom_servers($dom);
my %altids = &id_for_thisdom(%servers);
- if ($position eq 'middle') {
+ if (($position eq 'connto') || ($position eq 'connfrom')) {
+ my $legacy;
+ unless (ref($settings) eq 'HASH') {
+ my $name;
+ if ($position eq 'connto') {
+ $name = 'loncAllowInsecure';
+ } else {
+ $name = 'londAllowInsecure';
+ }
+ my $primarylibserv = &Apache::lonnet::domain($dom,'primary');
+ my @ids=&Apache::lonnet::current_machine_ids();
+ if (($primarylibserv ne '') && (!grep(/^\Q$primarylibserv\E$/,@ids))) {
+ my %what = (
+ $name => 1,
+ );
+ my ($result,$returnhash) =
+ &Apache::lonnet::get_remote_globals($primarylibserv,\%what);
+ if ($result eq 'ok') {
+ if (ref($returnhash) eq 'HASH') {
+ $legacy = $returnhash->{$name};
+ }
+ }
+ } else {
+ $legacy = $Apache::lonnet::perlvar{$name};
+ }
+ }
foreach my $type ('dom','intdom','other') {
my %checked;
$css_class = $itemcount%2?' class="LC_odd_row"':'';
@@ -4682,16 +4752,21 @@ sub print_ssl {
unless ($skip) {
$checked{'yes'} = ' checked="checked"';
if (ref($settings) eq 'HASH') {
- if (ref($settings->{'connect'}) eq 'HASH') {
- if ($settings->{'connect'}->{$type} =~ /^(no|req)$/) {
+ if (ref($settings->{$position}) eq 'HASH') {
+ if ($settings->{$position}->{$type} =~ /^(no|req)$/) {
$checked{$1} = $checked{'yes'};
delete($checked{'yes'});
}
}
+ } else {
+ if ($legacy == 0) {
+ $checked{'req'} = $checked{'yes'};
+ delete($checked{'yes'});
+ }
}
foreach my $option ('no','yes','req') {
$datatable .= '