Merge branch 'feature/show-icinga-web-2-s-version-in-the-frontend-9247'
resolves #9247 resolves #9381
This commit is contained in:
commit
7cbafe7793
|
@ -8,4 +8,4 @@ Vagrantfile export-ignore
|
|||
.puppet* eol=lf
|
||||
|
||||
# Include version information on `git archive'
|
||||
/application/VERSION export-subst
|
||||
/application/GITCOMMIT export-subst
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
$Format:%H %ci$
|
|
@ -1 +0,0 @@
|
|||
$Format:%H%d %ci$
|
|
@ -3,13 +3,23 @@
|
|||
|
||||
namespace Icinga\Controllers;
|
||||
|
||||
use Icinga\Application\Icinga;
|
||||
use Icinga\Application\Version;
|
||||
use Icinga\Web\Controller\ActionController;
|
||||
use Icinga\Web\Controller;
|
||||
|
||||
class AboutController extends ActionController
|
||||
class AboutController extends Controller
|
||||
{
|
||||
public function indexAction()
|
||||
{
|
||||
$this->view->version = Version::get();
|
||||
$this->view->modules = Icinga::app()->getModuleManager()->getLoadedModules();
|
||||
$this->view->tabs = $this->getTabs()->add(
|
||||
'about',
|
||||
array(
|
||||
'label' => $this->translate('About'),
|
||||
'title' => $this->translate('About Icinga Web 2'),
|
||||
'url' => 'about'
|
||||
)
|
||||
)->activate('about');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,25 +1,128 @@
|
|||
<div class="content">
|
||||
<h1>Icinga Web 2</h1>
|
||||
<?php
|
||||
$versionInfo = array();
|
||||
if ($version !== false) {
|
||||
foreach (array(
|
||||
'appVersion' => $this->translate('Version: %s'),
|
||||
'gitCommitID' => $this->translate('Git commit ID: %s'),
|
||||
'gitCommitDate' => $this->translate('Git commit date: %s')
|
||||
) as $key => $label) {
|
||||
if (array_key_exists($key, $version) && null !== ($value = $version[$key])) {
|
||||
$versionInfo[] = sprintf($label, htmlspecialchars($value));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
echo (
|
||||
0 === count($versionInfo)
|
||||
? '<p class="message-error">' . $this->translate(
|
||||
'Can\'t determine Icinga Web 2\'s version'
|
||||
)
|
||||
: '<p>' . nl2br(implode("\n", $versionInfo), false)
|
||||
) . '</p>';
|
||||
?>
|
||||
<div class="controls">
|
||||
<?= $tabs; ?>
|
||||
</div>
|
||||
<div class="content about">
|
||||
<?= $this->img(
|
||||
'img/logo_icinga_big_dark.png',
|
||||
null,
|
||||
array(
|
||||
'width' => 400,
|
||||
'class' => 'about-logo'
|
||||
)
|
||||
); ?>
|
||||
<p class="about-version">
|
||||
<?php if (isset($version['appVersion'])): ?>
|
||||
<strong><?= $this->translate('Version'); ?>:</strong> <?= $this->escape($version['appVersion']); ?>
|
||||
<?php endif ?>
|
||||
<?php if (isset($version['gitCommitID'])): ?>
|
||||
<br>
|
||||
<strong><?= $this->translate('Git commit ID'); ?>:</strong> <?= $this->escape($version['gitCommitID']); ?>
|
||||
<?php endif ?>
|
||||
<?php if (isset($version['gitCommitDate'])): ?>
|
||||
<br>
|
||||
<strong><?= $this->translate('Git commit date'); ?>:</strong> <?= $this->escape($version['gitCommitDate']); ?>
|
||||
<?php endif ?>
|
||||
</p>
|
||||
<p class="about-license">
|
||||
<strong><?= $this->translate('Copyright'); ?></strong>: © 2013-<?= date('Y'); ?> <?= $this->qlink(
|
||||
$this->translate('The Icinga Project'),
|
||||
'https://www.icinga.org',
|
||||
null,
|
||||
array(
|
||||
'target' => '_blank'
|
||||
)
|
||||
); ?>
|
||||
<br>
|
||||
<strong><?= $this->translate('License'); ?></strong>: GNU GPL v2+
|
||||
</p>
|
||||
<p class="about-social">
|
||||
<?= $this->qlink(
|
||||
null,
|
||||
'https://www.twitter.com/icinga',
|
||||
null,
|
||||
array(
|
||||
'target' => '_blank',
|
||||
'icon' => 'twitter',
|
||||
'title' => $this->translate('Icinga on Twitter')
|
||||
)
|
||||
); ?> <?= $this->qlink(
|
||||
null,
|
||||
'https://www.facebook.com/icinga',
|
||||
null,
|
||||
array(
|
||||
'target' => '_blank',
|
||||
'icon' => 'facebook-squared',
|
||||
'title' => $this->translate('Icinga on Facebook')
|
||||
)
|
||||
); ?>
|
||||
</p>
|
||||
<div class="about-urls">
|
||||
<div><?= $this->qlink(
|
||||
null,
|
||||
'https://dev.icinga.org/projects/icingaweb2',
|
||||
null,
|
||||
array(
|
||||
'target' => '_blank',
|
||||
'img' => 'img/bugreport.png',
|
||||
'title' => $this->translate('Report a bug')
|
||||
)
|
||||
); ?> <?= $this->qlink(
|
||||
null,
|
||||
'https://www.icinga.org/services/support',
|
||||
null,
|
||||
array(
|
||||
'target' => '_blank',
|
||||
'img' => 'img/support.png',
|
||||
'title' => $this->translate('Support / Mailinglists')
|
||||
)
|
||||
); ?></div>
|
||||
<div><?= $this->qlink(
|
||||
null,
|
||||
'https://wiki.icinga.org',
|
||||
null,
|
||||
array(
|
||||
'target' => '_blank',
|
||||
'img' => 'img/wiki.png',
|
||||
'title' => $this->translate('Icinga Wiki')
|
||||
)
|
||||
); ?> <?= $this->qlink(
|
||||
null,
|
||||
'https://docs.icinga.org/',
|
||||
null,
|
||||
array(
|
||||
'target' => '_blank',
|
||||
'img' => 'img/docs.png',
|
||||
'title' => $this->translate('Icinga Documentation')
|
||||
)
|
||||
); ?></div>
|
||||
</div>
|
||||
<h2><?= $this->translate('Loaded modules') ?></h2>
|
||||
<table class="action alternating about-modules" data-base-target="_next">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?= $this->translate('Name') ?></th>
|
||||
<th><?= $this->translate('Version') ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($modules as $module): ?>
|
||||
<tr>
|
||||
<td>
|
||||
<?php if ($this->hasPermission('config/modules')): ?>
|
||||
<?= $this->qlink(
|
||||
$module->getName(),
|
||||
'config/module/',
|
||||
array('name' => $module->getName()),
|
||||
array('title' => sprintf($this->translate('Show the overview of the %s module'), $module->getName()))
|
||||
); ?>
|
||||
<?php else: ?>
|
||||
<?= $this->escape($module->getName()); ?>
|
||||
<?php endif ?>
|
||||
<td>
|
||||
<?= $this->escape($module->getVersion()); ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
|
|
@ -204,7 +204,7 @@ rm -rf %{buildroot}
|
|||
%{basedir}/application/forms
|
||||
%{basedir}/application/layouts
|
||||
%{basedir}/application/views
|
||||
%{basedir}/application/VERSION
|
||||
%{basedir}/application/GITCOMMIT
|
||||
%{basedir}/doc
|
||||
%{basedir}/modules
|
||||
%{basedir}/public
|
||||
|
|
|
@ -8,33 +8,42 @@ namespace Icinga\Application;
|
|||
*/
|
||||
class Version
|
||||
{
|
||||
const VERSION = '2.0.0-rc1';
|
||||
|
||||
/**
|
||||
* Get the version of this instance of Icinga Web 2
|
||||
*
|
||||
* @return array|false array on success, false otherwise
|
||||
* @return array
|
||||
*/
|
||||
public static function get()
|
||||
{
|
||||
if (false === ($appVersion = @file_get_contents(
|
||||
Icinga::app()->getApplicationDir() . DIRECTORY_SEPARATOR . 'VERSION'
|
||||
))) {
|
||||
return false;
|
||||
}
|
||||
$version = array('appVersion' => self::VERSION);
|
||||
|
||||
$matches = array();
|
||||
if (false === ($res = preg_match(
|
||||
'/(?<!.)\s*(?P<gitCommitID>\w+)(?:\s*\(.*?(?:(?<=[\(,])\s*tag\s*:\s*v(?P<appVersion>.+?)\s*(?=[\),]).*?)?\))?\s*(?P<gitCommitDate>\S+)/ms',
|
||||
$appVersion,
|
||||
$matches
|
||||
)) || $res === 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach ($matches as $key => $value) {
|
||||
if (is_int($key) || $value === '') {
|
||||
unset($matches[$key]);
|
||||
if (false !== ($appVersion = @file_get_contents(Icinga::app()->getApplicationDir('GITCOMMIT')))) {
|
||||
$matches = array();
|
||||
if (@preg_match('/^(?P<gitCommitID>\w+) (?P<gitCommitDate>\S+)/', $appVersion, $matches)) {
|
||||
return array_merge($version, $matches);
|
||||
}
|
||||
}
|
||||
return $matches;
|
||||
|
||||
$gitDir = Icinga::app()->getBaseDir('.git');
|
||||
$gitHead = @file_get_contents($gitDir . DIRECTORY_SEPARATOR . 'HEAD');
|
||||
if (false !== $gitHead) {
|
||||
$matches = array();
|
||||
if (@preg_match('/(?<!.)ref:\s+(.+?)$/ms', $gitHead, $matches)) {
|
||||
$gitCommitID = @file_get_contents($gitDir . DIRECTORY_SEPARATOR . $matches[1]);
|
||||
} else {
|
||||
$gitCommitID = $gitHead;
|
||||
}
|
||||
|
||||
if (false !== $gitCommitID) {
|
||||
$matches = array();
|
||||
if (@preg_match('/(?<!.)(?P<gitCommitID>[0-9a-f]+)$/ms', $gitCommitID, $matches)) {
|
||||
return array_merge($version, $matches);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $version;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,7 +29,8 @@ class StyleSheet
|
|||
'css/icinga/selection-toolbar.less',
|
||||
'css/icinga/login.less',
|
||||
'css/icinga/logo.less',
|
||||
'css/icinga/controls.less'
|
||||
'css/icinga/controls.less',
|
||||
'css/icinga/about.less'
|
||||
);
|
||||
|
||||
public static function compileForPdf()
|
||||
|
|
|
@ -43,6 +43,11 @@ $this->addHelperFunction('qlink', function ($title, $url, $params = null, $prope
|
|||
$icon = $view->icon($properties['icon']);
|
||||
unset($properties['icon']);
|
||||
}
|
||||
|
||||
if (array_key_exists('img', $properties)) {
|
||||
$icon = $view->img($properties['img']);
|
||||
unset($properties['img']);
|
||||
}
|
||||
}
|
||||
|
||||
return sprintf(
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
div.about {
|
||||
width: 600px;
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
|
||||
.about-modules {
|
||||
text-align: initial;
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 3.3 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.9 KiB |
Binary file not shown.
After Width: | Height: | Size: 4.8 KiB |
Binary file not shown.
After Width: | Height: | Size: 3.1 KiB |
Loading…
Reference in New Issue