-# 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)