public function showEditor()
{
$textArea = '';
$panels = '';
$tabs = '';
$blocks = '';
$tools = '';
$devices = '';
foreach(array_chunk($this->blocks, static::BLOCK_COUNT_PER_PAGE) as $blocksPerPage)
{
$blocksForPage = '';
foreach($blocksPerPage as $block)
{
$blocksForPage .= $this->getUI('block', array(
'type_class' => htmlspecialcharsbx($block['IS_COMPONENT'] ? 'component' : 'blockcomponent'),
'code_class' => htmlspecialcharsbx(str_replace(array(':', '.'), array('-', '-'), $block['CODE'])),
'type' => htmlspecialcharsbx($block['TYPE']),
'code' => htmlspecialcharsbx($block['CODE']),
'name' => htmlspecialcharsbx($block['NAME']),
'desc' => htmlspecialcharsbx($block['DESC']),
));
}
$blocks .= $this->getUI('block_page', array('blocks' => $blocksForPage));
}
foreach($this->tools as $tool)
{
$tools .= $this->getUI('tool', array(
'group' => htmlspecialcharsbx($tool['GROUP']),
'id' => htmlspecialcharsbx($tool['ID']),
'name' => htmlspecialcharsbx($tool['NAME']),
'html' => $tool['HTML'],
));
}
foreach($this->previewModes as $mode)
{
$devices .= $this->getUI('device', array(
'MESS_NAME' => mb_strtoupper(htmlspecialcharsbx($mode['NAME'])),
'class' => htmlspecialcharsbx($mode['CLASS']),
'width' => htmlspecialcharsbx($mode['WIDTH']),
'height' => htmlspecialcharsbx($mode['HEIGHT']),
));
}
if(!$this->ownResultId)
{
$this->ownResultId = 'bx-block-editor-result-' . htmlspecialcharsbx($this->id);
$textArea = '';
}
foreach($this->tabs as $tabCode => $tab)
{
if(!isset($this->uiPatterns['panel-' . $tabCode]))
{
continue;
}
$tabs .= $this->getUI('tab', array(
'code' => htmlspecialcharsbx($tabCode),
'name' => htmlspecialcharsbx($tab['NAME']),
'tab_active' => ($tab['ACTIVE'] ? $this->getUI('tab_active', array()) : '')
));
$panel = $this->getUI('panel-' . $tabCode, array(
'id' => htmlspecialcharsbx($this->id),
'blocks' => $blocks,
'tools' => $tools,
'devices' => $devices,
'nav-display' => count($this->blocks) <= static::BLOCK_COUNT_PER_PAGE ? 'bx-block-hide' : '',
'MESS_ACCESS_DENIED' => Loc::getMessage('ACCESS_DENIED'),
'MESS_STYLES' => Loc::getMessage('BLOCK_EDITOR_UI_STYLES'),
'MESS_BLOCKS' => Loc::getMessage('BLOCK_EDITOR_UI_BLOCKS'),
'MESS_TOOL_CONTENT' => Loc::getMessage('BLOCK_EDITOR_UI_TOOL_CONTENT'),
'MESS_TOOL_STYLES' => Loc::getMessage('BLOCK_EDITOR_UI_TOOL_STYLES'),
'MESS_TOOL_SETTINGS' => Loc::getMessage('BLOCK_EDITOR_UI_TOOL_SETTINGS'),
'MESS_TOOL_EMPTY' => Loc::getMessage('BLOCK_EDITOR_UI_TOOL_EMPTY'),
'MESS_TOOL_SAVE' => Loc::getMessage('BLOCK_EDITOR_UI_TOOL_SAVE'),
'MESS_TOOL_SAVE_TITLE' => Loc::getMessage('BLOCK_EDITOR_UI_TOOL_SAVE_TITLE'),
'MESS_TOOL_CANCEL' => Loc::getMessage('BLOCK_EDITOR_UI_TOOL_CANCEL'),
'MESS_TOOL_CANCEL_TITLE' => Loc::getMessage('BLOCK_EDITOR_UI_TOOL_CANCEL_TITLE'),
));
$panels .= $this->getUI('panel', array(
'code' => htmlspecialcharsbx($tabCode),
'panel_hidden' => (!$tab['ACTIVE'] ? $this->getUI('panel_hidden', array()) : ''),
'html' => $panel
));
}
return $this->getUI('main', array(
'TEXTAREA' => $textArea,
'id' => htmlspecialcharsbx($this->id),
'tabs' => $tabs,
'panels' => $panels,
'MESS_BTN_MAX' => Loc::getMessage('BLOCK_EDITOR_UI_BTN_MAX'),
'MESS_BTN_MIN' => Loc::getMessage('BLOCK_EDITOR_UI_BTN_MIN'),
'MESS_BTN_HTML_COPY' => Loc::getMessage('BLOCK_EDITOR_UI_BTN_HTML_COPY'),
));
}