spina-conferences-primer_theme 0.3.3 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/spina_conferences_primer_theme_manifest.js +1 -2
  3. data/app/assets/stylesheets/spina/conferences/primer_theme/application.sass +27 -0
  4. data/app/controllers/spina/conferences/primer_theme/conferences/application_controller.rb +16 -0
  5. data/app/controllers/spina/conferences/primer_theme/conferences/conferences_controller.rb +72 -0
  6. data/app/controllers/spina/conferences/primer_theme/conferences/presentations_controller.rb +42 -0
  7. data/app/controllers/spina/conferences/primer_theme/journal/application_controller.rb +13 -0
  8. data/app/controllers/spina/conferences/primer_theme/journal/articles_controller.rb +56 -0
  9. data/app/controllers/spina/conferences/primer_theme/journal/issues_controller.rb +48 -0
  10. data/app/helpers/spina/conferences/primer_theme/application_helper.rb +4 -4
  11. data/app/views/conferences_primer_theme/pages/embedded_form.html.haml +9 -0
  12. data/app/views/conferences_primer_theme/pages/homepage.html.haml +3 -0
  13. data/app/views/layouts/spina/conferences/primer_theme/application.html.haml +2 -1
  14. data/app/views/layouts/spina/conferences/primer_theme/{conferences.html.haml → conferences/conferences.html.haml} +0 -0
  15. data/app/views/layouts/spina/conferences/primer_theme/{presentations.html.haml → conferences/presentations.html.haml} +0 -0
  16. data/app/views/layouts/spina/conferences/primer_theme/journal/articles.html.haml +2 -0
  17. data/app/views/layouts/spina/conferences/primer_theme/journal/issues.html.haml +2 -0
  18. data/app/views/spina/application/_footer.html.haml +17 -15
  19. data/app/views/spina/application/_mobile_navigation_item.html.haml +13 -12
  20. data/app/views/spina/application/_mobile_navigation_items.html.haml +1 -1
  21. data/app/views/spina/application/_navigation.html.haml +11 -9
  22. data/app/views/spina/application/_navigation_item.html.haml +12 -11
  23. data/app/views/spina/conferences/primer_theme/conferences/{_conference.html.haml → conferences/_conference.html.haml} +0 -0
  24. data/app/views/spina/conferences/primer_theme/conferences/{_event.html.haml → conferences/_event.html.haml} +0 -0
  25. data/app/views/spina/conferences/primer_theme/conferences/{_events.html.haml → conferences/_events.html.haml} +0 -0
  26. data/app/views/spina/conferences/primer_theme/conferences/{_header.html.haml → conferences/_header.html.haml} +0 -0
  27. data/app/views/spina/conferences/primer_theme/conferences/{_institution.html.haml → conferences/_institution.html.haml} +0 -0
  28. data/app/views/spina/conferences/primer_theme/conferences/{_institution_logo.html.haml → conferences/_institution_logo.html.haml} +0 -0
  29. data/app/views/spina/conferences/primer_theme/conferences/{_presentation.html.haml → conferences/_presentation.html.haml} +0 -0
  30. data/app/views/spina/conferences/primer_theme/conferences/{_presentation_type.html.haml → conferences/_presentation_type.html.haml} +1 -1
  31. data/app/views/spina/conferences/primer_theme/conferences/{_presentations.html.haml → conferences/_presentations.html.haml} +2 -2
  32. data/app/views/spina/conferences/primer_theme/conferences/{_submission_flash.html.haml → conferences/_submission_flash.html.haml} +0 -0
  33. data/app/views/spina/conferences/primer_theme/conferences/{index.html.haml → conferences/index.html.haml} +0 -0
  34. data/app/views/spina/conferences/primer_theme/conferences/{show.html.haml → conferences/show.html.haml} +3 -3
  35. data/app/views/spina/conferences/primer_theme/{kaminari → conferences/kaminari}/_gap.html.haml +0 -0
  36. data/app/views/spina/conferences/primer_theme/{kaminari → conferences/kaminari}/_next_page.html.haml +0 -0
  37. data/app/views/spina/conferences/primer_theme/{kaminari → conferences/kaminari}/_page.html.haml +0 -0
  38. data/app/views/spina/conferences/primer_theme/{kaminari → conferences/kaminari}/_paginator.html.haml +0 -0
  39. data/app/views/spina/conferences/primer_theme/{kaminari → conferences/kaminari}/_prev_page.html.haml +0 -0
  40. data/app/views/spina/conferences/primer_theme/{presentations → conferences/presentations}/_abstract.html.haml +0 -0
  41. data/app/views/spina/conferences/primer_theme/{presentations → conferences/presentations}/_attachment.html.haml +0 -0
  42. data/app/views/spina/conferences/primer_theme/{presentations → conferences/presentations}/_attachments.html.haml +0 -0
  43. data/app/views/spina/conferences/primer_theme/{presentations → conferences/presentations}/show.html.haml +0 -0
  44. data/app/views/spina/conferences/primer_theme/journal/articles/_authorship.html.haml +6 -0
  45. data/app/views/spina/conferences/primer_theme/journal/articles/show.html.haml +50 -0
  46. data/app/views/spina/conferences/primer_theme/journal/issues/_article.html.haml +15 -0
  47. data/app/views/spina/conferences/primer_theme/journal/issues/_issue.html.haml +17 -0
  48. data/app/views/spina/conferences/primer_theme/journal/issues/_issue_cover.html.haml +6 -0
  49. data/app/views/spina/conferences/primer_theme/journal/issues/index.html.haml +10 -0
  50. data/app/views/spina/conferences/primer_theme/journal/issues/show.html.haml +18 -0
  51. data/config/initializers/themes/conferences_primer_theme.rb +19 -2
  52. data/config/locales/en.yml +75 -54
  53. data/config/routes.rb +7 -1
  54. data/lib/spina/conferences/primer_theme.rb +3 -4
  55. data/lib/spina/conferences/primer_theme/version.rb +1 -1
  56. metadata +53 -40
  57. data/app/controllers/spina/conferences/primer_theme/application_controller.rb +0 -14
  58. data/app/controllers/spina/conferences/primer_theme/conferences_controller.rb +0 -70
  59. data/app/controllers/spina/conferences/primer_theme/presentations_controller.rb +0 -40
