Skip to content
Snippets Groups Projects
Commit 86485961 authored by Arnaud Levy's avatar Arnaud Levy
Browse files

refactor

parent 6c92c0eb
No related branches found
No related tags found
No related merge requests found
......@@ -28,9 +28,10 @@ class Communication::Website < ApplicationRecord
has_many :pages, foreign_key: :communication_website_id
def self.about_types
[nil, :research_journal, :school]
[nil, Research::Journal.name]
end
def domain_url
"https://#{ domain }"
end
......
......@@ -21,6 +21,7 @@
#
class Research::Journal < ApplicationRecord
belongs_to :university
has_one :website, class_name: 'Communication::Website', foreign_key: :about
has_many :volumes, foreign_key: :research_journal_id
has_many :articles, foreign_key: :research_journal_id
......
......@@ -38,7 +38,17 @@ class Research::Journal::Article < ApplicationRecord
protected
def publish_to_github
return if journal.repository.blank?
Github.publish_article self
return if journal.website&.repository.blank?
github = Github.new journal.website.access_token, journal.website.repository
data = ApplicationController.render(
template: 'admin/research/journal/articles/jekyll',
layout: false,
assigns: { article: self }
)
github.publish local_directory: "tmp/articles",
local_file: "#{id}.md",
data: data,
remote_file: "_articles/#{id}.md",
commit_message: "Save volume #{ title }"
end
end
......@@ -38,7 +38,17 @@ class Research::Journal::Volume < ApplicationRecord
protected
def publish_to_github
return if journal.repository.blank?
Github.publish_volume self
return if journal.website&.repository.blank?
github = Github.new journal.website.access_token, journal.website.repository
data = ApplicationController.render(
template: 'admin/research/journal/volumes/jekyll',
layout: false,
assigns: { volume: self }
)
github.publish local_directory: "tmp/volumes",
local_file: "#{id}.md",
data: data,
remote_file: "_volumes/#{id}.md",
commit_message: "Save volume #{ title }"
end
end
class Github
attr_reader :access_token, :repository
def self.publish_article(article)
with_journal(article.journal).publish_article(article)
end
def self.publish_volume(volume)
with_journal(volume.journal).publish_volume(volume)
end
def self.with_journal(journal)
new(journal.access_token, journal.repository)
end
def initialize(access_token, repository)
@access_token = access_token
@repository = repository
end
def publish_article(article)
data = ApplicationController.render(
template: 'admin/research/journal/articles/jekyll',
layout: false,
assigns: { article: article }
)
publish local_directory: "tmp/articles",
local_file: "#{article.id}.md",
data: data,
remote_file: "_articles/#{article.id}.md",
commit_message: "Save article #{ article.title }"
end
def publish_volume(volume)
data = ApplicationController.render(
template: 'admin/research/journal/volumes/jekyll',
layout: false,
assigns: { volume: volume }
)
publish local_directory: "tmp/volumes",
local_file: "#{volume.id}.md",
data: data,
remote_file: "_volumes/#{volume.id}.md",
commit_message: "Save volume #{ volume.title }"
end
def publish(local_directory:, local_file:, data:, remote_file:, commit_message:)
FileUtils.mkdir_p local_directory
local_path = "#{local_directory}/#{ local_file }"
......
......@@ -8,6 +8,16 @@
I18n.t("activerecord.attributes.communication/website.about_#{object}")
},
include_blank: false %>
<%
unless website.about_type.blank?
case website.about_type
when Research::Journal.name
collection = current_university.research_journals
end
%>
<%= f.input :about_id,
collection: collection %>
<% end %>
</div>
<div class="col-md-4">
<%= f.input :domain %>
......
......@@ -4,6 +4,11 @@
<%= link_to @website.domain_url, @website.domain_url, target: :_blank %>
</p>
<p>
<%= I18n.t("activerecord.attributes.communication/website.about_#{@website.about_type}") %>
<%= link_to @website.about, [:admin, @website.about] unless @website.about.nil? %>
</p>
<% content_for :buttons do %>
<%= edit_link @website %>
<% end %>
......
......@@ -2,11 +2,6 @@
<div class="row">
<div class="col-md-6">
<%= f.input :title %>
<%= f.input :repository %>
<%= f.input :access_token %>
</div>
<div class="col-md-6">
<%= f.input :description %>
</div>
</div>
<% content_for :buttons do %>
......
......@@ -5,7 +5,7 @@
<tr>
<th><%= Research::Journal.human_attribute_name('title') %></th>
<th><%= Research::Journal::Volume.model_name.human(count: 2) %></th>
<th>Articles</th>
<th><%= Research::Journal::Article.model_name.human(count: 2) %></th>
<th></th>
</tr>
</thead>
......@@ -15,7 +15,7 @@
<tr>
<td><%= link_to journal, [:admin, journal] %></td>
<td><%= link_to "#{journal.volumes.count}", admin_research_journal_volumes_path(journal_id: journal) %></td>
<td></td>
<td><%= link_to "#{journal.articles.count}", admin_research_journal_articles_path(journal_id: journal) %></td>
<td class="text-end">
<%= edit_link journal %>
<%= destroy_link journal %>
......
<% content_for :title, @journal %>
<p><%= @journal.description %></p>
<% if @journal.website %>
<p>
Site :
<%= link_to @journal.website, [:admin, @journal.website] %>
</p>
<% end %>
<h2 class="mt-5"><%= Research::Journal::Volume.model_name.human(count: 2) %></h2>
......
......@@ -16,5 +16,5 @@ fr:
domain: Domaine
about_type: Sujet du site
about_: Aucun sujet (site indépendant)
about_research_journal: Site de revue scientifique
about_school: Site d'école
about_Research::Journal: Site de revue scientifique
about_School: Site d'école
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment