version 1.76, 2011/03/19 02:22:18
|
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 610 ENDMOVE
|
Line 616 ENDMOVE
|
$r->print('<td><ul>'); |
$r->print('<td><ul>'); |
foreach my $calcrule (split(/\,/,$categories{$id.'_calculations'})) { |
foreach my $calcrule (split(/\,/,$categories{$id.'_calculations'})) { |
$r->print('<li>'); |
$r->print('<li>'); |
$r->print(&pretty_prt_rule($calcrule)); |
my ($code,$value)=split(/\:/,$calcrule); |
|
$r->print(&pretty_prt_rule($cangrade,$id,$code,$value)); |
if ($cangrade) { |
if ($cangrade) { |
$r->print(' <a href="javascript:storecmd(\'delcalc_'.$id.'______'.$calcrule.'\');">'.&mt('Delete').'</a>'); |
$r->print(' <a href="javascript:storecmd(\'delrule_'.$id.'______'.$code.'\');">'.&mt('Delete').'</a>'); |
} |
} |
$r->print('</li>'); |
$r->print('</li>'); |
} |
} |
$r->print('</ul>'); |
$r->print('</ul>'); |
if ($cangrade) { |
if ($cangrade) { |
$r->print('<br />'.&mt('Add Calculation Rule').'<br />'. |
$r->print('<br />'.&new_calc_rule_form($id)); |
&new_calc_rule_form('addcalc_'.$id.'_','this.form.cmd.value="addcalc_'.$id.'";this.form.submit();')); |
|
} |
} |
$r->print('</td>'); |
$r->print('</td>'); |
|
|
Line 688 sub make_new_category {
|
Line 694 sub make_new_category {
|
|
|
# === Calculation Rule Editing |
# === 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 { |
sub pretty_prt_rule { |
my ($rule)=@_; |
my ($cangrade,$id,$code,$value)=@_; |
return $rule; |
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 { |
sub new_calc_rule_form { |
return "New Rule"; |
my ($id)=@_; |
|
return '<a href="javascript:storecmd(\'newrule_'.$id.'\');">'.&mt('New Calculation Rule').'</a>'; |
} |
} |
|
|
# |
# |
Line 721 sub del_calculation_rule {
|
Line 749 sub del_calculation_rule {
|
unless ($cangrade) { return %categories; } |
unless ($cangrade) { return %categories; } |
my @newcontent=(); |
my @newcontent=(); |
foreach my $current (split(/\,/,$categories{$id.'_calculations'})) { |
foreach my $current (split(/\,/,$categories{$id.'_calculations'})) { |
unless ($current eq $delcontent) { |
unless ($current=~/^\Q$delcontent\E\:/) { |
push(@newcontent,$current); |
push(@newcontent,$current); |
} |
} |
} |
} |
Line 729 sub del_calculation_rule {
|
Line 757 sub del_calculation_rule {
|
return %categories; |
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 |
# === Category Editing |
|
|
# |
# |