Module: Decidim::Meetings::MeetingsHelper
- Includes:
- ApplicationHelper, ApplicationHelper, ResourceHelper, TranslationsHelper
- Defined in:
- app/helpers/decidim/meetings/meetings_helper.rb
Overview
Custom helpers used in meetings views
Instance Method Summary collapse
- #author_presenter_for(author) ⇒ Object
-
#calculate_start_and_end_time_of_agenda_items(agenda_items, meeting, start_time_parent = nil) ⇒ Object
Public: This method is used to calculate the start and end time of each agenda item passed.
- #current_user_groups? ⇒ Boolean
-
#display_duration_agenda_items(agenda_item_id, index, agenda_items_times) ⇒ Object
Public: This method is used to build the html for show start and end time of each agenda item.
-
#google_calendar_event_url(meeting) ⇒ Object
Public: URL to create an event in Google Calendars based on meeting data.
-
#meeting_description(meeting, max_length = 120) ⇒ Object
Public: truncates the meeting description.
-
#meeting_type_badge_css_class(type) ⇒ Object
Public: The css class applied based on the meeting type to the css class.
-
#registration_code_help_text ⇒ Object
Public: Registration code generic help text.
-
#validation_state_for(registration) ⇒ Object
Public: Registration validation state as text.
Methods included from ApplicationHelper
#activity_filter_values, #filter_date_values, #filter_origin_values, #filter_type_values, #iframe_embed_or_live_event_page?, #online_or_hybrid_meeting?, #prevent_timeout_seconds, #render_meeting_body, #safe_content?
Methods included from MapHelper
Instance Method Details
#author_presenter_for(author) ⇒ Object
112 113 114 115 116 117 118 |
# File 'app/helpers/decidim/meetings/meetings_helper.rb', line 112 def () if .is_a?(Decidim::Organization) Decidim::Meetings::OfficialAuthorPresenter.new else present() end end |
#calculate_start_and_end_time_of_agenda_items(agenda_items, meeting, start_time_parent = nil) ⇒ Object
Public: This method is used to calculate the start and end time
of each agenda item passed
agenda_items - an Active record of agenda items meeting - the meeting of the agenda, to know the start and end time start_time_parent - used to pass the start time of parent agenda item
Returns an Array.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'app/helpers/decidim/meetings/meetings_helper.rb', line 48 def calculate_start_and_end_time_of_agenda_items(agenda_items, meeting, start_time_parent = nil) array = [] agenda_items.each_with_index do |agenda_item, index| hash = { agenda_item_id: agenda_item.id, start_time: nil, end_time: nil } if index.zero? start = if agenda_item.parent? meeting.start_time else start_time_parent end hash[:start_time] = start else hash[:start_time] = array[index - 1][:end_time] end hash[:end_time] = hash[:start_time] + agenda_item.duration.minutes array.push(hash) end array end |
#current_user_groups? ⇒ Boolean
120 121 122 |
# File 'app/helpers/decidim/meetings/meetings_helper.rb', line 120 def current_user_groups? current_organization.user_groups_enabled? && Decidim::UserGroups::ManageableUserGroups.for(current_user).verified.any? end |
#display_duration_agenda_items(agenda_item_id, index, agenda_items_times) ⇒ Object
Public: This method is used to build the html for show start and end time of each agenda item
agenda_item_id - an id of agenda item agenda_items_times - is a hash with the two times
Returns an HMTL.
84 85 86 87 88 89 90 |
# File 'app/helpers/decidim/meetings/meetings_helper.rb', line 84 def display_duration_agenda_items(agenda_item_id, index, agenda_items_times) html = "" if agenda_item_id == agenda_items_times[index][:agenda_item_id] html += "[ #{agenda_items_times[index][:start_time].strftime("%H:%M")} - #{agenda_items_times[index][:end_time].strftime("%H:%M")}]" end html.html_safe end |
#google_calendar_event_url(meeting) ⇒ Object
Public: URL to create an event in Google Calendars based on meeting data.
meeting - a Decidim::Meeting instance.
Returns a String.
130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'app/helpers/decidim/meetings/meetings_helper.rb', line 130 def google_calendar_event_url(meeting) meeting_url = resource_locator(meeting).url meeting = present(meeting) params = { text: meeting.title, dates: meeting.dates_param, details: I18n.t( "decidim.meetings.meetings.calendar_modal.full_details_html", link: link_to(meeting_url, meeting_url) ) } base_url = "https://calendar.google.com/calendar/u/0/r/eventedit" "#{base_url}?#{params.to_param}" end |
#meeting_description(meeting, max_length = 120) ⇒ Object
Public: truncates the meeting description
meeting - a Decidim::Meeting instance max_length - a number to limit the length of the description
Returns the meeting's description truncated.
18 19 20 21 22 23 |
# File 'app/helpers/decidim/meetings/meetings_helper.rb', line 18 def meeting_description(meeting, max_length = 120) link = resource_locator(meeting).path description = CGI.unescapeHTML present(meeting).description tail = "... #{link_to(t("read_more", scope: "decidim.meetings"), link)}".html_safe CGI.unescapeHTML html_truncate(description, max_length: max_length, tail: tail) end |
#meeting_type_badge_css_class(type) ⇒ Object
Public: The css class applied based on the meeting type to
the css class.
type - The String type of the meeting.
Returns a String.
31 32 33 34 35 36 37 38 |
# File 'app/helpers/decidim/meetings/meetings_helper.rb', line 31 def meeting_type_badge_css_class(type) case type when "private", "withdraw" "alert" when "transparent" "secondary" end end |
#registration_code_help_text ⇒ Object
Public: Registration code generic help text.
Returns a String.
95 96 97 |
# File 'app/helpers/decidim/meetings/meetings_helper.rb', line 95 def registration_code_help_text t("registration_code_help_text", scope: "decidim.meetings.meetings.show") end |
#validation_state_for(registration) ⇒ Object
Public: Registration validation state as text.
registration - The registration that holds the validation code.
Returns a String.
104 105 106 107 108 109 110 |
# File 'app/helpers/decidim/meetings/meetings_helper.rb', line 104 def validation_state_for(registration) if registration.validated? t("validated", scope: "decidim.meetings.meetings.show.registration_state") else t("validation_pending", scope: "decidim.meetings.meetings.show.registration_state") end end |