⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 topic.js

📁 LiteBlaster 是一款基于 .NET Framework 原创的 ASP.NET 论坛系统。后台程序库采用 C#/VB.NET 编写
💻 JS
📖 第 1 页 / 共 2 页
字号:
// for topic
// x_core.js, x_event.js, ajax.js, main.js, itemList.js, xgetelementsbyattribute.js, xwinscrollto.js needed


/*  update topic  */
function updateTopic(type, value, aId, extra){
	var aBtnWrapper = new wrappers.aWrapper(aId);
	aBtnWrapper.disable();
	var params = 'id=' + topicId + '&update=' + encodeURIComponent(type) + '&value=' + encodeURIComponent(value);
	if(xStr(extra)){
		params += '&' + extra;
	}
	var loader = new ajax.loader('Topic.aspx', 'POST', updateTopic_onload, updateTopic_onerror, params);
	loader.updateType = type;
	loader.aBtnWrapper = aBtnWrapper;
}
function updateTopic_onload(){
	var xmlDoc = this.req.responseXML;
	var errInfo = getXmlElementText(xmlDoc, 'Error');
	if(errInfo){
		alert(errInfo);
		this.aBtnWrapper.enable();
	}else{
		xGetElementById('TopicOperations').innerHTML = getXmlElementText(xmlDoc, 'Return');
		if(this.updateType == 'locked' || this.updateType == 'closed'){
			loadVote();
			toPage(toPage_curPage);
		}else if(this.updateType == 'broadcast'){
			alert('本主题已经成功添加到公告栏中。');
		}
	}
}
function updateTopic_onerror(){
	alert('设定主题过程中出错。');
	this.aBtnWrapper.enable();
}


/*  broadcast topic  */
function broadcastTopic(toBroadcast, defaultTitle){
	if(!toBroadcast){
		return;
	}
	if(!xStr(defaultTitle)){
		defaultTitle = '';
	}
	var title = prompt('请输入公告的标题:', defaultTitle);
	if(!xStr(title) || title.length == 0){
		return;
	}
	updateTopic('broadcast', true, 'UpdateBroadcastButton', 'title=' + title);
}


/*  move topic  */
function moveTopic(){
	var boardId = prompt('请输入目标版面的 ID :', 0);
	if(boardId == null){
		return;
	}
	boardId = parseInt(boardId);
	if(isNaN(boardId) || boardId < 1){
		alert('ID 应当是正整数。');
		return;
	}
	var params = 'return=result&type=move&id=' + topicId + '&boardid=' + boardId;
	var loader = new ajax.loader('TopicEdit.aspx', 'POST', moveTopic_onload, moveTopic_onerror, params);
}
function moveTopic_onload(){
	var xmlDoc = this.req.responseXML;
	var errInfo = getXmlElementText(xmlDoc, 'Error');
	if(errInfo){
		alert(errInfo);
	}else{
		alert('移动主题成功。现在将转到新的页面。');
		window.location.href = 'Topic.aspx?id=' + topicId + '&page=' + toPage_curPage;
	}
}
function moveTopic_onerror(){
	alert('移动主题过程中出错。');
}


/*  scroll  */
function windowScrollTo(current, target){
	if(current){
		current = xGetElementById(current);
	}
	target = xGetElementById(target);
	if(!target){
		return;
	}
	var y = xPageY(target);
	var distance;
	if(current){
		distance = Math.abs(y - xPageY(current));
	}else{
		distance = y;
	}
	xWinScrollTo(window, xPageX(target), y, distance * 2);
}
function goToTop(e){
	var current = new xEvent(e).target;
	windowScrollTo(current, 'PathIndicator');
}
function goToBottom(e){
	var current = new xEvent(e).target;
	windowScrollTo(current, 'PageIndexes');
}
function goToFastReply(e){
	var target = xGetElementById('PostFastReplyHeader');
	if(target){
		var current = new xEvent(e).target;
		windowScrollTo(current, target);
		xGetElementById('PostFastReplyPostBody').focus();
	}else{
		alert('您当前没有权限回复本主题。');
	}
}

