Merge branch 'feature/dope-layout-5543' of git.icinga.org:icingaweb2 into feature/dope-layout-5543
This commit is contained in:
commit
44b9d44641
|
@ -55,13 +55,13 @@ class ConfigController extends Controller
|
|||
$tabs = $this->getTabs();
|
||||
$tabs->add('userbackend', array(
|
||||
'title' => $this->translate('Configure how users authenticate with and log into Icinga Web 2'),
|
||||
'label' => $this->translate('User Backends'),
|
||||
'label' => $this->translate('Authentication'),
|
||||
'url' => 'config/userbackend',
|
||||
'baseTarget' => '_main'
|
||||
));
|
||||
$tabs->add('usergroupbackend', array(
|
||||
'title' => $this->translate('Configure how users are associated with groups by Icinga Web 2'),
|
||||
'label' => $this->translate('User Group Backends'),
|
||||
'label' => $this->translate('User Groups'),
|
||||
'url' => 'usergroupbackend/list',
|
||||
'baseTarget' => '_main'
|
||||
));
|
||||
|
@ -95,6 +95,7 @@ class ConfigController extends Controller
|
|||
|
||||
$this->view->form = $form;
|
||||
$this->createApplicationTabs()->activate('general');
|
||||
$this->createAuthenticationTabs();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -199,6 +200,7 @@ class ConfigController extends Controller
|
|||
$form->handleRequest();
|
||||
|
||||
$this->view->form = $form;
|
||||
$this->createApplicationTabs();
|
||||
$this->createAuthenticationTabs()->activate('userbackend');
|
||||
$this->render('userbackend/reorder');
|
||||
}
|
||||
|
@ -337,6 +339,7 @@ class ConfigController extends Controller
|
|||
$this->assertPermission('config/application/resources');
|
||||
$this->view->resources = Config::app('resources', true);
|
||||
$this->createApplicationTabs()->activate('resource');
|
||||
$this->createAuthenticationTabs();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -154,14 +154,26 @@ class UsergroupbackendController extends Controller
|
|||
protected function createListTabs()
|
||||
{
|
||||
$tabs = $this->getTabs();
|
||||
$tabs->add('general', array(
|
||||
'title' => $this->translate('Adjust the general configuration of Icinga Web 2'),
|
||||
'label' => $this->translate('General'),
|
||||
'url' => 'config/general',
|
||||
'baseTarget' => '_main'
|
||||
));
|
||||
$tabs->add('resource', array(
|
||||
'title' => $this->translate('Configure which resources are being utilized by Icinga Web 2'),
|
||||
'label' => $this->translate('Resources'),
|
||||
'url' => 'config/resource',
|
||||
'baseTarget' => '_main'
|
||||
));
|
||||
$tabs->add('userbackend', array(
|
||||
'title' => $this->translate('Configure how users authenticate with and log into Icinga Web 2'),
|
||||
'label' => $this->translate('User Backends'),
|
||||
'label' => $this->translate('Authentication'),
|
||||
'url' => 'config/userbackend'
|
||||
));
|
||||
$tabs->add('usergroupbackend', array(
|
||||
'title' => $this->translate('Configure how users are associated with groups by Icinga Web 2'),
|
||||
'label' => $this->translate('User Group Backends'),
|
||||
'label' => $this->translate('User Groups'),
|
||||
'url' => 'usergroupbackend/list'
|
||||
));
|
||||
return $tabs;
|
||||
|
|
|
@ -388,7 +388,9 @@ class ListController extends Controller
|
|||
'contacts' => array()
|
||||
);
|
||||
}
|
||||
$groupData[$c->contactgroup_name]['contacts'][] = $c;
|
||||
if (isset ($c->contact_name)) {
|
||||
$groupData[$c->contactgroup_name]['contacts'][] = $c;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Find a better naming
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
<?php if (! $this->compact): ?>
|
||||
<?php
|
||||
|
||||
if (! $this->compact): ?>
|
||||
<div class="controls">
|
||||
<?= $this->tabs; ?>
|
||||
<?= $this->sortBox; ?>
|
||||
|
@ -9,47 +11,44 @@
|
|||
<?php endif ?>
|
||||
<div class="content">
|
||||
<?php
|
||||
|
||||
if (count($groupData) === 0) {
|
||||
echo $this->translate('No contactgroups found matching the filter') . '</div>';
|
||||
return;
|
||||
}
|
||||
?>
|
||||
<div class="boxview" data-base-target="_next">
|
||||
<?php foreach ($groupData as $groupName => $groupInfo): ?>
|
||||
<div class="box contactgroup">
|
||||
<div class="box header">
|
||||
<h2><?= $groupInfo['alias']; ?></h2>
|
||||
<?php if ($groupInfo['alias'] !== $groupName): ?>
|
||||
<h2><?= $groupName; ?></h2>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
<div class="box contents">
|
||||
<?php foreach ($groupInfo['contacts'] as $c): ?>
|
||||
<div class="box entry">
|
||||
<?= $this->img('static/gravatar', array('email' => $c->contact_email)); ?>
|
||||
<?= $this->qlink(
|
||||
$c->contact_alias,
|
||||
'monitoring/show/contact',
|
||||
array('contact_name' => $c->contact_name),
|
||||
array('title' => sprintf(
|
||||
$this->translate('Show detailed information about %s'),
|
||||
$c->contact_alias
|
||||
))
|
||||
); ?>
|
||||
<p>
|
||||
<?php if ($c->contact_email): ?>
|
||||
<?= $c->contact_email; ?>
|
||||
<?php endif;
|
||||
if ($c->contact_pager): ?>
|
||||
<br>
|
||||
<?= $c->contact_pager; ?>
|
||||
<?php endif ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php endforeach ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach ?>
|
||||
</div>
|
||||
<table class="action action-table listing-table" data-base-target="_next">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th><?= $this->translate('Hostgroup') ?></th>
|
||||
<th><?= $this->translate('Alias') ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<?php foreach ($groupData as $groupName => $groupInfo): ?>
|
||||
<tr>
|
||||
<td class="count-col">
|
||||
<span class="badge"><?= count($groupInfo['contacts']) ?></span>
|
||||
</td>
|
||||
<td>
|
||||
<?= $this->qlink(
|
||||
$groupName,
|
||||
'monitoring/list/contacts',
|
||||
array('contactgroup' => $groupName),
|
||||
array('title' => sprintf(
|
||||
$this->translate('Show detailed information about %s'),
|
||||
$groupName
|
||||
))
|
||||
) ?>
|
||||
</td>
|
||||
<td>
|
||||
<?php if ($groupInfo['alias'] !== $groupName): ?>
|
||||
<?= $groupInfo['alias'] ?>
|
||||
<?php endif ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
|
|
@ -7,54 +7,61 @@
|
|||
<?= $this->filterEditor; ?>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
<div data-base-target="_next" class="content contacts">
|
||||
<?php foreach ($contacts->peekAhead($this->compact) as $contact): ?>
|
||||
<div class="contact">
|
||||
<?= $this->img('static/gravatar', array('email' => $contact->contact_email)); ?>
|
||||
<strong><?= $this->qlink(
|
||||
$contact->contact_name,
|
||||
'monitoring/show/contact',
|
||||
array('contact_name' => $contact->contact_name),
|
||||
array('title' => sprintf(
|
||||
$this->translate('Show detailed information about %s'),
|
||||
$contact->contact_alias
|
||||
))
|
||||
); ?></strong> (<?= $contact->contact_alias; ?>)
|
||||
<div>
|
||||
<?= $this->translate('Email'); ?>: <a href="mailto:<?= $contact->contact_email; ?>" title="<?= sprintf($this->translate('Send a mail to %s'), $contact->contact_alias); ?>" aria-label="<?= sprintf($this->translate('Send a mail to %s'), $contact->contact_alias); ?>">
|
||||
|
||||
<div class="content">
|
||||
<?php if ($contacts->hasResult()): ?>
|
||||
<table class="action action-table listing-table" data-base-target="_next">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?= $this->translate('Name') ?></th>
|
||||
<th><?= $this->translate('Email') ?></th>
|
||||
<th><?= $this->translate('Pager') ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($contacts->peekAhead($this->compact) as $contact): ?>
|
||||
<tr>
|
||||
<td>
|
||||
<?= $this->qlink(
|
||||
$contact->contact_name,
|
||||
'monitoring/show/contact',
|
||||
array('contact_name' => $contact->contact_name),
|
||||
array('title' => sprintf(
|
||||
$this->translate('Show detailed information about %s'),
|
||||
$contact->contact_alias
|
||||
), 'class' => 'rowaction')
|
||||
); ?>
|
||||
</td>
|
||||
<td>
|
||||
<?= $this->translate('Email') ?>:
|
||||
<a href="mailto:<?= $contact->contact_email; ?>"
|
||||
title="<?= sprintf($this->translate('Send a mail to %s'), $contact->contact_alias); ?>"
|
||||
aria-label="<?= sprintf($this->translate('Send a mail to %s'), $contact->contact_alias); ?>">
|
||||
<?= $this->escape($contact->contact_email); ?>
|
||||
</a>
|
||||
</div>
|
||||
<?php if ($contact->contact_pager): ?>
|
||||
<div>
|
||||
<?= $this->translate('Pager') ?>:
|
||||
<?= $this->escape($contact->contact_pager) ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<div style="clear: both;"></div>
|
||||
<div class="notification-periods">
|
||||
</td>
|
||||
<td>
|
||||
<?php if ($contact->contact_pager): ?>
|
||||
<?= $this->escape($contact->contact_pager) ?>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
|
||||
<?php if ($contact->contact_notify_service_timeperiod): ?>
|
||||
<div>
|
||||
<?= $this->translate('Service notification period') ?>:
|
||||
<td>
|
||||
<?= $this->escape($contact->contact_notify_service_timeperiod) ?>
|
||||
</div>
|
||||
</td>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($contact->contact_notify_host_timeperiod): ?>
|
||||
<div>
|
||||
<?= $this->translate('Host notification period') ?>:
|
||||
<td>
|
||||
<?= $this->escape($contact->contact_notify_host_timeperiod) ?>
|
||||
</div>
|
||||
</td>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
endforeach;
|
||||
if (true): /* The following piece of HTML MUST be nested in <?php */ ?>
|
||||
<div style="clear: both;"></div>
|
||||
<?php endif; ?>
|
||||
<?php if (! $contacts->hasResult()): ?>
|
||||
<?= $this->translate('No contacts found matching the filter'); ?>
|
||||
<?php elseif ($contacts->hasMore()): ?>
|
||||
</tr>
|
||||
<?php endforeach ?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php if ($contacts->hasMore()): ?>
|
||||
<?= $this->qlink(
|
||||
$this->translate('Show More'),
|
||||
$this->url()->without(array('view', 'limit')),
|
||||
|
@ -65,4 +72,7 @@
|
|||
)
|
||||
); ?>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<?= $this->translate('No contacts found matching the filter'); ?>
|
||||
<?php endif ?>
|
||||
</div>
|
|
@ -14,7 +14,7 @@ if (! $this->compact): ?>
|
|||
<p><?= $this->translate('No service groups found matching the filter.') ?></p>
|
||||
</div>
|
||||
<?php return; endif ?>
|
||||
<table class="action-tabline listing-table" data-base-target="_next">
|
||||
<table class="action-table listing-table" data-base-target="_next">
|
||||
<thead>
|
||||
<th></th>
|
||||
<th><?= $this->translate('Service Group') ?></th>
|
||||
|
|
|
@ -20,6 +20,11 @@ class ContactQuery extends IdoQuery
|
|||
'instances' => array(
|
||||
'instance_name' => 'i.instance_name'
|
||||
),
|
||||
'contactgroups' => array(
|
||||
'contactgroup' => 'cgo.name1 COLLATE latin1_general_ci',
|
||||
'contactgroup_name' => 'cgo.name1',
|
||||
'contactgroup_alias' => 'cg.alias COLLATE latin1_general_ci'
|
||||
),
|
||||
'contacts' => array(
|
||||
'contact_id' => 'c.contact_id',
|
||||
'contact' => 'co.name1 COLLATE latin1_general_ci',
|
||||
|
@ -186,6 +191,26 @@ class ContactQuery extends IdoQuery
|
|||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Join contacts
|
||||
*/
|
||||
protected function joinContactgroups()
|
||||
{
|
||||
$this->select->joinLeft(
|
||||
array('cgm' => $this->prefix . 'contactgroup_members'),
|
||||
'co.object_id = cgm.contact_object_id',
|
||||
array()
|
||||
)->joinLeft(
|
||||
array('cg' => $this->prefix . 'contactgroups'),
|
||||
'cgm.contactgroup_id = cg.contactgroup_id',
|
||||
array()
|
||||
)->joinLeft(
|
||||
array('cgo' => $this->prefix . 'objects'),
|
||||
'cg.contactgroup_object_id = cgo.object_id AND cgo.is_active = 1 AND cgo.objecttype_id = 11',
|
||||
array()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Join instances
|
||||
*/
|
||||
|
|
|
@ -33,7 +33,10 @@ class Contact extends DataView
|
|||
'contact_notify_host_flapping',
|
||||
'contact_notify_host_downtime',
|
||||
'contact_notify_host_timeperiod',
|
||||
'contact_notify_service_timeperiod'
|
||||
'contact_notify_service_timeperiod',
|
||||
'contactgroup',
|
||||
'contactgroup_name',
|
||||
'contactgroup_alias'
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -25,6 +25,15 @@ a {
|
|||
}
|
||||
}
|
||||
|
||||
blockquote {
|
||||
border-left: 6px solid @gray-light;
|
||||
color: @text-color-light;
|
||||
// Reset default margin
|
||||
margin: 0;
|
||||
font-family: @font-family-fixed;
|
||||
padding: @vertical-padding @horizontal-padding;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: @body-bg-color;
|
||||
color: @text-color;
|
||||
|
@ -35,14 +44,14 @@ body {
|
|||
|
||||
h1 {
|
||||
font-size: 18px;
|
||||
line-height: 22px;
|
||||
font-weight: normal;
|
||||
line-height: 22px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 16px;
|
||||
line-height: 19px;
|
||||
font-weight: normal;
|
||||
line-height: 19px;
|
||||
}
|
||||
|
||||
p {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*! Icinga Web 2 | (c) 2013-2015 Icinga Development Team | GPLv2+ */
|
||||
|
||||
.bg-color-default() {
|
||||
background-color: @body-bg-color;
|
||||
background-color: inherit;
|
||||
}
|
||||
|
||||
.bg-color-ok,
|
||||
|
@ -89,7 +89,7 @@
|
|||
}
|
||||
|
||||
.fg-color-default {
|
||||
color: @text-color;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.fg-color-inverted() {
|
||||
|
|
|
@ -14,10 +14,12 @@ input {
|
|||
|
||||
input.search {
|
||||
padding-left: 20px;
|
||||
background-image: url('../img/icons/search.png');
|
||||
background: url('../img/icons/search.png') no-repeat 0;
|
||||
background-size: 12px 12px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0em;
|
||||
}
|
||||
|
||||
input, select, textarea {
|
||||
width: 320px;
|
||||
}
|
||||
|
||||
form {
|
||||
|
@ -37,17 +39,13 @@ form {
|
|||
display: inline-block;
|
||||
padding-right: @horizontal-padding;
|
||||
text-align: right;
|
||||
width: 240px;
|
||||
width: 160px;
|
||||
}
|
||||
|
||||
.control-group {
|
||||
padding: @vertical-padding @horizontal-padding;
|
||||
}
|
||||
|
||||
select {
|
||||
display: table-cell;
|
||||
}
|
||||
|
||||
button.link,
|
||||
input[type="submit"].link {
|
||||
// Reset defaults
|
||||
|
|
Loading…
Reference in New Issue