spina-admin-conferences 1.3.10 → 2.2.0

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 (94) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/spina/admin/conferences/application.sass +0 -15
  3. data/app/controllers/spina/admin/conferences/application_controller.rb +6 -3
  4. data/app/controllers/spina/admin/conferences/conferences_controller.rb +19 -28
  5. data/app/controllers/spina/admin/conferences/delegates_controller.rb +3 -5
  6. data/app/controllers/spina/admin/conferences/dietary_requirements_controller.rb +2 -2
  7. data/app/controllers/spina/admin/conferences/institutions_controller.rb +2 -2
  8. data/app/controllers/spina/admin/conferences/presentation_attachment_types_controller.rb +2 -2
  9. data/app/controllers/spina/admin/conferences/presentation_types_controller.rb +2 -2
  10. data/app/controllers/spina/admin/conferences/presentations_controller.rb +5 -6
  11. data/app/controllers/spina/admin/conferences/rooms_controller.rb +2 -2
  12. data/app/controllers/spina/admin/conferences/sessions_controller.rb +2 -2
  13. data/app/jobs/spina/admin/conferences/presentation_import_job.rb +2 -3
  14. data/app/models/spina/admin/conferences/conference.rb +132 -15
  15. data/app/models/spina/admin/conferences/event.rb +30 -65
  16. data/app/models/spina/admin/conferences/presentation.rb +29 -38
  17. data/app/models/spina/parts/admin/conferences/date.rb +14 -0
  18. data/app/models/spina/parts/admin/conferences/email_address.rb +20 -0
  19. data/app/models/spina/parts/admin/conferences/time.rb +14 -0
  20. data/app/models/spina/parts/admin/conferences/url.rb +20 -0
  21. data/app/views/spina/admin/conferences/{delegates/_form_conferences.html.haml → application/_conferences.html.haml} +2 -4
  22. data/app/views/spina/admin/conferences/{conferences/_form_delegates.html.haml → application/_delegates.html.haml} +2 -3
  23. data/app/views/spina/admin/conferences/application/_dietary_requirements.html.haml +9 -0
  24. data/app/views/spina/admin/conferences/application/_institutions.html.haml +10 -0
  25. data/app/views/spina/admin/conferences/application/_presentation_attachment_types.html.haml +10 -0
  26. data/app/views/spina/admin/conferences/{conferences/_form_presentation_types.html.haml → application/_presentation_types.html.haml} +2 -3
  27. data/app/views/spina/admin/conferences/{rooms/_form_presentations.html.haml → application/_presentations.html.haml} +2 -3
  28. data/app/views/spina/admin/conferences/{conferences/_form_rooms.html.haml → application/_rooms.html.haml} +2 -3
  29. data/app/views/spina/admin/conferences/{presentation_types/_form_sessions.html.haml → application/_sessions.html.haml} +2 -3
  30. data/app/views/spina/admin/conferences/conferences/_event_fields.html.haml +14 -21
  31. data/app/views/spina/admin/conferences/conferences/_form.html.haml +7 -3
  32. data/app/views/spina/admin/conferences/conferences/_form_conference_details.html.haml +22 -24
  33. data/app/views/spina/admin/conferences/conferences/_form_parts.html.haml +7 -14
  34. data/app/views/spina/admin/conferences/conferences/index.html.haml +2 -13
  35. data/app/views/spina/admin/conferences/delegates/_form.html.haml +4 -3
  36. data/app/views/spina/admin/conferences/delegates/_form_delegate_details.html.haml +47 -32
  37. data/app/views/spina/admin/conferences/delegates/index.html.haml +2 -12
  38. data/app/views/spina/admin/conferences/dietary_requirements/_form.html.haml +3 -3
  39. data/app/views/spina/admin/conferences/dietary_requirements/_form_dietary_requirement_details.html.haml +7 -8
  40. data/app/views/spina/admin/conferences/dietary_requirements/index.html.haml +2 -10
  41. data/app/views/spina/admin/conferences/institutions/_form.html.haml +4 -3
  42. data/app/views/spina/admin/conferences/institutions/_form_institution_details.html.haml +29 -35
  43. data/app/views/spina/admin/conferences/institutions/index.html.haml +2 -11
  44. data/app/views/spina/admin/conferences/presentation_attachment_types/_form.html.haml +2 -2
  45. data/app/views/spina/admin/conferences/presentation_attachment_types/index.html.haml +2 -10
  46. data/app/views/spina/admin/conferences/presentation_types/_form.html.haml +4 -3
  47. data/app/views/spina/admin/conferences/presentation_types/_form_presentation_type_details.html.haml +13 -17
  48. data/app/views/spina/admin/conferences/presentation_types/index.html.haml +2 -12
  49. data/app/views/spina/admin/conferences/presentations/_attachment_fields.html.haml +6 -15
  50. data/app/views/spina/admin/conferences/presentations/_form.html.haml +3 -3
  51. data/app/views/spina/admin/conferences/presentations/_form_presentation_details.html.haml +55 -55
  52. data/app/views/spina/admin/conferences/presentations/index.html.haml +2 -12
  53. data/app/views/spina/admin/conferences/rooms/_form.html.haml +3 -3
  54. data/app/views/spina/admin/conferences/rooms/_form_room_details.html.haml +13 -15
  55. data/app/views/spina/admin/conferences/rooms/index.html.haml +2 -12
  56. data/app/views/spina/admin/conferences/sessions/_form.html.haml +3 -3
  57. data/app/views/spina/admin/conferences/sessions/_form_session_details.html.haml +18 -20
  58. data/app/views/spina/admin/conferences/sessions/_session.html.haml +1 -1
  59. data/app/views/spina/admin/conferences/sessions/index.html.haml +2 -12
  60. data/app/views/spina/admin/hooks/conferences/_primary_navigation.html.haml +4 -4
  61. data/app/views/spina/admin/hooks/conferences/_settings_secondary_navigation.html.haml +2 -2
  62. data/app/views/spina/admin/parts/admin/conferences/dates/_form.html.haml +2 -0
  63. data/app/views/spina/admin/parts/admin/conferences/email_addresses/_form.html.haml +2 -0
  64. data/app/views/spina/admin/parts/admin/conferences/times/_form.html.haml +2 -0
  65. data/app/views/spina/admin/parts/admin/conferences/urls/_form.html.haml +2 -0
  66. data/config/locales/en.yml +26 -29
  67. data/db/migrate/20210315164409_add_json_attributes_to_spina_conferences_presentations.rb +7 -0
  68. data/db/migrate/20210315164410_add_json_attributes_to_spina_conferences_conferences.rb +7 -0
  69. data/db/migrate/20210315164411_convert_partables_to_json.rb +407 -0
  70. data/db/migrate/20210417102513_add_locale_to_action_text_rich_texts.rb +11 -0
  71. data/db/migrate/20210417102514_move_texts_to_action_text_rich_texts.rb +82 -0
  72. data/lib/spina/admin/conferences.rb +1 -0
  73. data/lib/spina/admin/conferences/engine.rb +10 -5
  74. data/lib/spina/admin/conferences/version.rb +1 -1
  75. data/lib/tasks/spina/admin/conferences_tasks.rake +11 -1
  76. metadata +47 -46
  77. data/app/helpers/spina/admin/conferences/conferences_helper.rb +0 -44
  78. data/app/models/spina/admin/conferences/date_part.rb +0 -15
  79. data/app/models/spina/admin/conferences/email_address_part.rb +0 -21
  80. data/app/models/spina/admin/conferences/part.rb +0 -20
  81. data/app/models/spina/admin/conferences/time_part.rb +0 -53
  82. data/app/models/spina/admin/conferences/url_part.rb +0 -21
  83. data/app/views/spina/admin/conferences/conferences/_form_presentations.html.haml +0 -12
  84. data/app/views/spina/admin/conferences/delegates/_form_presentations.html.haml +0 -12
  85. data/app/views/spina/admin/conferences/dietary_requirements/_form_delegates.html.haml +0 -12
  86. data/app/views/spina/admin/conferences/institutions/_form_delegates.html.haml +0 -12
  87. data/app/views/spina/admin/conferences/institutions/_form_rooms.html.haml +0 -12
  88. data/app/views/spina/admin/conferences/presentation_types/_form_presentations.html.haml +0 -12
  89. data/app/views/spina/admin/conferences/presentations/_form_presenters.html.haml +0 -12
  90. data/app/views/spina/admin/conferences/sessions/_form_presentations.html.haml +0 -12
  91. data/app/views/spina/admin/partables/admin/conferences/date_parts/_form.html.haml +0 -5
  92. data/app/views/spina/admin/partables/admin/conferences/email_address_parts/_form.html.haml +0 -5
  93. data/app/views/spina/admin/partables/admin/conferences/time_parts/_form.html.haml +0 -7
  94. data/app/views/spina/admin/partables/admin/conferences/url_parts/_form.html.haml +0 -5
@@ -6,8 +6,8 @@ module Spina
6
6
  # Events during conferences.
7
7
  #
8
8
  # = Validators
9
- # Presence:: {#name}, {#start_time}, {#finish_time}.
10
- # Conference date (using {ConferenceDateValidator}):: {#start_time}, {#finish_time}.
9
+ # Presence:: {#name}, {#:start_datetime}, {#:finish_datetime}, {#:location}.
10
+ # Conference date (using {ConferenceDateValidator}):: {#start_datetime}, {#finish_datetime}.
11
11
  # @see ConferenceDateValidator
12
12
  #
13
13
  # = Translations
@@ -18,23 +18,37 @@ module Spina
18
18
  default_scope { includes(:translations) }
19
19
 
20
20
  # @!attribute [rw] name
21
- # @return [String, nil] the translated name of the conference
21
+ # @return [String, nil] the translated name of the event
22
22
  # @!attribute [rw] description
23
- # @return [String, nil] the translated description of the conference
23
+ # @return [ActionText::RichText, nil] the translated description of the event
24
+ # @!attribute [rw] start_datetime
25
+ # @return [ActiveSupport::TimeWithZone, nil] the start time of the event
26
+ # @!attribute [rw] finish_datetime
27
+ # @return [ActiveSupport::TimeWithZone, nil] the finish time of the event
24
28
  # @!attribute [rw] location
