[TUTs] fb_Vote đánh giá bài viết và thông báo lên tường

  Bài viết hay nhất1
First topic message reminder :

fb_Vote đánh giá bài viết và thông báo lên tường


fb_Vote sẽ thay đổi giao diện nút #vote mặc định thành giao diện nút like của #facebook().

Chức năng


  1. Vote plus chuyển thành nút Thích, có thể gửi một lời khen lên tường người viết. (nếu họ cho phép)
  2. Vote minus chuyển thành nút Báo xấu, có thể gửi một báo cáo đến Ban quản trị diễn đàn.
  3. Các thông số hiển thị ngay bên cạnh nút bấm.
  4. Cả 2 nút đều có thể gửi thông điệp trực tiếp.
  5. Thông điệp không được gửi nếu người dùng không nhấn Gửi.
  6. Có một thông điệp mặc định nếu người dùng không nhập nội dung.


Demo


fb_Vote chưa nhấn


Sau khi nhấn có thể gửi tin


Hướng dẫn


Bước 1

Tắt kiểm duyệt và kích hoạt chức năng Vote, Report của diễn đàn.

ACP >> QLTT >> Forum >> Security
Unauthorize unofficial forms to post messages and private messages on the forum : Không

ACP >> Modules >> Points and reputation >> Points system
Activate points system :
Display average points per message :

ACP >> QLTT >> Reports >> Report Post Hack - Configuration
Report status : Members
Allows users to report their own posts. Self-Reports :
Allows your users to edit their own reports. Report edit by users :


Bước 2

ACP >> Display >> Pictures and Colors >> Colors >> CSS Stylesheet

