Merge branch 'yuanke' into develop

chenlw_dev v20160503
huang 9 years ago
commit 5e8ff06140

@ -27,11 +27,15 @@ class BlogsController < ApplicationController
@topics.each do |topic| @topics.each do |topic|
topic[:infocount] = get_praise_num(topic) + (topic.parent ? topic.parent.children.count : topic.children.count) topic[:infocount] = get_praise_num(topic) + (topic.parent ? topic.parent.children.count : topic.children.count)
if topic[:infocount] < 0
topic[:infocount] = 0
end
end end
@b_sort == 1 ? @topics = @topics.sort{|x,y| x[:infocount] <=> y[:infocount] } : @topics = @topics.sort{|x,y| y[:infocount] <=> x[:infocount] } @b_sort == 1 ? @topics = @topics.sort{|x,y| x[:infocount] <=> y[:infocount] } : @topics = @topics.sort{|x,y| y[:infocount] <=> x[:infocount] }
@topics = sort_by_sticky @topics @topics = sort_by_sticky @topics
@topics = sortby_time_countcommon_hassticky @topics,sort_name
else else
@type = 1 @type = 1
end end

@ -77,7 +77,7 @@ class BoardsController < ApplicationController
@b_sort = 2 @b_sort = 2
end end
sort_name = "updated_at" sort_name = "updated_on"
sort_type = @b_sort == 1 ? "asc" : "desc" sort_type = @b_sort == 1 ? "asc" : "desc"
@ -126,9 +126,13 @@ class BoardsController < ApplicationController
@type = 2 @type = 2
@topics.each do |topic| @topics.each do |topic|
topic[:infocount] = get_praise_num(topic) + (topic.parent ? x.parent.children.count : topic.children.count) topic[:infocount] = get_praise_num(topic) + (topic.parent ? x.parent.children.count : topic.children.count)
if topic[:infocount] < 0
topic[:infocount] = 0
end
end end
@b_sort == 1 ? @topics = @topics.sort{|x,y| x[:infocount] <=> y[:infocount] } : @topics = @topics.sort{|x,y| y[:infocount] <=> x[:infocount] } @b_sort == 1 ? @topics = @topics.sort{|x,y| x[:infocount] <=> y[:infocount] } : @topics = @topics.sort{|x,y| y[:infocount] <=> x[:infocount] }
@topics = sort_by_sticky @topics @topics = sort_by_sticky @topics
@topics = sortby_time_countcommon_hassticky @topics,sort_name
else else
@type = 1 @type = 1
end end

