spina-conferences-primer_theme 0.1.2

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 (81) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +33 -0
  4. data/Rakefile +36 -0
  5. data/app/assets/config/spina_conferences_primer_theme_manifest.js +8 -0
  6. data/app/assets/javascripts/spina/conferences/primer_theme/application.js +8 -0
  7. data/app/assets/javascripts/spina/conferences/primer_theme/controllers/slideshow_controller.es6 +68 -0
  8. data/app/assets/stylesheets/spina/conferences/primer_theme/_admin.sass +4 -0
  9. data/app/assets/stylesheets/spina/conferences/primer_theme/_custom.sass +0 -0
  10. data/app/assets/stylesheets/spina/conferences/primer_theme/_github.sass +2 -0
  11. data/app/assets/stylesheets/spina/conferences/primer_theme/_primer.sass +4 -0
  12. data/app/assets/stylesheets/spina/conferences/primer_theme/_turbolinks.sass +3 -0
  13. data/app/assets/stylesheets/spina/conferences/primer_theme/application.sass +13 -0
  14. data/app/controllers/spina/conferences/primer_theme/application_controller.rb +14 -0
  15. data/app/controllers/spina/conferences/primer_theme/conferences_controller.rb +55 -0
  16. data/app/controllers/spina/conferences/primer_theme/presentations_controller.rb +39 -0
  17. data/app/helpers/spina/conferences/primer_theme/application_helper.rb +64 -0
  18. data/app/helpers/spina/conferences/primer_theme/asset_helper.rb +48 -0
  19. data/app/helpers/spina/conferences/primer_theme/navigations_helper.rb +24 -0
  20. data/app/views/conferences_primer_theme/pages/about.html.haml +17 -0
  21. data/app/views/conferences_primer_theme/pages/committee.html.haml +9 -0
  22. data/app/views/conferences_primer_theme/pages/homepage.html.haml +6 -0
  23. data/app/views/conferences_primer_theme/pages/information.html.haml +6 -0
  24. data/app/views/conferences_primer_theme/pages/show.html.haml +2 -0
  25. data/app/views/layouts/conferences_primer_theme/application.html.haml +5 -0
  26. data/app/views/layouts/spina/conferences/primer_theme/application.html.haml +36 -0
  27. data/app/views/layouts/spina/conferences/primer_theme/conferences.html.haml +4 -0
  28. data/app/views/layouts/spina/conferences/primer_theme/presentations.html.haml +4 -0
  29. data/app/views/spina/application/_cookies.html.haml +14 -0
  30. data/app/views/spina/application/_current_conference_alert.html.haml +4 -0
  31. data/app/views/spina/application/_footer.html.haml +24 -0
  32. data/app/views/spina/application/_image_collection.html.haml +19 -0
  33. data/app/views/spina/application/_list_item.html.haml +1 -0
  34. data/app/views/spina/application/_logo.html.haml +1 -0
  35. data/app/views/spina/application/_mobile_navigation_item.html.haml +2 -0
  36. data/app/views/spina/application/_navigation.html.haml +12 -0
  37. data/app/views/spina/application/_navigation_item.html.haml +1 -0
  38. data/app/views/spina/application/_text.html.haml +1 -0
  39. data/app/views/spina/conferences/primer_theme/conferences/_conference.html.haml +16 -0
  40. data/app/views/spina/conferences/primer_theme/conferences/_conference.ics.erb +3 -0
  41. data/app/views/spina/conferences/primer_theme/conferences/_event.html.haml +12 -0
  42. data/app/views/spina/conferences/primer_theme/conferences/_event.ics.erb +3 -0
  43. data/app/views/spina/conferences/primer_theme/conferences/_events.html.haml +15 -0
  44. data/app/views/spina/conferences/primer_theme/conferences/_information.html.haml +4 -0
  45. data/app/views/spina/conferences/primer_theme/conferences/_institution.html.haml +6 -0
  46. data/app/views/spina/conferences/primer_theme/conferences/_institution_logo.html.haml +3 -0
  47. data/app/views/spina/conferences/primer_theme/conferences/_presentation.html.haml +14 -0
  48. data/app/views/spina/conferences/primer_theme/conferences/_presentation.ics.erb +3 -0
  49. data/app/views/spina/conferences/primer_theme/conferences/_presentation_type.html.haml +6 -0
  50. data/app/views/spina/conferences/primer_theme/conferences/_presentations.html.haml +29 -0
  51. data/app/views/spina/conferences/primer_theme/conferences/_sponsor.html.haml +9 -0
  52. data/app/views/spina/conferences/primer_theme/conferences/_sponsors.html.haml +6 -0
  53. data/app/views/spina/conferences/primer_theme/conferences/_tab.html.haml +1 -0
  54. data/app/views/spina/conferences/primer_theme/conferences/index.html.haml +21 -0
  55. data/app/views/spina/conferences/primer_theme/conferences/index.ics.erb +3 -0
  56. data/app/views/spina/conferences/primer_theme/conferences/show.html.haml +67 -0
  57. data/app/views/spina/conferences/primer_theme/conferences/show.ics.erb +5 -0
  58. data/app/views/spina/conferences/primer_theme/presentations/_abstract.html.haml +1 -0
  59. data/app/views/spina/conferences/primer_theme/presentations/_attachment.html.haml +6 -0
  60. data/app/views/spina/conferences/primer_theme/presentations/_attachments.html.haml +4 -0
  61. data/app/views/spina/conferences/primer_theme/presentations/show.html.haml +16 -0
  62. data/app/views/spina/pages/_committee_bio.html.haml +29 -0
  63. data/app/views/spina/pages/_committee_bios.html.haml +5 -0
  64. data/app/views/spina/pages/_constitution.html.haml +11 -0
  65. data/app/views/spina/pages/_contact.html.haml +4 -0
  66. data/app/views/spina/pages/_homepage_content.html.haml +15 -0
  67. data/app/views/spina/pages/_jumbotron.html.haml +2 -0
  68. data/app/views/spina/pages/_minutes.html.haml +8 -0
  69. data/app/views/spina/pages/_minutes_entry.html.haml +11 -0
  70. data/app/views/spina/pages/_partner_societies.html.haml +9 -0
  71. data/app/views/spina/pages/_partner_society.html.haml +25 -0
  72. data/config/initializers/assets.rb +13 -0
  73. data/config/initializers/themes/conferences_primer_theme.rb +247 -0
  74. data/config/locales/en.yml +149 -0
  75. data/config/routes.rb +11 -0
  76. data/lib/spina/conferences/primer_theme.rb +17 -0
  77. data/lib/spina/conferences/primer_theme/breadcrumbs/builder.rb +34 -0
  78. data/lib/spina/conferences/primer_theme/engine.rb +13 -0
  79. data/lib/spina/conferences/primer_theme/version.rb +9 -0
  80. data/lib/tasks/spina/conferences/primer_theme_tasks.rake +6 -0
  81. metadata +388 -0
