spina-admin-journal 1.0.0.rc2 → 1.0.0.rc3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e9dfe8f35c6a45f02481c7259fb3a6d5eba37cae6c7725c5e82f7a5658a340a7
4
- data.tar.gz: 4daa82dba66f3f02c473db5d8a165934b68241af3069ddae1c509b246e6ae936
3
+ metadata.gz: f786acd82a7df514c811bd3fd8fd06220b030d58858b1897bde326f62ee03d3c
4
+ data.tar.gz: 8b02e8903963f11402ce612ac7a53c77c851dc17ba5425edf333eab8c875ab07
5
5
  SHA512:
6
- metadata.gz: 56e6ce7ac600354e6dd0c2bfba6d7b702661ecd6da9ac6666f44890f62805f3853bfa14c81475a33cf4e84350ed20f446d7e6e3beb2833ea73e1133057acc036
7
- data.tar.gz: f6ae39891fe012f049cfedb9517ec2a386de90b82c947db39f46e24eb783c94bee25cbc0caf37a52c0f5b9925a6d7318d79ef2aab27aecf7da23acb89872576b
6
+ metadata.gz: 50c4507b1747a4a17db2b16836626f72cc8d149676af9ef9e442daa81e192af21bce6c913168e8f570474d2f0052b5cc5df1fde1c8e4c3d963fc85f07ac66eb0
7
+ data.tar.gz: 4f8a96788318d91f69911489a979a258c87020690e3a6e6f5ec006911a140388a77056e9e2ff83434eedbfc8944437bbf4c445b9b4c088c1af8acf60c724c877
data/README.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Spina::Admin::Journal
2
2
 
