From 909d2d8b3144f5b25652547758aa237474e5b4a2 Mon Sep 17 00:00:00 2001
From: Connor Shea <connor.james.shea@gmail.com>
Date: Fri, 15 Jul 2016 11:04:53 -0600
Subject: [PATCH] Remove inline JavaScript for Search autocomplete.

---
 app/assets/javascripts/search_autocomplete.js | 38 +++++++++++++++++++
 app/views/layouts/_search.html.haml           | 24 ++----------
 2 files changed, 41 insertions(+), 21 deletions(-)

diff --git a/app/assets/javascripts/search_autocomplete.js b/app/assets/javascripts/search_autocomplete.js
index 227e8c696b4..6445a8018c2 100644
--- a/app/assets/javascripts/search_autocomplete.js
+++ b/app/assets/javascripts/search_autocomplete.js
@@ -367,4 +367,42 @@
 
   })();
 
+  $(function() {
+    if ($('.js-search-project-options').length) {
+      var projectOptionsDataEl = $('.js-search-project-options');
+
+      gl.projectOptions = gl.projectOptions || {};
+
+      var projectPath = projectOptionsDataEl.data('project-path');
+
+      gl.projectOptions[projectPath] = {
+        name: projectOptionsDataEl.data('name'),
+        issuesPath: projectOptionsDataEl.data('issues-path'),
+        mrPath: projectOptionsDataEl.data('mr-path')
+      };
+    }
+ 
+    if ($('.js-search-group-options').length) {
+      var groupOptionsDataEl = $('.js-search-group-options');
+   
+      gl.groupOptions = gl.groupOptions || {};
+       
+      var groupPath = groupOptionsDataEl.data('group-path');
+   
+      gl.groupOptions[groupPath] = {
+        name: groupOptionsDataEl.data('name'),
+        issuesPath: groupOptionsDataEl.data('issues-path'),
+        mrPath: groupOptionsDataEl.data('mr-path')
+      };
+    }
+   
+    if ($('.js-search-dashboard-options').length) {
+      var dashboardOptionsDataEl = $('.js-search-dashboard-options');
+      gl.dashboardOptions = {
+        issuesPath: dashboardOptionsDataEl.data('issues-path'),
+        mrPath: dashboardOptionsDataEl.data('mr-path')
+      };
+    }
+  });
+
 }).call(this);
diff --git a/app/views/layouts/_search.html.haml b/app/views/layouts/_search.html.haml
index f7580f00159..ca9d7ac8a60 100644
--- a/app/views/layouts/_search.html.haml
+++ b/app/views/layouts/_search.html.haml
@@ -36,30 +36,12 @@
       - else
         = hidden_field_tag :search_code, true
 
-      :javascript
-        gl.projectOptions = gl.projectOptions || {};
-        gl.projectOptions["#{j(@project.path)}"] = {
-          issuesPath: "#{namespace_project_issues_path(@project.namespace, @project)}",
-          mrPath: "#{namespace_project_merge_requests_path(@project.namespace, @project)}",
-          name: "#{j(@project.name)}"
-        };
+      .js-search-project-options{ data: { project_path: "#{j(@project.path)}", name: "#{j(@project.name)}", issues_path: "#{namespace_project_issues_path(@project.namespace, @project)}", mr_path: "#{namespace_project_merge_requests_path(@project.namespace, @project)}" } }
 
     - if @group && @group.persisted? && @group.path
-      :javascript
-        gl.groupOptions = gl.groupOptions || {};
-        gl.groupOptions["#{j(@group.path)}"] = {
-          name: "#{j(@group.name)}",
-          issuesPath: "#{issues_group_path(j(@group.path))}",
-          mrPath: "#{merge_requests_group_path(j(@group.path))}"
-        };
-
-
-    :javascript
-      gl.dashboardOptions = {
-        issuesPath: "#{issues_dashboard_url}",
-        mrPath: "#{merge_requests_dashboard_url}"
-      };
+      .js-search-group-options{ data: { group_path: "#{j(@group.path)}", name: "#{j(@group.name)}", issues_path: "#{issues_group_path(j(@group.path))}", mr_path: "#{merge_requests_group_path(j(@group.path))}" } }
 
+    .js-search-dashboard-options{ data: { issues_path: "#{issues_dashboard_url}", mr_path: "#{merge_requests_dashboard_url}" } }
 
     - if @snippet || @snippets
       = hidden_field_tag :snippets, true
-- 
GitLab