From 4a63573b21dedaebaf0722b819926c5a468bcc5d Mon Sep 17 00:00:00 2001
From: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Date: Thu, 2 Apr 2015 18:22:54 -0700
Subject: [PATCH] Start applying new layout to snippets pages

---
 app/controllers/snippets_controller.rb        | 40 +++++++--------
 app/views/layouts/nav/_snippets.html.haml     | 11 +++++
 app/views/layouts/snippets.html.haml          |  6 +++
 .../snippets/current_user_index.html.haml     | 49 +++++++++----------
 app/views/snippets/index.html.haml            |  1 -
 config/routes.rb                              |  3 +-
 6 files changed, 60 insertions(+), 50 deletions(-)
 create mode 100644 app/views/layouts/nav/_snippets.html.haml
 create mode 100644 app/views/layouts/snippets.html.haml

diff --git a/app/controllers/snippets_controller.rb b/app/controllers/snippets_controller.rb
index cd52556b20..6c84dbbb99 100644
--- a/app/controllers/snippets_controller.rb
+++ b/app/controllers/snippets_controller.rb
@@ -1,10 +1,6 @@
 class SnippetsController < ApplicationController
   before_filter :snippet, only: [:show, :edit, :destroy, :update, :raw]
-
-  # Allow modify snippet
   before_filter :authorize_modify_snippet!, only: [:edit, :update]
-
-  # Allow destroy snippet
   before_filter :authorize_admin_snippet!, only: [:destroy]
 
   before_filter :set_title
@@ -16,24 +12,24 @@ class SnippetsController < ApplicationController
   layout :determine_layout
 
   def index
-    @snippets = SnippetsFinder.new.execute(current_user, filter: :all).page(params[:page]).per(PER_PAGE)
-  end
-
-  def user_index
-    @user = User.find_by(username: params[:username])
-
-    render_404 and return unless @user
-
-    @snippets = SnippetsFinder.new.execute(current_user, {
-      filter: :by_user,
-      user: @user,
-      scope: params[:scope] }).
-    page(params[:page]).per(PER_PAGE)
-
-    if @user == current_user
-      render 'current_user_index'
+    if params[:username].present?
+      @user = User.find_by(username: params[:username])
+
+      render_404 and return unless @user
+
+      @snippets = SnippetsFinder.new.execute(current_user, {
+        filter: :by_user,
+        user: @user,
+        scope: params[:scope] }).
+      page(params[:page]).per(PER_PAGE)
+
+      if @user == current_user
+        render 'current_user_index'
+      else
+        render 'user_index'
+      end
     else
-      render 'user_index'
+      @snippets = SnippetsFinder.new.execute(current_user, filter: :all).page(params[:page]).per(PER_PAGE)
     end
   end
 
@@ -108,6 +104,6 @@ class SnippetsController < ApplicationController
   end
 
   def determine_layout
-    current_user ? 'navless' : 'public_users'
+    current_user ? 'snippets' : 'public_users'
   end
 end
diff --git a/app/views/layouts/nav/_snippets.html.haml b/app/views/layouts/nav/_snippets.html.haml
new file mode 100644
index 0000000000..1c5d376a76
--- /dev/null
+++ b/app/views/layouts/nav/_snippets.html.haml
@@ -0,0 +1,11 @@
+%ul.nav.nav-sidebar
+  = nav_link(path: user_snippets_path(current_user), html_options: {class: 'home'}) do
+    = link_to user_snippets_path(current_user) do
+      %i.fa.fa-dashboard
+      %span
+        My Snippets
+  = nav_link(path: snippets_path) do
+    = link_to snippets_path, title: 'Discover snippets' do
+      %i.fa.fa-globe
+      %span
+        Discover Snippets
diff --git a/app/views/layouts/snippets.html.haml b/app/views/layouts/snippets.html.haml
new file mode 100644
index 0000000000..fbd29eb23a
--- /dev/null
+++ b/app/views/layouts/snippets.html.haml
@@ -0,0 +1,6 @@
+!!! 5
+%html{ lang: "en"}
+  = render "layouts/head", title: "Dashboard"
+  %body{class: "#{app_theme}  application", :'data-page' => body_data_page }
+    = render "layouts/head_panel", title: link_to("Snippets", snippets_path)
+    = render 'layouts/page', sidebar: 'layouts/nav/snippets'
diff --git a/app/views/snippets/current_user_index.html.haml b/app/views/snippets/current_user_index.html.haml
index 0df5ade500..4a27355795 100644
--- a/app/views/snippets/current_user_index.html.haml
+++ b/app/views/snippets/current_user_index.html.haml
@@ -8,32 +8,29 @@
 
 %p.light
   Share code pastes with others out of git repository
-%hr
 
-.row
-  .col-md-3
-    %ul.nav.nav-pills.nav-stacked
-      = nav_tab :scope, nil do
-        = link_to user_snippets_path(@user) do
-          All
-          %span.pull-right
-            = @user.snippets.count
-      = nav_tab :scope, 'are_private' do
-        = link_to user_snippets_path(@user, scope: 'are_private') do
-          Private
-          %span.pull-right
-            = @user.snippets.are_private.count
-      = nav_tab :scope, 'are_internal' do
-        = link_to user_snippets_path(@user, scope: 'are_internal') do
-          Internal
-          %span.pull-right
-            = @user.snippets.are_internal.count
-      = nav_tab :scope, 'are_public' do
-        = link_to user_snippets_path(@user, scope: 'are_public') do
-          Public
-          %span.pull-right
-            = @user.snippets.are_public.count
+%ul.nav.nav-tabs
+  = nav_tab :scope, nil do
+    = link_to user_snippets_path(@user) do
+      All
+      %span.badge
+        = @user.snippets.count
+  = nav_tab :scope, 'are_private' do
+    = link_to user_snippets_path(@user, scope: 'are_private') do
+      Private
+      %span.badge
+        = @user.snippets.are_private.count
+  = nav_tab :scope, 'are_internal' do
+    = link_to user_snippets_path(@user, scope: 'are_internal') do
+      Internal
+      %span.badge
+        = @user.snippets.are_internal.count
+  = nav_tab :scope, 'are_public' do
+    = link_to user_snippets_path(@user, scope: 'are_public') do
+      Public
+      %span.badge
+        = @user.snippets.are_public.count
 
-  .col-md-9.my-snippets
-    = render 'snippets'
+.my-snippets
+  = render 'snippets'
 
diff --git a/app/views/snippets/index.html.haml b/app/views/snippets/index.html.haml
index 5cd8ae26cf..108dd0cca3 100644
--- a/app/views/snippets/index.html.haml
+++ b/app/views/snippets/index.html.haml
@@ -2,7 +2,6 @@
   Public snippets
 
   .pull-right
-
     - if current_user
       = link_to new_snippet_path, class: "btn btn-new btn-grouped", title: "New Snippet" do
         Add new snippet
diff --git a/config/routes.rb b/config/routes.rb
index 744a99fede..f95507017c 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -51,7 +51,8 @@ Gitlab::Application.routes.draw do
       get 'raw'
     end
   end
-  get '/s/:username' => 'snippets#user_index', as: :user_snippets, constraints: { username: /.*/ }
+
+  get '/s/:username' => 'snippets#index', as: :user_snippets, constraints: { username: /.*/ }
 
   #
   # Invites
-- 
2.30.9