[BETA] BB Markup checker

Здесь авторы могут постить бета-версии своих модификаций для phpBB 3.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
MIT
Former team member
Сообщения: 2500
Стаж: 17 лет 6 месяцев
Откуда: 56°20′02″ с. ш. 36°42′45″ в. д.
Благодарил (а): 3 раза
Поблагодарили: 351 раз

[BETA] BB Markup checker

Сообщение MIT »

Наименование модификации: BB Markup checker
Автор мода: MIT
Описание: Проверяет правильность разметки BB кодов при размещении сообщения
Версия: 0.2c
Версия форума: 3.0.7, 3.0.7 PL1
Поддерживаются стили: prosilver, subsilver2
Изменения в версии 0.2c:
— Исправлена ошибка в работе с персональными настройками пользователя

Изменения в версии 0.2b:
— Добавлена инструкция для стандартного быстрого ответа
— Добавлена инструкция для допиленного Rayden`ом стандартного быстрого ответа
  • При использовании стандартного быстрого ответа все BB-коды придётся прописывать вручную в файле quickreply_editor.html (в инструкции имеется набор стандартных, а собстенные надо добавлять)
  • При внесении правок в файл styles\prosilver\template\quickreply_editor.html будьте внимательны: количество отступов (пробелов, знаков табуляции) в инструкции для заменяемых строк должно соответсвовать количеству в найденной строке!
Изменения в версии 0.2:
— Добавлена углубленная обработка списков
— Анализ BB кода code приближен к уровню внутреннего анализа форумными скриптами
— Добавлено детектирование отсутствия параметра в тегах
— Исправлены некоторые ошибки анализа
— Добавлен анализ для кнопки «Предпросмотр»
— Исправлена ошибка в файле styles\subsilver2\template\posting_body.html (boloto, спасибо за замечание)
— Добавлен тег attachment в стандартный набор дополнительных тегов (boloto, спасибо за замечание)
— Добавлены инструкции для английского языка

Комментарий
Мод анализирует как сообщения, отправляемые в топики, так и сообщения личной переписки.
Каждый пользователь имеет возможность отключить проверку как единовременно при отправке сообщения (нажав на «Пропустить проверку»), так и совсем (Личный раздел > Личные настройки > Отправка сообщений > Включить проверку BB синтаксиса).

Несколько слов о принципе работы и настройке мода
В качестве списка ББ-кодов, используемых для анализа введённого текста, используется стандартный список, который генерируется по умолчанию при построении строки кнопок на странице ответа. В исходном HTML коде страницы он имеет имя bbtags, а попадают в него, помимо базовых, только те теги, для которых в административном разделе установлена опция отображения на странице ответа.
Что бы пополнить список тегов, для которых эта опция отключена, но которые должны обрабатываться, делаем:
1) открываем файл styles\стиль\template\bbparser.js
2) ищем в нём строку

Код: Выделить всё

var c=bbtags.concat(new Array('[color=]','[/color]','[quote=]','[/quote]','[url=]','[/url]','[attachment=]','[/attachment]'));
3) пополняем массив информацией о новом теге, что бы получилось примерно вот так:

Код: Выделить всё

var c=bbtags.concat(new Array('[color=]','[/color]','[quote=]','[/quote]','[url=]','[/url]','[attachment=]','[/attachment]', '[youtube]', '[/youtube]'));
Обратите внимание, что следует добавлять пару тегов: открывающий и закрывающий. Также следует учитывать, что теги (например) [youtube] и [youtube=] обрабатываются отдельно, так что если ваш тег может содержать дополнительный параметр, значит надо добавлять два варианта, если он должен содержать параметр, то добавить следует вариант с «=», а если не должен — без.

Визуальный стиль блока
На приведённых скринах видно, что блок имеет форму закруглённого прямоугольника. Замечу, что этот эффект достигнут за счёт использования параметров CSS3 и не будет работать в IE8 и старых версиях браузеров.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось MIT 09.03.2022 2:41, всего редактировалось 3 раза.
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1454 раза

Re: BB markup checker

Сообщение Nekstati »

Здорово. Может, стоит сделать и проверку при предпросмотре, а не только при отправке?
Аватара пользователя
MIT
Former team member
Сообщения: 2500
Стаж: 17 лет 6 месяцев
Откуда: 56°20′02″ с. ш. 36°42′45″ в. д.
Благодарил (а): 3 раза
Поблагодарили: 351 раз

Re: BB markup checker

Сообщение MIT »

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

Что бы добавить проверку для предпросмотра
Для стиля Prosilver
Открываем styles\prosilver\template\posting_editor.html
Ищем

Код: Выделить всё

<input type="submit" tabindex="5" name="preview" value="{L_PREVIEW}" class="button1"<!-- IF not S_PRIVMSGS --> onclick="document.getElementById('postform').action += '#preview';"<!-- ENDIF --> />&nbsp;
Меняем на

Код: Выделить всё

<input type="submit" tabindex="5" name="preview" value="{L_PREVIEW}" class="button1"<!-- IF not S_PRIVMSGS --><!-- IF ALLOW_BB_MARKUP_CHECKING --> onclick="var r = checkBBmarkup(); if (r) document.getElementById('postform').action += '#preview'; return r;"<!-- ELSE --> onclick="document.getElementById('postform').action += '#preview';"<!-- ENDIF --><!-- ELSEIF ALLOW_BB_MARKUP_CHECKING --> onclick="return checkBBmarkup();"<!-- ENDIF --> />&nbsp;
Для стиля Subsilver2
Открываем styles\subsilver2\template\posting_body.html
Ищем

Код: Выделить всё

<input class="btnlite" type="submit" tabindex="5" name="preview" value="{L_PREVIEW}" />
Меняем на

Код: Выделить всё

<input class="btnlite" type="submit" tabindex="5" name="preview" value="{L_PREVIEW}"<!-- IF ALLOW_BB_MARKUP_CHECKING --> onclick="return checkBBmarkup();"<!-- ENDIF --> />
Аватара пользователя
boloto
phpBB 1.4.4
Сообщения: 126
Стаж: 16 лет 11 месяцев
Благодарил (а): 57 раз
Поблагодарили: 10 раз

Re: BB markup checker

Сообщение boloto »

хм... я написал сообщение

Код: Выделить всё

[quote]незакрытое цитирование
[i]проверка работы [b]с [/i]тегами[/b]
Мне выдало ошибку:

Код: Выделить всё

Несоответсвие открывающего и закрывающего тегов

роверка работы [b]с [/i]тегами[/b
Строка 2, символ 19: [b]

ка работы [b]с [/i]тегами[/b] 
Строка 2, символ 24: [/i]
Хотя ошибку как раз оно пропустило (незакрытое цитирование), а на правильные (хоть и по дурацки расставленные) теги ругнулось :(
Аватара пользователя
MIT
Former team member
Сообщения: 2500
Стаж: 17 лет 6 месяцев
Откуда: 56°20′02″ с. ш. 36°42′45″ в. д.
Благодарил (а): 3 раза
Поблагодарили: 351 раз

Re: BB markup checker

Сообщение MIT »

Он анализирует по порядку.

В конкретно твоём примере:
1) Открываем тег [quote] — нормально
2) Открываем тег [i] — нормально
3) Открываем тег [b] — нормально
4) Закрываем тег [/i] — ожидаемое закрытие тега [/b], последовательность нарушена, исключение

До пункта 4 анализотор ждёт закрытия тегов b, i и quote, но найдя ошибку отображает именно её.
После исправления этой ошибки он тебе сообщит, что обнаружена другая, например не закрыт тег quote.
Аватара пользователя
boloto
phpBB 1.4.4
Сообщения: 126
Стаж: 16 лет 11 месяцев
Благодарил (а): 57 раз
Поблагодарили: 10 раз

Re: BB markup checker

Сообщение boloto »

имхо все таки стоит чуток доработать анализатор, ведь в строке

Код: Выделить всё

 [i]проверка работы [b]с [/i]тегами[/b] 
нет ошибки...
проверка работы с тегами

на моем форуме эта строка выглядит так:
bb_c.JPG
т.е. совсем необязательно чтобы после открывающего тега следующим был такой же закрывающий... Главное чтобы он был ПОСЛЕ (даже если между ними вклинятся еще какие-то теги).
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1454 раза

Re: BB markup checker

Сообщение Nekstati »

Аватара пользователя
Rayden
Former team member
Сообщения: 3739
Стаж: 21 год 2 месяца
Поблагодарили: 44 раза

Re: BB markup checker

Сообщение Rayden »

boloto
получаешь двойку )))
phpBB2 FAQ
phpBB3 FAQ
Аватара пользователя
MIT
Former team member
Сообщения: 2500
Стаж: 17 лет 6 месяцев
Откуда: 56°20′02″ с. ш. 36°42′45″ в. д.
Благодарил (а): 3 раза
Поблагодарили: 351 раз

Re: BB markup checker

Сообщение MIT »

boloto писал(а):совсем необязательно чтобы после открывающего тега следующим был такой же закрывающий
А вот это обязательно. Попробуй написать что-нибудь типа

Код: Выделить всё

[b][quote][/b][/quote]
в HTML оно будет выглядить следующим образом:

Код: Выделить всё

<span style="font-weight: bold"><blockquote class="uncited"><div></span></div></blockquote>
И даже несмотря на то, что браузер скорее всего отобразит это верно, налицо явное нарушение одного из главных законов HTML (XML) разметки: теги не должны пересекаться.

Другое дело, что частным случаем такого пересечения является сочитание inline-конструкций u, i и b. Т.к. они все span`ы, то пересечения как такового не будет:

