public function getTranslation($languageId = null) { /* @var $modelClass ActiveRecordInterface */ /* @var $language ActiveRecordInterface */ /* @var $translation ActiveRecordInterface */ $modelClass = $this->translationClass; if (!empty($languageId)) { $language = Language::findOne($languageId); if ($language) { $translation = $modelClass::findOne(['language_id' => $language->getPrimaryKey(), $this->relationColumn => $this->owner->getPrimaryKey()]); return $translation; } } $language = Language::findOne(['lang_id' => Yii::$app->language]); // try to find translation on current language $translation = $modelClass::findOne(['language_id' => $language->getPrimaryKey(), $this->relationColumn => $this->owner->getPrimaryKey()]); if (!$translation) { // get default language $language = Language::findOne(['default' => true]); // try to find translation on default language $translation = $modelClass::findOne(['language_id' => $language->getPrimaryKey(), $this->relationColumn => $this->owner->getPrimaryKey()]); if (!$translation) { // find any translation $translation = $modelClass::findOne([$this->relationColumn => $this->owner->getPrimaryKey()]); } } return $translation; }
/** * Creates a new DeliveryMethod model. * If creation is successful, the browser will be redirected to the 'view' page. * @param integer $id * @param integer $languageId * @return mixed * @throws NotFoundHttpException * @throws BadRequestHttpException */ public function actionSave($id = null, $languageId) { if (!empty($languageId)) { if (!empty($id)) { $model = $this->findModel($id); if (empty($model)) { throw new NotFoundHttpException(); } $modelTranslation = $this->findModelTranslation($id, $languageId); if (empty($modelTranslation)) { $modelTranslation = new ProductAvailabilityTranslation(); } } else { $model = new ProductAvailability(); $modelTranslation = new ProductAvailabilityTranslation(); } } else { throw new BadRequestHttpException(); } if ($modelTranslation->load(Yii::$app->request->post())) { $model->save(false); $modelTranslation->availability_id = $model->id; $modelTranslation->language_id = $languageId; if ($modelTranslation->validate()) { $modelTranslation->save(); return $this->redirect(['save', 'id' => $model->id, 'languageId' => $languageId]); } } return $this->render('save', ['model' => $model, 'modelTranslation' => $modelTranslation, 'languages' => Language::find()->all(), 'selectedLanguage' => Language::findOne($languageId)]); }
public function actionSave($id = null, $languageId = null) { $selectedLanguage = Language::findOne($languageId); if (!empty($id)) { $country = ProductCountry::find()->where(['id' => $id])->one(); $countryTranslation = ProductCountryTranslation::find()->where(['country_id' => $id, 'language_id' => $languageId])->one(); if (empty($countryTranslation)) { $countryTranslation = new ProductCountryTranslation(); } } else { $country = new ProductCountry(); $countryTranslation = new ProductCountryTranslation(); } if (\Yii::$app->request->isPost) { $country->load(\Yii::$app->request->post()); $countryTranslation->load(\Yii::$app->request->post()); if ($countryTranslation->validate()) { $country->save(); $countryTranslation->country_id = $country->id; $countryTranslation->language_id = $selectedLanguage->id; $countryTranslation->save(); return $this->redirect(Url::toRoute('/shop/country')); } } return $this->render('save', ['country' => $country, 'countryTranslation' => $countryTranslation, 'languages' => Language::findAll(['active' => true]), 'selectedLanguage' => $selectedLanguage]); }
public function actionSave($languageId = null, $categoryId = null) { if (!empty($categoryId)) { $category = Category::findOne($categoryId); $category_translation = CategoryTranslation::find()->where(['category_id' => $categoryId, 'language_id' => $languageId])->one(); if (empty($category_translation)) { $category_translation = new CategoryTranslation(); } } else { $category = new Category(); $category_translation = new CategoryTranslation(); } if (Yii::$app->request->isPost) { $category->load(Yii::$app->request->post()); $category_translation->load(Yii::$app->request->post()); if ($category->validate() && $category_translation->validate()) { $category->save(); $category_translation->category_id = $category->id; $category_translation->language_id = $languageId; $category_translation->save(); Yii::$app->getSession()->setFlash('success', 'Data were successfully modified.'); return $this->redirect(Url::toRoute('/articles/category')); } else { Yii::$app->getSession()->setFlash('danger', 'Failed to change the record.'); } } return $this->render('edit', ['category' => $category, 'category_translation' => $category_translation, 'categories' => Category::find()->with('translations')->all(), 'selectedLanguage' => Language::findOne($languageId), 'languages' => Language::findAll(['active' => true])]); }
public function actionAddBasic($articleId, $languageId) { if (!empty($articleId)) { $article = Article::findOne($articleId); $article_translation = ArticleTranslation::find()->where(['article_id' => $articleId, 'language_id' => $languageId])->one(); if (empty($article_translation)) { $article_translation = new ArticleTranslation(); } } else { $article = new Article(); $article_translation = new ArticleTranslation(); } if (Yii::$app->request->isPost) { $article->load(Yii::$app->request->post()); $article_translation->load(Yii::$app->request->post()); if ($article->validate() && $article_translation->validate()) { $article->save(); $article_translation->article_id = $article->id; $article_translation->language_id = $languageId; $article_translation->save(); Yii::$app->getSession()->setFlash('success', 'Data were successfully modified.'); } else { Yii::$app->getSession()->setFlash('danger', 'Failed to change the record.'); } } if (\Yii::$app->request->isPjax) { return $this->renderPartial('add-basic', ['article' => $article, 'article_translation' => $article_translation, 'categories' => Category::find()->with('translations')->all(), 'selectedLanguage' => Language::findOne($languageId), 'languages' => Language::findAll(['active' => true])]); } else { return $this->render('save', ['article' => $article, 'languageId' => $languageId, 'viewName' => 'add-basic', 'params' => ['article' => $article, 'article_translation' => $article_translation, 'categories' => Category::find()->with('translations')->all(), 'selectedLanguage' => Language::findOne($languageId), 'languages' => Language::findAll(['active' => true])]]); } }
public function actionEdit($categoryId = null, $languageId = null) { if (Yii::$app->request->isPost) { $source_message = SourceMessage::find()->where(['id' => Yii::$app->request->post("SourceMessage")['id']])->one(); $message_language = Yii::$app->request->post("Message"); $source_message->load(Yii::$app->request->post()); $source_message->save(); if (!empty($message_language['language'])) { $message = Message::find()->where(['id' => $source_message->id, 'language' => $message_language['language']])->one(); if (empty($message)) { $message = new Message(); } $message->load(Yii::$app->request->post()); $message->id = $source_message->id; $message->save(); } return $this->redirect(Url::toRoute(['/translation/message', 'categoryId' => $source_message->id, 'languageId' => Language::find()->where(['lang_id' => $message->language])->one()->id])); } else { $language = Language::findOne($languageId); $category = SourceMessage::find()->where(['id' => $categoryId])->one(); if ($language->lang_id != Yii::$app->sourceLanguage) { $message = Message::find()->where(['id' => $category->id, 'language' => $language->lang_id])->one(); if (empty($message)) { $message = new Message(); } return $this->render('source-message/edit', ['source_message' => $category, 'message' => $message, 'categories' => SourceMessage::find()->all(), 'languages' => Language::find()->all(), 'language' => $language]); } else { return $this->render('message/edit', ['model' => $category, 'language' => $language]); } } }
public static function findOrDefault($languageId) { if (empty($languageId) || !($language = Language::findOne($languageId))) { $language = Language::find()->where(['lang_id' => \Yii::$app->sourceLanguage])->one(); } return $language; }
public function run($id = null, $langId = null) { /* @var GalleryImage $image */ /* @var GalleryImageTranslation $imageTranslation */ $language = $langId == null ? Language::getDefault() : Language::findOne($langId); if (empty($id)) { $image = new GalleryImage(); $image->show = true; $imageTranslation = new GalleryImageTranslation(); } else { $image = GalleryImage::findOne($id); if (empty($image)) { return $this->controller->redirect('/gallery/album/list'); } $imageTranslation = $image->getTranslation($language->id); if (empty($imageTranslation)) { $imageTranslation = new GalleryImageTranslation(); } } if (Yii::$app->request->isPost) { $post = Yii::$app->request->post(); if ($image->load($post) && $imageTranslation->load($post)) { $image->image_file = UploadedFile::getInstance($image, 'image_file'); if (!empty($image->image_file)) { try { // save image $fileName = $this->generateFileName($image->image_file->baseName); // die(\Imagick::getVersion()); $imagine = new Imagine(); $imagine->open($image->image_file->tempName)->save(Yii::getAlias($this->controller->module->imagesPath . '/' . $fileName . '-original.jpg'))->thumbnail(new Box(400, 400), ImageInterface::THUMBNAIL_OUTBOUND)->save(Yii::getAlias($this->controller->module->imagesPath . '/' . $fileName . '-thumb.jpg')); $image->file_name = $fileName; } catch (\Exception $ex) { $image->addError('image_file', 'File save failed'); } } if ($image->validate() && $imageTranslation->validate()) { $image->save(); $imageTranslation->image_id = $image->id; $imageTranslation->language_id = $language->id; $imageTranslation->save(); $this->controller->redirect(['edit', 'id' => $image->id, 'langId' => $language->id]); } } } return $this->controller->render('create-edit', ['image' => $image, 'imageTranslation' => $imageTranslation, 'currentLanguage' => $language]); }
public function actionSwitchShow() { $id = \Yii::$app->request->get(); if (!empty($id) && isset($id)) { $item = Language::findOne($id); if ($item) { $show = $item->show; if ($show == 1) { $show = 0; } else { $show = 1; } $item->show = $show; $item->save(); } else { return $this->render('/site/error', ['message' => 'Error', 'errors' => 'Language is not found']); } } $this->redirect(['/languages']); }
/** * @param string $page_key * @param integer $languageId * @return mixed * @throws BadRequestHttpException * @throws BadRequestHttpException */ public function actionSavePage($page_key = null, $languageId = null) { $selected_language = !empty($languageId) ? Language::findOne($languageId) : Language::findOne(['lang_id' => Yii::$app->language]); if (!empty($selected_language)) { if (!empty($page_key)) { $static_page = StaticPage::findOne($page_key); if (!empty($static_page)) { $static_page_translation = StaticPageTranslation::find()->where(['page_key' => $page_key, 'language_id' => $selected_language->id])->one(); if (empty($static_page_translation)) { $static_page_translation = new StaticPageTranslation(); $static_page_translation->page_key = $static_page->key; } } else { throw new BadRequestHttpException('Such static page doesn\'t exist. You can\'t add translation.'); } } else { $static_page = new StaticPage(); $static_page_translation = new StaticPageTranslation(); } if (Yii::$app->request->isPost) { if ($static_page_translation->load(Yii::$app->request->post())) { if (empty($static_page->key)) { $static_page->key = $static_page_translation->page_key; if ($static_page->validate()) { $static_page->save(); } else { throw new BadRequestHttpException('Sorry, such static page already exist.'); } } $static_page_translation->language_id = $selected_language->id; $static_page_translation->save(); } } return $this->render('save-page', ['static_page' => $static_page, 'static_page_translation' => $static_page_translation, 'staticPage' => StaticPage::find()->all(), 'selectedLanguage' => $selected_language, 'languages' => Language::findAll(['active' => true])]); } else { throw new BadRequestHttpException('You can\'t add this static page translation, because such language doesn\'t exist'); } }
/** * Creates a URL according to the given route and parameters. * @param UrlManager $manager the URL manager * @param string $route the route. It should not have slashes at the beginning or the end. * @param array $params the parameters * @return string|boolean the created URL, or false if this rule cannot be used for creating this URL. */ public function createUrl($manager, $route, $params) { $pathInfo = ''; if ($route == $this->categoryRoute && empty($params['id'])) { $pathInfo = $this->prefix; } else { if (($route == $this->productRoute || $route == $this->categoryRoute) && !empty($params['id'])) { $id = $params['id']; $parentId = null; $language = Language::findOne(['lang_id' => $manager->language]); if ($route == $this->productRoute) { $product = Product::findOne($id); if (empty($product)) { return false; } if ($product->getTranslation($language->id) && $product->getTranslation($language->id)->seoUrl) { $pathInfo = $product->getTranslation($language->id)->seoUrl; $parentId = $product->category_id; } else { return false; } } else { if ($route == $this->categoryRoute) { $category = Category::findOne($id); if ($category->getTranslation($language->id) && $category->getTranslation($language->id)->seoUrl) { $pathInfo = $category->getTranslation($language->id)->seoUrl; $parentId = $category->parent_id; } else { return false; } } } while ($parentId != null) { $category = Category::findOne($parentId); if ($category->getTranslation($language->id) && $category->getTranslation($language->id)->seoUrl) { $pathInfo = $category->getTranslation($language->id)->seoUrl . '/' . $pathInfo; $parentId = $category->parent_id; } else { return false; } } if (!empty($this->prefix)) { $pathInfo = $this->prefix . '/' . $pathInfo; } unset($params['id']); } else { return false; } } return $pathInfo . '?' . http_build_query($params); }
/** * Creates a URL according to the given route and parameters. * @param UrlManager $manager the URL manager * @param string $route the route. It should not have slashes at the beginning or the end. * @param array $params the parameters * @return string|boolean the created URL, or false if this rule cannot be used for creating this URL. */ public function createUrl($manager, $route, $params) { if (($route == $this->articleRoute || $route == $this->categoryRoute) && !empty($params['id'])) { $id = $params['id']; $pathInfo = ''; $parentId = null; $language = Language::findOne(['lang_id' => $manager->language]); if ($route == $this->articleRoute) { $article = Article::findOne($id); if ($article->getTranslation($language->id) && $article->getTranslation($language->id)->seoUrl) { $pathInfo = $article->getTranslation($language->id)->seoUrl; $parentId = $article->category_id; } else { return false; } } else { if ($route == $this->categoryRoute) { $category = Category::findOne($id); if ($category->getTranslation($language->id) && $category->getTranslation($language->id)->seoUrl) { $pathInfo = $category->getTranslation($language->id)->seoUrl; $parentId = $category->parent_id; } else { return false; } } } while ($parentId != null) { $category = Category::findOne($parentId); if ($category->getTranslation($language->id) && $category->getTranslation($language->id)->seoUrl) { $pathInfo = $category->getTranslation($language->id)->seoUrl . '/' . $pathInfo; $parentId = $category->parent_id; } else { return false; } } if (!empty($this->prefix)) { $pathInfo = $this->prefix . $pathInfo; } return $pathInfo; } return false; }
/** * @param integer $attrId * @param integer $languageId * @return mixed * @throws Exception */ public function actionAddValue($attrId, $languageId) { if (!empty($attrId)) { $languageId = empty($languageId) ? Language::getCurrent()->id : $languageId; $model = new ShopAttributeValue(); $modelTranslation = new ShopAttributeValueTranslation(); $attributeTextureModel = new AttributeTextureForm(); if (Yii::$app->request->post()) { if ($modelTranslation->load(Yii::$app->request->post())) { $model->attribute_id = $attrId; if (ShopAttribute::findOne($attrId)->type_id == 3 || ShopAttribute::findOne($attrId)->type_id == 4) { $colorTexture = new ShopAttributeValueColorTexture(); if (ShopAttribute::findOne($attrId)->type_id == 3) { if ($attributeTextureModel->load(Yii::$app->request->post())) { $colorTexture->color = $attributeTextureModel->color; } } elseif (ShopAttribute::findOne($attrId)->type_id == 4) { if ($attributeTextureModel->load(Yii::$app->request->post())) { $attributeTextureModel->imageFile = UploadedFile::getInstance($attributeTextureModel, 'imageFile'); $colorTexture->texture = $attributeTextureModel->upload(); } } $colorTexture->save(); $modelTranslation->value = $colorTexture->id; } if ($model->save()) { $modelTranslation->value_id = $model->id; $modelTranslation->language_id = $languageId; if ($modelTranslation->save()) { if (\Yii::$app->request->isPjax) { $searchAttributeValueModel = new SearchAttributeValue(); $dataProviderAttributeValue = $searchAttributeValueModel->search(Yii::$app->request->queryParams); return $this->renderPartial('add-value', ['dataProvider' => $dataProviderAttributeValue, 'attribute' => ShopAttribute::findOne($attrId), 'selectedLanguage' => Language::findOne($languageId), 'valueModel' => new ShopAttributeValue(), 'valueModelTranslation' => new ShopAttributeValueTranslation(), 'attributeTextureModel' => $attributeTextureModel]); } else { return $this->redirect(Url::toRoute(['save', 'attrId' => $attrId, 'languageId' => $languageId])); } } } else { throw new Exception($model->errors); } } } else { return $this->render(Url::toRoute(['add-value', 'attrId' => $attrId, 'languageId' => $languageId])); } } }
public function run() { $languages = Language::findAll(['active' => true]); $current = Language::findOne(['lang_id' => Yii::$app->language]); return $this->render('list', ['current' => $current, 'languages' => $languages]); }
/** * Selects product filters for category * * @param integer $id * @param integer $languageId * @param integer $categoryId * @return mixed * @throws Exception * @throws ForbiddenHttpException */ public function actionSelectFilters($id = null, $languageId = null, $categoryId = null) { if (!empty($categoryId)) { $category = Category::findOne($categoryId); $filters = Filter::find()->where(['category_id' => $category->id])->all(); $filter = !empty($id) ? Filter::findOne($id) : new Filter(); } else { throw new Exception('You can not add filter before saving category.'); } if (Yii::$app->request->isPost) { $filter->load(Yii::$app->request->post()); if ($filter->validate()) { $filter->category_id = $category->id; $filter->save(); Yii::$app->getSession()->setFlash('success', 'Data were successfully modified.'); return $this->redirect(Yii::$app->request->referrer); } } return $this->render('save', ['category' => $category, 'languageId' => $languageId, 'selectedLanguage' => Language::findOne($languageId), 'languages' => Language::findAll(['active' => true]), 'viewName' => 'select-filters', 'params' => ['category' => $category, 'filters' => $filters, 'newFilter' => new Filter(), 'languageId' => $languageId]]); }
/** * Users which have 'updateOwnProduct' permission can add price only for Product models that have been created by their. * Users which have 'updateProduct' permission can add price for all Product models. * * @param integer $id * @param integer $languageId * @return mixed * @throws ForbiddenHttpException */ public function actionAddPrice($id, $languageId) { if (\Yii::$app->user->can('updateProduct', ['productOwner' => Product::findOne($id)->owner])) { $price = new ProductPrice(); $priceTranslation = new ProductPriceTranslation(); $product = Product::findOne($id); $selectedLanguage = Language::findOne($languageId); if (\Yii::$app->request->isPost) { $post = \Yii::$app->request->post(); if ($price->load($post) && $priceTranslation->load($post)) { $price->product_id = $product->id; if ($price->save()) { $priceTranslation->price_id = $price->id; $priceTranslation->language_id = $selectedLanguage->id; if ($priceTranslation->save()) { $price = new ProductPrice(); $priceTranslation = new ProductPriceTranslation(); } } } } if (Yii::$app->request->isPjax) { return $this->renderPartial('add-price', ['priceList' => $product->prices, 'priceModel' => $price, 'priceTranslationModel' => $priceTranslation, 'product' => $product, 'languages' => Language::findAll(['active' => true]), 'language' => $selectedLanguage]); } return $this->render('save', ['viewName' => 'add-price', 'selectedLanguage' => Language::findOne($languageId), 'product' => $product, 'languages' => Language::find()->all(), 'params' => ['priceList' => $product->prices, 'priceModel' => $price, 'priceTranslationModel' => $priceTranslation, 'product' => $product, 'languages' => Language::findAll(['active' => true]), 'language' => $selectedLanguage]]); } else { throw new ForbiddenHttpException(\Yii::t('shop', 'You have not permission to do this action.')); } }
/** * Creates a URL according to the given route and parameters. * @param UrlManager $manager the URL manager * @param string $route the route. It should not have slashes at the beginning or the end. * @param array $params the parameters * @return string|boolean the created URL, or false if this rule cannot be used for creating this URL. */ public function createUrl($manager, $route, $params) { if ($route == $this->albumsRoute) { if (empty($params['id'])) { return $this->prefix; } else { $id = $params['id']; $language = Language::findOne(['lang_id' => $manager->language]); $album = GalleryAlbum::findOne($id); if ($album) { $translation = $album->getTranslation($language->id); if (!empty($translation)) { if (!empty($translation->seoUrl)) { return $this->prefix . '/' . $translation->seoUrl; } } } } } return false; }