Drei Aufbauten fuer neue Beitraege
Umut wollte mehrere Designs zur Auswahl. Bei Seiten waere das falsch - dort weiss vorher niemand, was daraus wird. Bei Beitraegen ist die Form fast immer dieselbe, und wer jedes Mal von vorn anfaengt, baut jedes Mal etwas leicht anderes. Bildkopf (Bild ueber die volle Breite, Titel darauf), Klassisch (Titel und Vorspann schmal, Bild darunter) und Magazin (Titel neben den Eckdaten). Gewaehlt wird beim Anlegen; danach ist jeder Block aenderbar wie jeder andere. Kein Aufbau verlaesst sich auf ein Bild, das es noch nicht gibt. Dabei ist eine Regel gefallen: der erste Textblock eines Abschnitts wurde automatisch zur Kleinbeschriftung in Akzentfarbe. Das gestaltet nach Position statt nach Absicht - im Fussbereich wurde daraus roter Versalientext, in der Magazin-Vorlage aus dem Einstiegsabsatz eine Beschriftung. Wer eine Beschriftung will, stellt sie ein. Geprueft: 398 Tests unter PHP 8.2 und 8.4, Editortest, Browserpruefung, axe ohne Verstoss auf allen drei Aufbauten. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
1b22265a54
commit
84e88c6636
7 files changed
+331
-5
No files matched your search
@@ -8,6 +8,7 @@ use App\Content\DocumentValidator;
|
||||
use App\Content\MenuRepository;
|
||||
use App\Content\PageRepository;
|
||||
use App\Content\PartialRepository;
|
||||
use App\Content\PostLayouts;
|
||||
use App\Content\PostRepository;
|
||||
use App\Content\RedirectRepository;
|
||||
use App\Content\StyleCompiler;
|
||||
@@ -45,6 +46,7 @@ final class EditorController extends AbstractController
|
||||
'pages' => $pages,
|
||||
'trash' => $this->pages->trash(),
|
||||
'parents' => array_values(array_filter($pages, static fn (array $p): bool => 'page' === $p['type'] && $p['depth'] + 2 <= PageRepository::MAX_DEPTH)),
|
||||
'postLayouts' => PostLayouts::all(),
|
||||
// Which header and footer areas a page can choose from.
|
||||
'areaChoices' => ['header' => $this->partials->choices('header'), 'footer' => $this->partials->choices('footer')],
|
||||
]);
|
||||
@@ -65,7 +67,13 @@ final class EditorController extends AbstractController
|
||||
$parentId = $request->request->getString('parent_id') ?: null;
|
||||
$slug = trim($request->request->getString('slug')) ?: $this->slugify($title);
|
||||
try {
|
||||
$id = $this->pages->createPage($slug, $parentId, $type, DemoContent::starter($title, $type));
|
||||
// Ein Beitrag beginnt mit einem Aufbau, eine Seite leer: bei einer Seite weiß
|
||||
// niemand vorher, was daraus wird, bei einem Beitrag fast immer.
|
||||
$layout = $request->request->getString('layout', PostLayouts::DEFAULT);
|
||||
$document = 'post' === $type && PostLayouts::exists($layout)
|
||||
? PostLayouts::document($layout, $title)
|
||||
: DemoContent::starter($title, $type);
|
||||
$id = $this->pages->createPage($slug, $parentId, $type, $document);
|
||||
} catch (InvalidPage|InvalidDocument $e) {
|
||||
return $this->back($e->getMessage());
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user