Optional Domain mit Port und ohne für Sharelinks
This commit is contained in:
@@ -2,9 +2,33 @@
|
||||
* gemeinsam.js - Hilfsmittel für alle Dialogseiten.
|
||||
*/
|
||||
|
||||
/** Ruft die Ereignisseite und wirft bei Fehlern eine Ausnahme. */
|
||||
/**
|
||||
* Ruft die Ereignisseite und wirft bei Fehlern eine Ausnahme.
|
||||
*
|
||||
* Unterscheidet zwei Fälle, die sonst dieselbe nichtssagende Meldung
|
||||
* ergeben ("An unexpected error occurred"):
|
||||
*
|
||||
* * Die Nachricht erreicht keinen Empfänger - das Hintergrundskript
|
||||
* ist nicht geladen oder abgestürzt.
|
||||
* * Der Empfänger meldet einen Fehler zurück.
|
||||
*/
|
||||
export async function ruf(befehl, daten = {}) {
|
||||
const antwort = await browser.runtime.sendMessage({ befehl, ...daten });
|
||||
let antwort;
|
||||
try {
|
||||
antwort = await browser.runtime.sendMessage({ befehl, ...daten });
|
||||
} catch (err) {
|
||||
console.error("[paperless] sendMessage", befehl, err);
|
||||
throw new Error(
|
||||
`Das Hintergrundskript antwortet nicht (${befehl}).\n`
|
||||
+ `Ursprüngliche Meldung: ${err?.message || err}\n\n`
|
||||
+ `Einzelheiten in der Konsole: Extras -> Entwicklerwerkzeuge -> `
|
||||
+ `Debuggen von Add-ons -> Inspizieren.`);
|
||||
}
|
||||
if (antwort === undefined) {
|
||||
throw new Error(
|
||||
`Keine Antwort auf ${befehl}. Das Hintergrundskript ist `
|
||||
+ `vermutlich nicht geladen.`);
|
||||
}
|
||||
if (!antwort?.ok) {
|
||||
throw new Error(antwort?.fehler || `Aufruf ${befehl} fehlgeschlagen`);
|
||||
}
|
||||
|
||||
@@ -18,6 +18,17 @@
|
||||
Ohne abschließenden Schrägstrich. Nur http und https.
|
||||
</div>
|
||||
|
||||
<label for="shareBaseUrl" data-i18n="fieldShareBaseUrl">
|
||||
Adresse für Freigabelinks (optional)
|
||||
</label>
|
||||
<input type="text" id="shareBaseUrl"
|
||||
placeholder="https://dms.example.org">
|
||||
<div class="hinweis" data-i18n="optionsHintShareUrl">
|
||||
Nur nötig, wenn der interne Zugang über einen abweichenden Port oder
|
||||
Namen läuft. Freigabelinks werden dann unter dieser Adresse gebaut,
|
||||
damit sie auch von außen funktionieren. Leer = Basisadresse.
|
||||
</div>
|
||||
|
||||
<label for="token" data-i18n="fieldToken">API-Token</label>
|
||||
<input type="password" id="token">
|
||||
<div class="hinweis" data-i18n="optionsHintToken">
|
||||
@@ -54,6 +65,10 @@
|
||||
<input type="text" id="shareTag" style="width:160px">
|
||||
</div>
|
||||
|
||||
<div class="hinweis" data-i18n="optionsHintTag">
|
||||
Tag beim Teilen leer lassen, um keine Kennzeichnung zu setzen.
|
||||
</div>
|
||||
|
||||
<label for="ignorierteKleiner" style="margin-top:8px"
|
||||
data-i18n="fieldIgnoreSmaller">
|
||||
Anhänge vorab abwählen unter … Bytes
|
||||
|
||||
@@ -7,13 +7,14 @@
|
||||
* darf, ist eine unnötig grosse Angriffsfläche.
|
||||
*/
|
||||
|
||||
import { ladeEinstellungen, speichereEinstellungen } from "../lib/settings.js";
|
||||
import { ladeEinstellungen, speichereEinstellungen, zugriffsmuster }
|
||||
from "../lib/settings.js";
|
||||
import { uebersetzeSeite, ruf, fehlerAnzeigen, meldungAnzeigen }
|
||||
from "./gemeinsam.js";
|
||||
|
||||
const $ = (id) => document.getElementById(id);
|
||||
const FELDER = ["baseUrl", "token", "versionLabel", "shareDays", "shareTag",
|
||||
"ignorierteKleiner"];
|
||||
const FELDER = ["baseUrl", "shareBaseUrl", "token", "versionLabel",
|
||||
"shareDays", "shareTag", "ignorierteKleiner"];
|
||||
|
||||
document.addEventListener("DOMContentLoaded", async () => {
|
||||
uebersetzeSeite();
|
||||
@@ -42,7 +43,7 @@ async function rechtAnzeigen() {
|
||||
}
|
||||
let origin;
|
||||
try {
|
||||
origin = new URL(url).origin + "/*";
|
||||
origin = zugriffsmuster(url);
|
||||
} catch {
|
||||
ziel.className = "fehler";
|
||||
ziel.textContent = browser.i18n.getMessage("errBadUrl") || "Ungültige Adresse.";
|
||||
@@ -58,6 +59,7 @@ async function rechtAnzeigen() {
|
||||
function gelesen() {
|
||||
return {
|
||||
baseUrl: $("baseUrl").value.trim().replace(/\/+$/, ""),
|
||||
shareBaseUrl: ($("shareBaseUrl")?.value || "").trim().replace(/\/+$/, ""),
|
||||
token: $("token").value.trim(),
|
||||
versionLabel: $("versionLabel").value.trim() || "Thunderbird {datum}",
|
||||
shareDays: Number($("shareDays").value || 0),
|
||||
@@ -83,7 +85,7 @@ function speichern() {
|
||||
|
||||
let origin;
|
||||
try {
|
||||
origin = new URL(werte.baseUrl).origin + "/*";
|
||||
origin = zugriffsmuster(werte.baseUrl);
|
||||
} catch {
|
||||
fehlerAnzeigen(browser.i18n.getMessage("errBadUrl")
|
||||
|| "Ungültige Adresse. Erwartet wird https://rechner oder http://rechner.");
|
||||
|
||||
Reference in New Issue
Block a user