@ -79,21 +79,20 @@ class NewsController < ApplicationController
@b_sort = 2 @b_sort = 2
end end
sort_name = "created_on" sort_name = "updated_at"
sort_type = @b_sort == 1 ? "asc" : "desc" sort_type = @b_sort == 1 ? "asc" : "desc"
scope = @course ? @course.news.course_visible : News.course_visible scope = @course ? @course.news.course_visible : News.course_visible
news_arr = scope.map{|news| news.id} news_arr = scope.map{|news| news.id}
@page = params[:page] ? params[:page].to_i + 1 : 0 @page = params[:page] ? params[:page].to_i + 1 : 0
news_page = 0 #@page *10 news_page = 0 #@page *10
@news_count = scope.count @news_count = scope.count
@is_new = params[:is_new] @is_new = params[:is_new]
@q = params[:subject] @q = params[:subject]
if params[:subject].nil? || params[:subject].blank? if params[:subject].nil? || params[:subject].blank?
scope_order = scope.reorder("#{News.table_name}.sticky DESC, #{News.table_name}.#{sort_name} #{sort_type}").offset(news_page).includes(:author,:course).all() scope_order = scope.reorder("#{News.table_name}.sticky DESC, #{News.table_name}.created_on #{sort_type}").offset(news_page).includes(:author,:course).all()
#all(:include => [:author, :course], #all(:include => [:author, :course],
#:order => "#{News.table_name}.sticky DESC, #{News.table_name}.created_on DESC").limit(10).offset(news_page) #:order => "#{News.table_name}.sticky DESC, #{News.table_name}.created_on DESC").limit(10).offset(news_page)
else else
@ -101,16 +100,26 @@ class NewsController < ApplicationController
#.all(:include => [:author, :course],:order => "#{News.table_name}.sticky DESC, #{News.table_name}.created_on DESC") #.all(:include => [:author, :course],:order => "#{News.table_name}.sticky DESC, #{News.table_name}.created_on DESC")
end end
scope_order.each do |topic|
topic[:updated_at] = CourseActivity.where("course_act_type='#{topic.class}' and course_act_id =#{topic.id}").first.updated_at
end
#根据 赞+回复数排序 #根据 赞+回复数排序
if @order.to_i == 2 if @order.to_i == 2
@type = 2 @type = 2
scope_order.each do |topic| scope_order.each do |topic|
topic[:infocount] = get_praise_num(topic) + topic.comments.count topic[:infocount] = get_praise_num(topic) + topic.comments.count
if topic[:infocount] < 0
topic[:infocount] = 0
end
end end
@b_sort == 1 ? scope_order = scope_order.sort{|x,y| x[:infocount] <=> y[:infocount] } : scope_order = scope_order.sort{|x,y| y[:infocount] <=> x[:infocount] } @b_sort == 1 ? scope_order = scope_order.sort{|x,y| x[:infocount] <=> y[:infocount] } : scope_order = scope_order.sort{|x,y| y[:infocount] <=> x[:infocount] }
scope_order = sort_by_sticky scope_order scope_order = sort_by_sticky scope_order
scope_order = sortby_time_countcommon_hassticky scope_order,sort_name
else else
@type = 1 @type = 1
@b_sort == 1 ? scope_order = scope_order.sort{|x,y| x[:updated_at] <=> y[:updated_at] } : scope_order = scope_order.sort{|x,y| y[:updated_at] <=> x[:updated_at] }
scope_order = sort_by_sticky scope_order
end end
@newss = scope_order @newss = scope_order

File diff suppressed because it is too large Load Diff

@ -2948,20 +2948,19 @@ class UsersController < ApplicationController
sort_name = "created_at" sort_name = "created_at"
sort_type = @c_sort == 1 ? "asc" : "desc" sort_type = @c_sort == 1 ? "asc" : "desc"
if @user.courses.visible.count > 0 @courses = @user.courses.visible.where("is_delete =?", 0).select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a #{sort_type}")
course_order_ids = "(" + CourseActivity.find_by_sql("SELECT c.course_id, updated_at FROM(SELECT ca.course_id, MAX(ca.updated_at) AS updated_at FROM course_activities ca WHERE ca.course_id IN (" + @user.courses.visible.select('courses.id').map{|c| c.id}.join(',') + ") GROUP BY ca.course_id) AS c ").map {|c| c.course_id}.join(",") + ")"
@courses = Course.where("id in #{course_order_ids}").order("#{sort_name} #{sort_type}")
else
@courses = []
end
#根据 作业+资源数排序 #根据 作业+资源数排序
if @order.to_i == 2 if @order.to_i == 2
@type = 2 @type = 2
@courses.each do |course| @courses.each do |course|
course[:infocount] = (User.current.admin? || User.current.allowed_to?(:as_teacher,course)) ? (course.homework_commons.count + visable_attachemnts_incourse(course).count) : (course.homework_commons.where("publish_time <= '#{Date.today}'").count + visable_attachemnts_incourse(course).count) course[:infocount] = (User.current.admin? || User.current.allowed_to?(:as_teacher,course)) ? (course.homework_commons.count + visable_attachemnts_incourse(course).count) : (course.homework_commons.where("publish_time <= '#{Date.today}'").count + visable_attachemnts_incourse(course).count)
if course[:infocount] < 0
course[:infocount] = 0
end
end end
@c_sort == 1 ? (@courses = @courses.sort{|x,y| x[:infocount] <=> y[:infocount] }) : (@courses = @courses.sort{|x,y| y[:infocount] <=> x[:infocount]}) @c_sort == 1 ? (@courses = @courses.sort{|x,y| x[:infocount] <=> y[:infocount] }) : (@courses = @courses.sort{|x,y| y[:infocount] <=> x[:infocount]})
@courses = sortby_time_countcommon_nosticky @courses,sort_name
else else
@type = 1 @type = 1
end end
@ -2993,21 +2992,19 @@ class UsersController < ApplicationController
sort_name = "created_on" sort_name = "created_on"
sort_type = @c_sort == 1 ? "asc" : "desc" sort_type = @c_sort == 1 ? "asc" : "desc"
if @user.projects.visible.count > 0 @projects = @user.projects.visible.select("projects.*, (SELECT MAX(created_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS a").order("a #{sort_type}")
project_order_ids = "(" +ForgeActivity.find_by_sql("SELECT p.project_id, p.created_at FROM (SELECT fa.project_id, MAX(fa.created_at) AS created_at FROM forge_activities fa WHERE fa.project_id IN (" + @user.projects.visible.select('projects.id').map{|p| p.id}.join(',') + ") GROUP BY fa.project_id) AS p ").map {|p| p.project_id}.join(",") + ")"
@projects = Project.where("projects.id in #{project_order_ids}").order("#{sort_name} #{sort_type}")
else
@projects = []
end
#根据 问题+资源数排序 @project.project_score.issue_num @project.project_score.attach_num #根据 问题+资源数排序 @project.project_score.issue_num @project.project_score.attach_num
if @order.to_i == 2 if @order.to_i == 2
@type = 2 @type = 2
@projects.each do |project| @projects.each do |project|
project[:infocount] = project.project_score.issue_num+project.project_score.attach_num project[:infocount] = project.project_score.issue_num+project.project_score.attach_num
if project[:infocount] < 0
project[:infocount] = 0
end
end end
@c_sort == 1 ? (@projects = @projects.sort{|x,y| x[:infocount] <=> y[:infocount] }) : (@projects = @projects.sort{|x,y| y[:infocount] <=> x[:infocount] }) @c_sort == 1 ? (@projects = @projects.sort{|x,y| x[:infocount] <=> y[:infocount] }) : (@projects = @projects.sort{|x,y| y[:infocount] <=> x[:infocount] })
@projects = sortby_time_countcommon_nosticky @projects,sort_name
else else
@type = 1 @type = 1
end end

