Diff for /loncom/interface/lonparmset.pm between versions 1.522.2.10 and 1.522.2.18

version 1.522.2.10, 2013/08/22 15:42:47 version 1.522.2.18, 2015/03/12 02:48:15
Line 46  This module sets coursewide and assessme Line 46  This module sets coursewide and assessme
   
 =over  =over
   
 =pod  
   
 =item parmval()  =item parmval()
   
 Figure out a cascading parameter.  Figure out a cascading parameter.
Line 139  javascript function 'pjump'. Line 137  javascript function 'pjump'.
   
  extractResourceInformation extracts lots of information about all of the the course's resources into a variety of hashes.   extractResourceInformation extracts lots of information about all of the the course's resources into a variety of hashes.
   
 Input: See list below:  Input: See list below
   
   =over 4
   
 =item * B<env{'user.name'}> : Current username  =item * B<env{'user.name'}> : Current username
   
 =item * B<env{'user.domain'}> : Domain of current user.  =item * B<env{'user.domain'}> : Domain of current user.
   
 =item * b<env{"request.course.fn"} : Course  =item * B<env{"request.course.fn"}> : Course
   
   =back
   
 Outputs: See list below:  Outputs: See list below
   
   =over 4
   
 =item * B<ids> (out) : An array that will contain all of the ids in the course.  =item * B<ids> (out) : An array that will contain all of the ids in the course.
   
Line 173  Outputs: See list below: Line 177  Outputs: See list below:
   
 =item * B<defkeytype>  =item * B<defkeytype>
   
   =back
   
 =item isdateparm()  =item isdateparm()
   
 =item parmmenu()  =item parmmenu()
Line 210  Returns: nothing Line 216  Returns: nothing
   
 Variables used (guessed by Jeremy):  Variables used (guessed by Jeremy):
   
   =over
   
 =item * B<pscat>: ParameterS CATegories? ends up a list of the types of parameters that exist, e.g., tol, weight, acc, opendate, duedate, answerdate, sig, maxtries, type.  =item * B<pscat>: ParameterS CATegories? ends up a list of the types of parameters that exist, e.g., tol, weight, acc, opendate, duedate, answerdate, sig, maxtries, type.
   
 =item * B<psprt>: ParameterS PaRTs? a list of the parts of a problem that we are displaying? Used to display only selected parts?  =item * B<psprt>: ParameterS PaRTs? a list of the parts of a problem that we are displaying? Used to display only selected parts?
Line 222  Variables used (guessed by Jeremy): Line 230  Variables used (guessed by Jeremy):
         When storing information, store as part 0          When storing information, store as part 0
         When requesting information, request from full part          When requesting information, request from full part
   
   =back
   
 =item tablestart()  =item tablestart()
   
 =item tableend()  =item tableend()
Line 288  Set portfolio metadata Line 298  Set portfolio metadata
   
 Main handler.  Calls &assessparms subroutine.  Main handler.  Calls &assessparms subroutine.
   
   
 =back  =back
   
 =cut  =cut
Line 1373  sub lookUpTableParameter { Line 1382  sub lookUpTableParameter {
         'contentopen' => 'time_settings',          'contentopen' => 'time_settings',
         'contentclose' => 'time_settings',          'contentclose' => 'time_settings',
         'discussend' => 'time_settings',          'discussend' => 'time_settings',
  'printopendate' => 'time_settings',   'printstartdate' => 'time_settings',
  'printclosedate' => 'time_settings',   'printenddate' => 'time_settings',
         'weight' => 'grading',          'weight' => 'grading',
         'handgrade' => 'grading',          'handgrade' => 'grading',
         'maxtries' => 'tries',          'maxtries' => 'tries',
Line 1961  sub standardkeyorder { Line 1970  sub standardkeyorder {
         'parameter_0_discussend' => 19,          'parameter_0_discussend' => 19,
         'parameter_0_discusshide' => 20,          'parameter_0_discusshide' => 20,
         'parameter_0_discussvote' => 21,          'parameter_0_discussvote' => 21,
  'parameter_0_printopendate'  =>  22,   'parameter_0_printstartdate'  =>  22,
  'parameter_0_printclosedate' =>  23);   'parameter_0_printenddate' =>  23);
 }  }
   
   
