v0.29.4
This commit is contained in:
1 parent
f87eec7287
commit
dd8c195600
38 files changed
+5491
-4682
No files matched your search
@@ -33,6 +33,7 @@ class Element {
|
||||
showModal() { this.open = true; }
|
||||
close() { this.open = false; }
|
||||
reset() {}
|
||||
checkValidity() { return true; }
|
||||
}
|
||||
|
||||
const ids = [
|
||||
@@ -48,7 +49,9 @@ const ids = [
|
||||
"web-service-compression","web-service-compression-options","web-service-compression-zstd","web-service-compression-br","web-service-compression-gzip","web-service-compression-deflate","web-service-precompressed","web-service-precompressed-br","web-service-precompressed-gzip",
|
||||
"web-service-preset","web-service-preset-apply","web-service-preset-summary","web-service-reset",
|
||||
"web-service-response-headers","web-service-rewrites","web-service-root","web-service-search",
|
||||
"web-service-symlink-policy","web-service-tabs","web-service-try-files"
|
||||
"web-service-symlink-policy","web-service-tabs","web-service-try-files",
|
||||
"web-service-php-profile", "web-service-php-profiles", "web-service-php-profiles-open", "php-fpm-profiles-dialog",
|
||||
"php-fpm-profiles-list", "php-fpm-profiles-close", "php-fpm-profile-add"
|
||||
];
|
||||
const elements = new Map(ids.map(id => [id, new Element(id)]));
|
||||
const pages = ["general","routing","htaccess","mime","cache","delivery","php","security"].map(name => {
|
||||
@@ -69,6 +72,7 @@ for (const name of ["zstd", "br", "gzip", "deflate"]) elements.get(`web-service-
|
||||
|
||||
const document = {
|
||||
body: new Element("body"),
|
||||
createElement: tag => { const node = new Element(); node.type = tag; return node; },
|
||||
querySelectorAll(selector) {
|
||||
if (selector === "#web-service-tabs button") return elements.get("web-service-tabs").children;
|
||||
if (selector === "[data-web-service-page]") return pages;
|
||||
@@ -101,6 +105,7 @@ const context = {
|
||||
};
|
||||
vm.createContext(context);
|
||||
vm.runInContext(fs.readFileSync("src/admin/web/drafts.js", "utf8"), context, { filename: "drafts.js" });
|
||||
vm.runInContext(fs.readFileSync("src/admin/web/web-server-profiles.js", "utf8"), context, { filename: "web-server-profiles.js" });
|
||||
vm.runInContext(fs.readFileSync("src/admin/web/web-server.js", "utf8"), context, { filename: "web-server.js" });
|
||||
|
||||
// Explicitly disabling scoped dynamic compression must hide and disable codec
|
||||
@@ -172,3 +177,55 @@ if (saved.php.php_values.memory_limit !== "256M") throw new Error("Saved WordPre
|
||||
if (!saved.cache_rules.some(rule => rule.matcher === "ext:css" && rule.cache_control.includes("604800"))) throw new Error("Saved WordPress preset lost cache rules");
|
||||
|
||||
console.log("PASS: Web Service preset selection materializes and persists CMS/download settings.");
|
||||
|
||||
// The shared editor lists profiles, saves them under the new revisioned
|
||||
// section, and Web Services can attach without losing local PHP settings.
|
||||
context.envelope.config.php_fpm_profiles = [{
|
||||
id: "wp-pool", name: "WordPress pool", php: {
|
||||
enabled: true, path_info: true, pass_authorization: true,
|
||||
extensions: ["php"], endpoint: "tcp:127.0.0.1:9000",
|
||||
connect_timeout_ms: 1000, request_timeout_ms: 30000,
|
||||
max_concurrent_requests: 64, max_request_body_bytes: 0,
|
||||
max_response_header_bytes: 65536, stderr_log_bytes: 4096,
|
||||
custom_params: {}, php_values: {}, php_admin_values: {}
|
||||
}
|
||||
}];
|
||||
// Both entry points must share the existing modal; the toolbar shortcut
|
||||
// belongs next to New Web Service rather than inside the service editor.
|
||||
const html = fs.readFileSync("src/admin/web/index.html", "utf8");
|
||||
const webPanel = html.split('id="panel-web-server"')[1]?.split("</section>")[0] ?? "";
|
||||
const toolbar = webPanel.match(/<div class="vhost-list-tools">([\s\S]*?)<\/div>/)?.[1] ?? "";
|
||||
const shortcutAt = toolbar.indexOf('id="web-service-php-profiles-open"');
|
||||
const newAt = toolbar.indexOf('id="web-service-new"');
|
||||
if (shortcutAt < 0 || newAt < 0 || shortcutAt > newAt) {
|
||||
throw new Error("PHP-FPM profiles shortcut must be adjacent to New Web Service in the toolbar");
|
||||
}
|
||||
elements.get("web-service-php-profiles-open").dispatch("click");
|
||||
if (!elements.get("php-fpm-profiles-dialog").open) throw new Error("Toolbar PHP-FPM profile shortcut did not open the modal");
|
||||
elements.get("php-fpm-profiles-close").dispatch("click");
|
||||
if (elements.get("php-fpm-profiles-dialog").open) throw new Error("PHP-FPM profile modal failed to close");
|
||||
elements.get("web-service-php-profiles").dispatch("click");
|
||||
if (!elements.get("php-fpm-profiles-dialog").open) throw new Error("PHP-FPM profile modal was not opened");
|
||||
const profileDetail = elements.get("php-fpm-profiles-list").children[0];
|
||||
if (!profileDetail || profileDetail.children[0].textContent !== "WordPress pool") throw new Error("Shared profile list missing");
|
||||
const profileForm = profileDetail.children[1];
|
||||
profileForm.children[1].children[1].value = "Updated WordPress pool";
|
||||
await profileForm.dispatch("submit");
|
||||
if (savedSection?.name !== "php-fpm-profiles" || savedSection.value[0].name !== "Updated WordPress pool") {
|
||||
throw new Error("Shared profile edit did not save to the profile configuration section");
|
||||
}
|
||||
const profileSelector = elements.get("web-service-php-profile");
|
||||
const localEndpoint = elements.get("web-service-php-endpoint").value;
|
||||
profileSelector.value = "wp-pool";
|
||||
profileSelector.dispatch("change");
|
||||
if (!elements.get("web-service-php-endpoint").disabled) throw new Error("Shared profile left local PHP controls editable");
|
||||
elements.get("web-service-id").value = "wp-shared";
|
||||
elements.get("web-service-name").value = "WordPress shared";
|
||||
await elements.get("web-service-form").dispatch("submit");
|
||||
if (savedSection?.name !== "web-services" || savedSection.value[0].php_profile_id !== "wp-pool") {
|
||||
throw new Error("Web Service did not persist selected shared PHP-FPM profile");
|
||||
}
|
||||
if (savedSection.value[0].php.endpoint !== localEndpoint) {
|
||||
throw new Error("Attaching a shared FPM profile changed local settings");
|
||||
}
|
||||
console.log("PASS: Toolbar and editor PHP-FPM shortcuts open the shared modal; profile edits and Web Service attachment work.");
|
||||
Reference in new issue
Block a user