На нашем сайте - сайте, посвященном ошибкам, очень желательно было установить систему устранения этих самых ошибок. В Рунете для этих целей уже традиционно используется система 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).
Успешной вам борьбы с опечатками)) Вопросы и пожелания оставляйте в комментариях.
Комментарии
Re: Я разместил код
Опубликовано пользователем gorniy
Нужно прописать еще файл стилей mistakes.css в head вашего сайта.
Я разместил код
Опубликовано пользователем Sancha
Спасибо, черт меня побери :). Про стили я забыл. А есть у вас кнопочка для размещения на сайте? Я про то, чтобы разместить ссылочку на ваш ресурс.
Кнопочка
Опубликовано пользователем gorniy
Кнопочки нет, если хотите можно просто разместить ссылку на главную или на эту страницу.
Например: Ошибки.ru - сайт об ошибках
или Скрипт отправки сообщений об ошибках.
Заметано. А
Опубликовано пользователем Sancha
Заметано.
А пожелания принимаете?
Если зайти на ваш сайт на главную, то страницу со скриптом не так-то легко найти. Может доработать меню сайта, для оптимального серфинга?
Пожелание
Опубликовано пользователем gorniy
Попробую
Обновление
Опубликовано пользователем gorniy
Обновил статью, теперь в ней последняя версия скрипта - 3.1.
Сайты с проверкой орфографии
Опубликовано пользователем Sancha
Уже с 10-ток сайтов с вашей проверкой сделал - все пока довольны.
Re: Сайты
Опубликовано пользователем gorniy
Что ж, я очень рад)
Скрипт странно себя ведёт
Опубликовано пользователем 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?
Посоветуйте, пожалуйста, что можно в этом случае сделать?
Заранее большущее спасибо! :)
Re: Скрипт странно себя ведёт
Опубликовано пользователем gorniy
Jusonok, какую CMS пользуете? Такие ошибки возникают из-за того, что не подключен php.
Re: Скрипт странно себя ведёт
Опубликовано пользователем Jusonok
Используем LifeRay.
Буду разбираться с подключением PHP.
P.S. Кстати, как предложение - в форму я бы ещё добавила кнопочку закрытия - [х]
в Опере все
Опубликовано пользователем Гость
в Опере все работает. А в IE-8 нет фона полупрозрачного фона, и окна убежало влево аж за границу фрейма. Хотя у вас на сайте все замечательно и в Опере и в ИЕ8.
IE-8
Опубликовано пользователем gorniy
Ссылку дадите?
Конечно. Вот
Опубликовано пользователем Гость
Конечно. Вот например: fireras su/1.html
IE-8
Опубликовано пользователем gorniy
Вам DOCTYPE нужно выставить: смотрите комментарии выше.
Все получилось.
Опубликовано пользователем Гость
Спасибо большое.
Не работает
Опубликовано пользователем Гость
А посмотрите, пожалуйста, туда же (fireras su). Скрипт ругается. Не может передать параметр (mis) Видимо из-за того, что у меня фреймы открываются скриптом типа "..index.htm?main=abt_r.htm". Реальный адрес страницы, поэтому, другой. Можно ли побороть это? Заранее спасибо.
Re: Не работает
Опубликовано пользователем gorniy
Вот здесь надо исправить:
файл mistakes.php
var p=top;
top - это верхний уровень, т.е. в вашем случае верхний фрейм. Нужно что-то вроде parent выставить.
Поправил в скрипте. Текущая версия теперь - 3.2
кодировка
Опубликовано пользователем Гость
Здравствуйте!У меня почему-то проблемы с кодировкой. Выходят вот такие вот символ: Р�справляемся
Ссылка http://www.super.kg/mistakes/index.html
Спасибо!
Разобрался сам,
Опубликовано пользователем Гость
Разобрался сам, поставил в mistakes.php кодировку utf-8 без bom.
Но почему то письмо не приходит. В переменную $to записал свой адрес.
Оказывается на
Опубликовано пользователем Гость
Оказывается на сервера не работает функция mail(). Проверил на другом сайте там все заработало! Как включить функцию mail()? Или надо с хостером разговаривать?
mail()
Опубликовано пользователем gorniy
Да, лучше с хостером поговорить.
Совместимость
Опубликовано пользователем Гость
Здравствуйте, такой вопрос: если сайт, в который я хочу интегрировать данный скрипт, использует технологию ASP, будет ли скрипт работать? Я так понимаю, что php файл оно не воспримет
Это как то можно решить простыми путями или все-таки нужно переписывать скрипт полностью на java?
Re: Совместимость
Опубликовано пользователем gorniy
С ASP не работал, но по идее разницы нет, лишь бы хостинг поддерживал php. При срабатывании скрипта файл mistakes.php открывается через iframe, без изменения текущей страницы.
Статья ошибки
Опубликовано пользователем Гость
Не плохо было бы, чтобы при копировании ошибки, копировался хотя бы начальный текст статьи, откуда она взята на странице, а то статей много, и искать трудно.
Re: Статья ошибки
Опубликовано пользователем gorniy
Согласен, было бы неплохо. Только я не знаю, как это сделать.
А найти на странице ошибку можно просто через поиск (Ctrl+F).
Да, найти можно,
Опубликовано пользователем Гость
Да, найти можно, конечно...а из orphus никак не скопировать способ ;-)...? А вообще, спасибо за скрипт, как бы то ни было.
Кодировка?
Опубликовано пользователем Всеволод
Доброго времени суток. Установил ваш плагин на сайт PSVitas.ru, но почему-то и в окошке сообщения об ошибке, и в приходящих мейлах вместо букв какие-то иероглифы. Попробовал прописать кодировку УТФ-8 в пхп-файле - не помогает. С чем может быть связано?
Заранее спасибо
Re: Кодировка?
Опубликовано пользователем gorniy
Всеволод, там используется Windows-1251.
Поместите файл .htaccess из этого архива в папку со скриптом. Должно помочь.
Спасибо
Опубликовано пользователем Всеволод
Спасибо большое!
Предложения и замечания
Опубликовано пользователем Алексей
В начале хочется выразить благодарность автору, за интересный и полезный скрипт! Есть несколько пожеланий которые на мой взгляд смогут улучшить функционал скрипта.
Если несколько раз подряд нажать Ctrl+Enter несколько раз происходит загрузка файла-формы отправки сообщения mistakes.php это несколько неправильно. Следует продумать скрипт вызова формы таким образом, что бы исключалась возможность многократной загрузки формы. Второй момент - это несколько изменить CSS таким образом что бы скрипт отображался корректно в IE версий 8-9 а также подобным IE браузерам (например Avant Browser). Хотя они уже могут считаться устаревшими, но тем не менее они еще находят применение у достаточного большого числа пользователей.
Глюк
Опубликовано пользователем Ромыч
Глюк
Если домен через www примеру www.buauto86.ru
То не работает если без www то работает
Автосалон Сургут
Re: Глюк
Опубликовано пользователем gorniy
Ромыч, в этой строчке проблема:
<Base href="http://buauto86.ru/">
Глюк
Опубликовано пользователем Ромыч
Да согласен Но там модреврайт стоит и урл полностью относительные Так что не вариант уберать данную строчку
Может на яве как то можно REQUEST_URI извлечь и как то дать понять что домен другой ?
Альтернативу на аяксе сможешь придумать ? или эту дыру убрать
Буду особа благодарен. Идея супер МОЛОДЕЦ успехов в начатом. А мы поможем хотелками)))
Аналог
Опубликовано пользователем gorniy
Вот здесь есть аналог на аяксе. Правда, в хроме не работает.
Ошибка
Опубликовано пользователем Serhio
// Скрипт отправки сообщений об ошибке 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>
Re: Ошибка
Опубликовано пользователем gorniy
Serhio, спасибо за участие, а title и body перекочевали из заимствованного скрипта.
Не отправляет ошибки не e-mail
Опубликовано пользователем Олександр
У меня не отправляет сообщения не мЬІл. МЬІло gmail
Re: Не отправляет ошибки не e-mail
Опубликовано пользователем gorniy
В папке спама не смотрели?
не хочет работать с osCommerce
Опубликовано пользователем Виталик
Вроди бы все прикрутил нормально но почемуто окно появляется пустым без выделеного текста и кнопочки отправить и отмена не работают вот сайт dianaplus.com
не хочет работать с osCommerce
Опубликовано пользователем Виталик
поставил на osCommerce как написано на главной не работает, а остальных все нормально в чем может быть проблема???
Re: osCommerce
Опубликовано пользователем gorniy
Виталик, проблема в этой строчке:
<base href="http://www.dianaplus.com/">
Вам лучше определиться с адресом сайта - с www или без него. Этот адрес прописать в base href, а с дополнительного сделать редирект 301 через .htaccess. Также желательно в robots.txt прописать основной хост.
Подробней описать решение проблемы
Опубликовано пользователем Виталик
<base href="http://www.dianaplus.com/"> ето надо прописать в файле всех страничек между <head> </head>. А с www и без может работать одинаково. как можно сделать редирект 301 через .htaccess.
Поменял язык в php файле на укр. но язык почемуто так и не подтянулся.
Re: Подробней описать решение проблемы
Опубликовано пользователем gorniy
редирект 301 через .htaccess
host в robots.txt
По поводу языка сложно сказать, можно просто сделать второй js файл, который будет загружаться на украинской версии вместо русского, и который будет вести к другому же php файлу.
Благодарность
Опубликовано пользователем Сергей
Спасибо автору за проделанную работу.
Поставил проверку на сайт. Потратил 10 минут. Все стало отлично. Единственный нюанс, который заметил, так это Google Chrome при выделении текста и нажатии на картинку (а не Cntr+Enter) не умеет корректно заполнять поле Ошибка в окне диалога.
Проверку поставил здесь: http://borovik.com/index_instruction.php?Gins=2
нюанс
Опубликовано пользователем gorniy
Да, есть такой недочет, в комментариях выше было решение.
Пожелание
Опубликовано пользователем vivi
При выделении текста на странице и нажатии на ссылку (<a href="javascript:void(0)" onclick="winop()">Отправить сообщение об ошибке</a>) появляется окно с ошибкой - undefined (т.е не цепляет выделенный текст). Если выделить ошибку и нажать Cntl+Enter, то все нормально.
Пожелание
Опубликовано пользователем vivi
Решение проблемы увидел, но теперь в Opera не работает, а в chrome все нормально
Re: Пожелание
Опубликовано пользователем gorniy
У меня заработал в Опере, только с этим кодом другая проблема: невозможно ввести текст на странице (например в форме комментариев).
Re: Пожелание
Опубликовано пользователем gorniy
Нет, это я ошибся - все работает) Обновил скрипт, текущая версия 3.3.
Страницы
Добавить комментарий