From 5d785457db3017a17722314a52433543dd925164 Mon Sep 17 00:00:00 2001
From: Douwe Maan <douwe@gitlab.com>
Date: Tue, 8 Sep 2015 14:49:20 +0100
Subject: [PATCH] Clean up overlap between dashboard and explore.

- Split up SnippetsController into separate dashboard and explore sections.
- Use consistent page titles, header titles and sidebars between dashboard and explore sections when signed in or not.
---
 .../dashboard/projects_controller.rb          | 15 +++++++
 .../dashboard/snippets_controller.rb          | 10 +++++
 app/controllers/dashboard_controller.rb       | 19 --------
 .../explore/application_controller.rb         |  2 +
 app/controllers/explore/groups_controller.rb  |  3 --
 .../explore/projects_controller.rb            |  3 --
 .../explore/snippets_controller.rb            |  6 +++
 app/controllers/groups_controller.rb          |  4 ++
 app/controllers/projects_controller.rb        |  4 ++
 app/controllers/root_controller.rb            |  5 ++-
 app/controllers/snippets_controller.rb        |  8 +---
 app/views/dashboard/_groups_head.html.haml    |  4 +-
 app/views/dashboard/_projects_head.html.haml  |  4 +-
 app/views/dashboard/_snippets_head.html.haml  |  7 +++
 app/views/dashboard/activity.html.haml        |  4 +-
 .../{ => projects}/_projects.html.haml        |  0
 .../index.atom.builder}                       |  6 +--
 .../index.html.haml}                          |  6 ++-
 .../dashboard/projects/starred.html.haml      |  5 ++-
 app/views/dashboard/snippets/index.html.haml  | 38 ++++++++++++++++
 app/views/explore/_head.html.haml             |  6 +++
 app/views/explore/groups/index.html.haml      |  8 +++-
 app/views/explore/projects/index.html.haml    |  7 ++-
 app/views/explore/projects/starred.html.haml  |  6 ++-
 app/views/explore/projects/trending.html.haml | 12 +++--
 app/views/explore/snippets/index.html.haml    | 18 ++++++++
 app/views/layouts/_page.html.haml             |  4 ++
 app/views/layouts/explore.html.haml           |  6 +--
 app/views/layouts/nav/_dashboard.html.haml    | 44 +++++++++----------
 app/views/layouts/nav/_explore.html.haml      | 21 +++++++++
 app/views/layouts/snippets.html.haml          |  7 +--
 app/views/projects/activity.html.haml         |  1 +
 app/views/snippets/_head.html.haml            |  7 ---
 .../snippets/current_user_index.html.haml     | 36 ---------------
 app/views/snippets/index.html.haml            | 24 +++++-----
 app/views/snippets/show.html.haml             |  4 +-
 app/views/snippets/user_index.html.haml       | 13 ------
 config/routes.rb                              | 20 +++++----
 features/steps/snippets/user.rb               |  2 +-
 39 files changed, 228 insertions(+), 171 deletions(-)
 create mode 100644 app/controllers/dashboard/snippets_controller.rb
 create mode 100644 app/controllers/explore/snippets_controller.rb
 create mode 100644 app/views/dashboard/_snippets_head.html.haml
 rename app/views/dashboard/{ => projects}/_projects.html.haml (100%)
 rename app/views/dashboard/{show.atom.builder => projects/index.atom.builder} (52%)
 rename app/views/dashboard/{show.html.haml => projects/index.html.haml} (53%)
 create mode 100644 app/views/dashboard/snippets/index.html.haml
 create mode 100644 app/views/explore/_head.html.haml
 create mode 100644 app/views/explore/snippets/index.html.haml
 create mode 100644 app/views/layouts/nav/_explore.html.haml
 delete mode 100644 app/views/snippets/_head.html.haml
 delete mode 100644 app/views/snippets/current_user_index.html.haml
 delete mode 100644 app/views/snippets/user_index.html.haml

diff --git a/app/controllers/dashboard/projects_controller.rb b/app/controllers/dashboard/projects_controller.rb
index da96171e885..467d0f81aca 100644
--- a/app/controllers/dashboard/projects_controller.rb
+++ b/app/controllers/dashboard/projects_controller.rb
@@ -1,6 +1,21 @@
 class Dashboard::ProjectsController < Dashboard::ApplicationController
   before_action :event_filter
 
