mirror of
https://0xacab.org/sutty/sutty
synced 2024-12-01 11:36:22 +00:00
58 lines
2.8 KiB
Text
58 lines
2.8 KiB
Text
-# Crea un contenedor para todos los campos agrupados
|
|
.field-groups{class: template.key}
|
|
-# Si es un array de valores, indicar a las usuarias que pueden
|
|
-# agregar más campos
|
|
- if template.array?
|
|
%small.text-muted= t('posts.table')
|
|
|
|
-# El grupo individual, tenemos que crear uno si el post es nuevo, o
|
|
-# todos los que sean necesarios si estamos editando un post.
|
|
-# Obtenemos todos los valores. Puede ser un Hash o un Array
|
|
-# Creamos un array con un elemento solo para poder tener acceso a :each
|
|
- groups = @post.get_front_matter(name)
|
|
-# TODO volver a revisar cuando get_front_matter() tenga valores por defecto
|
|
- groups = [{}] unless groups
|
|
- if groups.is_a? Hash
|
|
- groups = [ groups ]
|
|
- groups.each_with_index do |group, i|
|
|
-# A partir del segundo grupo todos son extra
|
|
- classes = (i > 0) ? [template.key, 'extra'] : [template.key]
|
|
.field-group{class: classes.join(' ')}
|
|
-# Crear el botón de borrado si vamos a tener varias filas.
|
|
-# Luego por CSS ocultamos el primero.
|
|
- if template.array?
|
|
.clearfix
|
|
%button.btn.btn-warning.btn-sm.pull-right.remove-group{data: { group: template.key }}
|
|
= fa_icon 'close', title: t('posts.row.del', group: template.key.humanize)
|
|
= t('posts.row.del', group: template.key.humanize)
|
|
-# Separar los campos en dos columnas
|
|
- cols = template.cols || 2
|
|
- template.nested_fields.each_slice(cols).to_a.each do |col|
|
|
.form-row{class: "align-items-#{template.align || 'start'}"}
|
|
- col.each do |nf|
|
|
- last = template.nested_fields.last == nf
|
|
- odd = (template.nested_fields.count % cols) != 0
|
|
%div{class: (nf.nested? || (last && odd)) ? 'col-md-12' : "col-md-#{12/cols}"}
|
|
-# Si el template es un array, quiere decir que esperamos un array de hashes.
|
|
-# XXX usamos local_name para hacerlo recursivo y sumar el
|
|
-# name después, sin modificarlo recursivamente.
|
|
- if template.array?
|
|
- local_name = [i.to_s, nf.key]
|
|
- else
|
|
- local_name = [nf.key]
|
|
- if @post.new?
|
|
- value = nf.values
|
|
- else
|
|
-# Si el campo es un array, groups es un array de hashes
|
|
-# y group un hash. De lo contrarios, groups va a ser un
|
|
-# Hash
|
|
-# TODO cambiar por get_front_matter
|
|
- value = (template.array? || template.nested?) ? group[nf.key] : groups[nf.key]
|
|
= render 'posts/template_field/nested',
|
|
template: nf,
|
|
value: value,
|
|
name: [name, local_name].flatten
|
|
.extra-groups
|
|
- if template.array?
|
|
.clearfix
|
|
%button.btn.btn-success.btn-block.add-group{data: { group: template.key }}= t('posts.row.add', group: template.key.humanize)
|