From 1ff01d26e1943a16f77e2ab08e89c92d72fcbf62 Mon Sep 17 00:00:00 2001
From: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Date: Tue, 28 Apr 2015 22:04:19 +0300
Subject: [PATCH] Continue refactoring and restyle of search layout

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
---
 app/assets/stylesheets/generic/common.scss | 11 +----
 app/views/layouts/_head_panel.html.haml    |  5 +-
 app/views/layouts/_search.html.haml        |  2 +-
 app/views/layouts/nav/_search.html.haml    | 56 +++++++++++-----------
 app/views/search/_filter.html.haml         |  4 +-
 app/views/search/_form.html.haml           | 12 +++++
 app/views/search/_results.html.haml        | 24 +++++++---
 app/views/search/results/_empty.html.haml  |  6 ++-
 app/views/search/show.html.haml            | 20 ++------
 db/schema.rb                               | 28 ++++++++++-
 10 files changed, 98 insertions(+), 70 deletions(-)
 create mode 100644 app/views/search/_form.html.haml

diff --git a/app/assets/stylesheets/generic/common.scss b/app/assets/stylesheets/generic/common.scss
index 7c3021989a8..1e569978cc8 100644
--- a/app/assets/stylesheets/generic/common.scss
+++ b/app/assets/stylesheets/generic/common.scss
@@ -333,17 +333,8 @@ table {
 }
 
 .search_box {
-  position: relative;
-  padding: 30px;
+  @extend .well;
   text-align: center;
-  background-color: #F9F9F9;
-  border: 1px solid #DDDDDD;
-  border-radius: 0px;
-}
-
-.search_glyph {
-  color: #555;
-  font-size: 42px;
 }
 
 .task-status {
diff --git a/app/views/layouts/_head_panel.html.haml b/app/views/layouts/_head_panel.html.haml
index fc4656be079..a7ec19cb692 100644
--- a/app/views/layouts/_head_panel.html.haml
+++ b/app/views/layouts/_head_panel.html.haml
@@ -13,8 +13,9 @@
 
       .navbar-collapse.collapse
         %ul.nav.navbar-nav
-          %li.hidden-sm.hidden-xs
-            = render 'layouts/search'
+          - unless current_controller?(:search)
+            %li.hidden-sm.hidden-xs
+              = render 'layouts/search'
           %li.visible-sm.visible-xs
             = link_to search_path, title: 'Search', data: {toggle: 'tooltip', placement: 'bottom'} do
               = icon('search')
diff --git a/app/views/layouts/_search.html.haml b/app/views/layouts/_search.html.haml
index 58e6bd3158f..04f79846858 100644
--- a/app/views/layouts/_search.html.haml
+++ b/app/views/layouts/_search.html.haml
@@ -1,6 +1,6 @@
 .search
   = form_tag search_path, method: :get, class: 'navbar-form pull-left' do |f|
-    = search_field_tag "search", @search_term, placeholder: search_placeholder, class: "search-input"
+    = search_field_tag "search", nil, placeholder: search_placeholder, class: "search-input"
     = hidden_field_tag :group_id, @group.try(:id)
     - if @project && @project.persisted?
       = hidden_field_tag :project_id, @project.id
diff --git a/app/views/layouts/nav/_search.html.haml b/app/views/layouts/nav/_search.html.haml
index 35806c2d0fb..f95f6acb28d 100644
--- a/app/views/layouts/nav/_search.html.haml
+++ b/app/views/layouts/nav/_search.html.haml
@@ -1,30 +1,30 @@
-%ul.nav.nav-sidebar.search-filter
-  - if @project
-    = render 'layouts/nav/search/project'
+- if @search_term
+  %ul.nav.nav-sidebar.search-filter
+    - if @project
+      = render 'layouts/nav/search/project'
 
-  - elsif @show_snippets
-    = render 'layouts/nav/search/snippet'
-
-  - else
-    %li{class: ("active" if @scope == 'projects')}
-      = link_to search_filter_path(scope: 'projects') do
-        = icon('bookmark fw')
-        %span
-          Projects
-          %span.count
-            = @search_results.projects_count
-    %li{class: ("active" if @scope == 'issues')}
-      = link_to search_filter_path(scope: 'issues') do
-        = icon('exclamation-circle fw')
-        %span
-          Issues
-          %span.count
-            = @search_results.issues_count
-    %li{class: ("active" if @scope == 'merge_requests')}
-      = link_to search_filter_path(scope: 'merge_requests') do
-        = icon('tasks fw')
-        %span
-          Merge requests
-          %span.count
-            = @search_results.merge_requests_count
+    - elsif @show_snippets
+      = render 'layouts/nav/search/snippet'
 
+    - else
+      %li{class: ("active" if @scope == 'projects')}
+        = link_to search_filter_path(scope: 'projects') do
+          = icon('bookmark fw')
+          %span
+            Projects
+            %span.count
+              = @search_results.projects_count
+      %li{class: ("active" if @scope == 'issues')}
+        = link_to search_filter_path(scope: 'issues') do
+          = icon('exclamation-circle fw')
+          %span
+            Issues
+            %span.count
+              = @search_results.issues_count
+      %li{class: ("active" if @scope == 'merge_requests')}
+        = link_to search_filter_path(scope: 'merge_requests') do
+          = icon('tasks fw')
+          %span
+            Merge requests
+            %span.count
+              = @search_results.merge_requests_count
diff --git a/app/views/search/_filter.html.haml b/app/views/search/_filter.html.haml
index ffc145497ab..e2d0cab9e79 100644
--- a/app/views/search/_filter.html.haml
+++ b/app/views/search/_filter.html.haml
@@ -1,5 +1,5 @@
 .dropdown.inline
-  %button.dropdown-toggle.btn.btn-sm{type: 'button', 'data-toggle' => 'dropdown'}
+  %button.dropdown-toggle.btn.btn{type: 'button', 'data-toggle' => 'dropdown'}
     %i.fa.fa-tags
     %span.light Group:
     - if @group.present?
@@ -17,7 +17,7 @@
           = group.name
 
 .dropdown.inline.prepend-left-10.project-filter
-  %button.dropdown-toggle.btn.btn-sm{type: 'button', 'data-toggle' => 'dropdown'}
+  %button.dropdown-toggle.btn.btn{type: 'button', 'data-toggle' => 'dropdown'}
     %i.fa.fa-tags
     %span.light Project:
     - if @project.present?
diff --git a/app/views/search/_form.html.haml b/app/views/search/_form.html.haml
new file mode 100644
index 00000000000..a9ec7df2967
--- /dev/null
+++ b/app/views/search/_form.html.haml
@@ -0,0 +1,12 @@
+= form_tag search_path, method: :get, class: 'form-inline' do |f|
+  = hidden_field_tag :project_id, params[:project_id]
+  = hidden_field_tag :group_id, params[:group_id]
+  = hidden_field_tag :snippets, params[:snippets]
+  = hidden_field_tag :scope, params[:scope]
+  .search-holder.clearfix
+    .form-group
+      = search_field_tag :search, params[:search], placeholder: "Search for projects, issues etc", class: "form-control search-text-input input-mn-300", id: "dashboard_search", autofocus: true
+      = button_tag 'Search', class: "btn btn-info"
+    - unless params[:snippets].eql? 'true'
+      .pull-right
+        = render 'filter'
diff --git a/app/views/search/_results.html.haml b/app/views/search/_results.html.haml
index f741a64cbab..741c780ad96 100644
--- a/app/views/search/_results.html.haml
+++ b/app/views/search/_results.html.haml
@@ -1,9 +1,21 @@
-.search-results
-  - if @search_results.empty?
-    = render partial: "search/results/empty", locals: { message: "We couldn't find any matching results" }
-  - else
-    = render partial: "search/results/#{@scope.singularize}", collection: @objects
-    = paginate @objects, theme: 'gitlab'
+- if @search_results.empty?
+  = render partial: "search/results/empty"
+- else
+  .light
+    Search results for
+    %code
+      = @search_term
+    - unless @show_snippets
+      - if @project
+        in project #{link_to @project.name_with_namespace, [@project.namespace.becomes(Namespace), @project]}
+      - elsif @group
+        in group #{link_to @group.name, @group}
+
+  %br
+  .results.prepend-top-10
+    .search-results
+      = render partial: "search/results/#{@scope.singularize}", collection: @objects
+      = paginate @objects, theme: 'gitlab'
 
 :javascript
   $(".search-results .term").highlight("#{escape_javascript(params[:search])}");
diff --git a/app/views/search/results/_empty.html.haml b/app/views/search/results/_empty.html.haml
index 01fb8cd9b8e..05a63016c09 100644
--- a/app/views/search/results/_empty.html.haml
+++ b/app/views/search/results/_empty.html.haml
@@ -1,4 +1,6 @@
 .search_box
   .search_glyph
-    %span.fa.fa-search
-  %h4 #{message}
+  %h4
+    = icon('search')
+    We couldn't find any results matching
+    %code #{@search_term}
diff --git a/app/views/search/show.html.haml b/app/views/search/show.html.haml
index fcdd63a764d..8e11154279f 100644
--- a/app/views/search/show.html.haml
+++ b/app/views/search/show.html.haml
@@ -1,18 +1,4 @@
+= render 'search/form'
+%hr
 - if @search_term
-  .lead
-    Search for
-    %code
-      = @search_term
-    - unless @show_snippets
-      - if @project
-        in project #{link_to @project.name_with_namespace, [@project.namespace.becomes(Namespace), @project]}
-      - elsif @group
-        in group #{link_to @group.name, @group}
-
-    .pull-right
-      = render 'filter'
-  %hr
-  .results.prepend-top-10
-    = render 'search/results'
-- else
-  wow
+  = render 'search/results'
diff --git a/db/schema.rb b/db/schema.rb
index 8683c0446fe..43faaf31682 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -349,10 +349,10 @@ ActiveRecord::Schema.define(version: 20150425173433) do
     t.string   "import_url"
     t.integer  "visibility_level",       default: 0,        null: false
     t.boolean  "archived",               default: false,    null: false
-    t.string   "avatar"
     t.string   "import_status"
     t.float    "repository_size",        default: 0.0
     t.integer  "star_count",             default: 0,        null: false
+    t.string   "avatar"
     t.string   "import_type"
     t.string   "import_source"
   end
@@ -472,7 +472,6 @@ ActiveRecord::Schema.define(version: 20150425173433) do
     t.integer  "notification_level",            default: 1,     null: false
     t.datetime "password_expires_at"
     t.integer  "created_by_id"
-    t.datetime "last_credential_check_at"
     t.string   "avatar"
     t.string   "confirmation_token"
     t.datetime "confirmed_at"
@@ -480,6 +479,7 @@ ActiveRecord::Schema.define(version: 20150425173433) do
     t.string   "unconfirmed_email"
     t.boolean  "hide_no_ssh_key",               default: false
     t.string   "website_url",                   default: "",    null: false
+    t.datetime "last_credential_check_at"
     t.string   "github_access_token"
     t.string   "gitlab_access_token"
     t.string   "notification_email"
@@ -501,6 +501,30 @@ ActiveRecord::Schema.define(version: 20150425173433) do
   add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree
   add_index "users", ["username"], name: "index_users_on_username", using: :btree
 
+  create_table "users_groups", force: true do |t|
+    t.integer  "group_access",                   null: false
+    t.integer  "group_id",                       null: false
+    t.integer  "user_id",                        null: false
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.integer  "notification_level", default: 3, null: false
+  end
+
+  add_index "users_groups", ["user_id"], name: "index_users_groups_on_user_id", using: :btree
+
+  create_table "users_projects", force: true do |t|
+    t.integer  "user_id",                        null: false
+    t.integer  "project_id",                     null: false
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.integer  "project_access",     default: 0, null: false
+    t.integer  "notification_level", default: 3, null: false
+  end
+
+  add_index "users_projects", ["project_access"], name: "index_users_projects_on_project_access", using: :btree
+  add_index "users_projects", ["project_id"], name: "index_users_projects_on_project_id", using: :btree
+  add_index "users_projects", ["user_id"], name: "index_users_projects_on_user_id", using: :btree
+
   create_table "users_star_projects", force: true do |t|
     t.integer  "project_id", null: false
     t.integer  "user_id",    null: false
-- 
GitLab