some more ui work

This commit is contained in:
Jonathan Carter
2025-07-03 22:11:08 +02:00
parent d0ab6f9803
commit 007a959274
33 changed files with 420 additions and 36 deletions

View File

@@ -24,9 +24,6 @@
<div class="columns" width="100%">
<div class="column"><p> Current layout: </p></div>
<div style="position: static; right: 15px;">
<div class="column is-link"><button class="button iis-info"> <img src="/static/icons/tab-new-symbolic.svg"> &nbsp; Add Disk or Filesystem </button></div>
</div>
</div>
<!--

View File

@@ -2,6 +2,7 @@ from applets.disks import bp
from flask import Flask, request, session, redirect, \
url_for, render_template, flash, Blueprint
import dmm.lsblk as lsblk
from flask import current_app
@bp.route('/disks')
def disks():
@@ -10,7 +11,23 @@ def disks():
"""
blockdevs = lsblk.list_block_devices()
print(lsblk.list_block_devices())
return render_template('disks.html', blockdevs=blockdevs)
menu = current_app.config['CONFIG']['settings']['menu_order'].split(" ")
next_step_url = menu[menu.index("disks")+1]
if menu[menu.index("disks")] == 1:
previous_step_url = False
else:
previous_step_url = menu[menu.index("disks")-1]
add_disks_button = '&nbsp; <button class="button iis-info"> <img src="/static/icons/tab-new-symbolic.svg"> &nbsp; Add Disk or Filesystem </button>'
add_swap_button = '&nbsp; <button class="button iis-info"> <img src="/static/icons/tab-new-symbolic.svg"> &nbsp; Swap Configuration </button>'
bottom_menu = add_disks_button + add_swap_button
return render_template('disks.html', blockdevs=blockdevs,
menu=current_app.config['CONFIG']['settings']['menu'],
menu_order=current_app.config['CONFIG']['settings']['menu_order'].split(),
previous_step = previous_step_url,
next_step = next_step_url,
bottom_menu = bottom_menu)
@bp.route('/disks/partition/<part>')
@@ -18,6 +35,16 @@ def disks_partition(part):
"""
Partition modal for the webui partition screen.
"""
return render_template('disks_partition.html')
return render_template('disks_partition.html',
menu=current_app.config['CONFIG']['settings']['menu'])
def build_menu():
"""
Define menu items and paths.
"""
# proper one once translations are done:
#current_app.config['CONFIG']['settings']['menu']['welcome'] = (build_stringlist()['menu_item'], "/welcome", 10)
current_app.config['CONFIG']['settings']['menu']['disks'] = ("Disks", "/disks", 30)
build_menu()

View File

@@ -0,0 +1,7 @@
from flask import Blueprint
bp = Blueprint('install', __name__,
template_folder='')
from applets.install import routes

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,12 @@
{% extends "layout.html" %}
{% block body %}
<p><b> Installing...</b></p>
<p> Or are we... </p>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,14 @@
from applets.install import bp
from flask import Flask, request, session, redirect, \
url_for, render_template, flash, Blueprint
from flask import current_app
@bp.route('/install',methods=['GET', 'POST', 'PUT'])
def install_index():
"""
The page you'd get if you access the root of
this app in a browser.
"""
return render_template('install.html')

View File

@@ -1,11 +1,40 @@
from applets.software import bp
from flask import Flask, request, session, redirect, \
url_for, render_template, flash, Blueprint
from flask import current_app
@bp.route('/software')
def webui_software():
"""
Software screen for the webui.
"""
return render_template('software.html')
menu = current_app.config['CONFIG']['settings']['menu_order'].split(" ")
next_step_url = menu[menu.index("software")+1]
if menu[menu.index("software")] == 1:
previous_step_url = False
else:
previous_step_url = menu[menu.index("software")-1]
sources_button = '&nbsp; <button class="button iis-info"> <img src="/static/icons/tab-new-symbolic.svg"> &nbsp; Edit Sources </button>'
blends_button = '&nbsp; <button class="button iis-info"> <img src="/static/icons/tab-new-symbolic.svg"> &nbsp; Install a Blend </button>'
bottom_menu = sources_button + blends_button
return render_template('software.html',
menu=current_app.config['CONFIG']['settings']['menu'],
menu_order=current_app.config['CONFIG']['settings']['menu_order'].split(),
previous_step = previous_step_url,
next_step = next_step_url,
bottom_menu = bottom_menu)
def build_menu():
"""
Define menu items and paths.
"""
# proper one once translations are done:
#current_app.config['CONFIG']['settings']['menu']['welcome'] = (build_stringlist()['menu_item'], "/welcome", 10)
current_app.config['CONFIG']['settings']['menu']['software'] = ("Software", "/software", 40)
build_menu()

View File

@@ -5,13 +5,43 @@
<br>
<ul>
<li>Would you like to participate in popcon?</li>
<li>Desktop environment</li>
<li>Server software</li>
<li>Sources.list configuration (include install media?)</li>
</ul>
<div style="background-color: gray; padding: 4px 6px 7px 6px; border-radius: 10px; margin-bottom: 20px;">
<p> <span style="width: 100%; border-radius: 8px 8px 0 0;" class="tag is-black">
Popularity Contest</span>
<div style="padding-left: 15px; padding-right: 15px; background-color: #fff; color: #000;">
<p>The Popularity Contest (popcon) is a programme where anonymous data is sent back to Debian, tracking the number of packages installed. More information can be obtained at https://popcon.debian.org. <br/><br/> <b>Would you like to participate in popcon?</b><p>
</div>
</div>
<div style="background-color: gray; padding: 4px 6px 7px 6px; border-radius: 10px;">
<p> <span style="width: 100%; border-radius: 8px 8px 0 0;" class="tag is-black">
Desktop Environment</span>
<div style="padding: 15px; padding-top: 10px; padding-bottom: 5px; background-color: #fff; color: #000;">
<p>
<img src="/static/icons/console.png" width="48px" alt="" style="padding-right: 10px;" />
<img src="/static/icons/gnome.jpeg" width="48px" alt="" style="padding-right: 10px;" />
<img src="/static/icons/kde.jpeg" width="48px" alt="" style="padding-right: 10px;" />
<img src="/static/icons/xfce.jpeg" width="48px" alt="" style="padding-right: 10px;" />
<img src="/static/icons/mate.jpeg" width="48px" alt="" style="padding-right: 10px;" />
<img src="/static/icons/lxde.jpeg" width="48px" alt="" style="padding-right: 10px;" />
<p>
</div>
</div>
<br />
<div style="background-color: gray; padding: 4px 6px 7px 6px; border-radius: 10px; margin-bottom: 20px;">
<p> <span style="width: 100%; border-radius: 8px 8px 0 0;" class="tag is-black">
Select software from Debian archives</span>
<div style="padding-left: 15px; padding-right: 15px; padding-bottom: 5px; background-color: #fff; color: #000;">
<p><b>Select packages or selections of packages from the Debian archives.</b></p>
<button class="button is-dark">Games</button>
<button class="button is-dark">Productivity</button>
<button class="button is-dark">Creativity</button>
<button class="button is-dark">Server</button>
<button class="button is-dark">Development</button>
</div>
</div>
</div>
</div>

View File

@@ -1,6 +1,7 @@
from applets.summary import bp
from flask import Flask, request, session, redirect, \
url_for, render_template, flash, Blueprint
from flask import current_app
@bp.route('/summary',methods=['GET', 'POST', 'PUT'])
def summary_index():
@@ -8,6 +9,28 @@ def summary_index():
The page you'd get if you access the root of
this app in a browser.
"""
return render_template('summary.html')
build_menu()
menu = current_app.config['CONFIG']['settings']['menu_order'].split(" ")
previous_step_url = menu[menu.index("summary")-1]
next_step_url = "install"
print("previous step url: ", previous_step_url)
return render_template('summary.html',
menu=current_app.config['CONFIG']['settings']['menu'],
menu_order=current_app.config['CONFIG']['settings']['menu_order'].split(),
previous_step=previous_step_url,
next_step=next_step_url)
def build_menu():
"""
Define menu items and paths.
"""
# proper one once translations are done:
#current_app.config['CONFIG']['settings']['menu']['welcome'] = (build_stringlist()['menu_item'], "/welcome", 10)
current_app.config['CONFIG']['settings']['menu']['summary'] = ("Summary", "/summary", 60)
build_menu()

