public function registerAssets()
{
$am = Yii::app()->getAssetManager();
$cs = Yii::app()->getClientScript();
$form = yii::app()->editable->form;
$mode = $this->mode ? $this->mode : yii::app()->editable->defaults['mode'];
// YII bootstrap
if ($form === EditableConfig::FORM_YII_BOOTSTRAP) {
$assetsUrl = $am->publish(Yii::getPathOfAlias('editable.assets.bootstrap-editable'));
$js = 'bootstrap-editable.js';
$css = 'bootstrap-editable.css';
// bootstrap
} elseif ($form === EditableConfig::FORM_BOOTSTRAP) {
if ($bootstrap = yii::app()->getComponent('bootstrap')) {
$bootstrap->registerCoreCss();
$bootstrap->registerCoreScripts();
} else {
throw new CException('You need to setup Yii-bootstrap extension first.');
}
$assetsUrl = $am->publish(Yii::getPathOfAlias('editable.assets.bootstrap-editable'));
$js = 'bootstrap-editable.js';
$css = 'bootstrap-editable.css';
// jqueryui
} elseif ($form === EditableConfig::FORM_JQUERYUI) {
if ($mode === EditableConfig::POPUP && Yii::getVersion() < '1.1.13') {
throw new CException('jQuery UI editable popup supported from Yii 1.1.13+');
}
//register jquery ui
$this->registerJQueryUI();
$assetsUrl = $am->publish(Yii::getPathOfAlias('editable.assets.jqueryui-editable'));
$js = 'jqueryui-editable.js';
$css = 'jqueryui-editable.css';
// plain jQuery
} else {
$assetsUrl = $am->publish(Yii::getPathOfAlias('editable.assets.jquery-editable'));
$js = 'jquery-editable-poshytip.js';
$css = 'jquery-editable.css';
//publish & register poshytip for popup version
if ($mode === EditableConfig::POPUP) {
$poshytipUrl = $am->publish(Yii::getPathOfAlias('editable.assets.poshytip'));
$cs->registerScriptFile($poshytipUrl . '/jquery.poshytip.js');
$cs->registerCssFile($poshytipUrl . '/tip-yellowsimple/tip-yellowsimple.css');
}
//register jquery ui for datepicker
if ($this->type == 'date' || $this->type == 'dateui') {
$this->registerJQueryUI();
}
}
//register assets
$cs->registerCssFile($assetsUrl . '/css/' . $css);
$cs->registerScriptFile($assetsUrl . '/js/' . $js, CClientScript::POS_END);
//include moment.js for combodate
if ($this->type == 'combodate') {
$momentUrl = $am->publish(Yii::getPathOfAlias('editable.assets.moment'));
$cs->registerScriptFile($momentUrl . '/moment.min.js');
}
//include select2 lib for select2 type
if ($this->type == 'select2') {
$select2Url = $am->publish(Yii::getPathOfAlias('editable.assets.select2'));
$cs->registerScriptFile($select2Url . '/select2.min.js');
$cs->registerCssFile($select2Url . '/select2.css');
}
//include bootstrap-datetimepicker
if ($this->type == 'datetime') {
$url = $am->publish(Yii::getPathOfAlias('editable.assets.bootstrap-datetimepicker'));
$cs->registerScriptFile($url . '/js/bootstrap-datetimepicker.js');
$cs->registerCssFile($url . '/css/datetimepicker.css');
}
//TODO: include locale for datepicker
//may be do it manually?
/*
if ($this->type == 'date' && $this->language && substr($this->language, 0, 2) != 'en') {
//todo: check compare dp locale name with yii's
$localesUrl = Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('ext.editable.assets.js.locales'));
Yii::app()->clientScript->registerScriptFile($localesUrl . '/bootstrap-datepicker.'. str_replace('_', '-', $this->language).'.js', CClientScript::POS_END);
}
*/
}