From 512cd02335de9de22aab688743a01fa868229f0d Mon Sep 17 00:00:00 2001
From: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Date: Tue, 6 Aug 2013 21:12:01 +0300
Subject: [PATCH] Dashboard/Group issues and mr pages refactoring

---
 .../stylesheets/gitlab_bootstrap/nav.scss     |  7 +++++
 app/contexts/filter_context.rb                |  2 +-
 app/helpers/dashboard_helper.rb               | 11 +++----
 app/helpers/groups_helper.rb                  | 16 ----------
 app/views/dashboard/_filter.html.haml         | 27 -----------------
 app/views/dashboard/issues.html.haml          | 21 ++------------
 app/views/dashboard/merge_requests.html.haml  |  2 +-
 app/views/groups/issues.html.haml             | 16 ++--------
 app/views/groups/merge_requests.html.haml     |  2 +-
 app/views/shared/_filter.html.haml            | 29 +++++++++++++++++++
 app/views/shared/_issues.html.haml            | 19 ++++++++++++
 11 files changed, 66 insertions(+), 86 deletions(-)
 delete mode 100644 app/views/dashboard/_filter.html.haml
 create mode 100644 app/views/shared/_filter.html.haml
 create mode 100644 app/views/shared/_issues.html.haml

diff --git a/app/assets/stylesheets/gitlab_bootstrap/nav.scss b/app/assets/stylesheets/gitlab_bootstrap/nav.scss
index de07730361..f75d643aa0 100644
--- a/app/assets/stylesheets/gitlab_bootstrap/nav.scss
+++ b/app/assets/stylesheets/gitlab_bootstrap/nav.scss
@@ -10,6 +10,7 @@
   > li > a {
     @include border-radius(0);
   }
+
   &.nav-stacked {
     > li > a {
       border-left: 4px solid #EEE;
@@ -30,6 +31,12 @@
       }
     }
   }
+
+  &.nav-pills-small {
+    > li > a {
+      padding: 8px 12px;
+    }
+  }
 }
 
 .nav-pills > .active > a > i[class^="icon-"] { background: inherit; }
diff --git a/app/contexts/filter_context.rb b/app/contexts/filter_context.rb
index 401d19b31c..cd054e0c2c 100644
--- a/app/contexts/filter_context.rb
+++ b/app/contexts/filter_context.rb
@@ -11,7 +11,7 @@ class FilterContext
   end
 
   def apply_filter items
-    if params[:project_id]
+    if params[:project_id].present?
       items = items.where(project_id: params[:project_id])
     end
 
diff --git a/app/helpers/dashboard_helper.rb b/app/helpers/dashboard_helper.rb
index e3be07c9fe..35c7bcbd2c 100644
--- a/app/helpers/dashboard_helper.rb
+++ b/app/helpers/dashboard_helper.rb
@@ -1,5 +1,5 @@
 module DashboardHelper
