OSDN Git Service

Refactored IssuesController
authorDmitriy Zaporozhets <dzaporozhets@sphereconsultinginc.com>
Tue, 12 Jun 2012 08:31:38 +0000 (11:31 +0300)
committerDmitriy Zaporozhets <dzaporozhets@sphereconsultinginc.com>
Tue, 12 Jun 2012 08:31:38 +0000 (11:31 +0300)
app/assets/javascripts/issues.js
app/controllers/issues_controller.rb
app/views/issues/index.html.haml

index 19de614..5f49567 100644 (file)
@@ -35,3 +35,29 @@ function backToIssues(){
     });
   });
 }
+
+function initIssuesSearch() { 
+  var href       = $('.issue_search').parent().attr('action');
+  var last_terms = '';
+
+  $('.issue_search').keyup(function() {
+    var terms       = $(this).val();
+    var milestone_id  = $('#milestone_id').val();
+    var status      = $('#status').val();
+
+    if (terms != last_terms) {
+      last_terms = terms;
+
+      if (terms.length >= 2 || terms.length == 0) {
+        $.get(href, { 'f': status, 'terms': terms, 'milestone_id': milestone_id }, function(response) {
+          $('#issues-table').html(response);
+          setSortable();
+        });
+      }
+    }
+  });
+
+  $('.delete-issue').live('ajax:success', function() {
+    $(this).closest('tr').fadeOut(); updatePage();
+  });
+}
index 64be20f..0e31f04 100644 (file)
@@ -23,16 +23,9 @@ class IssuesController < ApplicationController
   respond_to :js, :html
 
   def index
-    @issues = case params[:f].to_i
-              when 1 then @project.issues
-              when 2 then @project.issues.closed
-              when 3 then @project.issues.opened.assigned(current_user)
-              else @project.issues.opened
-              end
+    @issues = issues_filtered
 
-    @issues = @issues.where(:milestone_id => params[:milestone_id]) if params[:milestone_id].present?
     @issues = @issues.page(params[:page]).per(20)
-    @issues = @issues.includes(:author, :project).order("critical, updated_at")
 
     respond_to do |format|
       format.html # index.html.erb
@@ -111,15 +104,9 @@ class IssuesController < ApplicationController
   def search
     terms = params['terms']
 
-    @project  = Project.find(params['project'])
-    @issues   = case params[:status].to_i
-                  when 1 then @project.issues
-                  when 2 then @project.issues.closed
-                  when 3 then @project.issues.opened.assigned(current_user)
-                  else @project.issues.opened
-                end.page(params[:page]).per(100)
-
+    @issues = issues_filtered
     @issues = @issues.where("title LIKE ?", "%#{terms}%") unless terms.blank?
+    @issues = @issues.page(params[:page]).per(100)
 
     render :partial => 'issues'
   end
@@ -141,4 +128,17 @@ class IssuesController < ApplicationController
   def module_enabled
     return render_404 unless @project.issues_enabled
   end
+
+  def issues_filtered
+    @issues = case params[:f].to_i
+              when 1 then @project.issues
+              when 2 then @project.issues.closed
+              when 3 then @project.issues.opened.assigned(current_user)
+              else @project.issues.opened
+              end
+
+    @issues = @issues.where(:milestone_id => params[:milestone_id]) if params[:milestone_id].present?
+    @issues = @issues.includes(:author, :project).order("critical, updated_at")
+    @issues
+  end
 end
index 5119573..98cbb7d 100644 (file)
       = render "issues"
 
 :javascript
-  var href       = $('.issue_search').parent().attr('action');
-  var last_terms = '';
-
-  $('.issue_search').keyup(function() {
-    var terms       = $(this).val();
-    var project_id  = $('#project_id').val();
-    var status      = $('#status').val();
-    if (terms != last_terms) {
-      last_terms = terms;
-
-      if (terms.length >= 2 || terms.length == 0) {
-        $.get(href, { 'status': status, 'terms': terms, project: project_id  }, function(response) {
-          $('#issues-table').html(response);
-          setSortable();
-        });
-      }
-    }
-  });
-
-  $('.delete-issue').live('ajax:success', function() {
-    $(this).closest('tr').fadeOut(); updatePage();});
+  $(function(){
+    initIssuesSearch();
+    setSortable();
+    $("#milestone_id").chosen();
+    $("#milestone_id").live("change", function(){
+      $(this).closest("form").submit();
+    });
+  })
 
   function setSortable(){
     $('#issues-table').sortable({
         }
       });
   }
-
-  $(function(){
-    setSortable();
-    $("#milestone_id").chosen();
-    $("#milestone_id").live("change", function(){
-      $(this).closest("form").submit();
-    });
-  });