--- loncom/interface/courseprefs.pm 2023/06/01 20:04:36 1.121
+++ 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.121 2023/06/01 20:04:36 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;
@@ -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}.', ';
}
@@ -7316,7 +7336,27 @@ sub print_linkprotection {
'
'.
' | ';
- my ($usersty,$onclickrequser,%checkedrequser,$onclickreturnurl,%checkedreturnurl);
+ my ($usersty,$onclickrequser,%checkedrequser,$onclickreturnurl,%checkedreturnurl,
+ $onclickpassback,%checkedpassback,$passbacksty,%checkedpassbackfmt);
+ $passbacksty = 'none';
+ $onclickpassback = ' onclick="toggleLinkProtExtra(this.form,'."'passback','passbackparam','1','inline-block','$i'".');"';
+ %checkedpassback = (
+ 'no' => ' checked="checked"',
+ 'yes' => '',
+ );
+ %checkedpassbackfmt = (
+ '1p1' => ' checked="checked"',
+ '1p0' => '',
+ );
+ if ($values{'passback'} ne '') {
+ $passbacksty = 'inline-block';
+ $checkedpassback{'yes'} = ' checked="checked"';
+ $checkedpassback{'no'} = '';
+ if ($values{'passbackformat'} eq '1.0') {
+ $checkedpassbackfmt{'1p0'} = ' checked="checked"';
+ $checkedpassbackfmt{'1p1'} = '';
+ }
+ }
if ($ltiauth) {
$usersty = 'display:none';
$onclickrequser = ' onclick="toggleLinkProtExtra(this.form,'."'requser','optional','1','block','$i'".');"';
@@ -7405,6 +7445,19 @@ sub print_linkprotection {
}
}
$datatable .= '
'.
+ ''.$desc{'passback'}.'?'.
+ ' '.
+ ' '.
+ ''.
+ ''.&mt('Grade format').
+ ''.(' 'x2).
+ ''.
+ ''.
+ ' '.
''.$desc{'returnurl'}.'?'.
' '.
@@ -7435,7 +7488,8 @@ sub print_linkprotection {
''."\n".
''.&mt('Add').' | '."\n".
'';
- my ($usersty,$onclickrequser,%checkedrequser,$onclickreturnurl,%checkedreturnurl);
+ my ($usersty,$onclickrequser,%checkedrequser,$onclickreturnurl,%checkedreturnurl,
+ $onclickpassback,%checkedpassback,%checkedpassbackfmt);
if ($ltiauth) {
$usersty = 'display:none';
$onclickrequser = ' onclick="toggleLinkProtExtra(this.form,'."'requser','optional','1','block','add'".');"';
@@ -7445,6 +7499,15 @@ sub print_linkprotection {
);
$datatable .= ' |