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:
co-authored by
Claude Fable 5.1
parent
cc72f9b946
commit
1b73f0652a
+25
-13
@@ -151,19 +151,19 @@ final class LogTab implements AdminTab
|
||||
|
||||
$filters = $this->filters();
|
||||
$extra = $this->extraFilters();
|
||||
|
||||
return new LogListTable($this->log, $filters + $extra, $this->toolLabels());
|
||||
}
|
||||
|
||||
/** @return array<string, string> ability name => label */
|
||||
private function toolLabels(): array
|
||||
{
|
||||
$labels = [];
|
||||
foreach ($this->registry->abilities() as $ability) {
|
||||
$labels[$ability->name()] = $ability->label();
|
||||
}
|
||||
|
||||
return new LogListTable(
|
||||
$this->log,
|
||||
$filters + $extra,
|
||||
function () use ($filters, $extra, $labels): void {
|
||||
$this->renderFilterControls($filters, $extra, $labels);
|
||||
},
|
||||
$labels
|
||||
);
|
||||
return $labels;
|
||||
}
|
||||
|
||||
public function render(): void
|
||||
@@ -190,12 +190,20 @@ final class LogTab implements AdminTab
|
||||
echo '<form method="get">';
|
||||
printf('<input type="hidden" name="page" value="%s">', esc_attr(SettingsPage::SLUG));
|
||||
printf('<input type="hidden" name="tab" value="%s">', esc_attr($this->slug()));
|
||||
// Own block, not the table nav: core hides ".tablenav .actions" on phones.
|
||||
echo '<div class="lit-mcp-log-filters">';
|
||||
$this->renderFilterControls($this->filters(), $this->extraFilters(), $this->toolLabels());
|
||||
echo '</div>';
|
||||
$table = $this->table ?? $this->createTable();
|
||||
$table->prepare_items();
|
||||
$table->display();
|
||||
echo '</form>';
|
||||
|
||||
$this->renderClearForm();
|
||||
// The whole log, not the filtered page: "leeren" removes everything.
|
||||
$total = $this->log->count();
|
||||
if ($total > 0) {
|
||||
$this->renderClearForm($total);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -306,9 +314,9 @@ final class LogTab implements AdminTab
|
||||
);
|
||||
}
|
||||
|
||||
private function renderClearForm(): void
|
||||
private function renderClearForm(int $total): void
|
||||
{
|
||||
printf('<form method="post" action="%s">', esc_url(admin_url('admin-post.php')));
|
||||
printf('<div class="lit-mcp-clear-log"><form method="post" action="%s">', esc_url(admin_url('admin-post.php')));
|
||||
printf('<input type="hidden" name="action" value="%s">', esc_attr(self::CLEAR_ACTION));
|
||||
wp_nonce_field(self::CLEAR_ACTION);
|
||||
$confirmMessage = esc_js(__(
|
||||
@@ -316,13 +324,17 @@ final class LogTab implements AdminTab
|
||||
'wp-lit-mcp'
|
||||
));
|
||||
submit_button(
|
||||
__('Protokoll leeren', 'wp-lit-mcp'),
|
||||
sprintf(
|
||||
/* translators: %d: number of log entries */
|
||||
_n('Protokoll leeren (%d Eintrag)', 'Protokoll leeren (%d Einträge)', $total, 'wp-lit-mcp'),
|
||||
$total
|
||||
),
|
||||
'delete',
|
||||
'submit',
|
||||
false,
|
||||
['onclick' => "return window.confirm('" . $confirmMessage . "');"]
|
||||
);
|
||||
echo '</form>';
|
||||
echo '</form></div>';
|
||||
}
|
||||
|
||||
public function handleClear(): void
|
||||
|
||||
Reference in New Issue
Block a user