25
- # @return [String, nil] the translated location of the conference
26
- translates :name, :description, :location, fallbacks: true
29
+ # @return [String, nil] the translated location of the event
30
+ translates :name, :location, fallbacks: true
31
+ translates :description, backend: :action_text, fallbacks: true
27
32
 
28
33
  # @return [ActiveRecord::Relation] all events, ordered by name
29
34
  scope :sorted, -> { i18n.order :name }
30
35
 
36
+ # @!attribute [rw] start_time
37
+ # @return [ActiveSupport::TimeWithZone, nil] the start time (alias)
38
+ # @see #start_datetime
39
+ alias_attribute :start_time, :start_datetime
40
+ # @!attribute [rw] :finish_time
41
+ # @return [ActiveSupport::TimeWithZone, nil] the finish time (alias)
42
+ # @see #finish_datetime
43
+ alias_attribute :finish_time, :finish_datetime
44
+
31
45
  # @!attribute [rw] conference
32
46
  # @return [Conference, nil] directly associated conferences
33
47
  belongs_to :conference, -> { includes(:translations) }, inverse_of: :events, touch: true
34
48
 
35
- validates :name, :date, :start_time, :start_datetime, :finish_time, :finish_datetime, :location, presence: true
36
- validates :date, 'spina/admin/conferences/conference_date': true
37
- validates :finish_time, 'spina/admin/conferences/finish_time': true
49
+ validates :name, :start_datetime, :finish_datetime, :location, presence: true
50
+ validates :start_datetime, :finish_datetime, 'spina/admin/conferences/conference_date': true
51
+ validates :finish_datetime, 'spina/admin/conferences/finish_time': true
38
52
 
39
53
  # @return [Date, nil] the start date of the event. Nil if the event has no start date and time
40
54
  def date
@@ -43,54 +57,11 @@ module Spina
43
57
  start_datetime.to_date
44
58
  end
45
59
 
46
- # Sets the date of the presentation.
47
- # @param date [Date] the new date
48
- # @return [void]
49
- def date=(date)
50
- if date.blank? || date.to_date.blank?
51
- self.start_datetime = nil
52
- return
53
- end
54
-
55
- self.start_datetime = date.to_date + (start_datetime.try(:seconds_since_midnight) || 0).seconds
56
- end
57
-
58
- # @return [ActiveSupport::TimeWithZone, nil] the start time of the event. Nil if the event has no start date and time
59
- def start_time
60
+ # @return [TZInfo::TimezonePeriod, nil] the time zone period for the event
61
+ def time_zone_period
60
62
  return if start_datetime.blank?
61
63
 
62
- start_datetime
63
- end
64
-
65
- # Sets the start time of the event.
66
- # @param start_time [ActiveSupport::TimeWithZone] the new start time
67
- # @return [void]
68
- def start_time=(start_time)
69
- if start_time.blank?
70
- self.start_datetime = nil
71
- return
72
- end
73
-
74
- self.start_datetime = Time.parse(start_time, date).to_datetime.in_time_zone
75
- end
76
-
77
- # @return [ActiveSupport::TimeWithZone, nil] the finish time of the event. Nil if the event has no finish date and time
78
- def finish_time
79
- return if finish_datetime.blank?
80
-
81
- finish_datetime
82
- end
83
-
84
- # Sets the finish time of the event.
85
- # @param finish_time [ActiveSupport::TimeWithZone] the new finish time
86
- # @return [void]
87
- def finish_time=(finish_time)
88
- if finish_time.blank?
89
- self.finish_datetime = nil
90
- return
91
- end
92
-
93
- self.finish_datetime = Time.parse(finish_time, date).to_datetime.in_time_zone
64
+ start_datetime.period
94
65
  end
95
66
 
96
67
  # @return [Icalendar::Event] the event as an iCal event
@@ -98,22 +69,16 @@ module Spina
98
69
  event = Icalendar::Event.new
99
70
  return event if invalid?
100
71
 
101
- event.dtstart = start_datetime
102
- event.dtend = finish_datetime
72
+ event.dtstart = Icalendar::Values::DateTime.new(start_datetime, tzid: start_datetime.time_zone.tzinfo.name)
73
+ event.dtend = Icalendar::Values::DateTime.new(finish_datetime, tzid: start_datetime.time_zone.tzinfo.name)
103
74
  event.location = location
104
75
  event.contact = Spina::Account.first.email
105
76
  event.categories = Event.model_name.human(count: 0)
106
77
  event.summary = name
107
- event.append_custom_property('alt_description', description.try(:html_safe))
108
- event.description = description.try(:gsub, %r{</?[^>]*>}, '')
78
+ event.append_custom_property('alt_description', description.to_s)
79
+ event.description = description.try(:to_plain_text)
109
80
  event
110
81
  end
111
-
112
- # @param (see #to_event)
113
- # @deprecated Use {#to_event} instead
114
- def to_ics
115
- to_event
116
- end
117
82
  end
118
83
  end
119
84
  end
@@ -15,13 +15,22 @@ module Spina
15
15
  # - {#title}
16
16
  # - {#abstract}
17
17
  class Presentation < ApplicationRecord
18
+ include AttrJson::Record
19
+ include AttrJson::NestedAttributes
20
+ include Spina::Partable
21
+ include Spina::TranslatedContent
22
+
23
+ # @!attribute [rw] start_datetime
24
+ # @return [ActiveSupport::TimeWithZone, nil] the presentation start time
25
+
18
26
  default_scope { includes(:translations) }
19
27
 
20
28
  # @!attribute [rw] title
21
29
  # @return [String, nil] the presentation title
22
30
  # @!attribute [rw] abstract
23
- # @return [String, nil] the presentation abstract
24
- translates :title, :abstract, fallbacks: true
31
+ # @return [ActionText::RichText, nil] the presentation abstract
32
+ translates :title, fallbacks: true
33
+ translates :abstract, backend: :action_text, fallbacks: true
25
34
 
26
35
  # @return [ActiveRecord::Relation] all conferences, ordered by date
27
36
  scope :sorted, -> { order start_datetime: :desc }
@@ -65,11 +74,16 @@ module Spina
65
74
  association_foreign_key: :spina_conferences_delegate_id
66
75
  accepts_nested_attributes_for :attachments, allow_destroy: true
67
76
 
68
- validates :title, :date, :start_time, :start_datetime, :abstract, :presenters, presence: true
69
- validates :date, 'spina/admin/conferences/conference_date': true
77
+ validates :title, :start_datetime, :abstract, :presenters, presence: true
78
+ validates :start_datetime, 'spina/admin/conferences/conference_date': true
70
79
  validates_associated :presenters
71
80
  validates_associated :attachments
72
81
 
82
+ # @!attribute [rw] start_time
83
+ # @return [ActiveSupport::TimeWithZone, nil] the start time (alias)
84
+ # @see #start_datetime
85
+ alias_attribute :start_time, :start_datetime
86
+
73
87
  # Imports a presentation from CSV.
74
88
  # @param file [String] the CSV file to be read
75
89
  # @return [void]
@@ -85,35 +99,18 @@ module Spina
85
99
  start_datetime.to_date
86
100
  end
87
101
 
88
- # Sets the date of the presentation.
89
- # @param date [Date] the new date
90
- # @return [void]
91
- def date=(date)
92
- if date.blank? || date.to_date.blank?
93
- self.start_datetime = nil
94
- return
95
- end
96
-
97
- self.start_datetime = date.to_date + (start_datetime.try(:seconds_since_midnight) || 0).seconds
98
- end
99
-
100
- # @return [ActiveSupport::TimeWithZone, nil] the start time of the presentation. Nil if the presentation has no start date and time
101
- def start_time
102
+ # @return [ActiveSupport::TimeWithZone, nil] the presentation end time. Nil if the presentation has no start date and time
103
+ def finish_datetime
102
104
  return if start_datetime.blank?
103
105
 
104
- start_datetime
106
+ start_datetime + presentation_type.duration
105
107
  end
106
108
 
107
- # Sets the start time of the presentation.
108
- # @param start_time [ActiveSupport::TimeWithZone] the new start time
109
- # @return [void]
110
- def start_time=(start_time)
111
- if start_time.blank?
112
- self.start_datetime = nil
113
- return
114
- end
109
+ # @return [TZInfo::TimezonePeriod, nil] the time zone period for the presentation
110
+ def time_zone_period
111
+ return if start_datetime.blank?
115
112
 
116
- self.start_datetime = Time.parse(start_time, date).to_datetime.in_time_zone
113
+ start_datetime.period
117
114
  end
118
115
 
119
116
  # @return [Icalendar::Event] the presentation as an iCal event
@@ -121,22 +118,16 @@ module Spina
121
118
  event = Icalendar::Event.new
122
119
  return event if invalid?
123
120
 
124
- event.dtstart = start_datetime
125
- event.dtend = start_datetime + presentation_type.duration
121
+ event.dtstart = Icalendar::Values::DateTime.new(start_datetime, tzid: start_datetime.time_zone.tzinfo.name)
122
+ event.dtend = Icalendar::Values::DateTime.new(finish_datetime, tzid: finish_datetime.time_zone.tzinfo.name)
126
123
  event.location = session.room_name
127
124
  presenters.each { |presenter| event.contact = presenter.full_name_and_institution }
128
125
  event.categories = Presentation.model_name.human(count: 0)
129
126
  event.summary = title
130
- event.append_custom_property('alt_description', abstract.try(:html_safe))
131
- event.description = abstract.try(:gsub, %r{</?[^>]*>}, '')
127
+ event.append_custom_property('alt_description', abstract.to_s)
128
+ event.description = abstract.try(:to_plain_text)
132
129
  event
133
130
  end
134
-
135
- # @param (see #to_event)
136
- # @deprecated Use {#to_event} instead
137
- def to_ics
138
- to_event
139
- end
140
131
  end
141
132
  end
142
133
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spina
4
+ module Parts
5
+ module Admin
6
+ module Conferences
7
+ # Date parts, without associated times.
8
+ class Date < Spina::Parts::Base
9
+ attr_json :content, :date
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spina
4
+ module Parts
5
+ module Admin
6
+ module Conferences
7
+ # Email address parts. The format is validated.
8
+ #
9
+ # = Validators
10
+ # Email address (using {EmailAddressValidator}):: {#content}.
11
+ # @see EmailAddressValidator
12
+ class EmailAddress < Spina::Parts::Base
13
+ attr_json :content, :string
14
+
15
+ validates :content, 'spina/admin/conferences/email_address': true, allow_blank: true
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spina
4
+ module Parts
5
+ module Admin
6
+ module Conferences
7
+ # Time parts.
8
+ class Time < Spina::Parts::Base
9
+ attr_json :content, :time
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spina
4
+ module Parts
5
+ module Admin
6
+ module Conferences
7
+ # URL parts. The format is validated.
8
+ #
9
+ # = Validators
10
+ # HTTP(S) URL (using {HttpUrlValidator}):: {#content}.
11
+ # @see HttpUrlValidator
12
+ class Url < Spina::Parts::Base
13
+ attr_json :content, :string
14
+
15
+ validates :content, 'spina/admin/conferences/http_url': true, allow_blank: true
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,14 +1,12 @@
1
- #conferences.tab-content.well
1
+ .well
2
2
  .table-container
3
3
  %table.table
4
4
  %thead
5
5
  %tr
6
6
  %th= Spina::Admin::Conferences::Conference.human_attribute_name :name
7
7
  %th= Spina::Admin::Conferences::Conference.human_attribute_name :year
8
- %th= Spina::Admin::Conferences::Conference.human_attribute_name :institution
9
8
  %th= Spina::Admin::Conferences::Conference.human_attribute_name :start_date
10
9
  %th= Spina::Admin::Conferences::Conference.human_attribute_name :finish_date
11
10
  %th
12
11
 
