mirror of
https://github.com/YunoHost-Apps/limesurvey_ynh.git
synced 2024-09-03 19:36:32 +02:00
97 lines
2.6 KiB
PHP
97 lines
2.6 KiB
PHP
<?php
|
|
/**
|
|
* TbHtml5Editor widget
|
|
*
|
|
* Implements the bootstrap-wysihtml5 editor
|
|
*
|
|
* @see https://github.com/jhollingworth/bootstrap-wysihtml5
|
|
*
|
|
* @author: antonio ramirez <antonio@clevertech.biz>
|
|
* @copyright Copyright © Clevertech 2012-
|
|
* @license http://www.opensource.org/licenses/bsd-license.php New BSD License
|
|
* @package YiiBooster bootstrap.widgets
|
|
*/
|
|
class TbHtml5Editor extends CInputWidget
|
|
{
|
|
/**
|
|
* Editor language
|
|
* Supports: de-DE, es-ES, fr-FR, pt-BR, sv-SE
|
|
*/
|
|
public $lang = 'en';
|
|
/**
|
|
* Html options that will be assigned to the text area
|
|
*/
|
|
public $htmlOptions = array();
|
|
/**
|
|
* Editor options that will be passed to the editor
|
|
*/
|
|
public $editorOptions = array();
|
|
|
|
/**
|
|
* Editor width
|
|
*/
|
|
public $width = '100%';
|
|
/**
|
|
* Editor height
|
|
*/
|
|
public $height = '400px';
|
|
|
|
/**
|
|
* Display editor
|
|
*/
|
|
public function run()
|
|
{
|
|
|
|
list($name, $id) = $this->resolveNameID();
|
|
|
|
$this->registerClientScript($id);
|
|
|
|
$this->htmlOptions['id'] = $id;
|
|
|
|
if (!array_key_exists('style', $this->htmlOptions))
|
|
{
|
|
$this->htmlOptions['style'] = "width:{$this->width};height:{$this->height};";
|
|
}
|
|
// Do we have a model?
|
|
if ($this->hasModel())
|
|
{
|
|
$html = CHtml::activeTextArea($this->model, $this->attribute, $this->htmlOptions);
|
|
} else
|
|
{
|
|
$html = CHtml::textArea($name, $this->value, $this->htmlOptions);
|
|
}
|
|
echo $html;
|
|
}
|
|
|
|
/**
|
|
* Register required script files
|
|
* @param $id
|
|
*/
|
|
public function registerClientScript($id)
|
|
{
|
|
Yii::app()->bootstrap->registerAssetCss('bootstrap-wysihtml5.css');
|
|
Yii::app()->bootstrap->registerAssetJs('wysihtml5-0.3.0.js');
|
|
Yii::app()->bootstrap->registerAssetJs('bootstrap-wysihtml5.js');
|
|
|
|
if(isset($this->editorOptions['locale']))
|
|
{
|
|
Yii::app()->bootstrap->registerAssetJs('locales/bootstrap-wysihtml5.'.$this->editorOptions['locale'].'.js');
|
|
}
|
|
elseif(in_array($this->lang, array('de-DE','es-ES','fr','fr-NL','pt-BR','sv-SE')))
|
|
{
|
|
Yii::app()->bootstrap->registerAssetJs('locales/bootstrap-wysihtml5.'.$this->lang.'.js');
|
|
$this->editorOptions['locale'] = $this->lang;
|
|
}
|
|
if(isset($this->editorOptions['stylesheets']) && is_array($this->editorOptions['stylesheets']))
|
|
{
|
|
$this->editorOptions['stylesheets'][] = Yii::app()->bootstrap->getAssetsUrl() . '/css/wysiwyg-color.css';
|
|
}
|
|
else
|
|
{
|
|
$this->editorOptions['stylesheets'] = array($this->editorOptions['stylesheets'][] = Yii::app()->bootstrap->getAssetsUrl() . '/css/wysiwyg-color.css');
|
|
}
|
|
$options = CJSON::encode($this->editorOptions);
|
|
|
|
Yii::app()->getClientScript()->registerScript(__CLASS__.'#'.$id, "$('#{$id}').wysihtml5({$options});");
|
|
}
|
|
}
|