/** * Загружает конфиг Jevix'а * * @param string $sType Тип конфига * @param bool $bClear */ public function LoadJevixConfig($sType='default',$bClear=true) { if ($bClear) { $this->oJevix->tagsRules=array(); } $aConfig=Config::Get('jevix.'.$sType); if (is_array($aConfig)) { foreach ($aConfig as $sMethod => $aExec) { foreach ($aExec as $aParams) { if (in_array(strtolower($sMethod),array_map("strtolower",array('cfgSetTagCallbackFull','cfgSetTagCallback')))) { if (isset($aParams[1][0]) and $aParams[1][0]=='_this_') { $aParams[1][0]=$this; } } call_user_func_array(array($this->oJevix,$sMethod), $aParams); } } /** * Хардкодим некоторые параметры */ unset($this->oJevix->entities1['&']); // разрешаем в параметрах символ & if (Config::Get('view.noindex') and isset($this->oJevix->tagsRules['a'])) { $this->oJevix->cfgSetTagParamDefault('a','rel','nofollow',true); } } }
/** * Загружает конфиг Qevix'а * * @param string $sType Тип конфига * @param bool $bClear Очищать предыдущий конфиг или нет */ public function LoadQevixConfig($sType = 'default', $bClear = true) { // Временный костыль по методам, отсутствующим в Qevix $aExcludeConfig = array('cfgSetAutoReplace', 'cfgSetTagParamCombination'); if ($bClear) { $this->oTextParser->tagsRules = array(); } $aConfig = Config::Get('jevix.' . $sType); if (is_array($aConfig)) { foreach ($aConfig as $sMethod => $aExec) { foreach ($aExec as $aParams) { if (!in_array($sMethod, $aExcludeConfig)) { call_user_func_array(array($this->oTextParser, $sMethod), $aParams); } } } // * Хардкодим некоторые параметры unset($this->oTextParser->entities1['&']); // разрешаем в параметрах символ & if (Config::Get('view.noindex') && isset($this->oTextParser->tagsRules['a'])) { $this->oTextParser->cfgSetTagParamDefault('a', 'rel', 'nofollow', true); } } $this->oTextParser->cfgSetTagBuildCallback('ls', array($this, 'CallbackTagLs')); if (C::Get('module.text.char.@')) { $this->oTextParser->cfgSetSpecialCharCallback('@', array($this, 'CallbackTagAt')); } }
/** * Конфигурирует типограф * */ protected function JevixConfig() { // разрешаем в параметрах символ & unset($this->oJevix->entities1['&']); // Разрешённые теги $this->oJevix->cfgAllowTags(array('cut', 'a', 'img', 'i', 'b', 'u', 's', 'video', 'em', 'strong', 'nobr', 'li', 'ol', 'ul', 'sup', 'abbr', 'sub', 'acronym', 'h4', 'h5', 'h6', 'br', 'hr', 'pre', 'code', 'object', 'param', 'embed', 'blockquote')); // Коротие теги типа $this->oJevix->cfgSetTagShort(array('br', 'img', 'hr', 'cut')); // Преформатированные теги $this->oJevix->cfgSetTagPreformatted(array('pre', 'code', 'video')); // Разрешённые параметры тегов $this->oJevix->cfgAllowTagParams('img', array('src', 'alt' => '#text', 'title', 'align' => array('right', 'left', 'center'), 'width' => '#int', 'height' => '#int', 'hspace' => '#int', 'vspace' => '#int')); $this->oJevix->cfgAllowTagParams('a', array('title', 'href', 'rel')); $this->oJevix->cfgAllowTagParams('cut', array('name')); $this->oJevix->cfgAllowTagParams('object', array('width' => '#int', 'height' => '#int', 'data' => '#link', 'type' => '#text')); $this->oJevix->cfgAllowTagParams('param', array('name' => '#text', 'value' => '#text')); $this->oJevix->cfgAllowTagParams('embed', array('src' => '#image', 'type' => '#text', 'allowscriptaccess' => '#text', 'allowfullscreen' => '#text', 'width' => '#int', 'height' => '#int', 'flashvars' => '#text', 'wmode' => '#text')); // Параметры тегов являющиеся обязательными $this->oJevix->cfgSetTagParamsRequired('img', 'src'); $this->oJevix->cfgSetTagParamsRequired('a', 'href'); // Теги которые необходимо вырезать из текста вместе с контентом $this->oJevix->cfgSetTagCutWithContent(array('script', 'iframe', 'style')); // Вложенные теги $this->oJevix->cfgSetTagChilds('ul', array('li'), false, true); $this->oJevix->cfgSetTagChilds('ol', array('li'), false, true); $this->oJevix->cfgSetTagChilds('object', 'param', false, true); $this->oJevix->cfgSetTagChilds('object', 'embed', false, false); // Если нужно оставлять пустые не короткие теги $this->oJevix->cfgSetTagIsEmpty(array('param', 'embed')); // Не нужна авто-расстановка <br> $this->oJevix->cfgSetTagNoAutoBr(array('ul', 'ol', 'object')); // Теги с обязательными параметрами $this->oJevix->cfgSetTagParamDefault('embed', 'wmode', 'opaque', true); if (Config::Get('view.noindex')) { $this->oJevix->cfgSetTagParamDefault('a', 'rel', 'nofollow', true); } // Отключение авто-добавления <br> $this->oJevix->cfgSetAutoBrMode(true); // Автозамена $this->oJevix->cfgSetAutoReplace(array('+/-', '(c)', '(с)', '(r)', '(C)', '(С)', '(R)'), array('±', '©', '©', '®', '©', '©', '®')); //$this->oJevix->cfgSetXHTMLMode(false); $this->oJevix->cfgSetTagNoTypography('code'); $this->oJevix->cfgSetTagNoTypography('video'); $this->oJevix->cfgSetTagNoTypography('object'); // Теги, после которых необходимо пропускать одну пробельную строку $this->oJevix->cfgSetTagBlockType(array('h4', 'h5', 'h6', 'ol', 'ul', 'blockquote', 'pre')); }
$jevix->cfgSetTagPreformatted(array('pre')); // 4. Устанавливаем теги, которые необходимо вырезать из текста вместе с контентом. $jevix->cfgSetTagCutWithContent(array('script', 'object', 'iframe', 'style')); // 5. Устанавливаем разрешённые параметры тегов. Также можно устанавливать допустимые значения этих параметров. $jevix->cfgAllowTagParams('a', array('title', 'href')); $jevix->cfgAllowTagParams('img', array('src', 'alt' => '#text', 'title', 'align' => array('right', 'left', 'center'), 'width' => '#int', 'height' => '#int', 'hspace' => '#int', 'vspace' => '#int')); // 6. Устанавливаем параметры тегов являющиеся обязяательными. Без них вырезает тег оставляя содержимое. $jevix->cfgSetTagParamsRequired('img', 'src'); $jevix->cfgSetTagParamsRequired('a', 'href'); // 7. Устанавливаем теги которые может содержать тег контейнер // cfgSetTagChilds($tag, $childs, $isContainerOnly, $isChildOnly) // $isContainerOnly : тег является только контейнером для других тегов и не может содержать текст (по умолчанию false) // $isChildOnly : вложенные теги не могут присутствовать нигде кроме указанного тега (по умолчанию false) //$jevix->cfgSetTagChilds('ul', 'li', true, false); // 8. Устанавливаем атрибуты тегов, которые будут добавлятся автоматически $jevix->cfgSetTagParamDefault('a', 'rel', null, true); //$jevix->cfgSetTagParamsAutoAdd('a', array('rel' => 'nofollow')); //$jevix->cfgSetTagParamsAutoAdd('a', array('name'=>'rel', 'value' => 'nofollow', 'rewrite' => true)); $jevix->cfgSetTagParamDefault('img', 'width', '300px'); $jevix->cfgSetTagParamDefault('img', 'height', '300px'); //$jevix->cfgSetTagParamsAutoAdd('img', array('width' => '300', 'height' => '300')); //$jevix->cfgSetTagParamsAutoAdd('img', array(array('name'=>'width', 'value' => '300'), array('name'=>'height', 'value' => '300') )); // 9. Устанавливаем автозамену $jevix->cfgSetAutoReplace(array('+/-', '(c)', '(r)'), array('±', '©', '®')); // 10. Включаем или выключаем режим XHTML. (по умолчанию включен) $jevix->cfgSetXHTMLMode(true); // 11. Включаем или выключаем режим замены переноса строк на тег <br/>. (по умолчанию включен) $jevix->cfgSetAutoBrMode(true); // 12. Включаем или выключаем режим автоматического определения ссылок. (по умолчанию включен) $jevix->cfgSetAutoLinkMode(true); // 13. Отключаем типографирование в определенном теге