diff --git a/app/models/dmail.rb b/app/models/dmail.rb index 977a63e18..688e50c69 100644 --- a/app/models/dmail.rb +++ b/app/models/dmail.rb @@ -102,6 +102,11 @@ class Dmail < ActiveRecord::Base where("is_deleted = ?", true) end + def title_matches(query) + query = "*#{query}*" unless query =~ /\*/ + where("lower(dmails.title) LIKE ?", query.to_escaped_for_sql_like) + end + def search_message(query) if query =~ /\*/ && CurrentUser.user.is_builder? escaped_query = query.to_escaped_for_sql_like @@ -131,6 +136,10 @@ class Dmail < ActiveRecord::Base q = where("true") return q if params.blank? + if params[:title_matches].present? + q = q.title_matches(params[:title_matches]) + end + if params[:message_matches].present? q = q.search_message(params[:message_matches]) end diff --git a/app/views/dmails/search.html.erb b/app/views/dmails/search.html.erb index 9e18c44fa..23c2700c0 100644 --- a/app/views/dmails/search.html.erb +++ b/app/views/dmails/search.html.erb @@ -4,6 +4,7 @@ <%= simple_form_for(:search, url: dmails_path, method: :get, defaults: { required: false }, html: { class: "inline-form" }) do |f| %> <%= f.hidden_field :folder, value: params[:folder] %> + <%= f.input :title_matches, label: "Title", hint: "Use * for wildcard", input_html: { value: params[:search][:title_matches] } %> <%= f.input :message_matches, label: "Message", hint: "Use * for wildcard", input_html: { value: params[:search][:messages_matches] } %> <%= f.input :to_name, label: "To", input_html: { value: params[:search][:to_name] } %> <%= f.input :from_name, label: "From", input_html: { value: params[:search][:from_name] } %>