|
|
|
@ -16,33 +16,44 @@ class TagsController < ApplicationController
|
|
|
|
|
# $related_tags = Array.new
|
|
|
|
|
NUMBERS = Setting.tags_show_search_results
|
|
|
|
|
|
|
|
|
|
attr_reader :obj_id,:obj_flag,:selected_tags,:related_tags
|
|
|
|
|
|
|
|
|
|
# 接收参数解释:
|
|
|
|
|
# params[:q]这是在其他页面点击tag,跳转到该页面后的结果显示
|
|
|
|
|
# params[:selected_tags],这是在过滤页面增删tag进行过滤传过来的参数
|
|
|
|
|
# params[:q]这是在其他页面点击tag,跳转到该页面后的结果显示 ;params[:selected_tags],这是在过滤页面增删tag进行过滤传过来的参数
|
|
|
|
|
# 最后是2个过滤何种数据,显示结果的控制参数params[:obj_id],params[:object_falg]
|
|
|
|
|
# 0代表删除tag 1代表增加tag
|
|
|
|
|
def index
|
|
|
|
|
|
|
|
|
|
if params[:q]
|
|
|
|
|
@selected_tags = Array.new
|
|
|
|
|
@related_tags = Array.new
|
|
|
|
|
|
|
|
|
|
@selected_tags.push params[:q]
|
|
|
|
|
|
|
|
|
|
@obj_id = params[:obj_id]
|
|
|
|
|
@obj_flag = params[:object_flag]
|
|
|
|
|
|
|
|
|
|
@selected_tags = Array.new
|
|
|
|
|
@related_tags = nil
|
|
|
|
|
|
|
|
|
|
if params[:q]
|
|
|
|
|
@selected_tags << params[:q]
|
|
|
|
|
else
|
|
|
|
|
@selected_tags = params[:selected_tags]
|
|
|
|
|
@do_what = params[:do_what]
|
|
|
|
|
@tag = params[:tag]
|
|
|
|
|
@selected_tags = params[:current_selected_tags]
|
|
|
|
|
@selected_tags = @selected_tags.nil? ? Array.new : @selected_tags
|
|
|
|
|
|
|
|
|
|
case @do_what
|
|
|
|
|
when '0' then
|
|
|
|
|
@selected_tags.delete @tag #数组中删除有多方式 可以改用shift,pop
|
|
|
|
|
when '1' then
|
|
|
|
|
# 判断是否已存在该tag 主要用来处理分页的情况
|
|
|
|
|
unless @selected_tags.include? @tag
|
|
|
|
|
@selected_tags << @tag
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
@users_tags_num,@projects_tags_num,@issues_tags_num,@bids_tags_num = get_tags_size
|
|
|
|
|
|
|
|
|
|
# 获取搜索结果
|
|
|
|
|
@obj,@obj_pages,@users_results,
|
|
|
|
|
@obj,@obj_pages,@results_count,@users_results,
|
|
|
|
|
@projects_results,
|
|
|
|
|
@issues_results,
|
|
|
|
|
@bids_results = refresh_results(@obj_id,@obj_flag)
|
|
|
|
|
@bids_results = refresh_results(@obj_id,@obj_flag,@selected_tags)
|
|
|
|
|
|
|
|
|
|
# 这里是做tag推荐用的, 用来生产推荐的tags
|
|
|
|
|
unless @obj.nil?
|
|
|
|
@ -56,6 +67,7 @@ class TagsController < ApplicationController
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# 增加已选的tag
|
|
|
|
|
def add_tag
|
|
|
|
|
@tag = params[:tag]
|
|
|
|
@ -80,7 +92,7 @@ class TagsController < ApplicationController
|
|
|
|
|
$selected_tags.delete(@tag)
|
|
|
|
|
|
|
|
|
|
# 获取搜索结果
|
|
|
|
|
@obj,@obj_pages,@users_results,
|
|
|
|
|
@obj,@obj_pages,@results_count,@users_results,
|
|
|
|
|
@projects_results,
|
|
|
|
|
@issues_results,
|
|
|
|
|
@bids_results = refresh_results(@obj_id,@show_flag)
|
|
|
|
@ -105,14 +117,9 @@ class TagsController < ApplicationController
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
|
|
def tagged_on_object(object)
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# 这里用来刷新搜索结果的区域
|
|
|
|
|
# 函数的返回值 前2字段用来处理获取其他tag和分页 ,另外4个返回值为过滤结果
|
|
|
|
|
def refresh_results(obj_id,obj_flag)
|
|
|
|
|
def refresh_results(obj_id,obj_flag,selected_tags)
|
|
|
|
|
@users_results = nil
|
|
|
|
|
@projects_results = nil
|
|
|
|
|
@issues_results = nil
|
|
|
|
@ -124,29 +131,29 @@ private
|
|
|
|
|
case obj_flag
|
|
|
|
|
when '1' then
|
|
|
|
|
@obj = User.find_by_id(obj_id)
|
|
|
|
|
@obj_pages,@users_results = for_pagination(get_users_by_tag(@selected_tags))
|
|
|
|
|
@obj_pages,@users_results,@results_count = for_pagination(get_users_by_tag(selected_tags))
|
|
|
|
|
when '2' then
|
|
|
|
|
@obj = Project.find_by_id(obj_id)
|
|
|
|
|
@obj_pages,@projects_results = for_pagination(get_projects_by_tag(@selected_tags))
|
|
|
|
|
@obj_pages,@projects_results,@results_count = for_pagination(get_projects_by_tag(selected_tags))
|
|
|
|
|
when '3' then
|
|
|
|
|
@obj = Issue.find_by_id(obj_id)
|
|
|
|
|
@obj_pages,@issues_results = for_pagination(get_issues_by_tag(@selected_tags))
|
|
|
|
|
@obj_pages,@issues_results,@results_count = for_pagination(get_issues_by_tag(selected_tags))
|
|
|
|
|
when '4' then
|
|
|
|
|
@obj_pages,@bids_results = for_pagination(get_bids_by_tag(@selected_tags))
|
|
|
|
|
@obj_pages,@bids_results,@results_count = for_pagination(get_bids_by_tag(selected_tags))
|
|
|
|
|
@obj = Bid.find_by_id(obj_id)
|
|
|
|
|
else
|
|
|
|
|
@obj = nil
|
|
|
|
|
end
|
|
|
|
|
return @obj,@obj_pages,@users_results,@projects_results,@issues_results,@bids_results
|
|
|
|
|
return @obj,@obj_pages,@results_count,@users_results,@projects_results,@issues_results,@bids_results
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def for_pagination(results)
|
|
|
|
|
@offset, @limit = api_offset_and_limit({:limit => 3}) # 设置每页显示的个数
|
|
|
|
|
@offset, @limit = api_offset_and_limit({:limit => NUMBERS }) # 设置每页显示的个数
|
|
|
|
|
@results_count = results.count
|
|
|
|
|
@obj_pages = Paginator.new @results_count, @limit, params['page'] # 3个参数分别是:总数,每页显示数目,第几页
|
|
|
|
|
@offset ||= @obj_pages.offset
|
|
|
|
|
results = results.offset(@offset).limit(@limit).all # 这里默认设置为按时间排序
|
|
|
|
|
return @obj_pages,results
|
|
|
|
|
return @obj_pages,results, @results_count
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
#获取有某类对象的tag总数
|
|
|
|
|