Файл: qa-content/qa-page.js
Строк: 183
<?php
/*
Question2Answer (c) Gideon Greenspan
http://www.question2answer.org/
File: qa-content/qa-page.js
Version: See define()s at top of qa-include/qa-base.php
Description: Common Javascript including voting, notices and favorites
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
*/
function qa_reveal(elem, type, callback)
{
if (elem)
$(elem).slideDown(400, callback);
}
function qa_conceal(elem, type, callback)
{
if (elem)
$(elem).slideUp(400);
}
function qa_set_inner_html(elem, type, html)
{
elem.innerHTML=html;
}
function qa_set_outer_html(elem, type, html)
{
if (elem) {
var e=document.createElement('DIV');
e.innerHTML=html;
elem.parentNode.replaceChild(e.firstChild, elem);
}
}
function qa_show_waiting_after(elem, inside)
{
if (elem && !elem.qa_waiting_shown) {
elem.qa_waiting_shown=true;
var w=document.getElementById('qa-waiting-template');
if (w) {
var c=w.cloneNode(true);
c.id=null;
if (inside)
elem.insertBefore(c, null);
else
elem.parentNode.insertBefore(c, elem.nextSibling);
}
}
}
function qa_vote_click(elem)
{
var ens=elem.name.split('_');
var postid=ens[1];
var vote=parseInt(ens[2]);
var anchor=ens[3];
qa_ajax_post('vote', {postid:postid, vote:vote},
function(lines) {
if (lines[0]=='1') {
qa_set_inner_html(document.getElementById('voting_'+postid), 'voting', lines.slice(1).join("n"));
} else if (lines[0]=='0') {
var mess=document.getElementById('errorbox');
if (!mess) {
var mess=document.createElement('div');
mess.id='errorbox';
mess.className='qa-error';
mess.innerHTML=lines[1];
mess.style.display='none';
}
var postelem=document.getElementById(anchor);
var e=postelem.parentNode.insertBefore(mess, postelem);
qa_reveal(e);
} else
qa_ajax_error();
}
);
return false;
}
function qa_notice_click(elem)
{
var ens=elem.name.split('_');
qa_ajax_post('notice', {noticeid:ens[1]},
function(lines) {
if (lines[0]=='1')
qa_conceal(document.getElementById('notice_'+ens[1]), 'notice');
else
qa_ajax_error();
}
);
return false;
}
function qa_favorite_click(elem)
{
var ens=elem.name.split('_');
qa_ajax_post('favorite', {entitytype:ens[1], entityid:ens[2], favorite:parseInt(ens[3])},
function (lines) {
if (lines[0]=='1')
qa_set_inner_html(document.getElementById('favoriting'), 'favoriting', lines.slice(1).join("n"));
else
qa_ajax_error();
}
);
qa_show_waiting_after(elem, false);
return false;
}
function qa_ajax_post(operation, params, callback)
{
jQuery.extend(params, {qa:'ajax', qa_operation:operation, qa_root:qa_root, qa_request:qa_request});
jQuery.post(qa_root, params, function(response) {
var header='QA_AJAX_RESPONSE';
var headerpos=response.indexOf(header);
if (headerpos>=0)
callback(response.substr(headerpos+header.length).replace(/^s+/, '').split("n"));
else
callback([]);
}, 'text').error(function(jqXHR) { if (jqXHR.readyState>0) callback([]) });
}
function qa_ajax_error()
{
alert('Unexpected response from server - please try again or switch off Javascript.');
}
?>