/**
* Bitrix Framework
* @package bitrix
* @subpackage sender
* @copyright 2001-2012 Bitrix
*/
namespace Bitrix\Fileman\Block;
use Bitrix\Main\Application;
use Bitrix\Main\Loader;
use Bitrix\Main\Web\DOM\Document;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Web\DOM\CssParser;
use Bitrix\Main\Text\HtmlFilter;
Loc::loadMessages(__FILE__);
class Editor
{
CONST SLICE_SECTION_ID = 'BX_BLOCK_EDITOR_EDITABLE_SECTION';
CONST BLOCK_PLACE_ATTR = 'data-bx-block-editor-place';
CONST BLOCK_PHP_ATTR = 'data-bx-editor-php-slice';
CONST STYLIST_TAG_ATTR = 'data-bx-stylist-container';
CONST BLOCK_PLACE_ATTR_DEF_VALUE = 'body';
CONST BLOCK_COUNT_PER_PAGE = 14;
public $id;
protected $site;
protected $url;
protected $previewUrl;
protected $saveFileUrl;
protected $templateType;
protected $templateId;
protected $charset;
protected $isTemplateMode;
protected $isUserHavePhpAccess;
protected $useLightTextEditor;
protected $ownResultId;
/*
* block list
*/
public $tools = array();
/*
* block list
*/
public $blocks = array();
protected $componentFilter = array();
public $componentsAsBlocks = array();
public $previewModes = array();
public $tabs = array();
public $uiPatterns = array(
'main' => <<
#tabs#
#MESS_BTN_MIN#
#MESS_BTN_MAX#
#panels#
HTML
,
'block' => <<
#name#
HTML
,
'block_page' => <<
#blocks#
HTML
,
'tool' => <<
#name#:
#html#
HTML
,
'device' => <<
#MESS_NAME#
HTML
,
'tab' => <<#name#
HTML
,
'tab_active' => 'bx-editor-block-btn-active'
,
'panel' => <<#html#
HTML
,
'panel_hidden' => 'style="display: none;"'
,
'panel-edit' => <<
#MESS_BLOCKS#
#MESS_STYLES#
#MESS_TOOL_EMPTY#
#tools#
HTML
,
'panel-preview' => <<
#devices#
HTML
,
'panel-get-html' => <<
HTML
);
/**
* Return editor object
*
* @param array $params
* @return Editor
*/
public static function createInstance($params)
{
return new static($params);
}
/**
* Create editor object.
*
* @param array $params
*/
public function __construct($params)
{
$this->id = $params['id'];
$this->url = $params['url'];
$this->previewUrl = isset($params['previewUrl']) ? $params['previewUrl'] : '/bitrix/admin/fileman_block_editor.php?action=preview';
$this->saveFileUrl = isset($params['saveFileUrl']) ? $params['saveFileUrl'] : '/bitrix/admin/fileman_block_editor.php?action=save_file';
$this->templateType = $params['templateType'];
$this->templateId = $params['templateId'];
$this->site = $params['site'];
$this->charset = $params['charset'];
$this->isTemplateMode = isset($params['isTemplateMode']) ? (bool) $params['isTemplateMode'] : false;
$this->useLightTextEditor = isset($params['useLightTextEditor']) ? (bool) $params['useLightTextEditor'] : false;
$this->isUserHavePhpAccess = isset($params['isUserHavePhpAccess']) ? (bool) $params['isUserHavePhpAccess'] : false;
$this->ownResultId = isset($params['own_result_id']) ? $params['own_result_id'] : true;
$this->componentFilter = isset($params['componentFilter']) ? $params['componentFilter'] : array();
$this->setToolList($this->getDefaultToolList());
$this->previewModes = array(
array('CLASS' => 'phone', 'NAME' => Loc::getMessage('BLOCK_EDITOR_PREVIEW_MODE_PHONE'), 'WIDTH' => 320, 'HEIGHT' => 480),
array('CLASS' => 'tablet', 'NAME' => Loc::getMessage('BLOCK_EDITOR_PREVIEW_MODE_TABLET'), 'WIDTH' => 768, 'HEIGHT' => 1024),
array('CLASS' => 'desktop', 'NAME' => Loc::getMessage('BLOCK_EDITOR_PREVIEW_MODE_DESKTOP'), 'WIDTH' => 1024, 'HEIGHT' => 768),
);
$this->tabs = array(
'edit' => array('NAME' => Loc::getMessage('BLOCK_EDITOR_TABS_EDIT'), 'ACTIVE' => true),
'preview' => array('NAME' => Loc::getMessage('BLOCK_EDITOR_TABS_PREVIEW'), 'ACTIVE' => false),
//'get-html' => array('NAME' => Loc::getMessage('BLOCK_EDITOR_TABS_HTML'), 'ACTIVE' => false),
);
}
/**
* Set custom blocks
*
* @param array $blocks
* @return void
*/
public function setBlockList(array $blocks)
{
$this->blocks = $blocks;
if(!is_array($this->blocks))
{
$this->blocks = array();
}
foreach($this->blocks as $key => $block)
{
if(!isset($block['TYPE']))
{
$block['TYPE'] = $block['CODE'];
}
$block['IS_COMPONENT'] = false;
$block['CLASS'] = $block['CODE'];
$this->blocks[$key] = $block;
}
$componentsNotAsBlocks = array();
if (!$this->useLightTextEditor)
{
$componentList = $this->getComponentList();
foreach($componentList as $component)
{
if(!isset($this->componentsAsBlocks[$component['NAME']]))
{
$componentsNotAsBlocks[] = array(
'TYPE' => 'component',
'IS_COMPONENT' => true,
'CODE' => $component['NAME'],
'NAME' => $component['TITLE'],
'DESC' => $component['TITLE'] . ".\n" . $component['DESCRIPTION'],
'HTML' => ''
);
}
else
{
$interfaceName = $this->componentsAsBlocks[$component['NAME']]['NAME'];
$this->blocks[] = array(
'TYPE' => 'component',
'IS_COMPONENT' => false,
'CODE' => $component['NAME'],
'NAME' => $interfaceName ? $interfaceName : $component['TITLE'],
'DESC' => $component['DESCRIPTION'],
'HTML' => ''
);
}
}
}
$this->blocks = array_merge($this->blocks, $componentsNotAsBlocks);
}
/**
* Set custom tools
*
* @param array $tools
* @return void
*/
public function setToolList(array $tools)
{
$this->tools = $tools;
}
/**
* Return list of default blocks
*
* @return array
*/
public function getDefaultBlockList()
{
return array(
array(
'CODE' => 'text',
'NAME' => Loc::getMessage('BLOCK_EDITOR_BLOCK_TEXT_NAME'),
'DESC' => Loc::getMessage('BLOCK_EDITOR_BLOCK_TEXT_DESC'),
'HTML' => Loc::getMessage('BLOCK_EDITOR_BLOCK_TEXT_EXAMPLE')
),
);
}
/**
* Return true if can use Russian services.
*
* @return bool
*/
public static function isAvailableRussian()
{
if (!Loader::includeModule('bitrix24'))
{
return true;
}
return in_array(\CBitrix24::getPortalZone(), array('ru', 'kz', 'by'));
}
/**
* Return list of default tools, uses for block changing
*
* @return array
*/
public function getDefaultToolList()
{
$isUserHavePhpAccess = $this->isUserHavePhpAccess;
$useLightTextEditor = $this->useLightTextEditor;
$resultList = array();
$resultList[] = array(
'GROUP' => 'cont',
'ID' => 'html-raw',
'NAME' => Loc::getMessage('BLOCK_EDITOR_TOOL_HTML_RAW'),
'HTML' => '',
);
$resultList[] = array(
'GROUP' => 'cont',
'ID' => 'src',
'NAME' => Loc::getMessage('BLOCK_EDITOR_TOOL_SRC'),
'HTML' => ' '
. \Bitrix\Main\UI\FileInput::createInstance((array(
"id" => "BX_BLOCK_EDITOR_SRC_" . $this->id,
"name" => "NEW_FILE_EDITOR[n#IND#]",
"upload" => true,
"medialib" => true,
"fileDialog" => true,
"cloud" => true
)))->show()
);
$resultList[] = array(
'GROUP' => 'cont',
'ID' => 'title',
'NAME' => Loc::getMessage('BLOCK_EDITOR_TOOL_TITLE'),
'HTML' => Tools::getControlInput(),
);
$resultList[] = array(
'GROUP' => 'cont',
'ID' => 'href',
'NAME' => Loc::getMessage('BLOCK_EDITOR_TOOL_HREF'),
'HTML' => Tools::getControlInput(),
);
\Bitrix\Main\Loader::includeModule('fileman');
ob_start();
?>
Fatal error : Uncaught Error: Class "Loc" not found in D:\ktt\ttepla.com\public_html\bitrix\modules\fileman\lib\block\editor.php:421
Stack trace:
#0 {main}
thrown in D:\ktt\ttepla.com\public_html\bitrix\modules\fileman\lib\block\editor.php on line 421