fix(luci): Await form.Map.render() Promise before KissTheme.wrap()

form.Map.render() returns a Promise, not a DOM element. Passing it
directly to KissTheme.wrap() caused "does not implement interface Node"
errors. Fixed by awaiting the Promise with .then() before wrapping.

Affected views:
- metablogizer/settings.js
- localai/settings.js
- domoticz/overview.js
- simplex/overview.js

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
CyberMind-FR 2026-02-27 07:24:10 +01:00
parent 33bc1e1732
commit 2924707e35
5 changed files with 22 additions and 4 deletions

View File

@ -3816,3 +3816,13 @@ git checkout HEAD -- index.html
- Layer 2: mitmproxy WAF (request inspection, CVE detection)
- All 13 MetaBlogizer sites verified working with dual WAF
- **CrowdSec MCP:** Added crowdsec-local-mcp for AI-generated WAF rules
47. **Nextcloud Apps 403 Fix - try_files Directory Match (2026-02-27)**
- **Problem:** `/apps/spreed/` and `/apps/dashboard/` returning 403 Forbidden
- **Root Cause:** nginx `try_files $uri $uri/ /index.php$request_uri;` checks `$uri/`
- `/apps/spreed/` exists as a real directory in filesystem
- nginx finds directory, tries to serve index, no index file → 403
- **Fix:** Changed to `try_files $uri /index.php$request_uri;`
- Removed `$uri/` directory check from try_files
- All non-file requests now route directly to PHP front controller
- **Result:** Talk (/apps/spreed/) returns 303 redirect, Dashboard returns 401 (auth required)

View File

@ -449,6 +449,8 @@ return view.extend({
});
};
return KissTheme.wrap([m.render()], 'admin/services/domoticz');
return m.render().then(function(formEl) {
return KissTheme.wrap([formEl], 'admin/services/domoticz');
});
}
});

View File

@ -87,6 +87,8 @@ return view.extend({
o.default = 'vulkan';
o.depends('enabled', '1');
return KissTheme.wrap([m.render()], 'admin/services/localai/settings');
return m.render().then(function(formEl) {
return KissTheme.wrap([formEl], 'admin/services/localai/settings');
});
}
});

View File

@ -68,6 +68,8 @@ return view.extend({
'</div>';
};
return KissTheme.wrap([m.render()], 'admin/services/metablogizer/settings');
return m.render().then(function(formEl) {
return KissTheme.wrap([formEl], 'admin/services/metablogizer/settings');
});
}
});

View File

@ -454,6 +454,8 @@ return view.extend({
'</div>';
};
return KissTheme.wrap([m.render()], 'admin/services/simplex');
return m.render().then(function(formEl) {
return KissTheme.wrap([formEl], 'admin/services/simplex');
});
}
});