--- loncom/interface/lonparmset.pm 2020/02/10 02:11:46 1.594 +++ loncom/interface/lonparmset.pm 2020/02/10 19:48:56 1.595 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.594 2020/02/10 02:11:46 raeburn Exp $ +# $Id: lonparmset.pm,v 1.595 2020/02/10 19:48:56 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -5405,6 +5405,18 @@ sub dateshift { my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'}; my $crs = $env{'course.'.$env{'request.course.id'}.'.num'}; my $sec = $env{'request.course.sec'}; + my $secgrpregex; + if ($sec ne '') { + my @groups; + if ($env{'request.course.groups'} ne '') { + @groups = split(/:/,$env{'request.course.groups'}); + } + if (@groups) { + $secgrpregex = '(?:'.join('|',($sec,@groups)).')'; + } else { + $secgrpregex = $sec; + } + } my %data=&Apache::lonnet::dump('resourcedata',$dom,$crs); # ugly retro fix for broken version of types foreach my $key (keys(%data)) { @@ -5420,7 +5432,7 @@ sub dateshift { foreach my $key (keys(%data)) { if ($data{$key.'.type'}=~/^date_(start|end)$/) { if ($sec ne '') { - next unless ($key =~ /^$env{'request.course.id'}\.\[$sec\]\./); + next unless ($key =~ /^$env{'request.course.id'}\.\[$secgrpregex\]\./); } my $newdate=$data{$key}+$shift; $$numchanges ++; @@ -5840,7 +5852,15 @@ sub date_shift_one { text=>"Shifting Dates"}); my $submit_text = &mt('Shift all dates accordingly'); if ($sec ne '') { - $submit_text = &mt("Shift all dates set explicitly for section '[_1]', accordingly",$sec); + my @groups; + if ($env{'request.course.groups'} ne '') { + @groups = split(/:/,$env{'request.course.groups'}); + } + if (@groups) { + $submit_text = &mt("Shift dates set just for your section/group(s), accordingly"); + } else { + $submit_text = &mt("Shift dates set just for your section, accordingly"); + } } my $start_page=&Apache::loncommon::start_page('Shift Dates'); my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Shift'); @@ -5880,11 +5900,23 @@ sub date_shift_two { my $timeshifted=&Apache::lonhtmlcommon::get_date_from_form('timeshifted'); $r->print('

'.&mt('Shift Dates').'

'); if ($sec ne '') { - $r->print('

'. - &mt("Shift all dates set explicitly for section '[_1]', such that [_2] becomes [_3]", - $sec,&Apache::lonlocal::locallocaltime($env{'form.timebase'}), - &Apache::lonlocal::locallocaltime($timeshifted)). - '

'); + my @groups; + if ($env{'request.course.groups'} ne '') { + @groups = split(/:/,$env{'request.course.groups'}); + } + if (@groups) { + $r->print('

'. + &mt("Shift dates set just for your section/group(s), such that [_1] becomes [_2]", + &Apache::lonlocal::locallocaltime($env{'form.timebase'}), + &Apache::lonlocal::locallocaltime($timeshifted)). + '

'); + } else { + $r->print('

'. + &mt("Shift dates set just for your section, such that [_1] becomes [_2]", + &Apache::lonlocal::locallocaltime($env{'form.timebase'}), + &Apache::lonlocal::locallocaltime($timeshifted)). + '

'); + } } else { $r->print('

'.&mt('Shifting all dates such that [_1] becomes [_2]', &Apache::lonlocal::locallocaltime($env{'form.timebase'}), @@ -6856,6 +6888,12 @@ sub parm_change_log { } if ($last) { ($folder) = &Apache::lonnet::decode_symb($last); } } + my $numgroups = 0; + my @groups; + if ($env{'request.course.groups'} ne '') { + @groups = split(/:/,$env{'request.course.groups'}); + $numgroups = scalar(@groups); + } foreach my $id (sort { if ($parmlog{$b}{'exe_time'} ne $parmlog{$a}{'exe_time'}) { return $parmlog{$b}{'exe_time'} <=>$parmlog{$a}{'exe_time'} @@ -6895,7 +6933,8 @@ sub parm_change_log { my ($realm,$section,$parmname,$part,$what,$middle,$uname,$udom,$issection,$realmdescription)= &components($changed,$parmlog{$id}{'uname'},$parmlog{$id}{'udom'},$typeflag); if ($env{'request.course.sec'} ne '') { - next if (($issection ne '') && ($issection ne $env{'request.course.sec'})); + next if (($issection ne '') && (!(($issection eq $env{'request.course.sec'}) || + ($numgroups && (grep(/^\Q$issection\E$/,@groups)))))); if ($uname ne '') { my $stusection = &Apache::lonnet::getsection($uname,$udom,$env{'request.course.id'}); next if (($stusection ne '-1') && ($stusection ne $env{'request.course.sec'}));