You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adds the phase 0 platform prerequisite from the pipelinq marketing programme
(pipelinq/docs/Technical/marketing-architecture.md, phase 0): a same-instance
cross-app command that lets a contributing app (pipelinq first) ask Portaliq
to provision a draft CMS landing page with a bound lead-capture form, plus the
return path — Portaliq notifying the contributing app when a visitor submits
that form, carrying UTM first/last-touch attribution. Publishing stays an
editor's own action in the CMS; this change only ever creates draft pages.
Manual testing against acceptance criteria (static: phpcs/phpmd/psalm/phpstan/eslint/prettier/stylelint all green; PHPUnit written and syntax-verified but NOT executed — this worktree's bootstrap needs a live Nextcloud server tree it is not nested under, see the PR description)
Code review against spec requirements
PHPUnit unit tests for new/changed business logic (tests/Unit/) — written, php -l clean, not executed in this environment (see Verification)
Newman/Postman tests for new/changed API endpoints — N/A, this change adds no new HTTP endpoint (same-instance event dispatch + the existing anonymous-create route)
Browser tests (Playwright MCP) for UI changes — tests/e2e/site-form-submission.spec.ts written, verified with --list only (no live instance reachable in this environment)
All tests pass (composer test, npm run test:unit) — NOT confirmed; npm run test:unit does not exist in this repo (its real per-file JS checks pass, see PR description), and composer test:unit/PHPUnit could not run here
Feature documentation updated in docs/ (docs/operations/landing-page-contribution.md)
Screenshot captured and committed to docs/images/ — N/A, this change's user-facing surface is a form on a dynamically-created landing page with no fixed screenshot subject; the docs page shows the request/response contract instead
Dutch (nl_NL) and English (en_US) translation strings added — N/A, no new translatable strings were added to any l10n/ catalogue; FormBlock.vue's default labels are Dutch (matching this app's existing site-renderer convention of author-supplied, not catalogue-driven, public copy) and are always overridable by the authored form object
Artifacts
Summary
Adds the phase 0 platform prerequisite from the pipelinq marketing programme
(
pipelinq/docs/Technical/marketing-architecture.md, phase 0): a same-instancecross-app command that lets a contributing app (pipelinq first) ask Portaliq
to provision a draft CMS landing page with a bound lead-capture form, plus the
return path — Portaliq notifying the contributing app when a visitor submits
that form, carrying UTM first/last-touch attribution. Publishing stays an
editor's own action in the CMS; this change only ever creates
draftpages.Specs
Tasks
openspec validatepassestests/Unit/) — written,php -lclean, not executed in this environment (see Verification)tests/e2e/site-form-submission.spec.tswritten, verified with--listonly (no live instance reachable in this environment)composer test,npm run test:unit) — NOT confirmed;npm run test:unitdoes not exist in this repo (its real per-file JS checks pass, see PR description), andcomposer test:unit/PHPUnit could not run heredocs/(docs/operations/landing-page-contribution.md)docs/images/— N/A, this change's user-facing surface is a form on a dynamically-created landing page with no fixed screenshot subject; the docs page shows the request/response contract insteadnl_NL) and English (en_US) translation strings added — N/A, no new translatable strings were added to anyl10n/catalogue;FormBlock.vue's default labels are Dutch (matching this app's existing site-renderer convention of author-supplied, not catalogue-driven, public copy) and are always overridable by the authoredformobjectDesign
See design.md for technical design details.
Synced from
openspec/changes/contribution-landing-page-actionby OpenSpec workflowApp:
portaliq