mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-16 17:46:21 +00:00
parent
823ac94e74
commit
88c1ffe4b8
2 changed files with 16 additions and 43 deletions
|
@ -1,21 +1,14 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
# Los valores de este metadato son artículos en otros idiomas
|
# Los valores de este metadato son artículos en otros idiomas
|
||||||
class MetadataLocales < MetadataTemplate
|
class MetadataLocales < MetadataHasAndBelongsToMany
|
||||||
def default_value
|
|
||||||
super || []
|
|
||||||
end
|
|
||||||
|
|
||||||
# Todos los valores posibles para cada idioma disponible
|
# Todos los valores posibles para cada idioma disponible
|
||||||
#
|
#
|
||||||
# TODO: Optimizar?
|
|
||||||
# TODO: Mantener sincronizados
|
|
||||||
#
|
|
||||||
# @return { lang: { title: uuid } }
|
# @return { lang: { title: uuid } }
|
||||||
def values
|
def values
|
||||||
@values ||= site.locales.map do |locale|
|
@values ||= site.locales.map do |locale|
|
||||||
[locale, site.posts(lang: locale).map do |post|
|
[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.to_h
|
end.to_h
|
||||||
end
|
end
|
||||||
|
|
|
@ -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
|
= render 'posts/attribute_feedback',
|
||||||
solo que tenga todos los idiomas pero puede ser una interfaz confusa.
|
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|
|
.form-group
|
||||||
-# Ignorar el idioma actual
|
= label_tag "#{base}_#{attribute}_#{locale}", locale_t
|
||||||
- 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
|
= select_tag("#{plain_field_name_for(base, attribute)}[]",
|
||||||
= label_tag "#{base}_#{attribute}_#{locale}", locale_t
|
options_for_select(metadata.values[locale]),
|
||||||
|
**field_options(attribute, metadata), include_blank: t('.empty'))
|
||||||
|
|
||||||
.mapable{ dir: t("locales.#{locale}.dir"), lang: locale,
|
= render 'posts/attribute_feedback',
|
||||||
data: { values: values.to_json,
|
post: post, attribute: attribute, metadata: metadata
|
||||||
'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 }
|
|
||||||
|
|
Loading…
Reference in a new issue