From d8d00b5bc29f7b89f95c436cd6900d1548f111b7 Mon Sep 17 00:00:00 2001
From: Alfredo Sumaran <alfredo@gitlab.com>
Date: Wed, 23 Mar 2016 11:10:17 -0500
Subject: [PATCH] Add Hide/show whitespace changes button on diff and commit
 view

---
 app/helpers/diff_helper.rb                | 22 ++++++++++++++++++++++
 app/views/projects/diffs/_diffs.html.haml |  4 ++++
 2 files changed, 26 insertions(+)

diff --git a/app/helpers/diff_helper.rb b/app/helpers/diff_helper.rb
index 97466d532f4..eca4ba695a1 100644
--- a/app/helpers/diff_helper.rb
+++ b/app/helpers/diff_helper.rb
@@ -128,4 +128,26 @@ module DiffHelper
       title
     end
   end
+
+  def hide_whitespaces?
+    params[:w] == '1'
+  end
+
+  def params_with_whitespace
+    hide_whitespaces? ? request.query_parameters.except(:w) : request.query_parameters.merge(w: 1)
+  end
+
+  def toggle_whitespace_link(url)
+    link_to "#{hide_whitespaces? ? 'Show' : 'Hide'} whitespace changes", url, class: "btn btn-default"
+  end
+
+  def commit_diff_whitespace_link(project, commit)
+    url = namespace_project_commit_path(project.namespace, project, commit.id, params_with_whitespace)
+    toggle_whitespace_link(url)
+  end
+
+  def diff_merge_request_whitespace_link(project, merge_request)
+    url = diffs_namespace_project_merge_request_path(project.namespace, project, merge_request, params_with_whitespace)
+    toggle_whitespace_link(url)
+  end
 end
diff --git a/app/views/projects/diffs/_diffs.html.haml b/app/views/projects/diffs/_diffs.html.haml
index eaab99973a4..fbfff9bc895 100644
--- a/app/views/projects/diffs/_diffs.html.haml
+++ b/app/views/projects/diffs/_diffs.html.haml
@@ -5,6 +5,10 @@
 
 .content-block.oneline-block.files-changed
   .inline-parallel-buttons
+    - if current_controller?(:commit)
+      = commit_diff_whitespace_link(@project, @commit)
+    - if current_controller?(:merge_requests)
+      = diff_merge_request_whitespace_link(@project, @merge_request)
     .btn-group
       = inline_diff_btn
       = parallel_diff_btn
-- 
GitLab