From 57f3409bcc6a4bee6bc29f8cd03f501c117655b0 Mon Sep 17 00:00:00 2001
From: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Date: Tue, 19 Mar 2013 12:35:42 +0200
Subject: [PATCH] move Wall to own resource

---
 app/controllers/projects_controller.rb       | 16 ----------------
 app/controllers/walls_controller.rb          | 20 ++++++++++++++++++++
 app/helpers/application_helper.rb            |  2 +-
 app/views/layouts/project_resource.html.haml |  2 +-
 app/views/projects/wall.html.haml            |  2 --
 app/views/walls/show.html.haml               | 11 +++++++++++
 config/routes.rb                             | 11 ++++++-----
 7 files changed, 39 insertions(+), 25 deletions(-)
 create mode 100644 app/controllers/walls_controller.rb
 delete mode 100644 app/views/projects/wall.html.haml
 create mode 100644 app/views/walls/show.html.haml

diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index b4fb3de31..f2718344a 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -68,22 +68,6 @@ class ProjectsController < ProjectResourceController
     end
   end
 
-  #
-  # Wall
-  #
-
-  def wall
-    return render_404 unless @project.wall_enabled
-
-    @target_type = :wall
-    @target_id = nil
-    @note = @project.notes.new
-
-    respond_to do |format|
-      format.html
-    end
-  end
-
   def destroy
     return access_denied! unless can?(current_user, :remove_project, project)
 
diff --git a/app/controllers/walls_controller.rb b/app/controllers/walls_controller.rb
new file mode 100644
index 000000000..5993a5e24
--- /dev/null
+++ b/app/controllers/walls_controller.rb
@@ -0,0 +1,20 @@
+class WallsController < ProjectResourceController
+  before_filter :module_enabled
+
+  respond_to :js, :html
+
+  def show
+    @note = @project.notes.new
+
+    respond_to do |format|
+      format.html
+    end
+  end
+
+  protected
+
+  def module_enabled
+    return render_404 unless @project.wall_enabled
+  end
+end
+
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index fd8f2c4d3..f03039e4b 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -105,7 +105,7 @@ module ApplicationHelper
         { label: "#{simple_sanitize(@project.name_with_namespace)} - Snippets", url: project_snippets_path(@project) },
         { label: "#{simple_sanitize(@project.name_with_namespace)} - Team",     url: project_team_index_path(@project) },
         { label: "#{simple_sanitize(@project.name_with_namespace)} - Tree",     url: project_tree_path(@project, @ref || @project.repository.root_ref) },
-        { label: "#{simple_sanitize(@project.name_with_namespace)} - Wall",     url: wall_project_path(@project) },
+        { label: "#{simple_sanitize(@project.name_with_namespace)} - Wall",     url: project_wall_path(@project) },
         { label: "#{simple_sanitize(@project.name_with_namespace)} - Wiki",     url: project_wikis_path(@project) },
       ]
     end
diff --git a/app/views/layouts/project_resource.html.haml b/app/views/layouts/project_resource.html.haml
index 7de5cb612..568693356 100644
--- a/app/views/layouts/project_resource.html.haml
+++ b/app/views/layouts/project_resource.html.haml
@@ -41,7 +41,7 @@
 
         - if @project.wall_enabled
           = nav_link(path: 'projects#wall') do
-            = link_to 'Wall', wall_project_path(@project)
+            = link_to 'Wall', project_wall_path(@project)
 
         - if @project.snippets_enabled
           = nav_link(controller: :snippets) do
diff --git a/app/views/projects/wall.html.haml b/app/views/projects/wall.html.haml
deleted file mode 100644
index 82b565def..000000000
--- a/app/views/projects/wall.html.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-%div.wall_page
-  = render "notes/reversed_notes_with_form"
diff --git a/app/views/walls/show.html.haml b/app/views/walls/show.html.haml
new file mode 100644
index 000000000..525cb2da3
--- /dev/null
+++ b/app/views/walls/show.html.haml
@@ -0,0 +1,11 @@
+%div.wall-page
+  %ul.well-list.notes
+  .notes-busy.js-notes-busy
+
+  .js-main-target-form
+  = render "notes/form"
+
+:javascript
+  $(function(){
+    Wall.init(#{@project.id});
+  });
diff --git a/config/routes.rb b/config/routes.rb
index 2e6d31c23..0028baf8d 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -167,11 +167,6 @@ Gitlab::Application.routes.draw do
   # Project Area
   #
   resources :projects, constraints: { id: /(?:[a-zA-Z.0-9_\-]+\/)?[a-zA-Z.0-9_\-]+/ }, except: [:new, :create, :index], path: "/" do
-    member do
-      get "wall"
-      get "files"
-    end
-
     resources :blob,    only: [:show], constraints: {id: /.+/}
     resources :tree,    only: [:show, :edit, :update], constraints: {id: /.+/}
     resources :commit,  only: [:show], constraints: {id: /[[:alnum:]]{6,40}/}
@@ -194,6 +189,12 @@ Gitlab::Application.routes.draw do
       end
     end
 
+    resource :wall, only: [:show] do
+      member do
+        get 'notes'
+      end
+    end
+
     resource :repository do
       member do
         get "branches"
-- 
2.30.9