0.29.7
This commit is contained in:
1 parent
ad95bfb050
commit
1431dd47f0
62 files changed
+1360
-198
No files matched your search
@@ -30,8 +30,30 @@
|
||||
return { read() { return Object.fromEntries([...rows].map(([code, editor]) => [code, editor.read()]).filter(([, page]) => page)); } };
|
||||
}
|
||||
function vhostEditor(parent, values = {}) {
|
||||
const response = pageEditor(parent, "pageStaticHost", values.response), fallback = pageEditor(parent, "pageMissingPath", values.fallback), errors = errorsEditor(parent, values.errors);
|
||||
parent.append(label("p", "pagesSafetyHint", "fine")); return { read: () => ({ response: response.read(), fallback: fallback.read(), errors: errors.read() }) };
|
||||
const response = pageEditor(parent, "pageStaticHost", values.response), fallback = pageEditor(parent, "pageMissingPath", values.fallback);
|
||||
const interception = el("section", undefined, "php-origin-errors");
|
||||
const toggle = el("label", undefined, "check"), enabled = document.createElement("input");
|
||||
enabled.type = "checkbox"; enabled.checked = (values.intercept_statuses || []).length > 0;
|
||||
toggle.append(enabled, label("span", "vhostInterceptOriginErrors"));
|
||||
const codesLabel = el("label"), codesCaption = label("span", "vhostInterceptOriginStatuses"), statuses = document.createElement("input");
|
||||
statuses.type = "text"; statuses.maxLength = 64;
|
||||
statuses.value = (values.intercept_statuses?.length ? values.intercept_statuses : [404]).join(", ");
|
||||
statuses.placeholder = "404, 500, 502, 503, 504";
|
||||
codesLabel.append(codesCaption, statuses);
|
||||
const hint = label("p", "vhostInterceptOriginErrorsHelp", "fine");
|
||||
const sync = () => { statuses.disabled = !enabled.checked; };
|
||||
enabled.addEventListener("change", sync); sync();
|
||||
interception.append(toggle, codesLabel, hint); parent.append(interception);
|
||||
const errors = errorsEditor(parent, values.errors);
|
||||
parent.append(label("p", "pagesSafetyHint", "fine"));
|
||||
return { read: () => {
|
||||
const selectedTokens = enabled.checked ? statuses.value.split(/[\s,]+/).filter(Boolean) : [];
|
||||
const selected = selectedTokens.map(Number);
|
||||
if (enabled.checked && (!selected.length || selectedTokens.some(token => !/^\d{3}$/.test(token)) || selected.length > codes.length || new Set(selected).size !== selected.length || selected.some(code => !codes.includes(code)))) {
|
||||
throw new Error(t("vhostInterceptOriginInvalid"));
|
||||
}
|
||||
return { response: response.read(), fallback: fallback.read(), errors: errors.read(), intercept_statuses: selected };
|
||||
} };
|
||||
}
|
||||
let global = null;
|
||||
function render() { if (!envelope || settingsDirty.has("pages-form")) return; const values = envelope.config.pages || {}, parent = $("global-pages-fields"); parent.replaceChildren(); const ip = pageEditor(parent, "pageDirectIp", values.direct_ip), unknown = pageEditor(parent, "pageUnknownHost", values.unknown_host), errors = errorsEditor(parent, values.errors); global = { read: () => ({ direct_ip: ip.read(), unknown_host: unknown.read(), errors: errors.read() }) }; }
|
||||
|
||||
Reference in new issue
Block a user