Код: Выделить всё

[b][i][/b][/i]
превратится в

Код: Выделить всё

<span style="font-weight: bold"><span style="font-style: italic"></span></span>
Теоретически можно задавать алиасы (какбэ синонимы) закрываемым тегам, но это неправильно, неправильно и еще раз неправильно.
Аватара пользователя
boloto
phpBB 1.4.4
Сообщения: 126
Стаж: 16 лет 11 месяцев
Благодарил (а): 57 раз
Поблагодарили: 10 раз

Re: BB markup checker

Сообщение boloto »

посыпаю голову пеплом... простите нИграмотного. Убедили, согласен. Сейчас буду ставить у себя. MIT - спасибо большое!

Добавлено спустя 32 минуты 29 секунд:
А как его интегрировать с http://www.phpbbguru.net/community/topic22196.html "быстрым ответом" от rxu?
Аватара пользователя
boloto
phpBB 1.4.4
Сообщения: 126
Стаж: 16 лет 11 месяцев
Благодарил (а): 57 раз
Поблагодарили: 10 раз

Re: [BETA] BB Markup checker

Сообщение boloto »

MIT глянь плз в файле styles\subsilver2\template\posting_body.html инструкция
Find:

Код: Выделить всё

<!-- IF S_SHOW_ATTACH_BOX or S_SHOW_POLL_BOX -->
Add after: (по моему надо Add before:)

