public static function setUpBeforeClass() { $qevix = new Qevix(); // 1. Задает список разрешенных тегов $qevix->cfgAllowTags(array('b', 'i', 'u', 'a', 'img', 'ul', 'li', 'ol', 'br', 'code', 'pre', 'div', 'cut', 'video')); // 2. Указавает, какие теги считать короткими (<br>, <img>) $qevix->cfgSetTagShort(array('br', 'img', 'cut', 'video')); // 3. Указывает преформатированные теги, в которых нужно всё заменять на HTML сущности $qevix->cfgSetTagPreformatted(array('code')); // 4. Указывает не короткие теги, которые могут быть пустыми и их не нужно из-за этого удалять $qevix->cfgSetTagIsEmpty(array('div')); // 5. Указывает теги внутри которых не нужна авто расстановка тегов перевода на новую строку $qevix->cfgSetTagNoAutoBr(array('ul', 'ol')); // 6. Указывает теги, которые необходимо вырезать вместе с содержимым $qevix->cfgSetTagCutWithContent(array('script', 'object', 'iframe', 'style')); // 7. Указывает теги, после которых не нужно добавлять дополнительный перевод строки, например, блочные теги $qevix->cfgSetTagBlockType(array('ol', 'ul', 'code', 'video')); // 8. Добавляет разрешенные параметры для тегов, значение по умолчанию шаблон #text. Разрешенные шаблоны #text, #int, #link, #regexp(...) (Например: "#regexp(\d+(%|px))") $qevix->cfgAllowTagParams('a', array('title', 'href' => '#link', 'rel' => '#text', 'target' => array('_blank'))); $qevix->cfgAllowTagParams('img', array('src' => '#text', 'alt' => '#text', 'title', 'align' => array('right', 'left', 'center'), 'width' => '#int', 'height' => '#int')); $qevix->cfgAllowTagParams('video', array('src' => ['#link' => ['youtube.com', 'vimeo.com']])); // 9. Добавляет обязательные параметры для тега $qevix->cfgSetTagParamsRequired('a', 'href'); $qevix->cfgSetTagParamsRequired('img', 'src'); $qevix->cfgSetTagParamsRequired('video', 'src'); // 10. Указывает, какие теги являются контейнерами для других тегов $qevix->cfgSetTagChilds('ul', 'li', true, true); $qevix->cfgSetTagChilds('ol', 'li', true, true); // 11. Указывает, какие теги не должны быть дочерними к другим тегам $qevix->cfgSetTagGlobal('cut'); // 12. Устанавливаем атрибуты тегов, которые будут добавлятся автоматически $qevix->cfgSetTagParamDefault('a', 'rel', 'nofollow', true); $qevix->cfgSetTagParamDefault('img', 'alt', ''); // 13. Указывает теги, в которых нужно отключить типографирование текста $qevix->cfgSetTagNoTypography(array('code', 'pre')); // 14. Устанавливает список разрешенных протоколов для ссылок (https, http, ftp) $qevix->cfgSetLinkProtocolAllow(array('http', 'https')); // 15. Включает или выключает режим XHTML $qevix->cfgSetXHTMLMode(false); // 16. Включает или выключает режим автозамены символов переводов строк на тег <br> $qevix->cfgSetAutoBrMode(true); // 17. Включает или выключает режим автоматического определения ссылок $qevix->cfgSetAutoLinkMode(true); // 18. Задает символ/символы перевода строки. По умполчанию "\n". Разрешено "\n" или "\r\n" $qevix->cfgSetEOL("\n"); // 19. Устанавливает на тег callback-функцию $qevix->cfgSetTagBuildCallback('code', [static::class, 'tagCodeBuild']); // 20. Устанавливает на строку предварённую спецсимволом (@|#|$) callback-функцию $qevix->cfgSetSpecialCharCallback('#', [static::class, 'tagSharpBuild']); $qevix->cfgSetSpecialCharCallback('@', [static::class, 'tagAtBuild']); static::$qevix = $qevix; }
/** * Загружает конфиг 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')); } }
// 13. Указывает теги, в которых нужно отключить типографирование текста $qevix->cfgSetTagNoTypography(array('code', 'pre')); // 14. Устанавливает список разрешенных протоколов для ссылок (https, http, ftp) $qevix->cfgSetLinkProtocolAllow(array('http', 'https')); // 15. Включает или выключает режим XHTML $qevix->cfgSetXHTMLMode(false); // 16. Включает или выключает режим автозамены символов переводов строк на тег <br> $qevix->cfgSetAutoBrMode(true); // 17. Включает или выключает режим автоматического определения ссылок $qevix->cfgSetAutoLinkMode(true); // 18. Задает символ/символы перевода строки. По умполчанию "\n". Разрешено "\n" или "\r\n" $qevix->cfgSetEOL("\n"); // 19. Устанавливает на тег callback-функцию $qevix->cfgSetTagBuildCallback('code', 'tag_code_build'); // 20. Устанавливает на строку предварённую спецсимволом (@|#|$) callback-функцию $qevix->cfgSetSpecialCharCallback('#', 'tag_sharp_build'); $qevix->cfgSetSpecialCharCallback('@', 'tag_at_build'); // 21. Устанавливает на тег событие $qevix->cfgSetTagEventCallback('code', 'tag_code_event'); function tag_code_build($tag, $params, $content) { return '<pre><code>' . $content . '<code><pre>' . "\n"; } function tag_code_event($tag, $params, $content) { // Что-то делаем... } function tag_sharp_build($string) { if (!preg_match('#^[\\w\\_\\-\\ ]{1,32}$#isu', $string)) { return false;