@@ -1,9 +1,11 @@
1
- .Header.px-3.px-md-4.px-lg-5.flex-wrap.flex-lg-nowrap
2
- .Header-item.mt-n1.mb-n1= link_to render('logo'), root_path, class: 'Header-link'
3
- %details.details-reset.d-lg-none{ style: 'display: contents' }
4
- %summary.Header-item.Header-link.btn-link
5
- = render Primer::OcticonComponent.new('three-bars', height: 24)
6
- .Header-item.Header-item--full.flex-column.width-full.flex-order-1.mr-0.mt-3
7
- = render partial: 'mobile_navigation_items'
8
- = render partial: 'navigation_item', collection: main_navigation_items, cached: true
9
- .Header-item.d-none.d-lg-flex= link_to 'Conferences', frontend_conferences_url, class: %w[Header-link]
1
+ - cache main_navigation_items do
2
+ .Header.px-3.px-md-4.px-lg-5.flex-wrap.flex-lg-nowrap
3
+ .Header-item.mt-n1.mb-n1= link_to render('logo'), root_path, class: 'Header-link'
4
+ %details.details-reset.d-lg-none{ style: 'display: contents' }
5
+ %summary.Header-item.Header-link.btn-link
6
+ = render Primer::OcticonComponent.new('three-bars', height: 24)
7
+ .Header-item.Header-item--full.flex-column.width-full.flex-order-1.mr-0.mt-3
8
+ = render partial: 'mobile_navigation_items'
9
+ = render partial: 'navigation_item', collection: main_navigation_items, cached: true
10
+ .Header-item.d-none.d-lg-flex= link_to 'Journal', frontend_issues_path, class: %w[Header-link]
11
+ .Header-item.d-none.d-lg-flex= link_to 'Conferences', frontend_conferences_path, class: %w[Header-link]
@@ -1,11 +1,12 @@
1
- .Header-item.position-relative.d-none.d-lg-flex
2
- - if navigation_item.has_children? && navigation_item.children.regular_pages.in_menu.live.sorted.any?
3
- %details.details-reset.details-overlay
4
- %summary.Header-link{ role: 'button', aria: { haspopup: 'menu' } }
5
- = navigation_item.menu_title
6
- = render Primer::OcticonComponent.new('chevron-down')
7
- %ul.dropdown-menu.dropdown-menu-sw
8
- - navigation_item.children.regular_pages.in_menu.live.sorted.each do |child|
9
- %li= link_to child.menu_title, child.materialized_path, class: 'dropdown-item'
10
- - elsif navigation_item.is_root?
11
- = link_to navigation_item.menu_title, navigation_item.materialized_path, class: %w[Header-link]
1
+ - cache navigation_item do
2
+ .Header-item.position-relative.d-none.d-lg-flex
3
+ - if navigation_item.has_children? && navigation_item.children.regular_pages.in_menu.live.sorted.any?
4
+ %details.details-reset.details-overlay
5
+ %summary.Header-link{ role: 'button', aria: { haspopup: 'menu' } }
6
+ = navigation_item.menu_title
7
+ = render Primer::OcticonComponent.new('chevron-down')
8
+ %ul.dropdown-menu.dropdown-menu-sw
9
+ - navigation_item.children.regular_pages.in_menu.live.sorted.each do |child|
10
+ %li= link_to child.menu_title, child.materialized_path, class: 'dropdown-item'
11
+ - elsif navigation_item.is_root?
12
+ = link_to navigation_item.menu_title, navigation_item.materialized_path, class: %w[Header-link]
@@ -1,5 +1,5 @@
1
1
  %li
