]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-19323 added missing support for localized floats + code cleanup; merged from...
authorskodak <skodak>
Sat, 30 May 2009 13:01:20 +0000 (13:01 +0000)
committerskodak <skodak>
Sat, 30 May 2009 13:01:20 +0000 (13:01 +0000)
grade/edit/tree/index.php
grade/edit/tree/lib.php

index 6ec894b6f0e22073ac7925f68f4d613f3729a388..a957474faa827aabc3b928dbb4dad8cecc4c1b07 100644 (file)
@@ -63,9 +63,9 @@ if (has_capability('moodle/grade:manage', $context)) {
         $USER->gradeediting[$course->id] = 0;
     }
 
-    if (($showadvanced == 1) and confirm_sesskey()) {
+    if ($showadvanced == 1) {
         $USER->gradeediting[$course->id] = 1;
-    } else if (($showadvanced == 0) and confirm_sesskey()) {
+    } else if ($showadvanced == 0) {
         $USER->gradeediting[$course->id] = 0;
     }
 
@@ -137,7 +137,7 @@ switch ($action) {
             }
             $confirm = optional_param('confirm', 0, PARAM_BOOL);
 
-            if ($confirm and confirm_sesskey()) {
+            if ($confirm) {
                 $object->delete('grade/report/grader/category');
                 redirect($returnurl);
 
@@ -212,11 +212,9 @@ if ($current_view != '') {
 
 print_grade_page_head($courseid, 'edittree', $current_view, get_string('categoriesedit', 'grades') . ': ' . $current_view_str);
 
-$form_key = optional_param('sesskey', null, PARAM_ALPHANUM);
-
-if ($form_key && $data = data_submitted()) {
+if ($data = data_submitted() and confirm_sesskey()) {
     // Perform bulk actions first
-    if (!empty($data->bulkmove) && confirm_sesskey()) {
+    if (!empty($data->bulkmove)) {
         $elements = array();
 
         foreach ($data as $key => $value) {
@@ -231,75 +229,58 @@ if ($form_key && $data = data_submitted()) {
     // Category and item field updates
     foreach ($data as $key => $value) {
         // Grade category text inputs
-        if (preg_match('/(aggregation|droplow|keephigh)_([0-9]*)/', $key, $matches) && confirm_sesskey()) {
-            $value = required_param($matches[0], PARAM_INT);
+        if (preg_match('/^(aggregation|droplow|keephigh)_([0-9]+)$/', $key, $matches)) {
+            $param = $matches[1];
+            $aid   = $matches[2];
 
             // Do not allow negative values
+            $value = clean_param($value, PARAM_INT);
             $value = ($value < 0) ? 0 : $value;
 
-            $param = $matches[1];
-            $a->id = $matches[2];
-
-            $grade_category = grade_category::fetch(array('id'=>$a->id, 'courseid'=>$courseid));
+            $grade_category = grade_category::fetch(array('id'=>$aid, 'courseid'=>$courseid));
             $grade_category->$param = $value;
 
             $grade_category->update();
             grade_regrade_final_grades($courseid);
 
         // Grade item text inputs
-        } elseif (preg_match('/(grademax|aggregationcoef|multfactor|plusfactor)_([0-9]*)/', $key, $matches) && confirm_sesskey()) {
-            $defaults = array('grademax' => 100, 'aggregationcoef' => 1, 'multfactor' => 1, 'plusfactor' => 0);
+        } elseif (preg_match('/^(grademax|aggregationcoef|multfactor|plusfactor)_([0-9]+)$/', $key, $matches)) {
+            $param = $matches[1];
+            $aid   = $matches[2];
 
-            if (is_string($_POST[$matches[0]]) && strlen($_POST[$matches[0]]) < 1) {
-                $_POST[$matches[0]] = null;
-            }
-            $value = optional_param($matches[0], $defaults[$matches[1]], PARAM_NUMBER);
+            $value = unformat_float($value);
+            $value = clean_param($value, PARAM_NUMBER);
 
-            $param = $matches[1];
-            $a->id = $matches[2];
-            $grade_item = grade_item::fetch(array('id'=>$a->id, 'courseid'=>$courseid));
+            $grade_item = grade_item::fetch(array('id'=>$aid, 'courseid'=>$courseid));
+
+            if ($param === 'grademax' and $value < $grade_item->grademin) {
+                // better not allow values lower than grade min
+                $value = $grade_item->grademin;
+            }
             $grade_item->$param = $value;
 
             $grade_item->update();
             grade_regrade_final_grades($courseid);
 
         // Grade item checkbox inputs
-        } elseif (preg_match('/extracredit_original_([0-9]*)/', $key, $matches) && confirm_sesskey()) { // Sum extra credit checkbox
-            $extracredit = optional_param("extracredit_{$matches[1]}", null, PARAM_BOOL);
-            $original_value = required_param($matches[0], PARAM_BOOL);
-            $a->id = $matches[1];
-            $newvalue = null;
-            if ($original_value == 1 && is_null($extracredit)) {
-                $newvalue = 0;
-            } elseif ($original_value == 0 && $extracredit == 1) {
-                $newvalue = 1;
-            } else {
-                continue;
-            }
+        } elseif (preg_match('/^extracredit_([0-9]+)$/', $key, $matches)) { // Sum extra credit checkbox
+            $aid   = $matches[1];
+            $value = clean_param($value, PARAM_BOOL);
 
-            $grade_item = grade_item::fetch(array('id'=>$a->id, 'courseid'=>$courseid));
-            $grade_item->aggregationcoef = $newvalue;
+            $grade_item = grade_item::fetch(array('id'=>$aid, 'courseid'=>$courseid));
+            $grade_item->aggregationcoef = $value;
 
             $grade_item->update();
             grade_regrade_final_grades($courseid);
 
         // Grade category checkbox inputs
-        } elseif (preg_match('/aggregate(onlygraded|subcats|outcomes)_original_([0-9]*)/', $key, $matches) && confirm_sesskey()) {
-            $setting = optional_param('aggregate'.$matches[1].'_'.$matches[2], null, PARAM_BOOL);
-            $original_value = required_param($matches[0], PARAM_BOOL);
-            $a->id = $matches[2];
-
-            $newvalue = null;
-            if ($original_value == 1 && is_null($setting)) {
-                $newvalue = 0;
-            } elseif ($original_value == 0 && $setting == 1) {
-                $newvalue = 1;
-            } else {
-                continue;
-            }
+        } elseif (preg_match('/^aggregate(onlygraded|subcats|outcomes)_([0-9]+)$/', $key, $matches)) {
+            $param = 'aggregate'.$matches[1];
+            $aid    = $matches[2];
+            $value = clean_param($value, PARAM_BOOL);
 
-            $grade_category = grade_category::fetch(array('id'=>$a->id, 'courseid'=>$courseid));
-            $grade_category->{'aggregate'.$matches[1]} = $newvalue;
+            $grade_category = grade_category::fetch(array('id'=>$aid, 'courseid'=>$courseid));
+            $grade_category->$param = $value;
 
             $grade_category->update();
             grade_regrade_final_grades($courseid);
index b86f0fa7ee908090bbba43e700cb4491c2688dbb..19dc9eaa2680721a25c2763b8225163f835cdd3e 100755 (executable)
@@ -337,18 +337,16 @@ class grade_edit_tree {
 
         if ((($aggcoef == 'aggregationcoefweight' || $aggcoef == 'aggregationcoef') && $type == 'weight') ||
             ($aggcoef == 'aggregationcoefextra' && $type == 'extra')) {
-                return '<input type="text" size="6" id="aggregationcoef_'.$item->id.'" name="aggregationcoef_'.$item->id.'"
-                    value="'.format_float($item->aggregationcoef).'" />';
+            return '<input type="text" size="6" id="aggregationcoef_'.$item->id.'" name="aggregationcoef_'.$item->id.'"
+                value="'.format_float($item->aggregationcoef, 4).'" />';
         } elseif ($aggcoef == 'aggregationcoefextrasum' && $type == 'extra') {
-                $checked = ($item->aggregationcoef > 0) ? 'checked="checked"' : '';
-                $extracredit = ($item->aggregationcoef > 0) ? 1 : 0;
-
-                return '<input type="checkbox" id="extracredit_'.$item->id.'" name="extracredit_'.$item->id.'" ' . "$checked />\n"
-                               . '<input type="hidden" name="extracredit_original_'.$item->id.'" value="'.$extracredit.'" />';
-            } else {
-                return '';
-            }
+            $checked = ($item->aggregationcoef > 0) ? 'checked="checked"' : '';
+            return '<input type="hidden" name="extracredit_'.$item->id.'" value="0" />
+                    <input type="checkbox" id="extracredit_'.$item->id.'" name="extracredit_'.$item->id.'" value="1" '."$checked />\n";
+        } else {
+            return '';
         }
+    }
 
     /**
      * Given an element of the grade tree, returns whether it is deletable or not (only manual grade items are deletable)
@@ -688,7 +686,7 @@ class grade_edit_tree_column_range extends grade_edit_tree_column {
         } elseif ($item->is_external_item()) {
             $grademax = format_float($item->grademax, $item->get_decimals());
         } else {
-            $grademax = '<input type="text" size="3" id="grademax'.$item->id.'" name="grademax_'.$item->id.'" value="'.format_float($item->grademax, $item->get_decimals()).'" />';
+            $grademax = '<input type="text" size="4" id="grademax'.$item->id.'" name="grademax_'.$item->id.'" value="'.format_float($item->grademax, $item->get_decimals()).'" />';
         }
 
         return '<td class="cell">'.$grademax.'</td>';
@@ -717,14 +715,14 @@ class grade_edit_tree_column_aggregateonlygraded extends grade_edit_tree_column_
 
     public function get_category_cell($category, $levelclass, $params) {
         $onlygradedcheck = ($category->aggregateonlygraded == 1) ? 'checked="checked"' : '';
-        $aggregateonlygraded ='<input type="checkbox" id="aggregateonlygraded_'.$category->id.'" name="aggregateonlygraded_'.$category->id.'" '.$onlygradedcheck . ' />';
-        $hidden = '<input type="hidden" name="aggregateonlygraded_original_'.$category->id.'" value="'.$category->aggregateonlygraded.'" />';
+        $hidden = '<input type="hidden" name="aggregateonlygraded_'.$category->id.'" value="0" />';
+        $aggregateonlygraded ='<input type="checkbox" id="aggregateonlygraded_'.$category->id.'" name="aggregateonlygraded_'.$category->id.'" value="1" '.$onlygradedcheck . ' />';
 
         if ($this->forced) {
             $aggregateonlygraded = ($category->aggregateonlygraded) ? get_string('yes') : get_string('no');
         }
 
-        return '<td class="cell '.$levelclass.'">' . $aggregateonlygraded . $hidden.'</td>';
+        return '<td class="cell '.$levelclass.'">'.$hidden.$aggregateonlygraded.'</td>';
     }
 
     public function get_item_cell($item, $params) {
@@ -745,14 +743,14 @@ class grade_edit_tree_column_aggregatesubcats extends grade_edit_tree_column_cat
 
     public function get_category_cell($category, $levelclass, $params) {
         $subcatscheck = ($category->aggregatesubcats == 1) ? 'checked="checked"' : '';
-        $aggregatesubcats = '<input type="checkbox" id="aggregatesubcats_'.$category->id.'" name="aggregatesubcats_'.$category->id.'" ' . $subcatscheck.' />';
-        $hidden = '<input type="hidden" name="aggregatesubcats_original_'.$category->id.'" value="'.$category->aggregatesubcats.'" />';
+        $hidden = '<input type="hidden" name="aggregatesubcats_'.$category->id.'" value="0" />';
+        $aggregatesubcats = '<input type="checkbox" id="aggregatesubcats_'.$category->id.'" name="aggregatesubcats_'.$category->id.'" value="1" ' . $subcatscheck.' />';
 
         if ($this->forced) {
             $aggregatesubcats = ($category->aggregatesubcats) ? get_string('yes') : get_string('no');
         }
 
-        return '<td class="cell '.$levelclass.'">' . $aggregatesubcats . $hidden.'</td>';
+        return '<td class="cell '.$levelclass.'">'.$hidden.$aggregatesubcats.'</td>';
 
     }
 
@@ -775,14 +773,14 @@ class grade_edit_tree_column_aggregateoutcomes extends grade_edit_tree_column_ca
     public function get_category_cell($category, $levelclass, $params) {
 
         $outcomescheck = ($category->aggregateoutcomes == 1) ? 'checked="checked"' : '';
-        $aggregateoutcomes = '<input type="checkbox" id="aggregateoutcomes_'.$category->id.'" name="aggregateoutcomes_'.$category->id.'" ' . $outcomescheck.' />';
-        $hidden = '<input type="hidden" name="aggregateoutcomes_original_'.$category->id.'" value="'.$category->aggregateoutcomes.'" />';
+        $hidden = '<input type="hidden" name="aggregateoutcomes_'.$category->id.'" value="0" />';
+        $aggregateoutcomes = '<input type="checkbox" id="aggregateoutcomes_'.$category->id.'" name="aggregateoutcomes_'.$category->id.'" value="1" ' . $outcomescheck.' />';
 
         if ($this->forced) {
             $aggregateoutcomes = ($category->aggregateoutcomes) ? get_string('yes') : get_string('no');
         }
 
-        return '<td class="cell '.$levelclass.'">' . $aggregateoutcomes . $hidden.'</td>';
+        return '<td class="cell '.$levelclass.'">'.$hidden.$aggregateoutcomes.'</td>';
     }
 
     public function get_item_cell($item, $params) {
@@ -868,7 +866,7 @@ class grade_edit_tree_column_multfactor extends grade_edit_tree_column {
         if (!$item->is_raw_used()) {
             return '<td class="cell">&nbsp;</td>';
         }
-        $multfactor = '<input type="text" size="3" id="multfactor'.$item->id.'" name="multfactor_'.$item->id.'" value="'.format_float($item->multfactor).'" />';
+        $multfactor = '<input type="text" size="4" id="multfactor'.$item->id.'" name="multfactor_'.$item->id.'" value="'.format_float($item->multfactor, 4).'" />';
         return '<td class="cell">'.$multfactor.'</td>';
     }
 
@@ -897,7 +895,7 @@ class grade_edit_tree_column_plusfactor extends grade_edit_tree_column {
         if (!$item->is_raw_used()) {
             return '<td class="cell">&nbsp;</td>';
         }
-        $plusfactor = '<input type="text" size="3" id="plusfactor_'.$item->id.'" name="plusfactor_'.$item->id.'" value="'.format_float($item->plusfactor).'" />';
+        $plusfactor = '<input type="text" size="4" id="plusfactor_'.$item->id.'" name="plusfactor_'.$item->id.'" value="'.format_float($item->plusfactor, 4).'" />';
         return '<td class="cell">'.$plusfactor.'</td>';
 
     }