summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorerdgeist <erdgeist@erdgeist.org>2026-07-13 03:22:37 +0200
committererdgeist <erdgeist@erdgeist.org>2026-07-13 03:22:37 +0200
commit70653b681d10917b77dced08f577446ced7568f1 (patch)
tree3c92383e29da79beb3e1419c153952a4aa7dc1ab /app/models
parent65c7c40f74c315c1a39fb15da8ce341fb8b9b05e (diff)
Add RelatedAssetsController: search, attach, detach, reorder
Backend for the asset-picker rebuild -- replaces the plan to dump every image asset in the system into a hidden, unfiltered browse panel on every node edit (the actual current behavior, confirmed by reading nodes/edit.html.erb directly) with a small, name-scoped search endpoint plus create/destroy/update for attach, detach, and reorder. No schema change needed -- RelatedAsset already had everything this requires (asset_id, page_id, an acts_as_list position). search excludes assets already attached to the page, keeping results meaningfully small given hundreds of assets total but only a handful per node in practice. create is find_or_create_by! rather than a bare create!, guarding against the same asset being attached twice from two separate search results. update leans on acts_as_list's own insert_at rather than custom position-shifting logic. Node#editable_page (autosave || draft || head) is extracted since this is now its third call site with identical logic -- deliberately not touching nodes#show, which resolves draft || head without autosave on purpose, a different and correct semantic for "current committed state" versus "what's actively being edited."
Diffstat (limited to 'app/models')
-rw-r--r--app/models/node.rb4
1 files changed, 4 insertions, 0 deletions
diff --git a/app/models/node.rb b/app/models/node.rb
index 1d0a089..0361c1e 100644
--- a/app/models/node.rb
+++ b/app/models/node.rb
@@ -328,6 +328,10 @@ class Node < ApplicationRecord
328 unique_path.length == 3 && unique_path[0] == "updates" 328 unique_path.length == 3 && unique_path[0] == "updates"
329 end 329 end
330 330
331 def editable_page
332 autosave || draft || head
333 end
334
331 # Returns immutable node id for all new nodes so that the atom feed entry ids 335 # Returns immutable node id for all new nodes so that the atom feed entry ids
332 # stay the same eventhough the slug or positions changes. 336 # stay the same eventhough the slug or positions changes.
333 # Can be removed after a year or so ;) 337 # Can be removed after a year or so ;)