aboutsummaryrefslogtreecommitdiff
path: root/lib/classes/sidebar/CourseManagementSelectWidget.php
blob: 39735027cbb6ca9adb9211ea6c27a8bb9efe1be2 (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
<?php

class CourseManagementSelectWidget extends SelectWidget
{
    public $course = null;
    public $order_by_field;

    public function __construct()
    {
        parent::__construct(_('Veranstaltungen'), '?#admin_top_links', 'cid');

        $this->course = Course::findCurrent();
        $this->order_by_field = UserConfig::get($GLOBALS['user']->id)->COURSE_MANAGEMENT_SELECTOR_ORDER_BY ?? 'name';
    }

    public function render($variables = [])
    {
        $extra = sprintf(
            '<a href="%s" title="%s" data-dialog="size=auto">%s</a>',
            URLHelper::getURL('dispatch.php/course/management/order_settings', ['cid' => $this->course->id, 'from' => Request::url()]),
            _('Sortiereinstellungen'),
            Icon::create('settings')
        );
        $this->setExtra($extra);
        $this->class = 'nested-select';
        $this->setDropdownAutoWidth(true);
        $seminars = AdminCourseFilter::get()->getCoursesForAdminWidget($this->order_by_field);
        foreach ($seminars as $seminar) {
            if ($this->order_by_field === 'number') {
                $seminar_name = trim($seminar['VeranstaltungsNummer'] . ' ' . $seminar['Name']);
            } else {
                $seminar_name = $seminar['Name'];

                if ($seminar['VeranstaltungsNummer']) {
                    $seminar_name .= sprintf(' (%s)', trim($seminar['VeranstaltungsNummer']));
                }
            }
            $this->addElement(new SelectElement(
                $seminar['Seminar_id'],
                $seminar_name,
                $seminar['Seminar_id'] === $this->course->id,
                trim($seminar['VeranstaltungsNummer'] . ' ' . $seminar['Name'])
            ));
        }
        return parent::render($variables);
    }
}