Exemple #1
0
    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);
        }
    }