@@ -0,0 +1,5 @@
1
+ <%= calendar name: @conference.name do -%>
2
+ <%= render partial: 'conference', object: @conference, cached: true -%>
3
+ <%= render partial: 'presentation', collection: @conference.presentations, cached: true -%>
4
+ <%= render partial: 'event', collection: @conference.events, cached: true -%>
5
+ <% end %>
@@ -0,0 +1 @@
1
+ .markdown-body.my-4= abstract.html_safe
@@ -0,0 +1,6 @@
1
+ - cache [attachment, attachment.attachment] do
2
+ - unless attachment.attachment.blank?
3
+ = render Primer::ButtonComponent.new(tag: :a, group_item: true,
4
+ href: main_app.rails_blob_path(attachment.attachment.file, disposition: :attachment)) do
5
+ = render Primer::OcticonComponent.new(icon: 'download')
6
+ = attachment.name
@@ -0,0 +1,4 @@
1
+ - cache [attachments, attachments.collect(&:attachment)] do
2
+ - if attachments.any?
3
+ .BtnGroup.mt-1
4
+ = render partial: 'attachment', collection: attachments, cached: -> attachment { [attachment, attachment.attachment] }
@@ -0,0 +1,16 @@
1
+ - cache [@presentation, @presentation.presenters, @presentation.attachments.collect(&:attachment)] do
2
+ - cache [@presentation, @presentation.presenters] do
3
+ %h1.mb-1.mb-md-2= @presentation.title
4
+ %ul.text-gray-dark.list-style-none.d-flex.flex-column.flex-sm-row.flex-wrap
5
+ %li.mr-sm-3.mb-1
6
+ = octicon @presentation.presenters.many? ? 'people' : 'person'
7
+ %address.d-inline= @presentation.presenters.collect(&:full_name_and_institution).to_sentence
8
+ %li.mr-sm-3.mb-1
9
+ = octicon 'clock'
10
+ = time_tag @presentation.start_datetime, format: :short
11
+ %li.mb-1
12
+ = octicon 'location'
13
+ %address.d-inline= t :'.room_and_institution', room: @presentation.session.room_name, institution: @presentation.room.institution.name
14
+
15
+ = render partial: 'attachments', object: @presentation.attachments
16
+ = render partial: 'abstract', object: @presentation.abstract
@@ -0,0 +1,29 @@
1
+ .d-flex.flex-column.flex-md-row.flex-items-start
2
+ - cache partable_for(:profile_picture, parent: committee_bio) do
3
+ - if committee_bio.has_content?(:profile_picture) && committee_bio.content(:profile_picture).persisted?
4
+ = render Primer::AvatarComponent.new(src: src(committee_bio.content(:profile_picture).file, resize_to_fill: [150, 150]),
5
+ srcset: srcset(committee_bio.content(:profile_picture).file,
6
+ variant: { resize_to_limit: [150, 150] }),
7
+ draggable: false, alt: committee_bio.content(:name), size: 150, mr: [nil, nil, 3, nil],
8
+ mb: [3, nil, 0, nil])
9
+ .flex-auto
10
+ .d-flex.flex-column.flex-md-row.mb-1
11
+ - cache partable_for(:name, :role, parent: committee_bio) do
12
+ - if committee_bio.has_content?(:name) && committee_bio.has_content?(:role)
13
+ %h3.flex-auto= t :'.name_and_role', name: committee_bio.content(:name), role: committee_bio.content(:role)
14
+ - elsif committee_bio.has_content?(:name)
15
+ %h3.flex-auto= committee_bio.content(:name)
16
+ .BtnGroup.mt-1.mt-md-0.ml-md-1{ aria: { label: t(:'.contact_buttons') } }
17
+ - cache partable_for(:twitter_profile, parent: committee_bio) do
18
+ - if committee_bio.has_content?(:twitter_profile)
19
+ = render Primer::ButtonComponent.new(tag: :a, href: committee_bio.content(:twitter_profile), group_item: true) do
20
+ = render Primer::OcticonComponent.new(icon: 'link-external')
21
+ = t(:'.twitter')
22
+ - cache partable_for(:facebook_profile, parent: committee_bio) do
23
+ - if committee_bio.has_content?(:facebook_profile)
24
+ = render Primer::ButtonComponent.new(tag: :a, href: committee_bio.content(:facebook_profile), group_item: true) do
25
+ = render Primer::OcticonComponent.new(icon: 'link-external')
26
+ = t(:'.facebook')
27
+ - cache partable_for(:bio, parent: committee_bio) do
28
+ - if committee_bio.has_content?(:bio)
29
+ .text-gray-light= committee_bio.content(:bio).try(:html_safe)
@@ -0,0 +1,5 @@
1
+ - if committee_bios.structure_items.any?
2
+ %ul{ class: dom_class(committee_bios), id: dom_id(committee_bios) }
3
+ = render partial: 'committee_bio', collection: committee_bios.structure_items.sorted_by_structure, layout: 'list_item', cached: true
4
+ - else
5
+ = render Primer::BlankslateComponent.new(title: t(:'.no_bios'), icon: 'file')
@@ -0,0 +1,11 @@
1
+ = render Primer::SubheadComponent.new do |component|
2
+ = component.slot(:heading) { t :'.title' }
3
+
4
+ - if constitution.present?
5
+ .py-1.d-flex.flex-items-center
6
+ .flex-auto.pr-1= t :'.uploaded', date: l(constitution.created_at.to_date, format: :long)
7
+ = render Primer::ButtonComponent.new(tag: :a, href: main_app.rails_blob_path(constitution, disposition: :attachment), ml: 2) do
8
+ = render Primer::OcticonComponent.new(icon: 'desktop-download')
9
+ = t(:'.download')
10
+ - else
11
+ = render Primer::BlankslateComponent.new(title: t(:'.no_constitution'), icon: 'law')
@@ -0,0 +1,4 @@
1
+ = render Primer::SubheadComponent.new do |component|
2
+ = component.slot(:heading) { t :'.title' }
3
+
4
+ = render partial: 'text', object: contact
@@ -0,0 +1,15 @@
1
+ .py-3.py-lg-6
2
+ - if latest_conference.present? && latest_conference.finish_date >= Date.today
3
+ .text-shadow-dark
4
+ %h1.h000-mktg.lh-condensed-ultra= conference.name
5
+ %address.f2-light= conference.institutions.collect(&:name).to_sentence
6
+ %time.f2-light= t(:'.dates_html', start_date: time_tag(conference.start_date, format: :day_and_month),
7
+ finish_date: time_tag(conference.finish_date, format: :day_and_month))
8
+ .markdown-body.my-4= content(:text).try(:html_safe)
9
+ .d-block.mt-4
10
+ = link_to t('.more_info'), frontend_conference_path(conference), class: %w[btn-mktg btn-large-mktg btn-primary-mktg f3]
11
+ - else
12
+ .text-shadow-dark
13
+ %h1.h000-mktg.lh-condensed-ultra= Spina::Account.first.name
14
+ .markdown-body.my-4= content(:text).try(:html_safe)
15
+
@@ -0,0 +1,2 @@
1
+ .bg-blue
2
+ .container-lg.p-responsive.text-white= yield
@@ -0,0 +1,8 @@
1
+ = render Primer::SubheadComponent.new do |component|
2
+ = component.slot(:heading) { t :'.title' }
3
+
4
+ - if minutes.present? && minutes.structure_items.any?
5
+ %ul{ class: dom_class(minutes), id: dom_id(minutes) }= render partial: 'minutes_entry',
6
+ collection: minutes.structure_items.sorted_by_structure, cached: true
7
+ - else
8
+ = render Primer::BlankslateComponent.new(title: t(:'.no_minutes'), icon: 'file')
@@ -0,0 +1,11 @@
1
+ %li.list-style-none.py-1.d-flex.flex-items-center
2
+ - cache partable_for(:date, parent: minutes_entry) do
3
+ .flex-auto= minutes_entry.has_content?(:date) ? t(:'.minutes_html', date: time_tag(minutes_entry.content(:date))) : t(:'.no_date')
4
+ - cache partable_for(:attachment, parent: minutes_entry) do
5
+ - if minutes_entry.has_content?(:attachment) && minutes_entry.content(:attachment).persisted?
6
+ = render Primer::ButtonComponent.new(tag: :a, ml: 2,
7
+ href: main_app.rails_blob_path(minutes_entry.content(:attachment), disposition: :attachment)) do
8
+ = render Primer::OcticonComponent.new(icon: 'desktop-download')
9
+ = t(:'.download')
10
+ - else
11
+ .text-small.text-gray= t :'.no_file'
@@ -0,0 +1,9 @@
1
+ = render Primer::SubheadComponent.new do |component|
2
+ = component.slot(:heading) { t :'.title' }
3
+
4
+ - if partner_societies.structure_items.any?
5
+ %ul{ class: dom_class(partner_societies), id: dom_id(partner_societies) }
6
+ = render partial: 'partner_society', collection: partner_societies.structure_items.sorted_by_structure,
7
+ layout: 'list_item', cached: true
8
+ - else
9
+ = render Primer::BlankslateComponent.new(title: t(:'.no_societies'), icon: 'organization')
@@ -0,0 +1,25 @@
1
+ .d-flex.flex-column.flex-md-row-reverse.flex-items-start
2
+ .flex-auto
3
+ %h3.d-flex.flex-wrap.mb-1
4
+ - cache partable_for(:name, parent: partner_society) do
5
+ - if partner_society.has_content? :name
6
+ .flex-auto= partner_society.content(:name)
7
+ .BtnGroup.mt-1.mt-sm-0{ aria: { label: t(:'.contact_buttons') } }
8
+ - cache partable_for(:website, parent: partner_society) do
9
+ - if partner_society.has_content? :website
10
+ = render Primer::ButtonComponent.new(tag: :a, href: partner_society.content(:website), group_item: true) do
11
+ = render Primer::OcticonComponent.new(icon: 'browser')
12
+ = t(:'.website')
13
+ - cache partable_for(:email_address, parent: partner_society) do
14
+ - if partner_society.has_content? :email_address
15
+ = render Primer::ButtonComponent.new(tag: :a, href: "mailto:#{partner_society.content(:email_address)}", group_item: true) do
16
+ = render Primer::OcticonComponent.new(icon: 'mail')
17
+ = t(:'.email')
18
+ - cache partable_for(:description, parent: partner_society) do
19
+ - if partner_society.has_content? :description
20
+ .text-gray= render partial: 'text', object: partner_society.content(:description)
21
+ - cache partable_for(:logo, parent: partner_society) do
22
+ - if partner_society.has_content?(:logo) && partner_society.content(:logo).persisted?
23
+ = image_tag(main_app.url_for(partner_society.content(:logo).file.variant(resize_to_limit: [200, 150])),
24
+ srcset: srcset(partner_society.content(:logo).file, variant: { resize_to_limit: [200, 150] }), size: nil,
25
+ alt_description: partner_society.content(:name), draggable: false, class: %w[mt-4 mt-md-0 mr-md-4])
@@ -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::Conferences::PrimerTheme::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,247 @@
1
+ # frozen_string_literal: true
2
+
3
+ ::Spina::Theme.register do |theme| # rubocop:disable Metrics/BlockLength
4
+ theme.name = 'conferences_primer_theme'
5
+ theme.title = 'Conferences Primer theme'
6
+
7
+ theme.page_parts = [{
8
+ name: 'text',
9
+ title: 'Text',
10
+ partable_type: 'Spina::Text'
11
+ }, {
12
+ name: 'gallery',
13
+ title: 'Gallery',
14
+ partable_type: 'Spina::ImageCollection'
15
+ }, {
16
+ name: 'constitution',
17
+ title: 'Constitution',
18
+ partable_type: 'Spina::Attachment'
19
+ }, {
20
+ name: 'slides',
21
+ title: 'Slides',
22
+ partable_type: 'Spina::Attachment'
23
+ }, {
24
+ name: 'handout',
25
+ title: 'Handout',
26
+ partable_type: 'Spina::Attachment'
27
+ }, {
28
+ name: 'poster',
29
+ title: 'Poster',
30
+ partable_type: 'Spina::Attachment'
31
+ }, {
32
+ name: 'partner_societies',
33
+ title: 'Partner societies',
34
+ partable_type: 'Spina::Structure'
35
+ }, {
36
+ name: 'minutes',
37
+ title: 'Minutes',
38
+ partable_type: 'Spina::Structure'
39
+ }, {
40
+ name: 'contact',
41
+ title: 'Contact',
42
+ partable_type: 'Spina::Text'
43
+ }, {
44
+ name: 'socials',
45
+ title: 'Socials',
46
+ partable_type: 'Spina::Structure'
47
+ }, {
48
+ name: 'meetings',
49
+ title: 'Meetings',
50
+ partable_type: 'Spina::Structure'
51
+ }, {
52
+ name: 'submission_url',
53
+ title: 'Submission URL',
54
+ partable_type: 'Spina::Admin::Conferences::UrlPart'
55
+ }, {
56
+ name: 'submission_date',
57
+ title: 'Submission date',
58
+ partable_type: 'Spina::Admin::Conferences::DatePart'
59
+ }, {
60
+ name: 'submission_text',
61
+ title: 'Submission text',
62
+ partable_type: 'Spina::Line'
63
+ }, {
64
+ name: 'committee_bios',
65
+ title: 'Committee bios',
66
+ partable_type: 'Spina::Structure'
67
+ }, {
68
+ name: 'sponsors',
69
+ title: 'Sponsors',
70
+ partable_type: 'Spina::Structure'
71
+ }]
72
+
73
+ theme.layout_parts = [{
74
+ name: 'current_conference_alert',
75
+ title: 'Alert',
76
+ partable_type: 'Spina::Line'
77
+ }, {
78
+ name: 'github_url',
79
+ title: 'GitHub URL',
80
+ partable_type: 'Spina::Line'
81
+ }]
82
+
83
+ theme.structures = [{
84
+ name: 'partner_societies',
85
+ structure_parts: [{
86
+ name: 'name',
87
+ title: 'Name',
88
+ partable_type: 'Spina::Line'
89
+ }, {
90
+ name: 'logo',
91
+ title: 'Logo',
92
+ partable_type: 'Spina::Image'
93
+ }, {
94
+ name: 'description',
95
+ title: 'Description',
96
+ partable_type: 'Spina::Text'
97
+ }, {
98
+ name: 'website',
99
+ title: 'Website',
100
+ partable_type: 'Spina::Admin::Conferences::UrlPart'
101
+ }, {
102
+ name: 'email_address',
103
+ title: 'Email address',
104
+ partable_type: 'Spina::Admin::Conferences::EmailAddressPart'
105
+ }]
106
+ }, {
107
+ name: 'minutes',
108
+ structure_parts: [{
109
+ name: 'date',
110
+ title: 'Date',
111
+ partable_type: 'Spina::Admin::Conferences::DatePart'
112
+ }, {
113
+ name: 'attachment',
114
+ title: 'Attachment',
115
+ partable_type: 'Spina::Attachment'
116
+ }]
117
+ }, {
118
+ name: 'socials',
119
+ structure_parts: [{
120
+ name: 'name',
121
+ title: 'Name',
122
+ partable_type: 'Spina::Line'
123
+ }, {
124
+ name: 'start_time',
125
+ title: 'Time',
126
+ partable_type: 'Spina::Admin::Conferences::TimePart'
127
+ }, {
128
+ name: 'location',
129
+ title: 'Location',
130
+ partable_type: 'Spina::Line'
131
+ }, {
132
+ name: 'description',
133
+ title: 'Description',
134
+ partable_type: 'Spina::Text'
135
+ }]
136
+ }, {
137
+ name: 'meetings',
138
+ structure_parts: [{
139
+ name: 'name',
140
+ title: 'Name',
141
+ partable_type: 'Spina::Line'
142
+ }, {
143
+ name: 'start_time',
144
+ title: 'Time',
145
+ partable_type: 'Spina::Admin::Conferences::TimePart'
146
+ }, {
147
+ name: 'location',
148
+ title: 'Location',
149
+ partable_type: 'Spina::Line'
150
+ }, {
151
+ name: 'description',
152
+ title: 'Description',
153
+ partable_type: 'Spina::Text'
154
+ }]
155
+ }, {
156
+ name: 'committee_bios',
157
+ structure_parts: [{
158
+ name: 'name',
159
+ title: 'Name',
160
+ partable_type: 'Spina::Line'
161
+ }, {
162
+ name: 'role',
163
+ title: 'Role',
164
+ partable_type: 'Spina::Line'
165
+ }, {
166
+ name: 'bio',
167
+ title: 'Bio',
168
+ partable_type: 'Spina::Text'
169
+ }, {
170
+ name: 'profile_picture',
171
+ title: 'Profile picture',
172
+ partable_type: 'Spina::Image'
173
+ }, {
174
+ name: 'facebook_profile',
175
+ title: 'Facebook profile',
176
+ partable_type: 'Spina::Admin::Conferences::UrlPart'
177
+ }, {
178
+ name: 'twitter_profile',
179
+ title: 'Twitter profile',
180
+ partable_type: 'Spina::Admin::Conferences::UrlPart'
181
+ }]
182
+ }, {
183
+ name: 'sponsors',
184
+ structure_parts: [{
185
+ name: 'name',
186
+ title: 'Name',
187
+ partable_type: 'Spina::Line'
188
+ }, {
189
+ name: 'logo',
190
+ title: 'Logo',
191
+ partable_type: 'Spina::Image'
192
+ }, {
193
+ name: 'website',
194
+ title: 'Website',
195
+ partable_type: 'Spina::Admin::Conferences::UrlPart'
196
+ }]
197
+ }]
198
+
199
+ theme.view_templates = [{
200
+ name: 'homepage',
201
+ title: 'Homepage',
202
+ page_parts: %w[gallery text]
203
+ }, {
204
+ name: 'information',
205
+ title: 'Information',
206
+ description: 'Contains general information',
207
+ page_parts: %w[text]
208
+ }, {
209
+ name: 'committee',
210
+ title: 'Committee',
211
+ description: 'Contains committee bios',
212
+ page_parts: %w[text committee_bios]
213
+ }, {
214
+ name: 'about',
215
+ title: 'About',
216
+ description: 'Contains information about the society',
217
+ page_parts: %w[text constitution minutes partner_societies contact]
218
+ }, {
219
+ name: 'show',
220
+ title: 'Blank',
221
+ description: 'Blank template',
222
+ page_parts: []
223
+ }]
224
+
225
+ theme.custom_pages = [{
226
+ name: 'homepage',
227
+ title: 'Homepage',
228
+ deletable: false,
229
+ view_template: 'homepage'
230
+ }, {
231
+ name: 'about',
232
+ title: 'About',
233
+ deletable: false,
234
+ view_template: 'about'
235
+ }]
236
+
237
+ theme.navigations = [{
238
+ name: 'main',
239
+ label: 'Main navigation',
240
+ auto_add_pages: true
241
+ }, {
242
+ name: 'footer',
243
+ label: 'Footer'
244
+ }]
245
+
246
+ theme.plugins = ['conferences']
247
+ end
@@ -0,0 +1,149 @@
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
+ layouts:
34
+ spina:
35
+ conferences:
36
+ primer_theme:
37
+ application:
38
+ title: "%{title} — %{suffix}"
39
+
40
+ spina:
41
+ show: Show
42
+
43
+ application:
44
+ cookies:
45
+ title: About cookies
46
+ purpose: We use cookies for security, functionality, and analytics purposes.
47
+ no_advertising: We do not use Google Analytics Advertising features.
48
+ used:
49
+ rails_html: We use the %{cookie} cookie to track sessions.
50
+ google_analytics_html: Google Analytics sets the %{cookies} cookies for analytics purposes.
51
+ footer:
52
+ copyright: © %{name} %{year}
53
+ find_on_github: Find us on GitHub
54
+ cookies: About cookies
55
+ image_collection:
56
+ previous: Previous
57
+ next: Next
58
+
59
+ pages:
60
+ homepage_content:
61
+ more_info: More info
62
+ dates_html: "%{start_date}–%{finish_date}"
63
+ committee_bios:
64
+ no_bios: No bios added.
65
+ committee_bio:
66
+ twitter: Twitter
67
+ facebook: Facebook
68
+ name_and_role: "%{name}, %{role}"
69
+ contact_buttons: Contact buttons
70
+ constitution:
71
+ title: Constitution
72
+ uploaded: Uploaded %{date}
73
+ download: Download
74
+ no_constitution: No constitution uploaded.
75
+ contact:
76
+ title: Contact
77
+ minutes:
78
+ title: Minutes
79
+ no_minutes: No minutes added.
80
+ minutes_entry:
81
+ minutes_html: Minutes for %{date}
82
+ download: Download
83
+ no_file: No file uploaded.
84
+ no_date: No date specified.
85
+ partner_societies:
86
+ title: Partner societies
87
+ no_societies: No societies added.
88
+ partner_society:
89
+ website: Website
90
+ email: Email
91
+ contact_buttons: Contact buttons
92
+
93
+ conferences:
94
+ primer_theme:
95
+ conferences:
96
+ index:
97
+ subscribe: Subscribe
98
+ no_conferences: No conferences have been added.
99
+ search: Search
100
+ no_matching_conferences: No matching conferences.
101
+ show:
102
+ dates_html: "%{start_date}–%{finish_date}"
103
+ submit_by_html: Submit abstracts by %{date}
104
+ submit_abstract: Submit an abstract
105
+ information: Information
106
+ presentations: Presentations
107
+ events: Events
108
+ subscribe: Subscribe
109
+ locations: "%{institutions}, %{cities}"
110
+ tabs:
111
+ information: Information
112
+ presentations: Presentations
113
+ events: Events
114
+ presentations:
115
+ all_presentation_types: All
116
+ results: Results
117
+ search: Search
118
+ no_matching_presentations: No matching presentations.
119
+ no_presentations: No presentations.
120
+ presentation_type:
121
+ results: Results
122
+ events:
123
+ search: Search
124
+ no_matching_events: No matching events.
125
+ no_events: No events.
126
+ event:
127
+ times_html: "%{start_time}–%{finish_time}"
128
+ information:
129
+ no_information: No information.
130
+ sponsors:
131
+ title: Sponsors
132
+ conference:
133
+ dates_html: "%{start_date}–%{finish_date}"
134
+ locations: "%{institutions}, %{cities}"
135
+ presentations:
136
+ show:
137
+ room_and_institution: "%{room}, %{institution}"
138
+
139
+ languages:
140
+ en-GB: British English
141
+
142
+ time:
143
+ formats:
144
+ time: "%H:%M"
145
+
146
+ date:
147
+ formats:
148
+ date: "%d"
149
+ day_and_month: "%d/%m"