summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modules-available/serversetup-bwlp-ipxe/inc/ipxemenu.inc.php4
-rw-r--r--modules-available/serversetup-bwlp-ipxe/inc/menuentry.inc.php5
-rw-r--r--modules-available/serversetup-bwlp-ipxe/page.inc.php11
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;