|
Форумы xBB > BBCode и прочие языки упрощенной разметки
FAQ по парсеру BBCode. Справка и файлы
Автор: dima.
Последнее редактирование: 2011-05-12 16:34:49
По просьбе Сергея Степаненко начинаю публикацию на частые вопросы по библиотеке xBB 0.29
Вопрос. Есть ваш архив, который скачивают пользователи, но в нем нет справки как пользоваться библиотекой(((
Ответ. Справка находится здесь: http://xbb.uz/docs/ (версия 0.29).
Документация по установке редактора xBB Editor - http://xbb.uz/docs/start-editor.bb
Вопрос. В архиве куча файлов, и ни где не написано древо соединения файлов, какой файл какой подгружает.
Ответ. В архиве для версии 0.29 содержится единственная папка bbcode. В ней находятся:
- Папка config. Содержит скрипты конфигурации для парсера и редактора:
- editor.config.php - умолчальная конфигурация редактора BBCode (опции его загрузки). Подключается в файле xbb.js.php.
- parser.config.php - умолчальная конфигурация парсера BBCode (кроме тегов: автоматические ссылки и набор смайлов). Подключается в файле bbcode.lib.php.
- tags.php - умолчальная конфигурация парсера BBCode (теги). Определяет набор поддерживаемых тегов BBCode и их поведение. Подключается в файле bbcode.lib.php.
- xbbeditor.config.php - опции самого редактора (шрифты, палитра, смайлы). Подключается в файле xbb.php.
- Папка i18n. Содержит скрипты локализации редактора для разных языков и кодировок. Содержимое папки:
- Папка default - локаль по умолчанию. В ней единственный файл - lang.php с массивом переменных локали.
- Папка ru_cp1251 - русская локаль в кодировке CP1251 (Windows-1251). В ней единственный файл - lang.php с массивом переменных локали.
- Папка ru_utf8 - русская локаль в кодировке UTF-8. В ней единственный файл - lang.php с массивом переменных локали.
В зависимости от опций загрузки редактора скрипт нужной локали подключаются в xbb.php.
- Папка images содержит картинки, используемые в редакторе, а также папку smiles с набором смайлов. Не буду все перечислять, так как, наверное, надобности в этом нет. Смайлы адресуются из сгенерированного парсером HTML-кода. Остальные картинки - из файла xbb.php.
- Папка lib предназначена содержать сторонние по отношению к xBB библиотеки. В рассматриваемой версии она содержит единственную стороннюю библиотеку GeSHi, используемую для реализации подсветки синтаксиса. Это - папка geshi и файл geshi.php. Последний подключается в файле bbcode/Xbb/Tags/Code.php
- Папка Xbb предназначена содержать файлы с описанием PHP-классов, которые могут понадобится парсеру для работы. Из таковых в рассматриваемой версии имеются только классы - обработчики конкретных тегов. Все они содержатся
- в папке Tags. 27 скриптов, которые в ней лежат, подключаются в файле bbcode.lib.php по мере необходимости. Подключаются только те скрипты, для которых в BBCode нашлись соответствующие теги. Назначение этих скриптов тегам описывается в файле bbcode/config/tags.php
- Скрипт area.php адресуется из редактора (файл xbb.php) в случае включенного режима подсветки синтаксиса.
- Скрипт bbcode.lib.js - JS-порт парсера BBCode и некоторые дополнительные функции, используемые редактором (файл xbb.php) при случае включенном режиме подсветки синтаксиса.
- Скрипт bbcode.lib.php - собственно парсер BBCode. Подключается в ваших скриптах при выводе обработанного BBCode.
- Скрипт index.php - всего лишь демонстрация работы библиотеки. Можно безболезненно удалить.
- Файл license.txt - текст лицензии GNU GPL.
- Скрипт preview.php используется для реализации предпросмотра в редакторе BBCode. Загружается в браузер при клике на кнопку предпросмотра. Для своей работы вызывает bbcode.lib.php.
- Файл readme.txt - краткие сведения о библиотеке, адреса, по которым можно получить дополнительную информацию и мои контакты.
- Файл style.css - таблица стилей, используемая в index.php и preview.php.
- Скрипт xbb.js.php генерирует JS-код загрузки редактора. Адресуется с той страницы, на которой вы хотите видеть редактор.
- Скрипт xbb.php - собственно редактор BBCode. Загружается в <iframe>, который создается JS-кодом из xbb.js.php отрабатывающем на той странице, где вы хотите видеть редактор.
20.12.2010
10 комментариев
Гость Павлик
Страно но у меня смайлов в папке со смайлами около 100 штук, также папка содержит txt файлик...
НО вот саи смайлы не подключаются дефолтный 25(чуть меньше) штук и всё.
Если не сложно как подключать файлы... куда содержимое этого txt файла запихать. ?
Гость Павлушка
кхм.. нашёл что править нужно файл xbbeditor.config для того что бы они добавились в форуму добавления....
и что там ручками 100 раз добавлять ? ... ех...ухух... ладно добавлю всеровно это проше чем писать свою bbфорум а у вас готовая и рабочая ) спасибо )
Гость Павлушка
ой всё вроде разабраля.. извините за флуд )
для того что бы прасер обрабатывал нужно имено в той папке как я понял править этот файл (тот что в папке smile) а для того что бы он в бб форме отображался (смайл этот нужно править xbbeditor.config)
 -) Интересно у вас по дефолту настройки Или вырезаны ) по минимуом )
