<?php
/**
* @package RSForm! Pro
* @copyright (C) 2007-2019 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/
defined('_JEXEC') or die;
use Joomla\CMS\Form\FormHelper;
use Joomla\CMS\Form\Field\TextareaField;
use Joomla\CMS\Editor\Editor;
use Joomla\CMS\Factory;
use Joomla\CMS\Plugin\PluginHelper;
FormHelper::loadFieldClass('textarea');
if (version_compare(JVERSION, '4.0', '<'))
{
JLoader::registerAlias('Joomla\\CMS\\Form\\Field\\TextareaField', 'JFormFieldTextarea');
}
class JFormFieldSyntaxhighlight extends TextareaField
{
protected function getInput()
{
$useEditor = RSFormProHelper::getConfig('global.codemirror');
$editor = 'codemirror';
if ($useEditor)
{
$plugin = PluginHelper::getPlugin('editors', $editor);
if (empty($plugin))
{
$useEditor = false;
}
elseif (!is_string($plugin->params) && is_callable(array($plugin->params, 'toString')))
{
$plugin->params = $plugin->params->toString();
}
}
if ($useEditor)
{
$syntax = !empty($this->element['syntax']) ? (string) $this->element['syntax'] : 'html';
$readonly = $this->readonly;
$instance = Editor::getInstance($editor);
// Inline PHP
if ($syntax === 'php')
{
Factory::getDocument()->addScriptDeclaration("window.addEventListener('load', function(){ RSFormPro.fixCodeMirror(" . json_encode($this->id) . "); });");
}
return $instance->display($this->name, $this->escape($this->value), '100%', 300, 75, 20, $buttons = false, $this->id, $asset = null, $author = null, array('syntax' => $syntax, 'readonly' => $readonly));
}
else
{
return parent::getInput();
}
}
protected function escape($string)
{
return htmlspecialchars((string) $string, ENT_COMPAT, 'utf-8');
}
}