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
+11 -4
View File
@@ -185,7 +185,7 @@ final class AccessTabTest extends TestCase
Functions\when('settings_fields')->justReturn(null);
Functions\when('submit_button')->alias(static function ($text = null, $type = 'primary', $name = 'submit', $wrap = true, $other = ''): void {
$attrs = is_array($other) ? implode(' ', array_map(
static fn ($k, $v): string => sprintf('%s="%s"', $k, $v),
static fn ($k, $v): string => sprintf('%s="%s"', $k, htmlspecialchars((string) $v, ENT_QUOTES)),
array_keys($other),
$other
)) : '';
@@ -238,7 +238,14 @@ final class AccessTabTest extends TestCase
self::assertStringContainsString('name="user_id" value="3"', $html);
self::assertStringContainsString('value="lit_mcp_revoke"', $html);
self::assertStringContainsString('nonce-lit_mcp_revoke_uuid-1', $html);
self::assertStringContainsString('confirm(', $html);
self::assertStringContainsString(
'data-lit-mcp-confirm="Verbindung „Claude &lt;script&gt;“ von redaktion&lt;b&gt; widerrufen?',
$html
);
self::assertStringContainsString('aria-label="Widerrufen: Claude &lt;script&gt;, redaktion&lt;b&gt;"', $html);
self::assertStringContainsString('id="lit-mcp-revoke-uuid-1"', $html);
self::assertStringContainsString('aria-describedby="lit-mcp-role-editor"', $html);
self::assertStringNotContainsString('onclick', $html);
}
/** The admin script asks before a save that leaves nobody, or the admin themselves, with access. */
@@ -251,7 +258,7 @@ final class AccessTabTest extends TestCase
self::assertStringContainsString(
'<form method="post" action="options.php" class="lit-mcp-access-form"'
. ' data-confirm-none="Keine Rolle freigegeben – niemand kann LIT MCP nutzen. Trotzdem speichern?"'
. ' data-confirm-own="Keine Ihrer Rollen ist mehr freigegeben – Sie selbst können LIT MCP nicht mehr nutzen.'
. ' data-confirm-own="Keine deiner Rollen ist mehr freigegeben. Du kannst LIT MCP dann selbst nicht mehr nutzen.'
. ' Trotzdem speichern?"'
. ' data-own-roles="editor">',
$html
@@ -293,7 +300,7 @@ final class AccessTabTest extends TestCase
self::assertStringContainsString('d.m.Y H:i@1790000000', $html);
self::assertStringContainsString('d.m.Y@1790050000', $html);
self::assertStringContainsString('<td class="column-last-used">–</td>', $html);
self::assertStringContainsString('<td class="column-last-used">Noch nie</td>', $html);
}
public function testRenderWithoutConnectionsShowsAnEmptyStateRowLinkingToTheConnectionTab(): void