Skip to content

Commit a5bdcad

Browse files
authored
Removed EditInPlaceMessage (#129)
* Removed EditInPlaceMessage * Fixed typo * Added tests * Bump version * Applied changes from StyleCI * Renamed file
1 parent 584a719 commit a5bdcad

File tree

4 files changed

+92
-125
lines changed

4 files changed

+92
-125
lines changed

Controller/EditInPlaceController.php

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
use Symfony\Component\HttpFoundation\Request;
1717
use Symfony\Component\HttpFoundation\Response;
1818
use Translation\Bundle\Exception\MessageValidationException;
19-
use Translation\Bundle\Model\EditInPlaceMessage;
2019
use Translation\Bundle\Service\StorageService;
20+
use Translation\Common\Model\Message;
2121

2222
/**
2323
* @author Damien Alexandre <dalexandre@jolicode.com>
@@ -34,15 +34,15 @@ class EditInPlaceController extends Controller
3434
public function editAction(Request $request, $configName, $locale)
3535
{
3636
try {
37-
$messages = $this->getMessages($request, ['Edit']);
37+
$messages = $this->getMessages($request, $locale, ['Edit']);
3838
} catch (MessageValidationException $e) {
3939
return new Response($e->getMessage(), Response::HTTP_BAD_REQUEST);
4040
}
4141

4242
/** @var StorageService $storage */
4343
$storage = $this->get('php_translation.storage.'.$configName);
4444
foreach ($messages as $message) {
45-
$storage->update($message->convertToMessage($locale));
45+
$storage->update($message);
4646
}
4747

4848
$this->rebuildTranslations($locale);
@@ -63,6 +63,10 @@ private function rebuildTranslations($locale)
6363
$filesystem = $this->get('filesystem');
6464
$finder = new Finder();
6565

66+
if (!is_dir($translationDir)) {
67+
mkdir($translationDir);
68+
}
69+
6670
if (!is_writable($translationDir)) {
6771
throw new \RuntimeException(sprintf('Unable to write in the "%s" directory', $translationDir));
6872
}
@@ -74,20 +78,24 @@ private function rebuildTranslations($locale)
7478
}
7579

7680
// Build them again
77-
$this->get('translator')->warmUp($translationDir);
81+
$translator = $this->get('translator');
82+
if (method_exists($translator, 'warmUp')) {
83+
$translator->warmUp($translationDir);
84+
}
7885
}
7986

8087
/**
8188
* Get and validate messages from the request.
8289
*
8390
* @param Request $request
91+
* @param string $locale
8492
* @param array $validationGroups
8593
*
86-
* @return EditInPlaceMessage[]
94+
* @return Message[]
8795
*
8896
* @throws MessageValidationException
8997
*/
90-
private function getMessages(Request $request, array $validationGroups = [])
98+
private function getMessages(Request $request, $locale, array $validationGroups = [])
9199
{
92100
$json = $request->getContent();
93101
$data = json_decode($json, true);
@@ -97,10 +105,11 @@ private function getMessages(Request $request, array $validationGroups = [])
97105
foreach ($data as $key => $value) {
98106
list($domain, $translationKey) = explode('|', $key);
99107

100-
$message = new EditInPlaceMessage();
108+
$message = new Message();
101109
$message->setKey($translationKey);
102-
$message->setMessage($value);
110+
$message->setTranslation($value);
103111
$message->setDomain($domain);
112+
$message->setLocale($locale);
104113

105114
$errors = $validator->validate($message, null, $validationGroups);
106115
if (count($errors) > 0) {

Model/EditInPlaceMessage.php

Lines changed: 0 additions & 116 deletions
This file was deleted.
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the PHP Translation package.
5+
*
6+
* (c) PHP Translation team <tobias.nyholm@gmail.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Translation\Bundle\Tests\Functional\Controller;
13+
14+
use Symfony\Component\HttpFoundation\Request;
15+
use Translation\Bundle\Tests\Functional\BaseTestCase;
16+
17+
/**
18+
* @author Tobias Nyholm <tobias.nyholm@gmail.com>
19+
*/
20+
class EditInPlaceControllerTest extends BaseTestCase
21+
{
22+
public static function setUpBeforeClass()
23+
{
24+
parent::setUpBeforeClass();
25+
26+
file_put_contents(__DIR__.'/../app/Resources/translations/messages.sv.xlf', <<<'XML'
27+
<?xml version="1.0" encoding="utf-8"?>
28+
<xliff xmlns="urn:oasis:names:tc:xliff:document:2.0" version="2.0" srcLang="fr-FR" trgLang="en-US">
29+
<file id="messages.en_US">
30+
<unit id="LCa0a2j">
31+
<segment>
32+
<source>key0</source>
33+
<target>trans0</target>
34+
</segment>
35+
</unit>
36+
<unit id="LCa0a2b">
37+
<segment>
38+
<source>key1</source>
39+
<target>trans1</target>
40+
</segment>
41+
</unit>
42+
</file>
43+
</xliff>
44+
45+
XML
46+
);
47+
}
48+
49+
protected function setUp()
50+
{
51+
parent::setUp();
52+
$this->kernel->addConfigFile(__DIR__.'/../app/config/normal_config.yml');
53+
}
54+
55+
public function testEditAction()
56+
{
57+
$request = Request::create('/admin/_trans_edit_in_place/app/sv', 'POST', [], [], [], [], json_encode([
58+
'messages|key0' => 'trans0',
59+
'messages|key1' => 'trans1',
60+
]));
61+
$response = $this->kernel->handle($request);
62+
$this->assertEquals(200, $response->getStatusCode());
63+
}
64+
65+
public function testEditActionError()
66+
{
67+
$request = Request::create('/admin/_trans_edit_in_place/app/sv', 'POST', [], [], [], [], json_encode([
68+
'messages|key0' => 'trans0',
69+
'messages|' => 'trans1',
70+
]));
71+
$response = $this->kernel->handle($request);
72+
$this->assertEquals(400, $response->getStatusCode());
73+
}
74+
}

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"symfony/intl": "^2.7 || ^3.0",
1919

2020
"php-translation/common": "^0.2.1",
21-
"php-translation/symfony-storage": "^0.3.1",
21+
"php-translation/symfony-storage": "^0.3.2",
2222
"php-translation/extractor": "^1.2"
2323
},
2424
"require-dev": {

0 commit comments

Comments
 (0)