From 3e02d5aff85babc3ffbfcf52313f2108e313aa23 Mon Sep 17 00:00:00 2001
From: Daniel Baumann
Date: Sat, 13 Apr 2024 13:46:43 +0200
Subject: Adding upstream version 2.12.1.
Signed-off-by: Daniel Baumann
---
application/views/scripts/about/index.phtml | 199 +++++++++++++++++++++
application/views/scripts/account/index.phtml | 11 ++
.../views/scripts/announcements/index.phtml | 71 ++++++++
.../views/scripts/authentication/login.phtml | 74 ++++++++
.../views/scripts/authentication/logout.phtml | 64 +++++++
application/views/scripts/config/devtools.phtml | 6 +
application/views/scripts/config/general.phtml | 6 +
.../config/module-configuration-error.phtml | 28 +++
application/views/scripts/config/module.phtml | 136 ++++++++++++++
application/views/scripts/config/modules.phtml | 42 +++++
application/views/scripts/config/resource.phtml | 73 ++++++++
.../views/scripts/config/resource/create.phtml | 6 +
.../views/scripts/config/resource/modify.phtml | 6 +
.../views/scripts/config/resource/remove.phtml | 6 +
.../views/scripts/config/userbackend/reorder.phtml | 75 ++++++++
application/views/scripts/dashboard/error.phtml | 13 ++
application/views/scripts/dashboard/index.phtml | 26 +++
.../views/scripts/dashboard/new-dashlet.phtml | 6 +
.../views/scripts/dashboard/remove-dashlet.phtml | 6 +
.../views/scripts/dashboard/remove-pane.phtml | 6 +
.../views/scripts/dashboard/rename-pane.phtml | 6 +
application/views/scripts/dashboard/settings.phtml | 91 ++++++++++
.../views/scripts/dashboard/update-dashlet.phtml | 6 +
application/views/scripts/error/error.phtml | 106 +++++++++++
application/views/scripts/filter/index.phtml | 11 ++
.../views/scripts/form/reorder-authbackend.phtml | 83 +++++++++
application/views/scripts/group/form.phtml | 6 +
application/views/scripts/group/list.phtml | 96 ++++++++++
application/views/scripts/group/show.phtml | 108 +++++++++++
application/views/scripts/iframe/index.phtml | 8 +
application/views/scripts/index/welcome.phtml | 2 +
application/views/scripts/inline.phtml | 2 +
application/views/scripts/joystickPagination.phtml | 162 +++++++++++++++++
.../views/scripts/layout/announcements.phtml | 1 +
application/views/scripts/layout/menu.phtml | 20 +++
.../views/scripts/list/applicationlog.phtml | 29 +++
application/views/scripts/mixedPagination.phtml | 79 ++++++++
.../views/scripts/navigation/dashboard.phtml | 27 +++
application/views/scripts/navigation/index.phtml | 78 ++++++++
application/views/scripts/navigation/shared.phtml | 68 +++++++
.../views/scripts/pivottablePagination.phtml | 48 +++++
application/views/scripts/role/list.phtml | 65 +++++++
application/views/scripts/search/hint.phtml | 8 +
application/views/scripts/search/index.phtml | 7 +
application/views/scripts/showConfiguration.phtml | 27 +++
application/views/scripts/simple-form.phtml | 6 +
application/views/scripts/user/form.phtml | 6 +
application/views/scripts/user/list.phtml | 90 ++++++++++
application/views/scripts/user/show.phtml | 138 ++++++++++++++
49 files changed, 2244 insertions(+)
create mode 100644 application/views/scripts/about/index.phtml
create mode 100644 application/views/scripts/account/index.phtml
create mode 100644 application/views/scripts/announcements/index.phtml
create mode 100644 application/views/scripts/authentication/login.phtml
create mode 100644 application/views/scripts/authentication/logout.phtml
create mode 100644 application/views/scripts/config/devtools.phtml
create mode 100644 application/views/scripts/config/general.phtml
create mode 100644 application/views/scripts/config/module-configuration-error.phtml
create mode 100644 application/views/scripts/config/module.phtml
create mode 100644 application/views/scripts/config/modules.phtml
create mode 100644 application/views/scripts/config/resource.phtml
create mode 100644 application/views/scripts/config/resource/create.phtml
create mode 100644 application/views/scripts/config/resource/modify.phtml
create mode 100644 application/views/scripts/config/resource/remove.phtml
create mode 100644 application/views/scripts/config/userbackend/reorder.phtml
create mode 100644 application/views/scripts/dashboard/error.phtml
create mode 100644 application/views/scripts/dashboard/index.phtml
create mode 100644 application/views/scripts/dashboard/new-dashlet.phtml
create mode 100644 application/views/scripts/dashboard/remove-dashlet.phtml
create mode 100644 application/views/scripts/dashboard/remove-pane.phtml
create mode 100644 application/views/scripts/dashboard/rename-pane.phtml
create mode 100644 application/views/scripts/dashboard/settings.phtml
create mode 100644 application/views/scripts/dashboard/update-dashlet.phtml
create mode 100644 application/views/scripts/error/error.phtml
create mode 100644 application/views/scripts/filter/index.phtml
create mode 100644 application/views/scripts/form/reorder-authbackend.phtml
create mode 100644 application/views/scripts/group/form.phtml
create mode 100644 application/views/scripts/group/list.phtml
create mode 100644 application/views/scripts/group/show.phtml
create mode 100644 application/views/scripts/iframe/index.phtml
create mode 100644 application/views/scripts/index/welcome.phtml
create mode 100644 application/views/scripts/inline.phtml
create mode 100644 application/views/scripts/joystickPagination.phtml
create mode 100644 application/views/scripts/layout/announcements.phtml
create mode 100644 application/views/scripts/layout/menu.phtml
create mode 100644 application/views/scripts/list/applicationlog.phtml
create mode 100644 application/views/scripts/mixedPagination.phtml
create mode 100644 application/views/scripts/navigation/dashboard.phtml
create mode 100644 application/views/scripts/navigation/index.phtml
create mode 100644 application/views/scripts/navigation/shared.phtml
create mode 100644 application/views/scripts/pivottablePagination.phtml
create mode 100644 application/views/scripts/role/list.phtml
create mode 100644 application/views/scripts/search/hint.phtml
create mode 100644 application/views/scripts/search/index.phtml
create mode 100644 application/views/scripts/showConfiguration.phtml
create mode 100644 application/views/scripts/simple-form.phtml
create mode 100644 application/views/scripts/user/form.phtml
create mode 100644 application/views/scripts/user/list.phtml
create mode 100644 application/views/scripts/user/show.phtml
(limited to 'application/views/scripts')
diff --git a/application/views/scripts/about/index.phtml b/application/views/scripts/about/index.phtml
new file mode 100644
index 0000000..805e723
--- /dev/null
+++ b/application/views/scripts/about/index.phtml
@@ -0,0 +1,199 @@
+
+
+ = $tabs ?>
+
+
+
+ = $this->img('img/icinga-logo-big.svg', null, array('class' => 'icinga-logo', 'width' => 194)) ?>
+
+
+
+
+
+ = $this->translate('Icinga Web 2 Version') ?>
+ = $this->escape($version['appVersion']) ?>
+
+
+
+
+ = $this->translate('Git commit') ?>
+ = $this->escape($version['gitCommitID']) ?>
+
+
+
+ = $this->translate('PHP Version') ?>
+ = $this->escape(PHP_VERSION) ?>
+
+
+
+ = $this->translate('Git commit date') ?>
+ = $this->escape($version['gitCommitDate']) ?>
+
+
+
+
+
+
+ =
+ HtmlElement::create('a', [
+ 'href' => 'https://icinga.com/support/',
+ 'target' => '_blank',
+ 'title' => $this->translate('Get Icinga Support')
+ ], [
+ new Icon('life-ring'),
+ $this->translate('Get Icinga Support'),
+ ]
+ );
+ ?>
+
+
+ =
+ HtmlElement::create('a', [
+ 'href' => 'https://icinga.com/community/',
+ 'target' => '_blank',
+ 'title' => $this->translate('Icinga Community')
+ ], [
+ new Icon('globe-europe'),
+ $this->translate('Icinga Community'),
+ ]
+ );
+ ?>
+
+
+ =
+ HtmlElement::create('a', [
+ 'href' => 'https://github.com/icinga/icingaweb2/issues',
+ 'target' => '_blank',
+ 'title' => $this->translate('Icinga Community')
+ ], [
+ new Icon('bullhorn'),
+ $this->translate('Report a bug'),
+ ]
+ );
+ ?>
+
+
+ =
+ HtmlElement::create('a', [
+ 'href' => 'https://icinga.com/docs/icinga-web-2/'
+ . (isset($version['docVersion']) ? $version['docVersion'] : 'latest'),
+ 'target' => '_blank',
+ 'title' => $this->translate('Icinga Documentation')
+ ], [
+ new Icon('book'),
+ $this->translate('Icinga Documentation'),
+ ]
+ );
+ ?>
+
+
+
+ hasPendingMigrations()): ?>
+
+
= $this->translate('Pending Migrations') ?>
+
+ getPendingMigrations() as $migration): ?>
+
+ = $this->escape($migration->getName()) ?>
+ =
+ new StateBadge(
+ count($migration->getMigrations()),
+ BadgeNavigationItemRenderer::STATE_PENDING
+ );
+ ?>
+
+
+
+ = $this->qlink(
+ $this->translate('Show all'),
+ 'migrations',
+ null,
+ ['title' => $this->translate('Show all pending migrations')]
+ ) ?>
+
+
+
+ = $this->translate('Loaded Libraries') ?>
+
+
+
+
+ = $this->escape($library->getName()) ?>
+
+
+ = $this->escape($library->getVersion()) ?: '-' ?>
+
+
+
+
+
+ = $this->translate('Loaded Modules') ?>
+
+
+
+
+ = $this->escape($module->getName()) ?>
+
+
+
+ = $this->escape($module->getVersion()) ?>
+
+
+ hasPermission('config/modules')): ?>
+ = $this->qlink(
+ $this->translate('Configure'),
+ 'config/module/',
+ array('name' => $module->getName()),
+ array('title' => sprintf($this->translate('Show the overview of the %s module'), $module->getName()))
+ ) ?>
+
+
+
+
+
+
+
+
+
+ = $this->translate('Copyright') ?>
+ © 2013-= date('Y') ?>
+ = $this->qlink(
+ 'Icinga GmbH',
+ 'https://icinga.com',
+ null,
+ array(
+ 'target' => '_blank'
+ )
+ ) ?>
+
+
+ = $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')
+ )
+ ) ?>
+
+
+
diff --git a/application/views/scripts/account/index.phtml b/application/views/scripts/account/index.phtml
new file mode 100644
index 0000000..efc2bcb
--- /dev/null
+++ b/application/views/scripts/account/index.phtml
@@ -0,0 +1,11 @@
+
+ = $tabs ?>
+
+
+
+
= $this->translate('Account') ?>
+ = $changePasswordForm ?>
+
+ = $this->translate('Preferences') ?>
+ = $form ?>
+
diff --git a/application/views/scripts/announcements/index.phtml b/application/views/scripts/announcements/index.phtml
new file mode 100644
index 0000000..ff87c66
--- /dev/null
+++ b/application/views/scripts/announcements/index.phtml
@@ -0,0 +1,71 @@
+compact): ?>
+
+ = $this->tabs ?>
+ = $this->paginator ?>
+
+ = $this->limiter ?>
+ = $this->sortBox ?>
+
+ = $this->filterEditor ?>
+
+
+
+hasPermission('application/announcements')) {
+ echo $this->qlink(
+ $this->translate('Create a New Announcement') ,
+ 'announcements/new',
+ null,
+ array(
+ 'class' => 'button-link',
+ 'data-base-target' => '_next',
+ 'icon' => 'plus',
+ 'title' => $this->translate('Create a new announcement')
+ )
+ );
+} ?>
+announcements)): ?>
+
= $this->translate('No announcements found.') ?>
+
+
+
+
+
+ = $this->translate('Author') ?>
+ = $this->translate('Message') ?>
+ = $this->translate('Start') ?>
+ = $this->translate('End') ?>
+
+
+
+
+ announcements as $announcement): /** @var object $announcement */ ?>
+
+ = $this->escape($announcement->author) ?>
+ hasPermission('application/announcements')): ?>
+
+
+ = $this->ellipsis($this->escape($announcement->message), 100) ?>
+
+
+
+ = $this->ellipsis($this->escape($announcement->message), 100) ?>
+
+ = $this->formatDateTime($announcement->start) ?>
+ = $this->formatDateTime($announcement->end) ?>
+ hasPermission('application/announcements')): ?>
+ = $this->qlink(
+ null,
+ 'announcements/remove',
+ array('id' => $announcement->id),
+ array(
+ 'class' => 'action-link',
+ 'icon' => 'cancel',
+ 'title' => $this->translate('Remove this announcement')
+ )
+ ) ?>
+
+
+
+
+
+
diff --git a/application/views/scripts/authentication/login.phtml b/application/views/scripts/authentication/login.phtml
new file mode 100644
index 0000000..167a468
--- /dev/null
+++ b/application/views/scripts/authentication/login.phtml
@@ -0,0 +1,74 @@
+
+
+
+
+ = $this->qlink(
+ null,
+ 'https://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')
+ )
+ ) ?>
+
+ = $this->qlink(
+ null,
+ 'https://github.com/Icinga',
+ null,
+ array(
+ 'target' => '_blank',
+ 'icon' => 'github-circled',
+ 'title' => $this->translate('Icinga on GitHub')
+ )
+ ) ?>
+
+
+
+= $this->img('img/orb-analytics.png'); ?>
+= $this->img('img/orb-automation.png'); ?>
+= $this->img('img/orb-cloud.png'); ?>
+= $this->img('img/orb-icinga.png'); ?>
+= $this->img('img/orb-infrastructure.png'); ?>
+= $this->img('img/orb-metrics.png'); ?>
+= $this->img('img/orb-notifications.png'); ?>
diff --git a/application/views/scripts/authentication/logout.phtml b/application/views/scripts/authentication/logout.phtml
new file mode 100644
index 0000000..501ed20
--- /dev/null
+++ b/application/views/scripts/authentication/logout.phtml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
= $this->translate('Logging out...'); ?>
+
+ = $this->translate(
+ 'If this message does not disappear, it might be necessary to quit the'
+ . ' current session manually by clearing the cache, or by closing the current'
+ . ' browser session.'
+ ); ?>
+
+
+
= $this->translate('Logout successful'); ?>
+
+
+
+
+
diff --git a/application/views/scripts/config/devtools.phtml b/application/views/scripts/config/devtools.phtml
new file mode 100644
index 0000000..245a71a
--- /dev/null
+++ b/application/views/scripts/config/devtools.phtml
@@ -0,0 +1,6 @@
+
+= $this->tabs ?>
+
+
diff --git a/application/views/scripts/config/general.phtml b/application/views/scripts/config/general.phtml
new file mode 100644
index 0000000..13a8ed9
--- /dev/null
+++ b/application/views/scripts/config/general.phtml
@@ -0,0 +1,6 @@
+
+ = $tabs ?>
+
+
+ = $form ?>
+
diff --git a/application/views/scripts/config/module-configuration-error.phtml b/application/views/scripts/config/module-configuration-error.phtml
new file mode 100644
index 0000000..85fb128
--- /dev/null
+++ b/application/views/scripts/config/module-configuration-error.phtml
@@ -0,0 +1,28 @@
+action)) ? $this->action : 'do something with';
+ $moduleName = $this->moduleName;
+ $exceptionMessage = $this->exceptionMessage;
+?>
+= $this->tabs->render($this); ?>
+
+
+
Could not = $action; ?> module "= $moduleName; ?>"
+
+ While operation the following error occurred:
+
+ = $exceptionMessage; ?>
+
+
+
+
+ This could have one or more of the following reasons:
+
+ No file permissions to write into module directory
+ Errors on filesystems: Mount points, operational errors
+ General application error
+
+
+
+
+ Details can be seen in your application log (if you don't have access to this file, call your administrator in this case).
+
\ No newline at end of file
diff --git a/application/views/scripts/config/module.phtml b/application/views/scripts/config/module.phtml
new file mode 100644
index 0000000..6d41ab2
--- /dev/null
+++ b/application/views/scripts/config/module.phtml
@@ -0,0 +1,136 @@
+
+ = $this->tabs ?>
+
+
+
+ = $this->translate('There is no such module installed.') ?>
+
+ getRequiredModules();
+ $requiredLibs = $module->getRequiredLibraries();
+ $restrictions = $module->getProvidedRestrictions();
+ $permissions = $module->getProvidedPermissions();
+ $unmetDependencies = $moduleManager->hasUnmetDependencies($module->getName());
+ $isIcingadbSupported = isset($requiredMods['icingadb']);
+ $state = $moduleData->enabled ? ($moduleData->loaded ? 'enabled' : 'failed') : 'disabled';
+ ?>
+
+
+ = $this->escape($this->translate('Name')) ?>
+ = $this->escape($module->getName()) ?>
+
+
+ = $this->translate('State') ?>
+
+ = $state ?>
+ toggleForm)): ?>
+ enabled || ! $unmetDependencies): ?>
+ = $this->toggleForm ?>
+
+ = $this->icon('attention-alt', $this->translate('Module can\'t be enabled due to unmet dependencies')) ?>
+
+
+
+
+ = $this->escape($this->translate('Version')) ?>
+ = $this->escape($module->getVersion()) ?>
+
+
+
+ = $this->escape($this->translate('Git commit')) ?>
+ = $this->escape($moduleGitCommitId) ?>
+
+
+
+ = $this->escape($this->translate('Description')) ?>
+
+ = $this->escape($module->getTitle()) ?>
+ = nl2br($this->escape($module->getDescription())) ?>
+
+
+
+ = $this->escape($this->translate('Dependencies')) ?>
+
+
+ = $this->translate('This module has no dependencies') ?>
+
+
+
+ = $this->translate('Unmet dependencies found! Module can\'t be enabled unless all dependencies are met.') ?>
+
+
+
+
+ = $this->translate('Libraries') ?>
+ $versionString): ?>
+
+ = $this->escape($libraryName) ?>
+
+ has($libraryName, $versionString === true ? null : $versionString)): ?>
+ = $versionString === true ? '*' : $this->escape($versionString) ?>
+
+ = $versionString === true ? '*' : $this->escape($versionString) ?>
+ get($libraryName)) !== null): ?>
+ (= $library->getVersion() ?>)
+
+
+
+
+
+
+
+
+
+ = $this->translate('Modules') ?>
+ $versionString): ?>
+ has('icingadb', $requiredMods['icingadb'])) : ?>
+
+
+
+ = $this->escape($moduleName) ?>
+
+ has($moduleName, $versionString === true ? null : $versionString)): ?>
+ = $versionString === true ? '*' : $this->escape($versionString) ?>
+
+ has('monitoring', $requiredMods['monitoring'])) ? 'class="optional"' : 'class="missing"' ?>>
+ = $versionString === true ? '*' : $this->escape($versionString) ?>
+
+ hasInstalled($moduleName)): ?>
+ (= $this->translate('not installed') ?>)
+
+ (= $moduleManager->getModule($moduleName, false)->getVersion() ?>= $moduleManager->hasEnabled($moduleName) ? '' : ', ' . $this->translate('disabled') ?>)
+
+
+
+
+ = $this->translate('or') ?>
+
+
+
+
+
+
+
+
+
+
+ = $this->escape($this->translate('Permissions')) ?>
+
+
+ = $this->escape($permission->name) ?> : = $this->escape($permission->description) ?>
+
+
+
+
+
+
+ = $this->escape($this->translate('Restrictions')) ?>
+
+
+ = $this->escape($restriction->name) ?> : = $this->escape($restriction->description) ?>
+
+
+
+
+
+
diff --git a/application/views/scripts/config/modules.phtml b/application/views/scripts/config/modules.phtml
new file mode 100644
index 0000000..b13b378
--- /dev/null
+++ b/application/views/scripts/config/modules.phtml
@@ -0,0 +1,42 @@
+compact): ?>
+
+ = $this->tabs ?>
+ = $this->paginator ?>
+
+
+
+
+
+
+ = $this->translate('Module') ?>
+
+
+
+
+
+
+ installed) {
+ $this->icon('flash', sprintf($this->translate('Module %s is dangling'), $module->name));
+ } elseif ($module->enabled && $module->loaded) {
+ echo $this->icon('thumbs-up', sprintf($this->translate('Module %s is enabled'), $module->name));
+ } elseif (! $module->enabled) {
+ echo $this->icon('block', sprintf($this->translate('Module %s is disabled'), $module->name));
+ } else { // ! $module->loaded
+ echo $this->icon('block', sprintf($this->translate('Module %s has failed to load'), $module->name));
+ }
+
+ echo $this->qlink(
+ $module->name,
+ 'config/module',
+ array('name' => $module->name),
+ array(
+ 'class' => 'rowaction',
+ 'title' => sprintf($this->translate('Show the overview of the %s module'), $module->name)
+ )
+ ); ?>
+
+
+
+
+
+
diff --git a/application/views/scripts/config/resource.phtml b/application/views/scripts/config/resource.phtml
new file mode 100644
index 0000000..317c115
--- /dev/null
+++ b/application/views/scripts/config/resource.phtml
@@ -0,0 +1,73 @@
+
+ = $tabs ?>
+
+
+ = $this->qlink(
+ $this->translate('Create a New Resource') ,
+ 'config/createresource',
+ null,
+ array(
+ 'class' => 'button-link',
+ 'data-base-target' => '_next',
+ 'icon' => 'plus',
+ 'title' => $this->translate('Create a new resource')
+ )
+ ) ?>
+
+
+
+ = $this->translate('Resource') ?>
+
+
+
+
+resources as $name => $value): ?>
+
+
+ type) {
+ case 'db':
+ $icon = 'database';
+ break;
+ case 'ldap':
+ $icon = 'sitemap';
+ break;
+ case 'ssh':
+ $icon = 'user';
+ break;
+ case 'file':
+ case 'ini':
+ $icon = 'doc-text';
+ break;
+ default:
+ $icon = 'edit';
+ break;
+ }
+ ?>
+ = $this->qlink(
+ $name,
+ 'config/editresource',
+ array('resource' => $name),
+ array(
+ 'icon' => $icon,
+ 'title' => sprintf($this->translate('Edit resource %s'), $name)
+ )
+ ) ?>
+
+
+ = $this->qlink(
+ '',
+ 'config/removeresource',
+ array('resource' => $name),
+ array(
+ 'class' => 'action-link',
+ 'icon' => 'cancel',
+ 'title' => sprintf($this->translate('Remove resource %s'), $name)
+ )
+ ) ?>
+
+
+
+
+
+
diff --git a/application/views/scripts/config/resource/create.phtml b/application/views/scripts/config/resource/create.phtml
new file mode 100644
index 0000000..13a8ed9
--- /dev/null
+++ b/application/views/scripts/config/resource/create.phtml
@@ -0,0 +1,6 @@
+
+ = $tabs ?>
+
+
+ = $form ?>
+
diff --git a/application/views/scripts/config/resource/modify.phtml b/application/views/scripts/config/resource/modify.phtml
new file mode 100644
index 0000000..13a8ed9
--- /dev/null
+++ b/application/views/scripts/config/resource/modify.phtml
@@ -0,0 +1,6 @@
+
+ = $tabs ?>
+
+
+ = $form ?>
+
diff --git a/application/views/scripts/config/resource/remove.phtml b/application/views/scripts/config/resource/remove.phtml
new file mode 100644
index 0000000..13a8ed9
--- /dev/null
+++ b/application/views/scripts/config/resource/remove.phtml
@@ -0,0 +1,6 @@
+
+ = $tabs ?>
+
+
+ = $form ?>
+
diff --git a/application/views/scripts/config/userbackend/reorder.phtml b/application/views/scripts/config/userbackend/reorder.phtml
new file mode 100644
index 0000000..c77fd2e
--- /dev/null
+++ b/application/views/scripts/config/userbackend/reorder.phtml
@@ -0,0 +1,75 @@
+
+ = $tabs ?>
+
+
+ auth()->hasPermission('config/access-control/users')): ?>
+
= $this->translate('User Backends') ?>
+ = $this->qlink(
+ $this->translate('Create a New User Backend') ,
+ 'config/createuserbackend',
+ null,
+ array(
+ 'class' => 'button-link',
+ 'data-base-target' => '_next',
+ 'icon' => 'plus',
+ 'title' => $this->translate('Create a new user backend')
+ )
+ ) ?>
+ = $form ?>
+
+
+ auth()->hasPermission('config/access-control/groups')): ?>
+
= $this->translate('User Group Backends') ?>
+ = $this->qlink(
+ $this->translate('Create a New User Group Backend') ,
+ 'usergroupbackend/create',
+ null,
+ array(
+ 'class' => 'button-link',
+ 'data-base-target' => '_next',
+ 'icon' => 'plus',
+ 'title' => $this->translate('Create a new user group backend')
+ )
+ ) ?>
+
+
+
+
+ = $this->translate('Backend') ?>
+
+
+
+
+ $config):
+ $type = $config->get('backend');
+?>
+
+
+ = $this->qlink(
+ $backendName,
+ 'usergroupbackend/edit',
+ array('backend' => $backendName),
+ array(
+ 'icon' => $type === 'external' ? 'magic' : ($type === 'ldap' || $type === 'msldap' ? 'sitemap' : 'database'),
+ 'title' => sprintf($this->translate('Edit user group backend %s'), $backendName)
+ )
+ ); ?>
+
+
+ = $this->qlink(
+ null,
+ 'usergroupbackend/remove',
+ array('backend' => $backendName),
+ array(
+ 'class' => 'action-link',
+ 'icon' => 'cancel',
+ 'title' => sprintf($this->translate('Remove user group backend %s'), $backendName)
+ )
+ ) ?>
+
+
+
+
+
+
+
diff --git a/application/views/scripts/dashboard/error.phtml b/application/views/scripts/dashboard/error.phtml
new file mode 100644
index 0000000..9396b49
--- /dev/null
+++ b/application/views/scripts/dashboard/error.phtml
@@ -0,0 +1,13 @@
+
+
= $this->translate('Could not save dashboard'); ?>
+
+ = $this->translate('Please copy the following dashboard snippet to '); ?>
+ = $this->config->getConfigFile(); ?>; .
+
+ = $this->translate('Make sure that the webserver can write to this file.'); ?>
+
+
= $this->config; ?>
+
+
= $this->translate('Error details'); ?>
+
= $this->error->getMessage(); ?>
+
\ No newline at end of file
diff --git a/application/views/scripts/dashboard/index.phtml b/application/views/scripts/dashboard/index.phtml
new file mode 100644
index 0000000..1d56114
--- /dev/null
+++ b/application/views/scripts/dashboard/index.phtml
@@ -0,0 +1,26 @@
+
+compact): ?>
+= $this->tabs ?>
+
+
+dashboard): ?>
+
+ = $this->dashboard ?>
+
+
+
+
= $this->escape($this->translate('Welcome to Icinga Web!')) ?>
+
+ hasPermission('config/modules')) {
+ echo $this->escape($this->translate(
+ 'Currently there is no dashlet available. Please contact the administrator.'
+ ));
+ } else {
+ printf(
+ $this->escape($this->translate('Currently there is no dashlet available. This might change once you enabled some of the available %s.')),
+ $this->qlink($this->translate('modules'), 'config/modules')
+ );
+ } ?>
+
+
+
diff --git a/application/views/scripts/dashboard/new-dashlet.phtml b/application/views/scripts/dashboard/new-dashlet.phtml
new file mode 100644
index 0000000..b265a25
--- /dev/null
+++ b/application/views/scripts/dashboard/new-dashlet.phtml
@@ -0,0 +1,6 @@
+
+ = $this->tabs ?>
+
+
+ = $this->form; ?>
+
\ No newline at end of file
diff --git a/application/views/scripts/dashboard/remove-dashlet.phtml b/application/views/scripts/dashboard/remove-dashlet.phtml
new file mode 100644
index 0000000..b265a25
--- /dev/null
+++ b/application/views/scripts/dashboard/remove-dashlet.phtml
@@ -0,0 +1,6 @@
+
+ = $this->tabs ?>
+
+
+ = $this->form; ?>
+
\ No newline at end of file
diff --git a/application/views/scripts/dashboard/remove-pane.phtml b/application/views/scripts/dashboard/remove-pane.phtml
new file mode 100644
index 0000000..b265a25
--- /dev/null
+++ b/application/views/scripts/dashboard/remove-pane.phtml
@@ -0,0 +1,6 @@
+
+ = $this->tabs ?>
+
+
+ = $this->form; ?>
+
\ No newline at end of file
diff --git a/application/views/scripts/dashboard/rename-pane.phtml b/application/views/scripts/dashboard/rename-pane.phtml
new file mode 100644
index 0000000..b265a25
--- /dev/null
+++ b/application/views/scripts/dashboard/rename-pane.phtml
@@ -0,0 +1,6 @@
+
+ = $this->tabs ?>
+
+
+ = $this->form; ?>
+
\ No newline at end of file
diff --git a/application/views/scripts/dashboard/settings.phtml b/application/views/scripts/dashboard/settings.phtml
new file mode 100644
index 0000000..52d4f14
--- /dev/null
+++ b/application/views/scripts/dashboard/settings.phtml
@@ -0,0 +1,91 @@
+
+ = $this->tabs ?>
+
+
+
= t('Dashboard Settings'); ?>
+
+
+
+
+
+ = t('Dashlet Name') ?>
+
+
+ = t('Url') ?>
+
+
+
+
+
+ dashboard->getPanes() as $pane): ?>
+ getDisabled()) continue; ?>
+
+
+ isUserWidget()): ?>
+ = $this->qlink(
+ $pane->getName(),
+ 'dashboard/rename-pane',
+ array('pane' => $pane->getName()),
+ array('title' => sprintf($this->translate('Edit pane %s'), $pane->getName()))
+ ) ?>
+
+ = $this->escape($pane->getName()) ?>
+
+
+
+ = $this->qlink(
+ '',
+ 'dashboard/remove-pane',
+ array('pane' => $pane->getName()),
+ array(
+ 'icon' => 'trash',
+ 'title' => sprintf($this->translate('Remove pane %s'), $pane->getName())
+ )
+ ); ?>
+
+
+ getDashlets(); ?>
+
+
+
+ = $this->translate('No dashlets added to dashboard') ?>.
+
+
+
+
+ getDisabled()) continue; ?>
+
+
+ = $this->qlink(
+ $dashlet->getTitle(),
+ 'dashboard/update-dashlet',
+ array('pane' => $pane->getName(), 'dashlet' => $dashlet->getName()),
+ array('title' => sprintf($this->translate('Edit dashlet %s'), $dashlet->getTitle()))
+ ); ?>
+
+
+ = $this->qlink(
+ $dashlet->getUrl()->getRelativeUrl(),
+ $dashlet->getUrl()->getRelativeUrl(),
+ null,
+ array('title' => sprintf($this->translate('Show dashlet %s'), $dashlet->getTitle()))
+ ); ?>
+
+
+ = $this->qlink(
+ '',
+ 'dashboard/remove-dashlet',
+ array('pane' => $pane->getName(), 'dashlet' => $dashlet->getName()),
+ array(
+ 'icon' => 'trash',
+ 'title' => sprintf($this->translate('Remove dashlet %s from pane %s'), $dashlet->getTitle(), $pane->getTitle())
+ )
+ ); ?>
+
+
+
+
+
+
+
+
diff --git a/application/views/scripts/dashboard/update-dashlet.phtml b/application/views/scripts/dashboard/update-dashlet.phtml
new file mode 100644
index 0000000..b265a25
--- /dev/null
+++ b/application/views/scripts/dashboard/update-dashlet.phtml
@@ -0,0 +1,6 @@
+
+ = $this->tabs ?>
+
+
+ = $this->form; ?>
+
\ No newline at end of file
diff --git a/application/views/scripts/error/error.phtml b/application/views/scripts/error/error.phtml
new file mode 100644
index 0000000..5f4579a
--- /dev/null
+++ b/application/views/scripts/error/error.phtml
@@ -0,0 +1,106 @@
+compact && ! $hideControls): ?>
+
+ = $tabs ?>
+
+
+
+ $message) {
+ echo '
' . nl2br($this->escape($message)) . '
'
+ . '
'
+ . '
' . $this->escape($stackTraces[$i]) . ' ';
+ }
+} else {
+ foreach ($messages as $message) {
+ echo '
' . nl2br($this->escape($message)) . '
';
+ }
+}
+
+$libraries = \Icinga\Application\Icinga::app()->getLibraries();
+$coreReason = [];
+$modReason = [];
+
+if (isset($requiredVendor, $requiredProject) && $requiredVendor && $requiredProject) {
+ // TODO: I don't like this, can we define requirements somewhere else?
+ $coreDeps = ['icinga-php-library' => '>= 0.13', 'icinga-php-thirdparty' => '>= 0.12'];
+
+ foreach ($coreDeps as $libraryName => $requiredVersion) {
+ if (! $libraries->has($libraryName)) {
+ $coreReason[] = sprintf($this->translate(
+ 'Library "%s" is required and missing. Please install a version of it matching the required one: %s'
+ ), $libraryName, $requiredVersion);
+ } elseif (! $libraries->has($libraryName, $requiredVersion) && $libraries->get($libraryName)->isRequired($requiredVendor, $requiredProject)) {
+ $coreReason[] = sprintf($this->translate(
+ 'Library "%s" is required and installed, but its version (%s) does not satisfy the required one: %s'
+ ), $libraryName, $libraries->get($libraryName)->getVersion() ?: '-', $requiredVersion);
+ }
+ }
+
+ if (! empty($coreReason)) {
+ array_unshift($coreReason, $this->translate('You have unmet dependencies. Please check Icinga Web 2\'s installation instructions.'));
+ }
+}
+
+if (isset($module)) {
+ $manager = \Icinga\Application\Icinga::app()->getModuleManager();
+ if ($manager->hasUnmetDependencies($module->getName())) {
+ if (isset($requiredModule) && $requiredModule && isset($module->getRequiredModules()[$requiredModule])) {
+ if (! $manager->hasInstalled($requiredModule)) {
+ $modReason[] = sprintf($this->translate(
+ 'Module "%s" is required and missing. Please install a version of it matching the required one: %s'
+ ), $requiredModule, $module->getRequiredModules()[$requiredModule]);
+ } elseif (! $manager->hasEnabled($requiredModule)) {
+ $modReason[] = sprintf($this->translate(
+ 'Module "%s" is required and installed, but not enabled. Please enable module "%1$s".'
+ ), $requiredModule);
+ } elseif (! $manager->has($requiredModule, $module->getRequiredModules()[$requiredModule])) {
+ $modReason[] = sprintf($this->translate(
+ 'Module "%s" is required and installed, but its version (%s) does not satisfy the required one: %s'
+ ), $requiredModule, $manager->getModule($requiredModule, false)->getVersion(), $module->getRequiredModules()[$requiredModule]);
+ }
+ } elseif (isset($requiredVendor, $requiredProject) && $requiredVendor && $requiredProject) {
+ foreach ($module->getRequiredLibraries() as $libraryName => $requiredVersion) {
+ if (! $libraries->has($libraryName)) {
+ $modReason[] = sprintf($this->translate(
+ 'Library "%s" is required and missing. Please install a version of it matching the required one: %s'
+ ), $libraryName, $requiredVersion);
+ } elseif (! $libraries->has($libraryName, $requiredVersion) && $libraries->get($libraryName)->isRequired($requiredVendor, $requiredProject)) {
+ $modReason[] = sprintf($this->translate(
+ 'Library "%s" is required and installed, but its version (%s) does not satisfy the required one: %s'
+ ), $libraryName, $libraries->get($libraryName)->getVersion() ?: '-', $requiredVersion);
+ }
+ }
+ }
+
+ if (! empty($modReason)) {
+ array_unshift($modReason, sprintf($this->translate(
+ 'This error might have occurred because module "%s" has unmet dependencies.'
+ . ' Please check it\'s installation instructions and install missing dependencies.'
+ ), $module->getName()));
+ }
+ }
+}
+
+// The following doesn't use ipl\Html because that's what the error possibly is about
+?>
+
+
+
+
+
+
+
+
diff --git a/application/views/scripts/filter/index.phtml b/application/views/scripts/filter/index.phtml
new file mode 100644
index 0000000..5e6a63d
--- /dev/null
+++ b/application/views/scripts/filter/index.phtml
@@ -0,0 +1,11 @@
+form;
+
+if ($this->tree) {
+ echo $this->tree->render($this);
+ echo '';
+ echo $this->sqlString;
+ echo '
';
+ print_r($this->params);
+}
\ No newline at end of file
diff --git a/application/views/scripts/form/reorder-authbackend.phtml b/application/views/scripts/form/reorder-authbackend.phtml
new file mode 100644
index 0000000..34b10b3
--- /dev/null
+++ b/application/views/scripts/form/reorder-authbackend.phtml
@@ -0,0 +1,83 @@
+
diff --git a/application/views/scripts/group/form.phtml b/application/views/scripts/group/form.phtml
new file mode 100644
index 0000000..cbf0659
--- /dev/null
+++ b/application/views/scripts/group/form.phtml
@@ -0,0 +1,6 @@
+
+ = $tabs->showOnlyCloseButton(); ?>
+
+
+ = $form; ?>
+
\ No newline at end of file
diff --git a/application/views/scripts/group/list.phtml b/application/views/scripts/group/list.phtml
new file mode 100644
index 0000000..d362db4
--- /dev/null
+++ b/application/views/scripts/group/list.phtml
@@ -0,0 +1,96 @@
+compact): ?>
+
+ = $this->tabs ?>
+ = $this->paginator ?>
+
+ = $this->limiter ?>
+ = $this->sortBox ?>
+
+ = $this->backendSelection ?>
+ = $this->filterEditor ?>
+
+
+
+translate('No backend found which is able to list user groups') . '
';
+ return;
+} else {
+ $extensible = $this->hasPermission('config/access-control/groups') && $backend instanceof Extensible;
+ $reducible = $this->hasPermission('config/access-control/groups') && $backend instanceof Reducible;
+}
+?>
+
+
+ = $this->qlink(
+ $this->translate('Add a New User Group'),
+ 'group/add',
+ array('backend' => $backend->getName()),
+ array(
+ 'class' => 'button-link',
+ 'data-base-target' => '_next',
+ 'icon' => 'plus'
+ )
+ ) ?>
+
+
+hasResult()): ?>
+ = $this->translate('No user groups found matching the filter'); ?>
+
+
+
+
+
+ = $this->translate('User Group'); ?>
+
+ = $this->translate('Remove'); ?>
+
+
+
+
+
+
+
+ = $this->qlink(
+ $group->group_name,
+ 'group/show',
+ array(
+ 'backend' => $backend->getName(),
+ 'group' => $group->group_name
+ ),
+ array(
+ 'title' => sprintf(
+ $this->translate('Show detailed information for user group %s'),
+ $group->group_name
+ )
+ )
+ ); ?>
+
+
+
+ = $this->qlink(
+ null,
+ 'group/remove',
+ array(
+ 'backend' => $backend->getName(),
+ 'group' => $group->group_name
+ ),
+ array(
+ 'class' => 'action-link',
+ 'title' => sprintf($this->translate('Remove user group %s'), $group->group_name),
+ 'icon' => 'cancel'
+ )
+ ); ?>
+
+
+
+
+
+
+
diff --git a/application/views/scripts/group/show.phtml b/application/views/scripts/group/show.phtml
new file mode 100644
index 0000000..75f0b75
--- /dev/null
+++ b/application/views/scripts/group/show.phtml
@@ -0,0 +1,108 @@
+hasPermission('config/access-control/groups') && $backend instanceof Extensible;
+
+$editLink = null;
+if ($this->hasPermission('config/access-control/groups') && $backend instanceof Updatable) {
+ $editLink = $this->qlink(
+ null,
+ 'group/edit',
+ array(
+ 'backend' => $backend->getName(),
+ 'group' => $group->group_name
+ ),
+ array(
+ 'title' => sprintf($this->translate('Edit group %s'), $group->group_name),
+ 'class' => 'group-edit',
+ 'icon' => 'edit'
+ )
+ );
+}
+
+?>
+
+compact): ?>
+ = $tabs; ?>
+
+
= $this->escape($group->group_name) ?>= $editLink ?>
+
+
+ = $this->translate('Created at'); ?>
+ = $group->created_at === null ? '-' : $this->formatDateTime($group->created_at); ?>
+
+
+ = $this->translate('Last modified'); ?>
+ = $group->last_modified === null ? '-' : $this->formatDateTime($group->last_modified); ?>
+
+
+compact): ?>
+
= $this->translate('Members'); ?>
+
+ = $this->limiter; ?>
+ = $this->paginator; ?>
+ = $this->sortBox; ?>
+
+ = $this->filterEditor; ?>
+
+
+
+
+ = $this->qlink(
+ $this->translate('Add New Member'),
+ 'group/addmember',
+ array(
+ 'backend' => $backend->getName(),
+ 'group' => $group->group_name
+ ),
+ array(
+ 'icon' => 'plus',
+ 'class' => 'button-link'
+ )
+ ) ?>
+
+
+hasResult()): ?>
+
= $this->translate('No group member found matching the filter'); ?>
+
+
+
+
+
+
+ = $this->translate('Username'); ?>
+
+ = $this->translate('Remove'); ?>
+
+
+
+
+
+
+
+ hasPermission('config/access-control/users')
+ && ($userBackend = $backend->getUserBackendName($member->user_name)) !== null
+ ): ?>
+ = $this->qlink($member->user_name, 'user/show', array(
+ 'backend' => $userBackend,
+ 'user' => $member->user_name
+ ), array(
+ 'title' => sprintf($this->translate('Show detailed information about %s'), $member->user_name)
+ )); ?>
+
+ = $this->escape($member->user_name); ?>
+
+
+
+
+ getElement('user_name')->setValue($member->user_name); echo $removeForm; ?>
+
+
+
+
+
+
+
diff --git a/application/views/scripts/iframe/index.phtml b/application/views/scripts/iframe/index.phtml
new file mode 100644
index 0000000..96e9de7
--- /dev/null
+++ b/application/views/scripts/iframe/index.phtml
@@ -0,0 +1,8 @@
+
+
+ = $tabs ?>
+
+
+
+
+
diff --git a/application/views/scripts/index/welcome.phtml b/application/views/scripts/index/welcome.phtml
new file mode 100644
index 0000000..496dec9
--- /dev/null
+++ b/application/views/scripts/index/welcome.phtml
@@ -0,0 +1,2 @@
+Welcome to Icinga!
+You should install/configure some modules now!
diff --git a/application/views/scripts/inline.phtml b/application/views/scripts/inline.phtml
new file mode 100644
index 0000000..2534d44
--- /dev/null
+++ b/application/views/scripts/inline.phtml
@@ -0,0 +1,2 @@
+= $this->layout()->content ?>
+
diff --git a/application/views/scripts/joystickPagination.phtml b/application/views/scripts/joystickPagination.phtml
new file mode 100644
index 0000000..a8c24c9
--- /dev/null
+++ b/application/views/scripts/joystickPagination.phtml
@@ -0,0 +1,162 @@
+translate('%s: Show %s %u to %u out of %u', 'pagination.joystick');
+$xAxisPages = $xAxisPaginator->getPages('all');
+$yAxisPages = $yAxisPaginator->getPages('all');
+
+$flipUrl = Url::fromRequest();
+if ($flipUrl->getParam('flipped')) {
+ $flipUrl->remove('flipped');
+} else {
+ $flipUrl->setParam('flipped');
+}
+if ($flipUrl->hasParam('page')) {
+ $flipUrl->setParam('page', implode(',', array_reverse(explode(',', $flipUrl->getParam('page')))));
+}
+if ($flipUrl->hasParam('limit')) {
+ $flipUrl->setParam('limit', implode(',', array_reverse(explode(',', $flipUrl->getParam('limit')))));
+}
+
+$totalYAxisPages = $yAxisPaginator->count();
+$currentYAxisPage = $yAxisPaginator->getCurrentPageNumber();
+$prevYAxisPage = $currentYAxisPage > 1 ? $currentYAxisPage - 1 : null;
+$nextYAxisPage = $currentYAxisPage < $totalYAxisPages ? $currentYAxisPage + 1 : null;
+
+$totalXAxisPages = $xAxisPaginator->count();
+$currentXAxisPage = $xAxisPaginator->getCurrentPageNumber();
+$prevXAxisPage = $currentXAxisPage > 1 ? $currentXAxisPage - 1 : null;
+$nextXAxisPage = $currentXAxisPage < $totalXAxisPages ? $currentXAxisPage + 1 : null;
+
+?>
+
+
diff --git a/application/views/scripts/layout/announcements.phtml b/application/views/scripts/layout/announcements.phtml
new file mode 100644
index 0000000..3be6b83
--- /dev/null
+++ b/application/views/scripts/layout/announcements.phtml
@@ -0,0 +1 @@
+= $this->widget('announcements') ?>
diff --git a/application/views/scripts/layout/menu.phtml b/application/views/scripts/layout/menu.phtml
new file mode 100644
index 0000000..dfb544d
--- /dev/null
+++ b/application/views/scripts/layout/menu.phtml
@@ -0,0 +1,20 @@
+setUser($this->Auth()->getUser());
+
+if ($searchDashboard->search('dummy')->getPane('search')->hasDashlets()): ?>
+
+
+= $menuRenderer->setCssClass('primary-nav')->setElementTag('nav')->setHeading(t('Navigation')); ?>
+
diff --git a/application/views/scripts/list/applicationlog.phtml b/application/views/scripts/list/applicationlog.phtml
new file mode 100644
index 0000000..ca41c33
--- /dev/null
+++ b/application/views/scripts/list/applicationlog.phtml
@@ -0,0 +1,29 @@
+compact): ?>
+
+ = $this->tabs ?>
+ = $this->paginator ?>
+
+ = $this->limiter ?>
+
+
+
+
+logData !== null): ?>
+
+
+ logData as $value): ?>
+ datetime) ?>
+
+
+ = $this->escape($datetime->format('d.m. H:i')) ?>
+ = $this->escape($value->loglevel) ?>
+
+
+ = nl2br($this->escape($value->message), false) ?>
+
+
+
+
+
+
+
diff --git a/application/views/scripts/mixedPagination.phtml b/application/views/scripts/mixedPagination.phtml
new file mode 100644
index 0000000..e92a9c9
--- /dev/null
+++ b/application/views/scripts/mixedPagination.phtml
@@ -0,0 +1,79 @@
+pageCount <= 1) return; ?>
+
diff --git a/application/views/scripts/navigation/dashboard.phtml b/application/views/scripts/navigation/dashboard.phtml
new file mode 100644
index 0000000..f069882
--- /dev/null
+++ b/application/views/scripts/navigation/dashboard.phtml
@@ -0,0 +1,27 @@
+
+
+ = $tabs ?>
+
+
diff --git a/application/views/scripts/navigation/index.phtml b/application/views/scripts/navigation/index.phtml
new file mode 100644
index 0000000..bf08562
--- /dev/null
+++ b/application/views/scripts/navigation/index.phtml
@@ -0,0 +1,78 @@
+compact): ?>
+
+ = $this->tabs ?>
+
+ = $this->sortBox ?>
+
+ = $this->filterEditor ?>
+
+
+
+ = $this->qlink(
+ $this->translate('Create a New Navigation Item') ,
+ 'navigation/add',
+ null,
+ array(
+ 'class' => 'button-link',
+ 'data-base-target' => '_next',
+ 'icon' => 'plus',
+ 'title' => $this->translate('Create a new navigation item')
+ )
+ ) ?>
+
+
= $this->translate('You did not create any navigation item yet.') ?>
+
+
+
+
+
+ = $this->translate('Navigation') ?>
+ = $this->translate('Type') ?>
+ = $this->translate('Shared') ?>
+
+
+
+
+
+
+
+ = $this->qlink(
+ $item->name,
+ 'navigation/edit',
+ array(
+ 'name' => $item->name,
+ 'type' => $item->type
+ ),
+ array(
+ 'title' => sprintf($this->translate('Edit navigation item %s'), $item->name)
+ )
+ ) ?>
+
+
+ = $item->type && isset($types[$item->type])
+ ? $this->escape($types[$item->type])
+ : $this->escape($this->translate('Unknown')) ?>
+
+
+ = $item->owner ? $this->translate('Yes') : $this->translate('No') ?>
+
+
+ = $this->qlink(
+ '',
+ 'navigation/remove',
+ array(
+ 'name' => $item->name,
+ 'type' => $item->type
+ ),
+ array(
+ 'class' => 'action-link',
+ 'icon' => 'cancel',
+ 'title' => sprintf($this->translate('Remove navigation item %s'), $item->name)
+ )
+ ) ?>
+
+
+
+
+
+
diff --git a/application/views/scripts/navigation/shared.phtml b/application/views/scripts/navigation/shared.phtml
new file mode 100644
index 0000000..e9e9164
--- /dev/null
+++ b/application/views/scripts/navigation/shared.phtml
@@ -0,0 +1,68 @@
+compact): ?>
+
+ = $this->tabs; ?>
+
+ = $this->sortBox ?>
+
+
+
+
+
+
= $this->translate('There are currently no navigation items being shared'); ?>
+
+
+
+ = $this->translate('Shared Navigation'); ?>
+ = $this->translate('Type'); ?>
+ = $this->translate('Owner'); ?>
+ = $this->translate('Unshare'); ?>
+
+
+
+
+ = $this->qlink(
+ $item->name,
+ 'navigation/edit',
+ array(
+ 'name' => $item->name,
+ 'type' => $item->type,
+ 'owner' => $item->owner,
+ 'referrer' => 'shared'
+ ),
+ array(
+ 'title' => sprintf($this->translate('Edit shared navigation item %s'), $item->name)
+ )
+ ); ?>
+ = $item->type && isset($types[$item->type])
+ ? $this->escape($types[$item->type])
+ : $this->escape($this->translate('Unknown')); ?>
+ = $this->escape($item->owner); ?>
+ parent): ?>
+ = $this->icon(
+ 'block',
+ sprintf(
+ $this->translate(
+ 'This is a child of the navigation item %1$s. You can'
+ . ' only unshare this item by unsharing %1$s'
+ ),
+ $item->parent
+ )
+ ); ?>
+
+ = $removeForm
+ ->setDefault('name', $item->name)
+ ->setAction(Url::fromPath(
+ 'navigation/unshare',
+ array('type' => $item->type, 'owner' => $item->owner)
+ )); ?>
+
+
+
+
+
+
+
diff --git a/application/views/scripts/pivottablePagination.phtml b/application/views/scripts/pivottablePagination.phtml
new file mode 100644
index 0000000..ce18014
--- /dev/null
+++ b/application/views/scripts/pivottablePagination.phtml
@@ -0,0 +1,48 @@
+count() <= 1 && $yAxisPaginator->count() <= 1) {
+ return; // Display this pagination only if there are multiple pages
+}
+
+$fromTo = t('%s: %d to %d of %d (on the %s-axis)');
+$xAxisPages = $xAxisPaginator->getPages('all');
+$yAxisPages = $yAxisPaginator->getPages('all');
+
+?>
+
+
diff --git a/application/views/scripts/role/list.phtml b/application/views/scripts/role/list.phtml
new file mode 100644
index 0000000..352e3e2
--- /dev/null
+++ b/application/views/scripts/role/list.phtml
@@ -0,0 +1,65 @@
+
+ = $tabs ?>
+ = $this->paginator ?>
+
+ = $this->limiter ?>
+ = $this->sortBox ?>
+
+ = $this->filterEditor ?>
+
+
+ = $this->qlink(
+ $this->translate('Create a New Role') ,
+ 'role/add',
+ null,
+ array(
+ 'class' => 'button-link',
+ 'data-base-target' => '_next',
+ 'icon' => 'plus',
+ 'title' => $this->translate('Create a new role')
+ )
+ ) ?>
+hasResult()): ?>
+
= $this->translate('No roles found.') ?>
+
+
+
+
+ = $this->translate('Name') ?>
+ = $this->translate('Users') ?>
+ = $this->translate('Groups') ?>
+ = $this->translate('Inherits From') ?>
+
+
+
+
+ $role): /** @var object $role */ ?>
+
+
+ = $this->qlink(
+ $name,
+ 'role/edit',
+ array('role' => $name),
+ array('title' => sprintf($this->translate('Edit role %s'), $name))
+ ) ?>
+
+ = $this->escape($role->users) ?>
+ = $this->escape($role->groups) ?>
+ = $this->escape($role->parent) ?>
+
+ = $this->qlink(
+ '',
+ 'role/remove',
+ array('role' => $name),
+ array(
+ 'class' => 'action-link',
+ 'icon' => 'cancel',
+ 'title' => sprintf($this->translate('Remove role %s'), $name)
+ )
+ ) ?>
+
+
+
+
+
+
diff --git a/application/views/scripts/search/hint.phtml b/application/views/scripts/search/hint.phtml
new file mode 100644
index 0000000..d54c0b2
--- /dev/null
+++ b/application/views/scripts/search/hint.phtml
@@ -0,0 +1,8 @@
+
+
= $this->translate("I'm ready to search, waiting for your input") ?>
+
= $this->translate('Hint') ?>: = $this->translate(
+ 'Please use the asterisk (*) as a placeholder for wildcard searches.'
+ . " For convenience I'll always add a wildcard in front and after your"
+ . ' search string.'
+) ?>
+
diff --git a/application/views/scripts/search/index.phtml b/application/views/scripts/search/index.phtml
new file mode 100644
index 0000000..321597e
--- /dev/null
+++ b/application/views/scripts/search/index.phtml
@@ -0,0 +1,7 @@
+
+= $this->dashboard->getTabs() ?>
+
+
+
+= $this->dashboard ?>
+
diff --git a/application/views/scripts/showConfiguration.phtml b/application/views/scripts/showConfiguration.phtml
new file mode 100644
index 0000000..682b349
--- /dev/null
+++ b/application/views/scripts/showConfiguration.phtml
@@ -0,0 +1,27 @@
+
+
= $this->translate('Saving Configuration Failed'); ?>
+
+ = sprintf(
+ $this->translate('The file %s couldn\'t be stored. (Error: "%s")'),
+ $this->escape($filePath),
+ $this->escape($errorMessage)
+ ); ?>
+
+ = $this->translate('This could have one or more of the following reasons:'); ?>
+
+
+ = $this->translate('You don\'t have file-system permissions to write to the file'); ?>
+ = $this->translate('Something went wrong while writing the file'); ?>
+ = $this->translate('There\'s an application error preventing you from persisting the configuration'); ?>
+
+
+
+ = $this->translate('Details can be found in the application log. (If you don\'t have access to this log, call your administrator in this case)'); ?>
+
+ = $this->translate('In case you can access the file by yourself, you can open it and insert the config manually:'); ?>
+
+
+
+ = $this->escape($configString); ?>
+
+
diff --git a/application/views/scripts/simple-form.phtml b/application/views/scripts/simple-form.phtml
new file mode 100644
index 0000000..9bcba74
--- /dev/null
+++ b/application/views/scripts/simple-form.phtml
@@ -0,0 +1,6 @@
+
+ = $tabs ?>
+
+
+ = $form->create()->setTitle(null) // @TODO(el): create() has to be called because the UserForm is setting the title there ?>
+
diff --git a/application/views/scripts/user/form.phtml b/application/views/scripts/user/form.phtml
new file mode 100644
index 0000000..cbf0659
--- /dev/null
+++ b/application/views/scripts/user/form.phtml
@@ -0,0 +1,6 @@
+
+ = $tabs->showOnlyCloseButton(); ?>
+
+
+ = $form; ?>
+
\ No newline at end of file
diff --git a/application/views/scripts/user/list.phtml b/application/views/scripts/user/list.phtml
new file mode 100644
index 0000000..bdb5f1a
--- /dev/null
+++ b/application/views/scripts/user/list.phtml
@@ -0,0 +1,90 @@
+compact): ?>
+
+ = $this->tabs ?>
+ = $this->paginator ?>
+
+ = $this->limiter ?>
+ = $this->sortBox ?>
+
+ = $this->backendSelection ?>
+ = $this->filterEditor ?>
+
+
+
+translate('No backend found which is able to list users') . '
';
+ return;
+} else {
+ $extensible = $this->hasPermission('config/access-control/users') && $backend instanceof Extensible;
+ $reducible = $this->hasPermission('config/access-control/users') && $backend instanceof Reducible;
+}
+?>
+
+
+ = $this->qlink(
+ $this->translate('Add a New User') ,
+ 'user/add',
+ array('backend' => $backend->getName()),
+ array(
+ 'class' => 'button-link',
+ 'data-base-target' => '_next',
+ 'icon' => 'plus'
+ )
+ ) ?>
+
+
+hasResult()): ?>
+ = $this->translate('No users found matching the filter') ?>
+
+
+
+
+
+
+ = $this->translate('Username') ?>
+
+ = $this->translate('Remove') ?>
+
+
+
+
+
+
+ = $this->qlink(
+ $user->user_name,
+ 'user/show',
+ array(
+ 'backend' => $backend->getName(),
+ 'user' => $user->user_name
+ ),
+ array(
+ 'title' => sprintf($this->translate('Show detailed information about %s'), $user->user_name)
+ )
+ ) ?>
+
+ = $this->qlink(
+ null,
+ 'user/remove',
+ array(
+ 'backend' => $backend->getName(),
+ 'user' => $user->user_name
+ ),
+ array(
+ 'class' => 'action-link',
+ 'icon' => 'cancel',
+ 'title' => sprintf($this->translate('Remove user %s'), $user->user_name)
+ )
+ ) ?>
+
+
+
+
+
+
diff --git a/application/views/scripts/user/show.phtml b/application/views/scripts/user/show.phtml
new file mode 100644
index 0000000..b19c15a
--- /dev/null
+++ b/application/views/scripts/user/show.phtml
@@ -0,0 +1,138 @@
+
+
+compact): ?>
+ = $tabs; ?>
+
+
= $this->escape($user->user_name) ?>
+ hasPermission('config/access-control/users') && $backend instanceof Updatable) {
+ echo $this->qlink(
+ $this->translate('Edit User'),
+ 'user/edit',
+ array(
+ 'backend' => $backend->getName(),
+ 'user' => $user->user_name
+ ),
+ array(
+ 'class' => 'button-link',
+ 'icon' => 'edit',
+ 'title' => sprintf($this->translate('Edit user %s'), $user->user_name)
+ )
+ );
+ }
+ ?>
+
+
+ = $this->translate('State'); ?>
+ = $user->is_active === null ? '-' : ($user->is_active ? $this->translate('Active') : $this->translate('Inactive')); ?>
+
+
+ = $this->translate('Created at'); ?>
+ = $user->created_at === null ? '-' : $this->formatDateTime($user->created_at); ?>
+
+
+ = $this->translate('Last modified'); ?>
+ = $user->last_modified === null ? '-' : $this->formatDateTime($user->last_modified); ?>
+
+
+ = $this->translate('Role Memberships'); ?>
+
+ getRoles(); ?>
+
+
+
+
+ allowedToEditRoles): ?>
+ = $this->qlink(
+ $role->getName(),
+ 'role/edit',
+ ['role' => $role->getName()],
+ ['title' => sprintf($this->translate('Edit role %s'), $role->getName())]
+ );
+ $role === end($roles) ? print '' : print ', '; ?>
+
+ = $role->getName() ?>
+
+
+
+
+
+ = $this->translate('No memberships found'); ?>
+
+
+
+
+compact): ?>
+
= $this->translate('Group Memberships'); ?>
+
+ = $this->limiter; ?>
+ = $this->paginator; ?>
+ = $this->sortBox; ?>
+
+ = $this->filterEditor; ?>
+
+
+
+
+ = $this->qlink(
+ $this->translate('Create New Membership'),
+ 'user/createmembership',
+ array(
+ 'backend' => $backend->getName(),
+ 'user' => $user->user_name
+ ),
+ array(
+ 'icon' => 'plus',
+ 'class' => 'button-link'
+ )
+ ) ?>
+
+
+hasResult()): ?>
+
= $this->translate('No memberships found matching the filter'); ?>
+
+
+
+
+
+
+ = $this->translate('Group'); ?>
+ = $this->translate('Cancel', 'group.membership'); ?>
+
+
+
+
+
+
+ hasPermission('config/access-control/groups') && $membership->backend instanceof Selectable): ?>
+ = $this->qlink($membership->group_name, 'group/show', array(
+ 'backend' => $membership->backend->getName(),
+ 'group' => $membership->group_name
+ ), array(
+ 'title' => sprintf($this->translate('Show detailed information for group %s'), $membership->group_name)
+ )); ?>
+
+ = $this->escape($membership->group_name); ?>
+
+
+
+ backend instanceof Reducible): ?>
+ = $removeForm->setAction($this->url('group/removemember', array(
+ 'backend' => $membership->backend->getName(),
+ 'group' => $membership->group_name
+ ))); ?>
+
+ -
+
+
+
+
+
+
+
--
cgit v1.2.3