+  def index
+    @projects = current_user.authorized_projects.sorted_by_activity.non_archived
+    @projects = @projects.includes(:namespace)
+    @last_push = current_user.recent_push
+
+    respond_to do |format|
+      format.html
+      format.atom do
+        event_filter
+        load_events
+        render layout: false
+      end
+    end
+  end
+
   def starred
     @projects = current_user.starred_projects
     @projects = @projects.includes(:namespace, :forked_from_project, :tags)
diff --git a/app/controllers/dashboard/snippets_controller.rb b/app/controllers/dashboard/snippets_controller.rb
new file mode 100644
index 00000000000..f4354c6d8ca
--- /dev/null
+++ b/app/controllers/dashboard/snippets_controller.rb
@@ -0,0 +1,10 @@
+class Dashboard::SnippetsController < Dashboard::ApplicationController
+  def index
+    @snippets = SnippetsFinder.new.execute(current_user,
+      filter: :by_user,
+      user: current_user,
+      scope: params[:scope]
+    )
+    @snippets = @snippets.page(params[:page]).per(PER_PAGE)
+  end
+end
diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb
index 2bc2e5e58f5..4ebb3d7276e 100644
--- a/app/controllers/dashboard_controller.rb
+++ b/app/controllers/dashboard_controller.rb
@@ -1,23 +1,8 @@
 class DashboardController < Dashboard::ApplicationController
-  before_action :load_projects, except: :activity
   before_action :event_filter, only: :activity
 
   respond_to :html
 
-  def show
-    @projects = @projects.includes(:namespace)
-    @last_push = current_user.recent_push
-
-    respond_to do |format|
-      format.html
-      format.atom do
-        event_filter
-        load_events
-        render layout: false
-      end
-    end
-  end
-
   def merge_requests
     @merge_requests = get_merge_requests_collection
     @merge_requests = @merge_requests.page(params[:page]).per(PER_PAGE)
@@ -50,10 +35,6 @@ class DashboardController < Dashboard::ApplicationController
 
   protected
 
-  def load_projects
-    @projects = current_user.authorized_projects.sorted_by_activity.non_archived
-  end
-
   def load_events
     project_ids =
       if params[:filter] == "starred"
diff --git a/app/controllers/explore/application_controller.rb b/app/controllers/explore/application_controller.rb
index 4b275033d26..461fc059a3c 100644
--- a/app/controllers/explore/application_controller.rb
+++ b/app/controllers/explore/application_controller.rb
@@ -1,3 +1,5 @@
 class Explore::ApplicationController < ApplicationController
+  skip_before_action :authenticate_user!, :reject_blocked
+
   layout 'explore'
 end
diff --git a/app/controllers/explore/groups_controller.rb b/app/controllers/explore/groups_controller.rb
index 55cda0cff17..9575a87ee41 100644
--- a/app/controllers/explore/groups_controller.rb
+++ b/app/controllers/explore/groups_controller.rb
@@ -1,7 +1,4 @@
 class Explore::GroupsController < Explore::ApplicationController
-  skip_before_action :authenticate_user!,
-                     :reject_blocked, :set_current_user_for_observers
-
   def index
     @groups = GroupsFinder.new.execute(current_user)
     @groups = @groups.search(params[:search]) if params[:search].present?
diff --git a/app/controllers/explore/projects_controller.rb b/app/controllers/explore/projects_controller.rb
index 6c733c1ae4d..a5aeaed66c5 100644
--- a/app/controllers/explore/projects_controller.rb
+++ b/app/controllers/explore/projects_controller.rb
@@ -1,7 +1,4 @@
 class Explore::ProjectsController < Explore::ApplicationController
-  skip_before_action :authenticate_user!,
-                     :reject_blocked
-
   def index
     @projects = ProjectsFinder.new.execute(current_user)
     @tags = @projects.tags_on(:tags)
diff --git a/app/controllers/explore/snippets_controller.rb b/app/controllers/explore/snippets_controller.rb
new file mode 100644
index 00000000000..b70ac51d06e
--- /dev/null
+++ b/app/controllers/explore/snippets_controller.rb
@@ -0,0 +1,6 @@
+class Explore::SnippetsController < Explore::ApplicationController
+  def index
+    @snippets = SnippetsFinder.new.execute(current_user, filter: :all)
+    @snippets = @snippets.page(params[:page]).per(PER_PAGE)
+  end
+end
diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb
index 279c6ef0f4d..85bf44ee9a5 100644
--- a/app/controllers/groups_controller.rb
+++ b/app/controllers/groups_controller.rb
@@ -14,6 +14,10 @@ class GroupsController < Groups::ApplicationController
 
   layout :determine_layout
 
