diff options
author | Simon Rettberg | 2019-02-12 14:55:12 +0100 |
---|---|---|
committer | Simon Rettberg | 2019-02-12 14:55:12 +0100 |
commit | c2a6dfb649107ce3ad64162e2bb2c3c7275650fb (patch) | |
tree | 5a58f34c9c2563bb9baebcf7a36afe3e1d08a120 /modules-available/serversetup-bwlp-ipxe/templates | |
parent | [serversetup-bwlp] Auto-import of old PXELinux config on bootup (diff) | |
download | slx-admin-c2a6dfb649107ce3ad64162e2bb2c3c7275650fb.tar.gz slx-admin-c2a6dfb649107ce3ad64162e2bb2c3c7275650fb.tar.xz slx-admin-c2a6dfb649107ce3ad64162e2bb2c3c7275650fb.zip |
[serversetup*] PXELinux and iPXE side-by-side
Diffstat (limited to 'modules-available/serversetup-bwlp-ipxe/templates')
10 files changed, 998 insertions, 0 deletions
diff --git a/modules-available/serversetup-bwlp-ipxe/templates/bootentry-list.html b/modules-available/serversetup-bwlp-ipxe/templates/bootentry-list.html new file mode 100644 index 00000000..0cf005c5 --- /dev/null +++ b/modules-available/serversetup-bwlp-ipxe/templates/bootentry-list.html @@ -0,0 +1,83 @@ +<h2>{{lang_bootentryHead}}</h2> + +<p> + {{lang_bootentryIntro}} +</p> + +<table class="table"> + <thead> + <tr> + <th>{{lang_bootentryTitle}}</th> + <th>{{lang_hotkey}}</th> + <th class="slx-smallcol">{{lang_refCount}}</th> + <th class="slx-smallcol">{{lang_edit}}</th> + <th class="slx-smallcol">{{lang_delete}}</th> + </tr> + </thead> + <tbody> + {{#bootentryTable}} + <tr> + <td> + {{title}} + </td> + <td> + {{hotkey}} + </td> + <td align="right"> + {{refs}} + </td> + <td align="center"> + {{#allowEdit}} + <a href="?do=serversetup&show=editbootentry&id={{entryid}}" class="btn btn-xs btn-default"> + <span class="glyphicon glyphicon-edit"></span> + </a> + {{/allowEdit}} + </td> + <td align="center"> + {{#allowEdit}} + <button type="button" class="btn btn-xs btn-danger" data-toggle="modal" data-target="#deleteModal" onclick="deleteBootentry('{{entryid}}', '{{builtin}}')"> + <span class="glyphicon glyphicon-trash"></span> + </button> + {{/allowEdit}} + </td> + </tr> + {{/bootentryTable}} + </tbody> +</table> +<div class="pull-right"> + {{#allowEdit}} + <a href="?do=serversetup&show=editbootentry" class="btn btn-success"> + <span class="glyphicon glyphicon-plus"></span> + {{lang_addBootentry}} + </a> + {{/allowEdit}} +</div> + +<!-- Modals --> +<form method="post" action="?do=serversetup"> + <input type="hidden" name="token" value="{{token}}"> + <div class ="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> + <div class="modal-dialog" role="document"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> + <h4 class="modal-title" id="myModalLabel">{{lang_delete}}</h4> + </div> + <div class="modal-body"> + <p>{{lang_bootentryDeleteConfirm}}</p> + </div> + <div class="modal-footer"> + <input type="hidden" id="delete-bootentry-id" name="deleteid" value=""> + <button type="button" class="btn btn-default" data-dismiss="modal">{{lang_cancel}}</button> + <button type="submit" name="action" value="deleteBootentry" class="btn btn-danger"><span class="glyphicon glyphicon-trash"></span> {{lang_delete}}</button> + </div> + </div> + </div> + </div> +</form> + +<script> + function deleteBootentry(entryid) { + $("#delete-bootentry-id").val(entryid); + } +</script>
\ No newline at end of file diff --git a/modules-available/serversetup-bwlp-ipxe/templates/download.html b/modules-available/serversetup-bwlp-ipxe/templates/download.html new file mode 100644 index 00000000..62064b66 --- /dev/null +++ b/modules-available/serversetup-bwlp-ipxe/templates/download.html @@ -0,0 +1,53 @@ +<div class="panel panel-default"> + <div class="panel-heading"> + {{lang_downloadBootImage}} + </div> + <div class="panel-body"> + <table class="slx-table"> + {{#files}} + <tr> + <td><a class="{{class}}" href="/boot/download/{{name}}">{{name}}</a></td> + <td class="text-right">{{size}}</td> + <td class="text-right">{{modified}}</td> + <td>({{features}})</td> + </tr> + {{/files}} + </table> + <p> + <span class="btn btn-default" data-toggle="modal" data-target="#help-usbimg"> + <span class="glyphicon glyphicon-question-sign"></span> + {{lang_usbImgHelpBtn}} + </span> + </p> + <p> + {{lang_additionalInfoLink}} <a href="https://ipxe.org/appnote/buildtargets" target="_blank">{{lang_ipxeWikiUrl}}</a> + </p> + </div> +</div> + +<div class="modal fade" id="help-usbimg" tabindex="-1" role="dialog"> + <div class="modal-dialog"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> + {{lang_usbImage}} + </div> + <div class="modal-body"> + <p>{{lang_usbImgHelp}}</p> + <p> + <b>Linux</b> + <br> + {{lang_usbImgHelpLinux}} + </p> + <p> + <b>Windows</b> + <br> + {{lang_usbImgHelpWindows}} + </p> + <p> + <a href="https://rufus.akeo.ie/#download" target="_blank">{{lang_downloadRufus}}</a> + </p> + </div> + </div> + </div> +</div>
\ No newline at end of file diff --git a/modules-available/serversetup-bwlp-ipxe/templates/heading.html b/modules-available/serversetup-bwlp-ipxe/templates/heading.html new file mode 100644 index 00000000..e2aa0bff --- /dev/null +++ b/modules-available/serversetup-bwlp-ipxe/templates/heading.html @@ -0,0 +1,3 @@ +<div class="page-header"> + <h1>{{lang_moduleHeading}}</h1> +</div>
\ No newline at end of file diff --git a/modules-available/serversetup-bwlp-ipxe/templates/ipaddress.html b/modules-available/serversetup-bwlp-ipxe/templates/ipaddress.html new file mode 100644 index 00000000..ea19c417 --- /dev/null +++ b/modules-available/serversetup-bwlp-ipxe/templates/ipaddress.html @@ -0,0 +1,44 @@ +<div class="panel panel-default"> + <div class="panel-heading"> + {{lang_bootAddress}} + </div> + <div class="panel-body"> + <div class="{{chooseHintClass}}"> + {{lang_chooseIP}} + </div> + <form method="post" action="?do=ServerSetup"> + <input type="hidden" name="action" value="ip"> + <input type="hidden" name="token" value="{{token}}"> + <table class="slx-table"> + {{#ips}} + <tr> + <td>{{ip}}</td> + {{#default}} + <td> + <span class="btn btn-success btn-xs"><span class="glyphicon glyphicon-ok"></span> {{lang_active}}</span> + </td> + {{/default}} + {{^default}} + <td> + <button class="btn btn-primary btn-xs" name="ip" value="{{ip}}" {{disabled}}> + <span class="glyphicon glyphicon-flag"></span> + {{lang_set}} + </button> + </td> + {{/default}} + </tr> + {{/ips}} + </table> + <p> + {{lang_recompileHint}} + </p> + </form> + <form method="post" action="?do=ServerSetup"> + <input type="hidden" name="token" value="{{token}}"> + <button class="btn btn-default" name="action" value="compile" {{disabled}}> + <span class="glyphicon glyphicon-refresh"></span> + {{lang_forceRecompile}} + </button> + </form> + </div> +</div>
\ No newline at end of file diff --git a/modules-available/serversetup-bwlp-ipxe/templates/ipxe-new-boot-entry.html b/modules-available/serversetup-bwlp-ipxe/templates/ipxe-new-boot-entry.html new file mode 100644 index 00000000..7e82b5cc --- /dev/null +++ b/modules-available/serversetup-bwlp-ipxe/templates/ipxe-new-boot-entry.html @@ -0,0 +1,165 @@ +<h2>{{lang_newBootEntryHead}}</h2> + +{{#builtin}} + <div class="alert alert-warning"> + {{lang_editBuiltinWarn}} + </div> +{{/builtin}} + +<div class="panel panel-default"> + <div class="panel-heading"> + {{lang_bootEntryData}} + </div> + <div class="panel-body"> + <form method="post" action="?do=serversetup"> + <input type="hidden" name="token" value="{{token}}"> + <input type="hidden" name="action" value="savebootentry"> + <input type="hidden" name="entryid" value="{{entryid}}"> + + <div class="form-group"> + <div class="radio"> + <input class="type-radio" type="radio" name="type" value="exec" id="type-exec" {{exec_checked}}> + <label for="type-exec">{{lang_typeExecEntry}}</label> + </div> + <div class="radio"> + <input class="type-radio" type="radio" name="type" value="script" id="type-script" {{script_checked}}> + <label for="type-script">{{lang_typeScriptEntry}}</label> + </div> + </div> + + <div class="form-group"> + <label for="input-id"> + {{lang_entryId}} {{lang_idFormatHint}} + </label> + <input id="input-id" class="form-control" name="newid" value="{{entryid}}" pattern="^[a-z0-9\-_]{1,16}$" minlength="1" maxlength="16" required> + </div> + <div class="form-group"> + <label for="input-title"> + {{lang_entryTitle}} + </label> + <input id="input-title" class="form-control" name="title" value="{{title}}" maxlength="100"> + </div> + <div class="form-group"> + <label for="arch-selector"> + {{lang_archSelector}} + </label> + <select id="arch-selector" class="form-control" name="entry[arch]"> + <option value="agnostic" {{agnostic_selected}}>{{lang_archAgnostic}}</option> + <option value="PCBIOS" {{PCBIOS_selected}}>{{lang_biosOnly}}</option> + <option value="EFI" {{EFI_selected}}>{{lang_efiOnly}}</option> + <option value="PCBIOS-EFI" {{PCBIOS-EFI_selected}}>{{lang_archBoth}}</option> + </select> + </div> + + <div class="type-form" id="form-exec"> + <div class="row"> + {{#entries}} + <div class="mode-class col-md-6" id="col-{{mode}}"> + <div class="panel panel-default"> + <div class="panel-body"> + <h4 class="arch-heading">{{mode}}</h4> + <div class="form-group"> + <label for="input-ex"> + {{lang_imageToLoad}} + </label> + <input id="input-ex" class="form-control" name="entry[executable][{{mode}}]" value="{{executable}}"> + </div> + <div class="form-group"> + <label for="input-rd"> + {{lang_initRd}} + </label> + <input id="input-rd" class="form-control" name="entry[initRd][{{mode}}]" value="{{initRd}}"> + </div> + <div class="form-group"> + <label for="input-cmd"> + {{lang_commandLine}} + </label> + <input id="input-cmd" class="form-control" name="entry[commandLine][{{mode}}]" + value="{{commandLine}}"> + </div> + <div class="form-group"> + <div class="checkbox checkbox-inline"> + <input id="exec-replace-{{mode}}" class="form-control" type="checkbox" + name="entry[replace][{{mode}}]" {{replace_checked}}> + <label for="exec-replace-{{mode}}">{{lang_execReplace}}</label> + </div> + </div> + <div class="form-group"> + <div class="checkbox checkbox-inline"> + <input id="exec-au-{{mode}}" class="form-control" type="checkbox" + name="entry[autoUnload][{{mode}}]" {{autoUnload_checked}}> + <label for="exec-au-{{mode}}">{{lang_execAutoUnload}}</label> + </div> + </div> + <div class="form-group"> + <div class="checkbox checkbox-inline"> + <input id="exec-reset-{{mode}}" class="form-control" type="checkbox" + name="entry[resetConsole][{{mode}}]" {{resetConsole_checked}}> + <label for="exec-reset-{{mode}}">{{lang_execResetConsole}}</label> + </div> + </div> + </div> + </div> + </div> + {{/entries}} + </div> + </div> + + <div class="type-form" id="form-script"> + <div class="form-group"> + <label for="script-ta"> + {{lang_scriptContent}} + </label> + <textarea id="script-ta" class="form-control" rows="10" + name="entry[script]">{{entry.script}}</textarea> + </div> + </div> + + {{#builtin}} + <div class="alert alert-warning"> + {{lang_editBuiltinWarn}} + </div> + {{/builtin}} + + <p class="slx-bold">{{lang_referencingMenus}}:</p> + <ul> + {{#menus}} + <a href="?do=serversetup&show=editmenu&id={{menuid}}&highlight={{entryid}}">{{title}}</a> + {{/menus}} + </ul> + + <div class="buttonbar text-right"> + <button type="submit" class="btn btn-primary"> + <span class="glyphicon glyphicon-floppy-disk"></span> + {{lang_save}} + </button> + </div> + </form> + </div> +</div> + +<script><!-- +document.addEventListener('DOMContentLoaded', function () { + $('.type-radio').click(function () { + $('.type-form').hide(); + $('#form-' + $(this).val()).show(); + }); + $('.type-radio[checked]').click(); + var $as = $('#arch-selector'); + $as.change(function() { + var v = $as.val(); + if (v === 'agnostic') { + v = 'PCBIOS'; + $('.arch-heading').hide(); + } else { + $('.arch-heading').show(); + } + var vs = v.split('-'); + var cols = 12 / vs.length; + $('.mode-class').hide(); + for (var i = 0; i < vs.length; ++i) { + $('#col-' + vs[i]).attr('class', 'mode-class col-md-' + cols).show(); + } + }).change(); +}); +// --></script>
\ No newline at end of file diff --git a/modules-available/serversetup-bwlp-ipxe/templates/ipxe_update.html b/modules-available/serversetup-bwlp-ipxe/templates/ipxe_update.html new file mode 100644 index 00000000..344d3905 --- /dev/null +++ b/modules-available/serversetup-bwlp-ipxe/templates/ipxe_update.html @@ -0,0 +1,54 @@ +<div class="panel panel-default"> + <div class="panel-heading">{{lang_menuGeneration}}</div> + <div class="panel-body"> + <div id="file-list"> + {{#files}} + <div id="built-{{namehyphen}}"> + <span class="glyphicon glyphicon-question-sign"></span> + {{name}} + </div> + {{/files}} + </div> + <div id="genfailed" class="collapse"> + <div class="alert alert-danger"> + {{lang_generationFailed}} + </div> + </div> + <div id="tm-compile-div" data-tm-id="{{taskid}}" data-tm-log="log" data-tm-log-height="36em" data-tm-callback="ipxeGenCb">{{lang_menuGeneration}}</div> + </div> +</div> + +<script type="text/javascript"> + document.addEventListener('DOMContentLoaded', function() { + var slxFileList = $('#file-list').find('.glyphicon'); + }); + + function ipxeGenCb(task) + { + if (!task || !task.statusCode) + return; + + if (task.statusCode === 'TASK_FINISHED') { + $('#tm-compile-div').find('pre').hide(); + } + if (task.statusCode === 'TASK_ERROR') { + var $gf = $('#genfailed'); + if (task.data && task.data.errors) { + $gf.append($('<pre>').text(task.data.errors)); + } + $gf.show('slow'); + slxFileList.find('.glyphicon-question-sign').removeClass('glyphicon-question-sign').addClass('glyphicon-stop'); + } else { + // Working or finished + if (task.data && task.data.files && task.data.files) { + for (var k in task.data.files) { + if (!task.data.files[k]) + continue; + var f = '#built-' + k.replace('/', '-').replace('.', '-'); + var $e = $(f); + $e.find('.glyphicon-question-sign').removeClass('glyphicon-question-sign').addClass('glyphicon-ok text-success'); + } + } + } + } +</script> diff --git a/modules-available/serversetup-bwlp-ipxe/templates/localboot.html b/modules-available/serversetup-bwlp-ipxe/templates/localboot.html new file mode 100644 index 00000000..3037de2a --- /dev/null +++ b/modules-available/serversetup-bwlp-ipxe/templates/localboot.html @@ -0,0 +1,59 @@ +<h2>{{lang_localBootHead}}</h2> + +<p>{{lang_localBootIntro}}</p> + +<form method="post" action="?do=serversetup"> + + <input type="hidden" name="token" value="{{token}}"> + <input type="hidden" name="action" value="savelocalboot"> + + <br> + <div class="form-group"> + <label for="default-selector"> + {{lang_localBootDefault}} + </label> + <select id="default-selector" class="form-control" name="default"> + {{#options}} + <option {{selected}}>{{key}}</option> + {{/options}} + </select> + </div> + + <br> + <h3> + {{lang_localBootExceptions}} + </h3> + <table class="table"> + <tr> + <th>{{lang_systemmodel}}</th> + <th class="slx-smallcol">{{lang_count}}</th> + <th class="slx-smallcol">{{lang_override}}</th> + </tr> + {{#exceptions}} + <tr> + <td><a href="?do=statistics&show=list&filters=systemmodel+%3D+{{systemmodel}}">{{systemmodel}}</a></td> + <td class="text-right">{{cnt}}</td> + <td> + <select class="form-control" name="override[{{systemmodel}}]"> + <option value="" {{^bootmethod}}selected{{/bootmethod}}>{{lang_none}}</option> + {{#options}} + <option {{selected}}>{{key}}</option> + {{/options}} + </select> + </td> + </tr> + {{/exceptions}} + </table> + + <div class="text-right"> + <button class="btn btn-warning" type="reset"> + <span class="glyphicon glyphicon-refresh"></span> + {{lang_reset}} + </button> + <button class="btn btn-primary" type="submit"> + <span class="glyphicon glyphicon-floppy-disk"></span> + {{lang_save}} + </button> + </div> + +</form> diff --git a/modules-available/serversetup-bwlp-ipxe/templates/menu-assign-location.html b/modules-available/serversetup-bwlp-ipxe/templates/menu-assign-location.html new file mode 100644 index 00000000..077d137e --- /dev/null +++ b/modules-available/serversetup-bwlp-ipxe/templates/menu-assign-location.html @@ -0,0 +1,69 @@ +<h2>{{lang_assignMenuToLocation}}</h2> +<h3>{{locationName}}</h3> + +<form method="post" action="?do=serversetup"> + + <input type="hidden" name="token" value="{{token}}"> + <input type="hidden" name="action" value="savelocation"> + <input type="hidden" name="locationid" value="{{locationid}}"> + <table class="table"> + <thead> + <tr> + <th class="slx-smallcol"></th> + <th>{{lang_menuTitle}}</th> + <th class="slx-smallcol">{{lang_menuEntryOverride}}</th> + </tr> + </thead> + <tbody> + <tr> + <td> + <div class="radio radio-inline"> + <input type="radio" name="menuid" value="0" {{default_selected}}> + <label></label> + </div> + </td> + <td> + <i>{{lang_useDefaultMenu}}</i> + </td> + <td></td> + </tr> + {{#list}} + <tr> + <td> + <div class="radio radio-inline"> + <input type="radio" name="menuid" value="{{menuid}}" {{menu_selected}}> + <label></label> + </div> + </td> + <td> + {{title}} + </td> + <td class="text-right"> + <select name="defaultentryid-{{menuid}}" class="form-control"> + <option value="0" style="font-style:italic">{{lang_useDefaultMenuEntry}}</option> + {{#entries}} + <option value="{{id}}" {{selected}}>{{title}}</option> + {{/entries}} + </select> + </td> + </tr> + {{/list}} + </tbody> + </table> + + <div class="pull-right"> + <button type="submit" class="btn btn-primary"> + <span class="glyphicon glyphicon-floppy-disk"></span> + {{lang_save}} + </button> + </div> + +</form> + +<div class="clearfix"></div> + +<script> + function deleteMenu(menuid) { + $("#delete-menu-id").val(menuid); + } +</script>
\ No newline at end of file diff --git a/modules-available/serversetup-bwlp-ipxe/templates/menu-edit.html b/modules-available/serversetup-bwlp-ipxe/templates/menu-edit.html new file mode 100644 index 00000000..1598a2b7 --- /dev/null +++ b/modules-available/serversetup-bwlp-ipxe/templates/menu-edit.html @@ -0,0 +1,368 @@ +<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}} + {{^title}} + {{lang_newMenu}} + {{/title}} + </div> + <div class="panel-body list-group"> + <form method="post" action="?do=serversetup"> + <input type="hidden" name="token" value="{{token}}"> + <input type="hidden" name="action" value="savemenu"> + <input type="hidden" name="menuid" value="{{menuid}}"> + + <div class="row list-group-item"> + <div class="col-sm-3"> + <label for="panel-title">{{lang_menuTitle}}</label> + </div> + <div class="col-sm-9"> + <input class="form-control" name="title" id="panel-title" type="text" value="{{title}}" {{readonly}}> + </div> + </div> + <div class="row list-group-item"> + <div class="col-sm-3"> + <label for="panel-timeout">{{lang_menuTimeout}}</label> + </div> + <div class="col-sm-9"> + <div class="input-group"> + <input class="form-control" name="timeout" id="panel-timeout" type="number" min="0" max="9999" + value="{{timeout}}" {{readonly}}> + <span class="input-group-addon">{{lang_seconds}}</span> + </div> + </div> + </div> + <div> + <table class="table"> + <thead> + <tr> + <th class="slx-smallcol"></th> + <th class="slx-smallcol"></th> + <th class="slx-smallcol">{{lang_entryId}}</th> + <th>{{lang_title}}</th> + <th width="11%">{{lang_hotkey}}</th> + <th width="15%">{{lang_password}}</th> + <th class="slx-smallcol"><span class="glyphicon glyphicon-eye-close"></span></th> + <th class="slx-smallcol"></th> + </tr> + </thead> + <tbody id="table-body" style="overflow: auto;"> + {{#entries}} + <tr class="{{highlight}}"> + <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 no-spacer" style="margin: 0;{{^entryid}}display: none;{{/entryid}}"> + <input type="radio" name="defaultentry" value="{{menuentryid}}" + {{#isdefault}}checked{{/isdefault}} {{perms.ipxe.menu.edit.disabled}} {{disabled}}> + <label></label> + </div> + </td> + + <td class="text-nowrap"> + <input class="entry-id" type="hidden" name="entry[{{menuentryid}}][entryid]" value="{{entryid}}"> + <button type="button" class="btn btn-default" style="width: 100%; text-align: left" {{disabled}} data-toggle="modal" data-target="#entry-chooser-modal"> + {{#entryid}} + {{entryid}} + {{/entryid}} + {{^entryid}} + {{lang_spacer}} + {{/entryid}} + </button> + </td> + <td> + <input class="form-control title" name="entry[{{menuentryid}}][title]" value="{{title}}" + maxlength="100" {{readonly}}> + </td> + + <td> + <select class="form-control key-list no-spacer" {{^entryid}}style="display: none;"{{/entryid}} name="entry[{{menuentryid}}][hotkey]" {{readonly}} data-default="{{hotkey}}"> + </select> + </td> + + <td> + <input class="form-control no-spacer" {{^entryid}}style="display: none;"{{/entryid}} name="entry[{{menuentryid}}][plainpass]" type="{{password_type}}" + value="{{plainpass}}" {{readonly}}> + </td> + <td class="slx-smallcol" style="text-align: center; vertical-align: middle;"> + <div class="checkbox checkbox-inline no-spacer" style="text-align: left;margin: 0;{{^entryid}}display: none;{{/entryid}}"> + <input name="entry[{{menuentryid}}][hidden]" value="1" type="checkbox" {{#hidden}}checked{{/hidden}}> + <label></label> + </div> + </td> + <td class="slx-smallcol" style="text-align: center; vertical-align: middle;"> + <button type="button" class="btn btn-default remove-button"><span class="glyphicon glyphicon-remove"></span></button> + </td> + </tr> + {{/entries}} + </tbody> + </table> + </div> + <div class="text-right" style="margin-bottom: 20px"> + <button id="add-btn" type="button" class="btn btn-success" {{disabled}}> + <span class="glyphicon glyphicon-plus-sign"></span> + {{lang_add}} + </button> + </div> + <div class="text-right"> + <a href="?do=serversetup&show=menu" type="button" class="btn btn-default">{{lang_cancel}}</a> + <button id="save-button" type="submit" class="btn btn-primary" {{disabled}}> + <span class="glyphicon glyphicon-floppy-disk"></span> + {{lang_save}} + </button> + </div> + </form> + + <div class="modal fade" id="entry-chooser-modal" tabindex="-1" role="dialog"> + <div class="modal-dialog" role="document"> + <div class="modal-content"> + <div class="modal-header"> + <h5 class="modal-title">{{lang_entryChooserTitle}}</h5> + </div> + <div class="modal-body"> + <div class="form-group"> + <select id="entry-list" class="form-control"> + <option value="">{{lang_spacer}}</option> + {{#entrylist}} + <option value="{{entryid}}">{{entryid}}</option> + {{/entrylist}} + </select> + </div> + {{#entrylist}} + <div id="entrydata-{{entryid}}" class="entrydata"> + <div class="form-group"> + <label for="{{entryid}}-name">{{lang_entryTitle}}</label> + <pre id="{{entryid}}-name">{{title}}</pre> + </div> + {{#data}} + {{#script}} + <div class="form-group"> + <label for="{{entryid}}-script">{{lang_scriptContent}}</label> + <pre id="{{entryid}}-script">{{.}}</pre> + </div> + {{/script}} + {{^script}} + <div class="form-group"> + <label for="{{entryid}}-script">{{lang_archSelector}}</label> + <pre id="{{entryid}}-arch">{{arch}}</pre> + </div> + {{#archAgnostic}} + <div class="form-group"> + <label for="{{entryid}}-executable">{{lang_imageToLoad}}</label> + <pre id="{{entryid}}-executable">{{executable}}</pre> + </div> + <div class="form-group"> + <label for="{{entryid}}-initRd">{{lang_initRd}}</label> + <pre id="{{entryid}}-initRd">{{initRd}}</pre> + </div> + <div class="form-group"> + <label for="{{entryid}}-commandLine">{{lang_commandLine}}</label> + <pre id="{{entryid}}-commandLine" >{{commandLine}}</pre> + </div> + {{/archAgnostic}} + {{#PCBIOS}} + <div class="panel panel-default"> + <div class="panel-heading">PCBIOS</div> + <div class="panel-body"> + <div class="form-group"> + <label for="{{entryid}}-executable">{{lang_imageToLoad}}</label> + <pre id="{{entryid}}-executable">{{executable}}</pre> + </div> + <div class="form-group"> + <label for="{{entryid}}-initRd">{{lang_initRd}}</label> + <pre id="{{entryid}}-initRd">{{initRd}}</pre> + </div> + <div class="form-group"> + <label for="{{entryid}}-commandLine">{{lang_commandLine}}</label> + <pre id="{{entryid}}-commandLine" >{{commandLine}}</pre> + </div> + </div> + </div> + {{/PCBIOS}} + {{#EFI}} + <div class="panel panel-default"> + <div class="panel-heading">EFI</div> + <div class="panel-body"> + <div class="form-group"> + <label for="{{entryid}}-executable">{{lang_imageToLoad}}</label> + <pre id="{{entryid}}-executable">{{executable}}</pre> + </div> + <div class="form-group"> + <label for="{{entryid}}-initRd">{{lang_initRd}}</label> + <pre id="{{entryid}}-initRd">{{initRd}}</pre> + </div> + <div class="form-group"> + <label for="{{entryid}}-commandLine">{{lang_commandLine}}</label> + <pre id="{{entryid}}-commandLine" >{{commandLine}}</pre> + </div> + </div> + </div> + {{/EFI}} + {{/script}} + {{/data}} + </div> + {{/entrylist}} + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-default" data-dismiss="modal">{{lang_cancel}}</button> + <button type="button" class="btn btn-primary" id="choose-entry">{{lang_save}}</button> + </div> + </div> + </div> + </div> + </div> +</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 no-spacer" style="margin: 0; display: none;"> + <input type="radio" name="defaultentry" value="%new%"> + <label></label> + </div> + </td> + + <td class="text-nowrap"> + <input class="entry-id" type="hidden" name="entry[%new%][entryid]" value=""> + <button type="button" class="btn btn-default" style="width: 100%; text-align: left" {{disabled}} data-toggle="modal" data-target="#entry-chooser-modal"> + {{lang_spacer}} + </button> + </td> + <td> + <input class="form-control title" data-old="#new#" name="entry[%new%][title]" maxlength="100"> + </td> + <td> + <select class="form-control key-list no-spacer" style="display: none;" name="entry[%new%][hotkey]"> + </select> + </td> + <td> + <input class="form-control no-spacer" style="display: none;" name="entry[%new%][plainpass]" type="{{password_type}}"> + </td> + <td class="slx-smallcol" style="text-align: center; vertical-align: middle;"> + <div class="checkbox checkbox-inline no-spacer" style="text-align: left;margin: 0;{{^entryid}}display: none;{{/entryid}}"> + <input name="entry[%new%][hidden]" value="1" type="checkbox"> + <label></label> + </div> + </td> + <td class="slx-smallcol" style="text-align: center; vertical-align: middle;"> + <button type="button" class="btn btn-default remove-button"><span class="glyphicon glyphicon-remove"></span></button> + </td> + </tr> +</table> + +<script type="text/javascript"> + var spacerText = "{{lang_spacer}}"; + + document.addEventListener("DOMContentLoaded", function() { + + function reassignSortValues() { + var startValue = 1; + $('.sort-val').each(function(index, element) { + element.value = startValue * 10; + startValue++; + }); + } + + $('#table-body').sortable({ + opacity: 0.8, + handle: '.drag-handler', + start: function(evt, ui) { + ui.placeholder.css("visibility", "visible"); + ui.placeholder.css("opacity", "0.152"); + ui.placeholder.css("background-color", "#ddd"); + }, + stop: reassignSortValues + }); + + $('.key-list').each(function() { + $select = $(this); + $source = $('#key-list-template').find('option'); + var def = $select.data('default'); + $select.append($source.clone(true)); + $select.find('option[value="' + def + '"]').attr('selected', true); + }); + 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)); + } + }); + reassignSortValues(); + }); + + $('.remove-button').click(function() { + $(this).parent().parent().remove(); + reassignSortValues(); + }); + + $('#entry-list').change(function(e) { + var modal = $('#entry-chooser-modal'); + modal.find('.entrydata').hide(); + modal.find('#entrydata-' + $(this).val()).show(); + }); + + var currentEntryButton = null; + + $('#entry-chooser-modal').on('show.bs.modal', function(e) { + currentEntryButton = $(e.relatedTarget); + var entryId = currentEntryButton.parent().find('.entry-id').val(); + $('#entry-list').val(entryId).change(); + }); + + $('#choose-entry').click(function() { + $('#entry-chooser-modal').modal('hide'); + var entryId = $('#entry-list').val(); + currentEntryButton.parent().find('.entry-id').val(entryId); + currentEntryButton.text(entryId || spacerText); + var tableRow = currentEntryButton.parent().parent(); + if (!entryId) { + tableRow.find('.no-spacer').hide(); + tableRow.find('input.no-spacer').val(''); + tableRow.find('div.no-spacer').find('input').prop('checked', false); + + } else { + tableRow.find('.no-spacer').show(); + } + var $title = tableRow.find('.title'); + var oldval = $title.data('old'); + if (oldval === '#stop#') + return; + if (oldval !== '#new#' && oldval !== $title.val()) { + $title.data('old', '#stop#'); + return; + } + var text = $('#' + entryId + '-name').text(); + $title.val(text).data('old', text); + }); + }); +</script>
\ No newline at end of file diff --git a/modules-available/serversetup-bwlp-ipxe/templates/menu-list.html b/modules-available/serversetup-bwlp-ipxe/templates/menu-list.html new file mode 100644 index 00000000..545f22a9 --- /dev/null +++ b/modules-available/serversetup-bwlp-ipxe/templates/menu-list.html @@ -0,0 +1,100 @@ +<h2>{{lang_listOfMenus}}</h2> + +<p> + {{lang_menuListIntro}} +</p> + +<table class="table"> + <thead> + <tr> + <th>{{lang_menuTitle}}</th> + <th class="slx-smallcol">{{lang_locationCount}}</th> + <th class="slx-smallcol">{{lang_isDefault}}</th> + <th class="slx-smallcol">{{lang_edit}}</th> + <th class="slx-smallcol">{{lang_delete}}</th> + </tr> + </thead> + <tbody> + {{#menuTable}} + <tr> + <td> + {{title}} + </td> + <td class="text-right"> + <span class="badge" data-toggle="tooltip" data-placement="top" title="{{locnames}}">{{locationCount}}</span> + </td> + <td align="center"> + {{^isdefault}} + {{#showSetDefault}} + <form method="post" action="?do=serversetup"> + <input type="hidden" name="token" value="{{token}}"> + <input type="hidden" name="menuid" value="{{menuid}}"> + <button type="submit" name="action" value="setDefaultMenu" class="btn btn-xs btn-info"> + <span class="glyphicon glyphicon-flag"></span> + </button> + </form> + {{/showSetDefault}} + {{/isdefault}} + {{#isdefault}} + <span class="glyphicon glyphicon-ok"></span> + {{/isdefault}} + </td> + <td align="center"> + {{#allowEdit}} + <a href="?do=serversetup&show=editmenu&id={{menuid}}" class="btn btn-xs btn-default"> + <span class="glyphicon glyphicon-edit"></span> + </a> + {{/allowEdit}} + </td> + <td align="center"> + {{#allowDelete}} + <button type="button" class="btn btn-xs btn-danger" data-toggle="modal" data-target="#deleteModal" onclick="deleteMenu('{{menuid}}')"> + <span class="glyphicon glyphicon-trash"></span> + </button> + {{/allowDelete}} + </td> + </tr> + {{/menuTable}} + </tbody> +</table> +<div class="pull-right"> + <a href="?do=serversetup&show=editmenu&id=0" class="btn btn-success {{allowAddMenu}}"> + <span class="glyphicon glyphicon-plus"></span> + {{lang_addMenu}} + </a> +</div> + +<div class="clearfix"></div> + + +<!-- Modals --> +<form method="post" action="?do=serversetup"> + <input type="hidden" name="token" value="{{token}}"> + <div class ="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> + <div class="modal-dialog" role="document"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> + <h4 class="modal-title" id="myModalLabel">{{lang_delete}}</h4> + </div> + <div class="modal-body"> + <p>{{lang_menuDeleteConfirm}}</p> + </div> + <div class="modal-footer"> + <input type="hidden" id="delete-menu-id" name="deleteid" value=""> + <button type="button" class="btn btn-default" data-dismiss="modal">{{lang_cancel}}</button> + <button type="submit" name="action" value="deleteMenu" class="btn btn-danger"><span class="glyphicon glyphicon-trash"></span> {{lang_delete}}</button> + </div> + </div> + </div> + </div> +</form> + +<script> + function deleteMenu(menuid) { + $("#delete-menu-id").val(menuid); + } + document.addEventListener('DOMContentLoaded', function() { + $('[data-toggle="tooltip"]').tooltip(); + }); +</script>
\ No newline at end of file |