Uh oh!
There was an error while loading. Please reload this page.
CELDEV-1338 - Add router-independent admin frontend islands - #561
CELDEV-1338 - Add router-independent admin frontend islands#561fpichler wants to merge 4 commits into
Conversation
There was a problem hiding this comment.
Jenkinsfile.npm and publish-forge-package.sh contain mostly reusable npm-specific publication workflow logic. Please move this into a focused npmPackagePipeline in the server-tools Jenkins shared library, analogous to dockerImagePipeline, and keep this repository’s pipeline declarative:
@Library('synventis') _
npmPackagePipeline(appDir: 'celements-admin-frontend')
There was a problem hiding this comment.
Agreed. I moved the reusable publication workflow into npmPackagePipeline in server-tools, tracked by INFRA-479 and synventis/server-tools#93. This repository now uses the declarative npmPackagePipeline(appDir: 'celements-admin-frontend') call, and the repository-local publication script has been removed.
| </div> | ||
| </div> ## row | ||
| #end ## foreach | ||
| #parse('celTemplates/pageAttachmentsIsland.vm') |
There was a problem hiding this comment.
Preserve anonymous attachment listing
Replacing the server-rendered template with the Vue island affects normal document views, the attachments page, and the attachment overlay—not only editors. The previous template listed attachments, metadata, history, and download links for all viewers while restricting upload and delete actions to users with edit/admin rights. The island loads this list through PageAttachmentsController, whose prepareRequest() returns 401 when no authenticated user exists before evaluating VIEW rights. Anonymous users therefore lose the attachment listing on public documents despite having VIEW access.
There was a problem hiding this comment.
Confirmed the regression risk. checkAuth() itself does not cause the 401, but the subsequent explicit null-user branch does. I removed that branch so anonymous requests are evaluated as XWiki.XWikiGuest through the normal VIEW-rights check. celements/celements-base#314 adds tests for both allowed and denied anonymous listing; denied access returns 403.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
| edit: false, | ||
| fullscreen: false, | ||
| language: false, | ||
| history: false, |
There was a problem hiding this comment.
The replaced attachmentsinline.vm linked each attachment’s version to the viewattachrev action. The new VueFinder UI sets history: false and exposes no equivalent link. The action itself remains functional, but users can no longer reach attachment revision history from the attachment listing.
There was a problem hiding this comment.
Addressed through celements/celements-base#314. Attachment responses now contain an explicit backend-generated historyUrl, and PageAttachments provides a localized per-file revision-history action that navigates to that exact URL. VueFinder’s history feature controls directory navigation rather than attachment revisions, so it remains disabled.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Summary
PageAttachmentsrouter-independent through a reusable typed feature, thin SPA adapter, and guarded<cel-page-attachments>islandcanUploadandcanDeletecapabilities from Velocity through the custom element into VueFinder while retaining backend authorizationhistoryUrlStylesheet and package contract
prefix(tw)withimportant source(none)and migrate all application utilities to thetw:prefixdist/packageanddist/types; dedicated pack-manifest validation excludesdist/assetsanddist/.vitedevDependenciesnpm delivery
npmPackagePipeline(appDir: 'celements-admin-frontend')shared-library stepDependencies
historyUrland guest-rights contractBoth dependency threads remain open until the changes are merged and available to the consuming environments.
Validation
npm ci— passednpm run publish:check— passed; 20 unit tests passed, one environment-gated pack test skipped in the normal suitenpm run lint— passednpm run format— passedPageAttachmentsControllerTestin the backend dependency — 7 tests passed7.2-SNAPSHOTinstallation — passedgit diff --check— passedmvn -U -f celements-webapp/pom.xml -DskipTests compile— blocked before compilation by the existing unmanagedcom.celements:celements-navigation-restdependency atcelements-webapp/pom.xml:225; refreshing snapshot metadata does not resolve the missing versionManual deployed-environment verification remains pending for anonymous listing, independent EDIT/DELETE affordances, exact revision-history navigation, legacy attachment surfaces, and teleport styling.
Jira: https://synjira.atlassian.net/browse/CELDEV-1338