Ньюансы работы Opera с XMLHttpRequest или почему пусто в responseText

Учиться-учиться и ещё раз учиться, потому что всегда приятно узнавать что-то новое, даже о, казалось бы, давно известных вещах.

Комментарий товарища Maelow к посту про Anti-Smap Image + Ajax Comment :

«в опере у меня при вводе неверных символов в КАПЧЕ выскакивает окно с ошибкой не содержащей текста»

заставил запустить установленную, но редко применяемую Opera, дабы удостовериться в том, что действительно выдаётся пустое сообщение.

Долгие попытки поиска ошибок в коде плагина, а так же гугленье заставили сделать вот какой вывод о работе XMLHttpRequest, а точнее о получаемых ответах:
«При получении Opera в header’е страницы, возвращаемой запросом при помощи XMLHttpRequest, любого статуса кроме 200, данные, содержащиеся на странице, не попадают в responseText.»

Именно поэтому и не работали в Опере сообщения об ошибках Ajax-Comment, который возвращал текст сообщения вместе с 406 (Not Acceptable) ошибкой. FireFox и IE ловили ошибку и, получив ещё и текст со страницы, выдавали alert как нужно, а Опере ничего не оставалось, кроме как показывать пустые строки.

В принципе всё достаточно логично, только вот в скрипте Ajax-Comment пришлось делать «финт-ушами» и вносить изменения, дабы и Опера жила припеваючи.

Сам способ я считаю не слишком хорошим, но если кто знает более простой, то прошу дать ссылку или описать свой метод.
Поступил я так: заменил header ответа с 406 на 200 (вот это-то, по сути, и есть не правильное, в плане логики, действие) и добавил в сам текст сообщения — «Error!».
В java-script, который обрабатывал ответы, добавил проверку на наличие этого сообщения, а затем уже вызов alert без него:

Если вы уже поставили себе Ajax-Comment, то просто замените файл ajax-commens.php, взяв его из этого архива. Во всех остальных сборках я уже обновил этот файл.

Как я делал блог из WordPress (часть 3.5) или Anti-Spam Image + Ajax Comment

В продолжение темы о анти-спаме.

Пообщался с Максимом и решил, что его Anti Spam Image всё же поинтереснее и более доступен для понимания (да и весит 6 кб, вместо 900 у AuthImage).

Поэтому предлагаю вашему вниманию anti-spam-image-ajax.rar.
Копируем содержимое архива в папку плагинов WordPress и активируем через панель. Если стоит предыдущая версия плагинов, то достаточно заменить файлы, можно даже не переактивировать.

Так же обновил Ajax Comments, напомню, что плагин не будет адекватно работать, при наличии каких-либо Capcha-плагинов, так что ставьте его на своё усмотрение, а если решите добавить AuthImage или Anti Spam Image, то берите их с моего сайта и не забудьте раскомментировать соответствующие строчки в ajax-comment.php (ищите русский комментарий в тексте скрипта).
Возможно Максим добавит модифицированную версию в свою сборку WordPress, но пока что это не известно. Не модифицированная версия может работать не правильно.

Желаю вам Spam-Free будней и побольше чистых комментариев.


Остальные части из серии «Как я делал блог из WordPress»:
Часть 1 — Нахрена оно вообще надо?
Часть 2 — DownloadCounter и WP-stats по-русски
Часть 3 — Боремся со спамом AuthImage-Ajax

Как я делал блог из WordPress (часть 3) или Боремся со спамом AuthImage-Ajax

Спам-спам-спам

Как много в этом слове, не правда ли? Одно дело, когда блог не слишком популярен (как мой например:)) и эта проблема касается тебя постольку-постольку, но даже при этом Akismet умудрился выловить 680 спам сообщений.

Было это правда до того, как я поставил Anti Spam Image от Максима. И всем этот плагин хорош, да только частенько случается такая вещь: пишешь ты огромный комментарий, жмёшь «отправить», а тебе в ответ: «извините, код не верный. введите ещё раз». Ага, только когда жмёшь «назад», попадаешь на пустую страницу, и повторно писать качественный комментарий нет ни сил, ни желания.

Тогда то и появилась у меня мысль — почему бы не проверять код с картинки ещё до её отправки, ну или вообще не менять страницу после поста комментария. Немного погуглив наткнулся сперва на AJAX Comment и прямо оттуда вёл линк на AuthImage.

AJAX Comment встал как литой простой активацией, а вот с AuthImage пришлось повозиться. Во-первых, последнее его обновление было в 2004 году, под WordPress 1.5. Во-вторых, для его работы надо было вносить изменения в шаблон, а это уже несколько напрягло, т.к. тот же Anti Spam Image Максима внедрялся сам собой.

Как выяснилось, древность плагина особо не сказывается на его работе, т.е. картинку он генерирует исправно и проверяет её тоже. А вот чтобы заставить его самостоятельно встраиваться в шаблон — пришлось немного повозиться (и поизучать код Anti Spam Image).

