Merge branch 'zxh' into 'master'
用户行为监控 将用户行为监控从日志文件转移到数据库user_actions表中 将搜索帖子的注释取消 See merge request !4
This commit is contained in:
commit
4261c4a46c
|
@ -175,11 +175,11 @@ class RelativeMemosController < ApplicationController
|
||||||
|
|
||||||
#order_by(:created_time, :desc)
|
#order_by(:created_time, :desc)
|
||||||
#with(:created_time, Date.new(year,01,01)..Date.new(year+1,01,01))
|
#with(:created_time, Date.new(year,01,01)..Date.new(year+1,01,01))
|
||||||
any_of do
|
# any_of do
|
||||||
# with :parent_id, 0
|
# # with :parent_id, 0
|
||||||
# with :parent_id, nil
|
# # with :parent_id, nil
|
||||||
with :source, params[:name].downcase
|
# with :source, params[:name].downcase
|
||||||
end
|
# end
|
||||||
paginate :page => params[:page], :per_page => per_page_option
|
paginate :page => params[:page], :per_page => per_page_option
|
||||||
end
|
end
|
||||||
@topics = search.results
|
@topics = search.results
|
||||||
|
|
|
@ -7,7 +7,7 @@ class UserTracesController < ApplicationController
|
||||||
keyword = params[:keyword]
|
keyword = params[:keyword]
|
||||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||||
parameter = Hash["keyword" => keyword]
|
parameter = Hash["keyword" => keyword]
|
||||||
writeLog(logger_search,type,session_id,ip,host,time,parameter)
|
writeDatabase(logger_search,type,session_id,ip,host,time,parameter)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.json {render :json => {}}
|
format.json {render :json => {}}
|
||||||
end
|
end
|
||||||
|
@ -18,7 +18,7 @@ class UserTracesController < ApplicationController
|
||||||
keyword = params[:keyword]
|
keyword = params[:keyword]
|
||||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||||
parameter = Hash["keyword" => keyword]
|
parameter = Hash["keyword" => keyword]
|
||||||
writeLog(logger_search,type,session_id,ip,host,time,parameter)
|
writeDatabase(logger_search,type,session_id,ip,host,time,parameter)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.json {render :json => {}}
|
format.json {render :json => {}}
|
||||||
end
|
end
|
||||||
|
@ -32,7 +32,7 @@ class UserTracesController < ApplicationController
|
||||||
keyword = params[:keyword]
|
keyword = params[:keyword]
|
||||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||||
parameter = Hash["keyword" => keyword, "page" => page, "rank" => rank, "osp_id" => id]
|
parameter = Hash["keyword" => keyword, "page" => page, "rank" => rank, "osp_id" => id]
|
||||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.json {render :json => {}}
|
format.json {render :json => {}}
|
||||||
end
|
end
|
||||||
|
@ -45,7 +45,7 @@ class UserTracesController < ApplicationController
|
||||||
id = params[:id]
|
id = params[:id]
|
||||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||||
parameter = Hash["page" => page, "rank" => rank, "osp_id" => id]
|
parameter = Hash["page" => page, "rank" => rank, "osp_id" => id]
|
||||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.json {render :json => {}}
|
format.json {render :json => {}}
|
||||||
end
|
end
|
||||||
|
@ -56,8 +56,7 @@ class UserTracesController < ApplicationController
|
||||||
osp_id = params[:osp_id]
|
osp_id = params[:osp_id]
|
||||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||||
parameter = Hash["osp_id" => osp_id]
|
parameter = Hash["osp_id" => osp_id]
|
||||||
session_id = request.session_options[:id] #由于onclick事件在前段js页面 因此无法获取session_id
|
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.json {render :json => {}}
|
format.json {render :json => {}}
|
||||||
end
|
end
|
||||||
|
@ -71,7 +70,7 @@ class UserTracesController < ApplicationController
|
||||||
osp_id = params[:osp_id]
|
osp_id = params[:osp_id]
|
||||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||||
parameter = Hash["osp_id" => osp_id, "source" => source, "url" => url, "rank" => rank]
|
parameter = Hash["osp_id" => osp_id, "source" => source, "url" => url, "rank" => rank]
|
||||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.json {render :json => {}}
|
format.json {render :json => {}}
|
||||||
end
|
end
|
||||||
|
@ -84,7 +83,7 @@ class UserTracesController < ApplicationController
|
||||||
rank = params[:rank]
|
rank = params[:rank]
|
||||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||||
parameter = Hash["osp_id_former" => osp_id_former,"rank" => rank, "osp_id_similar" => osp_id_similar]
|
parameter = Hash["osp_id_former" => osp_id_former,"rank" => rank, "osp_id_similar" => osp_id_similar]
|
||||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.json {render :json => {}}
|
format.json {render :json => {}}
|
||||||
end
|
end
|
||||||
|
@ -111,7 +110,7 @@ class UserTracesController < ApplicationController
|
||||||
|
|
||||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||||
parameter = Hash["osp_id_former" => osp_id_former,"rank" => rank, "osp_id_similar" => osp_id_similar]
|
parameter = Hash["osp_id_former" => osp_id_former,"rank" => rank, "osp_id_similar" => osp_id_similar]
|
||||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.json {render :json => {}}
|
format.json {render :json => {}}
|
||||||
end
|
end
|
||||||
|
@ -138,7 +137,7 @@ class UserTracesController < ApplicationController
|
||||||
|
|
||||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||||
parameter = Hash["osp_id_former" => osp_id_former,"rank" => rank, "osp_id_similar" => osp_id_similar]
|
parameter = Hash["osp_id_former" => osp_id_former,"rank" => rank, "osp_id_similar" => osp_id_similar]
|
||||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.json {render :json => {}}
|
format.json {render :json => {}}
|
||||||
end
|
end
|
||||||
|
@ -151,7 +150,7 @@ class UserTracesController < ApplicationController
|
||||||
rank = params[:rank]
|
rank = params[:rank]
|
||||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||||
parameter = Hash["osp_id_former" => osp_id_former,"rank" => rank, "osp_id_related" => osp_id_related]
|
parameter = Hash["osp_id_former" => osp_id_former,"rank" => rank, "osp_id_related" => osp_id_related]
|
||||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.json {render :json => {}}
|
format.json {render :json => {}}
|
||||||
end
|
end
|
||||||
|
@ -161,7 +160,7 @@ class UserTracesController < ApplicationController
|
||||||
type = "click_project_list"
|
type = "click_project_list"
|
||||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||||
parameter = Hash.new
|
parameter = Hash.new
|
||||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.json {render :json => {}}
|
format.json {render :json => {}}
|
||||||
end
|
end
|
||||||
|
@ -171,7 +170,7 @@ class UserTracesController < ApplicationController
|
||||||
type = "click_more_tags"
|
type = "click_more_tags"
|
||||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||||
parameter = Hash["osp_id" => params[:osp_id]]
|
parameter = Hash["osp_id" => params[:osp_id]]
|
||||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.json {render :json => {}}
|
format.json {render :json => {}}
|
||||||
end
|
end
|
||||||
|
@ -181,7 +180,7 @@ class UserTracesController < ApplicationController
|
||||||
type = "click_tag" #还可能是帖子的标签
|
type = "click_tag" #还可能是帖子的标签
|
||||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||||
parameter = Hash["osp_id" => params[:osp_id], "rank" => params[:rank], "tag_name" => params[:tag_name]]
|
parameter = Hash["osp_id" => params[:osp_id], "rank" => params[:rank], "tag_name" => params[:tag_name]]
|
||||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.json {render :json => {}}
|
format.json {render :json => {}}
|
||||||
end
|
end
|
||||||
|
@ -191,7 +190,7 @@ class UserTracesController < ApplicationController
|
||||||
type = "click_knowledge_after_search"
|
type = "click_knowledge_after_search"
|
||||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||||
parameter = Hash["keyword" => params[:keyword], "sort" => params[:sort], "page" => params[:page], "rank" => params[:rank], "knowledge_id" => params[:id]]
|
parameter = Hash["keyword" => params[:keyword], "sort" => params[:sort], "page" => params[:page], "rank" => params[:rank], "knowledge_id" => params[:id]]
|
||||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.json {render :json => {}}
|
format.json {render :json => {}}
|
||||||
end
|
end
|
||||||
|
@ -200,8 +199,8 @@ class UserTracesController < ApplicationController
|
||||||
def click_knowledge_in_project_detail
|
def click_knowledge_in_project_detail
|
||||||
type = "click_knowledge_in_project_detail"
|
type = "click_knowledge_in_project_detail"
|
||||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||||
parameter = Hash["osp_id" => params[:osp_id], "memo_type" => params[:memo_type], "page" => params[:page], "rank" => params[:rank], "knowledge_id" => params[:memo_id]]
|
parameter = Hash["osp_id" => params[:osp_id], "memo_type" => params[:memo_type], "page" => params[:page], "rank" => params[:rank], "knowledge_id" => params[:memo_id], "href" => params[:href]]
|
||||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.json {render :json => {}}
|
format.json {render :json => {}}
|
||||||
end
|
end
|
||||||
|
@ -211,7 +210,7 @@ class UserTracesController < ApplicationController
|
||||||
type = "click_more_knowledge_in_project_detail"
|
type = "click_more_knowledge_in_project_detail"
|
||||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||||
parameter = Hash["osp_id" => params[:osp_id], "memo_type" => params[:type]]
|
parameter = Hash["osp_id" => params[:osp_id], "memo_type" => params[:type]]
|
||||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.json {render :json => {}}
|
format.json {render :json => {}}
|
||||||
end
|
end
|
||||||
|
@ -221,7 +220,7 @@ class UserTracesController < ApplicationController
|
||||||
type = "click_knowledge_in_project_detail_after_click_more"
|
type = "click_knowledge_in_project_detail_after_click_more"
|
||||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||||
parameter = Hash["osp_id" => params[:osp_id], "memo_type" => params[:memo_type], "page" => params[:page], "rank" => params[:rank], "knowledge_id" => params[:memo_id], "sort_by" => params[:sort]]
|
parameter = Hash["osp_id" => params[:osp_id], "memo_type" => params[:memo_type], "page" => params[:page], "rank" => params[:rank], "knowledge_id" => params[:memo_id], "sort_by" => params[:sort]]
|
||||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.json {render :json => {}}
|
format.json {render :json => {}}
|
||||||
end
|
end
|
||||||
|
@ -235,7 +234,7 @@ class UserTracesController < ApplicationController
|
||||||
keyword = 'nil'
|
keyword = 'nil'
|
||||||
end
|
end
|
||||||
parameter = Hash["keyword" => keyword, "page" => params[:page], "rank" => params[:rank], "osp_id" => params[:osp_id]]
|
parameter = Hash["keyword" => keyword, "page" => params[:page], "rank" => params[:rank], "osp_id" => params[:osp_id]]
|
||||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.json {render :json => {}}
|
format.json {render :json => {}}
|
||||||
end
|
end
|
||||||
|
@ -245,7 +244,7 @@ class UserTracesController < ApplicationController
|
||||||
type = "click_project_img_after_search"
|
type = "click_project_img_after_search"
|
||||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||||
parameter = Hash["keyword" => params[:keyword], "page" => params[:page], "rank" => params[:rank], "osp_id" => params[:osp_id]]
|
parameter = Hash["keyword" => params[:keyword], "page" => params[:page], "rank" => params[:rank], "osp_id" => params[:osp_id]]
|
||||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.json {render :json => {}}
|
format.json {render :json => {}}
|
||||||
end
|
end
|
||||||
|
@ -255,27 +254,75 @@ class UserTracesController < ApplicationController
|
||||||
type = "click_project_img_in_project_list"
|
type = "click_project_img_in_project_list"
|
||||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||||
parameter = Hash["page" => params[:page], "rank" => params[:rank], "osp_id" => params[:osp_id]]
|
parameter = Hash["page" => params[:page], "rank" => params[:rank], "osp_id" => params[:osp_id]]
|
||||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.json {render :json => {}}
|
format.json {render :json => {}}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# 定义函数 将trustie_user_id存储到session中
|
||||||
|
def add_trustie_user_id
|
||||||
|
# 获取参数
|
||||||
|
trustie_user_id = params[:trustie_user_id]
|
||||||
|
if trustie_user_id != nil
|
||||||
|
# 判断长度是否合乎规范
|
||||||
|
if trustie_user_id.length <= 11
|
||||||
|
# 表示可能是int型数据
|
||||||
|
# 看一下id是否符合规范 是否是真正跳转过来的
|
||||||
|
pattern = /\D+/ # 表示字符串中有非数字的字符
|
||||||
|
index = (trustie_user_id =~ pattern)
|
||||||
|
if index == nil
|
||||||
|
# 表示合法的trustie_user_id
|
||||||
|
session[:trustie_user_id] = trustie_user_id.to_i
|
||||||
|
else
|
||||||
|
session[:trustie_user_id] = nil # 表示trustie_user_id中有除了数字之外的字符
|
||||||
|
end
|
||||||
|
else
|
||||||
|
session[:trustie_user_id] = nil # 表示长度不合法
|
||||||
|
end
|
||||||
|
else
|
||||||
|
session[:trustie_user_id] = nil # 表示为空
|
||||||
|
end
|
||||||
|
respond_to do |format|
|
||||||
|
format.json {render :json => {}}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
# 定义函数捕获用户点击link的操作
|
||||||
|
def click_link
|
||||||
|
# url = request.original_url
|
||||||
|
# url = URI.unescape(url) # 获取url跳转的url地址lick_link" # 表示点击了a链接
|
||||||
|
href = params[:href]# 获取href参数
|
||||||
|
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||||
|
parameter = Hash["url" => href]
|
||||||
|
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||||
|
respond_to do |format|
|
||||||
|
format.json {render :json => {}}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
def generateHead
|
def generateHead
|
||||||
#创建一个新的日志
|
# #创建一个新的日志
|
||||||
filename = File.join(Rails.root, 'log', 'user_trace_search.log')
|
# filename = File.join(Rails.root, 'log', 'user_trace_search.log')
|
||||||
logger_search = Logger.new(filename)
|
# logger_search = Logger.new(filename)
|
||||||
|
#
|
||||||
|
# #创建用户click的日志
|
||||||
|
# filename = File.join(Rails.root, 'log', 'user_trace_click.log')
|
||||||
|
# logger_click = Logger.new(filename)
|
||||||
|
|
||||||
#创建用户click的日志
|
logger_search = nil
|
||||||
filename = File.join(Rails.root, 'log', 'user_trace_click.log')
|
logger_click = nil
|
||||||
logger_click = Logger.new(filename)
|
|
||||||
|
|
||||||
session_id = request.session_options[:id]
|
|
||||||
|
|
||||||
|
session_id = params[:session_id]
|
||||||
if session_id == nil
|
if session_id == nil
|
||||||
session_id = params[:session_id]
|
session[:session_id]
|
||||||
|
session_id = request.session_options[:id]
|
||||||
end
|
end
|
||||||
|
# if session_id == nil
|
||||||
|
# session_id = params[:session_id]
|
||||||
|
# end
|
||||||
|
|
||||||
# ip = request.remote_ip
|
# ip = request.remote_ip
|
||||||
ip = Socket.ip_address_list.detect(&:ipv4_private?).try(:ip_address)
|
ip = Socket.ip_address_list.detect(&:ipv4_private?).try(:ip_address)
|
||||||
|
@ -308,6 +355,34 @@ class UserTracesController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# 张迅晖 将用户行为监控存储到数据库中
|
||||||
|
def writeDatabase(logger,type,session_id,ip,host,time,parameter) # logger为了和writeLog保持一致的参数 在该函数中没有实际作用
|
||||||
|
# puts "~~~~session_id"
|
||||||
|
if type != nil && session_id != nil && ip != nil && host != nil && session_id != 'null' && session_id != ""
|
||||||
|
# 读取session中trustie_user_id
|
||||||
|
trustie_user_id = session[:trustie_user_id]
|
||||||
|
# 判断trustie_user_id是否为nil 如果为nil表示不是trustie跳转过来的用户 如果不是nil表示是trustie链接跳转过来的用户
|
||||||
|
params = "" # 用于存储参数
|
||||||
|
keys_in_parameter = parameter.keys
|
||||||
|
keys_in_parameter.each do |k|
|
||||||
|
value = parameter[k]
|
||||||
|
params = params + "[" + k + "=>" + value.to_s + "]"
|
||||||
|
end
|
||||||
|
params = params.strip # 获取到了存储的参数
|
||||||
|
|
||||||
|
# 将结果存储到数据库中
|
||||||
|
userAction = UserAction.new
|
||||||
|
userAction.trustie_user_id = trustie_user_id
|
||||||
|
userAction.session_id = session_id
|
||||||
|
userAction.type = type
|
||||||
|
userAction.ip = ip
|
||||||
|
userAction.host = host
|
||||||
|
userAction.time = time
|
||||||
|
userAction.params = params
|
||||||
|
userAction.save
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def getCurrentTime
|
def getCurrentTime
|
||||||
time = Time.new.localtime
|
time = Time.new.localtime
|
||||||
year = time.year.to_s
|
year = time.year.to_s
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
class HotWord < ActiveRecord::Base
|
class HotWord < ActiveRecord::Base
|
||||||
attr_accessible :name, :osp_id, :weight
|
attr_accessible :name, :osp_id, :weight
|
||||||
belongs_to :open_source_project, :foreign_key => "osp_id"
|
belongs_to :open_source_project, :foreign_key => "osp_id"
|
||||||
end
|
end
|
|
@ -38,19 +38,19 @@ class RelativeMemo < ActiveRecord::Base
|
||||||
acts_as_attachable
|
acts_as_attachable
|
||||||
|
|
||||||
#solr search
|
#solr search
|
||||||
# searchable do
|
searchable do
|
||||||
# text :title, :stored => false
|
text :title, :stored => false
|
||||||
# integer :review_num
|
integer :review_num
|
||||||
# #integer :parent_id
|
#integer :parent_id
|
||||||
# time :created_time
|
time :created_time
|
||||||
# text :tags
|
text :tags
|
||||||
# string :source, :stored => false
|
string :source, :stored => false
|
||||||
# #integer :view_num
|
#integer :view_num
|
||||||
# #integer :view_num_ossean
|
#integer :view_num_ossean
|
||||||
# #integer :collection_num
|
#integer :collection_num
|
||||||
# #join(:osp_id, :target => RelativeMemoToOpenSourceProject, :type => :integer, :join => { :from => :relative_memo_id, :to => :id }, :as => 'osp_id')
|
#join(:osp_id, :target => RelativeMemoToOpenSourceProject, :type => :integer, :join => { :from => :relative_memo_id, :to => :id }, :as => 'osp_id')
|
||||||
# #join(:relative_memo_id, :target => RelativeMemoToOpenSourceProject, :type => :integer, :join => { :from => :relative_memo_id, :to => :id }, :as => 'relative_memo_id')
|
#join(:relative_memo_id, :target => RelativeMemoToOpenSourceProject, :type => :integer, :join => { :from => :relative_memo_id, :to => :id }, :as => 'relative_memo_id')
|
||||||
# end
|
end
|
||||||
|
|
||||||
belongs_to :last_reply, :class_name => 'RelativeMemo', :foreign_key => 'last_reply_id'
|
belongs_to :last_reply, :class_name => 'RelativeMemo', :foreign_key => 'last_reply_id'
|
||||||
# acts_as_searchable :column => ['title', 'content'],
|
# acts_as_searchable :column => ['title', 'content'],
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
class UserAction < ActiveRecord::Base
|
||||||
|
attr_accessible :id, :trustie_user_id, :session_id, :type, :ip, :host, :time, :params
|
||||||
|
end
|
|
@ -93,6 +93,22 @@
|
||||||
<div style="border-top:solid 1px #C6E9F1;width:940px;margin-left:auto;margin-right:auto;margin-bottom: 0px;margin-top: -10px;"></div>
|
<div style="border-top:solid 1px #C6E9F1;width:940px;margin-left:auto;margin-right:auto;margin-bottom: 0px;margin-top: -10px;"></div>
|
||||||
<div style="clear:left;"></div>
|
<div style="clear:left;"></div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ajax user trace zhangxunhui begin -->
|
||||||
|
<script type="text/javascript">
|
||||||
|
function user_trace_search_project_in_welcome(session_id){
|
||||||
|
content = $('.projects-search-text-field').val(); //获取搜索的内容
|
||||||
|
content = encodeURIComponent(content);
|
||||||
|
$.ajax({
|
||||||
|
type: "post",
|
||||||
|
contentType: "application/json; charset=utf-8",
|
||||||
|
url: '/user_traces/search_project?keyword=' + content + "&session_id=" + session_id,
|
||||||
|
dataType: "json"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<!-- ajax user trace zhangxunhui end -->
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function addSlipMenu() {
|
function addSlipMenu() {
|
||||||
var loggedas = $('#loggedas ul li:first')
|
var loggedas = $('#loggedas ul li:first')
|
||||||
|
@ -113,32 +129,4 @@
|
||||||
$('.sub_menu').find("a").attr('target', '_blank');
|
$('.sub_menu').find("a").attr('target', '_blank');
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- ajax user trace zhangxunhui begin -->
|
|
||||||
<script type="text/javascript">
|
|
||||||
function user_trace_search_project_in_welcome(session_id){
|
|
||||||
content = $('.projects-search-text-field').val(); //获取搜索的内容
|
|
||||||
content = encodeURIComponent(content);
|
|
||||||
$.ajax({
|
|
||||||
type: "post",
|
|
||||||
contentType: "application/json; charset=utf-8",
|
|
||||||
url: '/user_traces/search_project?keyword=' + content + "&session_id=" + session_id,
|
|
||||||
dataType: "json"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<!-- ajax user trace zhangxunhui end -->
|
|
||||||
|
|
||||||
<!-- ajax user trace zhangxunhui begin -->
|
|
||||||
<script type="text/javascript">
|
|
||||||
function user_trace_click_project_list(session_id){
|
|
||||||
$.ajax({
|
|
||||||
type: "post",
|
|
||||||
contentType: "application/json; charset=utf-8",
|
|
||||||
url: '/user_traces/click_project_list?session_id=' + session_id,
|
|
||||||
dataType: "json"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<!-- ajax user trace zhangxunhui end -->
|
|
|
@ -125,7 +125,9 @@
|
||||||
function user_trace_click_project_source_in_detail(source,url,rank,session_id){
|
function user_trace_click_project_source_in_detail(source,url,rank,session_id){
|
||||||
//解析url获取osp_id
|
//解析url获取osp_id
|
||||||
url_now = document.URL;
|
url_now = document.URL;
|
||||||
id = url_now.substring(47);
|
str = "open_source_projects/";
|
||||||
|
index = url_now.indexOf(str);
|
||||||
|
id = url_now.substring(index + str.length);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "post",
|
type: "post",
|
||||||
contentType: "application/json; charset=utf-8",
|
contentType: "application/json; charset=utf-8",
|
||||||
|
|
|
@ -40,5 +40,59 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<%= call_hook :view_layouts_base_body_bottom %>
|
<%= call_hook :view_layouts_base_body_bottom %>
|
||||||
|
|
||||||
|
<!-- ajax user trace zhangxunhui begin -->
|
||||||
|
<script type="text/javascript">
|
||||||
|
function user_trace_click_project_list(session_id){
|
||||||
|
$.ajax({
|
||||||
|
type: "post",
|
||||||
|
contentType: "application/json; charset=utf-8",
|
||||||
|
url: '/user_traces/click_project_list?session_id=' + session_id,
|
||||||
|
dataType: "json"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<!-- ajax user trace zhangxunhui end -->
|
||||||
|
|
||||||
|
<!--update-- get trustie user id 页面加载的时候运行该函数 -->
|
||||||
|
<script type="text/javascript">
|
||||||
|
function getTrustieUserId(){
|
||||||
|
/* 获取url中的参数 */
|
||||||
|
var Request = new Object();
|
||||||
|
Request = GetRequest();
|
||||||
|
var trustie_user_id;
|
||||||
|
trustie_user_id = Request["trustie_user_id"];
|
||||||
|
if (trustie_user_id == null){
|
||||||
|
/* 表示不是trustie页面跳转 不进行任何操作 */
|
||||||
|
}else{
|
||||||
|
/* 将trustie_user_id存入session 要用ajax写入session信息 */
|
||||||
|
$.ajax({
|
||||||
|
type: "post",
|
||||||
|
contentType: "application/json; charset=utf-8",
|
||||||
|
url: '/user_traces/add_trustie_user_id?trustie_user_id=' + trustie_user_id,
|
||||||
|
dataType: "json"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
window.onload = getTrustieUserId;//页面加载的时候运行该函数
|
||||||
|
</script>
|
||||||
|
<!--update-- get trustie user id -->
|
||||||
|
<Script language="javascript">
|
||||||
|
function GetRequest() {
|
||||||
|
var url = location.search; //获取url中"?"符后的字串
|
||||||
|
var theRequest = new Object();
|
||||||
|
if (url.indexOf("?") != -1) {
|
||||||
|
var str = url.substr(1);
|
||||||
|
strs = str.split("&");
|
||||||
|
for(var i = 0; i < strs.length; i ++) {
|
||||||
|
theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return theRequest;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<!--update-- get trustie user id -->
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
select_option = []
|
select_option = []
|
||||||
(select_option << ['项目', 'projects'])
|
(select_option << ['项目', 'projects'])
|
||||||
#(select_option << ['课程', 'courses']) if project_type == Project::ProjectType_course
|
#(select_option << ['课程', 'courses']) if project_type == Project::ProjectType_course
|
||||||
#select_option << ['热帖', 'memos']
|
select_option << ['热帖', 'memos']
|
||||||
#select_option << ['教师', 'users_teacher'],
|
#select_option << ['教师', 'users_teacher'],
|
||||||
#select_option << ['学生', 'users_student']
|
#select_option << ['学生', 'users_student']
|
||||||
%>
|
%>
|
||||||
|
@ -86,7 +86,7 @@
|
||||||
<%= text_field_tag :name, nil, placeholder:'请输入要搜索的关键字', :size => 27, :class => "topics-search-text-field" %>
|
<%= text_field_tag :name, nil, placeholder:'请输入要搜索的关键字', :size => 27, :class => "topics-search-text-field" %>
|
||||||
</div>
|
</div>
|
||||||
<%#= hidden_field_tag 'project_type', project_type %>
|
<%#= hidden_field_tag 'project_type', project_type %>
|
||||||
<%#= submit_tag l(:label_search_topics), :class => "enterprise", :name => nil, :onclick => "user_trace_search_knowledge_in_search_bar('#{request.session_options[:id]}');" %>
|
<%= submit_tag l(:label_search_topics), :class => "enterprise", :name => nil, :onclick => "user_trace_search_knowledge_in_search_bar('#{request.session_options[:id]}');" %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<%###################search topics###########################%>
|
<%###################search topics###########################%>
|
||||||
|
|
|
@ -59,9 +59,9 @@
|
||||||
<div>
|
<div>
|
||||||
<div id="triangle-right"></div>
|
<div id="triangle-right"></div>
|
||||||
<div style="margin-left: 30px; float:left;">
|
<div style="margin-left: 30px; float:left;">
|
||||||
<%= link_to h(truncate(memo.title, :length => 30)), memo.url, :target => '_blank', :onclick => "return user_trace_click_knowledge_in_project_detail('#{type}','#{memo.id}','#{request.session_options[:id]}',null,'#{i+1}');" %>
|
<%= link_to h(truncate(memo.title, :length => 30)), memo.url, :target => '_blank', :onclick => "return user_trace_click_knowledge_in_project_detail(this,'#{type}','#{memo.id}','#{request.session_options[:id]}',null,'#{i+1}');" %>
|
||||||
<div align="left" style="margin-top: 10px;">
|
<div align="left" style="margin-top: 10px;">
|
||||||
<span class="font_lighter" style="margin-right: 30px;">来源: <%= link_to memo.source, memo.url, :onclick => "return user_trace_click_knowledge_in_project_detail('#{type}','#{memo.id}','#{request.session_options[:id]}',null,'#{i+1}');" %></span>
|
<span class="font_lighter" style="margin-right: 30px;">来源: <%= link_to memo.source, memo.url, :onclick => "return user_trace_click_knowledge_in_project_detail(this,'#{type}','#{memo.id}','#{request.session_options[:id]}',null,'#{i+1}');" %></span>
|
||||||
<span class="font_lighter">
|
<span class="font_lighter">
|
||||||
<%= user_url_and_time memo.author, memo.url, memo.created_time %>
|
<%= user_url_and_time memo.author, memo.url, memo.created_time %>
|
||||||
<br/>
|
<br/>
|
||||||
|
@ -74,7 +74,7 @@
|
||||||
<td align="right" rowspan="2">
|
<td align="right" rowspan="2">
|
||||||
<table class="borad-count">
|
<table class="borad-count">
|
||||||
<tr>
|
<tr>
|
||||||
<td align="center" class="borad-count-digit"><%= link_to (memo.review_num), memo.url, :target => '_blank', :onclick => "return user_trace_click_knowledge_in_project_detail('#{type}','#{memo.id}','#{request.session_options[:id]}',null,'#{i+1}');" %></td>
|
<td align="center" class="borad-count-digit"><%= link_to (memo.review_num), memo.url, :target => '_blank', :onclick => "return user_trace_click_knowledge_in_project_detail(this,'#{type}','#{memo.id}','#{request.session_options[:id]}',null,'#{i+1}');" %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align="center">回帖</td>
|
<td align="center">回帖</td>
|
||||||
|
@ -85,7 +85,7 @@
|
||||||
<!-- <td align="right" rowspan="3">
|
<!-- <td align="right" rowspan="3">
|
||||||
<table class="borad-count">
|
<table class="borad-count">
|
||||||
<tr>
|
<tr>
|
||||||
<td align="center" class="borad-count-digit"><#%#= link_to (memo.collection_num), memo.url, :target => '_blank', :onclick => "return user_trace_click_knowledge_in_project_detail('#{type}','#{memo.id}','#{request.session_options[:id]}',null,'#{i+1}');" %></td>
|
<td align="center" class="borad-count-digit"><#%#= link_to (memo.collection_num), memo.url, :target => '_blank', :onclick => "return user_trace_click_knowledge_in_project_detail(this,'#{type}','#{memo.id}','#{request.session_options[:id]}',null,'#{i+1}');" %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align="center">关注</td>
|
<td align="center">关注</td>
|
||||||
|
@ -96,7 +96,7 @@
|
||||||
<td align="right" rowspan="2">
|
<td align="right" rowspan="2">
|
||||||
<table class="borad-count">
|
<table class="borad-count">
|
||||||
<tr>
|
<tr>
|
||||||
<td align="center" class="borad-count-digit"><%= link_to (memo.view_num+memo.view_num_ossean), memo.url, :target => '_blank', :onclick => "return user_trace_click_knowledge_in_project_detail('#{type}','#{memo.id}','#{request.session_options[:id]}',null,'#{i+1}');" %></td>
|
<td align="center" class="borad-count-digit"><%= link_to (memo.view_num+memo.view_num_ossean), memo.url, :target => '_blank', :onclick => "return user_trace_click_knowledge_in_project_detail(this,'#{type}','#{memo.id}','#{request.session_options[:id]}',null,'#{i+1}');" %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align="center">浏览</td>
|
<td align="center">浏览</td>
|
||||||
|
@ -114,17 +114,21 @@
|
||||||
|
|
||||||
<!-- ajax user trace zhangxunhui begin -->
|
<!-- ajax user trace zhangxunhui begin -->
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function user_trace_click_knowledge_in_project_detail(type,memo_id,session_id,page,rank){
|
function user_trace_click_knowledge_in_project_detail(e,type,memo_id,session_id,page,rank){
|
||||||
|
href = $(e).attr('href');
|
||||||
//获取帖子所属项目
|
//获取帖子所属项目
|
||||||
url = document.URL;
|
url = document.URL;
|
||||||
osp_id = url.substring(47); //这里是47 因为我们的线上域名不是localhost 而是ossean.trustie.net
|
// osp_id = url.substring(47); //这里是47 因为我们的线上域名不是localhost 而是ossean.trustie.net
|
||||||
if(page == null){
|
str = "open_source_projects/"
|
||||||
page = "nil"
|
index = url.indexOf(str);
|
||||||
|
osp_id = null;
|
||||||
|
if (index >= 0){
|
||||||
|
osp_id = url.substring(index + str.length);
|
||||||
}
|
}
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "post",
|
type: "post",
|
||||||
contentType: "application/json; charset=utf-8",
|
contentType: "application/json; charset=utf-8",
|
||||||
url: '/user_traces/click_knowledge_in_project_detail?page=' + page + "&rank=" + rank + "&memo_id=" + memo_id + "&osp_id=" + osp_id + "&memo_type=" + type + "&session_id=" + session_id,
|
url: '/user_traces/click_knowledge_in_project_detail?page=' + page + "&rank=" + rank + "&memo_id=" + memo_id + "&osp_id=" + osp_id + "&memo_type=" + type + "&session_id=" + session_id + "&href=" + href,
|
||||||
dataType: "json"
|
dataType: "json"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -309,7 +309,7 @@
|
||||||
<% if !project.nil? %>
|
<% if !project.nil? %>
|
||||||
<li class='project-table'>
|
<li class='project-table'>
|
||||||
<div class='root'>
|
<div class='root'>
|
||||||
<%= link_to project.name, open_source_project_path(project), :class => "project root leaf" %>
|
<%= link_to project.name, open_source_project_path(project), :class => "project root leaf", :onclick => "user_trace_click_project_in_project_list_after_search(this,#{i+1},'#{request.session_options[:id]}')" %>
|
||||||
<span style="float: right;"></span>
|
<span style="float: right;"></span>
|
||||||
<%= render :partial => 'open_source_projects/os_project_search_list', :locals => {:project => project, :i => i} %>
|
<%= render :partial => 'open_source_projects/os_project_search_list', :locals => {:project => project, :i => i} %>
|
||||||
</div>
|
</div>
|
||||||
|
@ -328,12 +328,12 @@
|
||||||
<!-- ajax user trace zhangxunhui begin -->
|
<!-- ajax user trace zhangxunhui begin -->
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function user_trace_click_project_in_project_list_after_search(e,rank,session_id){
|
function user_trace_click_project_in_project_list_after_search(e,rank,session_id){
|
||||||
|
alert(session_id);
|
||||||
//获取ids
|
//获取ids
|
||||||
content = $(e).attr("href"); //获取id url
|
content = $(e).attr("href"); //获取id url
|
||||||
id = content.substring(22); //要跳过第一个 /open_source_projects/123 第22个字符到最后
|
id = content.substring(22); //要跳过第一个 /open_source_projects/123 第22个字符到最后
|
||||||
//读取URL中的关键词
|
//读取URL中的关键词
|
||||||
url = document.URL; //已经被编码了
|
keyword = GetRequest()["name"]; //获取url中的参数
|
||||||
keyword = url.substring(url.indexOf("name=")+5);
|
|
||||||
//获取URL中的id
|
//获取URL中的id
|
||||||
page = '<%= @projects_pages.page %>';
|
page = '<%= @projects_pages.page %>';
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
@ -352,8 +352,7 @@
|
||||||
content = $(e).attr("href"); //获取id url
|
content = $(e).attr("href"); //获取id url
|
||||||
osp_id = content.substring(22); //要跳过第一个 /open_source_projects/123 第22个字符到最后
|
osp_id = content.substring(22); //要跳过第一个 /open_source_projects/123 第22个字符到最后
|
||||||
//读取URL中的关键词
|
//读取URL中的关键词
|
||||||
url = document.URL; //已经被编码了
|
keyword = GetRequest()["name"]; //获取url中的参数
|
||||||
keyword = url.substring(url.indexOf("name=")+5);
|
|
||||||
//获取URL中的id
|
//获取URL中的id
|
||||||
page = '<%= @projects_pages.page %>';
|
page = '<%= @projects_pages.page %>';
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
@ -364,4 +363,20 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<Script language="javascript">
|
||||||
|
function GetRequest() {
|
||||||
|
var url = location.search; //获取url中"?"符后的字串
|
||||||
|
var theRequest = new Object();
|
||||||
|
if (url.indexOf("?") != -1) {
|
||||||
|
var str = url.substr(1);
|
||||||
|
strs = str.split("&");
|
||||||
|
for(var i = 0; i < strs.length; i ++) {
|
||||||
|
theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return theRequest;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
<!-- ajax user trace zhangxunhui end -->
|
<!-- ajax user trace zhangxunhui end -->
|
|
@ -401,7 +401,12 @@
|
||||||
id_similar = content.substring(22); //要跳过第一个 /open_source_projects/123 第22个字符到最后
|
id_similar = content.substring(22); //要跳过第一个 /open_source_projects/123 第22个字符到最后
|
||||||
//获取当前项目id
|
//获取当前项目id
|
||||||
url = document.URL;
|
url = document.URL;
|
||||||
id_former = url.substring(47);
|
str = "open_source_projects/"
|
||||||
|
index = url.indexOf(str);
|
||||||
|
id_former = null;
|
||||||
|
if (index >= 0){
|
||||||
|
id_former = url.substring(index + str.length);
|
||||||
|
}
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "post",
|
type: "post",
|
||||||
contentType: "application/json; charset=utf-8",
|
contentType: "application/json; charset=utf-8",
|
||||||
|
@ -420,7 +425,12 @@
|
||||||
id_related = content.substring(22); //要跳过第一个 /open_source_projects/123 第22个字符到最后
|
id_related = content.substring(22); //要跳过第一个 /open_source_projects/123 第22个字符到最后
|
||||||
//获取当前项目id
|
//获取当前项目id
|
||||||
url = document.URL;
|
url = document.URL;
|
||||||
id_former = url.substring(47);
|
str = "open_source_projects/"
|
||||||
|
index = url.indexOf(str);
|
||||||
|
id_former = null;
|
||||||
|
if (index >= 0){
|
||||||
|
id_former = url.substring(index + str.length);
|
||||||
|
}
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "post",
|
type: "post",
|
||||||
contentType: "application/json; charset=utf-8",
|
contentType: "application/json; charset=utf-8",
|
||||||
|
@ -442,7 +452,12 @@
|
||||||
id_similar = id
|
id_similar = id
|
||||||
//获取当前项目id
|
//获取当前项目id
|
||||||
url = document.URL;
|
url = document.URL;
|
||||||
id_former = url.substring(47);
|
str = "open_source_projects/"
|
||||||
|
index = url.indexOf(str);
|
||||||
|
id_former = null;
|
||||||
|
if (index >= 0){
|
||||||
|
id_former = url.substring(index + str.length);
|
||||||
|
}
|
||||||
// id_former = url.substring(43);
|
// id_former = url.substring(43);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "post",
|
type: "post",
|
||||||
|
@ -465,7 +480,12 @@
|
||||||
id_similar = id
|
id_similar = id
|
||||||
//获取当前项目id
|
//获取当前项目id
|
||||||
url = document.URL;
|
url = document.URL;
|
||||||
id_former = url.substring(47);
|
str = "open_source_projects/"
|
||||||
|
index = url.indexOf(str);
|
||||||
|
id_former = null;
|
||||||
|
if (index >= 0){
|
||||||
|
id_former = url.substring(index + str.length);
|
||||||
|
}
|
||||||
// id_former = url.substring(43);
|
// id_former = url.substring(43);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "post",
|
type: "post",
|
||||||
|
|
|
@ -255,13 +255,13 @@
|
||||||
<%= content_tag('span', l(:label_review_num)) %>
|
<%= content_tag('span', l(:label_review_num)) %>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="stats">
|
<!-- <p class="stats">
|
||||||
<!--%= link_to project_info.download_num, open_source_project_path(project) %-->
|
<!--%= link_to project_info.download_num, open_source_project_path(project) %-->
|
||||||
<a>
|
<a>
|
||||||
<%= topic.collection_num %>
|
<%#= topic.collection_num %>
|
||||||
</a>
|
</a>
|
||||||
<%= content_tag('span', l(:label_collection_num)) %>
|
<%#= content_tag('span', l(:label_collection_num)) %>
|
||||||
</p>
|
</p> -->
|
||||||
|
|
||||||
<p class="stats">
|
<p class="stats">
|
||||||
<!--%= link_to project_info.visit_num, open_source_project_path(project) %-->
|
<!--%= link_to project_info.visit_num, open_source_project_path(project) %-->
|
||||||
|
@ -297,7 +297,7 @@
|
||||||
<%= content_tag('span', "帖子来源:") %><%= link_to topic.url, topic.url, :onclick => "return user_trace_click_knowledge_in_knowledge_list_after_search('#{topic.id}','#{@topics_pages.page}','#{i+1}','#{request.session_options[:id]}');" %>
|
<%= content_tag('span', "帖子来源:") %><%= link_to topic.url, topic.url, :onclick => "return user_trace_click_knowledge_in_knowledge_list_after_search('#{topic.id}','#{@topics_pages.page}','#{i+1}','#{request.session_options[:id]}');" %>
|
||||||
</div>
|
</div>
|
||||||
<!--<div class="licences">-->
|
<!--<div class="licences">-->
|
||||||
<!--<%= content_tag('span', "数据更新时间:") %><%= content_tag('span', topic.crawled_time) %>-->
|
<!--<%= content_tag('span', "数据更新时间:") %><%#= content_tag('span', topic.crawled_time) %>-->
|
||||||
<!--</div>-->
|
<!--</div>-->
|
||||||
</div>
|
</div>
|
||||||
<div class="tags">
|
<div class="tags">
|
||||||
|
|
|
@ -52,7 +52,7 @@ module RedmineApp
|
||||||
# Do not include all helpers
|
# Do not include all helpers
|
||||||
config.action_controller.include_all_helpers = false
|
config.action_controller.include_all_helpers = false
|
||||||
|
|
||||||
config.session_store :cookie_store, :key => '_redmine_session', :expire_after => 24.hours
|
config.session_store :cookie_store, :key => '_redmine_session', :expire_after => 60.minutes
|
||||||
|
|
||||||
if File.exists?(File.join(File.dirname(__FILE__), 'additional_environment.rb'))
|
if File.exists?(File.join(File.dirname(__FILE__), 'additional_environment.rb'))
|
||||||
instance_eval File.read(File.join(File.dirname(__FILE__), 'additional_environment.rb'))
|
instance_eval File.read(File.join(File.dirname(__FILE__), 'additional_environment.rb'))
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
class CreateUserActions < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
create_table :user_actions do |t|
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,11 @@
|
||||||
|
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
|
||||||
|
|
||||||
|
# This model initially had no columns defined. If you add columns to the
|
||||||
|
# model remove the '{}' from the fixture names and add the columns immediately
|
||||||
|
# below each fixture, per the syntax in the comments below
|
||||||
|
#
|
||||||
|
one: {}
|
||||||
|
# column: value
|
||||||
|
#
|
||||||
|
two: {}
|
||||||
|
# column: value
|
|
@ -0,0 +1,7 @@
|
||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class UserActionTest < ActiveSupport::TestCase
|
||||||
|
# test "the truth" do
|
||||||
|
# assert true
|
||||||
|
# end
|
||||||
|
end
|
Loading…
Reference in New Issue