public function importTranslations() { foreach (Tool::getValidLanguages() as $lang) { $src = sprintf('%s/i18n/%s.csv', $this->baseDir, $lang); $csv = new \Csv_Reader($src, new \Csv_Dialect(['delimiter' => ',', 'quotechar' => '"'])); foreach ($csv as $row) { $t = Translation\Website::getByKey($row[0], true); $t->addTranslation($lang, $row[1]); $t->save(); } } }
public function translationsAction() { $admin = $this->getParam("admin"); if ($admin) { $class = "\\Pimcore\\Model\\Translation\\Admin"; $this->checkPermission("translations_admin"); } else { $class = "\\Pimcore\\Model\\Translation\\Website"; $this->checkPermission("translations"); } // clear translation cache Translation\Website::clearDependentCache(); if ($this->getParam("data")) { $data = \Zend_Json::decode($this->getParam("data")); if ($this->getParam("xaction") == "destroy") { $data = \Zend_Json::decode($this->getParam("data")); if (\Pimcore\Tool\Admin::isExtJS6()) { $t = $class::getByKey($data["key"]); } else { $t = $class::getByKey($data); } $t->delete(); $this->_helper->json(array("success" => true, "data" => array())); } else { if ($this->getParam("xaction") == "update") { $t = $class::getByKey($data["key"]); foreach ($data as $key => $value) { if ($key != "key") { $t->addTranslation($key, $value); } } if ($data["key"]) { $t->setKey($data["key"]); } $t->setModificationDate(time()); $t->save(); $return = array_merge(array("key" => $t->getKey(), "creationDate" => $t->getCreationDate(), "modificationDate" => $t->getModificationDate()), $t->getTranslations()); $this->_helper->json(array("data" => $return, "success" => true)); } else { if ($this->getParam("xaction") == "create") { try { $t = $class::getByKey($data["key"]); } catch (\Exception $e) { $t = new $class(); $t->setKey($data["key"]); $t->setCreationDate(time()); $t->setModificationDate(time()); foreach (Tool::getValidLanguages() as $lang) { $t->addTranslation($lang, ""); } $t->save(); } $return = array_merge(array("key" => $t->getKey(), "creationDate" => $t->getCreationDate(), "modificationDate" => $t->getModificationDate()), $t->getTranslations()); $this->_helper->json(array("data" => $return, "success" => true)); } } } } else { // get list of types if ($admin) { $list = new Translation\Admin\Listing(); } else { $list = new Translation\Website\Listing(); } $list->setOrder("asc"); $list->setOrderKey("key"); $sortingSettings = \Pimcore\Admin\Helper\QueryParams::extractSortingSettings($this->getAllParams()); if ($sortingSettings['orderKey']) { $list->setOrderKey($sortingSettings['orderKey']); } if ($sortingSettings['order']) { $list->setOrder($sortingSettings['order']); } $list->setLimit($this->getParam("limit")); $list->setOffset($this->getParam("start")); $condition = $this->getGridFilterCondition(); if ($condition) { $list->setCondition($condition); } $list->load(); $translations = array(); foreach ($list->getTranslations() as $t) { $translations[] = array_merge($t->getTranslations(), array("key" => $t->getKey(), "creationDate" => $t->getCreationDate(), "modificationDate" => $t->getModificationDate())); } $this->_helper->json(array("data" => $translations, "success" => true, "total" => $list->getTotalCount())); } }
public function getAvailableLanguagesAction() { if ($languages = Tool::getValidLanguages()) { $this->_helper->json($languages); } $t = new Model\Translation\Website(); $this->_helper->json($t->getAvailableLanguages()); }
public function translationsAction() { $admin = $this->getParam("admin"); if ($admin) { $class = "\\Pimcore\\Model\\Translation\\Admin"; $this->checkPermission("translations_admin"); } else { $class = "\\Pimcore\\Model\\Translation\\Website"; $this->checkPermission("translations"); } $tableName = call_user_func($class . "\\Dao::getTableName"); // clear translation cache Translation\Website::clearDependentCache(); if ($this->getParam("data")) { $data = \Zend_Json::decode($this->getParam("data")); if ($this->getParam("xaction") == "destroy") { $data = \Zend_Json::decode($this->getParam("data")); if (\Pimcore\Tool\Admin::isExtJS6()) { $t = $class::getByKey($data["key"]); } else { $t = $class::getByKey($data); } $t->delete(); $this->_helper->json(["success" => true, "data" => []]); } elseif ($this->getParam("xaction") == "update") { $t = $class::getByKey($data["key"]); foreach ($data as $key => $value) { if ($key != "key") { $t->addTranslation($key, $value); } } if ($data["key"]) { $t->setKey($data["key"]); } $t->setModificationDate(time()); $t->save(); $return = array_merge(["key" => $t->getKey(), "creationDate" => $t->getCreationDate(), "modificationDate" => $t->getModificationDate()], $t->getTranslations()); $this->_helper->json(["data" => $return, "success" => true]); } elseif ($this->getParam("xaction") == "create") { try { $t = $class::getByKey($data["key"]); } catch (\Exception $e) { $t = new $class(); $t->setKey($data["key"]); $t->setCreationDate(time()); $t->setModificationDate(time()); foreach (Tool::getValidLanguages() as $lang) { $t->addTranslation($lang, ""); } $t->save(); } $return = array_merge(["key" => $t->getKey(), "creationDate" => $t->getCreationDate(), "modificationDate" => $t->getModificationDate()], $t->getTranslations()); $this->_helper->json(["data" => $return, "success" => true]); } } else { // get list of types if ($admin) { $list = new Translation\Admin\Listing(); } else { $list = new Translation\Website\Listing(); } $validLanguages = $this->getUser()->getAllowedLanguagesForViewingWebsiteTranslations(); $list->setOrder("asc"); $list->setOrderKey($tableName . ".key", false); $sortingSettings = \Pimcore\Admin\Helper\QueryParams::extractSortingSettings($this->getAllParams()); $joins = []; if ($sortingSettings['orderKey']) { if (in_array($sortingSettings['orderKey'], $validLanguages)) { $joins[] = ["language" => $sortingSettings['orderKey']]; $list->setOrderKey($sortingSettings['orderKey']); } else { $list->setOrderKey($tableName . "." . $sortingSettings['orderKey'], false); } } if ($sortingSettings['order']) { $list->setOrder($sortingSettings['order']); } $list->setLimit($this->getParam("limit")); $list->setOffset($this->getParam("start")); $condition = $this->getGridFilterCondition($tableName); $filters = $this->getGridFilterCondition($tableName, true); if ($filters) { $joins = array_merge($joins, $filters["joins"]); } if ($condition) { $list->setCondition($condition); } $this->extendTranslationQuery($joins, $list, $tableName, $filters); $list->load(); $translations = []; foreach ($list->getTranslations() as $t) { $translations[] = array_merge($t->getTranslations(), ["key" => $t->getKey(), "creationDate" => $t->getCreationDate(), "modificationDate" => $t->getModificationDate()]); } $this->_helper->json(["data" => $translations, "success" => true, "total" => $list->getTotalCount()]); } }