Зато теперь всё как у белых людей — залил папки, нажал в админ-панели «Активировать» и всё работает. Попутно руссифицировал плагины.

Вот собственно ссылки на архивы:
1. authimage-ajax-pack.rar — Архив с обоими плагинами, настроенными на совместную работу. Т.е. желательно активировать их вместе, если же необходимость в AuthImage отпадёт, то нужно будет внести изменения в ajax-comments.php, закомментрировав в нём строки 92, 152, 153. Это всё описано в прилагаемом README.
2. authimage.rar — Анти-Спам плагин. Работает как и множество других Captcha-плагинов.
3. ajax-comments.rar — добавление комментариев без перезагрузки страницы. Все нужные строки уже закомментированны.

Хочу ещё сказать, что список слов, которые используются при создании картинки, хранится в текстовом файле words.txt, который следует искать в папке плагина/authimage-inc/words/. Честно говоря не знаю, как он работает с кириллицей, поэтому если попробуете, то отпишитесь в комментах.

На сегодня всё. Хочется только сообщить, что phpBB Google Sitemap Gen обновился до версии 0.0.8.


Остальные части из серии «Как я делал блог из WordPress»:
Часть 1 — Нахрена оно вообще надо?
Часть 2 — DownloadCounter и WP-stats по-русски

Track-hack в LiveJournal или Как отслеживать дискуссии не платя ни гроша

Когда я только попал в ЖЖ (а было это аж в феврале 2005 года), то был несколько смущен тем, что даже на улучшенном аккаунте не разрешается отслеживать появление новых комментариев по отдельным веткам дискуссий, а лишь по всему посту целиком.

Вот что написано в соответствующем разделе FAQ в ЖЖ.

Типы аккаунтов

Тип вашего аккаунта определяет типы и количество подписок.

* Базовые и ранние аккаунты могут отслеживать 25 событий, которые всегда видны в центре сообщений; они могут также включить отправку по email всех или части уведомлений.
* Улучшенные аккаунты могут отслеживать 200 событий. Они могут также получать уведомления, когда отдельный пользователь загружает новые картинки.
* Платные и постоянные аккаунты могут отслеживать 1000 событий. Кроме того, они могут отслеживать, когда отдельный пользователь загрузит новые картинки, а также отслеживать новые комментарии в отдельных ветвях.

Довольно несправедливо, но все мы хотим денег. С другой стороны, жить без такого «отслеживания» довольно проблематично, потому что на почту (если вы пользуетесь таким методом оповещения) валятся тонны совершенно не нужных писем из популярного поста.

Рядом с каждым комментарием в ветке дискуссий есть значок трэкбэка (), как бы приглашающий подписаться именно на ветку, а не пост целиком, но при нажатии мы получаем:

Произошла ошибка во время обработки вашего запроса:

  • Тип вашего аккаунта не позволяет наблюдать ветви. Купите платный аккаунт, чтобы подписаться на ветви, или наблюдайте запись целиком, нажав на ссылку внизу.

Но теперь перейдём к делу, а точнее к возможности обойти это ограничение.
Как-то мне приспичило сменить дизайн дневника и я поставил себе тему Generator, которая имеет некоторые дополнительные особенности: отображения формы ответа прямо в текущей странице, AJAX-подписку на комментарии и возможно что-то ещё.

Вот как раз благодаря этой самой AJAX-подписке мы и получаем возможность подписываться на ЛЮБУЮ ветку.
Достаточно нажать на значок и подтвердить подписку — «Save Changes».

subscibe-1.gif

в ответ видим:

subscibe-2.gif

Вот собственно и вся хитрость, помогающая жить проще и лучше.

Честно говоря я пока не нашёл способа как указывать стиль без установки его в свой дневник, но во всяком случае, теперь, попав на интересную мне страницу с другим дизайном, я просто добавляю в строку адреса &style=mine, после чего просматриваю её уже в удобном мне виде и подписываю те дискуссии, которые интересны.

Желаю ЖЖ-успехов.

В поисках времени среди Веб 2.0

Человек я молодой и, как говорится, всё хорошее и новое мне не чуждо, а Веб 2.0 и Ajax во всех его проявлениях — это «именно оно».

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

Ещё давно попалась на глаза книга Г.Архангельского «Тайм-драйв: Как успевать жить и работать», книга была скачена и отложена «на потом». Пару недель назад наткнулся на неё в своём архиве и подумал — почему нет?

Прочтено в ней пока довольно мало, но действовать пора начинать уже сейчас, а начать советуется с составление различных планов, долгосрочных и ежедневных, а так же вести учёт времени выполнения тех или иных заданий.

Сперва решил воспользоваться ежедневником на мобильном телефоне, но возможности его уж через-чур скудны (Nokia 6230i), зато есть OperaMini, что даёт некоторую свободу действий.

Так, опять куда-то мысль упорхала, а ведь начинал я с Веб 2.0 и Ajax. Поэтому теперь небольшой обзор решений тайм-организации и тайм-менеджмента, которые на скорую руку выкопал в сети.
Читать далее В поисках времени среди Веб 2.0