/** * Simplified version of the print_grade_tree() recursive function found in grade/edit/tree/index.php * Only prints a tree with a basic icon for each element, and an edit field for * items without an idnumber. * @param object $gtree * @param object $element * @param int $current_itemid The itemid of this page: should be excluded from the tree * @param array $errors An array of idnumbers => error * @return string */ function get_grade_tree(&$gtree, $element, $current_itemid = null, $errors = null) { global $CFG; $object = $element['object']; $eid = $element['eid']; $type = $element['type']; $grade_item = $object->get_grade_item(); $name = $object->get_name(); $return_string = ''; //TODO: improve outcome visualisation if ($type == 'item' and !empty($object->outcomeid)) { $name = $name . ' (' . get_string('outcome', 'grades') . ')'; } $idnumber = $object->get_idnumber(); // Don't show idnumber or input field for current item if given to function. Highlight the item instead. if ($type != 'category') { if (is_null($current_itemid) or $grade_item->id != $current_itemid) { if ($idnumber) { $name .= ": [[{$idnumber}]]"; } else { $closingdiv = ''; if (!empty($errors[$grade_item->id])) { $name .= '<div class="error"><span class="error">' . $errors[$grade_item->id] . '</span><br />' . "\n"; $closingdiv = "</div>\n"; } $name .= '<input class="idnumber" id="id_idnumber_' . $grade_item->id . '" type="text" name="idnumbers[' . $grade_item->id . ']" />' . "\n"; $name .= $closingdiv; } } else { $name = "<strong>{$name}</strong>"; } } $icon = $gtree->get_element_icon($element, true); $last = ''; $catcourseitem = ($element['type'] == 'courseitem' or $element['type'] == 'categoryitem'); if ($type != 'category') { $return_string .= '<li class="' . $type . '">' . $icon . $name . '</li>' . "\n"; } else { $return_string .= '<li class="' . $type . '">' . $icon . $name . "\n"; $return_string .= '<ul class="catlevel' . $element['depth'] . '">' . "\n"; $last = null; foreach ($element['children'] as $child_el) { $return_string .= get_grade_tree($gtree, $child_el, $current_itemid, $errors); } if ($last) { $return_string .= get_grade_tree($gtree, $last, $current_itemid, $errors); } $return_string .= '</ul></li>' . "\n"; } return $return_string; }
/** * Simplified version of the print_grade_tree() recursive function found in grade/edit/tree/index.php * Only prints a tree with a basic icon for each element, and an edit field for * items without an idnumber. * @param object $gtree * @param object $element * @param int $current_itemid The itemid of this page: should be excluded from the tree * @param array $errors An array of idnumbers => error * @return string */ function get_grade_tree(&$gtree, $element, $current_itemid = null, $errors = null) { global $CFG; $object = $element['object']; $eid = $element['eid']; $type = $element['type']; $grade_item = $object->get_grade_item(); $name = $object->get_name(); $return_string = ''; //TODO: improve outcome visualisation if ($type == 'item' and !empty($object->outcomeid)) { $name = $name . ' (' . get_string('outcome', 'grades') . ')'; } $idnumber = $object->get_idnumber(); // Don't show idnumber or input field for current item if given to function. Highlight the item instead. if ($type != 'category') { if (is_null($current_itemid) or $grade_item->id != $current_itemid) { if ($idnumber) { $name .= ": [[{$idnumber}]]"; } else { $closingdiv = ''; if (!empty($errors[$grade_item->id])) { $name .= '<div class="error"><span class="error">' . $errors[$grade_item->id] . '</span><br />' . "\n"; $closingdiv = "</div>\n"; } $name .= '<input class="idnumber" id="id_idnumber_' . $grade_item->id . '" type="text" name="idnumbers[' . $grade_item->id . ']" />' . "\n"; $name .= $closingdiv; } } else { $name = "<strong>{$name}</strong>"; } } $icon = '<img src="' . $CFG->wwwroot . '/pix/spacer.gif" class="icon" alt=""/>' . "\n"; $last = ''; $catcourseitem = false; switch ($type) { case 'item': if ($object->itemtype == 'mod') { $icon = '<img src="' . $CFG->modpixpath . '/' . $object->itemmodule . '/icon.gif" class="icon" alt="' . get_string('modulename', $object->itemmodule) . '"/>' . "\n"; } else { if ($object->itemtype == 'manual') { //TODO: add manual grading icon if (empty($object->outcomeid)) { $icon = '<img src="' . $CFG->pixpath . '/t/edit.gif" class="icon" alt="' . get_string('manualgrade', 'grades') . '"/>' . "\n"; // TODO: localize } else { $icon = '<img src="' . $CFG->pixpath . '/i/outcomes.gif" class="icon" alt="' . get_string('outcome', 'grades') . '"/>' . "\n"; } } } break; case 'courseitem': case 'categoryitem': $icon = '<img src="' . $CFG->pixpath . '/i/category_grade.gif" class="icon" alt="' . get_string('categorygrade') . '"/>' . "\n"; // TODO: localize $catcourseitem = true; break; case 'category': $icon = '<img src="' . $CFG->pixpath . '/f/folder.gif" class="icon" alt="' . get_string('category') . '"/>' . "\n"; break; } if ($type != 'category') { $return_string .= '<li class="' . $type . '">' . $icon . $name . '</li>' . "\n"; } else { $return_string .= '<li class="' . $type . '">' . $icon . $name . "\n"; $return_string .= '<ul class="catlevel' . $element['depth'] . '">' . "\n"; $last = null; foreach ($element['children'] as $child_el) { $return_string .= get_grade_tree($gtree, $child_el, $current_itemid, $errors); } if ($last) { $return_string .= get_grade_tree($gtree, $last, $current_itemid, $errors); } $return_string .= '</ul></li>' . "\n"; } return $return_string; }