var post_scrollTo;
function scrollToPost(){
	if(!xStr(post_scrollTo) || post_scrollTo.length == 0){
		return;
	}
	windowScrollTo('PostFastReplyHeader', post_scrollTo);
	post_scrollTo = null;
}


/*  load post  */
loadPost = function(postId, loadPost_onsuccess_before, loadPost_onsuccess_after, loadPost_onerror){
	var params = 'xml=true&type=post&id=' +  topicId + '&postid=' + postId;
	var loader = new ajax.loader('Topic.aspx', 'POST', this.loadPost_onload, this.loadPost_onerror, params);
	loader.loadPost_onsuccess_before = loadPost_onsuccess_before;
	loader.loadPost_onsuccess_after = loadPost_onsuccess_after;
	loader.loadPost_onerror = loadPost_onerror;
}
loadPost.prototype = {
	loadPost_onload : function(){
		var xmlDoc = this.req.responseXML;
		var errInfo = getXmlElementText(xmlDoc, 'Error');
		if(errInfo){
			alert(errInfo);
			if(typeof(this.loadPost_onerror) == 'function'){
				this.loadPost_onerror.call(this);
			}
		}else{
			if(typeof(this.loadPost_onsuccess_before) == 'function'){
				this.loadPost_onsuccess_before.call(this);
			}
			var wrapperId = getXmlElementText(xmlDoc, 'WrapperID');
			var wrapper = xGetElementById(wrapperId);
			wrapper.innerHTML = getXmlElementText(xmlDoc, 'Return');
			if(!needToJoin){
				needToJoin = parseXmlText(getXmlElementText(xmlDoc, "NeedToJoin"));
			}
			if(typeof(this.loadPost_onsuccess_after) == 'function'){
				this.loadPost_onsuccess_after.call(this);
			}
		}
	},
	loadPost_onerror : function(){
		alert('加载帖子过程中出错。');
		if(typeof(this.loadPost_onerror) == 'function'){
			this.loadPost_onerror.call(this);
		}
	}
}


/*  load vote  */
function loadVote(){
	var params = 'xml=true&vote=true&type=html&id=' + topicId;
	var loader = new ajax.loader('Topic.aspx', 'POST', loadVote_onload, loadVote_onerror, params);
}
function loadVote_onload(){
	var xmlDoc = this.req.responseXML;
	var errInfo = getXmlElementText(xmlDoc, 'Error');
	if(errInfo){
		alert(errInfo);
	}else{
		optionCount = parseInt(getXmlElementText(xmlDoc, 'OptionCount'));
		xGetElementById('VoteBody').innerHTML = getXmlElementText(xmlDoc, 'Return');
	}
}
function loadVote_onerror(){
	alert('加载投票信息过程中出错。');
}


/*  load vote details  */
function loadVoteDetails(){
	var params = 'xml=true&vote=true&type=details&id=' + topicId;
	var loader = new ajax.loader('Topic.aspx', 'POST', loadVoteDetails_onload, loadVoteDetails_onerror, params);
}
function loadVoteDetails_onload(){
	var xmlDoc = this.req.responseXML;
	var errInfo = getXmlElementText(xmlDoc, 'Error');
	if(errInfo){
		alert(errInfo);
	}else{
		xGetElementById('VoteDetailsBody').innerHTML = getXmlElementText(xmlDoc, 'Return');
	}
}
function loadVoteDetails_onerror(){
	alert('加载投票详细信息过程中出错。');
}


/*  join vote  */
var optionCount;
function joinVote(btn){
	setInputDisabled(btn, true);
	var params = 'xml=true&vote=true&type=join&id=' + topicId + '&value=';
	for(var i = 0; i < optionCount; i++){
		if(xGetElementById('VoteOption_' + i).checked){
			params += i+ ',';
		}
	}
	if(params.charAt(params.length - 1) == ','){
		params = params.substring(0, params.length - 1);
	}
	var extraOption;
	try{
		if(xGetElementById('VoteOption_' + optionCount).checked){
			extraOption = xGetElementById('VoteExtraOptionInput').value;
		}else{
			extraOption = null;
		}
	}catch(e){
		extraOption = null;
	}
	if(extraOption){
		if(extraOption.length == 0){
			alert('您已经选择“其它”,但没有设定具体内容。');
			return;
		}
		params += '&extraoption=' + encodeURIComponent(extraOption);
	}
	var loader = new ajax.loader('Topic.aspx', 'POST', joinVote_onload, joinVote_onerror, params);
	loader.btn = btn;
}
function joinVote_onload(){
	var xmlDoc = this.req.responseXML;
	var errInfo = getXmlElementText(xmlDoc, 'Error');
	if(errInfo){
		alert(errInfo);
		setInputDisabled(this.btn, false);
	}else{
		loadVote();
	}
}
function joinVote_onerror(){
	alert('投票过程中出错。');
	setInputDisabled(this.btn, false);
}


