spina-admin-journal 0.5.0 → 1.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/config/spina_admin_journal_manifest.js +5 -2
- data/app/assets/javascripts/spina/admin/journal/application.js +0 -0
- data/app/components/spina/admin/journal/affiliations_list_component.rb +32 -0
- data/app/components/spina/admin/journal/application_component.rb +11 -0
- data/app/components/spina/admin/journal/articles_list_component.rb +54 -0
- data/app/components/spina/admin/journal/authors_list_component.rb +37 -0
- data/app/components/spina/admin/journal/authorships_list_component.rb +45 -0
- data/app/components/spina/admin/journal/empty_list_component.html.haml +1 -0
- data/app/components/spina/admin/journal/empty_list_component.rb +14 -0
- data/app/components/spina/admin/journal/institutions_list_component.rb +32 -0
- data/app/components/spina/admin/journal/issues_list_component.rb +47 -0
- data/app/components/spina/admin/journal/licences_list_component.rb +32 -0
- data/app/components/spina/admin/journal/list_component.html.haml +10 -0
- data/app/components/spina/admin/journal/list_component.rb +22 -0
- data/app/components/spina/admin/journal/list_item_component.html.haml +17 -0
- data/app/components/spina/admin/journal/list_item_component.rb +23 -0
- data/app/components/spina/admin/journal/volumes_list_component.rb +34 -0
- data/app/controllers/spina/admin/journal/application_controller.rb +3 -1
- data/app/controllers/spina/admin/journal/articles_controller.rb +14 -25
- data/app/controllers/spina/admin/journal/authors_controller.rb +15 -28
- data/app/controllers/spina/admin/journal/institutions_controller.rb +7 -5
- data/app/controllers/spina/admin/journal/issues_controller.rb +17 -24
- data/app/controllers/spina/admin/journal/journals_controller.rb +4 -3
- data/app/controllers/spina/admin/journal/licences_controller.rb +7 -5
- data/app/controllers/spina/admin/journal/volumes_controller.rb +9 -20
- data/app/models/spina/parts/admin/journal/page_range.rb +31 -0
- data/app/views/spina/admin/hooks/journal/_primary_navigation.html.haml +35 -26
- data/app/views/spina/admin/journal/articles/_form.html.haml +23 -24
- data/app/views/spina/admin/journal/articles/_form_authors.html.haml +1 -15
- data/app/views/spina/admin/journal/articles/_form_details.html.haml +27 -56
- data/app/views/spina/admin/journal/articles/index.html.haml +7 -17
- data/app/views/spina/admin/journal/authors/_form.html.haml +24 -24
- data/app/views/spina/admin/journal/authors/_form_affiliation.html.haml +8 -20
- data/app/views/spina/admin/journal/authors/_form_articles.html.haml +1 -18
- data/app/views/spina/admin/journal/authors/_form_details.html.haml +2 -6
- data/app/views/spina/admin/journal/authors/index.html.haml +7 -15
- data/app/views/spina/admin/journal/institutions/_form.html.haml +24 -24
- data/app/views/spina/admin/journal/institutions/_form_details.html.haml +2 -8
- data/app/views/spina/admin/journal/institutions/_form_view_affiliations.html.haml +1 -10
- data/app/views/spina/admin/journal/institutions/index.html.haml +7 -15
- data/app/views/spina/admin/journal/issues/_form.html.haml +23 -23
- data/app/views/spina/admin/journal/issues/_form_articles.html.haml +1 -14
- data/app/views/spina/admin/journal/issues/_form_details.html.haml +13 -28
- data/app/views/spina/admin/journal/issues/index.html.haml +7 -16
- data/app/views/spina/admin/journal/journals/_form.html.haml +22 -32
- data/app/views/spina/admin/journal/licences/_form.html.haml +19 -34
- data/app/views/spina/admin/journal/licences/index.html.haml +7 -16
- data/app/views/spina/admin/journal/volumes/_form.html.haml +25 -12
- data/app/views/spina/admin/journal/volumes/_form_details.html.haml +4 -10
- data/app/views/spina/admin/journal/volumes/_form_issues.html.haml +1 -13
- data/app/views/spina/admin/journal/volumes/index.html.haml +7 -16
- data/app/views/spina/admin/parts/admin/journal/page_ranges/_form.html.haml +6 -0
- data/config/locales/en.yml +25 -3
- data/config/routes.rb +5 -5
- data/db/migrate/20210626153728_create_spina_parts_admin_journal_page_ranges.rb +7 -0
- data/lib/spina/admin/journal/engine.rb +18 -0
- data/lib/spina/admin/journal/version.rb +1 -1
- data/lib/spina/admin/journal.rb +1 -0
- metadata +50 -65
- data/app/assets/javascripts/spina/admin/journal/application.es6 +0 -72
- data/app/views/layouts/spina/admin/journal/articles.html.haml +0 -10
- data/app/views/layouts/spina/admin/journal/authors.html.haml +0 -10
- data/app/views/layouts/spina/admin/journal/institutions.html.haml +0 -10
- data/app/views/layouts/spina/admin/journal/issues.html.haml +0 -10
- data/app/views/layouts/spina/admin/journal/journals.html.haml +0 -10
- data/app/views/layouts/spina/admin/journal/licences.html.haml +0 -10
- data/app/views/layouts/spina/admin/journal/volumes.html.haml +0 -10
- data/app/views/spina/admin/journal/affiliations/_affiliation.html.haml +0 -8
- data/app/views/spina/admin/journal/application/_empty_list.html.haml +0 -3
- data/app/views/spina/admin/journal/articles/_article.html.haml +0 -10
- data/app/views/spina/admin/journal/authors/_author.html.haml +0 -8
- data/app/views/spina/admin/journal/authorships/_authorship.html.haml +0 -9
- data/app/views/spina/admin/journal/institutions/_institution.html.haml +0 -9
- data/app/views/spina/admin/journal/issues/_issue.html.haml +0 -9
- data/app/views/spina/admin/journal/journals/index.html.haml +0 -27
- data/app/views/spina/admin/journal/licences/_licence.html.haml +0 -11
- data/app/views/spina/admin/journal/volumes/_volume.html.haml +0 -7
- data/vendor/assets/javascripts/spina/admin/journal/html5sortable.js +0 -1295
@@ -1,6 +1,2 @@
|
|
1
|
-
.
|
2
|
-
=
|
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'
|
1
|
+
= f.fields_for :affiliations, @author.affiliations do |ff|
|
2
|
+
.well= render 'form_affiliation', ff: ff
|
@@ -1,17 +1,9 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
= render Spina::UserInterface::HeaderComponent.new do |header|
|
2
|
+
- header.actions do
|
3
|
+
.ml-3
|
4
|
+
= link_to new_admin_journal_author_path, class: 'btn btn-primary w-full' do
|
5
|
+
= heroicon 'plus', style: :solid, class: 'w-7 h-7 -m1-2'
|
6
|
+
= t '.new'
|
5
7
|
|
6
|
-
.
|
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
|
8
|
+
= render Spina::Admin::Journal::AuthorsListComponent.new(authors: @authors)
|
15
9
|
|
16
|
-
%tbody
|
17
|
-
= render @authors.any? ? @authors : 'empty_list', message: t('.empty')
|
@@ -1,29 +1,29 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
1
|
+
%div{ data: { controller: 'tabs',
|
2
|
+
tabs: { active: 'cursor-default text-gray-900 bg-spina-dark bg-opacity-10',
|
3
|
+
inactive: 'cursor-pointer bg-transparent text-gray-400 border-transparent' } } }
|
4
|
+
= render Spina::UserInterface::HeaderComponent.new do |header|
|
5
|
+
- header.actions do
|
6
|
+
- if @institution.persisted?
|
7
|
+
= render Spina::UserInterface::DropdownComponent.new do |dropdown|
|
8
|
+
- dropdown.button(classes: "btn btn-default px-3") do
|
9
|
+
= heroicon('dots-horizontal', style: :solid, class: "w-5 h-5 text-gray-600")
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
= render partial: 'spina/admin/shared/breadcrumbs'
|
11
|
+
- dropdown.menu do
|
12
|
+
= button_to t('spina.permanently_delete'), admin_journal_institution_path(@institution), method: :delete, class: "block w-full text-left px-4 py-2 text-sm leading-5 font-medium text-red-500 cursor-pointer bg-white hover:bg-red-100 hover:bg-opacity-50 hover:text-red-500 focus:outline-none focus:bg-gray-100 focus:text-gray-900", form: {data: { controller: 'confirm', confirm_message: t('.delete_confirmation', name: @institution.name) } }
|
14
13
|
|
15
|
-
|
16
|
-
|
17
|
-
= icon 'check'
|
14
|
+
= button_tag type: :submit, form: dom_id(@institution), class: 'btn btn-primary', data: { controller: 'button', action: 'button#loading', loading_message: t('spina.ui.saving')} do
|
15
|
+
= heroicon('check', style: :solid, class: 'w-5 h-5 mr-1 -ml-2')
|
18
16
|
= t '.save'
|
19
17
|
|
20
|
-
|
18
|
+
- header.navigation do
|
19
|
+
%nav.-mb-3.mt-4
|
20
|
+
%ul.inline-flex.w-auto.rounded-md.bg-white
|
21
|
+
- @tabs.each do |tab|
|
22
|
+
%button.block.px-3.leading-relaxed.py-1.hover:text-gray-800.rounded-md.text-gray-400.font-medium.text-sm.flex.items-center.whitespace-nowrap{ type: 'button', data: { action: 'tabs#show', 'tabs-target': 'button', 'pane-id': "#{tab}" } }
|
23
|
+
= t ".#{tab}"
|
21
24
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
#details.tab-content.active= render 'form_details', f: f
|
29
|
-
#view_affiliations.tab-content= render 'form_view_affiliations', f: f
|
25
|
+
.p-4.md:p-8
|
26
|
+
= form_with model: [spina, :admin_journal, @institution], id: dom_id(@institution), html: { autocomplete: 'off' } do |f|
|
27
|
+
- @tabs.each_with_index do |tab, i|
|
28
|
+
%div{ 'data-tabs-target': 'pane', id: tab, hidden: i != 0 }
|
29
|
+
= render "form_#{tab}", f: f
|
@@ -1,9 +1,3 @@
|
|
1
|
-
.
|
2
|
-
.
|
3
|
-
.page-form-label
|
4
|
-
= ::Spina::Admin::Journal::Institution.human_attribute_name :name
|
5
|
-
.page-form-content
|
6
|
-
= f.text_field :name
|
1
|
+
= render Spina::Forms::GroupComponent.new(label: Spina::Admin::Journal::Institution.human_attribute_name(:name)) do
|
2
|
+
= render Spina::Forms::TextFieldComponent.new(f, :name)
|
7
3
|
|
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'
|
@@ -1,10 +1 @@
|
|
1
|
-
.
|
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')
|
1
|
+
= render Spina::Admin::Journal::AffiliationsListComponent.new(affiliations: @institution.affiliations.sorted)
|
@@ -1,16 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
= render Spina::UserInterface::HeaderComponent.new do |header|
|
2
|
+
- header.actions do
|
3
|
+
.ml-3
|
4
|
+
= link_to new_admin_journal_institution_path, class: 'btn btn-primary w-full' do
|
5
|
+
= heroicon 'plus', style: :solid, class: 'w-7 h-7 -m1-2'
|
6
|
+
= t '.new'
|
5
7
|
|
6
|
-
.
|
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')
|
8
|
+
= render Spina::Admin::Journal::InstitutionsListComponent.new(institutions: @institutions)
|
@@ -1,29 +1,29 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
1
|
+
%div{ data: { controller: 'tabs',
|
2
|
+
tabs: { active: 'cursor-default text-gray-900 bg-spina-dark bg-opacity-10',
|
3
|
+
inactive: 'cursor-pointer bg-transparent text-gray-400 border-transparent' } } }
|
4
|
+
= render Spina::UserInterface::HeaderComponent.new do |header|
|
5
|
+
- header.actions do
|
6
|
+
- if @issue.persisted?
|
7
|
+
= render Spina::UserInterface::DropdownComponent.new do |dropdown|
|
8
|
+
- dropdown.button(classes: "btn btn-default px-3") do
|
9
|
+
= heroicon('dots-horizontal', style: :solid, class: "w-5 h-5 text-gray-600")
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
= render partial: 'spina/admin/shared/breadcrumbs'
|
11
|
+
- dropdown.menu do
|
12
|
+
= button_to t('spina.permanently_delete'), admin_journal_issue_path(@issue), method: :delete, class: "block w-full text-left px-4 py-2 text-sm leading-5 font-medium text-red-500 cursor-pointer bg-white hover:bg-red-100 hover:bg-opacity-50 hover:text-red-500 focus:outline-none focus:bg-gray-100 focus:text-gray-900", form: {data: { controller: 'confirm', confirm_message: t('.delete_confirmation', number: @issue.number) } }
|
14
13
|
|
15
|
-
|
16
|
-
|
17
|
-
= icon 'check'
|
14
|
+
= button_tag type: :submit, form: dom_id(@issue), class: 'btn btn-primary', data: { controller: 'button', action: 'button#loading', loading_message: t('spina.ui.saving')} do
|
15
|
+
= heroicon('check', style: :solid, class: 'w-5 h-5 mr-1 -ml-2')
|
18
16
|
= t '.save'
|
19
17
|
|
20
|
-
|
18
|
+
- header.navigation do
|
19
|
+
%nav.-mb-3.mt-4
|
20
|
+
%ul.inline-flex.w-auto.rounded-md.bg-white
|
21
|
+
- @tabs.each do |tab|
|
22
|
+
%button.block.px-3.leading-relaxed.py-1.hover:text-gray-800.rounded-md.text-gray-400.font-medium.text-sm.flex.items-center.whitespace-nowrap{ type: 'button', data: { action: 'tabs#show', 'tabs-target': 'button', 'pane-id': "#{tab}" } }
|
23
|
+
= t ".#{tab}"
|
21
24
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
= link_to t(".#{tab}"), "##{tab}"
|
25
|
+
.p-4.md:p-8
|
26
|
+
- @tabs.each_with_index do |tab, i|
|
27
|
+
%div{ 'data-tabs-target': 'pane', id: tab, hidden: i != 0 }
|
28
|
+
= render "form_#{tab}"
|
27
29
|
|
28
|
-
#details.tab-content.active= render 'form_details', f: f
|
29
|
-
#articles.tab-content= render 'form_articles', f: f
|
@@ -1,14 +1 @@
|
|
1
|
-
.
|
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')
|
1
|
+
= render Spina::Admin::Journal::ArticlesListComponent.new(articles: @issue.articles, sortable: true)
|
@@ -1,32 +1,17 @@
|
|
1
|
-
|
2
|
-
.
|
3
|
-
.
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
.
|
8
|
-
.
|
9
|
-
|
10
|
-
|
11
|
-
|
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
|
1
|
+
= form_with model: [spina, :admin_journal, @issue], id: dom_id(@issue), html: { autocomplete: 'off' } do |f|
|
2
|
+
= render Spina::Forms::GroupComponent.new(label: Spina::Admin::Journal::Volume.human_attribute_name(:number)) do
|
3
|
+
= f.collection_select :volume_id, ::Spina::Admin::Journal::Volume.sorted_desc, :id, :number
|
4
|
+
= render Spina::Forms::GroupComponent.new(label: Spina::Admin::Journal::Issue.human_attribute_name(:number),
|
5
|
+
description: t('.issue_unchangeable')) do
|
6
|
+
= f.number_field :number, disabled: true
|
7
|
+
= render Spina::Forms::GroupComponent.new(label: Spina::Admin::Journal::Issue.human_attribute_name(:title)) do
|
8
|
+
= render Spina::Forms::TextFieldComponent.new(f, :title)
|
9
|
+
= render Spina::Forms::GroupComponent.new(label: Spina::Admin::Journal::Issue.human_attribute_name(:date)) do
|
10
|
+
= f.date_field :date
|
11
|
+
|
23
12
|
= f.fields_for :"#{@locale}_content", @parts do |ff|
|
24
|
-
= ff.hidden_field :type, value: ff.object.class
|
13
|
+
= ff.hidden_field :type, value: ff.object.class
|
25
14
|
= ff.hidden_field :title
|
26
15
|
= ff.hidden_field :name
|
27
16
|
|
28
|
-
|
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'
|
17
|
+
= render "spina/admin/parts/#{parts_partial_namespace(ff.object.class.to_s)}/form", f: ff
|
@@ -1,18 +1,9 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
= render Spina::UserInterface::HeaderComponent.new do |header|
|
2
|
+
- header.actions do
|
3
|
+
.ml-3
|
4
|
+
= link_to new_admin_journal_issue_path, class: 'btn btn-primary w-full' do
|
5
|
+
= heroicon 'plus', style: :solid, class: 'w-7 h-7 -m1-2'
|
6
|
+
= t '.new'
|
5
7
|
|
6
|
-
.
|
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
|
8
|
+
= render Spina::Admin::Journal::IssuesListComponent.new(issues: @issues, sortable: false)
|
16
9
|
|
17
|
-
%tbody
|
18
|
-
= render @issues.any? ? @issues : 'empty_list', message: t('.empty')
|
@@ -1,35 +1,25 @@
|
|
1
|
-
|
2
|
-
-
|
3
|
-
|
4
|
-
=
|
5
|
-
|
6
|
-
|
7
|
-
%small= @journal.errors.full_messages.join('<br />').html_safe
|
8
|
-
= link_to '#', data: { close_notification: true } do
|
9
|
-
= icon 'cross'
|
1
|
+
= render Spina::UserInterface::HeaderComponent.new do |header|
|
2
|
+
- header.actions do
|
3
|
+
- if @journal.persisted?
|
4
|
+
= render Spina::UserInterface::DropdownComponent.new do |dropdown|
|
5
|
+
- dropdown.button(classes: "btn btn-default px-3") do
|
6
|
+
= heroicon('dots-horizontal', style: :solid, class: "w-5 h-5 text-gray-600")
|
10
7
|
|
11
|
-
|
12
|
-
|
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
|
8
|
+
- dropdown.menu do
|
9
|
+
= button_to t('spina.permanently_delete'), admin_journal_journal_path(@journal), method: :delete, class: "block w-full text-left px-4 py-2 text-sm leading-5 font-medium text-red-500 cursor-pointer bg-white hover:bg-red-100 hover:bg-opacity-50 hover:text-red-500 focus:outline-none focus:bg-gray-100 focus:text-gray-900", form: {data: { controller: 'confirm', confirm_message: t('.delete_confirmation', name: @journal.name) } }
|
30
10
|
|
31
|
-
|
32
|
-
|
11
|
+
= button_tag type: :submit, form: dom_id(@journal), class: 'btn btn-primary', data: { controller: 'button', action: 'button#loading', loading_message: t('spina.ui.saving')} do
|
12
|
+
= heroicon('check', style: :solid, class: 'w-5 h-5 mr-1 -ml-2')
|
13
|
+
= t '.save'
|
33
14
|
|
34
|
-
|
35
|
-
|
15
|
+
.p-4.md:p-8
|
16
|
+
= form_with model: [spina, :admin_journal, @journal], id: dom_id(@journal), html: { autocomplete: 'off' } do |f|
|
17
|
+
= render Spina::Forms::GroupComponent.new(label: Spina::Admin::Journal::Journal.human_attribute_name(:name)) do
|
18
|
+
= render Spina::Forms::TextFieldComponent.new(f, :name)
|
19
|
+
|
20
|
+
= f.fields_for :"#{@locale}_content", @parts do |ff|
|
21
|
+
= ff.hidden_field :type, value: ff.object.class
|
22
|
+
= ff.hidden_field :title
|
23
|
+
= ff.hidden_field :name
|
24
|
+
|
25
|
+
= render "spina/admin/parts/#{parts_partial_namespace(ff.object.class.to_s)}/form", f: ff
|
@@ -1,43 +1,28 @@
|
|
1
|
-
|
2
|
-
-
|
3
|
-
|
4
|
-
=
|
5
|
-
|
6
|
-
|
7
|
-
%small= @licence.errors.full_messages.join('<br />').html_safe
|
8
|
-
= link_to '#', data: { close_notification: true } do
|
9
|
-
= icon 'cross'
|
1
|
+
= render Spina::UserInterface::HeaderComponent.new do |header|
|
2
|
+
- header.actions do
|
3
|
+
- if @licence.persisted?
|
4
|
+
= render Spina::UserInterface::DropdownComponent.new do |dropdown|
|
5
|
+
- dropdown.button(classes: "btn btn-default px-3") do
|
6
|
+
= heroicon('dots-horizontal', style: :solid, class: "w-5 h-5 text-gray-600")
|
10
7
|
|
11
|
-
|
12
|
-
|
13
|
-
= render partial: 'spina/admin/shared/breadcrumbs'
|
8
|
+
- dropdown.menu do
|
9
|
+
= button_to t('spina.permanently_delete'), admin_journal_licence_path(@licence), method: :delete, class: "block w-full text-left px-4 py-2 text-sm leading-5 font-medium text-red-500 cursor-pointer bg-white hover:bg-red-100 hover:bg-opacity-50 hover:text-red-500 focus:outline-none focus:bg-gray-100 focus:text-gray-900", form: {data: { controller: 'confirm', confirm_message: t('.delete_confirmation', name: @licence.name) } }
|
14
10
|
|
15
|
-
#
|
16
|
-
|
17
|
-
|
18
|
-
= t '.save'
|
11
|
+
= button_tag type: :submit, form: dom_id(@licence), class: 'btn btn-primary', data: { controller: 'button', action: 'button#loading', loading_message: t('spina.ui.saving')} do
|
12
|
+
= heroicon('check', style: :solid, class: 'w-5 h-5 mr-1 -ml-2')
|
13
|
+
= t '.save'
|
19
14
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
.page-form-content
|
27
|
-
= f.text_field :name
|
28
|
-
.page-form-group
|
29
|
-
.page-form-label
|
30
|
-
= ::Spina::Admin::Journal::Licence.human_attribute_name :abbreviated_name
|
31
|
-
.page-form-content
|
32
|
-
= f.text_field :abbreviated_name
|
15
|
+
.p-4.md:p-8
|
16
|
+
= form_with model: [spina, :admin_journal, @licence], id: dom_id(@licence), html: { autocomplete: 'off' } do |f|
|
17
|
+
= render Spina::Forms::GroupComponent.new(label: Spina::Admin::Journal::Licence.human_attribute_name(:name)) do
|
18
|
+
= render Spina::Forms::TextFieldComponent.new(f, :name)
|
19
|
+
= render Spina::Forms::GroupComponent.new(label: Spina::Admin::Journal::Licence.human_attribute_name(:abbreviated_name)) do
|
20
|
+
= render Spina::Forms::TextFieldComponent.new(f, :abbreviated_name)
|
33
21
|
|
34
22
|
= f.fields_for :"#{@locale}_content", @parts do |ff|
|
35
|
-
= ff.hidden_field :type, value: ff.object.class
|
23
|
+
= ff.hidden_field :type, value: ff.object.class
|
36
24
|
= ff.hidden_field :title
|
37
25
|
= ff.hidden_field :name
|
38
26
|
|
39
|
-
|
40
|
-
= render "spina/admin/parts/#{parts_partial_namespace(ff.object.class.name)}/form", f: ff
|
27
|
+
= render "spina/admin/parts/#{parts_partial_namespace(ff.object.class.to_s)}/form", f: ff
|
41
28
|
|
42
|
-
- unless @licence.new_record?
|
43
|
-
.pull-right= link_to t('spina.permanently_delete'), admin_journal_licence_path(@licence), method: :delete, data: { confirm: t('.delete_confirmation', name: @licence.name) }, class: 'button button-link button-danger'
|
@@ -1,17 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
= render Spina::UserInterface::HeaderComponent.new do |header|
|
2
|
+
- header.actions do
|
3
|
+
.ml-3
|
4
|
+
= link_to new_admin_journal_licence_path, class: 'btn btn-primary w-full' do
|
5
|
+
= heroicon 'plus', style: :solid, class: 'w-7 h-7 -m1-2'
|
6
|
+
= t '.new'
|
5
7
|
|
6
|
-
.
|
7
|
-
.table-container
|
8
|
-
%table.table
|
9
|
-
%thead
|
10
|
-
%tr
|
11
|
-
%th= ::Spina::Admin::Journal::Licence.human_attribute_name :name
|
12
|
-
%th= ::Spina::Admin::Journal::Licence.human_attribute_name :abbreviated_name
|
13
|
-
%th= t '.num_articles'
|
14
|
-
%th
|
15
|
-
|
16
|
-
%tbody
|
17
|
-
= render @licences.any? ? @licences : 'empty_list', message: t('.empty')
|
8
|
+
= render Spina::Admin::Journal::LicencesListComponent.new(licences: @licences)
|
@@ -1,15 +1,28 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
%div{ data: { controller: 'tabs',
|
2
|
+
tabs: { active: 'cursor-default text-gray-900 bg-spina-dark bg-opacity-10',
|
3
|
+
inactive: 'cursor-pointer bg-transparent text-gray-400 border-transparent' } } }
|
4
|
+
= render Spina::UserInterface::HeaderComponent.new do |header|
|
5
|
+
- header.actions do
|
6
|
+
- if @volume.persisted?
|
7
|
+
= render Spina::UserInterface::DropdownComponent.new do |dropdown|
|
8
|
+
- dropdown.button(classes: "btn btn-default px-3") do
|
9
|
+
= heroicon('dots-horizontal', style: :solid, class: "w-5 h-5 text-gray-600")
|
4
10
|
|
5
|
-
|
6
|
-
|
11
|
+
- dropdown.menu do
|
12
|
+
= button_to t('spina.permanently_delete'), admin_journal_volume_path(@volume), method: :delete, class: "block w-full text-left px-4 py-2 text-sm leading-5 font-medium text-red-500 cursor-pointer bg-white hover:bg-red-100 hover:bg-opacity-50 hover:text-red-500 focus:outline-none focus:bg-gray-100 focus:text-gray-900", form: {data: { controller: 'confirm', confirm_message: t('.delete_confirmation', number: @volume.number) } }
|
7
13
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
%li{ class: ('active' if i == 0) }
|
12
|
-
= link_to t(".#{tab}"), "##{tab}"
|
14
|
+
= button_tag type: :submit, form: dom_id(@volume), class: 'btn btn-primary', data: { controller: 'button', action: 'button#loading', loading_message: t('spina.ui.saving')} do
|
15
|
+
= heroicon('check', style: :solid, class: 'w-5 h-5 mr-1 -ml-2')
|
16
|
+
= t '.save'
|
13
17
|
|
14
|
-
|
15
|
-
|
18
|
+
- header.navigation do
|
19
|
+
%nav.-mb-3.mt-4
|
20
|
+
%ul.inline-flex.w-auto.rounded-md.bg-white
|
21
|
+
- @tabs.each do |tab|
|
22
|
+
%button.block.px-3.leading-relaxed.py-1.hover:text-gray-800.rounded-md.text-gray-400.font-medium.text-sm.flex.items-center.whitespace-nowrap{ type: 'button', data: { action: 'tabs#show', 'tabs-target': 'button', 'pane-id': "#{tab}" } }
|
23
|
+
= t ".#{tab}"
|
24
|
+
|
25
|
+
.p-4.md:p-8
|
26
|
+
- @tabs.each_with_index do |tab, i|
|
27
|
+
%div{ 'data-tabs-target': 'pane', id: tab, hidden: i != 0 }
|
28
|
+
= render "form_#{tab}"
|
@@ -1,10 +1,4 @@
|
|
1
|
-
|
2
|
-
.
|
3
|
-
|
4
|
-
|
5
|
-
%small= t '.unchangeable'
|
6
|
-
.page-form-content
|
7
|
-
= f.number_field :number, disabled: true
|
8
|
-
|
9
|
-
- unless @volume.new_record?
|
10
|
-
.pull-right= link_to t('spina.permanently_delete'), admin_journal_volume_path(@volume), method: :delete, data: { confirm: t('.delete_confirmation', number: @volume.number) }, class: 'button button-link button-danger'
|
1
|
+
= form_with model: [spina, :admin_journal, @volume], id: dom_id(@volume), html: { autocomplete: 'off' } do |f|
|
2
|
+
= render Spina::Forms::GroupComponent.new(label: Spina::Admin::Journal::Volume.human_attribute_name(:number),
|
3
|
+
description: t('.unchangeable')) do
|
4
|
+
= f.number_field :number, disabled: true
|
@@ -1,13 +1 @@
|
|
1
|
-
.
|
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::Issue.human_attribute_name :title
|
10
|
-
%th= ::Spina::Admin::Journal::Issue.human_attribute_name :date
|
11
|
-
%th
|
12
|
-
%tbody.html5sortable{ data: { id: @volume.id, sorted_collection: 'admin_journal_issues', sort_url: sort_admin_journal_issues_url(@volume) } }
|
13
|
-
= render @volume.issues.any? ? @volume.issues.sorted_asc : 'empty_list', message: t('.no_issues')
|
1
|
+
= render Spina::Admin::Journal::IssuesListComponent.new(issues: @volume.issues, sortable: true)
|
@@ -1,17 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
= render Spina::UserInterface::HeaderComponent.new do |header|
|
2
|
+
- header.actions do
|
3
|
+
.ml-3
|
4
|
+
= link_to new_admin_journal_volume_path, class: 'btn btn-primary w-full' do
|
5
|
+
= heroicon 'plus', style: :solid, class: 'w-7 h-7 -m1-2'
|
6
|
+
= t '.new'
|
5
7
|
|
6
|
-
.
|
7
|
-
.well
|
8
|
-
.table-container
|
9
|
-
%table.table
|
10
|
-
%thead
|
11
|
-
%tr
|
12
|
-
%th= ::Spina::Admin::Journal::Volume.human_attribute_name :number
|
13
|
-
%th= t '.date'
|
14
|
-
%th
|
15
|
-
|
16
|
-
%tbody.html5sortable{ data: { id: ::Spina::Admin::Journal::Journal.instance.id, sorted_collection: 'admin_journal_volumes', sort_url: sort_admin_journal_volumes_url(::Spina::Admin::Journal::Journal.instance.id) } }
|
17
|
-
= render @volumes.any? ? @volumes : 'empty_list', message: t('.empty')
|
8
|
+
= render Spina::Admin::Journal::VolumesListComponent.new(volumes: @volumes)
|