--- loncom/interface/domainprefs.pm 2017/04/25 22:18:59 1.296 +++ loncom/interface/domainprefs.pm 2017/05/10 13:49:14 1.298 @@ -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.298 2017/05/10 13:49:14 raeburn 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 .= '