diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/nodes_controller.rb | 6 | ||||
| -rw-r--r-- | app/helpers/nodes_helper.rb | 14 | ||||
| -rw-r--r-- | app/models/concerns/nested_tree.rb | 4 |
3 files changed, 14 insertions, 10 deletions
diff --git a/app/controllers/nodes_controller.rb b/app/controllers/nodes_controller.rb index 447d596d..5b919b1f 100644 --- a/app/controllers/nodes_controller.rb +++ b/app/controllers/nodes_controller.rb | |||
| @@ -256,6 +256,12 @@ class NodesController < ApplicationController | |||
| 256 | 256 | ||
| 257 | def sitemap | 257 | def sitemap |
| 258 | @sitemap = Node.root.self_and_descendants_ordered_with_level | 258 | @sitemap = Node.root.self_and_descendants_ordered_with_level |
| 259 | |||
| 260 | ActiveRecord::Associations::Preloader.new( | ||
| 261 | :records => @sitemap.map(&:first), | ||
| 262 | :associations => [{ :head => :translations }, { :draft => :translations }] | ||
| 263 | ).call | ||
| 264 | |||
| 259 | @sitemap_descendant_counts = descendant_counts_for(@sitemap) | 265 | @sitemap_descendant_counts = descendant_counts_for(@sitemap) |
| 260 | end | 266 | end |
| 261 | 267 | ||
diff --git a/app/helpers/nodes_helper.rb b/app/helpers/nodes_helper.rb index 5884c8cd..48f44f8b 100644 --- a/app/helpers/nodes_helper.rb +++ b/app/helpers/nodes_helper.rb | |||
| @@ -1,15 +1,11 @@ | |||
| 1 | module NodesHelper | 1 | module NodesHelper |
| 2 | 2 | ||
| 3 | def title_for_node node | 3 | def title_for_node node |
| 4 | if node.head | 4 | return node.head.title if node.head&.title.present? |
| 5 | node.head.title | 5 | return node.draft.title if node.draft&.title.present? |
| 6 | else | 6 | |
| 7 | if not node.draft or not node.draft.title | 7 | logger.error "Missing title in node #{node.id}" |
| 8 | logger.error "Missing title in node #{node.id}" | 8 | t("admin.common.no_title") |
| 9 | return "NO TITLE" | ||
| 10 | end | ||
| 11 | node.draft.title | ||
| 12 | end | ||
| 13 | end | 9 | end |
| 14 | 10 | ||
| 15 | def truncated_title_for_node node | 11 | def truncated_title_for_node node |
diff --git a/app/models/concerns/nested_tree.rb b/app/models/concerns/nested_tree.rb index befcdb38..87a94d23 100644 --- a/app/models/concerns/nested_tree.rb +++ b/app/models/concerns/nested_tree.rb | |||
| @@ -61,7 +61,9 @@ module NestedTree | |||
| 61 | def self_and_descendants_ordered_with_level | 61 | def self_and_descendants_ordered_with_level |
| 62 | nodes = [self] + descendants.to_a | 62 | nodes = [self] + descendants.to_a |
| 63 | children_by_parent = nodes.group_by(&:parent_id) | 63 | children_by_parent = nodes.group_by(&:parent_id) |
| 64 | children_by_parent.each_value { |list| list.sort_by!(&:id) } | 64 | children_by_parent.each_value do |list| |
| 65 | list.sort_by! { |n| [children_by_parent.key?(n.id) ? 0 : 1, n.slug.to_s] } | ||
| 66 | end | ||
| 65 | 67 | ||
| 66 | result = [] | 68 | result = [] |
| 67 | visit = ->(node, level) do | 69 | visit = ->(node, level) do |