-  def dashboard_filter_path(entity, options={})
+  def filter_path(entity, options={})
     exist_opts = {
       status: params[:status],
       project_id: params[:project_id],
@@ -7,12 +7,9 @@ module DashboardHelper
 
     options = exist_opts.merge(options)
 
-    case entity
-    when 'issue' then
-      issues_dashboard_path(options)
-    when 'merge_request'
-      merge_requests_dashboard_path(options)
-    end
+    path = request.path
+    path << "?#{options.to_param}"
+    path
   end
 
   def entities_per_project project, entity
diff --git a/app/helpers/groups_helper.rb b/app/helpers/groups_helper.rb
index 2ffbff7af8..8573c59dc9 100644
--- a/app/helpers/groups_helper.rb
+++ b/app/helpers/groups_helper.rb
@@ -1,20 +1,4 @@
 module GroupsHelper
-  def group_filter_path(entity, options={})
-    exist_opts = {
-      status: params[:status],
-      project_id: params[:project_id],
-    }
-
-    options = exist_opts.merge(options)
-
-    case entity
-    when 'issue' then
-      issues_group_path(@group, options)
-    when 'merge_request'
-      merge_requests_group_path(@group, options)
-    end
-  end
-
   def remove_user_from_group_message(group, user)
     "You are going to remove #{user.name} from #{group.name} Group. Are you sure?"
   end
diff --git a/app/views/dashboard/_filter.html.haml b/app/views/dashboard/_filter.html.haml
deleted file mode 100644
index d3208e6aad..0000000000
--- a/app/views/dashboard/_filter.html.haml
+++ /dev/null
@@ -1,27 +0,0 @@
-= form_tag dashboard_filter_path(entity), method: 'get' do
-  %fieldset
-    %ul.nav.nav-pills.nav-stacked
-      %li{class: ("active" if !params[:status])}
-        = link_to dashboard_filter_path(entity, status: nil) do
-          Open
-      %li{class: ("active" if params[:status] == 'closed')}
-        = link_to dashboard_filter_path(entity, status: 'closed') do
-          Closed
-      %li{class: ("active" if params[:status] == 'all')}
-        = link_to dashboard_filter_path(entity, status: 'all') do
-          All
-
-  %fieldset
-    %legend Projects:
-    %ul.nav.nav-pills.nav-stacked
-      - @projects.each do |project|
-        - unless entities_per_project(project, entity).zero?
-          %li{class: ("active" if params[:project_id] == project.id.to_s)}
-            = link_to dashboard_filter_path(entity, project_id: project.id) do
-              = project.name_with_namespace
-              %small.pull-right= entities_per_project(project, entity)
-
-  %fieldset
-    %hr
-    = link_to "Reset", dashboard_filter_path(entity), class: 'btn pull-right'
-
diff --git a/app/views/dashboard/issues.html.haml b/app/views/dashboard/issues.html.haml
index 1041d9d1d5..8b736fb503 100644
--- a/app/views/dashboard/issues.html.haml
+++ b/app/views/dashboard/issues.html.haml
@@ -8,23 +8,6 @@
 
 .row
   .span3
-    = render 'filter', entity: 'issue'
+    = render 'shared/filter', entity: 'issue'
   .span9
-    - if @issues.any?
-      - @issues.group_by(&:project).each do |group|
-        %div.ui-box
-          - project = group[0]
-          .title
-            = link_to_project project
-            &nbsp;
-            %i.icon-angle-right
-            &nbsp;
-            = link_to 'issues', project_issues_path(project)
-
-          %ul.well-list.issues-list
-            - group[1].each do |issue|
-              = render 'projects/issues/issue', issue: issue
-      %hr
-      = paginate @issues, theme: "gitlab"
-    - else
-      %p.nothing_here_message Nothing to show here
+    = render 'shared/issues'
diff --git a/app/views/dashboard/merge_requests.html.haml b/app/views/dashboard/merge_requests.html.haml
index 77a40b2eef..6ffe54028b 100644
--- a/app/views/dashboard/merge_requests.html.haml
+++ b/app/views/dashboard/merge_requests.html.haml
@@ -8,6 +8,6 @@
 %hr
 .row
   .span3
-    = render 'filter', entity: 'merge_request'
+    = render 'shared/filter', entity: 'merge_request'
   .span9
     = render 'shared/merge_requests'
diff --git a/app/views/groups/issues.html.haml b/app/views/groups/issues.html.haml
index 5c76f1c22e..2785f92e41 100644
--- a/app/views/groups/issues.html.haml
+++ b/app/views/groups/issues.html.haml
@@ -6,18 +6,6 @@
 %hr
 .row
   .span3
-    = render 'filter', entity: 'issue'
+    = render 'shared/filter', entity: 'issue'
   .span9
-    - if @issues.any?
-      - @issues.group_by(&:project).each do |group|
-        %div.ui-box
-          - project = group[0]
-          .title
-            = link_to_project project
-          %ul.well-list.issues-list
-            - group[1].each do |issue|
-              = render 'projects/issues/issue', issue: issue
-      %hr
-      = paginate @issues, theme: "gitlab"
-    - else
-      %p.nothing_here_message Nothing to show here
+    = render 'shared/issues'
diff --git a/app/views/groups/merge_requests.html.haml b/app/views/groups/merge_requests.html.haml
index eb8497c03f..93a07f4ed8 100644
--- a/app/views/groups/merge_requests.html.haml
+++ b/app/views/groups/merge_requests.html.haml
@@ -6,6 +6,6 @@
 %hr
 .row
   .span3
-    = render 'filter', entity: 'merge_request'
+    = render 'shared/filter', entity: 'merge_request'
   .span9
     = render 'shared/merge_requests'
diff --git a/app/views/shared/_filter.html.haml b/app/views/shared/_filter.html.haml
new file mode 100644
index 0000000000..fc3232e0e0
--- /dev/null
+++ b/app/views/shared/_filter.html.haml
@@ -0,0 +1,29 @@
+= form_tag filter_path(entity), method: 'get' do
+  %fieldset
+    %ul.nav.nav-pills.nav-stacked
+      %li{class: ("active" if params[:status].blank?)}
+        = link_to filter_path(entity, status: nil) do
+          Open
+      %li{class: ("active" if params[:status] == 'closed')}
+        = link_to filter_path(entity, status: 'closed') do
+          Closed
+      %li{class: ("active" if params[:status] == 'all')}
+        = link_to filter_path(entity, status: 'all') do
+          All
+
+  %fieldset
+    %legend Projects:
+    %ul.nav.nav-pills.nav-pills-small.nav-stacked
+      - @projects.each do |project|
+        - unless entities_per_project(project, entity).zero?
+          %li{class: ("active" if params[:project_id] == project.id.to_s)}
+            = link_to filter_path(entity, project_id: project.id) do
+              = project.name_with_namespace
+              %small.pull-right= entities_per_project(project, entity)
+
+  %fieldset
+    - if params[:status].present? || params[:project_id].present?
+      = link_to filter_path(entity, status: nil, project_id: nil), class: 'pull-right cgray' do
+        %i.icon-remove
+        Clear filter
+
diff --git a/app/views/shared/_issues.html.haml b/app/views/shared/_issues.html.haml
new file mode 100644
index 0000000000..33f8f5f4ad
--- /dev/null
+++ b/app/views/shared/_issues.html.haml
@@ -0,0 +1,19 @@
+- if @issues.any?
+  - @issues.group_by(&:project).each do |group|
+    %div.ui-box
+      - project = group[0]
+      .title
+        = link_to_project project
+        &nbsp;
+        %i.icon-angle-right
+        &nbsp;
+        = link_to 'issues', project_issues_path(project)
+
+      %ul.well-list.issues-list
+        - group[1].each do |issue|
+          = render 'projects/issues/issue', issue: issue
+  %hr
+  = paginate @issues, theme: "gitlab"
+- else
+  %p.nothing_here_message Nothing to show here
+
-- 
2.30.9