Накалякал сам, вот что получилось:
1. в страничку (у меня object-view) вставляем кнопку (оформляем ее стилями)
<div id="error">
<a href="javascript:error_on_page()" class="red_button">
<span class="caption">Сообщить об ошибке в описании</span>
</a>
</div>
2. сам js код:
function error_on_page(){
var text = $.trim(get_selection()).substring(0,500);
if (text == '') {alert('Выделите некорректный текст мышкой');return;}
if(confirm('Хотите сообщить об ошибке: '+(text!=''?('\n\nНекорректный текст:\n\n"'+text+'"\n'):''))) {
$.ajax({
type: 'POST',
url: '/mail.php',
data: {message:text, page : location.href},
success: function(data){
if( data == 'success') {
alert("Спасибо!");
// как-то сообщаем, что все ок
} else {
alert("Спасибо!");
// не все ок, но все равно спасибо
}
},
error:function(){
alert("Спасибо!");
// тоже не все ок
}
});
}
};
function get_selection() {
if (window.getSelection) {
return window.getSelection();
} else if (document.selection) {
return document.selection.createRange().text;
}
return '';
}
3. файл mail.php (кинул в корень сайта, не опасно?)
<?php
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
$message = substr(htmlspecialchars(trim($_POST['message'])), 0, 500);
$page = substr(htmlspecialchars(trim($_POST['page'])), 0, 500);
$headers = "Content-type: text/plain; charset=UTF-8\r\n";
$to1 = 'email_before'; // email до собаки
$to2 = 'email_after'; // email после собаки
$from = 'SITE';
if (!empty($message)) {
$sendMessage =
'страница: '.$page.'
текст: '.$message.'
IP : '.$_SERVER[REMOTE_ADDR];
mail($to1.'@'.$to2, $message, $sendMessage, $headers);
echo('success');
} else {
echo('empty');
}
exit;
}
//не ajax запрос
echo 'not_ajax';
?>
Вроде работает, меня в принципе устраивает (функционал)
Жду критики, по поводу безопасности. Какие подводные камни могут быть