From 35578a5c327baa803e600700ccaee627d4724339 Mon Sep 17 00:00:00 2001 From: Jannik Schönartz Date: Wed, 20 Jun 2018 20:02:18 +0200 Subject: [serversetup-bwlp] Added drag and drop to the editmenu. Fixed radiobutton alignment and it's now saved/updated properly. --- modules-available/serversetup-bwlp/config.json | 3 +- modules-available/serversetup-bwlp/page.inc.php | 12 +++++- .../serversetup-bwlp/templates/menu-edit.html | 44 +++++++++++++++++----- 3 files changed, 48 insertions(+), 11 deletions(-) diff --git a/modules-available/serversetup-bwlp/config.json b/modules-available/serversetup-bwlp/config.json index 8ce65a85..ff485760 100644 --- a/modules-available/serversetup-bwlp/config.json +++ b/modules-available/serversetup-bwlp/config.json @@ -1,6 +1,7 @@ { "category": "main.settings-server", "dependencies" : [ - "locations" + "locations", + "js_jqueryui" ] } \ No newline at end of file diff --git a/modules-available/serversetup-bwlp/page.inc.php b/modules-available/serversetup-bwlp/page.inc.php index 4207bd53..f2c422f3 100644 --- a/modules-available/serversetup-bwlp/page.inc.php +++ b/modules-available/serversetup-bwlp/page.inc.php @@ -189,6 +189,7 @@ class Page_ServerSetup extends Page serversetup_menuentry WHERE menuid = :id", compact('id')); $keyList = array_map(function ($item) { return ['key' => $item]; }, MenuEntry::getKeyList()); $entryList = Database::queryAll("SELECT entryid, title, hotkey FROM serversetup_bootentry ORDER BY title ASC"); + $sortVals = array(); foreach ($menu['entries'] as &$entry) { $entry['isdefault'] = ($entry['menuentryid'] == $menu['defaultentryid']); $entry['keys'] = $keyList; @@ -206,7 +207,12 @@ class Page_ServerSetup extends Page $item['title'] = $item['entryid']; } } + $sortVals[] = $entry['sortval']; } + $arr = $menu['entries']; + $keys = array_keys($arr); + array_multisort( $sortVals, SORT_ASC, $arr, $keys); + $menu['entries'] = $arr; // TODO: Make assigned locations editable Permission::addGlobalTags($menu['perms'], 0, ['ipxe.menu.edit']); Render::addTemplate('menu-edit', $menu); @@ -298,11 +304,12 @@ class Page_ServerSetup extends Page } // TODO: Validate new locations to be saved (and actually save them) - Database::exec('UPDATE serversetup_menu SET title = :title, timeoutms = :timeoutms + Database::exec('UPDATE serversetup_menu SET title = :title, timeoutms = :timeoutms, defaultentryid = :defaultentryid WHERE menuid = :menuid', [ 'menuid' => $id, 'title' => IPxe::sanitizeIpxeString(Request::post('title', '', 'string')), 'timeoutms' => abs(Request::post('timeoutms', 0, 'int') * 1000), + 'defaultentryid' => Request::post('defaultentry', false, 'int'), ]); if (User::hasPermission('ipxe.menu.edit', 0)) { Database::exec('UPDATE serversetup_menu SET isdefault = (menuid = :menuid)', ['menuid' => $id]); @@ -310,6 +317,7 @@ class Page_ServerSetup extends Page $keepIds = []; $entries = Request::post('entry', false, 'array'); + foreach ($entries as $key => $entry) { $params = [ 'entryid' => $entry['entryid'], // TODO validate @@ -340,9 +348,11 @@ class Page_ServerSetup extends Page ]); } } + if ($ret === false) { Message::addWarning('error-saving-entry', $entry['title'], Database::lastError()); } + } Message::addSuccess('menu-saved'); } diff --git a/modules-available/serversetup-bwlp/templates/menu-edit.html b/modules-available/serversetup-bwlp/templates/menu-edit.html index cf10296e..aa748c3a 100644 --- a/modules-available/serversetup-bwlp/templates/menu-edit.html +++ b/modules-available/serversetup-bwlp/templates/menu-edit.html @@ -12,6 +12,7 @@ +
@@ -46,24 +47,30 @@ + - - + {{#entries}} - - + + + + + {{/entryid}} - +
{{lang_entryId}} {{lang_title}} {{lang_hotkey}}{{lang_sortOrder}} {{lang_password}}
-
+
+ + +
{{#entryid}} - - @@ -111,4 +116,25 @@ - \ No newline at end of file + + + \ No newline at end of file -- cgit v1.2.3-55-g7522