WIP traducciones, ya se pueden editar
This commit is contained in:
parent
8d991c4c75
commit
b41696c15c
9 changed files with 51 additions and 1 deletions
|
@ -16,6 +16,7 @@ class PostsController < ApplicationController
|
||||||
@site = find_site
|
@site = find_site
|
||||||
@category = params.dig(:category)
|
@category = params.dig(:category)
|
||||||
@layout = params.dig(:layout).try(:to_sym)
|
@layout = params.dig(:layout).try(:to_sym)
|
||||||
|
@locale = locale
|
||||||
|
|
||||||
# XXX: Cada vez que cambiamos un Post tocamos el sitio con lo que es
|
# XXX: Cada vez que cambiamos un Post tocamos el sitio con lo que es
|
||||||
# más simple saber si hubo cambios.
|
# más simple saber si hubo cambios.
|
||||||
|
|
|
@ -235,6 +235,8 @@ class Site < ApplicationRecord
|
||||||
#
|
#
|
||||||
# TODO: Traer recursivamente, si el campo contiene Hash
|
# TODO: Traer recursivamente, si el campo contiene Hash
|
||||||
#
|
#
|
||||||
|
# TODO: Mover a PostRelation#pluck
|
||||||
|
#
|
||||||
# @param attr [Symbol|String] El atributo a buscar
|
# @param attr [Symbol|String] El atributo a buscar
|
||||||
# @return Array
|
# @return Array
|
||||||
def everything_of(attr, lang: nil)
|
def everything_of(attr, lang: nil)
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
.taggable{ data: { values: metadata.value.join(','),
|
.taggable{ data: { values: metadata.value.join(','),
|
||||||
name: "post[#{attribute}][]", list: id_for_datalist(attribute),
|
name: "post[#{attribute}][]", list: id_for_datalist(attribute),
|
||||||
remove: 'false', legend: post_label_t(attribute, post: post),
|
remove: 'false', legend: post_label_t(attribute, post: post),
|
||||||
|
button: t('posts.attributes.add'),
|
||||||
described: id_for_help(attribute) } }
|
described: id_for_help(attribute) } }
|
||||||
|
|
||||||
= text_field(*field_name_for('post', attribute, '[]'),
|
= text_field(*field_name_for('post', attribute, '[]'),
|
||||||
|
|
36
app/views/posts/attributes/_locales.haml
Normal file
36
app/views/posts/attributes/_locales.haml
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
-#
|
||||||
|
|
||||||
|
Crea un input-map para cada idioma por separado. Podríamos hacer uno
|
||||||
|
solo que tenga todos los idiomas pero puede ser una interfaz confusa.
|
||||||
|
|
||||||
|
TODO: Esto permite seleccionar más de una traducción por idioma...
|
||||||
|
|
||||||
|
- site.locales.each do |locale|
|
||||||
|
-# Ignorar el idioma actual
|
||||||
|
- next if post.lang.value == locale
|
||||||
|
- values = metadata.value.select do |x|
|
||||||
|
- metadata.values[locale.to_sym].values.include? x
|
||||||
|
|
||||||
|
.form-group
|
||||||
|
= label_tag "post_#{attribute}_#{locale}", t(locale)
|
||||||
|
|
||||||
|
.mapable{ data: { values: values.to_json,
|
||||||
|
'default-values': metadata.values[locale.to_sym].to_json,
|
||||||
|
name: "post[#{attribute}][]",
|
||||||
|
list: id_for_datalist(attribute, locale),
|
||||||
|
button: t('posts.attributes.add'),
|
||||||
|
remove: 'false', legend: t(locale),
|
||||||
|
described: id_for_help(attribute, locale) } }
|
||||||
|
|
||||||
|
= text_field(*field_name_for('post', attribute, '[]'),
|
||||||
|
value: values.join(', '),
|
||||||
|
**field_options(attribute, metadata))
|
||||||
|
|
||||||
|
= render 'posts/attribute_feedback',
|
||||||
|
post: post,
|
||||||
|
attribute: [attribute, 'mapable'].flatten,
|
||||||
|
metadata: metadata
|
||||||
|
|
||||||
|
%datalist{ id: id_for_datalist(attribute, locale) }
|
||||||
|
- metadata.values[locale.to_sym].keys.each do |value|
|
||||||
|
%option{ value: value }
|
|
@ -5,6 +5,7 @@
|
||||||
'default-values': metadata.values.to_json,
|
'default-values': metadata.values.to_json,
|
||||||
name: "post[#{attribute}][]", list: id_for_datalist(attribute),
|
name: "post[#{attribute}][]", list: id_for_datalist(attribute),
|
||||||
remove: 'false', legend: post_label_t(attribute, post: post),
|
remove: 'false', legend: post_label_t(attribute, post: post),
|
||||||
|
button: t('posts.attributes.add'),
|
||||||
described: id_for_help(attribute) } }
|
described: id_for_help(attribute) } }
|
||||||
|
|
||||||
= text_field(*field_name_for('post', attribute, '[]'),
|
= text_field(*field_name_for('post', attribute, '[]'),
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
'default-values': metadata.values.to_json,
|
'default-values': metadata.values.to_json,
|
||||||
name: "post[#{attribute}][]", list: id_for_datalist(attribute),
|
name: "post[#{attribute}][]", list: id_for_datalist(attribute),
|
||||||
remove: 'false', legend: post_label_t(attribute, post: post),
|
remove: 'false', legend: post_label_t(attribute, post: post),
|
||||||
|
button: t('posts.attributes.add'),
|
||||||
described: id_for_help(attribute) } }
|
described: id_for_help(attribute) } }
|
||||||
|
|
||||||
= text_field(*field_name_for('post', attribute, '[]'),
|
= text_field(*field_name_for('post', attribute, '[]'),
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
.locales
|
.locales
|
||||||
- @site.locales.each do |locale|
|
- @site.locales.each do |locale|
|
||||||
= link_to t(locale), site_posts_path(@site, locale: locale),
|
= link_to t(locale), site_posts_path(@site, locale: locale),
|
||||||
class: 'mr-2 mt-2 mb-2'
|
class: "mr-2 mt-2 mb-2#{locale == @locale ? 'active font-weight-bold' : ''}"
|
||||||
%table.table.table-condensed.table-draggable
|
%table.table.table-condensed.table-draggable
|
||||||
%tbody
|
%tbody
|
||||||
- @posts.each_with_index do |post, i|
|
- @posts.each_with_index do |post, i|
|
||||||
|
|
|
@ -368,6 +368,7 @@ en:
|
||||||
invalid_help: 'Some fields need attention! Please search for the fields marked as invalid.'
|
invalid_help: 'Some fields need attention! Please search for the fields marked as invalid.'
|
||||||
sending_help: Saving, please wait...
|
sending_help: Saving, please wait...
|
||||||
attributes:
|
attributes:
|
||||||
|
add: Add
|
||||||
lang:
|
lang:
|
||||||
label: Language
|
label: Language
|
||||||
date:
|
date:
|
||||||
|
@ -381,6 +382,9 @@ en:
|
||||||
geo:
|
geo:
|
||||||
uri: 'Open in app'
|
uri: 'Open in app'
|
||||||
osm: 'Open in web map'
|
osm: 'Open in web map'
|
||||||
|
locales:
|
||||||
|
mapable:
|
||||||
|
help: You can link to the article's translation by looking up its title here and pressing Add
|
||||||
reorder: 'Reorder posts'
|
reorder: 'Reorder posts'
|
||||||
sort:
|
sort:
|
||||||
by: 'Sort by'
|
by: 'Sort by'
|
||||||
|
|
|
@ -376,6 +376,7 @@ es:
|
||||||
invalid_help: '¡Te faltan completar algunos campos! Busca los que estén marcados como inválidos'
|
invalid_help: '¡Te faltan completar algunos campos! Busca los que estén marcados como inválidos'
|
||||||
sending_help: Guardando, por favor espera...
|
sending_help: Guardando, por favor espera...
|
||||||
attributes:
|
attributes:
|
||||||
|
add: Agregar
|
||||||
lang:
|
lang:
|
||||||
label: Idioma
|
label: Idioma
|
||||||
date:
|
date:
|
||||||
|
@ -389,6 +390,9 @@ es:
|
||||||
geo:
|
geo:
|
||||||
uri: 'Abrir en aplicación'
|
uri: 'Abrir en aplicación'
|
||||||
osm: 'Abrir en mapa web'
|
osm: 'Abrir en mapa web'
|
||||||
|
locales:
|
||||||
|
mapable:
|
||||||
|
help: Puedes vincular traducciones buscando el título aquí y presionando Agregar
|
||||||
reorder: 'Reordenar artículos'
|
reorder: 'Reordenar artículos'
|
||||||
sort:
|
sort:
|
||||||
by: 'Ordenar por'
|
by: 'Ordenar por'
|
||||||
|
|
Loading…
Reference in a new issue