5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-11-22 10:06:23 +00:00
panel/app/models/metadata_locales.rb
2023-10-06 17:30:37 -03:00

50 lines
1.2 KiB
Ruby

# frozen_string_literal: true
# Los valores de este metadato son artículos en otros idiomas
class MetadataLocales < MetadataHasAndBelongsToMany
# Todos los valores posibles para cada idioma disponible
#
# @return { lang: { title: uuid } }
def values
@values ||= other_locales.to_h do |other_locale|
[
other_locale,
posts.where(locale: other_locale).pluck(:title, :layout, :post_id).to_h do |row|
row.tap do |value|
value[0] = "#{value[0]} (#{site.layouts[value.delete_at(1)].humanized_name})"
end
end
]
end
end
# Siempre hay una relación inversa
#
# @return [True]
def inverse?
true
end
# El campo inverso se llama igual en el otro post
#
# @return [Symbol]
def inverse
:locales
end
private
# Obtiene todos los locales distintos a este post
#
# @return [Array]
def other_locales
@other_locales ||= site.locales - [locale]
end
# Obtiene todos los posts de los otros locales con el mismo layout
#
# @return [IndexedPost::ActiveRecord_AssociationRelation]
def posts
site.indexed_posts(locale: other_locales).where(layout: post.layout.value).where.not(post_id: post.uuid.value)
end
end