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,106 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spina
4
+ module Admin
5
+ module Conferences
6
+ # Controller for {DietaryRequirement} objects.
7
+ # @see DietaryRequirement
8
+ class DietaryRequirementsController < ApplicationController
9
+ before_action :set_dietary_requirement, only: %i[edit update destroy]
10
+ before_action :set_breadcrumb
11
+ before_action :set_tabs
12
+
13
+ # @!group Actions
14
+
15
+ # Renders a list of dietary requirements.
16
+ # @return [void]
17
+ def index
18
+ @dietary_requirements = DietaryRequirement.sorted
19
+ end
20
+
21
+ # Renders a form for a new dietary requirement.
22
+ # @return [void]
23
+ def new
24
+ @dietary_requirement = DietaryRequirement.new
25
+ add_breadcrumb t('.new')
26
+ end
27
+
28
+ # Renders a form for an existing dietary requirement.
29
+ # @return [void]
30
+ def edit
31
+ add_breadcrumb @dietary_requirement.name
32
+ end
33
+
34
+ # Creates a dietary requirement.
35
+ # @return [void]
36
+ def create # rubocop:disable Metrics/MethodLength
37
+ @dietary_requirement = DietaryRequirement.new dietary_requirement_params
38
+
39
+ if @dietary_requirement.save
40
+ redirect_to admin_conferences_dietary_requirements_path, success: t('.saved')
41
+ else
42
+ respond_to do |format|
43
+ format.html do
44
+ add_breadcrumb t('.new')
45
+ render :new
46
+ end
47
+ format.js { render partial: 'errors', locals: { errors: @dietary_requirement.errors } }
48
+ end
49
+ end
50
+ end
51
+
52
+ # Updates a dietary requirement.
53
+ # @return [void]
54
+ def update # rubocop:disable Metrics/MethodLength
55
+ if @dietary_requirement.update(dietary_requirement_params)
56
+ redirect_to admin_conferences_dietary_requirements_path, success: t('.saved')
57
+ else
58
+ respond_to do |format|
59
+ format.html do
60
+ add_breadcrumb @dietary_requirement.name
61
+ render :edit
62
+ end
63
+ format.js { render partial: 'errors', locals: { errors: @dietary_requirement.errors } }
64
+ end
65
+ end
66
+ end
67
+
68
+ # Destroys a dietary requirement.
69
+ # @return [void]
70
+ def destroy # rubocop:disable Metrics/MethodLength
71
+ if @dietary_requirement.destroy
72
+ redirect_to admin_conferences_dietary_requirements_path, success: t('.destroyed')
73
+ else
74
+ respond_to do |format|
75
+ format.html do
76
+ add_breadcrumb @dietary_requirement.name
77
+ render :edit
78
+ end
79
+ format.js { render partial: 'errors', locals: { errors: @dietary_requirement.errors } }
80
+ end
81
+ end
82
+ end
83
+
84
+ # @!endgroup
85
+
86
+ private
87
+
88
+ def set_dietary_requirement
89
+ @dietary_requirement = DietaryRequirement.find params[:id]
90
+ end
91
+
92
+ def set_breadcrumb
93
+ add_breadcrumb DietaryRequirement.model_name.human(count: 0), admin_conferences_dietary_requirements_path
94
+ end
95
+
96
+ def set_tabs
97
+ @tabs = %w[dietary_requirement_details delegates]
98
+ end
99
+
100
+ def dietary_requirement_params
101
+ params.require(:admin_conferences_dietary_requirement).permit(:name)
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spina
4
+ module Admin
5
+ module Conferences
6
+ # Controller for {Event} objects.
7
+ # @see Event
8
+ class EventsController < ApplicationController
9
+ # @!group Actions
10
+
11
+ # Renders a form for an {Event}.
12
+ # @return [void]
13
+ def new
14
+ @conference = Conference.find_by(id: params[:conference]) || Conference.new
15
+ @event = @conference.events.build
16
+ respond_to :js
17
+ render locals: { index: params[:index].to_i, active: params[:active] == 'true' }
18
+ end
19
+
20
+ # @!endgroup
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,106 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spina
4
+ module Admin
5
+ module Conferences
6
+ # Controller for {Institution} objects.
7
+ # @see Institution
8
+ class InstitutionsController < ApplicationController
9
+ before_action :set_institution, only: %i[edit update destroy]
10
+ before_action :set_breadcrumb
11
+ before_action :set_tabs
12
+
13
+ # @!group Actions
14
+
15
+ # Renders a list of institutions.
16
+ # @return [void]
17
+ def index
18
+ @institutions = Institution.sorted
19
+ end
20
+
21
+ # Renders a form for a new institution.
22
+ # @return [void]
23
+ def new
24
+ @institution = Institution.new
25
+ add_breadcrumb t('.new')
26
+ end
27
+
28
+ # Renders a form for an existing institution.
29
+ # @return [void]
30
+ def edit
31
+ add_breadcrumb @institution.name
32
+ end
33
+
34
+ # Creates an institution.
35
+ # @return [void]
36
+ def create # rubocop:disable Metrics/MethodLength
37
+ @institution = Institution.new(conference_params)
38
+
39
+ if @institution.save
40
+ redirect_to admin_conferences_institutions_path, success: t('.saved')
41
+ else
42
+ respond_to do |format|
43
+ format.html do
44
+ add_breadcrumb t('.new')
45
+ render :new
46
+ end
47
+ format.js { render partial: 'errors', locals: { errors: @institution.errors } }
48
+ end
49
+ end
50
+ end
51
+
52
+ # Updates an institution.
53
+ # @return [void]
54
+ def update # rubocop:disable Metrics/MethodLength
55
+ if @institution.update(conference_params)
56
+ redirect_to admin_conferences_institutions_path, success: t('.saved')
57
+ else
58
+ respond_to do |format|
59
+ format.html do
60
+ add_breadcrumb @institution.name
61
+ render :edit
62
+ end
63
+ format.js { render partial: 'errors', locals: { errors: @institution.errors } }
64
+ end
65
+ end
66
+ end
67
+
68
+ # Destroys an institution.
69
+ # @return [void]
70
+ def destroy # rubocop:disable Metrics/MethodLength
71
+ if @institution.destroy
72
+ redirect_to admin_conferences_institutions_path, success: t('.destroyed')
73
+ else
74
+ respond_to do |format|
75
+ format.html do
76
+ add_breadcrumb @institution.name
77
+ render :edit
78
+ end
79
+ format.js { render partial: 'errors', locals: { errors: @institution.errors } }
80
+ end
81
+ end
82
+ end
83
+
84
+ # @!endgroup
85
+
86
+ private
87
+
88
+ def set_institution
89
+ @institution = Institution.find params[:id]
90
+ end
91
+
92
+ def set_breadcrumb
93
+ add_breadcrumb Institution.model_name.human(count: 0), admin_conferences_institutions_path
94
+ end
95
+
96
+ def set_tabs
97
+ @tabs = %w[institution_details rooms delegates]
98
+ end
99
+
100
+ def conference_params
101
+ params.require(:admin_conferences_institution).permit(:name, :city, :logo_id)
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,104 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spina
4
+ module Admin
5
+ module Conferences
6
+ # Controller for {PresentationAttachmentType} objects.
7
+ # @see PresentationAttachmentType
8
+ class PresentationAttachmentTypesController < ApplicationController
9
+ before_action :set_presentation_attachment_type, only: %i[edit update destroy]
10
+ before_action :set_breadcrumb
11
+
12
+ # @!group Actions
13
+
14
+ # Renders a list of presentation attachment types.
15
+ # @return [void]
16
+ def index
17
+ @presentation_attachment_types = PresentationAttachmentType.sorted
18
+ end
19
+
20
+ # Renders a form for a new presentation attachment type.
21
+ # @return [void]
22
+ def new
23
+ @presentation_attachment_type = PresentationAttachmentType.new
24
+ add_breadcrumb t('.new')
25
+ end
26
+
27
+ # Renders a form for an existing presentation attachment type.
28
+ # @return [void]
29
+ def edit
30
+ add_breadcrumb @presentation_attachment_type.name
31
+ end
32
+
33
+ # Creates a presentation attachment type.
34
+ # @return [void]
35
+ def create # rubocop:disable Metrics/MethodLength
36
+ @presentation_attachment_type = PresentationAttachmentType.new presentation_attachment_type_params
37
+
38
+ if @presentation_attachment_type.save
39
+ redirect_to admin_conferences_presentation_attachment_types_path, success: t('.saved')
40
+ else
41
+ respond_to do |format|
42
+ format.html do
43
+ add_breadcrumb t('.new')
44
+ render :new
45
+ end
46
+ format.js { render partial: 'errors', locals: { errors: @presentation_attachment_type.errors } }
47
+ end
48
+ end
49
+ end
50
+
51
+ # Updates a presentation attachment type.
52
+ # @return [void]
53
+ def update # rubocop:disable Metrics/MethodLength
54
+ if @presentation_attachment_type.update(presentation_attachment_type_params)
55
+ redirect_to admin_conferences_presentation_attachment_types_path, success: t('.saved')
56
+ else
57
+ respond_to do |format|
58
+ format.html do
59
+ add_breadcrumb @presentation_attachment_type.name
60
+ render :edit
61
+ end
62
+ format.js { render partial: 'errors', locals: { errors: @presentation_attachment_type.errors } }
63
+ end
64
+ end
65
+ end
66
+
67
+ # Destroys a presentation attachment type.
68
+ # @return [void]
69
+ def destroy # rubocop:disable Metrics/MethodLength
70
+ if @presentation_attachment_type.destroy
71
+ redirect_to admin_conferences_presentation_attachment_types_path, success: t('.destroyed')
72
+ else
73
+ respond_to do |format|
74
+ format.html do
75
+ add_breadcrumb @presentation_attachment_type.name
76
+ render :edit
77
+ end
78
+ format.js { render partial: 'errors', locals: { errors: @presentation_attachment_type.errors } }
79
+ end
80
+ end
81
+ end
82
+
83
+ # @!endgroup
84
+
85
+ private
86
+
87
+ # noinspection RubyInstanceMethodNamingConvention
88
+ def set_presentation_attachment_type
89
+ @presentation_attachment_type = PresentationAttachmentType.find params[:id]
90
+ end
91
+
92
+ def set_breadcrumb
93
+ add_breadcrumb PresentationAttachmentType.model_name.human(count: 0),
94
+ admin_conferences_presentation_attachment_types_path
95
+ end
96
+
97
+ # noinspection RubyInstanceMethodNamingConvention
98
+ def presentation_attachment_type_params
99
+ params.require(:admin_conferences_presentation_attachment_type).permit(:name)
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spina
4
+ module Admin
5
+ module Conferences
6
+ # Controller for {PresentationAttachment} objects.
7
+ # @see PresentationAttachment
8
+ class PresentationAttachmentsController < ApplicationController
9
+ # @!group Actions
10
+
11
+ # Renders a form for a {PresentationAttachment}.
12
+ # @return [void]
13
+ def new
14
+ @presentation = Presentation.find_by(id: params[:presentation_id]) || Presentation.new
15
+ @attachment = @presentation.attachments.build
16
+ respond_to :js
17
+ render locals: { index: params[:index].to_i, active: params[:active] == 'true' }
18
+ end
19
+
20
+ # @!endgroup
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,109 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spina
4
+ module Admin
5
+ module Conferences
6
+ # Controller for {PresentationType} objects.
7
+ # @see PresentationType
8
+ class PresentationTypesController < ApplicationController
9
+ before_action :set_presentation_type, only: %i[edit update destroy]
10
+ before_action :set_breadcrumbs
11
+ before_action :set_tabs
12
+
13
+ layout 'spina/admin/conferences/conferences'
14
+
15
+ # @!group Actions
16
+
17
+ # Renders a list of presentation types.
18
+ # @return [void]
19
+ def index
20
+ @presentation_types = PresentationType.sorted
21
+ end
22
+
23
+ # Renders a form for a new presentation type.
24
+ # @return [void]
25
+ def new
26
+ @presentation_type = PresentationType.new
27
+ add_breadcrumb t('.new')
28
+ end
29
+
30
+ # Renders a form for an existing presentation type.
31
+ # @return [void]
32
+ def edit
33
+ add_breadcrumb @presentation_type.name
34
+ end
35
+
36
+ # Creates a presentation type.
37
+ # @return [void]
38
+ def create # rubocop:disable Metrics/MethodLength
39
+ @presentation_type = PresentationType.new presentation_type_params
40
+
41
+ if @presentation_type.save
42
+ redirect_to admin_conferences_presentation_types_path, success: t('.saved')
43
+ else
44
+ respond_to do |format|
45
+ format.html do
46
+ add_breadcrumb t('.new')
47
+ render :new
48
+ end
49
+ format.js { render partial: 'errors', locals: { errors: @presentation_type.errors } }
50
+ end
51
+ end
52
+ end
53
+
54
+ # Updates a presentation type.
55
+ # @return [void]
56
+ def update # rubocop:disable Metrics/MethodLength
57
+ if @presentation_type.update(presentation_type_params)
58
+ redirect_to admin_conferences_presentation_types_path, success: t('.saved')
59
+ else
60
+ respond_to do |format|
61
+ format.html do
62
+ add_breadcrumb @presentation_type.name
63
+ render :edit
64
+ end
65
+ format.js { render partial: 'errors', locals: { errors: @presentation_type.errors } }
66
+ end
67
+ end
68
+ end
69
+
70
+ # Destroys a presentation type.
71
+ # @return [void]
72
+ def destroy # rubocop:disable Metrics/MethodLength
73
+ if @presentation_type.destroy
74
+ redirect_to admin_conferences_presentation_types_path, success: t('.destroyed')
75
+ else
76
+ respond_to do |format|
77
+ format.html do
78
+ add_breadcrumb @presentation_type.name
79
+ render :edit
80
+ end
81
+ format.js { render partial: 'errors', locals: { errors: @presentation_type.errors } }
82
+ end
83
+ end
84
+ end
85
+
86
+ # @!endgroup
87
+
88
+ private
89
+
90
+ def set_presentation_type
91
+ @presentation_type = PresentationType.find params[:id]
92
+ end
93
+
94
+ def set_breadcrumbs
95
+ add_breadcrumb Conference.model_name.human(count: 0), admin_conferences_conferences_path
96
+ add_breadcrumb PresentationType.model_name.human(count: 0), admin_conferences_presentation_types_path
97
+ end
98
+
99
+ def set_tabs
100
+ @tabs = %w[presentation_type_details presentations sessions]
101
+ end
102
+
103
+ def presentation_type_params
104
+ params.require(:admin_conferences_presentation_type).permit(:name, :conference_id, :minutes)
105
+ end
106
+ end
107
+ end
108
+ end
109
+ end