Tag management module completed
This commit is contained in:
parent
218592c1f9
commit
e028791d68
|
@ -1,25 +1,53 @@
|
|||
function cardCheck() {
|
||||
if($('.tags').length) {
|
||||
var $card = $('.checkbox-card .card'),
|
||||
$check = $card.children($('input[type="checkbox"]'));
|
||||
$check.each(function(){
|
||||
if($(this).attr('checked')) {
|
||||
$(this).parent(".check").addClass("active");
|
||||
}
|
||||
})
|
||||
} else {
|
||||
var $card = $('.checkbox-card>li'),
|
||||
$check = $('input[type="checkbox"]');
|
||||
$check.each(function(){
|
||||
if($(this).attr('checked')) {
|
||||
$(this).parent("li").addClass("active");
|
||||
}
|
||||
})
|
||||
}
|
||||
$card.on('click', function() {
|
||||
$(this).toggleClass('active')
|
||||
});
|
||||
}
|
||||
// function cardCheck() {
|
||||
// if($('.tags').length) {
|
||||
// var $card = $('.checkbox-card .card'),
|
||||
// $check = $card.children($('input[type="checkbox"]'));
|
||||
// $check.each(function(){
|
||||
// if($(this).attr('checked')) {
|
||||
// $(this).parent(".check").addClass("active");
|
||||
// }
|
||||
// })
|
||||
// } else {
|
||||
// var $card = $('.checkbox-card>li'),
|
||||
// $check = $('input[type="checkbox"]');
|
||||
// $check.each(function(){
|
||||
// if($(this).attr('checked')) {
|
||||
// $(this).parent("li").addClass("active");
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
// $card.on('click', function() {
|
||||
// $(this).toggleClass('active')
|
||||
// });
|
||||
// }
|
||||
|
||||
// Focus first element
|
||||
!function ($) {
|
||||
$.fn.cardCheck = function(param) {
|
||||
_defaultSettings = {
|
||||
check: '',
|
||||
};
|
||||
_set = $.extend(_defaultSettings, param);
|
||||
$card = $(this);
|
||||
$check = _set.check;
|
||||
$check.each(function(){
|
||||
if($(this).attr('checked')) {
|
||||
$(this).parent($card).addClass("active");
|
||||
}
|
||||
});
|
||||
$card.on('click', function() {
|
||||
$(this).toggleClass('active')
|
||||
});
|
||||
}
|
||||
}(window.jQuery);
|
||||
$(function(){
|
||||
cardCheck();
|
||||
if($('.tags').length) {
|
||||
$('.card').cardCheck({
|
||||
check: $('.card input[type="checkbox"]'),
|
||||
});
|
||||
} else {
|
||||
$('.checkbox-card > li').cardCheck({
|
||||
check: $('.checkbox-card > li input[type="checkbox"]'),
|
||||
});
|
||||
}
|
||||
});
|
|
@ -52,10 +52,12 @@
|
|||
// if(showTags == 0) {
|
||||
// $('#deselect, #deleteTags').addClass('hide')
|
||||
// }
|
||||
li.children('.card').removeClass('active').children('input').attr('checked', false);
|
||||
if($('.tags input[type="checkbox"]:checked').length == 0) {
|
||||
$('#deselect, #deleteTags, #addDefault').addClass('hide')
|
||||
}
|
||||
|
||||
|
||||
// li.children('.card').removeClass('active').children('input').attr('checked', false);
|
||||
// if($('.tags input[type="checkbox"]:checked').length == 0) {
|
||||
// $('#deselect, #deleteTags, #addDefault').addClass('hide')
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -53,6 +53,13 @@
|
|||
} else {
|
||||
$viewPage.find('.content').load(url, function(){
|
||||
$viewPage.clone(true).appendTo( $pageslide.empty() ).show();
|
||||
if($('#filter-default-tag').length) {
|
||||
$('#filter-default-tag').fastLiveFilter('.add-default-tags-list', '.filter-item', '.tag');
|
||||
addTagsTab();
|
||||
$('#view-page .card').cardCheck({
|
||||
check: $('#view-page input[type="checkbox"]'),
|
||||
});
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -188,12 +195,12 @@
|
|||
|
||||
|
||||
|
||||
if($('#add-tags').length) {
|
||||
$('.set_new').addClass('active in').siblings().removeClass('active in');
|
||||
$('#pageslide .selete_defat .search-query').attr('id','filter-default-tag')
|
||||
$('#filter-default-tag').fastLiveFilter('.add-defalt-tags-list', '.filter-item', '.tag');
|
||||
$('.add-defalt-tags-list .filter-item').removeClass('mark');
|
||||
}
|
||||
// if($('#add-tags').length) {
|
||||
// $('.set_new').addClass('active in').siblings().removeClass('active in');
|
||||
// $('#pageslide .select_default .search-query').attr('id','filter-default-tag')
|
||||
// $('#filter-default-tag').fastLiveFilter('.add-default-tags-list', '.filter-item', '.tag');
|
||||
// $('.add-default-tags-list .filter-item').removeClass('mark');
|
||||
// }
|
||||
}
|
||||
|
||||
// Close the pageslide
|
||||
|
@ -242,7 +249,9 @@
|
|||
$pageslide.hide();
|
||||
_sliding = false;
|
||||
if( typeof callback != 'undefined' ) callback();
|
||||
$body.css({'width': 'auto'})
|
||||
$body.css({'width': 'auto'});
|
||||
$('#view-page .content').empty();
|
||||
$('#view-page .pane').remove();
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -233,9 +233,9 @@
|
|||
// for Orbit
|
||||
if($('#add-tags').length) {
|
||||
$('.set_new').addClass('active in').siblings().removeClass('active in');
|
||||
$('#pageslide .selete_defat .search-query').attr('id','filter-default-tag')
|
||||
$('#filter-default-tag').fastLiveFilter('.add-defalt-tags-list', '.filter-item', '.tag');
|
||||
$('.add-defalt-tags-list .filter-item').removeClass('mark');
|
||||
$('#pageslide .select_default .search-query').attr('id','filter-default-tag')
|
||||
$('#filter-default-tag').fastLiveFilter('.add-default-tags-list', '.filter-item', '.tag');
|
||||
$('.add-default-tags-list .filter-item').removeClass('mark');
|
||||
}
|
||||
//
|
||||
}
|
||||
|
|
|
@ -13,11 +13,10 @@ function checkedLength() {
|
|||
$moduleTags,
|
||||
$defaultTags,
|
||||
$toDefault;
|
||||
$card.on('click', function() {
|
||||
function reload_links() {
|
||||
if($('.default-tags').length) {
|
||||
$moduleTags = $('.module-tags input[type="checkbox"]:checked');
|
||||
$defaultTags = $('.default-tags input[type="checkbox"]:checked');
|
||||
var ids = new Array();
|
||||
|
||||
if($moduleTags.length > 1 || $moduleTags.length+$defaultTags.length > 1) {
|
||||
$('#mergerTags').removeClass('hide');
|
||||
|
@ -97,14 +96,14 @@ function checkedLength() {
|
|||
$('#deselect').off('click', deselect);
|
||||
};
|
||||
};
|
||||
})
|
||||
$('#mergerTags').on('click', function() {
|
||||
if($moduleTags || $defaultTags) {
|
||||
if($moduleTags.length > 1 || $moduleTags.length+$defaultTags.length > 1) {
|
||||
$('#tags-merger form').attr("action", $(this).attr("rel"));
|
||||
mergerTags()
|
||||
}
|
||||
}
|
||||
}
|
||||
$card.on('click', function() {
|
||||
reload_links();
|
||||
});
|
||||
$('#selectAllTags').on('click', function() {
|
||||
$('.filter-item:not(".mark") input[type="checkbox"]').attr('checked', true);
|
||||
$('.filter-item:not(".mark") .card').addClass('active');
|
||||
reload_links();
|
||||
});
|
||||
$('#deleteTags').on('click', function() {
|
||||
$('#delete_tags .tags-groups').empty();
|
||||
|
@ -127,6 +126,14 @@ function checkedLength() {
|
|||
$filterItem.find('a').removeAttr('href');
|
||||
}
|
||||
});
|
||||
$('#mergerTags').on('click', function() {
|
||||
if($moduleTags || $defaultTags) {
|
||||
if($moduleTags.length > 1 || $moduleTags.length+$defaultTags.length > 1) {
|
||||
$('#tags-merger form').attr("action", $(this).attr("rel"));
|
||||
mergerTags()
|
||||
}
|
||||
}
|
||||
});
|
||||
$('#removeDefaults').on('click', function() {
|
||||
$('#remove_defaults .tags-groups').empty();
|
||||
$('#remove_defaults a.remove-defaults').attr("href", $(this).attr("rel"));
|
||||
|
@ -154,7 +161,7 @@ function checkedLength() {
|
|||
|
||||
|
||||
function addTagsTab() {
|
||||
$('#add-tags .nav a').click(function (e) {
|
||||
$('a[data-toggle="tab"]').click(function (e) {
|
||||
e.preventDefault();
|
||||
$(this).tab('show');
|
||||
})
|
||||
|
@ -198,5 +205,5 @@ $(function() {
|
|||
} else {
|
||||
checkedLength();
|
||||
};
|
||||
addTagsTab();
|
||||
// addTagsTab();
|
||||
});
|
||||
|
|
|
@ -20,8 +20,8 @@
|
|||
#pageslide .content {
|
||||
padding: 15px;
|
||||
}
|
||||
#pageslide #view-page .content,
|
||||
#pageslide #view-page .pane {
|
||||
#items #pageslide #view-page .content,
|
||||
#items #pageslide #view-page .pane {
|
||||
padding: 0px;
|
||||
margin-top: 57px;
|
||||
}
|
||||
|
|
|
@ -153,6 +153,6 @@
|
|||
width: 199px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
#pageslide .add-defalt-tags-list {
|
||||
#pageslide .add-default-tags-list {
|
||||
margin-bottom: 0;
|
||||
}
|
|
@ -12,12 +12,12 @@ class Admin::ModuleTagsController < OrbitBackendController
|
|||
helper 'admin/tags'
|
||||
|
||||
def index
|
||||
@included_tags = @module_app.module_tags.where(is_default: true)
|
||||
@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
|
||||
|
@ -73,7 +73,11 @@ class Admin::ModuleTagsController < OrbitBackendController
|
|||
end
|
||||
|
||||
def update_included_default
|
||||
@module_app.update_attribute(:module_tag_ids, (@module_app.module_tag_ids - get_default_tag_ids) << params[:ids])
|
||||
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
|
||||
|
@ -84,8 +88,8 @@ class Admin::ModuleTagsController < OrbitBackendController
|
|||
@module_app_id = @module_app.id rescue nil
|
||||
end
|
||||
|
||||
def get_default_tags
|
||||
ModuleTag.where(is_default: true)
|
||||
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
|
||||
|
|
|
@ -50,11 +50,7 @@ class Admin::TagsController < OrbitBackendController
|
|||
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)
|
||||
clone_tag_to_default(module_tag)
|
||||
end
|
||||
end
|
||||
redirect_to admin_tags_url
|
||||
|
|
|
@ -64,13 +64,12 @@ class OrbitBackendController < ApplicationController
|
|||
tag_array = @module_app.tags.inject([]){ |result, value|
|
||||
result << [value.name, value]
|
||||
}
|
||||
params[:direction].eql?('asc') ? tag_array.sort : tag_array.sort.reverse!
|
||||
params[:direction].eql?('asc') ? tag_array.sort! : tag_array.sort!.reverse!
|
||||
sorted_objects = Array.new
|
||||
tag_array.each do |x|
|
||||
taggings = x[1].taggings
|
||||
taggings.each {|tagging| sorted_objects << tagging.taggable }
|
||||
end
|
||||
# debugger
|
||||
sorted_objects.flatten!
|
||||
sorted_objects.uniq!
|
||||
objects = get_with_nil(objects, option, sorted_objects)
|
||||
|
@ -155,7 +154,7 @@ class OrbitBackendController < ApplicationController
|
|||
def get_with_nil(objects, option, sorted_objects)
|
||||
tmp = Array.new
|
||||
objects.each { |object| tmp << [get_string_value_from_object(object), object] if (object.send(option).blank? || (object.send(option).size == 0 rescue nil)) }
|
||||
sorted = params[:direction].eql?('asc') ? tmp.sort : tmp.sort.reverse!
|
||||
sorted = params[:direction].eql?('asc') ? tmp.sort : tmp.sort.reverse
|
||||
sorted_tmp = sorted.collect {|a| a[1] }
|
||||
a = params[:direction].eql?('asc') ? (sorted_tmp + sorted_objects) : (sorted_objects + sorted_tmp)
|
||||
a.flatten
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
<!-- footer -->
|
||||
<div class="bottomnav clearfix">
|
||||
<div class="action pull-right">
|
||||
<button id="deselect" class="btn btn-inverse toggable hide"><%= t(:deselect) %></button>
|
||||
<button id="selectAllTags" class="btn"><%= t(:select_all) %></button>
|
||||
<button id="deselect" class="btn btn-inverse toggable hide"><%= t(:deselect_all) %></button>
|
||||
<%= link_to t(:delete), '#', id: "deleteTags", class: "btn btn-danger toggable hide", rel: '' %>
|
||||
<%= link_to t(:merge), '#', id: "mergerTags", class: "btn btn-success toggable hide", rel: merge_admin_module_tags_path(module_app_id: @module_app_id) %>
|
||||
<%= link_to t(:remove_default), '#', id: "removeDefaults", class: "btn btn-info toggable hide", rel: '' %>
|
||||
|
|
|
@ -1,80 +1,49 @@
|
|||
<div id="add-tags">
|
||||
<legend>Add Tags</legend>
|
||||
<ul class="nav nav-pills">
|
||||
<li class="active"><a href=".set_new" data-toggle="tab">Create new</a></li>
|
||||
<li><a href=".selete_defat" data-toggle="tab">Use Default</a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
|
||||
<div class="set_new tab-pane fade active in">
|
||||
<%= form_for @tag, url: admin_module_tags_path(module_app_id: @module_app_id), remote: true, id: 'create_new_tags' do |f| %>
|
||||
<fieldset>
|
||||
<%= render partial: "admin/tags/form", :locals => { :f => f } %>
|
||||
<div class="form-actions">
|
||||
<a href="javascript:$.pageslide.close()" class="btn btn-small"><%= t(:cancel) %></a>
|
||||
<%= f.submit t(:create_), class: 'btn btn-primary btn-small' %>
|
||||
</div>
|
||||
</fieldset>
|
||||
<% end %>
|
||||
<legend>Add Tags</legend>
|
||||
<ul class="nav nav-pills">
|
||||
<li class="active"><a href=".set_new" data-toggle="tab">Create new</a></li>
|
||||
<li><a href=".select_default" data-toggle="tab">Use Default</a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
|
||||
<div class="set_new tab-pane fade active in">
|
||||
<%= form_for @tag, url: admin_module_tags_path(module_app_id: @module_app_id), remote: true, id: 'create_new_tags' do |f| %>
|
||||
<fieldset>
|
||||
<%= render partial: "admin/tags/form", :locals => { :f => f } %>
|
||||
<div class="form-actions">
|
||||
<a href="javascript:$.pageslide.close()" class="btn btn-small"><%= t(:cancel) %></a>
|
||||
<%= f.submit t(:create_), class: 'btn btn-primary btn-small' %>
|
||||
</div>
|
||||
</fieldset>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<div class="select_default tags tab-pane fade">
|
||||
<input id="filter-default-tag" class="search-query" type="text" placeholder="Search Tags" value="">
|
||||
<%= form_tag update_included_default_admin_module_tags_path(module_app_id: @module_app_id), id: "filter-default-tag", method: :post, remote: true do %>
|
||||
<fieldset>
|
||||
<ul class="add-default-tags-list tags-groups checkbox-card">
|
||||
<% @default_tags.each do |module_tag| %>
|
||||
<li class="filter-item default">
|
||||
<p class="card pull-left">
|
||||
<input type="checkbox">
|
||||
<%= check_box_tag "ids[]", module_tag.id, false, class: "tag_id" %>
|
||||
</p>
|
||||
<a>
|
||||
<span class="amount"><%= get_tagging_count(module_tag) %></span>
|
||||
<%= show_names_slash(module_tag) %>
|
||||
</a>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
<div class="form-actions">
|
||||
<a href="javascript:$.pageslide.close()" class="btn btn-small"><%= t(:cancel) %></a>
|
||||
<%= submit_tag t(:add), class: 'btn btn-primary btn-small' %>
|
||||
</div>
|
||||
</fieldset>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="selete_defat tags tab-pane fade">
|
||||
<input class="search-query" type="text" placeholder="Search Tags" value="">
|
||||
<form id="use_default_tags">
|
||||
<fieldset>
|
||||
<ul class="add-defalt-tags-list tags-groups checkbox-card">
|
||||
<li class="filter-item default">
|
||||
<p class="card pull-left">
|
||||
<input type="checkbox">
|
||||
</p>
|
||||
<a>
|
||||
<span class="amount">8</span>
|
||||
<span class="tag">Apple</span> / <span class="tag">蘋果</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="filter-item default">
|
||||
<p class="card pull-left">
|
||||
<input type="checkbox">
|
||||
</p>
|
||||
<a>
|
||||
<span class="amount">8</span>
|
||||
<span class="tag">Bus</span> / <span class="tag">巴士</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="filter-item default">
|
||||
<p class="card pull-left">
|
||||
<input type="checkbox">
|
||||
</p>
|
||||
<a>
|
||||
<span class="amount">8</span>
|
||||
<span class="tag">Cake</span> / <span class="tag">蛋糕</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="filter-item default">
|
||||
<p class="card pull-left">
|
||||
<input type="checkbox">
|
||||
</p>
|
||||
<a>
|
||||
<span class="amount">8</span>
|
||||
<span class="tag">Dog</span> / <span class="tag">狗</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="filter-item default">
|
||||
<p class="card pull-left">
|
||||
<input type="checkbox">
|
||||
</p>
|
||||
<a>
|
||||
<span class="amount">8</span>
|
||||
<span class="tag">Elephant</span> / <span class="tag">大象</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="form-actions">
|
||||
<a href="javascript:$.pageslide.close()" class="btn btn-small">Cancel</a>
|
||||
<a class="btn btn-primary btn-small">Submit</a>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -4,5 +4,7 @@ $("#remove_defaults").modal('hide');
|
|||
$("#tags_index").html("<%= j render 'index' %>")
|
||||
$.pageslide.close();
|
||||
openSlide();
|
||||
cardCheck();
|
||||
$('.card').cardCheck({
|
||||
check: $('.card input[type="checkbox"]'),
|
||||
});
|
||||
checkedLength()
|
|
@ -1,7 +1,8 @@
|
|||
<!-- footer -->
|
||||
<div class="bottomnav clearfix">
|
||||
<div class="action pull-right">
|
||||
<button id="deselect" class="btn btn-inverse toggable hide"><%= t(:deselect) %></button>
|
||||
<button id="selectAllTags" class="btn"><%= t(:select_all) %></button>
|
||||
<button id="deselect" class="btn btn-inverse toggable hide"><%= t(:deselect_all) %></button>
|
||||
<%= link_to t(:delete), '#', id: "deleteTags", class: "btn btn-danger toggable hide", rel: '' %>
|
||||
<%= link_to t(:merge), '#', id: "mergerTags", class: "btn btn-success toggable hide", rel: merge_admin_tags_path %>
|
||||
<%= link_to t(:add_to_default), add_to_default_admin_tags_path, id: "addDefault", class: "btn btn-info toggable hide", method: :post, remote: true %>
|
||||
|
|
|
@ -3,5 +3,7 @@ $("#tags-merger").modal('hide');
|
|||
$("#tags_index").html("<%= j render 'index' %>")
|
||||
$.pageslide.close();
|
||||
openSlide();
|
||||
cardCheck();
|
||||
$('.card').cardCheck({
|
||||
check: $('.card input[type="checkbox"]'),
|
||||
});
|
||||
checkedLength()
|
|
@ -25,11 +25,23 @@
|
|||
</nav>
|
||||
<section id="main-wrap">
|
||||
<div class="wrap-inner">
|
||||
<div id="filter" class="topnav clearfix">
|
||||
<ul class="breadcrumb pull-left">
|
||||
<li><a href="/orbit_4.0.1/admin/dashboards/dashboards.shtml">Dashboard</a> <span class="divider">/</span></li>
|
||||
<li class="active">All</li>
|
||||
</ul>
|
||||
|
||||
<div class="pull-right">
|
||||
<input id="filter-input" class="search-query input-medium" type="text" placeholder="Search Tags" value="">
|
||||
</div>
|
||||
</div>
|
||||
<%= yield %>
|
||||
<div id="view-page" class="nano" style="display:none">
|
||||
<div class="content">
|
||||
</div>
|
||||
</div>
|
||||
<div id="pageslide">
|
||||
<div id="view-page" class="nano" style="display:none">
|
||||
<div class="content">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<%= javascript_include_tag "lib/jquery.pageslide.js" %>
|
||||
</div>
|
||||
</section>
|
||||
|
|
|
@ -5,7 +5,7 @@ en:
|
|||
create:
|
||||
error:
|
||||
tag: Error when creating tag.
|
||||
deselect: Deselect
|
||||
deselect_all: Deselect all
|
||||
editing:
|
||||
tag: Editing tag
|
||||
login_orbit: Log In to Orbit
|
||||
|
@ -14,6 +14,7 @@ en:
|
|||
tag: New tag
|
||||
no_app: No module
|
||||
remove_default: Remove default
|
||||
select_all: Select all
|
||||
tag:
|
||||
add: Add tag
|
||||
delete: Delete tags
|
||||
|
|
|
@ -116,6 +116,7 @@ Orbit::Application.routes.draw do
|
|||
post 'delete_tags'
|
||||
post 'merge'
|
||||
post 'remove_default'
|
||||
post 'update_included_default'
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -81,12 +81,21 @@ module OrbitTag
|
|||
module Merging
|
||||
protected
|
||||
|
||||
def create_tag(name, taggings, module_app, default=false)
|
||||
new_tag = module_app.module_tags.create(name_translations: name, module_app_id: module_app.id, is_default: default)
|
||||
taggings.each do |tagging|
|
||||
tagging.taggable.taggings.create(tag_id: new_tag.tag.id) unless tagging.taggable.taggings.detect{|t| t.tag_id.eql?(new_tag.tag.id)}
|
||||
end
|
||||
new_tag
|
||||
def clone_tag(module_tag, parent_id=nil, set_parent=nil)
|
||||
new_tag = module_tag.clone
|
||||
new_tag['_id'] = BSON::ObjectId.new
|
||||
new_tag['module_app_id'] = @module_app.id
|
||||
new_tag['parent_id'] = parent_id
|
||||
new_tag.save
|
||||
module_tag.update_attribute(:parent_id, new_tag.id) if set_parent
|
||||
end
|
||||
|
||||
def clone_tag_from_default(default_tag)
|
||||
clone_tag(default_tag, default_tag.id)
|
||||
end
|
||||
|
||||
def clone_tag_to_default(default_tag)
|
||||
clone_tag(default_tag, nil, true)
|
||||
end
|
||||
|
||||
def merge_default_tags(name, tag_leases)
|
||||
|
@ -123,7 +132,10 @@ module OrbitTag
|
|||
|
||||
def merge_tags(name, taggings, module_app_id, default=nil)
|
||||
module_app = ModuleApp.find(module_app_id)
|
||||
new_tag = create_tag(name, taggings, module_app, default)
|
||||
new_tag = module_app.module_tags.create(name_translations: name, module_app_id: module_app.id, is_default: default)
|
||||
taggings.each do |tagging|
|
||||
tagging.taggable.taggings.create(tag_id: new_tag.tag.id) unless tagging.taggable.taggings.detect{|t| t.tag_id.eql?(new_tag.tag.id)}
|
||||
end
|
||||
new_tag
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue