From a7fff60a22cb6bbd08033da6e7c4b50ec90c22ce Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 27 May 2022 15:49:07 +0200 Subject: [minilinux] Add quicknav at top of version list --- modules-available/minilinux/page.inc.php | 36 ++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 11 deletions(-) (limited to 'modules-available/minilinux/page.inc.php') diff --git a/modules-available/minilinux/page.inc.php b/modules-available/minilinux/page.inc.php index 33a7ab28..411d1ae9 100644 --- a/modules-available/minilinux/page.inc.php +++ b/modules-available/minilinux/page.inc.php @@ -31,30 +31,31 @@ class Page_MiniLinux extends Page protected function doRender() { - Render::addTemplate('page-minilinux', ['default' => Property::get(MiniLinux::PROPERTY_DEFAULT_BOOT)]); - // Warning - if (!MiniLinux::updateCurrentBootSetting()) { - Message::addError('default-not-installed', Property::get(MiniLinux::PROPERTY_DEFAULT_BOOT)); - } $show = Request::get('show', 'list', 'string'); if ($show === 'list') { // List branches and versions $branches = Database::queryAll('SELECT sourceid, branchid, title, description FROM minilinux_branch ORDER BY title ASC'); $versions = MiniLinux::queryAllVersionsByBranch(); $usage = MiniLinux::getBootMenuUsage(); + $sourceList = []; // Group by branch for detailed listing, add usage info foreach ($branches as &$branch) { - $branch['bid'] = 'div-' . str_replace('/', '-', $branch['branchid']); + $bid = 'div-' . str_replace('/', '-', $branch['branchid']); + if (!isset($sourceList[$branch['sourceid']])) { + $sourceList[$branch['sourceid']] = ['sourceid' => $branch['sourceid'], 'list' => []]; + } + $sourceList[$branch['sourceid']]['list'][] = ['title' => $branch['title'], 'bid' => $bid]; + $branch['bid'] = $bid; if (isset($versions[$branch['branchid']])) { $branch['versionlist'] = $this->renderVersionList($versions[$branch['branchid']], $usage); } } unset($branch); - Render::addTemplate('branches', ['branches' => $branches]); + $sourceList = array_values($sourceList); } elseif ($show === 'sources') { // List sources $res = Database::simpleQuery('SELECT sourceid, title, url, lastupdate, pubkey FROM minilinux_source ORDER BY title, sourceid'); - $data = ['list' => [], 'show_refresh' => true]; + $sourceViewData = ['list' => [], 'show_refresh' => true]; $tooOld = strtotime('-7 days'); $showRefresh = strtotime('-5 minutes'); foreach ($res as $row) { @@ -63,11 +64,24 @@ class Page_MiniLinux extends Page $row['update_class'] = 'text-danger'; } if ($row['lastupdate'] > $showRefresh) { - $data['show_refresh'] = false; + $sourceViewData['show_refresh'] = false; } - $data['list'][] = $row; + $sourceViewData['list'][] = $row; } - Render::addTemplate('sources', $data); + } + // Output + Render::addTemplate('page-minilinux', [ + 'default' => Property::get(MiniLinux::PROPERTY_DEFAULT_BOOT), + 'sources' => $sourceList ?? null, + ]); + // Warning + if (!MiniLinux::updateCurrentBootSetting()) { + Message::addError('default-not-installed', Property::get(MiniLinux::PROPERTY_DEFAULT_BOOT)); + } + if (isset($branches)) { + Render::addTemplate('branches', ['branches' => $branches]); + } elseif (isset($sourceViewData)) { + Render::addTemplate('sources', $sourceViewData); } else { Message::addError('main.invalid-action', $show); } -- cgit v1.2.3-55-g7522