13
- %tbody
14
- = render @delegate.conferences.any? ? @delegate.conferences : 'empty_list', message: t('spina.admin.conferences.conferences.index.no_conferences')
12
+ %tbody= render conferences.presence || 'empty_list', message: t('.no_conferences')
@@ -1,4 +1,4 @@
1
- #delegates.tab-content.well
1
+ .well
2
2
  .table-container
3
3
  %table.table
4
4
  %thead
@@ -8,5 +8,4 @@
8
8
  %th= Spina::Admin::Conferences::Delegate.human_attribute_name :institution
9
9
  %th
10
10
 
11
- %tbody
12
- = render @conference.delegates.any? ? @conference.delegates : 'empty_list', message: t('spina.admin.conferences.delegates.index.no_delegates')
11
+ %tbody= render delegates.presence || 'empty_list', message: t('.no_delegates')
@@ -0,0 +1,9 @@
1
+ .well
2
+ .table-container
3
+ %table.table
4
+ %thead
5
+ %tr
6
+ %th= Spina::Admin::Conferences::DietaryRequirement.human_attribute_name :name
7
+ %th
8
+
9
+ %tbody= render dietary_requirements.presence || 'empty_list', message: t('.no_dietary_requirements')
@@ -0,0 +1,10 @@
1
+ .well
2
+ .table-container
3
+ %table.table
4
+ %thead
5
+ %tr
6
+ %th= Spina::Admin::Conferences::Institution.human_attribute_name :name
7
+ %th= Spina::Admin::Conferences::Institution.human_attribute_name :city
8
+ %th
9
+
10
+ %tbody= render institutions.presence || 'empty_list', message: t('.no_institutions')
@@ -0,0 +1,10 @@
1
+ .well
2
+ .table-container
3
+ %table.table
4
+ %thead
5
+ %tr
6
+ %th= Spina::Admin::Conferences::DietaryRequirement.human_attribute_name :name
7
+ %th
8
+
9
+ %tbody
10
+ = render presentation_attachment_types.presence || 'empty_list', message: t('.no_presentation_attachment_types')
@@ -1,4 +1,4 @@
1
- #presentation_types.tab-content.well
1
+ .well
2
2
  .table-container
3
3
  %table.table
4
4
  %thead
@@ -8,5 +8,4 @@
8
8
  %th= Spina::Admin::Conferences::PresentationType.human_attribute_name :duration
9
9
  %th
10
10
 
11
- %tbody
12
- = render @conference.presentation_types.any? ? @conference.presentation_types : 'empty_list', message: t('spina.admin.conferences.presentation_types.index.no_presentation_types')
11
+ %tbody= render presentation_types.presence || 'empty_list', message: t('.no_presentation_types')
@@ -1,4 +1,4 @@
1
- #presentations.tab-content.well
1
+ .well
2
2
  .table-container
3
3
  %table.table
4
4
  %thead
@@ -8,5 +8,4 @@
8
8
  %th= Spina::Admin::Conferences::Presentation.human_attribute_name :presenters
9
9
  %th
10
10
 
11
- %tbody
12
- = render @room.presentations.any? ? @room.presentations : 'empty_list', message: t('spina.admin.conferences.presentations.index.no_presentations')
11
+ %tbody= render presentations.presence || 'empty_list', message: t('.no_presentations')
@@ -1,4 +1,4 @@
1
- #rooms.tab-content.well
1
+ .well
2
2
  .table-container
3
3
  %table.table
4
4
  %thead
@@ -8,5 +8,4 @@
8
8
  %th= Spina::Admin::Conferences::Room.human_attribute_name :number
9
9
  %th
10
10
 
11
- %tbody
12
- = render @conference.rooms.any? ? @conference.rooms : 'empty_list', message: t('spina.admin.conferences.rooms.index.no_rooms')
11
+ %tbody= render rooms.presence || 'empty_list', message: t('.no_rooms')
@@ -1,4 +1,4 @@
1
- #sessions.tab-content.well
1
+ .well
2
2
  .table-container
3
3
  %table.table
4
4
  %thead
@@ -8,5 +8,4 @@
8
8
  %th= Spina::Admin::Conferences::Session.human_attribute_name :room
9
9
  %th
10
10
 
11
- %tbody
12
- = render @presentation_type.sessions.any? ? @presentation_type.sessions : 'empty_list', message: t('spina.admin.conferences.sessions.index.no_sessions')
11
+ %tbody= render sessions.presence || 'empty_list', message: t('.no_sessions')