5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-06-02 05:04:16 +00:00

Merge branch 'issue-13177' into 'rails'

#13177

See merge request sutty/sutty!176
This commit is contained in:
fauno 2023-05-13 14:39:35 +00:00
commit 0bb59adb79
10 changed files with 86 additions and 18 deletions

View file

@ -29,6 +29,11 @@ $sizes: (
"70ch": 70ch,
);
.btn {
background-color: var(--foreground);
color: var(--background);
}
@import "bootstrap";
@import "editor";
@ -204,8 +209,6 @@ svg {
}
.btn {
background-color: var(--foreground);
color: var(--background);
border: none;
border-radius: 0;
margin-right: 0.3rem;

View file

@ -9,6 +9,13 @@ Layout = Struct.new(:site, :name, :meta, :metadata, keyword_init: true) do
name.to_s
end
# Obtiene todos los layouts (schemas) dependientes de este.
#
# @return [Array]
def schemas
@schemas ||= site.layouts.to_h.slice(*site.schema_organization[name]).values
end
def attributes
@attributes ||= metadata.keys.map(&:to_sym)
end

View file

@ -9,6 +9,7 @@ class Site < ApplicationRecord
include Site::Api
include Site::DeployDependencies
include Site::BuildStats
include Site::LayoutOrdering
include Tienda
# Cifrar la llave privada que cifra y decifra campos ocultos. Sutty

View file

@ -0,0 +1,38 @@
# frozen_string_literal: true
class Site
# Obtiene un listado de layouts (schemas)
module LayoutOrdering
extend ActiveSupport::Concern
included do
# Obtiene o genera un listado de layouts (schemas) con sus
# dependencias, para poder generar un árbol.
#
# Por defecto, si el sitio no lo soporta, se obtienen los layouts
# ordenados alfabéticamente por traducción.
#
# @return [Hash]
def schema_organization
@schema_organization ||=
begin
schema_organization = data.dig('schema', 'organization')
schema_organization&.symbolize_keys!
schema_organization&.transform_values! do |ary|
ary.map(&:to_sym)
end
schema_organization ||
begin
layouts = self.layouts.sort_by(&:humanized_name).map(&:name)
Hash[layouts.zip([].fill([], 0, layouts.size))]
end
end
end
# TODO: Deprecar cuando renombremos layouts a schemas
alias layout_organization schema_organization
end
end
end

View file

@ -7,16 +7,12 @@
= render 'sites/build', site: @site, class: 'btn-block'
%h3= t('posts.new')
%table.mb-3
- @site.layouts.sort_by(&:humanized_name).each do |layout|
- next if layout.hidden?
%tr
%th= layout.humanized_name
%td.pl-3= link_to t('posts.add'), new_site_post_path(@site, layout: layout.value), class: 'btn btn-secondary btn-sm'
- if @filter_params[:layout] == layout.name.to_s
%td= link_to t('posts.remove_filter'), site_posts_path(@site, **@filter_params.merge(layout: nil)), class: 'btn btn-primary btn-sm'
- else
%td= link_to t('posts.filter'), site_posts_path(@site, **@filter_params.merge(layout: layout.value)), class: 'btn btn-secondary btn-sm'
%table.table.table-sm.mb-3
%tbody
- @site.schema_organization.each do |schema, _|
- schema = @site.layouts[schema]
- next if schema.hidden?
= render 'schemas/row', site: @site, schema: schema, filter: @filter_params
- if policy(@site_stat).index?
= link_to t('stats.index.title'), site_stats_path(@site), class: 'btn'

View file

@ -0,0 +1 @@
= link_to t('.add'), new_site_post_path(site, layout: schema.value), class: 'btn btn-secondary btn-sm m-0'

View file

@ -0,0 +1,4 @@
- if filter[:layout] == schema.name.to_s
= link_to t('.remove'), site_posts_path(site, **filter.merge(layout: nil)), class: 'btn btn-primary btn-sm m-0'
- else
= link_to t('.filter'), site_posts_path(site, **filter.merge(layout: schema.value)), class: 'btn btn-secondary btn-sm m-0'

View file

@ -0,0 +1,12 @@
%tr
%th{ scope: 'row' }
- if local_assigns[:parent_schema]
%span.text-muted &mdash;
= schema.humanized_name
%td.px-0= render 'schemas/add', **local_assigns
%td.px-0= render 'schemas/filter', **local_assigns
-# XXX: Solo un nivel de recursividad
- unless local_assigns[:parent_schema]
- schema.schemas.each do |s|
= render 'schemas/row', schema: s, site: site, filter: filter, parent_schema: schema

View file

@ -542,9 +542,6 @@ en:
order: 'Order'
content: 'Text'
new: 'Post types'
add: 'Add'
filter: 'Filter'
remove_filter: 'Back'
remove_filter_help: 'Remove the filter: %{filter}'
categories: 'Everything'
index:
@ -701,6 +698,12 @@ en:
queries:
show:
empty: '(empty)'
schemas:
add:
add: 'Add'
filter:
filter: 'Filter'
remove: 'Back'
build_stats:
index:
title: "Publications"

View file

@ -551,9 +551,6 @@ es:
content: 'Cuerpo del artículo'
categories: 'Todos'
new: 'Tipos de artículos'
add: 'Agregar'
filter: 'Filtrar'
remove_filter: 'Volver'
remove_filter_help: 'Quitar este filtro: %{filter}'
index:
search: 'Buscar'
@ -709,6 +706,12 @@ es:
queries:
show:
empty: '(vacío)'
schemas:
add:
add: 'Agregar'
filter:
filter: 'Filtrar'
remove: 'Volver'
build_stats:
index:
title: "Publicaciones"