diff --git a/grade/edit/tree/calculation.php b/grade/edit/tree/calculation.php
index 360b2a267d8..f1337c72c6b 100644
--- a/grade/edit/tree/calculation.php
+++ b/grade/edit/tree/calculation.php
@@ -195,7 +195,7 @@ function get_grade_tree(&$gtree, $element, $current_itemid=null, $errors=null) {
}
}
- $icon = $gtree->get_element_icon($element, true);
+ $icon = grade_helper::get_element_icon($element, true);
$last = '';
$catcourseitem = ($element['type'] == 'courseitem' or $element['type'] == 'categoryitem');
diff --git a/grade/edit/tree/lib.php b/grade/edit/tree/lib.php
index af79fbfd83a..091bbb1f654 100644
--- a/grade/edit/tree/lib.php
+++ b/grade/edit/tree/lib.php
@@ -101,10 +101,10 @@ class grade_edit_tree {
$object = $element['object'];
$eid = $element['eid'];
- $name = $this->gtree->get_element_header($element, true, false, true, false, true);
- $icon = $this->gtree->get_element_icon($element);
- $type = $this->gtree->get_element_type_string($element);
- $strippedname = $this->gtree->get_element_header($element, false, false, false);
+ $name = grade_helper::get_element_header($element, true, false, true, false, true);
+ $icon = grade_helper::get_element_icon($element);
+ $type = grade_helper::get_element_type_string($element);
+ $strippedname = grade_helper::get_element_header($element, false, false, false);
$is_category_item = false;
if ($element['type'] == 'categoryitem' || $element['type'] == 'courseitem') {
$is_category_item = true;
@@ -370,7 +370,7 @@ class grade_edit_tree {
'moveaction' => $moveaction,
'itemtype' => $object->itemtype,
'icon' => $icon,
- 'type' => $type
+ 'type' => $type,
]
);
}
diff --git a/grade/lib.php b/grade/lib.php
index efa2a44103d..b0077dff365 100644
--- a/grade/lib.php
+++ b/grade/lib.php
@@ -1429,105 +1429,13 @@ class grade_structure {
* @param bool $spacerifnone return spacer if no icon found
*
* @return string icon or spacer
+ * @deprecated since Moodle 4.4 - please use {@see grade_helper::get_element_icon()}
+ * @todo MDL-79907 This will be deleted in Moodle 4.8.
*/
public function get_element_icon(&$element, $spacerifnone=false) {
- global $CFG, $OUTPUT;
- require_once $CFG->libdir.'/filelib.php';
-
- $outputstr = '';
-
- // Object holding pix_icon information before instantiation.
- $icon = new stdClass();
- $icon->attributes = array(
- 'class' => 'icon itemicon'
- );
- $icon->component = 'moodle';
-
- $none = true;
- switch ($element['type']) {
- case 'item':
- case 'courseitem':
- case 'categoryitem':
- $none = false;
-
- $is_course = $element['object']->is_course_item();
- $is_category = $element['object']->is_category_item();
- $is_scale = $element['object']->gradetype == GRADE_TYPE_SCALE;
- $is_value = $element['object']->gradetype == GRADE_TYPE_VALUE;
- $is_outcome = !empty($element['object']->outcomeid);
-
- if ($element['object']->is_calculated()) {
- $icon->pix = 'i/calc';
- $icon->title = s(get_string('calculatedgrade', 'grades'));
-
- } else if (($is_course or $is_category) and ($is_scale or $is_value)) {
- if ($category = $element['object']->get_item_category()) {
- $aggrstrings = grade_helper::get_aggregation_strings();
- $stragg = $aggrstrings[$category->aggregation];
-
- $icon->pix = 'i/calc';
- $icon->title = s($stragg);
-
- switch ($category->aggregation) {
- case GRADE_AGGREGATE_MEAN:
- case GRADE_AGGREGATE_MEDIAN:
- case GRADE_AGGREGATE_WEIGHTED_MEAN:
- case GRADE_AGGREGATE_WEIGHTED_MEAN2:
- case GRADE_AGGREGATE_EXTRACREDIT_MEAN:
- $icon->pix = 'i/agg_mean';
- break;
- case GRADE_AGGREGATE_SUM:
- $icon->pix = 'i/agg_sum';
- break;
- }
- }
-
- } else if ($element['object']->itemtype == 'mod') {
- // Prevent outcomes displaying the same icon as the activity they are attached to.
- if ($is_outcome) {
- $icon->pix = 'i/outcomes';
- $icon->title = s(get_string('outcome', 'grades'));
- } else {
- $modinfo = get_fast_modinfo($element['object']->courseid);
- $module = $element['object']->itemmodule;
- $instanceid = $element['object']->iteminstance;
- if (isset($modinfo->instances[$module][$instanceid])) {
- $icon->url = $modinfo->instances[$module][$instanceid]->get_icon_url();
- } else {
- $icon->pix = 'monologo';
- $icon->component = $element['object']->itemmodule;
- }
- $icon->title = s(get_string('modulename', $element['object']->itemmodule));
- }
- } else if ($element['object']->itemtype == 'manual') {
- if ($element['object']->is_outcome_item()) {
- $icon->pix = 'i/outcomes';
- $icon->title = s(get_string('outcome', 'grades'));
- } else {
- $icon->pix = 'i/manual_item';
- $icon->title = s(get_string('manualitem', 'grades'));
- }
- }
- break;
-
- case 'category':
- $none = false;
- $icon->pix = 'i/folder';
- $icon->title = s(get_string('category', 'grades'));
- break;
- }
-
- if ($none) {
- if ($spacerifnone) {
- $outputstr = $OUTPUT->spacer() . ' ';
- }
- } else if (isset($icon->url)) {
- $outputstr = html_writer::img($icon->url, $icon->title, $icon->attributes);
- } else {
- $outputstr = $OUTPUT->pix_icon($icon->pix, $icon->title, $icon->component, $icon->attributes);
- }
-
- return $outputstr;
+ debugging('The function get_element_icon() is deprecated, please use grade_helper::get_element_icon() instead.',
+ DEBUG_DEVELOPER);
+ return grade_helper::get_element_icon($element, $spacerifnone);
}
/**
@@ -1535,41 +1443,14 @@ class grade_structure {
*
* @param array $element An array representing an element in the grade_tree
* @return string The string that describes the type of the grade element
+ * @deprecated since Moodle 4.4 - please use {@see grade_helper::get_element_type_string()}
+ * @todo MDL-79907 This will be deleted in Moodle 4.8.
*/
public function get_element_type_string(array $element): string {
- // If the element is a grade category.
- if ($element['type'] == 'category') {
- return get_string('category', 'grades');
- }
- // If the element is a grade item.
- if (in_array($element['type'], ['item', 'courseitem', 'categoryitem'])) {
- // If calculated grade item.
- if ($element['object']->is_calculated()) {
- return get_string('calculatedgrade', 'grades');
- }
- // If aggregated type grade item.
- if ($element['object']->is_aggregate_item()) {
- return get_string('aggregation', 'core_grades');
- }
- // If external grade item (module, plugin, etc.).
- if ($element['object']->is_external_item()) {
- // If outcome grade item.
- if ($element['object']->is_outcome_item()) {
- return get_string('outcome', 'grades');
- }
- return get_string('modulename', $element['object']->itemmodule);
- }
- // If manual grade item.
- if ($element['object']->itemtype == 'manual') {
- // If outcome grade item.
- if ($element['object']->is_outcome_item()) {
- return get_string('outcome', 'grades');
- }
- return get_string('manualitem', 'grades');
- }
- }
-
- return '';
+ debugging('The function get_element_type_string() is deprecated,' .
+ ' please use grade_helper::get_element_type_string() instead.',
+ DEBUG_DEVELOPER);
+ return grade_helper::get_element_type_string($element);
}
/**
@@ -1585,105 +1466,26 @@ class grade_structure {
* @param moodle_url|null $sortlink Link to sort column.
*
* @return string header
+ * @deprecated since Moodle 4.4 - please use {@see grade_helper::get_element_header()}
+ * @todo MDL-79907 This will be deleted in Moodle 4.8.
*/
public function get_element_header(array &$element, bool $withlink = false, bool $icon = true,
bool $spacerifnone = false, bool $withdescription = false, bool $fulltotal = false,
?moodle_url $sortlink = null) {
- $header = '';
-
- if ($icon) {
- $header .= $this->get_element_icon($element, $spacerifnone);
- }
-
- $title = $element['object']->get_name($fulltotal);
- $titleunescaped = $element['object']->get_name($fulltotal, false);
- $header .= $title;
-
- if ($element['type'] != 'item' and $element['type'] != 'categoryitem' and
- $element['type'] != 'courseitem') {
- return $header;
- }
-
- if ($sortlink) {
- $url = $sortlink;
- $header = html_writer::link($url, $header, [
- 'title' => $titleunescaped,
- 'class' => 'gradeitemheader '
- ]);
- } else {
- if ($withlink && $url = $this->get_activity_link($element)) {
- $a = new stdClass();
- $a->name = get_string('modulename', $element['object']->itemmodule);
- $a->title = $titleunescaped;
- $title = get_string('linktoactivity', 'grades', $a);
- $header = html_writer::link($url, $header, [
- 'title' => $title,
- 'class' => 'gradeitemheader ',
- ]);
- } else {
- $header = html_writer::span($header, 'gradeitemheader ', [
- 'title' => $titleunescaped,
- 'tabindex' => '0'
- ]);
- }
- }
-
- if ($withdescription) {
- $desc = $element['object']->get_description();
- if (!empty($desc)) {
- $header .= '
' . s($desc) . '
';
- }
- }
-
- return $header;
+ debugging('The function get_element_header() is deprecated, please use grade_helper::get_element_header() instead.',
+ DEBUG_DEVELOPER);
+ return grade_helper::get_element_header($element, $withlink, $icon, $spacerifnone, $withdescription,
+ $fulltotal, $sortlink);
}
+ /**
+ * @deprecated since Moodle 4.4 - please use {@see grade_helper::get_activity_link()}
+ * @todo MDL-79907 This will be deleted in Moodle 4.8.
+ */
private function get_activity_link($element) {
- global $CFG;
- /** @var array static cache of the grade.php file existence flags */
- static $hasgradephp = array();
-
- $itemtype = $element['object']->itemtype;
- $itemmodule = $element['object']->itemmodule;
- $iteminstance = $element['object']->iteminstance;
- $itemnumber = $element['object']->itemnumber;
-
- // Links only for module items that have valid instance, module and are
- // called from grade_tree with valid modinfo
- if ($itemtype != 'mod' || !$iteminstance || !$itemmodule || !$this->modinfo) {
- return null;
- }
-
- // Get $cm efficiently and with visibility information using modinfo
- $instances = $this->modinfo->get_instances();
- if (empty($instances[$itemmodule][$iteminstance])) {
- return null;
- }
- $cm = $instances[$itemmodule][$iteminstance];
-
- // Do not add link if activity is not visible to the current user
- if (!$cm->uservisible) {
- return null;
- }
-
- if (!array_key_exists($itemmodule, $hasgradephp)) {
- if (file_exists($CFG->dirroot . '/mod/' . $itemmodule . '/grade.php')) {
- $hasgradephp[$itemmodule] = true;
- } else {
- $hasgradephp[$itemmodule] = false;
- }
- }
-
- // If module has grade.php, link to that, otherwise view.php
- if ($hasgradephp[$itemmodule]) {
- $args = array('id' => $cm->id, 'itemnumber' => $itemnumber);
- if (isset($element['userid'])) {
- $args['userid'] = $element['userid'];
- }
- return new moodle_url('/mod/' . $itemmodule . '/grade.php', $args);
- } else {
- return new moodle_url('/mod/' . $itemmodule . '/view.php', array('id' => $cm->id));
- }
+ debugging('The function get_activity_link() is deprecated, please use grade_helper::get_activity_link() instead.',
+ DEBUG_DEVELOPER);
+ return grade_helper::get_activity_link($element);
}
/**
@@ -4060,4 +3862,273 @@ abstract class grade_helper {
self::$pluginstrings = null;
self::$aggregationstrings = null;
}
+
+ /**
+ * Returns icon of element
+ *
+ * @param array $element An array representing an element in the grade_tree
+ * @param bool $spacerifnone return spacer if no icon found
+ *
+ * @return string icon or spacer
+ */
+ public static function get_element_icon(array $element, bool $spacerifnone = false): string {
+ global $CFG, $OUTPUT;
+ require_once($CFG->libdir . '/filelib.php');
+
+ $outputstr = '';
+
+ // Object holding pix_icon information before instantiation.
+ $icon = new stdClass();
+ $icon->attributes = ['class' => 'icon itemicon'];
+ $icon->component = 'moodle';
+
+ $none = true;
+ switch ($element['type']) {
+ case 'item':
+ case 'courseitem':
+ case 'categoryitem':
+ $none = false;
+
+ $iscourse = $element['object']->is_course_item();
+ $iscategory = $element['object']->is_category_item();
+ $isscale = $element['object']->gradetype == GRADE_TYPE_SCALE;
+ $isvalue = $element['object']->gradetype == GRADE_TYPE_VALUE;
+ $isoutcome = !empty($element['object']->outcomeid);
+
+ if ($element['object']->is_calculated()) {
+ $icon->pix = 'i/calc';
+ $icon->title = s(get_string('calculatedgrade', 'grades'));
+
+ } else if (($iscourse || $iscategory) && ($isscale || $isvalue)) {
+ if ($category = $element['object']->get_item_category()) {
+ $aggrstrings = self::get_aggregation_strings();
+ $stragg = $aggrstrings[$category->aggregation];
+
+ $icon->pix = 'i/calc';
+ $icon->title = s($stragg);
+
+ switch ($category->aggregation) {
+ case GRADE_AGGREGATE_MEAN:
+ case GRADE_AGGREGATE_MEDIAN:
+ case GRADE_AGGREGATE_WEIGHTED_MEAN:
+ case GRADE_AGGREGATE_WEIGHTED_MEAN2:
+ case GRADE_AGGREGATE_EXTRACREDIT_MEAN:
+ $icon->pix = 'i/agg_mean';
+ break;
+ case GRADE_AGGREGATE_SUM:
+ $icon->pix = 'i/agg_sum';
+ break;
+ }
+ }
+
+ } else if ($element['object']->itemtype == 'mod') {
+ // Prevent outcomes displaying the same icon as the activity they are attached to.
+ if ($isoutcome) {
+ $icon->pix = 'i/outcomes';
+ $icon->title = s(get_string('outcome', 'grades'));
+ } else {
+ $modinfo = get_fast_modinfo($element['object']->courseid);
+ $module = $element['object']->itemmodule;
+ $instanceid = $element['object']->iteminstance;
+ if (isset($modinfo->instances[$module][$instanceid])) {
+ $icon->url = $modinfo->instances[$module][$instanceid]->get_icon_url();
+ } else {
+ $icon->pix = 'monologo';
+ $icon->component = $element['object']->itemmodule;
+ }
+ $icon->title = s(get_string('modulename', $element['object']->itemmodule));
+ }
+ } else if ($element['object']->itemtype == 'manual') {
+ if ($element['object']->is_outcome_item()) {
+ $icon->pix = 'i/outcomes';
+ $icon->title = s(get_string('outcome', 'grades'));
+ } else {
+ $icon->pix = 'i/manual_item';
+ $icon->title = s(get_string('manualitem', 'grades'));
+ }
+ }
+ break;
+
+ case 'category':
+ $none = false;
+ $icon->pix = 'i/folder';
+ $icon->title = s(get_string('category', 'grades'));
+ break;
+ }
+
+ if ($none) {
+ if ($spacerifnone) {
+ $outputstr = $OUTPUT->spacer() . ' ';
+ }
+ } else if (isset($icon->url)) {
+ $outputstr = html_writer::img($icon->url, $icon->title, $icon->attributes);
+ } else {
+ $outputstr = $OUTPUT->pix_icon($icon->pix, $icon->title, $icon->component, $icon->attributes);
+ }
+
+ return $outputstr;
+ }
+
+ /**
+ * Returns the string that describes the type of the element.
+ *
+ * @param array $element An array representing an element in the grade_tree
+ * @return string The string that describes the type of the grade element
+ */
+ public static function get_element_type_string(array $element): string {
+ // If the element is a grade category.
+ if ($element['type'] == 'category') {
+ return get_string('category', 'grades');
+ }
+ // If the element is a grade item.
+ if (in_array($element['type'], ['item', 'courseitem', 'categoryitem'])) {
+ // If calculated grade item.
+ if ($element['object']->is_calculated()) {
+ return get_string('calculatedgrade', 'grades');
+ }
+ // If aggregated type grade item.
+ if ($element['object']->is_aggregate_item()) {
+ return get_string('aggregation', 'core_grades');
+ }
+ // If external grade item (module, plugin, etc.).
+ if ($element['object']->is_external_item()) {
+ // If outcome grade item.
+ if ($element['object']->is_outcome_item()) {
+ return get_string('outcome', 'grades');
+ }
+ return get_string('modulename', $element['object']->itemmodule);
+ }
+ // If manual grade item.
+ if ($element['object']->itemtype == 'manual') {
+ // If outcome grade item.
+ if ($element['object']->is_outcome_item()) {
+ return get_string('outcome', 'grades');
+ }
+ return get_string('manualitem', 'grades');
+ }
+ }
+
+ return '';
+ }
+
+ /**
+ * Returns name of element optionally with icon and link
+ *
+ * @param array $element An array representing an element in the grade_tree
+ * @param bool $withlink Whether or not this header has a link
+ * @param bool $icon Whether or not to display an icon with this header
+ * @param bool $spacerifnone return spacer if no icon found
+ * @param bool $withdescription Show description if defined by this item.
+ * @param bool $fulltotal If the item is a category total, returns $categoryname."total"
+ * instead of "Category total" or "Course total"
+ * @param moodle_url|null $sortlink Link to sort column.
+ *
+ * @return string header
+ */
+ public static function get_element_header(array $element, bool $withlink = false, bool $icon = true,
+ bool $spacerifnone = false, bool $withdescription = false, bool $fulltotal = false,
+ ?moodle_url $sortlink = null): string {
+ $header = '';
+
+ if ($icon) {
+ $header .= self::get_element_icon($element, $spacerifnone);
+ }
+
+ $title = $element['object']->get_name($fulltotal);
+ $titleunescaped = $element['object']->get_name($fulltotal, false);
+ $header .= $title;
+
+ if ($element['type'] != 'item' && $element['type'] != 'categoryitem' && $element['type'] != 'courseitem') {
+ return $header;
+ }
+
+ if ($sortlink) {
+ $url = $sortlink;
+ $header = html_writer::link($url, $header, [
+ 'title' => $titleunescaped,
+ 'class' => 'gradeitemheader ',
+ ]);
+ } else {
+ if ($withlink && $url = self::get_activity_link($element)) {
+ $a = new stdClass();
+ $a->name = get_string('modulename', $element['object']->itemmodule);
+ $a->title = $titleunescaped;
+ $title = get_string('linktoactivity', 'grades', $a);
+ $header = html_writer::link($url, $header, [
+ 'title' => $title,
+ 'class' => 'gradeitemheader ',
+ ]);
+ } else {
+ $header = html_writer::span($header, 'gradeitemheader ', [
+ 'title' => $titleunescaped,
+ 'tabindex' => '0',
+ ]);
+ }
+ }
+
+ if ($withdescription) {
+ $desc = $element['object']->get_description();
+ if (!empty($desc)) {
+ $header .= '' . s($desc) . '
';
+ }
+ }
+
+ return $header;
+ }
+
+ /**
+ * Returns a link to grading page if grade.php exists in the module or link to activity
+ *
+ * @param array $element An array representing an element in the grade_tree
+ *
+ * @return string|null link to grading page|activity or null if not found
+ */
+ public static function get_activity_link(array $element): ?string {
+ global $CFG;
+ /** @var array static cache of the grade.php file existence flags */
+ static $hasgradephp = [];
+
+ $itemtype = $element['object']->itemtype;
+ $itemmodule = $element['object']->itemmodule;
+ $iteminstance = $element['object']->iteminstance;
+ $itemnumber = $element['object']->itemnumber;
+
+ // Links only for module items that have valid instance, module and are
+ // called from grade_tree with valid modinfo.
+ $modinfo = get_fast_modinfo($element['object']->courseid);
+ if ($itemtype != 'mod' || !$iteminstance || !$itemmodule || !$modinfo) {
+ return null;
+ }
+
+ // Get $cm efficiently and with visibility information using modinfo.
+ $instances = $modinfo->get_instances();
+ if (empty($instances[$itemmodule][$iteminstance])) {
+ return null;
+ }
+ $cm = $instances[$itemmodule][$iteminstance];
+
+ // Do not add link if activity is not visible to the current user.
+ if (!$cm->uservisible) {
+ return null;
+ }
+
+ if (!array_key_exists($itemmodule, $hasgradephp)) {
+ if (file_exists($CFG->dirroot . '/mod/' . $itemmodule . '/grade.php')) {
+ $hasgradephp[$itemmodule] = true;
+ } else {
+ $hasgradephp[$itemmodule] = false;
+ }
+ }
+
+ // If module has grade.php, link to that, otherwise view.php.
+ if ($hasgradephp[$itemmodule]) {
+ $args = ['id' => $cm->id, 'itemnumber' => $itemnumber];
+ if (isset($element['userid'])) {
+ $args['userid'] = $element['userid'];
+ }
+ return new moodle_url('/mod/' . $itemmodule . '/grade.php', $args);
+ } else {
+ return new moodle_url('/mod/' . $itemmodule . '/view.php', ['id' => $cm->id]);
+ }
+ }
}
diff --git a/grade/report/grader/lib.php b/grade/report/grader/lib.php
index 3902dd4e8c2..b4e2e7178d2 100644
--- a/grade/report/grader/lib.php
+++ b/grade/report/grader/lib.php
@@ -885,7 +885,7 @@ class grade_report_grader extends grade_report {
if (!$element['object']->is_aggregate_item()) {
$collapsedicon = $OUTPUT->render_from_template('gradereport_grader/collapse/icon', $collapsecontext);
}
- $headerlink = $this->gtree->get_element_header($element, true,
+ $headerlink = grade_helper::get_element_header($element, true,
true, false, false, true, $sortlink);
$itemcell = new html_table_cell();
diff --git a/grade/report/singleview/classes/local/screen/user.php b/grade/report/singleview/classes/local/screen/user.php
index dcc886668b6..73579a094a0 100644
--- a/grade/report/singleview/classes/local/screen/user.php
+++ b/grade/report/singleview/classes/local/screen/user.php
@@ -190,13 +190,13 @@ class user extends tablelike implements selectable_items {
$gradetreeitem['object'] = $item;
$gradetreeitem['userid'] = $this->item->id;
- $itemname = $this->structure->get_element_header($gradetreeitem, true, false, false, false, true);
+ $itemname = \grade_helper::get_element_header($gradetreeitem, true, false, false, false, true);
$grade->label = $item->get_name();
$formatteddefinition = $this->format_definition($grade);
$itemicon = html_writer::div($this->format_icon($item), 'mr-1');
- $itemtype = \html_writer::span($this->structure->get_element_type_string($gradetreeitem),
+ $itemtype = \html_writer::span(\grade_helper::get_element_type_string($gradetreeitem),
'd-block text-uppercase small dimmed_text');
// If a behat test site is running avoid outputting the information about the type of the grade item.
// This additional information currently causes issues in behat particularly with the existing xpath used to
@@ -251,7 +251,7 @@ class user extends tablelike implements selectable_items {
*/
private function format_icon($item): string {
$element = ['type' => 'item', 'object' => $item];
- return $this->structure->get_element_icon($element);
+ return \grade_helper::get_element_icon($element);
}
/**
diff --git a/grade/report/summary/classes/local/entities/grade_items.php b/grade/report/summary/classes/local/entities/grade_items.php
index 8cfbeb7d748..f2a10ec9171 100644
--- a/grade/report/summary/classes/local/entities/grade_items.php
+++ b/grade/report/summary/classes/local/entities/grade_items.php
@@ -129,55 +129,20 @@ class grade_items extends base {
->set_type(column::TYPE_TEXT)
->add_fields($selectsql)
->add_callback(static function($value, $row): string {
- global $PAGE, $CFG;
+ $gradeitem = grade_item::fetch(['id' => $row->id, 'courseid' => $row->courseid]);
+ $element = ['type' => 'item', 'object' => $gradeitem, 'modinfo' => get_fast_modinfo($row->courseid)];
+ $fullname = \grade_helper::get_element_header($element, true, false, true, true, true);
- $renderer = new \core_renderer($PAGE, RENDERER_TARGET_GENERAL);
- if ($row->itemmodule) {
- $modinfo = get_fast_modinfo($row->courseid);
- $instances = $modinfo->get_instances();
- $cm = $instances[$row->itemmodule][$row->iteminstance];
-
- if (file_exists($CFG->dirroot . '/mod/' . $row->itemmodule . '/grade.php')) {
- $args = ['id' => $cm->id, 'itemnumber' => $row->itemnumber];
- $url = new \moodle_url('/mod/' . $row->itemmodule . '/grade.php', $args);
- } else {
- $url = new \moodle_url('/mod/' . $row->itemmodule . '/view.php', ['id' => $cm->id]);
- }
-
- $imagedata = $renderer->pix_icon('monologo', '', $row->itemmodule, ['class' => 'activityicon']);
- $purposeclass = plugin_supports('mod', $row->itemmodule, FEATURE_MOD_PURPOSE);
- $purposeclass .= ' activityiconcontainer';
- $purposeclass .= ' modicon_' . $row->itemmodule;
- $imagedata = \html_writer::tag('div', $imagedata, ['class' => $purposeclass]);
-
- $dimmed = '';
- if ($row->hidden) {
- $dimmed = ' dimmed_text';
- }
- $html = \html_writer::start_div('page-context-header' . $dimmed);
- // Image data.
- $html .= \html_writer::div($imagedata, 'page-header-image mr-2');
- $prefix = \html_writer::div(get_string('pluginname', "mod_{$row->itemmodule}"),
- 'text-muted text-uppercase small line-height-3');
- $name = $prefix . \html_writer::link($url, format_string($cm->name, true));
- $html .= \html_writer::tag('div', $name, ['class' => 'page-header-headings']);
- } else {
- // Manual grade item.
- $gradeitem = grade_item::fetch(['id' => $row->id, 'courseid' => $row->courseid]);
- if ($row->calculation) {
- $imagedata = $renderer->pix_icon('i/agg_sum', '');
- } else {
- $imagedata = $renderer->pix_icon('i/manual_item', '');
- }
- $imagedata = \html_writer::tag('div', $imagedata);
-
- $html = \html_writer::start_div('page-context-header');
- // Image data.
- $html .= \html_writer::div($imagedata, 'page-header-image mr-2');
- $html .= \html_writer::tag('div', $gradeitem->get_name(), ['class' => 'page-header-headings']);
+ $icon = \grade_helper::get_element_icon($element);
+ $elementtype = \grade_helper::get_element_type_string($element);
+ $itemtype = \html_writer::span($elementtype, 'd-block text-uppercase small dimmed_text',
+ ['title' => $elementtype]);
+ $content = \html_writer::div($itemtype . $fullname);
+ $dimmed = '';
+ if ($row->hidden) {
+ $dimmed = ' dimmed_text';
}
- return $html;
-
+ return \html_writer::div($icon . $content, "item d-flex align-items-center" . $dimmed);
});
$report = [
diff --git a/grade/report/user/classes/report/user.php b/grade/report/user/classes/report/user.php
index a0227c7b41b..31964a303fe 100644
--- a/grade/report/user/classes/report/user.php
+++ b/grade/report/user/classes/report/user.php
@@ -446,7 +446,7 @@ class user extends grade_report {
$gradeobject = $element['object'];
$eid = $gradeobject->id;
$element['userid'] = $userid = $this->user->id;
- $fullname = $this->gtree->get_element_header($element, true, false, true, false, true);
+ $fullname = grade_helper::get_element_header($element, true, false, true, false, true);
$data = [];
$gradeitemdata = [];
$hidden = '';
@@ -541,8 +541,8 @@ class user extends grade_report {
$class .= ($type == 'categoryitem' || $type == 'courseitem') ? " d$depth baggb" : " item b1b";
}
- $itemicon = \html_writer::div($this->gtree->get_element_icon($element), 'mr-1');
- $elementtype = $this->gtree->get_element_type_string($element);
+ $itemicon = \html_writer::div(grade_helper::get_element_icon($element), 'mr-1');
+ $elementtype = grade_helper::get_element_type_string($element);
$itemtype = \html_writer::span($elementtype, 'd-block text-uppercase small dimmed_text',
['title' => $elementtype]);
diff --git a/grade/upgrade.txt b/grade/upgrade.txt
index a632d4de052..f26cb9b2721 100644
--- a/grade/upgrade.txt
+++ b/grade/upgrade.txt
@@ -1,6 +1,12 @@
This file describes API changes in /grade/* ;
Information provided here is intended especially for developers.
+=== 4.4 ===
+* The grade_structure::get_element_icon() function has been deprecated. Please use grade_helper::get_element_icon() instead.
+* The grade_structure::get_element_type_string() function has been deprecated. Please use grade_helper::get_element_type_string() instead.
+* The grade_structure::get_element_header() function has been deprecated. Please use grade_helper::get_element_header() instead.
+* The grade_structure::get_activity_link() functions has been deprecated. Please use grade_helper::get_activity_link() instead.
+
=== 4.3 ===
* The $showtitle parameter in the print_grade_page_head function located inside grade/lib.php has been deprecated and is not used anymore.
* The deprecated `core_grades_create_gradecategory` external method has been removed, in addition to the accompanying