--- loncom/interface/lonparmset.pm 2021/08/04 19:59:10 1.601
+++ loncom/interface/lonparmset.pm 2022/04/30 03:11:05 1.609
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set parameters for assessments
#
-# $Id: lonparmset.pm,v 1.601 2021/08/04 19:59:10 raeburn Exp $
+# $Id: lonparmset.pm,v 1.609 2022/04/30 03:11:05 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1736,13 +1736,11 @@ sub print_row {
my ($domltistr,$crsltistr);
my %lti =
&Apache::lonnet::get_domain_lti($env{'course.'.$env{'request.course.id'}.'.domain'},
- 'provider');
+ 'linkprot');
if (keys(%lti)) {
foreach my $item (sort { $a <=> $b } (keys(%lti))) {
- if (ref($lti{$item}) eq 'HASH') {
- unless ($lti{$item}{'requser'}) {
- $domltistr .= $item.':'.&escape(&escape($lti{$item}{'consumer'})).',';
- }
+ if (($item =~ /^\d+$/) && (ref($lti{$item}) eq 'HASH')) {
+ $domltistr .= $item.':'.&escape(&escape($lti{$item}{'name'})).',';
}
}
$domltistr =~ s/,$//;
@@ -2076,6 +2074,7 @@ sub parm_control_group {
# @param {hash reference} $uris - hash resource/map id -> resource src
# @param {hash reference} $keyorder - hash parameter key -> appearance rank for this parameter when looking through every resource and every parameter, starting at 100 (integer)
# @param {hash reference} $defkeytype - hash parameter name -> parameter type
+# @param {string} $pssymb - resource symb (when a single resource is selected)
sub extractResourceInformation {
my $ids = shift;
my $typep = shift;
@@ -2089,11 +2088,22 @@ sub extractResourceInformation {
my $uris=shift;
my $keyorder=shift;
my $defkeytype=shift;
+ my $pssymb=shift;
my $keyordercnt=100;
my $navmap = Apache::lonnavmaps::navmap->new();
- my @allres=$navmap->retrieveResources(undef,undef,1,undef,1);
+ return unless(ref($navmap));
+ my @allres;
+ if ($pssymb ne '') {
+ my $res = $navmap->getBySymb($pssymb);
+ if (ref($res)) {
+ @allres = ($res);
+ }
+ }
+ if (!@allres) {
+ @allres=$navmap->retrieveResources(undef,undef,1,undef,1);
+ }
foreach my $resource (@allres) {
my $id=$resource->id();
my ($mapid,$resid)=split(/\./,$id);
@@ -2217,7 +2227,7 @@ sub isdateparm {
sub is_specialstring {
my $type=shift;
- return (($type=~/^string_/) && (($type ne 'string_yesno')));
+ return (($type=~/^string_/) && ($type ne 'string_yesno'));
}
# Prints the HTML and Javascript to select parameters, with various shortcuts.
@@ -3024,19 +3034,33 @@ sub keysindisplayorder {
#
# @param {Apache2::RequestRec} $r - the Apache request
# @param {string} $sortorder - realmstudent|studentrealm
+# @param {string} $context - newoverview|overview
sub sortmenu {
- my ($r,$sortorder)=@_;
- $r->print('
');
}
# Returns a hash parameter key -> order (integer) giving the order for some parameters.
@@ -3366,7 +3390,7 @@ sub assessparms {
# --------------------------------------------------------- Get all assessments
&extractResourceInformation(\@ids, \%typep,\%keyp, \%allparms, \%allparts, \%allmaps,
\%mapp, \%symbp,\%maptitles,\%uris,
- \%keyorder);
+ \%keyorder,undef,$pssymb);
%allmaps_inverted = reverse(%allmaps);
@@ -3383,6 +3407,7 @@ sub assessparms {
my $chome = $env{'course.'.$env{'request.course.id'}.'.home'};
my ($got_chostname,$chostname,$cmajor,$cminor);
my $totalstored = 0;
+ my $totalskippeduser = 0;
my $now = time;
for (my $i=0;$i<=$#markers;$i++) {
my ($needsrelease,$needsnewer,$name,$namematch);
@@ -3391,6 +3416,11 @@ sub assessparms {
}
if ($markers[$i] =~ /\&(8|7|6|5)$/) {
next if ($noeditgrp);
+ } elsif ($markers[$i] =~ /\&(4|3|2|1)$/) {
+ if ($uname eq '') {
+ $totalskippeduser ++;
+ next;
+ }
}
if ($markers[$i] =~ /\&(17|11|7|3)$/) {
$namematch = 'maplevelrecurse';
@@ -3529,9 +3559,27 @@ sub assessparms {
# ---------------------------------------------------------------- Done storing
if ($totalstored) {
$message.='
'
+ .&mt('Changes for [quant,_1,parameter] saved.',$totalstored)
+ .' '
.&mt('Changes can take up to 10 minutes before being active for all students.')
.&Apache::loncommon::help_open_topic('Caching')
.'
';
+ } else {
+ $message.='
'.&mt('No parameter changes saved.').'
';
+ }
+ if ($totalskippeduser) {
+ $message .= '
';
+ if ($uhome eq 'no_host') {
+ $message .= &mt('Changes for [quant,_1,user-specific parameter] not saved because the username or ID was invalid.',
+ $totalskippeduser);
+ } elsif ($env{'form.userroles'} eq 'any') {
+ $message .= &mt('Changes for [quant,_1,user-specific parameter] not saved because the user does not have a course role.',
+ $totalskippeduser);
+ } else {
+ $message .= &mt('Changes for [quant,_1,user-specific parameter] not saved because the user is not a student.',
+ $totalskippeduser);
+ }
+ $message .= '