+  def index
+    redirect_to (current_user ? dashboard_groups_path : explore_groups_path)
+  end
+
   def new
     @group = Group.new
   end
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index dafc11d0707..540bfa9ac07 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -10,6 +10,10 @@ class ProjectsController < ApplicationController
 
   layout :determine_layout
 
+  def index
+    redirect_to (current_user ? root_path : explore_root_path)
+  end
+
   def new
     @project = Project.new
   end
diff --git a/app/controllers/root_controller.rb b/app/controllers/root_controller.rb
index fdfe00dc135..a3aa86de5b4 100644
--- a/app/controllers/root_controller.rb
+++ b/app/controllers/root_controller.rb
@@ -6,10 +6,10 @@
 #
 # For users who haven't customized the setting, we simply delegate to
 # `DashboardController#show`, which is the default.
-class RootController < DashboardController
+class RootController < Dashboard::ProjectsController
   before_action :redirect_to_custom_dashboard, only: [:show]
 
-  def show
+  def index
     super
   end
 
@@ -20,6 +20,7 @@ class RootController < DashboardController
 
     case current_user.dashboard
     when 'stars'
+      flash.keep
       redirect_to starred_dashboard_projects_path
     else
       return
diff --git a/app/controllers/snippets_controller.rb b/app/controllers/snippets_controller.rb
index 8e7e45c781f..f5938da936f 100644
--- a/app/controllers/snippets_controller.rb
+++ b/app/controllers/snippets_controller.rb
@@ -24,13 +24,9 @@ class SnippetsController < ApplicationController
         scope: params[:scope] }).
       page(params[:page]).per(PER_PAGE)
 
-      if @user == current_user
-        render 'current_user_index'
-      else
-        render 'user_index'
-      end
+      render 'index'
     else
-      @snippets = SnippetsFinder.new.execute(current_user, filter: :all).page(params[:page]).per(PER_PAGE)
+      redirect_to (current_user ? dashboard_snippets_path : explore_snippets_path)
     end
   end
 
diff --git a/app/views/dashboard/_groups_head.html.haml b/app/views/dashboard/_groups_head.html.haml
index dcd6c97d44d..64bd356f546 100644
--- a/app/views/dashboard/_groups_head.html.haml
+++ b/app/views/dashboard/_groups_head.html.haml
@@ -1,7 +1,7 @@
 %ul.center-top-menu
-  = nav_link(page: [dashboard_groups_path]) do
+  = nav_link(page: dashboard_groups_path) do
     = link_to dashboard_groups_path, title: 'Your groups', data: {placement: 'right'} do
       Your Groups
-  = nav_link(page: [explore_groups_path]) do
+  = nav_link(page: explore_groups_path) do
     = link_to explore_groups_path, title: 'Explore groups', data: {placement: 'bottom'} do
       Explore Groups
diff --git a/app/views/dashboard/_projects_head.html.haml b/app/views/dashboard/_projects_head.html.haml
index 13a5eae3cdc..ed480b8caf8 100644
--- a/app/views/dashboard/_projects_head.html.haml
+++ b/app/views/dashboard/_projects_head.html.haml
@@ -1,6 +1,6 @@
 %ul.center-top-menu
-  = nav_link(path: ['dashboard#show', 'root#show']) do
-    = link_to dashboard_path, title: 'Home', class: 'shortcuts-activity', data: {placement: 'right'} do
+  = nav_link(path: ['projects#index', 'root#index']) do
+    = link_to dashboard_projects_path, title: 'Home', class: 'shortcuts-activity', data: {placement: 'right'} do
       Your Projects
   = nav_link(page: starred_dashboard_projects_path) do
     = link_to starred_dashboard_projects_path, title: 'Starred Projects', data: {placement: 'right'} do
diff --git a/app/views/dashboard/_snippets_head.html.haml b/app/views/dashboard/_snippets_head.html.haml
new file mode 100644
index 00000000000..0ae62d6f1b6
--- /dev/null
+++ b/app/views/dashboard/_snippets_head.html.haml
@@ -0,0 +1,7 @@
+%ul.center-top-menu
+  = nav_link(page: dashboard_snippets_path, html_options: {class: 'home'}) do
+    = link_to dashboard_snippets_path, title: 'Your snippets', data: {placement: 'right'} do
+      Your Snippets
+  = nav_link(page: explore_snippets_path) do
+    = link_to explore_snippets_path, title: 'Explore snippets', data: {placement: 'right'} do
+      Explore Snippets
diff --git a/app/views/dashboard/activity.html.haml b/app/views/dashboard/activity.html.haml
index 3e24338af64..aa57df14c23 100644
--- a/app/views/dashboard/activity.html.haml
+++ b/app/views/dashboard/activity.html.haml
@@ -1,8 +1,10 @@
 = content_for :meta_tags do
   - if current_user
