/** * @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; }