Repository navigation
fix: Show the Content app on the My Workspace content page EXO-91419 - #4293
Conversation
The global news page was built from add-on containers whose only contribution was removed, so the page rendered empty. Declare the Content list portlet directly in the page and upgrade the existing page on running instances. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
ahamdi
left a comment
There was a problem hiding this comment.
AI review — Round #1
No blocking defect in the descriptors. One open point on the upgrade evidence, inline.
Verified conform
- The cause is confirmed. content
7ecb1a661(EXO-89233, ondevelopandfeature/maintenance) deletedconf/news/dynamic-container-configuration.xml, which held the onlynews-containercontribution (news-portlet). No other repo here contributes totop-news-container,news-containerorbottom-news-container(grepped content, social, layout, notes, meeds and platform-private-distributions ondevelopandfeature/maintenance). That leaves these three containers empty, and no other host in meeds declares a news container. - The portlet exists and is declared the same way as its sibling.
content/ContentListViewis declared in content'sportlet.xmlandportlet-instances.jsononfeature/maintenance. The window is identical to the one #4274 shipped onmycraft/contents: no preferences, andContentListViewPortletcreates itsapplicationIdand setting on first render. - The profiles line up. The page and the upgrade entry are both
profiles="content", so neither applies without the content add-on. - The upgrade entry is safe. It uses
importMode=merge, neveroverwrite, so onlynewsis replaced and the otherglobalpages are untouched (pitfall LayoutUpgradePlugin applies one importMode to three importers). It has a new execute-once name. Its shape matches the sibling global-page entries (MyTeamPageLayoutUpgrade,war:/conf/sites/,product.group.idorg.exoplatform.social), and it is synchronous because it does not setplugin.upgrade.async.execution.LayoutUpgradePluginoverrides only the two-argumentshouldProceedToUpgrade, so the base run-once and version gates still apply. On a fresh install it also runs (commons setsproceedUpgradeWhenFirstRunto${commons.upgrade.proceedIfFirstRun:true}inupgrade-configuration.xml, and meeds does not override it), but it only re-imports the samenewsdefinition the startup import just created, so nothing changes. - The upgrade impact is complete.
mergereplaces the whole stored page with its shipped definition (*:/platform/users/manager:/platform/administrators), and the three containers disappear from it. These are the two outcomes that change for an existing instance, and the body lists both. - The
Knowledge:line is valid.Meeds-io/eng-standards#488is open and carries ameeds.mdchange with its fragment.#492is a draft that carries the new pitfall ledger file. Both are for EXO-91419.
The body is unusually honest: it names the import mode, what the upgrade resets, and what the author could not explain. The fix also follows the existing #4274 pattern instead of reviving the add-on container.
This change is classified N1 (an upgrade plugin that rewrites persisted page data, page permissions included). Its approver must be an Architect/Developer who knows it is N1, not an approval on AI review alone; author ≠ approver.
🤖 Generated with Claude Code
AI review — Round #2 (final)
The head is unchanged ( All findings from previous rounds are resolved, nothing outstanding from the AI review side. Merge order: after Meeds-io/portal#1338. Merged on its own, the upgrade still runs and stores the new page, but existing instances keep showing the empty page until a second restart. This review does not cover #1338, which is a separate N1 PR with its own reviewer. This change is classified N1 (an upgrade plugin that rewrites persisted page data, page permissions included). Its approver must be an Architect/Developer who knows it is N1, not an approval on AI review alone; author ≠ approver. 🤖 Generated with Claude Code |
|
Heads-up: this PR merged before Meeds-io/portal#1338, which is still open. Until #1338 lands on If you test EXO-91419 on the ACC before #1338 lands, restart once more after the upgrade before checking My Workspace > More > Content. 🤖 Generated with Claude Code |



Symptom: on a new platform, My Workspace > More > Content (the
globalsite pagenews) displays an empty page instead of the Content app.Cause: the
global/newspage inpages.xmlwas made only of thetop-news-container,news-containerandbottom-news-containeradd-on containers. Their only contribution was the Content repository's former News portlet, which has been removed, so nothing fills the page.Fix: the containers are replaced by the
content/ContentListViewportlet declared directly in the page. Theglobalsite is imported ininsertmode, so the change reaches only new installs; aLayoutUpgradePluginentry (GlobalNewsPageContentListUpgrade,contentprofile, run once) re-imports thenewspage inmergemode on existing instances. No automated test covers these descriptors.Depends on Meeds-io/portal#1338, to merge after it. The upgrade's save evicts the page from
CachePageStorageinside the upgrade's transaction, before the commit; social's asynchronousPageSavedIndexingListenerreacts to the page update withLayoutService.getPage, reloads the previous committed page and caches it, so the restart that runs the upgrade keeps serving the empty containers until the next restart. portal#1338 evicts the page caches again once the transaction completes. Checked on a local server restored to a database whoseglobal/newsstill holds the three containers, restarted once with this PR'ssites.war: without portal#1338 the upgrade runs and stores the new page, while/layout/rest/pages/layout?pageRef=portal::global::newsstill returns the threeaddonContainers; with portal#1338's jars it returns thecontent/ContentListViewwindow.Upgrade impact:
mergereplaces the whole storedglobal/newspage with its shipped definition: an administrator's layout changes, or narrowed access or edit permissions, on that page are reset and must be re-applied.top-news-container,news-containerandbottom-news-containeradd-on containers no longer exist on that page: a customerdynamic-container-configuration.xmlthat contributes to them no longer renders there.Knowledge: Meeds-io/eng-standards#488, Meeds-io/eng-standards#492
This change is classified N1 (upgrade plugin rewriting persisted page data, page permissions included), computed at 23586c4 — its approver must be an Archi/Dev who knows it is N1, not an approval on AI review alone; author ≠ approver.
🤖 Generated with Claude Code