Added Searching Features

* Added Thread Search Feature

* Added User Search Feature

* Re-organized searching, added @mention support to author search
This commit is contained in:
MrYummy
2017-05-28 18:08:57 -04:00
parent 252dc5bdfa
commit 44392c1df3
20 changed files with 293 additions and 27 deletions

View File

@@ -75,4 +75,4 @@ class ApplicationController < ActionController::Base
!!(current_user && current_user.confirmed?)
end
end
end

View File

@@ -75,4 +75,4 @@ class BlogpostsController < ApplicationController
end
end
end
end

View File

@@ -1,4 +1,5 @@
class ForumsController < ApplicationController
before_filter :check_permission, only: [:show, :edit, :update, :destroy]
def index
@@ -77,7 +78,6 @@ class ForumsController < ApplicationController
redirect_to forums_path
end
private
def check_permission

View File

@@ -3,9 +3,14 @@ class ForumthreadsController < ApplicationController
before_filter :check_permission, only: [:show, :edit, :update, :destroy]
def index
redirect_to forum_path(@thread.forum.forumgroup, f)
if params[:label] && !Label.where("lower(name) = ?", params[:label].downcase).try(:first) && params[:label].downcase != "no label"
flash[:alert] = "'#{params[:label]}' is not a valid label."
redirect_to forumthreads_path(params.except(:label, :controller, :action))
return
end
@threads = Forumthread.filter(current_user, params[:title], params[:content], params[:reply], params[:label], User.where("lower(ign) = ?", params[:author].to_s.downcase).try(:first), params[:query], Forum.where(id: params[:id]).try(:first))
.page(params[:page]).per(30)
end
def show
if params[:reverse]
@replies = @thread.replies.reverse_order.page(params[:page])
@@ -80,6 +85,20 @@ class ForumthreadsController < ApplicationController
redirect_to @thread.forum
end
def search
end
def search_redirect
params.each do |key, value|
params[key] = nil if params[key] == ""
end
params[:id] = nil if params[:id] == "Search All Threads"
params[:label] = nil if params[:label] && params[:label].downcase == "label"
params[:author] = params[:author].tr("@ ", "") if params[:author]
params_list = Hash[params.except(:commit, :utf8, :authenticity_token)]
redirect_to forumthreads_path(params_list)
end
private
def check_permission

View File

@@ -4,7 +4,7 @@ class UsersController < ApplicationController
include MailerHelper
include ERB::Util
before_filter :set_user, except: [:index, :new, :create, :lost_password, :reset_password, :suggestions]
before_filter :set_user, except: [:index, :new, :create, :lost_password, :reset_password, :suggestions, :search_redirect]
def index
if params[:role]
@@ -13,7 +13,7 @@ class UsersController < ApplicationController
else
if role = Role.get(params[:role])
@users = User.joins(:role).where(role: role)
else
elsif params[:search] == nil
flash[:alert] = "role '#{params[:role]}' does not exist!"
redirect_to users_path
return
@@ -30,6 +30,7 @@ class UsersController < ApplicationController
else
@users = User.joins(:role).where.not(id: User.first.id) #Remove first user
end
@users = User.search(@users, params[:search]) if params[:search]
@users = @users.order("roles.value desc", "confirmed desc", :name) unless params[:badge]
@count = @users.size
@users = @users.page(params[:page]).per(100)
@@ -339,6 +340,14 @@ class UsersController < ApplicationController
end
end
def search_redirect
params.each do |key, value|
params[key] = nil if params[key] == ""
end
params_list = Hash[params.except(:commit, :utf8, :authenticity_token)]
redirect_to users_path(params_list)
end
private
def validate_token(uuid, email, token)