OSDN Git Service

/tag/: fix paging
authorhylom <hylom@users.sourceforge.jp>
Tue, 2 Apr 2019 10:41:56 +0000 (19:41 +0900)
committerhylom <hylom@users.sourceforge.jp>
Tue, 2 Apr 2019 10:41:56 +0000 (19:41 +0900)
src/newslash_web/lib/Newslash/Web.pm
src/newslash_web/lib/Newslash/Web/Controller/Tag.pm
src/newslash_web/templates/common/breadcrumb_list.html.tt2
src/newslash_web/templates/common/title.html.tt2
src/newslash_web/templates/tag/base.html.tt2

index 57548d8..db9c0ca 100644 (file)
@@ -311,7 +311,8 @@ sub startup {
     $r->get('/poll/')->to('archive#poll');
 
     # tag page
-    $r->get('/tag/:tagname/:type/')->to('tag#list_tagged_items');
+    $r->get('/tag/:tagname/:type/:page/')->to('tag#list_tagged_items');
+    $r->get('/tag/:tagname/:page/')->to('tag#list_tagged_items');
     $r->get('/tag/:tagname/')->to('tag#list_tagged_items');
     $r->get('/tag/')->to('tag#list_tags');
 
index 593efed..b1bea8e 100644 (file)
@@ -28,16 +28,16 @@ sub list_tagged_items {
     my $type = $c->stash('type');
 
     # check parameter
-    my $page_num = $c->param('page') || 0;
+    my $page_num = $c->param('page') || 1;
     my $config = $c->app->config("Timeline") || {};
     my $limit = $config->{item_per_page} || 10;
-    my $offset = $limit * $page_num;
+    my $offset = $limit * ($page_num - 1);
 
     my $show_future = $user->{is_admin} ? 1 : 0;
     my $show_nonpublic = $user->{is_admin} ? 1 : 0;
 
-    if ($type && !any { $_ eq $type } qw(story journal submission)) {
-        $c->rendered(400);
+    if ($page_num < 1 || $type && !any { $_ eq $type } qw(story journal submission)) {
+        $c->rendered(404);
         return;
     }
 
@@ -89,6 +89,7 @@ sub list_tagged_items {
 
     my $page = { type => "tag",
                  tag_name => $topic_name,
+                 tag_keyword => $topics->[0]->{keyword},
                  content_type => $type,
                  number => $page_num,
                  has_prev => @$items > $limit,
index 1e2721a..3ede943 100644 (file)
@@ -1,7 +1,7 @@
 [%- IF page.type == "tag";
 item_list = [
   { url => "/tag/", text => "タグ" },
-  { url => "/tag/" _ page.tag_name, text => page.tag_name }
+  { url => "/tag/" _ page.tag_keyword _ "/", text => page.tag_name }
 ];
 sub_title = "";
 
@@ -18,11 +18,11 @@ ELSIF page.content_type == "comment";
 END;
 
 IF sub_title;
-  item_list.push({url => "/tag/" _ page.tag_name _ "/" _ page.content_type _ "/",
+  item_list.push({url => "/tag/" _ page.tag_keyword _ "/" _ page.content_type _ "/",
                   text => sub_title });
 END;
 
-item_list.push({text => (page.number + 1) _ "ページ目"});
+item_list.push({text => page.number _ "ページ目"});
 
 END -%]
 
index 6a2deeb..51b50cb 100644 (file)
@@ -91,7 +91,7 @@ ELSE;
       ELSIF page.content_type == "comment";
         sub_title = "コメント";
       END;
-      primary_title = "'" _ page.tag_name _ "'タグが付いた" _ sub_title _ "(" _ (page.number + 1)_ "ページ目)";
+      primary_title = "'" _ page.tag_name _ "'タグが付いた" _ sub_title _ "(" _ page.number _ "ページ目)";
       sub_title = "";
 
     END;
index 9bdc9f4..4bf2dae 100644 (file)
@@ -1,5 +1,6 @@
 [% WRAPPER common/layout %]
-<div class="main-column">
+
+<div class="sidebar-wrapper">
   <div class="index main-contents">
     [%- FOREACH item IN items -%]
     [%- INCLUDE common/article/article hide_bodytext=1 %]
@@ -8,23 +9,23 @@
     <div class="pager">
       [%- IF page.has_prev -%]
       <span class="prev">
-        <a href="/tag/[% page.tag_name %][% IF page.target %]/[% page.target %]/[% END %]?page=[% page.number + 1 %]">≪前</a>
+        <a href="/tag/[% page.tag_keyword %]/[% IF page.target %][% page.target %]/[% END %][% page.number + 1 %]/">≪前</a>
       </span>
       [%- END -%]
-      [%- IF page.number > 0 -%]
+      [%- IF page.number > 1 -%]
       <span class="next">
-        [%- IF page.number == 1 -%]
-        <a href="/tag/[% page.tag_name %][% IF page.target %]/[% page.target %]/[% END %]">次≫</a>
+        [%- IF page.number == 2 -%]
+        <a href="/tag/[% page.tag_keyword %][% IF page.target %]/[% page.target %]/[% END %]">次≫</a>
         [%- ELSE -%]
-        <a href="/tag/[% page.tag_name %][% IF page.target %]/[% page.target %]/[% END %]?page=[% page.number - 1 %]">次≫</a>
+        <a href="/tag/[% page.tag_keyword %]/[% IF page.target %][% page.target %]/[% END %][% page.number - 1 %]/">次≫</a>
         [%- END -%]
       </span>
       [%- END -%]
     </div>
     
   </div><!-- .index -->
+  [%- INCLUDE common/sidebar -%]
 </div>
 
-[%- INCLUDE common/sidebar -%]
 
 [% END %]