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

albertel lon-capa-cvs@mail.lon-capa.org
Tue, 07 Mar 2006 21:36:50 -0000


albertel		Tue Mar  7 16:36:50 2006 EDT

  Modified files:              
    /loncom/interface	lonhelper.pm 
  Log:
  - <section> by default now also includes groups but can be forced to be only sections through the 'onlysections' attribute
  
  
Index: loncom/interface/lonhelper.pm
diff -u loncom/interface/lonhelper.pm:1.133 loncom/interface/lonhelper.pm:1.134
--- loncom/interface/lonhelper.pm:1.133	Tue Mar  7 11:09:59 2006
+++ loncom/interface/lonhelper.pm	Tue Mar  7 16:36:49 2006
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # .helper XML handler to implement the LON-CAPA helper
 #
-# $Id: lonhelper.pm,v 1.133 2006/03/07 16:09:59 albertel Exp $
+# $Id: lonhelper.pm,v 1.134 2006/03/07 21:36:49 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -2996,8 +2996,12 @@
 <section> allows the user to choose one or more sections from the current
 course.
 
-It takes the standard attributes "variable", "multichoice", and
-"nextstate", meaning what they do for most other elements.
+It takes the standard attributes "variable", "multichoice",
+"allowempty" and "nextstate", meaning what they do for most other
+elements.
+
+also takes a boolean 'onlysections' whcih will restrict this to only
+have sections and not include groups
 
 =cut
 
@@ -3047,8 +3051,16 @@
     } 
    
     for my $sectionName (sort(keys(%choices))) {
-        
-        push @{$paramHash->{CHOICES}}, [$sectionName, $sectionName];
+	push @{$paramHash->{CHOICES}}, [$sectionName, $sectionName];
+    }
+    return if ($token->[2]{'onlysections'});
+
+    # add in groups to the end of the list
+    my %curr_groups;
+    if (&Apache::loncommon::coursegroups(\%curr_groups)) {
+	foreach my $group_name (sort(keys(%curr_groups))) {
+	    push(@{$paramHash->{CHOICES}}, [$group_name, $group_name]);
+	}
     }
 }    
 
@@ -3068,10 +3080,12 @@
  
 =head2 Element: groupX<group, helper element>
  
-<section> allows the user to choose one or more groups from the current course.
+<group> allows the user to choose one or more groups from the current course.
+
+It takes the standard attributes "variable", "multichoice",
+ "allowempty" and "nextstate", meaning what they do for most other
+ elements.
 
-It takes the standard attributes "variable", "multichoice", and "nextstate", meaning what they do for most other elements.
- 
 =cut
 
 no strict;
@@ -3108,18 +3122,14 @@
     # Populate the CHOICES element
     my %choices;
 
-    my $numgroups;
     my %curr_groups;
     if (&Apache::loncommon::coursegroups(\%curr_groups)) {
-        foreach my $group_name (keys %curr_groups) {
-            $choices{$group_name} = $group_name;
-        }
-    }
-    foreach my $group_name (sort(keys(%choices))) {
-        push @{$paramHash->{CHOICES}}, [$group_name, $group_name];
+	foreach my $group_name (sort(keys(%curr_groups))) {
+	    push(@{$paramHash->{CHOICES}}, [$group_name, $group_name]);
+	}
     }
 }
-                                                                                    
+
 sub end_group {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;