* * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ namespace Chill\MainBundle\Pagination; use Twig\Environment; use Twig\Extension\AbstractExtension; use Twig\TwigFunction; /** * add twig function to render pagination * * @author Julien Fastré * @author Champs Libres */ class ChillPaginationTwig extends AbstractExtension { const LONG_TEMPLATE = '@ChillMain/Pagination/long.html.twig'; const SHORT_TEMPLATE = '@ChillMain/Pagination/short.html.twig'; public function getName() { return 'chill_pagination'; } public function getFunctions() { return array( new TwigFunction( 'chill_pagination', array($this, 'paginationRender'), array( 'needs_environment' => true, 'is_safe' => ['html'] ) ) ); } public function paginationRender( Environment $env, PaginatorInterface $paginator, $template = '@ChillMain/Pagination/long.html.twig' ) { switch ($template) { case 'long': $t = self::LONG_TEMPLATE; break; case 'short': $t = self::SHORT_TEMPLATE; break; default: $t = $template; } return $env->render($t, array( 'paginator' => $paginator, 'current' => $paginator->getCurrentPage()->getNumber() )); } }