summaryrefslogtreecommitdiffstats
path: root/modules-available/main
diff options
context:
space:
mode:
authorSimon Rettberg2016-05-03 19:03:09 +0200
committerSimon Rettberg2016-05-03 19:03:09 +0200
commit50404f3b23b7fd6aeae4c9d2f6df0ea25e984e66 (patch)
tree05e99fdffa696434960d7c77966c0bc36d6339e8 /modules-available/main
parentSecond half of merge.... (diff)
downloadslx-admin-50404f3b23b7fd6aeae4c9d2f6df0ea25e984e66.tar.gz
slx-admin-50404f3b23b7fd6aeae4c9d2f6df0ea25e984e66.tar.xz
slx-admin-50404f3b23b7fd6aeae4c9d2f6df0ea25e984e66.zip
WIP
Diffstat (limited to 'modules-available/main')
-rw-r--r--modules-available/main/category-icons.json7
-rw-r--r--modules-available/main/config.json3
-rw-r--r--modules-available/main/lang/de/module.json4
-rw-r--r--modules-available/main/lang/de/templates/dialog-generic.json3
-rw-r--r--modules-available/main/lang/de/templates/main-menu.json22
-rw-r--r--modules-available/main/lang/de/templates/messagebox-error.json3
-rw-r--r--modules-available/main/lang/de/templates/messagebox-info.json1
-rw-r--r--modules-available/main/lang/de/templates/messagebox-success.json1
-rw-r--r--modules-available/main/lang/de/templates/messagebox-warning.json1
-rw-r--r--modules-available/main/lang/de/templates/page-main-guest.json7
-rw-r--r--modules-available/main/lang/de/templates/page-main.json11
-rw-r--r--modules-available/main/lang/en/categories.json6
-rw-r--r--modules-available/main/lang/en/module.json13
-rw-r--r--modules-available/main/lang/en/templates/dialog-generic.json3
-rw-r--r--modules-available/main/lang/en/templates/main-menu.json28
-rw-r--r--modules-available/main/lang/en/templates/messagebox-warning.json2
-rw-r--r--modules-available/main/lang/en/templates/page-main-guest.json7
-rw-r--r--modules-available/main/lang/en/templates/page-main.json11
-rw-r--r--modules-available/main/lang/pt/module.json14
-rw-r--r--modules-available/main/page.inc.php64
-rw-r--r--modules-available/main/templates/dialog-generic.html13
-rw-r--r--modules-available/main/templates/footer.html2
-rw-r--r--modules-available/main/templates/main-menu.html72
-rw-r--r--modules-available/main/templates/messagebox-error.html1
-rw-r--r--modules-available/main/templates/messagebox-info.html1
-rw-r--r--modules-available/main/templates/messagebox-success.html1
-rw-r--r--modules-available/main/templates/messagebox-warning.html1
-rw-r--r--modules-available/main/templates/page-login.html11
-rw-r--r--modules-available/main/templates/page-main-guest.html15
-rw-r--r--modules-available/main/templates/page-main.html36
-rw-r--r--modules-available/main/templates/page-minilinux.html14
-rw-r--r--modules-available/main/templates/page-news.html57
-rw-r--r--modules-available/main/templates/page-syslog.html58
-rw-r--r--modules-available/main/templates/page-vmstore.html111
-rw-r--r--modules-available/main/templates/pagenav.html16
-rw-r--r--modules-available/main/templates/tm-callback-trigger.html15
36 files changed, 635 insertions, 0 deletions
diff --git a/modules-available/main/category-icons.json b/modules-available/main/category-icons.json
new file mode 100644
index 00000000..97b76eac
--- /dev/null
+++ b/modules-available/main/category-icons.json
@@ -0,0 +1,7 @@
+{
+ "cities":"tower",
+ "content":"th",
+ "settings":"cog",
+ "status":"tasks",
+ "users":"user"
+} \ No newline at end of file
diff --git a/modules-available/main/config.json b/modules-available/main/config.json
new file mode 100644
index 00000000..4da67ef8
--- /dev/null
+++ b/modules-available/main/config.json
@@ -0,0 +1,3 @@
+{
+ "enabled":"true"
+}
diff --git a/modules-available/main/lang/de/module.json b/modules-available/main/lang/de/module.json
new file mode 100644
index 00000000..f03e52ad
--- /dev/null
+++ b/modules-available/main/lang/de/module.json
@@ -0,0 +1,4 @@
+{
+ "module_name": "Dashboard",
+ "page_title": "Startseite"
+}
diff --git a/modules-available/main/lang/de/templates/dialog-generic.json b/modules-available/main/lang/de/templates/dialog-generic.json
new file mode 100644
index 00000000..ff429fdd
--- /dev/null
+++ b/modules-available/main/lang/de/templates/dialog-generic.json
@@ -0,0 +1,3 @@
+{
+ "lang_next": "Weiter"
+} \ No newline at end of file
diff --git a/modules-available/main/lang/de/templates/main-menu.json b/modules-available/main/lang/de/templates/main-menu.json
new file mode 100644
index 00000000..057bfcf2
--- /dev/null
+++ b/modules-available/main/lang/de/templates/main-menu.json
@@ -0,0 +1,22 @@
+{
+ "lang_configurationBasic": "PXE\/Boot",
+ "lang_configurationVariables": "KonfigurationsVariablen",
+ "lang_dozmod": "Dozentenmodul",
+ "lang_eventLog": "Server Log",
+ "lang_internetAccess": "Internetzugriff",
+ "lang_language": "Sprachen",
+ "lang_localization": "Lokalisierung + Integration",
+ "lang_locations": "R\u00e4ume\/Orte",
+ "lang_login": "Anmelden",
+ "lang_logout": "Abmelden",
+ "lang_needsSetup": "Einrichtung unvollst\u00e4ndig",
+ "lang_news": "vmChooser News",
+ "lang_server": "Server",
+ "lang_serverStatus": "Server Status",
+ "lang_settings": "Einstellungen",
+ "lang_status": "Status",
+ "lang_translations": "\u00dcbersetzungen",
+ "lang_vmLocation": "VM Speicherort",
+ "lang_warning": "Warnung",
+ "lang_webInterface": "Web-Schnittstelle"
+}
diff --git a/modules-available/main/lang/de/templates/messagebox-error.json b/modules-available/main/lang/de/templates/messagebox-error.json
new file mode 100644
index 00000000..c44dc44f
--- /dev/null
+++ b/modules-available/main/lang/de/templates/messagebox-error.json
@@ -0,0 +1,3 @@
+[
+
+] \ No newline at end of file
diff --git a/modules-available/main/lang/de/templates/messagebox-info.json b/modules-available/main/lang/de/templates/messagebox-info.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/modules-available/main/lang/de/templates/messagebox-info.json
@@ -0,0 +1 @@
+{}
diff --git a/modules-available/main/lang/de/templates/messagebox-success.json b/modules-available/main/lang/de/templates/messagebox-success.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/modules-available/main/lang/de/templates/messagebox-success.json
@@ -0,0 +1 @@
+{}
diff --git a/modules-available/main/lang/de/templates/messagebox-warning.json b/modules-available/main/lang/de/templates/messagebox-warning.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/modules-available/main/lang/de/templates/messagebox-warning.json
@@ -0,0 +1 @@
+{}
diff --git a/modules-available/main/lang/de/templates/page-main-guest.json b/modules-available/main/lang/de/templates/page-main-guest.json
new file mode 100644
index 00000000..876fccac
--- /dev/null
+++ b/modules-available/main/lang/de/templates/page-main-guest.json
@@ -0,0 +1,7 @@
+{
+ "lang_introGuest": "Dies ist das Administrations-Interface der lokalen bwLehrpool-Installation. Bitte authentifizieren Sie sich, um Einstellungen vorzunehmen.",
+ "lang_login": "Anmelden",
+ "lang_noExistingAccount": "Es existiert noch kein Administrator-Zugang f\u00fcr diesen Satelliten-Server.",
+ "lang_register": "Registrieren",
+ "lang_welcome": "Willkommen"
+} \ No newline at end of file
diff --git a/modules-available/main/lang/de/templates/page-main.json b/modules-available/main/lang/de/templates/page-main.json
new file mode 100644
index 00000000..a927e4ce
--- /dev/null
+++ b/modules-available/main/lang/de/templates/page-main.json
@@ -0,0 +1,11 @@
+{
+ "lang_bootMenuWarning": "Das Bootmen\u00fc ist veraltet oder wurde noch nicht generiert.",
+ "lang_configure": "Konfigurieren",
+ "lang_intro": "Dies ist die bwLehrpool Konfigurationsoberfl\u00e4che.",
+ "lang_minilinuxMissing": "Wichtige Dateien der MiniLinux-Installation fehlen.",
+ "lang_numerOfImagesMarkedForDeletion": "Zur L\u00f6schung markierte Abbilder",
+ "lang_systemConfiguration": "Systemkonfiguration",
+ "lang_systemConfigurationNotChosen": "Es wurde noch keine Systemkonfiguration ausgew\u00e4hlt.",
+ "lang_vmLocationNotSet": "Es ist noch kein Speicherort f\u00fcr die Virtuellen Maschinen festgelegt.",
+ "lang_welcome": "Willkommen"
+} \ No newline at end of file
diff --git a/modules-available/main/lang/en/categories.json b/modules-available/main/lang/en/categories.json
new file mode 100644
index 00000000..3d67bcfd
--- /dev/null
+++ b/modules-available/main/lang/en/categories.json
@@ -0,0 +1,6 @@
+{
+ "settings": "Settings",
+ "status": "Status",
+ "content": "Content",
+ "users": "Users"
+}
diff --git a/modules-available/main/lang/en/module.json b/modules-available/main/lang/en/module.json
new file mode 100644
index 00000000..613213d9
--- /dev/null
+++ b/modules-available/main/lang/en/module.json
@@ -0,0 +1,13 @@
+{
+ "lang_intro": "Esta \u00e9 a interface de configura\u00e7\u00e3o do OpenSLX.",
+ "lang_introGuest": "This is the administration interface of the local bwLehrpool intallation. Please authenticate yourself to adjust settings.",
+ "lang_language": "Language",
+ "lang_login": "Login",
+ "lang_logout": "Logout",
+ "lang_needsSetup": "Setup incomplete",
+ "lang_next": "Next",
+ "lang_noExistingAccount": "No account has been created yet. Sign up to become the administrator.",
+ "lang_register": "Register",
+ "lang_warning": "Warning",
+ "lang_welcome": "Welcome"
+} \ No newline at end of file
diff --git a/modules-available/main/lang/en/templates/dialog-generic.json b/modules-available/main/lang/en/templates/dialog-generic.json
new file mode 100644
index 00000000..c7551ed3
--- /dev/null
+++ b/modules-available/main/lang/en/templates/dialog-generic.json
@@ -0,0 +1,3 @@
+{
+ "lang_next": "Next"
+} \ No newline at end of file
diff --git a/modules-available/main/lang/en/templates/main-menu.json b/modules-available/main/lang/en/templates/main-menu.json
new file mode 100644
index 00000000..635c7aa8
--- /dev/null
+++ b/modules-available/main/lang/en/templates/main-menu.json
@@ -0,0 +1,28 @@
+{
+ "lang_backup": "Backup\/Restore",
+ "lang_client": "Client",
+ "lang_clientLog": "Client Log",
+ "lang_clientStats": "Client statistics",
+ "lang_configurationBasic": "PXE\/Boot",
+ "lang_configurationVariables": "Configuration Variables",
+ "lang_dozmod": "Tutor module",
+ "lang_eventLog": "Server Log",
+ "lang_internetAccess": "Internet access",
+ "lang_language": "Language",
+ "lang_localization": "Localization",
+ "lang_locations": "Rooms\/Locations",
+ "lang_login": "Login",
+ "lang_logout": "Logout",
+ "lang_needsSetup": "Setup incomplete",
+ "lang_news": "vmChooser news",
+ "lang_server": "Server",
+ "lang_serverStatus": "Server status",
+ "lang_settings": "Settings",
+ "lang_status": "Status",
+ "lang_translations": "Translations",
+ "lang_vmLocation": "VM Location",
+ "lang_warning": "Warning",
+ "lang_webInterface": "Web interface",
+ "lang_loggedInPrefix": "Logged in as",
+ "lang_loggedInSuffix": " "
+}
diff --git a/modules-available/main/lang/en/templates/messagebox-warning.json b/modules-available/main/lang/en/templates/messagebox-warning.json
new file mode 100644
index 00000000..2c63c085
--- /dev/null
+++ b/modules-available/main/lang/en/templates/messagebox-warning.json
@@ -0,0 +1,2 @@
+{
+}
diff --git a/modules-available/main/lang/en/templates/page-main-guest.json b/modules-available/main/lang/en/templates/page-main-guest.json
new file mode 100644
index 00000000..6526f5bd
--- /dev/null
+++ b/modules-available/main/lang/en/templates/page-main-guest.json
@@ -0,0 +1,7 @@
+{
+ "lang_introGuest": "This is the administration interface of the local bwLehrpool intallation. Please authenticate yourself to adjust settings.",
+ "lang_login": "Login",
+ "lang_noExistingAccount": "No account has been created yet. Sign up to become the administrator.",
+ "lang_register": "Register",
+ "lang_welcome": "Welcome"
+} \ No newline at end of file
diff --git a/modules-available/main/lang/en/templates/page-main.json b/modules-available/main/lang/en/templates/page-main.json
new file mode 100644
index 00000000..8031ac1c
--- /dev/null
+++ b/modules-available/main/lang/en/templates/page-main.json
@@ -0,0 +1,11 @@
+{
+ "lang_bootMenuWarning": "The boot menu is outdated or has not been generated.",
+ "lang_configure": "Configure",
+ "lang_intro": "This is the bwLehrpool configuration interface.",
+ "lang_minilinuxMissing": "Important files from the mini Linux installation are missing.",
+ "lang_numerOfImagesMarkedForDeletion": "Images marked for deletion",
+ "lang_systemConfiguration": "System Configuration",
+ "lang_systemConfigurationNotChosen": "A system configuration has not been chosen yet.",
+ "lang_vmLocationNotSet": "A location for the virtual machine is not set yet.",
+ "lang_welcome": "Welcome"
+} \ No newline at end of file
diff --git a/modules-available/main/lang/pt/module.json b/modules-available/main/lang/pt/module.json
new file mode 100644
index 00000000..e4e35acd
--- /dev/null
+++ b/modules-available/main/lang/pt/module.json
@@ -0,0 +1,14 @@
+{
+ "lang_intro": "Esta \u00e9 a interface de configura\u00e7\u00e3o do OpenSLX.",
+ "lang_introGuest": "Esta \u00e9 a interface de administra\u00e7\u00e3o da instala\u00e7\u00e3o local do bwLehrpool. Por favor, autentique-se para ajustar op\u00e7\u00f5es.",
+ "lang_language": "L\u00edngua",
+ "lang_login": "Entrar",
+ "lang_logout": "Sair",
+ "lang_needsSetup": "Instala\u00e7\u00e3o incompleta",
+ "lang_next": "Pr\u00f3ximo",
+ "lang_noExistingAccount": "Nenhuma conta foi criada ainda. Registre-se para se tornar administrador.",
+ "lang_register": "Registrar",
+ "lang_translations": "Tradu\u00e7\u00f5es",
+ "lang_warning": "Aten\u00e7\u00e3o",
+ "lang_welcome": "Bem-vindo"
+}
diff --git a/modules-available/main/page.inc.php b/modules-available/main/page.inc.php
new file mode 100644
index 00000000..369d4b54
--- /dev/null
+++ b/modules-available/main/page.inc.php
@@ -0,0 +1,64 @@
+<?php
+
+class Page_Main extends Page
+{
+
+ private $sysconfig;
+ private $minilinux;
+ private $vmstore;
+ private $ipxe;
+ private $delPending;
+
+ protected function doPreprocess()
+ {
+ User::load();
+ if (User::isLoggedIn()) {
+ $this->sysconfig = !file_exists(CONFIG_HTTP_DIR . '/default/config.tgz');
+ $this->minilinux = !file_exists(CONFIG_HTTP_DIR . '/default/kernel') || !file_exists(CONFIG_HTTP_DIR . '/default/initramfs-stage31') || !file_exists(CONFIG_HTTP_DIR . '/default/stage32.sqfs');
+ $this->vmstore = !is_array(Property::getVmStoreConfig());
+ $this->ipxe = !preg_match('/^\d+\.\d+\.\d+\.\d+$/', Property::getServerIp());
+ Property::setNeedsSetup(($this->sysconfig || $this->minilinux || $this->vmstore || $this->ipxe) ? 1 : 0);
+ $res = Database::queryFirst("SELECT Count(*) AS cnt FROM sat.imageversion WHERE deletestate = 'SHOULD_DELETE'", array(), true);
+ $this->delPending = isset($res['cnt']) ? $res['cnt'] : 0;
+ }
+ }
+
+ protected function doRender()
+ {
+ // Render::setTitle('abc');
+
+ if (!User::isLoggedIn()) {
+ Render::addTemplate('page-main-guest', array(
+ 'register' => (Database::queryFirst('SELECT userid FROM user LIMIT 1') === false)
+ ));
+ return;
+ }
+ // Logged in here
+
+ // Load news
+ $lines = array();
+ $paginate = new Paginate("SELECT newsid, dateline, title, content FROM news ORDER BY dateline DESC", 10);
+ $res = $paginate->exec();
+ while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
+ if(count($lines) >= 3) break;
+ $lines[] = $row;
+ }
+
+ Render::addTemplate('page-main', array(
+ 'user' => User::getName(),
+ 'sysconfig' => $this->sysconfig,
+ 'minilinux' => $this->minilinux,
+ 'vmstore' => $this->vmstore,
+ 'ipxe' => $this->ipxe,
+ 'delpending' => $this->delPending,
+ 'news' => $lines
+ ));
+ }
+
+ protected function doAjax()
+ {
+ User::isLoggedIn();
+ die('Status: DB running');
+ }
+
+}
diff --git a/modules-available/main/templates/dialog-generic.html b/modules-available/main/templates/dialog-generic.html
new file mode 100644
index 00000000..5face8ce
--- /dev/null
+++ b/modules-available/main/templates/dialog-generic.html
@@ -0,0 +1,13 @@
+<div class="modal-dialog slx-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h4 class="modal-title">{{title}}</h4>
+ </div>
+ <div class="modal-body">
+ {{{body}}}
+ </div>
+ <div class="modal-footer">
+ {{#next}}<a class="btn btn-primary" href="{{next}}">{{lang_next}} &raquo;</a>{{/next}}
+ </div>
+ </div>
+</div> \ No newline at end of file
diff --git a/modules-available/main/templates/footer.html b/modules-available/main/templates/footer.html
new file mode 100644
index 00000000..8cf71a5c
--- /dev/null
+++ b/modules-available/main/templates/footer.html
@@ -0,0 +1,2 @@
+<hr>
+<div class="pull-right slx-footer">{{text}}</div> \ No newline at end of file
diff --git a/modules-available/main/templates/main-menu.html b/modules-available/main/templates/main-menu.html
new file mode 100644
index 00000000..65085ee6
--- /dev/null
+++ b/modules-available/main/templates/main-menu.html
@@ -0,0 +1,72 @@
+<div class="slx-topbar">
+ <div>
+ {{#dbupdate}}
+ <a href="api.php?do=update"><span class="slx-warning-badge badge"><span class="glyphicon glyphicon-exclamation-sign"></span> DB-Update</span></a>
+ {{/dbupdate}}
+ {{#warning}}
+ <a href="?do=EventLog"><span class="slx-warning-badge badge"><span class="glyphicon glyphicon-exclamation-sign"></span> {{lang_warning}}</span></a>
+ {{/warning}}
+ {{#needsSetup}}
+ <a href="?do=Main"><span class="slx-warning-badge badge"><span class="glyphicon glyphicon-exclamation-sign"></span> {{lang_needsSetup}}</span></a>
+ {{/needsSetup}}
+ </div>
+</div>
+<div class="sidebar-bg"></div>
+<nav class="navbar navbar-inverse sidebar" role="navigation">
+ <div class="container-fluid">
+ <!-- Brand and toggle get grouped for better mobile display -->
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-sidebar-navbar-collapse-1">
+ <span class="sr-only">{{lang_toggleNavigation}}</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="#">OpenSLX</a>
+ </div>
+ <!-- Collect the nav links, forms, and other content for toggling -->
+ <div class="collapse navbar-collapse" id="bs-sidebar-navbar-collapse-1">
+ <ul class="nav navbar-nav">
+ {{#categories}}
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle slx-nopointer" data-toggle="dropdown"><span class="sidebar-visible-inline {{icon}}"></span> {{displayName}}<b class="caret sidebar-hide"></b></a>
+ <ul class="dropdown-menu sidebar-visible-block" role="menu">
+ {{#modules}}
+ <li class="{{className}}"><a href="?do={{identifier}}">{{displayName}}</a></li>
+ {{/modules}}
+ </ul>
+ </li>
+ {{/categories}}
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <img src="lang/{{current_lang}}/flag.png" alt="{{current_lang}}">
+ <span class="sidebar-visible-inline">{{lang_language}}</span>
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li><a href="?do=Translation">{{lang_translations}}</a></li>
+ <li class="dropdown-header">{{lang_language}}</li>
+ {{#langs}}
+ <li><a href="?lang={{cc}}&amp;url={{url}}"><img src="lang/{{cc}}/flag.png" alt="{{name}}"> {{name}}</a></li>
+ {{/langs}}
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-right">
+ {{#user}}
+ <li><span>{{lang_loggedInPrefix}} {{user}} {{lang_loggedInSuffix}}</span></li>
+ <li>
+ <form method="post" action="?do=Session">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="action" value="logout">
+ <button class="btn btn-default btn-xs" type="submit">{{lang_logout}}</button>
+ </form>
+ </li>
+ {{/user}}
+ {{^user}}
+ <li><a href="?do=Session&amp;action=login">{{lang_login}}</a></li>
+ {{/user}}
+ </ul>
+ </div>
+ </div>
+</nav>
diff --git a/modules-available/main/templates/messagebox-error.html b/modules-available/main/templates/messagebox-error.html
new file mode 100644
index 00000000..873716c9
--- /dev/null
+++ b/modules-available/main/templates/messagebox-error.html
@@ -0,0 +1 @@
+<div class="alert alert-danger"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> {{{message}}}</div>
diff --git a/modules-available/main/templates/messagebox-info.html b/modules-available/main/templates/messagebox-info.html
new file mode 100644
index 00000000..eb9d518a
--- /dev/null
+++ b/modules-available/main/templates/messagebox-info.html
@@ -0,0 +1 @@
+<div class="alert alert-info"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> {{{message}}}</div>
diff --git a/modules-available/main/templates/messagebox-success.html b/modules-available/main/templates/messagebox-success.html
new file mode 100644
index 00000000..93674d69
--- /dev/null
+++ b/modules-available/main/templates/messagebox-success.html
@@ -0,0 +1 @@
+<div class="alert alert-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> {{{message}}}</div>
diff --git a/modules-available/main/templates/messagebox-warning.html b/modules-available/main/templates/messagebox-warning.html
new file mode 100644
index 00000000..b02e2e8a
--- /dev/null
+++ b/modules-available/main/templates/messagebox-warning.html
@@ -0,0 +1 @@
+<div class="alert alert-warning"><span class="glyphicon glyphicon-warning" aria-hidden="true"></span> {{{message}}}</div>
diff --git a/modules-available/main/templates/page-login.html b/modules-available/main/templates/page-login.html
new file mode 100644
index 00000000..247e9a55
--- /dev/null
+++ b/modules-available/main/templates/page-login.html
@@ -0,0 +1,11 @@
+<form class="form-signin" action="?do=Session" method="post">
+ <h2 class="form-signin-heading">{{lang_enter}}</h2>
+ <input type="text" name="user" class="form-control" placeholder="{{lang_username}}" autofocus>
+ <input type="password" name="pass" class="form-control" placeholder="{{lang_password}}">
+ <!--label class="checkbox">
+ <input type="checkbox" name="remember" value="remember-me"> {{lang_rememberID}}
+ </label-->
+ <button class="btn btn-lg btn-primary btn-block" type="submit">{{lang_login}}</button>
+ <a class="btn btn-lg btn-primary btn-block" href="?do=AddUser">{{lang_register}}</a>
+ <input type="hidden" name="action" value="login">
+</form> \ No newline at end of file
diff --git a/modules-available/main/templates/page-main-guest.html b/modules-available/main/templates/page-main-guest.html
new file mode 100644
index 00000000..28b0d04c
--- /dev/null
+++ b/modules-available/main/templates/page-main-guest.html
@@ -0,0 +1,15 @@
+<div class="col-md-10" style="float:none; margin: 0 auto;">
+ <div class="jumbotron">
+ <h1>{{lang_welcome}}</h1>
+ <p>{{lang_introGuest}}</p>
+ {{#register}}
+ <ul class="list-group">
+ <li class="list-group-item list-group-item-info">
+ {{lang_noExistingAccount}}
+ <a href="?do=AddUser" class="btn btn-primary btn-lg">{{lang_register}} &raquo;</a>
+ </li>
+ </ul>
+ {{/register}}
+ <p><a href="?do=Session&amp;action=login" class="btn btn-primary btn-lg">{{lang_login}} &raquo;</a></p>
+ </div>
+</div>
diff --git a/modules-available/main/templates/page-main.html b/modules-available/main/templates/page-main.html
new file mode 100644
index 00000000..39e4e74e
--- /dev/null
+++ b/modules-available/main/templates/page-main.html
@@ -0,0 +1,36 @@
+<div class="jumbotron">
+ <h1>{{lang_welcome}}, {{user}}</h1>
+ <p>{{lang_intro}}</p>
+
+</div>
+<ul class="list-group">
+{{#vmstore}}
+ <li class="list-group-item list-group-item-text">
+ {{lang_vmLocationNotSet}}
+ <a class="btn btn-sm btn-primary" href="?do=VmStore">{{lang_configure}} &raquo;</a>
+ </li>
+{{/vmstore}}
+{{#ipxe}}
+ <li class="list-group-item list-group-item-text">
+ {{lang_bootMenuWarning}}
+ <a class="btn btn-sm btn-primary" href="?do=ServerSetup">{{lang_configure}} &raquo;</a>
+ </li>
+{{/ipxe}}
+{{#minilinux}}
+ <li class="list-group-item list-group-item-text">
+ {{lang_minilinuxMissing}}
+ <a class="btn btn-sm btn-primary" href="?do=MiniLinux">MiniLinux &raquo;</a>
+ </li>
+{{/minilinux}}
+{{#sysconfig}}
+ <li class="list-group-item list-group-item-text">
+ {{lang_systemConfigurationNotChosen}}
+ <a class="btn btn-sm btn-primary" href="?do=SysConfig">{{lang_systemConfiguration}} &raquo;</a>
+ </li>
+{{/sysconfig}}
+{{#delpending}}
+ <li class="list-group-item list-group-item-text">
+ <a href="?do=DozMod">{{lang_numerOfImagesMarkedForDeletion}}: {{delpending}}</a>
+ </li>
+{{/delpending}}
+</ul>
diff --git a/modules-available/main/templates/page-minilinux.html b/modules-available/main/templates/page-minilinux.html
new file mode 100644
index 00000000..dc13e6b0
--- /dev/null
+++ b/modules-available/main/templates/page-minilinux.html
@@ -0,0 +1,14 @@
+<div id="systemlist">
+ <div class="panel panel-default">{{lang_listObtained}}</div>
+</div>
+
+<script type="text/javascript"><!--
+ function loadSystemList(version) {
+ $('#systemlist').load('{{{listurl}}}', { token: TOKEN, version: version }, function( response, status, xhr ) {
+ if ( status === "error" ) {
+ var msg = "{{lang_errorGetting}}";
+ $( "#systemlist" ).html( msg + xhr.status + " " + xhr.statusText );
+ }
+ });
+ }
+// --></script> \ No newline at end of file
diff --git a/modules-available/main/templates/page-news.html b/modules-available/main/templates/page-news.html
new file mode 100644
index 00000000..8e400498
--- /dev/null
+++ b/modules-available/main/templates/page-news.html
@@ -0,0 +1,57 @@
+<div class="panel panel-default">
+ <div class="panel-heading">
+ {{lang_editNews}}
+ </div>
+ <div class="panel-body">
+ <p>{{lang_newsIntro}}</p>
+ <form action="?do=News&amp;action=save" method="post">
+ <div class="form-group">
+ <label for="news-title-id">{{lang_title}}</label>
+ <input type="text" name="news-title" id ="news-title-id" class="form-control" placeholder="{{welcome}}" value="{{latestTitle}}">
+ </div>
+ <div class="form-group">
+ <label for="news-content-id">{{lang_content}}</label>
+ <textarea name="news-content" id ="news-content-id" class="form-control" rows="5" cols="30" placeholder="">{{latestContent}}</textarea>
+ </div>
+ <p>{{lang_latestUpdate}}: {{latestDate}}</p>
+ <button class="btn btn-primary btn-sm" type="submit">{{lang_save}}</button>
+ <input type="hidden" name="token" value="{{token}}">
+ </form>
+ </div>
+</div>
+
+<div class="panel panel-default">
+ <div class="panel-heading">
+ {{lang_newsOld}}
+ </div>
+ <div class="panel-body">
+ <div class="table-responsive">
+ <form method="post" action="?do=News&amp;action=delete">
+ <input type="hidden" name="token" value="{{token}}">
+ <table class="table table-stripped table-condensed">
+ <thead>
+ <tr>
+ <th>{{lang_date}}</th>
+ <th>{{lang_title}}</th>
+ <th>{{lang_content}}</th>
+ <th></th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#list}}
+ <tr {{#active}}class="active"{{/active}}>
+ <td class="text-left nowrap">{{date}}</td>
+ <td class="slx-ellipsis">{{title}}</td>
+ <td class="slx-ellipsis">{{content}}</td>
+ <td>
+ <a class="btn btn-primary btn-xs" href="?do=news&amp;newsid={{newsid}}&amp;action=show"><span class="glyphicon glyphicon-share-alt"></span> {{lang_show}}</a>
+ <button class="btn btn-danger btn-xs" type="submit" name="newsid" value="{{newsid}}"><span class="glyphicon glyphicon-remove"></span> {{lang_delete}}</button>
+ </td>
+ </tr>
+ {{/list}}
+ </tbody>
+ </table>
+ </form>
+ </div>
+ </div>
+</div>
diff --git a/modules-available/main/templates/page-syslog.html b/modules-available/main/templates/page-syslog.html
new file mode 100644
index 00000000..98e94291
--- /dev/null
+++ b/modules-available/main/templates/page-syslog.html
@@ -0,0 +1,58 @@
+<h1>{{lang_clientLog}}</h1>
+<form method="post" action="?do=SysLog">
+ <input type="hidden" name="token" value="{{token}}">
+ <div class="input-group">
+ <span class="input-group-addon">{{lang_filter}}</span>
+ <input id="filterstring" type="text" placeholder="id" value="{{filter}}" name="filter" data-role="tagsinput" />
+ <span class="input-group-addon">
+ <input type="checkbox" name="not" {{#not}}checked="checked"{{/not}}> {{lang_not}}
+ </span>
+ <span class="input-group-btn">
+ <button class="btn btn-default" type="submit">{{lang_go}}</button>
+ </span>
+ </div>
+</form>
+{{{pagenav}}}
+<table class="table table-striped table-condensed">
+ <thead>
+ <th width="1"></th>
+ <th>{{lang_when}}</th>
+ <th>{{lang_client}}</th>
+ <th>{{lang_event}}</th>
+ <th width="1">{{lang_details}}</th>
+ </thead>
+ <tbody>
+ {{#list}}
+ <tr>
+ <td><span class="glyphicon {{icon}}" title="{{logtypeid}}" onclick="$('#filterstring').tagsinput('add', '{{logtypeid}}')"></span></td>
+ <td class="text-right" nowrap="nowrap">{{date}}</td>
+ <td>{{clientip}}</td>
+ <td>{{description}}</td>
+ <td>{{#extra}}
+ <a class="btn btn-default btn-xs pull-left" onclick="$('#details-body').html($('#extra-{{logid}}').html())" data-toggle="modal" data-target="#myModal">&raquo;</a>
+ <div class="hidden" id="extra-{{logid}}">{{extra}}</div>
+ {{/extra}}</td>
+ </tr>
+ {{/list}}
+ </tbody>
+</table>
+{{{pagenav}}}
+
+<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
+ <div class="modal-dialog modal-lg">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
+ <h4 class="modal-title" id="myModalLabel">{{lang_details}}</h4>
+ </div>
+ <div class="modal-body">
+ <pre id="details-body"></pre>
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
+ </div>
+ </div>
+ </div>
+</div>
+
+
diff --git a/modules-available/main/templates/page-vmstore.html b/modules-available/main/templates/page-vmstore.html
new file mode 100644
index 00000000..fe2c5225
--- /dev/null
+++ b/modules-available/main/templates/page-vmstore.html
@@ -0,0 +1,111 @@
+<form role="form" method="post" action="?do=VmStore">
+ <input type="text" name="prevent_autofill" id="prevent_autofill" value="" style="display:none;">
+ <input type="password" name="password_fake" id="password_fake" value="" style="display:none;">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="action" value="setstore">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ {{lang_vmLocation}} <a class="btn btn-default" data-toggle="modal" data-target="#help-store"><span class="glyphicon glyphicon-question-sign"></span></a>
+ </div>
+ <div class="panel-body slx-md-width">
+ <p>{{lang_vmLocationChoose}}</p>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <input type="radio" name="storetype" value="internal" {{pre-internal}}> {{lang_intern}}
+ </div>
+ <div class="panel-body">
+ {{lang_noAdditionalInformation}}
+ </div>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <input type="radio" name="storetype" value="nfs" {{pre-nfs}}> NFS
+ <a class="btn btn-default btn-sm" data-toggle="modal" data-target="#help-nfs"><span class="glyphicon glyphicon-question-sign"></span></a>
+ </div>
+ <div class="panel-body">
+ <label for="nfsaddr">NFS-Export</label>
+ <input type="text" class="form-control" name="nfsaddr" value="{{nfsaddr}}" placeholder="1.2.3.4:/export/bwlp" id="nfsaddr">
+ </div>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <input type="radio" name="storetype" value="cifs" {{pre-cifs}}> CIFS
+ </div>
+ <div class="panel-body">
+ <label for="cifsaddr">UNC-Pfad</label>
+ <input type="text" class="form-control" name="cifsaddr" value="{{cifsaddr}}" placeholder="\\samba.server.example.com\bwlp" id="cifsaddr">
+ <br>
+ <label for="cifsuser">{{lang_readWrite}}</label>
+ <div class="input-group">
+ <span class="input-group-addon slx-ga">
+ {{lang_username}}
+ </span>
+ <input type="text" class="form-control" name="cifsuser" value="{{cifsuser}}" placeholder="{{lang_username}}" id="cifsuser">
+ <span class="input-group-addon">
+ {{lang_password}}
+ </span>
+ <input type="{{password_type}}" class="form-control" name="cifspasswd" value="{{cifspasswd}}" placeholder="{{lang_password}}">
+ </div>
+ <br>
+ <label for="cifsuserro">{{lang_readOnly}}</label>
+ <div class="input-group">
+ <span class="input-group-addon slx-ga">
+ {{lang_username}}
+ </span>
+ <input type="text" class="form-control" name="cifsuserro" value="{{cifsuserro}}" placeholder="{{lang_username}}" id="cifsuserro">
+ <span class="input-group-addon">
+ {{lang_password}}
+ </span>
+ <input type="{{password_type}}" class="form-control" name="cifspasswdro" value="{{cifspasswdro}}" placeholder="{{lang_password}}">
+ </div>
+ </div>
+ </div>
+ <button class="btn btn-primary" type="submit">{{lang_save}}</button>
+ </div>
+ </div>
+</form>
+
+<div class="modal fade" id="help-store" tabindex="-1" role="dialog">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">{{lang_vmLocation}}</div>
+ <div class="modal-body">
+ <p>
+ {{lang_vmLocationHelp1}}
+ </p>
+ <p>
+ {{lang_vmLocationHelp2}}
+ </p>
+ <p>
+ {{lang_vmLocationHelp3}}
+ </p>
+ </div>
+ <div class="modal-footer"><a class="btn btn-primary" data-dismiss="modal">{{lang_close}}</a></div>
+ </div>
+ </div>
+</div>
+
+<div class="modal fade" id="help-nfs" tabindex="-1" role="dialog">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">NFS</div>
+ <div class="modal-body">
+ <p>
+ {{lang_nfsHelp1}}
+ </p>
+ <pre>
+/mnt/images 1.2.3.4(rw,no_root_squash,async)
+/mnt/images *(ro,async,nolock)
+ </pre>
+ <p>
+ {{lang_nfsHelp2}}
+ </p>
+ <pre>
+/mnt/images 1.2.3.4(rw,all_squash,anon_uid=1234,async)
+/mnt/images *(ro,async,nolock)
+ </pre>
+ </div>
+ <div class="modal-footer"><a class="btn btn-primary" data-dismiss="modal">{{lang_close}}</a></div>
+ </div>
+ </div>
+</div>
diff --git a/modules-available/main/templates/pagenav.html b/modules-available/main/templates/pagenav.html
new file mode 100644
index 00000000..93194999
--- /dev/null
+++ b/modules-available/main/templates/pagenav.html
@@ -0,0 +1,16 @@
+<ul class="pagination pagination-sm pull-right">
+ {{#pages}}
+ {{#current}}
+ <li class="active"><a href="{{url}}page={{page}}">{{text}} <span class="sr-only">(current)</span></a></li>
+ {{/current}}
+ {{^current}}
+ {{#text}}
+ <li><a href="{{url}}page={{page}}">{{text}}</a></li>
+ {{/text}}
+ {{^text}}
+ <li class="disabled"><a href="#">&hellip;</a></li>
+ {{/text}}
+ {{/current}}
+ {{/pages}}
+</ul>
+<div class="clearfix"></div> \ No newline at end of file
diff --git a/modules-available/main/templates/tm-callback-trigger.html b/modules-available/main/templates/tm-callback-trigger.html
new file mode 100644
index 00000000..cd03a1fe
--- /dev/null
+++ b/modules-available/main/templates/tm-callback-trigger.html
@@ -0,0 +1,15 @@
+<script type="text/javascript">
+ var slxCbCooldown = 0;
+ function slxCheckCallbacks() {
+ $.post('api.php?do=cb', { token: TOKEN }, function(data) {
+ if ( data.indexOf('True') >= 0 ) {
+ slxCbCooldown = 0;
+ } else {
+ slxCbCooldown++;
+ }
+ if (slxCbCooldown < 4)
+ setTimeout(slxCheckCallbacks, (slxCbCooldown + 1) * 1500);
+ }, 'text');
+ }
+ document.addEventListener("DOMContentLoaded", slxCheckCallbacks, false);
+</script> \ No newline at end of file