@ -3065,7 +3065,7 @@ def host_with_protocol
return Setting.protocol + "://" + Setting.host_name return Setting.protocol + "://" + Setting.host_name
end end
#将有置顶属性的提到数组前面 #infocount 相同的按时间降序排列 #将有置顶属性的提到数组前面
def sort_by_sticky topics def sort_by_sticky topics
tmpTopics = [] tmpTopics = []
tmpIndex = 0 tmpIndex = 0
@ -3082,9 +3082,117 @@ def sort_by_sticky topics
tmpIndex = tmpIndex + 1 tmpIndex = tmpIndex + 1
end end
end end
return tmpTopics
end
#按人气排序的时候 相同的人气必须按某种时间顺序排序 有置顶属性
def sortby_time_countcommon_hassticky topics,sortstr
tmpTopics = []
tmpTopics = topics
tStart = -1
tEnd = -1
tmpTopics_1 = []
tmpIndex = 0
tmpTopics.each_with_index do |topic,index|
if topic.sticky == 0
if tStart == -1
if (index != tmpTopics.count-1) && (topic[:infocount] == tmpTopics[index+1][:infocount])
tStart = index
end
else
if ((topic[:infocount] == tmpTopics[index-1][:infocount]) && ((index != tmpTopics.count-1) && (topic[:infocount] == tmpTopics[index+1][:infocount])))
tEnd = index
else
if (topic[:infocount] == tmpTopics[index-1][:infocount])
tEnd = index
end
if tEnd > tStart
for i in tStart..tEnd
tmpTopics_1[tmpIndex] = tmpTopics[i]
tmpIndex = tmpIndex + 1
end
if sortstr == "created_at"
tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:created_at].to_i <=> x[:created_at].to_i }
elsif sortstr == "created_on"
tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:created_on].to_i <=> x[:created_on].to_i }
elsif sortstr == "updated_at"
tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:updated_at].to_i <=> x[:updated_at].to_i }
elsif sortstr == "updated_on"
tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:updated_on].to_i <=> x[:updated_on].to_i }
end
tmpIndex = 0
for i in tStart..tEnd
tmpTopics[i] = tmpTopics_1[tmpIndex]
tmpIndex = tmpIndex + 1
end
end
tStart = -1
tEnd = -1
tmpTopics_1 = []
tmpIndex = 0
end
end
end
end
return tmpTopics
end
#按人气排序的时候 相同的人气必须按某种时间顺序排序 无置顶属性
def sortby_time_countcommon_nosticky topics,sortstr
tmpTopics = []
tmpTopics = topics
tStart = -1
tEnd = -1
tmpTopics_1 = []
tmpIndex = 0
topics = tmpTopics tmpTopics.each_with_index do |topic,index|
return topics if tStart == -1
if (index != tmpTopics.count-1) && (topic[:infocount] == tmpTopics[index+1][:infocount])
tStart = index
end
else
if ((topic[:infocount] == tmpTopics[index-1][:infocount]) && ((index != tmpTopics.count-1) && (topic[:infocount] == tmpTopics[index+1][:infocount])))
tEnd = index
else
if (topic[:infocount] == tmpTopics[index-1][:infocount])
tEnd = index
end
if tEnd > tStart
for i in tStart..tEnd
tmpTopics_1[tmpIndex] = tmpTopics[i]
tmpIndex = tmpIndex + 1
end
if sortstr == "created_at"
tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:created_at].to_i <=> x[:created_at].to_i }
elsif sortstr == "created_on"
tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:created_on].to_i <=> x[:created_on].to_i }
elsif sortstr == "updated_at"
tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:updated_at].to_i <=> x[:updated_at].to_i }
elsif sortstr == "updated_on"
tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:updated_on].to_i <=> x[:updated_on].to_i }
end
tmpIndex = 0
for i in tStart..tEnd
tmpTopics[i] = tmpTopics_1[tmpIndex]
tmpIndex = tmpIndex + 1
end
end
tStart = -1
tEnd = -1
tmpTopics_1 = []
tmpIndex = 0
end
end
end
return tmpTopics
end end
def strip_html(text,len=0,endss="...") def strip_html(text,len=0,endss="...")
@ -3100,4 +3208,4 @@ def strip_html(text,len=0,endss="...")
end end
end end
return ss return ss
end end

