Tag functionalities for new UI
This commit is contained in:
1 parent
ff03d66439
commit
bf3d20ea46
25 files changed
+212
-30
No files matched your search
@@ -0,0 +1,57 @@
|
||||
class Admin::ModuleTagsController < OrbitBackendController
|
||||
before_filter :force_order_for_visitor, only: [:index]
|
||||
before_filter :force_order_for_user, except: [:index]
|
||||
before_filter :for_app_sub_manager, except: [:index]
|
||||
|
||||
def index
|
||||
@tags = get_tags
|
||||
@included_tags = @module_app.module_tags.where(is_default: true)
|
||||
@default_tags = get_default_tags
|
||||
end
|
||||
|
||||
def new
|
||||
|
||||
end
|
||||
|
||||
def edit
|
||||
@tag = Tag.find(params[:id])
|
||||
end
|
||||
|
||||
def create
|
||||
@tag = @module_app ? @module_app.module_tags.create(params[:tag])
|
||||
end
|
||||
|
||||
def update
|
||||
@tag = Tag.find(params[:id])
|
||||
@tag.update_attributes(params[:tag])
|
||||
end
|
||||
|
||||
def destroy
|
||||
@tag = Tag.find(params[:id])
|
||||
@tag.destroy
|
||||
respond_to do |format|
|
||||
format.js { render 'js/remove_element', :locals => {:id => "#{dom_id @tag}"} }
|
||||
end
|
||||
end
|
||||
|
||||
def update_included_default
|
||||
@module_app.update_attribute(:module_tag_ids, (@module_app.module_tag_ids - get_default_tag_ids) << params[:ids])
|
||||
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
|
||||
ModuleTag.where(is_default: true)
|
||||
end
|
||||
|
||||
def get_default_tag_ids
|
||||
get_default_tags.map{|t| t.id}
|
||||
end
|
||||
|
||||
end
|
||||
@@ -1,11 +1,11 @@
|
||||
class Admin::TagsController < OrbitBackendController
|
||||
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 :set_module_app
|
||||
before_filter :force_order_for_visitor, only: [:index]
|
||||
before_filter :force_order_for_user, except: [:index]
|
||||
before_filter :for_app_sub_manager, except: [:index]
|
||||
|
||||
def index
|
||||
@tags = get_tags
|
||||
@module_apps = ModuleApp.where(has_tag: true)
|
||||
end
|
||||
|
||||
def new
|
||||
@@ -17,7 +17,7 @@ class Admin::TagsController < OrbitBackendController
|
||||
end
|
||||
|
||||
def create
|
||||
@tag = @module_app ? @module_app.tags.create(params[:tag]) : Tag.create(params[:tag])
|
||||
@tag = @module_app.module_tags.create(params[:tag].merge(is_default: true))
|
||||
end
|
||||
|
||||
def update
|
||||
@@ -32,16 +32,51 @@ class Admin::TagsController < OrbitBackendController
|
||||
format.js { render 'js/remove_element', :locals => {:id => "#{dom_id @tag}"} }
|
||||
end
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def get_tags
|
||||
@tags = @module_app.blank? ? Tag.all : @module_app.tags
|
||||
|
||||
def add_to_default
|
||||
tags = Tag.find(params[:ids])
|
||||
tag_leases = tags.map{|t| t.tag_lease}
|
||||
tags.each {|t| t.update_attribute(:is_default, true)}
|
||||
tag_leases.each {|t| t.update_attribute(:module_app_ids, module_app_ids << @module_app.id)}
|
||||
end
|
||||
|
||||
def set_module_app
|
||||
@module_app = ModuleApp.find(params[:module_app_id]) if params[:module_app_id]
|
||||
@module_app_id = @module_app.id rescue nil
|
||||
def merge
|
||||
tags = Tag.find(params[:ids])
|
||||
taggings = tags.map{|t| t.taggings}
|
||||
tag_leases = tags.map{|t| t.tag_lease}
|
||||
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)
|
||||
else
|
||||
merge_tags(name, tags, module_app_ids[0])
|
||||
end
|
||||
taggings.each(&:destroy)
|
||||
tag_leases.each(&:destroy)
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def create_default_tag(name, taggings, module_app_ids)
|
||||
create_tag(@module_app, name, taggings, module_app_ids, true)
|
||||
end
|
||||
|
||||
def create_tag(module_app, name, taggings, module_app_ids=[module_app], default=false)
|
||||
new_tag = module_app.tags.create(name_translations: name, is_default: default)
|
||||
taggings.each do |tagging|
|
||||
tagging.tag = new_tag
|
||||
tagging.save
|
||||
end
|
||||
tag_lease = new_tag.create_tag_lease(module_app_ids: (module_app_ids << module_app).uniq, is_default: default)
|
||||
end
|
||||
|
||||
def merge_default_tags(name, taggings, module_app_ids)
|
||||
create_default_tag(name, taggings, module_app_ids)
|
||||
end
|
||||
|
||||
def merge_tags(name, taggings, module_app_id)
|
||||
module_app = ModuleApp.find(module_app_id)
|
||||
create_tag(module_app, name, taggings)
|
||||
end
|
||||
|
||||
end
|
||||
Reference in new issue
Block a user