summaryrefslogtreecommitdiff
path: root/app/helpers/nodes_helper.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/helpers/nodes_helper.rb')
-rw-r--r--app/helpers/nodes_helper.rb60
1 files changed, 47 insertions, 13 deletions
diff --git a/app/helpers/nodes_helper.rb b/app/helpers/nodes_helper.rb
index a054a2e..5884c8c 100644
--- a/app/helpers/nodes_helper.rb
+++ b/app/helpers/nodes_helper.rb
@@ -12,7 +12,6 @@ module NodesHelper
12 end 12 end
13 end 13 end
14 14
15
16 def truncated_title_for_node node 15 def truncated_title_for_node node
17 if (title = title_for_node node) && title.size > 20 16 if (title = title_for_node node) && title.size > 20
18 "<span title='#{title}'>#{truncate(title, 40)}</span>" 17 "<span title='#{title}'>#{truncate(title, 40)}</span>"
@@ -29,19 +28,54 @@ module NodesHelper
29 User.all.map {|u| [u.login, u.id]} 28 User.all.map {|u| [u.login, u.id]}
30 end 29 end
31 30
32 def event_information 31 def node_last_editor(node)
33 if @node.event 32 editor = node.draft&.editor || node.head&.editor
34 safe_join([ 33 return nil unless editor
35 "#{@node.event.start_time.to_fs(:db)} - #{@node.event.end_time.to_fs(:db)} > ", 34 editor == current_user ? t("editor_self") : editor.login
36 link_to('show', event_path(@node.event)), 35 end
37 ' ', 36
38 link_to('edit', edit_event_path(@node.event)) 37 def node_head_editor(node)
39 ]) 38 editor = node.head&.editor
39 return nil unless editor
40 editor == current_user ? t("publisher_self") : editor.login
41 end
42
43 DEFAULT_EVENT_TAG_BY_PAGE_TAG = {
44 'erfa-detail' => 'open-day',
45 'chaostreff-detail' => 'open-day'
46 }.freeze
47
48 def default_event_tag_mapping(page)
49 page_tags = page.tag_list
50 DEFAULT_EVENT_TAG_BY_PAGE_TAG.find { |page_tag, _| page_tags.include?(page_tag) }
51 end
52
53 def default_event_tag_list(page)
54 default_event_tag_mapping(page)&.last
55 end
56
57 def event_schedule_text(event)
58 if event.rrule.present?
59 recurrence = event.humanize_rrule(I18n.locale)
60 if recurrence
61 time = event.start_time&.strftime("%H:%M")
62 time ? "#{recurrence} #{t(:event_schedule_time, time: time)}" : recurrence
63 else
64 "#{event.rrule} (#{t(:event_schedule_unrecognized)})"
65 end
66 elsif event.start_time
67 I18n.l(event.start_time, format: :long)
40 else 68 else
41 safe_join([ 69 t(:event_schedule_none)
42 'no event attached > ',
43 link_to('add', new_event_path(:node_id => @node.id))
44 ])
45 end 70 end
46 end 71 end
72
73 def matching_node_kinds(node)
74 path = node.unique_path
75 CccConventions::NODE_KINDS.select { |_, config| config[:parent_match]&.call(path) }
76 end
77
78 def sitemap_node_open?(node)
79 !CccConventions::SITEMAP_COLLAPSED_PATHS.include?(node.unique_name)
80 end
47end 81end