--- loncom/interface/lonquickgrades.pm 2011/03/12 02:58:44 1.75 +++ loncom/interface/lonquickgrades.pm 2011/03/21 00:56:58 1.77 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Quick Student Grades Display # -# $Id: lonquickgrades.pm,v 1.75 2011/03/12 02:58:44 www Exp $ +# $Id: lonquickgrades.pm,v 1.77 2011/03/21 00:56:58 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -495,6 +495,8 @@ sub process_category_edits { %categories=&add_category_content($1,$cangrade,$env{'form.addcont_'.$1.'_symb'},%categories); } elsif ($cmd=~/^delcont\_(.+)\_\_\_\_\_\_(.+)$/) { %categories=&del_category_content($1,$cangrade,$2,%categories); + } elsif ($cmd=~/^newrule\_(.+)$/) { + %categories=&add_calculation_rule($1,$cangrade,':',%categories); } # Move to a new position my $moveid=$env{'form.storemove'}; @@ -607,12 +609,22 @@ ENDMOVE } $r->print(''); # Calculation -# FIXME: just placeholders + $r->print(''); if ($cangrade) { - $r->print("Calculation Edit"); - } else { - $r->print("Calculation"); + $r->print('
'.&new_calc_rule_form($id)); } + $r->print(''); + + # Total if ($cangrade) { $r->print(''. @@ -674,6 +686,53 @@ sub make_new_category { return %categories; } + +# === Calculation Rule Editing + +sub pretty_prt_rule { + my ($rule)=@_; + return $rule; +} + +sub new_calc_rule_form { + my ($id)=@_; + return ''.&mt('New Calculation Rule').''; +} + +# +# Add a calculation rule +# + +sub add_calculation_rule { + my ($id,$cangrade,$newcontent,%categories)=@_; + unless ($cangrade) { return %categories; } + my %newcontent=($newcontent => 1); + foreach my $current (split(/\,/,$categories{$id.'_calculations'})) { + $newcontent{$current}=1; + } + $categories{$id.'_calculations'}=join(',',sort(keys(%newcontent))); + return %categories; +} + +# +# Delete a calculation rule +# + +sub del_calculation_rule { + my ($id,$cangrade,$delcontent,%categories)=@_; + unless ($cangrade) { return %categories; } + my @newcontent=(); + foreach my $current (split(/\,/,$categories{$id.'_calculations'})) { + unless ($current eq $delcontent) { + push(@newcontent,$current); + } + } + $categories{$id.'_calculations'}=join(',',@newcontent); + return %categories; +} + +# === Category Editing + # # Add to category content #