This commit is contained in:
f 2019-11-07 13:06:40 -03:00
parent 5c48a2da5e
commit 7ddc4e6150
No known key found for this signature in database
GPG key ID: 2AE5A13E321F953D
4 changed files with 32 additions and 2 deletions

View file

@ -9,8 +9,10 @@ class PostsController < ApplicationController
authorize Post authorize Post
@site = find_site @site = find_site
@category = session[:category] = params.dig(:category) @category = session[:category] = params.dig(:category)
@layout = params.dig(:layout).try :to_sym
# TODO: Aplicar policy_scope # TODO: Aplicar policy_scope
@posts = @site.posts(lang: I18n.locale) @posts = @site.posts(lang: I18n.locale)
@posts.sort_by! :order, :date
end end
def show def show

View file

@ -1,4 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
class MetadataDate < MetadataTemplate class MetadataDate < MetadataTemplate
def default_value
Date.today
end
end end

View file

@ -31,6 +31,22 @@ class PostRelation < Array
post post
end end
alias sort_by_generic! sort_by!
# Permite ordenar los artículos por sus atributos
#
# XXX: Prestar atención cuando estamos mezclando artículos con
# diferentes tipos de atributos.
def sort_by!(*attrs)
sort_by_generic! do |post|
attrs.map do |attr|
return 0 unless post.attributes.include? attr
post.public_send(attr).value
end
end
end
alias find_generic find alias find_generic find
# Encontra un post por su id convertido a SHA1 # Encontra un post por su id convertido a SHA1

View file

@ -37,6 +37,8 @@
- if @category - if @category
- next unless post.attributes.include? :categories - next unless post.attributes.include? :categories
- next unless post.categories.value.include?(@category) - next unless post.categories.value.include?(@category)
- if @layout
- next unless post.layout.name == @layout
- next unless policy(post).show? - next unless policy(post).show?
%tr %tr
%td %td
@ -45,6 +47,10 @@
= hidden_field 'post[reorder]', post.sha1, = hidden_field 'post[reorder]', post.sha1,
value: i, class: 'reorder' value: i, class: 'reorder'
%td %td
%small
= link_to post.layout.name.to_s.humanize,
site_posts_path(@site, layout: post.layout.name)
%br/
= link_to post.title.value, = link_to post.title.value,
site_post_path(@site, post.id) site_post_path(@site, post.id)
- if post.attributes.include? :draft - if post.attributes.include? :draft
@ -58,7 +64,10 @@
- post.categories.value.each do |c| - post.categories.value.each do |c|
= link_to c, site_posts_path(@site, category: c) = link_to c, site_posts_path(@site, category: c)
%td= post.date.value.strftime('%F') %td
= post.date.value.strftime('%F')
%br/
= post.try(:order).try(:value)
%td %td
- if policy(post).edit? - if policy(post).edit?
= link_to t('posts.edit'), = link_to t('posts.edit'),