Closed geminisf closed 4 years ago
Проблема в том, что в экшене \system\controllers\messages\actions\send.php прописано буквально так:
$is_textarea_editor = !$this->options['editor'] || $this->options['editor'] == 'markitup';
$content_html = cmsEventsManager::hook('html_filter', [
'text' => $content,
'is_auto_br' => $is_textarea_editor,
'build_smiles' => $is_textarea_editor
]);
То есть если в личных сообщениях выбран маркитап - в опциях прямо буквами будет написано markitup и смайлы будут. А вот если выбран какой-либо пресет, сделанный из маркитапа - в опциях будет цифра и никаких смайлов не будет. Возможное решение - получить имя редактора и проверять уже его:
$wysiwygs_preset = is_numeric($this->options['editor']) ? $this->controller_wysiwygs->getEditorParams($options = [$this->options['editor']]) : $this->options['editor'];
$is_textarea_editor = !$this->options['editor'] || $wysiwygs_preset == 'markitup';
$content_html = cmsEventsManager::hook('html_filter', [
'text' => $content,
'is_auto_br' => $is_textarea_editor,
'build_smiles' => $is_textarea_editor
]);
Используемая версия InstantCMS: 2.13.1
Версия PHP: 7.2.27
Как воспроизвести проблему:
Воспроизводится ли проблема на демо http://demo.instantcms.ru/: На демо сайте нет возможности отправлять личные сообщения.
Пока выявились следующие закономерности. Если в качестве редактора HTML в компоненте "Личные сообщения" выбрать не пресет, а просто "Markitup", то смайлы работают. Также смайлы работают в компоненте "Комментарии", даже если выбран пресет. Проверял на свежеустановленной локальной версии.