2013-07-02 08:46:44 +00:00
|
|
|
class Admin::ModuleTagsController < OrbitBackendController
|
|
|
|
include OrbitTag::Merging
|
|
|
|
|
2013-10-18 03:38:30 +00:00
|
|
|
open_for_manager
|
2013-07-02 08:46:44 +00:00
|
|
|
|
|
|
|
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])
|
2013-10-18 03:38:30 +00:00
|
|
|
flash.now[:error] = t('create.error.tag')
|
2013-07-02 08:46:44 +00:00
|
|
|
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
|
2013-10-18 03:38:30 +00:00
|
|
|
flash.now[:error] = t('update.error.tag')
|
2013-07-02 08:46:44 +00:00
|
|
|
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
|