discourse/app/controllers/categories_controller.rb

62 lines
1.6 KiB
Ruby
Raw Normal View History

2013-02-06 03:16:51 +08:00
require_dependency 'category_serializer'
class CategoriesController < ApplicationController
before_filter :ensure_logged_in, except: [:index, :show]
before_filter :fetch_category, only: [:show, :update, :destroy]
skip_before_filter :check_xhr, only: [:index]
2013-02-06 03:16:51 +08:00
def index
2013-05-13 16:47:32 +08:00
@list = CategoryList.new(guardian)
discourse_expires_in 1.minute
respond_to do |format|
format.html { render }
format.json { render_serialized(@list, CategoryListSerializer) }
end
2013-02-06 03:16:51 +08:00
end
2013-02-07 23:45:24 +08:00
2013-02-06 03:16:51 +08:00
def show
render_serialized(@category, CategorySerializer)
end
def create
requires_parameters(*required_param_keys)
2013-02-06 03:16:51 +08:00
guardian.ensure_can_create!(Category)
@category = Category.create(category_params.merge(user: current_user))
return render_json_error(@category) unless @category.save
2013-02-07 23:45:24 +08:00
2013-02-06 03:16:51 +08:00
render_serialized(@category, CategorySerializer)
end
def update
requires_parameters(*required_param_keys)
2013-02-06 03:16:51 +08:00
guardian.ensure_can_edit!(@category)
json_result(@category, serializer: CategorySerializer) { |cat| cat.update_attributes(category_params) }
2013-02-06 03:16:51 +08:00
end
def destroy
guardian.ensure_can_delete!(@category)
@category.destroy
2013-02-06 03:16:51 +08:00
render nothing: true
end
private
def required_param_keys
[:name, :color, :text_color]
2013-02-06 03:16:51 +08:00
end
def category_param_keys
[required_param_keys, :hotness, :secure, :group_names].flatten!
end
2013-02-06 03:16:51 +08:00
def category_params
params.slice(*category_param_keys)
end
def fetch_category
@category = Category.where(slug: params[:id]).first || Category.where(id: params[:id].to_i).first
end
2013-02-06 03:16:51 +08:00
end