OSDN Git Service

Search improved
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Sat, 14 Apr 2012 08:16:11 +0000 (11:16 +0300)
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Sat, 14 Apr 2012 08:16:11 +0000 (11:16 +0300)
app/controllers/search_controller.rb
app/models/issue.rb
app/models/user.rb
app/views/search/show.html.haml

index 8a452fe..dfc318c 100644 (file)
@@ -4,9 +4,11 @@ class SearchController < ApplicationController
     if query.blank?
       @projects = []
       @merge_requests = []
+      @issues = []
     else
-      @projects = Project.search(query).limit(10)
-      @merge_requests = MergeRequest.search(query).limit(10)
+      @projects = current_user.projects.search(query).limit(10)
+      @merge_requests = MergeRequest.where(:project_id => current_user.project_ids).search(query).limit(10)
+      @issues = Issue.where(:project_id => current_user.project_ids).search(query).limit(10)
     end
   end
 end
index 5ca2579..5fe0e0b 100644 (file)
@@ -42,6 +42,10 @@ class Issue < ActiveRecord::Base
     opened.assigned(user)
   end
 
+  def self.search query
+    where("title like :query", :query => "%#{query}%")
+  end
+
   def today?
     Date.today == created_at.to_date
   end
index 2601de2..3149de4 100644 (file)
@@ -97,6 +97,10 @@ class User < ActiveRecord::Base
   def cared_merge_requests
     MergeRequest.where("author_id = :id or assignee_id = :id", :id => self.id).opened
   end
+
+  def project_ids
+    projects.map(&:id)
+  end
 end
 # == Schema Information
 #
index 69a0a70..a7df49b 100644 (file)
         %small Nothing here
     - else 
       - if @projects.any?
-        - @projects.each do |project|
-          = link_to project do 
-            %h4
-              %span.ico.project
-              = project.name
-              %small
-                last activity at 
-                = project.last_activity_date.stamp("Aug 25, 2011")
+        %h4 Projects
+        .padded
+          - @projects.each do |project|
+            = link_to project do 
+              %h4
+                %span.ico.project
+                = project.name
+                %small
+                  last activity at 
+                  = project.last_activity_date.stamp("Aug 25, 2011")
       - if @merge_requests.any?
-        - @merge_requests.each do |merge_request|
-          = link_to [merge_request.project, merge_request] do 
-            %h5
-              Merge Request #
-              = merge_request.id
-              &ndash;
-              = truncate merge_request.title, :length => 50
-              %small
-                updated at 
-                = merge_request.updated_at.stamp("Aug 25, 2011")
-              %strong
-                %span.label= merge_request.project.name
+        %h4 Merge Requests
+        .padded
+          - @merge_requests.each do |merge_request|
+            = link_to [merge_request.project, merge_request] do 
+              %h5
+                Merge Request #
+                = merge_request.id
+                &ndash;
+                = truncate merge_request.title, :length => 50
+                %small
+                  updated at 
+                  = merge_request.updated_at.stamp("Aug 25, 2011")
+                %strong
+                  %span.label= merge_request.project.name
+      - if @issues.any?
+        %h4 Issues
+        .padded
+          - @issues.each do |issue|
+            = link_to [issue.project, issue] do 
+              %h5
+                Issue #
+                = issue.id
+                &ndash;
+                = truncate issue.title, :length => 50
+                %small
+                  updated at 
+                  = issue.updated_at.stamp("Aug 25, 2011")
+                %strong
+                  %span.label= issue.project.name
   :javascript
     $(function() {
       $(".search_results").highlight("#{params[:search]}");