backend: implement main section
This commit is contained in:
parent
a7f2381d81
commit
6eae4e0fe4
@ -21,6 +21,25 @@ sub http_tiny ()
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub gallery_nav_pager ($$)
|
||||||
|
{
|
||||||
|
my ($p, $uri) = @_;
|
||||||
|
|
||||||
|
my (%pager, %res);
|
||||||
|
%pager = %$p;
|
||||||
|
$res{first} = $pager{first} != $pager{cur} ?
|
||||||
|
uri_for($uri, { page => $pager{first} }) : undef;
|
||||||
|
$res{prev} = defined($pager{prev}) && $pager{prev} != $pager{first} ?
|
||||||
|
uri_for($uri, { page => $pager{prev} }) : undef;
|
||||||
|
$res{cur} = $pager{cur};
|
||||||
|
$res{next} = defined($pager{next}) && $pager{next} != $pager{last} ?
|
||||||
|
uri_for($uri, { page => $pager{next} }) : undef;
|
||||||
|
$res{last} = $pager{last} != $pager{cur} ?
|
||||||
|
uri_for($uri, { page => $pager{last} }) : undef;
|
||||||
|
|
||||||
|
return \%res;
|
||||||
|
}
|
||||||
|
|
||||||
hook before_template_render => sub {
|
hook before_template_render => sub {
|
||||||
my $tokens = shift;
|
my $tokens = shift;
|
||||||
|
|
||||||
@ -32,8 +51,23 @@ hook before_template_render => sub {
|
|||||||
};
|
};
|
||||||
|
|
||||||
get "/" => sub {
|
get "/" => sub {
|
||||||
template "index" => {
|
my $page = query_parameters->get("page") // 1;
|
||||||
title => "main",
|
send_error("Invalid page number", 400) if $page !~ /^[1-9][0-9]*$/;
|
||||||
|
|
||||||
|
my $res = http_tiny()->get("$POORBOORU_API/media?page=$page");
|
||||||
|
send_error("API error", 500) if !$res->{success};
|
||||||
|
|
||||||
|
my $data = decode_json($res->{content});
|
||||||
|
my @media = map +( {
|
||||||
|
# XXX point to a cache
|
||||||
|
image_src => "$POORBOORU_API/download/$_",
|
||||||
|
view_uri => uri_for("/view/$_"),
|
||||||
|
} ), @{$data->{media}};
|
||||||
|
|
||||||
|
template "gallery" => {
|
||||||
|
title => "PoorBooru",
|
||||||
|
media => \@media,
|
||||||
|
pager => gallery_nav_pager($data->{pager}, "/"),
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -7,3 +7,19 @@
|
|||||||
</a>
|
</a>
|
||||||
[% END -%]
|
[% END -%]
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<nav class="text-center">
|
||||||
|
[% IF pager.first -%]
|
||||||
|
<a href="[% pager.first %]"><<</a>
|
||||||
|
[% END -%]
|
||||||
|
[% IF pager.prev -%]
|
||||||
|
<a href="[% pager.prev %]"><</a>
|
||||||
|
[% END -%]
|
||||||
|
<span>[% pager.cur %]</span>
|
||||||
|
[% IF pager.next -%]
|
||||||
|
<a href="[% pager.next %]">></a>
|
||||||
|
[% END -%]
|
||||||
|
[% IF pager.last -%]
|
||||||
|
<a href="[% pager.last %]">>></a>
|
||||||
|
[% END -%]
|
||||||
|
</nav>
|
||||||
|
Loading…
Reference in New Issue
Block a user