-    = auto_discovery_link_tag(:atom, dashboard_url(format: :atom, private_token: current_user.private_token), title: "All activity")
+    = auto_discovery_link_tag(:atom, dashboard_projects_url(format: :atom, private_token: current_user.private_token), title: "All activity")
 
+- page_title    "Activity"
 - header_title  "Activity", activity_dashboard_path
+
 = render 'dashboard/activity_head'
 
 %section.activities
diff --git a/app/views/dashboard/_projects.html.haml b/app/views/dashboard/projects/_projects.html.haml
similarity index 100%
rename from app/views/dashboard/_projects.html.haml
rename to app/views/dashboard/projects/_projects.html.haml
diff --git a/app/views/dashboard/show.atom.builder b/app/views/dashboard/projects/index.atom.builder
similarity index 52%
rename from app/views/dashboard/show.atom.builder
rename to app/views/dashboard/projects/index.atom.builder
index e9a612231d5..d2c51486841 100644
--- a/app/views/dashboard/show.atom.builder
+++ b/app/views/dashboard/projects/index.atom.builder
@@ -1,9 +1,9 @@
 xml.instruct!
 xml.feed "xmlns" => "http://www.w3.org/2005/Atom", "xmlns:media" => "http://search.yahoo.com/mrss/" do
   xml.title   "Activity"
-  xml.link    href: dashboard_url(format: :atom, private_token: current_user.try(:private_token)), rel: "self", type: "application/atom+xml"
-  xml.link    href: dashboard_url, rel: "alternate", type: "text/html"
-  xml.id      dashboard_url
+  xml.link    href: dashboard_projects_url(format: :atom, private_token: current_user.try(:private_token)), rel: "self", type: "application/atom+xml"
+  xml.link    href: dashboard_projects_url, rel: "alternate", type: "text/html"
+  xml.id      dashboard_projects_url
   xml.updated @events.maximum(:updated_at).strftime("%Y-%m-%dT%H:%M:%SZ") if @events.any?
 
   @events.each do |event|
diff --git a/app/views/dashboard/show.html.haml b/app/views/dashboard/projects/index.html.haml
similarity index 53%
rename from app/views/dashboard/show.html.haml
rename to app/views/dashboard/projects/index.html.haml
index 1d5324e0d72..7a16b811f6b 100644
--- a/app/views/dashboard/show.html.haml
+++ b/app/views/dashboard/projects/index.html.haml
@@ -1,8 +1,10 @@
 = content_for :meta_tags do
   - if current_user
-    = auto_discovery_link_tag(:atom, dashboard_url(format: :atom, private_token: current_user.private_token), title: "All activity")
+    = auto_discovery_link_tag(:atom, dashboard_projects_url(format: :atom, private_token: current_user.private_token), title: "All activity")
+
+- page_title    "Projects"
+- header_title  "Projects", root_path
 
-- header_title "Projects", (current_user ? root_path : explore_root_path)
 = render 'dashboard/projects_head'
 
 - if @last_push
diff --git a/app/views/dashboard/projects/starred.html.haml b/app/views/dashboard/projects/starred.html.haml
index 2fd7a1cf16c..339362701d4 100644
--- a/app/views/dashboard/projects/starred.html.haml
+++ b/app/views/dashboard/projects/starred.html.haml
@@ -1,9 +1,10 @@
 - page_title "Starred Projects"
-- header_title "Projects", (current_user ? root_path : explore_root_path)
+- header_title "Projects", projects_path
+
 = render 'dashboard/projects_head'
 
 - if @projects.any?
-  = render 'dashboard/projects'
+  = render 'projects'
 - else
   %h3 You don't have starred projects yet
   %p.slead Visit project page and press on star icon and it will appear on this page.
