Diff for /loncom/interface/statistics/lonstathelpers.pm between versions 1.53 and 1.59.12.2

version 1.53, 2006/05/30 12:46:50 version 1.59.12.2, 2011/11/18 22:35:33
Line 86  sub render_resource { Line 86  sub render_resource {
     ## Render the problem      ## Render the problem
     my ($base) = ($resource->src =~ m|^(.*/)[^/]*$|);      my ($base) = ($resource->src =~ m|^(.*/)[^/]*$|);
     $base="http://".$ENV{'SERVER_NAME'}.$base;      $base="http://".$ENV{'SERVER_NAME'}.$base;
     my ($src,$symb)=($resource->src,&escape($resource->symb));      my ($src,$symb)=($resource->link,&escape($resource->shown_symb));
     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;
Line 158  sub problem_selector { Line 158  sub problem_selector {
                                                      resptype=>$resptype});                                                       resptype=>$resptype});
                         my $checked = '';                          my $checked = '';
                         if ($env{'form.problemchoice'} eq $value) {                          if ($env{'form.problemchoice'} eq $value) {
                             $checked = 'checked ';                              $checked = ' checked="checked"';
                         }                          }
                         my $title = $res->compTitle;                          my $title = $res->compTitle;
                         if (! defined($title) || $title eq '') {                          if (! defined($title) || $title eq '') {
                             ($title) = ($res->src =~ m:/([^/]*)$:);                              ($title) = ($res->src =~ m:/([^/]*)$:);
                         }                          }
                         $seq_str .= '<tr>'.                          $seq_str .= '<tr>'.
                             qq{<td><input type="radio" id="$rb_count" name="problemchoice" value="$value" $checked /></td>}.                              qq{<td><input type="radio" id="$rb_count" name="problemchoice" value="$value"$checked /></td>}.
                             '<td><label for="'.$rb_count.'">'.$resptype.'</label></td>'.                              '<td><label for="'.$rb_count.'">'.$resptype.'</label></td>'.
                             '<td><label for="'.$rb_count.'">'.$title.'</label>';                              '<td><label for="'.$rb_count.'">'.$title.'</label>';
                         if (scalar(@response_ids) > 1) {                          if (scalar(@response_ids) > 1) {
                             $seq_str .= &mt('response').' '.$respid;                              $seq_str .= &mt('response').' '.$respid;
                         }                          }
                         my $link = $res->src.'?symb='.                          my $link = $res->link.'?symb='.&escape($res->shown_symb);
                             &escape($res->symb);  
                         $seq_str .= ('&nbsp;'x2).                          $seq_str .= ('&nbsp;'x2).
                             qq{<a target="preview" href="$link">view</a>};                              '<a target="preview" href="'.$link.'">'.&mt('view').'</a>';
                         $seq_str .= "</td></tr>\n";                          $seq_str .= "</td></tr>\n";
                         $rb_count++;                          $rb_count++;
                     }                      }
