BB-коды нужны для безопасной вставки HTML содержимого в альтернативные формы добавления. В первую очередь нужно выставить опцию «разрешить BB-коды» в настройке текстового поля.
Вывести панель можно при помощи специальных функций. На данный момент используются 2 функции для управления BB-кодами:
nc_bbcode_bar($winID, $formID, $textareaID, $help=false, $codes=array(), $prefix="", $suffix="", $noscript=false)
Параметр | Описание |
---|---|
$winID | идентификатор окна для JS кода |
$formID | идентификатор формы для JS кода |
$textareaID | идентификатор textarea для JS кода |
$help | выводить строку с подсказками |
$codes | какие коды выводить, по-умолчанию все |
$prefix | префикс вывода панельки с кодами |
$suffix | суффикс вывода панельки с кодами |
$noscript | не подключать JS код |
Применяется при выводе списка объектов или при полном выводе объекта. Также может использоваться в любом другом месте системы.
nc_bbcode($text, $cut_link="", $cut_full=false, $codes=array())
Параметр | Описание |
---|---|
$text | текст для обработки |
$cut_link | ссылка на объект в полном просмотре (просто $fullLink или $fullDateLink), для изменения формата парсинга кода CUT |
$cut_full | режим полного просмотра объекта, для изменения формата парсинга кода CUT |
$codes | какие коды выводить, по умолчанию - все |
Допустим, нам требуется прикрутить панельку BB-кодов к альтернативной форме добавления. Это будет выглядеть следующим образом:
<form id='addPost' name='adminForm' enctype='multipart/form-data' method='post' action='/netcat/add.php'> ... <?= nc_bbcode_bar('this', 'addPost', 'blogMessage', 1)?> <textarea rows='10' name='f_Text' id='blogMessage'><?=$f_Text?></textarea> ... </form>
Для ограничения используемых кодов следует указать массив $codes:
<?= nc_bbcode_bar('this', 'addPost', 'blogMessage', true, array("B", "I", "U", "S") )?>
Для парсинга текста с BB-кодами, при выводе списка объектов, пишем:
<?= nc_bbcode($f_Text)?>
Если используется код CUT, следует указать ссылку на полный просмотр объекта и идентификатор полного просмотра (если не в списке), иначе данный код будет проигнорирован:
<!-- при выводе объекта в списке --> <?= nc_bbcode($f_Text, $fullDateLink)?> ... <!-- при полном выводе объекта --> <?= nc_bbcode($f_Text, "", true)?>
Для ограничения используемых кодов следует указать массив $codes:
<?= nc_bbcode_bar('this', 'addPost', 'blogMessage', true, array("B", "I", "U", "S") )?>
Параметр | Описание |
---|---|
SIZE | цвет шрифта в формате HexRGB (FFAA00), требуется закрывающий [COLOR=FF9900]...[/COLOR] |
SMILE | разрешить смайлики |
B | жирный шрифт, без параметров, требуется закрывающий [B]...[/B] |
I | наклонный шрифт, без параметров, требуется закрывающий [I]...[/I] |
U | подчёркнутый текст, без параметров, требуется закрывающий , требуется закрывающий [U]...[/U] |
S | зачёркнутый текст, без параметров, требуется закрывающий [S]...[/S] |
LIST | элемент списка, без параметров, требуется закрывающий [LIST]...[/LIST] |
QUOTE | цитата сообщения, требуется закрывающий [QUOTE]...[/QUOTE] или [QUOTE='имя_пользователя']...[/QUOTE] |
CODE | блок моноширинного текста, без параметров, требуется закрывающий [CODE]...[/CODE] |
IMG | вставка изображения, [IMG='адрес_изображения'] |
URL | вставка гиперссылки, требуется закрывающий [URL]адрес_url[/URL] или [URL='адрес_url']текст_ссылки[/URL] |
CUT | сокращение текста при выводе объекта в списке, требуется закрывающий [CUT]...[/CUT] или [CUT='текст_ссылки'']...[/CUT] |
Массив допустимых кодов $codes, все возможные значения:
array("SIZE", "COLOR", "SMILE", "B", "I", "U", "S", "LIST", "QUOTE", "CODE", "IMG", "URL", "CUT")
Последовательность и количество элементов учитывается, т.е. если значению массива $codes будет соответствовать
array("LIST", "B", "U")
то будут учитываться только эти коды, в указанной последовательности.
Для корректного отображения панельки с BB-кодами, следует прописать следующие классы в файле стилей.
select.nc_bbcode_bar_size {margin-bottom:5px; width:100px; vertical-align:top; margin-top: 10px; margin-right: 10px;} img.nc_bbcode_wicon {border:0; width:27px; height:20px;} img.nc_bbcode_icon {border:0; width:20px; height:20px;} div.nc_bbcode_error {padding:3px 0; color:#AA0000; font-weight:bold} input.nc_bbcode_helpbox {margin:0 0 3px; padding:2px 0; width:100%; font-size:10px; font-family:Verdana,Arial; background:none; border:0;} div.nc_bbcode_colors {position:absolute; background:#FFFFFF; padding:3px; border:solid 1px #AAAAAA;} div.nc_bbcode_color_top {white-space:nowrap;} div.nc_bbcode_color {padding-top:2px; white-space:nowrap;} input.nc_bbcode_color {padding:0px; cursor:pointer; height:20px; width:20px; border:0px;} input.nc_bbcode_color_white {padding:0px; cursor:pointer; height:20px; width:20px; border:1px solid #AAAAAA;} div.nc_bbcode_smiles {position:absolute; background:#FFFFFF; padding:3px; border:solid 1px #AAAAAA;} div.nc_bbcode_smile_top {white-space:nowrap;} div.nc_bbcode_smile {padding-top:2px; white-space:nowrap;} input.nc_bbcode_smile {padding:0px; cursor:pointer; height:22px; width:22px; border:0px;} img.nc_bbcode_smile_in_text {margin:0 0 -3px 0;} div.nc_bbcode_url {position:absolute; background:#FFFFFF; padding:3px; border:solid 1px #AAAAAA; height: 75px; width: 250px;} div.nc_bbcode_url input {float: right; width: 130px; height: 23px; border: 1px solid gray; font: normal 12px; color: #555; background: #fff; padding: 0 5px;} div.nc_bbcode_url span {float: left; height: 23px; width: 70px; padding: 1px;} div.nc_bbcode_img {position:absolute; background:#FFFFFF; padding:3px; border:solid 1px #AAAAAA; height: 52px; width: 250px;} div.nc_bbcode_img input {float: right; width: 130px; height: 23px; border: 1px solid gray; font: normal 12px; color: #555; background: #fff; padding: 0 5px;} div.nc_bbcode_img span {float: left; height: 23px; width: 110px; padding: 1px;} /* BBcodes in text */ div.nc_bbcode_quote_1_top {margin:0px 25px 0px 25px;} div.nc_bbcode_quote_1 {padding:20px; border:1px solid #CCCCCC; background:#FFFFFF;} div.nc_bbcode_quote_2_top {margin:0px 25px 0px 25px;} div.nc_bbcode_quote_2 {padding:20px; border:1px solid #CCCCCC; background:#FFFFFF;} div.nc_bbcode_code {margin:10px 25px 10px 25px;} span.nc_bbcode_list_closed {margin-left:1em; text-indent:-.65em; display:block;} div.nc_bbcode_list {margin-left:1em; text-indent:-.65em;} span.nc_bbcode_color {} span.nc_bbcode_size {} a.nc_bbcode_url_1 {} a.nc_bbcode_url_2 {} img.nc_bbcode_img {} span.nc_bbcode_s {} a.nc_bbcode_cut_link {} div.nc_bbcode_url {position:absolute; background:#FFFFFF; padding:3px; border:solid 1px #AAAAAA; height: 81px; width: 250px;} div.nc_bbcode_url input {float: right; width: 130px; height: 23px; border: 1px solid gray; font: normal 12px; color: #555; background: #fff; padding: 1px 5px; margin-top: 2px;} div.nc_bbcode_url span {float: left; height: 23px; width: 70px; padding: 1px; margin-top: 2px;} div.nc_bbcode_img {position:absolute; background:#FFFFFF; padding:3px; border:solid 1px #AAAAAA; height: 56px; width: 270px;} div.nc_bbcode_img input {float: right; width: 130px; height: 23px; border: 1px solid gray; font: normal 12px; color: #555; background: #fff; padding: 1px 5px; margin-top: 2px;} div.nc_bbcode_img span {float: left; height: 23px; width: 120px; padding: 1px; margin-top: 2px;}
Комментарии 1