Diff for /loncom/interface/statistics/lonstathelpers.pm between versions 1.62 and 1.63

version 1.62, 2010/06/10 16:14:39 version 1.63, 2010/08/04 01:56:07
Line 224  and their contents.  A checkbox is provi Line 224  and their contents.  A checkbox is provi
 ####################################################  ####################################################
 ####################################################  ####################################################
 sub MultipleProblemSelector {  sub MultipleProblemSelector {
     my ($navmap,$inputname,$formname)=@_;      my ($navmap,$inputname,$formname,$anoncounter)=@_;
     my $cid = $env{'request.course.id'};      my $cid = $env{'request.course.id'};
     my $Str;      my $Str;
     # Massage the input as needed.      # Massage the input as needed.
Line 259  sub MultipleProblemSelector { Line 259  sub MultipleProblemSelector {
     }      }
 </script>  </script>
 END  END
     $Str .=       my $checkanonjs = <<"END";
    
   <script type="text/javascript" language="JavaScript">
       function checkanon() {
           return true;
       }
   </script>
   
   END
       if (ref($anoncounter) eq 'HASH') {
           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');
               $checkanonjs = <<"END";
   
   <script type="text/javascript" language="JavaScript">
       function checkanon() {
           anoncount = 0;
           namedcount = 0;
           for (i=0; i<document.forms.$formname.elements.length; i++) {
               ele = document.forms.$formname.elements[i];
               if (ele.name == '$inputname') {
                   itemid = document.forms.$formname.elements[i].id;
                   if (document.forms.$formname.elements[i].checked) {
                       anonid = 'anonymous_'+itemid;
                       mixid = 'mixed_'+itemid;
                       anonele = document.getElementById(anonid);
                       mixele = document.getElementById(mixid);
                       if (anonele.value > 0) {
                           if (mixele.value == 'none') {
                               anoncount ++;
                           } else {
                               if (mixele.value == '0') {
                                   if (mixele.checked) {
                                       anoncount ++; 
                                   } else {
                                       namedcount ++;
                                   } 
                               } else {
                                   namedcount ++;
                               }
                           }
                       } else {
                           namedcount ++;
                       }
                   }
               }
           }
           if (anoncount > 0 && namedcount > 0) {
               alert("$anonwarning");
               return false;
           } 
       }
   </script>
   
   END
           }
       }
       $Str .= $checkanonjs.
         '<a href="javascript:checkall(true)">'.&mt('Select All').'</a>'.          '<a href="javascript:checkall(true)">'.&mt('Select All').'</a>'.
         ('&nbsp;'x4).          ('&nbsp;'x4).
         '<a href="javascript:checkall(false)">'.&mt('Unselect All').'</a>';          '<a href="javascript:checkall(false)">'.&mt('Unselect All').'</a>';
Line 290  END Line 347  END
                                                $seq_id++,                                                 $seq_id++,
                                                $inputname));                                                 $inputname));
         } elsif ($curRes->is_problem) {          } elsif ($curRes->is_problem) {
               my $anonpart = 0;
               my $namedpart = 0;
               my @parts = @{$curRes->parts()};
               if (ref($anoncounter) eq 'HASH') {
                   if (keys(%{$anoncounter}) > 0) {
                       my @parts = @{$curRes->parts()};
                       my $symb = $curRes->symb();
                       foreach my $part (@parts) {
                           if ((exists($anoncounter->{$symb."\0".$part})) ||
                               $curRes->is_anonsurvey($part)) {
                               $anonpart ++;
                           } else {
                               $namedpart ++ 
                           }
                       }
                   }
               }
             if (@Accumulator && $Accumulator[-1] ne '') {              if (@Accumulator && $Accumulator[-1] ne '') {
                 &{$Accumulator[-1]}($curRes,                  &{$Accumulator[-1]}($curRes,
                                     exists($selected->{$curRes->symb}));                                      exists($selected->{$curRes->symb}),
                                       $anonpart,$namedpart);
             }              }
         }          }
     }      }
Line 320  sub new_accumulator { Line 395  sub new_accumulator {
     return       return 
         sub {          sub {
             if (@_) {               if (@_) { 
                 my ($res,$checked) = @_;                  my ($res,$checked,$anonpart,$namedpart) = @_;
                 $target.='<tr><td><label>'.                  $target.='<tr><td><label>'.
                     '<input type="checkbox" name="'.$inputname.'" ';                      '<input type="checkbox" name="'.$inputname.'" ';
                 if ($checked) {                  if ($checked) {
                     $target .= 'checked="checked" ';                      $target .= 'checked="checked" ';
                 }                  }
                   my $anon_id = $item_id;
                 $target .= 'id="'.$seq_id.':'.$item_id++.'" ';                  $target .= 'id="'.$seq_id.':'.$item_id++.'" ';
                   my $esc_symb = &escape($res->symb);
                 $target.=                   $target.= 
                     'value="'.&escape($res->symb).'" />'.                      'value="'.$esc_symb.'" />'.
                     '&nbsp;'.$res->compTitle.'</label>'.                      '&nbsp;'.$res->compTitle.'</label>'.
                     ('&nbsp;'x2).'<a target="preview" '.                      ('&nbsp;'x2).'<a target="preview" '.
                     'href="'.$res->link.'?symb='.                      'href="'.$res->link.'?symb='.
                     &escape($res->shown_symb).'">'.&mt('view').'</a>'.                      &escape($res->shown_symb).'">'.&mt('view').'</a>'.
                     '</td></tr>'.$/;                      '<input type="hidden" id="anonymous_'.$seq_id.':'.$anon_id.'" name="hidden_'.$seq_id.':'.$anon_id.'" value="'.$anonpart.'" />';
                   my $mixed = '<input type="hidden" id="mixed_'.$seq_id.':'.$anon_id.'" value="none" name="mixed_'.$seq_id.':'.$anon_id.'" />';
                   if ($anonpart) {
                       if ($namedpart) {
                           my $checknamed = '';
                           my $checkedanon = ' checked="checked"';
                           if ($env{'form.mixed_'.$seq_id.':'.$anon_id} eq $esc_symb) {
                               $checknamed = $checkedanon;
                               $checkedanon = '';
                           }
                           $mixed = '&nbsp;('.
       &mt('Both anonymous and named submissions -- display: [_1]Anonymous [_2]Named[_3]',
       '<span class="LC_nobreak"><label>'.
       '<input type="radio" name="mixed_'.$seq_id.':'.$anon_id.
       '" value="0" id="mixed_'.$seq_id.':'.$anon_id.'"'.$checkedanon.' />',
       '</label></span>'.('&nbsp;'x2).' <span class="LC_nobreak">'.
       '<label><input type="radio" name="mixed_'.$seq_id.':'.$anon_id.
       '" value="symb_'.$esc_symb.'" id="named_'.$seq_id.':'.$anon_id.'"'.$checknamed.' />',
       '</label></span>').')';
                       } else {
                           $target .= '&nbsp;'.&mt('(Anonymous Survey)');
                       }
                   }
                   $target.= $mixed.'</td></tr>'.$/;
             } else {               } else { 
                 if (defined($target)) {                  if (defined($target)) {
                     return { title => $title,                      return { title => $title,

Removed from v.1.62  
changed lines
  Added in v.1.63


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