diff options
author | Simon Rettberg | 2016-05-03 19:03:09 +0200 |
---|---|---|
committer | Simon Rettberg | 2016-05-03 19:03:09 +0200 |
commit | 50404f3b23b7fd6aeae4c9d2f6df0ea25e984e66 (patch) | |
tree | 05e99fdffa696434960d7c77966c0bc36d6339e8 /modules-available/minilinux | |
parent | Second half of merge.... (diff) | |
download | slx-admin-50404f3b23b7fd6aeae4c9d2f6df0ea25e984e66.tar.gz slx-admin-50404f3b23b7fd6aeae4c9d2f6df0ea25e984e66.tar.xz slx-admin-50404f3b23b7fd6aeae4c9d2f6df0ea25e984e66.zip |
WIP
Diffstat (limited to 'modules-available/minilinux')
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 |