Джаваскрипт в топиках [РЕШЕНО]

Навеяно постом!

И так, есть необходимость в некоторые топики вставлять js. Разрешать js через Jevix — не логично (во избежания xss/напихания рекламных js).
Подключать в файлах шаблона — некатит, так как в каждый топик разный js совать нужно.

Выслушаю все идеи и предложения!

UPD 2012.04.22
beauty_free предложил два варианта.

1. Все довольно просто, если менять файлы движка то нужно изменить файл livestreet/classes/actions/ActionTopic.class.php строка примерно 301
$oTopic->setText($this->Text_Parser($sTextNew));
                $oTopic->setTextShort($this->Text_Parser($sTextShort));

на
if($this->oUserCurrent->isAdministrator()) {
                $oTopic->setText($sTextNew);
                $oTopic->setTextShort($sTextShort);
} else {
                $oTopic->setText($this->Text_Parser($sTextNew));
                $oTopic->setTextShort($this->Text_Parser($sTextShort));
}


2. Либо как вариант изменить метод Parser в модуле Text
public function Parser($sText) {
                $sResult=$this->FlashParamParser($sText);               
                $sResult=$this->JevixParser($sResult);  
                $sResult=$this->VideoParser($sResult);  
                $sResult=$this->CodeSourceParser($sResult);
                return $sResult;
        }

на
public function Parser($sText) {
                $sResult=$this->FlashParamParser($sText);
                if(!$this->User_GetUserCurrent()->isAdministrator()) {          
                    $sResult=$this->JevixParser($sResult);
                }
                $sResult=$this->VideoParser($sResult);  
                $sResult=$this->CodeSourceParser($sResult);
                return $sResult;
        }

Второй вариант более правильный так как оставляет другие парсеры такие как подсветка кода, вставка видео.

Добавление JS, в топики

Доброго времени суток. Собственно сабж, нужно в топики добавить JS код (плеер проигрывающий видос), добавить сие невозможно, ибо jevix обрабатывает скрипты. Что-бы придумать незнаю, дабы обезопасить сайт от вставки эксплойта в комменты, но вставить код как-то надо. Пробовал в jevix воткнуть

array(
     'script',
     array('type', 'src', 'text', 'javascript')
),

Код все равно обрабатывается, хз что не так делаю. Прошу помощи, заранее благодарен.

[РЕШЕНО] Как разрешить в Jevix теги div и span

Требуется разрешить в Jevix теги div и span с параметром style. Параметр style в свою очередь содержит свои параметры: font-family, font-size, color, background-color, font-weight, font-style, text-align, padding.

Кто-то писал, что теги добавлять нужно в engine/modules/text/Text.class.php. Поковырял его, понял, что он ссылается на /config/jevix.php. Там я и нашел разрешенные теги, но новые добавить не получается, не работают.

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

Плеер GrooveShark

Вопрос:
Как разрешить в Jevix парсинг плеера?
По типу:
/**
                 * youtube.com
                 */             
                $sText = preg_replace('/<video>http:\/\/(?:www\.|)youtube\.com\/watch\?v=([a-zA-Z0-9_\-]+)<\/video>/Ui', '<object width="425" height="344"><param name="wmode" value="opaque"></param><embed src="http://www.youtube.com/v/$1&hl=en" type="application/x-shockwave-flash" wmode="opaque" width="425" height="344"></embed></param></embed></param></embed></object>', $sText);          


Код плеера:
<object width="250" height="250" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="gsPlaylist657773880" name="gsPlaylist657773880"><param name="wmode" value="opaque"></param><param name="allowScriptAccess" value="always"></param><param name="flashvars" value="hostname=cowbell.grooveshark.com&playlistID=65777388&bbg=000000&bth=000000&pfg=000000&lfg=000000&bt=FFFFFF&pbg=FFFFFF&pfgh=FFFFFF&si=FFFFFF&lbg=FFFFFF&lfgh=FFFFFF&sb=FFFFFF&bfg=666666&pbgh=666666&lbgh=666666&sbh=666666&p=0"></param></object></object>

