Diff for /loncom/interface/statistics/lonstathelpers.pm between versions 1.4 and 1.7

version 1.4, 2004/02/19 20:17:01 version 1.7, 2004/03/12 21:05:08
Line 145  sub ProblemSelector { Line 145  sub ProblemSelector {
   $resptype.'</td><td>'.    $resptype.'</td><td>'.
   '<a href="'.$res->{'src'}.'">'.$title.'</a> ';    '<a href="'.$res->{'src'}.'">'.$title.'</a> ';
 #  '<a href="'.$res->{'src'}.'">'.$resptype.' '.$res->{'title'}.'</a> ';  #  '<a href="'.$res->{'src'}.'">'.$resptype.' '.$res->{'title'}.'</a> ';
                         if ($partdata->{'option'} > 1) {                          if (scalar(@{$partdata->{'ResponseIds'}}) > 1) {
                             $seq_str .= &mt('response').' '.$respid;                              $seq_str .= &mt('response').' '.$respid;
                         }                          }
                         $seq_str .= "</td></tr>\n";                          $seq_str .= "</td></tr>\n";
Line 354  Inputs: $resource: a resource object Line 354  Inputs: $resource: a resource object
   
 Returns: $answer  Returns: $answer
   
   If $partid and $respid are specified, $answer is simply a scalar containing
   the correct answer for the response.
   
   If $partid or $respid are undefined, $answer will be a hash reference with
   keys $partid.'.'.$respid.'.answer'.
   
 =cut  =cut
   
 #####################################################  #####################################################
Line 371  sub analyze_problem_as_student { Line 377  sub analyze_problem_as_student {
                                         'grade_courseid' => $courseid));                                          'grade_courseid' => $courseid));
     (my $garbage,$Answ)=split(/_HASH_REF__/,$Answ,2);      (my $garbage,$Answ)=split(/_HASH_REF__/,$Answ,2);
     my %Answer=&Apache::lonnet::str2hash($Answ);      my %Answer=&Apache::lonnet::str2hash($Answ);
     my $prefix = $partid.'.'.$respid;      #
     my $key = $prefix.'.answer';      if (! defined($partid)) {
           # If you do not specify a partid, you get them all.
           foreach my $partid (@{$resource->{'parts'}}) {
               my $partdata = $resource->{'partdata'}->{$partid};
               foreach my $respid (@{$partdata->{'ResponseIds'}}) {
                   my $prefix = $partid.'.'.$respid;
                   my $key = $prefix.'.answer';
                   $returnvalue->{$key} = &get_answer($prefix,$key,%Answer);
               }
           }
       } elsif (! defined($respid)) {
           my $partdata = $resource->{'partdata'}->{$partid};
           foreach my $respid (@{$partdata->{'ResponseIds'}}) {
               my $prefix = $partid.'.'.$respid;
               my $key = $prefix.'.answer';
               $returnvalue->{$key} = &get_answer($prefix,$key,%Answer);
           }
       } else {
           my $prefix = $partid.'.'.$respid;
           my $key = $prefix.'.answer';
           $returnvalue = &get_answer($prefix,$key,%Answer);
       }
       return $returnvalue;
   }
   
   sub get_answer {
       my ($prefix,$key,%Answer) = @_;
       my $returnvalue;
     if (exists($Answer{$key})) {      if (exists($Answer{$key})) {
         my $student_answer = $Answer{$key}->[0];          my $student_answer = $Answer{$key}->[0];
         if (! defined($student_answer)) {          if (! defined($student_answer)) {
Line 404  sub analyze_problem_as_student { Line 437  sub analyze_problem_as_student {
     return $returnvalue;      return $returnvalue;
 }  }
   
   
 ##  ##
 ## The following is copied from datecalc1.pl, part of the   ## The following is copied from datecalc1.pl, part of the 
 ## Spreadsheet::WriteExcel CPAN module.  ## Spreadsheet::WriteExcel CPAN module.
Line 612  sub get_problem_data { Line 644  sub get_problem_data {
         while (my($key,$value) = each(%Answer)) {          while (my($key,$value) = each(%Answer)) {
             #              #
             # Logging code:              # Logging code:
             if (1) {              if (0) {
                 &Apache::lonnet::logthis($part.' got key "'.$key.'"');                  &Apache::lonnet::logthis($part.' got key "'.$key.'"');
                 if (ref($value) eq 'ARRAY') {                  if (ref($value) eq 'ARRAY') {
                     &Apache::lonnet::logthis('    @'.join(',',@$value));                      &Apache::lonnet::logthis('    @'.join(',',@$value));
Line 654  sub get_problem_data { Line 686  sub get_problem_data {
 }  }
   
 ####################################################  ####################################################
   ####################################################
   
   =pod
   
   =item &limit_by_time()
   
   =cut
   
   ####################################################
   ####################################################
   sub limit_by_time_form {
       my $Starttime_form = '';
       my $starttime = &Apache::lonhtmlcommon::get_date_from_form
           ('limitby_startdate');
       my $endtime = &Apache::lonhtmlcommon::get_date_from_form
           ('limitby_enddate');
       if (! defined($endtime)) {
           $endtime = time;
       }
       if (! defined($starttime)) {
           $starttime = $endtime - 60*60*24*7;
       }
       my $state;
       if (&limit_by_time()) {
           $state = '';
       } else {
           $state = 'disabled';
       }
       my $startdateform = &Apache::lonhtmlcommon::date_setter
           ('Statistics','limitby_startdate',$starttime,undef,undef,$state);
       my $enddateform = &Apache::lonhtmlcommon::date_setter
           ('Statistics','limitby_enddate',$endtime,undef,undef,$state);
       my $Str;
       $Str .= '<script language="Javascript" >';
       $Str .= 'function toggle_limitby_activity(state) {';
       $Str .= '    if (state) {';
       $Str .= '        limitby_startdate_enable();';
       $Str .= '        limitby_enddate_enable();';
       $Str .= '    } else {';
       $Str .= '        limitby_startdate_disable();';
       $Str .= '        limitby_enddate_disable();';
       $Str .= '    }';    
       $Str .= '}';
       $Str .= '</script>';
       $Str .= '<fieldset>';
       my $timecheckbox = '<input type="checkbox" name="limit_by_time" ';
       if (&limit_by_time()) {
           $timecheckbox .= ' checked ';
       } 
       $timecheckbox .= 'OnChange="javascript:toggle_limitby_activity(this.checked);" ';
       $timecheckbox .= ' />';
       $Str .= '<legend>'.&mt('[_1] Limit by time',$timecheckbox).'</legend>';
       $Str .= &mt('Start Time: [_1]',$startdateform).'<br />';
       $Str .= &mt('&nbsp;End Time: [_1]',$enddateform).'<br />';
       $Str .= '</fieldset>';
       return $Str;
   }
   
   sub limit_by_time {
       if (exists($ENV{'form.limit_by_time'}) &&
           $ENV{'form.limit_by_time'} ne '' ) {
           return 1;
       } else {
           return 0;
       }
   }
   
   sub get_time_limits {
       my $starttime = &Apache::lonhtmlcommon::get_date_from_form
           ('limitby_startdate');
       my $endtime = &Apache::lonhtmlcommon::get_date_from_form
           ('limitby_enddate');
       return ($starttime,$endtime);
   }
   
   ####################################################
 ####################################################  ####################################################
   
 =pod  =pod

Removed from v.1.4  
changed lines
  Added in v.1.7


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