spina-admin-journal 0.1.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 (95) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +99 -0
  4. data/Rakefile +36 -0
  5. data/app/assets/config/spina_admin_journal_manifest.js +3 -0
  6. data/app/assets/javascripts/spina/admin/journal/application.es6 +72 -0
  7. data/app/assets/stylesheets/spina/admin/journal/application.css +27 -0
  8. data/app/controllers/spina/admin/journal/application_controller.rb +26 -0
  9. data/app/controllers/spina/admin/journal/articles_controller.rb +125 -0
  10. data/app/controllers/spina/admin/journal/authors_controller.rb +83 -0
  11. data/app/controllers/spina/admin/journal/institutions_controller.rb +71 -0
  12. data/app/controllers/spina/admin/journal/issues_controller.rb +129 -0
  13. data/app/controllers/spina/admin/journal/journals_controller.rb +73 -0
  14. data/app/controllers/spina/admin/journal/volumes_controller.rb +79 -0
  15. data/app/models/spina/admin/journal.rb +11 -0
  16. data/app/models/spina/admin/journal/affiliation.rb +62 -0
  17. data/app/models/spina/admin/journal/article.rb +55 -0
  18. data/app/models/spina/admin/journal/author.rb +47 -0
  19. data/app/models/spina/admin/journal/authorship.rb +19 -0
  20. data/app/models/spina/admin/journal/institution.rb +32 -0
  21. data/app/models/spina/admin/journal/issue.rb +49 -0
  22. data/app/models/spina/admin/journal/journal.rb +50 -0
  23. data/app/models/spina/admin/journal/volume.rb +37 -0
  24. data/app/validators/spina/admin/journal/uri_validator.rb +24 -0
  25. data/app/views/layouts/spina/admin/journal/articles.html.haml +10 -0
  26. data/app/views/layouts/spina/admin/journal/authors.html.haml +10 -0
  27. data/app/views/layouts/spina/admin/journal/institutions.html.haml +10 -0
  28. data/app/views/layouts/spina/admin/journal/issues.html.haml +10 -0
  29. data/app/views/layouts/spina/admin/journal/journals.html.haml +10 -0
  30. data/app/views/layouts/spina/admin/journal/volumes.html.haml +10 -0
  31. data/app/views/spina/admin/hooks/journal/_head.html.haml +2 -0
  32. data/app/views/spina/admin/hooks/journal/_primary_navigation.html.haml +27 -0
  33. data/app/views/spina/admin/hooks/journal/_website_secondary_navigation.html.haml +0 -0
  34. data/app/views/spina/admin/journal/affiliations/_affiliation.html.haml +8 -0
  35. data/app/views/spina/admin/journal/application/_empty_list.html.haml +3 -0
  36. data/app/views/spina/admin/journal/articles/_article.html.haml +10 -0
  37. data/app/views/spina/admin/journal/articles/_form.html.haml +29 -0
  38. data/app/views/spina/admin/journal/articles/_form_authors.html.haml +10 -0
  39. data/app/views/spina/admin/journal/articles/_form_details.html.haml +52 -0
  40. data/app/views/spina/admin/journal/articles/edit.html.haml +1 -0
  41. data/app/views/spina/admin/journal/articles/index.html.haml +19 -0
  42. data/app/views/spina/admin/journal/articles/new.html.haml +1 -0
  43. data/app/views/spina/admin/journal/authors/_author.html.haml +8 -0
  44. data/app/views/spina/admin/journal/authors/_form.html.haml +29 -0
  45. data/app/views/spina/admin/journal/authors/_form_affiliation.html.haml +20 -0
  46. data/app/views/spina/admin/journal/authors/_form_articles.html.haml +18 -0
  47. data/app/views/spina/admin/journal/authors/_form_details.html.haml +6 -0
  48. data/app/views/spina/admin/journal/authors/edit.html.haml +1 -0
  49. data/app/views/spina/admin/journal/authors/index.html.haml +17 -0
  50. data/app/views/spina/admin/journal/authors/new.html.haml +1 -0
  51. data/app/views/spina/admin/journal/institutions/_form.html.haml +29 -0
  52. data/app/views/spina/admin/journal/institutions/_form_details.html.haml +9 -0
  53. data/app/views/spina/admin/journal/institutions/_form_view_affiliations.html.haml +10 -0
  54. data/app/views/spina/admin/journal/institutions/_institution.html.haml +9 -0
  55. data/app/views/spina/admin/journal/institutions/edit.html.haml +1 -0
  56. data/app/views/spina/admin/journal/institutions/index.html.haml +16 -0
  57. data/app/views/spina/admin/journal/institutions/new.html.haml +1 -0
  58. data/app/views/spina/admin/journal/issues/_form.html.haml +29 -0
  59. data/app/views/spina/admin/journal/issues/_form_articles.html.haml +14 -0
  60. data/app/views/spina/admin/journal/issues/_form_details.html.haml +32 -0
  61. data/app/views/spina/admin/journal/issues/_issue.html.haml +9 -0
  62. data/app/views/spina/admin/journal/issues/edit.html.haml +1 -0
  63. data/app/views/spina/admin/journal/issues/index.html.haml +18 -0
  64. data/app/views/spina/admin/journal/issues/new.html.haml +1 -0
  65. data/app/views/spina/admin/journal/journals/_form.html.haml +35 -0
  66. data/app/views/spina/admin/journal/journals/edit.html.haml +1 -0
  67. data/app/views/spina/admin/journal/journals/index.html.haml +27 -0
  68. data/app/views/spina/admin/journal/journals/new.html.haml +1 -0
  69. data/app/views/spina/admin/journal/volumes/_form.html.haml +15 -0
  70. data/app/views/spina/admin/journal/volumes/_form_details.html.haml +10 -0
  71. data/app/views/spina/admin/journal/volumes/_form_issues.html.haml +13 -0
  72. data/app/views/spina/admin/journal/volumes/_volume.html.haml +7 -0
  73. data/app/views/spina/admin/journal/volumes/edit.html.haml +1 -0
  74. data/app/views/spina/admin/journal/volumes/index.html.haml +17 -0
  75. data/app/views/spina/admin/journal/volumes/new.html.haml +1 -0
  76. data/config/locales/en.yml +184 -0
  77. data/config/routes.rb +21 -0
  78. data/db/migrate/20201216152147_create_spina_admin_journal_journals.rb +13 -0
  79. data/db/migrate/20201216153822_create_spina_admin_journal_volumes.rb +13 -0
  80. data/db/migrate/20201216155113_create_spina_admin_journal_issues.rb +15 -0
  81. data/db/migrate/20201216161122_create_spina_admin_journal_articles.rb +16 -0
  82. data/db/migrate/20201216205633_create_spina_admin_journal_institutions.rb +11 -0
  83. data/db/migrate/20201216211224_create_spina_admin_journal_authors.rb +7 -0
  84. data/db/migrate/20201216221146_create_spina_admin_journal_affiliations.rb +15 -0
  85. data/db/migrate/20201216230816_create_spina_admin_journal_authorships.rb +14 -0
  86. data/db/migrate/20201231165231_create_spina_admin_journal_parts.rb +12 -0
  87. data/db/migrate/20210424123450_add_json_attributes_to_spina_admin_journal_journals.rb +7 -0
  88. data/db/migrate/20210424123521_add_json_attributes_to_spina_admin_journal_issues.rb +7 -0
  89. data/db/migrate/20210424123555_add_json_attributes_to_spina_admin_journal_articles.rb +7 -0
  90. data/lib/spina/admin/journal.rb +18 -0
  91. data/lib/spina/admin/journal/engine.rb +17 -0
  92. data/lib/spina/admin/journal/version.rb +9 -0
  93. data/lib/tasks/spina/admin/journal_tasks.rake +5 -0
  94. data/vendor/assets/javascripts/spina/admin/journal/html5sortable.js +1295 -0
  95. metadata +388 -0
