From 190daaa8a0bb79e750894b83e31b9d99f7d900a4 Mon Sep 17 00:00:00 2001 From: erdgeist Date: Thu, 16 Jul 2026 03:30:01 +0200 Subject: Add a reader for the action log at admin/log NodeActionsController#index lists entries newest-first, filterable by node_id or user_id -- the two zoom shapes the log was designed around. Rendering goes through NodeActionsHelper.action_summary, which builds one sentence per entry from metadata alone, so entries referencing deleted users or nodes render from their snapshots; live associations only upgrade names to links. Unknown verbs degrade to a generic sentence rather than an error, since the log outlives its vocabulary. The helper is the escaping boundary: every metadata value passes through h() before assembly. Actor names link to the log's own user zoom rather than the unused users page -- inspecting a suspicious user's other actions is the intended workflow. Publish entries with a translation_diff expose a collapsed per-locale change table linking out to the revision itself. Sentences live in en.yml/de.yml following the existing widget-string convention. nodes#show links to its node's zoomed log. --- config/routes.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'config/routes.rb') diff --git a/config/routes.rb b/config/routes.rb index 8e5ff23a..c2b95900 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -86,6 +86,7 @@ Cccms::Application.routes.draw do match 'menu_search' => 'admin#menu_search', :as => :admin_menu_search, :via => :get match 'conventions' => 'admin#conventions', :as => :admin_conventions, :via => :get match 'dashboard_search' => 'admin#dashboard_search', :as => :admin_dashboard_search, :via => :get + match 'log' => 'node_actions#index', :as => :admin_log, :via => :get end match '/logout' => 'sessions#destroy', :as => :logout, :via => :delete -- cgit v1.3