summaryrefslogtreecommitdiffstats
path: root/library/Director/Dashboard/BranchesDashboard.php
blob: faeb8bf58f1725bcedf5c2e942fb2755630b2d34 (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
<?php

namespace Icinga\Module\Director\Dashboard;

use gipfl\Web\Widget\Hint;
use Icinga\Application\Hook;
use Icinga\Authentication\Auth;
use Icinga\Module\Director\Db\Branch\Branch;
use Icinga\Module\Director\Db\Branch\BranchStore;
use Icinga\Module\Director\Db\Branch\PreferredBranchSupport;
use Icinga\Module\Director\Hook\BranchSupportHook;
use ipl\Html\Html;

class BranchesDashboard extends Dashboard
{
    public function getTitle()
    {
        $branch = Branch::detect(new BranchStore($this->getDb()));
        if ($branch->isBranch()) {
            $this->prepend(Hint::info(Html::sprintf(
                $this->translate('You\'re currently working in a Configuration Branch: %s'),
                Branch::requireHook()->linkToBranch($branch, $this->getAuth(), $branch->getName())
            )));
        } else {
            if (($implementation = Branch::optionalHook()) && $implementation instanceof PreferredBranchSupport) {
                if ($implementation->hasPreferredBranch(Auth::getInstance())) {
                    $this->prepend(Hint::warning(
                        $this->translate('You\'re currently working in the main Configuration Branch')
                    ));
                }
            }
        }

        return $this->translate('Prepare your configuration in a safe Environment');
    }

    public function loadDashlets()
    {
        /** @var BranchSupportHook $hook */
        if ($hook = Hook::first('director/BranchSupport')) {
            $this->dashlets = $hook->loadDashlets($this->getDb());
        } else {
            $this->dashlets = [];
        }
    }
}