Acme-CPANModulesBundle-Import-PerlDancerAdvent-2018

 view release on metacpan or  search on metacpan

devdata/http_advent.perldancer.org_2018_15  view on Meta::CPAN

    template 'books' => _paginator($books, $curr);
};

sub _paginator {
    my ($books, $curr) = @_;

    my $items = scalar(@$books);
    my $paginator = paginator(
       curr     => $curr,
       items    => $items,
       base_url => '/books',
       mode     => 'path'
    );

    my $page_size = $paginator->page_size;
    my $i = ($curr - 1) * $page_size;
    my $j = ($i + $page_size) - 1;
    my $results = [ @$books[$i..$j] ];

    return {
       results   => $results,
       paginator => $paginator,
       prev_l    => $paginator->prev,
       next_l    => $paginator->next,
     };
}</pre>

<h3><a name="template"></a>Template</h3>

<pre class="prettyprint">&lt;% IF results.size %&gt;
   &lt;ul&gt;
      &lt;% FOREACH book IN results %&gt;
         &lt;% IF book.name %&gt;
            &lt;li&gt;&lt;b&gt;&lt;% book.name %&gt;&lt;/b&gt; &amp;nbsp; &lt;a href="/edit/book/&lt;% book.id %&gt;"&gt;Edit&lt;/a&gt;&lt;/li&gt;
         &lt;% END %&gt;
      &lt;% END %&gt;
   &lt;/ul&gt;
   &lt;br/&gt;
   &lt;hr/&gt;
   &lt;a href="/books/&lt;% prev_l %&gt;"&gt;[prev]&lt;/a&gt;...&lt;a href="/books/&lt;% next_l %&gt;"&gt;[next]&lt;/a&gt;
   &lt;hr/&gt;
&lt;% ELSE %&gt;
   &lt;ul&gt;&lt;li&gt;&lt;b&gt;No book found.&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;% END %&gt;</pre>

<h2><a name="conclusion"></a>CONCLUSION</h2>

<p>This is all you need to get started. If you feel lucky, you can take a look at <a href="https://metacpan.org/pod/Paginator::Lite">Paginator::Lite</a> for more insights. Any questions/suggestions, feel free to get in touch mohammad.anwar@yahoo.com....
<h2><a name="author"></a>AUTHOR</h2>

<p>This article has been written by Mohammad S Anwar for the Perl Dancer Advent Calendar 2018.</p>
<h2><a name="copyright"></a>COPYRIGHT</h2>

<p>No copyright retained. Enjoy.</p>
<p>Mohammad S Anwar</p>
</div>

 <div id="disqus_thread"></div>
    <script type="text/javascript">
        /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
        var disqus_shortname = 'danceradvent'; // required: replace example with your forum shortname

        /* * * DON'T EDIT BELOW THIS LINE * * */
        (function() {
            var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
            dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
            (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
        })();
    </script>
    <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>




</div>



<div id="footer">
Powered by the  
<a href="http://perldancer.org/" title="Perl Dancer - Perl web framework">
Dancer Perl web framework</a>
</div>
</div>


<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-25174467-2']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>
</body>
</html>



( run in 0.537 second using v1.01-cache-2.11-cpan-39bf76dae61 )