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

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

И так, есть необходимость в некоторые топики вставлять 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;
        }

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

5 комментариев

avatar
Специально для администратора выводите дополнительное текстовое поле которое будет конкатенироваться с текстом топика в обход jevix'a
avatar
Либо вообще обход jevix'a в случае если создает топик администратор
avatar
Но как я понимаю у вас тут будут орудовать пользователи. Опишите суть поставленной задачи, мне кажется она от лукавого
avatar
Проще говоря, в некоторые топики нужно всунуть ролик flv, воспроизводимый через flash.
Суть не важна, но всунуть нужно подобный код в топик:
<div id="house-anim"></div>
<script src="swfobject.js" type="text/javascript"></script>
<script type="text/javascript">
            var flashvars = {renderPath:"/renders/", idle:"wood_house_01.flv", action:"wood_house_02.flv,wood_house_02.flv"};
            var params = {wmode:"transparent"};
            var attributes = {id:"house-anim"};
            swfobject.embedSWF("3dhouse_model.swf", "house-anim", "330", "500", "9.0.0", "expressInstall.swf", flashvars, params, attributes);
</script>

Либо вообще обход jevix'a в случае если создает топик администратор
Думаю это будет идеальным решением.
Сможете помочь в реализации?
avatar
Подскажите как модернизировать

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;
        }


Чтобы парсер работал для администратора в комментариях, но не работал в шапке топика?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.