logo

mastofe

My custom branche(s) on git.pleroma.social/pleroma/mastofe
commit: 4ada50985a73ed5c859cdf5160500b04116ad0e4
parent: a28378646393de998663981e6660eb79e7a6375f
Author: Matt Jankowski <mjankowski@thoughtbot.com>
Date:   Mon, 10 Apr 2017 19:11:41 -0400

Pagination improvements (#1445)

* Replace will_paginate with kaminari

* Use #page instead of #paginate in controllers

* Replace will_paginate.page_gap with pagination.truncate in i18n

* Customize kaminari views to match prior styles

* Set kaminari options to match prior behavior

* Replace will_paginate with paginate in views

Diffstat:

MGemfile2+-
MGemfile.lock15+++++++++++++--
Mapp/assets/stylesheets/accounts.scss12++++++------
Mapp/controllers/accounts_controller.rb4++--
Mapp/controllers/admin/accounts_controller.rb2+-
Mapp/controllers/admin/domain_blocks_controller.rb2+-
Mapp/controllers/admin/pubsubhubbub_controller.rb2+-
Mapp/controllers/admin/reports_controller.rb2+-
Dapp/helpers/accounts_helper.rb12------------
Mapp/views/accounts/followers.html.haml2+-
Mapp/views/accounts/following.html.haml2+-
Mapp/views/accounts/show.html.haml2+-
Mapp/views/admin/accounts/index.html.haml2+-
Mapp/views/admin/domain_blocks/index.html.haml2+-
Mapp/views/admin/pubsubhubbub/index.html.haml2+-
Mapp/views/admin/reports/index.html.haml2+-
Aapp/views/kaminari/_next_page.html.haml9+++++++++
Aapp/views/kaminari/_paginator.html.haml16++++++++++++++++
Aapp/views/kaminari/_prev_page.html.haml9+++++++++
Mapp/views/tags/show.html.haml2+-
Mconfig/i18n-tasks.yml2+-
Aconfig/initializers/kaminari_config.rb7+++++++
Aconfig/initializers/pagination.rb0
Mconfig/locales/de.yml2--
Mconfig/locales/en.yml3+--
Mconfig/locales/eo.yml2--
Mconfig/locales/es.yml2--
Mconfig/locales/fi.yml2--
Mconfig/locales/fr.yml2--
Mconfig/locales/hu.yml2--
Mconfig/locales/no.yml2--
Mconfig/locales/pt.yml2--
Mconfig/locales/ru.yml2--
Mconfig/locales/uk.yml2--
Mconfig/locales/zh-CN.yml2--
Dspec/helpers/accounts_helper_spec.rb5-----
36 files changed, 77 insertions(+), 65 deletions(-)

diff --git a/Gemfile b/Gemfile @@ -32,6 +32,7 @@ gem 'htmlentities' gem 'http' gem 'http_accept_language' gem 'httplog' +gem 'kaminari' gem 'link_header' gem 'nokogiri' gem 'oj' @@ -52,7 +53,6 @@ gem 'simple_form' gem 'statsd-instrument' gem 'twitter-text' gem 'tzinfo-data' -gem 'will_paginate' gem 'react-rails' gem 'browserify-rails' diff --git a/Gemfile.lock b/Gemfile.lock @@ -203,6 +203,18 @@ GEM railties (>= 4.2.0) thor (>= 0.14, < 2.0) json (2.0.3) + kaminari (1.0.1) + activesupport (>= 4.1.0) + kaminari-actionview (= 1.0.1) + kaminari-activerecord (= 1.0.1) + kaminari-core (= 1.0.1) + kaminari-actionview (1.0.1) + actionview + kaminari-core (= 1.0.1) + kaminari-activerecord (1.0.1) + activerecord + kaminari-core (= 1.0.1) + kaminari-core (1.0.1) launchy (2.4.3) addressable (~> 2.3) letter_opener (1.4.1) @@ -433,7 +445,6 @@ GEM websocket-driver (0.6.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.2) - will_paginate (3.1.5) PLATFORMS ruby @@ -472,6 +483,7 @@ DEPENDENCIES httplog i18n-tasks (~> 0.9.6) jquery-rails + kaminari letter_opener letter_opener_web link_header @@ -513,7 +525,6 @@ DEPENDENCIES tzinfo-data uglifier (>= 1.3.0) webmock - will_paginate RUBY VERSION ruby 2.4.1p111 diff --git a/app/assets/stylesheets/accounts.scss b/app/assets/stylesheets/accounts.scss @@ -173,7 +173,7 @@ text-align: center; overflow: hidden; - a, .current, .next_page, .previous_page, .gap { + a, .current, .page, .gap { font-size: 14px; color: $color5; font-weight: 500; @@ -193,12 +193,12 @@ cursor: default; } - .previous_page, .next_page { + .prev, .next { text-transform: uppercase; color: $color2; } - .previous_page { + .prev { float: left; padding-left: 0; @@ -208,7 +208,7 @@ } } - .next_page { + .next { float: right; padding-right: 0; @@ -226,11 +226,11 @@ @media screen and (max-width: 360px) { padding: 30px 20px; - a, .current, .next_page, .previous_page, .gap { + a, .current, .next, .prev, .gap { display: none; } - .next_page, .previous_page { + .next, .prev { display: inline-block; } } diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb @@ -35,11 +35,11 @@ class AccountsController < ApplicationController end def followers - @followers = @account.followers.order('follows.created_at desc').paginate(page: params[:page], per_page: 12) + @followers = @account.followers.order('follows.created_at desc').page(params[:page]).per(12) end def following - @following = @account.following.order('follows.created_at desc').paginate(page: params[:page], per_page: 12) + @following = @account.following.order('follows.created_at desc').page(params[:page]).per(12) end private diff --git a/app/controllers/admin/accounts_controller.rb b/app/controllers/admin/accounts_controller.rb @@ -5,7 +5,7 @@ module Admin before_action :set_account, except: :index def index - @accounts = Account.alphabetic.paginate(page: params[:page], per_page: 40) + @accounts = Account.alphabetic.page(params[:page]) @accounts = @accounts.local if params[:local].present? @accounts = @accounts.remote if params[:remote].present? diff --git a/app/controllers/admin/domain_blocks_controller.rb b/app/controllers/admin/domain_blocks_controller.rb @@ -3,7 +3,7 @@ module Admin class DomainBlocksController < BaseController def index - @blocks = DomainBlock.paginate(page: params[:page], per_page: 40) + @blocks = DomainBlock.page(params[:page]) end def new diff --git a/app/controllers/admin/pubsubhubbub_controller.rb b/app/controllers/admin/pubsubhubbub_controller.rb @@ -3,7 +3,7 @@ module Admin class PubsubhubbubController < BaseController def index - @subscriptions = Subscription.order('id desc').includes(:account).paginate(page: params[:page], per_page: 40) + @subscriptions = Subscription.order('id desc').includes(:account).page(params[:page]) end end end diff --git a/app/controllers/admin/reports_controller.rb b/app/controllers/admin/reports_controller.rb @@ -5,7 +5,7 @@ module Admin before_action :set_report, except: [:index] def index - @reports = Report.includes(:account, :target_account).order('id desc').paginate(page: params[:page], per_page: 40) + @reports = Report.includes(:account, :target_account).order('id desc').page(params[:page]) @reports = params[:action_taken].present? ? @reports.resolved : @reports.unresolved end diff --git a/app/helpers/accounts_helper.rb b/app/helpers/accounts_helper.rb @@ -1,12 +0,0 @@ -# frozen_string_literal: true - -module AccountsHelper - def pagination_options - { - previous_label: safe_join([fa_icon('chevron-left'), t('pagination.prev')], ' '), - next_label: safe_join([t('pagination.next'), fa_icon('chevron-right')], ' '), - inner_window: 1, - outer_window: 0, - } - end -end diff --git a/app/views/accounts/followers.html.haml b/app/views/accounts/followers.html.haml @@ -9,4 +9,4 @@ - else = render partial: 'grid_card', collection: @followers, as: :account, cached: true -= will_paginate @followers, pagination_options += paginate @followers diff --git a/app/views/accounts/following.html.haml b/app/views/accounts/following.html.haml @@ -9,4 +9,4 @@ - else = render partial: 'grid_card', collection: @following, as: :account, cached: true -= will_paginate @following, pagination_options += paginate @following diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml @@ -31,4 +31,4 @@ .pagination - if @statuses.size == 20 - = link_to safe_join([t('pagination.next'), fa_icon('chevron-right')], ' '), short_account_url(@account, max_id: @statuses.last.id), class: 'next_page', rel: 'next' + = link_to safe_join([t('pagination.next'), fa_icon('chevron-right')], ' '), short_account_url(@account, max_id: @statuses.last.id), class: 'next', rel: 'next' diff --git a/app/views/admin/accounts/index.html.haml b/app/views/admin/accounts/index.html.haml @@ -46,4 +46,4 @@ = table_link_to 'globe', 'Public', TagManager.instance.url_for(account) = table_link_to 'pencil', 'Edit', admin_account_path(account.id) -= will_paginate @accounts, pagination_options += paginate @accounts diff --git a/app/views/admin/domain_blocks/index.html.haml b/app/views/admin/domain_blocks/index.html.haml @@ -13,5 +13,5 @@ %samp= block.domain %td= block.severity -= will_paginate @blocks, pagination_options += paginate @blocks = link_to 'Add new', new_admin_domain_block_path, class: 'button' diff --git a/app/views/admin/pubsubhubbub/index.html.haml b/app/views/admin/pubsubhubbub/index.html.haml @@ -26,4 +26,4 @@ - else = l subscription.last_successful_delivery_at -= will_paginate @subscriptions, pagination_options += paginate @subscriptions diff --git a/app/views/admin/reports/index.html.haml b/app/views/admin/reports/index.html.haml @@ -29,4 +29,4 @@ %td= truncate(report.comment, length: 30, separator: ' ') %td= table_link_to 'circle', 'View', admin_report_path(report) -= will_paginate @reports, pagination_options += paginate @reports diff --git a/app/views/kaminari/_next_page.html.haml b/app/views/kaminari/_next_page.html.haml @@ -0,0 +1,9 @@ +-# Link to the "Next" page +-# available local variables +-# url: url to the next page +-# current_page: a page object for the currently displayed page +-# total_pages: total number of pages +-# per_page: number of items to fetch per page +-# remote: data-remote +%span.next + = link_to_unless current_page.last?, safe_join([t('pagination.next'), fa_icon('chevron-right')], ' '), url, rel: 'next', remote: remote diff --git a/app/views/kaminari/_paginator.html.haml b/app/views/kaminari/_paginator.html.haml @@ -0,0 +1,16 @@ +-# The container tag +-# available local variables +-# current_page: a page object for the currently displayed page +-# total_pages: total number of pages +-# per_page: number of items to fetch per page +-# remote: data-remote +-# paginator: the paginator that renders the pagination tags inside += paginator.render do + %nav.pagination + = prev_page_tag unless current_page.first? + - each_page do |page| + - if page.display_tag? + = page_tag page + - elsif !page.was_truncated? + = gap_tag + = next_page_tag unless current_page.last? diff --git a/app/views/kaminari/_prev_page.html.haml b/app/views/kaminari/_prev_page.html.haml @@ -0,0 +1,9 @@ +-# Link to the "Previous" page +-# available local variables +-# url: url to the previous page +-# current_page: a page object for the currently displayed page +-# total_pages: total number of pages +-# per_page: number of items to fetch per page +-# remote: data-remote +%span.prev + = link_to_unless current_page.first?, safe_join([fa_icon('chevron-left'), t('pagination.prev')], ' '), url, rel: 'prev', remote: remote diff --git a/app/views/tags/show.html.haml b/app/views/tags/show.html.haml @@ -15,4 +15,4 @@ - if @statuses.size == 20 .pagination - = link_to safe_join([t('pagination.next'), fa_icon('chevron-right')], ' '), tag_url(@tag, max_id: @statuses.last.id), class: 'next_page', rel: 'next' + = link_to safe_join([t('pagination.next'), fa_icon('chevron-right')], ' '), tag_url(@tag, max_id: @statuses.last.id), class: 'next', rel: 'next' diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml @@ -33,7 +33,7 @@ search: ignore_unused: - 'activerecord.attributes.*' - - '{devise,will_paginate,doorkeeper}.*' + - '{devise,pagination,doorkeeper}.*' - '{datetime,time}.*' - 'simple_form.{yes,no}' - 'simple_form.{placeholders,hints,labels}.*' diff --git a/config/initializers/kaminari_config.rb b/config/initializers/kaminari_config.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true +Kaminari.configure do |config| + config.default_per_page = 40 + config.window = 1 + config.left = 3 + config.right = 1 +end diff --git a/config/initializers/pagination.rb b/config/initializers/pagination.rb diff --git a/config/locales/de.yml b/config/locales/de.yml @@ -88,5 +88,3 @@ de: default: "%d.%m.%Y %H:%M" users: invalid_email: Inkorrekte E-mail-Addresse - will_paginate: - page_gap: "&hellip;" diff --git a/config/locales/en.yml b/config/locales/en.yml @@ -126,6 +126,7 @@ en: pagination: next: Next prev: Prev + truncate: "&hellip;" remote_follow: acct: Enter your username@domain you want to follow from missing_resource: Could not find the required redirect URL for your account @@ -169,5 +170,3 @@ en: users: invalid_email: The e-mail address is invalid invalid_otp_token: Invalid two-factor code - will_paginate: - page_gap: "&hellip;" diff --git a/config/locales/eo.yml b/config/locales/eo.yml @@ -160,5 +160,3 @@ eo: users: invalid_email: La retpoŝt-adreso ne estas valida invalid_otp_token: La dufaktora aŭtentigila kodo ne estas valida - will_paginate: - page_gap: "&hellip;" diff --git a/config/locales/es.yml b/config/locales/es.yml @@ -51,5 +51,3 @@ es: settings: edit_profile: Editar perfil preferences: Preferencias - will_paginate: - page_gap: "&hellip;" diff --git a/config/locales/fi.yml b/config/locales/fi.yml @@ -160,5 +160,3 @@ fi: users: invalid_email: Virheellinen sähköposti invalid_otp_token: Virheellinen kaksivaihe tunnistus koodi - will_paginate: - page_gap: "&hellip;" diff --git a/config/locales/fr.yml b/config/locales/fr.yml @@ -167,5 +167,3 @@ fr: users: invalid_email: L'adresse courriel est invalide invalid_otp_token: Le code d'authentification à deux facteurs est invalide - will_paginate: - page_gap: "&hellip;" diff --git a/config/locales/hu.yml b/config/locales/hu.yml @@ -51,5 +51,3 @@ hu: settings: edit_profile: Profil szerkesztése preferences: Beállítások - will_paginate: - page_gap: "&hellip;" diff --git a/config/locales/no.yml b/config/locales/no.yml @@ -160,5 +160,3 @@ users: invalid_email: E-post addressen er ugyldig invalid_otp_token: Ugyldig two-faktor kode - will_paginate: - page_gap: "&hellip;" diff --git a/config/locales/pt.yml b/config/locales/pt.yml @@ -51,5 +51,3 @@ pt: settings: edit_profile: Editar perfil preferences: Preferências - will_paginate: - page_gap: "&hellip;" diff --git a/config/locales/ru.yml b/config/locales/ru.yml @@ -161,5 +161,3 @@ ru: users: invalid_email: Введенный e-mail неверен invalid_otp_token: Введен неверный код - will_paginate: - page_gap: "&hellip;" diff --git a/config/locales/uk.yml b/config/locales/uk.yml @@ -51,5 +51,3 @@ uk: settings: edit_profile: Редагувати профіль preferences: Налаштування - will_paginate: - page_gap: "&hellip;" diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml @@ -150,5 +150,3 @@ zh-CN: users: invalid_email: 无效的邮箱 invalid_otp_token: 无效的两步验证码 - will_paginate: - page_gap: "&hellip;" diff --git a/spec/helpers/accounts_helper_spec.rb b/spec/helpers/accounts_helper_spec.rb @@ -1,5 +0,0 @@ -require 'rails_helper' - -RSpec.describe AccountsHelper, type: :helper do - -end