spina-admin-conferences 1.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +101 -0
  4. data/Rakefile +40 -0
  5. data/app/assets/config/spina_admin_conferences_manifest.js +4 -0
  6. data/app/assets/javascripts/spina/admin/conferences/application.es6 +20 -0
  7. data/app/assets/javascripts/spina/admin/conferences/controllers/conference_events_form_controller.es6 +175 -0
  8. data/app/assets/javascripts/spina/admin/conferences/controllers/presentation_attachments_form_controller.es6 +175 -0
  9. data/app/assets/javascripts/spina/admin/conferences/controllers/select_options_controller.es6 +216 -0
  10. data/app/assets/stylesheets/spina/admin/conferences/application.sass +14 -0
  11. data/app/controllers/spina/admin/conferences/application_controller.rb +20 -0
  12. data/app/controllers/spina/admin/conferences/conferences_controller.rb +148 -0
  13. data/app/controllers/spina/admin/conferences/delegates_controller.rb +116 -0
  14. data/app/controllers/spina/admin/conferences/dietary_requirements_controller.rb +106 -0
  15. data/app/controllers/spina/admin/conferences/events_controller.rb +24 -0
  16. data/app/controllers/spina/admin/conferences/institutions_controller.rb +106 -0
  17. data/app/controllers/spina/admin/conferences/presentation_attachment_types_controller.rb +104 -0
  18. data/app/controllers/spina/admin/conferences/presentation_attachments_controller.rb +24 -0
  19. data/app/controllers/spina/admin/conferences/presentation_types_controller.rb +109 -0
  20. data/app/controllers/spina/admin/conferences/presentations_controller.rb +124 -0
  21. data/app/controllers/spina/admin/conferences/rooms_controller.rb +109 -0
  22. data/app/controllers/spina/admin/conferences/sessions_controller.rb +118 -0
  23. data/app/helpers/spina/admin/conferences/conferences_helper.rb +44 -0
  24. data/app/jobs/spina/admin/conferences/application_job.rb +11 -0
  25. data/app/jobs/spina/admin/conferences/delegate_import_job.rb +37 -0
  26. data/app/jobs/spina/admin/conferences/import_job.rb +26 -0
  27. data/app/jobs/spina/admin/conferences/presentation_import_job.rb +38 -0
  28. data/app/mailers/spina/admin/conferences/application_mailer.rb +13 -0
  29. data/app/models/spina/admin/conferences.rb +11 -0
  30. data/app/models/spina/admin/conferences/application_record.rb +14 -0
  31. data/app/models/spina/admin/conferences/conference.rb +152 -0
  32. data/app/models/spina/admin/conferences/date_part.rb +15 -0
  33. data/app/models/spina/admin/conferences/delegate.rb +89 -0
  34. data/app/models/spina/admin/conferences/dietary_requirement.rb +33 -0
  35. data/app/models/spina/admin/conferences/email_address_part.rb +21 -0
  36. data/app/models/spina/admin/conferences/event.rb +120 -0
  37. data/app/models/spina/admin/conferences/institution.rb +46 -0
  38. data/app/models/spina/admin/conferences/part.rb +20 -0
  39. data/app/models/spina/admin/conferences/presentation.rb +143 -0
  40. data/app/models/spina/admin/conferences/presentation_attachment.rb +27 -0
  41. data/app/models/spina/admin/conferences/presentation_attachment_type.rb +35 -0
  42. data/app/models/spina/admin/conferences/presentation_type.rb +60 -0
  43. data/app/models/spina/admin/conferences/room.rb +52 -0
  44. data/app/models/spina/admin/conferences/session.rb +56 -0
  45. data/app/models/spina/admin/conferences/time_part.rb +53 -0
  46. data/app/models/spina/admin/conferences/url_part.rb +21 -0
  47. data/app/validators/spina/admin/conferences/conference_date_validator.rb +20 -0
  48. data/app/validators/spina/admin/conferences/email_address_validator.rb +28 -0
  49. data/app/validators/spina/admin/conferences/finish_date_validator.rb +20 -0
  50. data/app/validators/spina/admin/conferences/finish_time_validator.rb +20 -0
  51. data/app/validators/spina/admin/conferences/http_url_validator.rb +28 -0
  52. data/app/views/layouts/spina/admin/conferences/conferences.html.haml +19 -0
  53. data/app/views/layouts/spina/admin/conferences/delegates.html.haml +10 -0
  54. data/app/views/layouts/spina/admin/conferences/dietary_requirements.html.haml +10 -0
  55. data/app/views/layouts/spina/admin/conferences/institutions.html.haml +17 -0
  56. data/app/views/layouts/spina/admin/conferences/presentation_attachment_types.html.haml +10 -0
  57. data/app/views/layouts/spina/admin/conferences/presentations.html.haml +10 -0
  58. data/app/views/spina/admin/conferences/application/_empty_list.html.haml +3 -0
  59. data/app/views/spina/admin/conferences/application/_errors.html.haml +11 -0
  60. data/app/views/spina/admin/conferences/application/_errors.js.erb +2 -0
  61. data/app/views/spina/admin/conferences/conferences/_conference.html.haml +9 -0
  62. data/app/views/spina/admin/conferences/conferences/_event_fields.html.haml +39 -0
  63. data/app/views/spina/admin/conferences/conferences/_event_row.html.haml +5 -0
  64. data/app/views/spina/admin/conferences/conferences/_form.html.haml +23 -0
  65. data/app/views/spina/admin/conferences/conferences/_form_conference_details.html.haml +29 -0
  66. data/app/views/spina/admin/conferences/conferences/_form_delegates.html.haml +12 -0
  67. data/app/views/spina/admin/conferences/conferences/_form_parts.html.haml +15 -0
  68. data/app/views/spina/admin/conferences/conferences/_form_presentation_types.html.haml +12 -0
  69. data/app/views/spina/admin/conferences/conferences/_form_presentations.html.haml +12 -0
  70. data/app/views/spina/admin/conferences/conferences/_form_rooms.html.haml +12 -0
  71. data/app/views/spina/admin/conferences/conferences/_form_structure.html.haml +19 -0
  72. data/app/views/spina/admin/conferences/conferences/_form_structure_item.html.haml +13 -0
  73. data/app/views/spina/admin/conferences/conferences/edit.html.haml +1 -0
  74. data/app/views/spina/admin/conferences/conferences/index.html.haml +18 -0
  75. data/app/views/spina/admin/conferences/conferences/new.html.haml +1 -0
  76. data/app/views/spina/admin/conferences/delegates/_delegate.html.haml +13 -0
  77. data/app/views/spina/admin/conferences/delegates/_form.html.haml +23 -0
  78. data/app/views/spina/admin/conferences/delegates/_form_conferences.html.haml +14 -0
  79. data/app/views/spina/admin/conferences/delegates/_form_delegate_details.html.haml +38 -0
  80. data/app/views/spina/admin/conferences/delegates/_form_presentations.html.haml +12 -0
  81. data/app/views/spina/admin/conferences/delegates/edit.html.haml +1 -0
  82. data/app/views/spina/admin/conferences/delegates/index.html.haml +23 -0
  83. data/app/views/spina/admin/conferences/delegates/new.html.haml +1 -0
  84. data/app/views/spina/admin/conferences/dietary_requirements/_dietary_requirement.html.haml +6 -0
  85. data/app/views/spina/admin/conferences/dietary_requirements/_form.html.haml +23 -0
  86. data/app/views/spina/admin/conferences/dietary_requirements/_form_delegates.html.haml +12 -0
  87. data/app/views/spina/admin/conferences/dietary_requirements/_form_dietary_requirement_details.html.haml +9 -0
  88. data/app/views/spina/admin/conferences/dietary_requirements/edit.html.haml +1 -0
  89. data/app/views/spina/admin/conferences/dietary_requirements/index.html.haml +15 -0
  90. data/app/views/spina/admin/conferences/dietary_requirements/new.html.haml +1 -0
  91. data/app/views/spina/admin/conferences/events/new.js.erb +27 -0
  92. data/app/views/spina/admin/conferences/institutions/_form.html.haml +23 -0
  93. data/app/views/spina/admin/conferences/institutions/_form_delegates.html.haml +12 -0
  94. data/app/views/spina/admin/conferences/institutions/_form_institution_details.html.haml +35 -0
  95. data/app/views/spina/admin/conferences/institutions/_form_rooms.html.haml +12 -0
  96. data/app/views/spina/admin/conferences/institutions/_institution.html.haml +7 -0
  97. data/app/views/spina/admin/conferences/institutions/edit.html.haml +1 -0
  98. data/app/views/spina/admin/conferences/institutions/index.html.haml +16 -0
  99. data/app/views/spina/admin/conferences/institutions/new.html.haml +1 -0
  100. data/app/views/spina/admin/conferences/presentation_attachment_types/_form.html.haml +23 -0
  101. data/app/views/spina/admin/conferences/presentation_attachment_types/_presentation_attachment_type.html.haml +6 -0
  102. data/app/views/spina/admin/conferences/presentation_attachment_types/edit.html.haml +1 -0
  103. data/app/views/spina/admin/conferences/presentation_attachment_types/index.html.haml +15 -0
  104. data/app/views/spina/admin/conferences/presentation_attachment_types/new.html.haml +1 -0
  105. data/app/views/spina/admin/conferences/presentation_attachments/new.js.erb +21 -0
  106. data/app/views/spina/admin/conferences/presentation_types/_form.html.haml +23 -0
  107. data/app/views/spina/admin/conferences/presentation_types/_form_presentation_type_details.html.haml +20 -0
  108. data/app/views/spina/admin/conferences/presentation_types/_form_presentations.html.haml +12 -0
  109. data/app/views/spina/admin/conferences/presentation_types/_form_sessions.html.haml +12 -0
  110. data/app/views/spina/admin/conferences/presentation_types/_presentation_type.html.haml +8 -0
  111. data/app/views/spina/admin/conferences/presentation_types/edit.html.haml +1 -0
  112. data/app/views/spina/admin/conferences/presentation_types/index.html.haml +17 -0
  113. data/app/views/spina/admin/conferences/presentation_types/new.html.haml +1 -0
  114. data/app/views/spina/admin/conferences/presentations/_attachment_fields.html.haml +27 -0
  115. data/app/views/spina/admin/conferences/presentations/_attachment_row.html.haml +2 -0
  116. data/app/views/spina/admin/conferences/presentations/_form.html.haml +23 -0
  117. data/app/views/spina/admin/conferences/presentations/_form_presentation_details.html.haml +55 -0
  118. data/app/views/spina/admin/conferences/presentations/_form_presenters.html.haml +12 -0
  119. data/app/views/spina/admin/conferences/presentations/_presentation.html.haml +11 -0
  120. data/app/views/spina/admin/conferences/presentations/edit.html.haml +1 -0
  121. data/app/views/spina/admin/conferences/presentations/index.html.haml +23 -0
  122. data/app/views/spina/admin/conferences/presentations/new.html.haml +1 -0
  123. data/app/views/spina/admin/conferences/rooms/_form.html.haml +23 -0
  124. data/app/views/spina/admin/conferences/rooms/_form_presentations.html.haml +12 -0
  125. data/app/views/spina/admin/conferences/rooms/_form_room_details.html.haml +18 -0
  126. data/app/views/spina/admin/conferences/rooms/_room.html.haml +8 -0
  127. data/app/views/spina/admin/conferences/rooms/edit.html.haml +1 -0
  128. data/app/views/spina/admin/conferences/rooms/index.html.haml +17 -0
  129. data/app/views/spina/admin/conferences/rooms/new.html.haml +1 -0
  130. data/app/views/spina/admin/conferences/sessions/_form.html.haml +23 -0
  131. data/app/views/spina/admin/conferences/sessions/_form_presentations.html.haml +12 -0
  132. data/app/views/spina/admin/conferences/sessions/_form_session_details.html.haml +23 -0
  133. data/app/views/spina/admin/conferences/sessions/_session.html.haml +8 -0
  134. data/app/views/spina/admin/conferences/sessions/edit.html.haml +1 -0
  135. data/app/views/spina/admin/conferences/sessions/index.html.haml +17 -0
  136. data/app/views/spina/admin/conferences/sessions/new.html.haml +1 -0
  137. data/app/views/spina/admin/hooks/conferences/_head.html.haml +2 -0
  138. data/app/views/spina/admin/hooks/conferences/_primary_navigation.html.haml +20 -0
  139. data/app/views/spina/admin/hooks/conferences/_settings_secondary_navigation.html.haml +4 -0
  140. data/app/views/spina/admin/partables/admin/conferences/date_parts/_form.html.haml +5 -0
  141. data/app/views/spina/admin/partables/admin/conferences/email_address_parts/_form.html.haml +5 -0
  142. data/app/views/spina/admin/partables/admin/conferences/time_parts/_form.html.haml +7 -0
  143. data/app/views/spina/admin/partables/admin/conferences/url_parts/_form.html.haml +5 -0
  144. data/config/initializers/assets.rb +13 -0
  145. data/config/initializers/types.rb +13 -0
  146. data/config/locales/en.yml +354 -0
  147. data/config/routes.rb +27 -0
  148. data/db/migrate/20180907141228_create_spina_dates.rb +11 -0
  149. data/db/migrate/20180907141229_create_spina_email_addresses.rb +11 -0
  150. data/db/migrate/20180907141230_create_spina_urls.rb +11 -0
  151. data/db/migrate/20180907141231_create_spina_conferences_institutions.rb +12 -0
  152. data/db/migrate/20180907141232_create_spina_conferences_delegates.rb +15 -0
  153. data/db/migrate/20180907141234_create_spina_conferences_dietary_requirements.rb +11 -0
  154. data/db/migrate/20180907141235_create_spina_conferences_conferences.rb +12 -0
  155. data/db/migrate/20180907141236_create_spina_conferences_presentation_types.rb +13 -0
  156. data/db/migrate/20180907141238_create_join_table_spina_conferences_conference_delegate.rb +7 -0
  157. data/db/migrate/20180907141239_create_join_table_spina_conferences_delegate_presentation.rb +7 -0
  158. data/db/migrate/20180907141240_create_join_table_spina_conferences_delegate_dietary_requirement.rb +7 -0
  159. data/db/migrate/20180907141242_add_type_to_spina_pages.rb +7 -0
  160. data/db/migrate/20180907141243_create_spina_conferences_conference_page_parts.rb +14 -0
  161. data/db/migrate/20180914121905_add_logo_ref_to_spina_conferences_institutions.rb +7 -0
  162. data/db/migrate/20180916135431_create_spina_conferences_rooms.rb +13 -0
  163. data/db/migrate/20180916135432_create_spina_conferences_room_possessions.rb +10 -0
  164. data/db/migrate/20180916135433_create_spina_conferences_room_uses.rb +10 -0
  165. data/db/migrate/20180916135434_create_spina_conferences_presentations.rb +15 -0
  166. data/db/migrate/20181009122503_create_spina_times.rb +11 -0
  167. data/db/migrate/20181009130631_rename_spina_page_parts.rb +10 -0
  168. data/db/migrate/20181012190811_rename_spina_conferences_page_parts.rb +10 -0
  169. data/db/migrate/20181012213049_change_start_time_in_spina_conferences_conferences.rb +15 -0
  170. data/db/migrate/20181012214813_rename_start_time_in_spina_conferences_conferences.rb +7 -0
  171. data/db/migrate/20181017155705_add_dependent_option_to_foreign_keys.rb +36 -0
  172. data/db/migrate/20190408131354_change_spina_resources.rb +56 -0
  173. data/db/migrate/20190622131423_create_spina_conferences_parts.rb +12 -0
  174. data/db/migrate/20190701174807_remove_spina_conference_pages.rb +199 -0
  175. data/db/migrate/20190704135524_add_constraints_to_columns.rb +24 -0
  176. data/db/migrate/20200126034441_create_spina_conferences_presentation_attachment_types.rb +11 -0
  177. data/db/migrate/20200126213718_create_spina_conferences_presentation_attachments.rb +19 -0
  178. data/db/migrate/20200420104603_create_spina_conferences_dietary_requirement_name_translations.rb +19 -0
  179. data/db/migrate/20200420104740_create_spina_conferences_institution_name_and_city_translations.rb +20 -0
  180. data/db/migrate/20200420105057_create_spina_conferences_presentation_title_and_abstract_translations.rb +20 -0
  181. data/db/migrate/20200420105144_create_spina_conferences_presentation_attachment_type_name_translations.rb +20 -0
  182. data/db/migrate/20200420105201_create_spina_conferences_presentation_type_name_translations.rb +19 -0
  183. data/db/migrate/20200420105458_create_spina_conferences_room_building_and_number_translations.rb +20 -0
  184. data/db/migrate/20200420110407_move_attributes_to_translation_tables.rb +161 -0
  185. data/db/migrate/20200420120706_remove_name_from_spina_conferences_dietary_requirements.rb +7 -0
  186. data/db/migrate/20200420120759_remove_name_and_city_from_spina_conferences_institutions.rb +8 -0
  187. data/db/migrate/20200420120946_remove_title_and_abstract_from_spina_conferences_presentations.rb +8 -0
  188. data/db/migrate/20200420121310_remove_name_from_spina_conferences_presentation_attachment_types.rb +7 -0
  189. data/db/migrate/20200420121321_remove_name_from_spina_conferences_presentation_types.rb +7 -0
  190. data/db/migrate/20200420121443_remove_building_and_number_from_spina_conferences_rooms.rb +8 -0
  191. data/db/migrate/20200502133408_create_spina_conferences_conference_name_translations.rb +19 -0
  192. data/db/migrate/20200502183409_set_name_for_spina_conferences_conferences.rb +47 -0
  193. data/db/migrate/20200502183410_remove_institution_from_spina_conferences_conferences.rb +8 -0
  194. data/db/migrate/20200502183719_remove_spina_conferences_room_possessions.rb +60 -0
  195. data/db/migrate/20200503230732_rename_spina_conferences_room_uses.rb +8 -0
  196. data/db/migrate/20200510125131_create_spina_conferences_session_name_translations.rb +19 -0
  197. data/db/migrate/20200802165242_create_spina_conferences_events.rb +13 -0
  198. data/db/migrate/20200802184921_create_spina_conferences_event_name_description_and_location_translations.rb +21 -0
  199. data/db/migrate/20200911161632_update_spina_conferences_parts.rb +23 -0
  200. data/db/migrate/20200911161651_update_spina_parts.rb +37 -0
  201. data/db/migrate/20200911161726_move_presentation_parts.rb +101 -0
  202. data/db/migrate/20200911161739_move_conference_parts.rb +219 -0
  203. data/db/migrate/20201002122517_remove_spina_conferences_conference_page_parts.rb +14 -0
  204. data/db/migrate/20201007125625_add_timestamps_to_spina_conferences_parts.rb +9 -0
  205. data/lib/spina/admin/conferences.rb +20 -0
  206. data/lib/spina/admin/conferences/engine.rb +26 -0
  207. data/lib/spina/admin/conferences/migration/renaming.rb +81 -0
  208. data/lib/spina/admin/conferences/railtie.rb +34 -0
  209. data/lib/spina/admin/conferences/types/interval_type.rb +29 -0
  210. data/lib/spina/admin/conferences/version.rb +10 -0
  211. data/lib/tasks/spina/admin/conferences_tasks.rake +4 -0
  212. metadata +561 -0
@@ -0,0 +1,17 @@
1
+ - content_for(:header_actions) do
2
+ = link_to new_admin_conferences_room_path, class: %w[button button-primary], style: 'margin-right: 0' do
3
+ = icon 'plus'
4
+ = t '.new'
5
+
6
+ .well
7
+ .table-container
8
+ %table.table
9
+ %thead
10
+ %tr
11
+ %th= Spina::Admin::Conferences::Room.human_attribute_name :institution
12
+ %th= Spina::Admin::Conferences::Room.human_attribute_name :building
13
+ %th= Spina::Admin::Conferences::Room.human_attribute_name :number
14
+ %th
15
+
16
+ %tbody
17
+ = render @rooms.any? ? @rooms : 'empty_list', message: t('.no_rooms')
@@ -0,0 +1,23 @@
1
+ - if @session.errors.any?
2
+ - content_for :notifications do
3
+ = render 'errors', errors: @session.errors
4
+
5
+ = form_for @session, remote: true, html: { autocomplete: 'off' } do |f|
6
+ %header#header
7
+ = render partial: 'spina/admin/shared/breadcrumbs'
8
+
9
+ #header_actions
10
+ %button.button.button-primary{ type: 'submit' }
11
+ = icon 'check'
12
+ = t '.save'
13
+
14
+ = link_to t('spina.cancel'), admin_conferences_sessions_path, class: 'button', style: 'margin-right: 0'
15
+
16
+ %nav#secondary.tabs
17
+ %ul
18
+ - @tabs.each_with_index do |tab, i|
19
+ %li{ class: ('active'if i == 0)}
20
+ = link_to t(".#{tab}"), "##{tab}"
21
+
22
+ - @tabs.each do |tab|
23
+ = render "form_#{tab}", f: f
@@ -0,0 +1,12 @@
1
+ #presentations.tab-content.well
2
+ .table-container
3
+ %table.table
4
+ %thead
5
+ %tr
6
+ %th= Spina::Admin::Conferences::Presentation.human_attribute_name :conference
7
+ %th= Spina::Admin::Conferences::Presentation.human_attribute_name :title
8
+ %th= Spina::Admin::Conferences::Presentation.human_attribute_name :presenters
9
+ %th
10
+
11
+ %tbody
12
+ = render @session.presentations.any? ? @session.presentations : 'empty_list', message: t('spina.admin.conferences.presentations.index.no_presentations')
@@ -0,0 +1,23 @@
1
+ #session_details.tab-content.active
2
+ .well
3
+ .horizontal-form
4
+ .horizontal-form-group
5
+ .horizontal-form-label= Spina::Admin::Conferences::Session.human_attribute_name :name
6
+ .horizontal-form-content= f.text_field :name, placeholder: Spina::Admin::Conferences::Session.human_attribute_name(:name), required: true
7
+
8
+ .horizontal-form-group
9
+ .horizontal-form-label= Spina::Admin::Conferences::Session.human_attribute_name :presentation_type
10
+ .horizontal-form-content
11
+ .input-group{ data: { controller: 'select-options', select_options: { record_values: @conferences } } }
12
+ .select-dropdown= select_tag :admin_conferences_conference_id, options_from_collection_for_select(Spina::Admin::Conferences::Conference.all, :id, :name, (@session.conference.id unless @session.conference.blank?)), include_blank: true, required: true, data: { action: 'select-options#setVisibility', select_options_target: 'select', text_key: 'name' }
13
+ .select-dropdown= f.collection_select :presentation_type_id, @session.conference.present? ? @session.conference.presentation_types : Spina::Admin::Conferences::Conference.first.presentation_types, :id, :name, { include_blank: true }, required: true, data: { select_options_target: 'select', text_key: 'name', key_path: 'presentation_types' }
14
+
15
+ .horizontal-form-group
16
+ .horizontal-form-label= Spina::Admin::Conferences::Session.human_attribute_name :room
17
+ .horizontal-form-content
18
+ .input-group{ data: { controller: 'select-options', select_options: { record_values: @institutions } } }
19
+ .select-dropdown= select_tag :admin_conferences_institution_id, options_from_collection_for_select(Spina::Admin::Conferences::Institution.all, :id, :name, (@session.institution.id unless @session.institution.blank?)), include_blank: true, required: true, data: { action: 'select-options#setVisibility', select_options_target: 'select', text_key: 'name' }
20
+ .select-dropdown= f.collection_select :room_id, @session.institution.present? ? @session.institution.rooms : Spina::Admin::Conferences::Institution.first.rooms, :id, :name, { include_blank: true }, required: true, data: { select_options_target: 'select', text_key: 'name', key_path: 'rooms' }
21
+
22
+ - unless @session.new_record?
23
+ .pull-right= link_to t('spina.permanently_delete'), admin_conferences_session_path(@session), method: :delete, remote: true, data: { confirm: t('.delete_confirmation', session: @session.name) }, class: %w[button button-link button-danger]
@@ -0,0 +1,8 @@
1
+ %tr{ data: { session_id: session.id } }
2
+ %td= session.name
3
+ %td= session.presentation_type_name
4
+ %td= session.room_name
5
+ %td.align-right
6
+ = link_to edit_admin_conferences_session_path(session), class: %w[button button-small button-link] do
7
+ = icon 'pencil-outline'
8
+ = t 'spina.edit'
@@ -0,0 +1,17 @@
1
+ - content_for(:header_actions) do
2
+ = link_to new_admin_conferences_session_path, class: %w[button button-primary], style: 'margin-right: 0' do
3
+ = icon 'plus'
4
+ = t '.new'
5
+
6
+ .well
7
+ .table-container
8
+ %table.table
9
+ %thead
10
+ %tr
11
+ %th= Spina::Admin::Conferences::Session.human_attribute_name :name
12
+ %th= Spina::Admin::Conferences::Session.human_attribute_name :presentation_type
13
+ %th= Spina::Admin::Conferences::Session.human_attribute_name :room
14
+ %th
15
+
16
+ %tbody
17
+ = render @sessions.any? ? @sessions : 'empty_list', message: t('.no_sessions')
@@ -0,0 +1,2 @@
1
+ = stylesheet_link_tag 'spina/admin/conferences/application', media: 'all', data: { turbolinks_track: true }
2
+ = javascript_include_tag 'spina/admin/conferences/application'
@@ -0,0 +1,20 @@
1
+ %li{ class: ('active' if %w[conferences delegates presentations dietary_requirements presentation_types institutions rooms].include? controller_name) }
2
+ = link_to admin_conferences_presentations_path do
3
+ = icon('comment')
4
+ = t("spina.admin.conferences.title")
5
+ = icon('caret-right')
6
+
7
+ %ul
8
+ %li{ class: ('active' if %w[institutions rooms].include? controller_name) }
9
+ = link_to Spina::Admin::Conferences::Institution.model_name.human(count: 0), spina.admin_conferences_institutions_path
10
+ %li{ class: ('active' if %w[conferences presentation_types sessions].include? controller_name) }
11
+ = link_to Spina::Admin::Conferences::Conference.model_name.human(count: 0), spina.admin_conferences_conferences_path
12
+ %li{ class: ('active' if %w[delegates dietary_requirements].include? controller_name) }
13
+ = link_to Spina::Admin::Conferences::Delegate.model_name.human(count: 0), spina.admin_conferences_delegates_path
14
+ %li{ class: ('active' if %w[presentations].include? controller_name) }
15
+ = link_to Spina::Admin::Conferences::Presentation.model_name.human(count: 0), spina.admin_conferences_presentations_path
16
+
17
+ %li
18
+ = link_to '#', class: 'back-to-main-menu' do
19
+ = icon('caret-left')
20
+ =t 'spina.main_menu'
@@ -0,0 +1,4 @@
1
+ %li{ class: ('active' if %w[dietary_requirements].include? controller_name) }
2
+ = link_to Spina::Admin::Conferences::DietaryRequirement.model_name.human(count: 0), spina.admin_conferences_dietary_requirements_path
3
+ %li{ class: ('active' if %w[presentation_attachment_types].include? controller_name) }
4
+ = link_to Spina::Admin::Conferences::PresentationAttachmentType.model_name.human(count: 0), spina.admin_conferences_presentation_attachment_types_path
@@ -0,0 +1,5 @@
1
+ .horizontal-form-label
2
+ = f.object.title
3
+ .horizontal-form-content
4
+ = f.fields_for :partable, f.object.partable do |ff|
5
+ = ff.date_field :content, class: 'conference-datepicker'
@@ -0,0 +1,5 @@
1
+ .horizontal-form-label
2
+ = f.object.title
3
+ .horizontal-form-content
4
+ = f.fields_for :partable, f.object.partable do |ff|
5
+ = ff.email_field :content
@@ -0,0 +1,7 @@
1
+ .horizontal-form-label
2
+ = f.object.title
3
+ = f.fields_for :partable, f.object.partable do |ff|
4
+ .horizontal-form-content
5
+ .input-group
6
+ = ff.date_field :date, class: 'conference-datepicker'
7
+ = ff.time_field :time
@@ -0,0 +1,5 @@
1
+ .horizontal-form-label
2
+ = f.object.title
3
+ .horizontal-form-content
4
+ = f.fields_for :partable, f.object.partable do |ff|
5
+ = ff.url_field :content
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Be sure to restart your server when you modify this file.
4
+
5
+ # Add additional assets to the asset load path.
6
+ # Rails.application.config.assets.paths << Emoji.images_path
7
+ # Add Yarn node_modules folder to the asset load path.
8
+ Rails.application.config.assets.paths << Spina::Admin::Conferences::Engine.root.join('node_modules')
9
+
10
+ # Precompile additional assets.
11
+ # application.js, application.css, and all non-JS/CSS in the app/assets
12
+ # folder are already added.
13
+ # Rails.application.config.assets.precompile += %w( admin.js admin.css )
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spina/admin/conferences/types/interval_type'
4
+
5
+ ActiveRecord::Type.register :interval, Spina::Admin::Conferences::IntervalType, adapter: :postgresql
6
+
7
+ ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.class_eval do
8
+ alias_method :configure_connection_without_interval, :configure_connection
9
+ define_method :configure_connection do
10
+ configure_connection_without_interval
11
+ execute 'SET IntervalStyle = iso_8601', 'SCHEMA'
12
+ end
13
+ end
@@ -0,0 +1,354 @@
1
+ # Files in the config/locales directory are used for internationalization
2
+ # and are automatically loaded by Rails. If you want to use locales other
3
+ # than English, add the necessary files in this directory.
4
+ #
5
+ # To use the locales, use `I18n.t`:
6
+ #
7
+ # I18n.t 'hello'
8
+ #
9
+ # In views, this is aliased to just `t`:
10
+ #
11
+ # <%= t('hello') %>
12
+ #
13
+ # To use a different locale, set it with `I18n.locale`:
14
+ #
15
+ # I18n.locale = :es
16
+ #
17
+ # This would use the information in config/locales/es.yml.
18
+ #
19
+ # The following keys must be escaped otherwise they will not be retrieved by
20
+ # the default I18n backend:
21
+ #
22
+ # true, false, on, off, yes, no
23
+ #
24
+ # Instead, surround them with single quotes.
25
+ #
26
+ # en:
27
+ # 'true': 'foo'
28
+ #
29
+ # To learn more, please read the Rails Internationalization guide
30
+ # available at http://guides.rubyonrails.org/i18n.html.
31
+
32
+ en:
33
+ spina:
34
+ show: Show
35
+ languages:
36
+ en-GB: British English
37
+ email: Email
38
+ media_library:
39
+ images: Images # This translation is apparently not provided by Spina for some reason
40
+ images:
41
+ delete: Delete # Ditto
42
+ admin:
43
+ conferences:
44
+ title: Conferences
45
+ conferences:
46
+ index:
47
+ new: New conference
48
+ no_conferences: There are no conferences
49
+ import: Import CSV
50
+ new:
51
+ new: New conference
52
+ create:
53
+ new: New conference
54
+ saved: Conference saved
55
+ update:
56
+ saved: Conference saved
57
+ destroy:
58
+ destroyed: Conference deleted
59
+ form:
60
+ save: Save conference
61
+ conference_details: Conference details
62
+ parts: Parts
63
+ delegates: Delegates
64
+ presentations: Presentations
65
+ presentation_types: Presentation types
66
+ rooms: Rooms
67
+ form_conference_details:
68
+ delete_confirmation:
69
+ "Are you sure you want to delete the conference <strong>%{name}</strong>?"
70
+ multiple_rooms_selection_instructions_html:
71
+ "Select multiple rooms by holding <kbd>⇧</kbd> for a continuous selection, or, for a discontinous
72
+ selection, <kbd>⌘</kbd> on Mac, or <kbd>Ctrl</kbd> on Windows and Linux"
73
+ delegates:
74
+ index:
75
+ new: New delegate
76
+ no_delegates: There are no delegates
77
+ import: Import CSV
78
+ new:
79
+ new: New delegate
80
+ create:
81
+ new: New delegate
82
+ saved: Delegate saved
83
+ update:
84
+ saved: Delegate saved
85
+ destroy:
86
+ destroyed: Delegate deleted
87
+ form:
88
+ save: Save delegate
89
+ delegate_details: Delegate details
90
+ conferences: Conferences
91
+ presentations: Presentations
92
+ form_delegate_details:
93
+ delete_confirmation: "Are you sure you want to delete the delegate <strong>%{delegate}</strong>?"
94
+ multiple_dietary_requirements_selection_instructions_html:
95
+ "Select multiple dietary requirements with <kbd>⌘</kbd> and <kbd>⇧</kbd> on Mac, or <kbd>⌃</kbd> and
96
+ <kbd>⇧</kbd> on Windows and Linux"
97
+ multiple_conferences_selection_instructions_html:
98
+ "Select multiple conferences with <kbd>⌘</kbd> and <kbd>⇧</kbd> on Mac, or <kbd>⌃</kbd> and <kbd>⇧</kbd>
99
+ on Windows and Linux"
100
+ presenters:
101
+ new: New presenter
102
+ save: Save presenter
103
+ delete_confirmation: "Are you sure you want to delete the presenter <strong>%{presenter}</strong>?"
104
+ no_presenters: There are no presenters
105
+ presenter_details: Presenter details
106
+ conferences: Conferences
107
+ presentations: Presentations
108
+ presentations:
109
+ index:
110
+ new: New presentation
111
+ no_presentations: There are no presentations
112
+ import: Import CSV
113
+ new:
114
+ new: New presentation
115
+ create:
116
+ new: New presentation
117
+ saved: Presentation saved
118
+ update:
119
+ saved: Presentation saved
120
+ destroy:
121
+ destroyed: Presentation deleted
122
+ form:
123
+ save: Save presentation
124
+ presentation_details: Presentation details
125
+ presenters: Presenters
126
+ form_presentation_details:
127
+ delete_confirmation: "Are you sure you want to delete the presentation <strong>%{presentation}</strong>?"
128
+ start_time_instructions: Enter in 24-hour format using a colon as the divider
129
+ multiple_presenters_selection_instructions_html:
130
+ "Select multiple presenters by holding <kbd>⇧</kbd> for a continuous selection, or, for a discontinous
131
+ selection, <kbd>⌘</kbd> on Mac, or <kbd>Ctrl</kbd> on Windows and Linux"
132
+ presentation_types:
133
+ index:
134
+ new: New presentation type
135
+ no_presentation_types: There are no presentation types
136
+ import: Import CSV
137
+ new:
138
+ new: New presentation type
139
+ create:
140
+ new: New presentation type
141
+ saved: Presentation type saved
142
+ update:
143
+ saved: Presentation type saved
144
+ destroy:
145
+ destroyed: Presentation type deleted
146
+ form:
147
+ save: Save presentation type
148
+ presentation_type_details: Presentation type details
149
+ presentations: Presentations
150
+ sessions: Sessions
151
+ form_presentation_type_details:
152
+ delete_confirmation:
153
+ "Are you sure you want to delete the presentation type <strong>%{presentation_type}</strong>?"
154
+ duration_instructions: Enter in minutes
155
+ dietary_requirements:
156
+ index:
157
+ new: New dietary requirement
158
+ no_dietary_requirements: There are no dietary requirements
159
+ import: Import CSV
160
+ new:
161
+ new: New dietary requirement
162
+ create:
163
+ new: New dietary requirement
164
+ saved: Dietary requirement saved
165
+ update:
166
+ saved: Dietary requirement saved
167
+ destroy:
168
+ destroyed: Dietary requirement deleted
169
+ form:
170
+ save: Save dietary requirement
171
+ dietary_requirement_details: Dietary requirement details
172
+ delegates: Delegates
173
+ form_dietary_requirement_details:
174
+ delete_confirmation:
175
+ "Are you sure you want to delete the dietary requirement <strong>%{dietary_requirement}</strong>?"
176
+ presentation_attachment_types:
177
+ index:
178
+ new: New presentation attachment type
179
+ no_presentation_attachment_types: There are no presentation attachment types
180
+ new:
181
+ new: New presentation attachment type
182
+ create:
183
+ new: New presentation attachment type
184
+ saved: Presentation attachment type saved
185
+ update:
186
+ saved: Presentation attachment type saved
187
+ destroy:
188
+ destroyed: Presentation attachment type deleted
189
+ form:
190
+ save: Save presentation attachment type
191
+ delete_confirmation:
192
+ "Are you sure you want to delete the presentation attachment type
193
+ <strong>%{presentation_attachment_type}</strong>?"
194
+ institutions:
195
+ index:
196
+ new: New institution
197
+ no_institutions: There are no institutions
198
+ import: Import CSV
199
+ new:
200
+ new: New institution
201
+ create:
202
+ new: New institution
203
+ saved: Institution saved
204
+ update:
205
+ saved: Institution saved
206
+ destroy:
207
+ destroyed: Institution deleted
208
+ form:
209
+ save: Save institution
210
+ institution_details: Institution details
211
+ rooms: Rooms
212
+ conferences: Conferences
213
+ delegates: Delegates
214
+ form_institution_details:
215
+ delete_confirmation: "Are you sure you want to delete the institution <strong>%{institution}</strong>?"
216
+ rooms:
217
+ index:
218
+ new: New room
219
+ no_rooms: There are no rooms
220
+ import: Import CSV
221
+ new:
222
+ new: New room
223
+ create:
224
+ new: New room
225
+ saved: Room saved
226
+ update:
227
+ saved: Room saved
228
+ destroy:
229
+ destroyed: Room deleted
230
+ form:
231
+ save: Save room
232
+ room_details: Room details
233
+ presentations: Presentations
234
+ form_room_details:
235
+ delete_confirmation: "Are you sure you want to delete the room <strong>%{room}</strong>?"
236
+ sessions:
237
+ index:
238
+ new: New session
239
+ no_sessions: There are no sessions
240
+ new:
241
+ new: New session
242
+ create:
243
+ new: New session
244
+ saved: Session saved
245
+ update:
246
+ saved: Session saved
247
+ destroy:
248
+ destroyed: Session deleted
249
+ form:
250
+ save: Save session
251
+ session_details: Session details
252
+ presentations: Presentations
253
+ form_session_details:
254
+ delete_confirmation: "Are you sure you want to delete the session <strong>%{session}</strong>?"
255
+ activerecord:
256
+ models:
257
+ spina/admin/conferences/conference:
258
+ one: Conference
259
+ other: Conferences
260
+ spina/admin/conferences/event:
261
+ one: Event
262
+ other: Events
263
+ spina/admin/conferences/delegate:
264
+ one: Delegate
265
+ other: Delegates
266
+ spina/admin/conferences/presentation:
267
+ one: Presentation
268
+ other: Presentations
269
+ spina/admin/conferences/presentation_attachment:
270
+ one: Presentation attachment
271
+ other: Presentation attachments
272
+ spina/admin/conferences/presentation_type:
273
+ one: Presentation type
274
+ other: Presentation types
275
+ spina/admin/conferences/dietary_requirement:
276
+ one: Dietary requirement
277
+ other: Dietary requirements
278
+ spina/admin/conferences/presentation_attachment_type:
279
+ one: Presentation attachment type
280
+ other: Presentation attachment types
281
+ spina/admin/conferences/institution:
282
+ one: Institution
283
+ other: Institutions
284
+ spina/admin/conferences/room:
285
+ one: Room
286
+ other: Rooms
287
+ spina/admin/conferences/session:
288
+ one: Session
289
+ other: Sessions
290
+ attributes:
291
+ spina/admin/conferences/conference:
292
+ name: Name
293
+ start_date: Start date
294
+ finish_date: Finish date
295
+ events: Events
296
+ spina/admin/conferences/event:
297
+ name: Name
298
+ location: Location
299
+ start_time: Start time
300
+ finish_time: Finish time
301
+ description: Description
302
+ spina/admin/conferences/delegate:
303
+ first_name: First name
304
+ last_name: Last name
305
+ full_name: "%{first_name} %{last_name}"
306
+ reversed_name: "%{last_name}, %{first_name}"
307
+ name_and_institution: "%{name}, %{institution}"
308
+ name: Name
309
+ institution: Institution
310
+ email_address: Email address
311
+ url: Website
312
+ conferences: Conferences
313
+ dietary_requirements: Dietary requirements
314
+ spina/admin/conferences/presentation:
315
+ title: Title
316
+ date: Date
317
+ start_time: Start time
318
+ abstract: Abstract
319
+ room_type: Type
320
+ presenters: Presenters
321
+ conference: Conference
322
+ session: Session
323
+ attachments: Attachments
324
+ spina/admin/conferences/presentation_attachment:
325
+ type: Type
326
+ spina/admin/conferences/presentation_type:
327
+ name: Name
328
+ duration: Duration
329
+ spina/admin/conferences/dietary_requirement:
330
+ name: Name
331
+ spina/admin/conferences/presentation_attachment_type:
332
+ name: Name
333
+ spina/admin/conferences/institution:
334
+ name: Name
335
+ city: City
336
+ logo: Logo
337
+ spina/admin/conferences/room:
338
+ building: Building
339
+ number: Number
340
+ institution: Institution
341
+ name: "%{building} %{number}"
342
+ spina/admin/conferences/session:
343
+ name: Name
344
+ presentation_type: Presentation type
345
+ room: Room
346
+ errors:
347
+ messages:
348
+ outside_conference: is not during the selected conference
349
+ invalid_email_address: is not an email address
350
+ invalid_time: is not a time
351
+ invalid_date: is not a date
352
+ before_start_date: is before start date
353
+ before_start_time: is before start time
354
+ invalid_http_https_url: is not a valid HTTP or HTTPS URL