Kcko
4/13/2016 - 6:50 PM

Vykreslení objektu Nette\Utils\Paginator, použití {include ../paginator.latte, paginator => $paginator}, kde $paginator máme předán z presen

Vykreslení objektu Nette\Utils\Paginator, použití {include ../paginator.latte, paginator => $paginator}, kde $paginator máme předán z presenteru

{** Bootstrapové vykreslení paginatoru *}

{default $maxOdkazu = 15}
{default $postupnychStranek = 4} 

{var $min = $paginator->getBase()}
{var $max = $paginator->getPageCount()}
{var $pocet = ($max - $min)}
{var $aktStrana = $paginator->getPage()}
{var $doplnkovychStran = $maxOdkazu - 2 - ($postupnychStranek*2) + 1}
{var $volnychMist = $maxOdkazu - $doplnkovychStran}
{var $doplnkovyKrok = ceil(($max - $min) / $volnychMist)}

<ul class="pagination">
	{* odkaz na předchozí stranu, když jsem na první straně tak odkazuje na sebe *}
	<li n:class="$paginator->isFirst()?disabled"><a n:href="this, page => $paginator->isFirst()?$aktStrana:($aktStrana-1)">&laquo;</a></li>
		{if (($max-$min)<=$maxOdkazu)} {* Dají se odkazy vykreslit postupně? *}
			{for $p = $min;$p<=$max;$p++}
			<li n:class="($aktStrana == $p)? active">
				<a n:href="this, page => $p">{$p}</a>
			</li>
		{/for}
	{else}
		{for $p = $min;$p<=$max;$p++}
			{var $prvniAPosledni = ($p == $min || $p == $max)}
			{var $nejblizsiRozsah = ($p > ($aktStrana - $postupnychStranek) && $p < ($aktStrana + $postupnychStranek))}
			{var $doplnek = (($p % $doplnkovyKrok) == 0)}
			{if $prvniAPosledni || $nejblizsiRozsah || $doplnek}
				<li n:class="($aktStrana == $p)? active">
					<a n:href="this, page => $p">{$p}</a>
				</li>
			{/if}
		{/for}
	{/if}
	{* odkaz na následující stranu, když jsem na poslední straně tak odkazuje na sebe *}
	<li n:class="$paginator->isLast()?disabled"><a n:href="this, page => $paginator->isLast()?$aktStrana:($aktStrana+1)">&raquo;</a></li>
</ul>