diff --git a/Tests/Twig/Extension/FormFlowExtensionBcMethodsTest.php b/Tests/Twig/Extension/FormFlowExtensionBcMethodsTest.php new file mode 100644 index 00000000..63395b02 --- /dev/null +++ b/Tests/Twig/Extension/FormFlowExtensionBcMethodsTest.php @@ -0,0 +1,55 @@ + + * @copyright 2011-2015 Christian Raue + * @license http://opensource.org/licenses/mit-license.php MIT License + */ +class FormFlowExtensionBcMethodsTest extends UnitTestCase { + + protected $collectDeprecationNotices = true; + + private $deprecatedMessage = 'Twig filter %s is deprecated since version 3.0. Use filter %s instead.'; + + public function testBcMethodDelegation_addDynamicStepNavigationParameter() { + $extension = $this->getMock('\Craue\FormFlowBundle\Twig\Extension\FormFlowExtension', array('addDynamicStepNavigationParameters')); + + $parameters = array('foo' => 'bar'); + $flow = $this->getMockedFlow(); + $stepNumber = 1; + + $extension + ->expects($this->once()) + ->method('addDynamicStepNavigationParameters') + ->with($this->equalTo($parameters), $this->equalTo($flow), $this->equalTo($stepNumber)) + ; + + $extension->addDynamicStepNavigationParameter($parameters, $flow, $stepNumber); + $this->assertEquals(array(sprintf($this->deprecatedMessage, 'craue_addDynamicStepNavigationParameter', 'craue_addDynamicStepNavigationParameters')), $this->getDeprecationNotices()); + } + + public function testBcMethodDelegation_removeDynamicStepNavigationParameter() { + $extension = $this->getMock('\Craue\FormFlowBundle\Twig\Extension\FormFlowExtension', array('removeDynamicStepNavigationParameters')); + + $parameters = array('foo' => 'bar'); + $flow = $this->getMockedFlow(); + + $extension + ->expects($this->once()) + ->method('removeDynamicStepNavigationParameters') + ->with($this->equalTo($parameters), $this->equalTo($flow)) + ; + + $extension->removeDynamicStepNavigationParameter($parameters, $flow); + $this->assertEquals(array(sprintf($this->deprecatedMessage, 'craue_removeDynamicStepNavigationParameter', 'craue_removeDynamicStepNavigationParameters')), $this->getDeprecationNotices()); + } + +} diff --git a/Twig/Extension/FormFlowExtension.php b/Twig/Extension/FormFlowExtension.php index 5f246c19..f5a9f67d 100644 --- a/Twig/Extension/FormFlowExtension.php +++ b/Twig/Extension/FormFlowExtension.php @@ -38,12 +38,18 @@ public function getFilters() { return array( 'craue_addDynamicStepNavigationParameters' => new \Twig_Filter_Method($this, 'addDynamicStepNavigationParameters'), 'craue_removeDynamicStepNavigationParameters' => new \Twig_Filter_Method($this, 'removeDynamicStepNavigationParameters'), + // methods for BC with third-party templates (e.g. MopaBootstrapBundle) + 'craue_addDynamicStepNavigationParameter' => new \Twig_Filter_Method($this, 'addDynamicStepNavigationParameter'), + 'craue_removeDynamicStepNavigationParameter' => new \Twig_Filter_Method($this, 'removeDynamicStepNavigationParameter'), ); } return array( new \Twig_SimpleFilter('craue_addDynamicStepNavigationParameters', array($this, 'addDynamicStepNavigationParameters')), new \Twig_SimpleFilter('craue_removeDynamicStepNavigationParameters', array($this, 'removeDynamicStepNavigationParameters')), + // methods for BC with third-party templates (e.g. MopaBootstrapBundle) + new \Twig_SimpleFilter('craue_addDynamicStepNavigationParameter', array($this, 'addDynamicStepNavigationParameter')), + new \Twig_SimpleFilter('craue_removeDynamicStepNavigationParameter', array($this, 'removeDynamicStepNavigationParameter')), ); } @@ -113,4 +119,16 @@ public function isStepLinkable(FormFlow $flow, $stepNumber) { return false; } + // methods for BC with third-party templates (e.g. MopaBootstrapBundle) + + public function addDynamicStepNavigationParameter(array $parameters, FormFlow $flow, $stepNumber) { + @trigger_error('Twig filter craue_addDynamicStepNavigationParameter is deprecated since version 3.0. Use filter craue_addDynamicStepNavigationParameters instead.', E_USER_DEPRECATED); + return $this->addDynamicStepNavigationParameters($parameters, $flow, $stepNumber); + } + + public function removeDynamicStepNavigationParameter(array $parameters, FormFlow $flow) { + @trigger_error('Twig filter craue_removeDynamicStepNavigationParameter is deprecated since version 3.0. Use filter craue_removeDynamicStepNavigationParameters instead.', E_USER_DEPRECATED); + return $this->removeDynamicStepNavigationParameters($parameters, $flow); + } + } diff --git a/UPGRADE-3.0.md b/UPGRADE-3.0.md index 4f46e476..b0186f50 100644 --- a/UPGRADE-3.0.md +++ b/UPGRADE-3.0.md @@ -162,6 +162,6 @@ This version adds support for concurrent instances of the same flow, which requi - The Twig filters `craue_addDynamicStepNavigationParameter` and `craue_removeDynamicStepNavigationParameter` have been renamed to `craue_addDynamicStepNavigationParameters` and `craue_removeDynamicStepNavigationParameters`, i.e. - pluralized, since they now handle more than one parameter. + pluralized, since they now handle more than one parameter. Filters with the old names still exist, but are deprecated. - The template `CraueFormFlowBundle:FormFlow:stepField.html.twig` (deprecated in 2.1.0) has been removed.