diff options
| author | erdgeist <erdgeist@erdgeist.org> | 2026-07-06 19:40:48 +0200 |
|---|---|---|
| committer | erdgeist <erdgeist@erdgeist.org> | 2026-07-06 19:40:48 +0200 |
| commit | 527376039c527eb8f559c5e6da76429bc3f3ee4f (patch) | |
| tree | 283f9b5950cd1c7840c5c48cb8d604cb9cd32dc2 /app/helpers | |
| parent | 3dbf522783dfce496884e05559dc962cae4b1e1b (diff) | |
Add tree-position scoping to Page.aggregate
New :children option ("direct" or "all") on the [aggregate] shortcode,
composable with the existing :tags filter - both apply as independent
successive .where clauses, ANDing together automatically, no special
casing needed. content_helper.rb passes the current @page.node through
as :node whenever :children is requested, since Page.aggregate has no
way to resolve "which node" from the shortcode's bare option strings on
its own. Guarded so nothing changes for any existing [aggregate]
shortcode that never uses children= - :node stays nil, the new branch
never fires.
"all" resolves via node.descendants.pluck(:id) rather than embedding the
descendants relation directly as a subquery. Not proven strictly
necessary - extensive debugging this session initially pointed at a
subquery/table-alias collision, but every actual failure traced instead
to accumulated test-node debris left in the dev DB by earlier
interrupted runs, confirmed by re-running against a cleaned database.
Kept anyway as a one-round-trip-cheaper, more defensive default
regardless.
Diffstat (limited to 'app/helpers')
| -rw-r--r-- | app/helpers/content_helper.rb | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/app/helpers/content_helper.rb b/app/helpers/content_helper.rb index 6043089..6bcd437 100644 --- a/app/helpers/content_helper.rb +++ b/app/helpers/content_helper.rb | |||
| @@ -108,6 +108,7 @@ module ContentHelper | |||
| 108 | end | 108 | end |
| 109 | 109 | ||
| 110 | options[:partial] = select_partial(options[:partial]) | 110 | options[:partial] = select_partial(options[:partial]) |
| 111 | options[:node] = @page.node if options[:children].present? | ||
| 111 | 112 | ||
| 112 | sanitize(content.sub(tag, render_collection(options)), :attributes => cccms_attributes) | 113 | sanitize(content.sub(tag, render_collection(options)), :attributes => cccms_attributes) |
| 113 | else | 114 | else |
