OSDN Git Service

show topic icon in related stories box
authorhylom <hylom@users.sourceforge.jp>
Mon, 10 Jul 2017 12:36:18 +0000 (21:36 +0900)
committerhylom <hylom@users.sourceforge.jp>
Mon, 10 Jul 2017 12:36:18 +0000 (21:36 +0900)
src/newslash_web/lib/Newslash/Model/Stories.pm
src/newslash_web/lib/Newslash/Web/Controller/Story.pm
src/newslash_web/templates/story/story.html.tt2

index 7f70a6e..4476e8d 100644 (file)
@@ -562,7 +562,14 @@ sub createSid {
 }
 
 
-=head2 related_link($stoid)
+=head2 get_histories
+
+=cut
+
+sub get_histories {
+}
+
+=head2 get_related_items($stoid)
 
 get related links.
 
@@ -586,26 +593,33 @@ ARRAY of related links
 
 =cut
 
-sub related {
-    my ($self, $stoid) = @_;
+sub get_related_items {
+    my $self = shift;
+    my $params = {@_};
+    my $stoid = $params->{stoid};
+    return if !$stoid;
 
     my $dbh = $self->connect_db;
 
     my $sql = <<"EOSQL";
-SELECT related.*, story_text.title as title2, firehose.srcid
+SELECT related.*, 
+       story_text.title as title2,
+       firehose.srcid,
+       topics.*
   FROM (
     SELECT * FROM related_stories
       WHERE stoid = ?
       ORDER BY ordernum ASC
     ) AS related
-  LEFT JOIN story_text ON related.rel_stoid = story_text.stoid
+  LEFT JOIN story_text ON story_text.stoid = related.rel_stoid
   LEFT JOIN firehose ON firehose.id = related.fhid
+  LEFT JOIN stories ON stories.stoid = related.rel_stoid
+  LEFT JOIN topics ON topics.tid = stories.tid
 EOSQL
 
     my $sth = $dbh->prepare($sql);
     $sth->execute($stoid);
     my $related = $sth->fetchall_arrayref({});
-    $sth->finish;
     $self->disconnect_db();
 
     for my $r (@$related) {
@@ -617,6 +631,14 @@ EOSQL
             $r->{type} = "submission";
             $r->{key_id} = $r->{srcid};
         }
+        $r->{primary_topic} = {};
+        $r->{primary_topic}->{tid} = $r->{tid};
+        for my $k (qw{keyword textname series image width height
+                      submittable searchable storypickable usesprite}) {
+            next if !$r->{$k};
+            $r->{primary_topic}->{$k} = $r->{$k};
+            delete $r->{$k};
+        }
     }
 
     return $related;
index fe1357b..4da706e 100644 (file)
@@ -28,7 +28,13 @@ sub story {
     if ($d_id) {
         $comments = $c->model('comments')->select(discussion_id => $d_id);
     }
-    my $related = $stories->related($story->{stoid});
+    my $related = $stories->get_related_items(stoid => $story->{stoid});
+    my $histories = [];
+    for my $i (@$related) {
+        if ($i->{type} eq "submission") {
+            push @$histories, $i;
+        }
+    }
     #$c->app->log->debug(dumper($related));
 
     my $params = $stories->parameters($story->{stoid});
@@ -42,6 +48,7 @@ sub story {
                discussion => $discuss,
                comments => $comments,
                related => $related,
+               histories => $histories,
                params => $params,
                authors => $authors,
                use_captcha => 1,
index 414d564..9b81d98 100644 (file)
       [%- INCLUDE common/article/article hide_more_link=1 -%]
       <article-item></article-item>
     </div>    
+    <div class="next-prev-story">
+      [%- IF params.prev_stoid && params.prev_stoid.story -%]
+      <li>前の記事:<a href="/story/[% params.prev_stoid.story.sid %]">
+          [% params.prev_stoid.story.title %]
+      </a></li>
+      [%- END -%]
+      [%- IF params.next_stoid && params.next_stoid.story -%]
+      <li>次の記事:<a href="/story/[% params.next_stoid.story.sid %]">
+          [% params.next_stoid.story.title %]
+      </a></li>
+      [%- END -%]
+    </div>
+    <div class="history">
+      [%- FOREACH item IN histories -%]
+      <span class="title">
+        <a href="/[% item.type %]/[% item.key_id %]">[% item.title %]</a>
+      </span>
+      [%- END -%]
+    </div>
     <div class="related">
       <h3>関連リンク</h3>
       <ul>
         [%- FOREACH item IN related -%]
-        <li><a href="/[% item.type %]/[% item.key_id %]">[% item.title %]</a></li>
-        [%- END -%]
-        [%- IF params.prev_stoid && params.prev_stoid.story -%]
-        <li>前の記事:<a href="/story/[% params.prev_stoid.story.sid %]">
-            [% params.prev_stoid.story.title %]
-        </a></li>
+        [%- IF item.type == "story" -%]
+        <li>
+          <div class="topic-icon">
+            [%- IF item.primary_topic.image.length -%]
+            <img src="[% Site.topic_icon_base_url %]/[% item.primary_topic.image %]" />
+            [%- END -%]
+          </div>
+          <span class="title">
+            <a href="/[% item.type %]/[% item.key_id %]">[% item.title %]</a>
+          </span>
+        </li>
         [%- END -%]
-        [%- IF params.next_stoid && params.next_stoid.story -%]
-        <li>次の記事:<a href="/story/[% params.next_stoid.story.sid %]">
-            [% params.next_stoid.story.title %]
-        </a></li>
         [%- END -%]
       </ul>
     </div>