preferir las traducciones del sitio a las de sutty
This commit is contained in:
parent
35357c318f
commit
72c4952e7e
5 changed files with 57 additions and 20 deletions
|
@ -26,7 +26,7 @@ class ApplicationController < ActionController::Base
|
||||||
|
|
||||||
def find_post(site)
|
def find_post(site)
|
||||||
id = params[:post_id] || params[:id]
|
id = params[:post_id] || params[:id]
|
||||||
lang = find_lang
|
lang = find_lang(site)
|
||||||
posts = site.posts_for(lang)
|
posts = site.posts_for(lang)
|
||||||
|
|
||||||
posts.find do |p|
|
posts.find do |p|
|
||||||
|
@ -34,8 +34,15 @@ class ApplicationController < ActionController::Base
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def find_lang
|
def find_lang(site)
|
||||||
params.fetch(:lang, I18n.locale.to_s)
|
params.fetch(:lang, site.default_lang)
|
||||||
|
end
|
||||||
|
|
||||||
|
def find_template(site)
|
||||||
|
id = params[:template_id] || params[:id]
|
||||||
|
site.templates.find do |t|
|
||||||
|
t.id == id
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_locale
|
def set_locale
|
||||||
|
|
|
@ -2,8 +2,8 @@ class PostsController < ApplicationController
|
||||||
before_action :authenticate!
|
before_action :authenticate!
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@lang = find_lang
|
|
||||||
@site = find_site
|
@site = find_site
|
||||||
|
@lang = find_lang(@site)
|
||||||
@category = session[:category] = params.dig(:category)
|
@category = session[:category] = params.dig(:category)
|
||||||
@posts = @site.posts_for(@lang)
|
@posts = @site.posts_for(@lang)
|
||||||
|
|
||||||
|
@ -15,20 +15,20 @@ class PostsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
@lang = find_lang
|
|
||||||
@site = find_site
|
@site = find_site
|
||||||
|
@lang = find_lang(@site)
|
||||||
@post = find_post(@site)
|
@post = find_post(@site)
|
||||||
end
|
end
|
||||||
|
|
||||||
def new
|
def new
|
||||||
@lang = find_lang
|
|
||||||
@site = find_site
|
@site = find_site
|
||||||
|
@lang = find_lang(@site)
|
||||||
@post = Post.new(site: @site, front_matter: { date: Time.now }, lang: @lang)
|
@post = Post.new(site: @site, front_matter: { date: Time.now }, lang: @lang)
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
@lang = find_lang
|
|
||||||
@site = find_site
|
@site = find_site
|
||||||
|
@lang = find_lang(@site)
|
||||||
@post = Post.new(site: @site, front_matter: post_params.to_hash, lang: @lang)
|
@post = Post.new(site: @site, front_matter: post_params.to_hash, lang: @lang)
|
||||||
|
|
||||||
if @post.save
|
if @post.save
|
||||||
|
@ -39,15 +39,15 @@ class PostsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def edit
|
def edit
|
||||||
@lang = find_lang
|
|
||||||
@site = find_site
|
@site = find_site
|
||||||
|
@lang = find_lang(@site)
|
||||||
@post = find_post(@site)
|
@post = find_post(@site)
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
p = post_params
|
p = post_params
|
||||||
@lang = find_lang
|
|
||||||
@site = find_site
|
@site = find_site
|
||||||
|
@lang = find_lang(@site)
|
||||||
@post = find_post(@site)
|
@post = find_post(@site)
|
||||||
|
|
||||||
@post.update_attributes(p)
|
@post.update_attributes(p)
|
||||||
|
|
|
@ -13,7 +13,36 @@ class Site
|
||||||
|
|
||||||
# Determina si el sitio está en varios idiomas
|
# Determina si el sitio está en varios idiomas
|
||||||
def i18n?
|
def i18n?
|
||||||
@jekyll.config.dig('i18n').present?
|
!translations.empty?
|
||||||
|
end
|
||||||
|
|
||||||
|
# Obtiene la lista de traducciones actuales
|
||||||
|
def translations
|
||||||
|
@jekyll.config.dig('i18n') || []
|
||||||
|
end
|
||||||
|
|
||||||
|
# Devuelve el idioma por defecto del sitio
|
||||||
|
#
|
||||||
|
# TODO: volver elegante
|
||||||
|
def default_lang
|
||||||
|
# Si está traducido, intentamos saber si podemos trabajar en el
|
||||||
|
# idioma actual de la plataforma.
|
||||||
|
if i18n?
|
||||||
|
i18n = I18n.locale.to_s
|
||||||
|
if translations.include? i18n
|
||||||
|
# Podemos trabajar en el idioma actual
|
||||||
|
i18n
|
||||||
|
else
|
||||||
|
# Sino, trabajamos con el primer idioma
|
||||||
|
translations.first
|
||||||
|
end
|
||||||
|
else
|
||||||
|
# Si el sitio no está traducido, estamos trabajando con posts en
|
||||||
|
# cualquier idioma
|
||||||
|
#
|
||||||
|
# XXX: no será un dirty hack?
|
||||||
|
'posts'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Obtener el nombre del sitio
|
# Obtener el nombre del sitio
|
||||||
|
|
|
@ -115,14 +115,15 @@
|
||||||
options_for_select(@site.everything_of(:materiales_requeridos, lang: @lang), @post.get_front_matter(:materiales_requeridos)),
|
options_for_select(@site.everything_of(:materiales_requeridos, lang: @lang), @post.get_front_matter(:materiales_requeridos)),
|
||||||
{ class: 'form-control select2', multiple: 'multiple' }
|
{ class: 'form-control select2', multiple: 'multiple' }
|
||||||
%small.text-muted.form-text= t('posts.materiales_requeridos_help')
|
%small.text-muted.form-text= t('posts.materiales_requeridos_help')
|
||||||
- I18n.available_locales.map(&:to_s).each do |lang|
|
- if @site.i18n?
|
||||||
- next if lang == @lang
|
- @site.translations.each do |lang|
|
||||||
.form-group
|
- next if lang == @lang
|
||||||
= label_tag 'post_lang', t("posts.lang.#{lang}")
|
.form-group
|
||||||
= select_tag "post[lang][#{lang}]",
|
= label_tag 'post_lang', t("posts.lang.#{lang}")
|
||||||
options_for_select(@site.posts_for(lang).map { |p| [p.title, p.id] },
|
= select_tag "post[lang][#{lang}]",
|
||||||
@post.get_front_matter(:lang).try(:dig, lang)),
|
options_for_select(@site.posts_for(lang).map { |p| [p.title, p.id] },
|
||||||
{ class: 'form-control select2' }
|
@post.get_front_matter(:lang).try(:dig, lang)),
|
||||||
%small.text-muted.form-text= t('posts.lang_help')
|
{ class: 'form-control select2' }
|
||||||
|
%small.text-muted.form-text= t('posts.lang_help')
|
||||||
.form-group
|
.form-group
|
||||||
= submit_tag t('posts.save'), class: 'btn btn-success'
|
= submit_tag t('posts.save'), class: 'btn btn-success'
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
.btn-group
|
.btn-group
|
||||||
= link_to t('posts.new'), new_site_post_path(@site, lang: @lang),
|
= link_to t('posts.new'), new_site_post_path(@site, lang: @lang),
|
||||||
class: 'btn btn-success'
|
class: 'btn btn-success'
|
||||||
- I18n.available_locales.map(&:to_s).each do |l|
|
- @site.translations.each do |l|
|
||||||
= link_to t("i18n.#{l}"), site_posts_path(@site, category: @category, lang: l),
|
= link_to t("i18n.#{l}"), site_posts_path(@site, category: @category, lang: l),
|
||||||
class: 'btn btn-info'
|
class: 'btn btn-info'
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue