orbit-basic/app/controllers/admin/module_tags_controller.rb

100 lines
2.6 KiB
Ruby

class Admin::ModuleTagsController < OrbitBackendController
include OrbitTag::Merging
# TODO = put back ========================
# before_filter :force_order_for_visitor, only: [:index]
# before_filter :force_order_for_user, except: [:index]
# before_filter :for_app_sub_manager, except: [:index]
# ========================================
before_filter :setup_vars
# ========================================
helper 'admin/tags'
def index
@tags = @module_app.module_tags
@default_tags = get_default_tags
end
def new
@default_tags = get_default_tags_without_included
@tag = ModuleTag.new
render layout: false
end
def edit
@tag = ModuleTag.find(params[:id])
render layout: false
end
def create
@tag = @module_app.module_tags.build(params[:module_tag])
if @tag.save
redirect_to admin_module_tags_url(module_app_id: @module_app_id)
else
@tag = ModuleTag.new(params[:module_tag])
render :action => "new"
end
end
def update
@tag = ModuleTag.find(params[:id])
if @tag.update_attributes(params[:module_tag])
redirect_to admin_module_tags_url(module_app_id: @module_app_id)
else
render :action => "edit"
end
end
def delete_tags
tags = ModuleTag.find(params[:ids].split(',')) rescue nil
if tags
tags.each{|t|t.destroy}
end
redirect_to admin_module_tags_url(module_app_id: @module_app_id)
end
def merge
module_tags = ModuleTag.find(params[:ids])
taggings = module_tags.map{|t| t.tag.taggings}.flatten
module_tags
name = params[:name]
merge_tags(name, taggings, @module_app_id)
module_tags.each(&:destroy)
redirect_to admin_module_tags_url(module_app_id: @module_app_id)
end
def remove_default
module_tags = ModuleTag.find(params[:ids].split(',')) rescue nil
if module_tags
module_tags.each(&:destroy)
end
redirect_to admin_module_tags_url(module_app_id: @module_app_id)
end
def update_included_default
default_tags = ModuleTag.find(params[:ids].split(',')) rescue nil
default_tags.each do |tag|
clone_tag_from_default(tag)
end
redirect_to admin_module_tags_url(module_app_id: @module_app_id)
end
protected
def setup_vars
@module_app = ModuleApp.find(params[:module_app_id]) rescue nil
raise ModuleAppError, 'Can not find ModuleApp' if @module_app.nil?
@module_app_id = @module_app.id rescue nil
end
def get_default_tags_without_included
ModuleTag.where(is_default: true, parent_id: nil) - @module_app.module_tags.where(is_default: true).map{|m| m.parent }
end
def get_default_tag_ids
get_default_tags.map{|t| t.id}
end
end