mirror of
https://github.com/TracksApp/tracks.git
synced 2025-12-18 16:20:12 +01:00
36 lines
1.4 KiB
Ruby
36 lines
1.4 KiB
Ruby
class SearchController < ApplicationController
|
|
|
|
helper :todos, :application, :notes, :projects
|
|
|
|
def results
|
|
@source_view = params['_source_view'] || 'search'
|
|
@page_title = "TRACKS::Search Results for #{params[:search]}"
|
|
terms = '%' + params[:search] + '%'
|
|
@found_todos = current_user.todos.find(:all, :conditions => ["todos.description LIKE ? OR todos.notes LIKE ?", terms, terms], :include => [:tags, :project, :context])
|
|
@found_projects = current_user.projects.find(:all, :conditions => ["name LIKE ? OR description LIKE ?", terms, terms])
|
|
@found_notes = current_user.notes.find(:all, :conditions => ["body LIKE ?", terms])
|
|
@found_contexts = current_user.contexts.find(:all, :conditions => ["name LIKE ?", terms])
|
|
# TODO: limit search to tags on todos
|
|
@found_tags = Tagging.find_by_sql([
|
|
"SELECT DISTINCT tags.name as name "+
|
|
"FROM tags "+
|
|
"LEFT JOIN taggings ON tags.id = taggings.tag_id "+
|
|
"LEFT JOIN todos ON taggings.taggable_id = todos.id "+
|
|
"WHERE todos.user_id=? "+
|
|
"AND tags.name LIKE ? ", current_user.id, terms])
|
|
|
|
@count = @found_todos.size + @found_projects.size + @found_notes.size + @found_contexts.size + @found_tags.size
|
|
|
|
init_not_done_counts
|
|
init_project_hidden_todo_counts
|
|
end
|
|
|
|
def index
|
|
@page_title = "TRACKS::Search"
|
|
end
|
|
|
|
def init
|
|
@source_view = params['_source_view'] || 'search'
|
|
end
|
|
|
|
end
|