OSDN Git Service

template: show comment score as 'badge' style, and add some functions to metamoderate
authorhylom <hylom@users.sourceforge.jp>
Fri, 27 Jan 2017 16:47:20 +0000 (01:47 +0900)
committerhylom <hylom@users.sourceforge.jp>
Fri, 27 Jan 2017 16:47:20 +0000 (01:47 +0900)
src/newslash_web/css/bootstrap.less
src/newslash_web/css/main/comment.less
src/newslash_web/lib/Newslash/Web/Controller/Story.pm
src/newslash_web/public/js/comments.js
src/newslash_web/templates/common/comment.html.tt2
src/newslash_web/templates/common/comments.html.tt2
src/newslash_web/templates/common/core_js.html.tt2

index fdbe5db..4dd8fd7 100644 (file)
@@ -33,7 +33,7 @@
 // @import "bootstrap/pagination.less";
 // @import "bootstrap/pager.less";
 // @import "bootstrap/labels.less";
-// @import "bootstrap/badges.less";
+@import "bootstrap/badges.less";
 // @import "bootstrap/jumbotron.less";
 // @import "bootstrap/thumbnails.less";
 @import "bootstrap/alerts.less";
index 42d4ddc..c282b79 100644 (file)
            font-size: 80%;
            color: @comment-property-text-color;
        }
+        .score {
+            cursor: pointer;
+        }
+        .moderate-reasons {
+           font-size: 80%;
+           color: @comment-property-text-color;
+            border: 1px solid @border-color-inactive;
+            padding: 2px 4px;
+            margin-top: 4px;
+            background: @article-background;
+
+        }
     }
     footer {
         .signature {
index 7d886ec..3afb623 100644 (file)
@@ -28,10 +28,8 @@ sub story {
     #$c->app->log->debug(dumper($params));
 
     my $user = $c->stash('user');
-    if ($user->{is_admin}) {
-        my $mod_reasons = $c->model('moderations')->reasons;
-        $c->stash(moderate_reasons => $mod_reasons);
-    }
+    my $mod_reasons = $c->model('moderations')->reasons;
+    $c->stash(moderate_reasons => $mod_reasons);
 
     $c->render(story => $story,
                discussion => $discuss,
index 9f1aabc..75c4020 100644 (file)
@@ -8,22 +8,17 @@ Vue.component('comment', {
     return {
       moderateReason: 0,
       moderateMessage: '',
+      displayMetamodForm: 0,
     };
   },
   props: {
     comment: Object,
-    fold: Boolean,
-    hide: Boolean,
-    hiddenBox: Boolean,
-    hiddenCount: Number,
     displayForce: Boolean,
-    enableReply: Boolean,
-    enableModerate: Boolean,
-    showSignature: Boolean,
-    showScore: Boolean,
   },
   methods: {
-    // showReplyForm 
+    showMetamodForm: function () {
+      this.displayMetamodForm = !this.displayMetamodForm;
+    },
     showReplyForm: function (reply) {
       reply.showForm = 1;
     },
@@ -52,6 +47,22 @@ Vue.component('comment', {
     },
   },
   computed: {
+    signedPoints: function () {
+      if (this.comment.points < 0) {
+        return "-" + this.comment.points;
+      } else if (this.comment.points > 0) {
+        return "+" + this.comment.points;
+      } else {
+        return "";
+      }
+    },
+    reasonText: function () {
+      if (this.comment.reason != 0) {
+        return ":" + vm.modReasons[this.comment.reason];
+      } else {
+        return;
+      }
+    },
     fold: function () {
       return this.comment.points < vm.userConfig.fold_threshold && !this.displayForce
     },
@@ -84,7 +95,7 @@ Vue.component('comment', {
       return count[0];
     },
     enableModerate: function () {
-      return vm.user.moderator && !vm.archived;
+      return vm.user.admin || (vm.user.moderator && !vm.archived);
     },
     enableReply: function () {
       return !vm.archived;
@@ -230,6 +241,7 @@ comments.run = function run (params) {
     showConfig: 0,
     user: user,
     configMessage: "",
+    modReasons: params.modReasons,
     urls: {
       commentPost: "/api/v1/comment",
       configSave: "/api/v1/user",
index 1bbe187..9cbff29 100644 (file)
@@ -9,15 +9,33 @@
   <header>
     <h1 :title-orig="comment.subject_orig" v-on:click="showItem()">
       <span class="subject" v-text="comment.subject">[% comment.subject %]</span>
-      <span class="score" v-show="showScore">(スコア:<span v-text="comment.points">[% comment.points %]</span>)</span>
     </h1>
     <div class="property">
+      <span class="score badge" v-show="comment.lastmod != 0 && comment.point == 0"
+            v-on:click="showMetamodForm">±0</span>
+      <span class="score badge" v-show="showScore && comment.points != 0" v-on:click="showMetamodForm">
+        <span v-text="signedPoints">
+          [%- IF !vuejs -%]
+          [% IF comment.points > 0 %]+[% comment.points %][% END -%]
+          [% IF comment.points < 0 %]-[% comment.points %][% END -%]
+          [%- END -%]                                 
+        </span>
+        <span v-text="reasonText">[% comment.reason %]</span>
+      </span>
       <span class="author">by <span v-text="comment.author">[% comment.author %]</span></span>
       <span class="date">on <span v-text="comment.date">[% comment.date %]</span></span>
       <span class="cid">(#<span v-text="comment.cid">[% comment.cid %]</span>)</span>
+      [%- IF user.is_admin -%]
       <span class="ipid"><span v-text="comment.ipid">[% comment.ipid %]</span></span>
       <span class="subnetid"><span v-text="comment.subnetid">[% comment.subnetid %]</span></span>
+      [%- END -%]
     </div>
+    [%- IF vuejs -%]
+    <div class="moderate-reasons" v-if="displayMetamodForm">
+      モデレーション履歴:
+      <ol></ol>
+    </div>
+    [%- END -%]
   </header>
   <div class="body contents-text" v-html="comment.comment">[% comment.comment %]</div>
   <footer>
index 12429e4..1fb3557 100644 (file)
@@ -1,5 +1,5 @@
 <script type="text/x-template" id="comment-template">
-  [%- INCLUDE common/comment comment={} -%]
+  [%- INCLUDE common/comment comment={} vuejs=1-%]
 </script>
 
 <script type="text/x-template" id="comment-form-template">
   user: user,
   article: article,
   discussion: discussion,
+  modReasons: {
+    [%- FOREACH item IN moderate_reasons -%]
+    [% item.key %] : "[% item.value.name %]",
+    [%- END -%]
+  },
   });
 </script>
index 8bed127..4574508 100644 (file)
@@ -4,7 +4,7 @@
     nickname: "[% user.nickname %]",
     login: [% user.is_login %],
     uid: [% user.uid %],
-    [% IF user.is_admin %]moderator: 1,[% END %]
+    [% IF user.is_admin %]moderator: 1, admin: 1,[% END %]
   };
   var siteInfo = { topic_icon_base_url: "[% Site.topic_icon_base_url %]", };
 </script>