refactor: enhance UVE script injection logic #35128
Conversation
|
Claude finished @nicobytes's task in 2m 36s —— View job Code Review
Issues Found1. Java:
Logger.warn(this, "No </body> tag found in page HTML, appending UVE script at end");This fires on every non-LIVE render of an advanced template or page fragment that legitimately omits a 2. Java: Lines 228–235 and 407–409 use 3. Frontend/Java:
return rendered.replace('</body>', scriptString + '</body>');
final int closingBodyIndex = html.toLowerCase().lastIndexOf("</body>");Java searches case-insensitively ( 4. Potential double injection for EMA VTL pages The module comment in const newDoc = this.injectCodeToVTL(pageRender);
doc.open();
doc.write(newDoc);If 5. Frontend:
const $isEmaLegacyScriptInjectionEnabled = computed(
() => flags().FEATURE_FLAG_UVE_LEGACY_SCRIPT_INJECTION === true
);All other flags in this file (e.g. 6. Java test: reflection-based private method testing is fragile
final Method method = HTMLPageAssetRenderedBuilder.class.getDeclaredMethod(
"injectUVEScript", String.class, Collection.class);
method.setAccessible(true);If Overall: The core logic change ( |
|
Claude encountered an error —— View job I'll analyze this and get back to you. |
There was a problem hiding this comment.
Pull request overview
This PR improves observability and resilience of the backend UVE (dot-uve.js) script injection performed during HTML page rendering, helping diagnose and prevent regressions where the UVE editor fails to load in non-LIVE modes.
Changes:
- Adds debug logging to clearly indicate when UVE script injection is performed vs skipped (LIVE mode) during page rendering.
- Enhances
injectUVEScriptto skip injection on empty HTML, log injection position, and fall back gracefully if script building fails. - Wraps UVE style-editor script building with exception handling to avoid breaking page rendering when schema/script generation errors occur.
...m/dotmarketing/portlets/htmlpageasset/business/render/page/HTMLPageAssetRenderedBuilder.java
Show resolved
Hide resolved
...m/dotmarketing/portlets/htmlpageasset/business/render/page/HTMLPageAssetRenderedBuilder.java
Outdated
Show resolved
Hide resolved
...m/dotmarketing/portlets/htmlpageasset/business/render/page/HTMLPageAssetRenderedBuilder.java
Outdated
Show resolved
Hide resolved
...m/dotmarketing/portlets/htmlpageasset/business/render/page/HTMLPageAssetRenderedBuilder.java
Show resolved
Hide resolved
...m/dotmarketing/portlets/htmlpageasset/business/render/page/HTMLPageAssetRenderedBuilder.java
Outdated
Show resolved
Hide resolved
...m/dotmarketing/portlets/htmlpageasset/business/render/page/HTMLPageAssetRenderedBuilder.java
Outdated
Show resolved
Hide resolved
...m/dotmarketing/portlets/htmlpageasset/business/render/page/HTMLPageAssetRenderedBuilder.java
Outdated
Show resolved
Hide resolved
...m/dotmarketing/portlets/htmlpageasset/business/render/page/HTMLPageAssetRenderedBuilder.java
Show resolved
Hide resolved
|
You might need to include the new FF for EMA in other files like here |
This pull request improves the logging and error handling in the UVE script injection process within the HTML page rendering flow. The changes make it easier to trace when and how the UVE script is injected, and ensure that failures in script building are handled gracefully.
Enhanced logging and error handling for UVE script injection:
buildmethod ofHTMLPageAssetRenderedBuilder(dotCMS/src/main/java/com/dotmarketing/portlets/htmlpageasset/business/render/page/HTMLPageAssetRenderedBuilder.java).injectUVEScriptmethod to:Tryblock to handle exceptions during script building, logging errors and falling back to a default script if needed.</body>or at the end if no</body>tag is found).#35127