added imprint_html option

This commit is contained in:
Uli Roth 2024-09-24 10:23:53 +02:00
parent fca8761515
commit 57ea5f0b28
6 changed files with 46 additions and 2 deletions

View File

@ -84,8 +84,8 @@ of the notes even if it tried to.
| `THEME_PAGE_TITLE` | `""` | Custom text the page title | | `THEME_PAGE_TITLE` | `""` | Custom text the page title |
| `THEME_FAVICON` | `""` | Custom url for the favicon. Must be publicly reachable | | `THEME_FAVICON` | `""` | Custom url for the favicon. Must be publicly reachable |
| `THEME_NEW_NOTE_NOTICE` | `true` | Show the message about how notes are stored in the memory and may be evicted after creating a new note. Defaults to `true`. | | `THEME_NEW_NOTE_NOTICE` | `true` | Show the message about how notes are stored in the memory and may be evicted after creating a new note. Defaults to `true`. |
| `IMPRINT_URL` | `""` | Custom url for an Imprint hosted somewhere else. Must be publicly reachable. | | `IMPRINT_URL` | `""` | Custom url for an Imprint hosted somewhere else. Must be publicly reachable. Takes precedence above `IMPRINT_HTML`. |
| `IMPRINT_HTML` | `""` | Alternative to `IMPRINT_URL`, this can be used to specify the HTML code to show on `/imprint`. Only `IMPRINT_HTML` or `IMPRINT_URL` should be specified, not both.|
## Deployment ## Deployment
> `https` is required otherwise browsers will not support the cryptographic functions. > `https` is required otherwise browsers will not support the cryptographic functions.

View File

@ -42,6 +42,10 @@ pub static ref IMPRINT_URL: String = std::env::var("IMPRINT_URL")
.unwrap_or("".to_string()) .unwrap_or("".to_string())
.parse() .parse()
.unwrap(); .unwrap();
pub static ref IMPRINT_HTML: String = std::env::var("IMPRINT_HTML")
.unwrap_or("".to_string())
.parse()
.unwrap();
} }
// THEME // THEME

View File

@ -13,6 +13,7 @@ pub struct Status {
pub allow_advanced: bool, pub allow_advanced: bool,
pub allow_files: bool, pub allow_files: bool,
pub imprint_url: String, pub imprint_url: String,
pub imprint_html: String,
// Theme // Theme
pub theme_image: String, pub theme_image: String,
pub theme_text: String, pub theme_text: String,
@ -30,6 +31,7 @@ pub async fn get_status() -> (StatusCode, Json<Status>) {
allow_advanced: *config::ALLOW_ADVANCED, allow_advanced: *config::ALLOW_ADVANCED,
allow_files: *config::ALLOW_FILES, allow_files: *config::ALLOW_FILES,
imprint_url: config::IMPRINT_URL.to_string(), imprint_url: config::IMPRINT_URL.to_string(),
imprint_html: config::IMPRINT_HTML.to_string(),
theme_new_note_notice: *config::THEME_NEW_NOTE_NOTICE, theme_new_note_notice: *config::THEME_NEW_NOTE_NOTICE,
theme_image: config::THEME_IMAGE.to_string(), theme_image: config::THEME_IMAGE.to_string(),
theme_text: config::THEME_TEXT.to_string(), theme_text: config::THEME_TEXT.to_string(),

View File

@ -114,6 +114,7 @@ export type Status = {
allow_advanced: boolean allow_advanced: boolean
allow_files: boolean allow_files: boolean
imprint_url: string imprint_url: string
imprint_html: string
theme_image: string theme_image: string
theme_text: string theme_text: string
theme_favicon: string theme_favicon: string

View File

@ -10,6 +10,8 @@
<a href="/about">/about</a> <a href="/about">/about</a>
{#if $status?.imprint_url} {#if $status?.imprint_url}
<a href={$status.imprint_url} target="_blank" rel="noopener noreferrer">/imprint</a> <a href={$status.imprint_url} target="_blank" rel="noopener noreferrer">/imprint</a>
{:else if $status?.imprint_html}
<a href="/imprint">/imprint</a>
{/if} {/if}
<a href="https://github.com/cupcakearmy/cryptgeon" target="_blank" rel="noopener noreferrer"> <a href="https://github.com/cupcakearmy/cryptgeon" target="_blank" rel="noopener noreferrer">
code code

View File

@ -0,0 +1,35 @@
<script lang="ts">
import { get } from 'svelte/store';
import { goto } from '$app/navigation';
import { status } from '$lib/stores/status'
status.subscribe((config) => {
if (config != null) {
if (config.imprint_url) {
window.location = config.imprint_url;
}
else if (config.imprint_html == "") {
goto("/about");
}
}
});
</script>
<svelte:head>
<title>Imprint</title>
</svelte:head>
<section class="content">
{#if $status?.imprint_html}
{@html $status.imprint_html}
{/if}
</section>
<style>
section {
width: 100%;
display: flex;
flex-direction: column;
gap: 2rem;
}
</style>