--- loncom/interface/lonparmset.pm 2010/12/18 23:18:39 1.503 +++ loncom/interface/lonparmset.pm 2010/12/21 14:14:55 1.504 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.503 2010/12/18 23:18:39 raeburn Exp $ +# $Id: lonparmset.pm,v 1.504 2010/12/21 14:14:55 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -2119,7 +2119,11 @@ sub assessparms { my @types=split(/\&\&\&/,$env{'form.pres_type'}); my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; + my $chome = $env{'course.'.$env{'request.course.id'}.'.home'}; + my ($got_chostname,$chostname,$cmajor,$cminor); + my $totalstored = 0; for (my $i=0;$i<=$#markers;$i++) { + my ($needsrelease,$needsnewer); if ($markers[$i] =~ /^[\d.]+\&0_availablestudent\&(1|2|3)$/) { my (@ok_slots,@fail_slots,@del_slots); my $courseopt=&Apache::lonnet::get_courseresdata($cnum,$cdom); @@ -2151,20 +2155,37 @@ sub assessparms { } } } elsif ($markers[$i] =~ /_type\&\d+$/) { - if (($values[$i] eq 'anonsurvey') || ($values[$i] eq 'anonsurveycred') || ($values[$i] eq 'randomizetry')) { - &Apache::lonnet::update_released_required($Apache::lonnet::needsrelease{'parameter:type:'.$values[$i]}); + $needsrelease = + $Apache::lonnet::needsrelease{'parameter:type:'.$values[$i]}; + if ($needsrelease) { + unless ($got_chostname) { + ($chostname,$cmajor,$cminor) = &questiontype_release_vars(); + $got_chostname = 1; + } + $needsnewer = &questiontype_releasecheck($values[$i], + $needsrelease, + $chostname, + $cmajor,$cminor); } } - $message.=&storeparm(split(/\&/,$markers[$i]), - $values[$i], - $types[$i], - $uname,$udom,$csec,$cgroup); + if ($needsnewer) { + $message .= &oldversion_warning($values[$i],$chostname,$cmajor, + $cminor,$needsrelease); + } else { + $message.=&storeparm(split(/\&/,$markers[$i]), + $values[$i], + $types[$i], + $uname,$udom,$csec,$cgroup); + $totalstored ++; + } } # ---------------------------------------------------------------- Done storing - $message.='
' - .&mt('Changes can take up to 10 minutes before being active for all students.') - .&Apache::loncommon::help_open_topic('Caching') - .'
'; + if ($totalstored) { + $message.='' + .&mt('Changes can take up to 10 minutes before being active for all students.') + .&Apache::loncommon::help_open_topic('Caching') + .'
'; + } } #----------------------------------------------- if all selected, fill in array if ($pscat[0] eq "all") {@pscat = (keys %allparms);} @@ -2762,8 +2783,9 @@ sub storedata { undef %newdata; my @deldata=(); undef @deldata; - foreach (keys %env) { - if ($_=~/^form\.([a-z]+)\_(.+)$/) { + my ($got_chostname,$chostname,$cmajor,$cminor); + foreach my $key (keys(%env)) { + if ($key =~ /^form\.([a-z]+)\_(.+)$/) { my $cmd=$1; my $thiskey=$2; my ($tuname,$tudom)=&extractuser($thiskey); @@ -2774,11 +2796,29 @@ sub storedata { if ($cmd eq 'set' || $cmd eq 'datepointer' || $cmd eq 'dateinterval') { my ($data, $typeof, $text); if ($cmd eq 'set') { - $data=$env{$_}; + $data=$env{$key}; $typeof=$env{'form.typeof_'.$thiskey}; $text = &mt('Saved modified parameter for'); + if ($typeof eq 'string_questiontype') { + my ($needsrelease,$needsnewer); + $needsrelease = $Apache::lonnet::needsrelease{'parameter:type:'.$data}; + if ($needsrelease) { + unless ($got_chostname) { + ($chostname,$cmajor,$cminor)=&questiontype_release_vars(); + $got_chostname = 1; + } + $needsnewer = &questiontype_releasecheck($data,$needsrelease, + $chostname,$cmajor, + $cminor); + } + if ($needsnewer) { + $r->print(''.
+ &mt('Question Type was [_1]not[_2] set to [_3].',
+ '','','"'.$desc.'"').'
'.
+ &mt('LON-CAPA version ([_1]) installed on home server ([_2]) does not meet version requirements ([_3] or newer).',
+ $cmajor.'.'.$cminor,$chostname,
+ $needsrelease).
+ '