1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-05-21 10:18:19 +03:00

Конфиг Jevix вынесен в отдельный файл /config/jevix.php

Поумолчанию используется тип(секция) 'default', в конфиг можно добавить любую другую и загружать её в типограф через метод Text_LoadJevixConfig('myconfig')
This commit is contained in:
Mzhelskiy Maxim 2011-04-26 14:52:22 +00:00
parent 8059cdd6df
commit 93ed300eba
3 changed files with 196 additions and 47 deletions

View file

@ -440,5 +440,10 @@ $config['compress']['js']['use'] = true; // указывает на нео
setlocale(LC_ALL, "ru_RU.UTF-8");
date_default_timezone_set('Europe/Moscow'); // See http://php.net/manual/en/timezones.php
/**
* Настройки типографа текста Jevix
*/
$config['jevix']=require(dirname(__FILE__).'/jevix.php');
return $config;
?>

149
config/jevix.php Normal file
View file

@ -0,0 +1,149 @@
<?php
return array(
'default' => array(
// Разрешённые теги
'cfgAllowTags' => array(
// вызов метода с параметрами
array(
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'),
),
),
// Коротие теги типа
'cfgSetTagShort' => array(
array(
array('br','img', 'hr', 'cut')
),
),
// Преформатированные теги
'cfgSetTagPreformatted' => array(
array(
array('pre','code','video')
),
),
// Разрешённые параметры тегов
'cfgAllowTagParams' => array(
// вызов метода
array(
'img',
array('src', 'alt' => '#text', 'title', 'align' => array('right', 'left', 'center', 'middle'), 'width' => '#int', 'height' => '#int', 'hspace' => '#int', 'vspace' => '#int')
),
// следующий вызов метода
array(
'a',
array('title', 'href', 'rel' => '#text', 'name' => '#text', 'target' => array('_blank'))
),
// и т.д.
array(
'cut',
array('name')
),
array(
'object',
array('width' => '#int', 'height' => '#int', 'data' => array('#domain'=>array('youtube.com','rutube.ru','vimeo.com')), 'type' => '#text')
),
array(
'param',
array('name' => '#text', 'value' => '#text')
),
array(
'embed',
array('src' => '#image', 'type' => '#text','allowscriptaccess' => '#text', 'allowfullscreen' => '#text','width' => '#int', 'height' => '#int', 'flashvars'=> '#text', 'wmode'=> '#text')
),
array(
'acronym',
array('title')
),
array(
'abbr',
array('title')
),
),
// Параметры тегов являющиеся обязательными
'cfgSetTagParamsRequired' => array(
array(
'img',
'src'
),
),
// Теги которые необходимо вырезать из текста вместе с контентом
'cfgSetTagCutWithContent' => array(
array(
array('script', 'iframe', 'style')
),
),
// Вложенные теги
'cfgSetTagChilds' => array(
array(
'ul',
array('li'),
false,
true
),
array(
'ol',
array('li'),
false,
true
),
array(
'object',
'param',
false,
true
),
array(
'object',
'embed',
false,
false
),
),
// Если нужно оставлять пустые не короткие теги
'cfgSetTagIsEmpty' => array(
array(
array('param','embed','a')
),
),
// Не нужна авто-расстановка <br>
'cfgSetTagNoAutoBr' => array(
array(
array('ul','ol','object')
)
),
// Теги с обязательными параметрами
'cfgSetTagParamDefault' => array(
array(
'embed',
'wmode',
'opaque',
true
),
),
// Отключение авто-добавления <br>
'cfgSetAutoBrMode' => array(
array(
true
)
),
// Автозамена
'cfgSetAutoReplace' => array(
array(
array('+/-', '(c)', '(с)', '(r)', '(C)', '(С)', '(R)'),
array('±', '©', '©', '®', '©', '©', '®')
)
),
'cfgSetTagNoTypography' => array(
array(
array('code','video','object')
),
),
// Теги, после которых необходимо пропускать одну пробельную строку
'cfgSetTagBlockType' => array(
array(
array('h4','h5','h6','ol','ul','blockquote','pre')
)
),
),
);

View file

@ -46,54 +46,45 @@ class ModuleText extends Module {
*
*/
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', 'middle'), 'width' => '#int', 'height' => '#int', 'hspace' => '#int', 'vspace' => '#int'));
$this->oJevix->cfgAllowTagParams('a', array('title', 'href', 'rel' => '#text', 'name' => '#text', 'target' => array('_blank')));
$this->oJevix->cfgAllowTagParams('cut', array('name'));
$this->oJevix->cfgAllowTagParams('object', array('width' => '#int', 'height' => '#int', 'data' => array('#domain'=>array('youtube.com','rutube.ru','vimeo.com')), '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->cfgAllowTagParams('acronym', array('title'));
$this->oJevix->cfgAllowTagParams('abbr', array('title'));
// Параметры тегов являющиеся обязательными
$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','a'));
// Не нужна авто-расстановка <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'));
// загружаем конфиг
$this->LoadJevixConfig();
}
/**
* Загружает конфиг 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) {
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);
}
}
}
/**
* Возвращает объект Jevix
*
* @return unknown
*/
public function GetJevix() {
return $this->oJevix;
}
/**
* Парсинг текста с помощью Jevix
*
@ -101,7 +92,11 @@ class ModuleText extends Module {
* @param array $aError
* @return string
*/
public function JevixParser($sText,&$aError=null) {
public function JevixParser($sText,&$aError=null) {
// Если конфиг пустой, то загружаем его
if (!count($this->oJevix->tagsRules)) {
$this->LoadJevixConfig();
}
$sResult=$this->oJevix->parse($sText,$aError);
return $sResult;
}