From 0064f98651c627387115e84e7632f9eceff5d4c3 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 17 Oct 2019 15:55:05 +0200 Subject: [serversetup-bwlp-ipxe] UI/UX tweaks * Decluttered bootentry View in menu editor * Show details for hook bootentry in menu editor * Buttons for "save and reload" in menu/bootentry editor --- inc/util.inc.php | 12 + .../serversetup-bwlp-ipxe/lang/de/module.json | 2 +- .../lang/de/template-tags.json | 3 + .../serversetup-bwlp-ipxe/page.inc.php | 29 +- .../serversetup-bwlp-ipxe/templates/ipaddress.html | 8 +- .../templates/ipxe-new-boot-entry.html | 4 + .../serversetup-bwlp-ipxe/templates/menu-edit.html | 397 ++++++++++----------- style/default.css | 4 + 8 files changed, 253 insertions(+), 206 deletions(-) diff --git a/inc/util.inc.php b/inc/util.inc.php index 06cd8981..3d912f80 100644 --- a/inc/util.inc.php +++ b/inc/util.inc.php @@ -512,6 +512,18 @@ SADFACE; return date('d.m.Y', $ts); } + /** + * Return localized strings for yes or no depending on $bool + * @param bool $bool Input to evaluate + * @return string Yes or No, in user's selected language + */ + public static function boolToString($bool) + { + if ($bool) + return Dictionary::translate('lang_yes', true); + return Dictionary::translate('lang_no', true); + } + /** * Format a duration, in seconds, into a readable string. * @param int $seconds The number to format diff --git a/modules-available/serversetup-bwlp-ipxe/lang/de/module.json b/modules-available/serversetup-bwlp-ipxe/lang/de/module.json index a5038cf8..f95573a2 100644 --- a/modules-available/serversetup-bwlp-ipxe/lang/de/module.json +++ b/modules-available/serversetup-bwlp-ipxe/lang/de/module.json @@ -11,7 +11,7 @@ "dl-x86_64": "64\u2009Bit", "module_name": "iPXE \/ Boot Menu", "page_title": "PXE- und Boot-Einstellungen", - "submenu_address": "Server-Adresse", + "submenu_address": "Server-Adresse festlegen", "submenu_bootentry": "Men\u00fceintr\u00e4ge verwalten", "submenu_download": "Downloads", "submenu_import": "Importieren", diff --git a/modules-available/serversetup-bwlp-ipxe/lang/de/template-tags.json b/modules-available/serversetup-bwlp-ipxe/lang/de/template-tags.json index f7a62091..aeffb3c2 100644 --- a/modules-available/serversetup-bwlp-ipxe/lang/de/template-tags.json +++ b/modules-available/serversetup-bwlp-ipxe/lang/de/template-tags.json @@ -40,6 +40,7 @@ "lang_generationFailed": "Erzeugen des Bootmen\u00fcs fehlgeschlagen. Der Netzwerkboot von bwLehrpool wird wahrscheinlich nicht funktionieren. Wenn Sie den Fehler nicht selbst beheben k\u00f6nnen, melden Sie bitte die Logausgabe an das bwLehrpool-Projekt.", "lang_hex": "Hex", "lang_hookExtraOptionHeading": "Weitere Angaben", + "lang_hookOfModule": "Eintrag von", "lang_hotkey": "Hotkey", "lang_idFormatHint": "(Max. 16 Zeichen, nur a-z 0-9 - _)", "lang_imageToLoad": "Zu ladendes Image (z.B. Kernel)", @@ -61,6 +62,7 @@ "lang_menuTimeout": "Timeout", "lang_menuTitle": "Men\u00fc", "lang_moduleHeading": "iPXE \/ Boot Menu", + "lang_moduleSpecificId": "Modulspezifische ID", "lang_newBootEntryHead": "Neuer Men\u00fceintrag", "lang_newMenu": "Neues Men\u00fc", "lang_none": "(keine)", @@ -72,6 +74,7 @@ "lang_recompileHint": "iPXE-Binaries jetzt neu kompilieren. Normalerweise wird dieser Vorgang bei \u00c4nderungen automatisch ausgef\u00fchrt. Sollten Bootprobleme auftreten, k\u00f6nnen Sie hier den Vorgang manuell ansto\u00dfen.", "lang_refCount": "Referenzen", "lang_referencingMenus": "Verkn\u00fcpfte Men\u00fcs", + "lang_saveAndReload": "Speichern und neu laden", "lang_scriptContent": "Skript", "lang_seconds": "Sekunden", "lang_set": "Setzen", diff --git a/modules-available/serversetup-bwlp-ipxe/page.inc.php b/modules-available/serversetup-bwlp-ipxe/page.inc.php index 81f15922..cc5fdbe5 100644 --- a/modules-available/serversetup-bwlp-ipxe/page.inc.php +++ b/modules-available/serversetup-bwlp-ipxe/page.inc.php @@ -422,8 +422,29 @@ class Page_ServerSetup extends Page Database::queryAll("SELECT Concat('menu:', menuid) AS entryid, title FROM serversetup_menu ORDER BY title ASC") ); foreach ($menu['entrylist'] as &$bootentry) { - if (!isset($bootentry['data']) || !isset($bootentry['module']) || $bootentry['module']{0} !== '.') + if (!isset($bootentry['data']) || !isset($bootentry['module'])) continue; + if ($bootentry['module']{0} !== '.') { + // Hook from other module + $bootentry['moduleName'] = Dictionary::translateFileModule($bootentry['module'], 'module', 'module_name'); + if (!$bootentry['moduleName']) { + $bootentry['moduleName'] = $bootentry['module']; + } + $bootentry['ishook'] = true; + $data = json_decode($bootentry['data'], true); + unset($bootentry['data']); + $bootentry['id'] = $data['id']; + $bootentry['otherFields'] = []; + foreach ($data as $k => $v) { + if ($k === 'id') + continue; + $bootentry['otherFields'][] = [ + 'key' => Dictionary::translateFileModule($bootentry['module'], 'module', 'ipxe-' . $k, true), + 'value' => is_bool($v) ? Util::boolToString($v) : $v, + ]; + } + continue; + } $entry = BootEntry::fromJson($bootentry['module'], $bootentry['data']); if ($entry === null) { error_log('WARNING: Ignoring NULL menu entry: ' . $bootentry['data']); @@ -753,6 +774,9 @@ class Page_ServerSetup extends Page } Message::addSuccess('menu-saved'); + if (Request::post('next') === 'reload') { + Util::redirect('?do=serversetup&show=editmenu&id=' . $menu['menuid']); + } } private function updateLocalAddress() @@ -857,6 +881,9 @@ class Page_ServerSetup extends Page WHERE entryid = :oldid', $params); Message::addSuccess('boot-entry-updated', $newId); } + if (Request::post('next') === 'reload') { + Util::redirect('?do=serversetup&show=editbootentry&id=' . $newId); + } Util::redirect('?do=serversetup&show=bootentry'); } diff --git a/modules-available/serversetup-bwlp-ipxe/templates/ipaddress.html b/modules-available/serversetup-bwlp-ipxe/templates/ipaddress.html index ea19c417..74affb9f 100644 --- a/modules-available/serversetup-bwlp-ipxe/templates/ipaddress.html +++ b/modules-available/serversetup-bwlp-ipxe/templates/ipaddress.html @@ -29,10 +29,12 @@ {{/ips}} -

- {{lang_recompileHint}} -

+ +
+

+ {{lang_recompileHint}} +

-
-
- {{lang_cancel}} - -
- + + + + +
+ + +
+ + + + + + {{/entries}} + + + +
+ +
+ + -