Files
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

162 lines
3.8 KiB
JavaScript

/*
Question2Answer by Gideon Greenspan and contributors
http://www.question2answer.org/
File: qa-content/qa-admin.js
Description: Javascript for admin pages to handle Ajax-triggered operations
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_recalc_running = 0;
window.onbeforeunload = function(event)
{
if (qa_recalc_running > 0) {
event = event || window.event;
var message = qa_warning_recalc;
event.returnValue = message;
return message;
}
};
function qa_recalc_click(state, elem, value, noteid)
{
if (elem.qa_recalc_running) {
elem.qa_recalc_stopped = true;
} else {
elem.qa_recalc_running = true;
elem.qa_recalc_stopped = false;
qa_recalc_running++;
document.getElementById(noteid).innerHTML = '';
elem.qa_original_value = elem.value;
if (value)
elem.value = value;
qa_recalc_update(elem, state, noteid);
}
return false;
}
function qa_recalc_update(elem, state, noteid)
{
if (state) {
var recalcCode = elem.form.elements.code_recalc ? elem.form.elements.code_recalc.value : elem.form.elements.code.value;
qa_ajax_post(
'recalc',
{state: state, code: recalcCode},
function(lines) {
if (lines[0] == '1') {
if (lines[2])
document.getElementById(noteid).innerHTML = lines[2];
if (elem.qa_recalc_stopped)
qa_recalc_cleanup(elem);
else
qa_recalc_update(elem, lines[1], noteid);
} else if (lines[0] == '0') {
document.getElementById(noteid).innerHTML = lines[1];
qa_recalc_cleanup(elem);
} else {
qa_ajax_error();
qa_recalc_cleanup(elem);
}
}
);
} else {
qa_recalc_cleanup(elem);
}
}
function qa_recalc_cleanup(elem)
{
elem.value = elem.qa_original_value;
elem.qa_recalc_running = null;
qa_recalc_running--;
}
function qa_mailing_start(noteid, pauseid)
{
qa_ajax_post('mailing', {},
function(lines) {
if (lines[0] == '1') {
document.getElementById(noteid).innerHTML = lines[1];
window.setTimeout(function() {
qa_mailing_start(noteid, pauseid);
}, 1); // don't recurse
} else if (lines[0] == '0') {
document.getElementById(noteid).innerHTML = lines[1];
document.getElementById(pauseid).style.display = 'none';
} else {
qa_ajax_error();
}
}
);
}
function qa_admin_click(target)
{
var p = target.name.split('_');
var params = {entityid: p[1], action: p[2]};
params.code = target.form.elements.code.value;
qa_ajax_post('click_admin', params,
function(lines) {
if (lines[0] == '1')
qa_conceal(document.getElementById('p' + p[1]), 'admin');
else if (lines[0] == '0') {
alert(lines[1]);
qa_hide_waiting(target);
} else
qa_ajax_error();
}
);
qa_show_waiting_after(target, false);
return false;
}
function qa_version_check(uri, version, elem, isCore)
{
var params = {uri: uri, version: version, isCore: isCore};
qa_ajax_post('version', params,
function(lines) {
if (lines[0] == '1')
document.getElementById(elem).innerHTML = lines[1];
}
);
}
function qa_get_enabled_plugins_hashes()
{
var hashes = [];
$('[id^=plugin_enabled]:checked').each(
function(idx, elem) {
hashes.push(elem.id.replace("plugin_enabled_", ""));
}
);
$('[name=enabled_plugins_hashes]').val(hashes.join(';'));
}