jQuery (document).ready(function() {
if (retypos === undefined) return false;
if (retypos.container == '') retypos.container = 'body';
var open_windows = false;
// Модальное окно исправления ошибки
jQuery('
').appendTo('body');
var retyposHTML = ''+
'
\n'+
'
\n'+
' ×\n'+
' Система исправления ошибок\n'+
'
\n'+
'
\n'+
' \n'+
' \n'+
' \n'+
' \n'+
' \n'+
'
\n'+
' \n'+
'
\n';
jQuery('div#retyposModal').html(retyposHTML);
// Контекстное меню при выделении текста
jQuery('
Сообщить об ошибке
').appendTo('body');
jQuery(document).bind('selectionchange', function(e){
var range, rect;
var x = 0, y = 0;
var sel = window.getSelection();
var str = sel.toString().trim().length;
if (!sel.isCollapsed && (str > 4 && str jQuery(window).outerWidth(true) - contextmenuWidth) x = jQuery(window).width() - contextmenuWidth;
y = jQuery(document).scrollTop()+y+3;
jQuery('div.retypos-contextmenu')
.show()
.css({
left: x+'px', // Задаем позицию меню на X
top: y+'px' // Задаем позицию меню по Y
});
jQuery('div.retypos-contextmenu').bind('click', function () {
// если нажата кнопка "Сообщить об ошибке" всплывающего меню
openModalWindow();
});
} else {
jQuery('div.retypos-contextmenu').hide();
}
});
// Открыть модальное окно для исправления ошибки
jQuery(document).keydown(function (e) {
// если нажаты клавиши Ctrl+Enter
if (e.ctrlKey && e.keyCode == 13) {
if (!openModalWindow()) alert("Выделите в тексте фрагмент, содержащий ошибку, длиной от 5 до 180 символов");
}
});
jQuery('img.retypos-banner').click(function () {
if (!openModalWindow()) alert("Выделите в тексте фрагмент, содержащий ошибку, длиной от 5 до 180 символов");
});
var openModalWindow = function () {
var sel = window.getSelection();
var str = sel.toString().trim().length;
if (sel.isCollapsed || (str 180)) return false; // Ничего не выделено
var range = sel.getRangeAt(0);
var startNode = range.startContainer;
var startOffset = range.startOffset;
// Выделенный текст с ошибкой
var typo = range.toString();
// Получить контекст с ошибкой (самый глубокий Node который содержит выделенный текст)
if (range.commonAncestorContainer.nodeType === Node.TEXT_NODE) {
var context = range.commonAncestorContainer.textContent;
var contextText = range.commonAncestorContainer.textContent;
} else {
var context = range.commonAncestorContainer.innerText;
var contextText = range.commonAncestorContainer.innerText;
}
// Отображение контекста на экране
contextText = contextText.replace(typo, ''+typo+'');
// Заполняем тело модального окна
jQuery('div#retyposText').html(contextText);
jQuery('input#retyposTypo').val(escapeHtml(typo));
jQuery('input#retyposContext').val(escapeHtml(context));
jQuery('input#retyposCorrected').val(typo);
jQuery('div#retyposModal').show();
open_windows = true;
return true;
}
function sendserver() {
if (!jQuery('input').is('#retyposTypo')) return;
var typo = jQuery('input#retyposTypo').val();
if (!typo) return;
var context = jQuery('input#retyposContext').val();
var correct = jQuery('input#retyposCorrected').val();
var comment = jQuery('input#retyposComment').val();
var data = {
language: "ru",
url: window.location.href, // Url of the page with a typo
text: typo, // Typo text
context: context, // TODO: context
corrected: correct, // This is a correct variant
comment: comment, // This is a comment for a correction
correctTypo: retypos.correctTypo // URL of script for run TyposClient
}
// Отправляем
jQuery.ajax({
method: "POST",
data: data,
url: "//eterfund.ru/api/typos/server.php",
success: function(result){
result = JSON.parse(result);
jQuery('p#retyposMessage').html(result.message);
console.log("sendRequest success:", result.message);
},
error: function (jqXHR, exception) {
console.log("Status:"+jqXHR.status+" Response:"+jqXHR.responseText+" Exception:"+exception);
jQuery('p#retyposMessage').html('Ошибка отправки данных.');
}
});
setTimeout(function() {
jQuery('p#retyposMessage').html("");
clearModal();
}, 500);
}
$(document).on('keypress',function(e) {
if(e.which == 13 && open_windows) {
sendserver();
}
});
// Отправить данные на сервер
jQuery('button#retyposOk').bind('click', function(){
sendserver();
});
// Закрыть модальное окно
jQuery('span.retypos-close').click(function() {
clearModal();
});
jQuery('button#retyposCancel').click(function() {
clearModal();
});
function clearModal() {
jQuery('input#retyposContext').val('');
jQuery('input#retyposCorrected').val('');
jQuery('input#retyposComment').val('');
jQuery('div#retyposModal').hide();
open_windows = false;
}
function escapeHtml(text) {
var map = {
'&': '&',
'': '>',
'"': '"',
"'": '''
};
return text.replace(/[&"']/g, function(m) { return map[m]; });
}
});
Week-on-pcCom.traviangames.traviankingdomsNataliya-inina-ispytanie-detstvom-na-puti-k-sebeKartofel-zapechjonnyj-na-ugljahCom.iqsolutions.framex