@ -84,7 +84,7 @@
<% end%> <% end%>
<script type="text/javascript"> <script type="text/javascript">
var coursecount = <%= @user.courses.visible.count%>; var coursecount = <%= @user.courses.visible.where("is_delete =?", 0).select("courses.* FROM `course_activities` WHERE course_activities.course_id = courses.id) ").count %>;
var courseshowcount = document.getElementsByClassName("coursesLineGrey").length; var courseshowcount = document.getElementsByClassName("coursesLineGrey").length;
if((coursecount == courseshowcount)&&(coursecount > 5) ){ if((coursecount == courseshowcount)&&(coursecount > 5) ){

@ -64,7 +64,7 @@
<% end%> <% end%>
<script type="text/javascript"> <script type="text/javascript">
var projectcount = <%= @user.projects.visible.count%>; var projectcount = <%= @user.projects.visible.select("projects.* FROM `forge_activities` WHERE forge_activities.project_id = projects.id) ").count %>;
var projectshowcount = document.getElementsByClassName("projectsLineGrey").length; var projectshowcount = document.getElementsByClassName("projectsLineGrey").length;
if((projectcount == projectshowcount)&&(projectcount > 5)){ if((projectcount == projectshowcount)&&(projectcount > 5)){

@ -1230,4 +1230,5 @@ a.pages-big{ width:50px;}
.pages .active{ background-color:#269ac9; color:#fff;} .pages .active{ background-color:#269ac9; color:#fff;}
.pages{width:330px; margin:20px auto 10px;} .pages{width:330px; margin:20px auto 10px;}
.red-cir-btn{ background:#e74c3c; padding:1px 5px; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; color:#fff; font-weight:normal;font-size:12px;} .red-cir-btn{ background:#e74c3c; padding:1px 5px; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; color:#fff; font-weight:normal;font-size:12px;}
.green-cir-btn{ background:#28be6c; padding:1px 5px; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; color:#fff; font-weight:normal;font-size:12px;}
Loading…
Cancel
Save