Exemple #1
0
 /**
  * @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;
     }
 }
Exemple #3
0
 /**
  * @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()]);
 }
Exemple #4
0
 /**
  * @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;
 }