v1.0 beta init
This commit is contained in:
207
public/js/app/blog/common.js
Normal file
207
public/js/app/blog/common.js
Normal file
@ -0,0 +1,207 @@
|
||||
// 返回是否是re.Ok == true
|
||||
function reIsOk(re) {
|
||||
return re && typeof re == "object" && re.Ok;
|
||||
}
|
||||
function showAlert(id, msg, type, id2Focus) {
|
||||
$(id).html(msg).removeClass("alert-danger").removeClass("alert-success").removeClass("alert-warning").addClass("alert-" + type).show();
|
||||
if(id2Focus) {
|
||||
$(id2Focus).focus();
|
||||
}
|
||||
}
|
||||
function hideAlert(id, timeout) {
|
||||
if(timeout) {
|
||||
setTimeout(function() {
|
||||
$(id).hide();
|
||||
}, timeout);
|
||||
} else {
|
||||
$(id).hide();
|
||||
}
|
||||
}
|
||||
function ajaxGet(url, param, func) {
|
||||
$.get(url, param, func);
|
||||
}
|
||||
function ajaxPost(url, param, func) {
|
||||
$.post(url, param, func);
|
||||
}
|
||||
function goLogin(){
|
||||
var loginUrl = urlPrefix + '/login?from=' + encodeURI(location.href);
|
||||
location.href = loginUrl;
|
||||
}
|
||||
function goRegister() {
|
||||
var registerUrl = urlPrefix + '/register?from=' + encodeURI(location.href);
|
||||
location.href = registerUrl;
|
||||
}
|
||||
function needLogin() {
|
||||
if(typeof visitUserInfo == "undefined" || !visitUserInfo || !visitUserInfo.UserId) {
|
||||
// 弹框之
|
||||
var loginUrl = urlPrefix + '/login?from=' + encodeURI(location.href);
|
||||
var registerUrl = urlPrefix + '/register?from=' + encodeURI(location.href);
|
||||
var modal = BootstrapDialog.show({
|
||||
title: "你还未登录",
|
||||
message: '<div class="needLogin" style="border:none"><a href="' + loginUrl + '">立即登录</a>, 发表评论.<br />没有帐号? <a href="' + registerUrl +'">立即注册</a>',
|
||||
nl2br: false
|
||||
});
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
function scrollToTarget(t, fixed) {
|
||||
if(!fixed) {
|
||||
fixed = 0;
|
||||
}
|
||||
var $t = $(t)
|
||||
var targetOffset = $t.offset().top + fixed;
|
||||
$('html,body').animate({scrollTop: targetOffset}, 300);
|
||||
}
|
||||
|
||||
var windowParam = 'width=700, height=580, top=180, left=320, toolbar=no, menubar=no, scrollbars=no, location=yes, resizable=no, status=no';
|
||||
function getShareUrl(noteId) {
|
||||
return viewUrl + "/" + noteId;
|
||||
}
|
||||
function getShareTitle(title) {
|
||||
return encodeURI(title + " (来自leanote.com)");
|
||||
}
|
||||
function shareSinaWeibo(noteId, title, pic) {
|
||||
var url = "http://service.weibo.com/share/share.php?title=" + getShareTitle(title) + "&url=" + getShareUrl(noteId);
|
||||
window.open(url, 'Share', windowParam);
|
||||
}
|
||||
function shareTencentWeibo(noteId, title, pic) {
|
||||
var _appkey = '801542571';
|
||||
var url = "http://share.v.t.qq.com/index.php?c=share&a=index&appkey=" + _appkey +"&title=" + getShareTitle(title) + "&url=" + getShareUrl(noteId) +"&pic=" + pic;
|
||||
window.open(url, 'Share', windowParam);
|
||||
}
|
||||
function shareQQ(noteId, title, pic) {
|
||||
var url = 'http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=' + getShareUrl(noteId) + '&title=' + title + '&pics=' + pic;
|
||||
window.open(url, 'Share', windowParam);
|
||||
}
|
||||
function shareRenRen(noteId, title, pic) {
|
||||
var url = 'http://widget.renren.com/dialog/share?resourceUrl=' + getShareUrl(noteId) + '&srcUrl=' + getShareUrl(noteId) + '&title=' + getShareTitle(title) + '&pic=' + pic;
|
||||
window.open(url, 'Share', windowParam);
|
||||
}
|
||||
|
||||
// https://twitter.com/intent/tweet?text=&pic=
|
||||
function shareTwitter(noteId, title, pic) {
|
||||
var url = 'https://twitter.com/intent/tweet?text=' + getShareTitle(title) + '&pic=' + pic;
|
||||
window.open(url, 'Share', windowParam);
|
||||
}
|
||||
// http://www.facebook.com/sharer.php?u=<?php the_permalink();?>&t=<?php the_title(); ?>”
|
||||
function shareFacebook(noteId, title, pic) {
|
||||
var url = ' http://www.facebook.com/sharer.php?t=' + getShareTitle(title) + '&pic=' + pic;
|
||||
window.open(url, 'Share', windowParam);
|
||||
}
|
||||
|
||||
//JavaScript函数:
|
||||
var minute = 1000 * 60;
|
||||
var hour = minute * 60;
|
||||
var day = hour * 24;
|
||||
var halfamonth = day * 15;
|
||||
var month = day * 30;
|
||||
// 2014-01-06T18:29:48.802+08:00
|
||||
|
||||
function goNowToDatetime(goNow) {
|
||||
if(!goNow) {
|
||||
return "";
|
||||
}
|
||||
return goNow.substr(0, 10) + " " + goNow.substr(11, 8);
|
||||
}
|
||||
function getDateDiff(dateTimeStamp){
|
||||
var now = new Date().getTime();
|
||||
var diffValue = now - dateTimeStamp;
|
||||
if(diffValue < 0){
|
||||
return "";
|
||||
}
|
||||
var monthC =diffValue/month;
|
||||
var weekC =diffValue/(7*day);
|
||||
var dayC =diffValue/day;
|
||||
var hourC =diffValue/hour;
|
||||
var minC =diffValue/minute;
|
||||
if(monthC>=1){
|
||||
result=parseInt(monthC) + getMsg("monthsAgo");
|
||||
}
|
||||
else if(weekC>=1){
|
||||
result=parseInt(weekC) + getMsg("weeksAgo");
|
||||
}
|
||||
else if(dayC>=1){
|
||||
result=parseInt(dayC) + getMsg("daysAgo");
|
||||
}
|
||||
else if(hourC>=1){
|
||||
result=parseInt(hourC) + getMsg("hoursAgo");
|
||||
}
|
||||
else if(minC>=1){
|
||||
result=parseInt(minC) + getMsg("minutesAgo");
|
||||
}else {
|
||||
result=getMsg("justNow");
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
function weixin() {
|
||||
var local=window.location.href;
|
||||
var title = $.trim($(".title").text());
|
||||
var desc = $.trim($("#desc").text());
|
||||
var imgUrl = $("#content img").eq(0).attr('src');
|
||||
window.shareData = {
|
||||
"imgUrl": imgUrl,
|
||||
"timeLineLink":local,
|
||||
"sendFriendLink": local,
|
||||
"weiboLink":local,
|
||||
"tTitle": title,
|
||||
"tContent": desc,
|
||||
"fTitle": title,
|
||||
"fContent": desc,
|
||||
"wContent": desc
|
||||
};
|
||||
document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() {
|
||||
// 发送给好友
|
||||
WeixinJSBridge.on('menu:share:appmessage', function (argv) {
|
||||
WeixinJSBridge.invoke('sendAppMessage', {
|
||||
"img_url": window.shareData.imgUrl,
|
||||
"img_width": "200",
|
||||
"link": window.shareData.sendFriendLink,
|
||||
"desc": window.shareData.fContent,
|
||||
"title": window.shareData.fTitle
|
||||
}, function (res) {
|
||||
hs_guide('none');
|
||||
_report('send_msg', res.err_msg);
|
||||
})
|
||||
});
|
||||
|
||||
// 分享到朋友圈
|
||||
WeixinJSBridge.on('menu:share:timeline', function (argv) {
|
||||
WeixinJSBridge.invoke('shareTimeline', {
|
||||
"img_url": window.shareData.imgUrl,
|
||||
"img_width": "200",
|
||||
"link": window.shareData.timeLineLink,
|
||||
"desc": window.shareData.tContent,
|
||||
"title": window.shareData.tTitle
|
||||
}, function (res) {
|
||||
hs_guide('none');
|
||||
_report('timeline', res.err_msg);
|
||||
});
|
||||
});
|
||||
|
||||
// 分享到微博
|
||||
WeixinJSBridge.on('menu:share:weibo', function (argv) {
|
||||
WeixinJSBridge.invoke('shareWeibo', {
|
||||
"content": window.shareData.wContent,
|
||||
"url": window.shareData.weiboLink,
|
||||
}, function (res) {
|
||||
hs_guide('none');
|
||||
_report('weibo', res.err_msg);
|
||||
});
|
||||
});
|
||||
}, false);
|
||||
}
|
||||
|
||||
var LEA = {isMobile: false};
|
||||
function isMobile() {
|
||||
var u = navigator.userAgent;
|
||||
LEA.isMobile = false;
|
||||
LEA.isMobile = /Mobile|Android|iPhone/i.test(u);
|
||||
if(!LEA.isMobile && $(document).width() <= 600){
|
||||
LEA.isMobile = true
|
||||
}
|
||||
}
|
||||
$(function() {
|
||||
isMobile();
|
||||
});
|
@ -1,85 +0,0 @@
|
||||
function scrollTo(self, tagName, text) {
|
||||
var iframe = $("#content");
|
||||
var target = iframe.find(tagName + ":contains(" + text + ")");
|
||||
|
||||
// 找到是第几个
|
||||
// 在nav是第几个
|
||||
var navs = $('#blogNavContent [data-a="' + tagName + '-' + encodeURI(text) + '"]');
|
||||
var len = navs.size();
|
||||
for(var i = 0; i < len; ++i) {
|
||||
if(navs[i] == self) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (target.size() >= i+1) {
|
||||
target = target.eq(i);
|
||||
// 之前插入, 防止多行定位不准
|
||||
var top = target.offset().top;
|
||||
var nowTop = $(document).scrollTop();
|
||||
// 用$("body").scrllTop(10)没反应 firefox下
|
||||
$('html,body').animate({scrollTop: top}, 200);
|
||||
return;
|
||||
}
|
||||
}
|
||||
function genNav() {
|
||||
var $con = $("#content");
|
||||
var html = $con.html();
|
||||
// 构造一棵树
|
||||
// {"h1-title":{h2-title:{}}}
|
||||
var tree = [];//[{title: "xx", children:[{}]}, {title:"xx2"}];
|
||||
var hs = $con.find("h1,h2,h3,h4,h5,h6").toArray();
|
||||
var titles = '<ul>';
|
||||
for(var i = 0; i < hs.length; ++i) {
|
||||
var text = $(hs[i]).text();
|
||||
var tagName = hs[i].tagName.toLowerCase();
|
||||
// scrollTo在page.js中定义
|
||||
titles += '<li class="nav-' + tagName + '"><a data-a="' + tagName + '-' + encodeURI(text)+'" onclick="scrollTo(this, \'' + tagName + '\', \'' + text + '\')">' + text + '</a></li>';
|
||||
}
|
||||
titles += "</ul>";
|
||||
$("#blogNavContent").html(titles);
|
||||
if(!hs.length) {
|
||||
$("#blogNavContent").html(" 无");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function initNav() {
|
||||
var hasNav = genNav();
|
||||
if(!hasNav) {
|
||||
return;
|
||||
}
|
||||
|
||||
var $title = $(".title");
|
||||
var titlePos = $title.offset();
|
||||
var top = titlePos.top + 10;// - $title.height();
|
||||
if(top < 0) {
|
||||
top = 10;
|
||||
}
|
||||
var left = $title.width() + titlePos.left - 100;
|
||||
$("#blogNav").css("top", top).css("left", left);
|
||||
$("#blogNav").show();
|
||||
|
||||
$("#blogNavNav").click(function() {
|
||||
var $o = $("#blogNavContent");
|
||||
if($o.is(":hidden")) {
|
||||
$o.show();
|
||||
} else {
|
||||
$o.hide();
|
||||
}
|
||||
});
|
||||
|
||||
var $d = $(document);
|
||||
function reNav() {
|
||||
var vtop = $d.scrollTop();
|
||||
if(vtop <= top) {
|
||||
$("#blogNav").css("top", top-vtop);
|
||||
} else {
|
||||
// 差距很磊了
|
||||
$("#blogNav").css("top", 10);
|
||||
}
|
||||
}
|
||||
reNav();
|
||||
$(window).scroll(reNav);
|
||||
}
|
509
public/js/app/blog/view.js
Normal file
509
public/js/app/blog/view.js
Normal file
@ -0,0 +1,509 @@
|
||||
function scrollTo(self, tagName, text) {
|
||||
var iframe = $("#content");
|
||||
var target = iframe.find(tagName + ":contains(" + text + ")");
|
||||
|
||||
// 找到是第几个
|
||||
// 在nav是第几个
|
||||
var navs = $('#blogNavContent [data-a="' + tagName + '-' + encodeURI(text) + '"]');
|
||||
var len = navs.size();
|
||||
for(var i = 0; i < len; ++i) {
|
||||
if(navs[i] == self) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (target.size() >= i+1) {
|
||||
target = target.eq(i);
|
||||
// 之前插入, 防止多行定位不准
|
||||
var top = target.offset().top;
|
||||
if(LEA.isMobile) {
|
||||
top -= 50;
|
||||
}
|
||||
var nowTop = $(document).scrollTop();
|
||||
// 用$("body").scrllTop(10)没反应 firefox下
|
||||
$('html,body').animate({scrollTop: top}, 200);
|
||||
return;
|
||||
}
|
||||
}
|
||||
function genNav() {
|
||||
var $con = $("#content");
|
||||
var html = $con.html();
|
||||
// 构造一棵树
|
||||
// {"h1-title":{h2-title:{}}}
|
||||
var tree = [];//[{title: "xx", children:[{}]}, {title:"xx2"}];
|
||||
var hs = $con.find("h1,h2,h3,h4,h5,h6").toArray();
|
||||
var titles = '<ul>';
|
||||
for(var i = 0; i < hs.length; ++i) {
|
||||
var text = $(hs[i]).text();
|
||||
var tagName = hs[i].tagName.toLowerCase();
|
||||
// scrollTo在page.js中定义
|
||||
titles += '<li class="nav-' + tagName + '"><a data-a="' + tagName + '-' + encodeURI(text)+'" onclick="scrollTo(this, \'' + tagName + '\', \'' + text + '\')">' + text + '</a></li>';
|
||||
}
|
||||
titles += "</ul>";
|
||||
$("#blogNavContent").html(titles);
|
||||
if(!hs.length) {
|
||||
$("#blogNavContent").html(getMsg("none"));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function initNav() {
|
||||
var hasNav = genNav();
|
||||
if(!hasNav) {
|
||||
return;
|
||||
}
|
||||
|
||||
var $title = $(".title");
|
||||
var titlePos = $title.offset();
|
||||
var top = titlePos.top + 10;// - $title.height();
|
||||
// 手机下不要与标题在同一高度
|
||||
if(LEA.isMobile){
|
||||
top += 30;
|
||||
}
|
||||
if(top < 0) {
|
||||
top = 10;
|
||||
}
|
||||
|
||||
var left = $title.width() + titlePos.left - 100;
|
||||
$("#blogNav").css("top", top).css("left", left);
|
||||
$("#blogNav").show();
|
||||
|
||||
$("#blogNavNav").click(function() {
|
||||
var $o = $("#blogNavContent");
|
||||
if($o.is(":hidden")) {
|
||||
$o.show();
|
||||
} else {
|
||||
$o.hide();
|
||||
}
|
||||
});
|
||||
|
||||
var $d = $(document);
|
||||
function reNav() {
|
||||
var vtop = $d.scrollTop();
|
||||
if(vtop <= top) {
|
||||
$("#blogNav").css("top", top-vtop);
|
||||
} else {
|
||||
// 差距很磊了
|
||||
if(LEA.isMobile) {
|
||||
$("#blogNav").css("top", 50);
|
||||
} else {
|
||||
$("#blogNav").css("top", 10);
|
||||
}
|
||||
}
|
||||
}
|
||||
reNav();
|
||||
$(window).scroll(reNav);
|
||||
}
|
||||
|
||||
var C = {
|
||||
info: null,
|
||||
noteId: noteId,
|
||||
preLikeNum: preLikeNum,
|
||||
commentNum: commentNum,
|
||||
likeBtnO: $("#likeBtn"),
|
||||
likeNumO: $("#likeNum"),
|
||||
tLikersO: $("#tLikers"),
|
||||
likersO: $("#likers"),
|
||||
tCommentsO: $("#tComments"),
|
||||
commentsO: $("#comments"),
|
||||
|
||||
commentBtnO: $("#commentBtn"),
|
||||
|
||||
commentsLoadingO: $(".comments-loading"),
|
||||
commentsMoreO: $(".comments-more"),
|
||||
|
||||
commentBoxO: $(".comment-box"),
|
||||
init: function() {
|
||||
var self = this;
|
||||
if(UserBlogInfo.CanComment && UserBlogInfo.CommentType != "disqus") {
|
||||
self.initLikeAndComments();
|
||||
} else {
|
||||
self.initLike();
|
||||
}
|
||||
self.initEvent();
|
||||
self.incReadNum();
|
||||
},
|
||||
incReadNum: function() {
|
||||
var self = this;
|
||||
if(!$.cookie(self.noteId)) {
|
||||
$.cookie(self.noteId, 1);
|
||||
ajaxGet(staticUrl + "/blog/incReadNum", {noteId: self.noteId});
|
||||
}
|
||||
},
|
||||
initLike: function() {
|
||||
var self = this;
|
||||
ajaxGet(staticUrl + "/blog/getLike", {noteId: self.noteId}, function(ret) {
|
||||
self.info = ret;
|
||||
self.toggleLikeBtnActive();
|
||||
self.renderLikers();
|
||||
});
|
||||
},
|
||||
initLikeAndComments: function() {
|
||||
var self = this;
|
||||
ajaxGet(staticUrl + "/blog/getLikeAndComments", {noteId: self.noteId}, function(ret) {
|
||||
self.info = ret;
|
||||
self.toggleLikeBtnActive();
|
||||
self.renderLikers();
|
||||
// 是否需要renderComments?
|
||||
self.info.commentUserInfo = self.info.commentUserInfo || {};
|
||||
// 为了防止第一条评论找不到用户信息情况
|
||||
if(visitUserInfo.UserId) {
|
||||
self.info.commentUserInfo[visitUserInfo.UserId] = visitUserInfo;
|
||||
}
|
||||
self.renderComments();
|
||||
|
||||
self.commentBoxO.removeClass("hide");
|
||||
self.commentsLoadingO.addClass("hide");
|
||||
if(self.info.pageInfo.TotalPage > self.info.pageInfo.CurPage) {
|
||||
self.commentsMoreO.removeClass("hide");
|
||||
self.initMoreComments();
|
||||
}
|
||||
});
|
||||
},
|
||||
initMoreComments: function() {
|
||||
var self = this;
|
||||
self.commentsMoreO.find("a").click(function(){
|
||||
if(self.info.pageInfo.TotalPage > self.info.pageInfo.CurPage) {
|
||||
self.commentsMoreO.addClass("hide");
|
||||
self.commentsLoadingO.removeClass("hide");
|
||||
ajaxGet(staticUrl + "/blog/listComments", {noteId: self.noteId, page: self.info.pageInfo.CurPage+1}, function(ret) {
|
||||
var pageInfo = ret.pageInfo;
|
||||
var comments = ret.comments;
|
||||
var commentUserInfo = ret.commentUserInfo;
|
||||
|
||||
$.extend(self.info.commentUserInfo, commentUserInfo);
|
||||
|
||||
// 渲染之
|
||||
for(var i in comments) {
|
||||
var comment = comments[i];
|
||||
comment = self.parseComment(comment);
|
||||
}
|
||||
var html = self.tCommentsO.render({comments: comments, visitUserInfo: visitUserInfo});
|
||||
self.commentsO.append(html);
|
||||
|
||||
self.info.pageInfo = pageInfo;
|
||||
|
||||
if(self.info.pageInfo.TotalPage > self.info.pageInfo.CurPage) {
|
||||
self.commentsMoreO.removeClass("hide");
|
||||
} else {
|
||||
self.commentsMoreO.addClass("hide");
|
||||
}
|
||||
|
||||
self.commentsLoadingO.addClass("hide");
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
addCommentRender: function(comment){
|
||||
var self = this;
|
||||
comment = self.parseComment(comment);
|
||||
var html = self.tCommentsO.render({blogUrl: blogUrl, comments: [comment], visitUserInfo: visitUserInfo});
|
||||
self.commentsO.prepend(html);
|
||||
var li = self.commentsO.find("li").eq(0);
|
||||
li.hide();
|
||||
li.show(500);
|
||||
li.addClass("item-highlight");
|
||||
setTimeout(function() {
|
||||
li.removeClass("item-highlight");
|
||||
}, 2000);
|
||||
},
|
||||
parseComment: function(comment) {
|
||||
var self = this;
|
||||
var authorUserId = UserInfo.UserId;
|
||||
commentUserInfo = self.info.commentUserInfo;
|
||||
comment.UserInfo = commentUserInfo[comment.UserId];
|
||||
// 是作者自己
|
||||
if(visitUserInfo.UserId == UserInfo.UserId) {
|
||||
comment.IsMyNote = true;
|
||||
}
|
||||
if(comment.UserId == authorUserId) {
|
||||
comment.IsAuthorComment = true;
|
||||
}
|
||||
if(comment.UserId == visitUserInfo.UserId) {
|
||||
comment.IsMyComment = true;
|
||||
}
|
||||
// 不是回复自己
|
||||
if(comment.ToUserId && comment.ToUserId != comment.UserId) {
|
||||
comment.ToUserInfo = commentUserInfo[comment.ToUserId];
|
||||
if(comment.ToUserInfo.UserId == UserInfo.UserId) {
|
||||
comment.ToUserIsAuthor = true;
|
||||
}
|
||||
}
|
||||
comment.PublishDate = getDateDiff(Date.parse(goNowToDatetime(comment.CreatedTime)));
|
||||
return comment;
|
||||
},
|
||||
// 渲染评论
|
||||
renderComments: function() {
|
||||
var self = this;
|
||||
var comments = self.info.comments || [];
|
||||
if(comments.length == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 整理数据
|
||||
// 回复谁, 是否是作者?
|
||||
// 回复日期, 几天前, 刚刚
|
||||
for(var i in comments) {
|
||||
var comment = comments[i];
|
||||
comment = self.parseComment(comment);
|
||||
}
|
||||
var html = self.tCommentsO.render({blogUrl: blogUrl, comments: comments, visitUserInfo: visitUserInfo});
|
||||
self.commentsO.html(html);
|
||||
},
|
||||
|
||||
// 重新渲染likers
|
||||
reRenderLikers: function(addMe) {
|
||||
var self = this;
|
||||
var likedUsers = self.info.likedUsers || [];
|
||||
for(var i = 0; i < likedUsers.length; ++i) {
|
||||
var user = likedUsers[i];
|
||||
if(user.UserId == visitUserInfo.UserId) {
|
||||
likedUsers.splice(i, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(addMe) {
|
||||
likedUsers = [visitUserInfo].concat(likedUsers);
|
||||
self.info.likedUsers = likedUsers;
|
||||
}
|
||||
self.renderLikers();
|
||||
},
|
||||
renderLikers: function() {
|
||||
var self = this;
|
||||
var users = self.info.likedUsers || [];
|
||||
var html = self.tLikersO.render({blogUrl: blogUrl, users: users});
|
||||
self.likersO.html(html);
|
||||
},
|
||||
toggleLikeBtnActive: function() {
|
||||
var self = this;
|
||||
if(self.info.isILikeIt) {
|
||||
self.likeBtnO.addClass("active");
|
||||
} else {
|
||||
self.likeBtnO.removeClass("active");
|
||||
}
|
||||
},
|
||||
commentNumO: $("#commentNum"),
|
||||
bindCommentNum: function(fix) {
|
||||
var self = this;
|
||||
self.commentNum += fix;
|
||||
self.commentNumO.text(self.commentNum);
|
||||
},
|
||||
initEvent: function() {
|
||||
var self = this;
|
||||
|
||||
// like or not
|
||||
self.likeBtnO.click(function() {
|
||||
if(!visitUserInfo.UserId) {
|
||||
needLogin();
|
||||
return;
|
||||
}
|
||||
ajaxPost(staticUrl + "/blog/likeBlog", {noteId: self.noteId}, function(ret) {
|
||||
if(ret.Ok) {
|
||||
// like
|
||||
if(ret.Item) {
|
||||
var num = self.preLikeNum+1;
|
||||
} else {
|
||||
var num = self.preLikeNum-1;
|
||||
}
|
||||
self.preLikeNum = num >= 0 ? num : 0;
|
||||
self.likeNumO.text(self.preLikeNum);
|
||||
self.info.isILikeIt = ret.Item;
|
||||
self.toggleLikeBtnActive();
|
||||
|
||||
// 重新render likers
|
||||
// 我是否在列表中
|
||||
self.reRenderLikers(ret.Item);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// 显示回复回复
|
||||
$("#comments").on("click", ".comment-reply", function() {
|
||||
var form = $(this).closest("li").find("form");
|
||||
if(form.is(":hidden")) {
|
||||
form.show();
|
||||
form.find("textarea").focus();
|
||||
} else {
|
||||
form.hide();
|
||||
}
|
||||
});
|
||||
$("#comments").on("click", ".reply-cancel", function() {
|
||||
$(this).closest("form").hide();
|
||||
});
|
||||
|
||||
// 回复
|
||||
$(".comment-box").on("click", ".reply-comment-btn", function(e) {
|
||||
e.preventDefault();
|
||||
var commentId = $(this).data("comment-id");
|
||||
var $form = $(this).closest("form");
|
||||
var $content = $form.find("textarea");
|
||||
var content = $.trim($content.val());
|
||||
if(!content) {
|
||||
$content.focus();
|
||||
return;
|
||||
}
|
||||
var t = $(this);
|
||||
t.button("loading");
|
||||
var data = {noteId: self.noteId, toCommentId: commentId, content: content};
|
||||
ajaxPost(staticUrl + "/blog/comment", data, function(ret) {
|
||||
t.button("reset");
|
||||
$content.val("");
|
||||
self.bindCommentNum(1);
|
||||
if(commentId) {
|
||||
$form.hide();
|
||||
}
|
||||
|
||||
if(commentId) {
|
||||
scrollToTarget("#comments", -200);
|
||||
}
|
||||
|
||||
// 添加一个
|
||||
self.addCommentRender(ret.Item);
|
||||
});
|
||||
});
|
||||
|
||||
// 删除
|
||||
$(".comment-box").on("click", ".comment-trash", function(e) {
|
||||
var commentId = $(this).parent().data("comment-id");
|
||||
var t = this;
|
||||
BootstrapDialog.confirm(getMsg("confirmDeleteComment"), function(yes) {
|
||||
if(yes) {
|
||||
ajaxPost(staticUrl + "/blog/deleteComment", {noteId: self.noteId, commentId: commentId}, function(ret) {
|
||||
if(ret.Ok) {
|
||||
var li = $(t).closest("li");
|
||||
li.hide(500); // remove();
|
||||
setTimeout(function() {
|
||||
li.remove();
|
||||
}, 300);
|
||||
|
||||
self.bindCommentNum(-1);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// 点zan
|
||||
$(".comment-box").on("click", ".comment-like", function(e) {
|
||||
var commentId = $(this).parent().data("comment-id");
|
||||
var t = this;
|
||||
|
||||
ajaxPost(staticUrl + "/blog/likeComment", {commentId: commentId}, function(re) {
|
||||
if(re.Ok) {
|
||||
var ret = re.Item;
|
||||
if(ret.Num <= 0) {
|
||||
$(t).parent().find(".like-num").addClass("hide");
|
||||
} else {
|
||||
$(t).parent().find(".like-num").removeClass("hide");
|
||||
$(t).parent().find(".like-num-i").text(ret.Num)
|
||||
}
|
||||
if(ret.IsILikeIt) {
|
||||
$(t).find(".like-text").text(getMsg("unlike"));
|
||||
} else {
|
||||
$(t).find(".like-text").text(getMsg('like'));
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// 举报
|
||||
function report(commentId, noteId, title) {
|
||||
var form = $("#reportMsg").html();
|
||||
var body;
|
||||
var input;
|
||||
var isOver = false;
|
||||
var modal = BootstrapDialog.show({
|
||||
title: title,
|
||||
message: form,
|
||||
nl2br: false,
|
||||
buttons: [{
|
||||
label: getMsg("cancel"),
|
||||
action: function(dialog) {
|
||||
dialog.close();
|
||||
}
|
||||
}, {
|
||||
label: getMsg("confirm"),
|
||||
cssClass: 'btn-primary',
|
||||
action: function(dialog) {
|
||||
if(isOver) {
|
||||
dialog.close();
|
||||
}
|
||||
var val = body.find("input[type='radio']:checked").val();
|
||||
if(!val) {
|
||||
var val = body.find(".input-container input").val();
|
||||
}
|
||||
if(!val) {
|
||||
body.find(".footnote").html(getMsg("chooseReason"));
|
||||
return;
|
||||
}
|
||||
ajaxPost(staticUrl + "/blog/report", {commentId: commentId, noteId: noteId, reason: val}, function(re) {
|
||||
isOver = true;
|
||||
if(reIsOk(re)) {
|
||||
body.html(getMsg("reportSuccess"));
|
||||
} else {
|
||||
body.html(getMsg("error"));
|
||||
}
|
||||
setTimeout(function() {
|
||||
dialog.close();
|
||||
}, 3000);
|
||||
});
|
||||
}
|
||||
}]
|
||||
});
|
||||
body = modal.getModalBody();
|
||||
input = body.find(".input-container");
|
||||
body.find("input[type='radio']").click(function(){
|
||||
if(!$(this).val()) {
|
||||
input.show();
|
||||
input.find("input").focus();
|
||||
} else {
|
||||
input.hide();
|
||||
}
|
||||
});
|
||||
}
|
||||
$(".comment-box").on("click", ".comment-report", function() {
|
||||
if(needLogin()) {
|
||||
return;
|
||||
}
|
||||
var commentId = $(this).parent().data("comment-id");
|
||||
report(commentId, self.noteId, getMsg("reportComment?"));
|
||||
});
|
||||
$("#reportBtn").click(function() {
|
||||
if(needLogin()) {
|
||||
return;
|
||||
}
|
||||
report("", self.noteId, getMsg("reportBlog?"));
|
||||
});
|
||||
|
||||
self.initShare();
|
||||
},
|
||||
weixinQRCodeO: $("#weixinQRCode"),
|
||||
initShare: function() {
|
||||
var self = this;
|
||||
$(".btn-weixin").click(function() {
|
||||
if(!self.weixinQRCodeO.html()) {
|
||||
self.weixinQRCodeO.qrcode(viewUrl + "/" + self.noteId);
|
||||
}
|
||||
BootstrapDialog.show({
|
||||
title: getMsg('scanQRCode'),
|
||||
message: self.weixinQRCodeO
|
||||
});
|
||||
});
|
||||
|
||||
$(".btn-share").click(function() {
|
||||
var $this = $(this);
|
||||
var map = {"btn-weibo": shareSinaWeibo, "tencent-weibo": shareTencentWeibo, "qq": shareQQ, "renren": shareRenRen};
|
||||
for(var i in map) {
|
||||
if($this.hasClass(i)) {
|
||||
map[i](self.noteId, document.title);
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
$(function() {
|
||||
C.init();
|
||||
});
|
Reference in New Issue
Block a user