version 1.75, 2011/03/12 02:58:44
|
version 1.80, 2011/03/26 16:09:33
|
Line 475 sub process_category_edits {
|
Line 475 sub process_category_edits {
|
unless ($cangrade) { return %categories; } |
unless ($cangrade) { return %categories; } |
# First store everything |
# First store everything |
foreach my $id (split(/\,/,$categories{'order'})) { |
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_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_total($cangrade,$id,$env{'form.totaltype_'.$id},$env{'form.total_'.$id},%categories); |
%categories=&set_category_weight($cangrade,$id,$env{'form.weight_'.$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 |
# Now deal with commands |
Line 495 sub process_category_edits {
|
Line 497 sub process_category_edits {
|
%categories=&add_category_content($1,$cangrade,$env{'form.addcont_'.$1.'_symb'},%categories); |
%categories=&add_category_content($1,$cangrade,$env{'form.addcont_'.$1.'_symb'},%categories); |
} elsif ($cmd=~/^delcont\_(.+)\_\_\_\_\_\_(.+)$/) { |
} elsif ($cmd=~/^delcont\_(.+)\_\_\_\_\_\_(.+)$/) { |
%categories=&del_category_content($1,$cangrade,$2,%categories); |
%categories=&del_category_content($1,$cangrade,$2,%categories); |
|
} elsif ($cmd=~/^newrule\_(.+)$/) { |
|
%categories=&add_calculation_rule($1,$cangrade,':',%categories); |
|
} elsif ($cmd=~/^delrule\_(.+)\_\_\_\_\_\_(.*)$/) { |
|
%categories=&del_calculation_rule($1,$cangrade,$2,%categories); |
} |
} |
# Move to a new position |
# Move to a new position |
my $moveid=$env{'form.storemove'}; |
my $moveid=$env{'form.storemove'}; |
Line 607 ENDMOVE
|
Line 613 ENDMOVE
|
} |
} |
$r->print('</td>'); |
$r->print('</td>'); |
# Calculation |
# Calculation |
# FIXME: just placeholders |
$r->print('<td><ul>'); |
|
foreach my $calcrule (split(/\,/,$categories{$id.'_calculations'})) { |
|
$r->print('<li>'); |
|
my ($code,$value)=split(/\:/,$calcrule); |
|
$r->print(&pretty_prt_rule($cangrade,$id,$code,$value)); |
|
if ($cangrade) { |
|
$r->print(' <a href="javascript:storecmd(\'delrule_'.$id.'______'.$code.'\');">'.&mt('Delete').'</a>'); |
|
} |
|
$r->print('</li>'); |
|
} |
|
$r->print('</ul>'); |
if ($cangrade) { |
if ($cangrade) { |
$r->print("<td>Calculation Edit</td>"); |
$r->print('<br />'.&new_calc_rule_form($id)); |
} else { |
|
$r->print("<td>Calculation</td>"); |
|
} |
} |
|
$r->print('</td>'); |
|
|
|
|
# Total |
# Total |
if ($cangrade) { |
if ($cangrade) { |
$r->print('<td>'. |
$r->print('<td>'. |
Line 674 sub make_new_category {
|
Line 691 sub make_new_category {
|
return %categories; |
return %categories; |
} |
} |
|
|
|
|
|
# === Calculation Rule Editing |
|
|
|
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='<span class="LC_nobreak">'; |
|
if ($cangrade) { |
|
$ret.='<select name="sel_'.$cid.'">'; |
|
foreach my $calc (''=>'',sort(keys(%lt))) { |
|
$ret.='<option value="'.$calc.'"'.($calc eq $code?' selected="selected"':'').' />'.$lt{$calc}.'</input>'; |
|
} |
|
$ret.='</select> N=<input type="text" size="5" name="val_'.$cid.'" value="'.$value.'" /></span>'; |
|
} else { |
|
$ret.=$lt{$code}.'; N='.$value; |
|
} |
|
$ret.='</span>'; |
|
return $ret; |
|
} |
|
|
|
sub new_calc_rule_form { |
|
my ($id)=@_; |
|
return '<a href="javascript:storecmd(\'newrule_'.$id.'\');">'.&mt('New Calculation Rule').'</a>'; |
|
} |
|
|
|
# |
|
# 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=~/^\Q$delcontent\E\:/) { |
|
push(@newcontent,$current); |
|
} |
|
} |
|
$categories{$id.'_calculations'}=join(',',@newcontent); |
|
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 |
|
|
# |
# |
# Add to category content |
# Add to category content |
# |
# |