[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ất16

@Admin wrote:Thành viên muốn nhận tin phải cho phép người khác viết lên tường mới được.
Chỉnh trong UCP.
cụ thể hơn được ko admin
  Bài viết hay nhất17
http://devs.forumvi.com/profile?mode=editprofile&page_profil=preferences

Allow visitor messages on my profile : Tất cả thành viên
  Bài viết hay nhất18
Mình dùng ko đc :(

http://www.phutu.vn/t57500-topic

inta

phutu321
  Bài viết hay nhất19
@phutu01 wrote:Mình dùng ko đc :(

http://www.phutu.vn/t57500-topic

inta

phutu321
Temp viewtopic_body của bạn đã sửa mất class mặc định nên nó không tìm được tên người gửi.
Trong phần js của bài hướng dẫn, dòng 4041. Sửa:
.user thành .username.title_profile
  Bài viết hay nhất20
Thay như hướng dẫn
----------------------------
hix mình thử add view mặc định bên forum mặc định lun đấy

http://teenxx.forumotion.net/

dangthivan8A

phutu321
  Bài viết hay nhất21
"4rum mặc định" thì mình chắc chắn 99% là code chạy không lỗi!
1% lỗi là do bạn copy nhầm hoặc lỗi mạng, trình duyệt.
  Bài viết hay nhất22
À ông gửi Security của dev lên tôi kham khảo đc k , chắc bị gì trong này
  Bài viết hay nhất23
Bước 1 có ghi đấy.
Mình cũng vừa kiểm tra lại trên 4rum mặc định rồi mới dám nói thế.
Cậu đã thử hướng dẫn ở #19 chưa?
  Bài viết hay nhất24
xóa rồi
  Bài viết hay nhất25
http://lonme.forumvi.com/t1-topic

phutu01
phutu321

forum này mới tạo lun nè ông
  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á :)
You cannot reply to topics in this forum