--- loncom/interface/lonquickgrades.pm 2011/03/25 22:06:34 1.79 +++ loncom/interface/lonquickgrades.pm 2011/03/26 16:09:33 1.80 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Quick Student Grades Display # -# $Id: lonquickgrades.pm,v 1.79 2011/03/25 22:06:34 www Exp $ +# $Id: lonquickgrades.pm,v 1.80 2011/03/26 16:09:33 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -475,10 +475,12 @@ sub process_category_edits { unless ($cangrade) { return %categories; } # First store everything foreach my $id (split(/\,/,$categories{'order'})) { +# Set names, types, and weight (there is only one of each per category) %categories=&set_category_name($cangrade,$id,$env{'form.name_'.$id},%categories); %categories=&set_category_total($cangrade,$id,$env{'form.totaltype_'.$id},$env{'form.total_'.$id},%categories); %categories=&set_category_weight($cangrade,$id,$env{'form.weight_'.$id},%categories); -# More changes here +# Set values for category rules (before names may change) + %categories=&set_category_rules($cangrade,$id,%categories); } # Now deal with commands @@ -692,21 +694,25 @@ sub make_new_category { # === Calculation Rule Editing -sub pretty_prt_rule { - my ($cangrade,$id,$code,$value)=@_; - my $cid=$id.'_'.$code; - my %lt=&Apache::lonlocal::texthash( +sub category_rule_codes { + return &Apache::lonlocal::texthash( 'droplow' => 'Drop N lowest grade assignments', 'drophigh' => 'Drop N highest grade assignments', 'capabove' => 'Cap percentage above N percent', 'capbelow' => 'Cap percentage below N percent'); +} + +sub pretty_prt_rule { + my ($cangrade,$id,$code,$value)=@_; + my $cid=$id.'_'.$code; + my %lt=&category_rule_codes(); my $ret=''; if ($cangrade) { $ret.=' N='; + $ret.=' N='; } else { $ret.=$lt{$code}.'; N='.$value; } @@ -751,6 +757,21 @@ sub del_calculation_rule { return %categories; } +sub set_category_rules { + my ($cangrade,$id,%categories)=@_; + unless ($cangrade) { return %categories; } + my %lt=&category_rule_codes(); + my @newrules=(); + foreach my $code ('',(keys(%lt))) { + if ($env{'form.sel_'.$id.'_'.$code}) { + push(@newrules,$env{'form.sel_'.$id.'_'.$code}.':'.$env{'form.val_'.$id.'_'.$code}); + } + } + $categories{$id.'_calculations'}=join(',',sort(@newrules)); + return %categories; +} + + # === Category Editing #