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

js代码更新

上级 368e31b1
......@@ -137,6 +137,8 @@ var jForum = (function ($) {
}).trigger('initEvent');
//member
jForum.member.init();
jForum.threads.init();
jForum.message.init();
//ajax
$('[data-result="loader.jsonp"]').on('loadDataEvent', function (e) { //topic/move
var _b = $(e.target);
......
......@@ -48,6 +48,8 @@ jForum.member = (function ($) {
setMemberVerify(data.verify);
//[HMP]生成会员面板
jForum.template.drawMemberPanel(data, _mp); //怎么显示由drawMemberPanel负责
//开始消息通知
$('#notification').bind('initDataEvent', noticeHandler).trigger('initDataEvent');
}
}
});
......@@ -91,6 +93,8 @@ jForum.member = (function ($) {
jForum.template.drawMemberInfo(responseMsg, $('#right_member_info'));
// 重新设置客户端缓存的标记
setMemberVerify(responseMsg.verify);
//开始消息通知
$('#notification').bind('initDataEvent', noticeHandler).trigger('initDataEvent');
}
return;
};
......@@ -117,5 +121,35 @@ jForum.member = (function ($) {
var verify = Cookies.get('msa') || -1;
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 };
})(jQuery);
jForum.message = (function($){
function init(){
var template = jForum.template;
var util = jForum.utils;
// 收件箱内容页中的加载更多
$('.letter-more-action').on('click', function(){
var pbx = $(this).parents('.letter-item-collect');
......@@ -10,21 +12,23 @@ jForum.message = (function($){
//
var self = $(this);
self.addClass('disabled').html('正在玩命加载');
$.getJSON(rawdata.uri+'&p='+rawdata.page, function( data ){
//self是否显示
if(jQuery.isEmptyObject(data)){
return;
}
//遍历data.result
$.each(data.result, function(index, item){
jForum.template.drawLetterHistoryMessage(item, rawdata.ele);
});
pbx.attr('data-page', rawdata.page).scrollTop();
var letter = $.parseJSON(data.letter);
if(letter.more){
self.removeClass('disabled').html('更多历史消息');
}else{
self.hide();
jForum.xhr.jsonGet(rawdata.uri+'&p='+rawdata.page, {
jsonCallback : function(data){
//self是否显示
if(jQuery.isEmptyObject(data)){
return;
}
//遍历data.result
$.each(data.result, function(index, item){
template.drawLetterHistoryMessage(item, rawdata.ele);
});
pbx.attr('data-page', rawdata.page).scrollTop();
var letter = $.parseJSON(data.letter);
if(letter.more){
self.removeClass('disabled').html('更多历史消息');
}else{
self.hide();
}
}
});
});
......@@ -32,29 +36,28 @@ jForum.message = (function($){
$('.send-message-action').on('click', function(e){
var self = $(this);
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();
if(isBlank(requestParam.content)){
if(util.isBlank(requestParam.content)){
self.parents('form').find('.form-control').focus();
return false;
}
self.addClass('disabled');
$.ajax({
url: self.attr('data-handler'),
dataType: 'json',
method: 'POST',
data: requestParam
}).done(function (response) {
window[callFun].call(this, response, self);
}).fail(function(jqXHR, textStatus, errorThrown){
if(textStatus === 'error'){
var err = $.parseJSON(jqXHR.responseText);
if(err.level && err.level ==='err'){
return errorMessage(err.message);
jForum.xhr.jsonPost(self.attr('data-handler'), {
data : requestParam,
jsonCallback : function(response){
template[callFun].call(this, response, self);
},
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;
});
......@@ -62,24 +65,27 @@ jForum.message = (function($){
$('body').on('click', '#suggest-btn', function(e){
var self = $('#suggest-uid');
var p = self.parents('.form-group');
if(isBlank(self.val())){
if(util.isBlank(self.val())){
self.attr('placeholder', '输入收件人的UID').focus();
return;
}
self.attr("disabled","disabled");
$.getJSON(self.attr('data-handler'), 'value='+self.val(), function( data ){
if(data.level ==='acc'){
uidDetectionHandler(data.message, p);
}else{
$('input[name=snames]').val('');
self.addClass('is-invalid').removeAttr("disabled").focus();
jForum.xhr.jsonGet(self.attr('data-handler'), {
data : {'value' : self.val()},
jsonCallback : function(data){
if(data.level ==='acc'){
uidDetectionHandler(data.message, p);
}else{
$('input[name=snames]').val('');
self.addClass('is-invalid').removeAttr("disabled").focus();
}
}
});
});
//会员主页的发送消息|话题会员弹出层的消息[NW]
$('body').on('click', '.message-transmit', function(e){
//在线吗
var cam = getCurrentActiveMemberInfo();
var cam = jForum.member.get();
if(jQuery.isEmptyObject(cam) || parseInt(cam.id) < 1){
return errorMessage('暂不支持游客发送消息');
}
......@@ -95,28 +101,24 @@ jForum.message = (function($){
btnClass: 'btn-blue',
action: function () {
var content = this.$content.find('textarea[name=content]').val();
if(isBlank(content)){
if(util.isBlank(content)){
this.$content.find('textarea[name=content]').focus();
return false;
}
var requestParam={};
requestParam.content=content;
$.ajax({
url: requestURI,
dataType: 'json',
method: 'POST',
data: requestParam
}).done(function (response) {
transmitMessageResult(response);
}).fail(function(jqXHR, textStatus, errorThrown){
if(textStatus === 'error'){
var err = $.parseJSON(jqXHR.responseText);
if(err.level && err.level ==='err'){
return errorMessage(err.message);
requestParam.content=content;
jForum.xhr.jsonPost(requestURI, {
data : requestParam,
jsonCallback : transmitMessageResult,
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('当前操作因错误而异外中止');
});
}
}
......@@ -137,5 +139,17 @@ jForum.message = (function($){
jqEle.find('input[name=uid]').removeAttr("disabled").removeClass('is-invalid');
$('#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 };
})(jQuery);
\ No newline at end of file
......@@ -76,7 +76,7 @@ jForum.pagination = (function ($) {
_curIns.config.ajaxComplete(xhr, textStatus);
}
//记入历史
//recordHistory(page, pageSize);
recordHistory(page, postData.pageSize);
console.log('[pagination] ajax is complete');
};
$.ajax(formatAjaxParams);
......
jForum.socket = (function () {
})();
\ No newline at end of file
jForum.socket = (function ($) {
class ForumSocket {
constructor(reqUri, jqEle, option) {
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 ($) {
});
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){
if(jQuery.isEmptyObject(json)){
return;
......
jForum.threads = (function ($) {
function init() {
var template = jForum.template;
var util = jForum.utils;
//话题内容页中会员信息弹出菜单
$('body').on('click', 'a.poper-member-menu', function (e) {
e.preventDefault();
var self = $(this);
var rawdata = {};
rawdata.uri = self.parents('.topic_posts_item_left').attr('data-handler');
//本地缓存命中
rawdata.member = $.url(rawdata.uri).param('id');
rawdata.uri = self.parents('.topic_posts_item_left').attr('data-handler');
//本地缓存命中
rawdata.member = $.url(rawdata.uri).param('id');
var cacheData = store.get('member_profile#' + rawdata.member);
//本人的不缓存[20200118]
if (!jQuery.isEmptyObject(cacheData)) {
buildMemberProfileMenu(cacheData, self);
template.buildMemberProfileMenu(cacheData, self);
return;
}
//
console.log('[MP]不存在缓存去拉取数据');
$.getJSON(rawdata.uri, function (data) {
store.set('member_profile#' + rawdata.member, data);
buildMemberProfileMenu(data, self);
jForum.xhr.jsonGet(rawdata.uri, {
jsonCallback : function(data){
store.set('member_profile#' + rawdata.member, data);
template.buildMemberProfileMenu(data, self);
}
});
});
//引用回复@20200506
$('body').on('click', '.post-action-quote', function () {
var self = $(this);
var options = parseQueryJson(self.attr('data-query'));
$.getJSON(self.attr('data-handler'), 'id=' + options.id, function (json) {
if (jQuery.isEmptyObject(json)) {
return errorMessage('读取原文内容失败');
}
if (json.level === 'err') {
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);
var options = util.parseQueryJson(self.attr('data-query'));
jForum.xhr.jsonGet(self.attr('data-handler'), {
data : {'id' : options.id},
jsonCallback : function(json){
if (jQuery.isEmptyObject(json)) {
return util.errorMessage('读取原文内容失败');
}
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;
});
//举报回复[NW]
$('body').on('click', '.post-action-report', function () {
var self = $(this);
var requestParam = parseQueryJson(self.attr('data-query'));
var requestParam = util.parseQueryJson(self.attr('data-query'));
//
$.confirm({
title: '',
......@@ -77,29 +85,27 @@ jForum.threads = (function ($) {
btnClass: 'btn-blue',
action: function () {
var reason = this.$content.find('textarea[name=reason]').val();
if (isBlank(reason)) {
if (util.isBlank(reason)) {
this.$content.find('textarea[name=reason]').focus();
return false;
}
requestParam.reason = reason;
requestParam.type = this.$content.find("select[name=type]").val();
$.ajax({
url: self.attr('data-handler'),
dataType: 'json',
method: 'POST',
data: requestParam
}).done(function (response) {
response.refresh = false;
tipDialog(response);
}).fail(function (jqXHR, textStatus, errorThrown) {
if (textStatus === 'error') {
var err = $.parseJSON(jqXHR.responseText);
if (err.level && err.level === 'err') {
return errorMessage(err.message);
jForum.xhr.jsonPost(self.attr('data-handler'), {
data : requestParam,
jsonCallback : function(response){
response.refresh = false;
util.tipDialog(response);
},
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('当前操作因错误而异外中止');
});
}
}
......@@ -128,39 +134,38 @@ jForum.threads = (function ($) {
} catch (e) {
requestData.content = $(this).find('input[name=content]').val();
}
if (isBlank(requestData.content)) {
if (util.isBlank(requestData.content)) {
$.alert('请输入回复的内容');
return false;
}
// 同步操作
$.ajax({
type: 'POST',
url: self.attr('action'),
data: requestData,
dataType: 'json'
}).done(function (response) {
if (response.level === 'err' && !isBlank(response.message)) {
//出错了
response.refresh = false;
tipDialog(response);
} else {
quickReplyFillPosts(response);
//清空表单的元素
self.find('input[name=content]').val('');
self.find('input[name=quote]').val('');
self.find('input[name=scale]').val('');
$('#reply-tip-message').html('');
//清空编辑器的内容
CKEDITOR.instances['content'].setData('');
}
}).fail(function (jqXHR, textStatus, errorThrown) {
if (textStatus === 'error') {
var err = $.parseJSON(jqXHR.responseText);
if (err.level && err.level === 'err') {
return errorMessage(err.message);
jForum.xhr.jsonPost(self.attr('action'), {
data : requestData,
jsonCallback : function(response){
if (response.level === 'err' && !util.isBlank(response.message)) {
//出错了
response.refresh = false;
util.tipDialog(response);
} else {
template.quickReplyFillPosts(response);
//清空表单的元素
self.find('input[name=content]').val('');
self.find('input[name=quote]').val('');
self.find('input[name=scale]').val('');
$('#reply-tip-message').html('');
//清空编辑器的内容
CKEDITOR.instances['content'].setData('');
}
},
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;
});
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册