OSDN Git Service

add archive link to journals index
authorhylom <hylom@users.sourceforge.jp>
Wed, 19 Jul 2017 11:02:47 +0000 (20:02 +0900)
committerhylom <hylom@users.sourceforge.jp>
Wed, 19 Jul 2017 11:03:47 +0000 (20:03 +0900)
src/newslash_web/lib/Newslash/Web/Controller/Index.pm
src/newslash_web/templates/common/article/article.html.tt2
src/newslash_web/templates/index/journals.html.tt2
src/newslash_web/templates/index/root.html.tt2

index 8027af4..870bee2 100644 (file)
@@ -36,8 +36,20 @@ sub root {
 
 sub journals {
     my $c = shift;
-    my $journals = $c->model('journals')->select(limit => 10, order_by => {date => 'DESC'});
-    $c->render(journals => $journals);
+    my $items_per_page = $c->config->{IndexPage}->{story_per_page} || 10;
+    my $items = $c->model('journals')->select(limit => $items_per_page + 1, order_by => {date => 'DESC'});
+    if (!$items) {
+        $c->rendered(404);
+        return;
+    }
+
+    # check if next page exists
+    my $prev_page = {};
+    if (@$items > $items_per_page) {
+        my $next_item = pop @$items;
+        $prev_page = _get_paging_item($next_item);
+    }
+    $c->render(journals => $items, prev_page => $prev_page);
 }
 
 # deprecated: moved to Comment.pm
@@ -65,10 +77,10 @@ sub banned {
 }
 
 sub _get_paging_item {
-    my $story = shift;
-    return if !$story;
+    my $item = shift;
+    return if !$item;
 
-    my $dt = Newslash::Util::Formatters::parse_mysql_datetime($story->{time});
+    my $dt = Newslash::Util::Formatters::parse_mysql_datetime($item->{time});
     return if !$dt;
 
     $dt->set_time_zone('UTC');
@@ -79,9 +91,17 @@ sub _get_paging_item {
     $mm = "0$mm" if $mm < 10;
     $dd = "0$dd" if $dd < 10;
 
+    my $id;
+    if ($item->{content_type} eq "story") {
+        $id = $item->{stoid};
+    }
+    elsif ($item->{content_type} eq "journal") {
+        $id = $item->{id};
+    }
+
     return {
             date =>"$yy/$mm/$dd",
-            sid => $story->{sid}
+            id => $id,
            };
 }
 1;
index 2a77236..808cf03 100644 (file)
@@ -6,7 +6,7 @@ IF story.content_type == 'poll'; content_id = story.qid; END;
 IF story.content_type == 'vote'; content_id = story.qid; END;
 -%]
 
-<article id="[% story.sid %]" type="[% story.content_type %]" item-id="[% content_id %]" [% IF !x_template %]v-if="0"[% END %]>
+<article id="[% story.id %]" type="[% story.content_type %]" item-id="[% content_id %]" [% IF !x_template %]v-if="0"[% END %]>
   <header>
     <h1>
       [%- IF story.primary_topic.image.length || x_template -%]
index ed395e0..2564316 100644 (file)
@@ -6,6 +6,19 @@
     [%- INCLUDE common/article/article hide_bodytext=1%]
     [%- END -%]
   </div><!-- .index -->
+
+  <div class="pager">
+    [%- IF prev_page -%]
+    <span class="prev">
+      <a href="/journal/[% prev_page.date %]/[% IF prev_page.id %]#[% prev_page.id %][% END %]">≪前の記事</a>
+    </span>
+    [%- END -%]
+    [%- IF next_page -%]
+    <span class="next">
+      <a href="/journal/[% next_page.date %]/[% IF next_page.id %]#[% next_page.id %][% END %]">次の記事≫</a>
+    </span>
+    [%- END -%]
+  </div>
 </div>
 
 [%- INCLUDE common/sidebar -%]
index 2af8151..b70b15e 100644 (file)
@@ -6,15 +6,16 @@
     [%- INCLUDE common/article/article %]
     [%- END -%]
   </div><!-- .index -->
+
   <div class="pager">
     [%- IF prev_page -%]
     <span class="prev">
-      <a href="/story/[% prev_page.date %]/[% IF prev_page.sid %]#[% prev_page.sid %][% END %]">≪前の記事</a>
+      <a href="/story/[% prev_page.date %]/[% IF prev_page.id %]#[% prev_page.id %][% END %]">≪前の記事</a>
     </span>
     [%- END -%]
     [%- IF next_page -%]
     <span class="next">
-      <a href="/story/[% next_page.date %]/[% IF next_page.sid %]#[% next_page.sid %][% END %]">次の記事≫</a>
+      <a href="/story/[% next_page.date %]/[% IF next_page.id %]#[% next_page.id %][% END %]">次の記事≫</a>
     </span>
     [%- END -%]
   </div>