summaryrefslogtreecommitdiff
path: root/app/helpers
diff options
context:
space:
mode:
authorerdgeist <erdgeist@erdgeist.org>2026-07-04 01:24:55 +0200
committererdgeist <erdgeist@erdgeist.org>2026-07-04 01:24:55 +0200
commit206dc5c50a73c5402b90d7fdc8945d3ba9356758 (patch)
treeb2c98c48248c878da4344e61734bfa89130f18d1 /app/helpers
parentd9461bae0b6232d618dde118360b44bb80f962b8 (diff)
Add self-service event creation from nodes#show
nodes#show's events table now renders unconditionally (previously hidden entirely for a zero-event node) and gains an "add event" link. The suggested tag_list is derived from the page's own category tags via NodesHelper::DEFAULT_EVENT_TAG_BY_PAGE_TAG (erfa-detail/ chaostreff-detail -> open-day) rather than hardcoded, and degrades to a blank field for any node whose tags don't match - deliberately universal, not chapter-specific, since Updates have historically carried event dates the same way. events#new surfaces *why* the tag was pre-filled via flash.now (not flash - this is a same-request render, not a redirect), using an explicit auto_tag_source param passed alongside tag_list rather than having the controller re-derive the reason from node_id. No destroy link added to nodes#show's events list - deliberate, per existing subnav-semantics convention (destructive actions live on the resource's own views). Covered directly by test. Adds real coverage for EventsController, previously 100% commented-out scaffold, plus unit tests for the new tag-mapping helper and the weekday-abbreviation helpers from the prior commit.
Diffstat (limited to 'app/helpers')
-rw-r--r--app/helpers/nodes_helper.rb14
1 files changed, 14 insertions, 0 deletions
diff --git a/app/helpers/nodes_helper.rb b/app/helpers/nodes_helper.rb
index 329bcc5..093bfc6 100644
--- a/app/helpers/nodes_helper.rb
+++ b/app/helpers/nodes_helper.rb
@@ -44,6 +44,20 @@ module NodesHelper
44 ]) 44 ])
45 end 45 end
46 46
47 DEFAULT_EVENT_TAG_BY_PAGE_TAG = {
48 'erfa-detail' => 'open-day',
49 'chaostreff-detail' => 'open-day'
50 }.freeze
51
52 def default_event_tag_mapping(page)
53 page_tags = page.tag_list
54 DEFAULT_EVENT_TAG_BY_PAGE_TAG.find { |page_tag, _| page_tags.include?(page_tag) }
55 end
56
57 def default_event_tag_list(page)
58 default_event_tag_mapping(page)&.last
59 end
60
47 def event_schedule_text(event) 61 def event_schedule_text(event)
48 if event.rrule.present? 62 if event.rrule.present?
49 recurrence = event.humanize_rrule(I18n.locale) 63 recurrence = event.humanize_rrule(I18n.locale)