Class: Decidim::Meetings::Admin::MeetingForm
- Inherits:
-
Form
- Object
- Form
- Decidim::Meetings::Admin::MeetingForm
- Includes:
- TranslatableAttributes
- Defined in:
- app/forms/decidim/meetings/admin/meeting_form.rb
Overview
This class holds a Form to create/update translatable meetings from Decidim’s admin panel.
Instance Method Summary collapse
- #category ⇒ Object
- #clean_type_of_meeting ⇒ Object
-
#decidim_scope_id ⇒ Object
Scope identifier.
- #geocoded? ⇒ Boolean
- #geocoding_enabled? ⇒ Boolean
- #has_address? ⇒ Boolean
- #hybrid_meeting? ⇒ Boolean
- #in_person_meeting? ⇒ Boolean
- #map_model(model) ⇒ Object
- #needs_address? ⇒ Boolean
- #number_of_services ⇒ Object
- #on_different_platform? ⇒ Boolean
- #on_this_platform? ⇒ Boolean
- #online_meeting? ⇒ Boolean
- #registration_type_select ⇒ Object
-
#scope ⇒ Object
Finds the Scope from the given decidim_scope_id, uses component scope if missing.
- #services_to_persist ⇒ Object
- #type_of_meeting_select ⇒ Object
Instance Method Details
#category ⇒ Object
90 91 92 93 94 |
# File 'app/forms/decidim/meetings/admin/meeting_form.rb', line 90 def category return unless current_component @category ||= categories.find_by(id: decidim_category_id) end |
#clean_type_of_meeting ⇒ Object
124 125 126 |
# File 'app/forms/decidim/meetings/admin/meeting_form.rb', line 124 def clean_type_of_meeting type_of_meeting.presence end |
#decidim_scope_id ⇒ Object
Scope identifier
Returns the scope identifier related to the meeting
86 87 88 |
# File 'app/forms/decidim/meetings/admin/meeting_form.rb', line 86 def decidim_scope_id @decidim_scope_id || scope&.id end |
#geocoded? ⇒ Boolean
108 109 110 |
# File 'app/forms/decidim/meetings/admin/meeting_form.rb', line 108 def geocoded? latitude.present? && longitude.present? end |
#geocoding_enabled? ⇒ Boolean
96 97 98 |
# File 'app/forms/decidim/meetings/admin/meeting_form.rb', line 96 def geocoding_enabled? Decidim::Map.available?(:geocoding) end |
#has_address? ⇒ Boolean
100 101 102 |
# File 'app/forms/decidim/meetings/admin/meeting_form.rb', line 100 def has_address? geocoding_enabled? && address.present? end |
#hybrid_meeting? ⇒ Boolean
120 121 122 |
# File 'app/forms/decidim/meetings/admin/meeting_form.rb', line 120 def hybrid_meeting? type_of_meeting == "hybrid" end |
#in_person_meeting? ⇒ Boolean
116 117 118 |
# File 'app/forms/decidim/meetings/admin/meeting_form.rb', line 116 def in_person_meeting? type_of_meeting == "in_person" end |
#map_model(model) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'app/forms/decidim/meetings/admin/meeting_form.rb', line 53 def map_model(model) self.services = model.services.map do |service| MeetingServiceForm.from_model(service) end self.decidim_category_id = model.categorization.decidim_category_id if model.categorization presenter = MeetingPresenter.new(model) self.title = presenter.title(all_locales: title.is_a?(Hash)) self.description = presenter.description(all_locales: description.is_a?(Hash)) self.type_of_meeting = model.type_of_meeting end |
#needs_address? ⇒ Boolean
104 105 106 |
# File 'app/forms/decidim/meetings/admin/meeting_form.rb', line 104 def needs_address? in_person_meeting? || hybrid_meeting? end |
#number_of_services ⇒ Object
70 71 72 |
# File 'app/forms/decidim/meetings/admin/meeting_form.rb', line 70 def number_of_services services.size end |
#on_different_platform? ⇒ Boolean
141 142 143 |
# File 'app/forms/decidim/meetings/admin/meeting_form.rb', line 141 def on_different_platform? registration_type == "on_different_platform" end |
#on_this_platform? ⇒ Boolean
137 138 139 |
# File 'app/forms/decidim/meetings/admin/meeting_form.rb', line 137 def on_this_platform? registration_type == "on_this_platform" end |
#online_meeting? ⇒ Boolean
112 113 114 |
# File 'app/forms/decidim/meetings/admin/meeting_form.rb', line 112 def online_meeting? type_of_meeting == "online" end |
#registration_type_select ⇒ Object
145 146 147 148 149 150 151 152 |
# File 'app/forms/decidim/meetings/admin/meeting_form.rb', line 145 def registration_type_select Decidim::Meetings::Meeting::REGISTRATION_TYPE.map do |type| [ I18n.t("registration_type.#{type}", scope: "decidim.meetings"), type ] end end |
#scope ⇒ Object
Finds the Scope from the given decidim_scope_id, uses component scope if missing.
Returns a Decidim::Scope
79 80 81 |
# File 'app/forms/decidim/meetings/admin/meeting_form.rb', line 79 def scope @scope ||= @decidim_scope_id ? current_component.scopes.find_by(id: @decidim_scope_id) : current_component.scope end |
#services_to_persist ⇒ Object
66 67 68 |
# File 'app/forms/decidim/meetings/admin/meeting_form.rb', line 66 def services_to_persist services.reject(&:deleted) end |
#type_of_meeting_select ⇒ Object
128 129 130 131 132 133 134 135 |
# File 'app/forms/decidim/meetings/admin/meeting_form.rb', line 128 def type_of_meeting_select Decidim::Meetings::Meeting::TYPE_OF_MEETING.map do |type| [ I18n.t("type_of_meeting.#{type}", scope: "decidim.meetings"), type ] end end |