5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-06-02 08:34:17 +00:00

fix: hacer que los locales sean bidireccionales #10491 #12064

This commit is contained in:
f 2023-03-22 13:43:13 -03:00
parent 823ac94e74
commit 88c1ffe4b8
2 changed files with 16 additions and 43 deletions

View file

@ -1,21 +1,14 @@
# frozen_string_literal: true
# Los valores de este metadato son artículos en otros idiomas
class MetadataLocales < MetadataTemplate
def default_value
super || []
end
class MetadataLocales < MetadataHasAndBelongsToMany
# Todos los valores posibles para cada idioma disponible
#
# TODO: Optimizar?
# TODO: Mantener sincronizados
#
# @return { lang: { title: uuid } }
def values
@values ||= site.locales.map do |locale|
[locale, site.posts(lang: locale).map do |post|
[post.title.value, post.uuid.value]
[title(post), post.uuid.value]
end.to_h]
end.to_h
end

View file

@ -1,39 +1,19 @@
-#
%fieldset
%legend= post_label_t(attribute, post: post)
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.
= render 'posts/attribute_feedback',
post: post, attribute: attribute, metadata: metadata
TODO: Esto permite seleccionar más de una traducción por idioma...
- site.locales.each do |locale|
- next if post.lang.value == locale
- locale_t = t("locales.#{locale}.name")
- site.locales.each do |locale|
-# Ignorar el idioma actual
- next if post.lang.value == locale
- locale_t = t("locales.#{locale}.name")
- values = metadata.value.select do |x|
- metadata.values[locale].values.include? x
.form-group
= label_tag "#{base}_#{attribute}_#{locale}", locale_t
.form-group
= label_tag "#{base}_#{attribute}_#{locale}", locale_t
= select_tag("#{plain_field_name_for(base, attribute)}[]",
options_for_select(metadata.values[locale]),
**field_options(attribute, metadata), include_blank: t('.empty'))
.mapable{ dir: t("locales.#{locale}.dir"), lang: locale,
data: { values: values.to_json,
'default-values': metadata.values[locale].to_json,
name: "#{base}[#{attribute}][]",
list: id_for_datalist(attribute, locale),
button: t('posts.attributes.add'),
remove: 'false', legend: locale_t,
described: id_for_help(attribute, locale) } }
= text_field(*field_name_for(base, attribute, '[]'),
value: values.join(', '),
dir: t("locales.#{locale}.dir"), lang: locale,
**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].keys.each do |value|
%option{ value: value }
= render 'posts/attribute_feedback',
post: post, attribute: attribute, metadata: metadata