--- loncom/interface/domainprefs.pm 2017/04/25 22:18:59 1.296
+++ loncom/interface/domainprefs.pm 2017/05/22 07:58:46 1.300
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set domain-wide configuration settings
#
-# $Id: domainprefs.pm,v 1.296 2017/04/25 22:18:59 raeburn Exp $
+# $Id: domainprefs.pm,v 1.300 2017/05/22 07:58:46 droeschl Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -27,7 +27,7 @@
#
#
###############################################################
-##############################################################
+###############################################################
=pod
@@ -220,6 +220,19 @@ sub handler {
'coursedefaults','usersessions','loadbalancing',
'requestauthor','selfenrollment','inststatus',
'ltitools','ssl','trust'],$dom);
+ if (ref($domconfig{'ltitools'}) eq 'HASH') {
+ my %encconfig =
+ &Apache::lonnet::get_dom('encconfig',['ltitools'],$dom);
+ if (ref($encconfig{'ltitools'}) eq 'HASH') {
+ foreach my $id (keys(%{$domconfig{'ltitools'}})) {
+ if (ref($domconfig{'ltitools'}{$id}) eq 'HASH') {
+ foreach my $item ('key','secret') {
+ $domconfig{'ltitools'}{$id}{$item} = $encconfig{'ltitools'}{$id}{$item};
+ }
+ }
+ }
+ }
+ }
my @prefs_order = ('rolecolors','login','defaults','quotas','autoenroll',
'autoupdate','autocreate','directorysrch','contacts',
'usercreation','selfcreation','usermodification','scantron',
@@ -3745,6 +3758,8 @@ sub print_ltitools {
if (ref($settings->{$item}->{'display'}) eq 'HASH') {
if ($settings->{$item}->{'display'}->{'target'} eq 'window') {
$currdisp{'window'} = ' checked="checked"';
+ } elsif ($settings->{$item}->{'display'}->{'target'} eq 'tab') {
+ $currdisp{'tab'} = ' checked="checked"';
} else {
$currdisp{'iframe'} = ' checked="checked"';
}
@@ -3759,7 +3774,7 @@ sub print_ltitools {
} else {
$currdisp{'iframe'} = ' checked="checked"';
}
- foreach my $disp ('iframe','window') {
+ foreach my $disp ('iframe','tab','window') {
$datatable .= ''.(' 'x2);
}
@@ -3924,7 +3939,7 @@ sub print_ltitools {
''.&mt('Display target:');
my %defaultdisp;
$defaultdisp{'iframe'} = ' checked="checked"';
- foreach my $disp ('iframe','window') {
+ foreach my $disp ('iframe','tab','window') {
$datatable .= ''.(' 'x2);
}
@@ -4011,7 +4026,8 @@ sub ltitools_names {
'lastname' => 'Last Name',
'email' => 'E-mail',
'roles' => 'Role',
- 'window' => 'Window/Tab',
+ 'window' => 'Window',
+ 'tab' => 'Tab',
'iframe' => 'iFrame',
'height' => 'Height',
'width' => 'Width',
@@ -9466,7 +9482,7 @@ sub process_textbook_image {
sub modify_ltitools {
my ($r,$dom,$action,$lastactref,%domconfig) = @_;
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom,1);
- my ($newid,@allpos,%changes,%confhash,$errors,$resulttext);
+ my ($newid,@allpos,%changes,%confhash,%encconfig,$errors,$resulttext);
my $confname = $dom.'-domainconfig';
my $servadm = $r->dir_config('lonAdmEMail');
my ($configuserok,$author_ok,$switchserver) = &config_check($dom,$confname,$servadm);
@@ -9491,7 +9507,11 @@ sub modify_ltitools {
foreach my $item ('title','url','key','secret') {
$env{'form.ltitools_add_'.$item} =~ s/(`)/'/g;
if ($env{'form.ltitools_add_'.$item}) {
- $confhash{$newid}{$item} = $env{'form.ltitools_add_'.$item};
+ if (($item eq 'key') || ($item eq 'secret')) {
+ $encconfig{$newid}{$item} = $env{'form.ltitools_add_'.$item};
+ } else {
+ $confhash{$newid}{$item} = $env{'form.ltitools_add_'.$item};
+ }
}
}
if ($env{'form.ltitools_add_version'} eq 'LTI-1p0') {
@@ -9515,6 +9535,8 @@ sub modify_ltitools {
}
if ($env{'form.ltitools_add_target'} eq 'window') {
$confhash{$newid}{'display'}{'target'} = $env{'form.ltitools_add_target'};
+ } elsif ($env{'form.ltitools_add_target'} eq 'tab') {
+ $confhash{$newid}{'display'}{'target'} = $env{'form.ltitools_add_target'};
} else {
$confhash{$newid}{'display'}{'target'} = 'iframe';
}
@@ -9598,12 +9620,18 @@ sub modify_ltitools {
} else {
my $newpos = $env{'form.ltitools_'.$itemid};
$newpos =~ s/\D+//g;
- foreach my $item ('title','url','key','secret') {
+ foreach my $item ('title','url') {
$confhash{$itemid}{$item} = $env{'form.ltitools_'.$item.'_'.$i};
if ($domconfig{$action}{$itemid}{$item} ne $confhash{$itemid}{$item}) {
$changes{$itemid} = 1;
}
}
+ foreach my $item ('key','secret') {
+ $encconfig{$itemid}{$item} = $env{'form.ltitools_'.$item.'_'.$i};
+ if ($domconfig{$action}{$itemid}{$item} ne $encconfig{$itemid}{$item}) {
+ $changes{$itemid} = 1;
+ }
+ }
if ($env{'form.ltitools_version_'.$i} eq 'LTI-1p0') {
$confhash{$itemid}{'version'} = $env{'form.ltitools_version_'.$i};
}
@@ -9648,6 +9676,8 @@ sub modify_ltitools {
}
if ($env{'form.ltitools_target_'.$i} eq 'window') {
$confhash{$itemid}{'display'}{'target'} = $env{'form.ltitools_target_'.$i};
+ } elsif ($env{'form.ltitools_target_'.$i} eq 'tab') {
+ $confhash{$itemid}{'display'}{'target'} = $env{'form.ltitools_target_'.$i};
} else {
$confhash{$itemid}{'display'}{'target'} = 'iframe';
}
@@ -9806,9 +9836,21 @@ sub modify_ltitools {
my $putresult = &Apache::lonnet::put_dom('configuration',\%ltitoolshash,
$dom);
if ($putresult eq 'ok') {
+ my %ltienchash = (
+ $action => { %encconfig }
+ );
+ &Apache::lonnet::put_dom('encconfig',\%ltienchash,$dom);
if (keys(%changes) > 0) {
my $cachetime = 24*60*60;
- &Apache::lonnet::do_cache_new('ltitools',$dom,\%confhash,$cachetime);
+ my %ltiall = %confhash;
+ foreach my $id (keys(%ltiall)) {
+ if (ref($encconfig{$id}) eq 'HASH') {
+ foreach my $item ('key','secret') {
+ $ltiall{$id}{$item} = $encconfig{$id}{$item};
+ }
+ }
+ }
+ &Apache::lonnet::do_cache_new('ltitools',$dom,\%ltiall,$cachetime);
if (ref($lastactref) eq 'HASH') {
$lastactref->{'ltitools'} = 1;
}
@@ -9832,14 +9874,17 @@ sub modify_ltitools {
$resulttext .= '
';
my $position = $pos + 1;
$resulttext .= '
'.&mt('Order: [_1]',$position).'
';
- foreach my $item ('version','msgtype','url','key') {
+ foreach my $item ('version','msgtype','url') {
if ($confhash{$itemid}{$item} ne '') {
$resulttext .= '
'.$lt{$item}.': '.$confhash{$itemid}{$item}.'
';
}
}
- if ($confhash{$itemid}{'secret'} ne '') {
+ if ($encconfig{$itemid}{'key'} ne '') {
+ $resulttext .= '
'.$lt{'key'}.': '.$encconfig{$itemid}{'key'}.'
';
+ }
+ if ($encconfig{$itemid}{'secret'} ne '') {
$resulttext .= '
'.$lt{'secret'}.': ';
- my $num = length($confhash{$itemid}{'secret'});
+ my $num = length($encconfig{$itemid}{'secret'});
$resulttext .= ('*'x$num).'
';
}
$resulttext .= '
'.&mt('Configurable in course:');
@@ -10102,9 +10147,9 @@ sub modify_autoenroll {
}
if ($changes{'autofailsafe'}) {
if ($failsafe ne '') {
- $resulttext .= '
'.&mt("$title{'failsafe'} set to [_1]",$failsafe).'
';
+ $resulttext .= '
'.&mt('Failsafe for no drops if institutional data missing for a section set to: [_1]',$failsafe).'