mirror of
https://github.com/wallabag/wallabag.git
synced 2024-11-29 20:41:03 +00:00
Merge pull request #1918 from wallabag/improve-pagination
Improve pagination when user has lot of entries
This commit is contained in:
commit
a417b86923
9 changed files with 49 additions and 38 deletions
|
@ -22,19 +22,22 @@ class AppKernel extends Kernel
|
||||||
new Nelmio\ApiDocBundle\NelmioApiDocBundle(),
|
new Nelmio\ApiDocBundle\NelmioApiDocBundle(),
|
||||||
new Nelmio\CorsBundle\NelmioCorsBundle(),
|
new Nelmio\CorsBundle\NelmioCorsBundle(),
|
||||||
new Liip\ThemeBundle\LiipThemeBundle(),
|
new Liip\ThemeBundle\LiipThemeBundle(),
|
||||||
new Wallabag\CoreBundle\WallabagCoreBundle(),
|
|
||||||
new Wallabag\ApiBundle\WallabagApiBundle(),
|
|
||||||
new Bazinga\Bundle\HateoasBundle\BazingaHateoasBundle(),
|
new Bazinga\Bundle\HateoasBundle\BazingaHateoasBundle(),
|
||||||
new Lexik\Bundle\FormFilterBundle\LexikFormFilterBundle(),
|
new Lexik\Bundle\FormFilterBundle\LexikFormFilterBundle(),
|
||||||
new FOS\OAuthServerBundle\FOSOAuthServerBundle(),
|
new FOS\OAuthServerBundle\FOSOAuthServerBundle(),
|
||||||
new Wallabag\UserBundle\WallabagUserBundle(),
|
|
||||||
new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(),
|
new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(),
|
||||||
new Scheb\TwoFactorBundle\SchebTwoFactorBundle(),
|
new Scheb\TwoFactorBundle\SchebTwoFactorBundle(),
|
||||||
new KPhoen\RulerZBundle\KPhoenRulerZBundle(),
|
new KPhoen\RulerZBundle\KPhoenRulerZBundle(),
|
||||||
new Wallabag\ImportBundle\WallabagImportBundle(),
|
|
||||||
new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
|
new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
|
||||||
new Craue\ConfigBundle\CraueConfigBundle(),
|
new Craue\ConfigBundle\CraueConfigBundle(),
|
||||||
new Lexik\Bundle\MaintenanceBundle\LexikMaintenanceBundle(),
|
new Lexik\Bundle\MaintenanceBundle\LexikMaintenanceBundle(),
|
||||||
|
new WhiteOctober\PagerfantaBundle\WhiteOctoberPagerfantaBundle(),
|
||||||
|
|
||||||
|
// wallabag bundles
|
||||||
|
new Wallabag\CoreBundle\WallabagCoreBundle(),
|
||||||
|
new Wallabag\ApiBundle\WallabagApiBundle(),
|
||||||
|
new Wallabag\UserBundle\WallabagUserBundle(),
|
||||||
|
new Wallabag\ImportBundle\WallabagImportBundle(),
|
||||||
new Wallabag\AnnotationBundle\WallabagAnnotationBundle(),
|
new Wallabag\AnnotationBundle\WallabagAnnotationBundle(),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ services:
|
||||||
filesystem_cache:
|
filesystem_cache:
|
||||||
class: Doctrine\Common\Cache\FilesystemCache
|
class: Doctrine\Common\Cache\FilesystemCache
|
||||||
arguments:
|
arguments:
|
||||||
- %kernel.cache_dir%/doctrine/metadata
|
- "%kernel.cache_dir%/doctrine/metadata"
|
||||||
|
|
||||||
twig.extension.text:
|
twig.extension.text:
|
||||||
class: Twig_Extensions_Extension_Text
|
class: Twig_Extensions_Extension_Text
|
||||||
|
|
|
@ -80,7 +80,8 @@
|
||||||
"craue/config-bundle": "~1.4",
|
"craue/config-bundle": "~1.4",
|
||||||
"mnapoli/piwik-twig-extension": "^1.0",
|
"mnapoli/piwik-twig-extension": "^1.0",
|
||||||
"lexik/maintenance-bundle": "~2.1",
|
"lexik/maintenance-bundle": "~2.1",
|
||||||
"ocramius/proxy-manager": "1.*"
|
"ocramius/proxy-manager": "1.*",
|
||||||
|
"white-october/pagerfanta-bundle": "^1.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"doctrine/doctrine-fixtures-bundle": "~2.2",
|
"doctrine/doctrine-fixtures-bundle": "~2.2",
|
||||||
|
|
|
@ -3,14 +3,14 @@ services:
|
||||||
class: Wallabag\CoreBundle\Helper\DetectActiveTheme
|
class: Wallabag\CoreBundle\Helper\DetectActiveTheme
|
||||||
arguments:
|
arguments:
|
||||||
- "@security.token_storage"
|
- "@security.token_storage"
|
||||||
- %wallabag_core.theme%
|
- "%wallabag_core.theme%"
|
||||||
|
|
||||||
# custom form type
|
# custom form type
|
||||||
wallabag_core.form.type.config:
|
wallabag_core.form.type.config:
|
||||||
class: Wallabag\CoreBundle\Form\Type\ConfigType
|
class: Wallabag\CoreBundle\Form\Type\ConfigType
|
||||||
arguments:
|
arguments:
|
||||||
- %liip_theme.themes%
|
- "%liip_theme.themes%"
|
||||||
- %wallabag_core.languages%
|
- "%wallabag_core.languages%"
|
||||||
tags:
|
tags:
|
||||||
- { name: form.type }
|
- { name: form.type }
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ services:
|
||||||
wallabag_core.table_prefix_subscriber:
|
wallabag_core.table_prefix_subscriber:
|
||||||
class: Wallabag\CoreBundle\Subscriber\TablePrefixSubscriber
|
class: Wallabag\CoreBundle\Subscriber\TablePrefixSubscriber
|
||||||
arguments:
|
arguments:
|
||||||
- %database_table_prefix%
|
- "%database_table_prefix%"
|
||||||
tags:
|
tags:
|
||||||
- { name: doctrine.event_subscriber }
|
- { name: doctrine.event_subscriber }
|
||||||
|
|
||||||
|
@ -92,10 +92,10 @@ services:
|
||||||
class: Wallabag\CoreBundle\EventListener\RegistrationConfirmedListener
|
class: Wallabag\CoreBundle\EventListener\RegistrationConfirmedListener
|
||||||
arguments:
|
arguments:
|
||||||
- "@doctrine.orm.entity_manager"
|
- "@doctrine.orm.entity_manager"
|
||||||
- %wallabag_core.theme%
|
- "%wallabag_core.theme%"
|
||||||
- %wallabag_core.items_on_page%
|
- "%wallabag_core.items_on_page%"
|
||||||
- %wallabag_core.rss_limit%
|
- "%wallabag_core.rss_limit%"
|
||||||
- %wallabag_core.language%
|
- "%wallabag_core.language%"
|
||||||
tags:
|
tags:
|
||||||
- { name: kernel.event_subscriber }
|
- { name: kernel.event_subscriber }
|
||||||
|
|
||||||
|
|
|
@ -512,7 +512,7 @@ img.preview {
|
||||||
width: 50%;
|
width: 50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pagination {
|
div.pagination ul {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
margin-bottom:50px;
|
margin-bottom:50px;
|
||||||
}
|
}
|
||||||
|
@ -523,25 +523,25 @@ img.preview {
|
||||||
color: #999;
|
color: #999;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pagination > * {
|
div.pagination ul > * {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin-left: 0.5em;
|
margin-left: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pagination a {
|
div.pagination ul a {
|
||||||
color: #999;
|
color: #999;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pagination a:hover, .pagination a:focus {
|
div.pagination ul a:hover, div.pagination ul a:focus {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pagination .disabled {
|
div.pagination ul .disabled {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pagination .current {
|
div.pagination ul .current {
|
||||||
height: 25px;
|
height: 25px;
|
||||||
padding: 4px 8px;
|
padding: 4px 8px;
|
||||||
border: 1px solid #d5d5d5;
|
border: 1px solid #d5d5d5;
|
||||||
|
|
|
@ -80,6 +80,14 @@ main, #content, .valign-wrapper {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.pagination {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination ul {
|
||||||
|
margin: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
.pagination li {
|
.pagination li {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
@ -90,6 +98,18 @@ main, #content, .valign-wrapper {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.pagination li.active span {
|
||||||
|
padding: 0px 10px;
|
||||||
|
height: 30px;
|
||||||
|
display: block;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination .disabled {
|
||||||
|
margin-right: 10px;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
.page-footer .footer-copyright p {
|
.page-footer .footer-copyright p {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,16 +6,9 @@
|
||||||
{% block pager %}
|
{% block pager %}
|
||||||
<div class="results">
|
<div class="results">
|
||||||
<div class="nb-results">{{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}</div>
|
<div class="nb-results">{{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}</div>
|
||||||
<div class="pagination">
|
<div class="pagination">
|
||||||
<a href="#" id="filter">{{ 'entry.filters.title'|trans }}</a>
|
<a href="#" id="filter">{{ 'entry.filters.title'|trans }}</a>
|
||||||
{% if entries is not empty %}
|
{{ pagerfanta(entries, 'twitter_bootstrap_translated', {'proximity': 1}) }}
|
||||||
–
|
|
||||||
{% for p in range(1, entries.nbPages) if entries.nbPages > 1 %}
|
|
||||||
<li>
|
|
||||||
<a href="{{ path(app.request.attributes.get('_route'), app.request.query.all|merge({'page': p})) }}" class="{{ currentPage == p ? 'current':''}}" >{{ p }}</a>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -21,13 +21,7 @@
|
||||||
<div class="nb-results left">
|
<div class="nb-results left">
|
||||||
{{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}
|
{{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}
|
||||||
</div>
|
</div>
|
||||||
<ul class="pagination right">
|
{{ pagerfanta(entries, 'twitter_bootstrap_translated', {'proximity': 1}) }}
|
||||||
{% for p in range(1, entries.nbPages) if entries.nbPages > 1 %}
|
|
||||||
<li class="{{ currentPage == p ? 'active':'waves-effect'}}">
|
|
||||||
<a href="{{ path(app.request.attributes.get('_route'), app.request.query.all|merge({'page': p})) }}">{{ p }}</a>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
<br />
|
<br />
|
||||||
|
|
|
@ -522,7 +522,7 @@ class EntryControllerTest extends WallabagCoreTestCase
|
||||||
|
|
||||||
$client->submit($form, $data);
|
$client->submit($form, $data);
|
||||||
|
|
||||||
$parameters = '?entry_filter%5BreadingTime%5D%5Bleft_number%5D=&entry_filter%5BreadingTime%5D%5Bright_number%5D=';
|
$parameters = '?entry_filter%5BreadingTime%5D%5Bleft_number%5D=&entry_filter%5BreadingTime%5D%5Bright_number%5D=';
|
||||||
|
|
||||||
$client->request('GET', 'unread/list'.$parameters);
|
$client->request('GET', 'unread/list'.$parameters);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue