traer valores por defecto (excepto para boolean)

This commit is contained in:
f 2020-11-11 15:29:12 -03:00
parent 1878749910
commit 824226aa84
14 changed files with 19 additions and 22 deletions

View File

@ -4,7 +4,7 @@
class MetadataArray < MetadataTemplate
# El valor por defecto es una array vacía
def default_value
[]
super || []
end
private

View File

@ -4,7 +4,7 @@
# requieran texto largo.
class MetadataContent < MetadataTemplate
def default_value
''
super || ''
end
def value

View File

@ -18,7 +18,7 @@ class MetadataEvent < MetadataTemplate
#
# @return [Hash]
def default_value
{}
super || {}
end
def to_param

View File

@ -6,7 +6,7 @@ require 'filemagic'
class MetadataFile < MetadataTemplate
# Una ruta vacía a la imagen con una descripción vacía
def default_value
{ 'path' => nil, 'description' => nil }
super || { 'path' => nil, 'description' => nil }
end
def empty?

View File

@ -3,7 +3,7 @@
# Define un campo de coordenadas geográficas
class MetadataGeo < MetadataTemplate
def default_value
{ 'lat' => nil, 'lng' => nil }
super || { 'lat' => nil, 'lng' => nil }
end
def empty?

View File

@ -12,7 +12,7 @@
# diferencia entre has_many y belongs_to.
class MetadataHasAndBelongsToMany < MetadataBelongsTo
def default_value
[]
super || []
end
# Posts a los que pertenece. Memoizamos por value para obtener

View File

@ -3,7 +3,7 @@
# Un campo de idioma
class MetadataLang < MetadataTemplate
def default_value
I18n.locale
super || I18n.locale
end
def value

View File

@ -3,7 +3,7 @@
# Los valores de este metadato son artículos en otros idiomas
class MetadataLocales < MetadataTemplate
def default_value
[]
super || []
end
# Todos los valores posibles para cada idioma disponible

View File

@ -4,7 +4,7 @@
class MetadataNumber < MetadataTemplate
# Nada
def default_value
nil
super || nil
end
def save

View File

@ -5,7 +5,7 @@ class MetadataOrder < MetadataTemplate
# El valor según la posición del post en la relación ordenada por
# fecha, a fecha más alta, posición más alta
def default_value
site.posts(lang: post.lang.value).sort_by(:date).index(post)
super || site.posts(lang: lang).sort_by(:date).index(post)
end
def save

View File

@ -31,10 +31,6 @@ class MetadataPath < MetadataTemplate
document.data['ext'].blank? ? '.markdown' : document.data['ext']
end
def lang
post.lang.value
end
def slug
post.slug.value
end

View File

@ -27,11 +27,6 @@ class MetadataRelatedPosts < MetadataArray
post&.title&.value || post&.slug&.value
end
# TODO: Traer el idioma actual de otra forma
def lang
post&.lang&.value || I18n.locale
end
# Encuentra el filtro
def filter
layout.metadata.dig(name, 'filter')&.to_h&.symbolize_keys || {}

View File

@ -4,7 +4,7 @@
class MetadataString < MetadataTemplate
# Una string vacía
def default_value
''
super || ''
end
private

View File

@ -21,15 +21,21 @@ MetadataTemplate = Struct.new(:site, :document, :name, :label, :type,
!value_was.nil? && value_was != value
end
# Trae el idioma actual del sitio o del panel
# @return [String]
def lang
@lang ||= post&.lang&.value || I18n.locale.to_s
end
# El valor por defecto
def default_value
raise NotImplementedError
layout.metadata.dig(name, 'default', lang)
end
# Valores posibles, busca todos los valores actuales en otros
# artículos del mismo sitio
def values
site.everything_of(name, lang: post&.lang&.value)
site.everything_of(name, lang: lang)
end
# Valor actual o por defecto. Al memoizarlo podemos modificarlo