v.34.1
This commit is contained in:
1 parent
4afa88a65e
commit
2ab44c4c62
49 files changed
+1523
-176
No files matched your search
@@ -151,7 +151,7 @@ function setPanel(name, navigate = true) {
|
||||
currentPanel = name;
|
||||
$("overview-refresh").hidden = name !== "overview";
|
||||
$("overview-samples-toolbar").hidden = name !== "overview";
|
||||
for (const id of ["overview-layout-open", "overview-layout-unlock"]) if ($(id)) $(id).hidden = name !== "overview";
|
||||
for (const id of ["overview-layout-open", "overview-layout-unlock"]) if ($(id)) $(id).hidden = name !== "overview" || (id === "overview-layout-unlock" && !!window.rustProxyInlineLayout?.isEditing?.());
|
||||
document.querySelectorAll(".nav").forEach(e => e.classList.toggle("active", e.dataset.panel === name));
|
||||
document.querySelectorAll(".panel").forEach(e => e.hidden = e.id !== `panel-${name}`);
|
||||
$("page-label").textContent = t(name); $("page-title").textContent = t(`${name}Title`); $("page-description").textContent = t(`${name}Description`);
|
||||
@@ -414,6 +414,10 @@ async function activate(info) {
|
||||
}
|
||||
}
|
||||
if (!authenticated || epoch !== authEpoch) return false;
|
||||
if (window.rustProxySettings?.current?.() === "security") {
|
||||
void window.rustProxyApiTokens?.refresh?.();
|
||||
window.rustProxySettings?.scrollToApiTokens?.();
|
||||
}
|
||||
void refresh(true).catch(error => {
|
||||
if (authenticated && epoch === authEpoch && error?.status !== 401) toast(error.message, true);
|
||||
});
|
||||
|
||||
@@ -138,6 +138,7 @@ window.rustProxyInlineLayout = (() => {
|
||||
unlock.setAttribute("aria-pressed", "true");
|
||||
unlock.dataset.i18n = "overviewLayoutLock";
|
||||
unlock.textContent = t("overviewLayoutLock");
|
||||
unlock.hidden = true; // Save and lock is the only save action while unlocked.
|
||||
actions.hidden = false;
|
||||
hint.hidden = false;
|
||||
hint.textContent = t("overviewLayoutInlineHint");
|
||||
@@ -153,6 +154,7 @@ window.rustProxyInlineLayout = (() => {
|
||||
unlock.setAttribute("aria-pressed", "false");
|
||||
unlock.dataset.i18n = "overviewLayoutUnlock";
|
||||
unlock.textContent = t("overviewLayoutUnlock");
|
||||
unlock.hidden = false;
|
||||
actions.hidden = true;
|
||||
hint.hidden = true;
|
||||
if (hiddenShelf) { hiddenShelf.open = false; hiddenShelf.hidden = true; }
|
||||
|
||||
@@ -109,6 +109,33 @@ function renderCertificates() {
|
||||
box.append(details);
|
||||
|
||||
const buttons = el("div", undefined, "entity-actions");
|
||||
const assignPane = el("div", undefined, "certificate-bulk-assign");
|
||||
assignPane.hidden = true;
|
||||
const assignmentList = el("div", undefined, "certificate-bulk-list");
|
||||
for (const host of envelope.config.vhosts || []) {
|
||||
const label = el("label", undefined, "check");
|
||||
const check = document.createElement("input");
|
||||
check.type = "checkbox"; check.value = host.id;
|
||||
check.checked = host.certificate_id === cert.id;
|
||||
label.append(check, el("span", `${host.id} · ${(host.frontend?.hosts || []).join(", ")}`));
|
||||
assignmentList.append(label);
|
||||
}
|
||||
const applyBindings = action(t("certAssignApply"), async () => {
|
||||
if (busy) return;
|
||||
const selected = new Set([...assignmentList.querySelectorAll('input:checked')].map(input => input.value));
|
||||
const next = structuredClone(envelope.config);
|
||||
for (const host of next.vhosts) {
|
||||
if (selected.has(host.id)) host.certificate_id = cert.id;
|
||||
else if (host.certificate_id === cert.id) host.certificate_id = null;
|
||||
}
|
||||
await saveSection("vhosts", next.vhosts);
|
||||
});
|
||||
assignPane.append(el("p", t("certAssignHelp"), "fine"), assignmentList, applyBindings);
|
||||
const assignButton = action(t("certAssignVhosts"), () => {
|
||||
assignPane.hidden = !assignPane.hidden;
|
||||
});
|
||||
assignButton.disabled = !(envelope.config.vhosts || []).length;
|
||||
buttons.append(assignButton);
|
||||
if (!managed) {
|
||||
buttons.append(action(t("reloadCertificate"), async () => {
|
||||
if (busy) return;
|
||||
@@ -125,7 +152,7 @@ function renderCertificates() {
|
||||
}
|
||||
const remove = action(t("remove"), async () => { if (inUse) { toast(t("certInUse"), true); return; } if (!(await appConfirm(t("confirmDelete"), { danger: true }))) return; const next = structuredClone(envelope.config); next.tls.certificates = next.tls.certificates.filter(v => v.id !== cert.id); await saveSection("tls", next.tls); });
|
||||
remove.disabled = inUse; remove.title = inUse ? t("certInUse") : ""; buttons.append(remove);
|
||||
box.append(buttons);
|
||||
box.append(buttons, assignPane);
|
||||
return box;
|
||||
});
|
||||
$("certificate-list").replaceChildren(...entries);
|
||||
|
||||
Reference in new issue
Block a user