widget.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. <switch name="comment_type">
  2. <case value="1">
  3. <div style="">
  4. <br>
  5. <h3>评论<span class="badge">{$total}</span></h3>
  6. <div class="comment-area" id="comments" style="">
  7. <form class="comment-form" action="{:cmf_plugin_url('DComment://Index/add')}" method="post" style="">
  8. <div class="form-group" style="">
  9. <div class="comment-postbox-wraper" style="">
  10. <textarea name="content" required class="form-control" rows="5"></textarea>
  11. </div>
  12. </div>
  13. <div class="form-group">
  14. <button type="submit" class="btn pull-right btn-primary js-ajax-submit" id="plugin-comment-comment-box-submit-btn">
  15. <i class="fa fa-comment-o"></i> 发表评论
  16. </button>
  17. </div>
  18. <input type="hidden" name="object_title" value="{$object_title}">
  19. <input type="hidden" name="table_name" value="{$table_name}">
  20. <input type="hidden" name="object_id" value="{$object_id}">
  21. <input type="hidden" name="url" value='{$url}'>
  22. <input type="hidden" name="to_user_id" value="{$user_id}">
  23. <input type="hidden" name="parent_id" value="0">
  24. <div class="clearfix"></div>
  25. </form>
  26. <script class="comment-reply-box-tpl" type="text/html">
  27. <div class="clearfix"></div>
  28. <div class="comment-reply-submit">
  29. <div class="comment-reply-box">
  30. <input type="text" class="textbox form-control" placeholder="回复">
  31. </div>
  32. <button class="btn pull-right" onclick="commentSubmit(this);" style="margin-top: 5px;">回复</button>
  33. </div>
  34. </script>
  35. <div class="comments">
  36. <volist name="comments" id="v">
  37. <hr style="margin: 5px 0;">
  38. <div id="comment{$v.id}" class="comment" data-id="{$v.id}" data-user_id="{$v.user_id}" data-username="{$v.username}">
  39. <div>
  40. <a class="pull-left" href="{:cmf_url('user/index/index',array('id'=>$v.user_id))}" style="margin-right: 10px;">
  41. <img class="media-object avatar" src="{:cmf_url('user/public/avatar',array('id'=>$v.id))}"></a>
  42. <div>
  43. <a href="{:cmf_url('user/index/index',array('id'=>$v.user_id))}">{$v.username}</a>:
  44. <br>
  45. <span class="time">{:date('m-d H:i',$v.create_time)}</span>
  46. </div>
  47. <div class="clearfix"></div>
  48. </div>
  49. <div class="comment-body">
  50. <div class="comment-content">
  51. <gt name="v.parent_id" value="0">@<a href="{:cmf_url('user/index/index',array('id'=>$v.to_user_id))}">{$v.to_username}</a></gt> {$v.content|htmlspecialchars_decode} </div>
  52. <div class="pull-right">
  53. <a onclick="commentReply(this);" href="javascript:;"><i class="fa fa-comment"></i>回复</a>
  54. <!--<a href="{:cmf_url('user/index/index',array('id'=>$v.user_id))}"><i class="fa fa-rmb"></i>打赏TA</a>-->
  55. </div>
  56. </div>
  57. </div>
  58. </volist>
  59. <ul class="pagination">{$page}</ul>
  60. </div>
  61. </div>
  62. <script>
  63. Wind.use('ajaxForm', 'cookie', function() {
  64. var $comment_form = $(".comment-area .comment-form");
  65. var intervel = "{$comment_interval|default='5'}";
  66. $(".js-ajax-submit", $comment_form).on("click", function(e) {
  67. var btn = $(this),
  68. form = btn.parents(".comment-form");
  69. var d = Date.parse(new Date()) / 1000;
  70. if ($.cookie('com') && (d - $.cookie('com')) < intervel) {
  71. $('<span class="tips_success alert-danger">请' + intervel + '秒后再评论</span>').appendTo(btn.parent()).fadeIn('slow').delay(1000).fadeOut(function() {})
  72. return false;
  73. }
  74. e.preventDefault();
  75. var url = btn.data('action') ? btn.data('action') : form.attr('action');
  76. $.ajax({
  77. url: url,
  78. dataType: 'json',
  79. type: "POST",
  80. beforeSend: function() {
  81. var text = btn.text();
  82. //按钮文案、状态修改
  83. btn.text(text + '中...').prop('disabled', true).addClass('disabled');
  84. },
  85. data: form.serialize(),
  86. success: function(data, textStatus, jqXHR) {
  87. var text = btn.text();
  88. //按钮文案、状态修改
  89. btn.removeClass('disabled').text(text.replace('中...', '')).parent().find('span').remove();
  90. btn.removeProp('disabled').removeClass('disabled');
  91. if (data.code == 1) {
  92. $('<span class="tips_success alert-danger">' + data.msg + '</span>').appendTo(btn.parent()).fadeIn('slow').delay(1000).fadeOut(function() {});
  93. $.cookie('com', Date.parse(new Date()) / 1000);
  94. form.find("[name='content']").val('');
  95. window.location.reload();
  96. } else if (data.code == 0) {
  97. $('<span class="tips_error alert-danger">' + data.msg + '</span>').appendTo(btn.parent()).fadeIn('fast');
  98. btn.removeProp('disabled').removeClass('disabled');
  99. }
  100. // if (data.code == 1) {
  101. // var $comments = form.siblings(".comments");
  102. // var comment_tpl = btn.parents(".comment-area").find(".comment-tpl").html();
  103. // var $comment_tpl = $(comment_tpl);
  104. // $comment_tpl.attr("data-id", data.data.id);
  105. // var $comment_postbox = form.find("[name='content']");
  106. // var comment_content = $comment_postbox.val();
  107. // $comment_tpl.find(".comment-content .content").html(comment_content);
  108. // if (hljs) {
  109. // $('pre', $comment_tpl).each(function(i, block) {
  110. // hljs.highlightBlock(block);
  111. // });
  112. // }
  113. // $comments.prepend($comment_tpl);
  114. // }
  115. },
  116. error: function(data) {
  117. $('<span class="tips_error alert-danger">' + data.msg + '</span>').appendTo(btn.parent()).fadeIn('fast');
  118. btn.removeProp('disabled').removeClass('disabled');
  119. }
  120. });
  121. return false;
  122. });
  123. });
  124. function commentReply(obj) {
  125. $(".comments .comment-reply-submit").hide();
  126. var $this = $(obj);
  127. var $comment_body = $this.parents(".comments > .comment> .comment-body");
  128. var $comment = $this.parents(".comment");
  129. var commentid = $comment.data("id");
  130. var username = $comment.data("username");
  131. var $commentReplySubmit = $comment_body.find(".comment-reply-submit");
  132. if ($commentReplySubmit.length) {
  133. $commentReplySubmit.show();
  134. } else {
  135. var comment_reply_box_tpl = $comment_body.parents(".comment-area").find(".comment-reply-box-tpl").html();
  136. $commentReplySubmit = $(comment_reply_box_tpl);
  137. $comment_body.append($commentReplySubmit);
  138. }
  139. var $replyTextbox = $commentReplySubmit.find(".textbox");
  140. $replyTextbox.attr('placeholder', '@' + username);
  141. $replyTextbox.focus();
  142. $commentReplySubmit.data("replyid", commentid);
  143. }
  144. function commentSubmit(obj) {
  145. Wind.use('noty', function() {
  146. var $this = $(obj);
  147. var $commentReplySubmit = $this.parents(".comment-reply-submit");
  148. var $replyTextbox = $commentReplySubmit.find(".textbox");
  149. var reply_content = $replyTextbox.val();
  150. if (reply_content == '') {
  151. $replyTextbox.focus();
  152. return;
  153. }
  154. var $comment_body = $this.parents(".comments > .comment> .comment-body");
  155. var comment_tpl = $comment_body.parents(".comment-area").find(".comment-tpl").html();
  156. var $comment_tpl = $(comment_tpl);
  157. var replyid = $commentReplySubmit.data('replyid');
  158. var $comment = $(".comments [data-id='" + replyid + "']");
  159. var username = $comment.data("username");
  160. var comment_content = "@" + username + ":" + reply_content;
  161. $comment_tpl.find(".comment-content .content").html(comment_content);
  162. $('.comment-area .comments').prepend($comment_tpl);
  163. var $comment_form = $this.parents(".comment-area").find(".comment-form");
  164. var comment_url = $comment_form.attr("action");
  165. var table_name = $comment_form.find("[name='table_name']").val();
  166. var object_title = $comment_form.find("[name='object_title']").val();
  167. var object_id = $comment_form.find("[name='object_id']").val();
  168. var object_url = $comment_form.find("[name='url']").val();
  169. var user_id = $comment.data("user_id");
  170. $.post(comment_url, {
  171. object_title: object_title,
  172. table_name: table_name,
  173. object_id: object_id,
  174. to_user_id: user_id,
  175. parent_id: replyid,
  176. content: reply_content,
  177. url: object_url
  178. }, function(data) {
  179. if (data.code == 0) {
  180. noty({
  181. text: '回复失败!',
  182. type: 'error',
  183. layout: 'center'
  184. });
  185. $comment_tpl.remove();
  186. }
  187. if (data.code == 1) {
  188. noty({
  189. text: '回复成功!',
  190. type: 'success',
  191. layout: 'center'
  192. });
  193. $comment_tpl.attr("data-id", data.data.id);
  194. $replyTextbox.val('');
  195. }
  196. }, 'json');
  197. $commentReplySubmit.hide();
  198. });
  199. }
  200. </script>
  201. </div>
  202. </case>
  203. <case value="2">
  204. <div style="border: 1px dashed #ddd;padding-top: 20px;">
  205. <div class="alert alert-danger" role="alert">
  206. 评论已关闭!
  207. </div>
  208. </div>
  209. </case>
  210. </switch>