/**
 * 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;
}
예제 #2
0
/**
 * 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;
}