From ae3b015f654b4d3da2ca19414531c6bc13b63895 Mon Sep 17 00:00:00 2001 From: Pico88 Date: Sun, 24 Aug 2014 08:10:37 +0200 Subject: [PATCH 1/3] [ticket/12661] Load extensions templates from "all" folder by render() PHPBB3-12661 --- phpBB/phpbb/template/twig/twig.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/phpBB/phpbb/template/twig/twig.php b/phpBB/phpbb/template/twig/twig.php index 5e2057f818..bb9202930b 100644 --- a/phpBB/phpbb/template/twig/twig.php +++ b/phpBB/phpbb/template/twig/twig.php @@ -177,6 +177,10 @@ class twig extends \phpbb\template\base } $names = $this->get_user_style(); + // Add 'all' folder to $names array + // It allows extensions to load a template file from 'all' folder, + // if a style doesn't include it. + $names[] = 'all'; $paths = array(); foreach ($style_directories as $directory) From 273fc5b5b61ad22af5a439c002afc626d8bb1b61 Mon Sep 17 00:00:00 2001 From: Pico88 Date: Sun, 24 Aug 2014 08:19:44 +0200 Subject: [PATCH 2/3] [ticket/12661] Add template test PHPBB3-12661 --- phpBB/phpbb/template/twig/twig.php | 2 +- tests/extension/ext/vendor4/bar/composer.json | 23 ++++++++ .../bar/styles/all/template/foobar_body.html | 1 + tests/extension/manager_test.php | 2 +- tests/functional/extension_acp_test.php | 2 +- tests/template/template_allfolder_test.php | 59 +++++++++++++++++++ 6 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 tests/extension/ext/vendor4/bar/composer.json create mode 100644 tests/extension/ext/vendor4/bar/styles/all/template/foobar_body.html create mode 100644 tests/template/template_allfolder_test.php diff --git a/phpBB/phpbb/template/twig/twig.php b/phpBB/phpbb/template/twig/twig.php index bb9202930b..a3b002f350 100644 --- a/phpBB/phpbb/template/twig/twig.php +++ b/phpBB/phpbb/template/twig/twig.php @@ -179,7 +179,7 @@ class twig extends \phpbb\template\base $names = $this->get_user_style(); // Add 'all' folder to $names array // It allows extensions to load a template file from 'all' folder, - // if a style doesn't include it. + // if a style doesn't include it. $names[] = 'all'; $paths = array(); diff --git a/tests/extension/ext/vendor4/bar/composer.json b/tests/extension/ext/vendor4/bar/composer.json new file mode 100644 index 0000000000..1a2fddc3f4 --- /dev/null +++ b/tests/extension/ext/vendor4/bar/composer.json @@ -0,0 +1,23 @@ +{ + "name": "vendor4/bar", + "type": "phpbb-extension", + "description": "An example/sample extension to be used for testing purposes in phpBB Development.", + "version": "1.0.0", + "time": "2012-02-15 01:01:01", + "license": "GPL-2.0", + "authors": [{ + "name": "John Smith", + "email": "email@phpbb.com", + "homepage": "http://phpbb.com", + "role": "N/A" + }], + "require": { + "php": ">=5.3" + }, + "extra": { + "display-name": "phpBB Bar Extension", + "soft-require": { + "phpbb/phpbb": "3.1.*@dev" + } + } +} diff --git a/tests/extension/ext/vendor4/bar/styles/all/template/foobar_body.html b/tests/extension/ext/vendor4/bar/styles/all/template/foobar_body.html new file mode 100644 index 0000000000..0c147a92db --- /dev/null +++ b/tests/extension/ext/vendor4/bar/styles/all/template/foobar_body.html @@ -0,0 +1 @@ +All folder \ No newline at end of file diff --git a/tests/extension/manager_test.php b/tests/extension/manager_test.php index 5ec8e60a68..5c7cad89f6 100644 --- a/tests/extension/manager_test.php +++ b/tests/extension/manager_test.php @@ -36,7 +36,7 @@ class phpbb_extension_manager_test extends phpbb_database_test_case public function test_all_available() { // barfoo and vendor3/bar should not listed due to missing composer.json. barfoo also has incorrect dir structure. - $this->assertEquals(array('vendor/moo', 'vendor2/bar', 'vendor2/foo', 'vendor3/foo'), array_keys($this->extension_manager->all_available())); + $this->assertEquals(array('vendor/moo', 'vendor2/bar', 'vendor2/foo', 'vendor3/foo', 'vendor4/bar'), array_keys($this->extension_manager->all_available())); } public function test_all_enabled() diff --git a/tests/functional/extension_acp_test.php b/tests/functional/extension_acp_test.php index 6490c1ead3..7be8957ec7 100644 --- a/tests/functional/extension_acp_test.php +++ b/tests/functional/extension_acp_test.php @@ -84,7 +84,7 @@ class phpbb_functional_extension_acp_test extends phpbb_functional_test_case $crawler = self::request('GET', 'adm/index.php?i=acp_extensions&mode=main&sid=' . $this->sid); $this->assertCount(1, $crawler->filter('.ext_enabled')); - $this->assertCount(5, $crawler->filter('.ext_disabled')); + $this->assertCount(6, $crawler->filter('.ext_disabled')); $this->assertContains('phpBB Foo Extension', $crawler->filter('.ext_enabled')->eq(0)->text()); $this->assertContainsLang('EXTENSION_DISABLE', $crawler->filter('.ext_enabled')->eq(0)->text()); diff --git a/tests/template/template_allfolder_test.php b/tests/template/template_allfolder_test.php new file mode 100644 index 0000000000..742d85c3d2 --- /dev/null +++ b/tests/template/template_allfolder_test.php @@ -0,0 +1,59 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +require_once dirname(__FILE__) . '/template_test_case.php'; + +class phpbb_template_allfolder_test extends phpbb_template_template_test_case +{ + public function test_allfolder() + { + $this->setup_engine_for_allfolder(); + + $this->run_template('foobar_body.html', array(), array(), array(), "All folder"); + } + + protected function setup_engine_for_allfolder(array $new_config = array()) + { + global $phpbb_root_path, $phpEx; + + $defaults = $this->config_defaults(); + $config = new \phpbb\config\config(array_merge($defaults, $new_config)); + $this->user = new \phpbb\user('\phpbb\datetime'); + + $path_helper = new \phpbb\path_helper( + new \phpbb\symfony_request( + new phpbb_mock_request() + ), + new \phpbb\filesystem(), + $this->getMock('\phpbb\request\request'), + $phpbb_root_path, + $phpEx + ); + + $this->extension_manager = new phpbb_mock_extension_manager( + dirname(__FILE__) . '/', + array( + 'vendor4/bar' => array( + 'ext_name' => 'vendor4/bar', + 'ext_active' => '1', + 'ext_path' => 'ext/vendor4/bar/', + ), + ) + ); + + $this->template_path = $this->test_path . '/templates'; + $this->ext_template_path = 'tests/extension/ext/vendor4/bar/styles/all/template'; + $this->template = new \phpbb\template\twig\twig($path_helper, $config, $this->user, new \phpbb\template\context(), $this->extension_manager); + $this->template->set_custom_style('all', array($this->template_path, $this->ext_template_path)); + } +} \ No newline at end of file From 9d44c5d940a03599ad7a31bd9aafca7835d00214 Mon Sep 17 00:00:00 2001 From: Pico Date: Mon, 25 Aug 2014 22:35:55 +0200 Subject: [PATCH 3/3] [ticket/12661] Add new line at the end of files PHPBB3-12661 --- .../ext/vendor4/bar/styles/all/template/foobar_body.html | 2 +- tests/template/template_allfolder_test.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/extension/ext/vendor4/bar/styles/all/template/foobar_body.html b/tests/extension/ext/vendor4/bar/styles/all/template/foobar_body.html index 0c147a92db..c8f8cf957e 100644 --- a/tests/extension/ext/vendor4/bar/styles/all/template/foobar_body.html +++ b/tests/extension/ext/vendor4/bar/styles/all/template/foobar_body.html @@ -1 +1 @@ -All folder \ No newline at end of file +All folder diff --git a/tests/template/template_allfolder_test.php b/tests/template/template_allfolder_test.php index 742d85c3d2..b4ad84e9c3 100644 --- a/tests/template/template_allfolder_test.php +++ b/tests/template/template_allfolder_test.php @@ -56,4 +56,4 @@ class phpbb_template_allfolder_test extends phpbb_template_template_test_case $this->template = new \phpbb\template\twig\twig($path_helper, $config, $this->user, new \phpbb\template\context(), $this->extension_manager); $this->template->set_custom_style('all', array($this->template_path, $this->ext_template_path)); } -} \ No newline at end of file +}