public function init() { parent::init(); //attach events from $this->eventMap foreach ($this->handlers() as $event=>$handler) $this->addHandler($event, $handler); //dataTypes register ModelFactory::registerDataTypes($this->dataTypes()); //register widets Y::resources()->registerWidgets($this->widgets()); //set assets path if (is_dir($path = Yii::getPathOfAlias($this->getId().'.assets'))) { $this->scriptPath = Yii::app()->getAssetManager()->publish($path); } }
public function actionCreate() { if (isset($_POST['newWidgets'])) { $widgets = array(); $transaction = Yii::app()->db->beginTransaction(); foreach ($_POST['newWidgets'] as $class) { $model = TemplateWidget::model(); $model->class = $class; $widgetName = $class.'Widget'; $model->settings = $widgetName::getDefaultSettings(); $widgets[] = $model; } //save all widgets in transaction try { foreach ($widgets as $model) if (!$model->save()) throw new CException('Sorry, adding widgets proved unsuccessful. Try again'); $transaction->commit(); } catch(Exception $e) { $transaction->rollBack(); Y::end(Admin::t($e->getMessage())); } //some output $content = Admin::link('', 'widgets/see', array('pk'=>$model->pk), array('class'=>'widget-preview')); $content.= Admin::link('', 'widgets/settings', array('pk'=>$model->pk), array('class'=>'widget-settings')); $content.= CHtml::tag('div', array(), $model->alias); $content.= Admin::link('x', 'widgets/delete', array('pk'=>$model->pk), array('class'=>'widget-delete')); echo CHtml::tag('li', array('class'=>'widget'), $content); } else { //make list of widgets $widgets = Y::resources()->registeredWidgets; $list = CHtml::listData($widgets, 'pk', 'title'); $this->renderPartial("/widgets/widgetChangeForm", array('widgets'=>$list, 'action'=>Admin::url('widgets/create')), false, true); } }