Сайт сообщества | Клуб пользователей | О проекте

Имя
Пароль
ПравилаРегистрацияСправка
Сообщения за деньПоиск

Вернуться   Клуб пользователей портальной системы RUNCMS > Опен Ресурс > Разработчикам > Готовые хаки

Ответ
 
Опции темы Опции просмотра
Zormax вне форума Zormax
Старожил

Аватар для Zormax

| Цитировать Старый #1 12-16-2007, 21:55

Есть 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(' ', '&nbsp;', 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

Последний раз редактировалось Zormax, 12-16-2007 в 21:57


Всё для Sony Ericsson
Посетить домашнюю страницу Zormax
  Сообщения: 2,424 c 15.05.2004 | Репутация: 149
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Рейтинг@Mail.ru Хостинг провайдер Majordomo. Powered by: vBulletin Version 3.0
Copyright ©2000-2024, Jelsoft Enterprises Ltd.
Все разделы прочитаны - Руководство форума - Архив - Вверх
Rambler's Top100
Output: 44.66 Kb. compressed to 43.06 Kb. by saving 1.60 Kb. (3.57%)
Page generated in 0.06115 seconds with 12 queries