* app/controllers (& decorators) i18n etc * tidy key names * update keys * delete ja.yml * delete an involved ja.yml * fix for PR review * fix for spec * delete ja.yml
50 lines
1.3 KiB
Ruby
50 lines
1.3 KiB
Ruby
class DiscussionLocksController < ApplicationController
|
|
before_action :authenticate_user!
|
|
|
|
DISCUSSION_LOCK_PARAMS = %i[article_id notes reason].freeze
|
|
|
|
def create
|
|
@discussion_lock = DiscussionLock.new(discussion_lock_params)
|
|
|
|
authorize @discussion_lock
|
|
article = Article.find(discussion_lock_params[:article_id])
|
|
authorize article, :discussion_lock_confirm?
|
|
|
|
if @discussion_lock.save
|
|
bust_article_cache(article)
|
|
|
|
flash[:success] = I18n.t("discussion_locks_controller.locked")
|
|
else
|
|
flash[:error] = I18n.t("errors.messages.general", errors: @discussion_lock.errors_as_sentence)
|
|
end
|
|
|
|
redirect_to "#{article.path}/manage"
|
|
end
|
|
|
|
def destroy
|
|
discussion_lock = DiscussionLock.find(params[:id])
|
|
|
|
authorize discussion_lock
|
|
article = discussion_lock.article
|
|
|
|
if discussion_lock.destroy
|
|
bust_article_cache(article)
|
|
|
|
flash[:success] = I18n.t("discussion_locks_controller.unlocked")
|
|
else
|
|
flash[:error] = I18n.t("errors.messages.general", errors: @discussion_lock.errors_as_sentence)
|
|
end
|
|
|
|
redirect_to "#{article.path}/manage"
|
|
end
|
|
|
|
private
|
|
|
|
def discussion_lock_params
|
|
params.require(:discussion_lock).permit(DISCUSSION_LOCK_PARAMS).merge(locking_user_id: current_user.id)
|
|
end
|
|
|
|
def bust_article_cache(article)
|
|
EdgeCache::BustArticle.call(article)
|
|
end
|
|
end
|