cmap functions, email, architecture documentation.

This commit is contained in:
2026-08-18 03:33:10 +02:00
parent 12f1ed2764
commit 63b7ca0853
33 changed files with 3974 additions and 80 deletions
+61
View File
@@ -42,6 +42,8 @@
<span class="account-separator" aria-hidden="true">·</span>
<span id="account-role" class="muted"></span>
<span class="account-separator" aria-hidden="true">·</span>
<a id="profile-link" href="#profile" data-tr="profile">Profile</a>
<span class="account-separator" aria-hidden="true">·</span>
<a id="logout-link" href="#" data-tr="sign-out">Sign out</a>
<span class="account-separator admin-only hidden" aria-hidden="true">·</span>
<a id="admin-link" class="admin-only hidden" href="#admin" data-tr="admin">Admin</a>
@@ -212,6 +214,8 @@
<div class="cmap-context-separator" role="separator"></div>
<button id="cmap-rename-map" type="button" role="menuitem" data-tr="rename-concept-map" disabled>Rename CMap</button>
<button id="cmap-delete-map" class="danger" type="button" role="menuitem" data-tr="delete-concept-map" disabled>Delete CMap</button>
<button id="cmap-create-snapshot" type="button" role="menuitem" data-tr="create-concept-map-snapshot" disabled>Make snapshot…</button>
<button id="cmap-history" type="button" role="menuitem" data-tr="concept-map-history" disabled>CMap history</button>
<div class="cmap-context-separator" role="separator"></div>
<button id="cmap-add-concept" type="button" role="menuitem" data-tr="add-concept">Add concept</button>
<button id="cmap-add-page" type="button" role="menuitem" data-tr="add-page-node">Add current page</button>
@@ -258,6 +262,25 @@
<div id="diff-target"></div>
</section>
<section id="profile-view" class="hidden settings-view">
<header class="page-header">
<h1 data-tr="profile">Profile</h1>
</header>
<form id="profile-form" class="settings-form card">
<label><span data-tr="username">Username</span><input id="profile-username" disabled></label>
<label><span data-tr="display-name">Display name</span><input id="profile-display-name" required maxlength="200" autocomplete="name"></label>
<label><span data-tr="email-address">Email address</span><input id="profile-email" type="email" maxlength="320" autocomplete="email"></label>
<fieldset>
<legend data-tr="change-password">Change password</legend>
<p class="muted" data-tr="change-password-help">Leave these fields empty if you do not want to change your password.</p>
<label><span data-tr="current-password">Current password</span><input id="profile-current-password" type="password" autocomplete="current-password"></label>
<label><span data-tr="new-password">New password</span><input id="profile-new-password" type="password" minlength="8" maxlength="1024" autocomplete="new-password"></label>
<label><span data-tr="repeat-password">Repeat password</span><input id="profile-repeat-password" type="password" minlength="8" maxlength="1024" autocomplete="new-password"></label>
</fieldset>
<div class="settings-actions"><button type="submit" data-tr="save-profile">Save profile</button><span id="profile-status" class="muted" role="status" aria-live="polite"></span></div>
</form>
</section>
<section id="admin-view" class="hidden">
<header class="page-header">
<h1 data-tr="admin">Admin</h1>
@@ -265,6 +288,7 @@
<p class="admin-version"><span data-tr="software-version">Software version</span>: <strong id="admin-software-version"></strong></p>
<nav class="admin-menu">
<a id="admin-users-link" href="#admin/users" data-tr="users">Users</a>
<a id="admin-mail-link" href="#admin/mail" data-tr="email-and-password-reset">Email and password reset</a>
<a id="admin-aliases-link" href="#admin/aliases" data-tr="page-aliases">Page aliases</a>
<a id="admin-translations-link" href="#" data-tr="translations">Translations</a>
<a id="admin-orphaned-uploads-link" href="#admin/orphaned-uploads" data-tr="orphaned-uploads">Orphaned uploads</a>
@@ -296,6 +320,7 @@
<form id="new-user-form" class="user-form">
<input id="new-username" placeholder="Username" data-tr-placeholder="username" required>
<input id="new-display-name" placeholder="Display name" data-tr-placeholder="display-name">
<input id="new-email" type="email" placeholder="Email address" data-tr-placeholder="email-address">
<input id="new-password" type="password" placeholder="Initial password" data-tr-placeholder="initial-password" required>
<select id="new-role">
<option value="reader" data-tr="role-reader">reader</option>
@@ -306,6 +331,30 @@
</form>
<div id="user-list"></div>
</section>
<section id="mail-admin-view" class="hidden settings-view">
<header class="page-header">
<h1 data-tr="email-and-password-reset">Email and password reset</h1>
<a id="close-mail-admin" href="#admin" data-tr="back">Back</a>
</header>
<form id="mail-settings-form" class="settings-form card">
<label><span data-tr="public-wiki-url">Public wiki URL</span><input id="mail-public-url" type="url" placeholder="https://wiki.example.org"></label>
<label><span data-tr="smtp-server">SMTP server</span><input id="mail-smtp-host"></label>
<label><span data-tr="smtp-port">SMTP port</span><input id="mail-smtp-port" type="number" min="1" max="65535" value="587"></label>
<label><span data-tr="sender-address">Sender address</span><input id="mail-smtp-from" type="email"></label>
<label><span data-tr="smtp-username">SMTP username</span><input id="mail-smtp-user" autocomplete="username"></label>
<label><span data-tr="smtp-password">SMTP password</span><input id="mail-smtp-password" type="password" autocomplete="new-password"><small id="mail-password-help" class="muted"></small></label>
<label class="checkbox-label"><input id="mail-smtp-tls" type="checkbox" checked><span data-tr="use-starttls">Use STARTTLS</span></label>
<label class="checkbox-label"><input id="mail-smtp-accept-untrusted-certificates" type="checkbox"><span data-tr="accept-untrusted-smtp-certificates">Accept untrusted certificates (trusted local server only)</span></label>
<label><span data-tr="reset-links-per-hour">Maximum reset links per user per hour</span><input id="mail-reset-limit" type="number" min="1" max="20" value="2"></label>
<fieldset>
<legend data-tr="test-smtp-settings">Test SMTP settings</legend>
<label><span data-tr="test-recipient">Test recipient</span><input id="mail-test-recipient" type="email"></label>
<button id="mail-test-button" type="button" data-tr="send-test-mail">Send test email</button>
</fieldset>
<div class="settings-actions"><button type="submit" data-tr="save">Save</button><span id="mail-settings-status" class="muted" role="status" aria-live="polite"></span></div>
</form>
</section>
</main>
</div>
@@ -425,6 +474,7 @@
<p class="muted" data-tr="concept-map-link-help">The selected CMap is inserted as a normal Markdown link.</p>
<div class="cmap-concept-dialog-actions">
<button id="wiki-cmap-link-cancel" type="button" data-tr="cancel">Cancel</button>
<button id="wiki-cmap-embed-submit" type="button" data-tr="embed-concept-map">Embed CMap</button>
<button id="wiki-cmap-link-submit" type="submit" class="primary" data-tr="insert">Insert</button>
</div>
</form>
@@ -442,6 +492,17 @@
</form>
</dialog>
<dialog id="cmap-history-dialog" class="cmap-history-dialog" aria-labelledby="cmap-history-title">
<div class="cmap-history-panel">
<header>
<h2 id="cmap-history-title" data-tr="concept-map-history">CMap history</h2>
<button id="cmap-history-close" type="button" data-tr="close">Close</button>
</header>
<p class="muted" data-tr="concept-map-history-help">Load a historical version into the editor to inspect it. Saving it creates a new current version.</p>
<div id="cmap-history-list"></div>
</div>
</dialog>
<script src="/vendor/purify.min.js"></script>
<script src="/vendor/highlight.min.js"></script>
<script src="/vendor/highlight-scheme.min.js"></script>