From 3364f03cd07b51195501f012ea09c5b9008b64f0 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 16 Apr 2019 16:57:08 +0200 Subject: [serversetup-bwlp-ipxe] Make sure we always have a default entry --- modules-available/serversetup-bwlp-ipxe/inc/ipxemenu.inc.php | 4 ++++ modules-available/serversetup-bwlp-ipxe/inc/menuentry.inc.php | 5 +++++ modules-available/serversetup-bwlp-ipxe/page.inc.php | 11 ++++++++--- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/modules-available/serversetup-bwlp-ipxe/inc/ipxemenu.inc.php b/modules-available/serversetup-bwlp-ipxe/inc/ipxemenu.inc.php index a58f4d10..20b0457f 100644 --- a/modules-available/serversetup-bwlp-ipxe/inc/ipxemenu.inc.php +++ b/modules-available/serversetup-bwlp-ipxe/inc/ipxemenu.inc.php @@ -34,6 +34,10 @@ class IPxeMenu while ($row = $res->fetch(PDO::FETCH_ASSOC)) { $this->items[] = new MenuEntry($row); } + // Make sure we have a default entry if the menu isn't empty + if ($this->defaultEntryId === null && !empty($this->items)) { + $this->defaultEntryId = $this->items[0]->menuEntryId(); + } } public function getMenuDefinition($targetVar, $mode, $slxExtensions) diff --git a/modules-available/serversetup-bwlp-ipxe/inc/menuentry.inc.php b/modules-available/serversetup-bwlp-ipxe/inc/menuentry.inc.php index 27713b9e..22731bc7 100644 --- a/modules-available/serversetup-bwlp-ipxe/inc/menuentry.inc.php +++ b/modules-available/serversetup-bwlp-ipxe/inc/menuentry.inc.php @@ -105,6 +105,11 @@ class MenuEntry return $str . $this->bootEntry->toScript($failLabel, $mode); } + public function menuEntryId() + { + return $this->menuentryid; + } + /* * */ diff --git a/modules-available/serversetup-bwlp-ipxe/page.inc.php b/modules-available/serversetup-bwlp-ipxe/page.inc.php index a00a18a1..25122a6c 100644 --- a/modules-available/serversetup-bwlp-ipxe/page.inc.php +++ b/modules-available/serversetup-bwlp-ipxe/page.inc.php @@ -671,7 +671,8 @@ class Page_ServerSetup extends Page 'sortval' => (int)$entry['sortval'], 'menuid' => $menu['menuid'], ]; - if (empty($entry['entryid'])) { + $spacer = empty($entry['entryid']); + if ($spacer) { // Spacer $params += [ 'hotkey' => '', @@ -691,7 +692,9 @@ class Page_ServerSetup extends Page } } if (is_numeric($key)) { - if ((string)$key === $wantedDefaultEntryId) { // Check now that we have generated our key + // Update, use known key + if (!$spacer && ((string)$key === $wantedDefaultEntryId + || $defaultEntryId === null)) { // if still null, use whatever as fallback, in case user didn't select any $defaultEntryId = $key; } $keepIds[] = $key; @@ -707,7 +710,9 @@ class Page_ServerSetup extends Page VALUES (:menuid, :entryid, :refmenuid, :hotkey, :title, :hidden, :sortval, :plainpass, '')", $params, true); if ($ret) { $newKey = Database::lastInsertId(); - if ((string)$key === $wantedDefaultEntryId) { // Check now that we have generated our key + // Check now that we have generated our key + if (!$spacer && ((string)$key === $wantedDefaultEntryId + || $defaultEntryId === null)) { // if still null, use whatever as fallback, in case user didn't select any $defaultEntryId = $newKey; } $keepIds[] = (int)$newKey; -- cgit v1.2.3-55-g7522