ПафНутиЙ-Блог » Статьи » Предпросмотр комментария (jQuery edition)

Предпросмотр комментария (jQuery edition)

1.07
16
29299
Недавно мне попался на глаза интересный jQuery скрипт для предпросмотра комментария так сказать в реальном времени. И вот мне очень захотелось прикрутить этот скрипт к DLE, как оказалось впоследствии, дело не столь сложное.

Плюсы данного скрипта:
1. Предпросмотр комментария происходит, без перезагрузки страницы, т.е. в реальном времени.
2. При отключенных javascript`ах в браузере предпросмотр просто не будет показываться, т.е. ничего не расползётся и т.д.

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


А теперь обо всём по порядку.

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

Скрипт можно разделить на две составляющие.

1. На первой части остановимся чуть позже, а вот вторая часть это несложный обработчик bb-кодов:
var comment = '';
    $j('#comments').keyup(function() {
        comment = $j(this).val();
        comment = comment.replace(/(</?)script/g,'$1noscript')
        .replace(/rn/g, 'n')
        .replace(/r/g, 'n')
        .replace(/nn+/g, 'nn')
        .replace(/[b](.+?)[/b]/g, '<strong>$1</strong>')
        .replace(/[i](.+?)[/i]/g, '<i>$1</i>')
        .replace(/[s](.+?)[/s]/g, '<s>$1</s>')
        .replace(/[u](.+?)[/u]/g, '<u>$1</u>')
        .replace(/[left](.+?)[/left]/g, '<div align="left">$1</div>')
        .replace(/[right](.+?)[/right]/g, '<div align="right">$1</div>')
        .replace(/[center](.+?)[/center]/g, '<div align="center">$1</div>')
        .replace(/[hide](.+?)[/hide]/g, '<div class="quote">Это скрытый текст</div>')
        .replace(/[url=(.+?)]/g, '<a href="$1" target="_blank">')
        .replace(/[/url]/g, '</a>')
        .replace(/[leech=(.+?)]/g, '<a href="$1" target="_blank">')
        .replace(/[/leech]/g, '</a>')
        .replace(/[img](.+?)[/img]/g, '<img src="$1" alt="" title=""  />')
        .replace(/[email=(.+?)]/g, '<a href="mailto:$1">')
        .replace(/[/email]/g, '</a>')
        .replace(/[color=(.+?)]/g, '<span style="color:$1">')
        .replace(/[/color]/g, '</span>')
        .replace(/[quote=(.+?)]/g, '<div class="title_quote">Цитата: $1</div><div class="quote">')
        .replace(/[quote](.+?)/g, '</div><div class="quote">$1')
        .replace(/[/quote]/g, '</div>')
        .replace(/[spoiler=(.+?)]/g, '<div class="title_spoiler"><a href="#">$1</a></div><div class="text_spoiler">')
        .replace(/[spoiler](.+?)/g, '<div class="title_spoiler"><a href="#">Спойлер</a></div><div class="text_spoiler">$1')
        .replace(/[/spoiler]/g, '</div>')
        .replace(/[code](.+?)
/g, 'предпросмотр исходного кода пока недоступен')
        .replace(/:(.+?):/g, '')
        .replace(/s*ns*/g, '
');
        $j('#ctext').html(comment);
    });[/code]

Обратите внимание на предпоследнюю строку, идентификатор #ctext, указанный в этой строке - это идентификатор блока с текстом комментария в предпросмотре.


2. А теперь самое сложное - первая часть скрипта.

Основной код - это обычный html-код
<div class="comments"><h2>Предпросмотр комментария</h2><div class="comm-foto"><img src="http://yoursite.ru/theme/yourtheme/images/noavatar.png" border="0" alt="" width="80" /></div><div id="ctext" class="comment"></div><div class="clr"></div></div>

взятый из шаблона comments.tpl и немного поправленный.
- Нужно убрать из шаблона весь "мусор" - это все dle-теги.
- Вместо тега {phоto} нужно поставить ссылку на изображение аватарки.
- Вместо тега {commеnt} вставить блок с идентификатором комментария, о котором я говорил выше, т.е. вот такой вот код:
<div id="ctext"></div>


Вот собственно и всё, что требуется для красивого предпросмотра комментария в процессе набора.

С теорией разобрались, теперь установка:

1. Подключаем, если ещё не подключена, библиотеку jquery:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>


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

<script src="{THEME}/js/comment-preview.js" type="text/javascript"></script>

Замечу, что папка со скриптом на вашем сайте может отличаться от указанной в коде.

ВСЁ! Наслаждаемся.

Похожие материалы

  • Сообщение об отсутствии комментариев на jQuery
  • Компактный вид комментариев на сайте
  • Make it cool - красивый вывод новостей без хаков и модулей
  • Скрипт социальных закладок для DLE
Закрыть

Комментировать могут только зарегистрированные пользователи

+

Комментарии

qwerty
qwerty 2 июля 2010 22:28
Ответов: 0 #231
идея хорошая. но зачем jquery? можно ли без него? ради одной такой функции не хочется его подключать
ПафНутиЙ
ПафНутиЙ 2 июля 2010 22:42
Ответов: 0 #232
Без jQuery никак не получится, это раз, а во вторых в DLE 9.0 всёравно будет "вшита" библиотека.
Acuna
Acuna 4 июля 2010 19:14
Ответов: 0 #233
А нуко ся... Класс! Отлично работает! Спасибо! Только плохо, что bb-коды не отображаются... Хотя нет, все работает отлично...
DVMade
DVMade 9 июля 2010 11:55
Ответов: 0 #235
У меня нифига не выходит, все перепробывал, не появляется предпросмотр и все! Вот адрес сайта dvmade.ru помогите!
DVMade
DVMade 9 июля 2010 12:32
Ответов: 0 #236
Сорри, разобрался, а теперь подскажите как сделать, что бы предпросмотр выводился не низу формы а вверху?
ПафНутиЙ
ПафНутиЙ 9 июля 2010 14:41
Ответов: 0 #238
заменить слово after в скрипте на before smile
DVMade
DVMade 9 июля 2010 17:31
Ответов: 0 #242
Кстати, вот еще одна трабла.. Просмотр коммента скачет с правую сторону всегда! Ниуког такого нету и как исправитЬ?
raven4eg
raven4eg 18 августа 2010 13:15
Ответов: 0 #251
Хм, работает. НО, есть смысл задумать о том, как обрабатывать клики на кнопки панели bb-кодов.
ПафНутиЙ
ПафНутиЙ 18 августа 2010 13:22
Ответов: 0 #252
Не совсем понял вопрос. Вроде бы всё корректно обрабатывается.
sharkoster
sharkoster 26 августа 2010 13:19
Ответов: 0 #256
Цитата: ПафНутиЙ
Не совсем понял вопрос. Вроде бы всё корректно обрабатывается.


Именно в datalife 9.0 не работают клики на некоторые BB коды, а именно:
вставка смайлика, вставка картинки, вставка ссылок, цвет текста... В общем все то что в dle 9.0 сделано через jQuery. Также не работает красивым хинт вот отсюда:
_http://4dle.ru/2010/08/21/novyjj-krasivyjj-khint-tooltip-na-jquery.html
Этот хинт кстати с BB кодами нормально работает, но после установки этого "предпросмотра" не работает и он. Если убрать этот хинт проблема с BB кодами всеравно остается.
Я подписался на комментарии, жду может апгрейдиш
ПафНутиЙ
ПафНутиЙ 26 августа 2010 13:57
Ответов: 0 #257
Цитата: sharkoster
Я подписался на комментарии, жду может апгрейдиш

Сейчас много проблем по работе, если и смогу заняться этим вопросом, то не раньше чем через неделю. Ещё даже не смотрел 9-ю версию DLE, но подозреваю, что дело в совпадении имён функций, или что-то в этом роде.
sharkoster
sharkoster 26 августа 2010 16:11
Ответов: 0 #258
Цитата: ПафНутиЙ
Ещё даже не смотрел 9-ю версию DLE, но подозреваю, что дело в совпадении имён функций, или что-то в этом роде.

Окей .Подожду. smile
amicitia
amicitia 19 февраля 2011 14:40
Ответов: 0 #573
На dle 9.2 после подключения скрипта перестаёт работать всё, что использует ajax: просмотр результатов опросов, просмотр профилей, добавление комментариев и пр ((((
После отключения скрипта всё работает.
ПафНутиЙ
ПафНутиЙ 19 февраля 2011 18:21
Ответов: 0 #574
конфликт значит гдето в переменных или функиях.
nokia
nokia 10 октября 2013 16:09
Ответов: 0 #3265
ПафНутиЙ,
попробую установить скрипт на свой сайт, но снача на пробный сайт установлю потом на осн-й. сайт буду ставить.
igorello
igorello 26 августа 2014 20:45
Ответов: 0 #3999
Так то норм модуль, везет, что я нашел его

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.