mirror of
https://github.com/Icinga/icingaweb2-module-businessprocess.git
synced 2025-12-24 08:39:34 -05:00
161 lines
5.4 KiB
PHP
161 lines
5.4 KiB
PHP
<?php
|
|
|
|
namespace Icinga\Module\Businessprocess\Web\Component;
|
|
|
|
use Icinga\Authentication\Auth;
|
|
use Icinga\Module\Businessprocess\BpConfig;
|
|
use Icinga\Module\Businessprocess\Renderer\Renderer;
|
|
use Icinga\Module\Businessprocess\Renderer\TreeRenderer;
|
|
use Icinga\Web\Url;
|
|
use ipl\Html\Html;
|
|
use ipl\Web\Widget\Icon;
|
|
|
|
class RenderedProcessActionBar extends ActionBar
|
|
{
|
|
public function __construct(BpConfig $config, Renderer $renderer, Url $url)
|
|
{
|
|
$meta = $config->getMetadata();
|
|
|
|
if ($renderer instanceof TreeRenderer) {
|
|
$link = Html::tag(
|
|
'a',
|
|
[
|
|
'href' => $url->with('mode', 'tile'),
|
|
'title' => mt('businessprocess', 'Switch to Tile view')
|
|
]
|
|
);
|
|
} else {
|
|
$link = Html::tag(
|
|
'a',
|
|
[
|
|
'href' => $url->with('mode', 'tree'),
|
|
'title' => mt('businessprocess', 'Switch to Tree view')
|
|
]
|
|
);
|
|
}
|
|
|
|
$link->add([
|
|
new Icon('grip', ['class' => $renderer instanceof TreeRenderer ? null : 'active']),
|
|
new Icon('sitemap', ['class' => $renderer instanceof TreeRenderer ? 'active' : null])
|
|
]);
|
|
|
|
$this->add(
|
|
Html::tag('div', ['class' => 'view-toggle'])
|
|
->add(Html::tag('span', null, mt('businessprocess', 'View')))
|
|
->add($link)
|
|
);
|
|
|
|
$this->add(Html::tag(
|
|
'a',
|
|
[
|
|
'data-base-target' => '_main',
|
|
'href' => $url->with('showFullscreen', true),
|
|
'title' => mt('businessprocess', 'Switch to fullscreen mode'),
|
|
],
|
|
[
|
|
new Icon('maximize'),
|
|
mt('businessprocess', 'Fullscreen')
|
|
]
|
|
));
|
|
|
|
$hasChanges = $config->hasSimulations() || $config->hasBeenChanged();
|
|
|
|
if ($renderer->isLocked()) {
|
|
if (! $renderer->wantsRootNodes() && $renderer->rendersImportedNode()) {
|
|
$span = Html::tag('span', [
|
|
'class' => 'disabled',
|
|
'title' => mt(
|
|
'businessprocess',
|
|
'Imported processes can only be changed in their original configuration'
|
|
)
|
|
]);
|
|
$span->add([new Icon('lock'), mt('businessprocess', 'Editing Locked')]);
|
|
$this->add($span);
|
|
} else {
|
|
$this->add(Html::tag(
|
|
'a',
|
|
[
|
|
'href' => $url->with('unlocked', true),
|
|
'title' => mt('businessprocess', 'Click to unlock editing for this process'),
|
|
],
|
|
[
|
|
new Icon('lock'),
|
|
mt('businessprocess', 'Unlock Editing')
|
|
]
|
|
));
|
|
}
|
|
} elseif (! $hasChanges) {
|
|
$this->add(Html::tag(
|
|
'a',
|
|
[
|
|
'href' => $url->without('unlocked')->without('action'),
|
|
'title' => mt('businessprocess', 'Click to lock editing for this process'),
|
|
],
|
|
[
|
|
new Icon('lock-open'),
|
|
mt('businessprocess', 'Lock Editing')
|
|
]
|
|
));
|
|
}
|
|
|
|
if (($hasChanges || ! $renderer->isLocked()) && $meta->canModify()) {
|
|
if ($renderer->wantsRootNodes()) {
|
|
$this->add(Html::tag(
|
|
'a',
|
|
[
|
|
'data-base-target' => '_next',
|
|
'href' => Url::fromPath('businessprocess/process/config', $this->currentProcessParams($url)),
|
|
'title' => mt('businessprocess', 'Modify this process'),
|
|
],
|
|
[
|
|
new Icon('wrench'),
|
|
mt('businessprocess', 'Config')
|
|
]
|
|
));
|
|
} else {
|
|
$this->add(Html::tag(
|
|
'a',
|
|
[
|
|
'href' => $url->with([
|
|
'action' => 'edit',
|
|
'editnode' => $url->getParam('node')
|
|
])->getAbsoluteUrl(),
|
|
'title' => mt('businessprocess', 'Modify this process'),
|
|
],
|
|
[
|
|
new Icon('wrench'),
|
|
mt('businessprocess', 'Config')
|
|
]
|
|
));
|
|
}
|
|
}
|
|
|
|
if (($hasChanges || (! $renderer->isLocked())) && $meta->canModify()) {
|
|
$this->add(Html::tag(
|
|
'a',
|
|
[
|
|
'href' => $url->with('action', 'add'),
|
|
'title' => mt('businessprocess', 'Add a new business process node'),
|
|
'class' => 'button-link'
|
|
],
|
|
[
|
|
new Icon('plus'),
|
|
mt('businessprocess', 'Add Node')
|
|
]
|
|
));
|
|
}
|
|
}
|
|
|
|
protected function currentProcessParams(Url $url)
|
|
{
|
|
$urlParams = $url->getParams();
|
|
$params = array();
|
|
foreach (array('config', 'node') as $name) {
|
|
if ($value = $urlParams->get($name)) {
|
|
$params[$name] = $value;
|
|
}
|
|
}
|
|
|
|
return $params;
|
|
}
|
|
}
|