mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-15 04:21:41 +00:00
Merge branch 'borrar-articulos' into kefir
This commit is contained in:
commit
468eb93ec7
7 changed files with 60 additions and 4 deletions
|
@ -109,6 +109,19 @@ class PostsController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Eliminar artículos
|
||||||
|
def destroy
|
||||||
|
@site = find_site
|
||||||
|
@lang = find_lang(@site)
|
||||||
|
@post = find_post(@site)
|
||||||
|
|
||||||
|
authorize @post
|
||||||
|
|
||||||
|
@post.destroy
|
||||||
|
|
||||||
|
redirect_to site_posts_path(@site, category: session[:category], lang: @lang)
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
# Solo permitir cambiar estos atributos de cada articulo
|
# Solo permitir cambiar estos atributos de cada articulo
|
||||||
|
|
|
@ -17,7 +17,7 @@ require 'jekyll/utils'
|
||||||
class Post
|
class Post
|
||||||
attr_accessor :content, :front_matter
|
attr_accessor :content, :front_matter
|
||||||
attr_reader :post, :site, :errors, :old_post, :lang, :template,
|
attr_reader :post, :site, :errors, :old_post, :lang, :template,
|
||||||
:template_fields
|
:template_fields, :collection
|
||||||
|
|
||||||
REJECT_FROM_DATA = %w[excerpt].freeze
|
REJECT_FROM_DATA = %w[excerpt].freeze
|
||||||
# datos que no tienen que terminar en el front matter
|
# datos que no tienen que terminar en el front matter
|
||||||
|
@ -378,6 +378,18 @@ class Post
|
||||||
@template ||= template_from_layout
|
@template ||= template_from_layout
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Eliminar el artículo del repositorio y de la lista de artículos del
|
||||||
|
# sitio
|
||||||
|
def destroy
|
||||||
|
FileUtils.rm_f path
|
||||||
|
|
||||||
|
site.posts_for(collection).delete_if do |post|
|
||||||
|
post.path == path
|
||||||
|
end
|
||||||
|
|
||||||
|
true
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
# Completa el front_matter a partir de las variables de otro post que
|
# Completa el front_matter a partir de las variables de otro post que
|
||||||
|
|
|
@ -34,6 +34,12 @@ class PostPolicy < SuttyPolicy
|
||||||
usuaria? || post.author == usuarix.email
|
usuaria? || post.author == usuarix.email
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Solo las usuarias pueden eliminar artículos. Lxs invitadxs pueden
|
||||||
|
# borrar sus propios artículos
|
||||||
|
def destroy?
|
||||||
|
update?
|
||||||
|
end
|
||||||
|
|
||||||
class Scope < SuttyPolicy::Scope
|
class Scope < SuttyPolicy::Scope
|
||||||
# Las usuarias pueden ver todos los posts
|
# Las usuarias pueden ver todos los posts
|
||||||
#
|
#
|
||||||
|
|
|
@ -118,8 +118,16 @@
|
||||||
%br
|
%br
|
||||||
|
|
||||||
%td= post.date.strftime('%F')
|
%td= post.date.strftime('%F')
|
||||||
%td= link_to t('posts.edit'),
|
%td
|
||||||
edit_site_post_path(@site, post, lang: @lang),
|
- if policy(post).edit?
|
||||||
class: 'btn btn-info'
|
= link_to t('posts.edit'),
|
||||||
|
edit_site_post_path(@site, post, lang: @lang),
|
||||||
|
class: 'btn btn-info'
|
||||||
|
- if policy(post).destroy?
|
||||||
|
= link_to t('posts.destroy'),
|
||||||
|
site_post_path(@site, post, lang: @lang),
|
||||||
|
class: 'btn btn-danger',
|
||||||
|
method: :delete,
|
||||||
|
data: { confirm: t('posts.confirm_destroy') }
|
||||||
- else
|
- else
|
||||||
%h2= t('posts.none')
|
%h2= t('posts.none')
|
||||||
|
|
|
@ -255,3 +255,5 @@ en:
|
||||||
invalid_help: It looks like the form is incomplete. Check the red-colored fields to complete it.
|
invalid_help: It looks like the form is incomplete. Check the red-colored fields to complete it.
|
||||||
sending_help: Saving, please wait...
|
sending_help: Saving, please wait...
|
||||||
blank: Nothing
|
blank: Nothing
|
||||||
|
destroy: Delete
|
||||||
|
confirm_destroy: Are you sure?
|
||||||
|
|
|
@ -262,3 +262,5 @@ es:
|
||||||
invalid_help: Parece que el formulario no está completo. Verifica los campos marcados en rojo para completarlo.
|
invalid_help: Parece que el formulario no está completo. Verifica los campos marcados en rojo para completarlo.
|
||||||
sending_help: Guardando, por favor espera...
|
sending_help: Guardando, por favor espera...
|
||||||
blank: En blanco
|
blank: En blanco
|
||||||
|
destroy: Borrar
|
||||||
|
confirm_destroy: ¿Estás segurx?
|
||||||
|
|
|
@ -28,4 +28,17 @@ class PostTest < ActiveSupport::TestCase
|
||||||
test 'Es obvio que un post recién cargado es válido' do
|
test 'Es obvio que un post recién cargado es válido' do
|
||||||
assert @post.valid?
|
assert @post.valid?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test 'El post se puede borrar' do
|
||||||
|
path = @post.path
|
||||||
|
|
||||||
|
assert @post.destroy
|
||||||
|
assert_not File.exist?(path)
|
||||||
|
|
||||||
|
post = @site.posts_for(@post.collection).find do |p|
|
||||||
|
p.path == @post.path
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_not post
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue