Take design packages back out of plugins

A plugin can no longer replace the site palette. "Designpaket übernehmen"
wrote the plugin's colours, fonts and buttons into the website for good:
no confirmation, no way back, right next to a switch that is safe to flip.
Colours belong to the design screen, where they have a preview and one-step
undo, so the feature is gone rather than guarded (ADR 105).

Removed: PluginRegistry::themePackage() and applyTheme(), "theme" in the
manifest and in the plugin structure, the admin_plugin_theme route and the
Theme dependency of PluginAdminController, the button and the design-package
line on the "Plugins" screen, and plugins/nachtblau. A manifest now needs at
least one block, one route or one preset.

The test says the opposite of what it used to: switching a plugin on and off
leaves both the design and the content alone.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
kantarciandClaude Opus 5 committed 2026-09-16 07:39:31 +02:00
1 parent 53fb713f74
commit 30aac4389d
6 files changed
+42 -18

No files matched your search

+12 -12
View File
@@ -1,7 +1,7 @@
# Plugins schreiben
Ein Plugin bringt eigene Bausteine, Vorlagen, Adressen und Designpakete in den Editor und auf die
Website. Es ist ein Ordner unter `plugins/` mit einer `plugin.json`, Twig-Vorlagen und optional
Ein Plugin bringt eigene Bausteine, Vorlagen und Adressen in den Editor und auf die
Website. Farben, Schriften und Buttons fasst es nie an – das Design gehört der Website (ADR 105). Es ist ein Ordner unter `plugins/` mit einer `plugin.json`, Twig-Vorlagen und optional
Stylesheets und Skripten. Eingeschaltet und eingestellt wird es in der Verwaltung unter **Plugins**
(Administrator). Hintergrund und Grenzen: ADR 102 und ADR 103 in `docs/ARCHITECTURE.md`.
@@ -22,8 +22,8 @@ plugins/
assets/bildvergleich.js
```
Die mitgelieferten Plugins sind die Vorlagen zum Abschreiben: `plugins/vergleich` (Bausteine,
Container, Einstellungen, Adresse, Seitenvorlage) und `plugins/nachtblau` (nur ein Designpaket).
Das mitgelieferte Plugin ist die Vorlage zum Abschreiben: `plugins/vergleich` (Bausteine,
Container, Einstellungen, Adresse, Seitenvorlage).
## Das Manifest
@@ -62,8 +62,7 @@ Container, Einstellungen, Adresse, Seitenvorlage) und `plugins/nachtblau` (nur e
},
"routes": {
"daten": { "path": "/vergleich/daten", "template": "routes/daten.json.twig", "type": "json" }
},
"theme": { "colors": [ ], "fonts": [ ], "base": { }, "buttons": { } }
}
}
```
@@ -73,8 +72,8 @@ Container, Einstellungen, Adresse, Seitenvorlage) und `plugins/nachtblau` (nur e
Browser nach einem Update die neue Fassung holt.
- `requires` (optional): die kleinste KantSites-Fassung. Passt sie nicht, erscheint das Plugin in
der Verwaltung mit dem Grund und lässt sich nicht einschalten.
- Ein Manifest braucht mindestens einen Baustein, eine Adresse, eine Vorlage oder ein
Designpaket. Fehlt eine genannte Datei, ist das Manifest ungültig.
- Ein Manifest braucht mindestens einen Baustein, eine Adresse oder eine Vorlage. Fehlt eine
genannte Datei, ist das Manifest ungültig.
### Eigenschaften und Einstellungen (Schema)
@@ -115,11 +114,12 @@ was der Kern beantwortet (`/admin`, `/media`, `/assets`, `/formular`, `/beitraeg
`html`, `json`, `text` oder `xml`. Eine veröffentlichte Seite mit derselben Adresse geht vor.
Ausgeschaltet antwortet die Adresse mit 404; alles außer `html` trägt `noindex`.
### Designpaket (`theme`)
### Was ein Plugin nicht kann: das Design
`colors`, `fonts`, `base` und optional `buttons` im Format des Designbereichs (siehe die
Aufbauskripte unter `scripts/` oder `plugins/nachtblau`). „Designpaket übernehmen“ ersetzt die
Palette der Website – dieselbe Prüfung wie beim Speichern unter Design, die Inhalte bleiben.
Es gibt kein `theme` im Manifest. Ein Plugin gestaltet seine eigenen Bausteine über deren
Stylesheet und die Design-Tokens des Kerns; Palette, Schriften und Buttons der Website ändert
nur der Betreiber unter **Design**. So färbt kein Schalter eine Website um, und nichts, was dort
eingestellt wurde, geht durch ein Plugin verloren (ADR 105).
## Die Vorlagen