lnbits-legend/lnbits/templates/base.html

339 lines
11 KiB
HTML
Raw Normal View History

2020-08-29 14:10:26 -03:00
<!DOCTYPE html>
2019-12-14 11:48:53 -03:00
<html lang="en">
2022-04-20 11:20:39 +01:00
<head>
{% for url in INCLUDED_CSS %}
<link
rel="stylesheet"
type="text/css"
href="{{ static_url_for('static', url ) }}"
/>
{% endfor %} {% block styles %}{% endblock %}
<style>
@font-face {
font-family: 'Material Icons';
font-style: normal;
font-weight: 400;
src: url("{{ static_url_for('static', 'fonts/material-icons-v50.woff2') }}")
format('woff2');
}
</style>
2020-11-12 15:32:41 -03:00
<title>{% block title %}{{ SITE_TITLE }}{% endblock %}</title>
2020-08-29 14:10:26 -03:00
<meta charset="utf-8" />
2022-04-20 11:20:39 +01:00
<meta
name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1, shrink-to-fit=no"
2022-04-20 11:20:39 +01:00
/>
2021-04-17 23:21:27 -03:00
<meta name="mobile-web-app-capable" content="yes" />
2022-04-20 11:20:39 +01:00
<meta name="apple-mobile-web-app-capable" content="yes" />
{% if web_manifest %}
2022-07-05 16:16:46 -06:00
<link async="async" rel="manifest" href="{{ web_manifest }}" />
{% endif %} {% block head_scripts %}{% endblock %}
2022-04-20 11:20:39 +01:00
</head>
2022-04-20 11:20:39 +01:00
<body data-theme="bitcoin">
2021-06-30 16:44:18 +01:00
<q-layout id="vue" view="hHh lpR lfr" v-cloak>
2022-04-20 11:20:39 +01:00
<q-header bordered class="bg-marginal-bg">
<q-toolbar>
{% block drawer_toggle %}
<q-btn
dense
flat
round
icon="menu"
@click="g.visibleDrawer = !g.visibleDrawer"
></q-btn>
{% endblock %}
<q-toolbar-title>
{% block toolbar_title %}
<q-btn flat no-caps dense size="lg" type="a" href="/"
>{% if USE_CUSTOM_LOGO %}
<img height="30px" alt="Logo" src="{{ USE_CUSTOM_LOGO }}" />
{%else%} {% if SITE_TITLE != 'LNbits' %} {{ SITE_TITLE }} {% else
%}
2023-10-10 15:04:13 +01:00
<span><strong>LN</strong>bits</span> {% endif %} {%endif%} </q-btn
>{% endblock %} {% block toolbar_subtitle %}{%if user and
user.super_user%}
<q-badge align="middle">Super User</q-badge>
{% elif user and user.admin %}
<q-badge align="middle">Admin User</q-badge>
{%endif%}{% endblock %}
2022-04-20 11:20:39 +01:00
</q-toolbar-title>
2023-03-07 12:40:19 +01:00
{% block beta %} {% if VOIDWALLET %}
<q-badge color="red" text-color="black" class="q-mr-md">
{% raw %}{{ $t('voidwallet_active') }}{% endraw %}
</q-badge>
2023-03-07 12:28:52 +01:00
{%endif%}
<q-badge
v-show="$q.screen.gt.sm"
color="yellow"
text-color="black"
class="q-mr-md"
>
2022-04-20 11:20:39 +01:00
<span
v-text='$t("use_with_caution", { name: "{{ SITE_TITLE }}" })'
></span>
2020-08-29 14:10:26 -03:00
</q-badge>
2020-04-16 17:10:53 +02:00
{% endblock %}
2022-07-05 16:16:46 -06:00
<q-badge
v-if="g.offline"
color="red"
text-color="white"
class="q-mr-md"
>
<span>OFFLINE</span>
2022-07-04 13:03:21 -06:00
</q-badge>
[FEAT] Push notification integration into core (#1393) * push notification integration into core added missing component fixed bell working on all pages - made pubkey global template env var - had to move `get_push_notification_pubkey` to `helpers.py` because of circular reference with `tasks.py` formay trying to fix mypy added py-vapid to requirements Trying to fix stub mypy issue * removed key files * webpush key pair is saved in db `webpush_settings` * removed lnaddress extension changes * support for multi user account subscriptions, subscriptions are stored user based fixed syntax error fixed syntax error removed unused line * fixed subscribed user storage with local storage, no get request required * method is singular now * cleanup unsubscribed or expired push subscriptions fixed flake8 errors fixed poetry errors * updating to latest lnbits formatting, rebase error fix * remove unused? * revert * relock * remove * do not create settings table use adminsettings mypy fix * cleanup old code * catch case when client tries to recreate existing webpush subscription e.g. on cleared local storage * show notification bell on user related pages only * use local storage with one key like array, some refactoring * fixed crud import * fixed too long line * removed unused imports * ruff * make webpush editable * fixed privkey encoding * fix ruff * fix migration --------- Co-authored-by: schneimi <admin@schneimi.de> Co-authored-by: schneimi <dev@schneimi.de> Co-authored-by: dni ⚡ <office@dnilabs.com>
2023-09-11 15:48:49 +02:00
<lnbits-notifications-btn
v-if="g.user"
pubkey="{{ WEBPUSH_PUBKEY }}"
></lnbits-notifications-btn>
<q-btn-dropdown
dense
flat
round
size="sm"
icon="language"
class="q-pl-md"
>
<q-list v-for="(lang, index) in g.langs" :key="index">
<q-item
clickable
v-close-popup
:active="activeLanguage(lang.value)"
@click="changeLanguage(lang.value)"
><q-item-section>
{% raw %}
<q-item-label
>{{lang.display ?? lang.value.toUpperCase()}}</q-item-label
>
<q-tooltip>{{lang.label}}</q-tooltip>
{% endraw %}
</q-item-section>
</q-item>
</q-list>
</q-btn-dropdown>
<q-btn-dropdown
2021-07-01 11:54:45 +01:00
v-if="g.allowedThemes && g.allowedThemes.length > 1"
dense
flat
round
size="sm"
2023-11-08 15:39:48 +01:00
icon="format_color_fill"
class="q-pl-md"
>
<div class="row no-wrap q-pa-md">
2022-02-17 21:34:36 +00:00
<q-btn
v-if="g.allowedThemes.includes('classic')"
2022-02-17 21:34:36 +00:00
dense
flat
@click="changeColor('classic')"
2023-11-08 15:39:48 +01:00
icon="circle"
color="deep-purple"
2022-02-17 21:34:36 +00:00
size="md"
><q-tooltip>classic</q-tooltip>
2022-02-17 21:34:36 +00:00
</q-btn>
<q-btn
v-if="g.allowedThemes.includes('bitcoin')"
dense
flat
@click="changeColor('bitcoin')"
2023-11-08 15:39:48 +01:00
icon="circle"
color="orange"
size="md"
><q-tooltip>bitcoin</q-tooltip>
</q-btn>
<q-btn
v-if="g.allowedThemes.includes('mint')"
dense
flat
@click="changeColor('mint')"
2023-11-08 15:39:48 +01:00
icon="circle"
color="green"
size="md"
><q-tooltip>mint</q-tooltip> </q-btn
><q-btn
v-if="g.allowedThemes.includes('autumn')"
dense
flat
@click="changeColor('autumn')"
2023-11-08 15:39:48 +01:00
icon="circle"
color="brown"
size="md"
><q-tooltip>autumn</q-tooltip>
</q-btn>
<q-btn
2021-07-01 12:34:50 +01:00
v-if="g.allowedThemes.includes('monochrome')"
dense
flat
@click="changeColor('monochrome')"
2023-11-08 15:39:48 +01:00
icon="circle"
color="grey"
size="md"
><q-tooltip>monochrome</q-tooltip>
</q-btn>
<q-btn
2021-07-01 12:34:50 +01:00
v-if="g.allowedThemes.includes('salvador')"
dense
flat
2021-06-30 22:48:47 +01:00
@click="changeColor('salvador')"
2023-11-08 15:39:48 +01:00
icon="circle"
2021-06-30 22:48:47 +01:00
color="blue-10"
size="md"
2021-06-30 22:48:47 +01:00
><q-tooltip>elSalvador</q-tooltip>
</q-btn>
2022-04-20 00:36:11 +01:00
<q-btn
v-if="g.allowedThemes.includes('freedom')"
dense
flat
@click="changeColor('freedom')"
2023-11-08 15:39:48 +01:00
icon="circle"
2022-04-20 11:23:11 +01:00
color="pink-13"
2022-04-20 00:36:11 +01:00
size="md"
><q-tooltip>freedom</q-tooltip>
</q-btn>
<q-btn
v-if="g.allowedThemes.includes('cyber')"
dense
flat
@click="changeColor('cyber')"
2023-11-08 15:39:48 +01:00
icon="circle"
color="light-green-9"
size="md"
><q-tooltip>cyber</q-tooltip>
2022-04-20 00:36:11 +01:00
</q-btn>
<q-btn
2021-07-01 12:34:50 +01:00
v-if="g.allowedThemes.includes('flamingo')"
dense
flat
2021-06-30 23:14:39 +01:00
@click="changeColor('flamingo')"
2023-11-08 15:39:48 +01:00
icon="circle"
2021-06-30 23:14:39 +01:00
color="pink-3"
size="md"
2021-06-30 23:14:39 +01:00
><q-tooltip>flamingo</q-tooltip>
</q-btn>
</div>
</q-btn-dropdown>
2020-08-29 14:10:26 -03:00
<q-btn
dense
flat
round
@click="toggleDarkMode"
:icon="($q.dark.isActive) ? 'brightness_3' : 'wb_sunny'"
size="sm"
>
<q-tooltip
>{% raw %}{{ $t('toggle_darkmode') }}{% endraw %}</q-tooltip
>
</q-btn>
</q-toolbar>
</q-header>
2020-04-16 17:10:53 +02:00
{% block drawer %}
2020-08-29 14:10:26 -03:00
<q-drawer
v-model="g.visibleDrawer"
side="left"
:width="($q.screen.lt.md) ? 260 : 230"
show-if-above
:elevated="$q.screen.lt.md"
>
<lnbits-wallet-list></lnbits-wallet-list>
<lnbits-admin-ui
v-if="'{{LNBITS_ADMIN_UI}}' == 'True'"
[FEAT] Node Managment (#1895) * [FEAT] Node Managment feat: node dashboard channels and transactions fix: update channel variables better types refactor ui add onchain balances and backend_name mock values for fake wallet remove app tab start implementing peers and channel management peer and channel management implement channel closing add channel states, better errors seperate payments and invoices on transactions tab display total channel balance feat: optional public page feat: show node address fix: port conversion feat: details dialog on transactions fix: peer info without alias fix: rename channel balances small improvements to channels tab feat: pagination on transactions tab test caching transactions refactor: move WALLET into wallets module fix: backwards compatibility refactor: move get_node_class to nodes modules post merge bundle fundle feat: disconnect peer feat: initial lnd support only use filtered channels for total balance adjust closing logic add basic node tests add setting for disabling transactions tab revert unnecessary changes add tests for invoices and payments improve payment and invoice implementations the previously used invoice fixture has a session scope, but a new invoice is required tests and bug fixes for channels api use query instead of body in channel delete delete requests should generally not use a body take node id through path instead of body for delete endpoint add peer management tests more tests for errors improve error handling rename id and pubkey to peer_id for consistency remove dead code fix http status codes make cache keys safer cache node public info comments for node settings rename node prop in frontend adjust tests to new status codes cln: use amount_msat instead of value for onchain balance turn transactions tab off by default enable transactions in tests only allow super user to create or delete fix prop name in admin navbar --------- Co-authored-by: jacksn <jkranawetter05@gmail.com>
2023-09-25 15:04:44 +02:00
:show-node="'{{LNBITS_NODE_UI}}' == 'True'"
></lnbits-admin-ui>
2020-08-29 14:10:26 -03:00
<lnbits-extension-list class="q-pb-xl"></lnbits-extension-list>
</q-drawer>
{% endblock %} {% block page_container %}
<q-page-container>
<q-page class="q-px-md q-py-lg" :class="{'q-px-lg': $q.screen.gt.xs}">
{% block page %}{% endblock %}
</q-page>
</q-page-container>
{% endblock %} {% block footer %}
2020-08-29 14:10:26 -03:00
<q-footer
class="bg-transparent q-px-lg q-py-md"
:class="{'text-dark': !$q.dark.isActive}"
>
<q-space class="q-py-lg lt-md"></q-space>
<q-toolbar class="gt-sm">
2020-08-29 14:10:26 -03:00
<q-toolbar-title class="text-caption">
{{ SITE_TITLE }}, {{SITE_TAGLINE}}
2021-06-10 11:51:57 +01:00
<br />
2023-05-04 17:21:37 +02:00
<small
>{% raw %}{{ $t('lnbits_version') }}{% endraw %}:
2023-10-09 07:53:08 +02:00
{{LNBITS_VERSION}}
2023-05-04 17:21:37 +02:00
</small>
2020-08-29 14:10:26 -03:00
</q-toolbar-title>
<q-space></q-space>
<q-btn
2022-11-07 13:31:42 +01:00
flat
dense
:color="($q.dark.isActive) ? 'white' : 'primary'"
type="a"
href="/docs"
target="_blank"
rel="noopener"
>
{% raw %}{{ $t('api_docs') }}{% endraw %}
<q-tooltip
>{% raw %}{{ $t('view_swagger_docs') }}{% endraw %}</q-tooltip
>
2022-11-07 13:31:42 +01:00
</q-btn>
<q-btn
2020-08-29 14:10:26 -03:00
flat
dense
2021-06-29 01:19:35 +01:00
:color="($q.dark.isActive) ? 'white' : 'primary'"
2020-08-29 14:10:26 -03:00
icon="code"
type="a"
href="https://github.com/lnbits/lnbits"
target="_blank"
rel="noopener"
>
<q-tooltip>{% raw %}{{ $t('view_github') }}{% endraw %}</q-tooltip>
2020-08-29 14:10:26 -03:00
</q-btn>
</q-toolbar>
</q-footer>
2020-04-17 20:39:23 +02:00
{% endblock %}
</q-layout>
{% block vue_templates %}{% endblock %}
2020-09-15 15:54:05 -03:00
<!---->
{% for url in INCLUDED_JS %}
<script src="{{ static_url_for('static', url) }}"></script>
2020-09-15 15:54:05 -03:00
{% endfor %}
<!---->
<script type="text/javascript">
const SITE_DESCRIPTION = {{ SITE_DESCRIPTION | tojson}}
const themes = {{ LNBITS_THEME_OPTIONS | tojson }}
const LNBITS_DENOMINATION = {{ LNBITS_DENOMINATION | tojson }}
const LNBITS_VERSION = {{ LNBITS_VERSION | tojson }}
const LNBITS_QR_LOGO = {{ LNBITS_QR_LOGO | tojson }}
if (themes && themes.length) {
2021-07-01 11:54:45 +01:00
window.allowedThemes = themes.map(str => str.trim())
}
window.langs = [
2023-11-04 16:28:15 +01:00
{ value: 'en', label: 'English', display: '🇬🇧 EN' },
{ value: 'de', label: 'Deutsch', display: '🇩🇪 DE' },
{ value: 'es', label: 'Español', display: '🇪🇸 ES' },
{ value: 'jp', label: '日本語', display: '🇯🇵 JP' },
{ value: 'cn', label: '中文', display: '🇨🇳 CN' },
{ value: 'fr', label: 'Français', display: '🇫🇷 FR' },
{ value: 'it', label: 'Italiano', display: '🇮🇹 IT' },
{ value: 'pi', label: 'Pirate', display: '🏴‍☠️ PI' },
{ value: 'nl', label: 'Nederlands', display: '🇳🇱 NL' },
{ value: 'we', label: 'Cymraeg', display: '🏴󠁧󠁢󠁷󠁬󠁳󠁿 CY' },
{ value: 'pl', label: 'Polski', display: '🇵🇱 PL' },
{ value: 'pt', label: 'Português', display: '🇵🇹 PT' },
{ value: 'br', label: 'Português do Brasil', display: '🇧🇷 BR' },
{ value: 'cs', label: 'Česky', display: '🇨🇿 CS' },
{ value: 'sk', label: 'Slovensky', display: '🇸🇰 SK' }
]
</script>
{% block scripts %}{% endblock %}
2019-12-14 11:48:53 -03:00
</body>
2022-04-20 11:20:39 +01:00
</html>