diff options
author | Simon Rettberg | 2018-07-04 12:35:56 +0200 |
---|---|---|
committer | Simon Rettberg | 2018-07-04 12:35:56 +0200 |
commit | ff57c086a3b868cc73f159fa29891d26a5a3e02b (patch) | |
tree | fac6f4ed2af7f2a864e2f234938c09a1639fd7a8 /modules-available/serversetup-bwlp/templates | |
parent | [serversetup-bwlp] Slightly nicer colors; html cleanup (diff) | |
download | slx-admin-ff57c086a3b868cc73f159fa29891d26a5a3e02b.tar.gz slx-admin-ff57c086a3b868cc73f159fa29891d26a5a3e02b.tar.xz slx-admin-ff57c086a3b868cc73f159fa29891d26a5a3e02b.zip |
[serversetup-bwlp] Fix hotkey saving, adding new entries
Diffstat (limited to 'modules-available/serversetup-bwlp/templates')
-rw-r--r-- | modules-available/serversetup-bwlp/templates/menu-edit.html | 116 |
1 files changed, 102 insertions, 14 deletions
diff --git a/modules-available/serversetup-bwlp/templates/menu-edit.html b/modules-available/serversetup-bwlp/templates/menu-edit.html index 4fabd11c..603c7425 100644 --- a/modules-available/serversetup-bwlp/templates/menu-edit.html +++ b/modules-available/serversetup-bwlp/templates/menu-edit.html @@ -1,5 +1,8 @@ <h2>{{lang_editMenuHead}}</h2> +<input type="text" name="prevent_autofill" id="prevent_autofill" value="" style="position:absolute;top:-2000px" tabindex="-1"> +<input type="password" name="password_fake" id="password_fake" value="" style="position:absolute;top:-2000px" tabindex="-1"> + <div class="panel panel-default"> <div class="panel-heading"> {{title}} @@ -57,14 +60,15 @@ </thead> <tbody id="table-body" style="overflow: auto;"> {{#entries}} - <tr id="{{menuentryid}}"> + <tr> <input type="hidden" class="sort-val" name="entry[{{menuentryid}}][sortval]" value="{{sortval}}"> + <input type="hidden" name="entry[{{menuentryid}}][hidden]" value="0"> <td class="drag-handler" style="cursor: pointer;text-align: center; vertical-align: middle;"> <span class="glyphicon glyphicon-th-list"></span> </td> <td class="slx-smallcol" style="text-align: center; vertical-align: middle;"> - <div class="radio radio-inline" style="margin: 0px;"> + <div class="radio radio-inline" style="margin: 0"> <input type="radio" name="defaultentry" value="{{menuentryid}}" {{#isdefault}}checked{{/isdefault}} {{perms.ipxe.menu.edit.disabled}} {{disabled}}> <label></label> @@ -73,11 +77,7 @@ <td class="text-nowrap"> {{#entryid}} - <select class="form-control" name="entry[{{menuentryid}}][entryid]" {{readonly}}> - <option value="">{{lang_spacer}}</option> - {{#entrylist}} - <option value="{{entryid}}" {{selected}}>{{title}}</option> - {{/entrylist}} + <select class="form-control entry-list" name="entry[{{menuentryid}}][entryid]" {{readonly}} data-default="{{entryid}}"> </select> {{/entryid}} {{^entryid}} @@ -85,22 +85,18 @@ {{/entryid}} </td> <td {{^entryid}}colspan="2"{{/entryid}}> - <input class="form-control" name="entry[{{menuentryid}}][title]" value="{{title}}" + <input class="form-control title" name="entry[{{menuentryid}}][title]" value="{{title}}" maxlength="100" {{readonly}}> </td> {{#entryid}} <td> - <select class="form-control" name="entry[{{menuentryid}}][hotkey]" {{readonly}}> - <option value="">{{lang_none}}</option> - {{#keys}} - <option {{selected}}>{{key}}</option> - {{/keys}} + <select class="form-control key-list" name="entry[{{menuentryid}}][hotkey]" {{readonly}} data-default="{{hotkey}}"> </select> </td> {{/entryid}} <td> - <input class="form-control" name="entry[{{menuentryid}}][plainpass]" id="panel-passwd" type="{{password_type}}" + <input class="form-control" name="entry[{{menuentryid}}][plainpass]" type="{{password_type}}" value="{{plainpass}}" {{readonly}}> </td> </tr> @@ -109,6 +105,10 @@ </table> </div> <div class="text-right"> + <button id="add-btn" type="button" class="btn btn-success" {{disabled}}> + <span class="glyphicon glyphicon-plus-sign"></span> + {{lang_add}} + </button> <button type="submit" class="btn btn-primary" {{disabled}}> <span class="glyphicon glyphicon-floppy-disk"></span> {{lang_save}} @@ -117,9 +117,62 @@ </form> </div> </div> +<div class="hidden"> + <select id="entry-list-template"> + <option value="">{{lang_spacer}}</option> + {{#entrylist}} + <option value="{{entryid}}">{{title}}</option> + {{/entrylist}} + </select> +</div> +<div class="hidden"> + <select id="key-list-template"> + <option value="">{{lang_none}}</option> + {{#keys}} + <option value="{{key}}">{{key}}</option> + {{/keys}} + </select> +</div> +<table class="hidden" id="row-template"> + <tr> + <input type="hidden" class="sort-val" name="entry[%new%][sortval]" value="99999"> + <td class="drag-handler" style="cursor: pointer;text-align: center; vertical-align: middle;"> + <span class="glyphicon glyphicon-th-list"></span> + </td> + + <td class="slx-smallcol" style="text-align: center; vertical-align: middle;"> + <div class="radio radio-inline" style="margin: 0"> + <input type="radio" name="defaultentry" value="%new%"> + <label></label> + </div> + </td> + + <td class="text-nowrap"> + <select class="form-control entry-list" name="entry[%new%][entryid]"> + </select> + </td> + <td> + <input class="form-control title" data-old="#new#" name="entry[%new%][title]" maxlength="100"> + </td> + <td> + <select class="form-control key-list" name="entry[%new%][hotkey]"> + </select> + </td> + <td> + <input class="form-control" name="entry[%new%][plainpass]" type="{{password_type}}"> + </td> + </tr> +</table> <script type="text/javascript"> document.addEventListener("DOMContentLoaded", function() { + var $ENTRY_LIST = $('#entry-list-template').find('option'); + var $KEY_LIST = $('#key-list-template').find('option'); + function fillEntryList($select, $source) { + var def = $select.data('default'); + $select.append($source.clone(true)); + $select.find('option[value="' + def + '"]').attr('selected', true); + } $('#table-body').sortable({ opacity: 0.8, handle: '.drag-handler', @@ -136,5 +189,40 @@ }); } }); + $('.entry-list').each(function() { + fillEntryList($(this), $ENTRY_LIST); + }).change(function() { + var $this = $(this); + var $title = $this.closest('tr').find('.title'); + var oldval = $title.data('old'); + if (oldval === '#stop#') + return; + if (oldval !== '#new#' && oldval !== $title.val()) { + $title.data('old', '#stop#'); + return; + } + var text = $this.find('option:selected').text(); + $title.val(text).data('old', text); + }); + $('.key-list').each(function() { + fillEntryList($(this), $KEY_LIST); + }); + var newIndex = 0; + $('#add-btn').click(function() { + var $new = $('#row-template').find('tr').clone(true); + newIndex++; + $('#table-body').append($new); + $new.find('[name]').each(function() { + var $this = $(this); + var val = $this.val(); + var name = $this.attr('name'); + if (name) { + $this.attr('name', name.replace('%new%', 'new-' + newIndex)); + } + if (val) { + $this.val(val.replace('%new%', 'new-' + newIndex)); + } + }); + }); }); </script>
\ No newline at end of file |