summaryrefslogtreecommitdiffstats
path: root/modules-available/minilinux
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/minilinux
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/minilinux')
-rw-r--r--modules-available/minilinux/config.json4
-rw-r--r--modules-available/minilinux/lang/de/templates/download.json1
-rw-r--r--modules-available/minilinux/lang/de/templates/filelist.json12
-rw-r--r--modules-available/minilinux/lang/de/templates/page-minilinux.json4
-rw-r--r--modules-available/minilinux/lang/en/module.json12
-rw-r--r--modules-available/minilinux/lang/en/templates/download.json2
-rw-r--r--modules-available/minilinux/lang/en/templates/filelist.json12
-rw-r--r--modules-available/minilinux/lang/en/templates/page-minilinux.json4
-rw-r--r--modules-available/minilinux/lang/pt/module.json12
-rw-r--r--modules-available/minilinux/page.inc.php128
-rw-r--r--modules-available/minilinux/templates/download.html1
-rw-r--r--modules-available/minilinux/templates/filelist.html77
-rw-r--r--modules-available/minilinux/templates/page-minilinux.html28
13 files changed, 297 insertions, 0 deletions
diff --git a/modules-available/minilinux/config.json b/modules-available/minilinux/config.json
new file mode 100644
index 00000000..f2abe27c
--- /dev/null
+++ b/modules-available/minilinux/config.json
@@ -0,0 +1,4 @@
+{
+ "category":"main.settings",
+ "enabled":"true"
+}
diff --git a/modules-available/minilinux/lang/de/templates/download.json b/modules-available/minilinux/lang/de/templates/download.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/modules-available/minilinux/lang/de/templates/download.json
@@ -0,0 +1 @@
+{}
diff --git a/modules-available/minilinux/lang/de/templates/filelist.json b/modules-available/minilinux/lang/de/templates/filelist.json
new file mode 100644
index 00000000..214d758a
--- /dev/null
+++ b/modules-available/minilinux/lang/de/templates/filelist.json
@@ -0,0 +1,12 @@
+{
+ "lang_actual": "Aktuell",
+ "lang_canUpdate1": "Mindestens eine Komponente von",
+ "lang_canUpdate2": "kann aktualisiert werden. F\u00fcr einen reibungslosen Betrieb wird empfohlen, alle Komponenten auf dem aktuellen Stand zu halten.",
+ "lang_configurationPackageNotFound": "Keine Konfigurationspakete gefunden!",
+ "lang_desiredVersion": "Gew\u00fcnschte Version",
+ "lang_filesInVersion": "Dateien zu Version",
+ "lang_outdated": "Veraltet",
+ "lang_redownload": "Erneut herunterladen",
+ "lang_systemUpdated": "Das System ist auf dem aktuellen Stand.",
+ "lang_update": "Aktualisieren"
+} \ No newline at end of file
diff --git a/modules-available/minilinux/lang/de/templates/page-minilinux.json b/modules-available/minilinux/lang/de/templates/page-minilinux.json
new file mode 100644
index 00000000..f30f7b76
--- /dev/null
+++ b/modules-available/minilinux/lang/de/templates/page-minilinux.json
@@ -0,0 +1,4 @@
+{
+ "lang_errorGetting": "Fehler beim Herunterladen der Liste!",
+ "lang_listObtained": "Liste wird heruntergeladen..."
+} \ No newline at end of file
diff --git a/modules-available/minilinux/lang/en/module.json b/modules-available/minilinux/lang/en/module.json
new file mode 100644
index 00000000..b9262b5a
--- /dev/null
+++ b/modules-available/minilinux/lang/en/module.json
@@ -0,0 +1,12 @@
+{
+ "lang_actual": "Actual",
+ "lang_canUpdate1": "At least one component of",
+ "lang_canUpdate2": "can be updated. For a smooth operation, it is recommended to keep all components up to date.",
+ "lang_configurationPackageNotFound": "Configuration package not found!",
+ "lang_errorGetting": "Error while downloading list!",
+ "lang_listObtained": "Downloading list...",
+ "lang_outdated": "Outdated",
+ "lang_systemUpdated": "The system is up to date.",
+ "lang_update": "Update",
+ "module_name": "Minilinux"
+} \ No newline at end of file
diff --git a/modules-available/minilinux/lang/en/templates/download.json b/modules-available/minilinux/lang/en/templates/download.json
new file mode 100644
index 00000000..2c63c085
--- /dev/null
+++ b/modules-available/minilinux/lang/en/templates/download.json
@@ -0,0 +1,2 @@
+{
+}
diff --git a/modules-available/minilinux/lang/en/templates/filelist.json b/modules-available/minilinux/lang/en/templates/filelist.json
new file mode 100644
index 00000000..89fed42b
--- /dev/null
+++ b/modules-available/minilinux/lang/en/templates/filelist.json
@@ -0,0 +1,12 @@
+{
+ "lang_actual": "Actual",
+ "lang_canUpdate1": "At least one component of",
+ "lang_canUpdate2": "can be updated. For a smooth operation, it is recommended to keep all components up to date.",
+ "lang_configurationPackageNotFound": "Configuration package not found!",
+ "lang_desiredVersion": "Desired version",
+ "lang_filesInVersion": "Files for version",
+ "lang_outdated": "Outdated",
+ "lang_redownload": "Download again",
+ "lang_systemUpdated": "The system is up to date.",
+ "lang_update": "Update"
+} \ No newline at end of file
diff --git a/modules-available/minilinux/lang/en/templates/page-minilinux.json b/modules-available/minilinux/lang/en/templates/page-minilinux.json
new file mode 100644
index 00000000..2f59fa57
--- /dev/null
+++ b/modules-available/minilinux/lang/en/templates/page-minilinux.json
@@ -0,0 +1,4 @@
+{
+ "lang_errorGetting": "Error while downloading list!",
+ "lang_listObtained": "Downloading list..."
+} \ No newline at end of file
diff --git a/modules-available/minilinux/lang/pt/module.json b/modules-available/minilinux/lang/pt/module.json
new file mode 100644
index 00000000..0ce7629d
--- /dev/null
+++ b/modules-available/minilinux/lang/pt/module.json
@@ -0,0 +1,12 @@
+{
+ "lang_actual": "Atual",
+ "lang_canUpdate1": "Pelo menos um componente de",
+ "lang_canUpdate2": "pode ser atualizado. Para um bom funcionamento, recomenda-se manter todos os componentes atualizados.",
+ "lang_configurationPackageNotFound": "Pacote de configura\u00e7\u00e3o n\u00e3o encontrado!",
+ "lang_errorGetting": "Erro ao baixar a lista!",
+ "lang_listObtained": "Carregando lista...",
+ "lang_outdated": "Desatualizado",
+ "lang_systemUpdated": "O sistema est\u00e1 atualizado.",
+ "lang_update": "Atualizar",
+ "module_name": "Minilinux"
+} \ No newline at end of file
diff --git a/modules-available/minilinux/page.inc.php b/modules-available/minilinux/page.inc.php
new file mode 100644
index 00000000..91be456e
--- /dev/null
+++ b/modules-available/minilinux/page.inc.php
@@ -0,0 +1,128 @@
+<?php
+
+class Page_MiniLinux extends Page
+{
+
+ protected function doPreprocess()
+ {
+ User::load();
+
+ if (!User::hasPermission('superadmin')) {
+ Message::addError('no-permission');
+ Util::redirect('?do=Main');
+ }
+ }
+
+ protected function doRender()
+ {
+ Render::addTemplate('page-minilinux', array(
+ 'listurl' => '?do=MiniLinux&async=true&action=list'
+ ));
+ Render::addFooter('<script> $(window).load(function (e) {
+ loadSystemList(0);
+ }); // </script>');
+ }
+
+ protected function doAjax()
+ {
+ $data = Property::getVersionCheckInformation();
+ if (!is_array($data) || !isset($data['systems'])) {
+ echo Render::parse('messagebox-error', array(
+ 'message' => 'Failed to retrieve the list: ' . print_r($data, true)
+ ),'main');
+ return;
+ }
+ $action = Request::any('action');
+ $selectedVersion = (int)Request::any('version', 0);
+ switch ($action) {
+ case 'list':
+ $count = 0;
+ foreach ($data['systems'] as &$system) {
+ // Get latest version, build simple array of all version numbers
+ $versionNumbers = array();
+ $selected = false;
+ foreach ($system['versions'] as $version) {
+ if (!is_numeric($version['version']) || $version['version'] < 1)
+ continue;
+ if ($selectedVersion === 0 && ($selected === false || $selected['version'] < $version['version']))
+ $selected = $version;
+ elseif ($version['version'] == $selectedVersion)
+ $selected = $version;
+ $versionNumbers[(int)$version['version']] = array(
+ 'version' => $version['version']
+ );
+ }
+ if ($selected === false) continue; // No versions for this system!?
+ ksort($versionNumbers);
+ // Mark latest version as selected
+ $versionNumbers[(int)$selected['version']]['selected'] = true;
+ // Add status information to system and its files
+ foreach ($selected['files'] as &$file) {
+ $file['uid'] = 'dlid' . $count++;
+ $local = CONFIG_HTTP_DIR . '/' . $system['id'] . '/' . $file['name'];
+ if (!file_exists($local) || filesize($local) !== $file['size'] || filemtime($local) < $file['mtime']) {
+ $file['fileChanged'] = true;
+ $system['systemChanged'] = true;
+ }
+ $taskId = Property::getDownloadTask($file['md5']);
+ if ($taskId !== false) {
+ $task = Taskmanager::status($taskId);
+ if (isset($task['data']['progress'])) {
+ $file['download'] = Render::parse('download', array(
+ 'task' => $taskId,
+ 'name' => $file['name']
+ ));
+ }
+ }
+ }
+ unset($system['versions']);
+ $system['files'] = $selected['files'];
+ $system['version'] = $selected['version'];
+ }
+ $data['versions'] = array_values($versionNumbers);
+ echo Render::parse('filelist', $data);
+ return;
+ case 'download':
+ $id = Request::post('id');
+ $name = Request::post('name');
+ if (!$id || !$name || strpos("$id$name", '/') !== false) {
+ echo "Invalid download request";
+ return;
+ }
+ $file = false;
+ $gpg = 'missing';
+ foreach ($data['systems'] as &$system) {
+ if ($system['id'] !== $id) continue;
+ foreach ($system['versions'] as &$version) {
+ if ($version['version'] != $selectedVersion) continue;
+ foreach ($version['files'] as &$f) {
+ if ($f['name'] !== $name) continue;
+ $file = $f;
+ if (!empty($f['gpg'])) $gpg = $f['gpg'];
+ break;
+ }
+ }
+ }
+ if ($file === false) {
+ echo "Nonexistent system/file: $id / $name";
+ return;
+ }
+ $task = Taskmanager::submit('DownloadFile', array(
+ 'url' => CONFIG_REMOTE_ML . '/' . $id . '/' . $selectedVersion . '/' . $name,
+ 'destination' => CONFIG_HTTP_DIR . '/' . $id . '/' . $name,
+ 'gpg' => $gpg
+ ));
+ if (!isset($task['id'])) {
+ echo 'Error launching download task: ' . $task['statusCode'];
+ return;
+ }
+ Property::setDownloadTask($file['md5'], $task['id']);
+ echo Render::parse('download', array(
+ 'name' => $name,
+ 'task' => $task['id']
+ ));
+ return;
+ }
+ }
+
+}
diff --git a/modules-available/minilinux/templates/download.html b/modules-available/minilinux/templates/download.html
new file mode 100644
index 00000000..2e32df5a
--- /dev/null
+++ b/modules-available/minilinux/templates/download.html
@@ -0,0 +1 @@
+<div data-tm-id="{{task}}" data-tm-log="error" data-tm-progress="progress">{{name}}</div> \ No newline at end of file
diff --git a/modules-available/minilinux/templates/filelist.html b/modules-available/minilinux/templates/filelist.html
new file mode 100644
index 00000000..ca94f4d0
--- /dev/null
+++ b/modules-available/minilinux/templates/filelist.html
@@ -0,0 +1,77 @@
+ {{#systems}}
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4>{{title}}</h4>
+ </div>
+ <div class="panel-body" id="download-{{id}}">
+ <div class="input-group pull-right" style="max-width: 400px">
+ <span class="input-group-addon slx-ga">{{lang_desiredVersion}}</span>
+ <select id="versionbox" class="form-control" onchange="loadSystemList($('#versionbox').val())">
+ {{#versions}}
+ {{#selected}}
+ <option value="{{version}}" selected>{{version}}</option>
+ {{/selected}}
+ {{^selected}}
+ <option value="{{version}}">{{version}}</option>
+ {{/selected}}
+ {{/versions}}
+ </select>
+ </div>
+ {{#systemChanged}}
+ <p>
+ {{lang_canUpdate1}} <b>{{title}}</b> {{lang_canUpdate2}}
+ </p>
+ <p><span class="btn btn-primary" onclick="slxUpdateAll(this, 'download-{{id}}')">{{lang_update}}</span></p>
+ {{/systemChanged}}
+ {{^systemChanged}}
+ <p>{{lang_systemUpdated}}</p>
+ {{/systemChanged}}
+ <hr>
+ <p><b>{{lang_filesInVersion}} {{version}}</b></p>
+ <ul class="list-group">
+ {{#files}}
+ <li class="list-group-item" id="{{uid}}">
+ <div class="row">
+ <div class="col-sm-2">{{name}}</div>
+ <div class="col-xs-2">
+ {{^fileChanged}}<span class="glyphicon glyphicon-ok"></span> <b>{{lang_actual}}</b>{{/fileChanged}}
+ {{#fileChanged}}<span class="glyphicon glyphicon-exclamation-sign"></span> <b>{{lang_outdated}}</b>{{/fileChanged}}
+ </div>
+ <div class="col-xs-2">
+ {{#fileChanged}}<span class="btn btn-primary btn-xs update-button" onclick="slxUpdate('{{uid}}', '{{id}}', '{{name}}')">{{lang_update}}</span>{{/fileChanged}}
+ {{^fileChanged}}<span class="btn btn-default btn-xs" onclick="slxUpdate('{{uid}}', '{{id}}', '{{name}}')">{{lang_redownload}}</span>{{/fileChanged}}
+ </div>
+ </div>
+ {{{download}}}
+ </li>
+ {{/files}}
+ </ul>
+ </div>
+ </div>
+ {{/systems}}
+ {{^systems}}
+ <div class="row well well-sm">{{lang_configurationPackageNotFound}}</div>
+ {{/systems}}
+
+<script type="text/javascript">
+function slxUpdate(uid, id, name)
+{
+ $('#' + uid).html('');
+ $('#' + uid).load('?do=MiniLinux',
+ { action : "download", token : TOKEN, id : id, name : name, version : $('#versionbox').val() },
+ function(response, status, xhr) {
+ if (status === "error") {
+ var msg = "Fehler beim Abruf: ";
+ $('#' + uid).html(msg + xhr.status + " " + xhr.statusText);
+ } else {
+ setTimeout(tmInit, 100);
+ }
+ });
+}
+function slxUpdateAll(t, uid)
+{
+ $(t).hide(0);
+ $('#' + uid).find('.update-button').click();
+}
+tmInit();
+</script>
diff --git a/modules-available/minilinux/templates/page-minilinux.html b/modules-available/minilinux/templates/page-minilinux.html
new file mode 100644
index 00000000..007e1e1b
--- /dev/null
+++ b/modules-available/minilinux/templates/page-minilinux.html
@@ -0,0 +1,28 @@
+<div id="systemlist">
+ <div class="panel panel-default">{{lang_listObtained}}</div>
+ <!-- OLD CODE ??
+ <script type="text/javascript">
+ var slx_check = setInterval(function() {
+ if (typeof $ === 'undefined') return;
+ clearInterval(slx_check);
+ $('#systemlist').load('{{{listurl}}}', function( response, status, xhr ) {
+ if ( status === "error" ) {
+ var msg = "{{lang_errorGetting}}";
+ $( "#systemlist" ).html( msg + xhr.status + " " + xhr.statusText );
+ }
+ })
+ }, 100);
+ </script>
+ OLD CODE ?? -->
+</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