diff --git a/app/views/dashboard/snippets/index.html.haml b/app/views/dashboard/snippets/index.html.haml
new file mode 100644
index 00000000000..d3908062f43
--- /dev/null
+++ b/app/views/dashboard/snippets/index.html.haml
@@ -0,0 +1,38 @@
+- page_title    "Snippets"
+- header_title  "Snippets", dashboard_snippets_path
+
+= render 'dashboard/snippets_head'
+
+.gray-content-block
+  .pull-right
+    = link_to new_snippet_path, class: "btn btn-new", title: "New Snippet" do
+      Add new snippet
+
+  .oneline
+    Share code pastes with others out of git repository
+
+%ul.nav.nav-tabs.prepend-top-20
+  = nav_tab :scope, nil do
+    = link_to dashboard_snippets_path do
+      All
+      %span.badge
+        = current_user.snippets.count
+  = nav_tab :scope, 'are_private' do
+    = link_to dashboard_snippets_path(scope: 'are_private') do
+      Private
+      %span.badge
+        = current_user.snippets.are_private.count
+  = nav_tab :scope, 'are_internal' do
+    = link_to dashboard_snippets_path(scope: 'are_internal') do
+      Internal
+      %span.badge
+        = current_user.snippets.are_internal.count
+  = nav_tab :scope, 'are_public' do
+    = link_to dashboard_snippets_path(scope: 'are_public') do
+      Public
+      %span.badge
+        = current_user.snippets.are_public.count
+
+.my-snippets
+  = render 'snippets/snippets'
+
diff --git a/app/views/explore/_head.html.haml b/app/views/explore/_head.html.haml
new file mode 100644
index 00000000000..d8a57560788
--- /dev/null
+++ b/app/views/explore/_head.html.haml
@@ -0,0 +1,6 @@
+.explore-title
+  %h3
+    Explore GitLab
+  %p.lead
+    Discover projects, groups and snippets. Share your projects with others
+  %br
diff --git a/app/views/explore/groups/index.html.haml b/app/views/explore/groups/index.html.haml
index e8a6752de8c..83d4d321c83 100644
--- a/app/views/explore/groups/index.html.haml
+++ b/app/views/explore/groups/index.html.haml
@@ -1,7 +1,11 @@
-- page_title "Groups"
-- header_title "Groups", (current_user ? dashboard_groups_path : explore_groups_path)
+- page_title    "Groups"
+- header_title  "Groups", dashboard_groups_path
+
 - if current_user
   = render 'dashboard/groups_head'
+- else
+  = render 'explore/head'
+
 .gray-content-block.clearfix
   .pull-left
     = form_tag explore_groups_path, method: :get, class: 'form-inline form-tiny' do |f|
diff --git a/app/views/explore/projects/index.html.haml b/app/views/explore/projects/index.html.haml
index 9df5b3830a8..67e38ca3127 100644
--- a/app/views/explore/projects/index.html.haml
+++ b/app/views/explore/projects/index.html.haml
@@ -1,6 +1,11 @@
-- page_title "Projects"
+- page_title    "Projects"
+- header_title  "Projects", root_path
+
 - if current_user
   = render 'dashboard/projects_head'
+- else
+  = render 'explore/head'
+
 .gray-content-block.clearfix
   = render 'filter'
 = render 'projects', projects: @projects
diff --git a/app/views/explore/projects/starred.html.haml b/app/views/explore/projects/starred.html.haml
index a9df32f3d7d..596cb0a96cd 100644
--- a/app/views/explore/projects/starred.html.haml
+++ b/app/views/explore/projects/starred.html.haml
@@ -1,6 +1,10 @@
-- page_title "Starred Projects"
+- page_title    "Projects"
+- header_title  "Projects", root_path
+
 - if current_user
   = render 'dashboard/projects_head'
+- else
+  = render 'explore/head'
 
 .explore-trending-block
   .gray-content-block
diff --git a/app/views/explore/projects/trending.html.haml b/app/views/explore/projects/trending.html.haml
index c1ef06f6cdb..5ea6d81c5b9 100644
--- a/app/views/explore/projects/trending.html.haml
+++ b/app/views/explore/projects/trending.html.haml
@@ -1,13 +1,11 @@
-- page_title "Trending Projects"
+- page_title    "Projects"
+- header_title  "Projects", root_path
+
 - if current_user
   = render 'dashboard/projects_head'
 - else
-  .explore-title
-    %h3
-      Explore GitLab
-    %p.lead
-      Discover projects and groups. Share your projects with others
-    %br
+  = render 'explore/head'
+
 .explore-trending-block
   .gray-content-block
     .pull-right
