From bad27eb827f7dad2cd00208fa87379740111b24d Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Sun, 20 Aug 2017 00:21:58 +0200 Subject: [PATCH 1/6] Removed EditInPlaceMessage --- Controller/EditInPlaceController.php | 16 ++-- Model/EditInPlaceMessage.php | 116 --------------------------- 2 files changed, 9 insertions(+), 123 deletions(-) delete mode 100644 Model/EditInPlaceMessage.php diff --git a/Controller/EditInPlaceController.php b/Controller/EditInPlaceController.php index 30af0dd7..52664902 100644 --- a/Controller/EditInPlaceController.php +++ b/Controller/EditInPlaceController.php @@ -16,8 +16,8 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Translation\Bundle\Exception\MessageValidationException; -use Translation\Bundle\Model\EditInPlaceMessage; use Translation\Bundle\Service\StorageService; +use Translation\Common\Model\Message; /** * @author Damien Alexandre @@ -34,7 +34,7 @@ class EditInPlaceController extends Controller public function editAction(Request $request, $configName, $locale) { try { - $messages = $this->getMessages($request, ['Edit']); + $messages = $this->getMessages($request, $locale, ['Edit']); } catch (MessageValidationException $e) { return new Response($e->getMessage(), Response::HTTP_BAD_REQUEST); } @@ -42,7 +42,7 @@ public function editAction(Request $request, $configName, $locale) /** @var StorageService $storage */ $storage = $this->get('php_translation.storage.'.$configName); foreach ($messages as $message) { - $storage->update($message->convertToMessage($locale)); + $storage->update($message); } $this->rebuildTranslations($locale); @@ -81,13 +81,14 @@ private function rebuildTranslations($locale) * Get and validate messages from the request. * * @param Request $request + * @param string $locale * @param array $validationGroups * - * @return EditInPlaceMessage[] + * @return Message[] * * @throws MessageValidationException */ - private function getMessages(Request $request, array $validationGroups = []) + private function getMessages(Request $request, $locale, array $validationGroups = []) { $json = $request->getContent(); $data = json_decode($json, true); @@ -97,10 +98,11 @@ private function getMessages(Request $request, array $validationGroups = []) foreach ($data as $key => $value) { list($domain, $translationKey) = explode('|', $key); - $message = new EditInPlaceMessage(); + $message = new Message(); $message->setKey($translationKey); - $message->setMessage($value); + $message->setTranslation($value); $message->setDomain($domain); + $message->setDomain($locale); $errors = $validator->validate($message, null, $validationGroups); if (count($errors) > 0) { diff --git a/Model/EditInPlaceMessage.php b/Model/EditInPlaceMessage.php deleted file mode 100644 index 4da1db6b..00000000 --- a/Model/EditInPlaceMessage.php +++ /dev/null @@ -1,116 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Translation\Bundle\Model; - -use Symfony\Component\Validator\Constraints as Assert; -use Translation\Common\Model\Message; - -/** - * @author Damien Alexandre - */ -final class EditInPlaceMessage -{ - /** - * @var string - * @Assert\NotBlank(groups={"Create", "Edit", "Delete"}) - */ - private $key; - - /** - * @var string - * @Assert\NotBlank(groups={"Create", "Edit"}) - */ - private $message; - - /** - * @var string - * @Assert\NotBlank(groups={"Create", "Edit", "Delete"}) - */ - private $domain; - - /** - * Convert to a Common\Message. - * - * @param string $locale - * - * @return Message - */ - public function convertToMessage($locale) - { - return new Message( - $this->key, - $this->domain, - $locale, - $this->message - ); - } - - /** - * @return string - */ - public function getKey() - { - return $this->key; - } - - /** - * @param string $key - * - * @return EditInPlaceMessage - */ - public function setKey($key) - { - $this->key = $key; - - return $this; - } - - /** - * @return string - */ - public function getMessage() - { - return $this->message; - } - - /** - * @param string $message - * - * @return EditInPlaceMessage - */ - public function setMessage($message) - { - $this->message = $message; - - return $this; - } - - /** - * @return string - */ - public function getDomain() - { - return $this->domain; - } - - /** - * @param string $domain - * - * @return EditInPlaceMessage - */ - public function setDomain($domain) - { - $this->domain = $domain; - - return $this; - } -} From ce8628cf260bd2fd491c05778592d56539cd6856 Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Sun, 20 Aug 2017 00:47:40 +0200 Subject: [PATCH 2/6] Fixed typo --- Controller/EditInPlaceController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Controller/EditInPlaceController.php b/Controller/EditInPlaceController.php index 52664902..d64618fa 100644 --- a/Controller/EditInPlaceController.php +++ b/Controller/EditInPlaceController.php @@ -102,7 +102,7 @@ private function getMessages(Request $request, $locale, array $validationGroups $message->setKey($translationKey); $message->setTranslation($value); $message->setDomain($domain); - $message->setDomain($locale); + $message->setLocale($locale); $errors = $validator->validate($message, null, $validationGroups); if (count($errors) > 0) { From b9cbd8ff51abc50dbf18112317c29c93fcbf0804 Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Sun, 20 Aug 2017 01:57:51 +0200 Subject: [PATCH 3/6] Added tests --- Controller/EditInPlaceController.php | 9 ++- .../Controller/EditInPlaceTestCotroller.php | 75 +++++++++++++++++++ 2 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 Tests/Functional/Controller/EditInPlaceTestCotroller.php diff --git a/Controller/EditInPlaceController.php b/Controller/EditInPlaceController.php index d64618fa..c64bba8a 100644 --- a/Controller/EditInPlaceController.php +++ b/Controller/EditInPlaceController.php @@ -63,6 +63,10 @@ private function rebuildTranslations($locale) $filesystem = $this->get('filesystem'); $finder = new Finder(); + if (!is_dir($translationDir)) { + mkdir($translationDir); + } + if (!is_writable($translationDir)) { throw new \RuntimeException(sprintf('Unable to write in the "%s" directory', $translationDir)); } @@ -74,7 +78,10 @@ private function rebuildTranslations($locale) } // Build them again - $this->get('translator')->warmUp($translationDir); + $translator = $this->get('translator'); + if (method_exists($translator, 'warmUp')) { + $translator->warmUp($translationDir); + } } /** diff --git a/Tests/Functional/Controller/EditInPlaceTestCotroller.php b/Tests/Functional/Controller/EditInPlaceTestCotroller.php new file mode 100644 index 00000000..2a43f5a9 --- /dev/null +++ b/Tests/Functional/Controller/EditInPlaceTestCotroller.php @@ -0,0 +1,75 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Translation\Bundle\Tests\Functional\Controller; + +use Symfony\Component\HttpFoundation\Request; +use Translation\Bundle\Tests\Functional\BaseTestCase; + +/** + * + * + * @author Tobias Nyholm + */ +class EditInPlaceTestCotroller extends BaseTestCase +{ + public static function setUpBeforeClass() + { + parent::setUpBeforeClass(); + + file_put_contents(__DIR__.'/../app/Resources/translations/messages.sv.xlf', <<<'XML' + + + + + + key0 + trans0 + + + + + key1 + trans1 + + + + + +XML + ); + } + protected function setUp() + { + parent::setUp(); + $this->kernel->addConfigFile(__DIR__.'/../app/config/normal_config.yml'); + } + + public function testEditAction() + { + $request = Request::create('/admin/_trans_edit_in_place/app/sv', 'POST', [], [], [], [], json_encode([ + 'messages|key0' => 'trans0', + 'messages|key1' => 'trans1', + ])); + $response = $this->kernel->handle($request); + $this->assertEquals(200, $response->getStatusCode()); + } + + public function testEditActionError() + { + $request = Request::create('/admin/_trans_edit_in_place/app/sv', 'POST', [], [], [], [], json_encode([ + 'messages|key0' => 'trans0', + 'messages|' => 'trans1', + ])); + $response = $this->kernel->handle($request); + $this->assertEquals(400, $response->getStatusCode()); + } +} From 0b8123a79de3d1117c66ebe5e5bead4977726e84 Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Sun, 20 Aug 2017 01:59:35 +0200 Subject: [PATCH 4/6] Bump version --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 3daa1a77..d7713c34 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ "symfony/intl": "^2.7 || ^3.0", "php-translation/common": "^0.2.1", - "php-translation/symfony-storage": "^0.3.1", + "php-translation/symfony-storage": "^0.3.2", "php-translation/extractor": "^1.2" }, "require-dev": { From 0a0b9af3f28d3be1a6c2ba2fd9cef945a9fea4ab Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Sun, 20 Aug 2017 02:00:00 +0200 Subject: [PATCH 5/6] Applied changes from StyleCI --- Tests/Functional/Controller/EditInPlaceTestCotroller.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Tests/Functional/Controller/EditInPlaceTestCotroller.php b/Tests/Functional/Controller/EditInPlaceTestCotroller.php index 2a43f5a9..d004a05a 100644 --- a/Tests/Functional/Controller/EditInPlaceTestCotroller.php +++ b/Tests/Functional/Controller/EditInPlaceTestCotroller.php @@ -15,8 +15,6 @@ use Translation\Bundle\Tests\Functional\BaseTestCase; /** - * - * * @author Tobias Nyholm */ class EditInPlaceTestCotroller extends BaseTestCase @@ -47,6 +45,7 @@ public static function setUpBeforeClass() XML ); } + protected function setUp() { parent::setUp(); From 229859f7cd77e160f8f8a6cf401527a0ef6310de Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Sun, 20 Aug 2017 02:05:57 +0200 Subject: [PATCH 6/6] Renamed file --- ...itInPlaceTestCotroller.php => EditInPlaceControllerTest.php} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Tests/Functional/Controller/{EditInPlaceTestCotroller.php => EditInPlaceControllerTest.php} (97%) diff --git a/Tests/Functional/Controller/EditInPlaceTestCotroller.php b/Tests/Functional/Controller/EditInPlaceControllerTest.php similarity index 97% rename from Tests/Functional/Controller/EditInPlaceTestCotroller.php rename to Tests/Functional/Controller/EditInPlaceControllerTest.php index d004a05a..51e4a4e6 100644 --- a/Tests/Functional/Controller/EditInPlaceTestCotroller.php +++ b/Tests/Functional/Controller/EditInPlaceControllerTest.php @@ -17,7 +17,7 @@ /** * @author Tobias Nyholm */ -class EditInPlaceTestCotroller extends BaseTestCase +class EditInPlaceControllerTest extends BaseTestCase { public static function setUpBeforeClass() {