textarea, button и iframe внутри топика

Уже не раз добавлял в Jevix.php свои надстройки. Например, разрешил image map, onmouseover и т.п. Всё начинало работать.

Но когда разрешил button и textarea, а также их параметры:
array('textarea', array('name','cols'=>'#int','rows'=>'#int')),
array('button',array('id'))


то отображается только button (без id — т.е. он удаляется), textarea вообще не появляется. А iframe появляется пустым.

не подскажите, как решить эту проблему?

Разрешеннные html-атрибуты

При создании сообщения Livestreet вырезает некоторые атрибуты, что делает невозможным отформатировать текст. Например, никак не получается сделать якорь в тексте. Я прописала в /engine/modules/text/Text.class.php у ссылки атрибут «name», но якорь все равно вырезается из текста:

$this->oJevix->cfgAllowTagParams('a', array('title', 'style', 'target', 'href', 'id', 'rel', 'name'));	

То же самое с div-ами — не работает выравнивание текста внутри. Добавила див в разрешенные теги, добавила разрешенные атрибуты:

$this->oJevix->cfgAllowTagParams('div', array('text-align' => array('right', 'left', 'center')));

Подскажите, пожалуйста, где еще нужно поправить, чтобы теги заработали?

Jevix и <br /> в конце текста

Подскажите, пожалуйста, как заставить Jevix убирать перенос строки в конце текста. К примеру, при использовании визуального редактора TinyMCE можно случайно наставить br в конце топика или комментария. В редакторе они не видны, если не смотреть HTML код, а при публикации выглядят, разумеется, не весьма к месту.
На сайте Джевикса в перловой версии они отлично убираются, как бы это реализовать в LS?

Тире/дефис в конце строки

Поправил небольшую ошибку в jevix.class.php.
Ошибка в следующем:
Если строка заканчивается на дефис (который потом преобразуется в тире), то пропадает перевод строки.

Это лимерик — должно быть пять строк, а получается четыре:
Часовой мастер Стью Перегрин
Засыпал меж тяжёлых перин — Стрекотанье часов
Хуже полчища сов
Доводило его до седин.


Если писать дефис без пробела или ставить сразу самому тире — тогда всё ок.

Правка следующая:
меняем

while($this->curCh == '-') $this->getCh();
if(!$this->skipNL() && !$this->skipSpaces()){
    $this->restoreState();
    return false;
}

на

while($this->curCh == '-') $this->getCh();
$count=0;
if(!$this->skipNL($count,1) && !$this->skipSpaces()){
    $this->restoreState();
    return false;
}


Если кто из знатоков подскажет, как сделать правильнее, буду балгодарен.

Jevix. P вместо BR, возможно?

Приветствую всех.

У меня возник вопрос, можно ли перенос строк реорганизовать, т.е. вместо тегов br использовать параграфы?

UPD: Возможо.
Вот цитата с хабра:

Нашел решение.

Разрешаем тег p
Ставим cfgSetAutoBrMode(false);
В jevix.class.php в функции parse исправляем:

if($this->isAutoBrMode) {
    $this->text = preg_replace('/<br\/?>(\r\n|\n\r|\n)?/ui', $this->nl, $text);
} else {
    $this->text = preg_replace('/\n?(.+?)(?:\n\s*\n|\z)/s', "$1\n", $text);
}

TinyMCE + Jevix

LS 0.4.2 rev1048
TinyMCE включен

При создании поста и изспользовании зачеркивания редактор TinyMCE вставляет его не как тег s (strike), а через span+style
соответственно парсер jevix его (span) обрезает.
На предпросмотре поста все видно как нужно, после неверно.

Подскажите в каком месте поправить TinyMCE чтобы кнопка S формировала тег s а не конструкцию с span+style=text-decoration.
Изправлять разрешенные теги в Jevix считаю нецелесообразно из-за того что стилями можно очень сильно изменить сайт.