--- loncom/interface/domainprefs.pm 2023/07/05 17:08:22 1.160.6.118.2.14
+++ loncom/interface/domainprefs.pm 2024/02/25 06:15:54 1.160.6.118.2.19
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set domain-wide configuration settings
#
-# $Id: domainprefs.pm,v 1.160.6.118.2.14 2023/07/05 17:08:22 raeburn Exp $
+# $Id: domainprefs.pm,v 1.160.6.118.2.19 2024/02/25 06:15:54 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -595,6 +595,8 @@ sub handler {
col2 => 'Settings'},
{col1 => 'Rules for shared secrets',
col2 => 'Settings'},
+ {col1 => 'Link Protectors in Courses',
+ col2 => 'Values'},
{col1 => 'Link Protectors',
col2 => 'Settings'},
{col1 => 'Consumers',
@@ -936,9 +938,26 @@ sub print_config_box {
$colspan = ' colspan="2"';
} elsif ($action eq 'passwords') {
$output .= $item->{'print'}->('middle',$dom,$confname,$settings,\$rowtotal);
+ } elsif ($action eq 'lti') {
+ $output .= $item->{'print'}->('upper',$dom,$settings,\$rowtotal).'
+
+
+
+
+
+
+
+ '.&mt($item->{'header'}->[2]->{'col1'}).'
+ '.&mt($item->{'header'}->[2]->{'col2'}).'
+ '."\n".
+ $item->{'print'}->('middle',$dom,$settings,\$rowtotal);
} else {
$output .= $item->{'print'}->('middle',$dom,$settings,\$rowtotal);
}
+ my $hdridx = 2;
+ if ($action eq 'lti') {
+ $hdridx = 3;
+ }
$output .= '
@@ -947,8 +966,8 @@ sub print_config_box {
- '.&mt($item->{'header'}->[2]->{'col1'}).'
- '.&mt($item->{'header'}->[2]->{'col2'}).'
+ '.&mt($item->{'header'}->[$hdridx]->{'col1'}).'
+ '.&mt($item->{'header'}->[$hdridx]->{'col2'}).'
'."\n";
if ($action eq 'coursecategories') {
$output .= &print_coursecategories('bottom',$dom,$item,$settings,\$rowtotal);
@@ -958,6 +977,7 @@ sub print_config_box {
} else {
$output .= $item->{'print'}->('lower',$dom,$settings,\$rowtotal);
}
+ $hdridx ++;
$output .= '
@@ -967,8 +987,8 @@ sub print_config_box {
- '.&mt($item->{'header'}->[3]->{'col1'}).'
- '.&mt($item->{'header'}->[3]->{'col2'}).' '."\n";
+ '.&mt($item->{'header'}->[$hdridx]->{'col1'}).'
+ '.&mt($item->{'header'}->[$hdridx]->{'col2'}).' '."\n";
if ($action eq 'passwords') {
$output .= $item->{'print'}->('bottom',$dom,$confname,$settings,\$rowtotal);
} else {
@@ -5273,7 +5293,7 @@ sub print_lti {
my ($position,$dom,$settings,$rowtotal) = @_;
my $itemcount = 1;
my ($datatable,$css_class);
- my (%rules,%encrypt,%privkeys,%linkprot);
+ my (%rules,%encrypt,%privkeys,%linkprot,%suggestions);
if (ref($settings) eq 'HASH') {
if ($position eq 'top') {
if (exists($settings->{'encrypt'})) {
@@ -5296,12 +5316,18 @@ sub print_lti {
}
}
}
- } elsif ($position eq 'middle') {
+ } elsif ($position eq 'upper') {
if (exists($settings->{'rules'})) {
if (ref($settings->{'rules'}) eq 'HASH') {
%rules = %{$settings->{'rules'}};
}
}
+ } elsif ($position eq 'middle') {
+ if (exists($settings->{'suggested'})) {
+ if (ref($settings->{'suggested'}) eq 'HASH') {
+ %suggestions = %{$settings->{'suggested'}};
+ }
+ }
} elsif ($position eq 'lower') {
if (exists($settings->{'linkprot'})) {
if (ref($settings->{'linkprot'}) eq 'HASH') {
@@ -5312,7 +5338,7 @@ sub print_lti {
}
}
} else {
- foreach my $key ('encrypt','private','rules','linkprot') {
+ foreach my $key ('encrypt','private','rules','linkprot','suggestions') {
if (exists($settings->{$key})) {
delete($settings->{$key});
}
@@ -5321,11 +5347,14 @@ sub print_lti {
}
if ($position eq 'top') {
$datatable = &secrets_form($dom,'ltisec',\%encrypt,\%privkeys,$rowtotal);
- } elsif ($position eq 'middle') {
+ } elsif ($position eq 'upper') {
$datatable = &password_rules('ltisecrets',\$itemcount,\%rules);
$$rowtotal += $itemcount;
+ } elsif ($position eq 'middle') {
+ $datatable = &linkprot_suggestions(\%suggestions,\$itemcount);
+ $$rowtotal += $itemcount;
} elsif ($position eq 'lower') {
- $datatable .= &Apache::courseprefs::print_linkprotection($dom,'',$settings,$rowtotal,'','','domain');
+ $datatable .= &Apache::courseprefs::print_linkprotection($dom,'',$settings,$rowtotal,'','','domain');
} else {
my ($switchserver,$switchmessage);
$switchserver = &check_switchserver($dom);
@@ -5911,7 +5940,57 @@ sub ltimenu_titles {
);
}
-
+sub linkprot_suggestions {
+ my ($suggested,$itemcount) = @_;
+ my $count = 0;
+ my $next = 1;
+ my %lt = &Apache::lonlocal::texthash(
+ 'name' => 'Suggested Launcher',
+ 'info' => 'Recommendations',
+ );
+ my ($datatable,$css_class,$dest);
+ if (ref($suggested) eq 'HASH') {
+ my @current = sort { $a <=> $b } keys(%{$suggested});
+ $next += $current[-1];
+ for (my $i=0; $i<@current; $i++) {
+ my $num = $current[$i];
+ my %values;
+ if (ref($suggested->{$num}) eq 'HASH') {
+ %values = %{$suggested->{$num}};
+ } else {
+ next;
+ }
+ $css_class = $$itemcount%2?' class="LC_odd_row"':'';
+ $datatable .=
+ ''."\n".
+ ' '."\n".
+ &mt('Delete?').' '."\n".
+ '
'.$lt{'name'}.' '."\n".
+ ' '."\n".
+ ' '.
+ '
'.$lt{'info'}.' '."\n".
+ ''.
+ ' '.
+ '
'."\n".
+ ' '."\n";
+ $$itemcount ++;
+ }
+ }
+ $css_class = $$itemcount%2?' class="LC_odd_row"':'';
+ $datatable .= ''."\n".
+ ' '."\n".
+ ' '.&mt('Add').' '."\n".
+ ''."\n".
+ '
'.$lt{'name'}.' '."\n".
+ ' '."\n".
+ ' '.
+ '
'.$lt{'info'}.' '."\n".
+ ''.
+ ' '.
+ '
'."\n".
+ ' '."\n";
+ return $datatable;
+}
sub print_coursedefaults {
my ($position,$dom,$settings,$rowtotal) = @_;
@@ -5919,6 +5998,7 @@ sub print_coursedefaults {
my $itemcount = 1;
my %choices = &Apache::lonlocal::texthash (
uploadquota => 'Default quota for files uploaded directly to course/community using Course Editor (MB)',
+ coursequota => 'Default cumulative quota for all group portfolio spaces in course',
anonsurvey_threshold => 'Responder count needed before showing submissions for anonymous surveys',
coursecredits => 'Credits can be specified for courses',
uselcmath => 'Math preview uses LON-CAPA previewer (javascript) in place of DragMath (Java)',
@@ -5935,6 +6015,7 @@ sub print_coursedefaults {
my %staticdefaults = (
anonsurvey_threshold => 10,
uploadquota => 500,
+ coursequota => 20,
postsubmit => 60,
mysqltables => 172800,
domexttool => 1,
@@ -6051,7 +6132,8 @@ sub print_coursedefaults {
$itemcount ++;
} else {
$css_class = $itemcount%2 ? ' class="LC_odd_row"' : '';
- my ($currdefresponder,%defcredits,%curruploadquota,%deftimeout,%currmysql);
+ my ($currdefresponder,%defcredits,%curruploadquota,%currcoursequota,
+ %deftimeout,%currmysql);
my $currusecredits = 0;
my $postsubmitclient = 1;
my $ltiauth = 0;
@@ -6088,6 +6170,11 @@ sub print_coursedefaults {
$curruploadquota{$type} = $settings->{'uploadquota'}{$type};
}
}
+ if (ref($settings->{'coursequota'}) eq 'HASH') {
+ foreach my $type (keys(%{$settings->{'coursequota'}})) {
+ $currcoursequota{$type} = $settings->{'coursequota'}{$type};
+ }
+ }
if (ref($settings->{'coursecredits'}) eq 'HASH') {
foreach my $type (@types) {
next if ($type eq 'community');
@@ -6147,6 +6234,9 @@ sub print_coursedefaults {
if ($curruploadquota{$type} eq '') {
$curruploadquota{$type} = $staticdefaults{'uploadquota'};
}
+ if ($currcoursequota{$type} eq '') {
+ $currcoursequota{$type} = $staticdefaults{'coursequota'};
+ }
}
$datatable .=
''.
@@ -6170,6 +6260,19 @@ sub print_coursedefaults {
}
$datatable .= '
'."\n";
$itemcount ++;
+ $css_class = $itemcount%2 ? ' class="LC_odd_row"' : '';
+ $datatable .= '