@@ -0,0 +1,52 @@
1
+ .page-form
2
+ .page-form-group
3
+ .page-form-label
4
+ = ::Spina::Admin::Journal::Issue.model_name.human count: :one
5
+ .page-form-content
6
+ = f.collection_select :issue_id, ::Spina::Admin::Journal::Issue.sorted_desc, :id, ->(issue) { t '.volume_issue', volume_number: issue.volume.number, issue_number: issue.number }
7
+ .page-form-group
8
+ .page-form-label
9
+ = ::Spina::Admin::Journal::Article.human_attribute_name :number
10
+ %small= t '.unchangeable'
11
+ .page-form-content
12
+ = f.number_field :number, disabled: true
13
+ .page-form-group
14
+ .page-form-label
15
+ = ::Spina::Admin::Journal::Article.human_attribute_name :title
16
+ .page-form-content
17
+ = f.text_field :title
18
+ .page-form-group
19
+ .page-form-label
20
+ = ::Spina::Admin::Journal::Author.model_name.human count: :many
21
+ .page-form-content
22
+ .well{ style: 'margin: 0' }
23
+ .table-container
24
+ %table.table{ style: 'margin: 0' }
25
+ %tbody.collection-check-boxes
26
+ = f.collection_check_boxes :affiliation_ids, Spina::Admin::Journal::Affiliation.sorted, :id, :name do |builder|
27
+ %tr
28
+ %td{ style: "padding-left: 16px" }
29
+ .form-checkbox
30
+ = builder.check_box
31
+ = builder.label
32
+ .page-form-group
33
+ .page-form-label
34
+ = ::Spina::Admin::Journal::Article.human_attribute_name :url
35
+ .page-form-content
36
+ = f.text_field :url
37
+ .page-form-group
38
+ .page-form-label
39
+ = ::Spina::Admin::Journal::Article.human_attribute_name :doi
40
+ .page-form-content
41
+ = f.text_field :doi
42
+
43
+ = f.fields_for :"#{@locale}_content", @parts do |ff|
44
+ = ff.hidden_field :type, value: ff.object.class.name
45
+ = ff.hidden_field :title
46
+ = ff.hidden_field :name
47
+
48
+ .page-form-group.page-part{ data: { name: ff.object.name } }
49
+ = render "spina/admin/parts/#{parts_partial_namespace(ff.object.class.name)}/form", f: ff
50
+
51
+ - unless @article.new_record?
52
+ .pull-right= link_to t('spina.permanently_delete'), admin_journal_article_path(@article), method: :delete, data: { confirm: t('.delete_confirmation', title: @article.title) }, class: 'button button-link button-danger'
@@ -0,0 +1 @@
1
+ = render 'form'
@@ -0,0 +1,19 @@
1
+ - content_for(:header_actions) do
2
+ = link_to new_admin_journal_article_path, class: 'button button-primary' do
3
+ = icon 'plus'
4
+ = t '.new'
5
+
6
+ .well
7
+ .table-container
8
+ %table.table
9
+ %thead
10
+ %tr
11
+ %th= ::Spina::Admin::Journal::Volume.human_attribute_name :number
12
+ %th= ::Spina::Admin::Journal::Issue.human_attribute_name :number
13
+ %th= ::Spina::Admin::Journal::Article.human_attribute_name :number
14
+ %th= ::Spina::Admin::Journal::Issue.human_attribute_name :date
15
+ %th= ::Spina::Admin::Journal::Article.human_attribute_name :title
16
+ %th
17
+
18
+ %tbody
19
+ = render @articles.any? ? @articles : 'empty_list', message: t('.empty')
@@ -0,0 +1 @@
1
+ = render 'form'
@@ -0,0 +1,8 @@
1
+ %tr{ data: { id: author.id } }
2
+ %td= author.primary_affiliation.name
3
+ %td= author.primary_affiliation.institution.nil? ? '' : author.primary_affiliation.institution.name
4
+ %td= author.articles.count
5
+ %td.nowrap.align-right
6
+ = link_to edit_admin_journal_author_path(author.id), class: 'button button-link' do
7
+ = icon 'pencil-outline'
8
+ = t '.view'
@@ -0,0 +1,29 @@
1
+ - if @author.errors.any?
2
+ - content_for :notifications do
3
+ .notification.notification-danger.animated.fadeInRight
4
+ = icon 'exclamation'
5
+ .notification-message
6
+ = t 'spina.notifications.alert'
7
+ %small= @author.errors.full_messages.join('<br />').html_safe
8
+ = link_to '#', data: {close_notification: true} do
9
+ = icon 'cross'
10
+
11
+ = form_for @author, html: {autocomplete: "off"} do |f|
12
+ %header#header
13
+ = render partial: 'spina/admin/shared/breadcrumbs'
14
+
15
+ #header_actions
16
+ %button.button.button-primary{type: 'submit', style: 'margin-right: 0', data: {disable_with: t('spina.pages.saving')}}
17
+ = icon 'check'
18
+ = t '.save'
19
+
20
+ .button{style: 'margin-right: 0'}= link_to t('spina.cancel'), admin_journal_authors_path
21
+
22
+ %nav#secondary.tabs
23
+ %ul
24
+ - @tabs.each_with_index do |tab, i|
25
+ %li{ class: ('active' if i == 0) }
26
+ = link_to t(".#{tab}"), "##{tab}"
27
+
28
+ #details.tab-content.active= render 'form_details', f: f
29
+ #articles.tab-content= render 'form_articles', f: f
@@ -0,0 +1,20 @@
1
+ .page-form-group
2
+ .page-form-label
3
+ = ::Spina::Admin::Journal::Affiliation.human_attribute_name :first_name
4
+ .page-form-content
5
+ = ff.text_field :first_name
6
+ .page-form-group
7
+ .page-form-label
8
+ = ::Spina::Admin::Journal::Affiliation.human_attribute_name :surname
9
+ .page-form-content
10
+ = ff.text_field :surname
11
+ .page-form-group
12
+ .page-form-label
13
+ = ::Spina::Admin::Journal::Affiliation.human_attribute_name :institution
14
+ .page-form-content
15
+ = ff.collection_select :institution_id, ::Spina::Admin::Journal::Institution.sorted, :id, :name
16
+ .page-form-group
17
+ .page-form-label
18
+ = t '.primary'
19
+ .page-form-content
20
+ = radio_button_tag 'admin_journal_author[primary_affiliation_index]', ff.index, ff.object.status == 'primary'
@@ -0,0 +1,18 @@
1
+ .table-container
2
+ %table.table
3
+ %thead
4
+ %tr
5
+ %th= ::Spina::Admin::Journal::Volume.human_attribute_name :number
6
+ %th= ::Spina::Admin::Journal::Issue.human_attribute_name :number
7
+ %th= ::Spina::Admin::Journal::Article.human_attribute_name :number
8
+ %th= ::Spina::Admin::Journal::Issue.human_attribute_name :date
9
+ %th= ::Spina::Admin::Journal::Article.human_attribute_name :title
10
+ %th
11
+ %tbody
12
+ - if @author.affiliations.any?
13
+ -# render empty list if no affiliation has any articles
14
+ = render 'empty_list', message: t('.no_articles') if @author.affiliations.reduce(true) do |memo, affiliation|
15
+ = render affiliation.articles
16
+ - memo && !affiliation.articles.any?
17
+ - else
18
+ = render 'empty_list', message: t('.no_articles')
@@ -0,0 +1,6 @@
1
+ .page-form
2
+ = f.fields_for :affiliations, @author.affiliations do |ff|
3
+ .well= render 'form_affiliation', ff: ff
4
+
5
+ - unless @author.new_record?
6
+ .pull-right= link_to t('spina.permanently_delete'), admin_journal_author_path(@author), method: :delete, data: { confirm: t('.delete_confirmation', name: @author.primary_affiliation.name) }, class: 'button button-link button-danger'
@@ -0,0 +1 @@
1
+ = render 'form'
@@ -0,0 +1,17 @@
1
+ - content_for(:header_actions) do
2
+ = link_to new_admin_journal_author_path, class: 'button button-primary' do
3
+ = icon 'plus'
4
+ = t '.new'
5
+
6
+ .well
7
+ .table-container
8
+ %table.table
9
+ %thead
10
+ %tr
11
+ %th= ::Spina::Admin::Journal::Affiliation.human_attribute_name :name
12
+ %th= ::Spina::Admin::Journal::Institution.model_name.human count: :one
13
+ %th= t '.number_of_articles'
14
+ %th
15
+
16
+ %tbody
17
+ = render @authors.any? ? @authors : 'empty_list', message: t('.empty')
@@ -0,0 +1 @@
1
+ = render 'form'
@@ -0,0 +1,29 @@
1
+ - if @institution.errors.any?
2
+ - content_for :notifications do
3
+ .notification.notification-danger.animated.fadeInRight
4
+ = icon 'exclamation'
5
+ .notification-message
6
+ = t 'spina.notifications.alert'
7
+ %small= @institution.errors.full_messages.join('<br />').html_safe
8
+ = link_to '#', data: { close_notification: true } do
9
+ = icon 'cross'
10
+
11
+ = form_for @institution, html: {autocomplete: "off"} do |f|
12
+ %header#header
13
+ = render partial: 'spina/admin/shared/breadcrumbs'
14
+
15
+ #header_actions
16
+ %button.button.button-primary{ type: 'submit', style: 'margin-right: 0', data: { disable_with: t('spina.pages.saving') } }
17
+ = icon 'check'
18
+ = t '.save'
19
+
20
+ .button{ style: 'margin-right: 0' }= link_to t('spina.cancel'), admin_journal_institutions_path
21
+
22
+ %nav#secondary.tabs
23
+ %ul
24
+ - @tabs.each_with_index do |tab, i|
25
+ %li{ class: ('active' if i == 0) }
26
+ = link_to t(".#{tab}"), "##{tab}"
27
+
28
+ #details.tab-content.active= render 'form_details', f: f
29
+ #view_affiliations.tab-content= render 'form_view_affiliations', f: f
@@ -0,0 +1,9 @@
1
+ .page-form
2
+ .page-form-group
3
+ .page-form-label
4
+ = ::Spina::Admin::Journal::Institution.human_attribute_name :name
5
+ .page-form-content
6
+ = f.text_field :name
7
+
8
+ - unless @institution.new_record?
9
+ .pull-right= link_to t('spina.permanently_delete'), admin_journal_institution_path(@institution), method: :delete, data: { confirm: t('.delete_confirmation', name: @institution.name) }, class: 'button button-link button-danger'
@@ -0,0 +1,10 @@
1
+ .table-container
2
+ %table.table
3
+ %thead
4
+ %tr
5
+ %th= ::Spina::Admin::Journal::Affiliation.human_attribute_name :name
6
+ %th= ::Spina::Admin::Journal::Affiliation.human_attribute_name :institution
7
+ %th= t '.number_of_articles'
8
+ %th
9
+ %tbody
10
+ = render @institution.affiliations.any? ? @institution.affiliations : 'empty_list', message: t('.no_affiliations')
@@ -0,0 +1,9 @@
1
+ %tr{ data: { id: institution.id } }
2
+ %td
3
+ = link_to institution.name, edit_admin_journal_institution_path(institution)
4
+ %td
5
+ = institution.affiliations.count
6
+ %td.nowrap.align-right
7
+ = link_to edit_admin_journal_institution_path(institution), class: 'button button-link' do
8
+ = icon 'pencil-outline'
9
+ = t '.edit'
@@ -0,0 +1 @@
1
+ = render 'form'
@@ -0,0 +1,16 @@
1
+ - content_for(:header_actions) do
2
+ = link_to new_admin_journal_institution_path, class: 'button button-primary' do
3
+ = icon 'plus'
4
+ = t '.new'
5
+
6
+ .well
7
+ .table-container
8
+ %table.table
9
+ %thead
10
+ %tr
11
+ %th= ::Spina::Admin::Journal::Institution.human_attribute_name :name
12
+ %th= t '.number_of_affiliations'
13
+ %th
14
+
15
+ %tbody
16
+ = render @institutions.any? ? @institutions : 'empty_list', message: t('.empty')
@@ -0,0 +1 @@
1
+ = render 'form'
@@ -0,0 +1,29 @@
1
+ - if @issue.errors.any?
2
+ - content_for :notifications do
3
+ .notification.notification-danger.animated.fadeInRight
4
+ = icon 'exclamation'
5
+ .notification-message
6
+ = t 'spina.notifications.alert'
7
+ %small= @issue.errors.full_messages.join('<br />').html_safe
8
+ = link_to '#', data: { close_notification: true } do
9
+ = icon 'cross'
10
+
11
+ = form_for @issue, html: { autocomplete: 'off' } do |f|
12
+ %header#header
13
+ = render partial: 'spina/admin/shared/breadcrumbs'
14
+
15
+ #header_actions
16
+ %button.button.button-primary{ type: 'submit', style: 'margin-right: 0', data: { disable_with: t('spina.pages.saving') } }
17
+ = icon 'check'
18
+ = t '.save'
19
+
20
+ .button{style: 'margin-right: 0'}= link_to t('spina.cancel'), admin_journal_institutions_path
21
+
22
+ %nav#secondary.tabs
23
+ %ul
24
+ - @tabs.each_with_index do |tab, i|
25
+ %li{ class: ('active' if i == 0) }
26
+ = link_to t(".#{tab}"), "##{tab}"
27
+
28
+ #details.tab-content.active= render 'form_details', f: f
29
+ #articles.tab-content= render 'form_articles', f: f
@@ -0,0 +1,14 @@
1
+ .sort-message
2
+ .well
3
+ .table-container
4
+ %table.table
5
+ %thead
6
+ %tr
7
+ %th= ::Spina::Admin::Journal::Volume.human_attribute_name :number
8
+ %th= ::Spina::Admin::Journal::Issue.human_attribute_name :number
9
+ %th= ::Spina::Admin::Journal::Article.human_attribute_name :number
10
+ %th= ::Spina::Admin::Journal::Issue.human_attribute_name :date
11
+ %th= ::Spina::Admin::Journal::Article.human_attribute_name :title
12
+ %th
13
+ %tbody.html5sortable{ data: { id: @issue.id, sorted_collection: 'admin_journal_articles', sort_url: !@issue.id.nil? && sort_admin_journal_articles_url(@issue) } }
14
+ = render @issue.articles.any? ? @issue.articles : 'empty_list', message: t('.no_articles')
@@ -0,0 +1,32 @@
1
+ .page-form
2
+ .page-form-group
3
+ .page-form-label
4
+ = ::Spina::Admin::Journal::Volume.human_attribute_name :number
5
+ .page-form-content
6
+ = f.collection_select :volume_id, ::Spina::Admin::Journal::Volume.sorted_desc, :id, :number
7
+ .page-form-group
8
+ .page-form-label
9
+ = ::Spina::Admin::Journal::Issue.human_attribute_name :number
10
+ %small= t '.issue_unchangeable'
11
+ .page-form-content
12
+ = f.number_field :number, disabled: true
13
+ .page-form-group
14
+ .page-form-label
15
+ = ::Spina::Admin::Journal::Issue.human_attribute_name :title
16
+ .page-form-content
17
+ = f.text_field :title
18
+ .page-form-group
19
+ .page-form-label
20
+ = ::Spina::Admin::Journal::Issue.human_attribute_name :date
21
+ .page-form-content
22
+ = f.date_field :date
23
+ = f.fields_for :"#{@locale}_content", @parts do |ff|
24
+ = ff.hidden_field :type, value: ff.object.class.name
25
+ = ff.hidden_field :title
26
+ = ff.hidden_field :name
27
+
28
+ .page-form-group.page-part{ data: { name: ff.object.name } }
29
+ = render "spina/admin/parts/#{parts_partial_namespace(ff.object.class.name)}/form", f: ff
30
+
31
+ - unless @issue.new_record?
32
+ .pull-right= link_to t('spina.permanently_delete'), admin_journal_issue_path(@issue), method: :delete, data: { confirm: t('.delete_confirmation', number: @issue.number) }, class: 'button button-link button-danger'
@@ -0,0 +1,9 @@
1
+ %tr{ data: { id: issue.id } }
2
+ %td= issue.volume.number
3
+ %td.position-display= issue.number
4
+ %td= issue.title
5
+ %td= time_tag issue.date, format: :iso8601
6
+ %td.nowrap.align-right
7
+ = link_to edit_admin_journal_issue_path(issue.id), class: 'button button-link' do
8
+ = icon 'pencil-outline'
9
+ = t '.view'
@@ -0,0 +1 @@
1
+ = render 'form'
@@ -0,0 +1,18 @@
1
+ - content_for(:header_actions) do
2
+ = link_to new_admin_journal_issue_path, class: 'button button-primary' do
3
+ = icon 'plus'
4
+ = t '.new'
5
+
6
+ .well
7
+ .table-container
8
+ %table.table
9
+ %thead
10
+ %tr
11
+ %th= ::Spina::Admin::Journal::Volume.human_attribute_name :number
12
+ %th= ::Spina::Admin::Journal::Issue.human_attribute_name :number
13
+ %th= ::Spina::Admin::Journal::Issue.human_attribute_name :title
14
+ %th= ::Spina::Admin::Journal::Issue.human_attribute_name :date
15
+ %th
16
+
17
+ %tbody
18
+ = render @issues.any? ? @issues : 'empty_list', message: t('.empty')
@@ -0,0 +1 @@
1
+ = render 'form'
@@ -0,0 +1,35 @@
1
+ - if @journal.errors.any?
2
+ - content_for :notifications do
3
+ .notification.notification-danger.animated.fadeInRight
4
+ = icon 'exclamation'
5
+ .notification-message
6
+ = t 'spina.notifications.alert'
7
+ %small= @journal.errors.full_messages.join('<br />').html_safe
8
+ = link_to '#', data: { close_notification: true } do
9
+ = icon 'cross'
10
+
11
+ = form_for @journal, html: { autocomplete: "off" } do |f|
12
+ %header#header
13
+ .breadcrumbs
14
+ = render_breadcrumbs
15
+ #header_actions
16
+ %button.button.button-primary{ type: 'submit', style: 'margin-right: 0', data: { disable_with: t('spina.pages.saving') } }
17
+ = icon 'check'
18
+ = t '.save'
19
+ .tab-content.active
20
+ .page-form
21
+ .page-form-group
22
+ .page-form-label
23
+ = ::Spina::Admin::Journal::Journal.human_attribute_name :name
24
+ .page-form-content
25
+ = f.text_field :name
26
+ = f.fields_for :"#{@locale}_content", @parts do |ff|
27
+ = ff.hidden_field :type, value: ff.object.class.name
28
+ = ff.hidden_field :title
29
+ = ff.hidden_field :name
30
+
31
+ .page-form-group.page-part{ data: { name: ff.object.name } }
32
+ = render "spina/admin/parts/#{parts_partial_namespace(ff.object.class.name)}/form", f: ff
33
+
34
+ - unless @journal.new_record?
35
+ .pull-right= link_to t('spina.permanently_delete'), admin_journal_journal_path(@journal), method: :delete, data: { confirm: t('.delete_confirmation', name: @journal.name) }, class: 'button button-link button-danger'
@@ -0,0 +1 @@
1
+ = render 'form'