[LON-CAPA-cvs] cvs: loncom /interface/statistics lonstathelpers.pm

matthew lon-capa-cvs@mail.lon-capa.org
Thu, 23 Sep 2004 15:31:41 -0000


matthew		Thu Sep 23 11:31:41 2004 EDT

  Modified files:              
    /loncom/interface/statistics	lonstathelpers.pm 
  Log:
  MultipleProblemSelector now has 'select' and 'unselect' for each sequence.
  
  
Index: loncom/interface/statistics/lonstathelpers.pm
diff -u loncom/interface/statistics/lonstathelpers.pm:1.24 loncom/interface/statistics/lonstathelpers.pm:1.25
--- loncom/interface/statistics/lonstathelpers.pm:1.24	Thu Sep 23 10:35:25 2004
+++ loncom/interface/statistics/lonstathelpers.pm	Thu Sep 23 11:31:40 2004
@@ -1,6 +1,6 @@
 # The LearningOnline Network with CAPA
 #
-# $Id: lonstathelpers.pm,v 1.24 2004/09/23 14:35:25 matthew Exp $
+# $Id: lonstathelpers.pm,v 1.25 2004/09/23 15:31:40 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -205,12 +205,20 @@
     my $selected = {map { ($_,1) } (&get_selected_symbs($inputname))};
     # Header
     $Str .= <<"END";
-<script>
-    function checkall(value) {
+<script language="JavaScript" type="text/javascript">
+    function checkall(value,seqid) {
         for (i=0; i<document.forms.$formname.elements.length; i++) {
             ele = document.forms.$formname.elements[i];
             if (ele.name == '$inputname') {
-                document.forms.$formname.elements[i].checked=value;
+                if (seqid != null) {
+                    itemid = document.forms.$formname.elements[i].id;
+                    thing = itemid.split(':');
+                    if (thing[0] == seqid) {
+                        document.forms.$formname.elements[i].checked=value;
+                    }
+                } else {
+                    document.forms.$formname.elements[i].checked=value;
+                }
             }
         }
     }
@@ -223,9 +231,11 @@
     $Str .= $/.'<table>'.$/;
     my $iterator = $navmap->getIterator(undef, undef, undef, 1);
     my $sequence_string;
+    my $seq_id = 0;
     my @Accumulator = (&new_accumulator($ENV{'course.'.$cid.'.description'},
                                         '',
                                         '',
+                                        $seq_id++,
                                         $inputname));
     my @Sequence_Data;
     while (my $curRes = $iterator->next()) {
@@ -242,6 +252,7 @@
             push(@Accumulator,&new_accumulator($curRes->compTitle,
                                                $curRes->src,
                                                $curRes->symb,
+                                               $seq_id++,
                                                $inputname));
         } elsif ($curRes->is_problem) {
             if (@Accumulator && $Accumulator[-1] ne '') {
@@ -255,7 +266,11 @@
         #my $seq = pop(@Sequence_Data);
         next if (! defined($seq) || ref($seq) ne 'HASH');
         $Str.= '<tr><td colspan="2">'.
-            '<b>'.$seq->{'title'}.'</b>'.
+            '<b>'.$seq->{'title'}.'</b>'.('&nbsp;'x2).
+            '<a href="javascript:checkall(true,'.$seq->{'id'}.')">'.
+                                  &mt('Select').'</a>'.('&nbsp;'x2).
+            '<a href="javascript:checkall(false,'.$seq->{'id'}.')">'.
+                                  &mt('Unselect').'</a>'.('&nbsp;'x2).
             '</td></tr>'.$/;
         $Str.= $seq->{'html'};
     }
@@ -274,8 +289,9 @@
 }
 
 sub new_accumulator {
-    my ($title,$src,$symb,$inputname) = @_;
+    my ($title,$src,$symb,$seq_id,$inputname) = @_;
     my $target;
+    my $item_id=0;
     return 
         sub {
             if (@_) { 
@@ -285,6 +301,7 @@
                 if ($checked) {
                     $target .= 'checked ';
                 }
+                $target .= 'id="'.$seq_id.':'.$item_id++.'" ';
                 $target.= 
                     'value="'.&Apache::lonnet::escape($res->symb).'" />'.
                     '&nbsp;'.$res->compTitle.'</label></td>'.
@@ -294,6 +311,7 @@
                     return { title => $title,
                              symb  => $symb,
                              src   => $src,
+                             id    => $seq_id,
                              html  => $target, }; 
                 }
                 return undef;