Line 2129  sub assessparms { Line 2138  sub assessparms {
         my $chome = $env{'course.'.$env{'request.course.id'}.'.home'};          my $chome = $env{'course.'.$env{'request.course.id'}.'.home'};
         my ($got_chostname,$chostname,$cmajor,$cminor);          my ($got_chostname,$chostname,$cmajor,$cminor);
         my $totalstored = 0;          my $totalstored = 0;
           my $now = time;
   
         for (my $i=0;$i<=$#markers;$i++) {          for (my $i=0;$i<=$#markers;$i++) {
             my ($needsrelease,$needsnewer,$name);              my ($needsrelease,$needsnewer,$name);
Line 2163  sub assessparms { Line 2172  sub assessparms {
                         }                          }
                     }                      }
                 }                  }
             } elsif ($markers[$i] =~ /_(type|lenient|retrypartial|discussvote|examcode)\&\d+$/) {              } elsif ($markers[$i] =~ /_(type|lenient|retrypartial|discussvote|examcode|printstartdate|printenddate)\&\d+$/) {
                 $name = $1;                  $name = $1;
                 my $val = $values[$i];                  my $val = $values[$i];
                 if ($name eq 'examcode') {                  if ($name eq 'examcode') {
                    if (&Apache::lonnet::validCODE($values[$i])) {                      if (&Apache::lonnet::validCODE($values[$i])) {
                        $val = 'valid';                          $val = 'valid';
                    }                      }
                   } elsif ($name eq 'printstartdate') {
                       if ($val =~ /^\d+$/) {
                           if ($val > $now) {
                               $val = 'future';
                           }
                       }
                   } elsif ($name eq 'printenddate') {
                       if ($val =~ /^\d+$/) {
                           if ($val < $now) {
                               $val = 'past';
                           }
                       }
                 }                  }
                 $needsrelease =                  $needsrelease =
                     $Apache::lonnet::needsrelease{"parameter:$name:$val"};                      $Apache::lonnet::needsrelease{"parameter:$name:$val"};
Line 2180  sub assessparms { Line 2201  sub assessparms {
                     }                      }
                     $needsnewer = &parameter_releasecheck($name,$val,                      $needsnewer = &parameter_releasecheck($name,$val,
                                                           $needsrelease,                                                            $needsrelease,
                                                           $chostname,  
                                                           $cmajor,$cminor);                                                            $cmajor,$cminor);
                 }                  }
             }              }
