feat(admin): Einstellungsseite überarbeitet, auch für das Handy

Verbindung: Probleme vor der Anleitung. Tools: Suche, Filter, Alle ein-/ausklappen, Zurücksetzen je Gruppe.
Divi-Reiter in Klartext mit Statussymbolen. Rollenhinweise, Hilfe-Tab, Reiter als Raster und Karten auf dem Handy,
Kontrast, Tippflächen, einheitliche Du-Anrede. Bestätigungen über data-lit-mcp-confirm statt Inline-onclick.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Jan-Niclas Loosen
2026-11-05 16:36:16 +01:00
co-authored by Claude Sonnet 5.5
parent 165e61d7fe
commit 96fa58188b
16 changed files with 865 additions and 84 deletions
@@ -380,14 +380,14 @@ final class DiviTabTest extends TestCase
$html = $this->renderedWith(self::mixedStatus(), null, $overview);
self::assertStringContainsString('<th scope="col">Betroffene Werkzeuge</th>', $html);
self::assertStringContainsString('<th scope="col">Betroffene Tools</th>', $html);
self::assertStringContainsString(
'<td>Seiten schreiben</td><td><strong>inkompatibel</strong></td><td>–</td>',
'<td data-label="Fähigkeit">Seiten schreiben</td><td data-label="Zustand"><span class="lit-mcp-state lit-mcp-status-dismiss"><span class="dashicons dashicons-dismiss" aria-hidden="true"></span> <strong>inkompatibel</strong></span></td><td data-label="Quelle">–</td>',
$html
);
self::assertStringContainsString('<td>Modulkatalog</td><td><strong>ungetestet</strong></td>', $html);
self::assertStringContainsString('<td data-label="Fähigkeit">Modulkatalog</td><td data-label="Zustand"><span class="lit-mcp-state lit-mcp-status-warning"><span class="dashicons dashicons-warning" aria-hidden="true"></span> <strong>ungetestet</strong></span></td>', $html);
self::assertStringContainsString(
'<td>Seiten lesen</td><td><strong>freigegeben</strong></td><td>Automatik (auto)</td>',
'<td data-label="Fähigkeit">Seiten lesen</td><td data-label="Zustand"><span class="lit-mcp-state lit-mcp-status-yes-alt"><span class="dashicons dashicons-yes-alt" aria-hidden="true"></span> <strong>freigegeben</strong></span></td><td data-label="Quelle">Automatisch geprüft</td>',
$html
);
self::assertStringContainsString('<li><code>lit-divi-insert</code></li>', $html);
@@ -412,8 +412,8 @@ final class DiviTabTest extends TestCase
self::report()
);
self::assertStringContainsString('Plugin (code)', $code);
self::assertStringContainsString('Freigabe auf dieser Website (database)', $database);
self::assertStringContainsString('Im Plugin als getestet hinterlegt', $code);
self::assertStringContainsString('Von dir auf dieser Website freigegeben', $database);
}
public function testTheTabExplainsTheAutomationAndTheFilter(): void
@@ -538,4 +538,23 @@ final class DiviTabTest extends TestCase
$tab->registerActions();
}
public function testNamesTheNextStepAboveTheDetailsAndKeepsAReleasedTableFolded(): void
{
$incompatible = $this->rendered(self::mixedStatus(), null);
$released = $this->rendered(ReleaseMatrices::released('5.3.0'), null);
self::assertStringContainsString('notice notice-error inline', $incompatible);
self::assertStringContainsString('<details class="lit-mcp-divi-details" open>', $incompatible);
self::assertStringNotContainsString('notice notice-', $released);
self::assertStringContainsString('<details class="lit-mcp-divi-details">', $released);
}
public function testUntestedVersionNamesTheCheckAsTheNextStep(): void
{
$html = $this->rendered(ReleaseMatrices::uniform(ReleaseState::Untested), null);
self::assertStringContainsString('notice notice-warning inline', $html);
self::assertStringContainsString('Divi 5.3.0 ist noch nicht geprüft. Starte unten die Prüfung', $html);
}
}