mirror of
https://github.com/Icinga/icingaweb2.git
synced 2025-09-25 18:59:04 +02:00
Introduce DashletListItem
class
This commit is contained in:
parent
42581e8d7f
commit
4548122a18
89
library/Icinga/Web/Dashboard/ItemList/DashletListItem.php
Normal file
89
library/Icinga/Web/Dashboard/ItemList/DashletListItem.php
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Icinga\Web\Dashboard\ItemList;
|
||||||
|
|
||||||
|
use Icinga\Web\Dashboard\Dashboard;
|
||||||
|
use Icinga\Web\Dashboard\Dashlet;
|
||||||
|
use ipl\Html\BaseHtmlElement;
|
||||||
|
use ipl\Html\HtmlElement;
|
||||||
|
use ipl\Web\Url;
|
||||||
|
use ipl\Web\Widget\Link;
|
||||||
|
|
||||||
|
class DashletListItem extends BaseHtmlElement
|
||||||
|
{
|
||||||
|
protected $defaultAttributes = ['class' => 'dashlet-list-item'];
|
||||||
|
|
||||||
|
protected $tag = 'li';
|
||||||
|
|
||||||
|
/** @var Dashlet */
|
||||||
|
protected $dashlet;
|
||||||
|
|
||||||
|
protected $renderEditButton;
|
||||||
|
|
||||||
|
public function __construct(Dashlet $dashlet = null, $renderEditButton = false)
|
||||||
|
{
|
||||||
|
$this->dashlet = $dashlet;
|
||||||
|
$this->renderEditButton = $renderEditButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set whether to render an edit button for this dashlet
|
||||||
|
*
|
||||||
|
* @param bool $value
|
||||||
|
*
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
protected function setDetailUrl(bool $value)
|
||||||
|
{
|
||||||
|
$this->renderEditButton = $value;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function assembleTitle()
|
||||||
|
{
|
||||||
|
$title = HtmlElement::create('h1', ['class' => 'dashlet-header']);
|
||||||
|
|
||||||
|
if (! $this->dashlet) {
|
||||||
|
$title->add(t('Custom Url'));
|
||||||
|
} else {
|
||||||
|
$title->add($this->dashlet->getTitle());
|
||||||
|
|
||||||
|
if ($this->renderEditButton) {
|
||||||
|
$pane = $this->dashlet->getPane();
|
||||||
|
$url = Url::fromPath(Dashboard::BASE_ROUTE . '/edit-dashlet');
|
||||||
|
$url->setParams([
|
||||||
|
'home' => $pane->getHome()->getName(),
|
||||||
|
'pane' => $pane->getName(),
|
||||||
|
'dashlet' => $this->dashlet->getName()
|
||||||
|
]);
|
||||||
|
|
||||||
|
$title->addHtml(new Link(t('Edit'), $url, [
|
||||||
|
'data-icinga-modal' => true,
|
||||||
|
'data-no-icinga-ajax' => true
|
||||||
|
]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $title;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function assembleSummary()
|
||||||
|
{
|
||||||
|
$section = HtmlElement::create('section', ['class' => 'caption']);
|
||||||
|
|
||||||
|
if (! $this->dashlet) {
|
||||||
|
$section->add(t('Create a dashlet with custom url and filter'));
|
||||||
|
} else {
|
||||||
|
$section->add($this->dashlet->getDescription() ?: $this->dashlet->getTitle());
|
||||||
|
}
|
||||||
|
|
||||||
|
return $section;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function assemble()
|
||||||
|
{
|
||||||
|
$this->addHtml($this->assembleTitle());
|
||||||
|
$this->addHtml($this->assembleSummary());
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user