Mercurial > hg > vamp-website
diff forum/Themes/default/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/default/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; + } +}