summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorerdgeist <erdgeist@erdgeist.org>2026-07-12 16:33:12 +0200
committererdgeist <erdgeist@erdgeist.org>2026-07-12 16:33:12 +0200
commit4ec70e5ecf792a56e868538738d6c7f63bb6cf24 (patch)
tree45364f298ce21a7e47de619b7db79b9b77e4ebc1 /app
parent5803c59192b7fb05840d0b452eb64d9f997f3d8f (diff)
Add a grouped tag+node search endpoint for the upcoming dashboard
AdminController#dashboard_search returns tags and nodes as separate, labeled groups (via ActsAsTaggableOn::Tag.named_like and Node.editor_search) rather than the flat per-node list every existing picker returns. initSearchPicker gains a renderResults callback option that, when given, replaces the default per-node rendering entirely -- lets the dashboard render its two labeled groups without a second, parallel picker implementation. resultsHeaderHtml (the "Press Enter to see all results" hint) is now threaded through as a third argument to renderResults, so a picker with custom rendering can still show it -- previously only the default per-node branch ever did. Tags link straight to the existing /admin/nodes/tags/:tag view rather than becoming an in-place filter chip.
Diffstat (limited to 'app')
-rw-r--r--app/controllers/admin_controller.rb18
-rw-r--r--app/views/layouts/admin.html.erb1
2 files changed, 19 insertions, 0 deletions
diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb
index 3c45c49..8445997 100644
--- a/app/controllers/admin_controller.rb
+++ b/app/controllers/admin_controller.rb
@@ -49,6 +49,24 @@ class AdminController < ApplicationController
49 end 49 end
50 end 50 end
51 51
52 def dashboard_search
53 term = params[:search_term]
54
55 if term.blank?
56 render json: { tags: [], nodes: [] }
57 return
58 end
59
60 render json: {
61 tags: ActsAsTaggableOn::Tag.named_like(term).limit(5).map { |tag|
62 { name: tag.name, tag_path: tags_nodes_path(tags: tag.name) }
63 },
64 nodes: Node.editor_search(term).limit(10).map { |node|
65 { node_id: node.id, title: node.title, unique_name: node.unique_name, node_path: node_path(node) }
66 }
67 }
68 end
69
52 def menu_search 70 def menu_search
53 if params[:search_term] == "Root" 71 if params[:search_term] == "Root"
54 @results = [Node.root] 72 @results = [Node.root]
diff --git a/app/views/layouts/admin.html.erb b/app/views/layouts/admin.html.erb
index 079346b..00d7075 100644
--- a/app/views/layouts/admin.html.erb
+++ b/app/views/layouts/admin.html.erb
@@ -17,6 +17,7 @@
17 var ADMIN_SEARCH_URL = "<%= admin_search_path %>"; 17 var ADMIN_SEARCH_URL = "<%= admin_search_path %>";
18 var ADMIN_MENU_SEARCH_URL = "<%= admin_menu_search_path %>"; 18 var ADMIN_MENU_SEARCH_URL = "<%= admin_menu_search_path %>";
19 var PARAMETERIZE_PREVIEW_URL = "<%= parameterize_preview_nodes_path %>"; 19 var PARAMETERIZE_PREVIEW_URL = "<%= parameterize_preview_nodes_path %>";
20 var DASHBOARD_SEARCH_URL = "<%= admin_dashboard_search_path %>";
20 </script> 21 </script>
21 </head> 22 </head>
22 23