3
+ *Journal* is a plugin for [Spina](https://www.spinacms.com/) that provides a fully-fledged journal management package, intended to provide a more streamlined, easy-to-use, modern alternative to [OJS](https://pkp.sfu.ca/ojs/).
4
+
5
+ Spina is a content management system built in [Ruby on Rails](http://rubyonrails.org/). *Journal* augments Spina by providing an admin interface for managing an academic journal.
6
+
3
7
  ![Rails tests](https://github.com/louis-vs/spina-admin-journal/workflows/Verify/badge.svg?branch=master&event=push)
4
8
  [![codecov](https://codecov.io/gh/louis-vs/spina-admin-journal/branch/master/graph/badge.svg?token=9TZ9QGGLAH)](https://codecov.io/gh/louis-vs/spina-admin-journal)
5
9
  [![CodeFactor](https://www.codefactor.io/repository/github/louis-vs/spina-admin-journal/badge)](https://www.codefactor.io/repository/github/louis-vs/spina-admin-journal)
@@ -7,69 +11,48 @@
7
11
  [![Code quality: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/louis-vs/spina-admin-journal.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/louis-vs/spina-admin-journal/context:javascript)
8
12
  [![Inline docs](http://inch-ci.org/github/louis-vs/spina-admin-journal.svg?branch=master)](http://inch-ci.org/github/louis-vs/spina-admin-journal)
9
13
 
10
- *Journal* is a plugin for [Spina](https://www.spinacms.com/), a content management system built in [Ruby on Rails](http://rubyonrails.org/). *Journal* augments Spina by providing an admin interface for managing an academic journal.
11
-
12
- ## Usage
13
-
14
- The plugin adds two menus to Spina's primary navigation:
15
-
16
- * **Journal settings** provides access to global properties of the journal. It is divided into 3 submenus:
17
- * **Journal** allows you to change the name of the journal.
18
- * **Institutions** allows you to add institutions, to which authors can be affiliated.
19
- * **Authors** allows you to add authors, who can then be added to articles.
20
- * The **journal content** menu will be named after the journal as specified in Journal Settings. It provides a means of editing the content of the journal and is divided into three submenus:
21
- * **Volumes** allows you to add and remove volumes of the journal, and edit their respective issues.
22
- * **Issues** allows you to add, edit and remove issues of particular volumes of the journal, and edit their respective articles.
23
- * **Articles** allows you to add, edit and remove articles belonging to particular issues.
14
+ ## Features
24
15
 
25
- The plugin does not provide any public-facing frontend. However, an example implementation can be found at **[TBC]**.
16
+ The journal plugin covers many of the needs of a professional online journal publication, including:
26
17
 
27
- **NB this plugin is currently a work in progress**: please wait until an official release to use this plugin in production.
18
+ - Simple, responsive, intuitive interface that builds upon Spina's own.
19
+ - Seamlessly integrate published content with other information about the journal.
20
+ - Manage volumes, issues, articles and authors in a highly structured and organised manner.
21
+ - Keep track of individual authors with multiple affiliations, e.g. if they change name or institution, connecting with [ORCID](https://orcid.org/).
28
22
 
29
- ## Installation
30
-
31
- ### From scratch
32
-
33
- Make sure you have a working installation of Ruby on Rails 6.1. You can find a setup guide [here](https://guides.rubyonrails.org/getting_started.html).
34
-
35
- Then run:
36
-
37
- ```bash
38
- $ rails new your-app --database=postgresql
39
- $ cd your-app
40
- $ bin/rails db:create
41
- $ bin/rails active_storage:install
42
- ```
23
+ Currently, a submissions management system is not included, but this is planned for a future release. This will allow you to manage the submissions process for the journal in a streamlined manner in parallel to publication.
43
24
 
44
- Add this line to your new application's Gemfile:
25
+ ## Usage
45
26
 
46
- ```ruby
47
- gem 'spina', '~> 2.0'
48
- ```
27
+ The plugin adds two menus to Spina's primary navigation:
49
28
 
50
- And then execute:
29
+ - **Journal settings** provides access to global properties of the journal. It is divided into 3 submenus:
30
+ - **Journal** allows you to change metadata such as the name of the journal, as well as content that will appear on the journal homepage.
31
+ - **Institutions** allows you to add institutions, to which authors can be affiliated.
32
+ - **Authors** allows you to add authors and their affiliations, which can then be added to articles.
33
+ - **Licences** allows you to add licences and association information, which can be associated with individual articles, representing the licence under which the content is released.
34
+ - The **journal content** menu will be named after the journal as specified in Journal Settings. It provides a means of editing the content of the journal and is divided into three submenus:
35
+ - **Volumes** allows you to add and remove volumes of the journal, and edit their respective issues.
36
+ - **Issues** allows you to add, edit and remove issues of particular volumes of the journal, and edit their respective articles.
37
+ - **Articles** allows you to add, edit and remove articles belonging to particular issues.
51
38
 
52
- ```bash
53
- $ bundle install
54
- ```
39
+ **NB:** This release of the plugin does not provide any public-facing frontend or Spina theme. An example implementation can be found within the [Conferences Primer Theme](https://github.com/louis-vs/spina-conferences-primer_theme-fork). Note that this theme also contains frontends for two other Spina plugins, [Spina Conferences Blog](https://github.com/louis-vs/spina-admin-conferences-blog) and [Spina Admin Conferences](https://github.com/louis-vs/spina-admin-conferences-fork/). You can use the theme in your project as is, or copy whichever parts of the code you need.
55
40
 
56
- Run the Spina install generator:
41
+ A dedicated journal theme, coupled with an automatic installer, is being planned. A system to manage submissions is also on the roadmap.
57
42
 
58
- ```bash
59
- $ bin/rails g spina:install
60
- ```
43
+ ## Installation
61
44
 
62
- And follow the prompts. Once this is complete, follow the instructions below.
45
+ Make sure you have a working installation of Ruby on Rails 7. You can find a setup guide [here](https://guides.rubyonrails.org/getting_started.html).
63
46
 
64
- ### For existing Spina installations
47
+ You then need to install Spina, following the guide [on the Spina website](https://spinacms.com/docs).
65
48
 
66
- Add this line to your application's Gemfile:
49
+ To install the plugin, add this line to your application's Gemfile:
67
50
 
68
51
  ```ruby
69
- gem 'spina-admin-journal', '~> 0.1'
52
+ gem 'spina-admin-journal', '~> 1.0'
70
53
  ```
71
54
 
72
- And then execute:
55
+ Then execute:
73
56
 
74
57
  ```bash
75
58
  $ bundle install
@@ -78,7 +61,7 @@ $ bundle install
78
61
  You'll then need to install and run the migrations for the journal:
79
62
 
80
63
  ```bash
81
- $ bin/rails spina_admin_journal_engine:install:migrations
64
+ $ bin/rails spina_admin_journal:install:migrations
82
65
  $ bin/rails db:migrate
83
66
  ```
84
67
 
@@ -94,6 +77,11 @@ You can manually populate the database from within the app, or alternatively you
94
77
 
95
78
  Bug reports and feature requests are welcome in the [Issues](https://github.com/louis-vs/spina-admin-journal/issues) section. Translations are also very welcome!
96
79
 
80
+ ### Planned features
81
+
82
+ - [ ] Submissions management
83
+ - [ ] Translations
84
+
97
85
  ## License
98
86
 
99
87
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -25,7 +25,7 @@ module Spina
25
25
 
26
26
  before_action :set_breadcrumb
27
27
  before_action :set_tabs, except: %i[index destroy sort]
28
- before_action :set_article, only: %i[edit update destroy]
28
+ before_action :set_article, only: %i[edit view_authors update destroy]
29
29
  before_action :set_parts_attributes, only: %i[new edit]
30
30
  before_action :build_parts, only: %i[edit]
31
31
 
@@ -43,6 +43,10 @@ module Spina
43
43
 
44
44
  def edit; end
45
45
 
46
+ def view_authors
47
+ render layout: false
48
+ end
49
+
46
50
  def create # rubocop:disable Metrics/AbcSize
47
51
  @article = Article.new(article_params)
48
52
  sister_articles = Article.where(issue: @article.issue_id)
@@ -7,7 +7,7 @@ module Spina
7
7
  class AuthorsController < ApplicationController
8
8
  before_action :set_breadcrumb
9
9
  before_action :set_tabs, except: %i[index destroy]
10
- before_action :set_author, only: %i[edit update destroy]
10
+ before_action :set_author, only: %i[edit view_articles update destroy]
11
11
 
12
12
  admin_section :journal_settings
13
13
 
@@ -23,6 +23,10 @@ module Spina
23
23
 
24
24
  def edit; end
25
25
 
26
+ def view_articles
27
+ render layout: false
28
+ end
29
+
26
30
  def create
27
31
  @author = Author.new(modified_params)
28
32
  if @author.save
@@ -7,7 +7,7 @@ module Spina
7
7
  class InstitutionsController < ApplicationController
8
8
  before_action :set_breadcrumb
9
9
  before_action :set_tabs, except: %i[index destroy]
10
- before_action :set_institution, only: %i[edit update destroy]
10
+ before_action :set_institution, only: %i[edit view_affiliations update destroy]
11
11
 
12
12
  admin_section :journal_settings
13
13
 
@@ -22,6 +22,10 @@ module Spina
22
22
 
23
23
  def edit; end
24
24
 
25
+ def view_affiliations
26
+ render layout: false
27
+ end
28
+
25
29
  def create
26
30
  @institution = Institution.new(institution_params)
27
31
 
@@ -25,8 +25,8 @@ module Spina
25
25
 
26
26
  before_action :set_breadcrumb
27
27
  before_action :set_tabs, except: %i[index destroy sort]
28
- before_action :set_issue, only: %i[edit update destroy]
29
- before_action :set_articles, only: %i[edit update]
28
+ before_action :set_issue, only: %i[edit view_articles update destroy]
29
+ before_action :set_articles, only: %i[edit view_articles update]
30
30
  before_action :set_parts_attributes, only: %i[new edit]
31
31
  before_action :build_parts, only: %i[edit]
32
32
 
@@ -48,6 +48,10 @@ module Spina
48
48
  add_breadcrumb t('spina.admin.journal.issues.issue_number', number: @issue.number)
49
49
  end
50
50
 
51
+ def view_articles
52
+ render layout: false
53
+ end
54
+
51
55
  def create # rubocop:disable Metrics/AbcSize
52
56
  @issue = Issue.new(issue_params)
53
57
  sister_issues = Issue.where(volume: @issue.volume_id)
@@ -7,7 +7,7 @@ module Spina
7
7
  class VolumesController < ApplicationController
8
8
  before_action :set_breadcrumb
9
9
  before_action :set_tabs, except: %i[index destroy]
10
- before_action :set_volume, only: %i[edit destroy]
10
+ before_action :set_volume, only: %i[edit view_issues destroy]
11
11
 
12
12
  admin_section :journal
13
13
 
@@ -17,6 +17,10 @@ module Spina
17
17
 
18
18
  def edit; end
19
19
 
20
+ def view_issues
21
+ render layout: false
22
+ end
23
+
20
24
  def new
21
25
  create
22
26
  end
@@ -1,2 +1,3 @@
1
- .-mt-4.md:-mt-8
2
- = render Spina::Admin::Journal::AuthorshipsListComponent.new(authorships: @article.authorships.sorted_within_article, sortable: true)
1
+ - if @article.persisted?
2
+ .-mt-4.md:-mt-8
3
+ %turbo-frame#article_authors{ src: spina.view_authors_admin_journal_article_path(@article), loading: 'lazy' }
@@ -0,0 +1,2 @@
1
+ %turbo-frame#article_authors
2
+ = render Spina::Admin::Journal::AuthorshipsListComponent.new(authorships: @article.authorships.sorted_within_article, sortable: true)
@@ -1,2 +1,3 @@
1
- .-mt-4.md:-mt-8
2
- = render Spina::Admin::Journal::ArticlesListComponent.new(articles: @author.affiliations.reduce([]) { |memo, affiliation| memo << affiliation.articles.to_a }.flatten )
1
+ - if @author.persisted?
2
+ .-mt-4.md:-mt-8
3
+ %turbo-frame#author_articles{ src: spina.view_articles_admin_journal_author_path(@author), loading: 'lazy' }
@@ -0,0 +1,2 @@
1
+ %turbo-frame#author_articles
2
+ = render Spina::Admin::Journal::ArticlesListComponent.new(articles: @author.affiliations.reduce([]) { |memo, affiliation| memo << affiliation.articles.to_a }.flatten )
@@ -1,2 +1,3 @@
1
- .-mt-4.md:-mt-8
2
- = render Spina::Admin::Journal::AffiliationsListComponent.new(affiliations: @institution.affiliations.sorted)
1
+ - if @institution.persisted?
2
+ .-mt-4.md:-mt-8
3
+ %turbo-frame#institution_affiliations{ src: spina.view_affiliations_admin_journal_institution_path(@institution), loading: 'lazy' }
@@ -0,0 +1,2 @@
1
+ %turbo-frame#institution_affiliations
2
+ = render Spina::Admin::Journal::AffiliationsListComponent.new(affiliations: @institution.affiliations.sorted)
@@ -1,2 +1,3 @@
1
- .-mt-4.md:-mt-8
2
- = render Spina::Admin::Journal::ArticlesListComponent.new(articles: @issue.articles, sortable: true)
1
+ - if @issue.persisted?
2
+ .-mt-4.md:-mt-8
3
+ %turbo-frame#issue_articles{ src: spina.view_articles_admin_journal_issue_path(@issue), loading: 'lazy' }
@@ -0,0 +1,3 @@
1
+ %turbo-frame#issue_articles
2
+ = render Spina::Admin::Journal::ArticlesListComponent.new(articles: @issue.articles, sortable: true)
3
+
@@ -1,2 +1,2 @@
1
1
  .-mt-4.md:-mt-8
2
- = render Spina::Admin::Journal::IssuesListComponent.new(issues: @volume.issues, sortable: true)
2
+ %turbo-frame#volume_issues{ src: spina.view_issues_admin_journal_volume_path(@volume), loading: 'lazy' }
@@ -0,0 +1,2 @@
1
+ %turbo-frame#volume_issues
2
+ = render Spina::Admin::Journal::IssuesListComponent.new(issues: @volume.issues, sortable: true)
data/config/routes.rb CHANGED
@@ -6,18 +6,38 @@ Spina::Engine.routes.draw do
6
6
  resources :journals, only: %i[edit update destroy]
7
7
  resources :volumes, except: %i[show update] do
8
8
  post 'sort/:journal_id' => 'volumes#sort', as: :sort, on: :collection
9
+
10
+ member do
11
+ get :view_issues
12
+ end
9
13
  end
10
14
  resources :issues, except: %i[show] do
11
15
  post 'sort/:volume_id' => 'issues#sort', as: :sort, on: :collection
16
+
17
+ member do
18
+ get :view_articles
19
+ end
12
20
  end
13
21
  resources :articles, except: %i[show] do
14
22
  post 'sort/:issue_id' => 'articles#sort', as: :sort, on: :collection
23
+
24
+ member do
25
+ get :view_authors
26
+ end
15
27
  end
16
28
  resources :authors, except: %i[show] do
17
29
  post 'sort/:article_id' => 'authors#sort', as: :sort, on: :collection
30
+
31
+ member do
32
+ get :view_articles
33
+ end
18
34
  end
19
35
 
20
- resources :institutions, except: %i[show]
36
+ resources :institutions, except: %i[show] do
37
+ member do
38
+ get :view_affiliations
39
+ end
40
+ end
21
41
  resources :licences, except: %i[show]
22
42
  end
23
43
  end
@@ -3,7 +3,7 @@
3
3
  module Spina
4
4
  module Admin
5
5
  module Journal
6
- VERSION = '1.0.0.rc2'
6
+ VERSION = '1.0.0.rc3'
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spina-admin-journal
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc2
4
+ version: 1.0.0.rc3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Louis Van Steene
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-30 00:00:00.000000000 Z
11
+ date: 2022-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: haml-rails
@@ -305,6 +305,7 @@ files:
305
305
  - app/views/spina/admin/journal/articles/edit.html.haml
306
306
  - app/views/spina/admin/journal/articles/index.html.haml
307
307
  - app/views/spina/admin/journal/articles/new.html.haml
308
+ - app/views/spina/admin/journal/articles/view_authors.html.haml
308
309
  - app/views/spina/admin/journal/authors/_form.html.haml
309
310
  - app/views/spina/admin/journal/authors/_form_affiliation.html.haml
310
311
  - app/views/spina/admin/journal/authors/_form_articles.html.haml
@@ -312,18 +313,21 @@ files:
312
313
  - app/views/spina/admin/journal/authors/edit.html.haml
313
314
  - app/views/spina/admin/journal/authors/index.html.haml
314
315
  - app/views/spina/admin/journal/authors/new.html.haml
316
+ - app/views/spina/admin/journal/authors/view_articles.html.haml
315
317
  - app/views/spina/admin/journal/institutions/_form.html.haml
316
318
  - app/views/spina/admin/journal/institutions/_form_details.html.haml
317
319
  - app/views/spina/admin/journal/institutions/_form_view_affiliations.html.haml
318
320
  - app/views/spina/admin/journal/institutions/edit.html.haml
319
321
  - app/views/spina/admin/journal/institutions/index.html.haml
320
322
  - app/views/spina/admin/journal/institutions/new.html.haml
323
+ - app/views/spina/admin/journal/institutions/view_affiliations.html.haml
321
324
  - app/views/spina/admin/journal/issues/_form.html.haml
322
325
  - app/views/spina/admin/journal/issues/_form_articles.html.haml
323
326
  - app/views/spina/admin/journal/issues/_form_details.html.haml
324
327
  - app/views/spina/admin/journal/issues/edit.html.haml
325
328
  - app/views/spina/admin/journal/issues/index.html.haml
326
329
  - app/views/spina/admin/journal/issues/new.html.haml
330
+ - app/views/spina/admin/journal/issues/view_articles.html.haml
327
331
  - app/views/spina/admin/journal/journals/_form.html.haml
328
332
  - app/views/spina/admin/journal/journals/edit.html.haml
329
333
  - app/views/spina/admin/journal/journals/new.html.haml
@@ -337,6 +341,7 @@ files:
337
341
  - app/views/spina/admin/journal/volumes/edit.html.haml
338
342
  - app/views/spina/admin/journal/volumes/index.html.haml
339
343
  - app/views/spina/admin/journal/volumes/new.html.haml
344
+ - app/views/spina/admin/journal/volumes/view_issues.html.haml
340
345
  - app/views/spina/admin/parts/admin/journal/page_ranges/_form.html.haml
341
346
  - config/locales/en.yml
342
347
  - config/routes.rb