Files
godot-question2answer/qa-content/qa-question.js
Emi 07ec659385 Importing project into Git
This project lived only on the server without version control. This is now the starting point for the repository.
2023-05-23 20:03:24 +02:00

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);
}