From 375b2cf8233c50c52f08750d0a38df86d6836927 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Wed, 4 Jun 2014 18:11:00 +0200 Subject: listing of module's content --- modules/sysconfig.inc.php | 61 ++++++++++++++++++++++++++++++++ templates/page-sysconfig-main.html | 3 +- templates/sysconfig/custom-filelist.html | 21 +++++++++++ 3 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 templates/sysconfig/custom-filelist.html diff --git a/modules/sysconfig.inc.php b/modules/sysconfig.inc.php index 5fc0114c..3be8b16f 100644 --- a/modules/sysconfig.inc.php +++ b/modules/sysconfig.inc.php @@ -109,6 +109,9 @@ class Page_SysConfig extends Page case 'list': $this->listConfigs(); break; + case 'module': + $this->listModuleContents(); + break; default: Message::addError('invalid-action', $action); break; @@ -146,6 +149,64 @@ class Page_SysConfig extends Page )); } + private function listModuleContents() + { + // fetch the data + $moduleid = Request::post('list', 'MISSING'); + $row = Database::queryFirst("SELECT title, filepath FROM configtgz_module WHERE moduleid = :moduleid LIMIT 1", array('moduleid' => $moduleid)); + if ($row == false) { + Message::addError('config-invalid', $moduleid); + Util::redirect('?do=SysConfig'); + } + + // find files in that archive + $taskStatus = Taskmanager::submit('ListArchive', array( + 'file' => $row['filepath'] + )); + + if (isset($taskStatus['id'])) { + + $status = Taskmanager::waitComplete($taskStatus['id']); + Taskmanager::release($taskStatus['id']); + if (!isset($status['statusCode'])) { + // + //$this->tmError(); + } + if ($status['statusCode'] != TASK_FINISHED) { + $this->taskError($status); + } + // Sort files for better display + $dirs = array(); + foreach ($status['data']['entries'] as $file) { + if ($file['isdir']) continue; + $dirs[dirname($file['name'])][] = $file; + } + ksort($dirs); + $list = array(); + foreach ($dirs as $dir => $files) { + $list[] = array( + 'name' => $dir, + 'isdir' => true + ); + sort($files); + foreach ($files as $file) { + $file['size'] = Util::readableFileSize($file['size']); + $list[] = $file; + } + } + } else { + // task failed, redirect + Util::redirect('?do=SysConfig'); + } + + + // render the template + Render::addDialog('Inhalt von "' . $row['title'] . '"', false, 'sysconfig/custom-filelist', array( + 'token' => Session::get('token'), + 'files' => $list, + )); + } + private function activateConfig() { $configid = Request::post('activate', 'MISSING'); diff --git a/templates/page-sysconfig-main.html b/templates/page-sysconfig-main.html index b3606113..84f98408 100644 --- a/templates/page-sysconfig-main.html +++ b/templates/page-sysconfig-main.html @@ -63,6 +63,7 @@ {{module}} + @@ -110,4 +111,4 @@ - \ No newline at end of file + diff --git a/templates/sysconfig/custom-filelist.html b/templates/sysconfig/custom-filelist.html new file mode 100644 index 00000000..fc851ff8 --- /dev/null +++ b/templates/sysconfig/custom-filelist.html @@ -0,0 +1,21 @@ +
+ + + + + {{#files}} + + {{#isdir}} + + {{/isdir}} + {{^isdir}} + + + {{/isdir}} + + {{/files}} +
{{name}}{{name}}{{size}}
+
+ +
+
\ No newline at end of file -- cgit v1.2.3-55-g7522