feedback.js
上传用户:andy18
上传日期:2022-05-22
资源大小:83k
文件大小:11k
源码类别:

xml/soap/webservice

开发平台:

Java

  1. // 辅助方法开始
  2. function getCookie(name) {
  3.     var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
  4.     if (arr != null) {
  5.         return unescape(arr[2]);
  6.     }
  7.     return null;
  8. }
  9. function LoginUserName() {
  10.     return getCookie("activeUserName");
  11. }
  12. function IsGuest() {
  13.     return !LoginUserName() || LoginUserName() == "Guest";
  14. }
  15. function GetDisplayUserName() {
  16.     var activeUserName = getCookie("activeUserName");
  17.     if (!activeUserName || activeUserName == "Guest") {
  18.         activeUserName = "匿名用户";
  19.     }
  20.     return activeUserName;
  21. }
  22. function JsonDateTime2String(JsongDateTimeString) {
  23.     var datetimeString = JsongDateTimeString.replace('/', 'new ').replace('/', '');
  24.     datetimeString = '{"DateCreated":' + datetimeString + '}';
  25.     obj = eval('(' + datetimeString + ')');
  26.     datetimeString = obj.DateCreated.toLocaleString();
  27.     return datetimeString;
  28. }
  29. String.prototype.format = function() {
  30.     var str = this;
  31.     for (var i = 0; i < arguments.length; i++) {
  32.         var re = new RegExp('\{' + (i) + '\}', 'gm');
  33.         str = str.replace(re, arguments[i]);
  34.     }
  35.     return str;
  36. }
  37. String.prototype.HtmlEncode = function() {
  38.     return this.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/n/g, '<br />').replace(/r/g, '');
  39. }
  40. // 辅助方法结束
  41. var AnonymousUserName = "匿名用户";
  42. //var AllowAnonymousComment = false; 此变量应该由服务器端输出到页面上
  43. function RefreshCommentLoginStatus() {
  44.     if (IsGuest()) {
  45.         $("#loginTips").show();
  46.         $("#anonymous").parent().hide();
  47.         if (AllowAnonymousComment) {
  48.             $("#imgValidationCode").parents("ul").show();
  49.         }
  50.         else {
  51.             $("#imgValidationCode").parents("ul").hide();
  52.         }
  53.     }
  54.     else {
  55.         $("#loginTips").hide();
  56.         if (AllowAnonymousComment) {
  57.             $("#anonymous").parent().show();
  58.         }
  59.         else {
  60.             $("#anonymous").parent().hide();
  61.         }
  62.         $("#imgValidationCode").parents("ul").hide();
  63.     }
  64.     $('.commentnew').find("#commentUser").text(GetDisplayUserName());
  65. }
  66. function InitEmotions() {
  67.     $(".brow").click(function() {
  68.         var emotionUbbString = "[{0}]".format($(this).attr("src").replace(/.gif/g, '').replace(//images/emotions//g, ''));
  69.         $("#content").focus();
  70.         $("#content").val($("#content").val() + emotionUbbString);
  71.     });
  72. }
  73. function Init() {
  74.     RefreshCommentLoginStatus();
  75.     InitEmotions();
  76.     $("#anonymous").click(function() {
  77.         if (this.checked) {
  78.             $("#imgValidationCode").parents("ul").show();
  79.         }
  80.         else {
  81.             $("#imgValidationCode").parents("ul").hide();
  82.         }
  83.         $("#SubmitFeedback").unbind("click");
  84.         if (!AllowAnonymousComment && IsGuest()) {
  85.             $("#SubmitFeedback").bind("click", OpenLoginDialog);
  86.         }
  87.         else {
  88.             $("#SubmitFeedback").bind("click", PostContent);
  89.         }
  90.     });
  91. }
  92. //文档加载完毕,脚本开始
  93. $(document).ready(function() {
  94.     Init();
  95.     LoadFeedback(CurrentEntryId, CurrentUserName);
  96. });
  97. //{0} = 标题
  98. //{1} = 文章链接
  99. //{2} = 评论ID
  100. //{3} = 评论用户名
  101. //{4} = 评论时间
  102. //{5} = 评论IP
  103. //{6} = 评论内容
  104. //{7} = 用户个人空间链接
  105. //{8} = 专家标识
  106. //{9} = 不同回复级别的样式
  107. //{10} = 不同回复级别的头像样式
  108. var commentItem = "<dl class="{9}"><dt><a id="{2}" style="display: none" title="permalink: {0}" href="{1}#{2}"></a><a {7} target="_blank" rel="nofollow">{3}</a>{8}&nbsp;发表于{4}&nbsp;&nbsp;<span style='display:none;'>IP:{5}</span><a href="mailto:webmaster@csdn.net?subject=Comment Report!!!&body=Author:{3} URL:{1}">举报</a><a href="javascript:Reply({2},'{3}')">回复</a><span class='delete'><a href='javascript:DeleteFeedback({2})'>删除</a></span></dt><dd class="{10}"><img height="40px" width="40px" alt="" src="http://avatar.csdn.net/p/{3}/2"/></dd><dd>{6}</dd></dl>";
  109. var expertIcon = "<img src="http://blog.csdn.net/images/ex.gif"  alt ="博客专家" title="博客专家" style="vertical-align:top":>"
  110. function Emotion2Html(str) {
  111.     return str.replace(/[(e[0][0-9]|e10)]/ig, "<img src='http://blog.csdn.net/images/emotions/$1.gif'/>");
  112. }
  113. //拼接一条评论正文Html
  114. function BuildContent(title, sourceUrl, id, author, dateCreated, ip, body, parentId, isExpert) {
  115.     var userLink;
  116.     if (author == AnonymousUserName) {
  117.         userLink = "";
  118.     }
  119.     else {
  120.         userLink = "href="http://hi.csdn.net/{0}"".format(author);
  121.     }
  122.     return commentItem.format(title, sourceUrl, id, author, dateCreated, ip, Emotion2Html(body), userLink, isExpert ? expertIcon : "", parentId > 0 ? "ask" : "question", parentId > 0 ? "askauthor" : "quesauthor");
  123. }
  124. function InList(one, List) {
  125.     var result = false;
  126.     $.each(List, function(i, item) {
  127.         if (item == one) {
  128.             result = true;
  129.         }
  130.     });
  131.     return result;
  132. }
  133. var t_CommentHost = "http://comments.blog.csdn.net";
  134. var t_CommentHandler = t_CommentHost + "/feedback.ashx?jsoncallback=?&{0}";
  135. function LoadFeedback(entryId, userName) {
  136.     var queryString = "action=get&entryId=" + entryId + "&userName=" + userName + "&d=" + Math.random();
  137.     $.getJSON(t_CommentHandler.format(queryString), function(data) {
  138.         $.each(data.Items, function(i, item) {
  139.             if (item.parentId <= 0) {
  140.                 var html = BuildContent(item._title, item._sourceurl, item._id, item._author, JsonDateTime2String(item._datecreated), item.ipAddress, item._body, item.parentId, InList(item._author, data.Experts));
  141.                 $('#commentslist').append(html);
  142.             }
  143.         });
  144.         $.each(data.Items, function(i, item) {
  145.             if (item.parentId > 0) {
  146.                 var html = BuildContent(item._title, item._sourceurl, item._id, item._author, JsonDateTime2String(item._datecreated), item.ipAddress, item._body, item.parentId, InList(item._author, data.Experts));
  147.                 var prvItem = $('#' + item.parentId).parent().parent();
  148.                 while (prvItem.next(".ask").length > 0) {
  149.                     prvItem = prvItem.next(".ask");
  150.                 }
  151.                 prvItem.after(html);
  152.             }
  153.         });
  154.         LoadReply(entryId, userName);
  155.         $("#SubmitFeedback").unbind("click");
  156.         if (!AllowAnonymousComment && IsGuest()) {
  157.             $("#SubmitFeedback").bind("click", OpenLoginDialog);
  158.         }
  159.         else {
  160.             $("#SubmitFeedback").bind("click", PostContent);
  161.         }
  162.     });
  163. }
  164. var Reply2ParentId;
  165. var Reply2UserName;
  166. function Reply(reply2ParentId, reply2UserName) {
  167.     Reply2ParentId = reply2ParentId;
  168.     Reply2UserName = reply2UserName;
  169.     $("#content").focus();
  170.     var oriContent = $("#content").val().replace(/回复.*?:/i, "");
  171.     $("#content").val("回复 " + reply2UserName + ":" + oriContent);
  172. }
  173. function DeleteFeedback(feedbackId) {
  174.     if (confirm('您确定要删除吗?')) {
  175.         var queryString = "action=ownerdelete&entryId=" + CurrentEntryId + "&commentId=" + feedbackId;
  176.         $.getJSON(t_CommentHandler.format(queryString), function(data) {
  177.             if (data == "OK") {
  178.                 $("#" + feedbackId).parent().parent().remove();
  179.             }
  180.         });
  181.     }
  182. }
  183. function HideDeleteBtn() {
  184.     if (IsGuest() || LoginUserName() != CurrentUserName) {
  185.         $(".delete").hide();
  186.     }
  187. }
  188. function LoadReply(entryId, userName) {
  189.     var queryString = "action=getreply&entryId=" + entryId + "&userName=" + userName + "&d=" + Math.random();
  190.     $.getJSON(t_CommentHandler.format(queryString), function(data) {
  191.         $.each(data, function(i, item) {
  192.             var feedbackId = item.FeedbackId;
  193.             var feedbackUser = $('#' + feedbackId).next().text();
  194.             $('#' + feedbackId).parent().parent().after(BuildContent(item.Title, "", item.ReplyId, userName, JsonDateTime2String(item.DateCreated), item.IpAddress, "回复 " + feedbackUser + ":" + item.Body, feedbackId));
  195.         });
  196.         HideDeleteBtn();
  197.     });
  198. }
  199. function GetArticleTitle() {
  200.     var text = $('.title_txt').text();
  201.     for (var i = 0; i < $('.title_txt').children().length; i++) {
  202.         text = text.replace($('.title_txt').children().eq(i).text(), "");
  203.     }
  204.     return $.trim(text.replace(/(^s*)|(s*$)/g, ""));
  205. }
  206. function GetArticleUrl() {
  207.     var url = document.URL;
  208.     //去掉url的评论锚点
  209.     if (url.lastIndexOf('#') != -1) {
  210.         url = url.substr(0, url.lastIndexOf('#'));
  211.     }
  212.     return url;
  213. }
  214. function PostContent() {
  215.     var anonymous = $("#anonymous").attr("checked");
  216.     var code = $("#code").val();
  217.     var content = $("#content").val();
  218.     var ownerUserName = CurrentUserName;
  219.     var entryId = CurrentEntryId;
  220.     var title = GetArticleTitle();
  221.     var url = GetArticleUrl();
  222.     var reply2 = /回复.*?:/i.test(content);
  223.     var reply2ParentId = reply2 ? Reply2ParentId : 0;
  224.     var reply2UserName = reply2 ? Reply2UserName : "";
  225.     
  226.     var oriContent = $("#content").val().replace(/回复.*?:/i, "");
  227.     
  228.     var queryString = "action=post&anonymous=" + anonymous + "&url=" + encodeURIComponent(url) + "&entryId=" + entryId + "&reply2ParentId=" + reply2ParentId + "&reply2UserName=" + reply2UserName + "&code=" + code + "&owner=" + ownerUserName + "&title=" + encodeURIComponent(title) + "&content=" + encodeURIComponent(content) + "&d=" + Math.random();
  229.     $("#SubmitFeedback").unbind("click");
  230.     //$("#SubmitFeedback").val("正在提交,请稍候...");
  231.     $.getJSON(t_CommentHandler.format(queryString), function(response) {
  232.         if (response.Status > 0) {
  233.             var html = BuildContent(title, location, response.CommentId, anonymous ? AnonymousUserName : GetDisplayUserName(), new Date().toLocaleString(), response.ClientIp, content.HtmlEncode(), reply2ParentId, response.Status == 2);
  234.             if (reply2ParentId <= 0) {
  235.                 $('#commentslist').append(html);
  236.             }
  237.             else {
  238.                 var prvItem = $('#' + reply2ParentId).parent().parent();
  239.                 while (prvItem.next(".ask").length > 0) {
  240.                     prvItem = prvItem.next(".ask");
  241.                 }
  242.                 prvItem.after(html);
  243.             }
  244.             HideDeleteBtn();
  245.             $("#content").val("");
  246.             $("#code").val("");
  247.             ChangeIdentifyingCode();
  248.         }
  249.         else {
  250.             alert(response.ErrorMsg);
  251.         }
  252.         $("#SubmitFeedback").bind("click", PostContent);
  253.         //$("#SubmitFeedback").val("提交");
  254.     });
  255. }