---
name: quiqqer_info_popup_create_and_edit
description: Use when a project-wide QUIQQER info popup should be shown to visitors when a page opens - announcements, notices, banners, promotions, maintenance or cookie hints - or when listing, creating, scheduling, updating, activating or deleting such popups through MCP, including multilingual content, language targeting, audience visibility and display settings.
category: content
---

# Create and edit QUIQQER info popups

Use this skill for editorial work on project-wide info popups.

## Safe workflow

1. Call `quiqqer_info_popups_list` before creating a popup and check for an existing popup with the same purpose.
2. Call `quiqqer_info_popups_get` before every update. Treat the returned popup as the source of truth.
3. Send only fields that should change to `quiqqer_info_popups_update`. Omitted fields are preserved.
4. Preserve every existing language entry when changing multilingual `title` or `content` values.
5. Load the popup again after creating or updating it and verify the result.
6. Delete a popup only when the user explicitly asks for deletion.

## Ask before acting

Do not guess when a request is ambiguous. Ask a short, specific question first:

- A media layout (`sidebar`, `sidebarRight`, `top`) is requested but neither `mediaImage` nor `mediaColor` is given. Ask whether to use an image from the media library, only a background colour, or the `content` layout without a media area.
- `visibility: groups` is requested but the group is not clearly identified. Resolve or ask for the group; never guess IDs.
- The project is multilingual but the text is supplied in only one language. Ask whether to translate it, restrict the popup to that language via `languages`, or leave the other languages empty. A language whose `title`, `content` and `mediaImage` are all empty does not show the popup at all, and delivery never falls back to another language's text.
- A schedule date is given without a time. Confirm a sensible time before using `validFrom` / `validTo`.
- It is unclear whether the popup should go live immediately. Keep it inactive and confirm before setting `active: true`.

## Resolving media images

- Never invent a `mediaImage` reference.
- Find the image with `quiqqer_media_search` (or `quiqqer_media_get`). Build the reference from the result as `image.php?id=<id>&project=<project>`.
- If several images match, ask which one to use. If none fits, ask instead of guessing.

## Publication safety

- `title` is required when creating a popup.
- New popups are inactive by default. Set `active` to `true` only when immediate publication is explicitly requested.
- Use `validFrom` and `validTo` in `YYYY-MM-DD HH:MM:SS` format only when a schedule is requested. Ensure the end is later than the start.
- Use `visibilityGroupIds` only with `visibility: groups`.
- Resolve actual group IDs before using them; never guess IDs.
- To clear optional dates, media references, or colours during an update, pass an empty string. Use an empty array to clear `visibilityGroupIds` or to reset `languages` back to all languages, and `0` to restore default dimensions.

## Language targeting

- Omit `languages` (or pass an empty array) to show the popup in all project languages, including languages added to the project later. This is the normal case.
- Pass an array of language codes, for example `["fr"]` or `["de", "en"]`, to restrict the popup to exactly those language versions. It then never appears in other languages.
- Only codes that belong to the project are kept; unknown codes are ignored. Selecting every project language is equivalent to "all" and is stored as unrestricted.
- Targeting a language does not create its translation. Still supply `title` / `content` for each targeted language, otherwise the popup stays empty and is not shown there.
- To widen a restricted popup back to all languages during an update, pass an empty array for `languages`.

## Design and content

- `displayMode: ""` uses the project default.
- `displayMode: "content"` shows no media area. `sidebar`, `sidebarRight`, and `top` support `mediaImage` and `mediaColor`.
- With `displayMode: "top"`, set `mediaAutoHeight: true` when text, logos, or other important image content must remain fully visible. For example, use it for a Black Friday banner with embedded sale text so the offer is not cropped. The setting is preserved but has no frontend effect in other display modes.
- Set `centerContent: true` to center the title and content that has no explicit editor alignment. Individually aligned paragraphs keep their editor-defined alignment.
- Use `maxWidth: 0` or `maxHeight: 0` to return to the project default.
- Use language-keyed objects for multilingual content, for example `{"de": "Hinweis", "en": "Notice"}`.
- Keep HTML semantic and minimal. Do not add scripts, global CSS, tracking markup, or unrelated page changes.