Line 2805  sub storedata { Line 2825  sub storedata {
     my @deldata=();      my @deldata=();
     undef @deldata;      undef @deldata;
     my ($got_chostname,$chostname,$cmajor,$cminor);      my ($got_chostname,$chostname,$cmajor,$cminor);
       my $now = time;
     foreach my $key (keys(%env)) {       foreach my $key (keys(%env)) { 
     if ($key =~ /^form\.([a-z]+)\_(.+)$/) {      if ($key =~ /^form\.([a-z]+)\_(.+)$/) {
         my $cmd=$1;          my $cmd=$1;
Line 2815  sub storedata { Line 2836  sub storedata {
         $tkey=~s/\.\[useropt\:$tuname\:$tudom\]\./\./;          $tkey=~s/\.\[useropt\:$tuname\:$tudom\]\./\./;
         }          }
         if ($cmd eq 'set' || $cmd eq 'datepointer' || $cmd eq 'dateinterval') {          if ($cmd eq 'set' || $cmd eq 'datepointer' || $cmd eq 'dateinterval') {
         my ($data, $typeof, $text, $name);          my ($data, $typeof, $text, $name, $valchk);
         if ($cmd eq 'set') {          if ($cmd eq 'set') {
             $data=$env{$key};              $data=$env{$key};
               $valchk = $data;
             $typeof=$env{'form.typeof_'.$thiskey};              $typeof=$env{'form.typeof_'.$thiskey};
             $text = &mt('Saved modified parameter for');              $text = &mt('Saved modified parameter for');
             if ($typeof eq 'string_questiontype') {              if ($typeof eq 'string_questiontype') {
Line 2828  sub storedata { Line 2850  sub storedata {
                 $name = 'discussvote';                  $name = 'discussvote';
             } elsif ($typeof eq 'string_examcode') {              } elsif ($typeof eq 'string_examcode') {
                 $name = 'examcode';                  $name = 'examcode';
                   if (&Apache::lonnet::validCODE($data)) {
                       $valchk = 'valid';
                   }
             } elsif ($typeof eq 'string_yesno') {              } elsif ($typeof eq 'string_yesno') {
                 if ($thiskey =~ /\.retrypartial$/) {                  if ($thiskey =~ /\.retrypartial$/) {
                     $name = 'retrypartial';                      $name = 'retrypartial';
                 }                  }
             }              }
             if ($name ne '') {          } elsif ($cmd eq 'datepointer') {
                 my ($needsrelease,$needsnewer);              $data=&Apache::lonhtmlcommon::get_date_from_form($env{$key});
                 $needsrelease = $Apache::lonnet::needsrelease{"parameter:$name:$data"};              $typeof=$env{'form.typeof_'.$thiskey};
                 if ($needsrelease) {              $text = &mt('Saved modified date for');
                     unless ($got_chostname) {              if ($typeof eq 'date_start') {
                         ($chostname,$cmajor,$cminor)=&parameter_release_vars();                  if ($thiskey =~ /\.printstartdate$/) {
                         $got_chostname = 1;                      $name = 'printstartdate';
                       if (($data) && ($data > $now)) {
                           $valchk = 'future';
                     }                      }
                     $needsnewer = &parameter_releasecheck($name,$data,  
                                                           $needsrelease,  
                                                           $chostname,$cmajor,  
                                                           $cminor);  
                 }                  }
               } elsif ($typeof eq 'date_end') {
                   if ($thiskey =~ /\.printenddate$/) {
                       $name = 'printenddate';
                       if (($data) && ($data < $now)) {
                           $valchk = 'past';
                       }
                   }
               }
           } elsif ($cmd eq 'dateinterval') {
               $data=&get_date_interval_from_form($thiskey);
               $typeof=$env{'form.typeof_'.$thiskey};
               $text = &mt('Saved modified date for');
           }
           if ($name ne '') {
               my ($needsrelease,$needsnewer);
               $needsrelease = $Apache::lonnet::needsrelease{"parameter:$name:$valchk"};
               if ($needsrelease) {
                   unless ($got_chostname) {
                       ($chostname,$cmajor,$cminor)=&parameter_release_vars();
                       $got_chostname = 1;
                   }
                   $needsnewer = &parameter_releasecheck($name,$valchk,
                                                         $needsrelease,
                                                         $cmajor,$cminor);
                 if ($needsnewer) {                  if ($needsnewer) {
                     $r->print('<br />'.&oldversion_warning($name,$data,                      $r->print('<br />'.&oldversion_warning($name,$data,
                                                            $chostname,$cmajor,                                                             $chostname,$cmajor,
Line 2853  sub storedata { Line 2900  sub storedata {
                     next;                      next;
                 }                  }
             }              }
         } elsif ($cmd eq 'datepointer') {  
             $data=&Apache::lonhtmlcommon::get_date_from_form($env{$key});  
             $typeof=$env{'form.typeof_'.$thiskey};  
             $text = &mt('Saved modified date for');  
         } elsif ($cmd eq 'dateinterval') {  
             $data=&get_date_interval_from_form($thiskey);  
             $typeof=$env{'form.typeof_'.$thiskey};  
             $text = &mt('Saved modified date for');  
         }          }
         if (defined($data) and $$olddata{$thiskey} ne $data) {          if (defined($data) and $$olddata{$thiskey} ne $data) {
             if ($tuname) {              if ($tuname) {
Line 2904  sub storedata { Line 2943  sub storedata {
     if (&Apache::lonnet::del('resourcedata',\@deldata,$dom,$crs) eq 'ok') {      if (&Apache::lonnet::del('resourcedata',\@deldata,$dom,$crs) eq 'ok') {
         my %loghash=map { $_ => '' } @deldata;          my %loghash=map { $_ => '' } @deldata;
         &log_parmset(\%loghash,1);          &log_parmset(\%loghash,1);
         $r->print('<h2>'.&mt('Deleted [_1] parameter(s)',$delentries).'</h2>');          $r->print('<h2>'.&mt('Deleted [quant,_1,parameter]',$delentries/2).'</h2>');
     } else {      } else {
         $r->print('<div class="LC_error">'.          $r->print('<div class="LC_error">'.
               &mt('Error deleting parameters').'</div>');                &mt('Error deleting parameters').'</div>');
Line 2914  sub storedata { Line 2953  sub storedata {
     if ($putentries) {      if ($putentries) {
     if (&Apache::lonnet::put('resourcedata',\%newdata,$dom,$crs) eq 'ok') {      if (&Apache::lonnet::put('resourcedata',\%newdata,$dom,$crs) eq 'ok') {
                 &log_parmset(\%newdata,0);                  &log_parmset(\%newdata,0);
         $r->print('<h3>'.&mt('Saved [_1] parameter(s)',$putentries/2).'</h3>');          $r->print('<h3>'.&mt('Saved [quant,_1,parameter]',$putentries/2).'</h3>');
     } else {      } else {
         $r->print('<div class="LC_error">'.          $r->print('<div class="LC_error">'.
               &mt('Error saving parameters').'</div>');                &mt('Error saving parameters').'</div>');
Line 3198  sub string_selector { Line 3237  sub string_selector {
                     $got_chostname = 1;                      $got_chostname = 1;
                 }                  }
                 my $needsnewer=&parameter_releasecheck($name,$parmval,$needsrelease,                  my $needsnewer=&parameter_releasecheck($name,$parmval,$needsrelease,
                                                        $chostname,$cmajor,                                                         $cmajor,$cminor);
                                                        $cminor);  
                 if ($needsnewer) {                  if ($needsnewer) {
                     $skiptype{$parmval} = 1;                      $skiptype{$parmval} = 1;
                 }                  }
Line 3635  sub date_shift_two { Line 3673  sub date_shift_two {
     my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Shift');      my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Shift');
     $r->print($start_page.$breadcrumbs);      $r->print($start_page.$breadcrumbs);
     my $timeshifted=&Apache::lonhtmlcommon::get_date_from_form('timeshifted');      my $timeshifted=&Apache::lonhtmlcommon::get_date_from_form('timeshifted');
     $r->print(&mt('Shifting all dates such that [_1] becomes [_2]',      $r->print('<h2>'.&mt('Shift Dates').'</h2>'.
                 '<p>'.&mt('Shifting all dates such that [_1] becomes [_2]',
               &Apache::lonlocal::locallocaltime($env{'form.timebase'}),                &Apache::lonlocal::locallocaltime($env{'form.timebase'}),
               &Apache::lonlocal::locallocaltime($timeshifted)));                &Apache::lonlocal::locallocaltime($timeshifted)).'</p>');
     my $delta=$timeshifted-$env{'form.timebase'};      my $delta=$timeshifted-$env{'form.timebase'};
     &dateshift($delta);      &dateshift($delta);
       $r->print(
           &Apache::lonhtmlcommon::confirm_success(&mt('Done')).
           '<br /><br />'.
           &Apache::lonhtmlcommon::actionbox(
               ['<a href="/adm/parmset">'.&mt('Content and Problem Settings').'</a>']));
     $r->print(&Apache::loncommon::end_page());      $r->print(&Apache::loncommon::end_page());
 }  }
   
Line 4632  sub parameter_release_vars { Line 4676  sub parameter_release_vars {
 }  }
   
 sub parameter_releasecheck {  sub parameter_releasecheck {
     my ($name,$value,$needsrelease,$chostname,$cmajor,$cminor) = @_;      my ($name,$value,$needsrelease,$cmajor,$cminor) = @_;
     my $needsnewer;      my $needsnewer;
     my ($needsmajor,$needsminor) = split(/\./,$needsrelease);      my ($needsmajor,$needsminor) = split(/\./,$needsrelease);
     if (($cmajor < $needsmajor) ||       if (($cmajor < $needsmajor) || 
Line 4667  sub oldversion_warning { Line 4711  sub oldversion_warning {
                 }                  }
             }              }
         }          }
       } elsif (($name eq 'printstartdate') || ($name eq 'printenddate')) {
           my $now = time;
           if ($value =~ /^\d+$/) {
               if ($name eq 'printstartdate') {
                   if ($value > $now) {
                       $desc = &Apache::lonlocal::locallocaltime($value);
                   }
               } elsif ($name eq 'printenddate') {
                   if ($value < $now) {
                       $desc = &Apache::lonlocal::locallocaltime($value);
                   }
               }
           }
     }      }
     my $standard_name = &standard_parameter_names($name);      my $standard_name = &standard_parameter_names($name);
     return '<p class="LC_warning">'.      return '<p class="LC_warning">'.

Removed from v.1.522.2.10  
changed lines
  Added in v.1.522.2.18


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>