--- loncom/interface/lonparmset.pm 2006/01/10 05:27:57 1.275 +++ loncom/interface/lonparmset.pm 2006/05/10 22:27:29 1.302 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.275 2006/01/10 05:27:57 raeburn Exp $ +# $Id: lonparmset.pm,v 1.302 2006/05/10 22:27:29 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -117,7 +117,6 @@ sub parmval { sub parmval_by_symb { my ($what,$symb,$def,$uname,$udom,$csec,$cgroup,$courseopt)=@_; # load caches - &cacheparmhash(); my $useropt=&Apache::lonnet::get_userresdata($uname,$udom); @@ -293,6 +292,25 @@ sub preset_defaults { } ################################################## + +sub date_sanity_info { + my $checkdate=shift; + unless ($checkdate) { return ''; } + my $result=''; + my $crsprefix='course.'.$env{'request.course.id'}.'.'; + if ($env{$crsprefix.'default_enrollment_end_date'}) { + if ($checkdate>$env{$crsprefix.'default_enrollment_end_date'}) { + $result.=''.&mt('After course enrollment end!'); + } + } + if ($env{$crsprefix.'default_enrollment_start_date'}) { + if ($checkdate<$env{$crsprefix.'default_enrollment_start_date'}) { + $result.=''.&mt('Before course enrollment start!'); + } + } + return $result; +} +################################################## ################################################## # # Store a parameter by ID @@ -375,6 +393,10 @@ sub storeparm_by_symb { return ''; } +sub log_parmset { + return &Apache::lonnet::instructor_log('parameterlog',@_); +} + sub storeparm_by_symb_inner { # ---------------------------------------------------------- Get symb, map, etc my ($symb,$spnam,$snum,$nval,$ntype,$uname,$udom,$csec,$cgroup)=@_; @@ -431,9 +453,11 @@ sub storeparm_by_symb_inner { if ($delete) { $reply=&Apache::lonnet::del ('resourcedata',[keys(%storecontent)],$cdom,$cnum); + &log_parmset(\%storecontent,1); } else { $reply=&Apache::lonnet::cput ('resourcedata',\%storecontent,$cdom,$cnum); + &log_parmset(\%storecontent); } &Apache::lonnet::devalidatecourseresdata($cnum,$cdom); } else { @@ -454,9 +478,11 @@ sub storeparm_by_symb_inner { if ($delete) { $reply=&Apache::lonnet::del ('resourcedata',[keys(%storecontent)],$udom,$uname); + &log_parmset(\%storecontent,1,$uname,$udom); } else { $reply=&Apache::lonnet::cput ('resourcedata',\%storecontent,$udom,$uname); + &log_parmset(\%storecontent,0,$uname,$udom); } &Apache::lonnet::devalidateuserresdata($uname,$udom); } @@ -516,7 +542,7 @@ sub valout { } $result=~s/\s+$//; } elsif (&isdateparm($type)) { - $result = localtime($value); + $result = localtime($value).&date_sanity_info($value); } else { $result = $value; } @@ -561,20 +587,13 @@ sub plink { &valout($value,$type).''; } -sub startpage { - my $r=shift; - my $loaditems = qq|onUnload="pclose()" onLoad="group_or_section('cgroup')"|; - my $bodytag=&Apache::loncommon::bodytag('Set/Modify Course Parameters','', - $loaditems); - my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(undef,'Table Mode Parameter Setting'); +sub page_js { + my $selscript=&Apache::loncommon::studentbrowser_javascript(); my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition(); - my $html=&Apache::lonxml::xmlbegin(); - $r->print(< -LON-CAPA Course Parameters - $selscript - -$bodytag +ENDJS + +} +sub startpage { + my ($r) = @_; + + my %loaditems = ('onunload' => "pclose()", + 'onload' => "group_or_section('cgroup')",); + + my $start_page = + &Apache::loncommon::start_page('Set/Modify Course Parameters', + &page_js(), + {'add_entries' => \%loaditems,}); + my $breadcrumbs = + &Apache::lonhtmlcommon::breadcrumbs('Table Mode Parameter Setting'); + $r->print(< - - - - + + + + ENDHEAD } @@ -1083,21 +1117,15 @@ sub usermenu { 'oi' => "or ID", 'ad' => "at Domain" ); - my %sectionhash=(); my $sections=''; - my $numsec = &Apache::loncommon::get_sections( - $env{'course.'.$env{'request.course.id'}.'.domain'}, - $env{'course.'.$env{'request.course.id'}.'.num'}, - \%sectionhash); + my %sectionhash = &Apache::loncommon::get_sections(); + my $groups; - my %grouphash; - my $numgrp = &Apache::loncommon::coursegroups( - \%grouphash, - $env{'course.'.$env{'request.course.id'}.'.domain'}, - $env{'course.'.$env{'request.course.id'}.'.num'}); - if ($numsec > 0) { + my %grouphash = &Apache::loncommon::coursegroups(); + + if (%sectionhash) { $sections=$lt{'se'}.': '; } - if ($numsec && $numgrp && $parmlev ne 'full') { + if (%sectionhash && %grouphash && $parmlev ne 'full') { $sections .= ' or '; $sections .= qq| |; } - if ($numgrp > 0) { + + if (%grouphash) { $groups=$lt{'gr'}.': print(''); - foreach my $s ('all',sort keys %sectionhash) { - $r->print(' print(' selected'); - last; - } + my %sectionhash = &Apache::loncommon::get_sections(); + return if (!%sectionhash); + + $r->print(''); + foreach my $s ('all',sort keys %sectionhash) { + $r->print(' print(' selected'); + last; } - $r->print('>'.$s."\n"); } - $r->print("\n"); - } + $r->print('>'.$s."\n"); + } + $r->print("\n"); } sub groupmenu { my ($r,$selectedgroups)=@_; - my %grouphash; - my $numgrp = &Apache::loncommon::coursegroups( - \%grouphash, - $env{'course.'.$env{'request.course.id'}.'.domain'}, - $env{'course.'.$env{'request.course.id'}.'.num'}); - if ($numgrp) { - $r->print(''); - foreach my $group (sort(keys(%grouphash))) { - $r->print(' print(' selected'); - last; - } - } - $r->print('>'.$group."\n"); - } - $r->print("\n"); + my %grouphash = &Apache::loncommon::coursegroups(); + return if (!%grouphash); + + $r->print(''); + foreach my $group (sort(keys(%grouphash))) { + $r->print(' print(' selected'); + last; + } + } + $r->print('>'.$group."\n"); } + $r->print("\n"); } @@ -1380,7 +1400,6 @@ sub assessparms { my $uhome; my $csec; my $cgroup; - my $grouplist; my @usersgroups = (); my $coursename=$env{'course.'.$env{'request.course.id'}.'.description'}; @@ -1486,16 +1505,12 @@ sub assessparms { .$name{'lastname'}.' '.$name{'generation'}. "\n".&mt('ID').": ".$name{'id'}.''; } - $grouplist = &Apache::lonnet::get_users_groups( + @usersgroups = &Apache::lonnet::get_users_groups( $udom,$uname,$env{'request.course.id'}); - if ($grouplist) { - @usersgroups = &Apache::lonnet::sort_course_groups($grouplist, - $env{'request.course.id'}); + if (@usersgroups > 0) { unless (grep/^\Q$cgroup\E$/,@usersgroups) { $cgroup = $usersgroups[0]; - } - } else { - $cgroup = ''; + } } } } @@ -1928,7 +1943,7 @@ ENDMAPONE $r->print(""); } # end of $parmlev eq general } - $r->print('
'; } - $grouplist = &Apache::lonnet::get_users_groups( + @usersgroups = &Apache::lonnet::get_users_groups( $udom,$uname,$env{'request.course.id'}); - if ($grouplist) { - @usersgroups = &Apache::lonnet::sort_course_groups($grouplist, - $env{'request.course.id'}); + if (@usersgroups > 0) { unless (grep/^\Q$cgroup\E$/,@usersgroups) { $cgroup = $usersgroups[0]; - } - } else { - $cgroup = ''; + } } } } @@ -1928,7 +1943,7 @@ ENDMAPONE $r->print(""); } # end of $parmlev eq general } - $r->print('