Esempio n. 1
0
 /**
  * @param Page $model
  * @param Menu[] $menus
  * @return bool
  */
 protected function saveModel($model, $menus)
 {
     $new = $model->isNewRecord;
     if ($model->load(Yii::$app->request->post())) {
         foreach (I18N::getAvailableLocalesList() as $language) {
             $modelI18n = $model->getTranslation($language);
             $modelI18n->load(Yii::$app->request->post());
             //Meta data
             if ($modelI18n->meta_data && isset($modelI18n->meta_data['name']) && isset($modelI18n->meta_data['value'])) {
                 $data = array_filter(array_combine($modelI18n->meta_data['name'], $modelI18n->meta_data['value']));
                 if ($data) {
                     ksort($data);
                     $modelI18n->meta_data = $data;
                 } else {
                     $modelI18n->meta_data = null;
                 }
             } else {
                 $modelI18n->meta_data = null;
             }
         }
         if ($model->validate()) {
             if (!$model->validateTranslations()) {
                 Yii::$app->session->addFlash('error', Yii::t('maddoger/website', 'You must create at least one translation.'));
                 return false;
             }
             if ($model->save()) {
                 if ($new) {
                     Yii::$app->session->remove('WEBSITE_PAGE_BACKUP_');
                 } else {
                     Yii::$app->session->remove('WEBSITE_PAGE_BACKUP_' . $model->id);
                 }
                 //Update menu items
                 $updateMenuItems = Yii::$app->request->post('menu-items-update');
                 foreach ($menus as $menu) {
                     if ($menu->isNewRecord) {
                         if (Yii::$app->request->post('menu-items-create')) {
                             $menu->page_id = $model->id;
                             $menu->parent_id = Yii::$app->request->post('menu-items-create-parent_id');
                             if (!$menu->parent_id) {
                                 continue;
                             }
                             $menu->type = Menu::TYPE_PAGE;
                             $menu->language = $menu->parent->language;
                             $menu->link = $model->getUrl($menu->language);
                             $menu->label = $model->getTranslation($menu->language)->title;
                             $menu->save();
                         }
                         continue;
                     }
                     $menu->link = $model->getUrl($menu->language);
                     if ($updateMenuItems && isset($updateMenuItems[$menu->id]) && $updateMenuItems[$menu->id]) {
                         $menu->label = $model->getTranslation($menu->language)->title;
                     }
                     $menu->save();
                 }
             }
             return true;
         }
     }
     return false;
 }