diff --git a/app/views/explore/snippets/index.html.haml b/app/views/explore/snippets/index.html.haml
new file mode 100644
index 00000000000..7e4fa7d4873
--- /dev/null
+++ b/app/views/explore/snippets/index.html.haml
@@ -0,0 +1,18 @@
+- page_title    "Snippets"
+- header_title  "Snippets", snippets_path
+
+- if current_user
+  = render 'dashboard/snippets_head'
+- else
+  = render 'explore/head'
+
+.gray-content-block
+  - if current_user
+    .pull-right
+      = link_to new_snippet_path, class: "btn btn-new", title: "New Snippet" do
+        Add new snippet
+
+  .oneline
+    Public snippets created by you and other users are listed here
+
+= render 'snippets/snippets'
diff --git a/app/views/layouts/_page.html.haml b/app/views/layouts/_page.html.haml
index c1746676ae2..68e5da571e6 100644
--- a/app/views/layouts/_page.html.haml
+++ b/app/views/layouts/_page.html.haml
@@ -6,10 +6,14 @@
         = brand_header_logo
         .gitlab-text-container
           %h3 GitLab
+          
     - if defined?(sidebar) && sidebar
       = render "layouts/nav/#{sidebar}"
     - elsif current_user
       = render 'layouts/nav/dashboard'
+    - else
+      = render 'layouts/nav/explore'
+
     .collapse-nav
       = render partial: 'layouts/collapse_button'
     - if current_user
diff --git a/app/views/layouts/explore.html.haml b/app/views/layouts/explore.html.haml
index 9098554e6f0..df65792be73 100644
--- a/app/views/layouts/explore.html.haml
+++ b/app/views/layouts/explore.html.haml
@@ -1,9 +1,5 @@
 - page_title    "Explore"
-- if current_user
-  - unless @header_title
-    - header_title "Projects", (current_user ? root_path : explore_root_path)
-- else
+- unless current_user
   - header_title  "Explore GitLab", explore_root_path
-- sidebar       "dashboard"
 
 = render template: "layouts/application"
diff --git a/app/views/layouts/nav/_dashboard.html.haml b/app/views/layouts/nav/_dashboard.html.haml
index 0cf1c3d5d27..68f816b86af 100644
--- a/app/views/layouts/nav/_dashboard.html.haml
+++ b/app/views/layouts/nav/_dashboard.html.haml
@@ -1,31 +1,30 @@
 %ul.nav.nav-sidebar
-  = nav_link(path: ['dashboard#show', 'root#show', 'projects#trending', 'projects#starred', 'projects#index'], html_options: {class: 'home'}) do
-    = link_to (current_user ? root_path : explore_root_path), title: 'Home', class: 'shortcuts-activity', data: {placement: 'right'} do
+  = nav_link(path: ['root#index', 'projects#trending', 'projects#starred', 'projects#index'], html_options: {class: 'home'}) do
+    = link_to root_path, title: 'Projects', data: {placement: 'right'} do
       = icon('home fw')
       %span
         Projects
   = nav_link(path: 'dashboard#activity') do
-    = link_to activity_dashboard_path, title: 'Activity', data: {placement: 'right'} do
+    = link_to activity_dashboard_path, class: 'shortcuts-activity', title: 'Activity', data: {placement: 'right'} do
       = icon('dashboard fw')
       %span
         Activity
   = nav_link(controller: :groups) do
-    = link_to (current_user ? dashboard_groups_path : explore_groups_path), title: 'Groups', data: {placement: 'right'} do
+    = link_to dashboard_groups_path, title: 'Groups', data: {placement: 'right'} do
       = icon('group fw')
       %span
         Groups
-  - if current_user
-    = nav_link(controller: :milestones) do
-      = link_to dashboard_milestones_path, title: 'Milestones', data: {placement: 'right'} do
-        = icon('clock-o fw')
-        %span
-          Milestones
-    = nav_link(path: 'dashboard#issues') do
-      = link_to assigned_issues_dashboard_path, title: 'Issues', class: 'shortcuts-issues', data: {placement: 'right'} do
-        = icon('exclamation-circle fw')
-        %span
-          Issues
-          %span.count= current_user.assigned_issues.opened.count
+  = nav_link(controller: :milestones) do
+    = link_to dashboard_milestones_path, title: 'Milestones', data: {placement: 'right'} do
+      = icon('clock-o fw')
+      %span
+        Milestones
+  = nav_link(path: 'dashboard#issues') do
+    = link_to assigned_issues_dashboard_path, title: 'Issues', class: 'shortcuts-issues', data: {placement: 'right'} do
+      = icon('exclamation-circle fw')
+      %span
+        Issues
+        %span.count= current_user.assigned_issues.opened.count
     = nav_link(path: 'dashboard#merge_requests') do
       = link_to assigned_mrs_dashboard_path, title: 'Merge Requests', class: 'shortcuts-merge_requests', data: {placement: 'right'} do
         = icon('tasks fw')
