Skip to content

feat: campaign management + scheduled visibility for containers/promo… - #57

Merged
Webbanditten merged 1 commit into
masterfrom
feature/campaigns-and-scheduled-visibility
Jun 1, 2026
Merged

feat: campaign management + scheduled visibility for containers/promo…#57
Webbanditten merged 1 commit into
masterfrom
feature/campaigns-and-scheduled-visibility

Conversation

@Webbanditten

Copy link
Copy Markdown
Owner

…s/menu

Campaign system (Housekeeping):

  • New cms_campaigns / cms_campaign_actions / cms_campaign_snapshots tables with EF models and a Campaigns admin area (list/create/edit, add/edit/ remove actions, activate/deactivate, clone, delete).
  • Pluggable action handlers (background, banner, news, catalogue page visibility, room CCTs + title/description) behind ICampaignActionHandler, resolved via CampaignActionHandlerFactory.
  • CampaignExecutor applies actions with per-setting snapshots and conflict resolution across overlapping campaigns; clean revert on deactivate.
  • CampaignSchedulerService auto-activates/ends campaigns by start/end date.
  • Queues reload_catalogue / reload_navigator to the game server after catalogue/room changes. Gated by the new fuse_campaigns permission.

Scheduled visibility:

  • Optional start/end date windows on page containers, promos and front-end menu items. Manual "hidden" stays a hard off-switch; dates gate the rest. Bounds inclusive, open-ended when blank. Admin retains full visibility.
  • Reuses the shared jQuery datetimepicker for a consistent admin UX.

Migrations: sql/campaigns.sql, sql/scheduled_visibility.sql, and a consolidated, idempotent
sql/migrations/2026-06-01_campaigns_and_scheduled_visibility.sql.

…s/menu

Campaign system (Housekeeping):
- New cms_campaigns / cms_campaign_actions / cms_campaign_snapshots tables
  with EF models and a Campaigns admin area (list/create/edit, add/edit/
  remove actions, activate/deactivate, clone, delete).
- Pluggable action handlers (background, banner, news, catalogue page
  visibility, room CCTs + title/description) behind ICampaignActionHandler,
  resolved via CampaignActionHandlerFactory.
- CampaignExecutor applies actions with per-setting snapshots and conflict
  resolution across overlapping campaigns; clean revert on deactivate.
- CampaignSchedulerService auto-activates/ends campaigns by start/end date.
- Queues reload_catalogue / reload_navigator to the game server after
  catalogue/room changes. Gated by the new fuse_campaigns permission.

Scheduled visibility:
- Optional start/end date windows on page containers, promos and front-end
  menu items. Manual "hidden" stays a hard off-switch; dates gate the rest.
  Bounds inclusive, open-ended when blank. Admin retains full visibility.
- Reuses the shared jQuery datetimepicker for a consistent admin UX.

Migrations: sql/campaigns.sql, sql/scheduled_visibility.sql, and a
consolidated, idempotent
sql/migrations/2026-06-01_campaigns_and_scheduled_visibility.sql.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jun 1, 2026

Copy link
Copy Markdown

The pre-release image can be pulled using: docker pull ghcr.io/webbanditten/keplercms:prerelease-953572f163a974c29a2b6ef765b4a670322b73fc

@Webbanditten
Webbanditten merged commit ed385bf into master Jun 1, 2026
2 checks passed
@Webbanditten
Webbanditten deleted the feature/campaigns-and-scheduled-visibility branch June 1, 2026 10:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant