diff --git a/app/models/post.rb b/app/models/post.rb index d1ede98..2f192ac 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -433,6 +433,7 @@ class Post update_lang_front_matter! update_translations! put_in_order! + create_glossary! end # Setea el propio idioma en el front_matter de slugs @@ -549,4 +550,28 @@ class Post @front_matter['order'] = @site.posts_for(@collection).count end + + # Crea el artículo de glosario para cada categoría o tag + def create_glossary! + return unless site.glossary? + + [:tags,:categories].each do |i| + self.send(i).each do |c| + # TODO no hardcodear, hacer _configurable + next if c == 'Glossary' + next if site.posts.find do |p| + p.title == c + end + + glossary = Post.new(site: site, lang: lang) + glossary.update_attributes({ + title: c, + layout: 'glossary', + categories: 'Glossary' + }) + + glossary.save! + end + end + end end diff --git a/app/models/site.rb b/app/models/site.rb index 3dc8c5d..ae07963 100644 --- a/app/models/site.rb +++ b/app/models/site.rb @@ -16,6 +16,11 @@ class Site !translations.empty? end + # Define si el sitio tiene un glosario + def glossary? + jekyll.config.fetch('glossary', false) + end + # Obtiene la lista de traducciones actuales def translations @jekyll.config.dig('i18n') || [] diff --git a/doc/glosario.md b/doc/glosario.md new file mode 100644 index 0000000..41b4eca --- /dev/null +++ b/doc/glosario.md @@ -0,0 +1,32 @@ +# Glosario + +El glosario permite describir categorías y etiquetas y normalizar +sinónimos. + +## Creación + +Al crear una etiqueta o categoría en el formulario de categorías, se +crea un artículo dentro de la categoría "Glosario" y layout +"glosario". + +XXX: En el futuro, cuando Sutty soporte colecciones, se moverán a la +colección `_glosario`. + +Estos artículos pueden editarse desde el editor normal de Sutty, +agregando definiciones y comportándose como un artículo más. + +## Preguntas + +Si el glosario es una colección, cómo se pueden traducir? Van a ser +`_glosario_idioma` o `_idioma_glosario`? Lo mismo para la i18n de otras +colecciones. + +## Select2 + +En el selector de categorías y tags, traer el contenido del glosario y +sinónimos como sugerencias. + +TODO hacer todo esto como una clase aparte e incluirla en el modelo +Post, lo mismo para las plantillas y otras features específicas. +Incluso se las puede incluir solo cuando están activadas para el sitio. +Organiza mejor el código. diff --git a/doc/i18n.md b/doc/i18n.md index e64394a..f95c58b 100644 --- a/doc/i18n.md +++ b/doc/i18n.md @@ -54,3 +54,7 @@ esto seria mas facil de hacer en un solo lado teniendo un `_data/post_relations.yml` o algo asi que tenga una sola vez todas las traducciones de los slugs, pero requiere hacer cambios en themes ya existentes + +## Colecciones + +Cómo se van a traducir las colecciones?