aboutsummaryrefslogtreecommitdiff
path: root/app/controllers/course/gradebook/template_helpers.php
blob: 78a024e7e2662e6bae14690f3efcf96293011098 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?php

use Grading\Definition;

trait GradebookTemplateHelpers
{
    public function formatAsPercent($value)
    {
        return (float) (round($value * 1000) / 10);
    }

    public function formatCategory($category)
    {
        return htmlReady(Definition::CUSTOM_DEFINITIONS_CATEGORY === $category ? _('Manuell eingetragen') : $category);
    }

    public function getNormalizedWeight(Definition $definition)
    {
        return $this->sumOfWeights ? $definition->weight / $this->sumOfWeights : 0;
    }

    protected function getSumOfWeights($gradingDefinitions)
    {
        $sumOfWeights = 0;
        foreach ($gradingDefinitions as $def) {
            $sumOfWeights += $def->weight;
        }

        return $sumOfWeights;
    }

    protected function getGroupedDefinitions($gradingDefinitions)
    {
        $groupedDefinitions = [];
        foreach ($gradingDefinitions as $def) {
            if (!isset($groupedDefinitions[$def->category])) {
                $groupedDefinitions[$def->category] = [];
            }
            $groupedDefinitions[$def->category][] = $def;
        }

        return $groupedDefinitions;
    }

    protected function setupLecturerSidebar()
    {
        $export = new \ExportWidget();
        $export->addLink(
            _('Leistungen als CSV exportieren'),
            $this->url_for('course/gradebook/lecturers/export'),
            Icon::create('export')
        );
        \Sidebar::Get()->addWidget($export);
    }

    protected function setupStudentsSidebar()
    {
        $export = new \ExportWidget();
        $export->addLink(
            _('Leistungen exportieren'),
            $this->url_for('course/gradebook/students/export'),
            Icon::create('export')
        );
        \Sidebar::Get()->addWidget($export);
    }

    protected function viewerIsStudent()
    {
        return !$this->viewerHasPerm('tutor');
    }

    protected function viewerIsLecturer()
    {
        return $this->viewerHasPerm('tutor');
    }

    /**
     * @SuppressWarnings(PHPMD.Superglobals)
     */
    protected function viewerHasPerm($perm)
    {
        return $GLOBALS['perm']->have_studip_perm($perm, \Context::getId());
    }

    protected function setDefaultPageTitle()
    {
        \PageLayout::setTitle(Context::getHeaderLine().' - Gradebook');
        \PageLayout::setHelpKeyword("Basis.Gradebook");
    }

    protected function setupIliasSidebar($num_definitions = 0)
    {
        $ilias = new \LinksWidget();
        $ilias->setTitle(_('ILIAS'));
        $ilias->addLink(
            _('Test als Leistung hinzufügen'),
            $this->url_for('course/gradebook/lecturers/new_ilias_definition'),
            Icon::create('add')
        )->asDialog();
        if ($num_definitions) {
            $ilias->addLink(
                _('Ergebnisse aus ILIAS importieren'),
                $this->url_for('course/gradebook/lecturers/import_ilias_results'),
                Icon::create('refresh')
            );
        }
        \Sidebar::Get()->addWidget($ilias);
    }
}