diff forum/Themes/Vamp/xml_board.js @ 76:e3e11437ecea website

Add forum code
author Chris Cannam
date Sun, 07 Jul 2013 11:25:48 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/forum/Themes/Vamp/xml_board.js	Sun Jul 07 11:25:48 2013 +0200
@@ -0,0 +1,113 @@
+var cur_topic_id, cur_msg_id, buff_subject, cur_subject_div, in_edit_mode = 0;
+var hide_prefixes = Array();
+
+function modify_topic(topic_id, first_msg_id, cur_session_id)
+{
+	if (!window.XMLHttpRequest)
+		return;
+	if (typeof(window.opera) != "undefined")
+	{
+		var test = new XMLHttpRequest();
+		if (typeof(test.setRequestHeader) != "function")
+			return;
+	}
+
+	if (in_edit_mode == 1)
+	{
+		if (cur_topic_id == topic_id)
+			return;
+		else
+			modify_topic_cancel();
+	}
+
+	in_edit_mode = 1;
+	mouse_on_div = 1;
+	cur_topic_id = topic_id;
+
+	if (typeof window.ajax_indicator == "function")
+		ajax_indicator(true);
+
+	getXMLDocument(smf_scripturl + "?action=quotefast;quote=" + first_msg_id + ";sesc=" + cur_session_id + ";modify;xml", onDocReceived_modify_topic);
+}
+
+function onDocReceived_modify_topic(XMLDoc)
+{
+	cur_msg_id = XMLDoc.getElementsByTagName("message")[0].getAttribute("id");
+
+	cur_subject_div = document.getElementById('msg_' + cur_msg_id.substr(4));
+	buff_subject = getInnerHTML(cur_subject_div);
+
+	// Here we hide any other things they want hiding on edit.
+	set_hidden_topic_areas('none');
+
+	modify_topic_show_edit(XMLDoc.getElementsByTagName("subject")[0].childNodes[0].nodeValue);
+
+	if (typeof window.ajax_indicator == "function")
+		ajax_indicator(false);
+}
+
+function modify_topic_cancel()
+{
+	setInnerHTML(cur_subject_div, buff_subject);
+	set_hidden_topic_areas('');
+
+	in_edit_mode = 0;
+	return false;
+}
+
+function modify_topic_save(cur_session_id)
+{
+	if (!in_edit_mode)
+		return true;
+
+	var i, x = new Array();
+	x[x.length] = 'subject=' + escape(textToEntities(document.forms.quickModForm['subject'].value)).replace(/\+/g, "%2B");
+	x[x.length] = 'topic=' + parseInt(document.forms.quickModForm.elements['topic'].value);
+	x[x.length] = 'msg=' + parseInt(document.forms.quickModForm.elements['msg'].value);
+
+	if (typeof window.ajax_indicator == "function")
+		ajax_indicator(true);
+
+	sendXMLDocument(smf_scripturl + "?action=jsmodify;topic=" + parseInt(document.forms.quickModForm.elements['topic'].value) + ";sesc=" + cur_session_id + ";xml", x.join("&"), modify_topic_done);
+
+	return false;
+}
+
+function modify_topic_done(XMLDoc)
+{
+	if (!XMLDoc)
+	{
+		modify_topic_cancel();
+		return true;
+	}
+
+	var message = XMLDoc.getElementsByTagName("smf")[0].getElementsByTagName("message")[0];
+	var subject = message.getElementsByTagName("subject")[0];
+	var error = message.getElementsByTagName("error")[0];
+
+	if (typeof window.ajax_indicator == "function")
+		ajax_indicator(false);
+
+	if (!subject || error)
+		return false;
+
+	subjectText = subject.childNodes[0].nodeValue;
+
+	modify_topic_hide_edit(subjectText);
+
+	set_hidden_topic_areas('');
+
+	in_edit_mode = 0;
+
+	return false;
+}
+
+// Simply restore any hidden bits during topic editing.
+function set_hidden_topic_areas(set_style)
+{
+	for (var i = 0; i < hide_prefixes.length; i++)
+	{
+		if (document.getElementById(hide_prefixes[i] + cur_msg_id.substr(4)) != null)
+			document.getElementById(hide_prefixes[i] + cur_msg_id.substr(4)).style.display = set_style;
+	}
+}