2
- = link_to frontend_conference_url(presentation_type.conference, presentation_type: presentation_type.id, tab: 'presentations'),
2
+ = link_to frontend_conference_path(presentation_type.conference, presentation_type: presentation_type.id, tab: 'presentations'),
3
3
  class: 'filter-item', aria: { current: @presentation_type == presentation_type ? 'page' : nil } do
4
4
  = presentation_type.name.pluralize
5
5
  %span.count{ title: t(:'.results') }= presentation_type.presentations.count
@@ -4,7 +4,7 @@
4
4
  %ul.filter-list
5
5
  - cache [@conference.presentations, @presentation_type] do
6
6
  %li
7
- = link_to frontend_conference_url(@conference, tab: 'presentations'),
7
+ = link_to frontend_conference_path(@conference, tab: 'presentations'),
8
8
  class: 'filter-item', aria: { current: ('page' if @presentation_type.blank?) } do
9
9
  = t('.all_presentation_types')
10
10
  %span.count{ title: t(:'.results') }= @conference.presentations.count
@@ -22,7 +22,7 @@
22
22
  %ul{ data: { filter: { list: true } } }
23
23
  = render partial: 'presentation', collection: @presentations.sorted.reverse_order, layout: 'list_item',
24
24
  locals: { conference: @conference }, cached: -> presentation { [presentation, presentation.presenters] }
25
- = paginate @presentations.sorted, views_prefix: 'spina/conferences/primer_theme'
25
+ = paginate @presentations.sorted, views_prefix: 'spina/conferences/primer_theme/conferences'
26
26
  - else
27
27
  = render Primer::BlankslateComponent.new(title: t(:'.no_presentations'), icon: 'mortar-board')
