Now default tags can be removed from module

This commit is contained in:
chris committed 2013-04-25 19:20:37 +08:00
1 parent 19405cf006
commit 3714403f85
17 files changed
+248 -109

No files matched your search

+16 -21
View File
@@ -7,44 +7,42 @@ class Admin::ModuleTagsController < OrbitBackendController
helper 'admin/tags'
def index
@tags = get_tags
@included_tags = @module_app.module_tags.where(is_default: true)
@tags = @module_app.module_tags
@default_tags = get_default_tags
end
def new
@tag = Tag.new
@tag = ModuleTag.new
render layout: false
end
def edit
@tag = Tag.find(params[:id])
@tag = ModuleTag.find(params[:id])
render layout: false
end
def create
@tag = @module_app.module_tags.build(params[:tag])
@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 = Tag.new(params[:tag])
flash.now[:error] = t('create.error.tag')
@tag = ModuleTag.new(params[:module_tag])
render :action => "new"
end
end
def update
@tag = Tag.find(params[:id])
if @tag.update_attributes(params[:tag])
@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
flash.now[:error] = t('update.error.link')
render :action => "edit"
end
end
def delete_tags
tags = Tag.find(params[:ids].split(',')) rescue nil
tags = ModuleTag.find(params[:ids].split(',')) rescue nil
if tags
tags.each{|t|t.destroy}
end
@@ -52,23 +50,20 @@ class Admin::ModuleTagsController < OrbitBackendController
end
def merge
tags = Tag.find(params[:ids])
taggings = tags.map{|t| t.taggings}.flatten
tag_leases = tags.map{|t| t.tag_lease}
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)
tag_leases.each(&:destroy)
module_tags.each(&:destroy)
redirect_to admin_module_tags_url(module_app_id: @module_app_id)
end
def remove_default
debugger
# tags = Tag.find(params[:ids].split(',')) rescue nil
# if tags
# tag_leases = tags.map{|t| t.tag_lease}.flatten
# tag_leases.each {|t| t.update_attribute(:module_app_ids, t.module_app_ids - [@module_app.id])}
# tags.each {|t| t.update_attribute(:is_default, true)}
# end
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
+34 -21
View File
@@ -5,34 +5,34 @@ class Admin::TagsController < OrbitBackendController
before_filter :for_app_sub_manager, except: [:index]
def index
@tags = get_tags
@tags = @module_app.module_tags
@module_apps = ModuleApp.where(has_tag: true)
end
def new
@tag = Tag.new
@tag = ModuleTag.new
render layout: false
end
def edit
@tag = Tag.find(params[:id])
@tag = ModuleTag.find(params[:id])
render layout: false
end
def create
@tag = @module_app.module_tags.build(params[:tag].merge(is_default: true))
@tag = @module_app.module_tags.build(params[:module_tag].merge(is_default: true))
if @tag.save
redirect_to admin_tags_url
else
@tag = Tag.new(params[:tag])
@tag = Tag.new(params[:module_tag])
flash.now[:error] = t('create.error.tag')
render :action => "new"
end
end
def update
@tag = Tag.find(params[:id])
if @tag.update_attributes(params[:tag])
@tag = ModuleTag.find(params[:id])
if @tag.update_attributes(params[:module_tag])
redirect_to action: :index
else
flash.now[:error] = t('update.error.link')
@@ -41,35 +41,48 @@ class Admin::TagsController < OrbitBackendController
end
def add_to_default
tags = Tag.find(params[:ids].split(',')) rescue nil
if tags
tag_leases = tags.map{|t| t.tag_lease}.flatten
tags.each {|t| t.update_attribute(:is_default, true)}
tag_leases.each {|t| t.update_attribute(:module_app_ids, t.module_app_ids << @module_app.id)}
module_tags = ModuleTag.find(params[:ids].split(',')) rescue nil
if module_tags
module_tags.each do |module_tag|
module_tag.update_attribute(:is_default, true)
new_tag = module_tag.clone
new_tag['_id'] = BSON::ObjectId.new
new_tag['module_app_id'] = @module_app.id
new_tag.save
module_tag.update_attribute(:parent_id, new_tag.id)
end
end
redirect_to admin_tags_url
end
def delete_tags
tags = Tag.find(params[:ids].split(',')) rescue nil
tags = ModuleTag.find(params[:ids].split(',')) rescue nil
if tags
tags.each{|t|t.destroy}
tags.each(&:destroy)
end
redirect_to admin_tags_url
end
def merge
tags = Tag.find(params[:ids])
taggings = tags.map{|t| t.taggings}.flatten
tag_leases = tags.map{|t| t.tag_lease}
module_tags = ModuleTag.find(params[:ids])
tags = module_tags.map{|t| t.tag}
taggings, is_default = tags.inject([[], []]) do |values, tag|
values[0] << tag.taggings
values[1] << tag.is_default
values
end
taggings.flatten!
is_default.uniq!
name = params[:name]
module_app_ids = tag_leases.map{|t| t.module_app_ids}.flatten.uniq
if tags.detect{|t| t.is_default == true} || module_app_ids.count > 1
merge_default_tags(name, taggings, module_app_ids)
module_app_ids = module_tags.map{|t| t.module_app_id}.flatten.uniq
if is_default.size == 1 && is_default[0] == true
merge_default_tags(name, module_tags)
elsif is_default.include?(true) || module_app_ids.count > 1
merge_with_default_tags(name, module_tags)
else
merge_tags(name, taggings, module_app_ids[0])
module_tags.each(&:destroy)
end
tag_leases.each(&:destroy)
redirect_to admin_tags_url
end