summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2022-11-03 16:20:33 +0100
committerSimon Rettberg2022-11-03 16:20:33 +0100
commitc89d75f78d98da0dfe4c44b283b509dcdc1bcd3c (patch)
treef6677d819c278a9367d92d04563d5520cbe3f078
parent[dozmod] Add field to configure maximum VM image size (diff)
downloadslx-admin-c89d75f78d98da0dfe4c44b283b509dcdc1bcd3c.tar.gz
slx-admin-c89d75f78d98da0dfe4c44b283b509dcdc1bcd3c.tar.xz
slx-admin-c89d75f78d98da0dfe4c44b283b509dcdc1bcd3c.zip
[minilinux] Add support for branch colors and changelogs
-rw-r--r--modules-available/minilinux/inc/minilinux.inc.php24
-rw-r--r--modules-available/minilinux/install.inc.php19
-rw-r--r--modules-available/minilinux/page.inc.php12
-rw-r--r--modules-available/minilinux/templates/branches.html2
-rw-r--r--modules-available/minilinux/templates/filelist.html2
-rw-r--r--modules-available/minilinux/templates/page-minilinux.html2
-rw-r--r--modules-available/minilinux/templates/versionlist.html7
7 files changed, 52 insertions, 16 deletions
diff --git a/modules-available/minilinux/inc/minilinux.inc.php b/modules-available/minilinux/inc/minilinux.inc.php
index 8778b50d..96763874 100644
--- a/modules-available/minilinux/inc/minilinux.inc.php
+++ b/modules-available/minilinux/inc/minilinux.inc.php
@@ -83,13 +83,15 @@ class MiniLinux
continue;
$branchid = $sourceid . '/' . $system['id'];
$title = empty($system['title']) ? $branchid : $system['title'];
- $description = empty($system['description']) ? '' : $system['description'];
- Database::exec('INSERT INTO minilinux_branch (branchid, sourceid, title, description)
- VALUES (:branchid, :sourceid, :title, :description)
- ON DUPLICATE KEY UPDATE title = VALUES(title), description = VALUES(description)', [
+ $description = $system['description'] ?? '';
+ $color = $system['color'] ?? '';
+ Database::exec('INSERT INTO minilinux_branch (branchid, sourceid, title, color, description)
+ VALUES (:branchid, :sourceid, :title, :color, :description)
+ ON DUPLICATE KEY UPDATE title = VALUES(title), color = VALUES(color), description = VALUES(description)', [
'branchid' => $branchid,
'sourceid' => $sourceid,
'title' => $title,
+ 'color' => $color,
'description' => $description,
]);
if (@is_array($system['versions'])) {
@@ -116,7 +118,8 @@ class MiniLinux
return;
}
$versionid = $branchid . '/' . $version['version'];
- $title = empty($version['title']) ? '' : $version['title'];
+ $title = $version['title'] ?? '';
+ $description = $version['description'] ?? '';
$dateline = empty($version['releasedate']) ? time() : (int)$version['releasedate'];
unset($version['version'], $version['title'], $version['releasedate']);
// Sanitize files array
@@ -149,12 +152,14 @@ class MiniLinux
$version['files'] = array_values($version['files']);
}
$data = json_encode($version);
- Database::exec('INSERT INTO minilinux_version (versionid, branchid, title, dateline, data, orphan)
- VALUES (:versionid, :branchid, :title, :dateline, :data, 0)
- ON DUPLICATE KEY UPDATE title = VALUES(title), data = VALUES(data), orphan = 0', [
+ Database::exec('INSERT INTO minilinux_version (versionid, branchid, title, description, dateline, data, orphan)
+ VALUES (:versionid, :branchid, :title, :description, :dateline, :data, 0)
+ ON DUPLICATE KEY UPDATE title = VALUES(title), description = VALUES(description),
+ dateline = VALUES(dateline), data = VALUES(data), orphan = 0', [
'versionid' => $versionid,
'branchid' => $branchid,
'title' => $title,
+ 'description' => $description,
'dateline' => $dateline,
'data' => $data,
]);
@@ -357,7 +362,8 @@ class MiniLinux
public static function queryAllVersionsByBranch()
{
$list = [];
- $res = Database::simpleQuery('SELECT branchid, versionid, title, dateline, orphan, taskid, installed
+ $res = Database::simpleQuery('SELECT branchid, versionid, title, Length(description) AS desclen,
+ dateline, orphan, taskid, installed
FROM minilinux_version ORDER BY branchid, dateline, versionid');
foreach ($res as $row) {
$list[$row['branchid']][$row['versionid']] = $row;
diff --git a/modules-available/minilinux/install.inc.php b/modules-available/minilinux/install.inc.php
index e71e3c10..12b5c69c 100644
--- a/modules-available/minilinux/install.inc.php
+++ b/modules-available/minilinux/install.inc.php
@@ -14,6 +14,7 @@ $result[] = tableCreate('minilinux_branch', "
`sourceid` varchar(8) CHARACTER SET ascii DEFAULT NULL,
`branchid` varchar(40) CHARACTER SET ascii NOT NULL,
`title` varchar(100) NOT NULL,
+ `color` varchar(7) NOT NULL,
`description` blob NOT NULL,
PRIMARY KEY (`branchid`),
KEY (`title`)
@@ -22,6 +23,7 @@ $result[] = tableCreate('minilinux_version', "
`branchid` varchar(40) CHARACTER SET ascii NOT NULL,
`versionid` varchar(72) CHARACTER SET ascii NOT NULL,
`title` varchar(100) NOT NULL,
+ `description` blob NOT NULL,
`dateline` int(10) UNSIGNED NOT NULL,
`data` blob NOT NULL,
`orphan` tinyint(3) UNSIGNED NOT NULL,
@@ -39,4 +41,21 @@ $result[] = tableAddConstraint('minilinux_version', 'branchid', 'minilinux_branc
$result[] = tableAddConstraint('minilinux_branch', 'sourceid', 'minilinux_source', 'sourceid',
'ON UPDATE CASCADE ON DELETE SET NULL');
+// 2022-10-17: Add color to branch, description to version
+if (!tableHasColumn('minilinux_branch', 'color')) {
+ if (Database::exec("ALTER TABLE minilinux_branch ADD COLUMN `color` varchar(7) NOT NULL DEFAULT '' AFTER `title`") !== false) {
+ $result[] = UPDATE_DONE;
+ } else {
+ finalResponse(UPDATE_FAILED, Database::lastError());
+ }
+}
+if (!tableHasColumn('minilinux_version', 'description')) {
+ // BLOB/TEXT cannot have non-NULL default on older MariaDB
+ if (Database::exec("ALTER TABLE minilinux_version ADD COLUMN `description` blob NULL DEFAULT NULL AFTER `title`") !== false) {
+ $result[] = UPDATE_DONE;
+ } else {
+ finalResponse(UPDATE_FAILED, Database::lastError());
+ }
+}
+
responseFromArray($result);
diff --git a/modules-available/minilinux/page.inc.php b/modules-available/minilinux/page.inc.php
index 411d1ae9..035a45d5 100644
--- a/modules-available/minilinux/page.inc.php
+++ b/modules-available/minilinux/page.inc.php
@@ -34,7 +34,7 @@ class Page_MiniLinux extends Page
$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');
+ $branches = Database::queryAll('SELECT sourceid, branchid, title, color, description FROM minilinux_branch ORDER BY title ASC');
$versions = MiniLinux::queryAllVersionsByBranch();
$usage = MiniLinux::getBootMenuUsage();
$sourceList = [];
@@ -44,7 +44,11 @@ class Page_MiniLinux extends Page
if (!isset($sourceList[$branch['sourceid']])) {
$sourceList[$branch['sourceid']] = ['sourceid' => $branch['sourceid'], 'list' => []];
}
- $sourceList[$branch['sourceid']]['list'][] = ['title' => $branch['title'], 'bid' => $bid];
+ $sourceList[$branch['sourceid']]['list'][] = [
+ 'title' => $branch['title'],
+ 'color' => $branch['color'],
+ 'bid' => $bid
+ ];
$branch['bid'] = $bid;
if (isset($versions[$branch['branchid']])) {
$branch['versionlist'] = $this->renderVersionList($versions[$branch['branchid']], $usage);
@@ -130,7 +134,8 @@ class Page_MiniLinux extends Page
if ($versionid === false) {
die('What!');
}
- $ver = Database::queryFirst('SELECT versionid, taskid, data, installed FROM minilinux_version WHERE versionid = :versionid',
+ $ver = Database::queryFirst('SELECT versionid, description, taskid, data, installed
+ FROM minilinux_version WHERE versionid = :versionid',
['versionid' => $versionid]);
if ($ver === false) {
die('No such version');
@@ -184,6 +189,7 @@ class Page_MiniLinux extends Page
if ($data['dltask'] !== false || $ver['installed']) {
MiniLinux::checkStage4($data, $data['s4_errors']);
}
+ $data['changelog'] = Util::markup($ver['description'] ?? '');
echo Render::parse('filelist', $data);
}
diff --git a/modules-available/minilinux/templates/branches.html b/modules-available/minilinux/templates/branches.html
index 4816cc63..372321e2 100644
--- a/modules-available/minilinux/templates/branches.html
+++ b/modules-available/minilinux/templates/branches.html
@@ -4,7 +4,7 @@
<div id="ibm-mainframe">
{{#branches}}
<a id="a-{{bid}}"></a>
- <div class="panel panel-default">
+ <div class="panel panel-default" {{#color}}style="background:linear-gradient(90deg, {{color}} 0%, {{color}} 4px, rgba(255,255,255,0) 4px)"{{/color}}>
<div class="panel-heading">
<div class="pull-right slx-pointer" data-toggle="collapse" data-target="#{{bid}}">
{{sourceid}} {{branchid}} <b class="caret"></b>
diff --git a/modules-available/minilinux/templates/filelist.html b/modules-available/minilinux/templates/filelist.html
index fdbef4ad..e4923a8f 100644
--- a/modules-available/minilinux/templates/filelist.html
+++ b/modules-available/minilinux/templates/filelist.html
@@ -50,6 +50,6 @@
{{/dltask}}
{{#changelog}}
<h4>{{lang_changelog}}</h4>
-{{changelog}}
+{{{changelog}}}
{{/changelog}}
<div class="slx-space"></div> \ No newline at end of file
diff --git a/modules-available/minilinux/templates/page-minilinux.html b/modules-available/minilinux/templates/page-minilinux.html
index 19bd9cb4..c66de597 100644
--- a/modules-available/minilinux/templates/page-minilinux.html
+++ b/modules-available/minilinux/templates/page-minilinux.html
@@ -5,7 +5,7 @@
<th>{{sourceid}}</th>
</tr>
{{#list}}
- <tr>
+ <tr {{#color}}style="background:linear-gradient(90deg, {{color}} 0%, {{color}} 4px, rgba(255,255,255,0) 4px)"{{/color}}>
<td><a href="#a-{{bid}}">{{title}}</a></td>
</tr>
{{/list}}
diff --git a/modules-available/minilinux/templates/versionlist.html b/modules-available/minilinux/templates/versionlist.html
index c69f3510..763ab784 100644
--- a/modules-available/minilinux/templates/versionlist.html
+++ b/modules-available/minilinux/templates/versionlist.html
@@ -16,7 +16,12 @@
<b class="caret"></b>
</a>
</td>
- <td class="text-nowrap">{{dateline_s}}</td>
+ <td class="text-nowrap">
+ {{dateline_s}}
+ {{#desclen}}
+ <span class="glyphicon glyphicon-list-alt"></span>
+ {{/desclen}}
+ </td>
<td>{{title}}</td>
<td class="text-nowrap">
{{#usage.entryids.0}}