Есть BB-тег [code] так вот понадобилось, чтобы при выделении этим тегом строки не ломались, т.е. если есть одна длинющая строка кода, так она и шла и соблюдались отступы (пробелы и табы) и понадобилось разукрасить код, т.е. например коменты выделять отдельным цветом.
Значит в файле
/include/style.css
В секции
xoopscode у нас будет так:
Код:
.xoopscode {
border-style : dashed;
border-width : 1px;
padding : 0px 5px 0px 5px;
white-space: nowrap;
font-family: monospace, lucida console;
}
В файле:
/class/module.textsanitizer.php
За место:
PHP код:
$replacement = "'"._CODEC."<div class=\"xoopscode\">'.";
if ($allow_html == 1) {
$patterns[] = "/\[enc_code](.*)\[\/enc_code\]/esU";
$replacement .= "htmlspecialchars(base64_decode('\\1'), ENT_QUOTES)";
} else {
$patterns[] = "/\[enc_code](.*)\[\/enc_code\]/esU";
$replacement .= "base64_decode('\\1')";
}
Будет так:
PHP код:
$replacement = "'"._CODEC."<div class=\"xoopscode\">'.";
if ($allow_html == 1) {
$patterns[] = "/\[enc_code](.*)\[\/enc_code\]/esU";
$replacement .= "htmlspecialchars(base64_decode('\\1'), ENT_QUOTES)";
} else {
$patterns[] = "/\[enc_code](.*)\[\/enc_code\]/esU";
$replacement .= "color_code_code(str_replace(' ', ' ', base64_decode('\\1')))";
}
В самом конце файла ПЕРЕД последней скобкой "}"
Добавляем:
PHP код:
// Обработка однострочных комментариев в виде двойного слеша и(или) решетки
function fill_color_code($input, $pos) {
$pos_one = $pos;
$pos_two = $pos;
$len_str = strlen($input);
for ($i=$pos_one+1; $i<$len_str; $i++) {
if (($input[$i]=="\n") or ($i==$len_str-1)) {
$pos_two = $i;
break;
}
}
$pos = $pos_two; // Вернем позицию конца строки
$res[0] = "<font color=gray>".substr($input, $pos_one, $pos_two-$pos_one+1)."</font>";
$res[1] = $pos_two;
return $res;
}
function color_code_code($input) {
$result = "";
for ($i=0; $i<strlen($input); $i++) {
if (($input[$i]=="/") & ($input[$i+1]=="/") || ($input[$i] == "#")) {
$in_str = fill_color_code($input, $i);
$result .= $in_str[0];
$i = $in_str[1];
} else {
$result .= $input[$i];
}
}
return $result;
}
Проверено на версии 1.2