CH-J ToolsSerververwaltung über SSH
Menü
Veröffentlichte Quellen

CH-J Tools

Durchsuchen Sie Verzeichnisse und Dateien einer bestimmten Anwendungsausgabe.

Quellen als ZIP herunterladen
CH-J / Server Manager 872 Dateien
core-20261030T220507Z-61e4558d889f Hinzugefügt: · Erstellt:
license.js Hinzugefügt: Datum nicht erfasst 3,8 KB · 68 Zeilen
Code Datei herunterladen
1"use strict";
2// Texts: i18n/license/<language>.json, languages: i18n/languages.json (injected by the Rust Core).
3// The license itself is never translated; the operational guidance exists in CS/DE/EN only.
4const i18nData = globalThis.__CHJ_I18N__ || { manifest: { languages: [] }, catalogs: { license: {} } };
5const fallbackCopy = i18nData.catalogs.license.en || i18nData.catalogs.license.cs || {};
6const copy = new Proxy(i18nData.catalogs.license, { get: (target, language) => ({ ...fallbackCopy, ...(target[language] || {}) }) });
7const knownLanguage = language => Boolean(i18nData.catalogs.license[language]);
8const el = id => document.getElementById(id);
9for (const language of i18nData.manifest.languages || []) {
10 if (!knownLanguage(language.code)) continue;
11 const option = document.createElement("option");
12 option.value = language.code;
13 option.textContent = language.name;
14 el("language").append(option);
16let license;
17let showingLicense = false;
18function translate() {
19 const language = el("language").value;
20 const text = copy[language];
21 document.documentElement.lang = language;
22 for (const [id, key] of [["consentLicense", "consent"], ["consentRisk", "risk"], ["accept", "accept"], ["decline", "decline"], ["continue", "next"], ["back", "back"]]) el(id).textContent = text[key];
23 el("heading").textContent = text[showingLicense ? "heading" : "guidanceHeading"];
24 el("intro").textContent = text[showingLicense ? "intro" : "guidanceIntro"];
25 el("guidanceText").textContent = license?.guidance[language] || license?.guidance.en || "";
26 el("guidanceText").setAttribute("aria-label", text.guidanceHeading);
27 el("guidanceText").hidden = showingLicense;
28 for (const id of ["licenseText", "consentRow", "accept", "back"]) el(id).hidden = !showingLicense;
29 el("continue").hidden = showingLicense;
30 el("continue").disabled = !license;
32el("language").addEventListener("change", translate);
33el("consent").addEventListener("change", () => { el("accept").disabled = !license || !showingLicense || !el("consent").checked; });
34el("decline").addEventListener("click", () => window.licenseApi.decline());
35el("continue").addEventListener("click", async () => {
36 if (!license) return;
37 el("continue").disabled = true;
38 try {
39 await window.licenseApi.showLicense({ guidanceSha256: license.guidanceSha256 });
40 showingLicense = true;
41 el("error").textContent = "";
42 translate();
43 el("licenseText").focus();
44 } catch { el("error").textContent = copy[el("language").value].error; el("continue").disabled = false; }
45});
46el("back").addEventListener("click", () => {
47 showingLicense = false;
48 el("consent").checked = false;
49 el("accept").disabled = true;
50 translate();
51});
52el("accept").addEventListener("click", async () => {
53 if (!license || !showingLicense || !el("consent").checked) return;
54 el("accept").disabled = true;
55 try { await window.licenseApi.accept({ accepted: true, sha256: license.sha256, guidanceSha256: license.guidanceSha256 }); }
56 catch { el("error").textContent = copy[el("language").value].error; el("accept").disabled = !el("consent").checked; }
57});
58translate();
59window.licenseApi.read().then(value => {
60 license = value;
61 // The license and the safety guidance exist only in Czech, German and English (never translated further):
62 // another UI language shows them in its base language when available, otherwise in English.
63 const base = String(value.language || "").split("-")[0];
64 el("language").value = knownLanguage(value.language) ? value.language : knownLanguage(base) ? base : value.language && knownLanguage("en") ? "en" : (knownLanguage("cs") ? "cs" : "en");
65 el("licenseText").textContent = value.text;
66 el("release").textContent = `CH-J Proprietary Software License ${value.licenseVersion} · v${value.appVersion} · ${value.buildId}`;
67 translate();
68}).catch(() => { el("error").textContent = copy[el("language").value].error; });
SHA-256beabe175e5ab60bbb71d10845d8fe4c7071a3000185af68c75e6119e6fee7b31

CH-J Proprietary Software License 1.14 · Die Quellen werden unter der CH-J Proprietary Software License 1.14 bereitgestellt. Ihre Verfügbarkeit ändert die Lizenzbedingungen nicht und gewährt keine zusätzlichen Rechte.

SHA-256 des Archivs77380d4805485ffa4027fbe7858b5836f197a4aa9d52358a43e2d12d018744df
Dateien