From dbc0d9614421e064cc62aacf116ebb783c83f2f3 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Fri, 1 Apr 2016 16:50:13 +0200 Subject: [merge] merging c3sl / fr - initial commit --- modules/minilinux/config.json | 4 + modules/minilinux/module.inc.php | 128 ++++++++++++++++++++++++ modules/minilinux/templates/download.html | 1 + modules/minilinux/templates/filelist.html | 77 ++++++++++++++ modules/minilinux/templates/page-minilinux.html | 28 ++++++ 5 files changed, 238 insertions(+) create mode 100644 modules/minilinux/config.json create mode 100644 modules/minilinux/module.inc.php create mode 100644 modules/minilinux/templates/download.html create mode 100644 modules/minilinux/templates/filelist.html create mode 100644 modules/minilinux/templates/page-minilinux.html (limited to 'modules/minilinux') diff --git a/modules/minilinux/config.json b/modules/minilinux/config.json new file mode 100644 index 00000000..93209f62 --- /dev/null +++ b/modules/minilinux/config.json @@ -0,0 +1,4 @@ +{ + "category":"settings", + "enabled":"true" +} diff --git a/modules/minilinux/module.inc.php b/modules/minilinux/module.inc.php new file mode 100644 index 00000000..91be456e --- /dev/null +++ b/modules/minilinux/module.inc.php @@ -0,0 +1,128 @@ + '?do=MiniLinux&async=true&action=list' + )); + Render::addFooter(''); + } + + 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/minilinux/templates/download.html b/modules/minilinux/templates/download.html new file mode 100644 index 00000000..2e32df5a --- /dev/null +++ b/modules/minilinux/templates/download.html @@ -0,0 +1 @@ +
{{name}}
\ No newline at end of file diff --git a/modules/minilinux/templates/filelist.html b/modules/minilinux/templates/filelist.html new file mode 100644 index 00000000..ca94f4d0 --- /dev/null +++ b/modules/minilinux/templates/filelist.html @@ -0,0 +1,77 @@ + {{#systems}} +
+
+

{{title}}

+
+
+
+ {{lang_desiredVersion}} + +
+ {{#systemChanged}} +

+ {{lang_canUpdate1}} {{title}} {{lang_canUpdate2}} +

+

{{lang_update}}

+ {{/systemChanged}} + {{^systemChanged}} +

{{lang_systemUpdated}}

+ {{/systemChanged}} +
+

{{lang_filesInVersion}} {{version}}

+ +
+
+ {{/systems}} + {{^systems}} +
{{lang_configurationPackageNotFound}}
+ {{/systems}} + + diff --git a/modules/minilinux/templates/page-minilinux.html b/modules/minilinux/templates/page-minilinux.html new file mode 100644 index 00000000..007e1e1b --- /dev/null +++ b/modules/minilinux/templates/page-minilinux.html @@ -0,0 +1,28 @@ +
+
{{lang_listObtained}}
+ +
+ + \ No newline at end of file -- cgit v1.2.3-55-g7522