/** * @param \Symfony\Component\HttpFoundation\Request $request * * @return array|\Symfony\Component\HttpFoundation\RedirectResponse */ public function indexAction(Request $request) { $glossaryForm = $this->getFactory()->createTranslationAddForm(); $glossaryForm->handleRequest($request); if ($glossaryForm->isValid()) { $data = $glossaryForm->getData(); $keyTranslationTransfer = new KeyTranslationTransfer(); $keyTranslationTransfer->fromArray($data, true); $glossaryFacade = $this->getFacade(); $glossaryFacade->saveGlossaryKeyTranslations($keyTranslationTransfer); $this->addSuccessMessage('Saved entry to glossary.'); return $this->redirectResponse('/glossary'); } return $this->viewResponse(['form' => $glossaryForm->createView()]); }
/** * @param \Generated\Shared\Transfer\KeyTranslationTransfer $keyTranslationTransfer * * @throws \Spryker\Zed\Glossary\Business\Exception\MissingKeyException * * @return bool */ public function saveGlossaryKeyTranslations(KeyTranslationTransfer $keyTranslationTransfer) { if (!$keyTranslationTransfer->getGlossaryKey()) { throw new MissingKeyException('Glossary Key cannot be empty'); } try { if (!$this->keyManager->hasKey($keyTranslationTransfer->getGlossaryKey())) { $idGlossaryKey = $this->keyManager->createKey($keyTranslationTransfer->getGlossaryKey()); } else { $idGlossaryKey = $this->keyManager->getKey($keyTranslationTransfer->getGlossaryKey())->getIdGlossaryKey(); } $availableLocales = $this->localeFacade->getAvailableLocales(); foreach ($availableLocales as $localeName) { $localeTransfer = $this->localeFacade->getLocale($localeName); if (isset($keyTranslationTransfer->getLocales()[$localeName])) { $translationTransfer = $this->createTranslationTransfer($localeTransfer, $idGlossaryKey, $keyTranslationTransfer->getLocales()[$localeName]); $this->saveAndTouchTranslation($translationTransfer); } } return true; } catch (MissingKeyException $error) { $messageTransfer = new MessageTransfer(); $messageTransfer->setValue($error->getMessage()); $this->messengerFacade->addErrorMessage($messageTransfer); return false; } }
/** * @param \Symfony\Component\HttpFoundation\Request $request * * @return array|\Symfony\Component\HttpFoundation\RedirectResponse */ public function indexAction(Request $request) { $formData = $this->getFactory()->createTranslationDataProvider()->getData($this->castId($request->query->get(self::URL_PARAMETER_GLOSSARY_KEY)), $this->getFactory()->getEnabledLocales()); $glossaryForm = $this->getFactory()->createTranslationUpdateForm($formData); $glossaryForm->handleRequest($request); if ($glossaryForm->isValid()) { $data = $glossaryForm->getData(); $keyTranslationTransfer = new KeyTranslationTransfer(); $keyTranslationTransfer->fromArray($data, true); $glossaryFacade = $this->getFacade(); if ($glossaryFacade->saveGlossaryKeyTranslations($keyTranslationTransfer)) { $this->addSuccessMessage('Saved entry to glossary.'); } else { $this->addErrorMessage('Translations could not be saved'); } return $this->redirectResponse('/glossary'); } return $this->viewResponse(['form' => $glossaryForm->createView()]); }
/** * @param array $data * @param \Generated\Shared\Transfer\LocaleTransfer $localeTransfer * * @return \Generated\Shared\Transfer\KeyTranslationTransfer */ protected function createKeyTranslationTransfer(array $data, LocaleTransfer $localeTransfer) { $this->glossaryKeyName = $data[CmsGlossaryForm::FIELD_GLOSSARY_KEY]; if ($this->glossaryKeyName === null) { $this->glossaryKeyName = $this->getFacade()->generateGlossaryKeyName($data[CmsGlossaryForm::FIELD_TEMPLATE_NAME], $data[CmsGlossaryForm::FIELD_PLACEHOLDER]); } $keyTranslationTransfer = new KeyTranslationTransfer(); $keyTranslationTransfer->setGlossaryKey($this->glossaryKeyName); $keyTranslationTransfer->setLocales([$localeTransfer->getLocaleName() => $data[CmsGlossaryForm::FIELD_TRANSLATION]]); return $keyTranslationTransfer; }