fix: Admin-UX aus dem Review – Live-Gruppenfeedback, Protokollfilter, Divi-Hinweis, Rollen-Rückfrage

- Tools: „Ganze Gruppe“ und „Nur lesen“ wirken sofort auf die Zeilen
  (Option „wie Gruppe (…)“, gesperrte Selects mit Hinweis), der Server
  bleibt die Wahrheit; Markup trägt die nötigen data-Attribute.
- Protokoll: Filter in eigenem Block über der Tabelle (Core blendet
  .tablenav .actions auf Telefonen aus); „Protokoll leeren“ nur bei
  Einträgen, rechtsbündig, mit Gesamtzahl über ChangeLog::count().
- Divi: Beschreibung unter „Prüfung starten“, Button primär solange
  ungetestet ohne frischen Bericht.
- Zugriff: Rückfrage vor dem Speichern ohne Rolle oder ohne eigene Rolle.
- Verbindung: HTTPS-Hinweis nicht doppelt neben der Statusliste.
- Mobil: breitere Einstellungs-Spalte im Tools-Reiter.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Jan-Niclas Loosen
2026-10-08 16:39:44 +02:00
co-authored by Claude Fable 5.1
parent cc72f9b946
commit 1b73f0652a
17 changed files with 462 additions and 150 deletions
+29
View File
@@ -241,6 +241,35 @@ final class AccessTabTest extends TestCase
self::assertStringContainsString('confirm(', $html);
}
/** The admin script asks before a save that leaves nobody, or the admin themselves, with access. */
public function testRolesFormCarriesTheConfirmationTextsAndTheOwnRoles(): void
{
$this->stubRender(['editor']);
$html = $this->renderTab([]);
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.'
. ' Trotzdem speichern?"'
. ' data-own-roles="editor">',
$html
);
}
public function testMultisiteSuperAdminsGetNoOwnRoleConfirmation(): void
{
$this->stubRender(['editor']);
Functions\when('is_multisite')->justReturn(true);
Functions\when('is_super_admin')->justReturn(true);
$html = $this->renderTab([]);
self::assertStringContainsString('class="lit-mcp-access-form"', $html);
self::assertStringNotContainsString('data-own-roles', $html);
}
public function testRolesAreAFormTableFieldsetWithLegendAndDescription(): void
{
$this->stubRender(['editor']);