From d41ee504caedbe858e24ab2a23c7a804454c64c8 Mon Sep 17 00:00:00 2001 From: erdgeist Date: Sat, 18 Jul 2026 02:15:29 +0200 Subject: Add Trash affordances: cockpit, listing, dashboard entry nodes#show gains a Trash section on trashed nodes: provenance from the trash entry, a restore form whose parent picker pre-fills the old parent while it still lives, and permanent deletion. A Move-to-Trash button joins the status actions on living nodes. nodes#trashed lists trashed subtree roots with weight, provenance, and deletion; the dashboard housekeeping row links to it, and trash/destroy redirect there. Deletion from Trash now removes the whole subtree, deepest first, each node through a real destroy! so every per-node cascade runs -- amending the never-recursive rule for this one sanctioned path (both confirms state the count; the root entry carries destroyed_descendants). Bare Node#destroy still refuses children. --- public/javascripts/admin_search.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'public/javascripts/admin_search.js') diff --git a/public/javascripts/admin_search.js b/public/javascripts/admin_search.js index d135503..b53c931 100644 --- a/public/javascripts/admin_search.js +++ b/public/javascripts/admin_search.js @@ -262,6 +262,19 @@ move_to_search = { } }; +restore_search = { + initialize_search : function() { + initSearchPicker({ + inputSelector: "#restore_search_term", + resultsSelector: "#restore_search_results", + onSelect: function(node) { + $("#restore_search_term").val(node.title); + $("#parent_id").val(node.node_id); + } + }); + } +}; + event_search = { initialize_search : function() { initSearchPicker({ -- cgit v1.3