--- loncom/interface/lonparmset.pm 2016/03/02 14:14:06 1.556
+++ loncom/interface/lonparmset.pm 2016/03/04 21:43:15 1.557
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set parameters for assessments
#
-# $Id: lonparmset.pm,v 1.556 2016/03/02 14:14:06 raeburn Exp $
+# $Id: lonparmset.pm,v 1.557 2016/03/04 21:43:15 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -759,7 +759,6 @@ sub storeparm_by_symb_inner {
&Apache::lonnet::expirespread('','','studentcalc');
if (($snum==13) || ($snum==9) || ($snum==5)) {
&Apache::lonnet::expirespread('','','assesscalc',$symb);
-#FIXME
} elsif (($snum==14) || ($snum==10) || ($snum==6)) {
&Apache::lonnet::expirespread('','','assesscalc',$map);
} else {
@@ -2412,13 +2411,16 @@ sub assessparms {
my $totalstored = 0;
my $now = time;
for (my $i=0;$i<=$#markers;$i++) {
- my ($needsrelease,$needsnewer,$name);
+ my ($needsrelease,$needsnewer,$name,$namematch);
if (($env{'request.course.sec'} ne '') && ($markers[$i] =~ /\&(9|10|11|12)$/)) {
next if ($csec ne $env{'request.course.sec'});
}
if ($markers[$i] =~ /\&(8|7|6|5)$/) {
next if ($noeditgrp);
- }
+ }
+ if ($markers[$i] =~ /\&(17|11|7|3)$/) {
+ $namematch = 'maplevelrecurse';
+ }
if ($markers[$i] =~ /^[\d.]+\&0_availablestudent\&(1|2|3|4)$/) {
my (@ok_slots,@fail_slots,@del_slots);
my $courseopt=&Apache::lonnet::get_courseresdata($cnum,$cdom);
@@ -2505,19 +2507,42 @@ sub assessparms {
}
}
$needsrelease =
- $Apache::lonnet::needsrelease{"parameter:$name:$val:$valmatch"};
+ $Apache::lonnet::needsrelease{"parameter:$name:$val:$valmatch:"};
if ($needsrelease) {
unless ($got_chostname) {
($chostname,$cmajor,$cminor) = ¶meter_release_vars();
$got_chostname = 1;
}
- $needsnewer = ¶meter_releasecheck($name,$val,$valmatch,
+ $needsnewer = ¶meter_releasecheck($name,$val,$valmatch,undef,
$needsrelease,
$cmajor,$cminor);
}
}
if ($needsnewer) {
- $message .= &oldversion_warning($name,$values[$i],$chostname,$cmajor,
+ undef($namematch);
+ } else {
+ my $currneeded;
+ if ($needsrelease) {
+ $currneeded = $needsrelease;
+ }
+ if ($namematch) {
+ $needsrelease =
+ $Apache::lonnet::needsrelease{"parameter::::$namematch"};
+ if (($needsrelease) && (($currneeded eq '') || ($needsrelease < $currneeded))) {
+ unless ($got_chostname) {
+ ($chostname,$cmajor,$cminor) = ¶meter_release_vars();
+ $got_chostname = 1;
+ }
+ $needsnewer = ¶meter_releasecheck(undef,undef,undef,$namematch,
+ $needsrelease,
+ $cmajor,$cminor);
+ } else {
+ undef($namematch);
+ }
+ }
+ }
+ if ($needsnewer) {
+ $message .= &oldversion_warning($name,$namematch,$values[$i],$chostname,$cmajor,
$cminor,$needsrelease);
} else {
$message.=&storeparm(split(/\&/,$markers[$i]),
@@ -3153,7 +3178,7 @@ sub storedata {
$tkey=~s/\.\[useropt\:$tuname\:$tudom\]\./\./;
}
if ($cmd eq 'set' || $cmd eq 'datepointer' || $cmd eq 'dateinterval') {
- my ($data, $typeof, $text, $name, $valchk, $valmatch);
+ my ($data, $typeof, $text, $name, $valchk, $valmatch, $namematch);
if ($cmd eq 'set') {
$data=$env{$key};
$valmatch = '';
@@ -3234,24 +3259,51 @@ sub storedata {
$typeof=$env{'form.typeof_'.$thiskey};
$text = &mt('Saved modified date for');
}
- if ($name ne '') {
+ if ($thiskey =~ m{\.(?:sequence|page)___\(rec\)}) {
+ $namematch = 'maplevelrecurse';
+ }
+ if (($name ne '') || ($namematch ne '')) {
my ($needsrelease,$needsnewer);
- $needsrelease = $Apache::lonnet::needsrelease{"parameter:$name:$valchk:$valmatch"};
- if ($needsrelease) {
- unless ($got_chostname) {
- ($chostname,$cmajor,$cminor)=¶meter_release_vars();
- $got_chostname = 1;
+ if ($name ne '') {
+ $needsrelease = $Apache::lonnet::needsrelease{"parameter:$name:$valchk:$valmatch:"};
+ if ($needsrelease) {
+ unless ($got_chostname) {
+ ($chostname,$cmajor,$cminor)=¶meter_release_vars();
+ $got_chostname = 1;
+ }
+ $needsnewer = ¶meter_releasecheck($name,$valchk,$valmatch,undef,
+ $needsrelease,
+ $cmajor,$cminor);
}
- $needsnewer = ¶meter_releasecheck($name,$valchk,$valmatch,
- $needsrelease,
- $cmajor,$cminor);
+ }
+ if ($namematch ne '') {
if ($needsnewer) {
- $r->print('
'.&oldversion_warning($name,$data,
- $chostname,$cmajor,
- $cminor,$needsrelease));
- next;
+ undef($namematch);
+ } else {
+ my $currneeded;
+ if ($needsrelease) {
+ $currneeded = $needsrelease;
+ }
+ $needsrelease =
+ $Apache::lonnet::needsrelease{"parameter::::$namematch"};
+ if (($needsrelease) && (($currneeded eq '') || ($needsrelease < $currneeded))) {
+ unless ($got_chostname) {
+ ($chostname,$cmajor,$cminor) = ¶meter_release_vars();
+ $got_chostname = 1;
+ }
+ $needsnewer = ¶meter_releasecheck(undef,$valchk,$valmatch,$namematch,
+ $needsrelease,$cmajor,$cminor);
+ } else {
+ undef($namematch);
+ }
}
}
+ if ($needsnewer) {
+ $r->print('
'.&oldversion_warning($name,$namematch,$data,
+ $chostname,$cmajor,
+ $cminor,$needsrelease));
+ next;
+ }
}
if (defined($data) and $$olddata{$thiskey} ne $data) {
if ($tuname) {
@@ -3735,7 +3787,7 @@ sub string_selector {
($chostname,$cmajor,$cminor)=¶meter_release_vars();
$got_chostname = 1;
}
- my $needsnewer=¶meter_releasecheck($name,$parmval,$parmmatch,
+ my $needsnewer=¶meter_releasecheck($name,$parmval,$parmmatch,undef,
$needsrelease,$cmajor,$cminor);
if ($needsnewer) {
if ($parmmatch ne '') {
@@ -3914,7 +3966,7 @@ sub date_interval_selector {
($chostname,$cmajor,$cminor)=¶meter_release_vars();
$got_chostname = 1;
}
- my $needsnewer=¶meter_releasecheck($name,$parmval,$parmmatch,
+ my $needsnewer=¶meter_releasecheck($name,$parmval,$parmmatch,undef,
$needsrelease,$cmajor,$cminor);
if ($needsnewer) {
if ($parmmatch ne '') {
@@ -3963,7 +4015,24 @@ sub date_interval_selector {
}
sub oldversion_warning {
- my ($name,$value,$chostname,$cmajor,$cminor,$needsrelease) = @_;
+ my ($name,$namematch,$value,$chostname,$cmajor,$cminor,$needsrelease) = @_;
+ my $standard_name = &standard_parameter_names($name);
+ if ($namematch) {
+ my $level = &standard_parameter_levels($namematch);
+ my $msg = '';
+ if ($level) {
+ $msg = &mt('[_1] was [_2]not[_3] set at the level of: [_4].',
+ $standard_name,'','','"'.$level.'"');
+ } else {
+ $msg = &mt('[_1] was [_2]not[_3] set.',
+ $standard_name,'','');
+ }
+ return '
'.$msg.'
'.
+ &mt('LON-CAPA version ([_1]) installed on home server ([_2]) does not meet version requirements ([_3] or newer).',
+ $cmajor.'.'.$cminor,$chostname,
+ $needsrelease).
+ '
'.
- &mt('[_1] was [_2]not[_3] set to [_4].',
- $standard_name,'','','"'.$desc.'"').'
'.
- &mt('LON-CAPA version ([_1]) installed on home server ([_2]) does not meet version requirements ([_3] or newer).',
- $cmajor.'.'.$cminor,$chostname,
- $needsrelease).
- '