View File

@@ -3,6 +3,8 @@
<p><b> Ready to install! Please review all changes.</b></p>
<p> This is the last chance to back out before committing to instal, please ensure all the details are correct. </p>
</div>
</div>
</div>

Binary file not shown.

View File

@@ -0,0 +1,65 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-20 15:48+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: routes.py:33
msgid "Let's set up an initial user."
msgstr "Kom on stel 'n gebruiker op."
msgid "Users"
msgstr "Gebruikers"
#: routes.py:34
msgid "Full Name"
msgstr "Volle Naam"
#: routes.py:35
msgid "Username"
msgstr "Gebruikersnaam"
#: routes.py:36
msgid "This username is available"
msgstr "Hierdie gebruikersnaam is nie beskikbaar nie."
#: routes.py:37
msgid "This username is not available"
msgstr "Hierdie gebruikersnaam is nie beskikbaar nie."
#: routes.py:38
msgid "This username is reserved by the system"
msgstr "Hierdie gebruikersnaam is reserveerd deur vir die sisteem."
#: routes.py:39
msgid "The username must be one word, lowercase, with no special characters"
msgstr "Die gebruikersnaam moet een woord wees, kleinletters, met geen spesiale karakters."
#: routes.py:40
msgid "Password"
msgstr "Wagwoord"
#: routes.py:41
msgid "Password (confirm)"
msgstr "Wagwoord (bevestig)"
#: routes.py:42
msgid "These passwords do now match"
msgstr "Hierdie wagwoorde is nie dieselfde nie"
#: routes.py:43
msgid "This password is too short"
msgstr "Hierdie wagwoord is te kort"

