Diff for /loncom/interface/statistics/lonstathelpers.pm between versions 1.75 and 1.76

version 1.75, 2017/12/18 23:51:19 version 1.76, 2020/08/26 18:13:39
Line 142  Skips 'survey' problems. Line 142  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,
         $include_tools) = @_;          $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;
Line 164  sub problem_selector { Line 166  sub problem_selector {
     foreach my $seq (@sequences) {      foreach my $seq (@sequences) {
         my $seq_str = '';          my $seq_str = '';
         foreach my $res (&get_resources($navmap,$seq,$include_tools)) {          foreach my $res (&get_resources($navmap,$seq,$include_tools)) {
               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"';
                   }
                   $seq_str .= &Apache::loncommon::start_data_table_row().
                               '<td rowspan="'.$totalresps.'" style="vertical-align:middle">'.
                               '<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,@response_types);                  my (@response_ids,@response_types);
                 if ($res->is_tool) {                  if ($res->is_tool) {
Line 177  sub problem_selector { Line 202  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,                              unless (exists($partsseen{$part})) {
                                                      respid=>$respid,                                  my $parttitle = $part;
                                                      resptype=>$resptype});                                  if ($part eq '0') {
                         my $checked = '';                                      $parttitle = '';
                         if ($env{'form.problemchoice'} eq $value) {                                  }
                             $checked = ' checked="checked"';                                  if ($parttitle ne '') {
                                       $parttitle = ('&nbsp;'x2).&mt('part').':&nbsp;'.$parttitle;
                                   }
                                   if (keys(%partsseen)) {
                                       $seq_str .= &Apache::loncommon::continue_data_table_row();
                                   }
                                   unless ($partsseen{$part}) {
                                       $seq_str .= '<td rowspan="'.scalar(@response_ids).'" style="vertical-align:middle">'.
                                                   $parttitle.'</td>';
                                       $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";
                               $rb_count++;
                         }                          }
                         my $title = $res->compTitle;  
                         if (! defined($title) || $title eq '') {  
                             ($title) = ($res->src =~ m:/([^/]*)$:);  
                         }  
                         $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";  
                         $rb_count++;  
                     }                      }
                 }                  }
             }              }
         }          }
         if ($seq_str ne '') {          if ($seq_str ne '') {
             $Str .= &Apache::loncommon::start_data_table_header_row().              if ($byres) {
                 '<th colspan="3">'.  
                 ($all?'<input type="radio" id="'.$prefix.'s'.$rb_count.'" name="'.$prefix.'symb" value="'.&HTML::Entities::encode($seq->symb,'<>&').'" '.$jsadd.' />':'').  
                 $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().                  $Str .= &Apache::loncommon::start_data_table_header_row().
                     ('<td>&nbsp;</td>'x2).                          '<th colspan="3">'.$seq->compTitle.'</th>'.
                     '<td align="right">'.$sequence_addendum.'</td>'.                          &Apache::loncommon::end_data_table_header_row().
                     &Apache::loncommon::end_data_table_header_row()."\n";                          $seq_str;
               } else {
                   $Str .= &Apache::loncommon::start_data_table_header_row().
                       '<th colspan="3">'.
                       ($all?'<input type="radio" id="'.$prefix.'s'.$rb_count.'" name="'.$prefix.'symb" value="'.&HTML::Entities::encode($seq->symb,'<>&').'" '.$jsadd.' />':'').
                       $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";
     return $Str;      return $Str;

Removed from v.1.75  
changed lines
  Added in v.1.76


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