--- loncom/interface/courseprefs.pm 2024/02/24 20:46:24 1.130 +++ loncom/interface/courseprefs.pm 2025/03/15 01:03:33 1.134 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set configuration settings for a course # -# $Id: courseprefs.pm,v 1.130 2024/02/24 20:46:24 raeburn Exp $ +# $Id: courseprefs.pm,v 1.134 2025/03/15 01:03:33 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -372,6 +372,12 @@ sub handler { my %values=&Apache::lonnet::dump('environment',$cdom,$cnum); my %linkprot=&Apache::lonnet::dump('lti',$cdom,$cnum,undef,undef,undef,1); + my %domdefs = &Apache::lonnet::get_domain_defaults($cdom); + unless ($phase eq 'process') { + if (ref($domdefs{'linkprotsuggested'}) eq 'HASH') { + $values{'suggested'} = $domdefs{'linkprotsuggested'}; + } + } my %ltienc = &Apache::lonnet::dump('nohist_ltienc',$cdom,$cnum,undef,undef,undef,1); my %ltitools = &Apache::lonnet::dump('ltitools',$cdom,$cnum,undef,undef,undef,1); my %ltitoolsenc = &Apache::lonnet::dump('nohist_toolsenc',$cdom,$cnum,undef,undef,undef,1); @@ -793,9 +799,38 @@ sub print_config_box {
'. + $settings->{'suggested'}->{$key}->{'name'}.' | '. + ''. + $settings->{'suggested'}->{$key}->{'info'}. + ' |
'.&mt('Recommendation(s) for specific launcher application(s)').' | '. + '|
'.&mt('Launcher Application').' | '. + ''.&mt('Recommendation(s)').' |
'.&mt($item->{'header'}->[0]->{'col1'}).' | '; if (($action eq 'courseinfo') || ($action eq 'localization') || @@ -1991,10 +2026,14 @@ sub process_ltitools { } else { $ltitools{$newid}{'display'}{'target'} = 'iframe'; } - foreach my $item ('passback','roster') { + foreach my $item ('passback','roster','returnurl') { if ($env{'form.ltitools_'.$item.'_add'}) { $ltitools{$newid}{$item} = 1; - if ($env{'form.ltitools_'.$item.'valid_add'} ne '') { + if ($item eq 'returnurl') { + if ($env{'form.ltitools_crs'.$item.'_add'}) { + $ltitools{$newid}{'crsconf'}{$item} = 1; + } + } elsif ($env{'form.ltitools_'.$item.'valid_add'} ne '') { my $lifetime = $env{'form.ltitools_'.$item.'valid_add'}; $lifetime =~ s/^\s+|\s+$//g; if ($lifetime =~ /^\d+\.?\d*$/) { @@ -2178,10 +2217,21 @@ sub process_ltitools { } else { $haschanges{$itemid} = 1; } - foreach my $extra ('passback','roster') { + foreach my $extra ('passback','roster','returnurl') { if ($env{'form.ltitools_'.$extra.'_'.$i}) { $ltitools{$itemid}{$extra} = 1; - if ($env{'form.ltitools_'.$extra.'valid_'.$i} ne '') { + if ($extra eq 'returnurl') { + if ($env{'form.ltitools_crs'.$extra.'_'.$i}) { + $ltitools{$itemid}{'crsconf'}{$extra} = 1; + if (ref($values->{$itemid}{'crsconf'}) eq 'HASH') { + if (!$values->{$itemid}{'crsconf'}{$extra}) { + $haschanges{$itemid} = 1; + } + } else { + $haschanges{$itemid} = 1; + } + } + } elsif ($env{'form.ltitools_'.$extra.'valid_'.$i} ne '') { my $lifetime = $env{'form.ltitools_'.$extra.'valid_'.$i}; $lifetime =~ s/^\s+|\s+$//g; if ($lifetime =~ /^\d+\.?\d*$/) { @@ -2700,14 +2750,14 @@ sub store_changes { $displayname = &mt('Recipients of '.$text.' questions'); } } elsif ($item eq 'discussion') { - if ($key =~ /^p(lc|ch)\.roles\.denied/) { + if ($key =~ /^p(lc|ch|ac)\.roles\.denied/) { $displayname = &mt("$text (role-based)"); if ($displayval ne '') { my @roles = split(',',$displayval); @roles = map { &Apache::lonnet::plaintext($_); } @roles; $displayval = join(', ',@roles); } - } elsif ($key =~ /^p(lc|ch)\.users\.denied/) { + } elsif ($key =~ /^p(lc|ch|ac)\.users\.denied/) { $displayname = &mt("$text (specific user(s))"); } else { if ($key eq 'allow_discussion_post_editing') { @@ -3306,11 +3356,21 @@ sub store_ltitools { $output .= ' '.&mt('None'); } $output .= ''; - foreach my $item ('passback','roster') { + foreach my $item ('passback','roster','returnurl') { $output .= '