Line 182  sub problem_selector { Line 181  sub problem_selector {
             }              }
         }          }
         if ($seq_str ne '') {          if ($seq_str ne '') {
             $Str .= '<tr><td>&nbsp</td>'.              $Str .= '<tr><td>&nbsp;</td>'.
                 '<td colspan="2"><b>'.$seq->compTitle.'</b></td>'.                  '<td colspan="2"><b>'.$seq->compTitle.'</b></td>'.
                 "</tr>\n".$seq_str;                  "</tr>\n".$seq_str;
             if (defined($sequence_addendum)) {              if (defined($sequence_addendum)) {
                 $Str .= '<tr>'.                  $Str .= '<tr>'.
                     ('<td>&nbsp</td>'x2).                      ('<td>&nbsp;</td>'x2).
                     '<td align="right">'.$sequence_addendum.'</td>'.                      '<td align="right">'.$sequence_addendum.'</td>'.
                     "</tr>\n";                      "</tr>\n";
             }              }
Line 230  sub MultipleProblemSelector { Line 229  sub MultipleProblemSelector {
     if (! defined($navmap)) {      if (! defined($navmap)) {
         $navmap = Apache::lonnavmaps::navmap->new();          $navmap = Apache::lonnavmaps::navmap->new();
         if (! defined($navmap)) {          if (! defined($navmap)) {
             $Str .=               $Str .= '<div class="LC_error">'
                 '<h1>'.&mt('Error: cannot process course structure').'</h1>';                     .&mt('Error: cannot process course structure')
                      .'</div>';
             return $Str;              return $Str;
         }          }
     }      }
     my $selected = {map { ($_,1) } (&get_selected_symbs($inputname))};      my $selected = {map { ($_,1) } (&get_selected_symbs($inputname))};
     # Header      # Header
     $Str .= <<"END";      $Str .= <<"END";
 <script language="JavaScript" type="text/javascript">  <script type="text/javascript" language="JavaScript">
     function checkall(value,seqid) {      function checkall(value,seqid,caller) {
           if (caller == 'allproblems') {
               if ((value == null ) || (value == '') || (value == undefined)) {
                   if (document.forms.$formname.allproblems.checked) {
                       document.forms.$formname.noproblems.checked = false;
                       value = true;
                   } else {
                       return;
                   }
               }
           }
           if (caller == 'noproblems') {
               if ((value == null ) || (value == '') || (value == undefined)) {
                   if (document.forms.$formname.noproblems.checked) {
                       document.forms.$formname.allproblems.checked = false;
                       value = false;
                   } else {
                       return; 
                   }
               }
           }
         for (i=0; i<document.forms.$formname.elements.length; i++) {          for (i=0; i<document.forms.$formname.elements.length; i++) {
             ele = document.forms.$formname.elements[i];              ele = document.forms.$formname.elements[i];
             if (ele.name == '$inputname') {              if (ele.name == '$inputname') {
                 if (seqid != null) {                  if ((seqid != null) && (seqid != '') && (seqid != undefined)) {
                     itemid = document.forms.$formname.elements[i].id;                      itemid = document.forms.$formname.elements[i].id;
                     thing = itemid.split(':');                      thing = itemid.split(':');
                     if (thing[0] == seqid) {                      if (thing[0] == seqid) {
Line 258  sub MultipleProblemSelector { Line 278  sub MultipleProblemSelector {
 </script>  </script>
 END  END
     $Str .=       $Str .= 
         '<a href="javascript:checkall(true)">'.&mt('Select All').'</a>'.          '<label><input type="checkbox" name="allproblems" value="true" onclick="javascript:checkall('."'','','allproblems'".')" />'.&mt('Select All').'</label>'.
         ('&nbsp;'x4).          ('&nbsp;'x4).
         '<a href="javascript:checkall(false)">'.&mt('Unselect All').'</a>';          '<label><input type="checkbox" name="noproblems" value="true" onclick="javascript:checkall('."'','','noproblems'".')" />'.&mt('Unselect All').'</label>';
     $Str .= $/.'<table>'.$/;      $Str .= $/.'<table>'.$/;
     my $iterator = $navmap->getIterator(undef, undef, undef, 1);      my ($iterator,$sequence_string,@Accumulator);
     my $sequence_string;  
     my $seq_id = 0;      my $seq_id = 0;
     my @Accumulator = (&new_accumulator($env{'course.'.$cid.'.description'},      if (&Apache::loncommon::needs_gci_custom()) {
                                         '',          my $cdom = $env{'course.'.$cid.'.domain'};
                                         '',          my $cnum = $env{'course.'.$cid.'.num'};
                                         $seq_id++,          my $mapurl = "/uploaded/$cdom/$cnum/default_1261144274.sequence";
                                         $inputname));          my $map = $navmap->getResourceByUrl($mapurl);
           my $firstResource = $map->map_start();
           my $lastResource = $map->map_finish();
           $iterator = $navmap->getIterator($firstResource,$lastResource,sub { $_[0]->is_problem() },1);
           @Accumulator = (&new_accumulator($map->compTitle,
                                            $map->src,
                                            $map->symb,
                                            $seq_id++,
                                            $inputname));
       } else {
           $iterator = $navmap->getIterator(undef, undef, undef, 1);
           @Accumulator = (&new_accumulator($env{'course.'.$cid.'.description'},
                                            '',
                                            '',
                                            $seq_id++,
                                            $inputname));
       }
     my @Sequence_Data;      my @Sequence_Data;
     while (my $curRes = $iterator->next()) {      while (my $curRes = $iterator->next()) {
         if ($curRes == $iterator->END_MAP) {          if ($curRes == $iterator->END_MAP) {
Line 288  END Line 323  END
                                                $seq_id++,                                                 $seq_id++,
                                                $inputname));                                                 $inputname));
         } elsif ($curRes->is_problem) {          } elsif ($curRes->is_problem) {
               my $is_selected;
               if (($env{'form.allproblems'})  || (exists($selected->{$curRes->symb}))) {
                   $is_selected = 1;
               }
             if (@Accumulator && $Accumulator[-1] ne '') {              if (@Accumulator && $Accumulator[-1] ne '') {
                 &{$Accumulator[-1]}($curRes,                  &{$Accumulator[-1]}($curRes,$is_selected);
                                     exists($selected->{$curRes->symb}));  
             }              }
         }          }
     }      }
Line 322  sub new_accumulator { Line 360  sub new_accumulator {
                 $target.='<tr><td><label>'.                  $target.='<tr><td><label>'.
                     '<input type="checkbox" name="'.$inputname.'" ';                      '<input type="checkbox" name="'.$inputname.'" ';
                 if ($checked) {                  if ($checked) {
                     $target .= 'checked ';                      $target .= 'checked="checked" ';
                 }                  }
                 $target .= 'id="'.$seq_id.':'.$item_id++.'" ';                  $target .= 'id="'.$seq_id.':'.$item_id++.'" ';
                 $target.=                   $target.= 
                     'value="'.&escape($res->symb).'" />'.                      'value="'.&escape($res->symb).'" />'.
                     '&nbsp;'.$res->compTitle.'</label>'.                      '&nbsp;'.$res->compTitle.'</label>'.
                     ('&nbsp;'x2).'<a target="preview" '.                      ('&nbsp;'x2).'<a target="preview" '.
                     'href="'.$res->src.'?symb='.                      'href="'.$res->link.'?symb='.
                          &escape($res->symb).'">view</a>'.                      &escape($res->shown_symb).'">'.&mt('view').'</a>'.
                     '</td></tr>'.$/;                      '</td></tr>'.$/;
             } else {               } else { 
                 if (defined($target)) {                  if (defined($target)) {
Line 736  sub get_answer { Line 774  sub get_answer {
     my ($prefix,$key,%Answer) = @_;      my ($prefix,$key,%Answer) = @_;
     my $returnvalue;      my $returnvalue;
     if (exists($Answer{$key})) {      if (exists($Answer{$key})) {
         my $student_answer = $Answer{$key}->[0];   if (ref($Answer{$key}) eq 'HASH') {
         if (! defined($student_answer)) {      my $which = 'INTERNAL';
             $student_answer = $Answer{$key}->[1];      if (!exists($Answer{$key}{$which})) {
         }   $which = (sort(keys(%{ $Answer{$key} })))[0];
         $returnvalue = $student_answer;      }
       my $student_answer = $Answer{$key}{$which}[0][0];
       $returnvalue = $student_answer; 
    } else {
       &Apache::lonnet::logthis("error analyzing problem. got a answer of type ".ref($Answer{$key}));
    }
     } else {      } else {
         if (exists($Answer{$prefix.'.shown'})) {          if (exists($Answer{$prefix.'.shown'})) {
             # The response has foils              # The response has foils
Line 1250  sub limit_by_time_form { Line 1293  sub limit_by_time_form {
     my $enddateform = &Apache::lonhtmlcommon::date_setter      my $enddateform = &Apache::lonhtmlcommon::date_setter
         ('Statistics','limitby_enddate',$endtime,undef,undef,$state);          ('Statistics','limitby_enddate',$endtime,undef,undef,$state);
     my $Str;      my $Str;
     $Str .= '<script language="Javascript" >';      $Str .= '<script type="text/javascript" language="JavaScript">';
     $Str .= 'function toggle_limitby_activity(state) {';      $Str .= 'function toggle_limitby_activity(state) {';
     $Str .= '    if (state) {';      $Str .= '    if (state) {';
     $Str .= '        limitby_startdate_enable();';      $Str .= '        limitby_startdate_enable();';
Line 1415  sub submission_report_form { Line 1458  sub submission_report_form {
              ' enough input.');               ' enough input.');
     }      }
     my $html = $/.      my $html = $/.
         '<script type="Text/JavaScript">'.          '<script type="text/javascript" language="JavaScript">'.
         "document.Statistics.reportSelected.value='$original_report';".          "document.Statistics.reportSelected.value='$original_report';".
         '</script>'.          '</script>'.
         '<input type="hidden" name="correctans" value="true" />'.          '<input type="hidden" name="correctans" value="true" />'.

Removed from v.1.53  
changed lines
  Added in v.1.59.12.2


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