Repository navigation
feat(site): public records in the shared cards and table, papers on any collection - #1571
Merged
rubenvdlinde merged 7 commits intoOct 15, 2026
Merged
Conversation
… cards and table PublicRecordsBlock drew its own cards and table. The summary now renders through KpiCards and the rows through CollectionTable, as design.md D2 says. CollectionTable's link column may take its address from another field (hrefField), so the subject reads as text and links to subjectUrl; the table keeps only a site path or an http(s) address as a link.
…led apps The block's app and list were two free text fields. The page editor now offers the lists the installed apps contribute to the page's portal, read from the anonymous contributions answer the site reads; choosing one sets both app and list. Without that answer the field stays a text input.
…ot only a case
A collection that declares documents now lists and opens them on its own
route (/portal/api/collections/{register}/{schema}/{id}/documents), so a
council's confidential papers sit on the item's page like a case's
documents. A case keeps the case screen's route and its upload; a paper
the collection's opened hook refuses (503) says it could not be opened.
…ens.md names its boards
rubenvdlinde
requested review from
Rem-Dam,
SudoThijn,
WilcoLouwerse,
bbrands02,
remko48 and
rjzondervan
as code owners
October 14, 2026 19:42
Contributor
Quality Report — ConductionNL/portaliq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-specs | ✅ | ||||
| check-manifest | ✅ | ||||
| format | ✅ | ||||
| check-l10n-js | ✅ | ||||
| check-schema-l10n | ✅ | ||||
| check-reuse | ✅ | ||||
| composer | ✅ | ✅ 108/108 | |||
| npm | ✅ | ✅ 984/984 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ✅ | ||||
| lockfile sync | ✅ | ||||
| PHPUnit | ✅ 3883/3883 · 1 skipped | ||||
| Newman | ✅ 1/1 | ||||
| Playwright | ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development. |
||||
| Hydra gates | ❌ |
Quality workflow — 2026-10-14 19:47 UTC
Download the full PDF report from the workflow artifacts.
…cords-block-follows-the-design # Conflicts: # l10n/en.js # l10n/en.json # l10n/nl.js # l10n/nl.json
Contributor
Quality Report — ConductionNL/portaliq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ❌ | ||||
| check-specs | ✅ | ||||
| check-manifest | ✅ | ||||
| format | ✅ | ||||
| check-l10n-js | ✅ | ||||
| check-schema-l10n | ✅ | ||||
| check-reuse | ✅ | ||||
| composer | ✅ | ✅ 108/108 | |||
| npm | ✅ | ✅ 984/984 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ✅ | ||||
| lockfile sync | ✅ | ||||
| PHPUnit | ✅ 3900/3900 · 1 skipped | ||||
| Newman | ✅ 1/1 | ||||
| Playwright | ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development. |
||||
| Hydra gates | ✅ |
Quality workflow — 2026-10-15 07:25 UTC
Download the full PDF report from the workflow artifacts.
…cords-block-follows-the-design
Contributor
Quality Report — ConductionNL/portaliq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-specs | ✅ | ||||
| check-manifest | ✅ | ||||
| format | ❌ | ||||
| check-l10n-js | ✅ | ||||
| check-schema-l10n | ✅ | ||||
| check-reuse | ✅ | ||||
| composer | ❌ | ✅ 108/108 | |||
| npm | ✅ | ✅ 984/984 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ✅ | ||||
| lockfile sync | ✅ | ||||
| PHPUnit | ✅ 3903/3903 · 1 skipped | ||||
| Newman | ✅ 1/1 | ||||
| Playwright | ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development. |
||||
| Hydra gates | ❌ |
Quality workflow — 2026-10-15 10:47 UTC
Download the full PDF report from the workflow artifacts.
…cords-block-follows-the-design
Contributor
Quality Report — ConductionNL/portaliq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-specs | ✅ | ||||
| check-manifest | ✅ | ||||
| format | ✅ | ||||
| check-l10n-js | ✅ | ||||
| check-schema-l10n | ✅ | ||||
| check-reuse | ✅ | ||||
| composer | ✅ | ✅ 108/108 | |||
| npm | ✅ | ✅ 984/984 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ✅ | ||||
| lockfile sync | ✅ | ||||
| PHPUnit | ✅ 3903/3903 · 1 skipped | ||||
| Newman | ✅ 1/1 | ||||
| Playwright | ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development. |
||||
| Hydra gates | ✅ |
Quality workflow — 2026-10-15 17:22 UTC
Download the full PDF report from the workflow artifacts.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Change
site-member-voting-record-and-confidential-papers, tasks T3 and T4. T6 stays open.T3, the public records block, now uses the shared widgets. The block drew its own cards and table. A record's summary now renders through
KpiCardsand its rows throughCollectionTable, as design.md D2 says.CollectionTable's link column may take its address from another field (hrefField), so "Onderwerp" reads as text and links tosubjectUrl. The table keeps only a site path or an http(s) address as a link, so ajavascript:value is plain text. Before, the block boundsubjectUrltohrefdirectly.T3, the page editor picks the list.
appandlistwere two free text fields. The editor now offers the lists that the installed apps contribute to the page's portal, read from the anonymous/api/content/contributionsanswer. Choosing one sets both. Without that answer the field stays a text input, the same fallback the shared block picker has.T4, papers on any collection.
DocumentsBlockread only through the case screen's route. A collection that declaresdocumentsand is notkind: casesnow lists and opens its papers on/portal/api/collections/{register}/{schema}/{id}/documents(routes built earlier in this change). A case keeps its own route and its upload. A paper that theopenedhook refuses (503) says it could not be opened. T4 is ticked.Still open
site-honest-without-javascript, which has 0 of its 16 tasks built and no/site/plainroute. The e2e is the live pass (decision 139).stepUpis in the subject aggregate, butContributionPagehas nositeto build the Inloggen cards from (signInRoutes). That needs a prop throughMijnHome.screens.mdadded (Inloggen, PtStemgedrag), the same lines as chore(openspec): every change and spec names its screens #1475.Tests
tests/public-records.spec.mjs: 10 pass. New: summary and columns mapping; record renders throughkpi-blockandcollection-table; ajavascript:subject is not a link; the editor picker maps the anonymous answer and sets both props.tests/mijn-documents.spec.mjs: 8 pass. New: a non-case collection reads and opens on its own route, never the case route; no upload; 404 reads as failed; a case keeps the case route. On the old code the new test fails (the block askedfetchCitizenCase).tests/case-documents-screen.spec.mjs: 6 pass. The new API calls hit/collections/decidiq/agendaItem/a%207/documents[/p1]with the bearer.page-editor,shared-page-blocks,editor-text-toolbar, and every spec that touchesCollectionTable: green.No PHP changed, so check:strict and PHPUnit were not run. No new class.
_rbac: none in the diff.Exit codes:
npm run lint0,stylelint0,format0,check:specs0,check:l10n-js0,check:schema-l10n0,check:manifest0,check:reuse0. Gate 102 checker 1: the two placeholdersnlandhttps://www.example.nlfrom #1536, inherited and fixed by #1570. Land #1570 first.