mirror of
https://github.com/ACSPRI/queXS
synced 2024-04-02 12:12:16 +00:00
316 lines
11 KiB
JavaScript
316 lines
11 KiB
JavaScript
// $Id: tokens.js 8633 2010-04-25 12:57:33Z c_schmitz
|
|
$(document).ready(function(){
|
|
|
|
intThrottlingRate = 550; // 1 request per 550 ms
|
|
|
|
$('#translationtabs').tabs();
|
|
$('#translationtabs').show();
|
|
$('#translationloading').hide();
|
|
|
|
$('input.auto-trans').live('click',function(ui)
|
|
{
|
|
var sTarget_id = $(ui.target).attr('id');
|
|
|
|
var sBaseLang = $("[name=baselang]").val();
|
|
var sToLang = $("[name=tolang]").val();
|
|
|
|
$("._from_",$(ui.target).parent()).each(function(index,element)
|
|
{
|
|
var sToConvert = $(element).html();
|
|
|
|
var sId = ($(element).attr('id')).split('_from_').join("_newvalue_");
|
|
|
|
var bIgnore = false;
|
|
|
|
if ($("textarea[name="+sId+"]").val()){
|
|
|
|
// fallback if the FCKEditor is not avaliable
|
|
sTargetInnerText = strip($("textarea[name="+sId+"]").val());
|
|
|
|
|
|
var oMyEditor = CKEDITOR.instances[sId];
|
|
if (oMyEditor)
|
|
{
|
|
sTargetInnerText = strip(oMyEditor.getData());
|
|
}
|
|
|
|
|
|
if (!sTargetInnerText)
|
|
sTargetInnerText = ""
|
|
|
|
if (sTargetInnerText.length > 0){
|
|
bIgnore = true;
|
|
}
|
|
|
|
if (sTargetInnerText == strip(sToConvert)){
|
|
bIgnore = false;
|
|
}
|
|
}
|
|
|
|
if (!bIgnore){
|
|
sToConvert = sToConvert.replace( new RegExp( "\\n", "g" ),'\\n');
|
|
sToConvert = sToConvert.replace(/"/g,'\\"');
|
|
setTimeout('fDoTranslateAjax("'+sBaseLang+'","'+sToLang+'","'+sToConvert+'","'+sId+'");',index*intThrottlingRate)
|
|
}
|
|
|
|
});
|
|
|
|
setTimeout('fHideAjaxLoader();',($("._from_",$(ui.target).parent()).length)*intThrottlingRate)
|
|
|
|
return false;
|
|
});
|
|
});
|
|
function fHideAjaxLoader(){
|
|
$('.ajax-loader').css('display','none');
|
|
}
|
|
|
|
function fDoTranslateAjax(sBaseLang,sToLang,sToConvert,sId)
|
|
{
|
|
$('.ajax-loader').css('display','inline');
|
|
$.ajax({
|
|
url:'admin.php',
|
|
datatype: 'json',
|
|
async: true,
|
|
data:{
|
|
action: 'ajaxtranslategoogleapi',
|
|
baselang:sBaseLang,
|
|
tolang:sToLang,
|
|
text:sToConvert
|
|
},
|
|
success: function(aData)
|
|
{
|
|
if (aData.error)
|
|
{
|
|
alert(sGoogleApiError + " " + sDetailedError + ": " + aData.error);
|
|
}
|
|
else if (!aData.error)
|
|
{
|
|
$("[name="+sId+"]").html(aData.converted);
|
|
|
|
var oMyEditor = CKEDITOR.instances[sId];
|
|
|
|
if (oMyEditor)
|
|
{
|
|
oMyEditor.setData(aData.converted);
|
|
}
|
|
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
|
|
|
|
function strip(html)
|
|
{
|
|
html = html_entity_decode(html);
|
|
var tmp = document.createElement("DIV");
|
|
tmp.innerHTML = html;
|
|
return tmp.textContent||tmp.innerText;
|
|
}
|
|
|
|
function html_entity_decode (string, quote_style) {
|
|
// Convert all HTML entities to their applicable characters
|
|
//
|
|
// version: 1009.2513
|
|
// discuss at: http://phpjs.org/functions/html_entity_decode
|
|
// + original by: john (http://www.jd-tech.net)
|
|
// + input by: ger
|
|
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
|
// + revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
|
// + bugfixed by: Onno Marsman
|
|
// + improved by: marc andreu
|
|
// + revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
|
// + input by: Ratheous
|
|
// + bugfixed by: Brett Zamir (http://brett-zamir.me)
|
|
// + input by: Nick Kolosov (http://sammy.ru)
|
|
// + bugfixed by: Fox
|
|
// - depends on: get_html_translation_table
|
|
// * example 1: html_entity_decode('Kevin & van Zonneveld');
|
|
// * returns 1: 'Kevin & van Zonneveld'
|
|
// * example 2: html_entity_decode('<');
|
|
// * returns 2: '<'
|
|
var hash_map = {}, symbol = '', tmp_str = '', entity = '';
|
|
tmp_str = string.toString();
|
|
|
|
if (false === (hash_map = this.get_html_translation_table('HTML_ENTITIES', quote_style))) {
|
|
return false;
|
|
}
|
|
|
|
// fix & problem
|
|
// http://phpjs.org/functions/get_html_translation_table:416#comment_97660
|
|
delete(hash_map['&']);
|
|
hash_map['&'] = '&';
|
|
|
|
for (symbol in hash_map) {
|
|
entity = hash_map[symbol];
|
|
tmp_str = tmp_str.split(entity).join(symbol);
|
|
}
|
|
tmp_str = tmp_str.split(''').join("'");
|
|
|
|
return tmp_str;
|
|
}
|
|
|
|
function get_html_translation_table (table, quote_style) {
|
|
// Returns the internal translation table used by htmlspecialchars and htmlentities
|
|
//
|
|
// version: 1009.2513
|
|
// discuss at: http://phpjs.org/functions/get_html_translation_table
|
|
// + original by: Philip Peterson
|
|
// + revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
|
// + bugfixed by: noname
|
|
// + bugfixed by: Alex
|
|
// + bugfixed by: Marco
|
|
// + bugfixed by: madipta
|
|
// + improved by: KELAN
|
|
// + improved by: Brett Zamir (http://brett-zamir.me)
|
|
// + bugfixed by: Brett Zamir (http://brett-zamir.me)
|
|
// + input by: Frank Forte
|
|
// + bugfixed by: T.Wild
|
|
// + input by: Ratheous
|
|
// % note: It has been decided that we're not going to add global
|
|
// % note: dependencies to php.js, meaning the constants are not
|
|
// % note: real constants, but strings instead. Integers are also supported if someone
|
|
// % note: chooses to create the constants themselves.
|
|
// * example 1: get_html_translation_table('HTML_SPECIALCHARS');
|
|
// * returns 1: {'"': '"', '&': '&', '<': '<', '>': '>'}
|
|
|
|
var entities = {}, hash_map = {}, decimal = 0, symbol = '';
|
|
var constMappingTable = {}, constMappingQuoteStyle = {};
|
|
var useTable = {}, useQuoteStyle = {};
|
|
|
|
// Translate arguments
|
|
constMappingTable[0] = 'HTML_SPECIALCHARS';
|
|
constMappingTable[1] = 'HTML_ENTITIES';
|
|
constMappingQuoteStyle[0] = 'ENT_NOQUOTES';
|
|
constMappingQuoteStyle[2] = 'ENT_COMPAT';
|
|
constMappingQuoteStyle[3] = 'ENT_QUOTES';
|
|
|
|
useTable = !isNaN(table) ? constMappingTable[table] : table ? table.toUpperCase() : 'HTML_SPECIALCHARS';
|
|
useQuoteStyle = !isNaN(quote_style) ? constMappingQuoteStyle[quote_style] : quote_style ? quote_style.toUpperCase() : 'ENT_COMPAT';
|
|
|
|
if (useTable !== 'HTML_SPECIALCHARS' && useTable !== 'HTML_ENTITIES') {
|
|
throw new Error("Table: "+useTable+' not supported');
|
|
// return false;
|
|
}
|
|
|
|
entities['38'] = '&';
|
|
if (useTable === 'HTML_ENTITIES') {
|
|
entities['160'] = ' ';
|
|
entities['161'] = '¡';
|
|
entities['162'] = '¢';
|
|
entities['163'] = '£';
|
|
entities['164'] = '¤';
|
|
entities['165'] = '¥';
|
|
entities['166'] = '¦';
|
|
entities['167'] = '§';
|
|
entities['168'] = '¨';
|
|
entities['169'] = '©';
|
|
entities['170'] = 'ª';
|
|
entities['171'] = '«';
|
|
entities['172'] = '¬';
|
|
entities['173'] = '­';
|
|
entities['174'] = '®';
|
|
entities['175'] = '¯';
|
|
entities['176'] = '°';
|
|
entities['177'] = '±';
|
|
entities['178'] = '²';
|
|
entities['179'] = '³';
|
|
entities['180'] = '´';
|
|
entities['181'] = 'µ';
|
|
entities['182'] = '¶';
|
|
entities['183'] = '·';
|
|
entities['184'] = '¸';
|
|
entities['185'] = '¹';
|
|
entities['186'] = 'º';
|
|
entities['187'] = '»';
|
|
entities['188'] = '¼';
|
|
entities['189'] = '½';
|
|
entities['190'] = '¾';
|
|
entities['191'] = '¿';
|
|
entities['192'] = 'À';
|
|
entities['193'] = 'Á';
|
|
entities['194'] = 'Â';
|
|
entities['195'] = 'Ã';
|
|
entities['196'] = 'Ä';
|
|
entities['197'] = 'Å';
|
|
entities['198'] = 'Æ';
|
|
entities['199'] = 'Ç';
|
|
entities['200'] = 'È';
|
|
entities['201'] = 'É';
|
|
entities['202'] = 'Ê';
|
|
entities['203'] = 'Ë';
|
|
entities['204'] = 'Ì';
|
|
entities['205'] = 'Í';
|
|
entities['206'] = 'Î';
|
|
entities['207'] = 'Ï';
|
|
entities['208'] = 'Ð';
|
|
entities['209'] = 'Ñ';
|
|
entities['210'] = 'Ò';
|
|
entities['211'] = 'Ó';
|
|
entities['212'] = 'Ô';
|
|
entities['213'] = 'Õ';
|
|
entities['214'] = 'Ö';
|
|
entities['215'] = '×';
|
|
entities['216'] = 'Ø';
|
|
entities['217'] = 'Ù';
|
|
entities['218'] = 'Ú';
|
|
entities['219'] = 'Û';
|
|
entities['220'] = 'Ü';
|
|
entities['221'] = 'Ý';
|
|
entities['222'] = 'Þ';
|
|
entities['223'] = 'ß';
|
|
entities['224'] = 'à';
|
|
entities['225'] = 'á';
|
|
entities['226'] = 'â';
|
|
entities['227'] = 'ã';
|
|
entities['228'] = 'ä';
|
|
entities['229'] = 'å';
|
|
entities['230'] = 'æ';
|
|
entities['231'] = 'ç';
|
|
entities['232'] = 'è';
|
|
entities['233'] = 'é';
|
|
entities['234'] = 'ê';
|
|
entities['235'] = 'ë';
|
|
entities['236'] = 'ì';
|
|
entities['237'] = 'í';
|
|
entities['238'] = 'î';
|
|
entities['239'] = 'ï';
|
|
entities['240'] = 'ð';
|
|
entities['241'] = 'ñ';
|
|
entities['242'] = 'ò';
|
|
entities['243'] = 'ó';
|
|
entities['244'] = 'ô';
|
|
entities['245'] = 'õ';
|
|
entities['246'] = 'ö';
|
|
entities['247'] = '÷';
|
|
entities['248'] = 'ø';
|
|
entities['249'] = 'ù';
|
|
entities['250'] = 'ú';
|
|
entities['251'] = 'û';
|
|
entities['252'] = 'ü';
|
|
entities['253'] = 'ý';
|
|
entities['254'] = 'þ';
|
|
entities['255'] = 'ÿ';
|
|
}
|
|
|
|
if (useQuoteStyle !== 'ENT_NOQUOTES') {
|
|
entities['34'] = '"';
|
|
}
|
|
if (useQuoteStyle === 'ENT_QUOTES') {
|
|
entities['39'] = ''';
|
|
}
|
|
entities['60'] = '<';
|
|
entities['62'] = '>';
|
|
|
|
|
|
// ascii decimals to real symbols
|
|
for (decimal in entities) {
|
|
symbol = String.fromCharCode(decimal);
|
|
hash_map[symbol] = entities[decimal];
|
|
}
|
|
|
|
return hash_map;
|
|
}
|