Скрипт отправки сообщений об ошибках

Скрипт проверки ошибок на сайте

На нашем сайте - сайте, посвященном ошибкам, очень желательно было установить систему устранения этих самых ошибок. В Рунете для этих целей уже традиционно используется система Orphus.

Одно время скрипт этой системы успешно работал на сайте, но в один прекрасный момент вдруг перестал, и все попытки реанимировать его оказались тщетными.

Пришлось разрабатывать свой скрипт. Как оказалось, все не так-то просто. Помогли уроки JavaScript, ну и, конечно же, Google с Яндексом. В итоге, при сложении нескольких найденных блоков скрипта и почерпнутых из учебника знаний получился вполне рабочий модуль для проверки ошибок на сайте. Для его работы необходима поддержка PHP на хостинге.

Последняя версия скрипта 4.1 основана на плагине typo к CMS Drupal. Автор плагина Роман Архаров. В этой версии появилась функция отображения окружающего ошибку текста, сама же ошибка выделяется красным.

Модуль состоит из четырех файлов: mistakes.js, mistakes.css, mistakes.php и overlay.png.
Скачать можно отсюда.

Чтобы его подключить, нужно поместить эти файлы в директорию своего сайта, например в папку «mistakes» и на всех страницах сайта между тегами «head» вставить две строки:

<script type="text/javascript" charset="windows-1251" src="/путь до файла/mistakes.js"></script> <link href="/путь до файла/mistakes.css" rel="stylesheet" type="text/css" />

При этом после src=" и href=" нужно прописать путь к файлу mistakes.js и mistakes.css соответственно.

Файл mistakes.js. В этом файле нужно изменить значение переменной misphploc (то, что между кавычками "") на путь к файлу mistakes.php.

Файл mistakes.php.
Здесь нужно изменить значение нескольких переменных:
$title - заголовок сообщения,
$to, - email, на который будут отправляться сообщения,
$mymail - email, от кого пришло сообщение.

Ну и, конечно же, для того чтобы посетитель знал, что он может посодействовать в исправлении ошибок, нужно разместить на страницах вашего сайта, например, такую фразу:

На сайте работает система проверки ошибок. Обнаружив неточность в тексте, выделите ее и нажмите Ctrl + Enter.

Также открыть окошко отправки сообщения можно, кликнув по ссылке:

Отправить сообщение об ошибке

Код ссылки:

<a href="javascript:void(0)" onclick="PressLink()">Отправить сообщение об ошибке</a>

Исходная кодировка скрипта windows-1251. Если ваш сайт работает на utf-8, то создайте в папке со скриптом файл .htaccess и добавьте в нем строку:

AddDefaultCharset windows-1251

Также вам скорее всего нужно будет переформатировать в utf-8 файл mistakes.js

Скачать модуль mistakes-4.1.zip (zip архив 7Kb).

Если вас по каким-либо причинам не устраивает последняя версия, попробуйте предыдущую - 3.3. mistakes3.3.zip (zip архив 6Kb).

Успешной вам борьбы с опечатками)) Вопросы и пожелания оставляйте в комментариях.

Комментарии

Аватар пользователя Sancha

Я разместил код

Спасибо, черт меня побери :). Про стили я забыл. А есть у вас кнопочка для размещения на сайте? Я про то, чтобы разместить ссылочку на ваш ресурс.

Аватар пользователя Sancha

Заметано. А

Заметано.
А пожелания принимаете?
Если зайти на ваш сайт на главную, то страницу со скриптом не так-то легко найти. Может доработать меню сайта, для оптимального серфинга?

Аватар пользователя Jusonok

Скрипт странно себя ведёт

Давно искала подобный скрипт. Прочитала комментарии по поводу того, что у многих удачно получилось установить его на свои сайты.
Скачала последнюю версию, сделала всё пошагово. Стала тестировать в разных браузерах. НО... не тут-то было!
Скрипт не работает и очень странно ведёт себя в каждом из браузеров :'(

