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

Sign up to get free protection for your applications and to get access to all the features.
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