Code:
/* fb_Vote - DEVs.forumvi.com */
.vote-Zzbaivong, .vote-Zzbaivong *,.vote-Zzbaivong *:before,.vote-Zzbaivong *:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}
.vote-Zzbaivong{margin-left:13em} /* 13em là khoảng cách đến mép trái, sửa nó về 0 hoặc số khác nếu bị lệch */
.vote-Zzbaivong{float:left;height:26px;line-height:24px;position:relative;text-align:left;white-space:nowrap}
.vote-plus-post,.vote-minus-post{z-index:10;position:absolute;top:32px;left:0;display:none;width:250px;background:#FFF;border:1px solid #F2F2F2;box-shadow:4px 4px 7px 0 #999;padding:5px}
.vote-minus-post{left:120px}
.vote-note{height:20px;line-height:20px;font-size:11px;background:#ffffd3;border:1px solid #F7EB93;margin-bottom:2px;padding:0 5px}
.vote-mess{width:200px;resize:vertical;min-height:40px;height:40px}
.vote-Zzbaivong .vote-send{width:36px;margin-top:0!important;margin-left:2px;cursor:pointer;text-align:center;vertical-align:top;height:40px;background:#0085FF;border:1px #87CEEB;color:#FFF}
.vote-plus-post:before,.vote-minus-post:before{content:'';display:inline-block;border-left:10px solid transparent;border-right:10px solid transparent;border-bottom:10px solid #E2E2E2;position:absolute;left:10px;width:10px;right:-10px;top:-10px}
.vote-plus-post:after,.vote-minus-post:after{content:'';display:inline-block;border-left:9px solid transparent;border-right:9px solid transparent;border-bottom:9px solid #fff;position:absolute;left:11px;right:-9px;width:9px;top:-9px}
.vote-plus{background:url(http://i57.servimg.com/u/f57/17/05/17/70/like10.png) no-repeat 5px 2px #deeaf7;height:24px;border:1px solid #C8D7EC;color:#5089BE!important;font-family:sans-serif;border-radius:2px;display:inline-block;padding:0 5px 0 25px}
.vote-plus:hover{border-color:#6A9AD6}
.vote-plus[href="javascript:;"]{color:#666!important;background-color:#DDD;cursor:no-drop;background-image:url(http://i57.servimg.com/u/f57/17/05/17/70/gpqbxh10.png);border-color:#CCC}
.vote-time{position:relative;border-radius:2px;display:inline-block;height:24px;line-height:22px;border:1px solid #D8D7D7;margin:auto 5px;padding:0 5px}
.vote-time:before{content:'';display:inline-block;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:6px solid #CCC;position:absolute;left:-6px;width:6px;top:5px}
.vote-time:after{content:'';display:inline-block;border-bottom:5px solid transparent;border-top:5px solid transparent;border-right:5px solid #fff;position:absolute;left:-5px;width:5px;top:6px}
.vote-minus{margin-left:20px;color:#666!important}
.vote-minus:hover{color:red!important}
.vote-minus[href="javascript:;"]{color:#C5C5C5!important;cursor:no-drop}

Bước 3

ACP >> Display >> QLTT >> Templates >> viewtopic_body

Tìm và xóa đoạn sau:
Code:
<!-- BEGIN switch_vote_active -->
...
<!-- END switch_vote_active -->
Tìm:
Code:
<div class="post-options profile_{postrow.displayed.PROFILE_POSITION}">
hoặc:
Code:
<div class="post-options">
Và thêm vào bên dưới nó code sau:
Code:
<div class="vote-Zzbaivong">
   <!-- BEGIN switch_vote_active -->
   <a class="vote-plus" href="<!-- BEGIN switch_vote -->{postrow.displayed.switch_vote_active.switch_vote.U_VOTE_PLUS}<!-- END switch_vote -->">
    Thích
    </a>
   <span class="vote-time plus-time">0</span>
   <a class="vote-minus" href="<!-- BEGIN switch_vote -->{postrow.displayed.switch_vote_active.switch_vote.U_VOTE_MINUS}<!-- END switch_vote -->">
    Báo xấu
    </a>
   <span class="vote-time minus-time">0</span>
   <div class="vote-plus-post vote-cmt">
      <p class="vote-note">Gửi một tin nhắn lên tường.</p>
      <textarea class="vote-mess"></textarea>
      <input class="vote-send" tyle="button" value="Gửi" />
   </div>
   <div class="vote-minus-post vote-cmt">
      <p class="vote-note">Gửi báo cáo lỗi về bài viết này.</p>
      <textarea class="vote-mess"></textarea>
      <input class="vote-send" tyle="button" value="Gửi" />
   </div>
   <input class="vote-tip" type="hidden" value="<!-- BEGIN switch_bar -->{postrow.displayed.switch_vote_active.L_VOTE_TITLE}<!-- END switch_bar --><!-- BEGIN switch_no_bar -->{postrow.displayed.switch_vote_active.L_VOTE_TITLE}<!-- END switch_no_bar -->" />
   <!-- END switch_vote_active -->
</div>
Thêm script dưới đây vào cuối temp viewtopic_body:
Code:
<script type="text/javascript">
 //<![CDATA[
 $(".vote-Zzbaivong").each(function() {
   var b = $(this);
   if (b.is(":empty")) b.html('<a class="vote-plus" href="">Thích</a><span class="vote-time plus-time">0</span><a class="vote-minus" href="">Báo xấu</a><span class="vote-time minus-time">0</span>');
   else {
      var a = b.find(".vote-tip").val(),
         c;
      /Message\sreputation\s:/.test(a) ? (c = a.split(/\W/), a = Math.round(parseInt(c[4], 10) / 100 * parseInt(c[7], 10)), c = parseInt(c[7], 10) - a) : a = c = 0;
      b.find(".plus-time").text(a);
      b.find(".minus-time").text(c)
   }
});
$(document).click(function(b) {
   $(".vote-cmt").fadeOut()
});
$(".vote-Zzbaivong").click(function(b) {
   b.stopPropagation()
});
$(".vote-plus, .vote-minus").one("click", function(b) {
   b.preventDefault();
   var a = $(this);
   b = a.attr("href");
   /us\&p_vote\=/.test(this.href) && (a.parent().children(".vote-plus, .vote-minus").attr("href", "javascript:;"), a.next(".vote-time").text(function() {
      return parseInt($(this).text(), 10) + 1
   }), a.parent().find(".vote-plus").css("background-image", "url(http://i57.servimg.com/u/f57/17/05/17/70/preloa10.gif)"), $.get(b, function() {
      a.parent().children(".vote-plus").removeAttr("style")
   }), a.siblings("." + a.attr("class") +
      "-post").fadeIn().children(".vote-mess").focus())
});
$(".vote-send").one("click", function() {
   var b = $(this),
      a = b.closest(".post"),
      c = a.find("a[href^='/report']").attr("href"),
      d = b.parent().children(".vote-mess").val(),
      f = b.parent().children(".vote-note");
   f.text("Đang xử lý...");
   if ("vote-plus-post vote-cmt" == b.parent().attr("class")) {
      var e = "http://" + location.host + location.pathname + "#" + c.replace(/.*p=(\d+).*/, "$1"),
         c = $.trim(a.find(".user a[href^='/u']:not(:has(img)):first").text()),
         a = a.find(".user a[href^='/u']:first").attr("href").replace(/.*\/u(\d+).*/, "$1"),
         e = "Mình thích bài viết của bạn tại [url=" +
         e + "]" + document.title + "[/url]";
      d.replace(/\s/g, "").length && (e = e + "[quote]" + d + "[/quote]");
      $.post("/privmsg", {
         subject: "Bài viết hay",
         message: e,
         username: c,
         u: a,
         mode: "post_profile",
         folder: "profile",
         post: "Send"
      }, function() {
         f.text("Tin nhắn đã được gửi");
         b.closest(".vote-cmt").delay(300).fadeOut()
      })
   } else 3 >= d.replace(/\s/g, "").length && (d = "Bài viết vi phạm nội quy diễn đàn."), $.post(c, {
      message: d,
      post: "Save"
   }, function() {
      f.text("Báo cáo đã được gửi");
      b.closest(".vote-cmt").delay(300).fadeOut()
   })
});
$(".vote-Zzbaivong > a[href='']").attr("href", "javascript:;");
 //]]>
</script>


Cách dùng khác


  1. Không viết lên tường: http://devs.forumvi.com/t15p45-code-fb_vote-danh-gia-bai-viet-va-thong-bao-len-tuong#2170
  2. Tự động viết lên tường: http://devs.forumvi.com/t15p60-code-fb_vote-danh-gia-bai-viet-va-thong-bao-len-tuong#2195


Tác giả

Zzbaivong (devs.forumvi.com)
  Bài viết hay nhất26
#17
Thành viên muốn nhận tin thì phải cho phép tất cả thành viên gửi lên tường.
  Bài viết hay nhất27
À chứ k có tự động hả ông
  Bài viết hay nhất28
Nó là phần đảm bảo quyền riêng tư của thành viên, forumotion đã mặc định như thế rồi nên không thay đổi được.
  Bài viết hay nhất29
Oong fix dum cai js , toi dung bao xau thoi k post len wall
  Bài viết hay nhất30
@phutu01 wrote:Oong fix dum cai js , toi dung bao xau thoi k post len wall
Trong temp, xóa đoạn này:
Code:
<div class="vote-plus-post vote-cmt">
   <p class="vote-note">Gửi một tin nhắn lên tường.</p>
   <textarea class="vote-mess"></textarea>
   <input class="vote-send" tyle="button" value="Gửi" />
</div>
  Bài viết hay nhất31
Đoạn này thì tôi biết xóa rồi , trong js đó ong
  Bài viết hay nhất32
@phutu01 wrote:Đoạn này thì tôi biết xóa rồi , trong js đó ong
Vậy là ổn rồi, sau này đổi ý cũng ko cần sửa linh tinh.
Cần xóa js thì xóa từ dòng 38 -> 56, dòng 57 xóa: } else
  Bài viết hay nhất33
bài nào bị báo xấu quá 5 lần ẩn lun hay là viềng border lại
  Bài viết hay nhất34
Hình như không có chức năng đó, phiên bản này mình quên mất, sẽ cập nhật sau vậy.
  Bài viết hay nhất35
Nhanh nhaanh nhá ông tôi thích thêm viềng bor :D
  Bài viết hay nhất36
Nhìn cái báo xấu ngứa mắt quá cứ mún click 1 cái :v
  Bài viết hay nhất37
Toi dung the nay de an? di on? k nua

.pun div[alt*="doi4"],.pun div[alt*="doi5"] {border:2px solid #333333!important}
.pun div[a*="(1 votes)"],.pun div[a*="(2 votes)"],.pun div[a*="(3 votes)"] {border:0px!important}

<!-- BEGIN switch_vote_active --><!-- BEGIN switch_bar --><!-- BEGIN switch_vote_minus --> alt="doi{postrow.displayed.switch_vote_active.switch_bar.switch_vote_minus.HEIGHT_MINUS}" a="{postrow.displayed.switch_vote_active.L_VOTE_TITLE}"<!-- END switch_vote_minus --><!-- END switch_bar --><!-- END switch_vote_active -->
The author of this message was banned from the forum - See the message
  Bài viết hay nhất39
Do sửa temp, mất class post đấy, đưa demo lên xem nào :v
  Bài viết hay nhất40
@banhuy52 wrote:

ai giúp với gửi hok dc , cứ đang xử lý hoài àk
demo onl + nick test
p/s : link ảnh hơi bá :)
The author of this message was banned from the forum - See the message
  Bài viết hay nhất42
Xem lại bước 1
  Bài viết hay nhất43
Anh baivong có cách nào hiện tên người đã vote ở mỗi bài viết không ạ.
  Bài viết hay nhất44
@markai30 wrote:Anh baivong có cách nào hiện tên người đã vote ở mỗi bài viết không ạ.
Hiện tại thì chưa có.
Với những gì forumotion đang có thì không thể làm được, trừ khi sử dụng dịch vụ thứ 3.
Cách phổ biến nhất hiện giờ là làm hệ thống thanks bằng php (nguồn gốc ý tưởng này theo mình biết là từ Dion-Designs).
Trước đây avacweb có dịch vụ này, nhưng giờ đang tạm đóng cửa vì lý do quá tải.
ZeroGet_Over cũng dự định làm nhưng cũng bỏ dỡ rồi.
The author of this message was banned from the forum - See the message
  Bài viết hay nhất46
Xem trong viewtopic_body còn {postrow.displayed.REPORT_IMG} hay không, nếu thiếu thì bổ sung vào.
The author of this message was banned from the forum - See the message
  Bài viết hay nhất48
Vì thành viên đó chưa cho phép người khác gửi tin lên tường.
Hướng dẫn thành viên chỉnh trong UCP, để cho phép gửi tin.

Ví dụ:
http://www.devs.cf/profile?mode=editprofile&page_profil=preferences
Allow visitor messages on my profile : Tất cả thành viên
The author of this message was banned from the forum - See the message
  Bài viết hay nhất50
Có, nhưng không nên can thiệp quyền riêng tư của thành viên.
Mình cũng sẽ không cho code này, bạn nên viết một thông báo hướng dẫn thành viên, nếu họ muốn biết ai đã nhấn Thích thì sẽ tự chỉnh.
  Bài viết hay nhất51
You cannot reply to topics in this forum