]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-11966 fixed typo in grader report causing fatal errors
authorskodak <skodak>
Thu, 1 Nov 2007 11:42:31 +0000 (11:42 +0000)
committerskodak <skodak>
Thu, 1 Nov 2007 11:42:31 +0000 (11:42 +0000)
MDL-11993 refactored code for item headers and icons

grade/edit/tree/calculation.php
grade/edit/tree/index.php
grade/lib.php
grade/report/grader/lib.php
grade/report/lib.php
grade/report/user/lib.php
pix/t/calc_off.gif [new file with mode: 0644]

index 1b87ec5d94da4c56e6d5575baf340010a0b09f48..8441c978c1a0e93c78f083fdf83926e210a444ce 100644 (file)
@@ -187,7 +187,7 @@ function get_grade_tree(&$gtree, $element, $current_itemid=null, $errors=null) {
         }
     }
 
-    $icon = $gtree->get_element_icon($element);
+    $icon = $gtree->get_element_icon($element, true);
     $last = '';
     $catcourseitem = ($element['type'] == 'courseitem' or $element['type'] == 'categoryitem');
 
index 30092d426d047ffaf13d809da8d14fde8053e851..82988d9209636aca74e172c1f0d3ac3f45d67a7d 100644 (file)
@@ -174,8 +174,15 @@ function print_grade_tree(&$gtree, $element, $moving, &$gpr, $switch, $switchedl
     $object = $element['object'];
     $eid    = $element['eid'];
 
+    $header = $gtree->get_element_header($element, true, true, true);
+
+    if ($object->is_hidden()) {
+        $header = '<span class="dimmed_text">'.$header.'</span>';
+    }
+
 /// prepare actions
     $actions = $gtree->get_edit_icon($element, $gpr);
+    $actions .= $gtree->get_calculation_icon($element, $gpr);
 
     if ($element['type'] == 'item' or ($element['type'] == 'category' and $element['depth'] > 1)) {
         $actions .= '<a href="index.php?id='.$COURSE->id.'&amp;action=delete&amp;eid='
@@ -186,26 +193,12 @@ function print_grade_tree(&$gtree, $element, $moving, &$gpr, $switch, $switchedl
                  . $strmove.'" title="'.$strmove.'"/></a>';
     }
 
-    $actions .= $gtree->get_locking_icon($element, $gpr);
-
-    $name = $object->get_name();
-
-    //TODO: improve outcome visualisation
-    if ($element['type'] == 'item' and !empty($object->outcomeid)) {
-        $name = $name.' ('.get_string('outcome', 'grades').')';
-    }
-
-    if ($object->is_hidden()) {
-        $name = '<span class="dimmed_text">'.$name.'</span>';
-    }
     $actions .= $gtree->get_hiding_icon($element, $gpr);
+    $actions .= $gtree->get_locking_icon($element, $gpr);
 
-/// prepare icon
-    $icon = $gtree->get_element_icon($element);
+/// prepare move target if needed
     $last = '';
     $catcourseitem = ($element['type'] == 'courseitem' or $element['type'] == 'categoryitem');
-
-/// prepare move target if needed
     $moveto = '';
     if ($moving) {
         $actions = ''; // no action icons when moving
@@ -217,21 +210,21 @@ function print_grade_tree(&$gtree, $element, $moving, &$gpr, $switch, $switchedl
 /// print the list items now
     if ($moving == $eid) {
         // do not diplay children
-        echo '<li class="'.$element['type'].' moving">'.$icon.$name.'('.get_string('move').')</li>';
+        echo '<li class="'.$element['type'].' moving">'.$header.'('.get_string('move').')</li>';
 
     } else if ($element['type'] != 'category') {
         if ($catcourseitem and $switch) {
             if ($switchedlast) {
-                echo '<li class="'.$element['type'].'">'.$icon.$name.$actions.'</li>';
+                echo '<li class="'.$element['type'].'">'.$header.$actions.'</li>';
             } else {
                 echo $moveto;
             }
         } else {
-            echo '<li class="'.$element['type'].'">'.$icon.$name.$actions.'</li>'.$moveto;
+            echo '<li class="'.$element['type'].'">'.$header.$actions.'</li>'.$moveto;
         }
 
     } else {
-        echo '<li class="'.$element['type'].'">'.$icon.$name.$actions;
+        echo '<li class="'.$element['type'].'">'.$header.$actions;
         echo '<ul class="catlevel'.$element['depth'].'">';
         $last = null;
         foreach($element['children'] as $child_el) {
index 78ebeec775b1f94ea5810754e913b9ab005bd743..bc2cb67e955454091ff5412bf6882b9cefd9736d 100644 (file)
@@ -703,15 +703,12 @@ function grade_to_percentage($gradeval, $grademin, $grademax) {
 }
 
 /**
- * Flat structure similar to grade tree.
+ * General structure representing grade items in course
  */
-class grade_seq {
+class grade_structure {
+    var $context;
 
-    /**
-     * A string of GET URL variables, namely courseid and sesskey, used in most URLs built by this class.
-     * @var string $commonvars
-     */
-    var $commonvars;
+    var $courseid;
 
     /**
      * 1D array of grade items only
@@ -719,14 +716,336 @@ class grade_seq {
     var $items;
 
     /**
-     * 1D array of elements
+     * Returns icon of element
+     * @param object $element
+     * @param bool $spacerifnone return spacer if no icon found
+     * @return string icon or spacer
      */
-    var $elements;
+    function get_element_icon(&$element, $spacerifnone=false) {
+        global $CFG;
+
+        switch ($element['type']) {
+            case 'item':
+            case 'courseitem':
+            case 'categoryitem':
+                if ($element['object']->is_calculated()) {
+                    return '<img src="'.$CFG->pixpath.'/i/calc.gif" class="icon itemicon" alt="'.get_string('calculation', 'grades').'"/>';
+
+                } else if (($element['object']->is_course_item() or $element['object']->is_category_item())
+                  and ($element['object']->gradetype == GRADE_TYPE_SCALE or $element['object']->gradetype == GRADE_TYPE_VALUE)) {
+                    if ($category = $element['object']->get_item_category()) {
+                        switch ($category->aggregation) {
+                            case GRADE_AGGREGATE_MEAN:
+                            case GRADE_AGGREGATE_MEDIAN:
+                            case GRADE_AGGREGATE_WEIGHTED_MEAN:
+                            case GRADE_AGGREGATE_EXTRACREDIT_MEAN:
+                                return '<img src="'.$CFG->pixpath.'/i/agg_mean.gif" class="icon itemicon" alt="'.get_string('aggregation', 'grades').'"/>';
+                            //case GRADE_AGGREGATE_SUM:
+                                //return '<img src="'.$CFG->pixpath.'/i/agg_sum.gif" class="icon itemicon" alt="'.get_string('aggregation', 'grades').'"/>';
+                        }
+                    }
+
+                } else if ($element['object']->itemtype == 'mod') {
+                    return '<img src="'.$CFG->modpixpath.'/'.$element['object']->itemmodule.'/icon.gif" class="icon itemicon" alt="'
+                           .get_string('modulename', $element['object']->itemmodule).'"/>';
+
+                } else if ($element['object']->itemtype == 'manual') {
+                    if ($element['object']->is_outcome_item()) {
+                        return '<img src="'.$CFG->pixpath.'/i/outcomes.gif" class="icon itemicon" alt="'.get_string('outcome', 'grades').'"/>';
+                    } else {
+                        //TODO: add better icon
+                        return '<img src="'.$CFG->pixpath.'/t/edit.gif" class="icon itemicon" alt="'.get_string('manualitem', 'grades').'"/>';
+                    }
+                }
+                break;
+
+            case 'category':
+                return '<img src="'.$CFG->pixpath.'/f/folder.gif" class="icon itemicon" alt="'.get_string('category', 'grades').'"/>';
+        }
+
+        if ($spacerifnone) {
+            return '<img src="'.$CFG->wwwroot.'/pix/spacer.gif" class="icon itemicon" alt=""/>';
+        } else {
+            return '';
+        }
+    }
 
     /**
-     * Course context
+     * Returns name of element optionally with icon and link
+     * @param object $element
+     * @param bool $withlinks
+     * @param bool $icons
+     * @param bool $spacerifnone return spacer if no icon found
+     * @return header string
      */
-    var $context;
+    function get_element_header(&$element, $withlink=false, $icon=true, $spacerifnone=false) {
+        global $CFG;
+
+        $header = '';
+
+        if ($icon) {
+            $header .= $this->get_element_icon($element, $spacerifnone);
+        }
+
+        $header .= $element['object']->get_name();
+
+        if ($element['type'] != 'item' and $element['type'] != 'categoryitem' and $element['type'] != 'courseitem') {
+            return $header;
+        }
+
+        $itemtype     = $element['object']->itemtype;
+        $itemmodule   = $element['object']->itemmodule;
+        $iteminstance = $element['object']->iteminstance;
+
+        if ($withlink and $itemtype=='mod' and $iteminstance and $itemmodule) {
+            $cm = get_coursemodule_from_instance($itemmodule, $iteminstance, $this->courseid);
+
+            $dir = $CFG->dirroot.'/mod/'.$itemmodule;
+
+            if (file_exists($dir.'/grade.php')) {
+                $url = $CFG->wwwroot.'/mod/'.$itemmodule.'/grade.php?id='.$cm->id;
+            } else {
+                $url = $CFG->wwwroot.'/mod/'.$itemmodule.'/view.php?id='.$cm->id;
+            }
+
+            $header = '<a href="'.$url.'">'.$header.'</a>';
+        }
+
+        return $header;
+    }
+
+    /**
+     * Returns the grade eid - the grade may not exist yet.
+     * @param $grade_grade object
+     * @return string eid
+     */
+    function get_grade_eid($grade_grade) {
+        if (empty($grade_grade->id)) {
+            return 'n'.$grade_grade->itemid.'u'.$grade_grade->userid;
+        } else {
+            return 'g'.$grade_grade->id;
+        }
+    }
+
+    /**
+     * Returns the grade_item eid
+     * @param $grade_item object
+     * @return string eid
+     */
+    function get_item_eid($grade_item) {
+        return 'i'.$grade_item->id;
+    }
+
+    /**
+     * Return edit icon for give element
+     * @param object $element
+     * @return string
+     */
+    function get_edit_icon($element, $gpr) {
+        global $CFG;
+
+        if (!has_capability('moodle/grade:manage', $this->context)) {
+            if ($element['type'] == 'grade' and has_capability('moodle/grade:edit', $this->context)) {
+                // oki - let them override grade
+            } else {
+                return '';
+            }
+        }
+
+        static $stredit = null;
+        static $strfeedback = null;
+        if (is_null($stredit)) {
+            $stredit = get_string('edit');
+            $strfeedback = get_string('feedback');
+        }
+
+        $object = $element['object'];
+        $overlib = '';
+
+        switch ($element['type']) {
+            case 'item':
+            case 'categoryitem':
+            case 'courseitem':
+                if (empty($object->outcomeid) || empty($CFG->enableoutcomes)) {
+                    $url = $CFG->wwwroot.'/grade/edit/tree/item.php?courseid='.$this->courseid.'&amp;id='.$object->id;
+                } else {
+                    $url = $CFG->wwwroot.'/grade/edit/tree/outcomeitem.php?courseid='.$this->courseid.'&amp;id='.$object->id;
+                }
+                $url = $gpr->add_url_params($url);
+                break;
+
+            case 'category':
+                $url = $CFG->wwwroot.'/grade/edit/tree/category.php?courseid='.$this->courseid.'&amp;id='.$object->id;
+                $url = $gpr->add_url_params($url);
+                break;
+
+            case 'grade':
+                if (empty($object->id)) {
+                    $url = $CFG->wwwroot.'/grade/edit/tree/grade.php?courseid='.$this->courseid.'&amp;itemid='.$object->itemid.'&amp;userid='.$object->userid;
+                } else {
+                    $url = $CFG->wwwroot.'/grade/edit/tree/grade.php?courseid='.$this->courseid.'&amp;id='.$object->id;
+                }
+                $url = $gpr->add_url_params($url);
+                if (!empty($object->feedback)) {
+                    $feedback = addslashes_js(trim(format_string($object->feedback, $object->feedbackformat)));
+                    $function = "return overlib('$feedback', BORDER, 0, FGCLASS, 'feedback', "
+                              ."CAPTIONFONTCLASS, 'caption', CAPTION, '$strfeedback');";
+                    $overlib = 'onmouseover="'.s($function).'" onmouseout="return nd();"';
+                }
+                break;
+
+            default:
+                $url = null;
+        }
+
+        if ($url) {
+            return '<a href="'.$url.'"><img '.$overlib.' src="'.$CFG->pixpath.'/t/edit.gif" class="iconsmall" alt="'.$stredit.'" title="'.$stredit.'"/></a>';
+
+        } else {
+            return '';
+        }
+    }
+
+    /**
+     * Return hiding icon for give element
+     * @param object $element
+     * @return string
+     */
+    function get_hiding_icon($element, $gpr) {
+        global $CFG;
+
+        if (!has_capability('moodle/grade:manage', $this->context) and !has_capability('moodle/grade:hide', $this->context)) {
+            return '';
+        }
+
+        static $strshow = null;
+        static $strhide   = null;
+        if (is_null($strshow)) {
+            $strshow = get_string('show');
+            $strhide = get_string('hide');
+        }
+
+        if ($element['object']->is_hidden()) {
+            $icon = 'show';
+            $tooltip = $strshow;
+
+            if ($element['type'] != 'category' and $element['object']->get_hidden() > 1) { // Change the icon and add a tooltip showing the date
+                $icon = 'hiddenuntil';
+                $tooltip = get_string('hiddenuntildate', 'grades', userdate($element['object']->get_hidden()));
+            }
+
+            $url     = $CFG->wwwroot.'/grade/edit/tree/action.php?id='.$this->courseid.'&amp;action=show&amp;sesskey='.sesskey()
+                     . '&amp;eid='.$element['eid'];
+            $url     = $gpr->add_url_params($url);
+            $action  = '<a href="'.$url.'"><img alt="'.$strshow.'" src="'.$CFG->pixpath.'/t/'.$icon.'.gif" class="iconsmall" title="'.$tooltip.'"/></a>';
+
+        } else {
+            $url     = $CFG->wwwroot.'/grade/edit/tree/action.php?id='.$this->courseid.'&amp;action=hide&amp;sesskey='.sesskey()
+                     . '&amp;eid='.$element['eid'];
+            $url     = $gpr->add_url_params($url);
+            $action  = '<a href="'.$url.'"><img src="'.$CFG->pixpath.'/t/hide.gif" class="iconsmall" alt="'.$strhide.'" title="'.$strhide.'"/></a>';
+        }
+        return $action;
+    }
+
+    /**
+     * Return locking icon for give element
+     * @param object $element
+     * @return string
+     */
+    function get_locking_icon($element, $gpr) {
+        global $CFG;
+
+        static $strunlock = null;
+        static $strlock   = null;
+        if (is_null($strunlock)) {
+            $strunlock = get_string('unlock', 'grades');
+            $strlock   = get_string('lock', 'grades');
+        }
+
+        if ($element['object']->is_locked()) {
+            $icon = 'unlock';
+            $tooltip = $strunlock;
+
+            if ($element['type'] != 'category' and $element['object']->get_locktime() > 1) { // Change the icon and add a tooltip showing the date
+                $icon = 'locktime';
+                $tooltip = get_string('locktimedate', 'grades', userdate($element['object']->get_locktime()));
+            }
+
+            if (!has_capability('moodle/grade:manage', $this->context) and !has_capability('moodle/grade:unlock', $this->context)) {
+                return '';
+            }
+            $url     = $CFG->wwwroot.'/grade/edit/tree/action.php?id='.$this->courseid.'&amp;action=unlock&amp;sesskey='.sesskey()
+                     . '&amp;eid='.$element['eid'];
+            $url     = $gpr->add_url_params($url);
+            $action  = '<a href="'.$url.'"><img src="'.$CFG->pixpath.'/t/'.$icon.'.gif" alt="'.$strunlock.'" class="iconsmall" title="'.$tooltip.'"/></a>';
+
+        } else {
+            if (!has_capability('moodle/grade:manage', $this->context) and !has_capability('moodle/grade:lock', $this->context)) {
+                return '';
+            }
+            $url     = $CFG->wwwroot.'/grade/edit/tree/action.php?id='.$this->courseid.'&amp;action=lock&amp;sesskey='.sesskey()
+                     . '&amp;eid='.$element['eid'];
+            $url     = $gpr->add_url_params($url);
+            $action  = '<a href="'.$url.'"><img src="'.$CFG->pixpath.'/t/lock.gif" class="iconsmall" alt="'.$strlock.'" title="'
+                     . $strlock.'"/></a>';
+        }
+        return $action;
+    }
+
+    /**
+     * Return calculation icon for given element
+     * @param object $element
+     * @return string
+     */
+    function get_calculation_icon($element, $gpr) {
+        global $CFG;
+        if (!has_capability('moodle/grade:manage', $this->context)) {
+            return '';
+        }
+
+        $calculation_icon = '';
+
+        $type   = $element['type'];
+        $object = $element['object'];
+
+        if ($type == 'item' or $type == 'courseitem' or $type == 'categoryitem') {
+            $streditcalculation = get_string('editcalculation', 'grades');
+
+            // show calculation icon only when calculation possible
+            if ((!$object->is_external_item() or $object->is_outcome_item())
+              and ($object->gradetype == GRADE_TYPE_SCALE or $object->gradetype == GRADE_TYPE_VALUE)) {
+                if ($object->is_calculated()) {
+                    $icon = 'calc.gif';
+                } else {
+                    $icon = 'calc_off.gif';
+                }
+                $url = $CFG->wwwroot.'/grade/edit/tree/calculation.php?courseid='.$this->courseid.'&amp;id='.$object->id;
+                $url = $gpr->add_url_params($url);
+                $calculation_icon = '<a href="'. $url.'"><img src="'.$CFG->pixpath.'/t/'.$icon.'" class="iconsmall" alt="'
+                                       . $streditcalculation.'" title="'.$streditcalculation.'" /></a>'. "\n";
+            }
+        }
+
+        return $calculation_icon;
+    }
+}
+
+/**
+ * Flat structure similar to grade tree.
+ */
+class grade_seq extends grade_structure {
+
+    /**
+     * A string of GET URL variables, namely courseid and sesskey, used in most URLs built by this class.
+     * @var string $commonvars
+     */
+    var $commonvars;
+
+    /**
+     * 1D array of elements
+     */
+    var $elements;
 
     /**
      * Constructor, retrieves and stores array of all grade_category and grade_item
@@ -832,25 +1151,12 @@ class grade_seq {
 
         // it is a category or item
         foreach ($this->elements as $element) {
-            if ($element['eid'] == $eid) {
-                return $element;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Returns the grade eid - the grade may not exist yet.
-     * @param $grade_grade object
-     * @return string eid
-     */
-    function get_grade_eid($grade_grade) {
-        if (empty($grade_grade->id)) {
-            return 'n'.$grade_grade->itemid.'u'.$grade_grade->userid;
-        } else {
-            return 'g'.$grade_grade->id;
+            if ($element['eid'] == $eid) {
+                return $element;
+            }
         }
+
+        return null;
     }
 }
 
@@ -860,7 +1166,7 @@ class grade_seq {
  * It has simple method calls with complex implementations, allowing for easy insertion,
  * deletion and moving of items and categories within the tree.
  */
-class grade_tree {
+class grade_tree extends grade_structure {
 
     /**
      * The basic representation of the tree as a hierarchical, 3-tiered array.
@@ -879,11 +1185,6 @@ class grade_tree {
      */
     var $levels;
 
-    /**
-     * Course context
-     */
-    var $context;
-
     /**
      * Grade items
      */
@@ -1158,263 +1459,6 @@ class grade_tree {
 
         return null;
     }
-
-    /**
-     * Returns the grade eid - the grade may not exist yet.
-     * @param $grade_grade object
-     * @return string eid
-     */
-    function get_grade_eid($grade_grade) {
-        if (empty($grade_grade->id)) {
-            return 'n'.$grade_grade->itemid.'u'.$grade_grade->userid;
-        } else {
-            return 'g'.$grade_grade->id;
-        }
-    }
-
-    /**
-     * Return edit icon for give element
-     * @param object $element
-     * @return string
-     */
-    function get_edit_icon($element, $gpr) {
-        global $CFG;
-
-        if (!has_capability('moodle/grade:manage', $this->context)) {
-            if ($element['type'] == 'grade' and has_capability('moodle/grade:edit', $this->context)) {
-                // oki - let them override grade
-            } else {
-                return '';
-            }
-        }
-
-        static $stredit = null;
-        static $strfeedback = null;
-        if (is_null($stredit)) {
-            $stredit = get_string('edit');
-            $strfeedback = get_string('feedback');
-        }
-
-        $object = $element['object'];
-        $overlib = '';
-
-        switch ($element['type']) {
-            case 'item':
-            case 'categoryitem':
-            case 'courseitem':
-                if (empty($object->outcomeid) || empty($CFG->enableoutcomes)) {
-                    $url = $CFG->wwwroot.'/grade/edit/tree/item.php?courseid='.$this->courseid.'&amp;id='.$object->id;
-                } else {
-                    $url = $CFG->wwwroot.'/grade/edit/tree/outcomeitem.php?courseid='.$this->courseid.'&amp;id='.$object->id;
-                }
-                $url = $gpr->add_url_params($url);
-                break;
-
-            case 'category':
-                $url = $CFG->wwwroot.'/grade/edit/tree/category.php?courseid='.$this->courseid.'&amp;id='.$object->id;
-                $url = $gpr->add_url_params($url);
-                break;
-
-            case 'grade':
-                if (empty($object->id)) {
-                    $url = $CFG->wwwroot.'/grade/edit/tree/grade.php?courseid='.$this->courseid.'&amp;itemid='.$object->itemid.'&amp;userid='.$object->userid;
-                } else {
-                    $url = $CFG->wwwroot.'/grade/edit/tree/grade.php?courseid='.$this->courseid.'&amp;id='.$object->id;
-                }
-                $url = $gpr->add_url_params($url);
-                if (!empty($object->feedback)) {
-                    $feedback = addslashes_js(trim(format_string($object->feedback, $object->feedbackformat)));
-                    $function = "return overlib('$feedback', BORDER, 0, FGCLASS, 'feedback', "
-                              ."CAPTIONFONTCLASS, 'caption', CAPTION, '$strfeedback');";
-                    $overlib = 'onmouseover="'.s($function).'" onmouseout="return nd();"';
-                }
-                break;
-
-            default:
-                $url = null;
-        }
-
-        if ($url) {
-            return '<a href="'.$url.'"><img '.$overlib.' src="'.$CFG->pixpath.'/t/edit.gif" class="iconsmall" alt="'.$stredit.'" title="'.$stredit.'"/></a>';
-
-        } else {
-            return '';
-        }
-    }
-
-    /**
-     * Return hiding icon for give element
-     * @param object $element
-     * @return string
-     */
-    function get_hiding_icon($element, $gpr) {
-        global $CFG;
-
-        if (!has_capability('moodle/grade:manage', $this->context) and !has_capability('moodle/grade:hide', $this->context)) {
-            return '';
-        }
-
-        static $strshow = null;
-        static $strhide   = null;
-        if (is_null($strshow)) {
-            $strshow = get_string('show');
-            $strhide = get_string('hide');
-        }
-
-        if ($element['object']->is_hidden()) {
-            $icon = 'show';
-            $tooltip = $strshow;
-
-            if ($element['type'] != 'category' and $element['object']->get_hidden() > 1) { // Change the icon and add a tooltip showing the date
-                $icon = 'hiddenuntil';
-                $tooltip = get_string('hiddenuntildate', 'grades', userdate($element['object']->get_hidden()));
-            }
-
-            $url     = $CFG->wwwroot.'/grade/edit/tree/action.php?id='.$this->courseid.'&amp;action=show&amp;sesskey='.sesskey()
-                     . '&amp;eid='.$element['eid'];
-            $url     = $gpr->add_url_params($url);
-            $action  = '<a href="'.$url.'"><img alt="'.$strshow.'" src="'.$CFG->pixpath.'/t/'.$icon.'.gif" class="iconsmall" title="'.$tooltip.'"/></a>';
-
-        } else {
-            $url     = $CFG->wwwroot.'/grade/edit/tree/action.php?id='.$this->courseid.'&amp;action=hide&amp;sesskey='.sesskey()
-                     . '&amp;eid='.$element['eid'];
-            $url     = $gpr->add_url_params($url);
-            $action  = '<a href="'.$url.'"><img src="'.$CFG->pixpath.'/t/hide.gif" class="iconsmall" alt="'.$strhide.'" title="'.$strhide.'"/></a>';
-        }
-        return $action;
-    }
-
-    /**
-     * Return locking icon for give element
-     * @param object $element
-     * @return string
-     */
-    function get_locking_icon($element, $gpr) {
-        global $CFG;
-
-        static $strunlock = null;
-        static $strlock   = null;
-        if (is_null($strunlock)) {
-            $strunlock = get_string('unlock', 'grades');
-            $strlock   = get_string('lock', 'grades');
-        }
-
-        if ($element['object']->is_locked()) {
-            $icon = 'unlock';
-            $tooltip = $strunlock;
-
-            if ($element['type'] != 'category' and $element['object']->get_locktime() > 1) { // Change the icon and add a tooltip showing the date
-                $icon = 'locktime';
-                $tooltip = get_string('locktimedate', 'grades', userdate($element['object']->get_locktime()));
-            }
-
-            if (!has_capability('moodle/grade:manage', $this->context) and !has_capability('moodle/grade:unlock', $this->context)) {
-                return '';
-            }
-            $url     = $CFG->wwwroot.'/grade/edit/tree/action.php?id='.$this->courseid.'&amp;action=unlock&amp;sesskey='.sesskey()
-                     . '&amp;eid='.$element['eid'];
-            $url     = $gpr->add_url_params($url);
-            $action  = '<a href="'.$url.'"><img src="'.$CFG->pixpath.'/t/'.$icon.'.gif" alt="'.$strunlock.'" class="iconsmall" title="'.$tooltip.'"/></a>';
-
-        } else {
-            if (!has_capability('moodle/grade:manage', $this->context) and !has_capability('moodle/grade:lock', $this->context)) {
-                return '';
-            }
-            $url     = $CFG->wwwroot.'/grade/edit/tree/action.php?id='.$this->courseid.'&amp;action=lock&amp;sesskey='.sesskey()
-                     . '&amp;eid='.$element['eid'];
-            $url     = $gpr->add_url_params($url);
-            $action  = '<a href="'.$url.'"><img src="'.$CFG->pixpath.'/t/lock.gif" class="iconsmall" alt="'.$strlock.'" title="'
-                     . $strlock.'"/></a>';
-        }
-        return $action;
-    }
-
-    /**
-     * Return calculation icon for given element
-     * @param object $element
-     * @return string
-     */
-    function get_calculation_icon($element, $gpr) {
-        global $CFG;
-        if (!has_capability('moodle/grade:manage', $this->context)) {
-            return '';
-        }
-
-        $calculation_icon = '';
-
-        $type   = $element['type'];
-        $object = $element['object'];
-
-        if ($type == 'item' or $type == 'courseitem' or $type == 'categoryitem') {
-            $streditcalculation = get_string('editcalculation', 'grades');
-
-            // show calculation icon only when calculation possible
-            if ((!$object->is_external_item() or $object->is_outcome_item())
-              and ($object->gradetype == GRADE_TYPE_SCALE or $object->gradetype == GRADE_TYPE_VALUE)) {
-                $url = $CFG->wwwroot.'/grade/edit/tree/calculation.php?courseid='.$this->courseid.'&amp;id='.$object->id;
-                $url = $gpr->add_url_params($url);
-                $calculation_icon = '<a href="'. $url.'"><img src="'.$CFG->pixpath.'/t/calc.gif" class="iconsmall" alt="'
-                                       . $streditcalculation.'" title="'.$streditcalculation.'" /></a>'. "\n";
-            }
-        }
-
-        return $calculation_icon;
-    }
-
-    /**
-     * Returns icon of element
-     * @param object $element
-     * @param bool $spacerifnone return spacer if no icon found
-     * @return string icon or spacer
-     */
-    function get_element_icon(&$element, $spacerifnone=true) {
-        global $CFG;
-
-        switch ($element['type']) {
-            case 'item':
-            case 'courseitem':
-            case 'categoryitem':
-                if ($element['object']->is_calculated()) {
-                    return '<img src="'.$CFG->pixpath.'/i/calc.gif" class="icon" alt="'.get_string('calculation', 'grades').'"/>';
-
-                } else if (($element['object']->is_course_item() or $element['object']->is_category_item())
-                  and ($element['object']->gradetype == GRADE_TYPE_SCALE or $element['object']->gradetype == GRADE_TYPE_VALUE)) {
-                    if ($category = $element['object']->get_item_category()) {
-                        switch ($category->aggregation) {
-                            case GRADE_AGGREGATE_MEAN:
-                            case GRADE_AGGREGATE_MEDIAN:
-                            case GRADE_AGGREGATE_WEIGHTED_MEAN:
-                            case GRADE_AGGREGATE_EXTRACREDIT_MEAN:
-                                return '<img src="'.$CFG->pixpath.'/i/agg_mean.gif" class="icon" alt="'.get_string('aggregation', 'grades').'"/>';
-                            //case GRADE_AGGREGATE_SUM:
-                                //return '<img src="'.$CFG->pixpath.'/i/agg_sum.gif" class="icon" alt="'.get_string('aggregation', 'grades').'"/>';
-                        }
-                    }
-
-                } else if ($element['object']->itemtype == 'mod') {
-                    return '<img src="'.$CFG->modpixpath.'/'.$element['object']->itemmodule.'/icon.gif" class="icon" alt="'
-                           .get_string('modulename', $element['object']->itemmodule).'"/>';
-
-                } else if ($element['object']->itemtype == 'manual') {
-                    if ($element['object']->is_outcome_item()) {
-                        return '<img src="'.$CFG->pixpath.'/i/outcomes.gif" class="icon" alt="'.get_string('outcome', 'grades').'"/>';
-                    } else {
-                        //TODO: add better icon
-                        return '<img src="'.$CFG->pixpath.'/t/edit.gif" class="icon" alt="'.get_string('manualitem', 'grades').'"/>';
-                    }
-                }
-                break;
-
-            case 'category':
-                return '<img src="'.$CFG->pixpath.'/f/folder.gif" class="icon" alt="'.get_string('category', 'grades').'"/>';
-        }
-
-        if ($spacerifnone) {
-            return '<img src="'.$CFG->wwwroot.'/pix/spacer.gif" class="icon" alt=""/>';
-        } else {
-            return '';
-        }
-    }
 }
 
 ?>
index 5a3b6c443181e11176d535f42d90864f31092b6b..3a0b6eaf862dd2be4a3e7714c17ccebe49379b80 100644 (file)
@@ -80,7 +80,7 @@ class grade_report_grader extends grade_report {
      */
     var $rowcount = 0;
 
-    /** 
+    /**
      * Capability check caching
      * */
     var $canviewhidden;
@@ -586,15 +586,7 @@ class grade_report_grader extends grade_report {
                         $hidden = ' hidden ';
                     }
 
-                    if ($object->itemtype == 'mod') {
-                        $icon = '<img src="'.$CFG->modpixpath.'/'.$object->itemmodule.'/icon.gif" class="icon" alt="'
-                              .$this->get_lang_string('modulename', $object->itemmodule).'"/>';
-                    } else if ($object->itemtype == 'manual') {
-                        $icon = '<img src="'.$CFG->pixpath.'/t/edit.gif" class="icon" alt="'
-                                .$this->get_lang_string('manualgrade', 'grades') .'"/>';
-                    }
-
-                    $headerlink = $this->get_module_link($element['object']->get_name(), $itemmodule, $iteminstance, $element['object']->is_hidden());
+                    $headerlink = $this->gtree->get_element_header($element, true, $this->get_pref('showactivityicons'), false);
                     $headerhtml .= '<th class="header '.$columnclass.' '.$type.$catlevel.$hidden.'" scope="col">'. $headerlink . $arrow;
                     $headerhtml .= $this->get_icons($element) . '</th>';
                 }
@@ -681,9 +673,9 @@ class grade_report_grader extends grade_report {
                 // MDL-11274
                 // Hide grades in the grader report if the current grader doesn't have 'moodle/grade:viewhidden'
                 if (!$this->canviewhidden and $grade->is_hidden()) {
-                    if (!empty($CFG->grade_hiddenasdate) and $grade_grade->get_datesubmitted() and !$item->is_category_item() and !$item->is_course_item()) {
+                    if (!empty($CFG->grade_hiddenasdate) and $grade->get_datesubmitted() and !$item->is_category_item() and !$item->is_course_item()) {
                         // the problem here is that we do not have the time when grade value was modified, 'timemodified' is general modification date for grade_grades records
-                        $studentshtml .= '<td class="cell c'.$columncount++.'"><span class="datesubmitted">'.userdate($grade_grade->get_datesubmitted(),get_string('strftimedatetimeshort')).'</span></td>';
+                        $studentshtml .= '<td class="cell c'.$columncount++.'"><span class="datesubmitted">'.userdate($grade->get_datesubmitted(),get_string('strftimedatetimeshort')).'</span></td>';
                     } else {
                         $studentshtml .= '<td class="cell c'.$columncount++.'">-</td>';
                     }
@@ -720,7 +712,7 @@ class grade_report_grader extends grade_report {
                 if ($grade->is_hidden()) {
                     $hidden = ' hidden ';
                 }
-                
+
                 // if in editting mode, we need to print either a text box
                 // or a drop down (for scales)
                 // grades in item of type grade category or course are not directly editable
index 1db95fee9101bf661420bc04c699f963c7ade497..1f652d427ab7b18d8d5bb429f133cd1ec5635462 100755 (executable)
@@ -337,43 +337,5 @@ class grade_report {
         $html = '<a href="'.$sort_link .'">' . $arrow . '</a>';
         return $html;
     }
-
-    /**
-     * Builds and returns a HTML link to the grade or view page of the module given.
-     * If no itemmodule is given, only the name of the category/item is returned, no link.
-     * @param string $modulename The shortname of the module, will become the visible header
-     * @param string $itemmodule The name of the module type (e.g. assignment, quiz...)
-     * @param int $iteminstance The instance number of the module
-     * @param bool itemhidden - if the grade item is hidden
-     * @return string HTML
-     */
-    function get_module_link($modulename, $itemmodule=null, $iteminstance=null, $itemhidden=false) {
-        global $CFG;
-
-        $link = null;
-        if (!is_null($itemmodule) AND !is_null($iteminstance)) {
-            // Add module icon if toggle is enabled
-            if ($this->get_pref('showactivityicons')) {
-                $modulename = '<img src="' . $CFG->modpixpath . '/' . $itemmodule
-                            . '/icon.gif" class="icon activity" alt="' . $modulename . '" />' . $modulename;
-            }
-
-            $coursemodule = get_coursemodule_from_instance($itemmodule, $iteminstance, $this->course->id);
-
-            $dir = $CFG->dirroot . "/mod/$itemmodule/";
-            $url = $CFG->wwwroot . "/mod/$itemmodule/";
-
-            if (file_exists($dir . 'grade.php')) {
-                $url .= 'grade.php';
-            } else {
-                $url .= 'view.php';
-            }
-
-            $url .= "?id=$coursemodule->id";
-            return '<a href="' . $url . '">' . $modulename . '</a>';
-        }
-
-        return $modulename;
-    }
 }
 ?>
index ea54895f7182fad8e7c15530870fc86b2e033d79..7feb18375634c7d11566829b5c42ca1d2fb6b63c 100644 (file)
@@ -206,12 +206,11 @@ class grade_report_user extends grade_report {
                 $hidden = ' hidden ';
             }
 
+            $element = $this->gseq->locate_element($this->gseq->get_item_eid($grade_item));
+            $header = $this->gseq->get_element_header($element, true, true, true);
+
             /// prints grade item name
-            if ($grade_item->is_course_item() or $grade_item->is_category_item()) {
-                $data[] = '<span class="'.$hidden.$class.'">'.$grade_item->get_name().'</span>';
-            } else {
-                $data[] = '<span class="'.$hidden.$class.'">'.$this->get_module_link($grade_item->get_name(), $grade_item->itemmodule, $grade_item->iteminstance).'</span>';
-            }
+            $data[] = '<span class="'.$hidden.$class.'">'.$header.'</span>';
 
             /// prints category
             $cat = $grade_item->get_parent_category();
diff --git a/pix/t/calc_off.gif b/pix/t/calc_off.gif
new file mode 100644 (file)
index 0000000..78b7c59
Binary files /dev/null and b/pix/t/calc_off.gif differ