@@ -33,16 +32,15 @@
           Merge Requests
           %span.count= current_user.assigned_merge_requests.opened.count
   = nav_link(controller: :snippets) do
-    = link_to (current_user ? user_snippets_path(current_user) : snippets_path), title: 'Your snippets', data: {placement: 'right'} do
+    = link_to dashboard_snippets_path, title: 'Your snippets', data: {placement: 'right'} do
       = icon('clipboard fw')
       %span
         Snippets
-  - if current_user
-    = nav_link(controller: :profile) do
-      = link_to profile_path, title: 'Profile settings', data: {toggle: 'tooltip', placement: 'bottom'} do
-        = icon('user fw')
-        %span
-          Profile Settings
+  = nav_link(controller: :profile) do
+    = link_to profile_path, title: 'Profile settings', data: {placement: 'bottom'} do
+      = icon('user fw')
+      %span
+        Profile Settings
   = nav_link(controller: :help) do
     = link_to help_path, title: 'Help', data: {placement: 'right'} do
       = icon('question-circle fw')
diff --git a/app/views/layouts/nav/_explore.html.haml b/app/views/layouts/nav/_explore.html.haml
new file mode 100644
index 00000000000..21e565972a7
--- /dev/null
+++ b/app/views/layouts/nav/_explore.html.haml
@@ -0,0 +1,21 @@
+%ul.nav.nav-sidebar
+  = nav_link(path: ['dashboard#show', 'root#show', 'projects#trending', 'projects#starred', 'projects#index'], html_options: {class: 'home'}) do
+    = link_to explore_root_path, title: 'Projects', data: {placement: 'right'} do
+      = icon('home fw')
+      %span
+        Projects
+  = nav_link(controller: :groups) do
+    = link_to explore_groups_path, title: 'Groups', data: {placement: 'right'} do
+      = icon('group fw')
+      %span
+        Groups
+  = nav_link(controller: :snippets) do
+    = link_to explore_snippets_path, title: 'Snippets', data: {placement: 'right'} do
+      = icon('clipboard fw')
+      %span
+        Snippets
+  = nav_link(controller: :help) do
+    = link_to help_path, title: 'Help', data: {placement: 'right'} do
+      = icon('question-circle fw')
+      %span
+        Help
diff --git a/app/views/layouts/snippets.html.haml b/app/views/layouts/snippets.html.haml
index d9c90d4fcef..02ca3ee7a28 100644
--- a/app/views/layouts/snippets.html.haml
+++ b/app/views/layouts/snippets.html.haml
@@ -1,8 +1,3 @@
-- page_title    'Snippets'
-- if current_user
-  - header_title  "Snippets", user_snippets_path(current_user)
-- else
-  - header_title  'Snippets', snippets_path
-- sidebar       "dashboard"
+- header_title  "Snippets", snippets_path
 
 = render template: "layouts/application"
diff --git a/app/views/projects/activity.html.haml b/app/views/projects/activity.html.haml
index 65674913bb0..5f6e5f3b644 100644
--- a/app/views/projects/activity.html.haml
+++ b/app/views/projects/activity.html.haml
@@ -1 +1,2 @@
+- page_title "Activity"
 = render 'projects/activity'
diff --git a/app/views/snippets/_head.html.haml b/app/views/snippets/_head.html.haml
deleted file mode 100644
index 0adf6b91f2c..00000000000
--- a/app/views/snippets/_head.html.haml
+++ /dev/null
@@ -1,7 +0,0 @@
-%ul.center-top-menu
-  = nav_link(page: user_snippets_path(current_user), html_options: {class: 'home'}) do
-    = link_to user_snippets_path(current_user), title: 'Your snippets', data: {placement: 'right'} do
-      Your Snippets
-  = nav_link(page: snippets_path) do
-    = link_to snippets_path, title: 'Explore snippets', data: {placement: 'right'} do
-      Explore Snippets
diff --git a/app/views/snippets/current_user_index.html.haml b/app/views/snippets/current_user_index.html.haml
deleted file mode 100644
index d704407c4dd..00000000000
--- a/app/views/snippets/current_user_index.html.haml
+++ /dev/null
@@ -1,36 +0,0 @@
-- page_title "Your Snippets"
-= render 'head'
-
-.gray-content-block
-  .pull-right
-    = link_to new_snippet_path, class: "btn btn-new", title: "New Snippet" do
-      Add new snippet
-
-  .oneline
-    Share code pastes with others out of git repository
-
-%ul.nav.nav-tabs.prepend-top-20
-  = 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
-
-.my-snippets
-  = render 'snippets'
-
diff --git a/app/views/snippets/index.html.haml b/app/views/snippets/index.html.haml
index 3b62dd2a6e1..7e4918a6085 100644
--- a/app/views/snippets/index.html.haml
+++ b/app/views/snippets/index.html.haml
@@ -1,15 +1,13 @@
-- page_title "Public Snippets"
-- if current_user
-  = render 'head'
-
-.gray-content-block
-  - if current_user
-    .pull-right
-      = link_to new_snippet_path, class: "btn btn-new", title: "New Snippet" do
-        Add new snippet
-
-  .oneline
-    Public snippets created by you and other users are listed here
+- page_title "By #{@user.name}", "Snippets"
+
+%ol.breadcrumb
+  %li
+    = link_to snippets_path do
+      Snippets
+  %li
+    = @user.name
+  .pull-right.hidden-xs
+    = link_to user_path(@user) do
+      #{@user.name} profile page
 
 = render 'snippets'
