]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-9628 Simplified and improved the expanding/collapsing of categories. There are...
authornicolasconnault <nicolasconnault>
Thu, 9 Aug 2007 16:41:39 +0000 (16:41 +0000)
committernicolasconnault <nicolasconnault>
Thu, 9 Aug 2007 16:41:39 +0000 (16:41 +0000)
grade/edit/tree/category_form.php
grade/lib.php
grade/report/grader/lib.php
grade/report/grader/preferences_form.php
grade/report/grader/settings.php
grade/report/grader/version.php
lang/en_utf8/grades.php
lib/gradelib.php
lib/moodlelib.php
pix/t/switch_whole.gif [new file with mode: 0644]

index 2ef411d7683b1ea6ac81adc134503a3c48145869..37a100f35c3f638e8bc74a63c33b72e97d7b7a88 100644 (file)
@@ -54,8 +54,9 @@ class edit_category_form extends moodleform {
         // user preferences
         $mform->addElement('header', 'general', get_string('userpreferences', 'grades'));
         $options = array(GRADE_REPORT_PREFERENCE_DEFAULT => get_string('default', 'grades'),
-                          GRADE_REPORT_AGGREGATION_VIEW_FULL => get_string('full', 'grades'),
-                          GRADE_REPORT_AGGREGATION_VIEW_COMPACT => get_string('compact', 'grades'));
+                         GRADE_REPORT_AGGREGATION_VIEW_FULL => get_string('fullmode', 'grades'),
+                         GRADE_REPORT_AGGREGATION_VIEW_AGGREGATES_ONLY => get_string('aggregatesonly', 'grades'),
+                         GRADE_REPORT_AGGREGATION_VIEW_GRADES_ONLY => get_string('gradesonly', 'grades'));
         $label = get_string('aggregationview', 'grades') . ' (' . get_string('default', 'grades')
                . ': ' . $options[$CFG->grade_report_aggregationview] . ')';
         $mform->addElement('select', 'pref_aggregationview', $label, $options);
index c7dd0d19df9471342c52149134712fa376b7bfa8..a1983df503e01848a757b65aec744f06a7dccad0 100644 (file)
@@ -521,12 +521,17 @@ class grade_tree {
             return;
         }
 