- IE:
Открывается окошко с абсолютно путыми полями, не работает кнопка "отмена"
http://korusconsultingsng.narod2.ru/test/mistakes_IE.JPG

- Mozilla:
Предлагает сохранить .php файл
http://korusconsultingsng.narod2.ru/test/mistakes_Mozilla.JPG

- Opera:
Открывается окошко с частью кода и message, что сообщение уже отправлено
http://korusconsultingsng.narod2.ru/test/mistakes_Opera1.JPG
При использовании полосы прокрутки всё-таки видна форма, но она (так же как и в IE) с абсолютно путыми полями, не работает кнопка "отмена"
http://korusconsultingsng.narod2.ru/test/mistakes_Opera2.JPG

- Chrome:
Как и в Mozilla предлагает сохранить .php файл
http://korusconsultingsng.narod2.ru/test/mistakes_Chrome.JPG

В чём проблема? Это может быть связано непосредственно с используемой CMS?
Посоветуйте, пожалуйста, что можно в этом случае сделать?
Заранее большущее спасибо! :)

Аватар пользователя Гость

в Опере все

в Опере все работает. А в IE-8 нет фона полупрозрачного фона, и окна убежало влево аж за границу фрейма. Хотя у вас на сайте все замечательно и в Опере и в ИЕ8.

Аватар пользователя Гость

Не работает

А посмотрите, пожалуйста, туда же (fireras su). Скрипт ругается. Не может передать параметр (mis) Видимо из-за того, что у меня фреймы открываются скриптом типа "..index.htm?main=abt_r.htm". Реальный адрес страницы, поэтому, другой. Можно ли побороть это? Заранее спасибо.

Аватар пользователя Гость

Разобрался сам,

Разобрался сам, поставил в mistakes.php кодировку utf-8 без bom.
Но почему то письмо не приходит. В переменную $to записал свой адрес.

Аватар пользователя Гость

Оказывается на

Оказывается на сервера не работает функция mail(). Проверил на другом сайте там все заработало! Как включить функцию mail()? Или надо с хостером разговаривать?

Аватар пользователя Гость

Совместимость

Здравствуйте, такой вопрос: если сайт, в который я хочу интегрировать данный скрипт, использует технологию ASP, будет ли скрипт работать? Я так понимаю, что php файл оно не воспримет
Это как то можно решить простыми путями или все-таки нужно переписывать скрипт полностью на java?

Аватар пользователя Гость

Статья ошибки

Не плохо было бы, чтобы при копировании ошибки, копировался хотя бы начальный текст статьи, откуда она взята на странице, а то статей много, и искать трудно.

Аватар пользователя Всеволод

Кодировка?

Доброго времени суток. Установил ваш плагин на сайт PSVitas.ru, но почему-то и в окошке сообщения об ошибке, и в приходящих мейлах вместо букв какие-то иероглифы. Попробовал прописать кодировку УТФ-8 в пхп-файле - не помогает. С чем может быть связано?
Заранее спасибо

Аватар пользователя Алексей

Предложения и замечания

В начале хочется выразить благодарность автору, за интересный и полезный скрипт! Есть несколько пожеланий которые на мой взгляд смогут улучшить функционал скрипта.
Если несколько раз подряд нажать Ctrl+Enter несколько раз происходит загрузка файла-формы отправки сообщения mistakes.php это несколько неправильно. Следует продумать скрипт вызова формы таким образом, что бы исключалась возможность многократной загрузки формы. Второй момент - это несколько изменить CSS таким образом что бы скрипт отображался корректно в IE версий 8-9 а также подобным IE браузерам (например Avant Browser). Хотя они уже могут считаться устаревшими, но тем не менее они еще находят применение у достаточного большого числа пользователей.

Аватар пользователя Ромыч

Глюк

Да согласен Но там модреврайт стоит и урл полностью относительные Так что не вариант уберать данную строчку
Может на яве как то можно REQUEST_URI извлечь и как то дать понять что домен другой ?
Альтернативу на аяксе сможешь придумать ? или эту дыру убрать