-
diff --git a/app/views/snippets/show.html.haml b/app/views/snippets/show.html.haml
index aed00f9caeb..97374e073dc 100644
--- a/app/views/snippets/show.html.haml
+++ b/app/views/snippets/show.html.haml
@@ -20,10 +20,10 @@
 
   .back-link
     - if @snippet.author == current_user
-      = link_to user_snippets_path(current_user) do
+      = link_to dashboard_snippets_path do
         &larr; your snippets
     - else
-      = link_to snippets_path do
+      = link_to explore_snippets_path do
         &larr; explore snippets
 
 .file-holder
diff --git a/app/views/snippets/user_index.html.haml b/app/views/snippets/user_index.html.haml
deleted file mode 100644
index 7af5352da34..00000000000
--- a/app/views/snippets/user_index.html.haml
+++ /dev/null
@@ -1,13 +0,0 @@
-- page_title "Snippets", @user.name
-
-%ol.breadcrumb
-  %li
-    = link_to snippets_path do
-      Snippets
-  %li
-    = @user.name
-  .pull-right.hidden-xs
-    = link_to user_path(@user) do
-      #{@user.name} profile page
-
-= render 'snippets'
diff --git a/config/routes.rb b/config/routes.rb
index 25c286b3083..720aee2d2ac 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -134,6 +134,7 @@ Gitlab::Application.routes.draw do
     end
 
     resources :groups, only: [:index]
+    resources :snippets, only: [:index]
     root to: 'projects#trending'
   end
 
@@ -252,24 +253,25 @@ Gitlab::Application.routes.draw do
   #
   # Dashboard Area
   #
-  resource :dashboard, controller: 'dashboard', only: [:show] do
-    member do
-      get :issues
-      get :merge_requests
-      get :activity
-    end
+  resource :dashboard, controller: 'dashboard', only: [] do
+    get :issues
+    get :merge_requests
+    get :activity
 
     scope module: :dashboard do
       resources :milestones, only: [:index, :show]
 
       resources :groups, only: [:index]
+      resources :snippets, only: [:index]
 
-      resources :projects, only: [] do
+      resources :projects, only: [:index] do
         collection do
           get :starred
         end
       end
     end
+
+    root to: "dashboard/projects#index"
   end
 
   #
@@ -293,7 +295,7 @@ Gitlab::Application.routes.draw do
     end
   end
 
-  resources :projects, constraints: { id: /[^\/]+/ }, only: [:new, :create]
+  resources :projects, constraints: { id: /[^\/]+/ }, only: [:index, :new, :create]
 
   devise_for :users, controllers: { omniauth_callbacks: :omniauth_callbacks, registrations: :registrations , passwords: :passwords, sessions: :sessions, confirmations: :confirmations }
 
@@ -301,7 +303,7 @@ Gitlab::Application.routes.draw do
     get '/users/auth/:provider/omniauth_error' => 'omniauth_callbacks#omniauth_error', as: :omniauth_error
   end
 
-  root to: "root#show"
+  root to: "root#index"
 
   #
   # Project Area
diff --git a/features/steps/snippets/user.rb b/features/steps/snippets/user.rb
index 007fcb2893f..dea3256229f 100644
--- a/features/steps/snippets/user.rb
+++ b/features/steps/snippets/user.rb
@@ -4,7 +4,7 @@ class Spinach::Features::SnippetsUser < Spinach::FeatureSteps
   include SharedSnippet
 
   step 'I visit my snippets page' do
-    visit user_snippets_path(current_user)
+    visit dashboard_snippets_path
   end
 
   step 'I should see "Personal snippet one" in snippets' do
-- 
GitLab