From 33aea41708b94f480b6eaad760e26abe17a37dfa Mon Sep 17 00:00:00 2001
From: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Date: Thu, 28 Nov 2013 11:38:20 +0200
Subject: [PATCH] Drop rjs from Infinite scrolling

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
---
 app/assets/javascripts/commits.js.coffee       | 14 ++++++++------
 app/assets/javascripts/pager.js.coffee         |  5 +++--
 app/controllers/application_controller.rb      | 14 ++++++++++++++
 app/controllers/dashboard_controller.rb        |  2 +-
 app/controllers/groups_controller.rb           |  2 +-
 app/controllers/projects/commits_controller.rb |  2 +-
 app/controllers/projects_controller.rb         |  2 +-
 app/views/dashboard/show.js.haml               |  2 --
 app/views/events/_events.html.haml             |  1 +
 app/views/groups/show.js.haml                  |  2 --
 app/views/projects/commits/show.js.haml        |  3 ---
 app/views/projects/show.js.haml                |  2 --
 12 files changed, 30 insertions(+), 21 deletions(-)
 delete mode 100644 app/views/dashboard/show.js.haml
 create mode 100644 app/views/events/_events.html.haml
 delete mode 100644 app/views/groups/show.js.haml
 delete mode 100644 app/views/projects/commits/show.js.haml
 delete mode 100644 app/views/projects/show.js.haml

diff --git a/app/assets/javascripts/commits.js.coffee b/app/assets/javascripts/commits.js.coffee
index de4c06a2728..9c004c997ed 100644
--- a/app/assets/javascripts/commits.js.coffee
+++ b/app/assets/javascripts/commits.js.coffee
@@ -4,13 +4,13 @@ class CommitsList
     limit: 0
     offset: 0
   @disable = false
-  
+
   @showProgress: ->
     $('.loading').show()
-    
+
   @hideProgress: ->
     $('.loading').hide()
-  
+
   @init: (ref, limit) ->
     $(".day-commits-table li.commit").live 'click', (event) ->
       if event.target.nodeName != "A"
@@ -21,7 +21,7 @@ class CommitsList
     @data.ref = ref
     @data.limit = limit
     @data.offset = limit
-    
+
     this.initLoadMore()
     this.showProgress()
 
@@ -32,7 +32,9 @@ class CommitsList
       url: location.href
       data: @data
       complete: this.hideProgress
-      dataType: "script"
+      success: (data) ->
+        CommitsList.append(data.count, data.html)
+      dataType: "json"
 
   @append: (count, html) ->
     $("#commits-list").append(html)
@@ -40,7 +42,7 @@ class CommitsList
       @data.offset += count
     else
       @disable = true
-  
+
   @initLoadMore: ->
     $(document).unbind('scroll')
     $(document).endlessScroll
diff --git a/app/assets/javascripts/pager.js.coffee b/app/assets/javascripts/pager.js.coffee
index 5bd11d273a7..1f763e8b956 100644
--- a/app/assets/javascripts/pager.js.coffee
+++ b/app/assets/javascripts/pager.js.coffee
@@ -19,8 +19,9 @@
       data: "limit=" + @limit + "&offset=" + @offset
       complete: ->
         $(".loading").hide()
-
-      dataType: "script"
+      success: (data) ->
+        Pager.append(data.count, data.html)
+      dataType: "json"
 
   append: (count, html) ->
     $(".content_list").append html
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 68ea636ccfe..94ce8e0616c 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -174,4 +174,18 @@ class ApplicationController < ActionController::Base
     filters = cookies['event_filter'].split(',') if cookies['event_filter'].present?
     @event_filter ||= EventFilter.new(filters)
   end
+
+  # JSON for infinite scroll via Pager object
+  def pager_json(partial, count)
+    html = render_to_string(
+      partial,
+      layout: false,
+      formats: [:html]
+    )
+
+    render json: {
+      html: html,
+      count: count
+    }
+  end
 end
diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb
index ac319384434..17715020f87 100644
--- a/app/controllers/dashboard_controller.rb
+++ b/app/controllers/dashboard_controller.rb
@@ -22,7 +22,7 @@ class DashboardController < ApplicationController
 
     respond_to do |format|
       format.html
-      format.js
+      format.json { pager_json("events/_events", @events.count) }
       format.atom { render layout: false }
     end
   end
diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb
index bb46af14d52..fd0aa03476c 100644
--- a/app/controllers/groups_controller.rb
+++ b/app/controllers/groups_controller.rb
@@ -38,7 +38,7 @@ class GroupsController < ApplicationController
 
     respond_to do |format|
       format.html
-      format.js
+      format.json { pager_json("events/_events", @events.count) }
       format.atom { render layout: false }
     end
   end
diff --git a/app/controllers/projects/commits_controller.rb b/app/controllers/projects/commits_controller.rb
index bdffc940ea5..12856191c26 100644
--- a/app/controllers/projects/commits_controller.rb
+++ b/app/controllers/projects/commits_controller.rb
@@ -16,7 +16,7 @@ class Projects::CommitsController < Projects::ApplicationController
 
     respond_to do |format|
       format.html # index.html.erb
-      format.js
+      format.json { pager_json("projects/commits/_commits", @commits.size) }
       format.atom { render layout: false }
     end
   end
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 60003187a9d..1835671fe98 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -73,7 +73,7 @@ class ProjectsController < ApplicationController
           render :show, layout: user_layout
         end
       end
-      format.js
+      format.json { pager_json("events/_events", @events.count) }
     end
   end
 
diff --git a/app/views/dashboard/show.js.haml b/app/views/dashboard/show.js.haml
deleted file mode 100644
index 7e5a148e5ef..00000000000
--- a/app/views/dashboard/show.js.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-:plain 
-  Pager.append(#{@events.count}, "#{escape_javascript(render(@events))}");
diff --git a/app/views/events/_events.html.haml b/app/views/events/_events.html.haml
new file mode 100644
index 00000000000..3d62d478869
--- /dev/null
+++ b/app/views/events/_events.html.haml
@@ -0,0 +1 @@
+= render @events
diff --git a/app/views/groups/show.js.haml b/app/views/groups/show.js.haml
deleted file mode 100644
index 7e5a148e5ef..00000000000
--- a/app/views/groups/show.js.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-:plain 
-  Pager.append(#{@events.count}, "#{escape_javascript(render(@events))}");
diff --git a/app/views/projects/commits/show.js.haml b/app/views/projects/commits/show.js.haml
deleted file mode 100644
index 045c9dd83d7..00000000000
--- a/app/views/projects/commits/show.js.haml
+++ /dev/null
@@ -1,3 +0,0 @@
-:plain
-  CommitsList.append(#{@commits.count}, "#{escape_javascript(render('projects/commits/commits'))}");
-
diff --git a/app/views/projects/show.js.haml b/app/views/projects/show.js.haml
deleted file mode 100644
index 511f278929e..00000000000
--- a/app/views/projects/show.js.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-:plain
-  Pager.append(#{@events.count}, "#{escape_javascript(render(@events))}");
-- 
GitLab