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