-        if (in_array($element['object']->id, $collapsed)) {
+        if (in_array($element['object']->id, $collapsed['aggregatesonly'])) {
             $category_item = reset($element['children']); //keep only category item
             $element['children'] = array(key($element['children'])=>$category_item);
 
         } else {
-            foreach ($element['children'] as $sortorder=>$child) {
+            if (in_array($element['object']->id, $collapsed['gradesonly'])) { // Remove category item
+                reset($element['children']);
+                $first_key = key($element['children']);
+                unset($element['children'][$first_key]);
+            }
+            foreach ($element['children'] as $sortorder=>$child) { // Recurse through the element's children
                 grade_tree::category_collapse($element['children'][$sortorder], $collapsed);
             }
         }
index 8b17e22f958ab736ab39f0360c836e32e0c4d004..f770b20d4937e845ef0a5422b97f8089a9b129e3 100644 (file)
@@ -52,7 +52,7 @@ class grade_report_grader extends grade_report {
     var $userselect;
 
     /**
-     * List of collapsed captegories from user perference
+     * List of collapsed categories from user preference
      * @var array $collapsed
      */
     var $collapsed;
@@ -72,14 +72,10 @@ class grade_report_grader extends grade_report {
         // load collapsed settings for this report
         if ($collapsed = get_user_preferences('grade_report_grader_collapsed_categories')) {
             $this->collapsed = unserialize($collapsed);
-            foreach ($this->collapsed as $key=>$id) {
-                if ($this->get_pref('aggregationview', $id) == GRADE_REPORT_AGGREGATION_VIEW_FULL) {
-                    unset($this->collapsed[$key]); // full view categories can not be collapsed
-                }
-            }
         } else {
-            $this->collapsed = array();
+            $this->collapsed = array('aggregatesonly' => array(), 'gradesonly' => array());
         }
+
         if (empty($CFG->enableoutcomes)) {
             $nooutcomes = false;
         } else {
@@ -977,14 +973,19 @@ class grade_report_grader extends grade_report {
 
         $contract_expand_icon = '';
         // If object is a category, display expand/contract icon
-        if ($element['type'] == 'category' && $this->get_pref('aggregationview', $element['object']->id) == GRADE_REPORT_AGGREGATION_VIEW_COMPACT) {
+        if ($element['type'] == 'category') {
             // Load language strings
-            $strswitch_minus = $this->get_lang_string('contract', 'grades');
-            $strswitch_plus  = $this->get_lang_string('expand', 'grades');
+            $strswitch_minus = $this->get_lang_string('aggregatesonly', 'grades');
+            $strswitch_plus  = $this->get_lang_string('gradesonly', 'grades');
+            $strswitch_whole = $this->get_lang_string('fullmode', 'grades');
+
             $expand_contract = 'switch_minus'; // Default: expanded
+            // $this->get_pref('aggregationview', $element['object']->id) == GRADE_REPORT_AGGREGATION_VIEW_COMPACT
 
-            if (in_array($element['object']->id, $this->collapsed)) {
+            if (in_array($element['object']->id, $this->collapsed['aggregatesonly'])) {
                 $expand_contract = 'switch_plus';
+            } elseif (in_array($element['object']->id, $this->collapsed['gradesonly'])) {
+                $expand_contract = 'switch_whole';
             }
             $url = $this->gpr->get_return_url(null, array('target'=>$element['eid'], 'action'=>$expand_contract, 'sesskey'=>sesskey()));
             $contract_expand_icon = '<a href="'.$url.'"><img src="'.$CFG->pixpath.'/t/'.$expand_contract.'.gif" class="iconsmall" alt="'
@@ -1008,25 +1009,35 @@ class grade_report_grader extends grade_report {
         if ($collapsed = get_user_preferences('grade_report_grader_collapsed_categories')) {
             $collapsed = unserialize($collapsed);
         } else {
-            $collapsed = array();
+            $collapsed = array('aggregatesonly' => array(), 'gradesonly' => array());
         }
 
         switch ($action) {
-            case 'switch_minus':
-                if (!in_array($targetid, $collapsed)) {
-                    $collapsed[] = $targetid;
+            case 'switch_minus': // Add category to array of aggregatesonly
+                if (!in_array($targetid, $collapsed['aggregatesonly'])) {
+                    $collapsed['aggregatesonly'][] = $targetid;
                     set_user_preference('grade_report_grader_collapsed_categories', serialize($collapsed));
                 }
                 break;
 
-            case 'switch_plus':
-                $key = array_search($targetid, $collapsed);
+            case 'switch_plus': // Remove category from array of aggregatesonly, and add it to array of gradesonly
+                $key = array_search($targetid, $collapsed['aggregatesonly']);
                 if ($key !== false) {
-                    unset($collapsed[$key]);
-                    set_user_preference('grade_report_grader_collapsed_categories', serialize($collapsed));
+                    unset($collapsed['aggregatesonly'][$key]);
                 }
+                if (!in_array($targetid, $collapsed['gradesonly'])) {
+                    $collapsed['gradesonly'][] = $targetid;
+                }
+                set_user_preference('grade_report_grader_collapsed_categories', serialize($collapsed));
                 break;
+            case 'switch_whole': // Remove the category from the array of collapsed cats
+                $key = array_search($targetid, $collapsed['gradesonly']);
+                if ($key !== false) {
+                    unset($collapsed['gradesonly'][$key]);
+                    set_user_preference('grade_report_grader_collapsed_categories', serialize($collapsed));
+                }
 
+                break;
             default:
                 break;
         }
index 5e7fc53912a60ed28a8d2f2b9f9219f0e083cbc1..b352f10ecdbb9aaa5481cf098e85c51b2e7fbd1d 100644 (file)
@@ -44,8 +44,9 @@ class grader_report_preferences_form extends moodleform {
                                                      GRADE_REPORT_AGGREGATION_POSITION_LEFT => get_string('left', 'grades'),
                                                      GRADE_REPORT_AGGREGATION_POSITION_RIGHT => get_string('right', 'grades')),
                       'aggregationview'     => array(GRADE_REPORT_PREFERENCE_DEFAULT => 'default',
-                                                     GRADE_REPORT_AGGREGATION_VIEW_FULL => get_string('full', 'grades'),
-                                                     GRADE_REPORT_AGGREGATION_VIEW_COMPACT => get_string('compact', 'grades')),
+                                                     GRADE_REPORT_AGGREGATION_VIEW_FULL => get_string('fullmode', 'grades'),
+                                                     GRADE_REPORT_AGGREGATION_VIEW_AGGREGATES_ONLY => get_string('aggregatesonly', 'grades'),
+                                                     GRADE_REPORT_AGGREGATION_VIEW_GRADES_ONLY => get_string('gradesonly', 'grades')),
                       'gradedisplaytype'    => array(GRADE_REPORT_PREFERENCE_DEFAULT => 'default',
                                                      GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL => get_string('real', 'grades'),
                                                      GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades'),
index 659c7f76ce9bc2634b9df84eb73f1218317ed5b4..064f34b9dd84a6f725c12ec089d5c53da517e67b 100644 (file)
@@ -36,7 +36,8 @@ $settings->add(new admin_setting_configselect('grade_report_aggregationposition'
 $settings->add(new admin_setting_configselect('grade_report_aggregationview', get_string('aggregationview', 'grades'),
                                           get_string('configaggregationview', 'grades'), false,
                                           array(GRADE_REPORT_AGGREGATION_VIEW_FULL => get_string('full', 'grades'),
-                                                GRADE_REPORT_AGGREGATION_VIEW_COMPACT => get_string('compact', 'grades'))));
+                                                GRADE_REPORT_AGGREGATION_VIEW_AGGREGATES_ONLY => get_string('aggregatesonly', 'grades'),
+                                                GRADE_REPORT_AGGREGATION_VIEW_GRADES_ONLY => get_string('gradesonly', 'grades'))));
 
 $settings->add(new admin_setting_configselect('grade_report_gradedisplaytype', get_string('gradedisplaytype', 'grades'),
                                           get_string('configgradedisplaytype', 'grades'), false,
index f31dd22dbacdf2e93fc23ee32bd2f5596dc943d6..bc50921317420f9e98dc16e2eaf11cbbb7372d6e 100644 (file)
@@ -1,6 +1,6 @@
 <?PHP // $Id$
 
-$plugin->version  = 2007080103;
+$plugin->version  = 2007080900;
 $plugin->requires = 2007080103;
 
 ?>
index ebbe0a557ece719cc4fd29700cf101bb821a6a96..917c4405cd6bfaa8088624ce038043c2b0ac9c28 100644 (file)
@@ -23,6 +23,7 @@ $string['aggregatemodeall'] = 'Mode of all grades';
 $string['aggregatemodegraded'] = 'Mode of non-empty grades';
 $string['aggregateoutcomes'] = 'Include outcomes in aggregation';
 $string['aggregateoutcomeshelp'] = 'Including outcomes in aggregation may not lead to the desired overall grade, so you have the option to include or leave them out.';
+$string['aggregatesonly'] = 'Aggregates only';
 $string['aggregateweightedmeanall'] = 'Weighted mean of all grades';
 $string['aggregateweightedmeangraded'] = 'Weighted mean of non-empty grades';
 $string['aggregation'] = 'Aggregation';
@@ -138,6 +139,7 @@ $string['finalgradehelp'] = 'The final grade (cached) after all calculations are
 $string['forelementtypes'] = ' for the selected $a';
 $string['forstudents'] = 'For Students';
 $string['full'] = 'Full';
+$string['fullmode'] = 'Full view';
 $string['grade'] = 'Grade';
 $string['gradebook'] = 'Gradebook';
 $string['gradebookhiddenerror'] = 'The gradebook is currently set to hide everything from students.';
@@ -171,6 +173,7 @@ $string['gradessettings'] = 'Grade settings';
 $string['gradepreferences'] = 'Grade Preferences';
 $string['gradepreferenceshelp'] = 'Grade Preferences Help';
 $string['grades'] = 'Grades';
+$string['gradesonly'] = 'Grades only';
 $string['gradetype'] = 'Grade type';
 $string['gradetypehelp'] = 'The type of grade this item uses. Can be of 4 types: none, value, scale and text. Only The value and scale types can be aggregated.';
 $string['gradeview'] = 'View Grade';
index 4211c70d42f276bed522c69794cd1772e5cc5cc5..5ccf6d6304dfcbe6b2ef00ab46874aeec951b680 100644 (file)
@@ -69,7 +69,8 @@ define('GRADE_HISTORY_DELETE', 3);
 define('GRADE_REPORT_AGGREGATION_POSITION_LEFT', 0);
 define('GRADE_REPORT_AGGREGATION_POSITION_RIGHT', 1);
 define('GRADE_REPORT_AGGREGATION_VIEW_FULL', 0);
-define('GRADE_REPORT_AGGREGATION_VIEW_COMPACT', 1);
+define('GRADE_REPORT_AGGREGATION_VIEW_AGGREGATES_ONLY', 1);
+define('GRADE_REPORT_AGGREGATION_VIEW_GRADES_ONLY', 1);
 define('GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL', 0);
 define('GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE', 1);
 define('GRADE_REPORT_GRADE_DISPLAY_TYPE_LETTER', 2);
index f46956c8d7bd8f60b4a234317874db95e1c85276..5d115fff4d48812dfce417411a804c9e76acf469 100644 (file)
@@ -6075,9 +6075,9 @@ function course_scale_used($courseid, $scaleid) {
                 }
             }
         }
-        
+
         // check if any course grade item makes use of the scale
-        $return += count_records('grade_items', 'courseid', $courseid, 'scaleid', $scaleid);                            
+        $return += count_records('grade_items', 'courseid', $courseid, 'scaleid', $scaleid);
     }
     return $return;
 }
@@ -7178,16 +7178,16 @@ function in_object_vars($var, $object)
 }
 
 /**
- * Returns an array without repeated objects. 
+ * Returns an array without repeated objects.
  * This function is similar to array_unique, but for arrays that have objects as values
- * 
+ *
  * @param unknown_type $array
  * @param unknown_type $keep_key_assoc
  * @return unknown
  */
 function object_array_unique($array, $keep_key_assoc = true) {
     $duplicate_keys = array();
-    $tmp         = array();       
+    $tmp         = array();
 
     foreach ($array as $key=>$val) {
         // convert objects to arrays, in_array() does not support objects
@@ -7205,7 +7205,7 @@ function object_array_unique($array, $keep_key_assoc = true) {
     foreach ($duplicate_keys as $key) {
         unset($array[$key]);
     }
-       
+
     return $keep_key_assoc ? $array : array_values($array);
 }
 
diff --git a/pix/t/switch_whole.gif b/pix/t/switch_whole.gif
new file mode 100644 (file)
index 0000000..597b72e
Binary files /dev/null and b/pix/t/switch_whole.gif differ