提交 9a6e2d3a 编写于 作者: 街头小贩's avatar 街头小贩

js代码更新

上级 368e31b1
...@@ -137,6 +137,8 @@ var jForum = (function ($) { ...@@ -137,6 +137,8 @@ var jForum = (function ($) {
}).trigger('initEvent'); }).trigger('initEvent');
//member //member
jForum.member.init(); jForum.member.init();
jForum.threads.init();
jForum.message.init();
//ajax //ajax
$('[data-result="loader.jsonp"]').on('loadDataEvent', function (e) { //topic/move $('[data-result="loader.jsonp"]').on('loadDataEvent', function (e) { //topic/move
var _b = $(e.target); var _b = $(e.target);
......
...@@ -48,6 +48,8 @@ jForum.member = (function ($) { ...@@ -48,6 +48,8 @@ jForum.member = (function ($) {
setMemberVerify(data.verify); setMemberVerify(data.verify);
//[HMP]生成会员面板 //[HMP]生成会员面板
jForum.template.drawMemberPanel(data, _mp); //怎么显示由drawMemberPanel负责 jForum.template.drawMemberPanel(data, _mp); //怎么显示由drawMemberPanel负责
//开始消息通知
$('#notification').bind('initDataEvent', noticeHandler).trigger('initDataEvent');
} }
} }
}); });
...@@ -91,6 +93,8 @@ jForum.member = (function ($) { ...@@ -91,6 +93,8 @@ jForum.member = (function ($) {
jForum.template.drawMemberInfo(responseMsg, $('#right_member_info')); jForum.template.drawMemberInfo(responseMsg, $('#right_member_info'));
// 重新设置客户端缓存的标记 // 重新设置客户端缓存的标记
setMemberVerify(responseMsg.verify); setMemberVerify(responseMsg.verify);
//开始消息通知
$('#notification').bind('initDataEvent', noticeHandler).trigger('initDataEvent');
} }
return; return;
}; };
...@@ -117,5 +121,35 @@ jForum.member = (function ($) { ...@@ -117,5 +121,35 @@ jForum.member = (function ($) {
var verify = Cookies.get('msa') || -1; var verify = Cookies.get('msa') || -1;
return verify; return verify;
}; };
var noticeHandler = function(e){
try{
//$('#header_member_panel').letterSocket({"callFunctionExp": 'updateUnReadMessages', 'remote': $('#topmenu').attr('data-socket-uri')}, 30000);
var s = new jForum.socket($('#topmenu').attr('data-socket-uri'), $('#header_member_panel'), {
sendDataFun : function(jqEle){
var data = {};
data.id = jqEle.attr('data-ux');
data.cmd = 1;
data.ux = jqEle.attr('data-ux');
return data;
},
callbackFun : updateUnReadMessages
});
s.init('letterNotice');
s.start(30000);
}catch(e){ console.log('letter socket file lost');}
};
function updateUnReadMessages(sockplaindata){
var json = $.parseJSON(sockplaindata);
if(jQuery.isEmptyObject(json)){
return;
}
if(parseInt(json.result)>0){
$('#notification').removeClass('d-none');
$('#notification').html(json.result);
}else{
$('#notification').addClass('d-none');
}
$('#header_member_panel').attr('data-ux', getUnixStamp());
};
return { init: init, get:getCurrentActiveMemberInfo }; return { init: init, get:getCurrentActiveMemberInfo };
})(jQuery); })(jQuery);
jForum.message = (function($){ jForum.message = (function($){
function init(){ function init(){
var template = jForum.template;
var util = jForum.utils;
// 收件箱内容页中的加载更多 // 收件箱内容页中的加载更多
$('.letter-more-action').on('click', function(){ $('.letter-more-action').on('click', function(){
var pbx = $(this).parents('.letter-item-collect'); var pbx = $(this).parents('.letter-item-collect');
...@@ -10,21 +12,23 @@ jForum.message = (function($){ ...@@ -10,21 +12,23 @@ jForum.message = (function($){
// //
var self = $(this); var self = $(this);
self.addClass('disabled').html('正在玩命加载'); self.addClass('disabled').html('正在玩命加载');
$.getJSON(rawdata.uri+'&p='+rawdata.page, function( data ){ jForum.xhr.jsonGet(rawdata.uri+'&p='+rawdata.page, {
//self是否显示 jsonCallback : function(data){
if(jQuery.isEmptyObject(data)){ //self是否显示
return; if(jQuery.isEmptyObject(data)){
} return;
//遍历data.result }
$.each(data.result, function(index, item){ //遍历data.result
jForum.template.drawLetterHistoryMessage(item, rawdata.ele); $.each(data.result, function(index, item){
}); template.drawLetterHistoryMessage(item, rawdata.ele);
pbx.attr('data-page', rawdata.page).scrollTop(); });
var letter = $.parseJSON(data.letter); pbx.attr('data-page', rawdata.page).scrollTop();
if(letter.more){ var letter = $.parseJSON(data.letter);
self.removeClass('disabled').html('更多历史消息'); if(letter.more){
}else{ self.removeClass('disabled').html('更多历史消息');
self.hide(); }else{
self.hide();
}
} }
}); });
}); });
...@@ -32,29 +36,28 @@ jForum.message = (function($){ ...@@ -32,29 +36,28 @@ jForum.message = (function($){
$('.send-message-action').on('click', function(e){ $('.send-message-action').on('click', function(e){
var self = $(this); var self = $(this);
var callFun = self.attr('data-function') || 'drawMessageItem'; var callFun = self.attr('data-function') || 'drawMessageItem';
var requestParam = parseQueryJson(self.attr('data-query')); var requestParam = util.parseQueryJson(self.attr('data-query'));
requestParam.content = self.parents('form').find('.form-control').val(); requestParam.content = self.parents('form').find('.form-control').val();
if(isBlank(requestParam.content)){ if(util.isBlank(requestParam.content)){
self.parents('form').find('.form-control').focus(); self.parents('form').find('.form-control').focus();
return false; return false;
} }
self.addClass('disabled'); self.addClass('disabled');
$.ajax({ jForum.xhr.jsonPost(self.attr('data-handler'), {
url: self.attr('data-handler'), data : requestParam,
dataType: 'json', jsonCallback : function(response){
method: 'POST', template[callFun].call(this, response, self);
data: requestParam },
}).done(function (response) { failCallback : function(jqXHR, textStatus, errorThrown){
window[callFun].call(this, response, self); if(textStatus === 'error'){
}).fail(function(jqXHR, textStatus, errorThrown){ var err = $.parseJSON(jqXHR.responseText);
if(textStatus === 'error'){ if(err.level && err.level ==='err'){
var err = $.parseJSON(jqXHR.responseText); return util.errorMessage(err.message);
if(err.level && err.level ==='err'){ }
return errorMessage(err.message);
} }
util.errorMessage('当前操作因错误而异外中止');
} }
errorMessage('当前操作因错误而异外中止');
}); });
return false; return false;
}); });
...@@ -62,24 +65,27 @@ jForum.message = (function($){ ...@@ -62,24 +65,27 @@ jForum.message = (function($){
$('body').on('click', '#suggest-btn', function(e){ $('body').on('click', '#suggest-btn', function(e){
var self = $('#suggest-uid'); var self = $('#suggest-uid');
var p = self.parents('.form-group'); var p = self.parents('.form-group');
if(isBlank(self.val())){ if(util.isBlank(self.val())){
self.attr('placeholder', '输入收件人的UID').focus(); self.attr('placeholder', '输入收件人的UID').focus();
return; return;
} }
self.attr("disabled","disabled"); self.attr("disabled","disabled");
$.getJSON(self.attr('data-handler'), 'value='+self.val(), function( data ){ jForum.xhr.jsonGet(self.attr('data-handler'), {
if(data.level ==='acc'){ data : {'value' : self.val()},
uidDetectionHandler(data.message, p); jsonCallback : function(data){
}else{ if(data.level ==='acc'){
$('input[name=snames]').val(''); uidDetectionHandler(data.message, p);
self.addClass('is-invalid').removeAttr("disabled").focus(); }else{
$('input[name=snames]').val('');
self.addClass('is-invalid').removeAttr("disabled").focus();
}
} }
}); });
}); });
//会员主页的发送消息|话题会员弹出层的消息[NW] //会员主页的发送消息|话题会员弹出层的消息[NW]
$('body').on('click', '.message-transmit', function(e){ $('body').on('click', '.message-transmit', function(e){
//在线吗 //在线吗
var cam = getCurrentActiveMemberInfo(); var cam = jForum.member.get();
if(jQuery.isEmptyObject(cam) || parseInt(cam.id) < 1){ if(jQuery.isEmptyObject(cam) || parseInt(cam.id) < 1){
return errorMessage('暂不支持游客发送消息'); return errorMessage('暂不支持游客发送消息');
} }
...@@ -95,28 +101,24 @@ jForum.message = (function($){ ...@@ -95,28 +101,24 @@ jForum.message = (function($){
btnClass: 'btn-blue', btnClass: 'btn-blue',
action: function () { action: function () {
var content = this.$content.find('textarea[name=content]').val(); var content = this.$content.find('textarea[name=content]').val();
if(isBlank(content)){ if(util.isBlank(content)){
this.$content.find('textarea[name=content]').focus(); this.$content.find('textarea[name=content]').focus();
return false; return false;
} }
var requestParam={}; var requestParam={};
requestParam.content=content; requestParam.content=content;
jForum.xhr.jsonPost(requestURI, {
$.ajax({ data : requestParam,
url: requestURI, jsonCallback : transmitMessageResult,
dataType: 'json', failCallback : function(jqXHR, textStatus, errorThrown){
method: 'POST', if(textStatus === 'error'){
data: requestParam var err = $.parseJSON(jqXHR.responseText);
}).done(function (response) { if(err.level && err.level ==='err'){
transmitMessageResult(response); return util.errorMessage(err.message);
}).fail(function(jqXHR, textStatus, errorThrown){ }
if(textStatus === 'error'){
var err = $.parseJSON(jqXHR.responseText);
if(err.level && err.level ==='err'){
return errorMessage(err.message);
} }
util.errorMessage('当前操作因错误而异外中止');
} }
errorMessage('当前操作因错误而异外中止');
}); });
} }
} }
...@@ -137,5 +139,17 @@ jForum.message = (function($){ ...@@ -137,5 +139,17 @@ jForum.message = (function($){
jqEle.find('input[name=uid]').removeAttr("disabled").removeClass('is-invalid'); jqEle.find('input[name=uid]').removeAttr("disabled").removeClass('is-invalid');
$('#suggest-uid').parents('form').find('input[name=snames]').val(nickname); $('#suggest-uid').parents('form').find('input[name=snames]').val(nickname);
}; };
//私信的响应
function transmitMessageResult(json){
if(jQuery.isEmptyObject(json)){
jForum.utils.errorMessage("操作因异常而中止");
return;
}
if(parseInt(json.id)>0){
jForum.utils.tipDialog({"message":"发送成功", "level":"acc", "refresh" : false});
return;
}
jForum.utils.errorMessage("消息发送失败");
};
return { init: init }; return { init: init };
})(jQuery); })(jQuery);
\ No newline at end of file
...@@ -76,7 +76,7 @@ jForum.pagination = (function ($) { ...@@ -76,7 +76,7 @@ jForum.pagination = (function ($) {
_curIns.config.ajaxComplete(xhr, textStatus); _curIns.config.ajaxComplete(xhr, textStatus);
} }
//记入历史 //记入历史
//recordHistory(page, pageSize); recordHistory(page, postData.pageSize);
console.log('[pagination] ajax is complete'); console.log('[pagination] ajax is complete');
}; };
$.ajax(formatAjaxParams); $.ajax(formatAjaxParams);
......
jForum.socket = (function () { jForum.socket = (function ($) {
class ForumSocket {
})(); constructor(reqUri, jqEle, option) {
\ No newline at end of file this.sock = new SockJS(reqUri);
this.requestDataFun = option.sendDataFun || null;
this.messageCallback = option.callbackFun || null;
this.jqEle = jqEle;
}
init(name){
var t = name || '20201005';
this.sock.onopen = function() {
console.log(t+' Socket opened!');
};
this.sock.onmessage = function(e) {
if ($.isFunction(this.messageCallback)){
this.messageCallback(e.data);
}
};
this.sock.onclose = function() {
console.log(t+' Socket close');
};
this.sock.onerror = function(e) {
console.log(t+' Socket has Error: '+e);
};
}
_send(){
if (!$.isFunction(this.requestDataFun)){
return;
}
var jsonData = this.requestDataFun(this.jqEle);
var t = JSON.stringify(jsonData);
this.sock.send(t); //消息数量,
}
start(loopUnit){
var _curIns = this;
setInterval(function(){
_curIns._send();
}, loopUnit); //毫秒
}
}
return ForumSocket;
})(jQuery);
\ No newline at end of file
...@@ -774,6 +774,53 @@ jForum.template = (function ($) { ...@@ -774,6 +774,53 @@ jForum.template = (function ($) {
}); });
jqEle.popover('show'); jqEle.popover('show');
}; };
//快速回复的异步回调函数
tmp.quickReplyFillPosts = function(json){
var T=''
+'<div class="topic_posts dynamic-posts-record fadeout-anim">'
+' <div class="topic_posts_item">'
+' <dl class="topic_posts_item_left" data-handler="{APP}/member/profile.json?id={author}">'
+' <dt style="padding-top: 20px;padding-left: 20px;width:180px">'
+' <div class="posts-member-avatar">'
+' <a href="javascript:;" class="avatar poper-member-menu">'
+' <img class="avatar" src="{APP}/member/avatar/{author}.png" alt="User avatar" />'
+' </a>'
+' </div>'
+' <a href="{APP}/member/{author}.xhtml" class="member-info"> <span class="member-{author}-label member-{authorStyle}">{authorNames}</span></a>'
+' </dt>'
+' <dd>{authorGroup}</dd>'
+' {#master}<dd><small class="badge badge-dark">楼主</small></dd>{/master}'
+' </dl>'
+' <div class="topic_posts_item_right">'
+' <div id="posts-{id}" class="posts-body">'
+' <ul class="posts-buttons">'
+' <li><a href="javascript:;" class="action-cmd delete-post" data-handler="{APP}/posts/delete" data-query="id:{id}"><i class="ico-sm mdi mdi-delete" aria-hidden="true"></i><span>删除</span></a></li>'
+' <li><a href="javascript:;" class="post-action-quote" data-handler="{APP}/posts/quote/data.json" data-query="id:{id}"><i class="ico-sm mdi mdi-quote"></i><span>回复</span></a></li>'
+' <li><a href="javascript:;" class="post-action-report" data-handler="{APP}/posts/report" data-query="id:{id}"><i class="ico-sm mdi mdi-flag"></i><span>举报</span></a></li>'
+' <li><a name="#posts-{id}">{floor}<sup>#</sup></a></li>'
+' </ul>'
+' <p class="posts-member">'
+' <a href="{APP}/member/{author}.xhtml">{authorNames} @u{author}</a>&nbsp;&nbsp;&#187;&nbsp;&nbsp; '
+' <i class="ico-sm mdi mdi-time" aria-hidden="true"></i> {date}'
+' </p>'
+' <div class="posts-body-content">'
+' {&content}'
+' <div class="mood-section" data-mood="{id}">'
+' <a href="javascript:;" title="支持" role="button" class="btn-light btn-sm mood-action" data-action="1" id="{id}-likes"><i class="mdi mdi-thumb-up" aria-hidden="true"></i></a>'
+' <a href="javascript:;" title="不赞同" role="button" class="btn-light btn-sm mood-action" data-action="2" id="{id}-hates"><i class="mdi mdi-thumb-down" aria-hidden="true"></i></a>'
+' </div>'
+' </div>'
+' <div class="posts-member-signature member-{author}-signature">{authorSignature}</div>'
+' </div>'
+' </div>'
+' </div>'
+'</div>';
Mustache.parse(T, ['{', '}']);
var rs = $.extend(json, {"APP":BASE});
$('#topic_posts_collect').append(Mustache.render(T, rs));
//图片的懒加载
$('#posts-'+json.id).find('img.lazyload').lazyload();
};
tmp.poperNotice = function(json){ tmp.poperNotice = function(json){
if(jQuery.isEmptyObject(json)){ if(jQuery.isEmptyObject(json)){
return; return;
......
jForum.threads = (function ($) { jForum.threads = (function ($) {
function init() { function init() {
var template = jForum.template;
var util = jForum.utils;
//话题内容页中会员信息弹出菜单 //话题内容页中会员信息弹出菜单
$('body').on('click', 'a.poper-member-menu', function (e) { $('body').on('click', 'a.poper-member-menu', function (e) {
e.preventDefault(); e.preventDefault();
var self = $(this); var self = $(this);
var rawdata = {}; var rawdata = {};
rawdata.uri = self.parents('.topic_posts_item_left').attr('data-handler'); rawdata.uri = self.parents('.topic_posts_item_left').attr('data-handler');
//本地缓存命中 //本地缓存命中
rawdata.member = $.url(rawdata.uri).param('id'); rawdata.member = $.url(rawdata.uri).param('id');
var cacheData = store.get('member_profile#' + rawdata.member); var cacheData = store.get('member_profile#' + rawdata.member);
//本人的不缓存[20200118] //本人的不缓存[20200118]
if (!jQuery.isEmptyObject(cacheData)) { if (!jQuery.isEmptyObject(cacheData)) {
buildMemberProfileMenu(cacheData, self); template.buildMemberProfileMenu(cacheData, self);
return; return;
} }
// //
console.log('[MP]不存在缓存去拉取数据'); console.log('[MP]不存在缓存去拉取数据');
$.getJSON(rawdata.uri, function (data) { jForum.xhr.jsonGet(rawdata.uri, {
store.set('member_profile#' + rawdata.member, data); jsonCallback : function(data){
buildMemberProfileMenu(data, self); store.set('member_profile#' + rawdata.member, data);
template.buildMemberProfileMenu(data, self);
}
}); });
}); });
//引用回复@20200506 //引用回复@20200506
$('body').on('click', '.post-action-quote', function () { $('body').on('click', '.post-action-quote', function () {
var self = $(this); var self = $(this);
var options = parseQueryJson(self.attr('data-query')); var options = util.parseQueryJson(self.attr('data-query'));
$.getJSON(self.attr('data-handler'), 'id=' + options.id, function (json) { jForum.xhr.jsonGet(self.attr('data-handler'), {
if (jQuery.isEmptyObject(json)) { data : {'id' : options.id},
return errorMessage('读取原文内容失败'); jsonCallback : function(json){
} if (jQuery.isEmptyObject(json)) {
if (json.level === 'err') { return util.errorMessage('读取原文内容失败');
return errorMessage(json.message);
}
if (json.infoTip) {
insertEditorHtml('');
$('#reply-tip-message').html('<strong>提示!</strong>&nbsp;' + json.infoTip);
//插入到表单中@20200506
$('#quick_reply_form').find('input[name=quote]').val(json.quote);
$('#quick_reply_form').find('input[name=scale]').val(json.scale);
}
}).fail(function (jqXHR, textStatus, errorThrown) {
if (textStatus === 'error') {
var err = $.parseJSON(jqXHR.responseText);
if (err.level && err.level === 'err') {
return errorMessage(err.message);
} }
if (json.level === 'err') {
return util.errorMessage(json.message);
}
if (json.infoTip) {
util.insertEditorHtml('');
$('#reply-tip-message').html('<strong>提示!</strong>&nbsp;' + json.infoTip);
//插入到表单中@20200506
$('#quick_reply_form').find('input[name=quote]').val(json.quote);
$('#quick_reply_form').find('input[name=scale]').val(json.scale);
}
},
failCallback : function(jqXHR, textStatus, errorThrown){
if (textStatus === 'error') {
var err = $.parseJSON(jqXHR.responseText);
if (err.level && err.level === 'err') {
return util.errorMessage(err.message);
}
}
util.errorMessage('当前操作因错误而异外中止');
} }
errorMessage('当前操作因错误而异外中止');
}); });
return false; return false;
}); });
//举报回复[NW] //举报回复[NW]
$('body').on('click', '.post-action-report', function () { $('body').on('click', '.post-action-report', function () {
var self = $(this); var self = $(this);
var requestParam = parseQueryJson(self.attr('data-query')); var requestParam = util.parseQueryJson(self.attr('data-query'));
// //
$.confirm({ $.confirm({
title: '', title: '',
...@@ -77,29 +85,27 @@ jForum.threads = (function ($) { ...@@ -77,29 +85,27 @@ jForum.threads = (function ($) {
btnClass: 'btn-blue', btnClass: 'btn-blue',
action: function () { action: function () {
var reason = this.$content.find('textarea[name=reason]').val(); var reason = this.$content.find('textarea[name=reason]').val();
if (isBlank(reason)) { if (util.isBlank(reason)) {
this.$content.find('textarea[name=reason]').focus(); this.$content.find('textarea[name=reason]').focus();
return false; return false;
} }
requestParam.reason = reason; requestParam.reason = reason;
requestParam.type = this.$content.find("select[name=type]").val(); requestParam.type = this.$content.find("select[name=type]").val();
jForum.xhr.jsonPost(self.attr('data-handler'), {
$.ajax({ data : requestParam,
url: self.attr('data-handler'), jsonCallback : function(response){
dataType: 'json', response.refresh = false;
method: 'POST', util.tipDialog(response);
data: requestParam },
}).done(function (response) { failCallback : function(jqXHR, textStatus, errorThrown){
response.refresh = false; if(textStatus === 'error'){
tipDialog(response); var err = $.parseJSON(jqXHR.responseText);
}).fail(function (jqXHR, textStatus, errorThrown) { if(err.level && err.level ==='err'){
if (textStatus === 'error') { return util.errorMessage(err.message);
var err = $.parseJSON(jqXHR.responseText); }
if (err.level && err.level === 'err') {
return errorMessage(err.message);
} }
util.errorMessage('当前操作因错误而异外中止');
} }
errorMessage('当前操作因错误而异外中止');
}); });
} }
} }
...@@ -128,39 +134,38 @@ jForum.threads = (function ($) { ...@@ -128,39 +134,38 @@ jForum.threads = (function ($) {
} catch (e) { } catch (e) {
requestData.content = $(this).find('input[name=content]').val(); requestData.content = $(this).find('input[name=content]').val();
} }
if (isBlank(requestData.content)) { if (util.isBlank(requestData.content)) {
$.alert('请输入回复的内容'); $.alert('请输入回复的内容');
return false; return false;
} }
// 同步操作 // 同步操作
$.ajax({ jForum.xhr.jsonPost(self.attr('action'), {
type: 'POST', data : requestData,
url: self.attr('action'), jsonCallback : function(response){
data: requestData, if (response.level === 'err' && !util.isBlank(response.message)) {
dataType: 'json' //出错了
}).done(function (response) { response.refresh = false;
if (response.level === 'err' && !isBlank(response.message)) { util.tipDialog(response);
//出错了 } else {
response.refresh = false; template.quickReplyFillPosts(response);
tipDialog(response); //清空表单的元素
} else { self.find('input[name=content]').val('');
quickReplyFillPosts(response); self.find('input[name=quote]').val('');
//清空表单的元素 self.find('input[name=scale]').val('');
self.find('input[name=content]').val(''); $('#reply-tip-message').html('');
self.find('input[name=quote]').val(''); //清空编辑器的内容
self.find('input[name=scale]').val(''); CKEDITOR.instances['content'].setData('');
$('#reply-tip-message').html(''); }
//清空编辑器的内容 },
CKEDITOR.instances['content'].setData(''); failCallback : function(jqXHR, textStatus, errorThrown){
} if(textStatus === 'error'){
}).fail(function (jqXHR, textStatus, errorThrown) { var err = $.parseJSON(jqXHR.responseText);
if (textStatus === 'error') { if(err.level && err.level ==='err'){
var err = $.parseJSON(jqXHR.responseText); return util.errorMessage(err.message);
if (err.level && err.level === 'err') { }
return errorMessage(err.message);
} }
util.errorMessage('当前操作因错误而异外中止');
} }
errorMessage('当前操作因错误而异外中止');
}); });
return false; return false;
}); });
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册