Compare commits

...
1 Commits
Author SHA1 Message Date
alientim e70c6e27c1 Version 2.2.1: pdf.js unter .js -- .mjs kennt kein Webserver 2026-09-09 22:06:17 +02:00
10 changed files with 25 additions and 11 deletions

No files matched your search

+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "tesm-license" name = "tesm-license"
version = "2.2.0" version = "2.2.1"
description = "TESM-Lizenzserver -- Kunden, Tickets, Lizenzen, Aktivierung" description = "TESM-Lizenzserver -- Kunden, Tickets, Lizenzen, Aktivierung"
requires-python = ">=3.11" requires-python = ">=3.11"
dependencies = [ dependencies = [
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "tesm-core" name = "tesm-core"
version = "2.2.0" version = "2.2.1"
description = "Gemeinsames Anwendungsgeruest (Auth, RBAC, Navigation, Design-System, Migrationen) fuer TESM und TESM-Lizenzserver" description = "Gemeinsames Anwendungsgeruest (Auth, RBAC, Navigation, Design-System, Migrationen) fuer TESM und TESM-Lizenzserver"
requires-python = ">=3.11" requires-python = ">=3.11"
dependencies = [ dependencies = [
@@ -135,7 +135,7 @@ def create_base_app(
#: Wortmarke, ohne Zeile darunter; die Marke selbst zeigen beide #: Wortmarke, ohne Zeile darunter; die Marke selbst zeigen beide
#: Anwendungen. #: Anwendungen.
auth_tagline: str = "", auth_tagline: str = "",
app_version: str = "2.2.0", app_version: str = "2.2.1",
built_in_trusted_keys: tuple[str, ...] = (), built_in_trusted_keys: tuple[str, ...] = (),
enable_license: bool = True, enable_license: bool = True,
template_folder: str | None = None, template_folder: str | None = None,
@@ -16,6 +16,11 @@
* *
* pdf.js liegt im Paket (static/vendor/pdfjs) und wird erst geladen, wenn * pdf.js liegt im Paket (static/vendor/pdfjs) und wird erst geladen, wenn
* wirklich ein PDF geoeffnet wird: 1,7 MB gehoeren nicht in jeden Seitenaufruf. * wirklich ein PDF geoeffnet wird: 1,7 MB gehoeren nicht in jeden Seitenaufruf.
*
* Die Dateien heissen ".js" und nicht ".mjs": die mime.types von nginx kennen
* ".mjs" nicht und liefern "application/octet-stream" -- damit lehnt jeder
* Browser ein Modul ab, und zwar ohne dass der Benutzer erfaehrt, warum. Am
* Inhalt aendert die Endung nichts.
* ========================================================================== */ * ========================================================================== */
const MIN_ZOOM = 0.1; const MIN_ZOOM = 0.1;
@@ -145,17 +150,17 @@ let pdfjsGeladen = null;
async function pdfjsLaden(basis) { async function pdfjsLaden(basis) {
if (!pdfjsGeladen) { if (!pdfjsGeladen) {
pdfjsGeladen = (async () => { pdfjsGeladen = (async () => {
const lib = await import(`${basis}pdf.min.mjs`); const lib = await import(`${basis}pdf.min.js`);
// Der Komponentenbau von pdf.js sucht die Bibliothek unter diesem Namen. // Der Komponentenbau von pdf.js sucht die Bibliothek unter diesem Namen.
globalThis.pdfjsLib = lib; globalThis.pdfjsLib = lib;
const komponenten = await import(`${basis}pdf_viewer.mjs`); const komponenten = await import(`${basis}pdf_viewer.js`);
// Das Stylesheet von pdf.js zeichnet die Formularfelder. 100 KB gehoeren // Das Stylesheet von pdf.js zeichnet die Formularfelder. 100 KB gehoeren
// nicht in jeden Seitenaufruf -- also erst hier. // nicht in jeden Seitenaufruf -- also erst hier.
const stil = document.createElement("link"); const stil = document.createElement("link");
stil.rel = "stylesheet"; stil.rel = "stylesheet";
stil.href = `${basis}pdf_viewer.css`; stil.href = `${basis}pdf_viewer.css`;
document.head.append(stil); document.head.append(stil);
lib.GlobalWorkerOptions.workerSrc = `${basis}pdf.worker.min.mjs`; lib.GlobalWorkerOptions.workerSrc = `${basis}pdf.worker.min.js`;
return { lib, komponenten }; return { lib, komponenten };
})().catch((fehler) => { })().catch((fehler) => {
pdfjsGeladen = null; pdfjsGeladen = null;
@@ -333,7 +338,11 @@ export function initFilePreview(wurzel = document) {
rahmen.src = quelle; rahmen.src = quelle;
if (hinweis) { if (hinweis) {
hinweis.textContent = hinweis.textContent =
"Dieses Geraet kann die Formularansicht nicht laden -- es bleibt bei der einfachen Anzeige."; "Die Formularansicht liess sich nicht laden -- es bleibt bei der einfachen Anzeige.";
// Die Leiste traegt den Hinweis. "zeigen('text')" hat sie gerade
// verborgen -- ohne diese Zeile blieb der Fehlschlag unsichtbar, und
// es sah aus, als koennte die Vorschau einfach keine Formulare.
leiste.hidden = false;
} }
} }
}; };
@@ -1,6 +1,11 @@
pdf.js 4.10.38 -- https://github.com/mozilla/pdf.js pdf.js 4.10.38 -- https://github.com/mozilla/pdf.js
Aus dem npm-Paket pdfjs-dist; nur build/pdf.min.mjs, build/pdf.worker.min.mjs, Aus dem npm-Paket pdfjs-dist; nur build/pdf.min.mjs, build/pdf.worker.min.mjs,
web/pdf_viewer.mjs, web/pdf_viewer.css und web/images. Apache-2.0, siehe LICENSE. web/pdf_viewer.mjs, web/pdf_viewer.css, web/images und standard_fonts.
Apache-2.0, siehe LICENSE.
Die drei Skriptdateien sind von .mjs auf .js umbenannt: die mime.types von
nginx kennen .mjs nicht, und mit application/octet-stream lehnt jeder Browser
ein Modul ab. Der Inhalt ist unveraendert.
Warum eingebettet und nicht von einem CDN: TESM laeuft in abgeschotteten Warum eingebettet und nicht von einem CDN: TESM laeuft in abgeschotteten
Netzen. Was die Oberflaeche braucht, muss im Paket liegen. Netzen. Was die Oberflaeche braucht, muss im Paket liegen.
@@ -4,10 +4,10 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "tesm-licensing-server" name = "tesm-licensing-server"
version = "2.2.0" version = "2.2.1"
description = "Serverhaelfte des TESM-Lizenzprotokolls: ausstellen, erneuern, antworten" description = "Serverhaelfte des TESM-Lizenzprotokolls: ausstellen, erneuern, antworten"
requires-python = ">=3.11" requires-python = ">=3.11"
dependencies = ["tesm-licensing==2.2.0", "cryptography>=41"] dependencies = ["tesm-licensing==2.2.1", "cryptography>=41"]
[tool.setuptools.packages.find] [tool.setuptools.packages.find]
where = ["src"] where = ["src"]
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "tesm-licensing" name = "tesm-licensing"
version = "2.2.0" version = "2.2.1"
description = "Ed25519-basiertes Lizenz- und Aktivierungsprotokoll fuer TESM und TESM-Lizenzserver" description = "Ed25519-basiertes Lizenz- und Aktivierungsprotokoll fuer TESM und TESM-Lizenzserver"
requires-python = ">=3.11" requires-python = ">=3.11"
dependencies = ["cryptography>=42"] dependencies = ["cryptography>=42"]