Diff for /loncom/interface/statistics/lonstathelpers.pm between versions 1.67 and 1.76.2.4

version 1.67, 2011/07/04 09:25:02 version 1.76.2.4, 2020/09/12 20:36:11
Line 90  sub render_resource { Line 90  sub render_resource {
     my $rendered_problem = &Apache::lonnet::ssi_body($src.'?symb='.$symb);      my $rendered_problem = &Apache::lonnet::ssi_body($src.'?symb='.$symb);
     $rendered_problem =~ s/<\s*form\s*/<nop /g;      $rendered_problem =~ s/<\s*form\s*/<nop /g;
     $rendered_problem =~ s|(<\s*/form\s*>)|<\/nop>|g;      $rendered_problem =~ s|(<\s*/form\s*>)|<\/nop>|g;
     return '<table bgcolor="ffffff"><tr><td>'.      return '<div class="LC_Box">'.
         '<base href="'.$base.'" />'.          '<h4 class="LC_hcell">'.&mt('Problem').'</h4>'.
         $rendered_problem.          '<base href="'.$base.'" />'.$rendered_problem.
         '</td></tr></table>';          '</div>';
 }  }
   
 ####################################################  ####################################################
Line 135  Skips 'survey' problems. Line 135  Skips 'survey' problems.
 ####################################################  ####################################################
 ####################################################  ####################################################
 sub problem_selector {  sub problem_selector {
     my ($AcceptedResponseTypes,$sequence_addendum,$symbmode,$all,$prefix,$smallbox,$onclick) = @_;      my ($AcceptedResponseTypes,$sequence_addendum,$symbmode,$all,$prefix,
           $byres,$include_tools,$smallbox,$onclick) = @_;
 # all: also make sequences selectable  # all: also make sequences selectable
 # prefix: prefix for all form names  # prefix: prefix for all form names
   # byres: radiobutton shown per resource
   # include_tools: external tools included 
 # smallbox: use smaller box  # smallbox: use smaller box
 # onclick: javascript to execute when clicked  # onclick: javascript to execute when clicked
     my $Str;      my $Str;
     my $jsadd='';      my $jsadd='';
     if ($onclick) {      if ($onclick) {
         $jsadd="onClick='$onclick'";          $jsadd="onclick='$onclick'";
     }      }
     $Str =  &Apache::loncommon::start_scrollbox(($smallbox?'420px':'620px'),      $Str =  &Apache::loncommon::start_scrollbox(($smallbox?'420px':'620px'),
                                                 ($smallbox?'400px':'600px'),                                                  ($smallbox?'400px':'600px'),
Line 156  sub problem_selector { Line 159  sub problem_selector {
     foreach my $seq (@sequences) {      foreach my $seq (@sequences) {
         my $seq_str = '';          my $seq_str = '';
         foreach my $res (&get_resources($navmap,$seq)) {          foreach my $res (&get_resources($navmap,$seq)) {
               if ($res->src() eq '/res/lib/templates/simpleproblem.problem') {
                   next if (grep(/^placeholder$/,@{$res->parts}));
               }
               my $title = $res->compTitle;
               if (! defined($title) || $title eq '') {
                   ($title) = ($res->src =~ m:/([^/]*)$:);
               }
               my $totalresps = 0;
               if ($byres) {
                   foreach my $part (@{$res->parts}) {
                       $totalresps += scalar($res->responseIds($part));
                   }
                   my $value = &HTML::Entities::encode($res->symb(),'<>&"');
                   my $checked;
                   if ($env{'form.problemchoice'} eq $res->symb()) {
                       $checked = ' checked="checked"';
                   }
                   my $rowspan;
                   if ($totalresps > 1) {
                       $rowspan = ' rowspan="'.$totalresps.'"';
                   }
                   $seq_str .= &Apache::loncommon::start_data_table_row().
                               '<td'.$rowspan.' style="vertical-align:top">'.
                               '<label><input type="radio" name="symb" value="'.$value.'"'.$checked.' />'.
                               $title.'</label>';
                   my $link = $res->link.'?symb='.&escape($res->shown_symb);
                   $seq_str .= ('&nbsp;'x2).
                               '<a target="preview" href="'.$link.'">'.&mt('view').'</a></td>';
               }
               my %partsseen;
             foreach my $part (@{$res->parts}) {              foreach my $part (@{$res->parts}) {
                 my @response_ids   = $res->responseIds($part);                  my @response_ids   = $res->responseIds($part);
                 my @response_types = $res->responseType($part);                  my @response_types = $res->responseType($part);
Line 163  sub problem_selector { Line 196  sub problem_selector {
                     my $respid = $response_ids[$i];                      my $respid = $response_ids[$i];
                     my $resptype = $response_types[$i];                      my $resptype = $response_types[$i];
                     if ($resptype =~ m/$AcceptedResponseTypes/) {                      if ($resptype =~ m/$AcceptedResponseTypes/) {
                         my $value = &make_target_id({symb=>$res->symb,                          if ($byres) {
                                                      part=>$part,                              if (exists($partsseen{$part})) {
                                                      respid=>$respid,                                  $seq_str .= &Apache::loncommon::continue_data_table_row();
                                                      resptype=>$resptype});                              } else {
                         my $checked = '';                                  my $parttitle = $part;
                         if ($env{'form.problemchoice'} eq $value) {                                  if ($part eq '0') {
                             $checked = ' checked="checked"';                                      $parttitle = '';
                         }                                  }
                         my $title = $res->compTitle;                                  if ($parttitle ne '') {
                         if (! defined($title) || $title eq '') {                                      $parttitle = ('&nbsp;'x2).&mt('part').':&nbsp;'.$parttitle;
                             ($title) = ($res->src =~ m:/([^/]*)$:);                                  }
                         }                                  if (keys(%partsseen)) {
                         $seq_str .=  &Apache::loncommon::start_data_table_row().                                      $seq_str .= &Apache::loncommon::continue_data_table_row();
                             ($symbmode?                                  }
                              '<td><input type="radio" id="'.$prefix.$rb_count.'" name="'.$prefix.'symb" value="'.&HTML::Entities::encode($res->symb,'<>&"').'" '.$checked.' '.                                  unless ($partsseen{$part}) {
                              $jsadd.                                      my $resprowspan;
                              ' /></td>'                                      if (scalar(@response_ids) > 1) {
                             :qq{<td><input type="radio" id="$rb_count" name="problemchoice" value="$value"$checked /></td>}).                                          $resprowspan = ' rowspan="'.scalar(@response_ids).'"';
                             '<td><label for="'.$prefix.$rb_count.'">'.$resptype.'</label></td>'.                                      }
                             '<td><label for="'.$prefix.$rb_count.'">'.$title.'</label>';                                      $seq_str .= '<td'.$resprowspan.' style="vertical-align:top">'.
                         if (scalar(@response_ids) > 1) {                                                  $parttitle.'</td>';
                             $seq_str .= &mt('response').' '.$respid;                                      $partsseen{$part} = scalar(@response_ids);
                                   }
                               }
                               $seq_str .= '<td>'.$resptype;
                               if (scalar(@response_ids) > 1) {
                                   $seq_str .= '&nbsp;'.&mt('id').':&nbsp;'.$respid;
                               }
                               $seq_str .= '</td>'. &Apache::loncommon::end_data_table_row()."\n";
                           } else {
                               my $value = &make_target_id({symb=>$res->symb,
                                                            part=>$part,
                                                            respid=>$respid,
                                                            resptype=>$resptype});
                               my $checked = '';
                               if ($env{'form.problemchoice'} eq $value) {
                                   $checked = ' checked="checked"';
                               }
                               $seq_str .= &Apache::loncommon::start_data_table_row().
                                   ($symbmode?
                                    '<td><input type="radio" id="'.$prefix.$rb_count.'" name="'.$prefix.'symb" value="'.&HTML::Entities::encode($res->symb,'<>&"').'" '.$checked.' '.
                                    $jsadd.
                                    ' /></td>'
                                    :qq{<td><input type="radio" id="$rb_count" name="problemchoice" value="$value"$checked /></td>}).
                                   '<td><label for="'.$prefix.$rb_count.'">'.$resptype.'</label></td>'.
                                   '<td><label for="'.$prefix.$rb_count.'">'.$title.'</label>';
                               if (scalar(@response_ids) > 1) {
                                   $seq_str .= &mt('response').' '.$respid;
                               }
                               my $link = $res->link.'?symb='.&escape($res->shown_symb);
                               $seq_str .= ('&nbsp;'x2).
                                           '<a target="preview" href="'.$link.'">'.&mt('view').'</a>';
                               $seq_str .= "</td>". &Apache::loncommon::end_data_table_row()."\n";
                         }                          }
                         my $link = $res->link.'?symb='.&escape($res->shown_symb);  
                         $seq_str .= ('&nbsp;'x2).  
                             '<a target="preview" href="'.$link.'">'.&mt('view').'</a>';  
                         $seq_str .= "</td>". &Apache::loncommon::end_data_table_row()."\n";  
                         $rb_count++;                          $rb_count++;
                     }                      }
                 }                  }
             }              }
         }          }
         if ($seq_str ne '') {          if ($seq_str ne '') {
             $Str .= &Apache::loncommon::start_data_table_header_row().              if ($byres) {
                 '<th colspan="3">'.                  $Str .= &Apache::loncommon::start_data_table_header_row().
                 ($all?'<input type="radio" id="'.$prefix.'s'.$rb_count.'" name="'.$prefix.'symb" value="'.&HTML::Entities::encode($seq->symb,'<>&').'" '.$jsadd.' />':'').                          '<th colspan="3">'.$seq->compTitle.'</th>'.
                 $seq->compTitle.'</th>'.                          &Apache::loncommon::end_data_table_header_row().
                 &Apache::loncommon::end_data_table_header_row()."\n".$seq_str;                          $seq_str;
             if (defined($sequence_addendum)) {              } else {
                 $Str .= &Apache::loncommon::start_data_table_header_row().                  $Str .= &Apache::loncommon::start_data_table_header_row().
                     ('<td>&nbsp;</td>'x2).                      '<th colspan="3">'.
                     '<td align="right">'.$sequence_addendum.'</td>'.                      ($all?'<input type="radio" id="'.$prefix.'s'.$rb_count.'" name="'.$prefix.'symb" value="'.&HTML::Entities::encode($seq->symb,'<>&').'" '.$jsadd.' />':'').
                     &Apache::loncommon::end_data_table_header_row()."\n";                      $seq->compTitle.'</th>'.
                       &Apache::loncommon::end_data_table_header_row()."\n".$seq_str;
                   if (defined($sequence_addendum)) {
                       $Str .= &Apache::loncommon::start_data_table_header_row().
                           ('<td>&nbsp;</td>'x2).
                           '<td align="right">'.$sequence_addendum.'</td>'.
                           &Apache::loncommon::end_data_table_header_row()."\n";
                   }
             }              }
         }          }
   
     }      }
     $Str .= &Apache::loncommon::end_data_table().&Apache::loncommon::end_scrollbox()."\n";      $Str .= &Apache::loncommon::end_data_table().&Apache::loncommon::end_scrollbox()."\n";
       if (!$rb_count) {
           if ($byres) {
               $Str = '<p class="LC_info">'.&mt('No gradable problems found').'</p>';
           } elsif ($AcceptedResponseTypes eq '.') {
               $Str = '<p class="LC_info">'.&mt('No problems found').'</p>';
           } else {
               $Str = '<p class="LC_info">'.&mt('No analyzable problems found').'</p>';
           }
       }
     return $Str;      return $Str;
 }  }
   
Line 286  END Line 361  END
 END  END
     if (ref($anoncounter) eq 'HASH') {      if (ref($anoncounter) eq 'HASH') {
         if (keys(%{$anoncounter}) > 0) {          if (keys(%{$anoncounter}) > 0) {
             my $anonwarning = &mt('Your selection includes both problems with and without anonymous submissions.').'\n'.&mt('You must select either only anonymous or only named problems.').'\n\n'.&mt('If a selection contains both anonymous and named parts, [_1]use the Anoymous/Named buttons to ensure selections will be either all anonymous [_1]or all named.','\n');              my $anonwarning = &mt('Your selection includes both problems with and without anonymous submissions.')."\n".&mt('You must select either only anonymous or only named problems.')."\n\n".&mt('If a selection contains both anonymous and named parts,[_1]use the Anonymous/Named buttons to ensure selections will be either all anonymous[_1]or all named.',"\n");
               &js_escape(\$anonwarning);
             $checkanonjs = <<"END";              $checkanonjs = <<"END";
   
 <script type="text/javascript" language="JavaScript">  <script type="text/javascript" language="JavaScript">
Line 716  sub GetStudentAnswers { Line 792  sub GetStudentAnswers {
     # Read in the cache (if it exists) before we start timing things.      # Read in the cache (if it exists) before we start timing things.
     &Apache::lonstathelpers::ensure_proper_cache($resource->{'symb'});      &Apache::lonstathelpers::ensure_proper_cache($resource->{'symb'});
     # Open progress window      # Open progress window
     my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin      my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,scalar(@$Students));
         ($r,'Student Answer Compilation Status',  
          'Student Answer Compilation Progress', scalar(@$Students),  
          $status_type,undef,$formname,$inputname);  
     $r->rflush();      $r->rflush();
     foreach my $student (@$Students) {      foreach my $student (@$Students) {
         last if ($c->aborted());          last if ($c->aborted());
Line 1388  sub limit_by_time_form { Line 1461  sub limit_by_time_form {
     $Str .= '<fieldset>';      $Str .= '<fieldset>';
     my $timecheckbox = '<input type="checkbox" name="limit_by_time" ';      my $timecheckbox = '<input type="checkbox" name="limit_by_time" ';
     if (&limit_by_time()) {      if (&limit_by_time()) {
         $timecheckbox .= ' checked ';          $timecheckbox .= 'checked="checked" ';
     }       } 
     $timecheckbox .= 'OnChange="javascript:toggle_limitby_activity(this.checked);" ';      $timecheckbox .= 'onchange="javascript:toggle_limitby_activity(this.checked);" ';
     $timecheckbox .= ' />';      $timecheckbox .= ' />';
     $Str .= '<legend><label>'.&mt('[_1] Limit by time',$timecheckbox).'</label></legend>';      $Str .= '<legend><label>'.&mt('[_1] Limit by time',$timecheckbox).'</label></legend>';
     $Str .= &mt('Start Time: [_1]',$startdateform).'<br />';      $Str .= &mt('Start Time: [_1]',$startdateform).'<br />';
Line 1492  sub gather_full_student_data { Line 1565  sub gather_full_student_data {
     my @Students = @Apache::lonstatistics::Students;      my @Students = @Apache::lonstatistics::Students;
     #      #
     # Open the progress window      # Open the progress window
     my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin      my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,scalar(@Students));
         ($r,&mt('Student Data Compilation Status'),  
          &mt('Student Data Compilation Progress'), scalar(@Students),  
          $status_type,undef,$formname,$inputname);  
     #      #
     while (my $student = shift @Students) {      while (my $student = shift @Students) {
         return if ($c->aborted());          return if ($c->aborted());

Removed from v.1.67  
changed lines
  Added in v.1.76.2.4


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