editar el frontmatter de cyberwomen
This commit is contained in:
parent
a95bb4be97
commit
62a74befdc
7 changed files with 106 additions and 7 deletions
|
@ -50,6 +50,10 @@ class PostsController < ApplicationController
|
||||||
# Solo permitir cambiar estos atributos de cada articulo
|
# Solo permitir cambiar estos atributos de cada articulo
|
||||||
def post_params
|
def post_params
|
||||||
params.require(:post).permit(:title, :date, :content, :slug,
|
params.require(:post).permit(:title, :date, :content, :slug,
|
||||||
|
:cover, :layout, :permalink, :objetivos,
|
||||||
|
:duracion, :formato, :habilidades,
|
||||||
|
conocimientos: [], sesiones_ejercicios_relacionados: [],
|
||||||
|
materiales_requeridos: [], lang: [],
|
||||||
tags: [], categories: [])
|
tags: [], categories: [])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -149,6 +149,11 @@ class Post
|
||||||
@post <=> other.post
|
@post <=> other.post
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Obtiene metadatos asegurándose que siempre trabajamos con strings
|
||||||
|
def get_front_matter(name)
|
||||||
|
@front_matter.dig(name.to_s)
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
# Genera un post nuevo y lo agrega a la colección del sitio.
|
# Genera un post nuevo y lo agrega a la colección del sitio.
|
||||||
|
@ -168,11 +173,6 @@ class Post
|
||||||
@site.posts.sort!
|
@site.posts.sort!
|
||||||
end
|
end
|
||||||
|
|
||||||
# Obtiene metadatos asegurándose que siempre trabajamos con strings
|
|
||||||
def get_front_matter(name)
|
|
||||||
@front_matter.dig(name.to_s)
|
|
||||||
end
|
|
||||||
|
|
||||||
# Los define, asegurandose que las llaves siempre son strings, para no
|
# Los define, asegurandose que las llaves siempre son strings, para no
|
||||||
# tener incompatibilidades con jekyll
|
# tener incompatibilidades con jekyll
|
||||||
def set_front_matter(name, value)
|
def set_front_matter(name, value)
|
||||||
|
|
|
@ -42,11 +42,17 @@ class Site
|
||||||
end
|
end
|
||||||
|
|
||||||
def categories
|
def categories
|
||||||
posts.map(&:categories).flatten.uniq
|
everything_of :categories
|
||||||
end
|
end
|
||||||
|
|
||||||
def tags
|
def tags
|
||||||
posts.map(&:tags).flatten.uniq
|
everything_of :tags
|
||||||
|
end
|
||||||
|
|
||||||
|
def everything_of(attr)
|
||||||
|
posts.map do |p|
|
||||||
|
p.get_front_matter attr
|
||||||
|
end.flatten.uniq
|
||||||
end
|
end
|
||||||
|
|
||||||
# El directorio donde se almacenan los sitios
|
# El directorio donde se almacenan los sitios
|
||||||
|
|
|
@ -43,6 +43,57 @@
|
||||||
= text_field 'post', 'slug', value: @post.slug,
|
= text_field 'post', 'slug', value: @post.slug,
|
||||||
class: 'form-control'
|
class: 'form-control'
|
||||||
%small.text-muted.form-text= t('posts.slug_help')
|
%small.text-muted.form-text= t('posts.slug_help')
|
||||||
|
.form-group
|
||||||
|
= label_tag 'post_cover', t('posts.cover')
|
||||||
|
= text_field 'post', 'cover', value: @post.get_front_matter(:cover),
|
||||||
|
class: 'form-control'
|
||||||
|
%small.text-muted.form-text= t('posts.cover_help')
|
||||||
|
.form-group
|
||||||
|
= label_tag 'post_permalink', t('posts.permalink')
|
||||||
|
= text_field 'post', 'permalink', value: @post.get_front_matter(:permalink),
|
||||||
|
class: 'form-control'
|
||||||
|
%small.text-muted.form-text= t('posts.permalink_help')
|
||||||
|
.form-group
|
||||||
|
= label_tag 'post_layout', t('posts.layout')
|
||||||
|
= select_tag 'post[layout][]',
|
||||||
|
options_for_select(@site.everything_of(:layout), @post.get_front_matter(:layout)),
|
||||||
|
{ class: 'form-control select2' }
|
||||||
|
%small.text-muted.form-text= t('posts.layout_help')
|
||||||
|
.form-group
|
||||||
|
= label_tag 'post_objetivos', t('posts.objetivos')
|
||||||
|
= text_area 'post', 'objetivos', value: @post.get_front_matter(:objetivos),
|
||||||
|
class: 'form-control'
|
||||||
|
%small.text-muted.form-text= t('posts.objetivos_help')
|
||||||
|
.form-group
|
||||||
|
= label_tag 'post_habilidades', t('posts.habilidades')
|
||||||
|
= select_tag 'post[habilidades][]',
|
||||||
|
options_for_select(@site.everything_of(:habilidades), @post.get_front_matter(:habilidades)),
|
||||||
|
{ class: 'form-control select2' }
|
||||||
|
%small.text-muted.form-text= t('posts.habilidades_help')
|
||||||
|
.form-group
|
||||||
|
= label_tag 'post_formato', t('posts.formato')
|
||||||
|
= select_tag 'post[formato][]',
|
||||||
|
options_for_select(@site.everything_of(:formato), @post.get_front_matter(:formato)),
|
||||||
|
{ class: 'form-control select2' }
|
||||||
|
%small.text-muted.form-text= t('posts.formato_help')
|
||||||
|
.form-group
|
||||||
|
= label_tag 'post_conocimientos', t('posts.conocimientos')
|
||||||
|
= select_tag 'post[conocimientos][]',
|
||||||
|
options_for_select(@site.everything_of(:conocimientos), @post.get_front_matter(:conocimientos)),
|
||||||
|
{ class: 'form-control select2', multiple: 'multiple' }
|
||||||
|
%small.text-muted.form-text= t('posts.conocimientos_help')
|
||||||
|
.form-group
|
||||||
|
= label_tag 'post_sesiones_ejercicios_relacionados', t('posts.sesiones_ejercicios_relacionados')
|
||||||
|
= select_tag 'post[sesiones_ejercicios_relacionados][]',
|
||||||
|
options_for_select(@site.everything_of(:title), @post.get_front_matter(:sesiones_ejercicios_relacionados)),
|
||||||
|
{ class: 'form-control select2', multiple: 'multiple' }
|
||||||
|
%small.text-muted.form-text= t('posts.sesiones_ejercicios_relacionados_help')
|
||||||
|
.form-group
|
||||||
|
= label_tag 'post_materiales_requeridos', t('posts.materiales_requeridos')
|
||||||
|
= select_tag 'post[materiales_requeridos][]',
|
||||||
|
options_for_select(@site.everything_of(:materiales_requeridos), @post.get_front_matter(:materiales_requeridos)),
|
||||||
|
{ class: 'form-control select2', multiple: 'multiple' }
|
||||||
|
%small.text-muted.form-text= t('posts.materiales_requeridos_help')
|
||||||
|
|
||||||
:javascript
|
:javascript
|
||||||
$(document).on('turbolinks:load', function() {
|
$(document).on('turbolinks:load', function() {
|
||||||
|
|
|
@ -66,6 +66,8 @@ Rails.application.configure do
|
||||||
# the I18n.default_locale when a translation cannot be found).
|
# the I18n.default_locale when a translation cannot be found).
|
||||||
config.i18n.fallbacks = true
|
config.i18n.fallbacks = true
|
||||||
|
|
||||||
|
config.i18n.default_locale = :es
|
||||||
|
|
||||||
# Send deprecation notices to registered listeners.
|
# Send deprecation notices to registered listeners.
|
||||||
config.active_support.deprecation = :notify
|
config.active_support.deprecation = :notify
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,24 @@ en:
|
||||||
categories_help: 'Comma separated!'
|
categories_help: 'Comma separated!'
|
||||||
slug: 'Slug'
|
slug: 'Slug'
|
||||||
slug_help: 'This is the name of the article on the URL, ie. /title/. You can leave it empty.'
|
slug_help: 'This is the name of the article on the URL, ie. /title/. You can leave it empty.'
|
||||||
|
cover: 'Cover'
|
||||||
|
cover_help: 'Path to the cover'
|
||||||
|
layout: 'Layout'
|
||||||
|
layout_help: 'The layout of this post'
|
||||||
|
objetivos: 'Objectives'
|
||||||
|
objetivos_help: 'Objectives of this session'
|
||||||
|
permalink: 'Permanent link'
|
||||||
|
permalink_help: "If you want to access the post from a specific URL, use this field. Don\'t forget to start with a /"
|
||||||
|
habilidades: 'Skill level'
|
||||||
|
habilidades_help: 'Skills required for this session'
|
||||||
|
formato: 'Format'
|
||||||
|
formato_help: 'Format of this session'
|
||||||
|
conocimientos: 'Required knowledge'
|
||||||
|
conocimientos_help: 'Select all required knowledge for this session'
|
||||||
|
sesiones_ejercicios_relacionados: 'Related sessions/exercises'
|
||||||
|
sesiones_ejercicios_relacionados_help: 'Select all related sessions/exercises'
|
||||||
|
materiales_requeridos: 'Needed materials'
|
||||||
|
materiales_requeridos_help: 'Select all materials needed for this session'
|
||||||
logger:
|
logger:
|
||||||
rm: 'Removed %{path}'
|
rm: 'Removed %{path}'
|
||||||
errors:
|
errors:
|
||||||
|
|
|
@ -21,6 +21,24 @@ es:
|
||||||
categories_help: '¡Separadas por comas!'
|
categories_help: '¡Separadas por comas!'
|
||||||
slug: 'Nombre la URL'
|
slug: 'Nombre la URL'
|
||||||
slug_help: 'Esto es el nombre del artículo en la URL, por ejemplo /título/. Puedes dejarlo vacío.'
|
slug_help: 'Esto es el nombre del artículo en la URL, por ejemplo /título/. Puedes dejarlo vacío.'
|
||||||
|
cover: 'Portada'
|
||||||
|
cover_help: 'La dirección de la portada'
|
||||||
|
layout: 'Plantilla'
|
||||||
|
layout_help: 'El tipo de plantilla'
|
||||||
|
objetivos: 'Objetivos'
|
||||||
|
objetivos_help: 'Objetivos de esta sesión'
|
||||||
|
permalink: 'Dirección del enlace'
|
||||||
|
permalink_help: 'Si quieres que el artículo se acceda desde esta URL completa aquí, no te olvides de empezar con /'
|
||||||
|
habilidades: 'Habilidades'
|
||||||
|
habilidades_help: 'Habilidades requeridas para esta sesión'
|
||||||
|
formato: 'Formato'
|
||||||
|
formato_help: 'Formato de esta sesión'
|
||||||
|
conocimientos: 'Conocimientos'
|
||||||
|
conocimientos_help: 'Elige todos los conocimientos requeridos para abordar esta sesión'
|
||||||
|
sesiones_ejercicios_relacionados: 'Sesiones y ejercicios relacionados'
|
||||||
|
sesiones_ejercicios_relacionados_help: 'Elige todas las sesiones relacionadas con esta'
|
||||||
|
materiales_requeridos: 'Materiales requeridos'
|
||||||
|
materiales_requeridos_help: 'Materiales necesarios para esta sesión'
|
||||||
logger:
|
logger:
|
||||||
rm: 'Eliminado %{path}'
|
rm: 'Eliminado %{path}'
|
||||||
errors:
|
errors:
|
||||||
|
|
Loading…
Reference in a new issue