搜索中加入课程

weixin_guange
yuanke 9 years ago
parent 0d968a0025
commit d407b5ab10

@ -161,7 +161,7 @@ class WelcomeController < ApplicationController
query: @name, query: @name,
type:"most_fields", type:"most_fields",
operator: "or", operator: "or",
fields: ['login', 'firstname','lastname','name','description^0.5','filename','subject','content^0.5'] fields: ['login', 'firstname','lastname','title','name','description^0.5','filename','subject','content^0.5']
} }
}, },
highlight: { highlight: {
@ -171,6 +171,7 @@ class WelcomeController < ApplicationController
login: {}, login: {},
firstname: {}, firstname: {},
lastname: {}, lastname: {},
title:{},
name:{}, name:{},
description:{}, description:{},
filename:{}, filename:{},
@ -181,6 +182,8 @@ class WelcomeController < ApplicationController
},[User,Course,Attachment,Project,Memo] ).page(params[:page] || 1).per(20).results },[User,Course,Attachment,Project,Memo] ).page(params[:page] || 1).per(20).results
when 'user' when 'user'
@users = User.search(@name).page(params[:page] || 1).per(20) @users = User.search(@name).page(params[:page] || 1).per(20)
when 'syllabus'
@syllabuses = Syllabus.search(@name).page(params[:page] || 1).per(20)
when 'project' when 'project'
@projects = Project.search(@name).page(params[:page] || 1).per(20).results @projects = Project.search(@name).page(params[:page] || 1).per(20).results
when 'course' when 'course'
@ -196,7 +199,7 @@ class WelcomeController < ApplicationController
query: @name, query: @name,
type:"most_fields", type:"most_fields",
operator: "or", operator: "or",
fields: ['login', 'firstname','lastname','name','description^0.5','filename','subject','content^0.5'] fields: ['login', 'firstname','lastname','title','name','description^0.5','filename','subject','content^0.5']
} }
}, },
highlight: { highlight: {
@ -206,6 +209,7 @@ class WelcomeController < ApplicationController
login: {}, login: {},
firstname: {}, firstname: {},
lastname: {}, lastname: {},
title:{},
name:{}, name:{},
description:{}, description:{},
filename:{}, filename:{},
@ -213,12 +217,12 @@ class WelcomeController < ApplicationController
content:{} content:{}
} }
} }
},[User,Course,Attachment,Project,Memo] ).page(params[:page] || 1).per(20).results },[User,Syllabus,Course,Attachment,Project,Memo] ).page(params[:page] || 1).per(20).results
end end
@users_count = User.search(@name).results.total @users_count = User.search(@name).results.total
@syllabus_count = Syllabus.search(@name).results.total
@course_count = Course.search(@name).results.total @course_count = Course.search(@name).results.total
@attach_count = Attachment.search(@name).results.total @attach_count = Attachment.search(@name).results.total
@project_count = Project.search(@name).results.total @project_count = Project.search(@name).results.total
@ -229,7 +233,7 @@ class WelcomeController < ApplicationController
query: @name, query: @name,
type:"most_fields", type:"most_fields",
operator: "or", operator: "or",
fields: ['login', 'firstname','lastname','name','description^0.5','filename','subject','content^0.5'] fields: ['login', 'firstname','lastname','title','name','description^0.5','filename','subject','content^0.5']
} }
}, },
highlight: { highlight: {
@ -239,6 +243,7 @@ class WelcomeController < ApplicationController
login: {}, login: {},
firstname: {}, firstname: {},
lastname: {}, lastname: {},
title:{},
name:{}, name:{},
description:{}, description:{},
filename:{}, filename:{},

@ -57,4 +57,32 @@ class Syllabus < ActiveRecord::Base
jfm.save jfm.save
jfm jfm
end end
def self.search(query)
__elasticsearch__.search(
{
query: {
multi_match: {
query: query,
type:"most_fields",
operator: "or",
fields: ['title', 'description^0.5']
}
},
sort: {
_score:{order: "desc" },
updated_at:{order:"desc"}
},
highlight: {
pre_tags: ['<span class="c_red">'],
post_tags: ['</span>'],
fields: {
title: {},
description: {}
}
}
}
)
end
end end

@ -47,7 +47,7 @@
<% name = name%> <% name = name%>
<%= form_tag({controller: :welcome, action: :search },:class=>'navHomepageSearchBox', method: :get) do %> <%= form_tag({controller: :welcome, action: :search },:class=>'navHomepageSearchBox', method: :get) do %>
<input type="text" name="q" value="<%= name.nil? ? "" : name%>" id="navHomepageSearchInput" class="navHomepageSearchInput" placeholder="请输入关键词搜索公开的班级、项目、用户、资源以及帖子"/> <input type="text" name="q" value="<%= name.nil? ? "" : name%>" id="navHomepageSearchInput" class="navHomepageSearchInput" placeholder="请输入关键词搜索公开的课程、班级、项目、用户、资源以及帖子"/>
<input type="hidden" name="search_type" id="type" value="all"/> <input type="hidden" name="search_type" id="type" value="all"/>
<input type="text" style="display: none;"/> <input type="text" style="display: none;"/>
<a href="javascript:void(0);" class="homepageSearchIcon" onclick="search_in_header($(this));"></a> <a href="javascript:void(0);" class="homepageSearchIcon" onclick="search_in_header($(this));"></a>

@ -0,0 +1,11 @@
<% unless syllabuses.nil? || syllabuses.empty?%>
<% syllabuses.each do |syllabus|%>
<ul class="searchContent w968">
<li class="f16 mb5 fontGrey3"><a href="javascript:void(0);" class="fontGrey3 fl"><span class="c_red"><%= syllabus.title %></span>课程</a><div class="mt5 fl"><img src="images/search_icon_03.png" width="8" height="16" class="fl" /><span class="searchTag">课程</span></div><div class="cl"></div></li>
<li class="f12 fontGrey2"><span class="mr30">创建者:<%=syllabus.user.login+"("+syllabus.user.show_name+")"%></span><span class="mr30">教师团队:<%=syllabus.syllabus_member.count%></span><span class="mr30">班级:<%=syllabus.courses.count%></span><span class="mr30">更新时间:<%=format(syllabus.updated_at)%></span><span class="mr30">单位:<%=syllabus.user.user_extensions.occupation.present? ? syllabus.user.user_extensions.occupation:'' %></span></li>
</ul>
<% end %>
<div class="pageRoll">
<%= paginate courses,:params => {:controller => 'welcome', :action => 'search',:search_type=>'course'}%>
</div>
<% end %>

@ -3,7 +3,7 @@
function g(o){return document.getElementById(o);} function g(o){return document.getElementById(o);}
function HoverLi(n){ function HoverLi(n){
//如果有N个标签,就将i<=N; //如果有N个标签,就将i<=N;
for(var i=1;i<=6;i++){ for(var i=1;i<=7;i++){
g('searchBaner_'+i).className='searchBannerNormal'; g('searchBaner_'+i).className='searchBannerNormal';
g('searchContent_'+i).className='undis';g('searchNum_'+i).className="numRed"; g('searchContent_'+i).className='undis';g('searchNum_'+i).className="numRed";
g('searchType_'+i).className="fontGrey2 f14"; g('searchType_'+i).className="fontGrey2 f14";
@ -23,12 +23,14 @@
//$("#searchContent_2").html('<%#= escape_javascript(render :partial => 'search_user_results',:locals => {:users=>@users})%>'); //$("#searchContent_2").html('<%#= escape_javascript(render :partial => 'search_user_results',:locals => {:users=>@users})%>');
search('user') search('user')
}else if(n == 3){ }else if(n == 3){
search('course') search('syllabus')
}else if(n == 4){ }else if(n == 4){
search('attachment') search('course')
}else if(n == 5){ }else if(n == 5){
search('project') search('attachment')
}else if(n == 6){ }else if(n == 6){
search('project')
}else if(n == 7){
search('memo') search('memo')
} }
} }
@ -49,19 +51,22 @@
}else if('<%= @search_type%>' == 'user'){ }else if('<%= @search_type%>' == 'user'){
HoverLi(2) HoverLi(2)
$("#searchContent_2").html('<%= escape_javascript(render :partial => 'search_user_results',:locals => {:users=>@users})%>'); $("#searchContent_2").html('<%= escape_javascript(render :partial => 'search_user_results',:locals => {:users=>@users})%>');
}else if('<%= @search_type%>' == 'course'){ }else if('<%= @search_type%>' == 'syllabus'){
HoverLi(3) HoverLi(3)
$("#searchContent_3").html('<%= escape_javascript(render :partial => 'search_course_results',:locals => {:courses=>@courses})%>'); $("#searchContent_3").html('<%= escape_javascript(render :partial => 'search_syllabus_results',:locals => {:syllabuses=>@syllabuses})%>');
}else if('<%= @search_type%>' == 'attachment'){ }else if('<%= @search_type%>' == 'course'){
HoverLi(4) HoverLi(4)
$("#searchContent_4").html('<%= escape_javascript(render :partial => 'search_attachment_results',:locals => {:attachments=>@attachments})%>'); $("#searchContent_4").html('<%= escape_javascript(render :partial => 'search_course_results',:locals => {:courses=>@courses})%>');
}else if('<%= @search_type%>' == 'project'){ }else if('<%= @search_type%>' == 'attachment'){
HoverLi(5) HoverLi(5)
$("#searchContent_5").html('<%= escape_javascript(render :partial => 'search_project_results',:locals => {:projects=>@projects})%>'); $("#searchContent_5").html('<%= escape_javascript(render :partial => 'search_attachment_results',:locals => {:attachments=>@attachments})%>');
}else if('<%= @search_type%>' == 'project'){
HoverLi(6)
$("#searchContent_6").html('<%= escape_javascript(render :partial => 'search_project_results',:locals => {:projects=>@projects})%>');
}else if('<%= @search_type%>' == 'memo') }else if('<%= @search_type%>' == 'memo')
{ {
HoverLi(6) HoverLi(7)
$("#searchContent_6").html('<%= escape_javascript(render :partial => 'search_memo_results',:locals => {:memos=>@memos})%>'); $("#searchContent_7").html('<%= escape_javascript(render :partial => 'search_memo_results',:locals => {:memos=>@memos})%>');
} }
}) })
//如果要做成点击后再转到请将<li>中的onmouseover 改成 onclick; //如果要做成点击后再转到请将<li>中的onmouseover 改成 onclick;
@ -79,10 +84,11 @@
<ul id="searchBanner"> <ul id="searchBanner">
<li id="searchBaner_1" class="searchBannerActive" onclick="HoverLi(1);on_click_search(1);"><a href="javascript:void(0);" id="searchType_1" class="fontGrey3 f14">全部<span style="font-weight:normal;"><font id="searchNum_1" class="c_red">(<%= @total_count%>)</font></span></a></li> <li id="searchBaner_1" class="searchBannerActive" onclick="HoverLi(1);on_click_search(1);"><a href="javascript:void(0);" id="searchType_1" class="fontGrey3 f14">全部<span style="font-weight:normal;"><font id="searchNum_1" class="c_red">(<%= @total_count%>)</font></span></a></li>
<li id="searchBaner_2" onclick="HoverLi(2);on_click_search(2);"><a href="javascript:void(0);" id="searchType_2" class="fontGrey2 f14">用户<span class="numRed" style="font-weight:normal;"><font id="searchNum_2" class="numRed">(<%= @users_count%>)</font></span></a></li> <li id="searchBaner_2" onclick="HoverLi(2);on_click_search(2);"><a href="javascript:void(0);" id="searchType_2" class="fontGrey2 f14">用户<span class="numRed" style="font-weight:normal;"><font id="searchNum_2" class="numRed">(<%= @users_count%>)</font></span></a></li>
<li id="searchBaner_3" onclick="HoverLi(3);on_click_search(3);"><a href="javascript:void(0);" id="searchType_3" class="fontGrey2 f14">班级<span style="font-weight:normal;"><font id="searchNum_3" class="numRed">(<%=@course_count%>)</font></span></a></li> <li id="searchBaner_3" onclick="HoverLi(3);on_click_search(3);"><a href="javascript:void(0);" id="searchType_3" class="fontGrey2 f14">课程<span style="font-weight:normal;"><font id="searchNum_3" class="numRed">(<%=@syllabus_count%>)</font></span></a></li>
<li id="searchBaner_4" onclick="HoverLi(4);on_click_search(4);"><a href="javascript:void(0);" id="searchType_4" class="fontGrey2 f14">资源<span class="numRed" style="font-weight:normal;"><font id="searchNum_4" class="numRed">(<%= @attach_count%>)</font></span></a></li> <li id="searchBaner_4" onclick="HoverLi(4);on_click_search(4);"><a href="javascript:void(0);" id="searchType_4" class="fontGrey2 f14">班级<span style="font-weight:normal;"><font id="searchNum_4" class="numRed">(<%=@course_count%>)</font></span></a></li>
<li id="searchBaner_5" onclick="HoverLi(5);on_click_search(5);"><a href="javascript:void(0);" id="searchType_5" class="fontGrey2 f14">项目<span class="numRed" style="font-weight:normal;"><font id="searchNum_5" class="numRed">(<%= @project_count%>)</font></span></a></li> <li id="searchBaner_5" onclick="HoverLi(5);on_click_search(5);"><a href="javascript:void(0);" id="searchType_5" class="fontGrey2 f14">资源<span class="numRed" style="font-weight:normal;"><font id="searchNum_4" class="numRed">(<%= @attach_count%>)</font></span></a></li>
<li id="searchBaner_6" onclick="HoverLi(6);on_click_search(6);"><a href="javascript:void(0);" id="searchType_6" class="fontGrey2 f14">帖子<span class="numRed" style="font-weight:normal;"><font id="searchNum_6" class="numRed">(<%= @memo_count%>)</font></span></a></li> <li id="searchBaner_6" onclick="HoverLi(6);on_click_search(6);"><a href="javascript:void(0);" id="searchType_6" class="fontGrey2 f14">项目<span class="numRed" style="font-weight:normal;"><font id="searchNum_5" class="numRed">(<%= @project_count%>)</font></span></a></li>
<li id="searchBaner_7" onclick="HoverLi(7);on_click_search(7);"><a href="javascript:void(0);" id="searchType_7" class="fontGrey2 f14">帖子<span class="numRed" style="font-weight:normal;"><font id="searchNum_6" class="numRed">(<%= @memo_count%>)</font></span></a></li>
<div class="cl"></div> <div class="cl"></div>
</ul> </ul>
<ul id="searchTips" style="display:none;"> <ul id="searchTips" style="display:none;">
@ -97,13 +103,15 @@
<div id="searchContent_3" class="undis"> <div id="searchContent_3" class="undis">
</div> </div>
<div id="searchContent_4" class="undis"> <div id="searchContent_4" class="undis">
</div> </div>
<div id="searchContent_5" class="undis"> <div id="searchContent_5" class="undis">
</div> </div>
<div id="searchContent_6" class="undis"> <div id="searchContent_6" class="undis">
</div>
<div id="searchContent_7" class="undis">
</div> </div>
</div> </div>
</div> </div>

Loading…
Cancel
Save