예제 #1
0
 public function actions()
 {
     $formSettings = array('redirect' => $this->createUrl('admin'), 'forms' => array('id' => 'mainForm', 'varName' => 'contentPage', 'models' => 'ContentPage', 'forms' => array('id' => 'blocsForm', 'blocs' => 'content', 'varName' => 'blocs'), 'onAfterSetAttributes' => function ($event) {
         if (Yii::app()->user->id != 'Admin-1' && isset($this->module->layouts)) {
             $model = $event->params['model'];
             if ($model->layout == '') {
                 foreach ($this->module->layouts as $layoutName => $layoutTitle) {
                     $model->layout = $layoutName;
                     break;
                 }
             }
         }
     }, 'onBeforeSave' => function ($event) {
         $model = $event->params['model'];
         if ($model->isNewRecord) {
             $alias = new CmsAlias();
             foreach (Yii::app()->languageManager->languages as $language => $fullLanguage) {
                 if ($language === Yii::app()->sourceLanguage) {
                     $suffix = '';
                 } else {
                     $suffix = '_' . $language;
                 }
                 $alias->{'alias' . $suffix} = AdminHelper::generateUrlStr($model->{'title' . $suffix}, $alias, 'alias', null, $language);
                 $alias->{'title' . $suffix} = $model->{'title' . $suffix};
             }
             $alias->section_id = CmsSection::model()->findByAttributes(array('module' => 'content'))->id;
             $alias->allow_children = 1;
             $alias->attributes = $_POST['CmsAlias'];
             $root = CmsAlias::model()->roots()->find();
             $alias->appendTo($root);
             $aliasRoute = new CmsAliasRoute();
             $aliasRoute->route = 'content';
             $aliasRoute->alias_id = $alias->primaryKey;
             $aliasRoute->save();
             $model->alias_id = $alias->primaryKey;
         } else {
             $alias = CmsAlias::model()->multilang()->findByPk($model->alias->id);
             $alias->attributes = $_POST['CmsAlias'];
             foreach (Yii::app()->languageManager->languages as $language => $fullLanguage) {
                 if ($language === Yii::app()->sourceLanguage) {
                     $suffix = '';
                 } else {
                     $suffix = '_' . $language;
                 }
                 $alias->{'alias' . $suffix} = AdminHelper::generateUrlStr($model->{'title' . $suffix}, $alias, 'alias', $alias->id, $language);
                 $alias->{'title' . $suffix} = $model->{'title' . $suffix};
             }
         }
         if ($alias->location != 'nochange') {
             $decode = CJSON::decode($_POST['CmsAlias']['location']);
             $to = CmsAlias::model()->findByPk((int) $decode['to']);
             $action = $decode['action'];
             switch ($action) {
                 case 'child':
                     $alias->moveAsLast($to);
                     break;
                 case 'before':
                     if ($to->isRoot()) {
                         $alias->moveAsRoot();
                     } else {
                         $alias->moveBefore($to);
                     }
                     break;
                 case 'after':
                     if ($to->isRoot()) {
                         $alias->moveAsRoot();
                     } else {
                         $alias->moveAfter($to);
                     }
                     break;
             }
         } else {
             $alias->saveNode();
         }
     }));
     return array('create' => array('class' => 'application.components.actions.Create', 'formSettings' => $formSettings), 'update' => array('class' => 'application.components.actions.Update', 'formSettings' => $formSettings), 'delete' => array('class' => 'application.components.actions.Delete', 'modelClass' => 'ContentPage'), 'admin' => array('class' => 'application.components.actions.Admin', 'modelClass' => 'ContentPage'));
 }