2022-06-13 10:26:49 +00:00
|
|
|
class Api::V1::Accounts::ArticlesController < Api::V1::Accounts::BaseController
|
|
|
|
before_action :portal
|
2022-07-04 14:59:44 +00:00
|
|
|
before_action :check_authorization
|
2022-06-13 10:26:49 +00:00
|
|
|
before_action :fetch_article, except: [:index, :create]
|
2022-07-28 08:29:16 +00:00
|
|
|
before_action :set_current_page, only: [:index]
|
2022-06-13 10:26:49 +00:00
|
|
|
|
|
|
|
def index
|
2022-08-02 11:44:10 +00:00
|
|
|
@articles_count = @portal.articles.count
|
2022-06-13 10:26:49 +00:00
|
|
|
@articles = @portal.articles
|
2022-07-28 08:29:16 +00:00
|
|
|
@articles = @articles.search(list_params) if list_params.present?
|
2022-06-13 10:26:49 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def create
|
|
|
|
@article = @portal.articles.create!(article_params)
|
2022-07-04 14:59:44 +00:00
|
|
|
@article.associate_root_article(article_params[:associated_article_id])
|
2022-07-05 11:45:38 +00:00
|
|
|
@article.draft!
|
2022-07-04 14:59:44 +00:00
|
|
|
render json: { error: @article.errors.messages }, status: :unprocessable_entity and return unless @article.valid?
|
2022-06-13 10:26:49 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def edit; end
|
|
|
|
|
|
|
|
def show; end
|
|
|
|
|
|
|
|
def update
|
|
|
|
@article.update!(article_params)
|
|
|
|
end
|
|
|
|
|
|
|
|
def destroy
|
|
|
|
@article.destroy!
|
|
|
|
head :ok
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def fetch_article
|
|
|
|
@article = @portal.articles.find(params[:id])
|
|
|
|
end
|
|
|
|
|
|
|
|
def portal
|
|
|
|
@portal ||= Current.account.portals.find_by(slug: params[:portal_id])
|
|
|
|
end
|
|
|
|
|
|
|
|
def article_params
|
|
|
|
params.require(:article).permit(
|
2022-08-16 12:25:34 +00:00
|
|
|
:title, :content, :description, :position, :category_id, :author_id, :associated_article_id, :status, meta: [:title, :description,
|
|
|
|
{ tags: [] }]
|
2022-06-13 10:26:49 +00:00
|
|
|
)
|
|
|
|
end
|
|
|
|
|
|
|
|
def list_params
|
2022-08-02 09:58:27 +00:00
|
|
|
params.permit(:locale, :query, :page, :category_slug, :status, :author_id)
|
2022-07-28 08:29:16 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def set_current_page
|
|
|
|
@current_page = params[:page] || 1
|
2022-06-13 10:26:49 +00:00
|
|
|
end
|
|
|
|
end
|