mirror of
https://github.com/godotengine/godot-question2answer.git
synced 2026-01-01 01:48:37 +03:00
This project lived only on the server without version control. This is now the starting point for the repository.
272 lines
6.0 KiB
JavaScript
272 lines
6.0 KiB
JavaScript
/*
|
|
Question2Answer by Gideon Greenspan and contributors
|
|
http://www.question2answer.org/
|
|
|
|
File: qa-content/qa-question.js
|
|
Description: THIS FILE HAS BEEN DEPRECATED IN FAVOUR OF qa-global.js
|
|
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License
|
|
as published by the Free Software Foundation; either version 2
|
|
of the License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
More about this license: http://www.question2answer.org/license.php
|
|
*/
|
|
|
|
var qa_element_revealed = null;
|
|
|
|
function qa_toggle_element(elem)
|
|
{
|
|
var e = elem ? document.getElementById(elem) : null;
|
|
|
|
if (e && e.qa_disabled)
|
|
e = null;
|
|
|
|
if (e && (qa_element_revealed == e)) {
|
|
qa_conceal(qa_element_revealed, 'form');
|
|
qa_element_revealed = null;
|
|
|
|
} else {
|
|
if (qa_element_revealed)
|
|
qa_conceal(qa_element_revealed, 'form');
|
|
|
|
if (e) {
|
|
if (e.qa_load && !e.qa_loaded) {
|
|
e.qa_load();
|
|
e.qa_loaded = true;
|
|
}
|
|
|
|
if (e.qa_show)
|
|
e.qa_show();
|
|
|
|
qa_reveal(e, 'form', function() {
|
|
var t = $(e).offset().top;
|
|
var h = $(e).height() + 16;
|
|
var wt = $(window).scrollTop();
|
|
var wh = $(window).height();
|
|
|
|
if ((t < wt) || (t > (wt + wh)))
|
|
qa_scroll_page_to(t);
|
|
else if ((t + h) > (wt + wh))
|
|
qa_scroll_page_to(t + h - wh);
|
|
|
|
if (e.qa_focus)
|
|
e.qa_focus();
|
|
});
|
|
}
|
|
|
|
qa_element_revealed = e;
|
|
}
|
|
|
|
return !(e || !elem); // failed to find item
|
|
}
|
|
|
|
function qa_submit_answer(questionid, elem)
|
|
{
|
|
var params = qa_form_params('a_form');
|
|
|
|
params.a_questionid = questionid;
|
|
|
|
qa_ajax_post('answer', params,
|
|
function(lines) {
|
|
if (lines[0] == '1') {
|
|
if (lines[1] < 1) {
|
|
var b = document.getElementById('q_doanswer');
|
|
if (b)
|
|
b.style.display = 'none';
|
|
}
|
|
|
|
var t = document.getElementById('a_list_title');
|
|
qa_set_inner_html(t, 'a_list_title', lines[2]);
|
|
qa_reveal(t, 'a_list_title');
|
|
|
|
var e = document.createElement('div');
|
|
e.innerHTML = lines.slice(3).join("\n");
|
|
|
|
var c = e.firstChild;
|
|
c.style.display = 'none';
|
|
|
|
var l = document.getElementById('a_list');
|
|
l.insertBefore(c, l.firstChild);
|
|
|
|
var a = document.getElementById('anew');
|
|
a.qa_disabled = true;
|
|
|
|
qa_reveal(c, 'answer');
|
|
qa_conceal(a, 'form');
|
|
|
|
} else if (lines[0] == '0') {
|
|
document.forms['a_form'].submit();
|
|
|
|
} else {
|
|
qa_ajax_error();
|
|
}
|
|
}
|
|
);
|
|
|
|
qa_show_waiting_after(elem, false);
|
|
|
|
return false;
|
|
}
|
|
|
|
function qa_submit_comment(questionid, parentid, elem)
|
|
{
|
|
var params = qa_form_params('c_form_' + parentid);
|
|
|
|
params.c_questionid = questionid;
|
|
params.c_parentid = parentid;
|
|
|
|
qa_ajax_post('comment', params,
|
|
function(lines) {
|
|
|
|
if (lines[0] == '1') {
|
|
var l = document.getElementById('c' + parentid + '_list');
|
|
l.innerHTML = lines.slice(2).join("\n");
|
|
l.style.display = '';
|
|
|
|
var a = document.getElementById('c' + parentid);
|
|
a.qa_disabled = true;
|
|
|
|
var c = document.getElementById(lines[1]); // id of comment
|
|
if (c) {
|
|
c.style.display = 'none';
|
|
qa_reveal(c, 'comment');
|
|
}
|
|
|
|
qa_conceal(a, 'form');
|
|
|
|
} else if (lines[0] == '0') {
|
|
document.forms['c_form_' + parentid].submit();
|
|
|
|
} else {
|
|
qa_ajax_error();
|
|
}
|
|
|
|
}
|
|
);
|
|
|
|
qa_show_waiting_after(elem, false);
|
|
|
|
return false;
|
|
}
|
|
|
|
function qa_answer_click(answerid, questionid, target)
|
|
{
|
|
var params = {};
|
|
|
|
params.answerid = answerid;
|
|
params.questionid = questionid;
|
|
params.code = target.form.elements.code.value;
|
|
params[target.name] = target.value;
|
|
|
|
qa_ajax_post('click_a', params,
|
|
function(lines) {
|
|
if (lines[0] == '1') {
|
|
qa_set_inner_html(document.getElementById('a_list_title'), 'a_list_title', lines[1]);
|
|
|
|
var l = document.getElementById('a' + answerid);
|
|
var h = lines.slice(2).join("\n");
|
|
|
|
if (h.length)
|
|
qa_set_outer_html(l, 'answer', h);
|
|
else
|
|
qa_conceal(l, 'answer');
|
|
|
|
} else {
|
|
target.form.elements.qa_click.value = target.name;
|
|
target.form.submit();
|
|
}
|
|
}
|
|
);
|
|
|
|
qa_show_waiting_after(target, false);
|
|
|
|
return false;
|
|
}
|
|
|
|
function qa_comment_click(commentid, questionid, parentid, target)
|
|
{
|
|
var params = {};
|
|
|
|
params.commentid = commentid;
|
|
params.questionid = questionid;
|
|
params.parentid = parentid;
|
|
params.code = target.form.elements.code.value;
|
|
params[target.name] = target.value;
|
|
|
|
qa_ajax_post('click_c', params,
|
|
function(lines) {
|
|
if (lines[0] == '1') {
|
|
var l = document.getElementById('c' + commentid);
|
|
var h = lines.slice(1).join("\n");
|
|
|
|
if (h.length)
|
|
qa_set_outer_html(l, 'comment', h);
|
|
else
|
|
qa_conceal(l, 'comment');
|
|
|
|
} else {
|
|
target.form.elements.qa_click.value = target.name;
|
|
target.form.submit();
|
|
}
|
|
}
|
|
);
|
|
|
|
qa_show_waiting_after(target, false);
|
|
|
|
return false;
|
|
}
|
|
|
|
function qa_show_comments(questionid, parentid, elem)
|
|
{
|
|
var params = {};
|
|
|
|
params.c_questionid = questionid;
|
|
params.c_parentid = parentid;
|
|
|
|
qa_ajax_post('show_cs', params,
|
|
function(lines) {
|
|
if (lines[0] == '1') {
|
|
var l = document.getElementById('c' + parentid + '_list');
|
|
l.innerHTML = lines.slice(1).join("\n");
|
|
l.style.display = 'none';
|
|
qa_reveal(l, 'comments');
|
|
|
|
} else {
|
|
qa_ajax_error();
|
|
}
|
|
}
|
|
);
|
|
|
|
qa_show_waiting_after(elem, true);
|
|
|
|
return false;
|
|
}
|
|
|
|
function qa_form_params(formname)
|
|
{
|
|
var es = document.forms[formname].elements;
|
|
var params = {};
|
|
|
|
for (var i = 0; i < es.length; i++) {
|
|
var e = es[i];
|
|
var t = (e.type || '').toLowerCase();
|
|
|
|
if (((t != 'checkbox') && (t != 'radio')) || e.checked)
|
|
params[e.name] = e.value;
|
|
}
|
|
|
|
return params;
|
|
}
|
|
|
|
function qa_scroll_page_to(scroll)
|
|
{
|
|
$('html,body').animate({scrollTop: scroll}, 400);
|
|
}
|