*/ /** * Klasa stLanguageBackendActions * * @package stLanguagePlugin * @subpackage actions */ class stLanguageBackendActions extends autoStLanguageBackendActions { public function executePreview() { $language = LanguagePeer::retrieveByPK($this->getRequestParameter('id')); return $this->redirect(stRoutingHelper::generateApplicationUrl('@stLanguage_changeLanguage?lang='.$language->getShortcut(), 'frontend', $language->getShortcut())); } public function executeIndex() { return $this->redirect('stLanguageBackend/list', 301); } /** * Zmiana języka na angielski */ public function executeChangeLanguage() { $shortcut = $this->getRequest()->getParameter('name'); if (empty($shortcut)) { $shortcut = 'pl'; } $culture = stSimpleLanguageHelper::shortcutToCulture($shortcut); $this->getUser()->setCulture($culture); $configuration = stAdminGeneratorUserConfiguration::getDefault($this->getContext()); $configuration->setParameter('culture', $culture); $configuration->save(); return $this->redirect($this->getRequest()->getReferer()); } /** * Przeciążenie aktualizacji config'a */ protected function updateConfigFromRequest() { $config = $this->getRequestParameter('config'); $c = new Criteria(); $c->add(LanguagePeer::ID, $config['language_panel']); $language = LanguagePeer::doSelectOne($c); if (is_object($language)) { $language->setIsDefaultPanel(true); $language->save(); $this->getUser()->setCulture($language->getOriginalLanguage()); $config = stConfig::getInstance($this->getContext(), 'stLanguagePlugin'); $config->set('admin_language', $language->getOriginalLanguage()); $config->save(); } } public function executeRestoreDefaultTranslations() { $languageId = $this->getRequestParameter('language_id'); $language = LanguagePeer::retrieveByPK($languageId); $i18n = $this->getContext()->getI18N(); $language->restoreDefaultTranslations(); $this->setFlash('success', $i18n->__('Domyślne tłumaczenia przywrócone.')); return $this->redirect($this->getRequest()->getReferer()); } public function executeRestoreDefaultTranslation() { $catalogue = $this->getRequestParameter('catalogue'); $index = $this->getRequestParameter('index'); $languageId = $this->getRequestParameter('language_id'); $translation = LanguageTranslationPeer::retrieveByPK($catalogue, $index, $languageId); $translation->restore(); $translation->save(); $i18n = $this->getContext()->getI18N(); $this->setFlash('success', $i18n->__('Domyślne tłumaczenie przywrócone.')); return $this->redirect($this->getRequest()->getReferer()); } public function executeTranslationList() { parent::executeTranslationList(); if (!$this->related_object->hasUserTranslations()) { $this->hideAction('restore_default_translations'); } } /** * {@inheritDoc} */ protected function getTranslationLanguageTranslationOrCreate($catalogue = 'catalogue', $index = 'index', $language_id = 'language_id') { $translation = parent::getTranslationLanguageTranslationOrCreate($catalogue, $index, $language_id); if (!$translation->hasUserPhraseTranslation()) { $this->hideAction('restore_default_translation'); } return $translation; } protected function addTranslationCacheFiltersCriteria($c) { parent::addTranslationCacheFiltersCriteria($c); $c->add(TranslationCachePeer::LANGUAGE_ID, $this->related_object->getId()); } protected function filterCriteriaByLanguageCurrencyId(Criteria $criteria, $value): bool { if ('null' === $value) { $criteria->add(LanguagePeer::CURRENCY_ID, null, Criteria::ISNULL); return true; } return false; } protected function filterCriteriaByLanguageCountryId(Criteria $criteria, $value): bool { if ('null' === $value) { $criteria->add(LanguagePeer::COUNTRY_ID, null, Criteria::ISNULL); return true; } return false; } }