Код: Выделить всё

	<!-- IF ALLOW_BB_MARKUP_CHECKING -->
	<tr>
		<td colspan="2" class="row2">
			<div id="BBParserResult"></div>
		</td>
	</tr>
	<!-- ENDIF -->

ну и для тех, у кого установлен Olympus_QR_1.6.7, то необходимо внести изменения в

в файле includes\quick_reply.php
Найти:

Код: Выделить всё

	include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
Добавить после:

Код: Выделить всё

$user->add_lang('mods/bb_markup_checker');
Найти:

Код: Выделить всё

		'S_FORM_ENCTYPE'		=> $form_enctype,
добавить после:

Код: Выделить всё

		'ALLOW_BB_MARKUP_CHECKING'	=> $user->optionget('allow_bbmc'),
в файле styles\subsilver2\template\quick_reply.html
найти

Код: Выделить всё

 <!-- IF S_SHOW_ATTACH_BOX -->
вставить перед этим:

Код: Выделить всё

<!-- IF ALLOW_BB_MARKUP_CHECKING -->
	<tr>
		<td colspan="2" class="row2">
		<div id="BBParserResult"></div>
		</td>
	</tr>
<!-- ENDIF -->
найти:

Код: Выделить всё

		&nbsp; <input class="btnmain" type="submit" accesskey="s" tabindex="11" name="post" value="{L_SUBMIT}" />