28
28
  = render Primer::BlankslateComponent.new(title: t(:'.no_matching_presentations'), icon: 'mortar-board', hidden: true,
@@ -5,13 +5,13 @@
5
5
 
6
6
  = turbo_frame_tag 'conference_tabs' do
7
7
  = render Primer::UnderlineNavComponent.new(label: t(:'.conference_navigation')) do |component|
8
- - component.tab(href: frontend_conference_url(@conference, tab: 'information', presentation_type: @presentation_type&.id),
8
+ - component.tab(href: frontend_conference_path(@conference, tab: 'information', presentation_type: @presentation_type&.id),
9
9
  aria: { selected: (@tab == 'information').to_s }, classes: 'UnderlineNav-item', role: 'tab') do
10
10
  = t(:'.tabs.information')
11
- - component.tab(href: frontend_conference_url(@conference, tab: 'presentations', presentation_type: @presentation_type&.id),
11
+ - component.tab(href: frontend_conference_path(@conference, tab: 'presentations', presentation_type: @presentation_type&.id),
12
12
  aria: { selected: (@tab == 'presentations').to_s }, classes: 'UnderlineNav-item', role: 'tab') do
13
13
  = t(:'.tabs.presentations')
14
- - component.tab(href: frontend_conference_url(@conference, tab: 'events', presentation_type: @presentation_type&.id),
14
+ - component.tab(href: frontend_conference_path(@conference, tab: 'events', presentation_type: @presentation_type&.id),
15
15
  aria: { selected: (@tab == 'events').to_s }, classes: 'UnderlineNav-item', role: 'tab') do
16
16
  = t(:'.tabs.events')
17
17
  - component.actions do
@@ -0,0 +1,6 @@
1
+ = render(Primer::FlexComponent.new(tag: :li, mr: 4, align_items: :center)) do
2
+ = render(Primer::FlexItemComponent.new(mr: 2)) do
3
+ = render(Primer::OcticonComponent.new('person'))
4
+ = render(Primer::FlexComponent.new(tag: :address, direction: :column)) do
5
+ = render(Primer::TextComponent.new(tag: :div, font_weight: :bold)) { authorship.affiliation.name }
6
+ = render(Primer::TextComponent.new(tag: :div, color: :text_secondary)) { authorship.affiliation.institution.name }
@@ -0,0 +1,50 @@
1
+ = render(Primer::HeadingComponent.new) { @article.title }
2
+
3
+ = render(Primer::FlexComponent.new(direction: [:column, nil, :row, nil])) do
4
+ = render(Primer::FlexItemComponent.new(flex_auto: true, mr: [nil, nil, 4, nil])) do
5
+ %ul.list-style-none.d-flex.flex-column.flex-sm-row.my-2
6
+ - @article.affiliations.each do |affiliation|
7
+ = render(Primer::FlexComponent.new(tag: :li, mr: 4, align_items: :center)) do
8
+ = render(Primer::FlexItemComponent.new(mr: 2)) do
9
+ = render(Primer::OcticonComponent.new('person'))
10
+ = render(Primer::FlexComponent.new(tag: :address, direction: :column)) do
11
+ = render(Primer::TextComponent.new(tag: :div, font_weight: :bold)) { affiliation.name }
12
+ = render(Primer::TextComponent.new(tag: :div, color: :text_secondary)) { affiliation.institution.name }
13
+
14
+ - if @article.has_content?(:abstract)
15
+ = render(Primer::HeadingComponent.new(tag: :h2, mt: 4, font_size: 3)) { t '.abstract' }
16
+ = render(Primer::MarkdownComponent.new) { @article.content.html(:abstract) }
17
+
18
+ = render(Primer::BorderBoxComponent.new(ml: [nil, nil, 4, nil])) do |sidebar|
19
+ - sidebar.body do
20
+ - if @article.issue.has_content?(:cover_img)
21
+ = render partial: 'spina/journal/primer_theme/issues/issue_cover', locals: { issue: @article.issue, cover_img: @article.issue.content(:cover_img), size: [200, 400] }
22
+ = render(Primer::BorderBoxComponent.new) do |component|
23
+ - if @article.has_content?(:attachment)
24
+ - component.row do
25
+ = render(Primer::ButtonComponent.new(tag: :a, href: main_app.url_for(@article.content(:attachment)), download: '', scheme: :primary)) do
26
+ = render Primer::OcticonComponent.new('download')
27
+ = t '.download'
28
+ - component.row do
29
+ = render(Primer::HeadingComponent.new(tag: :h2, font_size: 4, color: :text_secondary)) { t '.published' }
30
+ = render(Primer::TextComponent.new) do
31
+ = time_tag @article.issue.date, format: :long
32
+ - component.row do
33
+ = render(Primer::HeadingComponent.new(tag: :h2, font_size: 4, color: :text_secondary)) { t '.issue' }
34
+ = render(Primer::TextComponent.new) do
35
+ = link_to t('spina.journal.primer_theme.volume_issue',
36
+ volume_number: @article.issue.volume.number,
37
+ issue_number: @article.issue.number), frontend_issue_path(@article.issue)
38
+ - unless @article.doi.blank?
39
+ = component.row do
40
+ = render(Primer::HeadingComponent.new(tag: :h2, font_size: 4, color: :text_secondary)) { t '.doi' }
41
+ = render(Primer::TextComponent.new(tag: :div, color: :text_secondary, mt: 1)) do
42
+ = link_to nil, @article.doi
43
+ - unless @article.url.blank?
44
+ = component.row do
45
+ = render(Primer::HeadingComponent.new(tag: :h2, font_size: 4, color: :text_secondary)) { t '.url' }
46
+ = render(Primer::TextComponent.new(tag: :div, color: :text_secondary, mt: 1)) do
47
+ = link_to nil, @article.url
48
+ - if @article.draft?
49
+ = component.row do
50
+ = render(Primer::TextComponent.new(tag: :div, color: :text_danger, font_weight: :bold)) { t '.draft' }
@@ -0,0 +1,15 @@
1
+ = render(Primer::FlexComponent.new(direction: [:column, nil, :row, nil])) do
2
+ = render(Primer::FlexItemComponent.new(flex_auto: true)) do
3
+ = render(Primer::HeadingComponent.new(tag: :h3, mb: 1)) do
4
+ = link_to article.title, frontend_issue_article_path(article.issue, article)
5
+ = render(Primer::TextComponent.new(tag: :div, color: :text_secondary)) do
6
+ = render(Primer::OcticonComponent.new(article.affiliations.many? ? 'people' : 'person'))
7
+ = render(Primer::BaseComponent.new(tag: :address, display: :inline)) do
8
+ = article.authorships.sorted_within_article.collect { |authorship| authorship.affiliation.name }.to_sentence
9
+ - unless article.doi.blank?
10
+ = render(Primer::TextComponent.new(tag: :div, color: :text_secondary)) do
11
+ = link_to nil, article.doi
12
+ - if article.has_content?(:attachment)
13
+ = render(Primer::ButtonComponent.new(tag: :a, href: main_app.url_for(article.content(:attachment)), mt: 2, download: '')) do
14
+ = render Primer::OcticonComponent.new('download')
15
+ = t '.download'
@@ -0,0 +1,17 @@
1
+ = render(Primer::FlexComponent.new(direction: [:column, nil, :row, nil])) do
2
+ - if issue.content(:cover_img).present?
3
+ = render(Primer::FlexItemComponent.new(mr: 4)) do
4
+ = render partial: 'issue_cover', locals: { issue: issue, cover_img: issue.content(:cover_img), size: [150, 300] }
5
+ = render(Primer::FlexItemComponent.new(flex_auto: true)) do
6
+ = render(Primer::HeadingComponent.new(tag: :h2, mb: 1)) do
7
+ = link_to t('spina.conferences.primer_theme.journal.volume_issue',
8
+ volume_number: issue.volume.number,
9
+ issue_number: issue.number), frontend_issue_path(issue)
10
+ - unless issue.title.blank?
11
+ = render(Primer::HeadingComponent.new(tag: :h3, color: :text_secondary, mb: 1)) do
12
+ = issue.title
13
+ = render(Primer::TextComponent.new(tag: :div, color: :text_secondary, font_weight: :bold)) do
14
+ = time_tag issue.date, format: :long
15
+ - if issue.has_content?(:description)
16
+ = render(Primer::TextComponent.new(tag: :div, color: :text_secondary, mt: 2)) do
17
+ = issue.content.html(:description)
@@ -0,0 +1,6 @@
1
+ - cache cover_img do
2
+ = image_tag main_app.url_for(cover_img.variant(resize_to_limit: size)),
3
+ srcset: srcset(cover_img, variant: { resize_to_limit: size }),
4
+ alt_description: t('spina.conferences.primer_theme.journal.volume_issue', volume_number: issue.volume.number, issue_number: issue.number),
5
+ draggable: false,
6
+ class: 'p-1'
@@ -0,0 +1,10 @@
1
+ = render(Primer::HeadingComponent.new) { @journal.name }
2
+
3
+ - if @journal.content(:description).present?
4
+ = render(Primer::MarkdownComponent.new(mt: 4)) { @journal.content.html(:description) }
5
+
6
+ %div#journal-issues-list.border-top
7
+ - if @issues.any?
8
+ %ul= render partial: 'issue', collection: @issues, layout: 'list_item'
9
+ - else
10
+ = render Primer::BlankslateComponent.new(title: t(:'.no_issues'), icon: 'mortar-board')
@@ -0,0 +1,18 @@
1
+ = render(Primer::HeadingComponent.new) do
2
+ = t('spina.conferences.primer_theme.journal.volume_issue', volume_number: @issue.volume.number, issue_number: @issue.number)
3
+
4
+ - unless @issue.title.blank?
5
+ = render(Primer::HeadingComponent.new(tag: :h2, color: :text_secondary, mb: 2)) { @issue.title }
6
+
7
+ - if @issue.has_content?(:cover_img)
8
+ = render partial: 'issue_cover', locals: { issue: @issue, cover_img: @issue.content(:cover_img), size: [300, 600] }
9
+
10
+ - if @issue.has_content?(:description)
11
+ = render(Primer::MarkdownComponent.new(my: 4)) do
12
+ = @issue.content.html(:description)
13
+
14
+ %div#journal-articles-list.border-top
15
+ - if @articles.any?
16
+ %ul= render partial: 'article', collection: @articles.sorted_asc, layout: 'list_item'
17
+ - else
18
+ = render Primer::BlankslateComponent.new(title: t(:'.no_articles'), icon: 'mortar-board')
@@ -75,7 +75,7 @@
75
75
  name: 'committee_bios',
76
76
  title: 'Committee bios',
77
77
  part_type: 'Spina::Parts::Repeater',
78
- parts: %w[name role bio profile_picture]
78
+ parts: %w[name institution role bio profile_picture]
79
79
  }, {
80
80
  name: 'sponsors',
81
81
  title: 'Sponsors',
@@ -158,6 +158,18 @@
158
158
  name: 'url',
159
159
  title: 'Link',
160
160
  part_type: 'Spina::Parts::Admin::Conferences::Url'
161
+ }, {
162
+ name: 'embed_url',
163
+ title: 'Form embed URL',
164
+ part_type: 'Spina::Parts::Admin::Conferences::Url'
165
+ }, {
166
+ name: 'abstract',
167
+ title: 'Abstract',
168
+ part_type: 'Spina::Parts::Text'
169
+ }, {
170
+ name: 'cover_img',
171
+ title: 'Cover image',
172
+ part_type: 'Spina::Parts::Image'
161
173
  }]
162
174
 
163
175
  theme.view_templates = [{
@@ -184,6 +196,11 @@
184
196
  title: 'Events',
185
197
  description: 'Contains details of past and upcoming events',
186
198
  parts: %w[text events_list]
199
+ }, {
200
+ name: 'embedded_form',
201
+ title: 'Embedded form',
202
+ description: 'Contains an embedded form',
203
+ parts: %w[text embed_url]
187
204
  }, {
188
205
  name: 'show',
189
206
  title: 'Blank',
@@ -212,5 +229,5 @@
212
229
  label: 'Footer'
213
230
  }]
214
231
 
215
- theme.plugins = ['conferences']
232
+ theme.plugins = %w[conferences journal]
216
233
  end
@@ -99,66 +99,87 @@ en:
99
99
  conferences:
100
100
  primer_theme:
101
101
  conferences:
102
- index:
103
- subscribe: Subscribe
104
- no_conferences: No conferences have been added.
105
- search: Search
106
- no_matching_conferences: No matching conferences.
107
- show:
108
- information: Information
109
- presentations: Presentations
110
- events: Events
111
- subscribe: Subscribe
112
- tabs:
102
+ conferences:
103
+ index:
104
+ subscribe: Subscribe
105
+ no_conferences: No conferences have been added.
106
+ search: Search
107
+ no_matching_conferences: No matching conferences.
108
+ show:
113
109
  information: Information
114
110
  presentations: Presentations
115
111
  events: Events
116
- no_tab: No tab.
117
- tab_does_not_exist: "The tab '%{tab}' does not exist."
118
- no_information: No information.
119
- conference_navigation: Conference content
112
+ subscribe: Subscribe
113
+ tabs:
114
+ information: Information
115
+ presentations: Presentations
116
+ events: Events
117
+ no_tab: No tab.
118
+ tab_does_not_exist: "The tab '%{tab}' does not exist."
119
+ no_information: No information.
120
+ conference_navigation: Conference content
121
+ presentations:
122
+ all_presentation_types: All
123
+ results: Results
124
+ search: Search
125
+ no_matching_presentations: No matching presentations.
126
+ no_presentations: No presentations.
127
+ presentation_type:
128
+ results: Results
129
+ events:
130
+ search: Search
131
+ no_matching_events: No matching events.
132
+ no_events: No events.
133
+ event:
134
+ times_html: "%{start_time}–%{finish_time}"
135
+ conference:
136
+ dates_html: "%{start_date}–%{finish_date}"
137
+ locations: "%{institutions}, %{cities}"
138
+ submission_flash:
139
+ submit_by_html: Submit abstracts by %{date}
140
+ submit_abstract: Submit an abstract
141
+ header:
142
+ dates_html: "%{start_date}–%{finish_date}"
143
+ locations: "%{institutions}, %{cities}"
144
+ gallery:
145
+ previous: Previous
146
+ next: Next
147
+ sponsors:
148
+ title: Sponsors
149
+
120
150
  presentations:
121
- all_presentation_types: All
122
- results: Results
123
- search: Search
124
- no_matching_presentations: No matching presentations.
125
- no_presentations: No presentations.
126
- presentation_type:
127
- results: Results
128
- events:
129
- search: Search
130
- no_matching_events: No matching events.
131
- no_events: No events.
132
- event:
133
- times_html: "%{start_time}–%{finish_time}"
134
- conference:
135
- dates_html: "%{start_date}–%{finish_date}"
136
- locations: "%{institutions}, %{cities}"
137
- submission_flash:
138
- submit_by_html: Submit abstracts by %{date}
139
- submit_abstract: Submit an abstract
140
- header:
141
- dates_html: "%{start_date}–%{finish_date}"
142
- locations: "%{institutions}, %{cities}"
143
- gallery:
144
- previous: Previous
145
- next: Next
146
- sponsors:
147
- title: Sponsors
151
+ show:
152
+ room_and_institution: "%{room}, %{institution}"
148
153
 
149
- presentations:
150
- show:
151
- room_and_institution: "%{room}, %{institution}"
154
+ kaminari:
155
+ next_page:
156
+ next: Next
157
+ next_page: Next page
158
+ prev_page:
159
+ previous: Previous
160
+ previous_page: Previous page
161
+ page:
162
+ page: Page %{number}
152
163
 
153
- kaminari:
154
- next_page:
155
- next: Next
156
- next_page: Next page
157
- prev_page:
158
- previous: Previous
159
- previous_page: Previous page
160
- page:
161
- page: Page %{number}
164
+ journal:
165
+ volume_issue: "Volume %{volume_number} (Issue %{issue_number})"
166
+ issues:
167
+ index:
168
+ no_issues: This journal has no issues.
169
+ logo: Journal logo
170
+ show:
171
+ no_articles: This issue has no articles.
172
+ article:
173
+ download: PDF
174
+ articles:
175
+ show:
176
+ download: PDF
177
+ doi: DOI
178
+ url: URL
179
+ abstract: Abstract
180
+ published: Published
181
+ issue: Issue
182
+ draft: THIS ARTICLE IS A DRAFT
162
183
 
163
184
  languages:
164
185
  en-GB: British English