Буду особа благодарен. Идея супер МОЛОДЕЦ успехов в начатом. А мы поможем хотелками)))

Аватар пользователя Serhio

Ошибка

Добрый день. А зачем в файле mistakes.js в функции createMessage(title, body) переменные title, body. Без них тоже работает. И еще проблемка обнаружелась при использовании <a href="javascript:void(0)" onclick="winop()">Отправить сообщение об ошибке</a>. Первый раз вместо выделенного текста в поле "Ошибка" выдает undefined. Вот решение проблемы:
// Скрипт отправки сообщений об ошибке http://mistakes.ru/script/mistakes_dev // Версия 3.2 // 06.04.2011 var loc = window.location; var mis; nN = navigator.appName; function createMessage() { // Измените следующую строку. Здесь нужно указать путь к файлу mistakes.php var misphploc = 'mistakes/mistakes.php' var container = document.createElement('div') var scroll = dde.scrollTop || db.scrollTop; var mtop = scroll + 100 + 'px'; var mleft = Math.floor(dde.clientWidth/2) - 175 + 'px'; container.innerHTML = '<div id="mistake">\ <div id="m_window" style="top:' + mtop + '; left:' + mleft + '";>\ <iframe frameborder="0" name="mis" id="m_frame" src="' + misphploc + '"></iframe></div> \ </div></div>' return container.firstChild } function positionMessage(elem) { elem.style.position = 'absolute'; var pageheight = Math.max(dde.scrollHeight, db.scrollHeight, dde.clientHeight); var pagewidth = Math.max(dde.scrollWidth, db.scrollWidth, dde.clientWidth); elem.style.height = pageheight + 'px'; elem.style.width = pagewidth + 'px'; } function winop() { dde=document.documentElement; db=document.body; var messageElem = createMessage() positionMessage(messageElem) db.appendChild(messageElem) } function getText(e) { if (!e) e= window.event; if((e.ctrlKey) && ((e.keyCode==10)||(e.keyCode==13))) {PressLink();} return true;} function PressLink() { if(nN == 'Microsoft Internet Explorer') {if(document.selection.createRange()) {var range = document.selection.createRange(); mis = range.text; winop();}} else {if (window.getSelection()) {mis = window.getSelection(); winop();} else if(document.getSelection()) {mis = document.getSelection(); winop();}} return true; } document.onkeypress = getText;
Новая ссылка:
<a href="javascript:void(0)" onclick="PressLink()">Отправить сообщение об ошибке</a>
Аватар пользователя Виталик

не хочет работать с osCommerce

Вроди бы все прикрутил нормально но почемуто окно появляется пустым без выделеного текста и кнопочки отправить и отмена не работают вот сайт dianaplus.com

Аватар пользователя Виталик

Подробней описать решение проблемы

<base href="http://www.dianaplus.com/"> ето надо прописать в файле всех страничек между <head> </head>. А с www и без может работать одинаково. как можно сделать редирект 301 через .htaccess.
Поменял язык в php файле на укр. но язык почемуто так и не подтянулся.

Аватар пользователя Сергей

Благодарность

Спасибо автору за проделанную работу.
Поставил проверку на сайт. Потратил 10 минут. Все стало отлично. Единственный нюанс, который заметил, так это Google Chrome при выделении текста и нажатии на картинку (а не Cntr+Enter) не умеет корректно заполнять поле Ошибка в окне диалога.
Проверку поставил здесь: http://borovik.com/index_instruction.php?Gins=2

Аватар пользователя vivi

Пожелание

При выделении текста на странице и нажатии на ссылку (<a href="javascript:void(0)" onclick="winop()">Отправить сообщение об ошибке</a>) появляется окно с ошибкой - undefined (т.е не цепляет выделенный текст). Если выделить ошибку и нажать Cntl+Enter, то все нормально.

Страницы

Добавить комментарий