заменить на:

Код: Выделить всё

		&nbsp; <input class="btnmain" type="submit" accesskey="s" tabindex="11" name="post" value="{L_SUBMIT}"<!-- IF ALLOW_BB_MARKUP_CHECKING --> onclick="return checkBBmarkup();"<!-- ENDIF -->/>
в файле styles\subsilver2\template\quickreply_editor.html
найти:

Код: Выделить всё

			<td class="row2" valign="top" align="left" width="78%"><textarea name="message" rows="7" cols="76" tabindex="3"  style="width: 98%;"></textarea> </td>
		</tr>
добавить после:

Код: Выделить всё

	<!-- IF ALLOW_BB_MARKUP_CHECKING -->
	<tr>
		<td colspan="2" class="row2">
			<div id="BBParserResult"></div>
		</td>
	</tr>
	<!-- ENDIF -->		
очистить кеш. Все должно заработать - у меня работает. Для стиля prosilver не делал, т.к. у меня по умолчанию стоит субсилвер2. Но если кому-то понадобится - с удовольствием помогу.
Аватара пользователя
MIT
Former team member
Сообщения: 2500
Стаж: 17 лет 6 месяцев
Откуда: 56°20′02″ с. ш. 36°42′45″ в. д.
Благодарил (а): 3 раза
Поблагодарили: 351 раз

Re: [BETA] BB Markup checker

Сообщение MIT »

boloto
Спасибо за замечание, я завтра обновлю мод с его учётом и добавлю инструкцию для двух дополнений (предпросмотр + БО).
Аватара пользователя
boloto
phpBB 1.4.4
Сообщения: 126
Стаж: 16 лет 11 месяцев
Благодарил (а): 57 раз
Поблагодарили: 10 раз

Re: [BETA] BB Markup checker

Сообщение boloto »

MIT писал(а): я завтра обновлю мод
давайте тогда уж еще немного "косметики" subsilver2\template\ucp_prefs_post.html заменить на styles\subsilver2\template\ucp_prefs_post.html
добавить инструкцию к language\en\ucp.php
и добавить - language\en\mods\bb_markup_checker.php
т.к. английский интерфейс я стараюсь у себя на форуме держать актуальным, то я завтра же выложу language\en\mods\bb_markup_checker.php
Аватара пользователя
boloto
phpBB 1.4.4
Сообщения: 126
Стаж: 16 лет 11 месяцев
Благодарил (а): 57 раз
Поблагодарили: 10 раз

Re: [BETA] BB Markup checker

Сообщение boloto »

Open: language\en\ucp.php
Find:

Код: Выделить всё

	'DEFAULT_NOTIFY'			=> 'Notify me upon replies by default',
Add after:

Код: Выделить всё

	'DEFAULT_BBMC'				=> 'Enable BB checker',
copy
root\language\en\mods\bb_markup_checker.php
bb_markup_checker.zip

Ах да и еще один попутное пожелание добавить сразу "в коробку" в styles\стиль\template\bbparser.js тег attachment
var bblist = bbtags.concat(new Array('[color=]', '[/color]', '[quote=]', '[/quote]', '', '', '[attachment=]', '[/attachment]'));
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
MIT
Former team member
Сообщения: 2500
Стаж: 17 лет 6 месяцев
Откуда: 56°20′02″ с. ш. 36°42′45″ в. д.
Благодарил (а): 3 раза
Поблагодарили: 351 раз

Re: [BETA] BB Markup checker

Сообщение MIT »

Мод обновлён, см. первый пост.

Вернуться в «Бета-версии модов для phpBB 3.0.x»