You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
2.9 KiB
113 lines
2.9 KiB
<?php
|
|
/* For licensing terms, see /license.txt */
|
|
|
|
use Chamilo\CoreBundle\Framework\Container;
|
|
|
|
/**
|
|
* A html editor field to use with QuickForm.
|
|
*/
|
|
class HtmlEditor extends HTML_QuickForm_textarea
|
|
{
|
|
/** @var \Chamilo\CoreBundle\Component\Editor\Editor */
|
|
public $editor;
|
|
|
|
/**
|
|
* Full page.
|
|
*/
|
|
public $fullPage;
|
|
|
|
/**
|
|
* Class Constructor.
|
|
*
|
|
* @param string $name
|
|
* @param string $elementLabel HTML editor label
|
|
* @param array $attributes Attributes for the textarea
|
|
* @param array $config optional configuration settings for the online editor
|
|
*/
|
|
public function __construct(
|
|
$name = null,
|
|
$elementLabel = null,
|
|
$attributes = [],
|
|
$config = []
|
|
) {
|
|
if (empty($name)) {
|
|
throw new Exception('The html editor needs a name');
|
|
}
|
|
|
|
parent::__construct($name, $elementLabel, $attributes);
|
|
$this->_persistantFreeze = true;
|
|
$this->_type = 'html_editor';
|
|
|
|
$editor = Container::getHtmlEditor();
|
|
|
|
if ($editor) {
|
|
$this->editor = $editor;
|
|
$this->editor->setName($name);
|
|
$this->editor->processConfig($config);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Return the HTML editor in HTML.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function toHtml()
|
|
{
|
|
$value = Security::remove_XSS($this->getValue());
|
|
if ($this->editor) {
|
|
if ($this->editor->getConfigAttribute('fullPage')) {
|
|
if (strlen(trim($value)) == 0) {
|
|
// TODO: To be considered whether here to be added DOCTYPE,
|
|
// language and character set declarations.
|
|
$value = '<html><head><title></title></head><body></body></html>';
|
|
$this->setValue($value);
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($this->isFrozen()) {
|
|
return $this->getFrozenHtml();
|
|
} else {
|
|
$styleCss = $this->editor->getConfigAttribute('style');
|
|
if ($styleCss) {
|
|
$style = true;
|
|
} else {
|
|
$style = false;
|
|
}
|
|
|
|
return $this->buildEditor($style);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Returns the html area content in HTML.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getFrozenHtml()
|
|
{
|
|
return $this->getValue();
|
|
}
|
|
|
|
/**
|
|
* @param bool $style
|
|
*
|
|
* @return string
|
|
*/
|
|
public function buildEditor($style = false)
|
|
{
|
|
$result = '';
|
|
if ($this->editor) {
|
|
$this->editor->value = Security::remove_XSS($this->getValue());
|
|
$this->editor->setName($this->getName());
|
|
if ($style === true) {
|
|
$result = $this->editor->createHtmlStyle();
|
|
} else {
|
|
$result = $this->editor->createHtml();
|
|
}
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
}
|
|
|