fix: remove automatically appended footer legal links (1.8.1)
CMS quality / php (8.2) (push) Canceled after 0s
CMS quality / php (8.4) (push) Canceled after 0s
CMS quality / browser (push) Canceled after 0s
CMS quality / mysql (push) Canceled after 0s

This commit is contained in:
kantarci committed 2026-09-14 12:30:34 +02:00
1 parent ab86312e87
commit 8f475d1374
12 files changed
+40 -62

No files matched your search

+12 -11
View File
@@ -1118,12 +1118,9 @@ final class CmsTest extends TestCase
self::assertStringContainsString("script-src 'none'", (string) $zweite->headers->get('Content-Security-Policy'));
}
public function testTheLegalLineCanLiveInsideTheFooterInsteadOfUnderneathIt(): void
public function testLegalLinksAppearOnlyWhereAnAuthorPlacesThem(): void
{
// Umut: „ganz unten Einwilligung ändern, Datenschutz usw. ist links, komplett bitte besser
// lösen." Die eingebaute Leiste klebte als heller Streifen unter einem dunklen Fuß. Als
// Baustein steht sie dort, wo sie hingehört, und erbt die Farben ihres Bereichs.
// Zwei verschiedene Seiten: die Zeile fuehrt zu Datenschutz und Impressum.
// Die hinterlegten Adressen erzeugen keine zusätzliche Leiste unter dem Footer.
$datenschutz = $this->pages->createPage('datenschutz', null, 'page', DemoContent::starter('Datenschutz'));
$seite = $this->pages->findForEditor($datenschutz);
$this->pages->publish($datenschutz, $seite['draft_revision_id'], $seite['version']);
@@ -1132,9 +1129,10 @@ final class CmsTest extends TestCase
$document['schemaVersion'] = 19;
$this->pages->publish('page-1', $this->pages->saveDraft('page-1', $document, 0), 1);
// Ohne Baustein: die eingebaute Leiste am Seitenende.
// Ohne selbst platzierte Links bleibt die Seite ohne Rechtszeile.
$html = $this->request('/')->getContent();
self::assertStringContainsString('<nav class="legal-bar"', $html);
self::assertStringNotContainsString('<nav class="legal-bar"', $html);
self::assertStringNotContainsString('<a href="/datenschutz">', $html);
// Mit Baustein: nur noch dieser, und zwar an seiner Stelle im Dokument.
$document['blocks'][] = ['id' => 'rechtszeile', 'type' => 'legal', 'props' => []];
@@ -1142,7 +1140,7 @@ final class CmsTest extends TestCase
$this->pages->publish('page-1', $this->pages->saveDraft('page-1', $document, $version), $version + 1);
$mit = $this->request('/')->getContent();
self::assertStringContainsString('<nav id="rechtszeile" class="block-legal"', $mit);
self::assertStringNotContainsString('<nav class="legal-bar"', $mit, 'Zweimal dieselbe Zeile ist schlechter als einmal.');
self::assertStringNotContainsString('<nav class="legal-bar"', $mit);
self::assertStringContainsString('Datenschutz', $mit);
}
@@ -3610,12 +3608,12 @@ final class CmsTest extends TestCase
}
self::assertSame('', $this->site->load()[$key]);
}
// A page that exists is accepted and then linked on every page.
// A page that exists is accepted; placing its link remains an editorial choice.
$this->publishedPage('datenschutz', 'Datenschutz');
$this->site->save(['homePath' => 'home', 'privacyPath' => 'datenschutz']);
self::assertSame('datenschutz', $this->site->load()['privacyPath']);
$this->pages->publish('page-1', $this->pages->saveDraft('page-1', DemoContent::pages()['home'], 0), 1);
self::assertStringContainsString('<a href="/datenschutz">Datenschutz</a>', $this->request('/')->getContent());
self::assertStringNotContainsString('<a href="/datenschutz">Datenschutz</a>', $this->request('/')->getContent());
}
public function testADeliveredPageIncrementsOneCounterAndTheAdministrationDoesNot(): void
@@ -3650,7 +3648,10 @@ final class CmsTest extends TestCase
public function testTheQuestionAppearsUntilItIsAnsweredAndCanBeChangedAgain(): void
{
$this->pages->publish('page-1', $this->pages->saveDraft('page-1', DemoContent::pages()['home'], 0), 1);
$document = DemoContent::pages()['home'];
$document['schemaVersion'] = 19;
$document['blocks'][] = ['id' => 'consent-links', 'type' => 'legal', 'props' => []];
$this->pages->publish('page-1', $this->pages->saveDraft('page-1', $document, 0), 1);
$this->askConsent();
$response = $this->request('/');
+4 -4
View File
@@ -718,7 +718,7 @@ final class EditorSecurityTest extends WebTestCase
self::assertResponseRedirects('/admin/media?q=0');
}
public function testTheMandatoryLegalPagesAreCreatedPublishedAndLinkedEverywhere(): void
public function testLegalPagesCanBeCreatedWithoutInjectingFooterLinks(): void
{
$client = $this->login('editor');
$crawler = $client->request('GET', '/admin/settings');
@@ -745,11 +745,11 @@ final class EditorSecurityTest extends WebTestCase
self::assertStringContainsString('NOCH AUSZUFÜLLEN', $client->getResponse()->getContent());
}
// And they are linked from an ordinary page, without anyone editing the footer.
// Creating the pages does not alter the author's footer or append a link bar.
$client->request('GET', '/');
$content = $client->getResponse()->getContent();
self::assertStringContainsString('<a href="/datenschutz">Datenschutz</a>', $content);
self::assertStringContainsString('<a href="/impressum">Impressum</a>', $content);
self::assertStringNotContainsString('<a href="/datenschutz">Datenschutz</a>', $content);
self::assertStringNotContainsString('<a href="/impressum">Impressum</a>', $content);
// Running it twice keeps the existing pages: they may already carry the real text.
$before = $this->db->fetchOne('SELECT COUNT(*) FROM revision');