View File

@@ -0,0 +1,62 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-20 15:48+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: routes.py:33
msgid "Let's set up an initial user."
msgstr ""
#: routes.py:34
msgid "Full Name"
msgstr ""
#: routes.py:35
msgid "Username"
msgstr ""
#: routes.py:36
msgid "This username is available"
msgstr ""
#: routes.py:37
msgid "This username is not available"
msgstr ""
#: routes.py:38
msgid "This username is reserved by the system"
msgstr ""
#: routes.py:39
msgid "The username must be one word, lowercase, with no special characters"
msgstr ""
#: routes.py:40
msgid "Password"
msgstr ""
#: routes.py:41
msgid "Password (confirm)"
msgstr ""
#: routes.py:42
msgid "These passwords do now match"
msgstr ""
#: routes.py:43
msgid "This password is too short"
msgstr ""

View File

@@ -25,7 +25,25 @@ def users_root():
set_language(current_app.config['CONFIG']['settings']['language'])
string_dict = build_stringlist()
build_menu()
return render_template('users.html', string_dict=string_dict)
menu = current_app.config['CONFIG']['settings']['menu_order'].split(" ")
next_step_url = menu[menu.index("users")+1]
if menu[menu.index("users")] == 1:
previous_step_url = False
else:
previous_step_url = menu[menu.index("users")-1]
root_button = '&nbsp; <button class="button is-light"> <img width="16px;" src="/static/icons/emblem-default-symbolic.svg"> &nbsp; Setup root user </button>'
ldap_button = '&nbsp; <button class="button is-light"> <img width="16px;" src="/static/icons/emblem-default-symbolic.svg"> &nbsp; Connect LDAP </button>'
ad_button = '&nbsp; <button class="button is-light"> <img width="16px;" src="/static/icons/emblem-default-symbolic.svg"> &nbsp; Connect AD </button>'
csv_button = '&nbsp; <button class="button is-light"> <img width="16px;" src="/static/icons/emblem-default-symbolic.svg"> &nbsp; Import CSV </button>'
bottom_menu = root_button + ldap_button + ad_button + csv_button
return render_template('users.html', string_dict=string_dict,
menu=current_app.config['CONFIG']['settings']['menu'],
menu_order=current_app.config['CONFIG']['settings']['menu_order'].split(),
previous_step=previous_step_url,
next_step=next_step_url,
bottom_menu=bottom_menu)
def build_stringlist():
@@ -47,6 +65,7 @@ def build_stringlist():
string_dict['password_tooshort'] = _("This password is too short")
return string_dict
def build_menu():
"""
Define menu items and paths.
@@ -54,3 +73,4 @@ def build_menu():
current_app.config['CONFIG']['settings']['menu']['users'] = (build_stringlist()['menu_item'], "/users", 20)
print(current_app.config['CONFIG']['settings']['menu'])
build_menu()

View File

@@ -37,7 +37,29 @@ def welcome_index():
blkid = lsblk.list_scsi_devices()
string_dict = build_stringlist()
build_menu()
return render_template('welcome.html', string_dict=string_dict, selected_lang=lang)
menu = current_app.config['CONFIG']['settings']['menu_order'].split(" ")
next_step_url = menu[menu.index("welcome")+1]
previous_step_url = menu[menu.index("welcome")-1]
print("index is: " , menu.index("welcome"))
if menu.index("welcome") == 0:
previous_step_url = False
else:
previous_step_url = menu[menu.index("users")-1]
print("next is: " + next_step_url)
print("previous is: " , previous_step_url)
power_button = '<button class="button is-dark"> <img width="16px;" src="/static/icons/greencheck.png"> &nbsp; Power: AC </button>'
internet_button = '&nbsp; <button class="button is-dark"> <img width="16px;" src="/static/icons/greencheck.png"> &nbsp; Internet </button>'
bottom_menu = power_button + internet_button
return render_template('welcome.html',
string_dict=string_dict, selected_lang=lang,
menu=current_app.config['CONFIG']['settings']['menu'],
menu_order=current_app.config['CONFIG']['settings']['menu_order'].split(),
previous_step=previous_step_url,
next_step=next_step_url,
bottom_menu=bottom_menu)
def build_stringlist():
@@ -64,8 +86,11 @@ def build_menu():
"""
Define menu items and paths.
"""
print(current_app.config['CONFIG']['settings']['menu'])
print(build_stringlist()['menu_item'])
current_app.config['CONFIG']['settings']['menu']['welcome'] = (build_stringlist()['menu_item'], "/welcome", 10)
set_language(current_app.config['CONFIG']['settings']['language'])
build_menu
#for app in current_app.config['CONFIG']['settings']['apps'].split():
#print(app)
#current_app.config['CONFIG']['settings']['menu'][app] = (globals[app].build_stringlist()['menu_item'], "/" + app, 10)

View File

@@ -4,7 +4,9 @@
<img style="width: 100%; border-radius: 8px;" src="/static/applets/welcome/img/banner.png" alt="Debian Image banner" />
<p><b> {{ string_dict['welcome_text'] }} </b></p>
<p>{{ string_dict['confirm_text'] }} </p>
<p>{{ string_dict['confirm_text'] }} </p> <br />
<div style="padding-left: 15px;">
<form action="/welcome" method="POST">
<img src="/static/icons/keyboard.svg" /> {{ string_dict['language_text'] }}
@@ -43,10 +45,10 @@
</select>
</div>
</div>
</form>
</div>
</div>
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
src/static/icons/gnome.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
src/static/icons/kde.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -1 +1,53 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g font-weight="400" fill="#474747"><path d="M3.702 1C2.17 1 .984 2.32.984 3.844v8.344c0 1.524 1.185 2.843 2.718 2.843h8.58c1.532 0 2.75-1.32 2.75-2.844V3.845c0-1.525-1.218-2.844-2.75-2.844zm.782 1.031c3.526.256 5.317.134 7.047 0 .754-.058 1.532.616 1.532 1.438v7.375c0 .665-.532 1.095-1.188 1.187-2.836.397-4.753.44-7.673 0-.655-.099-1.187-.522-1.187-1.187V3.5c0-.822.714-1.524 1.469-1.469z" style="line-height:normal;-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#bebebe" font-family="Bitstream Vera Sans" overflow="visible"/><path d="M10.564 5.977l-2.939.044.016 1 2.879-.043c.2.018.33.076.396.135.067.06.105.121.105.293l-.008.604H8.517l.037.002a1.457 1.457 0 00-1.164.43 1.558 1.558 0 00-.416 1.023c-.013.367.092.75.352 1.053.26.303.687.496 1.162.482h3.482l.051-3.59v-.004c0-.402-.16-.786-.435-1.035-.276-.249-.63-.364-.998-.393zM8.48 9.01h2.519l-.014.99H8.457c-.22.007-.302-.051-.371-.133a.553.553 0 01-.112-.367.587.587 0 01.141-.371c.079-.083.163-.134.363-.12zm2.862-5.985l-3 1 .316.95 3-1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" color="#000" font-family="sans-serif" overflow="visible"/></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="16"
height="16"
version="1.1"
id="svg2"
sodipodi:docname="keyboard.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<sodipodi:namedview
id="namedview2"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="52.375"
inkscape:cx="8"
inkscape:cy="8"
inkscape:window-width="1236"
inkscape:window-height="1041"
inkscape:window-x="662"
inkscape:window-y="199"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<g
font-weight="400"
fill="#474747"
id="g2"
style="fill:#c0bfbc">
<path
d="M3.702 1C2.17 1 .984 2.32.984 3.844v8.344c0 1.524 1.185 2.843 2.718 2.843h8.58c1.532 0 2.75-1.32 2.75-2.844V3.845c0-1.525-1.218-2.844-2.75-2.844zm.782 1.031c3.526.256 5.317.134 7.047 0 .754-.058 1.532.616 1.532 1.438v7.375c0 .665-.532 1.095-1.188 1.187-2.836.397-4.753.44-7.673 0-.655-.099-1.187-.522-1.187-1.187V3.5c0-.822.714-1.524 1.469-1.469z"
style="line-height:normal;-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none;fill:#c0bfbc"
color="#bebebe"
font-family="Bitstream Vera Sans"
overflow="visible"
id="path1" />
<path
d="M10.564 5.977l-2.939.044.016 1 2.879-.043c.2.018.33.076.396.135.067.06.105.121.105.293l-.008.604H8.517l.037.002a1.457 1.457 0 00-1.164.43 1.558 1.558 0 00-.416 1.023c-.013.367.092.75.352 1.053.26.303.687.496 1.162.482h3.482l.051-3.59v-.004c0-.402-.16-.786-.435-1.035-.276-.249-.63-.364-.998-.393zM8.48 9.01h2.519l-.014.99H8.457c-.22.007-.302-.051-.371-.133a.553.553 0 01-.112-.367.587.587 0 01.141-.371c.079-.083.163-.134.363-.12zm2.862-5.985l-3 1 .316.95 3-1z"
style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none;fill:#c0bfbc"
color="#000"
font-family="sans-serif"
overflow="visible"
id="path2" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
src/static/icons/lxde.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
src/static/icons/mate.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
src/static/icons/xfce.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -5,7 +5,7 @@ html {
body {
display: flex;
font-family: Noto Sans;
font-family: Sans; Roboto; Lato; Noto Sans;
color: white;
overflow: hidden;
min-width: 1050px;
@@ -31,7 +31,7 @@ html, body {margin: 0; height: 100%; overflow: hidden;}
.applet {
width: 100%;
height: 410px;
height: 442px;
overflow-y: scroll;
overflow-x: hidden;
}

View File

@@ -2,7 +2,6 @@
import webview
LOCATION = "http://10.10.99.22:8080/welcome"
LOCATION = "http://localhost:8080/welcome"
def on_closed():

View File

@@ -7,7 +7,8 @@ settings:
language: en
devmode: True
apt_depends: util-linux adduser parted e2fsprogs debootstrap
apps: main welcome users disks software summary
apps: main welcome users disks software summary install
menu_order: welcome users disks software summary
recipe:
Install some packages:

View File

@@ -1,12 +1,29 @@
<!-- Buttons on the left -->
<div style="position: absolute; bottom: 15px; left: 15px;">
<button class="button is-light">Back</button>
<button class="button is-light">Connect Active Directory</button>
<button class="button is-light">Connect LDAP</button>
{% if previous_step %}
<a href="/{{ previous_step }}"><button class="button is-light">Back</button></a>
{% endif %}
{% if bottom_menu %}
{{ bottom_menu | safe }}
{% endif %}
{% if connect %}
<button class="button is-light">Connect Active Directory</button>
<button class="button is-light">Connect LDAP</button>
{% endif %}
</div>
<!-- Buttons on the right -->
<div style="position: absolute; bottom: 15px; right: 15px;">
<a href="./disks"><button class="button is-link">Next</button></a>
{% if next_step %}
{% if next_step == "install" %}
<a href="/{{ next_step }}"><button class="button is-link">Install</button></a>
{% else %}
<a href="/{{ next_step }}"><button class="button is-link">Next</button></a>
{% endif %}
{% endif %}
</div>

View File

@@ -4,12 +4,12 @@
<!-- drag region class: -->
<!-- <div id="titlebar" class="pywebview-drag-region" style="padding: 15px; margin: -15px; padding-bottom: 30px;"> -->
<button class="button is-link"></button>
<a href="/welcome"><button class="button is-{% if request.path == "/welcome" %}info{% else %}dark{% endif %}">Welcome</button></a>
<a href="/users"><button class="button is-{% if request.path == "/users" %}info{% else %}dark{% endif %}">Users</button></a>
<a href="/disks"><button class="button is-{% if request.path == "/disks" %}info{% else %}dark{% endif %}">Disks</button></a>
<a href="/software"><button class="button is-{% if request.path == "/software" %}info{% else %}dark{% endif %}">Software</button></a>
<a href="/summary"><button class="button is-{% if request.path == "/summary" %}info{% else %}dark{% endif %}">Summary</button></a>
<button class="button is-link"></button>
{% for item in menu_order %}
<a href="{{ menu[item][1]}}"> <button class="button is-{% if request.path == menu[item][1] %}info{% else %}dark{% endif %}"> {{ menu[item][0]}} </button></a>
{% endfor %}
<div style="position: absolute; top: 15px; right: 15px;">
<a href="/help"> <button class="button is-light"> <b> ? </b> </button></a>