/*  vote chart   */
function getVoteChart(){
	var chartHtml = '<br /><br /><img src="Topic.aspx?id=' + topicId + '&votechart=true&t=' + Math.random() + '" />';
	var container = xGetElementById('VoteChartContainer');
	container.innerHTML = chartHtml;
}


/*  vote locked  */
function updateVoteLocked(btn, locked){
	setInputDisabled(btn, true);
	var params = 'xml=true&vote=true&type=locked&id=' + topicId + '&value=' + locked;
	var loader = new ajax.loader('Topic.aspx', 'POST', updateVoteLocked_onload, updateVoteLocked_onerror, params);
	loader.btn = btn;
}
function updateVoteLocked_onload(){
	var xmlDoc = this.req.responseXML;
	var errInfo = getXmlElementText(xmlDoc, 'Error');
	if(errInfo){
		alert(errInfo);
		setInputDisabled(this.btn, false);
	}else{
		loadVote();
	}
}
function updateVoteLocked_onerror(){
	alert('设定投票过程中出错。');
	setInputDisabled(this.btn, false);
}


/*  fast reply  */
function PostFastReplyPostBody_onkeydown(e){
	e = new xEvent(e);
	if(e.ctrlKey && e.keyCode == 13){
		fastReply();
		e.keyCode = 0;
	}
}
function fastReply(){
	var textbox = xGetElementById('PostFastReplyPostBody');
	var submit_btn = xGetElementById('PostFastReplySubmit');
	var postBody = textbox.value;
	if(postBody.length == 0){
		alert('回复内容不能为空。');
		return;
	}
	setInputDisabled(submit_btn, true);
	var params = 'type=reply&return=postanchor&mood=false&code=false&body=' + encodeURIComponent(postBody) + '&topicid=' + topicId;
	var loader = new ajax.loader('PostEdit.aspx', 'POST', fastReply_onload, fastReply_onerror, params);
	loader.replyBtn = submit_btn;
	loader.bodyText = textbox;
}
function fastReply_onload(){
	var xmlDoc = this.req.responseXML;
	var errInfo = getXmlElementText(xmlDoc, 'Error');
	if(errInfo){
		alert(errInfo);
	}else{
		var post_id = parseInt(getXmlElementText(xmlDoc, 'ID'));
		var post_floor = parseInt(getXmlElementText(xmlDoc, 'Floor'));
		var post_page = parseInt(getXmlElementText(xmlDoc, 'Page'));
		this.bodyText.value = '';
		fastReply_loadReply(post_id, post_floor, post_page);
	}
	setInputDisabled(this.replyBtn, false);
}
function fastReply_onerror(){
	alert('回复主题过程中出现错误。');
	setInputDisabled(this.replyBtn, false);
}

function fastReply_loadReply(id, floor, page){
	post_scrollTo = 'PostList' + floor;
	if(floor != maxFloor + 1 || page != toPage_curPage || needToJoin){
		toPage(page);
	}else{
		loadPost_onsuccess_before = function(){
			maxFloor++;
			var wrapperId = getXmlElementText(this.req.responseXML, 'WrapperID');
			var posts_body = xGetElementById('PostsAddedLater');
			var wrapper = document.createElement('div');
			wrapper.id = wrapperId;
			posts_body.appendChild(wrapper);
			posts_body.appendChild(document.createElement('br'));
		}
		loadPost_onsuccess_after = function(){
			scrollToPost();
		}
		var postLoader = new loadPost(id, loadPost_onsuccess_before, loadPost_onsuccess_after);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -