--- loncom/interface/courseprefs.pm 2023/04/13 15:21:00 1.119
+++ loncom/interface/courseprefs.pm 2023/06/03 02:29:57 1.122
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set configuration settings for a course
#
-# $Id: courseprefs.pm,v 1.119 2023/04/13 15:21:00 raeburn Exp $
+# $Id: courseprefs.pm,v 1.122 2023/06/03 02:29:57 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1661,14 +1661,28 @@ sub process_linkprot {
} elsif (exists($env{$urlparamname})) {
$env{$urlparamname} = '';
}
+ my $passback = 'form.linkprot_passback_'.$idx;
+ my $passbackparamname = 'form.linkprot_passbackformat_'.$idx;
+ if ($env{$passback} == 1) {
+ unless ($env{$passbackparamname} =~ /^1\.(0|1)$/) {
+ $env{$passbackparamname} = '';
+ }
+ } elsif (exists($env{$passbackparamname})) {
+ $env{$passbackparamname} = '';
+ }
unless ($idx eq 'add') {
if ((!$current{'returnurl'} && ($env{$urlparamname} ne '')) ||
($current{'returnurl'} && ($env{$urlparamname} eq ''))) {
$haschanges{$itemid} = 1;
}
+ if ((!$current{'passback'} && ($env{$passbackparamname} ne '')) ||
+ ($current{'passback'} && ($env{$passbackparamname} eq ''))) {
+ $haschanges{$itemid} = 1;
+ }
}
- if ($env{$urlparamname} ne '') {
- $linkprot{$itemid}{'returnurl'} = $env{$urlparamname};
+ if ($env{$passbackparamname} ne '') {
+ $linkprot{$itemid}{'passback'} = 1;
+ $linkprot{$itemid}{'passbackformat'} = $env{$passbackparamname};
}
if ($ltiauth) {
my $reqitem = 'form.linkprot_requser_'.$idx;
@@ -1883,7 +1897,7 @@ sub process_ltitools {
my @allfields = ('fullname','firstname','lastname','email','user','roles');
map { $possfield{$_} = 1; } @allfields;
- my ($dest,$privnum,$cipher,$errors,%ltitools);
+ my ($dest,$privnum,$cipher);
($cipher,$privnum) = &get_credentials($cdom,$cnum,'ltitools',$context);
if ($context eq 'domain') {
@@ -3088,7 +3102,7 @@ sub store_linkprot {
my %values = %{$changes->{$id}};
my %desc = &linkprot_names();
my $display;
- foreach my $title ('name','lifetime','version','key','secret','returnurl') {
+ foreach my $title ('name','lifetime','version','key','secret','returnurl','passbackformat') {
if (($title eq 'key') || ($title eq 'secret')) {
if (ref($ltienc{$id}) eq 'HASH') {
if (exists($ltienc{$id}{$title})) {
@@ -3108,6 +3122,12 @@ sub store_linkprot {
if ($values{$title}) {
$display .= &mt('Return URL parameter').': '.$values{$title}.', ';
}
+ } elsif ($title eq 'passbackformat') {
+ if ($values{$title} eq '1.0') {
+ $display .= &mt('Can return grades to Launcher with Outcomes Service 1.0 format').', ';
+ } elsif ($values{$title} eq '1.1') {
+ $display .= &mt('Can return grades to Launcher with Outcomes Service 1.1 format').', ';
+ }
} else {
$display .= $desc{$title}.': '.$values{$title}.', ';
}
@@ -3223,7 +3243,7 @@ sub store_ltitools {
&Apache::lonnet::devalidate_cache_new('courseltitools',$hashid);
unless (($home eq 'no_host') || ($home eq '')) {
if (grep(/^\Q$home\E$/,@ids)) {
- &Apache::lonnet::devalidate_cache_new('courseltitoolsenc',$hashid);
+ &Apache::lonnet::devalidate_cache_new('crsltitoolsenc',$hashid);
}
}
} else {
@@ -6310,8 +6330,38 @@ sub print_bridgetasks {
sub print_ltitools {
my ($cdom,$cnum,$settings,$rowtotal,$crstype,$noedit,$context) = @_;
my ($datatable,$disabled,$css_class,$dest);
- my %lt = <itools_names();
+ if ($noedit) {
+ $disabled = ' disabled="disabled"';
+ }
my $itemcount = 1;
+ unless ($context eq 'domain') {
+ my %tooltypes = &Apache::loncommon::usable_exttools();
+ unless ($tooltypes{'crs'}) {
+ my $showtype = 'course';
+ if ($crstype eq 'Community') {
+ $showtype = lc($crstype);
+ }
+ $css_class = $itemcount%2?' class="LC_odd_row"':'';
+ $datatable = '
'.
+ &mt("Definition of external tools is not enabled for this $showtype.").' ';
+ if ($tooltypes{'dom'}) {
+ $datatable .= &mt("Contact an administrator for the $showtype domain ([_1]) to request this feature be enabled.",
+ ''.$cdom.'').
+ '
'.
+ &mt("Use of external tools defined at a domain level is enabled, so the $showtype editor can be used to add tool(s), if any have been defined.");
+ } else {
+ $datatable .= &mt("Use of external tools defined at a domain level is not enabled, either, for this $showtype.").
+ '
'.
+ &mt("Contact an administrator for the $showtype domain ([_1]) to request changes.",
+ ''.$cdom.'');
+
+ }
+ $datatable .= '
';
+ $itemcount ++;
+ return $datatable;
+ }
+ }
+ my %lt = <itools_names();
my $maxnum = 0;
my %ordered;
if (ref($settings) eq 'HASH') {
@@ -6393,7 +6443,7 @@ sub print_ltitools {
''.
''.
'