dima
На сайте xBB.uz? Практически дефолтные настройки. Только палитру цветов расширил и внешние ссылки стал заменять на редиректные. Ато замаялся спам вычищать. А без прямых ссылок спамят меньше.
Nutty
dima На сайте xBB.uz? Практически дефолтные настройки. Только палитру цветов расширил и внешние ссылки стал заменять на редиректные. Ато замаялся спам вычищать. А без прямых ссылок спамят меньше.
Пажалуйста dima а можно код редиректа увидеть те преобразовавший внешние ссылки на редирект.
dima
Это из файла parser.config.php
/* Массив замен для автоматических ссылок */
$this->preg_autolinks = array(
'pattern' => array(
"'([\w\+]+://[A-z0-9\.\?\+\-/_=&%#:;]{20})[A-z0-9\.\?\+\-/_=&%#:;]+([A-z0-9\.\?\+\-/_=&%#:;]{10}[\w/=])'si",
"'^[\w\+]+://[A-z0-9\.\?\+\-/_=&%#:;]{3,30}[\w/=]'si",
"'([^>\w\"])([\w\+]+://[A-z0-9\.\?\+\-/_=&%#:;]{3,30}[\w/=])'si",
"'([^/])(www\.[A-z0-9\.\?\+\-/_=&%#:;]+[\w/=]+)'si",
"'[\w]+[\w\-\.]+@[\w\-\.]+\.[\w]+'si",
),
'replacement' => array(
create_function('$m', '$u = htmlspecialchars(xbb_checkUrl(htmlspecialchars_decode($m[0])));
return \'<a href="\' . $u . \'" target="_blank">\' . $m[1] . \'...\' . $m[2] . \'</a>\';'),
create_function('$m', '$u = htmlspecialchars(xbb_checkUrl(htmlspecialchars_decode($m[0])));
return \'<a href="\' . $u . \'" target="_blank">\' . $m[0] . \'</a>\';'),
create_function('$m', '$u = htmlspecialchars(xbb_checkUrl(htmlspecialchars_decode($m[2])));
return $m[1] . \'<a href="\' . $u . \'" target="_blank">\' . $m[2] . \'</a>\';'),
create_function('$m', '$u = htmlspecialchars(xbb_checkUrl(htmlspecialchars_decode($m[2])));
return $m[1] . \'<a href="\' . $u . \'" target="_blank">\' . $m[2] . \'</a>\';'),
create_function('$m', 'return \'<a href="mailto:\' . $m[0] . \'">\' . $m[0] . \'</a>\';'),
),
'highlight' => array(
'<span class="bb_autolink">$0</span>',
'<span class="bb_autolink">$0</span>',
'$1<span class="bb_autolink">$2</span>',
'$1<span class="bb_autolink">$2</span>',
'<span class="bb_autolink">$0</span>',
),
);
А это из bbcode.lib.php
function insert_smiles($text) {
$text = htmlspecialchars($text, ENT_NOQUOTES);
if ($this->autolinks) {
foreach ($this->preg_autolinks['pattern'] as $k => $p) {
$f = $this->preg_autolinks['replacement'][$k];
$text = preg_replace_callback($p, $f, $text);
}
}
$text = str_replace(' ', ' ', nl2br($text));
$text = strtr($text, $this -> mnemonics);
return $text;
}
Собственно функции преобразования урлов, думаю, напишете сами. Если нет, то могу и их дать.
Nutty
dima, Спасибо огромное. А про преобразование URL это можно 2 способами кодить строку в BASE64 или в url_encode ну или по извращаться с кодировками типо mcrypt и тд, только смысла использовать в редиректе супер мего кодинг нету как правило достаточно BASE64 или url_encode )
dima, Хотя у меня назрел вопрос а зачем в теге bbcode создаём новый объект.
Ведь мы и так класс Xbb_Tags_Bbcode расширяет класс bbcode можно же не создавать новый объект и использовать ресурсы объекта bbcode например вот так.
// Класс для тега [bbcode]
class Xbb_Tags_Bbcode extends bbcode {
public $behaviour = 'code';
function get_html($tree = null) {
$str = '';
foreach ($this -> tree as $item) {
if ('item' == $item['type']) { continue; }
$str .= $item['str'];
}
$this -> parse($str);
return '<code class="bb_code">'.$this -> highlight().'</code>';
}
}
Если неправ разъясни зачем новый объект создаём.
dima
Ты прав. Видимо, после написания пары десятков классов, я уже не очень оптимально соображал.  Твой вариант лучше. Сейчас исправлю соответствующий скрипт на сайте.
Nutty
dima Ты прав. Видимо, после написания пары десятков классов, я уже не очень оптимально соображал. Твой вариант лучше. Сейчас исправлю соответствующий скрипт на сайте.
Нечего страшного мы люди а не машины)
dima
Ответить:
|