From 0ef27d73d82d4aeecaf9e2142bdb06b5e72fe4be Mon Sep 17 00:00:00 2001 From: Christopher Martin Date: Wed, 5 Sep 2012 20:46:00 -0400 Subject: [PATCH 1/4] FormRow translate label fix #ZF2-516 --- library/Zend/Form/View/Helper/FormRow.php | 14 ++++++++ .../ZendTest/Form/View/Helper/FormRowTest.php | 33 +++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/library/Zend/Form/View/Helper/FormRow.php b/library/Zend/Form/View/Helper/FormRow.php index 7c3d0e5689f..1605bd4b8ab 100644 --- a/library/Zend/Form/View/Helper/FormRow.php +++ b/library/Zend/Form/View/Helper/FormRow.php @@ -78,6 +78,13 @@ public function render(ElementInterface $element) $inputErrorClass = $this->getInputErrorClass(); $elementErrors = $elementErrorsHelper->render($element); + // Translate the label + if (null !== ($translator = $this->getTranslator())) { + $label = $translator->translate( + $label, $this->getTranslatorTextDomain() + ); + } + // Does this element have errors ? if (!empty($elementErrors) && !empty($inputErrorClass)) { $classAttributes = ($element->hasAttribute('class') ? $element->getAttribute('class') . ' ' : ''); @@ -281,6 +288,13 @@ protected function getLabelHelper() $this->labelHelper = new FormLabel(); } + if ($this->hasTranslator()) { + $this->labelHelper->setTranslator( + $this->getTranslator(), + $this->getTranslatorTextDomain() + ); + } + return $this->labelHelper; } diff --git a/tests/ZendTest/Form/View/Helper/FormRowTest.php b/tests/ZendTest/Form/View/Helper/FormRowTest.php index ec1e97063d4..2c2281e46e5 100644 --- a/tests/ZendTest/Form/View/Helper/FormRowTest.php +++ b/tests/ZendTest/Form/View/Helper/FormRowTest.php @@ -159,4 +159,37 @@ public function testInvokeWithNoElementChainsHelper() { $this->assertSame($this->helper, $this->helper->__invoke()); } + + public function testLabelWillBeTranslated() + { + $element = new Element('foo'); + $element->setLabel('The value for foo:'); + + $mockTranslator = $this->getMock('Zend\I18n\Translator\Translator'); + $mockTranslator->expects($this->exactly(1)) + ->method('translate') + ->will($this->returnValue('translated content')); + + $this->helper->setTranslator($mockTranslator); + $this->assertTrue($this->helper->hasTranslator()); + + $markup = $this->helper->__invoke($element); + $this->assertContains('>translated content<', $markup); + $this->assertContains('assertContains('', $markup); + } + + public function testTranslatorMethods() + { + $translatorMock = $this->getMock('Zend\I18n\Translator\Translator'); + $this->helper->setTranslator($translatorMock, 'foo'); + + $this->assertEquals($translatorMock, $this->helper->getTranslator()); + $this->assertEquals('foo', $this->helper->getTranslatorTextDomain()); + $this->assertTrue($this->helper->hasTranslator()); + $this->assertTrue($this->helper->isTranslatorEnabled()); + + $this->helper->setTranslatorEnabled(false); + $this->assertFalse($this->helper->isTranslatorEnabled()); + } } From 50725f36b6a6ddd9aac247f34e3fe370c17247e4 Mon Sep 17 00:00:00 2001 From: Chris Martin Date: Thu, 6 Sep 2012 12:04:13 -0400 Subject: [PATCH 2/4] Moved the translation code around in FormRow for non-empty labels --- library/Zend/Form/View/Helper/FormRow.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/library/Zend/Form/View/Helper/FormRow.php b/library/Zend/Form/View/Helper/FormRow.php index 1605bd4b8ab..8f8ac833681 100644 --- a/library/Zend/Form/View/Helper/FormRow.php +++ b/library/Zend/Form/View/Helper/FormRow.php @@ -78,13 +78,6 @@ public function render(ElementInterface $element) $inputErrorClass = $this->getInputErrorClass(); $elementErrors = $elementErrorsHelper->render($element); - // Translate the label - if (null !== ($translator = $this->getTranslator())) { - $label = $translator->translate( - $label, $this->getTranslatorTextDomain() - ); - } - // Does this element have errors ? if (!empty($elementErrors) && !empty($inputErrorClass)) { $classAttributes = ($element->hasAttribute('class') ? $element->getAttribute('class') . ' ' : ''); @@ -95,7 +88,14 @@ public function render(ElementInterface $element) $elementString = $elementHelper->render($element); - if (!empty($label)) { + if (isset($label) && '' !== $label) { + // Translate the label + if (null !== ($translator = $this->getTranslator())) { + $label = $translator->translate( + $label, $this->getTranslatorTextDomain() + ); + } + $label = $escapeHtmlHelper($label); $labelAttributes = $element->getLabelAttributes(); From 7eb804ad241659b123dc1522fde79495e7e83ffc Mon Sep 17 00:00:00 2001 From: Chris Martin Date: Thu, 6 Sep 2012 12:41:15 -0400 Subject: [PATCH 3/4] Additional test coverage for FormRow when element id is set --- tests/ZendTest/Form/View/Helper/FormRowTest.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/ZendTest/Form/View/Helper/FormRowTest.php b/tests/ZendTest/Form/View/Helper/FormRowTest.php index 2c2281e46e5..374e796893b 100644 --- a/tests/ZendTest/Form/View/Helper/FormRowTest.php +++ b/tests/ZendTest/Form/View/Helper/FormRowTest.php @@ -166,7 +166,7 @@ public function testLabelWillBeTranslated() $element->setLabel('The value for foo:'); $mockTranslator = $this->getMock('Zend\I18n\Translator\Translator'); - $mockTranslator->expects($this->exactly(1)) + $mockTranslator->expects($this->any()) ->method('translate') ->will($this->returnValue('translated content')); @@ -177,8 +177,17 @@ public function testLabelWillBeTranslated() $this->assertContains('>translated content<', $markup); $this->assertContains('assertContains('', $markup); + + // Additional coverage when element's id is set + $element->setAttribute('id', 'foo'); + $markup = $this->helper->__invoke($element); + $this->assertContains('>translated content<', $markup); + $this->assertContains('assertContains('', $markup); } + + public function testTranslatorMethods() { $translatorMock = $this->getMock('Zend\I18n\Translator\Translator'); From 7d647c0e8bedfbd65a33d06cdcfc35c557cf1303 Mon Sep 17 00:00:00 2001 From: Matthew Weier O'Phinney Date: Thu, 13 Sep 2012 11:34:12 -0500 Subject: [PATCH 4/4] [ZF2-516][#2300] CS fix - Decrease indentation --- library/Zend/Form/View/Helper/FormRow.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/Zend/Form/View/Helper/FormRow.php b/library/Zend/Form/View/Helper/FormRow.php index 8f8ac833681..4b8dfe88d81 100644 --- a/library/Zend/Form/View/Helper/FormRow.php +++ b/library/Zend/Form/View/Helper/FormRow.php @@ -92,7 +92,7 @@ public function render(ElementInterface $element) // Translate the label if (null !== ($translator = $this->getTranslator())) { $label = $translator->translate( - $label, $this->getTranslatorTextDomain() + $label, $this->getTranslatorTextDomain() ); }