Форумы xBB

Форумы 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 комментариев

04.02.2011 12:14:35 #
Opera Гость Павлик
Страно но у меня смайлов в папке со смайлами около 100 штук, также папка содержит txt файлик...
НО вот саи смайлы не подключаются дефолтный 25(чуть меньше) штук и всё.
Если не сложно как подключать файлы... куда содержимое этого txt файла запихать. ?
04.02.2011 12:19:00 #
Opera Гость Павлушка
кхм.. нашёл что править нужно файл  xbbeditor.config для того что бы они добавились в форуму добавления....
 
и что там ручками 100 раз добавлять ? ... ех...ухух... ладно добавлю всеровно это проше чем писать свою bbфорум а у вас готовая и рабочая ) спасибо )
04.02.2011 12:22:33 #
Opera Гость Павлушка
ой всё вроде разабраля.. извините за флуд )
 
для того что бы прасер обрабатывал нужно имено в той папке как я понял править этот файл (тот что в папке smile) а для того что бы он в бб форме отображался (смайл этот нужно править xbbeditor.config)
 
Spam -) Интересно у вас по дефолту настройки Или вырезаны ) по минимуом )
04.02.2011 12:57:58 #
Mozilla Firefox dima
На сайте xBB.uz? Практически дефолтные настройки. Только палитру цветов расширил и внешние ссылки стал заменять на редиректные. Ато замаялся спам вычищать. А без прямых ссылок спамят меньше.
22.05.2011 11:54:29 #
Opera Nutty
dima
На сайте xBB.uz? Практически дефолтные настройки. Только палитру цветов расширил и внешние ссылки стал заменять на редиректные. Ато замаялся спам вычищать. А без прямых ссылок спамят меньше.
Пажалуйста dima а можно код редиректа увидеть те преобразовавший внешние ссылки на редирект.
23.05.2011 09:36:43 #
Mozilla Firefox dima
Это из файла parser.config.php
 
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
 
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('  ', '&nbsp;&nbsp;', nl2br($text));
        $text = strtr($text, $this -> mnemonics);
        return $text;
    }

Собственно функции преобразования урлов, думаю, напишете сами. Если нет, то могу и их дать.
24.05.2011 13:28:12 #
Opera Nutty
dima, Спасибо огромное. А про преобразование URL это можно 2 способами кодить строку в BASE64 или в url_encode ну или по извращаться с кодировками типо mcrypt и тд, только смысла использовать в редиректе супер мего кодинг нету как правило достаточно BASE64 или url_encode )
dima, Хотя у меня назрел вопрос а зачем в теге bbcode создаём новый объект.
Ведь мы и так класс Xbb_Tags_Bbcode расширяет класс bbcode можно же не создавать новый объект и использовать ресурсы объекта bbcode например вот так.
PHP

// Класс для тега [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>';
    }
}
 
Если неправ разъясни зачем новый объект создаём.
24.05.2011 14:53:33 #
Mozilla Firefox dima
Ты прав. Видимо, после написания пары десятков классов, я уже не очень оптимально соображал. Well Твой вариант лучше. Сейчас исправлю соответствующий скрипт на сайте.
24.05.2011 15:06:25 #
Opera Nutty
dima
Ты прав. Видимо, после написания пары десятков классов, я уже не очень оптимально соображал.  Твой вариант лучше. Сейчас исправлю соответствующий скрипт на сайте.
Нечего страшного мы люди а не машины)
24.05.2011 15:12:37 #
Mozilla Firefox dima
Well

Ответить:

Представиться как     Антибот:
   

Просьба не постить мусор. Пользуйтесь кнопкой предварительного просмотра на панели инструментов редактора.

Введите логин: и пароль: (

© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.