summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiago Botelho <tiagonbotelho@hotmail.com>2016-12-19 10:26:12 +0000
committerTiago Botelho <tiagonbotelho@hotmail.com>2016-12-21 23:53:24 +0000
commit9b66aa6e04ab66af7ce11e26076ebf431ca938c5 (patch)
tree82f5f8753c4803c55aa2b19b4e085e790b701e43
parentc7ee5742337c799e7a2bda0d74756b7e51770fca (diff)
downloadgitlab-ce-9b66aa6e04ab66af7ce11e26076ebf431ca938c5.tar.gz
Prevent empty pagination when list is not empty
-rw-r--r--app/controllers/concerns/kaminari_pagination.rb8
-rw-r--r--app/controllers/dashboard/todos_controller.rb4
-rw-r--r--app/controllers/projects/issues_controller.rb3
-rw-r--r--app/controllers/projects/merge_requests_controller.rb3
-rw-r--r--app/controllers/projects/snippets_controller.rb3
-rw-r--r--changelogs/unreleased/19988-prevent-empty-pagination-when-list-not-empty.yml4
6 files changed, 21 insertions, 4 deletions
diff --git a/app/controllers/concerns/kaminari_pagination.rb b/app/controllers/concerns/kaminari_pagination.rb
new file mode 100644
index 00000000000..b69340cac0e
--- /dev/null
+++ b/app/controllers/concerns/kaminari_pagination.rb
@@ -0,0 +1,8 @@
+module KaminariPagination
+ extend ActiveSupport::Concern
+
+ def bounded_pagination(items, page_number)
+ items = items.page(page_number)
+ items.to_a.empty? ? items.page(items.total_pages) : items
+ end
+end
diff --git a/app/controllers/dashboard/todos_controller.rb b/app/controllers/dashboard/todos_controller.rb
index d425d0f9014..b2333a02392 100644
--- a/app/controllers/dashboard/todos_controller.rb
+++ b/app/controllers/dashboard/todos_controller.rb
@@ -1,9 +1,11 @@
class Dashboard::TodosController < Dashboard::ApplicationController
+ include KaminariPagination
+
before_action :find_todos, only: [:index, :destroy_all]
def index
@sort = params[:sort]
- @todos = @todos.page(params[:page])
+ @todos = bounded_pagination(@todos, params[:page])
end
def destroy
diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb
index 4f66e01e0f7..ec09a5297fc 100644
--- a/app/controllers/projects/issues_controller.rb
+++ b/app/controllers/projects/issues_controller.rb
@@ -5,6 +5,7 @@ class Projects::IssuesController < Projects::ApplicationController
include ToggleAwardEmoji
include IssuableCollections
include SpammableActions
+ include KaminariPagination
before_action :redirect_to_external_issue_tracker, only: [:index, :new]
before_action :module_enabled
@@ -24,7 +25,7 @@ class Projects::IssuesController < Projects::ApplicationController
def index
@issues = issues_collection
- @issues = @issues.page(params[:page])
+ @issues = bounded_pagination(@issues, params[:page])
if params[:label_name].present?
@labels = LabelsFinder.new(current_user, project_id: @project.id, title: params[:label_name]).execute
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index 3abebdfd032..e25eea52723 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -6,6 +6,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
include NotesHelper
include ToggleAwardEmoji
include IssuableCollections
+ include KaminariPagination
before_action :module_enabled
before_action :merge_request, only: [
@@ -37,7 +38,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
def index
@merge_requests = merge_requests_collection
- @merge_requests = @merge_requests.page(params[:page])
+ @merge_requests = bounded_pagination(@merge_requests, params[:page])
if params[:label_name].present?
labels_params = { project_id: @project.id, title: params[:label_name] }
diff --git a/app/controllers/projects/snippets_controller.rb b/app/controllers/projects/snippets_controller.rb
index 0720be2e55d..7083b29b6a3 100644
--- a/app/controllers/projects/snippets_controller.rb
+++ b/app/controllers/projects/snippets_controller.rb
@@ -1,5 +1,6 @@
class Projects::SnippetsController < Projects::ApplicationController
include ToggleAwardEmoji
+ include KaminariPagination
before_action :module_enabled
before_action :snippet, only: [:show, :edit, :destroy, :update, :raw, :toggle_award_emoji]
@@ -25,7 +26,7 @@ class Projects::SnippetsController < Projects::ApplicationController
project: @project,
scope: params[:scope]
)
- @snippets = @snippets.page(params[:page])
+ @snippets = bounded_pagination(@snippets, params[:page])
end
def new
diff --git a/changelogs/unreleased/19988-prevent-empty-pagination-when-list-not-empty.yml b/changelogs/unreleased/19988-prevent-empty-pagination-when-list-not-empty.yml
new file mode 100644
index 00000000000..5570ede4a9a
--- /dev/null
+++ b/changelogs/unreleased/19988-prevent-empty-pagination-when-list-not-empty.yml
@@ -0,0 +1,4 @@
+---
+title: Prevent empty pagination when list is not empty
+merge_request: 8172
+author: