5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-12-01 11:36:22 +00:00
panel/app/views/posts/template_field/_table.haml

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)