From 93f932b80f59a76af236d772659cadcfc55d9a27 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sat, 2 Apr 2016 12:12:24 +0200 Subject: [PATCH 001/431] [ticket/14495] Revert changes in master PHPBB3-14495 --- phpBB/composer.json | 2 +- phpBB/composer.lock | 4 ++-- phpBB/docs/README.html | 6 +++--- phpBB/install/convertors/convert_phpbb20.php | 2 +- phpBB/install/phpbbcli.php | 2 +- phpBB/language/en/install.php | 2 +- phpBB/styles/prosilver/style.cfg | 4 ++-- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/phpBB/composer.json b/phpBB/composer.json index b0c9b57cb63..d6a4213c4ad 100644 --- a/phpBB/composer.json +++ b/phpBB/composer.json @@ -62,7 +62,7 @@ }, "extra": { "branch-alias": { - "dev-master": "3.2.x-dev" + "dev-master": "3.3.x-dev" } } } diff --git a/phpBB/composer.lock b/phpBB/composer.lock index 968447fd63b..f565c424fad 100644 --- a/phpBB/composer.lock +++ b/phpBB/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "9cbb41222e71eb86e0ef9118baafc691", - "content-hash": "03a990fa2d088c89afe4824d2d53e873", + "hash": "e61304256160e9e0c521a4996912d65d", + "content-hash": "64ae8ac9ac0cc8b1f47e58f43e2d7461", "packages": [ { "name": "bantu/ini-get-wrapper", diff --git a/phpBB/docs/README.html b/phpBB/docs/README.html index a7906ac8020..20afc310dbc 100644 --- a/phpBB/docs/README.html +++ b/phpBB/docs/README.html @@ -4,7 +4,7 @@ - + phpBB • Readme @@ -21,7 +21,7 @@
-

phpBB 3.2.x Readme

+

phpBB 3.3.x Readme

Skip

@@ -324,7 +324,7 @@

Readme

-

phpBB 3.2.x takes advantage of new features added in PHP 5.4. We recommend that you upgrade to the latest stable release of PHP to run phpBB. The minimum version required is PHP 5.4.0 and the maximum supported version is PHP 7.0.

+

phpBB 3.3.x takes advantage of new features added in PHP 5.4. We recommend that you upgrade to the latest stable release of PHP to run phpBB. The minimum version required is PHP 5.4.0 and the maximum supported version is PHP 7.0.

Please remember that running any application on a development (unstable, e.g. a beta release) version of PHP can lead to strange/unexpected results which may appear to be bugs in the application. Therefore, we recommend you upgrade to the newest stable version of PHP before running phpBB. If you are running a development version of PHP please check any bugs you find on a system running a stable release before submitting.

diff --git a/phpBB/install/convertors/convert_phpbb20.php b/phpBB/install/convertors/convert_phpbb20.php index 977670c94c3..d0885dc620f 100644 --- a/phpBB/install/convertors/convert_phpbb20.php +++ b/phpBB/install/convertors/convert_phpbb20.php @@ -38,7 +38,7 @@ $convertor_data = array( 'forum_name' => 'phpBB 2.0.x', 'version' => '1.0.3', - 'phpbb_version' => '3.2.0-b3-dev', + 'phpbb_version' => '3.3.0-a1-dev', 'author' => 'phpBB Limited', 'dbms' => $dbms, 'dbhost' => $dbhost, diff --git a/phpBB/install/phpbbcli.php b/phpBB/install/phpbbcli.php index 87eab84b5a3..4b86f64e2ac 100755 --- a/phpBB/install/phpbbcli.php +++ b/phpBB/install/phpbbcli.php @@ -23,7 +23,7 @@ define('IN_PHPBB', true); define('IN_INSTALL', true); define('PHPBB_ENVIRONMENT', 'production'); -define('PHPBB_VERSION', '3.2.0-b3-dev'); +define('PHPBB_VERSION', '3.3.0-a1-dev'); $phpbb_root_path = __DIR__ . '/../'; $phpEx = substr(strrchr(__FILE__, '.'), 1); diff --git a/phpBB/language/en/install.php b/phpBB/language/en/install.php index 9a727be6497..39d53ece7b7 100644 --- a/phpBB/language/en/install.php +++ b/phpBB/language/en/install.php @@ -523,7 +523,7 @@ // Finish conversion 'CONVERT_COMPLETE' => 'Conversion completed', - 'CONVERT_COMPLETE_EXPLAIN' => 'You have now successfully converted your board to phpBB 3.2. You can now login and access your board. Please ensure that the settings were transferred correctly before enabling your board by deleting the install directory. Remember that help on using phpBB is available online via the Documentation and the support forums.', + 'CONVERT_COMPLETE_EXPLAIN' => 'You have now successfully converted your board to phpBB 3.3. You can now login and access your board. Please ensure that the settings were transferred correctly before enabling your board by deleting the install directory. Remember that help on using phpBB is available online via the Documentation and the support forums.', 'CONV_ERROR_ATTACH_FTP_DIR' => 'FTP upload for attachments is enabled at the old board. Please disable the FTP upload option and make sure a valid upload directory is specified, then copy all attachment files to this new web accessible directory. Once you have done this, restart the convertor.', 'CONV_ERROR_CONFIG_EMPTY' => 'There is no configuration information available for the conversion.', diff --git a/phpBB/styles/prosilver/style.cfg b/phpBB/styles/prosilver/style.cfg index 690c35ca7aa..e0b87f23987 100644 --- a/phpBB/styles/prosilver/style.cfg +++ b/phpBB/styles/prosilver/style.cfg @@ -21,8 +21,8 @@ # General Information about this style name = prosilver copyright = © phpBB Limited, 2007 -style_version = 3.2.0-b3-dev -phpbb_version = 3.2.0-b3-dev +style_version = 3.3.0-dev +phpbb_version = 3.3.0-dev # Defining a different template bitfield # template_bitfield = lNg= From caf63ba86b7d7afc23d3c8a598f9c3c8ad9bacf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Bartus?= Date: Wed, 13 Apr 2016 10:52:12 +0200 Subject: [PATCH 002/431] [ticket/14601] Fix composer.lock PHPBB3-14601 --- phpBB/composer.lock | 220 ++++++++++++++++++++++---------------------- 1 file changed, 108 insertions(+), 112 deletions(-) diff --git a/phpBB/composer.lock b/phpBB/composer.lock index 32dcdbbae16..5dd0d30a717 100644 --- a/phpBB/composer.lock +++ b/phpBB/composer.lock @@ -4,13 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], -<<<<<<< HEAD - "hash": "e61304256160e9e0c521a4996912d65d", - "content-hash": "64ae8ac9ac0cc8b1f47e58f43e2d7461", -======= - "hash": "b82925c74b2b12ce589973243a9fab68", - "content-hash": "fee6d87604f3053b51c0947ded841cfe", ->>>>>>> 3.2.x + "hash": "aabe5d97d87369a2f21f6e63b0922297", + "content-hash": "cf9ea8c945f6877cbaa8dcbd4ccd6cc3", "packages": [ { "name": "bantu/ini-get-wrapper", @@ -471,16 +466,16 @@ }, { "name": "paragonie/random_compat", - "version": "v1.2.2", + "version": "v1.4.1", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", - "reference": "b3313b618f4edd76523572531d5d7e22fe747430" + "reference": "c7e26a21ba357863de030f0b9e701c7d04593774" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/b3313b618f4edd76523572531d5d7e22fe747430", - "reference": "b3313b618f4edd76523572531d5d7e22fe747430", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/c7e26a21ba357863de030f0b9e701c7d04593774", + "reference": "c7e26a21ba357863de030f0b9e701c7d04593774", "shasum": "" }, "require": { @@ -515,7 +510,7 @@ "pseudorandom", "random" ], - "time": "2016-03-11 19:54:08" + "time": "2016-03-18 20:34:03" }, { "name": "patchwork/utf8", @@ -608,16 +603,16 @@ }, { "name": "react/promise", - "version": "v2.2.2", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/reactphp/promise.git", - "reference": "3aacad8bf10c7d83e6fa2089d413529888c2bedf" + "reference": "f942da7b505d1a294284ab343d05df42d02ad6d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/3aacad8bf10c7d83e6fa2089d413529888c2bedf", - "reference": "3aacad8bf10c7d83e6fa2089d413529888c2bedf", + "url": "https://api.github.com/repos/reactphp/promise/zipball/f942da7b505d1a294284ab343d05df42d02ad6d9", + "reference": "f942da7b505d1a294284ab343d05df42d02ad6d9", "shasum": "" }, "require": { @@ -648,20 +643,20 @@ } ], "description": "A lightweight implementation of CommonJS Promises/A for PHP", - "time": "2016-02-26 19:09:02" + "time": "2016-03-31 13:10:33" }, { "name": "s9e/text-formatter", - "version": "0.4.11", + "version": "0.4.12", "source": { "type": "git", "url": "https://github.com/s9e/TextFormatter.git", - "reference": "e6dc4615081b1668742076aa05d11aa0f7b00103" + "reference": "7033b824b2ea06046f98420f250d5db84c695288" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/s9e/TextFormatter/zipball/e6dc4615081b1668742076aa05d11aa0f7b00103", - "reference": "e6dc4615081b1668742076aa05d11aa0f7b00103", + "url": "https://api.github.com/repos/s9e/TextFormatter/zipball/7033b824b2ea06046f98420f250d5db84c695288", + "reference": "7033b824b2ea06046f98420f250d5db84c695288", "shasum": "" }, "require": { @@ -708,20 +703,20 @@ "parser", "shortcodes" ], - "time": "2016-02-21 20:38:42" + "time": "2016-03-20 10:22:44" }, { "name": "symfony/config", - "version": "v2.8.3", + "version": "v2.8.4", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "0f8f94e6a32b5c480024eed5fa5cbd2790d0ad19" + "reference": "5273f4724dc5288fe7a33cb08077ab9852621f2c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/0f8f94e6a32b5c480024eed5fa5cbd2790d0ad19", - "reference": "0f8f94e6a32b5c480024eed5fa5cbd2790d0ad19", + "url": "https://api.github.com/repos/symfony/config/zipball/5273f4724dc5288fe7a33cb08077ab9852621f2c", + "reference": "5273f4724dc5288fe7a33cb08077ab9852621f2c", "shasum": "" }, "require": { @@ -761,20 +756,20 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2016-02-22 16:12:45" + "time": "2016-03-04 07:54:35" }, { "name": "symfony/console", - "version": "v2.8.3", + "version": "v2.8.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "56cc5caf051189720b8de974e4746090aaa10d44" + "reference": "9a5aef5fc0d4eff86853d44202b02be8d5a20154" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/56cc5caf051189720b8de974e4746090aaa10d44", - "reference": "56cc5caf051189720b8de974e4746090aaa10d44", + "url": "https://api.github.com/repos/symfony/console/zipball/9a5aef5fc0d4eff86853d44202b02be8d5a20154", + "reference": "9a5aef5fc0d4eff86853d44202b02be8d5a20154", "shasum": "" }, "require": { @@ -821,20 +816,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2016-02-28 16:20:50" + "time": "2016-03-17 09:19:04" }, { "name": "symfony/debug", - "version": "v2.8.3", + "version": "v2.8.4", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "8e255a0c551d443a8159e3da95b5f99997d100fd" + "reference": "056d028521c18f4932c421f1ffa4c74cd644cda8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/8e255a0c551d443a8159e3da95b5f99997d100fd", - "reference": "8e255a0c551d443a8159e3da95b5f99997d100fd", + "url": "https://api.github.com/repos/symfony/debug/zipball/056d028521c18f4932c421f1ffa4c74cd644cda8", + "reference": "056d028521c18f4932c421f1ffa4c74cd644cda8", "shasum": "" }, "require": { @@ -878,20 +873,20 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2016-01-27 05:14:19" + "time": "2016-03-16 15:31:59" }, { "name": "symfony/dependency-injection", - "version": "v2.8.3", + "version": "v2.8.4", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "62251761a7615435b22ccf562384c588b431be44" + "reference": "f7b4a498e679fa440b16facb934680a1527ed48c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/62251761a7615435b22ccf562384c588b431be44", - "reference": "62251761a7615435b22ccf562384c588b431be44", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f7b4a498e679fa440b16facb934680a1527ed48c", + "reference": "f7b4a498e679fa440b16facb934680a1527ed48c", "shasum": "" }, "require": { @@ -940,20 +935,20 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2016-02-28 16:34:46" + "time": "2016-03-21 07:27:21" }, { "name": "symfony/event-dispatcher", - "version": "v2.8.3", + "version": "v2.8.4", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "78c468665c9568c3faaa9c416a7134308f2d85c3" + "reference": "47d2d8cade9b1c3987573d2943bb9352536cdb87" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/78c468665c9568c3faaa9c416a7134308f2d85c3", - "reference": "78c468665c9568c3faaa9c416a7134308f2d85c3", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/47d2d8cade9b1c3987573d2943bb9352536cdb87", + "reference": "47d2d8cade9b1c3987573d2943bb9352536cdb87", "shasum": "" }, "require": { @@ -1000,20 +995,20 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2016-01-27 05:14:19" + "time": "2016-03-07 14:04:32" }, { "name": "symfony/filesystem", - "version": "v2.8.3", + "version": "v2.8.4", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "65cb36b6539b1d446527d60457248f30d045464d" + "reference": "f08ffdf229252cd2745558cb2112df43903bcae4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/65cb36b6539b1d446527d60457248f30d045464d", - "reference": "65cb36b6539b1d446527d60457248f30d045464d", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/f08ffdf229252cd2745558cb2112df43903bcae4", + "reference": "f08ffdf229252cd2745558cb2112df43903bcae4", "shasum": "" }, "require": { @@ -1049,20 +1044,20 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2016-02-22 15:02:30" + "time": "2016-03-27 10:20:16" }, { "name": "symfony/finder", - "version": "v2.8.3", + "version": "v2.8.4", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "877bb4b16ea573cc8c024e9590888fcf7eb7e0f7" + "reference": "ca24cf2cd4e3826f571e0067e535758e73807aa1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/877bb4b16ea573cc8c024e9590888fcf7eb7e0f7", - "reference": "877bb4b16ea573cc8c024e9590888fcf7eb7e0f7", + "url": "https://api.github.com/repos/symfony/finder/zipball/ca24cf2cd4e3826f571e0067e535758e73807aa1", + "reference": "ca24cf2cd4e3826f571e0067e535758e73807aa1", "shasum": "" }, "require": { @@ -1098,24 +1093,25 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2016-02-22 16:12:45" + "time": "2016-03-10 10:53:53" }, { "name": "symfony/http-foundation", - "version": "v2.8.3", + "version": "v2.8.4", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "6f4e41c41e7d352ed9adf71ff6f2ec1756490a1b" + "reference": "06d6b2c755b2f34ce21e688b62072e9c625709c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/6f4e41c41e7d352ed9adf71ff6f2ec1756490a1b", - "reference": "6f4e41c41e7d352ed9adf71ff6f2ec1756490a1b", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/06d6b2c755b2f34ce21e688b62072e9c625709c4", + "reference": "06d6b2c755b2f34ce21e688b62072e9c625709c4", "shasum": "" }, "require": { "php": ">=5.3.9", + "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php54": "~1.0", "symfony/polyfill-php55": "~1.0" }, @@ -1152,20 +1148,20 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2016-02-28 16:20:50" + "time": "2016-03-27 12:57:53" }, { "name": "symfony/http-kernel", - "version": "v2.8.3", + "version": "v2.8.4", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "67ca6a98d8d7cf243ccb4b716deab2342f409a4d" + "reference": "2c45576fee2eb228d4771342a05b0565e4711ba2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/67ca6a98d8d7cf243ccb4b716deab2342f409a4d", - "reference": "67ca6a98d8d7cf243ccb4b716deab2342f409a4d", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/2c45576fee2eb228d4771342a05b0565e4711ba2", + "reference": "2c45576fee2eb228d4771342a05b0565e4711ba2", "shasum": "" }, "require": { @@ -1234,7 +1230,7 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2016-02-28 21:06:17" + "time": "2016-03-25 01:40:30" }, { "name": "symfony/polyfill-mbstring", @@ -1465,16 +1461,16 @@ }, { "name": "symfony/routing", - "version": "v2.8.3", + "version": "v2.8.4", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "ae38e64bae52753c0f4a1a6583f5ba9bb2b742ab" + "reference": "d7d4a20cb55a90a06c0070d1a360e5ac606306ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/ae38e64bae52753c0f4a1a6583f5ba9bb2b742ab", - "reference": "ae38e64bae52753c0f4a1a6583f5ba9bb2b742ab", + "url": "https://api.github.com/repos/symfony/routing/zipball/d7d4a20cb55a90a06c0070d1a360e5ac606306ef", + "reference": "d7d4a20cb55a90a06c0070d1a360e5ac606306ef", "shasum": "" }, "require": { @@ -1536,20 +1532,20 @@ "uri", "url" ], - "time": "2016-02-04 13:53:00" + "time": "2016-03-23 13:11:46" }, { "name": "symfony/twig-bridge", - "version": "v2.8.3", + "version": "v2.8.4", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "ba898e4714734948dc00c4d776e1d6be165ff8c4" + "reference": "11326178aea4aceb99f72c8ff0cac32d668309c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/ba898e4714734948dc00c4d776e1d6be165ff8c4", - "reference": "ba898e4714734948dc00c4d776e1d6be165ff8c4", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/11326178aea4aceb99f72c8ff0cac32d668309c7", + "reference": "11326178aea4aceb99f72c8ff0cac32d668309c7", "shasum": "" }, "require": { @@ -1561,7 +1557,7 @@ "symfony/console": "~2.8|~3.0.0", "symfony/expression-language": "~2.4|~3.0.0", "symfony/finder": "~2.3|~3.0.0", - "symfony/form": "~2.8", + "symfony/form": "~2.8.4", "symfony/http-kernel": "~2.8|~3.0.0", "symfony/polyfill-intl-icu": "~1.0", "symfony/routing": "~2.2|~3.0.0", @@ -1617,20 +1613,20 @@ ], "description": "Symfony Twig Bridge", "homepage": "https://symfony.com", - "time": "2016-02-22 15:02:30" + "time": "2016-03-25 18:30:27" }, { "name": "symfony/yaml", - "version": "v2.8.3", + "version": "v2.8.4", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "2a4ee40acb880c56f29fb1b8886e7ffe94f3b995" + "reference": "584e52cb8f788a887553ba82db6caacb1d6260bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/2a4ee40acb880c56f29fb1b8886e7ffe94f3b995", - "reference": "2a4ee40acb880c56f29fb1b8886e7ffe94f3b995", + "url": "https://api.github.com/repos/symfony/yaml/zipball/584e52cb8f788a887553ba82db6caacb1d6260bb", + "reference": "584e52cb8f788a887553ba82db6caacb1d6260bb", "shasum": "" }, "require": { @@ -1666,7 +1662,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2016-02-23 07:41:20" + "time": "2016-03-04 07:54:35" }, { "name": "twig/twig", @@ -2109,7 +2105,8 @@ "authors": [ { "name": "Michiel Rook", - "email": "mrook@php.net" + "email": "mrook@php.net", + "role": "Lead" }, { "name": "Phing Community", @@ -2588,9 +2585,7 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" } ], "description": "Pimple is a simple Dependency Injection Container for PHP 5.3", @@ -2980,19 +2975,20 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "2.5.1", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "6731851d6aaf1d0d6c58feff1065227b7fda3ba8" + "reference": "1bcdf03b068a530ac1962ce671dead356eeba43b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/6731851d6aaf1d0d6c58feff1065227b7fda3ba8", - "reference": "6731851d6aaf1d0d6c58feff1065227b7fda3ba8", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1bcdf03b068a530ac1962ce671dead356eeba43b", + "reference": "1bcdf03b068a530ac1962ce671dead356eeba43b", "shasum": "" }, "require": { + "ext-simplexml": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", "php": ">=5.1.2" @@ -3053,20 +3049,20 @@ "phpcs", "standards" ], - "time": "2016-01-19 23:39:10" + "time": "2016-04-03 22:58:34" }, { "name": "symfony/browser-kit", - "version": "v2.8.3", + "version": "v2.8.4", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "6b2085020b4e86fcb7ae44c3ab8ddb91774b33d2" + "reference": "745c19467255cf32eaf311f000eecafd83ca5586" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/6b2085020b4e86fcb7ae44c3ab8ddb91774b33d2", - "reference": "6b2085020b4e86fcb7ae44c3ab8ddb91774b33d2", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/745c19467255cf32eaf311f000eecafd83ca5586", + "reference": "745c19467255cf32eaf311f000eecafd83ca5586", "shasum": "" }, "require": { @@ -3110,20 +3106,20 @@ ], "description": "Symfony BrowserKit Component", "homepage": "https://symfony.com", - "time": "2016-01-27 11:34:40" + "time": "2016-03-04 07:54:35" }, { "name": "symfony/css-selector", - "version": "v2.8.3", + "version": "v2.8.4", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "8d83ff9777cdbd83e7f90d9c48f4729823791a5e" + "reference": "07b7ced3ae0c12918477c095453ea8595000810e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/8d83ff9777cdbd83e7f90d9c48f4729823791a5e", - "reference": "8d83ff9777cdbd83e7f90d9c48f4729823791a5e", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/07b7ced3ae0c12918477c095453ea8595000810e", + "reference": "07b7ced3ae0c12918477c095453ea8595000810e", "shasum": "" }, "require": { @@ -3163,20 +3159,20 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2016-01-27 05:14:19" + "time": "2016-03-04 07:54:35" }, { "name": "symfony/dom-crawler", - "version": "v2.8.3", + "version": "v2.8.4", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "e1a4b4c83f5ee6f5902f1d53035e3718909a0c11" + "reference": "aae5c37d243c6ec11db62221aaff37e7f8005926" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/e1a4b4c83f5ee6f5902f1d53035e3718909a0c11", - "reference": "e1a4b4c83f5ee6f5902f1d53035e3718909a0c11", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/aae5c37d243c6ec11db62221aaff37e7f8005926", + "reference": "aae5c37d243c6ec11db62221aaff37e7f8005926", "shasum": "" }, "require": { @@ -3219,20 +3215,20 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2016-02-28 16:20:50" + "time": "2016-03-23 13:11:46" }, { "name": "symfony/process", - "version": "v2.8.3", + "version": "v2.8.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "7dedd5b60550f33dca16dd7e94ef8aca8b67bbfe" + "reference": "fb467471952ef5cf8497c029980e556b47545333" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/7dedd5b60550f33dca16dd7e94ef8aca8b67bbfe", - "reference": "7dedd5b60550f33dca16dd7e94ef8aca8b67bbfe", + "url": "https://api.github.com/repos/symfony/process/zipball/fb467471952ef5cf8497c029980e556b47545333", + "reference": "fb467471952ef5cf8497c029980e556b47545333", "shasum": "" }, "require": { @@ -3268,7 +3264,7 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2016-02-02 13:33:15" + "time": "2016-03-23 13:11:46" } ], "aliases": [], From fe9df5b76b1dcd5e151d374a4ad0554caef799e5 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Mon, 27 Jun 2016 21:59:53 +0200 Subject: [PATCH 003/431] [Release 3.2.0-RC1] Restore versions in master This reverts commit 37cf178c0c9ed787fd9db8bb33086b72950b8eee. --- build/build.xml | 2 +- phpBB/includes/constants.php | 2 +- phpBB/install/schemas/schema_data.sql | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/build.xml b/build/build.xml index 3f3d5147a0e..b7ef56e7e78 100644 --- a/build/build.xml +++ b/build/build.xml @@ -2,7 +2,7 @@ - + diff --git a/phpBB/includes/constants.php b/phpBB/includes/constants.php index 38017255b40..154e4a1e437 100644 --- a/phpBB/includes/constants.php +++ b/phpBB/includes/constants.php @@ -28,7 +28,7 @@ */ // phpBB Version -@define('PHPBB_VERSION', '3.2.0-RC2-dev'); +@define('PHPBB_VERSION', '3.2.0-RC1'); // QA-related // define('PHPBB_QA', 1); diff --git a/phpBB/install/schemas/schema_data.sql b/phpBB/install/schemas/schema_data.sql index 0cff26977e7..533448543fe 100644 --- a/phpBB/install/schemas/schema_data.sql +++ b/phpBB/install/schemas/schema_data.sql @@ -276,7 +276,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('tpl_allow_php', '0 INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_icons_path', 'images/upload_icons'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_path', 'files'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('use_system_cron', '0'); -INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.2.0-RC2-dev'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.2.0-RC1'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_expire_days', '90'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_gc', '14400'); From 59a228f7cd353491843e3039940363039724a123 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sat, 11 Jun 2016 17:23:58 +0200 Subject: [PATCH 004/431] [ticket/14670] Use symfony 3.1 in master branch Removed sami as it doesn't have a version compatible with symfony 3.x. PHPBB3-14670 --- phpBB/composer.json | 47 +- phpBB/composer.lock | 1435 +++++++++++++++++++++---------------------- 2 files changed, 729 insertions(+), 753 deletions(-) diff --git a/phpBB/composer.json b/phpBB/composer.json index f646810c89d..0679c63304f 100644 --- a/phpBB/composer.json +++ b/phpBB/composer.json @@ -25,42 +25,41 @@ "phpbb/phpbb-core": "self.version" }, "require": { - "php": ">=5.4,<7.1", + "php": ">=5.5.9", "bantu/ini-get-wrapper": "1.0.*", "google/recaptcha": "~1.1", - "guzzlehttp/guzzle": "~5.3", + "guzzlehttp/guzzle": "~6.2", "lusitanian/oauth": "^0.8.1", "marc1706/fast-image-size": "1.1.*", "paragonie/random_compat": "^1.2", "patchwork/utf8": "1.1.*", "s9e/text-formatter": "^0.5.4", - "symfony/config": "2.8.*", - "symfony/console": "2.8.*", - "symfony/debug": "2.8.*", - "symfony/dependency-injection": "2.8.*", - "symfony/event-dispatcher": "2.8.*", - "symfony/filesystem": "2.8.*", - "symfony/finder": "2.8.*", - "symfony/http-foundation": "2.8.*", - "symfony/http-kernel": "2.8.*", - "symfony/proxy-manager-bridge": "2.8.*", - "symfony/routing": "2.8.*", - "symfony/twig-bridge": "2.8.*", - "symfony/yaml": "2.8.*", + "symfony/config": "~3.1", + "symfony/console": "~3.1", + "symfony/debug": "~3.1", + "symfony/dependency-injection": "~3.1", + "symfony/event-dispatcher": "~3.1", + "symfony/filesystem": "~3.1", + "symfony/finder": "~3.1", + "symfony/http-foundation": "~3.1", + "symfony/http-kernel": "~3.1", + "symfony/proxy-manager-bridge": "~3.1", + "symfony/routing": "~3.1", + "symfony/twig-bridge": "~3.1", + "symfony/yaml": "~3.1", "twig/twig": "1.*" }, "require-dev": { - "fabpot/goutte": "~2.0", + "fabpot/goutte": "~3.1", "facebook/webdriver": "~1.1", - "laravel/homestead": "~2.2", + "laravel/homestead": "~3.0", "phing/phing": "2.4.*", - "phpunit/dbunit": "1.3.*", - "phpunit/phpunit": "4.1.*", - "sami/sami": "1.*", + "phpunit/dbunit": "~2.0", + "phpunit/phpunit": "~4.8", "squizlabs/php_codesniffer": "2.*", - "symfony/browser-kit": "2.8.*", - "symfony/css-selector": "2.8.*", - "symfony/dom-crawler": "2.8.*" + "symfony/browser-kit": "~3.1", + "symfony/css-selector": "~3.1", + "symfony/dom-crawler": "~3.1" }, "extra": { "branch-alias": { @@ -69,7 +68,7 @@ }, "config": { "platform": { - "php": "5.4" + "php": "5.5.9" } } } diff --git a/phpBB/composer.lock b/phpBB/composer.lock index d254eee40ef..abf093b06e6 100644 --- a/phpBB/composer.lock +++ b/phpBB/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "fec7bc3228cc92090bfd861971e7d887", - "content-hash": "47ba876ad4313363a22bdc59c1cec141", + "hash": "84320427da5d1b9072b8fed14905435a", + "content-hash": "46539387741e2f185eebfa9e9c14ff84", "packages": [ { "name": "bantu/ini-get-wrapper", @@ -84,28 +84,38 @@ }, { "name": "guzzlehttp/guzzle", - "version": "5.3.1", + "version": "6.2.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "70f1fa53b71c4647bf2762c09068a95f77e12fb8" + "reference": "3f808fba627f2c5b69e2501217bf31af349c1427" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/70f1fa53b71c4647bf2762c09068a95f77e12fb8", - "reference": "70f1fa53b71c4647bf2762c09068a95f77e12fb8", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/3f808fba627f2c5b69e2501217bf31af349c1427", + "reference": "3f808fba627f2c5b69e2501217bf31af349c1427", "shasum": "" }, "require": { - "guzzlehttp/ringphp": "^1.1", - "php": ">=5.4.0" + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.3.1", + "php": ">=5.5" }, "require-dev": { "ext-curl": "*", - "phpunit/phpunit": "^4.0" + "phpunit/phpunit": "^4.0", + "psr/log": "^1.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, "autoload": { + "files": [ + "src/functions_include.php" + ], "psr-4": { "GuzzleHttp\\": "src/" } @@ -121,7 +131,7 @@ "homepage": "https://github.com/mtdowling" } ], - "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients", + "description": "Guzzle is a PHP HTTP client library", "homepage": "http://guzzlephp.org/", "keywords": [ "client", @@ -132,44 +142,41 @@ "rest", "web service" ], - "time": "2016-07-15 19:28:39" + "time": "2016-07-15 17:22:37" }, { - "name": "guzzlehttp/ringphp", - "version": "1.1.0", + "name": "guzzlehttp/promises", + "version": "1.2.0", "source": { "type": "git", - "url": "https://github.com/guzzle/RingPHP.git", - "reference": "dbbb91d7f6c191e5e405e900e3102ac7f261bc0b" + "url": "https://github.com/guzzle/promises.git", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/RingPHP/zipball/dbbb91d7f6c191e5e405e900e3102ac7f261bc0b", - "reference": "dbbb91d7f6c191e5e405e900e3102ac7f261bc0b", + "url": "https://api.github.com/repos/guzzle/promises/zipball/c10d860e2a9595f8883527fa0021c7da9e65f579", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579", "shasum": "" }, "require": { - "guzzlehttp/streams": "~3.0", - "php": ">=5.4.0", - "react/promise": "~2.0" + "php": ">=5.5.0" }, "require-dev": { - "ext-curl": "*", "phpunit/phpunit": "~4.0" }, - "suggest": { - "ext-curl": "Guzzle will use specific adapters if cURL is present" - }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "1.0-dev" } }, "autoload": { "psr-4": { - "GuzzleHttp\\Ring\\": "src/" - } + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -182,25 +189,32 @@ "homepage": "https://github.com/mtdowling" } ], - "description": "Provides a simple API and specification that abstracts away the details of HTTP into a single PHP function.", - "time": "2015-05-20 03:37:09" + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-05-18 16:56:05" }, { - "name": "guzzlehttp/streams", - "version": "3.0.0", + "name": "guzzlehttp/psr7", + "version": "1.3.1", "source": { "type": "git", - "url": "https://github.com/guzzle/streams.git", - "reference": "47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5" + "url": "https://github.com/guzzle/psr7.git", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/streams/zipball/47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5", - "reference": "47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": ">=5.4.0", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" }, "require-dev": { "phpunit/phpunit": "~4.0" @@ -208,13 +222,16 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "1.4-dev" } }, "autoload": { "psr-4": { - "GuzzleHttp\\Stream\\": "src/" - } + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -227,55 +244,14 @@ "homepage": "https://github.com/mtdowling" } ], - "description": "Provides a simple abstraction over streams of data", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "Guzzle", - "stream" - ], - "time": "2014-10-12 19:18:40" - }, - { - "name": "ircmaxell/password-compat", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/ircmaxell/password_compat.git", - "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ircmaxell/password_compat/zipball/5c5cde8822a69545767f7c7f3058cb15ff84614c", - "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c", - "shasum": "" - }, - "require-dev": { - "phpunit/phpunit": "4.*" - }, - "type": "library", - "autoload": { - "files": [ - "lib/password.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Anthony Ferrara", - "email": "ircmaxell@php.net", - "homepage": "http://blog.ircmaxell.com" - } - ], - "description": "A compatibility library for the proposed simplified password hashing algorithm: https://wiki.php.net/rfc/password_hash", - "homepage": "https://github.com/ircmaxell/password_compat", + "description": "PSR-7 message implementation", "keywords": [ - "hashing", - "password" + "http", + "message", + "stream", + "uri" ], - "time": "2014-11-20 16:49:30" + "time": "2016-06-24 23:00:38" }, { "name": "lusitanian/oauth", @@ -558,23 +534,31 @@ "time": "2015-12-15 15:29:47" }, { - "name": "psr/log", - "version": "1.0.0", + "name": "psr/http-message", + "version": "1.0", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" + "url": "https://github.com/php-fig/http-message.git", + "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", - "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/85d63699f0dbedb190bbd4b0d2b9dc707ea4c298", + "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298", "shasum": "" }, + "require": { + "php": ">=5.3.0" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { - "psr-0": { - "Psr\\Log\\": "" + "psr-4": { + "Psr\\Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -587,44 +571,36 @@ "homepage": "http://www.php-fig.org/" } ], - "description": "Common interface for logging libraries", + "description": "Common interface for HTTP messages", "keywords": [ - "log", + "http", + "http-message", "psr", - "psr-3" + "psr-7", + "request", + "response" ], - "time": "2012-12-21 11:40:51" + "time": "2015-05-04 20:22:00" }, { - "name": "react/promise", - "version": "v2.4.1", + "name": "psr/log", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/reactphp/promise.git", - "reference": "8025426794f1944de806618671d4fa476dc7626f" + "url": "https://github.com/php-fig/log.git", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/8025426794f1944de806618671d4fa476dc7626f", - "reference": "8025426794f1944de806618671d4fa476dc7626f", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", "shasum": "" }, - "require": { - "php": ">=5.4.0" - }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, "autoload": { - "psr-4": { - "React\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] + "psr-0": { + "Psr\\Log\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -632,12 +608,17 @@ ], "authors": [ { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "A lightweight implementation of CommonJS Promises/A for PHP", - "time": "2016-05-03 17:50:52" + "description": "Common interface for logging libraries", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2012-12-21 11:40:51" }, { "name": "s9e/text-formatter", @@ -701,21 +682,21 @@ }, { "name": "symfony/config", - "version": "v2.8.8", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "0926e69411eba491803dbafb9f1f233e2ced58d0" + "reference": "bcf5aebabc95b56e370e13d78565f74c7d8726dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/0926e69411eba491803dbafb9f1f233e2ced58d0", - "reference": "0926e69411eba491803dbafb9f1f233e2ced58d0", + "url": "https://api.github.com/repos/symfony/config/zipball/bcf5aebabc95b56e370e13d78565f74c7d8726dc", + "reference": "bcf5aebabc95b56e370e13d78565f74c7d8726dc", "shasum": "" }, "require": { - "php": ">=5.3.9", - "symfony/filesystem": "~2.3|~3.0.0" + "php": ">=5.5.9", + "symfony/filesystem": "~2.8|~3.0" }, "suggest": { "symfony/yaml": "To use the yaml reference dumper" @@ -723,7 +704,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -750,30 +731,30 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2016-06-29 05:31:50" + "time": "2016-06-29 05:41:56" }, { "name": "symfony/console", - "version": "v2.8.8", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "c392a6ec72f2122748032c2ad6870420561ffcfa" + "reference": "747154aa69b0f83cd02fc9aa554836dee417631a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c392a6ec72f2122748032c2ad6870420561ffcfa", - "reference": "c392a6ec72f2122748032c2ad6870420561ffcfa", + "url": "https://api.github.com/repos/symfony/console/zipball/747154aa69b0f83cd02fc9aa554836dee417631a", + "reference": "747154aa69b0f83cd02fc9aa554836dee417631a", "shasum": "" }, "require": { - "php": ">=5.3.9", + "php": ">=5.5.9", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { "psr/log": "~1.0", - "symfony/event-dispatcher": "~2.1|~3.0.0", - "symfony/process": "~2.1|~3.0.0" + "symfony/event-dispatcher": "~2.8|~3.0", + "symfony/process": "~2.8|~3.0" }, "suggest": { "psr/log": "For using the console logger", @@ -783,7 +764,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -810,37 +791,37 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2016-06-29 07:02:14" + "time": "2016-06-29 07:02:31" }, { "name": "symfony/debug", - "version": "v2.8.8", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "2477199ad1dd1c43fe18a84d7907fffa025eff10" + "reference": "06e2d52e307ef880ac739f44ee6c2418ca9e3283" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/2477199ad1dd1c43fe18a84d7907fffa025eff10", - "reference": "2477199ad1dd1c43fe18a84d7907fffa025eff10", + "url": "https://api.github.com/repos/symfony/debug/zipball/06e2d52e307ef880ac739f44ee6c2418ca9e3283", + "reference": "06e2d52e307ef880ac739f44ee6c2418ca9e3283", "shasum": "" }, "require": { - "php": ">=5.3.9", + "php": ">=5.5.9", "psr/log": "~1.0" }, "conflict": { "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" }, "require-dev": { - "symfony/class-loader": "~2.2|~3.0.0", - "symfony/http-kernel": "~2.3.24|~2.5.9|~2.6,>=2.6.2|~3.0.0" + "symfony/class-loader": "~2.8|~3.0", + "symfony/http-kernel": "~2.8|~3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -867,32 +848,29 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2016-06-29 05:29:29" + "time": "2016-06-29 05:41:56" }, { "name": "symfony/dependency-injection", - "version": "v2.8.8", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "2dd85de8216079d1360b2b14988cd5cdbbb49063" + "reference": "b7272b65f2f46cbe77def7d33916f2613669c508" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/2dd85de8216079d1360b2b14988cd5cdbbb49063", - "reference": "2dd85de8216079d1360b2b14988cd5cdbbb49063", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b7272b65f2f46cbe77def7d33916f2613669c508", + "reference": "b7272b65f2f46cbe77def7d33916f2613669c508", "shasum": "" }, "require": { - "php": ">=5.3.9" - }, - "conflict": { - "symfony/expression-language": "<2.6" + "php": ">=5.5.9" }, "require-dev": { - "symfony/config": "~2.2|~3.0.0", - "symfony/expression-language": "~2.6|~3.0.0", - "symfony/yaml": "~2.1|~3.0.0" + "symfony/config": "~2.8|~3.0", + "symfony/expression-language": "~2.8|~3.0", + "symfony/yaml": "~2.8|~3.0" }, "suggest": { "symfony/config": "", @@ -903,7 +881,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -930,31 +908,31 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2016-06-29 05:31:50" + "time": "2016-06-29 05:42:25" }, { "name": "symfony/event-dispatcher", - "version": "v2.8.8", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "b180b70439dca70049b6b9b7e21d75e6e5d7aca9" + "reference": "7f9839ede2070f53e7e2f0849b9bd14748c434c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b180b70439dca70049b6b9b7e21d75e6e5d7aca9", - "reference": "b180b70439dca70049b6b9b7e21d75e6e5d7aca9", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7f9839ede2070f53e7e2f0849b9bd14748c434c5", + "reference": "7f9839ede2070f53e7e2f0849b9bd14748c434c5", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.5.9" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~2.0,>=2.0.5|~3.0.0", - "symfony/dependency-injection": "~2.6|~3.0.0", - "symfony/expression-language": "~2.6|~3.0.0", - "symfony/stopwatch": "~2.3|~3.0.0" + "symfony/config": "~2.8|~3.0", + "symfony/dependency-injection": "~2.8|~3.0", + "symfony/expression-language": "~2.8|~3.0", + "symfony/stopwatch": "~2.8|~3.0" }, "suggest": { "symfony/dependency-injection": "", @@ -963,7 +941,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -990,29 +968,29 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2016-06-29 05:29:29" + "time": "2016-06-29 05:41:56" }, { "name": "symfony/filesystem", - "version": "v2.8.8", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "7258ddd6f987053f21fa43d03430580ba54e6096" + "reference": "322da5f0910d8aa0b25fa65ffccaba68dbddb890" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/7258ddd6f987053f21fa43d03430580ba54e6096", - "reference": "7258ddd6f987053f21fa43d03430580ba54e6096", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/322da5f0910d8aa0b25fa65ffccaba68dbddb890", + "reference": "322da5f0910d8aa0b25fa65ffccaba68dbddb890", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.5.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -1039,29 +1017,29 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2016-06-29 05:31:50" + "time": "2016-06-29 05:41:56" }, { "name": "symfony/finder", - "version": "v2.8.8", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "bf0506ef4e7778fd3f0f1f141ab5e8c1ef35dd7d" + "reference": "8201978de88a9fa0923e18601bb17f1df9c721e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/bf0506ef4e7778fd3f0f1f141ab5e8c1ef35dd7d", - "reference": "bf0506ef4e7778fd3f0f1f141ab5e8c1ef35dd7d", + "url": "https://api.github.com/repos/symfony/finder/zipball/8201978de88a9fa0923e18601bb17f1df9c721e7", + "reference": "8201978de88a9fa0923e18601bb17f1df9c721e7", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.5.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -1088,35 +1066,33 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2016-06-29 05:29:29" + "time": "2016-06-29 05:41:56" }, { "name": "symfony/http-foundation", - "version": "v2.8.8", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "7a55440a2bebd37b8bd06f99f5def1ddf0aa9249" + "reference": "6b5a3764c5b0ce1f0ec3b8be5bba969122a78cfc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/7a55440a2bebd37b8bd06f99f5def1ddf0aa9249", - "reference": "7a55440a2bebd37b8bd06f99f5def1ddf0aa9249", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/6b5a3764c5b0ce1f0ec3b8be5bba969122a78cfc", + "reference": "6b5a3764c5b0ce1f0ec3b8be5bba969122a78cfc", "shasum": "" }, "require": { - "php": ">=5.3.9", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php54": "~1.0", - "symfony/polyfill-php55": "~1.0" + "php": ">=5.5.9", + "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { - "symfony/expression-language": "~2.4|~3.0.0" + "symfony/expression-language": "~2.8|~3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -1143,48 +1119,48 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2016-06-29 07:02:14" + "time": "2016-06-29 07:02:31" }, { "name": "symfony/http-kernel", - "version": "v2.8.8", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "2e887a1196c961a0e441f5be87908a5425be015c" + "reference": "3a1ce1829128988826739bd9dd820f3238b92d65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/2e887a1196c961a0e441f5be87908a5425be015c", - "reference": "2e887a1196c961a0e441f5be87908a5425be015c", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/3a1ce1829128988826739bd9dd820f3238b92d65", + "reference": "3a1ce1829128988826739bd9dd820f3238b92d65", "shasum": "" }, "require": { - "php": ">=5.3.9", + "php": ">=5.5.9", "psr/log": "~1.0", - "symfony/debug": "~2.6,>=2.6.2", - "symfony/event-dispatcher": "~2.6,>=2.6.7|~3.0.0", - "symfony/http-foundation": "~2.7.15|~2.8.8|~3.0.8" + "symfony/debug": "~2.8|~3.0", + "symfony/event-dispatcher": "~2.8|~3.0", + "symfony/http-foundation": "~2.8.8|~3.0.8|~3.1.2|~3.2" }, "conflict": { - "symfony/config": "<2.7" + "symfony/config": "<2.8" }, "require-dev": { - "symfony/browser-kit": "~2.3|~3.0.0", - "symfony/class-loader": "~2.1|~3.0.0", - "symfony/config": "~2.8", - "symfony/console": "~2.3|~3.0.0", - "symfony/css-selector": "~2.0,>=2.0.5|~3.0.0", - "symfony/dependency-injection": "~2.8|~3.0.0", - "symfony/dom-crawler": "~2.0,>=2.0.5|~3.0.0", - "symfony/expression-language": "~2.4|~3.0.0", - "symfony/finder": "~2.0,>=2.0.5|~3.0.0", - "symfony/process": "~2.0,>=2.0.5|~3.0.0", - "symfony/routing": "~2.8|~3.0.0", - "symfony/stopwatch": "~2.3|~3.0.0", - "symfony/templating": "~2.2|~3.0.0", - "symfony/translation": "~2.0,>=2.0.5|~3.0.0", - "symfony/var-dumper": "~2.6|~3.0.0" + "symfony/browser-kit": "~2.8|~3.0", + "symfony/class-loader": "~2.8|~3.0", + "symfony/config": "~2.8|~3.0", + "symfony/console": "~2.8|~3.0", + "symfony/css-selector": "~2.8|~3.0", + "symfony/dependency-injection": "~2.8|~3.0", + "symfony/dom-crawler": "~2.8|~3.0", + "symfony/expression-language": "~2.8|~3.0", + "symfony/finder": "~2.8|~3.0", + "symfony/process": "~2.8|~3.0", + "symfony/routing": "~2.8|~3.0", + "symfony/stopwatch": "~2.8|~3.0", + "symfony/templating": "~2.8|~3.0", + "symfony/translation": "~2.8|~3.0", + "symfony/var-dumper": "~2.8|~3.0" }, "suggest": { "symfony/browser-kit": "", @@ -1198,7 +1174,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -1225,7 +1201,7 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2016-06-30 15:42:15" + "time": "2016-06-30 17:16:01" }, { "name": "symfony/polyfill-mbstring", @@ -1286,146 +1262,32 @@ ], "time": "2016-05-18 14:26:46" }, - { - "name": "symfony/polyfill-php54", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php54.git", - "reference": "34d761992f6f2cc6092cc0e5e93f38b53ba5e4f1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/34d761992f6f2cc6092cc0e5e93f38b53ba5e4f1", - "reference": "34d761992f6f2cc6092cc0e5e93f38b53ba5e4f1", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php54\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 5.4+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2016-05-18 14:26:46" - }, - { - "name": "symfony/polyfill-php55", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php55.git", - "reference": "bf2ff9ad6be1a4772cb873e4eea94d70daa95c6d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php55/zipball/bf2ff9ad6be1a4772cb873e4eea94d70daa95c6d", - "reference": "bf2ff9ad6be1a4772cb873e4eea94d70daa95c6d", - "shasum": "" - }, - "require": { - "ircmaxell/password-compat": "~1.0", - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php55\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 5.5+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2016-05-18 14:26:46" - }, { "name": "symfony/proxy-manager-bridge", - "version": "v2.8.8", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/symfony/proxy-manager-bridge.git", - "reference": "812f98dabdb72a3a9b3986657fde5a686de5d1da" + "reference": "31f3170e0624e523ea795a35a265202a1c927549" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/812f98dabdb72a3a9b3986657fde5a686de5d1da", - "reference": "812f98dabdb72a3a9b3986657fde5a686de5d1da", + "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/31f3170e0624e523ea795a35a265202a1c927549", + "reference": "31f3170e0624e523ea795a35a265202a1c927549", "shasum": "" }, "require": { "ocramius/proxy-manager": "~0.4|~1.0|~2.0", - "php": ">=5.3.9", - "symfony/dependency-injection": "~2.8|~3.0.0" + "php": ">=5.5.9", + "symfony/dependency-injection": "~2.8|~3.0" }, "require-dev": { - "symfony/config": "~2.3|~3.0.0" + "symfony/config": "~2.8|~3.0" }, "type": "symfony-bridge", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -1452,36 +1314,36 @@ ], "description": "Symfony ProxyManager Bridge", "homepage": "https://symfony.com", - "time": "2016-06-29 05:29:29" + "time": "2016-06-29 05:41:56" }, { "name": "symfony/routing", - "version": "v2.8.8", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "cdd298b1d45b9882de0905856e89171bf487c6d5" + "reference": "22c7adc204057a0ff0b12eea2889782a5deb70a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/cdd298b1d45b9882de0905856e89171bf487c6d5", - "reference": "cdd298b1d45b9882de0905856e89171bf487c6d5", + "url": "https://api.github.com/repos/symfony/routing/zipball/22c7adc204057a0ff0b12eea2889782a5deb70a3", + "reference": "22c7adc204057a0ff0b12eea2889782a5deb70a3", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.5.9" }, "conflict": { - "symfony/config": "<2.7" + "symfony/config": "<2.8" }, "require-dev": { "doctrine/annotations": "~1.0", "doctrine/common": "~2.2", "psr/log": "~1.0", - "symfony/config": "~2.7|~3.0.0", - "symfony/expression-language": "~2.4|~3.0.0", - "symfony/http-foundation": "~2.3|~3.0.0", - "symfony/yaml": "~2.0,>=2.0.5|~3.0.0" + "symfony/config": "~2.8|~3.0", + "symfony/expression-language": "~2.8|~3.0", + "symfony/http-foundation": "~2.8|~3.0", + "symfony/yaml": "~2.8|~3.0" }, "suggest": { "doctrine/annotations": "For using the annotation loader", @@ -1494,7 +1356,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -1527,42 +1389,42 @@ "uri", "url" ], - "time": "2016-06-29 05:29:29" + "time": "2016-06-29 05:41:56" }, { "name": "symfony/twig-bridge", - "version": "v2.8.8", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "b2db0187b7b805bb349ffe2714fbc846124c71ba" + "reference": "d7044fc3ec23f9a7b626c4798fc013b234756696" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/b2db0187b7b805bb349ffe2714fbc846124c71ba", - "reference": "b2db0187b7b805bb349ffe2714fbc846124c71ba", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/d7044fc3ec23f9a7b626c4798fc013b234756696", + "reference": "d7044fc3ec23f9a7b626c4798fc013b234756696", "shasum": "" }, "require": { - "php": ">=5.3.9", + "php": ">=5.5.9", "twig/twig": "~1.23|~2.0" }, "require-dev": { - "symfony/asset": "~2.7|~3.0.0", - "symfony/console": "~2.8|~3.0.0", - "symfony/expression-language": "~2.4|~3.0.0", - "symfony/finder": "~2.3|~3.0.0", - "symfony/form": "~2.8.4", - "symfony/http-kernel": "~2.8|~3.0.0", + "symfony/asset": "~2.8|~3.0", + "symfony/console": "~2.8|~3.0", + "symfony/expression-language": "~2.8|~3.0", + "symfony/finder": "~2.8|~3.0", + "symfony/form": "~3.0.4", + "symfony/http-kernel": "~2.8|~3.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/routing": "~2.2|~3.0.0", - "symfony/security": "~2.6|~3.0.0", - "symfony/security-acl": "~2.6|~3.0.0", - "symfony/stopwatch": "~2.2|~3.0.0", - "symfony/templating": "~2.1|~3.0.0", - "symfony/translation": "~2.7|~3.0.0", - "symfony/var-dumper": "~2.6|~3.0.0", - "symfony/yaml": "~2.0,>=2.0.5|~3.0.0" + "symfony/routing": "~2.8|~3.0", + "symfony/security": "~2.8|~3.0", + "symfony/security-acl": "~2.8|~3.0", + "symfony/stopwatch": "~2.8|~3.0", + "symfony/templating": "~2.8|~3.0", + "symfony/translation": "~2.8|~3.0", + "symfony/var-dumper": "~2.8|~3.0", + "symfony/yaml": "~2.8|~3.0" }, "suggest": { "symfony/asset": "For using the AssetExtension", @@ -1581,7 +1443,7 @@ "type": "symfony-bridge", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -1608,29 +1470,29 @@ ], "description": "Symfony Twig Bridge", "homepage": "https://symfony.com", - "time": "2016-06-29 05:29:29" + "time": "2016-06-29 05:41:56" }, { "name": "symfony/yaml", - "version": "v2.8.8", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "dba4bb5846798cd12f32e2d8f3f35d77045773c8" + "reference": "2884c26ce4c1d61aebf423a8b912950fe7c764de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/dba4bb5846798cd12f32e2d8f3f35d77045773c8", - "reference": "dba4bb5846798cd12f32e2d8f3f35d77045773c8", + "url": "https://api.github.com/repos/symfony/yaml/zipball/2884c26ce4c1d61aebf423a8b912950fe7c764de", + "reference": "2884c26ce4c1d61aebf423a8b912950fe7c764de", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.5.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -1657,7 +1519,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2016-06-29 05:29:29" + "time": "2016-06-29 05:41:56" }, { "name": "twig/twig", @@ -1722,38 +1584,37 @@ }, { "name": "zendframework/zend-code", - "version": "2.5.1", + "version": "2.6.3", "source": { "type": "git", "url": "https://github.com/zendframework/zend-code.git", - "reference": "5d998f261ec2a55171c71da57a11622745680153" + "reference": "95033f061b083e16cdee60530ec260d7d628b887" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-code/zipball/5d998f261ec2a55171c71da57a11622745680153", - "reference": "5d998f261ec2a55171c71da57a11622745680153", + "url": "https://api.github.com/repos/zendframework/zend-code/zipball/95033f061b083e16cdee60530ec260d7d628b887", + "reference": "95033f061b083e16cdee60530ec260d7d628b887", "shasum": "" }, "require": { - "php": ">=5.3.23", - "zendframework/zend-eventmanager": "~2.5" + "php": "^5.5 || 7.0.0 - 7.0.4 || ^7.0.6", + "zendframework/zend-eventmanager": "^2.6 || ^3.0" }, "require-dev": { - "doctrine/common": ">=2.1", + "doctrine/annotations": "~1.0", "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0", - "zendframework/zend-stdlib": "~2.5", - "zendframework/zend-version": "~2.5" + "phpunit/phpunit": "^4.8.21", + "zendframework/zend-stdlib": "^2.7 || ^3.0" }, "suggest": { - "doctrine/common": "Doctrine\\Common >=2.1 for annotation features", + "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", "zendframework/zend-stdlib": "Zend\\Stdlib component" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev", - "dev-develop": "2.6-dev" + "dev-master": "2.6-dev", + "dev-develop": "2.7-dev" } }, "autoload": { @@ -1771,35 +1632,41 @@ "code", "zf2" ], - "time": "2015-06-03 15:31:59" + "time": "2016-04-20 17:26:42" }, { "name": "zendframework/zend-eventmanager", - "version": "2.5.1", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/zendframework/zend-eventmanager.git", - "reference": "d94a16039144936f107f906896349900fd634443" + "reference": "5c80bdee0e952be112dcec0968bad770082c3a6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/d94a16039144936f107f906896349900fd634443", - "reference": "d94a16039144936f107f906896349900fd634443", + "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/5c80bdee0e952be112dcec0968bad770082c3a6e", + "reference": "5c80bdee0e952be112dcec0968bad770082c3a6e", "shasum": "" }, "require": { - "php": ">=5.3.23", - "zendframework/zend-stdlib": "~2.5" + "php": "^5.5 || ^7.0" }, "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0" + "athletic/athletic": "^0.1", + "container-interop/container-interop": "^1.1.0", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "^2.0", + "zendframework/zend-stdlib": "^2.7.3 || ^3.0" + }, + "suggest": { + "container-interop/container-interop": "^1.1.0, to use the lazy listeners feature", + "zendframework/zend-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev", - "dev-develop": "2.6-dev" + "dev-master": "3.0-dev", + "dev-develop": "3.1-dev" } }, "autoload": { @@ -1811,96 +1678,97 @@ "license": [ "BSD-3-Clause" ], + "description": "Trigger and listen to events within a PHP application", "homepage": "https://github.com/zendframework/zend-eventmanager", "keywords": [ + "event", "eventmanager", + "events", "zf2" ], - "time": "2015-06-03 15:32:01" - }, + "time": "2016-02-18 20:53:00" + } + ], + "packages-dev": [ { - "name": "zendframework/zend-stdlib", - "version": "2.5.1", + "name": "doctrine/instantiator", + "version": "1.0.5", "source": { "type": "git", - "url": "https://github.com/zendframework/zend-stdlib.git", - "reference": "cc8e90a60dd5d44b9730b77d07b97550091da1ae" + "url": "https://github.com/doctrine/instantiator.git", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/cc8e90a60dd5d44b9730b77d07b97550091da1ae", - "reference": "cc8e90a60dd5d44b9730b77d07b97550091da1ae", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", "shasum": "" }, "require": { - "php": ">=5.3.23" + "php": ">=5.3,<8.0-DEV" }, "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", "phpunit/phpunit": "~4.0", - "zendframework/zend-config": "~2.5", - "zendframework/zend-eventmanager": "~2.5", - "zendframework/zend-filter": "~2.5", - "zendframework/zend-inputfilter": "~2.5", - "zendframework/zend-serializer": "~2.5", - "zendframework/zend-servicemanager": "~2.5" - }, - "suggest": { - "zendframework/zend-eventmanager": "To support aggregate hydrator usage", - "zendframework/zend-filter": "To support naming strategy hydrator usage", - "zendframework/zend-serializer": "Zend\\Serializer component", - "zendframework/zend-servicemanager": "To support hydrator plugin manager usage" + "squizlabs/php_codesniffer": "~2.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev", - "dev-develop": "2.6-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Zend\\Stdlib\\": "src/" + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } ], - "homepage": "https://github.com/zendframework/zend-stdlib", + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", "keywords": [ - "stdlib", - "zf2" + "constructor", + "instantiate" ], - "time": "2015-06-03 15:32:03" - } - ], - "packages-dev": [ + "time": "2015-06-14 21:17:01" + }, { "name": "fabpot/goutte", - "version": "v2.0.4", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/Goutte.git", - "reference": "0ad3ee6dc2d0aaa832a80041a1e09bf394e99802" + "reference": "3cbc6ed222422a28400e470050f14928a153207e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/0ad3ee6dc2d0aaa832a80041a1e09bf394e99802", - "reference": "0ad3ee6dc2d0aaa832a80041a1e09bf394e99802", + "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/3cbc6ed222422a28400e470050f14928a153207e", + "reference": "3cbc6ed222422a28400e470050f14928a153207e", "shasum": "" }, "require": { - "guzzlehttp/guzzle": ">=4,<6", - "php": ">=5.4.0", - "symfony/browser-kit": "~2.1", - "symfony/css-selector": "~2.1", - "symfony/dom-crawler": "~2.1" + "guzzlehttp/guzzle": "^6.0", + "php": ">=5.5.0", + "symfony/browser-kit": "~2.1|~3.0", + "symfony/css-selector": "~2.1|~3.0", + "symfony/dom-crawler": "~2.1|~3.0" }, "type": "application", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -1923,23 +1791,24 @@ "keywords": [ "scraper" ], - "time": "2015-05-05 21:14:57" + "time": "2015-11-05 12:58:44" }, { "name": "facebook/webdriver", - "version": "1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/facebook/php-webdriver.git", - "reference": "1c98108ba3eb435b681655764de11502a0653705" + "reference": "0b889d7de7461439f8a3bbcca46e0f696cb27986" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/1c98108ba3eb435b681655764de11502a0653705", - "reference": "1c98108ba3eb435b681655764de11502a0653705", + "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/0b889d7de7461439f8a3bbcca46e0f696cb27986", + "reference": "0b889d7de7461439f8a3bbcca46e0f696cb27986", "shasum": "" }, "require": { + "ext-curl": "*", "php": ">=5.3.19" }, "require-dev": { @@ -1966,31 +1835,36 @@ "selenium", "webdriver" ], - "time": "2015-12-31 15:58:49" + "time": "2016-06-04 00:02:34" }, { "name": "laravel/homestead", - "version": "v2.2.1", + "version": "v3.0.2", "source": { "type": "git", "url": "https://github.com/laravel/homestead.git", - "reference": "5008339af93bbb73efee53cbef9374c5d443c708" + "reference": "705449c3dbedbded4bd4f3ed725303c69253cad4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/homestead/zipball/5008339af93bbb73efee53cbef9374c5d443c708", - "reference": "5008339af93bbb73efee53cbef9374c5d443c708", + "url": "https://api.github.com/repos/laravel/homestead/zipball/705449c3dbedbded4bd4f3ed725303c69253cad4", + "reference": "705449c3dbedbded4bd4f3ed725303c69253cad4", "shasum": "" }, "require": { - "php": ">=5.4", - "symfony/console": "~2.0", - "symfony/process": "~2.0" + "php": ">=5.5.9", + "symfony/console": "~2.3|~3.0", + "symfony/process": "~2.3|~3.0" }, "bin": [ "homestead" ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, "autoload": { "psr-4": { "Laravel\\Homestead\\": "src/" @@ -2007,197 +1881,304 @@ } ], "description": "A virtual machine for web artisans.", - "time": "2016-01-05 19:19:26" + "time": "2016-02-16 22:31:00" }, { - "name": "michelf/php-markdown", - "version": "1.6.0", + "name": "phing/phing", + "version": "2.4.14", "source": { "type": "git", - "url": "https://github.com/michelf/php-markdown.git", - "reference": "156e56ee036505ec637d761ee62dc425d807183c" + "url": "https://github.com/phingofficial/phing.git", + "reference": "41075d93ca254f1c90c79ec7ce81be2b2629e138" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/michelf/php-markdown/zipball/156e56ee036505ec637d761ee62dc425d807183c", - "reference": "156e56ee036505ec637d761ee62dc425d807183c", + "url": "https://api.github.com/repos/phingofficial/phing/zipball/41075d93ca254f1c90c79ec7ce81be2b2629e138", + "reference": "41075d93ca254f1c90c79ec7ce81be2b2629e138", "shasum": "" }, "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-lib": "1.4.x-dev" - } + "php": ">=5.2.0" }, + "bin": [ + "bin/phing" + ], + "type": "library", "autoload": { - "psr-0": { - "Michelf": "" - } + "classmap": [ + "classes/phing/" + ] }, "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "classes" + ], "license": [ - "BSD-3-Clause" + "LGPL3" ], "authors": [ { - "name": "Michel Fortin", - "email": "michel.fortin@michelf.ca", - "homepage": "https://michelf.ca/", - "role": "Developer" + "name": "Michiel Rook", + "email": "mrook@php.net" }, { - "name": "John Gruber", - "homepage": "https://daringfireball.net/" + "name": "Phing Community", + "homepage": "http://www.phing.info/trac/wiki/Development/Contributors" } ], - "description": "PHP Markdown", - "homepage": "https://michelf.ca/projects/php-markdown/", + "description": "PHing Is Not GNU make; it's a PHP project build system or build tool based on Apache Ant.", + "homepage": "http://www.phing.info/", "keywords": [ - "markdown" + "build", + "task", + "tool" ], - "time": "2015-12-24 01:37:31" + "time": "2012-11-29 21:23:47" }, { - "name": "nikic/php-parser", - "version": "v0.9.5", + "name": "phpdocumentor/reflection-common", + "version": "1.0", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "ef70767475434bdb3615b43c327e2cae17ef12eb" + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ef70767475434bdb3615b43c327e2cae17ef12eb", - "reference": "ef70767475434bdb3615b43c327e2cae17ef12eb", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=5.2" + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.9-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "psr-0": { - "PHPParser": "lib/" + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Nikita Popov" + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } ], - "description": "A PHP parser written in PHP", + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", "keywords": [ - "parser", - "php" + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" ], - "time": "2014-07-23 18:24:17" + "time": "2015-12-27 11:43:31" }, { - "name": "phing/phing", - "version": "2.4.14", + "name": "phpdocumentor/reflection-docblock", + "version": "3.1.0", "source": { "type": "git", - "url": "https://github.com/phingofficial/phing.git", - "reference": "41075d93ca254f1c90c79ec7ce81be2b2629e138" + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "9270140b940ff02e58ec577c237274e92cd40cdd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phingofficial/phing/zipball/41075d93ca254f1c90c79ec7ce81be2b2629e138", - "reference": "41075d93ca254f1c90c79ec7ce81be2b2629e138", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9270140b940ff02e58ec577c237274e92cd40cdd", + "reference": "9270140b940ff02e58ec577c237274e92cd40cdd", "shasum": "" }, "require": { - "php": ">=5.2.0" + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0@dev", + "phpdocumentor/type-resolver": "^0.2.0", + "webmozart/assert": "^1.0" }, - "bin": [ - "bin/phing" + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2016-06-10 09:48:41" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b39c7a5b194f9ed7bd0dd345c751007a41862443", + "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { - "classmap": [ - "classes/phing/" - ] + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "classes" + "license": [ + "MIT" ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2016-06-10 07:14:17" + }, + { + "name": "phpspec/prophecy", + "version": "v1.6.1", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "58a8137754bc24b25740d4281399a4a3596058e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/58a8137754bc24b25740d4281399a4a3596058e0", + "reference": "58a8137754bc24b25740d4281399a4a3596058e0", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "sebastian/comparator": "^1.1", + "sebastian/recursion-context": "^1.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL3" + "MIT" ], "authors": [ { - "name": "Michiel Rook", - "email": "mrook@php.net", - "role": "Lead" + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" }, { - "name": "Phing Community", - "homepage": "http://www.phing.info/trac/wiki/Development/Contributors" + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" } ], - "description": "PHing Is Not GNU make; it's a PHP project build system or build tool based on Apache Ant.", - "homepage": "http://www.phing.info/", + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", "keywords": [ - "build", - "task", - "tool" + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" ], - "time": "2012-11-29 21:23:47" + "time": "2016-06-07 08:13:47" }, { "name": "phpunit/dbunit", - "version": "1.3.2", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/dbunit.git", - "reference": "1507040c2541bdffd7fbd71fc792cecdea6a7c61" + "reference": "390cefcb101e07e1d6400dbdfc3b90ecf2c1279f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/dbunit/zipball/1507040c2541bdffd7fbd71fc792cecdea6a7c61", - "reference": "1507040c2541bdffd7fbd71fc792cecdea6a7c61", + "url": "https://api.github.com/repos/sebastianbergmann/dbunit/zipball/390cefcb101e07e1d6400dbdfc3b90ecf2c1279f", + "reference": "390cefcb101e07e1d6400dbdfc3b90ecf2c1279f", "shasum": "" }, "require": { "ext-pdo": "*", "ext-simplexml": "*", - "php": ">=5.3.3", - "phpunit/phpunit": "~3.7|~4.0", - "symfony/yaml": "~2.1" + "php": ">=5.4", + "phpunit/phpunit": "~4|~5", + "symfony/yaml": "~2.1|~3.0" }, "bin": [ - "composer/bin/dbunit" + "dbunit" ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { "classmap": [ - "PHPUnit/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "", - "../../symfony/yaml/" - ], "license": [ "BSD-3-Clause" ], @@ -2215,7 +2196,7 @@ "testing", "xunit" ], - "time": "2015-03-29 14:23:04" + "time": "2015-11-03 11:17:01" }, { "name": "phpunit/php-code-coverage", @@ -2281,31 +2262,33 @@ }, { "name": "phpunit/php-file-iterator", - "version": "1.3.4", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb" + "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb", - "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0", + "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0", "shasum": "" }, "require": { "php": ">=5.3.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, "autoload": { "classmap": [ - "File/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], @@ -2322,7 +2305,7 @@ "filesystem", "iterator" ], - "time": "2013-10-10 15:34:57" + "time": "2015-06-21 13:08:43" }, { "name": "phpunit/php-text-template", @@ -2460,16 +2443,16 @@ }, { "name": "phpunit/phpunit", - "version": "4.1.6", + "version": "4.8.26", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "241116219bb7e3b8111a36ffd8f37546888738d6" + "reference": "fc1d8cd5b5de11625979125c5639347896ac2c74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/241116219bb7e3b8111a36ffd8f37546888738d6", - "reference": "241116219bb7e3b8111a36ffd8f37546888738d6", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fc1d8cd5b5de11625979125c5639347896ac2c74", + "reference": "fc1d8cd5b5de11625979125c5639347896ac2c74", "shasum": "" }, "require": { @@ -2479,17 +2462,19 @@ "ext-reflection": "*", "ext-spl": "*", "php": ">=5.3.3", - "phpunit/php-code-coverage": "~2.0", - "phpunit/php-file-iterator": "~1.3.1", + "phpspec/prophecy": "^1.3.1", + "phpunit/php-code-coverage": "~2.1", + "phpunit/php-file-iterator": "~1.4", "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "~1.0.2", - "phpunit/phpunit-mock-objects": "2.1.5", - "sebastian/comparator": "~1.0", - "sebastian/diff": "~1.1", - "sebastian/environment": "~1.0", - "sebastian/exporter": "~1.0", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "~2.3", + "sebastian/comparator": "~1.1", + "sebastian/diff": "~1.2", + "sebastian/environment": "~1.3", + "sebastian/exporter": "~1.2", + "sebastian/global-state": "~1.0", "sebastian/version": "~1.0", - "symfony/yaml": "~2.0" + "symfony/yaml": "~2.1|~3.0" }, "suggest": { "phpunit/php-invoker": "~1.1" @@ -2500,7 +2485,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1.x-dev" + "dev-master": "4.8.x-dev" } }, "autoload": { @@ -2509,10 +2494,6 @@ ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "", - "../../symfony/yaml/" - ], "license": [ "BSD-3-Clause" ], @@ -2524,34 +2505,36 @@ } ], "description": "The PHP Unit Testing framework.", - "homepage": "http://www.phpunit.de/", + "homepage": "https://phpunit.de/", "keywords": [ "phpunit", "testing", "xunit" ], - "time": "2014-08-17 08:07:02" + "time": "2016-05-17 03:09:28" }, { "name": "phpunit/phpunit-mock-objects", - "version": "2.1.5", + "version": "2.3.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "7878b9c41edb3afab92b85edf5f0981014a2713a" + "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/7878b9c41edb3afab92b85edf5f0981014a2713a", - "reference": "7878b9c41edb3afab92b85edf5f0981014a2713a", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", "shasum": "" }, "require": { + "doctrine/instantiator": "^1.0.2", "php": ">=5.3.3", - "phpunit/php-text-template": "~1.2" + "phpunit/php-text-template": "~1.2", + "sebastian/exporter": "~1.2" }, "require-dev": { - "phpunit/phpunit": "~4.1" + "phpunit/phpunit": "~4.4" }, "suggest": { "ext-soap": "*" @@ -2559,7 +2542,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "2.3.x-dev" } }, "autoload": { @@ -2568,9 +2551,6 @@ ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], @@ -2587,110 +2567,7 @@ "mock", "xunit" ], - "time": "2014-06-12 07:22:15" - }, - { - "name": "pimple/pimple", - "version": "v1.0.2", - "source": { - "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "ae11e57e8c2bb414b2ff93396dbbfc0eb92feb94" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/ae11e57e8c2bb414b2ff93396dbbfc0eb92feb94", - "reference": "ae11e57e8c2bb414b2ff93396dbbfc0eb92feb94", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "Pimple": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Pimple is a simple Dependency Injection Container for PHP 5.3", - "homepage": "http://pimple.sensiolabs.org", - "keywords": [ - "container", - "dependency injection" - ], - "time": "2013-03-08 08:21:40" - }, - { - "name": "sami/sami", - "version": "v1.4.1", - "source": { - "type": "git", - "url": "https://github.com/FriendsOfPHP/Sami.git", - "reference": "160018bfefffa730dc35a2c606691a45acbf41a1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/Sami/zipball/160018bfefffa730dc35a2c606691a45acbf41a1", - "reference": "160018bfefffa730dc35a2c606691a45acbf41a1", - "shasum": "" - }, - "require": { - "michelf/php-markdown": "~1.3", - "nikic/php-parser": "0.9.*", - "php": ">=5.3.0", - "pimple/pimple": "1.0.*", - "symfony/console": "~2.1", - "symfony/filesystem": "~2.1", - "symfony/finder": "~2.1", - "symfony/process": "~2.1", - "symfony/yaml": "~2.1", - "twig/twig": "1.*" - }, - "bin": [ - "sami.php" - ], - "type": "application", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "psr-0": { - "Sami": "." - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Sami, an API documentation generator", - "homepage": "http://sami.sensiolabs.org", - "keywords": [ - "phpdoc" - ], - "time": "2015-06-05 03:36:34" + "time": "2015-10-02 06:51:40" }, { "name": "sebastian/comparator", @@ -2925,6 +2802,57 @@ ], "time": "2016-06-17 09:04:28" }, + { + "name": "sebastian/global-state", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2015-10-12 03:26:01" + }, { "name": "sebastian/recursion-context", "version": "1.0.2", @@ -3093,25 +3021,25 @@ }, { "name": "symfony/browser-kit", - "version": "v2.8.8", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "7be191464d63441382db763c53907a8eebe9a259" + "reference": "dcf41ed026b0499254385b5c88f03247b2ba010b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/7be191464d63441382db763c53907a8eebe9a259", - "reference": "7be191464d63441382db763c53907a8eebe9a259", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/dcf41ed026b0499254385b5c88f03247b2ba010b", + "reference": "dcf41ed026b0499254385b5c88f03247b2ba010b", "shasum": "" }, "require": { - "php": ">=5.3.9", - "symfony/dom-crawler": "~2.1|~3.0.0" + "php": ">=5.5.9", + "symfony/dom-crawler": "~2.8|~3.0" }, "require-dev": { - "symfony/css-selector": "~2.0,>=2.0.5|~3.0.0", - "symfony/process": "~2.3.34|~2.7,>=2.7.6|~3.0.0" + "symfony/css-selector": "~2.8|~3.0", + "symfony/process": "~2.8|~3.0" }, "suggest": { "symfony/process": "" @@ -3119,7 +3047,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -3146,29 +3074,29 @@ ], "description": "Symfony BrowserKit Component", "homepage": "https://symfony.com", - "time": "2016-06-29 05:29:29" + "time": "2016-06-29 05:41:56" }, { "name": "symfony/css-selector", - "version": "v2.8.8", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "9da4c615ba303850986e0480cc472bf704cfdb64" + "reference": "2851e1932d77ce727776154d659b232d061e816a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/9da4c615ba303850986e0480cc472bf704cfdb64", - "reference": "9da4c615ba303850986e0480cc472bf704cfdb64", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/2851e1932d77ce727776154d659b232d061e816a", + "reference": "2851e1932d77ce727776154d659b232d061e816a", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.5.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -3199,28 +3127,28 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2016-06-29 05:31:50" + "time": "2016-06-29 05:41:56" }, { "name": "symfony/dom-crawler", - "version": "v2.8.8", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "f8c304f5715081c949043902d311480d71adb1e0" + "reference": "99ec4a23330fcd0c8667095f3ef7aa204ffd9dc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/f8c304f5715081c949043902d311480d71adb1e0", - "reference": "f8c304f5715081c949043902d311480d71adb1e0", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/99ec4a23330fcd0c8667095f3ef7aa204ffd9dc0", + "reference": "99ec4a23330fcd0c8667095f3ef7aa204ffd9dc0", "shasum": "" }, "require": { - "php": ">=5.3.9", + "php": ">=5.5.9", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { - "symfony/css-selector": "~2.8|~3.0.0" + "symfony/css-selector": "~2.8|~3.0" }, "suggest": { "symfony/css-selector": "" @@ -3228,7 +3156,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -3255,29 +3183,29 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2016-06-29 05:29:29" + "time": "2016-06-29 05:41:56" }, { "name": "symfony/process", - "version": "v2.8.8", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "89f33c16796415ccfd8bb3cf8d520cbb79899bfe" + "reference": "5c11a1a4d4016662eeaf0f8757958c7de069f9a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/89f33c16796415ccfd8bb3cf8d520cbb79899bfe", - "reference": "89f33c16796415ccfd8bb3cf8d520cbb79899bfe", + "url": "https://api.github.com/repos/symfony/process/zipball/5c11a1a4d4016662eeaf0f8757958c7de069f9a0", + "reference": "5c11a1a4d4016662eeaf0f8757958c7de069f9a0", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.5.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -3304,7 +3232,56 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2016-06-29 05:29:29" + "time": "2016-06-29 05:42:25" + }, + { + "name": "webmozart/assert", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde", + "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2015-08-24 13:29:44" } ], "aliases": [], @@ -3313,10 +3290,10 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=5.4,<7.1" + "php": ">=5.5.9" }, "platform-dev": [], "platform-overrides": { - "php": "5.4" + "php": "5.5.9" } } From 42b6dc38c5f173e98d27b8f5ffdc19e9bacbddc6 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sat, 11 Jun 2016 17:46:51 +0200 Subject: [PATCH 005/431] [ticket/14670] Fix incompatibilities with container definitions PHPBB3-14670 --- tests/mock/container_builder.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tests/mock/container_builder.php b/tests/mock/container_builder.php index 134589b0b87..edf0d58a281 100644 --- a/tests/mock/container_builder.php +++ b/tests/mock/container_builder.php @@ -23,11 +23,11 @@ class phpbb_mock_container_builder implements ContainerInterface * * @param string $id The service identifier * @param object $service The service instance - * @param string $scope The scope of the service + * @param bool $shared Whether service is shared * * @api */ - public function set($id, $service, $scope = self::SCOPE_CONTAINER) + public function set($id, $service, $shared = false) { $this->services[$id] = $service; } @@ -193,4 +193,9 @@ public function isFrozen() { return false; } + + public function initialized($id) + { + return true; + } } From b93bdfb1c3da1bb1161ba7005f13a28799dff59e Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sun, 12 Jun 2016 14:07:26 +0200 Subject: [PATCH 006/431] [ticket/14670] Add new travis builds and PHP 5.5 requirement PHPBB3-14670 --- .travis.yml | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8d0fe27203b..616c6e44bf7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,30 +2,31 @@ language: php matrix: include: - - php: 5.4 + - php: 5.5 env: DB=none;NOTESTS=1 - - php: 5.4 - env: DB=mysqli # MyISAM - - php: 5.4 - env: DB=mysql - - php: 5.4 + - php: 5.5 + env: DB=mysqli + - php: 5.5 + evn: DB=mysql + - php: 5.5 env: DB=mariadb - - php: 5.4 + - php: 5.5 env: DB=postgres - - php: 5.4 + - php: 5.5 env: DB=sqlite3 - - php: 5.4 - env: DB=mysqli;SLOWTESTS=1 - php: 5.5 - env: DB=mysqli + env: DB=mysqli;SLOWTESTS=1 - php: 5.6 env: DB=mysqli - php: 7.0 env: DB=mysqli + - php: nightly + env: DB=mysqli - php: hhvm env: DB=mysqli allow_failures: - php: hhvm + - php: nightly fast_finish: true services: From 74abce31bcada85f8c44547567e33bfd5daa20b4 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sun, 12 Jun 2016 14:09:00 +0200 Subject: [PATCH 007/431] [ticket/14670] Remove usage of prototype scope in tests In this specific case, the mock container builder is used which does not even support setting the scope. PHPBB3-14670 --- tests/upload/fileupload_test.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/upload/fileupload_test.php b/tests/upload/fileupload_test.php index fb72823f08a..4516e3ad5aa 100644 --- a/tests/upload/fileupload_test.php +++ b/tests/upload/fileupload_test.php @@ -83,13 +83,13 @@ protected function setUp() $this->php_ini, $plupload, $this->request - ), phpbb_mock_container_builder::SCOPE_PROTOTYPE); + )); $this->container->set('files.types.local', new \phpbb\files\types\local( $this->factory, $this->language, $this->php_ini, $this->request - ), phpbb_mock_container_builder::SCOPE_PROTOTYPE); + )); $this->path = __DIR__ . '/fixture/'; $this->phpbb_root_path = $phpbb_root_path; From d66e8cba2332009df4d485609e6a7c96abb342e7 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sun, 12 Jun 2016 14:14:53 +0200 Subject: [PATCH 008/431] [ticket/14670] Fix typo in .travis.yml PHPBB3-14670 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 616c6e44bf7..2049a2f6f88 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ matrix: - php: 5.5 env: DB=mysqli - php: 5.5 - evn: DB=mysql + env: DB=mysql - php: 5.5 env: DB=mariadb - php: 5.5 From e1f9c946ef7d41973618417debf02234877c0e7d Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sat, 23 Jul 2016 17:54:45 +0200 Subject: [PATCH 009/431] [ticket/14670] Modify service definition for RouterListener PHPBB3-14670 --- phpBB/config/default/container/services_routing.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/phpBB/config/default/container/services_routing.yml b/phpBB/config/default/container/services_routing.yml index 3048145a2f7..0bf0a33ab4c 100644 --- a/phpBB/config/default/container/services_routing.yml +++ b/phpBB/config/default/container/services_routing.yml @@ -12,8 +12,6 @@ services: class: Symfony\Component\HttpKernel\EventListener\RouterListener arguments: - '@router' - - null - - null - '@request_stack' tags: - { name: kernel.event_subscriber } From 402292cb07643716e89cc9d7bed71b81280c4903 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sun, 24 Jul 2016 17:17:41 +0200 Subject: [PATCH 010/431] [ticket/14670] Do not backup static attributes This seems to cause issues with the UI tests as the backed up static web driver does not seem to be properly initialized. PHPBB3-14670 --- phpunit.xml.dist | 2 +- travis/phpunit-mariadb-travis.xml | 2 +- travis/phpunit-mysql-travis.xml | 2 +- travis/phpunit-mysqli-travis.xml | 2 +- travis/phpunit-postgres-travis.xml | 2 +- travis/phpunit-sqlite3-travis.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/phpunit.xml.dist b/phpunit.xml.dist index c6e539b7ba8..71a94da89fb 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,7 +1,7 @@ Date: Sun, 24 Jul 2016 21:52:05 +0200 Subject: [PATCH 011/431] [ticket/14670] Set shared flag instead of defining prototype scope The prototype scope was deprecated in symfony 2.8 and removed in 3.0. PHPBB3-14670 --- tests/notification/fixtures/services_notification.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/notification/fixtures/services_notification.yml b/tests/notification/fixtures/services_notification.yml index 6e68cccff67..c83d8bd3235 100644 --- a/tests/notification/fixtures/services_notification.yml +++ b/tests/notification/fixtures/services_notification.yml @@ -70,7 +70,7 @@ services: test: class: phpbb\notification\type\test - scope: prototype + shared: false parent: notification.type.base tags: - { name: notification.type } From 54e5d413592870548314de01409ae767d1ecc08d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Bartus?= Date: Wed, 6 Apr 2016 21:01:41 +0200 Subject: [PATCH 012/431] [ticket/14548] Move deprecated globals and functions PHPBB3-14584 --- phpBB/includes/compatibility_globals.php | 7 ++ phpBB/includes/constants.php | 3 - phpBB/includes/functions.php | 12 --- phpBB/includes/functions_admin.php | 39 ---------- phpBB/includes/functions_compatibility.php | 90 ++++++++++++++++++++++ phpBB/includes/functions_display.php | 12 --- phpBB/includes/functions_posting.php | 28 ------- 7 files changed, 97 insertions(+), 94 deletions(-) diff --git a/phpBB/includes/compatibility_globals.php b/phpBB/includes/compatibility_globals.php index dc7a5936930..39737fb0aea 100644 --- a/phpBB/includes/compatibility_globals.php +++ b/phpBB/includes/compatibility_globals.php @@ -18,6 +18,13 @@ exit; } +// +// Deprecated globals +// +define('ATTACHMENT_CATEGORY_WM', 2); // Windows Media Files - Streaming - @deprecated 3.2 +define('ATTACHMENT_CATEGORY_RM', 3); // Real Media Files - Streaming - @deprecated 3.2 +define('ATTACHMENT_CATEGORY_QUICKTIME', 6); // Quicktime/Mov files - @deprecated 3.2 + /** * Sets compatibility globals in the global scope * diff --git a/phpBB/includes/constants.php b/phpBB/includes/constants.php index 154e4a1e437..7ab03e9b7dd 100644 --- a/phpBB/includes/constants.php +++ b/phpBB/includes/constants.php @@ -171,11 +171,8 @@ // Categories - Attachments define('ATTACHMENT_CATEGORY_NONE', 0); define('ATTACHMENT_CATEGORY_IMAGE', 1); // Inline Images -define('ATTACHMENT_CATEGORY_WM', 2); // Windows Media Files - Streaming - @deprecated 3.2 -define('ATTACHMENT_CATEGORY_RM', 3); // Real Media Files - Streaming - @deprecated 3.2 define('ATTACHMENT_CATEGORY_THUMB', 4); // Not used within the database, only while displaying posts define('ATTACHMENT_CATEGORY_FLASH', 5); // Flash/SWF files -define('ATTACHMENT_CATEGORY_QUICKTIME', 6); // Quicktime/Mov files - @deprecated 3.2 // BBCode UID length define('BBCODE_UID_LEN', 8); diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index 588a717f0e7..df931f0c9e7 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -51,18 +51,6 @@ function phpbb_load_extensions_autoloaders($phpbb_root_path) } } -/** -* Casts a variable to the given type. -* -* @deprecated -*/ -function set_var(&$result, $var, $type, $multibyte = false) -{ - // no need for dependency injection here, if you have the object, call the method yourself! - $type_cast_helper = new \phpbb\request\type_cast_helper(); - $type_cast_helper->set_var($result, $var, $type, $multibyte); -} - /** * Generates an alphanumeric random string of given length * diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php index 5cf65e04ba2..a5afa5abb2a 100644 --- a/phpBB/includes/functions_admin.php +++ b/phpBB/includes/functions_admin.php @@ -1122,28 +1122,6 @@ function delete_posts($where_type, $where_ids, $auto_sync = true, $posted_sync = return sizeof($post_ids); } -/** -* Delete Attachments -* -* @deprecated 3.2.0-a1 (To be removed: 3.4.0) -* -* @param string $mode can be: post|message|topic|attach|user -* @param mixed $ids can be: post_ids, message_ids, topic_ids, attach_ids, user_ids -* @param bool $resync set this to false if you are deleting posts or topics -*/ -function delete_attachments($mode, $ids, $resync = true) -{ - global $phpbb_container; - - /** @var \phpbb\attachment\manager $attachment_manager */ - $attachment_manager = $phpbb_container->get('attachment.manager'); - $num_deleted = $attachment_manager->delete($mode, $ids, $resync); - - unset($attachment_manager); - - return $num_deleted; -} - /** * Deletes shadow topics pointing to a specified forum. * @@ -1255,23 +1233,6 @@ function update_posted_info(&$topic_ids) $db->sql_multi_insert(TOPICS_POSTED_TABLE, $sql_ary); } -/** -* Delete attached file -* -* @deprecated 3.2.0-a1 (To be removed: 3.4.0) -*/ -function phpbb_unlink($filename, $mode = 'file', $entry_removed = false) -{ - global $phpbb_container; - - /** @var \phpbb\attachment\manager $attachment_manager */ - $attachment_manager = $phpbb_container->get('attachment.manager'); - $unlink = $attachment_manager->unlink($filename, $mode, $entry_removed); - unset($attachment_manager); - - return $unlink; -} - /** * All-encompasing sync function * diff --git a/phpBB/includes/functions_compatibility.php b/phpBB/includes/functions_compatibility.php index 4b085a6050e..e1a168283ce 100644 --- a/phpBB/includes/functions_compatibility.php +++ b/phpBB/includes/functions_compatibility.php @@ -511,3 +511,93 @@ function phpbb_pcre_utf8_support() { return true; } + +/** + * Casts a variable to the given type. + * + * @deprecated 3.3.0-dev (To be removed 3.4.0) + */ +function set_var(&$result, $var, $type, $multibyte = false) +{ + // no need for dependency injection here, if you have the object, call the method yourself! + $type_cast_helper = new \phpbb\request\type_cast_helper(); + $type_cast_helper->set_var($result, $var, $type, $multibyte); +} + +/** + * Delete Attachments + * + * @deprecated 3.2.0-a1 (To be removed: 3.4.0) + * + * @param string $mode can be: post|message|topic|attach|user + * @param mixed $ids can be: post_ids, message_ids, topic_ids, attach_ids, user_ids + * @param bool $resync set this to false if you are deleting posts or topics + */ +function delete_attachments($mode, $ids, $resync = true) +{ + global $phpbb_container; + + /** @var \phpbb\attachment\manager $attachment_manager */ + $attachment_manager = $phpbb_container->get('attachment.manager'); + $num_deleted = $attachment_manager->delete($mode, $ids, $resync); + + unset($attachment_manager); + + return $num_deleted; +} + +/** + * Delete attached file + * + * @deprecated 3.2.0-a1 (To be removed: 3.4.0) + */ +function phpbb_unlink($filename, $mode = 'file', $entry_removed = false) +{ + global $phpbb_container; + + /** @var \phpbb\attachment\manager $attachment_manager */ + $attachment_manager = $phpbb_container->get('attachment.manager'); + $unlink = $attachment_manager->unlink($filename, $mode, $entry_removed); + unset($attachment_manager); + + return $unlink; +} + +/** + * Display reasons + * + * @deprecated 3.2.0-dev (To be removed: 3.4.0) + */ +function display_reasons($reason_id = 0) +{ + global $phpbb_container; + + $phpbb_container->get('phpbb.report.report_reason_list_provider')->display_reasons($reason_id); +} + +/** + * Upload Attachment - filedata is generated here + * Uses upload class + * + * @deprecated 3.2.0-a1 (To be removed: 3.4.0) + * + * @param string $form_name The form name of the file upload input + * @param int $forum_id The id of the forum + * @param bool $local Whether the file is local or not + * @param string $local_storage The path to the local file + * @param bool $is_message Whether it is a PM or not + * @param array $local_filedata A filespec object created for the local file + * + * @return array File data array + */ +function upload_attachment($form_name, $forum_id, $local = false, $local_storage = '', $is_message = false, $local_filedata = false) +{ + global $phpbb_container; + + /** @var \phpbb\attachment\manager $attachment_manager */ + $attachment_manager = $phpbb_container->get('attachment.manager'); + $file = $attachment_manager->upload($form_name, $forum_id, $local, $local_storage, $is_message, $local_filedata); + unset($attachment_manager); + + return $file; +} diff --git a/phpBB/includes/functions_display.php b/phpBB/includes/functions_display.php index 4726676e2dd..b68d2ff66dd 100644 --- a/phpBB/includes/functions_display.php +++ b/phpBB/includes/functions_display.php @@ -1145,18 +1145,6 @@ function display_custom_bbcodes() $phpbb_dispatcher->dispatch('core.display_custom_bbcodes'); } -/** -* Display reasons -* -* @deprecated 3.2.0-dev -*/ -function display_reasons($reason_id = 0) -{ - global $phpbb_container; - - $phpbb_container->get('phpbb.report.report_reason_list_provider')->display_reasons($reason_id); -} - /** * Display user activity (action forum/topic) */ diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php index 48d30a9341d..35d23242b68 100644 --- a/phpBB/includes/functions_posting.php +++ b/phpBB/includes/functions_posting.php @@ -386,34 +386,6 @@ function posting_gen_topic_types($forum_id, $cur_topic_type = POST_NORMAL) // // Attachment related functions // - -/** -* Upload Attachment - filedata is generated here -* Uses upload class -* -* @deprecated 3.2.0-a1 (To be removed: 3.4.0) -* -* @param string $form_name The form name of the file upload input -* @param int $forum_id The id of the forum -* @param bool $local Whether the file is local or not -* @param string $local_storage The path to the local file -* @param bool $is_message Whether it is a PM or not -* @param array $local_filedata A filespec object created for the local file -* -* @return array File data array -*/ -function upload_attachment($form_name, $forum_id, $local = false, $local_storage = '', $is_message = false, $local_filedata = false) -{ - global $phpbb_container; - - /** @var \phpbb\attachment\manager $attachment_manager */ - $attachment_manager = $phpbb_container->get('attachment.manager'); - $file = $attachment_manager->upload($form_name, $forum_id, $local, $local_storage, $is_message, $local_filedata); - unset($attachment_manager); - - return $file; -} - /** * Calculate the needed size for Thumbnail */ From e9f28ea22ca20d3e1327b90d921009093b009325 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Bartus?= Date: Wed, 6 Apr 2016 22:44:31 +0200 Subject: [PATCH 013/431] [ticket/14584] Change all to be removed tags to 4.0 PHPBB3-14584 --- phpBB/includes/functions_compatibility.php | 38 +++++++++++----------- phpBB/phpbb/controller/helper.php | 2 +- phpBB/phpbb/filesystem.php | 2 +- phpBB/phpbb/user.php | 12 +++---- 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/phpBB/includes/functions_compatibility.php b/phpBB/includes/functions_compatibility.php index e1a168283ce..fdb524dfecd 100644 --- a/phpBB/includes/functions_compatibility.php +++ b/phpBB/includes/functions_compatibility.php @@ -22,7 +22,7 @@ /** * Get user avatar * -* @deprecated 3.1.0-a1 (To be removed: 3.3.0) +* @deprecated 3.1.0-a1 (To be removed: 4.0.0) * * @param string $avatar Users assigned avatar name * @param int $avatar_type Type of avatar @@ -50,7 +50,7 @@ function get_user_avatar($avatar, $avatar_type, $avatar_width, $avatar_height, $ /** * Hash the password * -* @deprecated 3.1.0-a2 (To be removed: 3.3.0) +* @deprecated 3.1.0-a2 (To be removed: 4.0.0) * * @param string $password Password to be hashed * @@ -68,7 +68,7 @@ function phpbb_hash($password) /** * Check for correct password * -* @deprecated 3.1.0-a2 (To be removed: 3.3.0) +* @deprecated 3.1.0-a2 (To be removed: 4.0.0) * * @param string $password The password in plain text * @param string $hash The stored password hash @@ -92,7 +92,7 @@ function phpbb_check_hash($password, $hash) * @param string $path Path to clean * @return string Cleaned path * -* @deprecated 3.1.0 (To be removed: 3.3.0) +* @deprecated 3.1.0 (To be removed: 4.0.0) */ function phpbb_clean_path($path) { @@ -136,7 +136,7 @@ function phpbb_clean_path($path) * * @return string Returns the options for timezone selector only * -* @deprecated 3.1.0 (To be removed: 3.3.0) +* @deprecated 3.1.0 (To be removed: 4.0.0) */ function tz_select($default = '', $truncate = false) { @@ -150,7 +150,7 @@ function tz_select($default = '', $truncate = false) * via admin_permissions. Changes of usernames and group names * must be carried through for the moderators table. * -* @deprecated 3.1.0 (To be removed: 3.3.0) +* @deprecated 3.1.0 (To be removed: 4.0.0) * @return null */ function cache_moderators() @@ -162,7 +162,7 @@ function cache_moderators() /** * Removes moderators and administrators from foe lists. * -* @deprecated 3.1.0 (To be removed: 3.3.0) +* @deprecated 3.1.0 (To be removed: 4.0.0) * @param array|bool $group_id If an array, remove all members of this group from foe lists, or false to ignore * @param array|bool $user_id If an array, remove this user from foe lists, or false to ignore * @return null @@ -182,7 +182,7 @@ function update_foes($group_id = false, $user_id = false) * @param string &$rank_img the rank image as full img tag is stored here after execution * @param string &$rank_img_src the rank image source is stored here after execution * -* @deprecated 3.1.0-RC5 (To be removed: 3.3.0) +* @deprecated 3.1.0-RC5 (To be removed: 4.0.0) * * Note: since we do not want to break backwards-compatibility, this function will only properly assign ranks to guests if you call it for them with user_posts == false */ @@ -232,7 +232,7 @@ function get_remote_file($host, $directory, $filename, &$errstr, &$errno, $port * * @return int|bool Returns the log_id, if the entry was added to the database, false otherwise. * - * @deprecated 3.1.0 (To be removed: 3.3.0) + * @deprecated 3.1.0 (To be removed: 4.0.0) */ function add_log() { @@ -280,7 +280,7 @@ function add_log() * * @return null * - * @deprecated 3.1.0 (To be removed: 3.3.0) + * @deprecated 3.1.0 (To be removed: 4.0.0) */ function set_config($config_name, $config_value, $is_dynamic = false, \phpbb\config\config $set_config = null) { @@ -310,7 +310,7 @@ function set_config($config_name, $config_value, $is_dynamic = false, \phpbb\con * * @return null * - * @deprecated 3.1.0 (To be removed: 3.3.0) + * @deprecated 3.1.0 (To be removed: 4.0.0) */ function set_config_count($config_name, $increment, $is_dynamic = false, \phpbb\config\config $set_config = null) { @@ -331,7 +331,7 @@ function set_config_count($config_name, $increment, $is_dynamic = false, \phpbb\ * See {@link \phpbb\request\request_interface::variable \phpbb\request\request_interface::variable} for * documentation of this function's use. * - * @deprecated 3.1.0 (To be removed: 3.3.0) + * @deprecated 3.1.0 (To be removed: 4.0.0) * @param mixed $var_name The form variable's name from which data shall be retrieved. * If the value is an array this may be an array of indizes which will give * direct access to a value at any depth. E.g. if the value of "var" is array(1 => "a") @@ -389,7 +389,7 @@ function request_var($var_name, $default, $multibyte = false, $cookie = false, $ /** * Get tables of a database * - * @deprecated 3.1.0 (To be removed: 3.3.0) + * @deprecated 3.1.0 (To be removed: 4.0.0) */ function get_tables(&$db) { @@ -492,7 +492,7 @@ function phpbb_realpath($path) * @param $number int|float The number we want to get the plural case for. Float numbers are floored. * @return int The plural-case we need to use for the number plural-rule combination * - * @deprecated 3.2.0-dev (To be removed: 3.3.0) + * @deprecated 3.2.0-dev (To be removed: 4.0.0) */ function phpbb_get_plural_form($rule, $number) { @@ -515,7 +515,7 @@ function phpbb_pcre_utf8_support() /** * Casts a variable to the given type. * - * @deprecated 3.3.0-dev (To be removed 3.4.0) + * @deprecated 3.1 (To be removed 4.0.0) */ function set_var(&$result, $var, $type, $multibyte = false) { @@ -527,7 +527,7 @@ function set_var(&$result, $var, $type, $multibyte = false) /** * Delete Attachments * - * @deprecated 3.2.0-a1 (To be removed: 3.4.0) + * @deprecated 3.2.0-a1 (To be removed: 4.0.0) * * @param string $mode can be: post|message|topic|attach|user * @param mixed $ids can be: post_ids, message_ids, topic_ids, attach_ids, user_ids @@ -549,7 +549,7 @@ function delete_attachments($mode, $ids, $resync = true) /** * Delete attached file * - * @deprecated 3.2.0-a1 (To be removed: 3.4.0) + * @deprecated 3.2.0-a1 (To be removed: 4.0.0) */ function phpbb_unlink($filename, $mode = 'file', $entry_removed = false) { @@ -566,7 +566,7 @@ function phpbb_unlink($filename, $mode = 'file', $entry_removed = false) /** * Display reasons * - * @deprecated 3.2.0-dev (To be removed: 3.4.0) + * @deprecated 3.2.0-dev (To be removed: 4.0.0) */ function display_reasons($reason_id = 0) { @@ -579,7 +579,7 @@ function display_reasons($reason_id = 0) * Upload Attachment - filedata is generated here * Uses upload class * - * @deprecated 3.2.0-a1 (To be removed: 3.4.0) + * @deprecated 3.2.0-a1 (To be removed: 4.0.0) * * @param string $form_name The form name of the file upload input * @param int $forum_id The id of the forum diff --git a/phpBB/phpbb/controller/helper.php b/phpBB/phpbb/controller/helper.php index 664b4f4e0f3..58a4a492f80 100644 --- a/phpBB/phpbb/controller/helper.php +++ b/phpBB/phpbb/controller/helper.php @@ -121,7 +121,7 @@ public function route($route, array $params = array(), $is_amp = true, $session_ * @param int $code The error code (e.g. 404, 500, 503, etc.) * @return Response A Response instance * - * @deprecated 3.1.3 (To be removed: 3.3.0) Use exceptions instead. + * @deprecated 3.1.3 (To be removed: 4.0.0) Use exceptions instead. */ public function error($message, $code = 500) { diff --git a/phpBB/phpbb/filesystem.php b/phpBB/phpbb/filesystem.php index af56d78845b..6ac94593313 100644 --- a/phpBB/phpbb/filesystem.php +++ b/phpBB/phpbb/filesystem.php @@ -14,7 +14,7 @@ namespace phpbb; /** - * @deprecated 3.2.0-dev (To be removed 3.3.0) use \phpbb\filesystem\filesystem instead + * @deprecated 3.2.0-dev (To be removed 4.0.0) use \phpbb\filesystem\filesystem instead */ class filesystem extends \phpbb\filesystem\filesystem { diff --git a/phpBB/phpbb/user.php b/phpBB/phpbb/user.php index 305510851c0..e2aafd32065 100644 --- a/phpBB/phpbb/user.php +++ b/phpBB/phpbb/user.php @@ -461,7 +461,7 @@ function lang() * @return int|bool The plural-case we need to use for the number plural-rule combination, false if $force_rule * was invalid. * - * @deprecated: 3.2.0-dev (To be removed: 3.3.0) + * @deprecated: 3.2.0-dev (To be removed: 4.0.0) */ function get_plural_form($number, $force_rule = false) { @@ -472,8 +472,8 @@ function get_plural_form($number, $force_rule = false) * Add Language Items - use_db and use_help are assigned where needed (only use them to force inclusion) * * @param mixed $lang_set specifies the language entries to include - * @param bool $use_db internal variable for recursion, do not use @deprecated 3.2.0-dev (To be removed: 3.3.0) - * @param bool $use_help internal variable for recursion, do not use @deprecated 3.2.0-dev (To be removed: 3.3.0) + * @param bool $use_db internal variable for recursion, do not use @deprecated 3.2.0-dev (To be removed: 4.0.0) + * @param bool $use_help internal variable for recursion, do not use @deprecated 3.2.0-dev (To be removed: 4.0.0) * @param string $ext_name The extension to load language from, or empty for core files * * Examples: @@ -488,7 +488,7 @@ function get_plural_form($number, $force_rule = false) * Note: $use_db and $use_help should be removed. The old function was kept for BC purposes, * so the BC logic is handled here. * - * @deprecated: 3.2.0-dev (To be removed: 3.3.0) + * @deprecated: 3.2.0-dev (To be removed: 4.0.0) */ function add_lang($lang_set, $use_db = false, $use_help = false, $ext_name = '') { @@ -529,7 +529,7 @@ function add_lang($lang_set, $use_db = false, $use_help = false, $ext_name = '') /** * BC function for loading language files * - * @deprecated 3.2.0-dev (To be removed: 3.3.0) + * @deprecated 3.2.0-dev (To be removed: 4.0.0) */ private function set_lang($lang_set, $use_help, $ext_name) { @@ -565,7 +565,7 @@ private function set_lang($lang_set, $use_help, $ext_name) * * Note: $use_db and $use_help should be removed. Kept for BC purposes. * - * @deprecated: 3.2.0-dev (To be removed: 3.3.0) + * @deprecated: 3.2.0-dev (To be removed: 4.0.0) */ function add_lang_ext($ext_name, $lang_set, $use_db = false, $use_help = false) { From 6eecc26e314796fadad7b22c37b0737ef05238d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Bartus?= Date: Fri, 18 Mar 2016 22:57:02 +0100 Subject: [PATCH 014/431] [ticket/14542] Move cron to controller PHPBB3-14542 --- .../default/container/services_cron.yml | 13 +++ phpBB/config/default/routing/cron.yml | 3 + phpBB/config/default/routing/routing.yml | 4 + phpBB/cron.php | 67 ++---------- phpBB/phpbb/cron/controller/cron.php | 38 +++++++ .../phpbb/cron/event/cron_runner_listener.php | 101 ++++++++++++++++++ phpBB/phpbb/cron/manager.php | 21 +++- phpBB/phpbb/cron/task/wrapper.php | 47 ++++---- tests/console/cron/cron_list_test.php | 29 ++++- tests/console/cron/run_test.php | 87 ++++++++++++++- tests/cron/manager_test.php | 28 ++++- .../controllers_compatibility_test.php | 8 ++ tests/functional/prune_shadow_topic_test.php | 11 +- 13 files changed, 374 insertions(+), 83 deletions(-) create mode 100644 phpBB/config/default/routing/cron.yml create mode 100644 phpBB/phpbb/cron/controller/cron.php create mode 100644 phpBB/phpbb/cron/event/cron_runner_listener.php diff --git a/phpBB/config/default/container/services_cron.yml b/phpBB/config/default/container/services_cron.yml index 0b95a961906..fc176c0d298 100644 --- a/phpBB/config/default/container/services_cron.yml +++ b/phpBB/config/default/container/services_cron.yml @@ -3,6 +3,7 @@ services: class: phpbb\cron\manager arguments: - '@cron.task_collection' + - '@routing.helper' - '%core.root_path%' - '%core.php_ext%' @@ -13,6 +14,18 @@ services: - '@config' - '@dbal.conn' + cron.controller: + class: phpbb\cron\controller\cron + + cron.event_listener: + class: phpbb\cron\event\cron_runner_listener + arguments: + - '@cron.lock_db' + - '@cron.manager' + - '@request' + tags: + - { name: kernel.event_subscriber } + # ----- Cron tasks ----- cron.task_collection: class: phpbb\di\service_collection diff --git a/phpBB/config/default/routing/cron.yml b/phpBB/config/default/routing/cron.yml new file mode 100644 index 00000000000..5a634166fa6 --- /dev/null +++ b/phpBB/config/default/routing/cron.yml @@ -0,0 +1,3 @@ +phpbb_cron_run: + path: /{cron_type} + defaults: { _controller: cron.controller:handle } diff --git a/phpBB/config/default/routing/routing.yml b/phpBB/config/default/routing/routing.yml index f381f024ade..199c5229b06 100644 --- a/phpBB/config/default/routing/routing.yml +++ b/phpBB/config/default/routing/routing.yml @@ -8,6 +8,10 @@ # instantiate the 'foo_service' service and call the 'method' method. # +phpbb_cron_routing: + resource: cron.yml + prefix: /cron + phpbb_feed_routing: resource: feed.yml prefix: /feed diff --git a/phpBB/cron.php b/phpBB/cron.php index 2f519947aa5..58261429a28 100644 --- a/phpBB/cron.php +++ b/phpBB/cron.php @@ -11,10 +11,11 @@ * */ +use Symfony\Component\HttpFoundation\RedirectResponse; + /** */ define('IN_PHPBB', true); -define('IN_CRON', true); $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './'; $phpEx = substr(strrchr(__FILE__, '.'), 1); include($phpbb_root_path . 'common.' . $phpEx); @@ -23,62 +24,14 @@ $user->session_begin(false); $auth->acl($user->data); -function output_image() -{ - // Output transparent gif - header('Cache-Control: no-cache'); - header('Content-type: image/gif'); - header('Content-length: 43'); - - echo base64_decode('R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='); - - // Flush here to prevent browser from showing the page as loading while - // running cron. - flush(); -} - -// Thanks to various fatal errors and lack of try/finally, it is quite easy to leave -// the cron lock locked, especially when working on cron-related code. -// -// Attempt to alleviate the problem by doing setup outside of the lock as much as possible. - $cron_type = $request->variable('cron_type', ''); -// Comment this line out for debugging so the page does not return an image. -output_image(); - -/* @var $cron_lock \phpbb\lock\db */ -$cron_lock = $phpbb_container->get('cron.lock_db'); -if ($cron_lock->acquire()) -{ - /* @var $cron \phpbb\cron\manager */ - $cron = $phpbb_container->get('cron.manager'); - - $task = $cron->find_task($cron_type); - if ($task) - { - /** - * This event enables you to catch the task before it runs - * - * @event core.cron_run_before - * @var \phpbb\cron\task\wrapper task Current Cron task - * @since 3.1.8-RC1 - */ - $vars = array( - 'task', - ); - extract($phpbb_dispatcher->trigger_event('core.cron_run_before', compact($vars))); - - if ($task->is_parametrized()) - { - $task->parse_parameters($request); - } - if ($task->is_ready()) - { - $task->run(); - } - } - $cron_lock->release(); -} +$get_params_array = $request->get_super_global(\phpbb\request\request_interface::GET); -garbage_collection(); +/** @var \phpbb\controller\helper $controller_helper */ +$controller_helper = $phpbb_container->get('controller.helper'); +$response = new RedirectResponse( + $controller_helper->route('phpbb_cron_run', $get_params_array), + 301 +); +$response->send(); diff --git a/phpBB/phpbb/cron/controller/cron.php b/phpBB/phpbb/cron/controller/cron.php new file mode 100644 index 00000000000..d71136ee5da --- /dev/null +++ b/phpBB/phpbb/cron/controller/cron.php @@ -0,0 +1,38 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\cron\controller; + +use Symfony\Component\HttpFoundation\Response; + +/** + * Controller for running cron jobs + */ +class cron +{ + /** + * Handles CRON requests + * + * @return Response + */ + public function handle($cron_type) + { + $response = new Response(); + $response->headers->set('Cache-Control', 'no-cache'); + $response->headers->set('Content-type', 'image/gif'); + $response->headers->set('Content-length', '43'); + $response->setContent(base64_decode('R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==')); + + return $response; + } +} diff --git a/phpBB/phpbb/cron/event/cron_runner_listener.php b/phpBB/phpbb/cron/event/cron_runner_listener.php new file mode 100644 index 00000000000..323ac966ac3 --- /dev/null +++ b/phpBB/phpbb/cron/event/cron_runner_listener.php @@ -0,0 +1,101 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\cron\event; + +use phpbb\cron\manager; +use phpbb\lock\db; +use phpbb\request\request_interface; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\HttpKernel\Event\PostResponseEvent; + +/** + * Event listener that executes cron tasks, after the response was served + */ +class cron_runner_listener implements EventSubscriberInterface +{ + /** + * @var \phpbb\lock\db + */ + private $cron_lock; + + /** + * @var \phpbb\cron\manager + */ + private $cron_manager; + + /** + * @var \phpbb\request\request_interface + */ + private $request; + + /** + * Constructor + * + * @param db $lock + * @param manager $manager + * @param request_interface $request + */ + public function __construct(db $lock, manager $manager, request_interface $request) + { + $this->cron_lock = $lock; + $this->cron_manager = $manager; + $this->request = $request; + } + + /** + * Runs the cron job after the response was sent + */ + public function on_kernel_terminate(PostResponseEvent $event) + { + $request = $event->getRequest(); + $controller_name = $request->get('_route'); + + if ($controller_name !== 'phpbb_cron_run') + { + return; + } + + $cron_type = $request->get('cron_type'); + + if ($this->cron_lock->acquire()) + { + $task = $this->cron_manager->find_task($cron_type); + if ($task) + { + if ($task->is_parametrized()) + { + $task->parse_parameters($this->request); + } + + if ($task->is_ready()) + { + $task->run(); + } + + $this->cron_lock->release(); + } + } + } + + /** + * {@inheritdoc} + */ + static public function getSubscribedEvents() + { + return array( + KernelEvents::TERMINATE => 'on_kernel_terminate', + ); + } +} diff --git a/phpBB/phpbb/cron/manager.php b/phpBB/phpbb/cron/manager.php index 9bd30a0a5be..59ee6930749 100644 --- a/phpBB/phpbb/cron/manager.php +++ b/phpBB/phpbb/cron/manager.php @@ -13,6 +13,9 @@ namespace phpbb\cron; +use phpbb\cron\task\wrapper; +use phpbb\routing\helper; + /** * Cron manager class. * @@ -20,6 +23,11 @@ */ class manager { + /** + * @var helper + */ + protected $routing_helper; + /** * Set of \phpbb\cron\task\wrapper objects. * Array holding all tasks that have been found. @@ -28,18 +36,27 @@ class manager */ protected $tasks = array(); + /** + * @var string + */ protected $phpbb_root_path; + + /** + * @var string + */ protected $php_ext; /** * Constructor. Loads all available tasks. * * @param array|\Traversable $tasks Provides an iterable set of task names + * @param helper $routing_helper Routing helper * @param string $phpbb_root_path Relative path to phpBB root * @param string $php_ext PHP file extension */ - public function __construct($tasks, $phpbb_root_path, $php_ext) + public function __construct($tasks, helper $routing_helper, $phpbb_root_path, $php_ext) { + $this->routing_helper = $routing_helper; $this->phpbb_root_path = $phpbb_root_path; $this->php_ext = $php_ext; @@ -142,6 +159,6 @@ public function get_tasks() */ public function wrap_task(\phpbb\cron\task\task $task) { - return new \phpbb\cron\task\wrapper($task, $this->phpbb_root_path, $this->php_ext); + return new wrapper($task, $this->routing_helper, $this->phpbb_root_path, $this->php_ext); } } diff --git a/phpBB/phpbb/cron/task/wrapper.php b/phpBB/phpbb/cron/task/wrapper.php index 8a4a8b1f0c9..4dc3a7fb95d 100644 --- a/phpBB/phpbb/cron/task/wrapper.php +++ b/phpBB/phpbb/cron/task/wrapper.php @@ -13,14 +13,32 @@ namespace phpbb\cron\task; +use phpbb\routing\helper; + /** * Cron task wrapper class. * Enhances cron tasks with convenience methods that work identically for all tasks. */ class wrapper { + /** + * @var helper + */ + protected $routing_helper; + + /** + * @var task + */ protected $task; + + /** + * @var string + */ protected $phpbb_root_path; + + /** + * @var string + */ protected $php_ext; /** @@ -28,13 +46,15 @@ class wrapper * * Wraps a task $task, which must implement cron_task interface. * - * @param \phpbb\cron\task\task $task The cron task to wrap. - * @param string $phpbb_root_path Relative path to phpBB root - * @param string $php_ext PHP file extension + * @param task $task The cron task to wrap. + * @param helper $routing_helper Routing helper for route generation + * @param string $phpbb_root_path Relative path to phpBB root + * @param string $php_ext PHP file extension */ - public function __construct(\phpbb\cron\task\task $task, $phpbb_root_path, $php_ext) + public function __construct(task $task, helper $routing_helper, $phpbb_root_path, $php_ext) { $this->task = $task; + $this->routing_helper = $routing_helper; $this->phpbb_root_path = $phpbb_root_path; $this->php_ext = $php_ext; } @@ -49,7 +69,7 @@ public function __construct(\phpbb\cron\task\task $task, $phpbb_root_path, $php_ */ public function is_parametrized() { - return $this->task instanceof \phpbb\cron\task\parametrized; + return $this->task instanceof parametrized; } /** @@ -76,22 +96,13 @@ public function is_ready() */ public function get_url() { - $name = $this->get_name(); + $params['cron_type'] = $this->get_name(); if ($this->is_parametrized()) { - $params = $this->task->get_parameters(); - $extra = ''; - foreach ($params as $key => $value) - { - $extra .= '&' . $key . '=' . urlencode($value); - } + $params = array_merge($params, $this->task->get_parameters()); } - else - { - $extra = ''; - } - $url = append_sid($this->phpbb_root_path . 'cron.' . $this->php_ext, 'cron_type=' . $name . $extra); - return $url; + + return $this->routing_helper->route('phpbb_cron_run', $params); } /** diff --git a/tests/console/cron/cron_list_test.php b/tests/console/cron/cron_list_test.php index 3bbe2078baa..9cc029200a7 100644 --- a/tests/console/cron/cron_list_test.php +++ b/tests/console/cron/cron_list_test.php @@ -74,7 +74,34 @@ public function get_cron_manager(array $tasks) $task->set_name('command' . $i); $i++; } - $this->cron_manager = new \phpbb\cron\manager($tasks, $phpbb_root_path, $pathEx); + + $mock_config = new \phpbb\config\config(array( + 'force_server_vars' => false, + 'enable_mod_rewrite' => '', + )); + + $mock_router = $this->getMockBuilder('\phpbb\routing\router') + ->setMethods(array('setContext', 'generate')) + ->disableOriginalConstructor() + ->getMock(); + $mock_router->method('setContext') + ->willReturn(true); + $mock_router->method('generate') + ->willReturn('foobar'); + + $request = new \phpbb\request\request(); + + $routing_helper = new \phpbb\routing\helper( + $mock_config, + $mock_router, + new \phpbb\symfony_request($request), + $request, + new \phpbb\filesystem\filesystem(), + $phpbb_root_path, + $pathEx + ); + + $this->cron_manager = new \phpbb\cron\manager($tasks, $routing_helper, $phpbb_root_path, $pathEx); } public function get_command_tester() diff --git a/tests/console/cron/run_test.php b/tests/console/cron/run_test.php index b4a0203325d..8f5be00a804 100644 --- a/tests/console/cron/run_test.php +++ b/tests/console/cron/run_test.php @@ -50,7 +50,34 @@ public function setUp() $tasks = array( $this->task, ); - $this->cron_manager = new \phpbb\cron\manager($tasks, $phpbb_root_path, $phbEx); + + $mock_config = new \phpbb\config\config(array( + 'force_server_vars' => false, + 'enable_mod_rewrite' => '', + )); + + $mock_router = $this->getMockBuilder('\phpbb\routing\router') + ->setMethods(array('setContext', 'generate')) + ->disableOriginalConstructor() + ->getMock(); + $mock_router->method('setContext') + ->willReturn(true); + $mock_router->method('generate') + ->willReturn('foobar'); + + $request = new \phpbb\request\request(); + + $routing_helper = new \phpbb\routing\helper( + $mock_config, + $mock_router, + new \phpbb\symfony_request($request), + $request, + new \phpbb\filesystem\filesystem(), + $phpbb_root_path, + $phpEx + ); + + $this->cron_manager = new \phpbb\cron\manager($tasks, $routing_helper, $phpbb_root_path, $phpEx); $this->assertSame('0', $config['cron_lock']); } @@ -96,7 +123,34 @@ public function test_no_task() { $tasks = array( ); - $this->cron_manager = new \phpbb\cron\manager($tasks, $phpbb_root_path, $phpEx); + + $mock_config = new \phpbb\config\config(array( + 'force_server_vars' => false, + 'enable_mod_rewrite' => '', + )); + + $mock_router = $this->getMockBuilder('\phpbb\routing\router') + ->setMethods(array('setContext', 'generate')) + ->disableOriginalConstructor() + ->getMock(); + $mock_router->method('setContext') + ->willReturn(true); + $mock_router->method('generate') + ->willReturn('foobar'); + + $request = new \phpbb\request\request(); + + $routing_helper = new \phpbb\routing\helper( + $mock_config, + $mock_router, + new \phpbb\symfony_request($request), + $request, + new \phpbb\filesystem\filesystem(), + $phpbb_root_path, + $phpEx + ); + + $this->cron_manager = new \phpbb\cron\manager($tasks, $routing_helper, $phpbb_root_path, $phpEx); $command_tester = $this->get_command_tester(); $exit_status = $command_tester->execute(array('command' => $this->command_name)); @@ -109,7 +163,34 @@ public function test_no_task_verbose() { $tasks = array( ); - $this->cron_manager = new \phpbb\cron\manager($tasks, $phpbb_root_path, $phpEx); + + $mock_config = new \phpbb\config\config(array( + 'force_server_vars' => false, + 'enable_mod_rewrite' => '', + )); + + $mock_router = $this->getMockBuilder('\phpbb\routing\router') + ->setMethods(array('setContext', 'generate')) + ->disableOriginalConstructor() + ->getMock(); + $mock_router->method('setContext') + ->willReturn(true); + $mock_router->method('generate') + ->willReturn('foobar'); + + $request = new \phpbb\request\request(); + + $routing_helper = new \phpbb\routing\helper( + $mock_config, + $mock_router, + new \phpbb\symfony_request($request), + $request, + new \phpbb\filesystem\filesystem(), + $phpbb_root_path, + $phpEx + ); + + $this->cron_manager = new \phpbb\cron\manager($tasks, $routing_helper, $phpbb_root_path, $phpEx); $command_tester = $this->get_command_tester(); $exit_status = $command_tester->execute(array('command' => $this->command_name, '--verbose' => true)); diff --git a/tests/cron/manager_test.php b/tests/cron/manager_test.php index f4dd69b19b3..98814b59dee 100644 --- a/tests/cron/manager_test.php +++ b/tests/cron/manager_test.php @@ -75,6 +75,32 @@ private function create_cron_manager($tasks) { global $phpbb_root_path, $phpEx; - return new \phpbb\cron\manager($tasks, $phpbb_root_path, $phpEx); + $mock_config = new \phpbb\config\config(array( + 'force_server_vars' => false, + 'enable_mod_rewrite' => '', + )); + + $mock_router = $this->getMockBuilder('\phpbb\routing\router') + ->setMethods(array('setContext', 'generate')) + ->disableOriginalConstructor() + ->getMock(); + $mock_router->method('setContext') + ->willReturn(true); + $mock_router->method('generate') + ->willReturn('foobar'); + + $request = new \phpbb\request\request(); + + $routing_helper = new \phpbb\routing\helper( + $mock_config, + $mock_router, + new \phpbb\symfony_request($request), + $request, + new \phpbb\filesystem\filesystem(), + $phpbb_root_path, + $phpEx + ); + + return new \phpbb\cron\manager($tasks, $routing_helper, $phpbb_root_path, $phpEx); } } diff --git a/tests/functional/controllers_compatibility_test.php b/tests/functional/controllers_compatibility_test.php index 9499888a1a6..36a34aa7c8a 100644 --- a/tests/functional/controllers_compatibility_test.php +++ b/tests/functional/controllers_compatibility_test.php @@ -37,6 +37,13 @@ public function test_feed_compatibility() $this->assert301('feed.php?t=1', 'app.php/feed/topic/1'); } + public function test_cron_compatibility() + { + $this->assert301('cron.php?cron_type=foo', 'app.php/cron/foo'); + $this->assert301('cron.php?cron_type=foo&bar=foobar', 'app.php/cron/foo?bar=foobar'); + $this->assert301('cron.php?cron_type=foo&bar=foobar&who=me', 'app.php/cron/foo?bar=foobar&who=me'); + } + protected function assert301($from, $to) { self::$client->followRedirects(false); @@ -44,6 +51,7 @@ protected function assert301($from, $to) // Fix sid issues $location = self::$client->getResponse()->getHeader('Location'); + $location = str_replace('&', '&', $location); $location = preg_replace('#sid=[^&]+(&(amp;)?)?#', '', $location); if (substr($location, -1) === '?') { diff --git a/tests/functional/prune_shadow_topic_test.php b/tests/functional/prune_shadow_topic_test.php index c014119b98e..39bf223f930 100644 --- a/tests/functional/prune_shadow_topic_test.php +++ b/tests/functional/prune_shadow_topic_test.php @@ -130,7 +130,16 @@ public function test_move_topic() $crawler = self::request('GET', "viewforum.php?f={$this->data['forums']['Prune Shadow']}&sid={$this->sid}"); $this->assertNotEmpty($crawler->filter('img')->last()->attr('src')); - self::request('GET', "cron.php?cron_type=cron.task.core.prune_shadow_topics&f={$this->data['forums']['Prune Shadow']}&sid={$this->sid}", array(), false); + self::request('GET', "app.php/cron/cron.task.core.prune_shadow_topics?f={$this->data['forums']['Prune Shadow']}&sid={$this->sid}", array(), false); + + // Try to ensure that the cron can actually run before we start to wait for it + sleep(1); + $cron_lock = new \phpbb\lock\db('cron_lock', new \phpbb\config\db($this->db, new \phpbb\cache\driver\dummy(), 'phpbb_config'), $this->db); + while (!$cron_lock->acquire()) + { + // do nothing + } + $cron_lock->release(); $this->assert_forum_details($this->data['forums']['Prune Shadow'], array( 'forum_posts_approved' => 0, From 447f094871a79a6bf6d229f7f8ebc1169d7926ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Bartus?= Date: Fri, 5 Aug 2016 23:03:35 +0200 Subject: [PATCH 015/431] [ticket/14542] Fix tests PHPBB3-14542 --- tests/console/cron/cron_list_test.php | 1 + tests/console/cron/run_test.php | 3 +++ tests/cron/manager_test.php | 1 + 3 files changed, 5 insertions(+) diff --git a/tests/console/cron/cron_list_test.php b/tests/console/cron/cron_list_test.php index 9cc029200a7..02c1de774d8 100644 --- a/tests/console/cron/cron_list_test.php +++ b/tests/console/cron/cron_list_test.php @@ -90,6 +90,7 @@ public function get_cron_manager(array $tasks) ->willReturn('foobar'); $request = new \phpbb\request\request(); + $request->enable_super_globals(); $routing_helper = new \phpbb\routing\helper( $mock_config, diff --git a/tests/console/cron/run_test.php b/tests/console/cron/run_test.php index 8f5be00a804..c4dffa36864 100644 --- a/tests/console/cron/run_test.php +++ b/tests/console/cron/run_test.php @@ -66,6 +66,7 @@ public function setUp() ->willReturn('foobar'); $request = new \phpbb\request\request(); + $request->enable_super_globals(); $routing_helper = new \phpbb\routing\helper( $mock_config, @@ -139,6 +140,7 @@ public function test_no_task() ->willReturn('foobar'); $request = new \phpbb\request\request(); + $request->enable_super_globals(); $routing_helper = new \phpbb\routing\helper( $mock_config, @@ -179,6 +181,7 @@ public function test_no_task_verbose() ->willReturn('foobar'); $request = new \phpbb\request\request(); + $request->enable_super_globals(); $routing_helper = new \phpbb\routing\helper( $mock_config, diff --git a/tests/cron/manager_test.php b/tests/cron/manager_test.php index 98814b59dee..a58a22c8a0f 100644 --- a/tests/cron/manager_test.php +++ b/tests/cron/manager_test.php @@ -90,6 +90,7 @@ private function create_cron_manager($tasks) ->willReturn('foobar'); $request = new \phpbb\request\request(); + $request->enable_super_globals(); $routing_helper = new \phpbb\routing\helper( $mock_config, From 8c137a56589529632dfcc2de59b7f7e05bf876ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Bartus?= Date: Sun, 7 Aug 2016 22:03:21 +0200 Subject: [PATCH 016/431] [ticket/14542] Add missing dockblocks PHPBB3-14542 --- phpBB/phpbb/cron/controller/cron.php | 2 ++ phpBB/phpbb/cron/event/cron_runner_listener.php | 2 ++ 2 files changed, 4 insertions(+) diff --git a/phpBB/phpbb/cron/controller/cron.php b/phpBB/phpbb/cron/controller/cron.php index d71136ee5da..6f0e35e4cda 100644 --- a/phpBB/phpbb/cron/controller/cron.php +++ b/phpBB/phpbb/cron/controller/cron.php @@ -23,6 +23,8 @@ class cron /** * Handles CRON requests * + * @param string $cron_type + * * @return Response */ public function handle($cron_type) diff --git a/phpBB/phpbb/cron/event/cron_runner_listener.php b/phpBB/phpbb/cron/event/cron_runner_listener.php index 323ac966ac3..9e9ecf0d472 100644 --- a/phpBB/phpbb/cron/event/cron_runner_listener.php +++ b/phpBB/phpbb/cron/event/cron_runner_listener.php @@ -56,6 +56,8 @@ public function __construct(db $lock, manager $manager, request_interface $reque /** * Runs the cron job after the response was sent + * + * @param PostResponseEvent $event The event */ public function on_kernel_terminate(PostResponseEvent $event) { From 3870b221d6169469498b9dacede57bafa393be37 Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Mon, 15 Aug 2016 17:20:20 +0200 Subject: [PATCH 017/431] [ticket/14573] Add FAQ breadcrumbs PHPBB3-14573 --- phpBB/phpbb/help/controller/bbcode.php | 5 +++++ phpBB/phpbb/help/controller/faq.php | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/phpBB/phpbb/help/controller/bbcode.php b/phpBB/phpbb/help/controller/bbcode.php index e16f99023d2..c3cf53fd76a 100644 --- a/phpBB/phpbb/help/controller/bbcode.php +++ b/phpBB/phpbb/help/controller/bbcode.php @@ -25,6 +25,11 @@ public function display() { $this->language->add_lang('help/bbcode'); + $this->template->assign_block_vars('navlinks', array( + 'FORUM_NAME' => $this->language->lang('BBCODE_GUIDE'), + 'U_VIEW_FORUM' => $this->helper->route('phpbb_help_bbcode_controller'), + )); + $this->manager->add_block( 'HELP_BBCODE_BLOCK_INTRO', false, diff --git a/phpBB/phpbb/help/controller/faq.php b/phpBB/phpbb/help/controller/faq.php index 5e45cfe667a..117723c793c 100644 --- a/phpBB/phpbb/help/controller/faq.php +++ b/phpBB/phpbb/help/controller/faq.php @@ -25,6 +25,11 @@ public function display() { $this->language->add_lang('help/faq'); + $this->template->assign_block_vars('navlinks', array( + 'FORUM_NAME' => $this->language->lang('FAQ_EXPLAIN'), + 'U_VIEW_FORUM' => $this->helper->route('phpbb_help_faq_controller'), + )); + $this->manager->add_block( 'HELP_FAQ_BLOCK_LOGIN', false, From fc0714721e732edb480f119dbd7bf0cb6858352b Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Mon, 15 Aug 2016 17:25:22 +0200 Subject: [PATCH 018/431] [ticket/14573] Add Search breadcrumbs PHPBB3-14573 --- phpBB/search.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/phpBB/search.php b/phpBB/search.php index 3d8c05fed97..a9d7e04ebc2 100644 --- a/phpBB/search.php +++ b/phpBB/search.php @@ -129,6 +129,11 @@ /* @var $pagination \phpbb\pagination */ $pagination = $phpbb_container->get('pagination'); +$template->assign_block_vars('navlinks', array( + 'FORUM_NAME' => $user->lang('SEARCH'), + 'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}search.$phpEx"), +)); + if ($keywords || $author || $author_id || $search_id || $submit) { // clear arrays From 5292f9c0919ee539d3ddd7ee1a02d1d3ca05778b Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Mon, 15 Aug 2016 17:34:33 +0200 Subject: [PATCH 019/431] [ticket/14573] Add UCP breadcrumbs PHPBB3-14573 --- phpBB/includes/functions_module.php | 8 ++++++++ phpBB/ucp.php | 5 +++++ 2 files changed, 13 insertions(+) diff --git a/phpBB/includes/functions_module.php b/phpBB/includes/functions_module.php index 7a1991d69a3..c55b46dc5ca 100644 --- a/phpBB/includes/functions_module.php +++ b/phpBB/includes/functions_module.php @@ -933,6 +933,14 @@ function assign_tpl_vars($module_url) 'U_TITLE' => $u_title ); + if (isset($this->module_cache['parents'][$item_ary['id']]) || $item_ary['id'] == $this->p_id) + { + $template->assign_block_vars('navlinks', array( + 'FORUM_NAME' => $item_ary['lang'], + 'U_VIEW_FORUM' => $u_title, + )); + } + $template->assign_block_vars($use_tabular_offset, array_merge($tpl_ary, array_change_key_case($item_ary, CASE_UPPER))); } diff --git a/phpBB/ucp.php b/phpBB/ucp.php index 720b56ae8bd..7e26026e80e 100644 --- a/phpBB/ucp.php +++ b/phpBB/ucp.php @@ -362,6 +362,11 @@ $vars = array('module', 'id', 'mode'); extract($phpbb_dispatcher->trigger_event('core.ucp_display_module_before', compact($vars))); +$template->assign_block_vars('navlinks', array( + 'FORUM_NAME' => $user->lang('UCP'), + 'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}ucp.$phpEx"), +)); + // Select the active module $module->set_active($id, $mode); From 10e7c88877080b550fd1f1f6fff7759793a7dad7 Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Mon, 15 Aug 2016 17:35:32 +0200 Subject: [PATCH 020/431] [ticket/14573] Add MCP breadcrumbs PHPBB3-14573 --- phpBB/mcp.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/phpBB/mcp.php b/phpBB/mcp.php index a5fa09ba2b0..2b26c7be7bc 100644 --- a/phpBB/mcp.php +++ b/phpBB/mcp.php @@ -306,6 +306,11 @@ ); extract($phpbb_dispatcher->trigger_event('core.modify_mcp_modules_display_option', compact($vars))); +$template->assign_block_vars('navlinks', array( + 'FORUM_NAME' => $user->lang('MCP'), + 'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}mcp.$phpEx"), +)); + // Load and execute the relevant module $module->load_active(); From 51a744fda5e3815f867d1210d05e55756057762c Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Mon, 15 Aug 2016 18:09:23 +0200 Subject: [PATCH 021/431] [ticket/14573] Add Memberlist breadcrumbs PHPBB3-14573 --- phpBB/memberlist.php | 64 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/phpBB/memberlist.php b/phpBB/memberlist.php index bfa28d8d11a..b7a2f954de3 100644 --- a/phpBB/memberlist.php +++ b/phpBB/memberlist.php @@ -360,6 +360,11 @@ } } + $template->assign_block_vars('navlinks', array( + 'FORUM_NAME' => $page_title, + 'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=team"), + )); + $template->assign_vars(array( 'PM_IMG' => $user->img('icon_contact_pm', $user->lang['SEND_PRIVATE_MESSAGE'])) ); @@ -456,6 +461,11 @@ break; } + $template->assign_block_vars('navlinks', array( + 'FORUM_NAME' => $page_title, + 'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=contact&action=$action&u=$user_id"), + )); + // Send vars to the template $template->assign_vars(array( 'IM_CONTACT' => $row[$sql_field], @@ -783,6 +793,15 @@ $page_title = sprintf($user->lang['VIEWING_PROFILE'], $member['username']); $template_html = 'memberlist_view.html'; + $template->assign_block_vars('navlinks', array( + 'FORUM_NAME' => $user->lang('MEMBERLIST'), + 'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}memberlist.$phpEx"), + )); + $template->assign_block_vars('navlinks', array( + 'FORUM_NAME' => $member['username'], + 'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=viewprofile&u=$user_id"), + )); + break; case 'contactadmin': @@ -832,6 +851,41 @@ $template_html = $form->get_template_file(); $form->render($template); + if ($user_id) + { + $navlink_name = $user->lang('SEND_EMAIL'); + $navlink_url = append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=email&u=$user_id"); + } + else if ($topic_id) + { + $sql = 'SELECT f.parent_id, f.forum_parents, f.left_id, f.right_id, f.forum_type, f.forum_name, f.forum_id, f.forum_desc, f.forum_desc_uid, f.forum_desc_bitfield, f.forum_desc_options, f.forum_options, t.topic_title + FROM ' . FORUMS_TABLE . ' as f, + ' . TOPICS_TABLE . ' as t + WHERE t.forum_id = f.forum_id'; + $result = $db->sql_query($sql); + $topic_data = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + generate_forum_nav($topic_data); + $template->assign_block_vars('navlinks', array( + 'FORUM_NAME' => $topic_data['topic_title'], + 'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "t=$topic_id"), + )); + + $navlink_name = $user->lang('EMAIL_TOPIC'); + $navlink_url = append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=email&t=$topic_id"); + } + else if ($mode === 'contactadmin') + { + $navlink_name = $user->lang('CONTACT_ADMIN'); + $navlink_url = append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=contactadmin"); + } + + $template->assign_block_vars('navlinks', array( + 'FORUM_NAME' => $navlink_name, + 'U_VIEW_FORUM' => $navlink_url, + )); + break; case 'livesearch': @@ -869,6 +923,11 @@ $page_title = $user->lang['MEMBERLIST']; $template_html = 'memberlist_body.html'; + $template->assign_block_vars('navlinks', array( + 'FORUM_NAME' => $page_title, + 'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}memberlist.$phpEx"), + )); + /* @var $pagination \phpbb\pagination */ $pagination = $phpbb_container->get('pagination'); @@ -1174,6 +1233,11 @@ unset($module); } + $template->assign_block_vars('navlinks', array( + 'FORUM_NAME' => $group_helper->get_name($group_row['group_name']), + 'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=group&g=$group_id"), + )); + $template->assign_vars(array( 'GROUP_DESC' => generate_text_for_display($group_row['group_desc'], $group_row['group_desc_uid'], $group_row['group_desc_bitfield'], $group_row['group_desc_options']), 'GROUP_NAME' => $group_helper->get_name($group_row['group_name']), From 6260beb3f250cd6bfd4f02bbee8d20ab3dc9d959 Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Mon, 15 Aug 2016 18:12:20 +0200 Subject: [PATCH 022/431] [ticket/14573] Add Whoisonline breadcrumbs PHPBB3-14573 --- phpBB/viewonline.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/phpBB/viewonline.php b/phpBB/viewonline.php index e8698d9916e..8226ba8fa7a 100644 --- a/phpBB/viewonline.php +++ b/phpBB/viewonline.php @@ -484,6 +484,11 @@ $base_url = append_sid("{$phpbb_root_path}viewonline.$phpEx", "sg=$show_guests&sk=$sort_key&sd=$sort_dir"); $pagination->generate_template_pagination($base_url, 'pagination', 'start', $counter, $config['topics_per_page'], $start); +$template->assign_block_vars('navlinks', array( + 'FORUM_NAME' => $user->lang('WHO_IS_ONLINE'), + 'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}viewonline.$phpEx"), +)); + // Send data to template $template->assign_vars(array( 'TOTAL_REGISTERED_USERS_ONLINE' => $user->lang('REG_USERS_ONLINE', (int) $logged_visible_online, $user->lang('HIDDEN_USERS_ONLINE', (int) $logged_hidden_online)), From 55d927493c552cc22746dc86ad307ec0e71d6d3f Mon Sep 17 00:00:00 2001 From: Matt Friedman Date: Thu, 1 Sep 2016 20:35:35 -0700 Subject: [PATCH 023/431] [ticket/14761] myisam should be setup on PHP 5.5 (5.4 removed) PHPBB3-14761 --- travis/setup-database.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/travis/setup-database.sh b/travis/setup-database.sh index 3771f19073d..cf196e401f8 100755 --- a/travis/setup-database.sh +++ b/travis/setup-database.sh @@ -26,7 +26,7 @@ then psql -c 'create database phpbb_tests;' -U postgres fi -if [ "$TRAVIS_PHP_VERSION" == "5.4" -a "$DB" == "mysqli" ] +if [ "$TRAVIS_PHP_VERSION" == "5.5" -a "$DB" == "mysqli" ] then mysql -e 'SET GLOBAL storage_engine=MyISAM;' fi From b8260cadf015cea05556855d85f2f16f2dc84fb1 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sun, 11 Sep 2016 13:41:33 +0200 Subject: [PATCH 024/431] [ticket/14769] Fix CLI installer configuration compatibility with SF 3 PHPBB3-14769 --- phpBB/phpbb/install/installer_configuration.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/phpBB/phpbb/install/installer_configuration.php b/phpBB/phpbb/install/installer_configuration.php index c660c99d0f4..76a484701ca 100644 --- a/phpBB/phpbb/install/installer_configuration.php +++ b/phpBB/phpbb/install/installer_configuration.php @@ -48,9 +48,9 @@ public function getConfigTreeBuilder() ->cannotBeEmpty() ->end() ->scalarNode('description') - ->defaultValue('My amazing new phpBB board') - ->cannotBeEmpty() - ->end() + ->defaultValue('My amazing new phpBB board') + ->cannotBeEmpty() + ->end() ->end() ->end() ->arrayNode('database') @@ -128,12 +128,11 @@ public function getConfigTreeBuilder() ->integerNode('server_port') ->defaultValue(80) ->min(1) - ->cannotBeEmpty() ->end() ->scalarNode('script_path') ->defaultValue('/') ->cannotBeEmpty() - ->end() + ->end() ->end() ->end() ->end() From 89842299d732945549129f3a6f1f5a5a15674e58 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Mon, 12 Sep 2016 22:03:57 +0200 Subject: [PATCH 025/431] Deploy on Heroku --- phpBB/config.php | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 phpBB/config.php diff --git a/phpBB/config.php b/phpBB/config.php new file mode 100644 index 00000000000..12027a89a6f --- /dev/null +++ b/phpBB/config.php @@ -0,0 +1,23 @@ + Date: Tue, 13 Sep 2016 01:04:26 +0200 Subject: [PATCH 026/431] Revert "Deploy on Heroku" This reverts commit 89842299d732945549129f3a6f1f5a5a15674e58. --- phpBB/config.php | 23 ----------------------- 1 file changed, 23 deletions(-) delete mode 100644 phpBB/config.php diff --git a/phpBB/config.php b/phpBB/config.php deleted file mode 100644 index 12027a89a6f..00000000000 --- a/phpBB/config.php +++ /dev/null @@ -1,23 +0,0 @@ - Date: Thu, 24 Nov 2016 12:25:59 +0100 Subject: [PATCH 027/431] [ticket/14865] Add stylelint file PHPBB3-14865 --- .stylelintrc | 468 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 468 insertions(+) create mode 100644 .stylelintrc diff --git a/.stylelintrc b/.stylelintrc new file mode 100644 index 00000000000..b069001a955 --- /dev/null +++ b/.stylelintrc @@ -0,0 +1,468 @@ +{ + "rules": { + "color-hex-case": "lower", + "color-hex-length": "long", + "color-named": "never", + "color-no-invalid-hex": true, + + "font-family-name-quotes": "always-where-recommended", + + "function-calc-no-unspaced-operator": true, + "function-comma-newline-after": "always-multi-line", + "function-comma-newline-before": "never-multi-line", + "function-comma-space-after": "always-single-line", + "function-comma-space-before": "never", + "function-linear-gradient-no-nonstandard-direction": true, + "function-max-empty-lines": 0, + "function-name-case": "lower", + "function-parentheses-newline-inside": "always-multi-line", + "function-parentheses-space-inside": "never-single-line", + "function-url-quotes": "always", + "function-whitespace-after": "always", + + "number-leading-zero": "always", + "number-max-precision": 3, + "number-no-trailing-zeros": true, + + "string-no-newline": true, + "string-quotes": single, + + "length-zero-no-unit": true, + + "unit-case": "lower", + "unit-no-unknown": true, + + "value-keyword-case": lower, + + "value-list-comma-newline-after": "always-multi-line", + "value-list-comma-newline-before": "never-multi-line", + "value-list-comma-space-after": "always-single-line", + "value-list-comma-space-before": "never", + "value-list-max-empty-lines": 0, + + "shorthand-property-no-redundant-values": true, + + "property-case": "lower", + "property-no-unknown": true, + + "keyframe-declaration-no-important": true, + + "declaration-bang-space-after": "never", + "declaration-bang-space-before": "always", + "declaration-colon-newline-after": "always-multi-line", + "declaration-colon-space-after": "always-single-line", + "declaration-colon-space-before": "never", + "declaration-empty-line-before": "never", + + "declaration-block-no-duplicate-properties": true, + "declaration-block-no-ignored-properties": true, + "declaration-block-no-shorthand-property-overrides": true, + "declaration-block-semicolon-newline-after": "always-multi-line", + "declaration-block-semicolon-newline-before": "never-multi-line", + "declaration-block-semicolon-space-after": "always-single-line", + "declaration-block-semicolon-space-before": "never", + "declaration-block-single-line-max-declarations": 1, + "declaration-block-trailing-semicolon": "always", + + "block-closing-brace-empty-line-before": "never", + "block-closing-brace-newline-after": "always", + "block-closing-brace-newline-before": "always-multi-line", + "block-closing-brace-space-after": "always-single-line", + "block-closing-brace-space-before": "always-single-line", + "block-no-empty": true, + "block-opening-brace-newline-after": "always-multi-line", + "block-opening-brace-space-after": "always-single-line", + "block-opening-brace-space-before": "always", + + "selector-attribute-brackets-space-inside": "never", + "selector-attribute-operator-space-after": "never", + "selector-attribute-operator-space-before": "never", + "selector-attribute-quotes": "always", + "selector-combinator-space-after": "always", + "selector-combinator-space-before": "always", + "selector-descendant-combinator-no-non-space": true, + "selector-max-compound-selectors": 3, + "selector-no-empty": true, + "selector-no-id": true, + "selector-no-qualifying-type": [ + true, { + "ignore": ["attribute"] + } + ], + "selector-pseudo-class-case": "lower", + "selector-pseudo-class-no-unknown": true, + "selector-pseudo-class-parentheses-space-inside": "never", + "selector-pseudo-element-case": "lower", + "selector-pseudo-element-colon-notation": "single", + "selector-pseudo-element-no-unknown": true, + "selector-type-case": "lower", + "selector-type-no-unknown": true, + "selector-max-empty-lines": 0, + + "selector-list-comma-newline-after": "always", + "selector-list-comma-space-before": "never", + + "rule-nested-empty-line-before": [ + "always-multi-line", { + "ignore": ["after-comment"], + "except": ["first-nested"] + } + ], + "rule-non-nested-empty-line-before": [ + "always-multi-line", { + "ignore": ["after-comment"] + } + ], + + "media-feature-colon-space-after": "always", + "media-feature-colon-space-before": "never", + "media-feature-name-case": "lower", + "media-feature-no-missing-punctuation": true, + "media-feature-parentheses-space-inside": "never", + "media-feature-range-operator-space-after": "always", + "media-feature-range-operator-space-before": "always", + + "media-query-list-comma-newline-after": "always-multi-line", + "media-query-list-comma-space-after": "always-single-line", + "media-query-list-comma-space-before": "never", + + "at-rule-empty-line-before": [ + "always", { + "except": ["blockless-group", "all-nested", "first-nested"], + "ignore": ["after-comment"] + } + ], + "at-rule-name-case": "lower", + "at-rule-name-space-after": "always-single-line", + "at-rule-semicolon-newline-after": "always", + + "comment-empty-line-before": [ + "always", { + "except": ["first-nested"], + "ignore": ["stylelint-commands"] + } + ], + "comment-whitespace-inside": "always", + + "indentation": "tab", + "max-empty-lines": 5, + + "no-duplicate-selectors": true, + "no-eol-whitespace": true, + "no-extra-semicolons": true, + "no-indistinguishable-colors": [ + true, { + "ignore": ["#fafafa", "#f5f5f5", "#eeeeee", "#ffffff" ] + } + ], + "no-invalid-double-slash-comments": true, + "no-missing-end-of-source-newline": true, + + "declaration-block-properties-order": [ + [ + "-moz-osx-font-smoothing", + "-webkit-font-smoothing", + "font", + "font-effect", + "font-emphasize", + "font-emphasize-position", + "font-emphasize-style", + "font-family", + "font-feature-settings", + "-webkit-font-feature-settings", + "font-size", + "font-size-adjust", + "font-smooth", + "font-stretch", + "font-style", + "font-variant", + "font-weight", + "-moz-hyphens", + "-webkit-hyphens", + "hyphens", + "letter-spacing", + "line-height", + "-moz-tab-size", + "-o-tab-size", + "-ms-text-size-adjust", + "-webkit-text-size-adjust", + "tab-size", + "text-align", + "-moz-text-align-last", + "-ms-text-align-last", + "-webkit-text-align-last", + "text-align-last", + "-webkit-text-decoration-skip", + "text-decoration", + "text-emphasis", + "text-emphasis-color", + "text-emphasis-position", + "text-emphasis-style", + "text-indent", + "-ms-text-justify", + "text-justify", + "text-outline", + "-ms-text-overflow", + "text-overflow", + "text-overflow-ellipsis", + "text-overflow-mode", + "text-transform", + "text-wrap", + "vertical-align", + "white-space", + "-ms-word-break", + "word-break", + "word-spacing", + "-ms-word-wrap", + "-ms-writing-mode", + "word-wrap", + + "background", + "background-attachment", + "-moz-background-clip", + "-webkit-background-clip", + "background-clip", + "background-color", + "background-image", + "background-origin", + "background-position", + "-ms-background-position-x", + "background-position-x", + "-ms-background-position-y", + "background-position-y", + "background-repeat", + "-moz-background-size", + "-o-background-size", + "-webkit-background-size", + "background-size", + "border", + "border-color", + "border-collapse", + "-o-border-image", + "-moz-border-image", + "-webkit-border-image", + "border-image", + "-moz-border-image-outset", + "-o-border-image-outset", + "-webkit-border-image-outset", + "border-image-outset", + "-moz-border-image-repeat", + "-o-border-image-repeat", + "-webkit-border-image-repeat", + "border-image-repeat", + "-moz-border-image-slice", + "-o-border-image-slice", + "-webkit-border-image-slice", + "border-image-slice", + "-moz-border-image-source", + "-o-border-image-source", + "-webkit-border-image-source", + "border-image-source", + "-moz-border-image-width", + "-o-border-image-width", + "-webkit-border-image-width", + "border-image-width", + "-moz-border-radius", + "-webkit-border-radius", + "border-radius", + "border-top", + "border-top-color", + "border-top-left-radius", + "-moz-border-radius-topleft", + "-webkit-border-top-left-radius", + "border-top-right-radius", + "-moz-border-radius-topright", + "-webkit-border-top-right-radius", + "border-top-style", + "border-top-width", + "border-right", + "border-right-color", + "border-right-style", + "border-right-width", + "border-bottom", + "border-bottom-color", + "-moz-border-radius-bottomleft", + "-webkit-border-bottom-left-radius", + "border-bottom-left-radius", + "-moz-border-radius-bottomright", + "-webkit-border-bottom-right-radius", + "border-bottom-right-radius", + "border-bottom-style", + "border-bottom-width", + "border-left", + "border-left-color", + "border-left-style", + "border-left-width", + "border-spacing", + "border-style", + "border-width", + "box-decoration-break", + "-moz-box-shadow", + "-webkit-box-shadow", + "box-shadow", + "color", + "opacity", + "outline", + "outline-color", + "outline-offset", + "outline-style", + "outline-width", + "text-shadow", + "-ms-interpolation-mode", + "-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", + "-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient", + "filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", + "filter:progid:DXImageTransform.Microsoft.gradient", + + "position", + "top", + "right", + "bottom", + "left", + "z-index", + + "display", + "visibility", + "float", + "clear", + "-ms-overflow-x", + "-ms-overflow-y", + "-ms-overflow-style", + "overflow", + "overflow-x", + "overflow-y", + "clip", + "zoom", + "-webkit-flex", + "flex-direction", + "flex-order", + "flex-pack", + "flex-align", + "flex", + + "-webkit-box-sizing", + "-moz-box-sizing", + "box-sizing", + "width", + "min-width", + "max-width", + "height", + "min-height", + "max-height", + "margin", + "margin-top", + "margin-right", + "margin-bottom", + "margin-left", + "padding", + "padding-top", + "padding-right", + "padding-bottom", + "padding-left", + + "table-layout", + "empty-cells", + "caption-side", + "list-style", + "list-style-position", + "list-style-type", + "list-style-image", + + "content", + "quotes", + "counter-reset", + "counter-increment", + "resize", + "cursor", + "-moz-user-select", + "-ms-user-select", + "-webkit-user-select", + "user-select", + "nav-index", + "nav-up", + "nav-right", + "nav-down", + "nav-left", + "-webkit-transition", + "-moz-transition", + "-ms-transition", + "-o-transition", + "transition", + "-webkit-transition-delay", + "-moz-transition-delay", + "-ms-transition-delay", + "-o-transition-delay", + "transition-delay", + "-webkit-transition-timing-function", + "-moz-transition-timing-function", + "-ms-transition-timing-function", + "-o-transition-timing-function", + "transition-timing-function", + "-webkit-transition-duration", + "-moz-transition-duration", + "-ms-transition-duration", + "-o-transition-duration", + "transition-duration", + "-webkit-transition-property", + "-moz-transition-property", + "-ms-transition-property", + "-o-transition-property", + "transition-property", + "-webkit-transform", + "-moz-transform", + "-ms-transform", + "-o-transform", + "transform", + "-webkit-transform-origin", + "-moz-transform-origin", + "-ms-transform-origin", + "-o-transform-origin", + "transform-origin", + "-webkit-animation", + "-moz-animation", + "-ms-animation", + "-o-animation", + "animation", + "-webkit-animation-name", + "-moz-animation-name", + "-ms-animation-name", + "-o-animation-name", + "animation-name", + "-webkit-animation-duration", + "-moz-animation-duration", + "-ms-animation-duration", + "-o-animation-duration", + "animation-duration", + "-webkit-animation-play-state", + "-moz-animation-play-state", + "-ms-animation-play-state", + "-o-animation-play-state", + "animation-play-state", + "-webkit-animation-timing-function", + "-moz-animation-timing-function", + "-ms-animation-timing-function", + "-o-animation-timing-function", + "animation-timing-function", + "-webkit-animation-delay", + "-moz-animation-delay", + "-ms-animation-delay", + "-o-animation-delay", + "animation-delay", + "-webkit-animation-iteration-count", + "-moz-animation-iteration-count", + "-ms-animation-iteration-count", + "-o-animation-iteration-count", + "animation-iteration-count", + "-webkit-animation-direction", + "-moz-animation-direction", + "-ms-animation-direction", + "-o-animation-direction", + "animation-direction", + "pointer-events", + "-moz-appearance", + "-webkit-appearance" + ], { unspecified: "ignore" } + ] + } +} From 452261e80645fcc23e49422b70bbf71b9255cee7 Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 24 Nov 2016 12:26:45 +0100 Subject: [PATCH 028/431] [ticket/14865] Fix all fixable linting issues PHPBB3-14865 --- phpBB/styles/prosilver/theme/base.css | 49 +- phpBB/styles/prosilver/theme/bidi.css | 372 +++--- phpBB/styles/prosilver/theme/buttons.css | 66 +- phpBB/styles/prosilver/theme/colours.css | 1133 +++++++++++-------- phpBB/styles/prosilver/theme/common.css | 510 +++++---- phpBB/styles/prosilver/theme/content.css | 360 +++--- phpBB/styles/prosilver/theme/cp.css | 160 +-- phpBB/styles/prosilver/theme/forms.css | 204 ++-- phpBB/styles/prosilver/theme/icons.css | 58 +- phpBB/styles/prosilver/theme/links.css | 53 +- phpBB/styles/prosilver/theme/normalize.css | 186 +-- phpBB/styles/prosilver/theme/plupload.css | 26 +- phpBB/styles/prosilver/theme/print.css | 185 ++- phpBB/styles/prosilver/theme/responsive.css | 252 +++-- phpBB/styles/prosilver/theme/stylesheet.css | 24 +- phpBB/styles/prosilver/theme/tweaks.css | 34 +- phpBB/styles/prosilver/theme/utilities.css | 61 +- 17 files changed, 2209 insertions(+), 1524 deletions(-) diff --git a/phpBB/styles/prosilver/theme/base.css b/phpBB/styles/prosilver/theme/base.css index 98c57d92644..570a0ad01f8 100644 --- a/phpBB/styles/prosilver/theme/base.css +++ b/phpBB/styles/prosilver/theme/base.css @@ -12,19 +12,21 @@ -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -}*/ +} +*/ + +/* Define your base font-size here; most elements will inherit this. */ -/* Define your base font-size here; most elements will inherit this. _NO__DOTCOMMA__AFTER__*/ html { font-size: 1em; /* Assuming 16px... */ - line-height: 1.5; /* 24px (This is now our magic number; all subsequent margin-bottoms and line-heights want to be a multiple of this number in order to maintain vertical rhythm.) _NO__DOTCOMMA__AFTER__*/ + line-height: 1.5; /* 24px (This is now our magic number; all subsequent margin-bottoms and line-heights want to be a multiple of this number in order to maintain vertical rhythm.) */ -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } body { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - color: #333333; + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: #ffffff; + color: #333333; } input, @@ -36,26 +38,31 @@ textarea { line-height: inherit; } -figure { margin: 0 } -img { vertical-align: middle } +figure { + margin: 0; +} + +img { + vertical-align: middle; +} hr { - margin-top: 20px; - margin-bottom: 20px; border: 0; border-top: 1px solid #e5e5e5; + margin-top: 20px; + margin-bottom: 20px; } a { - color: #428bca; text-decoration: none; + color: #428bca; } a:hover, a:focus, a:active { - color: #2a6496; text-decoration: underline; + color: #2a6496; } blockquote, @@ -69,7 +76,10 @@ h5, h6, figure, p, -pre { margin: 0 } +pre { + margin: 0; +} + button { background: transparent; border: 0; @@ -81,8 +91,7 @@ button { * results in a loss of the default `button` focus styles. */ button:focus { - outline: 1px dotted; - outline: 5px auto -webkit-focus-ring-color; + outline: 1px dotted 5px auto -webkit-focus-ring-color; } fieldset { @@ -91,12 +100,15 @@ fieldset { padding: 0; } -iframe { border: 0 } +iframe { + border: 0; +} + ol, ul { - list-style: none; margin: 0; padding: 0; + list-style: none; } /** @@ -104,7 +116,9 @@ ul { * This prevents an unwanted focus outline from appearing around elements that * might still respond to pointer events. */ -[tabindex="-1"]:focus { outline: none !important } +[tabindex='-1']:focus { + outline: none !important; +} /** * Remove double underline from recent version of firefox @@ -112,4 +126,3 @@ ul { abbr[title] { text-decoration: none; } - diff --git a/phpBB/styles/prosilver/theme/bidi.css b/phpBB/styles/prosilver/theme/bidi.css index f09493ab3b8..a8dc84fc62b 100644 --- a/phpBB/styles/prosilver/theme/bidi.css +++ b/phpBB/styles/prosilver/theme/bidi.css @@ -14,8 +14,8 @@ } .rtl div.rules ul { - margin-left: 0; margin-right: 20px; + margin-left: 0; } /* Main blocks @@ -47,48 +47,52 @@ } /* Horizontal lists -----------------------------------------*/ +---------------------------------------- */ .rtl ul.linklist > li { float: right; margin-right: 0; margin-left: 7px; } -.rtl ul.linklist > li.rightside, .rtl p.rightside, .rtl a.rightside { +.rtl ul.linklist > li.rightside, +.rtl p.rightside, +.rtl a.rightside { + text-align: left; float: left; margin-right: 7px; margin-left: 0; - text-align: left; } -.rtl ul.leftside > li, .rtl ul.rightside > li { +.rtl ul.leftside > li, +.rtl ul.rightside > li { float: left; } .rtl ul.leftside { + text-align: right; float: right; - margin-left: 5px; margin-right: 0; - text-align: right; + margin-left: 5px; } .rtl ul.rightside { + text-align: left; float: left; - margin-left: -5px; margin-right: 5px; - text-align: left; + margin-left: -5px; } /* Bulletin icons for list items -----------------------------------------*/ +---------------------------------------- */ .rtl ul.linklist.bulletin > li:before { - padding-left: 4px; padding-right: 0; + padding-left: 4px; } /* Dropdown menu ---------------------------------------- */ -.rtl .dropdown-container.topic-tools, .rtl .dropdown-container-left { +.rtl .dropdown-container.topic-tools, +.rtl .dropdown-container-left { float: right; } @@ -97,8 +101,8 @@ } .rtl .dropdown-contents > li { - padding-left: 15px; padding-right: 0; + padding-left: 15px; } .rtl .dropdown-nonscroll > li { @@ -106,34 +110,35 @@ } .rtl .dropdown li li { - padding-left: 0; padding-right: 18px; + padding-left: 0; } .rtl .dropdown-extended .header { text-align: right; } -.rtl .dropdown-extended .header .header_settings, .rtl .dropdown-container-right { +.rtl .dropdown-extended .header .header_settings, +.rtl .dropdown-container-right { float: left; } /* Notifications ------------------------------------------*/ +----------------------------------------- */ .rtl .notification_list ul li img { float: right; - margin-left: 5px; margin-right: 0; + margin-left: 5px; } .rtl .notification_list div.notifications { - margin-left: 0; margin-right: 50px; + margin-left: 0; } .rtl .notification_text { - margin-left: 0; margin-right: 58px; + margin-left: 0; } .rtl .notification_list p.notification-time { @@ -141,20 +146,20 @@ } /* Responsive breadcrumbs -----------------------------------------*/ +---------------------------------------- */ .rtl .breadcrumbs .crumb { float: right; } /* Table styles -----------------------------------------*/ +---------------------------------------- */ .rtl table.table1 thead th { padding: 0 3px 4px 0; } .rtl table.table1 thead th span { - padding-left: 0; padding-right: 7px; + padding-left: 0; } .rtl table.table1 tbody th { @@ -162,11 +167,26 @@ } /* Specific column styles */ -.rtl table.table1 .name { text-align: right; } -.rtl table.table1 .joined { text-align: right; } -.rtl table.table1 .active { text-align: right; } -.rtl table.table1 .info { text-align: right; } -.rtl table.table1 thead .autocol { padding-left: 0; padding-right: 1em; } +.rtl table.table1 .name { + text-align: right; +} + +.rtl table.table1 .joined { + text-align: right; +} + +.rtl table.table1 .active { + text-align: right; +} + +.rtl table.table1 .info { + text-align: right; +} + +.rtl table.table1 thead .autocol { + padding-right: 1em; + padding-left: 0; +} .rtl table.table1 span.rank-img { float: left; @@ -182,6 +202,7 @@ /* Misc layout styles ---------------------------------------- */ + /* column[1-2] styles are containers for two column layouts */ .rtl .column1 { float: right; @@ -195,37 +216,37 @@ /* General classes for placing floating blocks */ .rtl .left-box { - float: right; text-align: right; + float: right; } .rtl .right-box { - float: left; text-align: left; + float: left; } .rtl dl.details dt { + text-align: left; float: right; clear: right; - text-align: left; } .rtl dl.details dd { + float: right; margin-right: 0; margin-left: 0; padding-right: 5px; padding-left: 0; - float: right; } -*:first-child+html dl.details dd { - margin-right: 30%; +*:first-child + html dl.details dd { float: none; + margin-right: 30%; } * html dl.details dd { - margin-right: 30%; float: none; + margin-right: 30%; } /* Pagination @@ -236,16 +257,16 @@ } .rtl .pagination > ul { - margin-left: 0; margin-right: 5px; + margin-left: 0; } /* Pagination in viewforum for multipage topics */ .rtl .row .pagination { background-position: 100% 50%; float: left; - padding-left: 0; padding-right: 15px; + padding-left: 0; } .rtl .row .pagination > ul { @@ -257,21 +278,21 @@ } .pagination li.page-jump { - margin-left: 5px; margin-right: 0; + margin-left: 5px; } /* Action Bar styles ---------------------------------------- */ .rtl .action-bar .button { - margin-right: 0; float: right; + margin-right: 0; } .rtl .action-bar > .button { - margin-left: 5px; float: right; + margin-left: 5px; } .rtl .action-bar .dropdown-button-control .button { @@ -282,14 +303,14 @@ /* Miscellaneous styles ---------------------------------------- */ .rtl .quick-links { - margin-left: 7px; margin-right: 0; + margin-left: 7px; } .rtl .header-avatar span:after { float: left; - padding-left: 0; padding-right: 2px; + padding-left: 0; } .rtl .member-search { @@ -313,8 +334,8 @@ li.breadcrumbs span:first-child > a { /* Notification mark read link */ .rtl .dropdown-extended a.mark_read { border-radius: 0 3px 3px 0; - left: 0; right: auto; + left: 0; } .rtl .back2top .top { @@ -323,9 +344,10 @@ li.breadcrumbs span:first-child > a { } .rtl .skiplink { + right: -999px; + /* invisible skip link, used for accessibility */ left: 0; - right: -999px; } .rtl a.feed-icon-forum { @@ -335,7 +357,8 @@ li.breadcrumbs span:first-child > a { /** * content.css */ -.rtl ul.topiclist dt, .rtl li.header dt { +.rtl ul.topiclist dt, +.rtl li.header dt { float: right; margin-right: 0; margin-left: -440px; @@ -377,21 +400,21 @@ li.breadcrumbs span:first-child > a { } .rtl ul.topiclist dd { - float: right; - border-right-width: 1px; border-right-style: solid; + border-right-width: 1px; border-left: none; + float: right; } .rtl ul.topiclist dfn { - left: auto; right: -999px; + left: auto; } .rtl ul.topiclist li.row dt a.subforum { - padding-right: 12px; background-position: right; position: static; + padding-right: 12px; } .rtl .forum-image { @@ -400,16 +423,17 @@ li.breadcrumbs span:first-child > a { margin-left: 5px; } -.rtl li.header dt, .rtl li.header dd { +.rtl li.header dt, +.rtl li.header dd { border-right-width: 0; } .rtl li.header dd { - padding-left: 0; padding-right: 1px; + padding-left: 0; } -.rtl dl.row-item{ +.rtl dl.row-item { background-position: 99.5% 50%; } @@ -420,30 +444,35 @@ li.breadcrumbs span:first-child > a { } .rtl dl.row-item dt { - background-position: 99.5% 95%; /* Position of topic icon */ + background-position: 99.5% 95%; /* Position of topic icon */ } .rtl dl.row-item dt .list-inner { + padding-right: 45px; /* Space for folder icon */ padding-left: 5px; - padding-right: 45px; /* Space for folder icon */ } -.rtl dl a.row-item-link { /* topic row icon links */ - display: inline-block; - left: auto; +.rtl dl a.row-item-link { /* topic row icon links */ right: 0; - margin-left: 0; + left: auto; + display: inline-block; margin-right: 2px; + margin-left: 0; } -.rtl dd.lastpost > span, .rtl ul.topiclist dd.info > span, .rtl ul.topiclist dd.time > span, .rtl dd.redirect > span, .rtl dd.moderation > span { - padding-left: 0; +.rtl dd.lastpost > span, +.rtl ul.topiclist dd.info > span, +.rtl ul.topiclist dd.time > span, +.rtl dd.redirect > span, +.rtl dd.moderation > span { padding-right: 5px; + padding-left: 0; } /* Post body styles -----------------------------------------*/ -.rtl .postbody, .rtl .postbody h3 { +---------------------------------------- */ +.rtl .postbody, +.rtl .postbody h3 { float: right; } @@ -457,20 +486,21 @@ li.breadcrumbs span:first-child > a { } .rtl p.post-notice:before { - left: auto; right: 0; + left: auto; } /* Topic review panel -----------------------------------------*/ +---------------------------------------- */ .rtl .topicreview { padding-right: 0; padding-left: 5px; } /* Content container styles -----------------------------------------*/ -.rtl .content ul, .rtl .content ol { +---------------------------------------- */ +.rtl .content ul, +.rtl .content ol { margin-right: 3em; margin-left: 0; } @@ -489,11 +519,12 @@ li.breadcrumbs span:first-child > a { } /* BB Code styles -----------------------------------------*/ +---------------------------------------- */ + /* Quote block */ .rtl blockquote { - margin: 0.5em 25px 0 1px; background-position: 99% 8px; + margin: 0.5em 25px 0 1px; } .rtl blockquote blockquote { @@ -516,11 +547,11 @@ li.breadcrumbs span:first-child > a { } /* Attachments -----------------------------------------*/ +---------------------------------------- */ .rtl .attachbox { float: right; - margin: 5px 0 5px 5px; clear: right; + margin: 5px 0 5px 5px; } .rtl .attachbox dd { @@ -536,16 +567,16 @@ li.breadcrumbs span:first-child > a { } /* Post poll styles -----------------------------------------*/ +---------------------------------------- */ .rtl fieldset.polls dt { text-align: right; - float: right; border-left: none; + float: right; } .rtl fieldset.polls dd { - float: right; border-right: none; + float: right; margin-right: 0; } @@ -553,29 +584,35 @@ li.breadcrumbs span:first-child > a { text-align: left; } -.rtl .pollbar1, .rtl .pollbar2, .rtl .pollbar3, .rtl .pollbar4, .rtl .pollbar5 { - border-left-width: 1px; - border-left-style: solid; +.rtl .pollbar1, +.rtl .pollbar2, +.rtl .pollbar3, +.rtl .pollbar4, +.rtl .pollbar5 { border-right: none; + border-left-style: solid; + border-left-width: 1px; } /* Poster profile block -----------------------------------------*/ +---------------------------------------- */ .rtl .postprofile { border-width: 0 1px 0 0; float: left; -/* text-align: right; */ + + /* text-align: right; */ } .rtl .pm .postprofile { - border-right-width: 1px; border-right-style: solid; + border-right-width: 1px; border-left: none; } -.rtl .postprofile dd, .rtl .postprofile dt { - margin-left: 0; +.rtl .postprofile dd, +.rtl .postprofile dt { margin-right: 8px; + margin-left: 0; } .rtl .postprofile .avatar { @@ -608,8 +645,8 @@ li.breadcrumbs span:first-child > a { } .rtl .has-profile .post-buttons { - left: 0; right: auto; + left: 0; } .rtl .post-buttons li { @@ -617,11 +654,11 @@ li.breadcrumbs span:first-child > a { } /* Poster contact icons - ----------------------------------------*/ + ---------------------------------------- */ .rtl .contact-icons a { - border-left-width: 1px; - border-left-style: dotted; border-right: none; + border-left-style: dotted; + border-left-width: 1px; float: right; } @@ -632,12 +669,13 @@ li.breadcrumbs span:first-child > a { /** * cp.css */ + /* Control Panel Styles ---------------------------------------- */ /* Main CP box -----------------------------------------*/ +---------------------------------------- */ .rtl .cp-menu { float: right; } @@ -661,10 +699,10 @@ li.breadcrumbs span:first-child > a { } /* CP tabbed menu -----------------------------------------*/ +---------------------------------------- */ .rtl .tabs { - margin-left: 0; margin-right: 7px; + margin-left: 0; } .rtl .tabs .tab { @@ -672,12 +710,12 @@ li.breadcrumbs span:first-child > a { } .rtl .tabs .tab > a { - margin-left: 1px; margin-right: 0; + margin-left: 1px; } /* Mini tabbed menu used in MCP -----------------------------------------*/ +---------------------------------------- */ .rtl .minitabs { float: left; margin-right: 0; @@ -694,7 +732,7 @@ li.breadcrumbs span:first-child > a { } /* Responsive tabs -----------------------------------------*/ +---------------------------------------- */ .rtl .tabs .dropdown { margin-left: -2px; } @@ -712,22 +750,24 @@ li.breadcrumbs span:first-child > a { } /* Responsive *CP navigation -----------------------------------------*/ -@media only screen and (max-width: 900px), only screen and (max-device-width: 900px) -{ - .rtl .cp-menu, .rtl .navigation, .rtl .cp-main { +---------------------------------------- */ + +@media only screen and (max-width: 900px), only screen and (max-device-width: 900px) { + .rtl .cp-menu, + .rtl .navigation, + .rtl .cp-main { float: none; } } /* UCP navigation menu -----------------------------------------*/ +---------------------------------------- */ /* Preferences pane layout -----------------------------------------*/ +---------------------------------------- */ .rtl .cp-main h2 { - margin-left: 0; margin-right: 10px; + margin-left: 0; } /* Friends list */ @@ -736,7 +776,7 @@ li.breadcrumbs span:first-child > a { } /* PM Styles -----------------------------------------*/ +---------------------------------------- */ /* PM panel adjustments */ .rtl .reply-all a.right { @@ -758,11 +798,11 @@ li.breadcrumbs span:first-child > a { /* PM marking colours */ .rtl .pm-legend { - border-right-width: 10px; border-right-style: solid; + border-right-width: 10px; border-left-width: 0; - padding-left: 0; padding-right: 3px; + padding-left: 0; } /* Avatar gallery */ @@ -771,10 +811,12 @@ li.breadcrumbs span:first-child > a { } /* Responsive *CP navigation -----------------------------------------*/ -@media only screen and (max-width: 900px), only screen and (max-device-width: 900px) -{ - .rtl .cp-menu, .rtl .navigation, .rtl .cp-main { +---------------------------------------- */ + +@media only screen and (max-width: 900px), only screen and (max-device-width: 900px) { + .rtl .cp-menu, + .rtl .navigation, + .rtl .cp-main { float: none; } } @@ -784,7 +826,7 @@ li.breadcrumbs span:first-child > a { */ /* General form styles -----------------------------------------*/ +---------------------------------------- */ .rtl option { padding-right: 0; @@ -799,26 +841,26 @@ li.breadcrumbs span:first-child > a { /* Definition list layout for forms ---------------------------------------- */ .rtl fieldset dt { - float: right; text-align: right; + float: right; } .rtl fieldset dd { - margin-left: 0; margin-right: 41%; + margin-left: 0; } /* Specific layout 1 */ .rtl fieldset.fields1 dt { - border-left-width: 0; border-right-width: 1px; + border-left-width: 0; } .rtl fieldset.fields1 dd { - margin-right: 15em; - margin-left: 0; border-right-width: 0; border-left-width: 1px; + margin-right: 15em; + margin-left: 0; } /* Specific layout 2 */ @@ -828,10 +870,10 @@ li.breadcrumbs span:first-child > a { } .rtl fieldset.fields2 dd { + border-right-width: 0; + border-left-width: 1px; margin-right: 16em; margin-left: 0; - border-left-width: 1px; - border-right-width: 0; } /* Form elements */ @@ -839,26 +881,27 @@ li.breadcrumbs span:first-child > a { text-align: right; } -.rtl dd input, .rtl dd textarea { - margin-left: 3px; +.rtl dd input, +.rtl dd textarea { margin-right: 0; + margin-left: 3px; } /* Quick-login on index page */ .rtl fieldset.quick-login input.inputbox { - margin-left: 5px; margin-right: 0; + margin-left: 5px; } .rtl fieldset.quick-login label { - padding-left: 2px; padding-right: 0; + padding-left: 2px; } /* Display options on viewtopic/viewforum pages */ .rtl fieldset.display-options label { - padding-left: 2px; padding-right: 0; + padding-left: 2px; } .rtl .dropdown fieldset.display-options label { @@ -868,16 +911,16 @@ li.breadcrumbs span:first-child > a { /* Display actions for ucp and mcp pages */ .rtl fieldset.display-actions { text-align: left; - padding-left: 1em; padding-right: 0; + padding-left: 1em; } .rtl fieldset.display-actions label { - padding-left: 2px; padding-right: 0; + padding-left: 2px; } -/* MCP forum selection*/ +/* MCP forum selection */ .rtl fieldset.forum-selection { float: left; } @@ -887,7 +930,7 @@ li.breadcrumbs span:first-child > a { } /* Posting page styles -----------------------------------------*/ +---------------------------------------- */ /* Emoticons panel */ .rtl .smiley-box { @@ -903,9 +946,9 @@ li.breadcrumbs span:first-child > a { } .rtl .search-box .inputbox { - border-left-width: 0; - border-right-width: 1px; border-radius: 0 4px 4px 0; + border-right-width: 1px; + border-left-width: 0; float: right; padding: 3px; } @@ -916,8 +959,8 @@ li.breadcrumbs span:first-child > a { } .button-search-end { - border-left-width: 1px; border-right-width: 0; + border-left-width: 1px; } .rtl .search-header .button-search-end { @@ -935,7 +978,10 @@ li.breadcrumbs span:first-child > a { ---------------------------------------- */ /** Reference: Bug #27155 */ -.rtl .wrap, .rtl .headerbar, .rtl .site-description, .rtl .navbar { +.rtl .wrap, +.rtl .headerbar, +.rtl .site-description, +.rtl .navbar { position: relative; } @@ -950,19 +996,24 @@ li.breadcrumbs span:first-child > a { /** * responsive.css */ -@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) -{ + +@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { /* .topiclist lists - ----------------------------------------*/ - .rtl ul.topiclist li.header dt, .rtl ul.topiclist li.header dt .list-inner { + ---------------------------------------- */ + .rtl ul.topiclist li.header dt, + .rtl ul.topiclist li.header dt .list-inner { margin-left: 0 !important; padding-left: 0; } - .rtl ul.topiclist dt, .rtl ul.topiclist dt .list-inner, - .rtl ul.topiclist.missing-column dt, .rtl ul.topiclist.missing-column dt .list-inner, - .rtl ul.topiclist.two-long-columns dt, .rtl ul.topiclist.two-long-columns dt .list-inner, - .rtl ul.topiclist.two-columns dt, .rtl ul.topiclist.two-columns dt .list-inner { + .rtl ul.topiclist dt, + .rtl ul.topiclist dt .list-inner, + .rtl ul.topiclist.missing-column dt, + .rtl ul.topiclist.missing-column dt .list-inner, + .rtl ul.topiclist.two-long-columns dt, + .rtl ul.topiclist.two-long-columns dt .list-inner, + .rtl ul.topiclist.two-columns dt, + .rtl ul.topiclist.two-columns dt .list-inner { margin-left: 0; } @@ -971,21 +1022,23 @@ li.breadcrumbs span:first-child > a { } /* Forums and topics lists - ----------------------------------------*/ + ---------------------------------------- */ .rtl ul.topiclist.forums dt { margin-left: -250px; } + .rtl ul.topiclist.forums dt .list-inner { margin-left: 250px; } .rtl ul.topiclist dd.mark { - left: 5px; - right: auto; text-align: right; + right: auto; + left: 5px; } - .rtl table.responsive.show-header thead, .rtl table.responsive.show-header th:first-child { + .rtl table.responsive.show-header thead, + .rtl table.responsive.show-header th:first-child { text-align: right !important; } @@ -994,28 +1047,34 @@ li.breadcrumbs span:first-child > a { } /* User profile - ----------------------------------------*/ - .rtl .column1, .rtl .column2, .rtl .left-box.profile-details { + ---------------------------------------- */ + .rtl .column1, + .rtl .column2, + .rtl .left-box.profile-details { float: none; } /* Post - ----------------------------------------*/ - .rtl .postprofile, .rtl .postbody, .rtl .search .postbody { + ---------------------------------------- */ + .rtl .postprofile, + .rtl .postbody, + .rtl .search .postbody { float: none; } .rtl .post .postprofile { - border-width: 0 0 1px 0; + border-width: 0 0 1px; } - .rtl .postprofile dt, .rtl .postprofile dd.profile-rank, .rtl .search .postprofile dd { + .rtl .postprofile dt, + .rtl .postprofile dd.profile-rank, + .rtl .search .postprofile dd { margin: 0; } .rtl .postprofile .avatar { - margin-left: 5px; margin-right: 0; + margin-left: 5px; } .rtl .has-profile .post-buttons { @@ -1023,20 +1082,23 @@ li.breadcrumbs span:first-child > a { } /* Forms - ----------------------------------------*/ - .rtl fieldset dt, .rtl fieldset.fields1 dt, .rtl fieldset.fields2 dt { + ---------------------------------------- */ + .rtl fieldset dt, + .rtl fieldset.fields1 dt, + .rtl fieldset.fields2 dt { float: none; } - .rtl fieldset dd, .rtl fieldset.fields1 dd, .rtl fieldset.fields2 dd { + .rtl fieldset dd, + .rtl fieldset.fields1 dd, + .rtl fieldset.fields2 dd { margin-right: 20px; } } -@media only screen and (max-width: 550px), only screen and (max-device-width: 550px) -{ +@media only screen and (max-width: 550px), only screen and (max-device-width: 550px) { /* .topiclist lists - ----------------------------------------*/ + ---------------------------------------- */ .rtl ul.topiclist.forums dt { margin-left: 0; } @@ -1046,16 +1108,16 @@ li.breadcrumbs span:first-child > a { } } -@media only screen and (max-width: 500px), only screen and (max-device-width: 500px) -{ - .rtl dl.details dt, .rtl dl.details dd { - float: none; +@media only screen and (max-width: 500px), only screen and (max-device-width: 500px) { + .rtl dl.details dt, + .rtl dl.details dd { text-align: right; + float: none; } .rtl dl.details dd { - margin-left: 0; margin-right: 20px; + margin-left: 0; } .captcha-panel dd.captcha { diff --git a/phpBB/styles/prosilver/theme/buttons.css b/phpBB/styles/prosilver/theme/buttons.css index 4c8283fdc0b..b4f98f3eaae 100644 --- a/phpBB/styles/prosilver/theme/buttons.css +++ b/phpBB/styles/prosilver/theme/buttons.css @@ -2,30 +2,29 @@ ---------------------------------------- */ .button { - display: inline-block; - padding: 2px 8px; + font-family: 'Open Sans', 'Droid Sans', Verdana, Arial, Helvetica; font-size: 13px; font-weight: normal; - font-family: "Open Sans", "Droid Sans", Verdana, Arial, Helvetica; line-height: 1.4; text-align: center; - white-space: nowrap; vertical-align: middle; - -ms-touch-action: manipulation; - touch-action: manipulation; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; + white-space: nowrap; border: 1px solid transparent; border-radius: 4px; + display: inline-block; + padding: 2px 8px; + cursor: pointer; + -moz-user-select: none; + -ms-user-select: none; + -webkit-user-select: none; + user-select: none; + touch-action: manipulation; } .button:focus, .button:hover { - text-decoration: none; - outline: none; + text-decoration: none; + outline: none; } .caret { @@ -39,18 +38,18 @@ } /* Posting page styles -----------------------------------------*/ +---------------------------------------- */ .button-search, -.button-search-end { - float: left; +.button-search-end { border-radius: 0; + float: left; margin: 0; padding: 2px 5px; } .button-search-end { - border-left-width: 0; border-radius: 0 4px 4px 0; + border-left-width: 0; } .search-header .button-search, @@ -65,27 +64,28 @@ } .button-icon-only { - padding-left: 3px; padding-right: 3px; + padding-left: 3px; } /* Poster contact icons -----------------------------------------*/ +---------------------------------------- */ .contact-icons.dropdown-contents { + font-size: 0; min-width: 0; padding: 0; - font-size: 0; } .contact-icon { background-repeat: no-repeat; display: block; - height: 16px; width: 16px; + height: 16px; } + .contact-icons a { - border-bottom: 1px dotted; border-right: 1px dotted; + border-bottom: 1px dotted; display: block; float: left; padding: 8px; @@ -107,16 +107,15 @@ --------------------------------------------- */ .post-buttons { float: right; - list-style: none; margin-top: 2px; + list-style: none; } .has-profile .post-buttons { - float: none; position: absolute; - margin: 0; - right: 0; top: 5px; + right: 0; + margin: 0; } .post-buttons > li { @@ -124,9 +123,10 @@ margin-right: 3px; } -.post-buttons .button, .format-buttons .button { - padding-left: 3px; +.post-buttons .button, +.format-buttons .button { padding-right: 3px; + padding-left: 3px; } .hastouch .post-buttons { @@ -143,9 +143,9 @@ } .post-buttons .dropdown a { - display: block; font-size: 1.2em; text-align: right; + display: block; } .hasjs .postbody .post-buttons { @@ -154,16 +154,16 @@ /* Browser-specific tweaks */ button::-moz-focus-inner { + border: 0; padding: 0; - border: 0 } /* Deprecated as of version 3.2 --------------------------------------------------*/ +------------------------------------------------- */ .small-icon { + background-image: none; background-position: 0 50%; background-repeat: no-repeat; - background-image: none; } .dropdown .small-icon { @@ -188,6 +188,6 @@ ul.linklist.bulletin > li.small-icon:before { } .rtl .small-icon > a { - padding-left: 0; padding-right: 19px; + padding-left: 0; } diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index cf21ac216b3..207bdfdd24b 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -1,115 +1,126 @@ /* -------------------------------------------------------------- -Colours and backgrounds for common.css +colours and backgrounds for common.css -------------------------------------------------------------- */ -html, body { +html, +body { + background-color: #f5f7fa; color: #536482; - background-color: #F5F7FA; } h1 { - color: #FFFFFF; + color: #ffffff; } h2 { - color: #28313F; + color: #28313f; } h3 { - border-bottom-color: #CCCCCC; + border-bottom-color: #cccccc; color: #115098; } hr { - border-color: #FFFFFF; - border-top-color: #CCCCCC; + border-color: #ffffff; + border-top-color: #cccccc; } /* -------------------------------------------------------------- -Colours and backgrounds for links.css +colours and backgrounds for links.css -------------------------------------------------------------- */ -a { color: #105289; } -a:hover { color: #D31141; } +a { + color: #105289; +} + +a:hover { + color: #d31141; +} -/* Links on gradient backgrounds */ -.forumbg .header a, .forabg .header a, th a { - color: #FFFFFF; +/* links on gradient backgrounds */ +.forumbg .header a, +.forabg .header a, +th a { + color: #ffffff; } -.forumbg .header a:hover, .forabg .header a:hover, th a:hover { - color: #A8D8FF; +.forumbg .header a:hover, +.forabg .header a:hover, +th a:hover { + color: #a8d8ff; } -/* Notification mark read link */ +/* notification mark read link */ .dropdown-extended a.mark_read { - background-color: #FFFFFF; + background-color: #ffffff; } -/* Post body links */ +/* post body links */ .postlink { - border-bottom-color: #368AD2; - color: #368AD2; + border-bottom-color: #368ad2; + color: #368ad2; } .postlink:visited { - border-bottom-color: #5D8FBD; - color: #5D8FBD; + border-bottom-color: #5d8fbd; + color: #5d8fbd; } .postlink:hover { - background-color: #D0E4F6; - color: #0D4473; + background-color: #d0e4f6; + color: #0d4473; } -.signature a, .signature a:hover { +.signature a, +.signature a:hover { background-color: transparent; } -/* Back to top of page */ +/* back to top of page */ .top i { color: #999999; } -/* Arrow links */ -.arrow-left:hover, .arrow-right:hover { - color: #368AD2; +/* arrow links */ +.arrow-left:hover, +.arrow-right:hover { + color: #368ad2; } -/* Round cornered boxes and backgrounds +/* round cornered boxes and backgrounds ---------------------------------------- */ .wrap { - background-color: #FFF; - border-color: #E6E9ED; + background-color: #ffffff; + border-color: #e6e9ed; } .headerbar { - color: #FFFFFF; + color: #ffffff; } -.headerbar, .forumbg { - background-color: #12A3EB; - background-image: -webkit-linear-gradient(top, #6ACEFF 0%, #0076B1 2px, #12A3EB 92px, #12A3EB 100%); - background-image: linear-gradient(to bottom, #6ACEFF 0%,#0076B1 2px,#12A3EB 92px,#12A3EB 100%); +.headerbar, +.forumbg { + background-color: #12a3eb; + background-image: linear-gradient(to bottom, #6aceff 0%, #0076b1 2px, #12a3eb 92px, #12a3eb 100%); background-repeat: repeat-x; } .forabg { - background-color: #0076B1; - background-image: -webkit-linear-gradient(top, #6ACEFF 0%, #12A3EB 2px, #0076B1 92px, #0076B1 100%); - background-image: linear-gradient(to bottom, #6ACEFF 0%,#12A3EB 2px,#0076B1 92px,#0076B1 100%); + background-color: #0076b1; + background-image: linear-gradient(to bottom, #6aceff 0%, #12a3eb 2px, #0076b1 92px, #0076b1 100%); background-repeat: repeat-x; } .navbar { - background-color: #CADCEB; + background-color: #cadceb; } .panel { - background-color: #ECF1F3; - color: #28313F; + background-color: #ecf1f3; + color: #28313f; } .post:target .content { @@ -121,57 +132,60 @@ a:hover { color: #D31141; } } .bg1 { - background-color: #ECF3F7; + background-color: #ecf3f7; } -table.zebra-list tr:nth-child(odd) td, ul.zebra-list li:nth-child(odd) { - background-color: #ECF3F7; +table.zebra-list tr:nth-child(odd) td, +ul.zebra-list li:nth-child(odd) { + background-color: #ecf3f7; } .bg2 { - background-color: #E1EBF2; + background-color: #e1ebf2; } -table.zebra-list tr:nth-child(even) td, ul.zebra-list li:nth-child(even) { - background-color: #E1EBF2; +table.zebra-list tr:nth-child(even) td, +ul.zebra-list li:nth-child(even) { + background-color: #e1ebf2; } -.bg3 { - background-color: #CADCEB; +.bg3 { + background-color: #cadceb; } .ucprowbg { - background-color: #DCDEE2; + background-color: #dcdee2; } .fieldsbg { - background-color: #E7E8EA; + background-color: #e7e8ea; } .site_logo { - background-image: url("./images/site_logo.gif"); + background-image: url('./images/site_logo.gif'); } -/* Horizontal lists -----------------------------------------*/ +/* horizontal lists +---------------------------------------- */ ul.navlinks { - border-top-color: #FFFFFF; + border-top-color: #ffffff; } -/* Table styles -----------------------------------------*/ +/* table styles +---------------------------------------- */ table.table1 thead th { - color: #FFFFFF; + color: #ffffff; } table.table1 tbody tr { - border-color: #BFC1CF; + border-color: #bfc1cf; } -table.table1 tbody tr:hover, table.table1 tbody tr.hover { - background-color: #CFE1F6; - color: #000; +table.table1 tbody tr:hover, +table.table1 tbody tr.hover { + background-color: #cfe1f6; + color: #000000; } table.table1 td { @@ -179,20 +193,20 @@ table.table1 td { } table.table1 tbody td { - border-top-color: #FAFAFA; + border-top-color: #fafafa; } table.table1 tbody th { + background-color: #ffffff; border-bottom-color: #000000; color: #333333; - background-color: #FFFFFF; } table.info tbody th { color: #000000; } -/* Misc layout styles +/* misc layout styles ---------------------------------------- */ dl.details dt { color: #000000; @@ -203,85 +217,93 @@ dl.details dd { } .sep { - color: #1198D9; + color: #1198d9; } -/* Icon styles +/* icon styles ---------------------------------------- */ -.icon.icon-blue, a:hover .icon.icon-blue { +.icon.icon-blue, +a:hover .icon.icon-blue { color: #196db5; } -.icon.icon-green, a:hover .icon.icon-green{ - color: #1b9A1B; +.icon.icon-green, +a:hover .icon.icon-green { + color: #1b9a1b; } -.icon.icon-red, a:hover .icon.icon-red{ - color: #BC2A4D; +.icon.icon-red, +a:hover .icon.icon-red { + color: #bc2a4d; } -.icon.icon-orange, a:hover .icon.icon-orange{ - color: #FF6600; +.icon.icon-orange, +a:hover .icon.icon-orange { + color: #ff6600; } -.icon.icon-bluegray, a:hover .icon.icon-bluegray{ +.icon.icon-bluegray, +a:hover .icon.icon-bluegray { color: #536482; } -.icon.icon-gray, a:hover .icon.icon-gray{ +.icon.icon-gray, +a:hover .icon.icon-gray { color: #777777; } -.icon.icon-lightgray, a:hover .icon.icon-lightgray{ +.icon.icon-lightgray, +a:hover .icon.icon-lightgray { color: #999999; } -.icon.icon-black, a:hover .icon.icon-black{ +.icon.icon-black, +a:hover .icon.icon-black { color: #333333; } .alert_close .icon:before { - background-color: #FFFFFF; + background-color: #ffffff; } -/* Jumpbox */ +/* jumpbox */ .jumpbox .dropdown li { - border-top-color: #CCCCCC; + border-top-color: #cccccc; } .jumpbox-cat-link { background-color: #0076b1; - border-top-color: #0076B1; - color: #FFFFFF; + border-top-color: #0076b1; + color: #ffffff; } .jumpbox-cat-link:hover { - background-color: #12A3EB; - border-top-color: #12A3EB; - color: #FFFFFF; + background-color: #12a3eb; + border-top-color: #12a3eb; + color: #ffffff; } .jumpbox-forum-link { - background-color: #E1EBF2; + background-color: #e1ebf2; } .jumpbox-forum-link:hover { - background-color: #F6F4D0; + background-color: #f6f4d0; } .jumpbox .dropdown .pointer-inner { - border-color: #E1EBF2 transparent; + border-color: #e1ebf2 transparent; } .jumpbox-sub-link { - background-color: #E1EBF2; + background-color: #e1ebf2; } .jumpbox-sub-link:hover { - background-color: #F1F8FF; + background-color: #f1f8ff; } -/* Miscellaneous styles +/* miscellaneous styles ---------------------------------------- */ .copyright { @@ -289,58 +311,59 @@ dl.details dd { } .error { - color: #BC2A4D; + color: #bc2a4d; } .reported { - background-color: #F7ECEF; + background-color: #f7ecef; } li.reported:hover { - background-color: #ECD5D8 !important; + background-color: #ecd5d8 !important; } -.sticky, .announce { - /* you can add a background for stickies and announcements*/ + +.sticky, +.announce { + /* you can add a background for stickies and announcements */ } div.rules { - background-color: #ECD5D8; - color: #BC2A4D; + background-color: #ecd5d8; + color: #bc2a4d; } p.post-notice { - background-color: #ECD5D8; + background-color: #ecd5d8; background-image: none; } /* -------------------------------------------------------------- -Colours and backgrounds for content.css +colours and backgrounds for content.css -------------------------------------------------------------- */ ul.forums { - background-color: #EEF5F9; /* Old browsers */ /* FF3.6+ */ - background-image: -webkit-linear-gradient(top, #D2E0EB 0%, #EEF5F9 100%); - background-image: linear-gradient(to bottom, #D2E0EB 0%,#EEF5F9 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#D2E0EB', endColorstr='#EEF5F9',GradientType=0 ); /* IE6-9 */ + background-color: #eef5f9; /* old browsers */ /* ff3.6+ */ + background-image: linear-gradient(to bottom, #d2e0eb 0%, #eef5f9 100%); /* w3c */ + filter: progid:dximagetransform.microsoft.gradient(startcolorstr='#d2e0eb', endcolorstr='#eef5f9', gradienttype=0); /* ie6-9 */ } ul.topiclist li { - color: #4C5D77; + color: #4c5d77; } ul.topiclist dd { - border-left-color: #FFFFFF; + border-left-color: #ffffff; } .rtl ul.topiclist dd { - border-right-color: #FFFFFF; + border-right-color: #ffffff; border-left-color: transparent; } li.row { - border-top-color: #FFFFFF; - border-bottom-color: #00608F; + border-top-color: #ffffff; + border-bottom-color: #00608f; } li.row strong { @@ -348,37 +371,39 @@ li.row strong { } li.row:hover { - background-color: #F6F4D0; + background-color: #f6f4d0; } li.row:hover dd { - border-left-color: #CCCCCC; + border-left-color: #cccccc; } .rtl li.row:hover dd { - border-right-color: #CCCCCC; + border-right-color: #cccccc; border-left-color: transparent; } -li.header dt, li.header dd { - color: #FFFFFF; +li.header dt, +li.header dd { + color: #ffffff; } -/* Post body styles -----------------------------------------*/ +/* post body styles +---------------------------------------- */ .postbody { color: #333333; } -/* Content container styles -----------------------------------------*/ +/* content container styles +---------------------------------------- */ .content { color: #333333; } -.content h2, .panel h2 { +.content h2, +.panel h2 { + border-bottom-color: #cccccc; color: #115098; - border-bottom-color: #CCCCCC; } dl.faq dt { @@ -386,81 +411,100 @@ dl.faq dt { } .posthilit { - background-color: #F3BFCC; - color: #BC2A4D; + background-color: #f3bfcc; + color: #bc2a4d; } -.announce, .unreadpost { - /* Highlight the announcements & unread posts box */ +.announce, +.unreadpost { + /* highlight the announcements & unread posts box */ } -/* Post signature */ +/* post signature */ .signature { - border-top-color: #CCCCCC; + border-top-color: #cccccc; } -/* Post noticies */ +/* post noticies */ .notice { - border-top-color: #CCCCCC; + border-top-color: #cccccc; } -/* BB Code styles -----------------------------------------*/ -/* Quote block */ +/* bb code styles +---------------------------------------- */ + +/* quote block */ blockquote { - background-color: #EBEADD; - background-image: url("./images/quote.gif"); - border-color:#DBDBCE; + background-color: #ebeadd; + background-image: url('./images/quote.gif'); + border-color: #dbdbce; } .rtl blockquote { - background-image: url("./images/quote_rtl.gif"); + background-image: url('./images/quote_rtl.gif'); } blockquote blockquote { - /* Nested quotes */ - background-color:#EFEED9; + /* nested quotes */ + background-color: #efeed9; } blockquote blockquote blockquote { - /* Nested quotes */ - background-color: #EBEADD; + /* nested quotes */ + background-color: #ebeadd; } -/* Code block */ +/* code block */ .codebox { - background-color: #FFFFFF; - border-color: #C9D2D8; + background-color: #ffffff; + border-color: #c9d2d8; } .codebox p { - border-bottom-color: #CCCCCC; + border-bottom-color: #cccccc; } .codebox code { - color: #2E8B57; + color: #2e8b57; +} + +.syntaxbg { + color: #ffffff; } -.syntaxbg { color: #FFFFFF; } -.syntaxcomment { color: #FF8000; } -.syntaxdefault { color: #0000BB; } -.syntaxhtml { color: #000000; } -.syntaxkeyword { color: #007700; } -.syntaxstring { color: #DD0000; } +.syntaxcomment { + color: #ff8000; +} -/* Attachments -----------------------------------------*/ +.syntaxdefault { + color: #0000bb; +} + +.syntaxhtml { + color: #000000; +} + +.syntaxkeyword { + color: #007700; +} + +.syntaxstring { + color: #dd0000; +} + +/* attachments +---------------------------------------- */ .attachbox { - background-color: #FFFFFF; - border-color: #C9D2D8; + background-color: #ffffff; + border-color: #c9d2d8; } .pm-message .attachbox { - background-color: #F2F3F3; + background-color: #f2f3f3; } .attachbox dd { - border-top-color: #C9D2D8; + border-top-color: #c9d2d8; } .attachbox p { @@ -475,15 +519,15 @@ blockquote blockquote blockquote { border-color: #999999; } -/* Inline image thumbnails */ +/* inline image thumbnails */ dl.file dd { color: #666666; } dl.thumbnail img { + background-color: #ffffff; border-color: #666666; - background-color: #FFFFFF; } dl.thumbnail dd { @@ -491,18 +535,18 @@ dl.thumbnail dd { } dl.thumbnail dt a:hover { - background-color: #EEEEEE; + background-color: #eeeeee; } dl.thumbnail dt a:hover img { - border-color: #368AD2; + border-color: #368ad2; } -/* Post poll styles -----------------------------------------*/ +/* post poll styles +---------------------------------------- */ fieldset.polls dl { - border-top-color: #DCDEE2; + border-top-color: #dcdee2; color: #666666; } @@ -511,72 +555,76 @@ fieldset.polls dl.voted { } fieldset.polls dd div { - color: #FFFFFF; + color: #ffffff; } -.rtl .pollbar1, .rtl .pollbar2, .rtl .pollbar3, .rtl .pollbar4, .rtl .pollbar5 { +.rtl .pollbar1, +.rtl .pollbar2, +.rtl .pollbar3, +.rtl .pollbar4, +.rtl .pollbar5 { border-right-color: transparent; } .pollbar1 { - background-color: #AA2346; - border-bottom-color: #74162C; - border-right-color: #74162C; + background-color: #aa2346; + border-right-color: #74162c; + border-bottom-color: #74162c; } .rtl .pollbar1 { - border-left-color: #74162C; + border-left-color: #74162c; } .pollbar2 { - background-color: #BE1E4A; - border-bottom-color: #8C1C38; - border-right-color: #8C1C38; + background-color: #be1e4a; + border-right-color: #8c1c38; + border-bottom-color: #8c1c38; } .rtl .pollbar2 { - border-left-color: #8C1C38; + border-left-color: #8c1c38; } .pollbar3 { - background-color: #D11A4E; - border-bottom-color: #AA2346; - border-right-color: #AA2346; + background-color: #d11a4e; + border-right-color: #aa2346; + border-bottom-color: #aa2346; } .rtl .pollbar3 { - border-left-color: #AA2346; + border-left-color: #aa2346; } .pollbar4 { - background-color: #E41653; - border-bottom-color: #BE1E4A; - border-right-color: #BE1E4A; + background-color: #e41653; + border-right-color: #be1e4a; + border-bottom-color: #be1e4a; } .rtl .pollbar4 { - border-left-color: #BE1E4A; + border-left-color: #be1e4a; } .pollbar5 { - background-color: #F81157; - border-bottom-color: #D11A4E; - border-right-color: #D11A4E; + background-color: #f81157; + border-right-color: #d11a4e; + border-bottom-color: #d11a4e; } .rtl .pollbar5 { - border-left-color: #D11A4E; + border-left-color: #d11a4e; } -/* Poster profile block -----------------------------------------*/ +/* poster profile block +---------------------------------------- */ .postprofile { + border-color: #ffffff; color: #666666; - border-color: #FFFFFF; } .pm .postprofile { - border-color: #DDDDDD; + border-color: #dddddd; } .postprofile strong { @@ -584,39 +632,36 @@ fieldset.polls dd div { } .online { - background-image: url("./en/icon_user_online.gif"); + background-image: url('./en/icon_user_online.gif'); } dd.profile-warnings { - color: #BC2A4D; + color: #bc2a4d; } /* -------------------------------------------------------------- -Colours and backgrounds for buttons.css +colours and backgrounds for buttons.css -------------------------------------------------------------- */ .button { - border-color: #C7C3BF; - background-color: #E9E9E9; /* Old browsers */ /* FF3.6+ */ - background-image: -webkit-linear-gradient(top, #FFFFFF 0%, #E9E9E9 100%); - background-image: linear-gradient(to bottom, #FFFFFF 0%,#E9E9E9 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#FFFFFF', endColorstr='#E9E9E9',GradientType=0 ); /* IE6-9 */ - box-shadow: 0 0 0 1px #FFFFFF inset; - -webkit-box-shadow: 0 0 0 1px #FFFFFF inset; - color: #D31141; + background-color: #e9e9e9; /* old browsers */ /* ff3.6+ */ + background-image: linear-gradient(to bottom, #ffffff 0%, #e9e9e9 100%); /* w3c */ + border-color: #c7c3bf; + -webkit-box-shadow: 0 0 0 1px #ffffff inset; + box-shadow: 0 0 0 1px #ffffff inset; + color: #d31141; + filter: progid:dximagetransform.microsoft.gradient(startcolorstr='#ffffff', endcolorstr='#e9e9e9', gradienttype=0); /* ie6-9 */ } .button:hover, .button:focus { - border-color: #0A8ED0; - background-color: #FFFFFF; /* Old browsers */ /* FF3.6+ */ - background-image: -webkit-linear-gradient(top, #E9E9E9 0%, #FFFFFF 100%); - background-image: linear-gradient(to bottom, #E9E9E9 0%,#FFFFFF 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#E9E9E9', endColorstr='#FFFFFF',GradientType=0 ); /* IE6-9 */ - text-shadow: 1px 1px 0 #FFFFFF, -1px -1px 0 #FFFFFF, -1px -1px 0 rgba(188, 42, 77, 0.2); + background-color: #ffffff; /* old browsers */ /* ff3.6+ */ + background-image: linear-gradient(to bottom, #e9e9e9 0%, #ffffff 100%); /* w3c */ + border-color: #0a8ed0; + text-shadow: 1px 1px 0 #ffffff, -1px -1px 0 #ffffff, -1px -1px 0 rgba(188, 42, 77, 0.2); + filter: progid:dximagetransform.microsoft.gradient(startcolorstr='#e9e9e9', endcolorstr='#ffffff', gradienttype=0); /* ie6-9 */ } - .button .icon, .button-secondary { color: #8f8f8f; @@ -626,336 +671,525 @@ Colours and backgrounds for buttons.css .button-secondary:hover, .button:focus .icon, .button:hover .icon { - color: #0A8ED0; + color: #0a8ed0; } .button-search:hover, .button-search-end:hover { - border-color: #C7C3BF; + border-color: #c7c3bf; +} + +.caret { + border-color: #dadada; } -.caret { border-color: #DADADA; } -.caret { border-color: #C7C3BF; } +.caret { + border-color: #c7c3bf; +} -.contact-icons a { border-color: #DCDCDC; } -.contact-icons a:hover { background-color: #F2F6F9; } +.contact-icons a { + border-color: #dcdcdc; +} -/* Pagination +.contact-icons a:hover { + background-color: #f2f6f9; +} + +/* pagination ---------------------------------------- */ .pagination li a { - background: #ECEDEE; - filter: none; - border-color: #B4BAC0; - box-shadow: none; + background: #ecedee; + border-color: #b4bac0; -webkit-box-shadow: none; - color: #5C758C; + box-shadow: none; + color: #5c758c; + -webkit-filter: none; + filter: none; } .pagination li.ellipsis span { background: transparent; - color: #000000; + color: #000000; } .pagination li.active span { - background: #4692BF; - border-color: #4692BF; - color: #FFFFFF; + background: #4692bf; + border-color: #4692bf; + color: #ffffff; } -.pagination li a:hover, .pagination li a:hover .icon, .pagination .dropdown-visible a.dropdown-trigger, .nojs .pagination .dropdown-container:hover a.dropdown-trigger { - background: #368AD2; - border-color: #368AD2; - filter: none; - color: #FFFFFF; +.pagination li a:hover, +.pagination li a:hover .icon, +.pagination .dropdown-visible a.dropdown-trigger, +.nojs .pagination .dropdown-container:hover a.dropdown-trigger { + background: #368ad2; + border-color: #368ad2; + color: #ffffff; text-shadow: none; + -webkit-filter: none; + filter: none; } -/* Search box +/* search box --------------------------------------------- */ .search-box .inputbox, .search-box .inputbox:hover, .search-box .inputbox:focus { - border-color: #C7C3BF; + border-color: #c7c3bf; } .search-header { - box-shadow: 0 0 10px #0075B0; + box-shadow: 0 0 10px #0075b0; } -/* Icon images +/* icon images ---------------------------------------- */ -.contact-icon { background-image: url("./images/icons_contact.png"); } - -/* Profile & navigation icons */ -.pm-icon { background-position: 0 0; } -.email-icon { background-position: -21px 0; } -.jabber-icon { background-position: -80px 0; } -.phpbb_icq-icon { background-position: -61px 0 ; } -.phpbb_wlm-icon { background-position: -182px 0; } -.phpbb_aol-icon { background-position: -244px 0; } -.phpbb_website-icon { background-position: -40px 0; } -.phpbb_youtube-icon { background-position: -98px 0; } -.phpbb_facebook-icon { background-position: -119px 0; } -.phpbb_googleplus-icon { background-position: -140px 0; } -.phpbb_skype-icon { background-position: -161px 0; } -.phpbb_twitter-icon { background-position: -203px 0; } -.phpbb_yahoo-icon { background-position: -224px 0; } - -/* Forum icons & Topic icons */ -.global_read { background-image: url("./images/announce_read.gif"); } -.global_read_mine { background-image: url("./images/announce_read_mine.gif"); } -.global_read_locked { background-image: url("./images/announce_read_locked.gif"); } -.global_read_locked_mine { background-image: url("./images/announce_read_locked_mine.gif"); } -.global_unread { background-image: url("./images/announce_unread.gif"); } -.global_unread_mine { background-image: url("./images/announce_unread_mine.gif"); } -.global_unread_locked { background-image: url("./images/announce_unread_locked.gif"); } -.global_unread_locked_mine { background-image: url("./images/announce_unread_locked_mine.gif"); } - -.announce_read { background-image: url("./images/announce_read.gif"); } -.announce_read_mine { background-image: url("./images/announce_read_mine.gif"); } -.announce_read_locked { background-image: url("./images/announce_read_locked.gif"); } -.announce_read_locked_mine { background-image: url("./images/announce_read_locked_mine.gif"); } -.announce_unread { background-image: url("./images/announce_unread.gif"); } -.announce_unread_mine { background-image: url("./images/announce_unread_mine.gif"); } -.announce_unread_locked { background-image: url("./images/announce_unread_locked.gif"); } -.announce_unread_locked_mine { background-image: url("./images/announce_unread_locked_mine.gif"); } - -.forum_link { background-image: url("./images/forum_link.gif"); } -.forum_read { background-image: url("./images/forum_read.gif"); } -.forum_read_locked { background-image: url("./images/forum_read_locked.gif"); } -.forum_read_subforum { background-image: url("./images/forum_read_subforum.gif"); } -.forum_unread { background-image: url("./images/forum_unread.gif"); } -.forum_unread_locked { background-image: url("./images/forum_unread_locked.gif"); } -.forum_unread_subforum { background-image: url("./images/forum_unread_subforum.gif"); } - -.sticky_read { background-image: url("./images/sticky_read.gif"); } -.sticky_read_mine { background-image: url("./images/sticky_read_mine.gif"); } -.sticky_read_locked { background-image: url("./images/sticky_read_locked.gif"); } -.sticky_read_locked_mine { background-image: url("./images/sticky_read_locked_mine.gif"); } -.sticky_unread { background-image: url("./images/sticky_unread.gif"); } -.sticky_unread_mine { background-image: url("./images/sticky_unread_mine.gif"); } -.sticky_unread_locked { background-image: url("./images/sticky_unread_locked.gif"); } -.sticky_unread_locked_mine { background-image: url("./images/sticky_unread_locked_mine.gif"); } - -.topic_moved { background-image: url("./images/topic_moved.gif"); } +.contact-icon { + background-image: url('./images/icons_contact.png'); +} + +/* profile & navigation icons */ +.pm-icon { + background-position: 0 0; +} + +.email-icon { + background-position: -21px 0; +} + +.jabber-icon { + background-position: -80px 0; +} + +.phpbb_icq-icon { + background-position: -61px 0; +} + +.phpbb_wlm-icon { + background-position: -182px 0; +} + +.phpbb_aol-icon { + background-position: -244px 0; +} + +.phpbb_website-icon { + background-position: -40px 0; +} + +.phpbb_youtube-icon { + background-position: -98px 0; +} + +.phpbb_facebook-icon { + background-position: -119px 0; +} + +.phpbb_googleplus-icon { + background-position: -140px 0; +} + +.phpbb_skype-icon { + background-position: -161px 0; +} + +.phpbb_twitter-icon { + background-position: -203px 0; +} + +.phpbb_yahoo-icon { + background-position: -224px 0; +} + +/* forum icons & topic icons */ +.global_read { + background-image: url('./images/announce_read.gif'); +} + +.global_read_mine { + background-image: url('./images/announce_read_mine.gif'); +} + +.global_read_locked { + background-image: url('./images/announce_read_locked.gif'); +} + +.global_read_locked_mine { + background-image: url('./images/announce_read_locked_mine.gif'); +} + +.global_unread { + background-image: url('./images/announce_unread.gif'); +} + +.global_unread_mine { + background-image: url('./images/announce_unread_mine.gif'); +} + +.global_unread_locked { + background-image: url('./images/announce_unread_locked.gif'); +} + +.global_unread_locked_mine { + background-image: url('./images/announce_unread_locked_mine.gif'); +} + +.announce_read { + background-image: url('./images/announce_read.gif'); +} + +.announce_read_mine { + background-image: url('./images/announce_read_mine.gif'); +} + +.announce_read_locked { + background-image: url('./images/announce_read_locked.gif'); +} + +.announce_read_locked_mine { + background-image: url('./images/announce_read_locked_mine.gif'); +} + +.announce_unread { + background-image: url('./images/announce_unread.gif'); +} + +.announce_unread_mine { + background-image: url('./images/announce_unread_mine.gif'); +} + +.announce_unread_locked { + background-image: url('./images/announce_unread_locked.gif'); +} + +.announce_unread_locked_mine { + background-image: url('./images/announce_unread_locked_mine.gif'); +} + +.forum_link { + background-image: url('./images/forum_link.gif'); +} + +.forum_read { + background-image: url('./images/forum_read.gif'); +} + +.forum_read_locked { + background-image: url('./images/forum_read_locked.gif'); +} + +.forum_read_subforum { + background-image: url('./images/forum_read_subforum.gif'); +} + +.forum_unread { + background-image: url('./images/forum_unread.gif'); +} + +.forum_unread_locked { + background-image: url('./images/forum_unread_locked.gif'); +} + +.forum_unread_subforum { + background-image: url('./images/forum_unread_subforum.gif'); +} + +.sticky_read { + background-image: url('./images/sticky_read.gif'); +} + +.sticky_read_mine { + background-image: url('./images/sticky_read_mine.gif'); +} + +.sticky_read_locked { + background-image: url('./images/sticky_read_locked.gif'); +} + +.sticky_read_locked_mine { + background-image: url('./images/sticky_read_locked_mine.gif'); +} + +.sticky_unread { + background-image: url('./images/sticky_unread.gif'); +} + +.sticky_unread_mine { + background-image: url('./images/sticky_unread_mine.gif'); +} + +.sticky_unread_locked { + background-image: url('./images/sticky_unread_locked.gif'); +} + +.sticky_unread_locked_mine { + background-image: url('./images/sticky_unread_locked_mine.gif'); +} + +.topic_moved { + background-image: url('./images/topic_moved.gif'); +} + .pm_read, -.topic_read { background-image: url("./images/topic_read.gif"); } -.topic_read_mine { background-image: url("./images/topic_read_mine.gif"); } -.topic_read_hot { background-image: url("./images/topic_read_hot.gif"); } -.topic_read_hot_mine { background-image: url("./images/topic_read_hot_mine.gif"); } -.topic_read_locked { background-image: url("./images/topic_read_locked.gif"); } -.topic_read_locked_mine { background-image: url("./images/topic_read_locked_mine.gif"); } +.topic_read { + background-image: url('./images/topic_read.gif'); +} + +.topic_read_mine { + background-image: url('./images/topic_read_mine.gif'); +} + +.topic_read_hot { + background-image: url('./images/topic_read_hot.gif'); +} + +.topic_read_hot_mine { + background-image: url('./images/topic_read_hot_mine.gif'); +} + +.topic_read_locked { + background-image: url('./images/topic_read_locked.gif'); +} + +.topic_read_locked_mine { + background-image: url('./images/topic_read_locked_mine.gif'); +} + .pm_unread, -.topic_unread { background-image: url("./images/topic_unread.gif"); } -.topic_unread_mine { background-image: url("./images/topic_unread_mine.gif"); } -.topic_unread_hot { background-image: url("./images/topic_unread_hot.gif"); } -.topic_unread_hot_mine { background-image: url("./images/topic_unread_hot_mine.gif"); } -.topic_unread_locked { background-image: url("./images/topic_unread_locked.gif"); } -.topic_unread_locked_mine { background-image: url("./images/topic_unread_locked_mine.gif"); } +.topic_unread { + background-image: url('./images/topic_unread.gif'); +} + +.topic_unread_mine { + background-image: url('./images/topic_unread_mine.gif'); +} + +.topic_unread_hot { + background-image: url('./images/topic_unread_hot.gif'); +} + +.topic_unread_hot_mine { + background-image: url('./images/topic_unread_hot_mine.gif'); +} + +.topic_unread_locked { + background-image: url('./images/topic_unread_locked.gif'); +} + +.topic_unread_locked_mine { + background-image: url('./images/topic_unread_locked_mine.gif'); +} /* -------------------------------------------------------------- -Colours and backgrounds for cp.css +colours and backgrounds for cp.css -------------------------------------------------------------- */ -/* Main CP box -----------------------------------------*/ +/* main cp box +---------------------------------------- */ -.panel-container h3, .panel-container hr, .cp-menu hr { - border-color: #A4B3BF; +.panel-container h3, +.panel-container hr, +.cp-menu hr { + border-color: #a4b3bf; } .panel-container .panel li.row { - border-bottom-color: #B5C1CB; - border-top-color: #F9F9F9; + border-top-color: #f9f9f9; + border-bottom-color: #b5c1cb; } ul.cplist { - border-top-color: #B5C1CB; + border-top-color: #b5c1cb; } -.panel-container .panel li.header dd, .panel-container .panel li.header dt { +.panel-container .panel li.header dd, +.panel-container .panel li.header dt { color: #000000; } .panel-container table.table1 thead th { - color: #333333; border-bottom-color: #333333; + color: #333333; } .cp-main .pm-message { - border-color: #DBDEE2; - background-color: #FFFFFF; + background-color: #ffffff; + border-color: #dbdee2; } -/* CP tabbed menu -----------------------------------------*/ +/* cp tabbed menu +---------------------------------------- */ .tabs .tab > a { - background: #BACCD9; + background: #baccd9; color: #536482; } .tabs .tab > a:hover { - background: #DDEDFB; - color: #D31141; + background: #ddedfb; + color: #d31141; } .tabs .activetab > a, .tabs .activetab > a:hover { - background-color: #CADCEB; /* Old browsers */ /* FF3.6+ */ - background-image: -webkit-linear-gradient(top, #E2F2FF 0%, #CADCEB 100%); - background-image: linear-gradient(to bottom, #E2F2FF 0%,#CADCEB 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#E2F2FF', endColorstr='#CADCEB',GradientType=0 ); /* IE6-9 */ - border-color: #CADCEB; - box-shadow: 0 1px 1px #F2F9FF inset; + background-color: #cadceb; /* old browsers */ /* ff3.6+ */ + background-image: linear-gradient(to bottom, #e2f2ff 0%, #cadceb 100%); /* w3c */ + border-color: #cadceb; + box-shadow: 0 1px 1px #f2f9ff inset; color: #333333; + filter: progid:dximagetransform.microsoft.gradient(startcolorstr='#e2f2ff', endcolorstr='#cadceb', gradienttype=0); /* ie6-9 */ } .tabs .activetab > a:hover { color: #000000; } -/* Mini tabbed menu used in MCP -----------------------------------------*/ +/* mini tabbed menu used in mcp +---------------------------------------- */ .minitabs .tab > a { - background-color: #E1EBF2; + background-color: #e1ebf2; } .minitabs .activetab > a, .minitabs .activetab > a:hover { - background-color: #F9F9F9; + background-color: #f9f9f9; color: #333333; } -/* Responsive tabs -----------------------------------------*/ +/* responsive tabs +---------------------------------------- */ .responsive-tab .responsive-tab-link:before { border-color: #536482; } .responsive-tab .responsive-tab-link:hover:before { - border-color: #D31141; + border-color: #d31141; } -/* UCP navigation menu -----------------------------------------*/ +/* ucp navigation menu +---------------------------------------- */ -/* Link styles for the sub-section links */ +/* link styles for the sub-section links */ .navigation a { - color: #333; - background: #CADCEB; /* Old browsers */ /* FF3.6+ */ - background: -webkit-linear-gradient(left, #B4C4D1 50%, #CADCEB 100%); - background: linear-gradient(to right, #B4C4D1 50%,#CADCEB 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#B4C4D1', endColorstr='#CADCEB',GradientType=1 ); /* IE6-9 */ + background: #cadceb; /* old browsers */ /* ff3.6+ */ + background-image: linear-gradient(to right, #b4c4d1 50%, #cadceb 100%); /* w3c */ + color: #333333; + filter: progid:dximagetransform.microsoft.gradient(startcolorstr='#b4c4d1', endcolorstr='#cadceb', gradienttype=1); /* ie6-9 */ } .rtl .navigation a { - background: #B4C4D1; /* Old browsers */ /* FF3.6+ */ - background: -webkit-linear-gradient(left, #CADCEB 50%, #B4C4D1 100%); - background: linear-gradient(to right, #CADCEB 50%,#B4C4D1 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#CADCEB', endColorstr='#B4C4D1',GradientType=1 ); /* IE6-9 */ + background: #b4c4d1; /* old browsers */ /* ff3.6+ */ + background-image: linear-gradient(to right, #cadceb 50%, #b4c4d1 100%); /* w3c */ + filter: progid:dximagetransform.microsoft.gradient(startcolorstr='#cadceb', endcolorstr='#b4c4d1', gradienttype=1); /* ie6-9 */ } .navigation a:hover { - background: #AABAC6; - color: #BC2A4D; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background: #aabac6; + color: #bc2a4d; + filter: progid:dximagetransform.microsoft.gradient(enabled = false); } .navigation .active-subsection a { - background: #F9F9F9; - color: #D31141; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background: #f9f9f9; + color: #d31141; + filter: progid:dximagetransform.microsoft.gradient(enabled = false); } .navigation .active-subsection a:hover { - color: #D31141; + color: #d31141; } -@media only screen and (max-width: 900px), only screen and (max-device-width: 900px) -{ - #navigation a, .rtl #navigation a { - background: #B2C2CF; +/* This ID needs factored out */ +@media only screen and (max-width: 900px), only screen and (max-device-width: 900px) { + #navigation a, + .rtl #navigation a { + background: #b2c2cf; } } -/* Preferences pane layout -----------------------------------------*/ +/* preferences pane layout +---------------------------------------- */ .panel-container h2 { color: #333333; } .panel-container .panel { - background-color: #F9F9F9; + background-color: #f9f9f9; } .cp-main .pm { - background-color: #FFFFFF; + background-color: #ffffff; } -/* Friends list */ +/* friends list */ .cp-mini { - background-color: #EEF5F9; + background-color: #eef5f9; } dl.mini dt { color: #425067; } -/* PM Styles -----------------------------------------*/ -/* PM Message history */ +/* pm styles +---------------------------------------- */ + +/* pm message history */ .current { color: #000000 !important; } -/* PM marking colours */ -.pmlist li.pm_message_reported_colour, .pm_message_reported_colour { - border-left-color: #BC2A4D; - border-right-color: #BC2A4D; +/* pm marking colours */ +.pmlist li.pm_message_reported_colour, +.pm_message_reported_colour { + border-right-color: #bc2a4d; + border-left-color: #bc2a4d; } -.pmlist li.pm_marked_colour, .pm_marked_colour { - border-color: #FF6600; +.pmlist li.pm_marked_colour, +.pm_marked_colour { + border-color: #ff6600; } -.pmlist li.pm_replied_colour, .pm_replied_colour { - border-color: #A9B8C2; +.pmlist li.pm_replied_colour, +.pm_replied_colour { + border-color: #a9b8c2; } -.pmlist li.pm_friend_colour, .pm_friend_colour { - border-color: #5D8FBD; +.pmlist li.pm_friend_colour, +.pm_friend_colour { + border-color: #5d8fbd; } -.pmlist li.pm_foe_colour, .pm_foe_colour { +.pmlist li.pm_foe_colour, +.pm_foe_colour { border-color: #000000; } -/* Avatar gallery */ +/* avatar gallery */ .gallery label { - background: #FFFFFF; - border-color: #CCC; + background: #ffffff; + border-color: #cccccc; } .gallery label:hover { - background-color: #EEE; + background-color: #eeeeee; } /* -------------------------------------------------------------- -Colours and backgrounds for forms.css +colours and backgrounds for forms.css -------------------------------------------------------------- */ -/* General form styles -----------------------------------------*/ +/* general form styles +---------------------------------------- */ select { + background-color: #fafafa; border-color: #666666; - background-color: #FAFAFA; - color: #000; + color: #000000; } label { @@ -966,17 +1200,17 @@ option.disabled-option { color: graytext; } -/* Definition list layout for forms +/* definition list layout for forms ---------------------------------------- */ dd label { - color: #333; + color: #333333; } fieldset.fields1 { background-color: transparent; } -/* Hover effects */ +/* hover effects */ fieldset dl:hover dt label { color: #000000; } @@ -985,13 +1219,13 @@ fieldset.fields2 dl:hover dt label { color: inherit; } -/* Quick-login on index page */ +/* quick-login on index page */ fieldset.quick-login input.inputbox { - background-color: #F2F3F3; + background-color: #f2f3f3; } -/* Posting page styles -----------------------------------------*/ +/* posting page styles +---------------------------------------- */ .message-box textarea { color: #333333; @@ -1005,11 +1239,11 @@ fieldset.quick-login input.inputbox { outline-color: rgba(17, 163, 234, 0.5); } -/* Input field styles +/* input field styles ---------------------------------------- */ .inputbox { - background-color: #FFFFFF; - border-color: #B4BAC0; + background-color: #ffffff; + border-color: #b4bac0; color: #333333; } @@ -1022,11 +1256,11 @@ fieldset.quick-login input.inputbox { } .inputbox:hover { - border-color: #11A3EA; + border-color: #11a3ea; } .inputbox:focus { - border-color: #11A3EA; + border-color: #11a3ea; } .inputbox:focus:-moz-placeholder { @@ -1038,18 +1272,22 @@ fieldset.quick-login input.inputbox { } -/* Form button styles +/* form button styles ---------------------------------------- */ -a.button1, input.button1, input.button3, a.button2, input.button2 { - color: #000; - background-color: #EFEFEF; /* Old browsers */ /* FF3.6+ */ - background-image: -webkit-linear-gradient(top, #D2D2D2 0%, #EFEFEF 100%); - background-image: linear-gradient(to bottom, #D2D2D2 0%,#EFEFEF 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#D2D2D2', endColorstr='#EFEFEF',GradientType=0 ); /* IE6-9 */ +a.button1, +input.button1, +input.button3, +a.button2, +input.button2 { + background-color: #efefef; /* old browsers */ /* ff3.6+ */ + background-image: linear-gradient(to bottom, #d2d2d2 0%, #efefef 100%); /* w3c */ + color: #000000; + filter: progid:dximagetransform.microsoft.gradient(startcolorstr='#d2d2d2', endcolorstr='#efefef', gradienttype=0); /* ie6-9 */ } -a.button1, input.button1 { +a.button1, +input.button1 { border-color: #666666; } @@ -1057,62 +1295,72 @@ input.button3 { background-image: none; } -/* Alternative button */ -a.button2, input.button2, input.button3 { +/* alternative button */ +a.button2, +input.button2, +input.button3 { border-color: #666666; } /* button in the style of the form buttons */ -a.button1, a.button2 { +a.button1, +a.button2 { color: #000000; } -/* Hover states */ -a.button1:hover, input.button1:hover, a.button2:hover, input.button2:hover, input.button3:hover { - border-color: #D31141; - color: #D31141; - background-color: #D2D2D2; /* Old browsers */ /* FF3.6+ */ - background-image: -webkit-linear-gradient(top, #EFEFEF 0%, #D2D2D2 100%); - background-image: linear-gradient(to bottom, #EFEFEF 0%,#D2D2D2 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#EFEFEF', endColorstr='#D2D2D2',GradientType=0 ); /* IE6-9 */ +/* hover states */ +a.button1:hover, +input.button1:hover, +a.button2:hover, +input.button2:hover, +input.button3:hover { + background-color: #d2d2d2; /* old browsers */ /* ff3.6+ */ + background-image: linear-gradient(to bottom, #efefef 0%, #d2d2d2 100%); /* w3c */ + border-color: #d31141; + color: #d31141; + filter: progid:dximagetransform.microsoft.gradient(startcolorstr='#efefef', endcolorstr='#d2d2d2', gradienttype=0); /* ie6-9 */ } -/* Focus states */ -input.button1:focus, input.button2:focus, input.button3:focus { - border-color: #11A3EA; - color: #0F4987; +/* focus states */ +input.button1:focus, +input.button2:focus, +input.button3:focus { + border-color: #11a3ea; + color: #0f4987; } input.disabled { color: #666666; } -/* jQuery popups +/* jquery popups ---------------------------------------- */ .phpbb_alert { - background-color: #FFFFFF; + background-color: #ffffff; border-color: #999999; } + .darken { background-color: #000000; } .loading_indicator { background-color: #000000; - background-image: url("./images/loading.gif"); + background-image: url('./images/loading.gif'); } .dropdown-extended ul li { - border-top-color: #B9B9B9; + border-top-color: #b9b9b9; } .dropdown-extended ul li:hover { - background-color: #CFE1F6; + background-color: #cfe1f6; color: #000000; } -.dropdown-extended .header, .dropdown-extended .footer { - border-color: #B9B9B9; +.dropdown-extended .header, +.dropdown-extended .footer { + border-color: #b9b9b9; color: #000000; } @@ -1122,27 +1370,26 @@ input.disabled { } .dropdown-extended .header { - background-color: #F1F8FF; /* Old browsers */ /* FF3.6+ */ - background-image: -webkit-linear-gradient(top, #F1F8FF 0%, #CADCEB 100%); - background-image: linear-gradient(to bottom, #F1F8FF 0%,#CADCEB 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F1F8FF', endColorstr='#CADCEB',GradientType=0 ); /* IE6-9 */ + background-color: #f1f8ff; /* old browsers */ /* ff3.6+ */ + background-image: linear-gradient(to bottom, #f1f8ff 0%, #cadceb 100%); /* w3c */ + filter: progid:dximagetransform.microsoft.gradient(startcolorstr='#f1f8ff', endcolorstr='#cadceb', gradienttype=0); /* ie6-9 */ } .dropdown .pointer { - border-color: #B9B9B9 transparent; + border-color: #b9b9b9 transparent; } .dropdown .pointer-inner { - border-color: #FFF transparent; + border-color: #ffffff transparent; } .dropdown-extended .pointer-inner { - border-color: #F1F8FF transparent; + border-color: #f1f8ff transparent; } .dropdown .dropdown-contents { - background: #fff; - border-color: #B9B9B9; + background: #ffffff; + border-color: #b9b9b9; box-shadow: 1px 3px 5px rgba(0, 0, 0, 0.2); } @@ -1150,23 +1397,25 @@ input.disabled { box-shadow: 1px 0 5px rgba(0, 0, 0, 0.2); } -.dropdown li, .dropdown li li { - border-color: #DCDCDC; +.dropdown li, +.dropdown li li { + border-color: #dcdcdc; } .dropdown li.separator { - border-color: #DCDCDC; + border-color: #dcdcdc; } -/* Notifications +/* notifications ---------------------------------------- */ .notification_list p.notification-time { - color: #4C5D77; + color: #4c5d77; } -li.notification-reported strong, li.notification-disapproved strong { - color: #D31141; +li.notification-reported strong, +li.notification-disapproved strong { + color: #d31141; } .badge { diff --git a/phpBB/styles/prosilver/theme/common.css b/phpBB/styles/prosilver/theme/common.css index 8368fc158c1..3597550b5da 100644 --- a/phpBB/styles/prosilver/theme/common.css +++ b/phpBB/styles/prosilver/theme/common.css @@ -2,6 +2,7 @@ ---------------------------------------- */ html { font-size: 100%; + /* Always show a scrollbar for short pages - stops the jump when the scrollbar appears. non-IE browsers */ height: 101%; } @@ -10,27 +11,27 @@ body { font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 10px; line-height: normal; + word-wrap: break-word; margin: 0; padding: 12px 0; - word-wrap: break-word; -webkit-print-color-adjust: exact; } h1 { /* Forum name */ - font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; - margin-right: 200px; - margin-top: 15px; - font-weight: bold; + font-family: 'Trebuchet MS', Arial, Helvetica, sans-serif; font-size: 2em; + font-weight: bold; + margin-top: 15px; + margin-right: 200px; } h2 { /* Forum header titles */ - font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; - font-weight: normal; + font-family: 'Trebuchet MS', Arial, Helvetica, sans-serif; font-size: 2em; - margin: 0.8em 0 0.2em 0; + font-weight: normal; + margin: 0.8em 0 0.2em; } h2.solo { @@ -40,24 +41,24 @@ h2.solo { h3 { /* Sub-headers (also used as post headers, but defined later) */ font-family: Arial, Helvetica, sans-serif; + font-size: 1.05em; font-weight: bold; text-transform: uppercase; border-bottom: 1px solid transparent; + margin-top: 20px; margin-bottom: 3px; padding-bottom: 2px; - font-size: 1.05em; - margin-top: 20px; } h4 { /* Forum and topic list titles */ - font-family: "Trebuchet MS", Verdana, Helvetica, Arial, Sans-serif; + font-family: 'Trebuchet MS', Verdana, Helvetica, Arial, sans-serif; font-size: 1.3em; } p { - line-height: 1.3em; font-size: 1.1em; + line-height: 1.3em; margin-bottom: 1.5em; } @@ -68,10 +69,10 @@ img { hr { border: 0 solid transparent; border-top-width: 1px; - height: 1px; - margin: 5px 0; display: block; clear: both; + height: 1px; + margin: 5px 0; } hr.dashed { @@ -91,11 +92,13 @@ p.jumpbox-return { margin-top: 1em; } -b, strong { +b, +strong { font-weight: bold; } -i, em { +i, +em { font-style: italic; } @@ -115,24 +118,30 @@ li { display: list-item; } -ul ul, ol ul { +ul ul, +ol ul { list-style-type: circle; } -ol ol ul, ol ul ul, ul ol ul, ul ul ul { +ol ol ul, +ol ul ul, +ul ol ul, +ul ul ul { list-style-type: square; } -a:hover { text-decoration: underline; } +a:hover { + text-decoration: underline; +} /* Main blocks ---------------------------------------- */ .wrap { border: 1px solid transparent; border-radius: 8px; - margin: 0 auto; - max-width: 1152px; min-width: 625px; + max-width: 1152px; + margin: 0 auto; padding: 15px; } @@ -143,8 +152,8 @@ a:hover { text-decoration: underline; } } .page-body { - margin: 4px 0; clear: both; + margin: 4px 0; } .page-footer { @@ -184,51 +193,51 @@ a:hover { text-decoration: underline; } /* Round cornered boxes and backgrounds ---------------------------------------- */ .headerbar { + border-radius: 7px; margin-bottom: 4px; padding: 5px; - border-radius: 7px; } .navbar { - padding: 3px 10px; border-radius: 7px; + padding: 3px 10px; } .forabg { + border-radius: 7px; + clear: both; margin-bottom: 4px; padding: 5px; - clear: both; - border-radius: 7px; } .forumbg { + border-radius: 7px; + clear: both; margin-bottom: 4px; padding: 5px; - clear: both; - border-radius: 7px; } .panel { + border-radius: 7px; margin-bottom: 4px; padding: 5px 10px; - border-radius: 7px; } .post { - padding: 5px 10px; - margin-bottom: 4px; - background-repeat: no-repeat; background-position: 100% 0; + background-repeat: no-repeat; border-radius: 7px; position: relative; + margin-bottom: 4px; + padding: 5px 10px; } .rowbg { - margin: 5px 5px 2px 5px; + margin: 5px 5px 2px; } /* Horizontal lists -----------------------------------------*/ +---------------------------------------- */ .navbar ul.linklist { padding: 2px 0; list-style-type: none; @@ -244,20 +253,22 @@ ul.linklist { } ul.linklist > li { - float: left; font-size: 1.1em; line-height: 2.2em; - list-style-type: none; + float: left; + width: auto; margin-right: 7px; padding-top: 1px; - width: auto; + list-style-type: none; } -ul.linklist > li.rightside, p.rightside, a.rightside { +ul.linklist > li.rightside, +p.rightside, +a.rightside { + text-align: right; float: right; margin-right: 0; margin-left: 7px; - text-align: right; } ul.navlinks { @@ -265,17 +276,17 @@ ul.navlinks { } ul.leftside { + text-align: left; float: left; - margin-left: 0; margin-right: 5px; - text-align: left; + margin-left: 0; } ul.rightside { + text-align: right; float: right; - margin-left: 5px; margin-right: -5px; - text-align: right; + margin-left: 5px; } ul.linklist li.responsive-menu { @@ -283,7 +294,8 @@ ul.linklist li.responsive-menu { margin: 0 5px 0 0; } -.hasjs ul.linklist.leftside, .hasjs ul.linklist.rightside { +.hasjs ul.linklist.leftside, +.hasjs ul.linklist.rightside { max-width: 48%; } @@ -304,18 +316,18 @@ ul.linklist .dropdown { } ul.linklist .dropdown-up .dropdown { - bottom: 18px; top: auto; + bottom: 18px; } /* Bulletin icons for list items -----------------------------------------*/ +---------------------------------------- */ ul.linklist.bulletin > li:before { - display: inline-block; - content: "\2022"; font-size: inherit; line-height: inherit; + display: inline-block; padding-right: 4px; + content: '\2022'; } ul.linklist.bulletin > li:first-child:before, @@ -333,8 +345,8 @@ ul.linklist.bulletin > li.no-bulletin:before { /* Profile in overall_header.html */ .header-profile { - display: inline-block; vertical-align: top; + display: inline-block; } .header-avatar:hover { @@ -342,23 +354,23 @@ ul.linklist.bulletin > li.no-bulletin:before { } .header-avatar img { - margin-bottom: 2px; - max-height: 20px; vertical-align: middle; width: auto; + max-height: 20px; + margin-bottom: 2px; } .header-avatar span:after { - content: '\f0dd'; - display: inline-block; font: normal normal normal 14px/1 FontAwesome; - padding-left: 6px; - padding-top: 2px; vertical-align: top; + display: inline-block; + padding-top: 2px; + padding-left: 6px; + content: '\f0dd'; } /* Dropdown menu -----------------------------------------*/ +---------------------------------------- */ .dropdown-container { position: relative; } @@ -376,15 +388,15 @@ ul.linklist.bulletin > li.no-bulletin:before { } .dropdown { - display: none; + border: 1px solid transparent; + border-radius: 5px; position: absolute; - left: 0; top: 1.2em; + left: 0; z-index: 2; - border: 1px solid transparent; - border-radius: 5px; - padding: 9px 0 0; + display: none; margin-right: -500px; + padding: 9px 0 0; } .dropdown.live-search { @@ -401,11 +413,12 @@ ul.linklist.bulletin > li.no-bulletin:before { padding: 0 0 9px; } -.dropdown-left .dropdown, .nojs .rightside .dropdown { - left: auto; +.dropdown-left .dropdown, +.nojs .rightside .dropdown { right: 0; - margin-left: -500px; + left: auto; margin-right: 0; + margin-left: -500px; } .dropdown-button-control .dropdown { @@ -417,38 +430,41 @@ ul.linklist.bulletin > li.no-bulletin:before { bottom: 24px; } -.dropdown .pointer, .dropdown .pointer-inner { - position: absolute; - width: 0; - height: 0; +.dropdown .pointer, +.dropdown .pointer-inner { border-top-width: 0; + border-right: 10px dashed transparent; border-bottom: 10px solid transparent; border-left: 10px dashed transparent; - border-right: 10px dashed transparent; - -webkit-transform: rotate(360deg); /* better anti-aliasing in webkit */ + position: absolute; display: block; + width: 0; + height: 0; + -webkit-transform: rotate(360deg); /* better anti-aliasing in webkit */ } -.dropdown-up .pointer, .dropdown-up .pointer-inner { - border-bottom-width: 0; +.dropdown-up .pointer, +.dropdown-up .pointer-inner { border-top: 10px solid transparent; + border-bottom-width: 0; } .dropdown .pointer { + top: -1px; right: auto; left: 10px; - top: -1px; z-index: 3; } .dropdown-up .pointer { - bottom: -1px; top: auto; + bottom: -1px; } -.dropdown-left .dropdown .pointer, .nojs .rightside .dropdown .pointer { - left: auto; +.dropdown-left .dropdown .pointer, +.nojs .rightside .dropdown .pointer { right: 10px; + left: auto; } .dropdown .pointer-inner { @@ -458,19 +474,19 @@ ul.linklist.bulletin > li.no-bulletin:before { } .dropdown-up .pointer-inner { - bottom: auto; top: -11px; + bottom: auto; } .dropdown .dropdown-contents { - z-index: 2; - overflow: hidden; - overflow-y: auto; border: 1px solid transparent; border-radius: 5px; - padding: 5px; position: relative; + z-index: 2; + overflow: hidden; + overflow-y: auto; max-height: 300px; + padding: 5px; } .dropdown-contents a { @@ -491,8 +507,8 @@ ul.linklist.bulletin > li.no-bulletin:before { } .jumpbox .dropdown-contents { - padding: 0; text-decoration: none; + padding: 0; } .jumpbox .dropdown-contents li { @@ -500,15 +516,15 @@ ul.linklist.bulletin > li.no-bulletin:before { } .jumpbox .dropdown-contents a { - margin-right: 20px; - padding: 5px 10px; text-decoration: none; width: 100%; + margin-right: 20px; + padding: 5px 10px; } .jumpbox .spacer { display: inline-block; - width: 0px; + width: 0; } .jumpbox .spacer + .spacer { @@ -529,15 +545,15 @@ ul.linklist.bulletin > li.no-bulletin:before { } .dropdown li { - display: list-item; + font-size: 1em !important; + line-height: normal !important; + text-align: left; + white-space: nowrap; border-top: 1px dotted transparent; + display: list-item; float: none !important; - line-height: normal !important; - font-size: 1em !important; - list-style: none; margin: 0; - white-space: nowrap; - text-align: left; + list-style: none; } .dropdown-contents > li { @@ -548,7 +564,9 @@ ul.linklist.bulletin > li.no-bulletin:before { padding-right: 0; } -.dropdown li:first-child, .dropdown li.separator + li, .dropdown li li { +.dropdown li:first-child, +.dropdown li.separator + li, +.dropdown li li { border-top: 0; } @@ -565,7 +583,9 @@ ul.linklist.bulletin > li.no-bulletin:before { padding-left: 18px; } -.wrap .dropdown li, .dropdown.wrap li, .dropdown-extended li { +.wrap .dropdown li, +.dropdown.wrap li, +.dropdown-extended li { white-space: normal; } @@ -574,22 +594,23 @@ ul.linklist.bulletin > li.no-bulletin:before { padding: 0; } -.dropdown li.separator:first-child, .dropdown li.separator:last-child { +.dropdown li.separator:first-child, +.dropdown li.separator:last-child { display: none !important; } /* Responsive breadcrumbs -----------------------------------------*/ +---------------------------------------- */ .breadcrumbs .crumb { - float: left; font-weight: bold; word-wrap: normal; + float: left; } .breadcrumbs .crumb:before { - content: '\2039'; font-weight: bold; padding: 0 0.5em; + content: '\2039'; } .breadcrumbs .crumb:first-child:before { @@ -597,24 +618,46 @@ ul.linklist.bulletin > li.no-bulletin:before { } .breadcrumbs .crumb a { - white-space: nowrap; text-overflow: ellipsis; vertical-align: bottom; + white-space: nowrap; overflow: hidden; } -.breadcrumbs.wrapped .crumb a { letter-spacing: -.3px; } -.breadcrumbs.wrapped .crumb.wrapped-medium a { letter-spacing: -.4px; } -.breadcrumbs.wrapped .crumb.wrapped-tiny a { letter-spacing: -.5px; } +.breadcrumbs.wrapped .crumb a { + letter-spacing: -0.3px; +} + +.breadcrumbs.wrapped .crumb.wrapped-medium a { + letter-spacing: -0.4px; +} + +.breadcrumbs.wrapped .crumb.wrapped-tiny a { + letter-spacing: -0.5px; +} + +.breadcrumbs .crumb.wrapped-max a { + max-width: 120px; +} + +.breadcrumbs .crumb.wrapped-wide a { + max-width: 100px; +} + +.breadcrumbs .crumb.wrapped-medium a { + max-width: 80px; +} + +.breadcrumbs .crumb.wrapped-small a { + max-width: 60px; +} -.breadcrumbs .crumb.wrapped-max a { max-width: 120px; } -.breadcrumbs .crumb.wrapped-wide a { max-width: 100px; } -.breadcrumbs .crumb.wrapped-medium a { max-width: 80px; } -.breadcrumbs .crumb.wrapped-small a { max-width: 60px; } -.breadcrumbs .crumb.wrapped-tiny a { max-width: 40px; } +.breadcrumbs .crumb.wrapped-tiny a { + max-width: 40px; +} /* Table styles -----------------------------------------*/ +---------------------------------------- */ table.table1 { width: 100%; } @@ -624,10 +667,10 @@ table.table1 { } table.table1 thead th { + font-size: 1em; font-weight: normal; - text-transform: uppercase; line-height: 1.3em; - font-size: 1em; + text-transform: uppercase; padding: 0 0 4px 3px; } @@ -644,28 +687,68 @@ table.table1 td { } table.table1 tbody td { - padding: 5px; border-top: 1px solid transparent; + padding: 5px; } table.table1 tbody th { - padding: 5px; - border-bottom: 1px solid transparent; text-align: left; + border-bottom: 1px solid transparent; + padding: 5px; } /* Specific column styles */ -table.table1 .name { text-align: left; } -table.table1 .center { text-align: center; } -table.table1 .reportby { width: 15%; } -table.table1 .posts { text-align: center; width: 7%; } -table.table1 .joined { text-align: left; width: 15%; } -table.table1 .active { text-align: left; width: 15%; } -table.table1 .mark { text-align: center; width: 7%; } -table.table1 .info { text-align: left; width: 30%; } -table.table1 .info div { width: 100%; white-space: normal; overflow: hidden; } -table.table1 .autocol { line-height: 2em; white-space: nowrap; } -table.table1 thead .autocol { padding-left: 1em; } +table.table1 .name { + text-align: left; +} + +table.table1 .center { + text-align: center; +} + +table.table1 .reportby { + width: 15%; +} + +table.table1 .posts { + text-align: center; + width: 7%; +} + +table.table1 .joined { + text-align: left; + width: 15%; +} + +table.table1 .active { + text-align: left; + width: 15%; +} + +table.table1 .mark { + text-align: center; + width: 7%; +} + +table.table1 .info { + text-align: left; + width: 30%; +} + +table.table1 .info div { + white-space: normal; + overflow: hidden; + width: 100%; +} + +table.table1 .autocol { + line-height: 2em; + white-space: nowrap; +} + +table.table1 thead .autocol { + padding-left: 1em; +} table.table1 span.rank-img { float: right; @@ -677,10 +760,10 @@ table.info td { } table.info tbody th { - padding: 3px; + font-weight: normal; text-align: right; vertical-align: top; - font-weight: normal; + padding: 3px; } .forumbg table.table1 { @@ -698,6 +781,7 @@ table.info tbody th { /* Misc layout styles ---------------------------------------- */ + /* column[1-2] styles are containers for two column layouts */ .column1 { float: left; @@ -713,9 +797,9 @@ table.info tbody th { /* General classes for placing floating blocks */ .left-box { + text-align: left; float: left; width: auto; - text-align: left; max-width: 100%; } @@ -724,44 +808,47 @@ table.info tbody th { } .right-box { + text-align: right; float: right; width: auto; - text-align: right; max-width: 100%; } dl.details { - /*font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif;*/ + /* font-family: 'Lucida Grande', Verdana, Helvetica, Arial, sans-serif; */ font-size: 1.1em; } dl.details dt { + text-align: right; + display: block; float: left; clear: left; width: 30%; - text-align: right; - display: block; } dl.details dd { - margin-left: 0; - padding-left: 5px; - margin-bottom: 5px; + text-overflow: ellipsis; float: left; - width: 65%; overflow: hidden; - text-overflow: ellipsis; + width: 65%; + margin-bottom: 5px; + margin-left: 0; + padding-left: 5px; } -.clearfix, fieldset dl, ul.topiclist dl, dl.polls { +.clearfix, +fieldset dl, +ul.topiclist dl, +dl.polls { overflow: hidden; } fieldset.fields1 ul.recipients { - list-style-type: none; line-height: 1.8; - max-height: 150px; overflow-y: auto; + max-height: 150px; + list-style-type: none; } fieldset.fields1 dd.recipients { @@ -769,7 +856,7 @@ fieldset.fields1 dd.recipients { margin-left: 1em; } -fieldset.fields1 ul.recipients input.button2{ +fieldset.fields1 ul.recipients input.button2 { font-size: 0.8em; margin-right: 0; padding: 0; @@ -795,8 +882,8 @@ fieldset.fields1 dl.pmlist dd.recipients { } .action-bar .button { - margin-right: 5px; float: left; + margin-right: 5px; } .action-bar .button-search { @@ -806,8 +893,8 @@ fieldset.fields1 dl.pmlist dd.recipients { /* Pagination ---------------------------------------- */ .pagination { - float: right; text-align: right; + float: right; width: auto; } @@ -816,39 +903,40 @@ fieldset.fields1 dl.pmlist dd.recipients { } .action-bar .pagination .button { - margin-right: 0; float: none; + margin-right: 0; } .pagination > ul { display: inline-block; - list-style: none !important; margin-left: 5px; + list-style: none !important; } .pagination > ul > li { - display: inline-block !important; - padding: 0; font-size: 100%; line-height: normal; vertical-align: middle; + display: inline-block !important; + padding: 0; } -.pagination li a, .pagination li span { +.pagination li a, +.pagination li span { border-radius: 2px; padding: 2px 5px; } .pagination li.active span { - display: inline-block; + font-family: 'Open Sans', 'Droid Sans', Verdana, Arial, Helvetica; font-size: 13px; font-weight: normal; - font-family: "Open Sans", "Droid Sans", Verdana, Arial, Helvetica; line-height: 1.4; text-align: center; - white-space: nowrap; vertical-align: middle; + white-space: nowrap; border: 1px solid transparent; + display: inline-block; } .pagination li.ellipsis span { @@ -882,29 +970,29 @@ fieldset.fields1 dl.pmlist dd.recipients { margin: 0; } -.row .pagination li a, .row .pagination li span { +.row .pagination li a, +.row .pagination li span { + font-size: 9px; border-radius: 2px; - padding: 1px 3px; - font-size: 9px; + padding: 1px 3px; } /* jQuery popups ---------------------------------------- */ .phpbb_alert { border: 1px solid transparent; - display: none; - left: 0; - padding: 0 25px 20px 25px; position: fixed; - right: 0; top: 150px; + right: 0; + left: 0; z-index: 50; + display: none; width: 620px; margin: 0 auto; + padding: 0 25px 20px; } -@media only screen and (max-height: 500px), only screen and (max-device-width: 500px) -{ +@media only screen and (max-height: 500px), only screen and (max-device-width: 500px) { .phpbb_alert { top: 25px; } @@ -912,8 +1000,8 @@ fieldset.fields1 dl.pmlist dd.recipients { .phpbb_alert .alert_close { float: right; - margin-right: -36px; margin-top: -8px; + margin-right: -36px; } .phpbb_alert p { @@ -936,41 +1024,41 @@ fieldset.fields1 dl.pmlist dd.recipients { } .darkenwrapper { - display: none; position: relative; z-index: 44; + display: none; } .darken { + opacity: 0.5; position: fixed; - left: 0; top: 0; + left: 0; + z-index: 45; width: 100%; height: 100%; - opacity: 0.5; - z-index: 45; } .loading_indicator { background: center center no-repeat; border-radius: 5px; - display: none; opacity: 0.8; - margin-top: -50px; - margin-left: -50px; - height: 50px; - width: 50px; position: fixed; - left: 50%; top: 50%; + left: 50%; z-index: 51; + display: none; + width: 50px; + height: 50px; + margin-top: -50px; + margin-left: -50px; } /* Miscellaneous styles ---------------------------------------- */ .copyright { - padding: 5px; text-align: center; + padding: 5px; } .small { @@ -986,26 +1074,27 @@ fieldset.fields1 dl.pmlist dd.recipients { } .error { - font-weight: bold; font-size: 1em; + font-weight: bold; } div.rules { - margin: 10px 0; font-size: 1.1em; - padding: 5px 10px; border-radius: 7px; + margin: 10px 0; + padding: 5px 10px; } -div.rules ul, div.rules ol { +div.rules ul, +div.rules ol { margin-left: 20px; } p.post-notice { position: relative; - padding: 5px; min-height: 14px; margin-bottom: 1em; + padding: 5px; } form > p.post-notice strong { @@ -1017,17 +1106,17 @@ form > p.post-notice strong { } .top-anchor { - display: block; position: absolute; top: -20px; + display: block; } .clear { - display: block; - clear: both; font-size: 1px; line-height: 1px; background: transparent; + display: block; + clear: both; } /* Inner box-model clearing */ @@ -1039,9 +1128,9 @@ ul.linklist:after, .tabs > ul:after, .minitabs > ul:after, .postprofile .avatar-container:after { + display: block; clear: both; content: ''; - display: block; } .smilies { @@ -1063,26 +1152,26 @@ ul.linklist:after, } .dropdown-extended { - display: none; z-index: 1; + display: none; } .dropdown-extended ul { - max-height: 350px; - overflow-y: auto; - overflow-x: hidden; clear: both; + overflow-x: hidden; + overflow-y: auto; + max-height: 350px; } .dropdown-extended ul li { - padding: 0; - margin: 0 !important; - float: none; - border-top: 1px solid; - list-style-type: none; font-size: 0.95em; - clear: both; + border-top: 1px solid; position: relative; + float: none; + clear: both; + margin: 0 !important; + padding: 0; + list-style-type: none; } .dropdown-extended ul li:first-child { @@ -1094,10 +1183,10 @@ ul.linklist:after, } .dropdown-extended .dropdown-contents { - max-height: none; - padding: 0; position: absolute; width: 340px; + max-height: none; + padding: 0; } .nojs .dropdown-extended .dropdown-contents { @@ -1105,21 +1194,21 @@ ul.linklist:after, } .dropdown-extended .header { - padding: 0 10px; - font-family: Arial, "Helvetica Neue", Helvetica, Arial, sans-serif; + font-family: Arial, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: bold; + line-height: 3em; text-align: left; - text-shadow: 1px 1px 1px white; text-transform: uppercase; - line-height: 3em; - border-bottom: 1px solid; border-radius: 5px 5px 0 0; + border-bottom: 1px solid; + text-shadow: 1px 1px 1px #ffffff; + padding: 0 10px; } .dropdown-extended .header .header_settings { - float: right; font-weight: normal; text-transform: none; + float: right; } .dropdown-extended .header .header_settings a { @@ -1128,17 +1217,18 @@ ul.linklist:after, } .dropdown-extended .header:after { - content: ''; display: table; clear: both; + content: ''; } .dropdown-extended .footer { - text-align: center; font-size: 1.1em; + text-align: center; } -.dropdown-extended ul li a, .dropdown-extended ul li.no-url { +.dropdown-extended ul li a, +.dropdown-extended ul li.no-url { padding: 8px; } @@ -1146,37 +1236,39 @@ ul.linklist:after, padding: 5px 0; } -.dropdown-extended ul li a, .notification_list dt > a, .dropdown-extended .footer > a { - display: block; +.dropdown-extended ul li a, +.notification_list dt > a, +.dropdown-extended .footer > a { text-decoration: none; + display: block; } .notification_list ul li img { float: left; - max-height: 50px; - max-width: 50px; width: auto !important; + max-width: 50px; height: auto !important; + max-height: 50px; margin-right: 5px; } .notification_list ul li p { - margin-bottom: 4px; font-size: 1em; + margin-bottom: 4px; } .notification_list p.notification-reference, .notification_list p.notification-location, .notification_list li a p.notification-reason { - overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + overflow: hidden; } .notification_list p.notification-time { font-size: 0.9em; - margin: 0; text-align: right; + margin: 0; } .notification_list div.notifications { @@ -1189,7 +1281,7 @@ ul.linklist:after, } .notification_list p.notifications_title { - font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; + font-family: 'Trebuchet MS', Arial, Helvetica, sans-serif; font-size: 1.2em !important; } @@ -1222,7 +1314,7 @@ ul.linklist:after, } /* Navbar specific list items -----------------------------------------*/ +---------------------------------------- */ .linklist .quick-links { margin: 0 7px 0 0; diff --git a/phpBB/styles/prosilver/theme/content.css b/phpBB/styles/prosilver/theme/content.css index ef18e26ef11..6c6b09d13cc 100644 --- a/phpBB/styles/prosilver/theme/content.css +++ b/phpBB/styles/prosilver/theme/content.css @@ -3,14 +3,14 @@ ul.topiclist { display: block; - list-style-type: none; margin: 0; + list-style-type: none; } ul.topiclist li { display: block; - list-style-type: none; margin: 0; + list-style-type: none; } ul.topiclist dl { @@ -21,15 +21,16 @@ ul.topiclist li.row dl { padding: 2px 0; } -ul.topiclist dt, ul.topiclist dd { +ul.topiclist dt, +ul.topiclist dd { display: block; float: left; } ul.topiclist dt { + font-size: 1.1em; width: 100%; margin-right: -440px; - font-size: 1.1em; } ul.topiclist.missing-column dt { @@ -46,8 +47,8 @@ ul.topiclist.two-columns dt { ul.topiclist dt .list-inner { margin-right: 440px; - padding-left: 5px; padding-right: 5px; + padding-left: 5px; } ul.topiclist.missing-column dt .list-inner { @@ -64,10 +65,8 @@ ul.topiclist.two-columns dt .list-inner { ul.topiclist dd { border-left: 1px solid transparent; - padding: 4px 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; box-sizing: border-box; + padding: 4px 0; } ul.topiclist dfn { @@ -79,8 +78,8 @@ ul.topiclist dfn { .forum-image { float: left; - padding-top: 5px; margin-right: 5px; + padding-top: 5px; } li.row { @@ -92,15 +91,16 @@ li.row strong { font-weight: normal; } -li.header dt, li.header dd { +li.header dt, +li.header dd { + font-family: Arial, Helvetica, sans-serif; + font-size: 1em; line-height: 1em; + text-transform: uppercase; border-left-width: 0; - margin: 2px 0 4px 0; + margin: 2px 0 4px; padding-top: 2px; padding-bottom: 2px; - font-size: 1em; - font-family: Arial, Helvetica, sans-serif; - text-transform: uppercase; } li.header dt { @@ -114,20 +114,20 @@ li.header dt .list-inner { } li.header dd { - padding-left: 1px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; box-sizing: border-box; + padding-left: 1px; } -li.header dl.row-item dt, li.header dl.row-item dd { +li.header dl.row-item dt, +li.header dl.row-item dd { min-height: 0; } li.header dl.row-item dt .list-inner { + padding-right: 50px; + /* Tweak for headers alignment when folder icon used */ padding-left: 0; - padding-right: 50px; } /* Forum list column styles */ @@ -137,15 +137,16 @@ dl.row-item { } dl.row-item dt { - background-repeat: no-repeat; background-position: 5px 95%; /* Position of topic icon */ + background-repeat: no-repeat; } dl.row-item dt .list-inner { padding-left: 45px; /* Space for folder icon */ } -dl.row-item dt, dl.row-item dd { +dl.row-item dt, +dl.row-item dd { min-height: 35px; } @@ -154,33 +155,39 @@ dl.row-item dt a { } dl a.row-item-link { /* topic row icon links */ - display: block; - width: 30px; - height: 30px; - padding: 0; position: absolute; top: 50%; left: 0; + display: block; + width: 30px; + height: 30px; margin-top: -15px; margin-left: 9px; + padding: 0; } -dd.posts, dd.topics, dd.views, dd.extra, dd.mark { - width: 80px; - text-align: center; - line-height: 2.2em; +dd.posts, +dd.topics, +dd.views, +dd.extra, +dd.mark { font-size: 1.2em; + line-height: 2.2em; + text-align: center; + width: 80px; } -dd.posts, dd.topics, dd.views { +dd.posts, +dd.topics, +dd.views { width: 95px; } /* List in forum description */ dl.row-item dt ol, dl.row-item dt ul { - list-style-position: inside; margin-left: 1em; + list-style-position: inside; } dl.row-item dt li { @@ -188,9 +195,13 @@ dl.row-item dt li { list-style-type: inherit; } -dd.lastpost, dd.redirect, dd.moderation, dd.time, dd.info { - width: 250px; +dd.lastpost, +dd.redirect, +dd.moderation, +dd.time, +dd.info { font-size: 1.1em; + width: 250px; } dd.redirect { @@ -201,30 +212,35 @@ dd.time { line-height: 200%; } -dd.lastpost > span, ul.topiclist dd.info > span, ul.topiclist dd.time > span, dd.redirect > span, dd.moderation > span { +dd.lastpost > span, +ul.topiclist dd.info > span, +ul.topiclist dd.time > span, +dd.redirect > span, +dd.moderation > span { display: block; padding-left: 5px; } -dd.extra, dd.mark { +dd.extra, +dd.mark { line-height: 200%; } dd.option { - width: 125px; + font-size: 1.1em; line-height: 200%; text-align: center; - font-size: 1.1em; + width: 125px; } /* Post body styles -----------------------------------------*/ +---------------------------------------- */ .postbody { - padding: 0; line-height: 1.48em; - width: 76%; - float: left; position: relative; + float: left; + width: 76%; + padding: 0; } .postbody .ignore { @@ -237,16 +253,17 @@ dd.option { } .postbody h3 { + font-family: 'Trebuchet MS', Verdana, Helvetica, Arial, sans-serif; + font-size: 1.5em; + line-height: 125%; + text-transform: none; + border: none; + /* Postbody requires a different h3 format - so change it here */ float: left; - font-size: 1.5em; - padding: 2px 0 0 0; margin-top: 0 !important; margin-bottom: 0.3em !important; - text-transform: none; - border: none; - font-family: "Trebuchet MS", Verdana, Helvetica, Arial, sans-serif; - line-height: 125%; + padding: 2px 0 0; } .postbody h3 img { @@ -265,33 +282,31 @@ dd.option { } .postbody img.postimage { - max-width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; box-sizing: border-box; + max-width: 100%; } .search .postbody { - width: 68% + width: 68%; } /* Topic review panel -----------------------------------------*/ +---------------------------------------- */ .panel .review { margin-top: 2em; } .topicreview { - padding-right: 5px; overflow: auto; height: 300px; + padding-right: 5px; } .topicreview .postbody { - width: auto; float: none; - margin: 0; + width: auto; height: auto; + margin: 0; } .topicreview .post { @@ -307,7 +322,7 @@ dd.option { } /* MCP Post details -----------------------------------------*/ +---------------------------------------- */ .post_details { /* This will only work in IE7+, plus the others */ overflow: auto; @@ -315,21 +330,22 @@ dd.option { } /* Content container styles -----------------------------------------*/ +---------------------------------------- */ .content { + font-family: 'Lucida Grande', 'Trebuchet MS', Verdana, Helvetica, Arial, sans-serif; + font-size: 1em; + line-height: 1.4em; clear: both; - min-height: 3em; overflow: hidden; - line-height: 1.4em; - font-family: "Lucida Grande", "Trebuchet MS", Verdana, Helvetica, Arial, sans-serif; - font-size: 1em; + min-height: 3em; padding-bottom: 1px; } -.content h2, .panel h2 { +.content h2, +.panel h2 { + font-size: 1.6em; font-weight: normal; border-bottom: 1px solid transparent; - font-size: 1.6em; margin-top: 0.5em; margin-bottom: 0.5em; padding-bottom: 0.5em; @@ -341,23 +357,23 @@ dd.option { .panel p { font-size: 1.2em; - margin-bottom: 1em; line-height: 1.4em; + margin-bottom: 1em; } .content p { - font-family: "Lucida Grande", "Trebuchet MS", Verdana, Helvetica, Arial, sans-serif; + font-family: 'Lucida Grande', 'Trebuchet MS', Verdana, Helvetica, Arial, sans-serif; font-size: 1.2em; - margin-bottom: 1em; line-height: 1.4em; + margin-bottom: 1em; } dl.faq { - font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif; + font-family: 'Lucida Grande', Verdana, Helvetica, Arial, sans-serif; font-size: 1.1em; + line-height: 1.4em; margin-top: 1em; margin-bottom: 2em; - line-height: 1.4em; } dl.faq dt { @@ -373,34 +389,35 @@ dl.faq dt { list-style-type: inherit; } -.content ul, .content ol { +.content ul, +.content ol { margin: 0.8em 0 0.9em 3em; } .posthilit { - padding: 0 2px 1px 2px; + padding: 0 2px 1px; } /* Post author */ p.author { - margin-bottom: 0.6em; - padding: 0 0 5px 0; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 1em; line-height: 1.2em; clear: both; + margin-bottom: 0.6em; + padding: 0 0 5px; } /* Post signature */ .signature { - margin-top: 1.5em; - padding-top: 0.2em; font-size: 1.1em; + line-height: 140%; border-top: 1px solid transparent; clear: left; - line-height: 140%; overflow: hidden; width: 100%; + margin-top: 1.5em; + padding-top: 0.2em; } .signature.standalone { @@ -409,48 +426,50 @@ p.author { } dd .signature { + border: none; + clear: none; margin: 0; padding: 0; - clear: none; - border: none; } .signature li { list-style-type: inherit; } -.signature ul, .signature ol { +.signature ul, +.signature ol { margin: 0.8em 0 0.9em 3em; } /* Post noticies */ .notice { - font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif; - width: auto; - margin-top: 1.5em; - padding-top: 0.2em; + font-family: 'Lucida Grande', Verdana, Helvetica, Arial, sans-serif; font-size: 1em; + line-height: 130%; border-top: 1px dashed transparent; clear: left; - line-height: 130%; + width: auto; + margin-top: 1.5em; + padding-top: 0.2em; } /* Jump to post link for now */ ul.searchresults { - list-style: none; text-align: right; clear: both; + list-style: none; } /* BB Code styles -----------------------------------------*/ +---------------------------------------- */ + /* Quote block */ blockquote { + font-size: 0.95em; background: transparent none 6px 8px no-repeat; border: 1px solid transparent; - font-size: 0.95em; - margin: 1em 1px 1em 25px; overflow: hidden; + margin: 1em 1px 1em 25px; padding: 5px; } @@ -461,12 +480,13 @@ blockquote blockquote { } blockquote cite { + font-size: 0.9em; + /* Username/source of quoter */ font-style: normal; font-weight: bold; - margin-left: 20px; display: block; - font-size: 0.9em; + margin-left: 20px; } blockquote cite cite { @@ -478,8 +498,8 @@ blockquote.uncited { } blockquote cite > div { - float: right; font-weight: normal; + float: right; } .postbody .content li blockquote { @@ -489,19 +509,19 @@ blockquote cite > div { /* Code block */ .codebox { - padding: 3px; - border: 1px solid transparent; font-size: 1em; - margin: 1em 0 1.2em 0; + border: 1px solid transparent; + margin: 1em 0 1.2em; + padding: 3px; } .codebox p { - text-transform: uppercase; - border-bottom: 1px solid transparent; - margin-bottom: 3px; font-size: 0.8em !important; font-weight: bold; + text-transform: uppercase; + border-bottom: 1px solid transparent; display: block; + margin-bottom: 3px; } blockquote .codebox { @@ -509,29 +529,27 @@ blockquote .codebox { } .codebox code { - overflow: auto; + font: 0.9em Monaco, 'Andale Mono', 'Courier New', Courier, mono; + line-height: 1.3em; display: block; + overflow: auto; height: auto; max-height: 200px; - padding-top: 5px; - font: 0.9em Monaco, "Andale Mono","Courier New", Courier, mono; - line-height: 1.3em; margin: 2px 0; + padding-top: 5px; } /* Attachments -----------------------------------------*/ +---------------------------------------- */ .attachbox { + border: 1px dashed transparent; float: left; + clear: left; + box-sizing: border-box; width: auto; max-width: 100%; margin: 5px 5px 5px 0; padding: 6px; - border: 1px dashed transparent; - clear: left; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; } .attachbox dt { @@ -540,11 +558,11 @@ blockquote .codebox { } .attachbox dd { - margin-top: 4px; - padding-top: 4px; - clear: left; border-top: 1px solid transparent; + clear: left; overflow-x: auto; + margin-top: 4px; + padding-top: 4px; } .attachbox dd dd { @@ -552,31 +570,32 @@ blockquote .codebox { } .attachbox p { - line-height: 110%; font-weight: normal; + line-height: 110%; clear: left; } -.attachbox p.stats -{ - line-height: 110%; +.attachbox p.stats { font-weight: normal; + line-height: 110%; clear: left; } .attach-image { - margin: 3px 0; max-width: 100%; + margin: 3px 0; } .attach-image img { border: 1px solid transparent; -/* cursor: move; */ + + /* cursor: move; */ cursor: default; } /* Inline image thumbnails */ -div.inline-attachment dl.thumbnail, div.inline-attachment dl.file { +div.inline-attachment dl.thumbnail, +div.inline-attachment dl.file { display: block; margin-bottom: 4px; } @@ -591,11 +610,11 @@ dl.file { } dl.file dt { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-weight: bold; text-transform: none; margin: 0; padding: 0; - font-weight: bold; - font-family: Verdana, Arial, Helvetica, sans-serif; } dl.file dd { @@ -604,14 +623,14 @@ dl.file dd { } dl.thumbnail img { - padding: 3px; border: 1px solid transparent; box-sizing: border-box; + padding: 3px; } dl.thumbnail dd { - font-style: italic; font-family: Verdana, Arial, Helvetica, sans-serif; + font-style: italic; } .attachbox dl.thumbnail dd { @@ -623,16 +642,16 @@ dl.thumbnail dt a:hover img { } /* Post poll styles -----------------------------------------*/ +---------------------------------------- */ fieldset.polls { - font-family: "Trebuchet MS", Verdana, Helvetica, Arial, sans-serif; + font-family: 'Trebuchet MS', Verdana, Helvetica, Arial, sans-serif; } fieldset.polls dl { - margin-top: 5px; - border-top: 1px solid transparent; - padding: 5px 0 0 0; line-height: 120%; + border-top: 1px solid transparent; + margin-top: 5px; + padding: 5px 0 0; } fieldset.polls dl.voted { @@ -640,23 +659,23 @@ fieldset.polls dl.voted { } fieldset.polls dt { + font-size: 1.1em; text-align: left; - float: left; + border-right: none; display: block; + float: left; width: 30%; - border-right: none; - padding: 0; margin: 0; - font-size: 1.1em; + padding: 0; } fieldset.polls dd { + font-size: 1.1em; + border-left: none; float: left; width: 10%; - border-left: none; - padding: 0 5px; margin-left: 0; - font-size: 1.1em; + padding: 0 5px; } fieldset.polls dd.resultbar { @@ -668,17 +687,21 @@ fieldset.polls dd input { } fieldset.polls dd div { - text-align: right; font-family: Arial, Helvetica, sans-serif; font-weight: bold; - padding: 2px 2px 0 2px; + text-align: right; overflow: visible; min-width: 8px; + padding: 2px 2px 0; } -.pollbar1, .pollbar2, .pollbar3, .pollbar4, .pollbar5 { - border-bottom: 1px solid transparent; +.pollbar1, +.pollbar2, +.pollbar3, +.pollbar4, +.pollbar5 { border-right: 1px solid transparent; + border-bottom: 1px solid transparent; } .vote-submitted { @@ -688,39 +711,42 @@ fieldset.polls dd div { } /* Poster profile block -----------------------------------------*/ +---------------------------------------- */ .postprofile { - margin: 5px 0 10px 0; - min-height: 80px; border: 1px solid transparent; border-width: 0 0 0 1px; - width: 22%; - float: right; display: inline; + float: right; + width: 22%; + min-height: 80px; + margin: 5px 0 10px; } -.postprofile dd, .postprofile dt { +.postprofile dd, +.postprofile dt { line-height: 1.2em; margin-left: 8px; } .postprofile dd { - overflow: hidden; text-overflow: ellipsis; + overflow: hidden; } .postprofile strong { font-weight: normal; } -.postprofile dt.no-profile-rank, .postprofile dd.profile-rank, .postprofile .search-result-date { +.postprofile dt.no-profile-rank, +.postprofile dd.profile-rank, +.postprofile .search-result-date { margin-bottom: 10px; } /* Post-profile avatars */ .postprofile .has-avatar .avatar-container { - margin-bottom: 3px; overflow: hidden; + margin-bottom: 3px; } .postprofile .avatar { @@ -731,8 +757,8 @@ fieldset.polls dd div { .postprofile .avatar img { display: block; - height: auto !important; max-width: 100%; + height: auto !important; } .postprofile .profile-posts a { @@ -765,7 +791,7 @@ dd.profile-contact { background-repeat: no-repeat; } -/* Poster profile used by search*/ +/* Poster profile used by search */ .search .postprofile { width: 30%; } @@ -785,8 +811,8 @@ dl.pmlist dt textarea { } dl.pmlist dd { - margin-left: 61% !important; margin-bottom: 2px; + margin-left: 61% !important; } .action-bar div.dl_links { @@ -794,8 +820,8 @@ dl.pmlist dd { } div.dl_links { - display: inline-block; text-transform: none; + display: inline-block; } .dl_links strong { @@ -803,9 +829,9 @@ div.dl_links { } .dl_links ul { - list-style-type: none; - margin: 0; display: inline-block; + margin: 0; + list-style-type: none; } .dl_links li { @@ -817,10 +843,10 @@ div.dl_links { } .ellipsis-text { - display: inline-block; - overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + display: inline-block; + overflow: hidden; } table.fixed-width-table { @@ -828,20 +854,34 @@ table.fixed-width-table { } /* Show scrollbars for items with overflow on iOS devices -----------------------------------------*/ -.postbody .content::-webkit-scrollbar, .topicreview::-webkit-scrollbar, .post_details::-webkit-scrollbar, .codebox code::-webkit-scrollbar, .attachbox dd::-webkit-scrollbar, .attach-image::-webkit-scrollbar, .dropdown-extended ul::-webkit-scrollbar { +---------------------------------------- */ +.postbody .content::-webkit-scrollbar, +.topicreview::-webkit-scrollbar, +.post_details::-webkit-scrollbar, +.codebox code::-webkit-scrollbar, +.attachbox dd::-webkit-scrollbar, +.attach-image::-webkit-scrollbar, +.dropdown-extended ul::-webkit-scrollbar { + background: rgba(0, 0, 0, 0.1); + border-radius: 3px; width: 8px; height: 8px; -webkit-appearance: none; - background: rgba(0, 0, 0, .1); - border-radius: 3px; } -.postbody .content::-webkit-scrollbar-thumb, .topicreview::-webkit-scrollbar-thumb, .post_details::-webkit-scrollbar-thumb, .codebox code::-webkit-scrollbar-thumb, .attachbox dd::-webkit-scrollbar-thumb, .attach-image::-webkit-scrollbar-thumb, .dropdown-extended ul::-webkit-scrollbar-thumb { - background: rgba(0, 0, 0, .3); +.postbody .content::-webkit-scrollbar-thumb, +.topicreview::-webkit-scrollbar-thumb, +.post_details::-webkit-scrollbar-thumb, +.codebox code::-webkit-scrollbar-thumb, +.attachbox dd::-webkit-scrollbar-thumb, +.attach-image::-webkit-scrollbar-thumb, +.dropdown-extended ul::-webkit-scrollbar-thumb { + background: rgba(0, 0, 0, 0.3); border-radius: 3px; } -#memberlist tr.inactive, #team tr.inactive { +/* Factor out this ID */ +#memberlist tr.inactive, +#team tr.inactive { font-style: italic; } diff --git a/phpBB/styles/prosilver/theme/cp.css b/phpBB/styles/prosilver/theme/cp.css index d54c9483430..48aa8f561c6 100644 --- a/phpBB/styles/prosilver/theme/cp.css +++ b/phpBB/styles/prosilver/theme/cp.css @@ -3,9 +3,9 @@ /* Main CP box -----------------------------------------*/ +---------------------------------------- */ .cp-menu { - float:left; + float: left; width: 19%; margin-top: 1em; margin-bottom: 5px; @@ -25,21 +25,22 @@ } .panel-container .panel ol { - margin-left: 2em; font-size: 1.1em; + margin-left: 2em; } .panel-container .panel li.row { - border-bottom: 1px solid transparent; border-top: 1px solid transparent; + border-bottom: 1px solid transparent; } ul.cplist { - margin-bottom: 5px; border-top: 1px solid transparent; + margin-bottom: 5px; } -.panel-container .panel li.header dd, .panel-container .panel li.header dt { +.panel-container .panel li.header dd, +.panel-container .panel li.header dt { margin-bottom: 2px; } @@ -61,16 +62,17 @@ ul.cplist { .cp-main .pm-message { border: 1px solid transparent; - margin: 10px 0; - width: auto; float: none; + width: auto; + margin: 10px 0; } .pm-message h2 { padding-bottom: 5px; } -.cp-main .postbody h3, .cp-main .box2 h3 { +.cp-main .postbody h3, +.cp-main .box2 h3 { margin-top: 0; } @@ -93,41 +95,45 @@ ul.cplist { .tabs-container h2 { float: left; - margin-bottom: 0px; + margin-bottom: 0; } /* CP tabs shared -----------------------------------------*/ -.tabs, .minitabs { +---------------------------------------- */ +.tabs, +.minitabs { line-height: normal; } -.tabs > ul, .minitabs > ul { - list-style: none; +.tabs > ul, +.minitabs > ul { + position: relative; margin: 0; padding: 0; - position: relative; + list-style: none; } -.tabs .tab, .minitabs .tab { - display: block; - float: left; +.tabs .tab, +.minitabs .tab { font-size: 1em; font-weight: bold; line-height: 1.4em; + display: block; + float: left; } -.tabs .tab > a, .minitabs .tab > a { - display: block; - padding: 5px 9px; - position: relative; +.tabs .tab > a, +.minitabs .tab > a { text-decoration: none; white-space: nowrap; + position: relative; + display: block; + padding: 5px 9px; cursor: pointer; } /* CP tabbed menu -----------------------------------------*/ +---------------------------------------- */ .tabs { margin: 20px 0 0 7px; } @@ -144,11 +150,11 @@ ul.cplist { } /* Mini tabbed menu used in MCP -----------------------------------------*/ +---------------------------------------- */ .minitabs { float: right; - margin: 15px 7px 0 0; max-width: 50%; + margin: 15px 7px 0 0; } .minitabs .tab { @@ -165,45 +171,47 @@ ul.cplist { } /* Responsive tabs -----------------------------------------*/ +---------------------------------------- */ .responsive-tab { position: relative; } .responsive-tab > a.responsive-tab-link { - display: block; font-size: 1.6em; - position: relative; - width: 16px; line-height: 0.9em; text-decoration: none; + position: relative; + display: block; + width: 16px; } .responsive-tab .responsive-tab-link:before { - content: ''; + border-top: 0.375em double transparent; + border-bottom: 0.125em solid transparent; position: absolute; - left: 10px; top: 7px; - height: .125em; + left: 10px; width: 14px; - border-bottom: 0.125em solid transparent; - border-top: 0.375em double transparent; + height: 0.125em; + content: ''; } -.tabs .dropdown, .minitabs .dropdown { - top: 20px; - margin-right: -2px; +.tabs .dropdown, +.minitabs .dropdown { font-size: 1.1em; font-weight: normal; + top: 20px; + margin-right: -2px; } .minitabs .dropdown { margin-right: -4px; } -.tabs .dropdown-up .dropdown, .minitabs .dropdown-up .dropdown { - bottom: 20px; +.tabs .dropdown-up .dropdown, +.minitabs .dropdown-up .dropdown { top: auto; + bottom: 20px; } .tabs .dropdown li { @@ -215,7 +223,8 @@ ul.cplist { } /* UCP navigation menu -----------------------------------------*/ +---------------------------------------- */ + /* Container for sub-navigation list */ .navigation { width: 100%; @@ -228,18 +237,18 @@ ul.cplist { /* Default list state */ .navigation li { - display: inline; font-weight: bold; + display: inline; margin: 1px 0; padding: 0; } /* Link styles for the sub-section links */ .navigation a { + text-decoration: none; display: block; - padding: 5px; margin: 1px 0; - text-decoration: none; + padding: 5px; } .navigation a:hover { @@ -247,20 +256,20 @@ ul.cplist { } /* Preferences pane layout -----------------------------------------*/ +---------------------------------------- */ .cp-main h2 { border-bottom: none; - padding: 0; margin-left: 10px; + padding: 0; } /* Friends list */ .cp-mini { - margin: 10px 15px 10px 5px; - max-height: 200px; + border-radius: 7px; overflow-y: auto; + max-height: 200px; + margin: 10px 15px 10px 5px; padding: 5px 10px; - border-radius: 7px; } dl.mini dt { @@ -280,7 +289,8 @@ dl.mini dd { } /* PM Styles -----------------------------------------*/ +---------------------------------------- */ + /* Defined rules list for PM options */ ol.def-rules { padding-left: 0; @@ -300,60 +310,68 @@ ol.def-rules li { padding: 0 3px; } -.pmlist li.pm_message_reported_colour, .pm_message_reported_colour { - border-left-color: transparent; +.pmlist li.pm_message_reported_colour, +.pm_message_reported_colour { border-right-color: transparent; + border-left-color: transparent; } -.pmlist li.pm_marked_colour, .pm_marked_colour, -.pmlist li.pm_replied_colour, .pm_replied_colour, -.pmlist li.pm_friend_colour, .pm_friend_colour, -.pmlist li.pm_foe_colour, .pm_foe_colour { - padding: 0; +.pmlist li.pm_marked_colour, +.pm_marked_colour, +.pmlist li.pm_replied_colour, +.pm_replied_colour, +.pmlist li.pm_friend_colour, +.pm_friend_colour, +.pmlist li.pm_foe_colour, +.pm_foe_colour { border: solid 3px transparent; border-width: 0 3px; + padding: 0; } .pm-legend { - border-left-width: 10px; - border-left-style: solid; border-right-width: 0; + border-left-style: solid; + border-left-width: 10px; margin-bottom: 3px; padding-left: 3px; } /* Avatar gallery */ .gallery label { + text-align: center; + border: 1px solid transparent; position: relative; float: left; + width: auto; margin: 10px; padding: 5px; - width: auto; - border: 1px solid transparent; - text-align: center; } /* Responsive *CP navigation -----------------------------------------*/ -@media only screen and (max-width: 900px), only screen and (max-device-width: 900px) -{ - .nojs .tabs a span, .nojs .minitabs a span { - max-width: 40px; - overflow: hidden; +---------------------------------------- */ + +@media only screen and (max-width: 900px), only screen and (max-device-width: 900px) { + .nojs .tabs a span, + .nojs .minitabs a span { + letter-spacing: -0.5px; text-overflow: ellipsis; - letter-spacing: -.5px; + overflow: hidden; + max-width: 40px; } - .cp-menu, .navigation, .cp-main { + .cp-menu, + .navigation, + .cp-main { float: none; width: auto; margin: 0; } .navigation { - padding: 0; - margin: 0 auto; max-width: 320px; + margin: 0 auto; + padding: 0; } .navigation a { diff --git a/phpBB/styles/prosilver/theme/forms.css b/phpBB/styles/prosilver/theme/forms.css index e8efbc6045e..6fcdec33a20 100644 --- a/phpBB/styles/prosilver/theme/forms.css +++ b/phpBB/styles/prosilver/theme/forms.css @@ -2,29 +2,29 @@ ---------------------------------------- */ /* General form styles -----------------------------------------*/ +---------------------------------------- */ fieldset { - border-width: 0; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 1.1em; + border-width: 0; } input { + font-family: Verdana, Helvetica, Arial, sans-serif; + font-size: 1em; font-weight: normal; vertical-align: middle; padding: 0 3px; - font-size: 1em; - font-family: Verdana, Helvetica, Arial, sans-serif; } select { font-family: Verdana, Helvetica, Arial, sans-serif; + font-size: 1em; font-weight: normal; - cursor: pointer; vertical-align: middle; border: 1px solid transparent; padding: 1px; - font-size: 1em; + cursor: pointer; } select:focus { @@ -36,21 +36,21 @@ option { } select optgroup option { - padding-right: 1em; font-family: Verdana, Helvetica, Arial, sans-serif; + padding-right: 1em; } textarea { - font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif; - width: 60%; - padding: 2px; + font-family: 'Lucida Grande', Verdana, Helvetica, Arial, sans-serif; font-size: 1em; line-height: 1.4em; + width: 60%; + padding: 2px; } label { - cursor: default; padding-right: 5px; + cursor: default; } label input { @@ -68,27 +68,27 @@ fieldset dl { } fieldset dt { - float: left; - width: 40%; text-align: left; display: block; + float: left; + width: 40%; } fieldset dd { - margin-left: 41%; vertical-align: top; margin-bottom: 3px; + margin-left: 41%; } /* Specific layout 1 */ fieldset.fields1 dt { - width: 15em; border-right-width: 0; + width: 15em; } fieldset.fields1 dd { - margin-left: 15em; border-left-width: 0; + margin-left: 15em; } fieldset.fields1 div { @@ -102,13 +102,13 @@ fieldset.fields1 .live-search div { /* Specific layout 2 */ fieldset.fields2 dt { - width: 15em; border-right-width: 0; + width: 15em; } fieldset.fields2 dd { - margin-left: 16em; border-left-width: 0; + margin-left: 16em; } /* Form elements */ @@ -121,7 +121,8 @@ dd label { white-space: nowrap; } -dd input, dd textarea { +dd input, +dd textarea { margin-right: 3px; } @@ -144,8 +145,8 @@ dd textarea { /* Browser-specific tweaks */ button::-moz-focus-inner { + border: 0; padding: 0; - border: 0 } /* Quick-login on index page */ @@ -158,8 +159,8 @@ fieldset.quick-login input { } fieldset.quick-login input.inputbox { - width: 15%; vertical-align: middle; + width: 15%; margin-right: 5px; } @@ -171,7 +172,7 @@ fieldset.quick-login label { /* Display options on viewtopic/viewforum pages */ fieldset.display-options { text-align: center; - margin: 3px 0 5px 0; + margin: 3px 0 5px; } fieldset.display-options label { @@ -190,11 +191,11 @@ fieldset.display-options a { } .dropdown fieldset.display-options label { + text-align: right; + white-space: nowrap; display: block; margin: 4px; padding: 0; - text-align: right; - white-space: nowrap; } .dropdown fieldset.display-options select { @@ -203,8 +204,8 @@ fieldset.display-options a { /* Display actions for ucp and mcp pages */ fieldset.display-actions { - text-align: right; line-height: 2em; + text-align: right; white-space: nowrap; padding-right: 1em; } @@ -218,15 +219,15 @@ fieldset.sort-options { line-height: 2em; } -/* MCP forum selection*/ +/* MCP forum selection */ fieldset.forum-selection { - margin: 5px 0 3px 0; float: right; + margin: 5px 0 3px; } fieldset.forum-selection2 { - margin: 13px 0 3px 0; float: right; + margin: 13px 0 3px; } /* Submit button fieldset */ @@ -241,14 +242,15 @@ fieldset.submit-buttons input { } /* Posting page styles -----------------------------------------*/ +---------------------------------------- */ /* Buttons used in the editor */ .format-buttons { - margin: 15px 0 2px 0; + margin: 15px 0 2px; } -.format-buttons input, .format-buttons select { +.format-buttons input, +.format-buttons select { vertical-align: middle; } @@ -258,26 +260,22 @@ fieldset.submit-buttons input { } .message-box textarea { - font-family: "Trebuchet MS", Verdana, Helvetica, Arial, sans-serif; + font-family: 'Trebuchet MS', Verdana, Helvetica, Arial, sans-serif; + font-size: 1.2em; + outline: 3px dashed transparent; + outline-offset: -4px; width: 450px; - height: 270px; min-width: 100%; max-width: 100%; - font-size: 1.2em; + height: 270px; resize: vertical; - outline: 3px dashed transparent; - outline-offset: -4px; - -webkit-transition: all .5s ease; - -moz-transition: all .5s ease; - -ms-transition: all .5s ease; - -o-transition: all .5s ease; - transition: all .5s ease; + transition: all 0.5s ease; } /* Emoticons panel */ .smiley-box { - width: 18%; float: right; + width: 18%; } .smiley-box img { @@ -291,15 +289,27 @@ fieldset.submit-buttons input { padding: 2px; } -.inputbox:hover, .inputbox:focus { +.inputbox:hover, +.inputbox:focus { border: 1px solid transparent; outline-style: none; } -input.inputbox { width: 85%; } -input.medium { width: 50%; } -input.narrow { width: 25%; } -input.tiny { width: 150px; } +input.inputbox { + width: 85%; +} + +input.medium { + width: 50%; +} + +input.narrow { + width: 25%; +} + +input.tiny { + width: 150px; +} textarea.inputbox { width: 85%; @@ -309,70 +319,89 @@ textarea.inputbox { width: auto !important; } -input[type="number"] { +input[type='number'] { -moz-padding-end: inherit; } -input[type="search"] { - -webkit-appearance: textfield; +input[type='search'] { -webkit-box-sizing: content-box; + -webkit-appearance: textfield; } -input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-results-button, input[type="search"]::-webkit-search-results-decoration { +input[type='search']::-webkit-search-decoration, +input[type='search']::-webkit-search-results-button, +input[type='search']::-webkit-search-results-decoration { display: none; } -input[type="search"]::-webkit-search-cancel-button { +input[type='search']::-webkit-search-cancel-button { cursor: pointer; } /* Form button styles ---------------------------------------- */ -input.button1, input.button2 { +input.button1, +input.button2 { font-size: 1em; } -a.button1, input.button1, input.button3, a.button2, input.button2 { +a.button1, +input.button1, +input.button3, +a.button2, +input.button2 { + font-family: 'Lucida Grande', Verdana, Helvetica, Arial, sans-serif; + line-height: 1.5; + background: transparent none repeat-x top left; width: auto !important; padding-top: 1px; padding-bottom: 1px; - font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif; - background: transparent none repeat-x top left; - line-height: 1.5; } -a.button1, input.button1 { +a.button1, +input.button1 { font-weight: bold; border: 1px solid transparent; } input.button3 { - padding: 0; - margin: 0; + font-variant: small-caps; line-height: 5px; - height: 12px; background-image: none; - font-variant: small-caps; + height: 12px; + margin: 0; + padding: 0; } -input[type="button"], input[type="submit"], input[type="reset"], input[type="checkbox"], input[type="radio"] { +input[type='button'], +input[type='submit'], +input[type='reset'], +input[type='checkbox'], +input[type='radio'] { cursor: pointer; } /* Alternative button */ -a.button2, input.button2, input.button3 { +a.button2, +input.button2, +input.button3 { border: 1px solid transparent; } /* button in the style of the form buttons */ -a.button1, a.button2 { +a.button1, +a.button2 { text-decoration: none; - padding: 0 3px; vertical-align: text-bottom; + padding: 0 3px; } /* Hover states */ -a.button1:hover, input.button1:hover, a.button2:hover, input.button2:hover, input.button3:hover { +a.button1:hover, +input.button1:hover, +a.button2:hover, +input.button2:hover, +input.button3:hover { border: 1px solid transparent; } @@ -381,7 +410,9 @@ input.disabled { } /* Focus states */ -input.button1:focus, input.button2:focus, input.button3:focus { +input.button1:focus, +input.button2:focus, +input.button3:focus { outline-style: none; } @@ -392,14 +423,12 @@ input.button1:focus, input.button2:focus, input.button3:focus { .search-box .inputbox { background-image: none; - border-right-width: 0; border-radius: 4px 0 0 4px; + border-right-width: 0; float: left; + box-sizing: border-box; height: 24px; padding: 3px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; } /* Search box (header) @@ -408,22 +437,37 @@ input.button1:focus, input.button2:focus, input.button3:focus { border-radius: 4px; display: block; float: right; - margin-right: 5px; margin-top: 30px; + margin-right: 5px; } -.search-header .inputbox { border: 0; } +.search-header .inputbox { + border: 0; +} -.navbar .linklist > li.responsive-search { display: none; } +.navbar .linklist > li.responsive-search { + display: none; +} input.search { background-image: none; - background-repeat: no-repeat; background-position: left 1px; + background-repeat: no-repeat; padding-left: 17px; } -.full { width: 95%; } -.medium { width: 50%;} -.narrow { width: 25%;} -.tiny { width: 10%;} +.full { + width: 95%; +} + +.medium { + width: 50%; +} + +.narrow { + width: 25%; +} + +.tiny { + width: 10%; +} diff --git a/phpBB/styles/prosilver/theme/icons.css b/phpBB/styles/prosilver/theme/icons.css index 9fb7244f4bd..86e51b1087d 100644 --- a/phpBB/styles/prosilver/theme/icons.css +++ b/phpBB/styles/prosilver/theme/icons.css @@ -3,26 +3,29 @@ -------------------------------------------------------------- */ /* Global module setup ---------------------------------*/ +---------------------------------------- */ /* Renamed version of .fa class for agnostic useage of icon fonts. * Just change the name of the font after the 14/1 to the name of * the font you wish to use. */ -.icon, .button .icon { +.icon, +.button .icon { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-family: FontAwesome; + font-size: 14px; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: 1; display: inline-block; - font-weight: normal; - font-style: normal; - font-variant: normal; - font-family: FontAwesome; - font-size: 14px; - line-height: 1; - text-rendering: auto; /* optimizelegibility throws things off #1094 */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; + text-rendering: auto; /* optimizelegibility throws things off #1094 */ } -.icon:before { padding-right: 2px; } +.icon:before { + padding-right: 2px; +} .button .icon:before { padding-right: 0; @@ -48,36 +51,37 @@ /* icon modifiers */ .icon-tiny { + font-size: 16px; + vertical-align: text-bottom; width: 12px; + -webkit-transform: scale(0.65, 0.75); transform: scale(0.65, 0.75); - vertical-align: text-bottom; - font-size: 16px; -} - -.arrow-left:hover .icon { - margin-left: -5px; - margin-right: 5px; } .arrow-right .icon { float: right; } +.arrow-left:hover .icon { + margin-right: 5px; + margin-left: -5px; +} + .arrow-right:hover .icon { - margin-left: 5px; margin-right: -5px; + margin-left: 5px; } .post-buttons .dropdown-contents .icon { - float: right; - margin-left: 5px; + float: right; + margin-left: 5px; } .alert_close .icon:before { + line-height: 0.9; + border-radius: 50%; + display: block; + width: 11px; + height: 12px; padding: 0; - border-radius: 50%; - width: 11px; - display: block; - line-height: .9; - height: 12px; } diff --git a/phpBB/styles/prosilver/theme/links.css b/phpBB/styles/prosilver/theme/links.css index 6da14c93260..eeb8102fd13 100644 --- a/phpBB/styles/prosilver/theme/links.css +++ b/phpBB/styles/prosilver/theme/links.css @@ -3,13 +3,13 @@ /* Links adjustment to correctly display an order of rtl/ltr mixed content */ a { - direction: ltr; - unicode-bidi: embed; text-decoration: none; + /* we use links inline more often then not so to address several bugs with IE and some other browsers we render all links as inlineblock by default */ display: inline-block; - + direction: ltr; + unicode-bidi: embed; } /* Coloured usernames */ @@ -20,11 +20,15 @@ a { } /* Links on gradient backgrounds */ -.forumbg .header a, .forabg .header a, th a { +.forumbg .header a, +.forabg .header a, +th a { text-decoration: none; } -.forumbg .header a:hover, .forabg .header a:hover, th a:hover { +.forumbg .header a:hover, +.forabg .header a:hover, +th a:hover { text-decoration: underline; } @@ -33,15 +37,13 @@ a { background-position: center center; background-repeat: no-repeat; border-radius: 3px 0 0 3px; - display: none; - margin-top: -20px; position: absolute; - z-index: 2; - right: 0; top: 50%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; + right: 0; + z-index: 2; + display: none; box-sizing: border-box; + margin-top: -20px; } .dropdown-extended li:hover a.mark_read { @@ -53,12 +55,14 @@ a { } .jumpbox-cat-link, -.jumpbox-forum-link { font-weight: bold; } +.jumpbox-forum-link { + font-weight: bold; +} /* Links for forum/topic lists */ a.forumtitle { - font-family: "Trebuchet MS", Helvetica, Arial, Sans-serif; + font-family: 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 1.2em; font-weight: bold; text-decoration: none; @@ -69,7 +73,7 @@ a.forumtitle:hover { } a.topictitle { - font-family: "Trebuchet MS", Helvetica, Arial, Sans-serif; + font-family: 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 1.2em; font-weight: bold; text-decoration: none; @@ -100,25 +104,28 @@ a.lastsubject:hover { text-decoration: none; } -.signature a, .signature a:hover { - border: none; +.signature a, +.signature a:hover { text-decoration: underline; + border: none; } /* Profile links */ -.postprofile a, .postprofile dt.author a { +.postprofile a, +.postprofile dt.author a { font-weight: bold; text-decoration: none; } -.postprofile a:hover, .postprofile dt.author a:hover { +.postprofile a:hover, +.postprofile dt.author a:hover { text-decoration: underline; } /* Profile searchresults */ .search .postprofile a { - text-decoration: none; font-weight: normal; + text-decoration: none; } .search .postprofile a:hover { @@ -138,20 +145,20 @@ a.lastsubject:hover { .back2top .top { float: right; - margin-right: -10px; margin-top: 0; + margin-right: -10px; } /* Arrow links */ .arrow-up { - padding-left: 10px; text-decoration: none; border-bottom-width: 0; + padding-left: 10px; } .arrow-up:hover { - + /* add hover styles here */ } .arrow-down { @@ -159,7 +166,7 @@ a.lastsubject:hover { } .arrow-down:hover { - + /* add hover styles here */ } .arrow-left:hover { diff --git a/phpBB/styles/prosilver/theme/normalize.css b/phpBB/styles/prosilver/theme/normalize.css index 23d84492c8e..084ac119284 100644 --- a/phpBB/styles/prosilver/theme/normalize.css +++ b/phpBB/styles/prosilver/theme/normalize.css @@ -1,8 +1,8 @@ -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +/*! normalize.css v3.0.3 | mit license | github.com/necolas/normalize.css */ /** - * 1. Set default font family to sans-serif. - * 2. Prevent iOS and IE text size adjust after device orientation change, + * 1. set default font family to sans-serif. + * 2. prevent ios and ie text size adjust after device orientation change, * without disabling user zoom. */ @@ -13,21 +13,21 @@ html { } /** - * Remove default margin. + * remove default margin. */ body { margin: 0; } -/* HTML5 display definitions +/* html5 display definitions ========================================================================== */ /** - * Correct `block` display not defined for any HTML5 element in IE 8/9. - * Correct `block` display not defined for `details` or `summary` in IE 10/11 - * and Firefox. - * Correct `block` display not defined for `main` in IE 11. + * correct `block` display not defined for any html5 element in ie 8/9. + * correct `block` display not defined for `details` or `summary` in ie 10/11 + * and firefox. + * correct `block` display not defined for `main` in ie 11. */ article, @@ -47,21 +47,21 @@ summary { } /** - * 1. Correct `inline-block` display not defined in IE 8/9. - * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + * 1. correct `inline-block` display not defined in ie 8/9. + * 2. normalize vertical alignment of `progress` in chrome, firefox, and opera. */ audio, canvas, progress, video { - display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ + display: inline-block; /* 1 */ } /** - * Prevent modern browsers from displaying `audio` without controls. - * Remove excess height in iOS 5 devices. + * prevent modern browsers from displaying `audio` without controls. + * remove excess height in ios 5 devices. */ audio:not([controls]) { @@ -70,8 +70,8 @@ audio:not([controls]) { } /** - * Address `[hidden]` styling not present in IE 8/9/10. - * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22. + * address `[hidden]` styling not present in ie 8/9/10. + * hide the `template` element in ie 8/9/10/11, safari, and firefox < 22. */ [hidden], @@ -79,11 +79,11 @@ template { display: none; } -/* Links +/* links ========================================================================== */ /** - * Remove the gray background color from active links in IE 10. + * remove the gray background color from active links in ie 10. */ a { @@ -91,7 +91,7 @@ a { } /** - * Improve readability of focused elements when they are also in an + * improve readability of focused elements when they are also in an * active/hover state. */ @@ -100,11 +100,11 @@ a:hover { outline: 0; } -/* Text-level semantics +/* text-level semantics ========================================================================== */ /** - * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + * address styling not present in ie 8/9/10/11, safari, and chrome. */ abbr[title] { @@ -112,7 +112,7 @@ abbr[title] { } /** - * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + * address style set to `bolder` in firefox 4+, safari, and chrome. */ b, @@ -121,7 +121,7 @@ strong { } /** - * Address styling not present in Safari and Chrome. + * address styling not present in safari and chrome. */ dfn { @@ -129,8 +129,8 @@ dfn { } /** - * Address variable `h1` font-size and margin within `section` and `article` - * contexts in Firefox 4+, Safari, and Chrome. + * address variable `h1` font-size and margin within `section` and `article` + * contexts in firefox 4+, safari, and chrome. */ h1 { @@ -139,16 +139,16 @@ h1 { } /** - * Address styling not present in IE 8/9. + * address styling not present in ie 8/9. */ mark { - background: #ff0; - color: #000; + background: #ffff00; + color: #000000; } /** - * Address inconsistent and variable font size in all browsers. + * address inconsistent and variable font size in all browsers. */ small { @@ -156,15 +156,15 @@ small { } /** - * Prevent `sub` and `sup` affecting `line-height` in all browsers. + * prevent `sub` and `sup` affecting `line-height` in all browsers. */ sub, sup { font-size: 75%; line-height: 0; - position: relative; vertical-align: baseline; + position: relative; } sup { @@ -175,11 +175,11 @@ sub { bottom: -0.25em; } -/* Embedded content +/* embedded content ========================================================================== */ /** - * Remove border when inside `a` element in IE 8/9/10. + * remove border when inside `a` element in ie 8/9/10. */ img { @@ -187,18 +187,18 @@ img { } /** - * Correct overflow not hidden in IE 9/10/11. + * correct overflow not hidden in ie 9/10/11. */ svg:not(:root) { overflow: hidden; } -/* Grouping content +/* grouping content ========================================================================== */ /** - * Address margin not present in IE 8/9 and Safari. + * address margin not present in ie 8/9 and safari. */ figure { @@ -206,7 +206,7 @@ figure { } /** - * Address differences between Firefox and other browsers. + * address differences between firefox and other browsers. */ hr { @@ -215,7 +215,7 @@ hr { } /** - * Contain overflow in all browsers. + * contain overflow in all browsers. */ pre { @@ -223,7 +223,7 @@ pre { } /** - * Address odd `em`-unit font size rendering in all browsers. + * address odd `em`-unit font size rendering in all browsers. */ code, @@ -234,19 +234,19 @@ samp { font-size: 1em; } -/* Forms +/* forms ========================================================================== */ /** - * Known limitation: by default, Chrome and Safari on OS X allow very limited + * known limitation: by default, chrome and safari on os x allow very limited * styling of `select`, unless a `border` property is set. */ /** - * 1. Correct color not being inherited. - * Known issue: affects color of disabled elements. - * 2. Correct font properties not being inherited. - * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + * 1. correct color not being inherited. + * known issue: affects color of disabled elements. + * 2. correct font properties not being inherited. + * 3. address margins set differently in firefox 4+, safari, and chrome. */ button, @@ -254,13 +254,13 @@ input, optgroup, select, textarea { - color: inherit; /* 1 */ font: inherit; /* 2 */ + color: inherit; /* 1 */ margin: 0; /* 3 */ } /** - * Address `overflow` set to `hidden` in IE 8/9/10/11. + * address `overflow` set to `hidden` in ie 8/9/10/11. */ button { @@ -268,10 +268,10 @@ button { } /** - * Address inconsistent `text-transform` inheritance for `button` and `select`. - * All other form control elements do not inherit `text-transform` values. - * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. - * Correct `select` style inheritance in Firefox. + * address inconsistent `text-transform` inheritance for `button` and `select`. + * all other form control elements do not inherit `text-transform` values. + * correct `button` style inheritance in firefox, ie 8/9/10/11, and opera. + * correct `select` style inheritance in firefox. */ button, @@ -280,23 +280,23 @@ select { } /** - * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * 1. avoid the webkit bug in android 4.0.* where (2) destroys native `audio` * and `video` controls. - * 2. Correct inability to style clickable `input` types in iOS. - * 3. Improve usability and consistency of cursor style between image-type + * 2. correct inability to style clickable `input` types in ios. + * 3. improve usability and consistency of cursor style between image-type * `input` and others. */ button, -html input[type="button"], /* 1 */ -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; /* 2 */ +html input[type='button'], +input[type='reset'], +input[type='submit'] { cursor: pointer; /* 3 */ + -webkit-appearance: button; /* 2 */ } /** - * Re-set default cursor for disabled elements. + * re-set default cursor for disabled elements. */ button[disabled], @@ -305,72 +305,72 @@ html input[disabled] { } /** - * Remove inner padding and border in Firefox 4+. + * address firefox 4+ setting `line-height` on `input` using `!important` in + * the ua stylesheet. */ -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; +input { + line-height: normal; } /** - * Address Firefox 4+ setting `line-height` on `input` using `!important` in - * the UA stylesheet. + * remove inner padding and border in firefox 4+. */ -input { - line-height: normal; +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; } /** - * It's recommended that you don't attempt to style these elements. - * Firefox's implementation doesn't respect box-sizing, padding, or width. + * it's recommended that you don't attempt to style these elements. + * firefox's implementation doesn't respect box-sizing, padding, or width. * - * 1. Address box sizing set to `content-box` in IE 8/9/10. - * 2. Remove excess padding in IE 8/9/10. + * 1. address box sizing set to `content-box` in ie 8/9/10. + * 2. remove excess padding in ie 8/9/10. */ -input[type="checkbox"], -input[type="radio"] { +input[type='checkbox'], +input[type='radio'] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } /** - * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * fix the cursor style for chrome's increment/decrement buttons. for certain * `font-size` values of the `input`, it causes the cursor style of the * decrement button to change from `default` to `text`. */ -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { +input[type='number']::-webkit-inner-spin-button, +input[type='number']::-webkit-outer-spin-button { height: auto; } /** - * 1. Address `appearance` set to `searchfield` in Safari and Chrome. - * 2. Address `box-sizing` set to `border-box` in Safari and Chrome. + * 1. address `appearance` set to `searchfield` in safari and chrome. + * 2. address `box-sizing` set to `border-box` in safari and chrome. */ -input[type="search"] { - -webkit-appearance: textfield; /* 1 */ +input[type='search'] { box-sizing: content-box; /* 2 */ + -webkit-appearance: textfield; /* 1 */ } /** - * Remove inner padding and search cancel button in Safari and Chrome on OS X. - * Safari (but not Chrome) clips the cancel button when the search input has + * remove inner padding and search cancel button in safari and chrome on os x. + * safari (but not chrome) clips the cancel button when the search input has * padding (and `textfield` appearance). */ -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { +input[type='search']::-webkit-search-cancel-button, +input[type='search']::-webkit-search-decoration { -webkit-appearance: none; } /** - * Define consistent border, margin, and padding. + * define consistent border, margin, and padding. */ fieldset { @@ -380,8 +380,8 @@ fieldset { } /** - * 1. Correct `color` not being inherited in IE 8/9/10/11. - * 2. Remove padding so people aren't caught out if they zero out fieldsets. + * 1. correct `color` not being inherited in ie 8/9/10/11. + * 2. remove padding so people aren't caught out if they zero out fieldsets. */ legend { @@ -390,7 +390,7 @@ legend { } /** - * Remove default vertical scrollbar in IE 8/9/10/11. + * remove default vertical scrollbar in ie 8/9/10/11. */ textarea { @@ -398,19 +398,19 @@ textarea { } /** - * Don't inherit the `font-weight` (applied by a rule above). - * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + * don't inherit the `font-weight` (applied by a rule above). + * note: the default cannot safely be changed in chrome and safari on os x. */ optgroup { font-weight: bold; } -/* Tables +/* tables ========================================================================== */ /** - * Remove most spacing between table cells. + * remove most spacing between table cells. */ table { diff --git a/phpBB/styles/prosilver/theme/plupload.css b/phpBB/styles/prosilver/theme/plupload.css index f466803964f..d4019a2a3a0 100644 --- a/phpBB/styles/prosilver/theme/plupload.css +++ b/phpBB/styles/prosilver/theme/plupload.css @@ -16,8 +16,8 @@ } .attach-comment .inputbox { - resize: vertical; width: 100%; + resize: vertical; } .attach-filesize { @@ -28,7 +28,8 @@ width: 5%; } -.attach-filesize, .attach-status { +.attach-filesize, +.attach-status { text-align: center; } @@ -42,24 +43,25 @@ } .file-total-progress { - height: 2px; - display: block; position: relative; + display: block; + height: 2px; margin: 4px -10px -6px -10px; } .file-progress { - background-color: #CCCCCC; - display:inline-block; - height: 8px; + background-color: #cccccc; + display: inline-block; width: 50px; + height: 8px; } -.file-progress-bar, .file-total-progress-bar { - background-color: green; +.file-progress-bar, +.file-total-progress-bar { + background-color: #008000; display: block; - height: 100%; width: 0; + height: 100%; } .file-status.file-working { @@ -76,11 +78,11 @@ .file-status { display: inline-block; - height: 16px; width: 16px; + height: 16px; } .file-name { - max-width: 65%; vertical-align: bottom; + max-width: 65%; } diff --git a/phpBB/styles/prosilver/theme/print.css b/phpBB/styles/prosilver/theme/print.css index a3295ac367b..599a6c7fe83 100644 --- a/phpBB/styles/prosilver/theme/print.css +++ b/phpBB/styles/prosilver/theme/print.css @@ -6,20 +6,39 @@ /* General markup styles */ * { - padding: 0; margin: 0; + padding: 0; } body { font: 11pt Verdana, Arial, Helvetica, sans-serif; - color:#000000; + color: #000000; +} + +a:link { + text-decoration: none; + color: #000000; } -a:link { color: #000000; text-decoration: none; } -a:visited { color: #000000; text-decoration: none; } -a:active { color: #000000; text-decoration: none; } +a:visited { + text-decoration: none; + color: #000000; +} + +a:active { + text-decoration: none; + color: #000000; +} + +img, +.noprint, +.navbar, +.box1, +.divider, +.signature { + display: none; +} -img, .noprint, .navbar, .box1, .divider, .signature { display: none; } /* Display smilies (Bug #47265) */ .content img { display: inline; @@ -30,50 +49,80 @@ img, .noprint, .navbar, .box1, .divider, .signature { display: none; } margin: 0 2em; } -p { font-size: 85%; } -.copyright { font-size: 75%; } -.page-number { float:right; width: auto; text-align: right; font-size: 75%; } +p { + font-size: 85%; +} -h1, h2, h3, h1 a, h2 a, h3 a { - font-family: "Trebuchet MS",georgia,Verdana,Sans-serif; - color: #000000; - background: none; - text-decoration: none; +.copyright { + font-size: 75%; +} + +.page-number { + font-size: 75%; + text-align: right; + float: right; + width: auto; +} + +h1, +h2, +h3, +h1 a, +h2 a, +h3 a { + font-family: 'Trebuchet MS', georgia, Verdana, sans-serif; font-weight: bold; + text-decoration: none; + background: none; + color: #000000; } -h1 { font-size: 20pt; } -h2 { font-size: 16pt; margin-top: 1em; } -h3 { font-size: 14pt; margin-top: 1em; } +h1 { + font-size: 20pt; +} + +h2 { + font-size: 16pt; + margin-top: 1em; +} + +h3 { + font-size: 14pt; + margin-top: 1em; +} .content { + font-family: 'Lucida Grande', 'Trebuchet MS', Verdana, Arial, Helvetica, sans-serif; font-size: 11pt; line-height: 14pt; - margin-bottom: 1em; - font-family: "Lucida Grande", "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; overflow: hidden; + margin-bottom: 1em; } /* CSS2 Print tip from: http://www.alistapart.com/articles/goingtoprint/ */ -.postbody a:link, .postbody a:visited, .postbody a:hover, .postbody a:active { +.postbody a:link, +.postbody a:visited, +.postbody a:hover, +.postbody a:active { + font-size: 100%; text-decoration: underline; - padding: 0.1em 0.2em; - margin: -0.1em -0.2em; - color: #666; background: none; - font-size: 100%; + color: #666666; + margin: -0.1em -0.2em; + padding: 0.1em 0.2em; } -html>body .postbody a:link:after, html>body .postbody a:visited:after { - content: " (" attr(href) ") "; +html > body .postbody a:link:after, +html > body .postbody a:visited:after { font-size: 90%; text-decoration: none; + content: ' (' attr(href) ') '; } hr { - height: 1px; background-color: #999999; border-width: 0; + height: 1px; } .author { @@ -84,56 +133,82 @@ hr { .date { font-family: Verdana, Arial, Helvetica, sans-serif; - float: right; - position: relative; - text-align: right; font-size: 75%; + text-align: right; + position: relative; + float: right; } /* Dont want to print url for names or titles in content area */ -.postbody .author a:link, .postbody .author a:visited, -html>body .postbody .author a:link:after, -html>body .postbody .author a:visited:after, -.postquote .quote-by a:link, .postquote .quote-by a:visited, -html>body .postquote .quote-by a:link:after, -html>body .postquote .quote-by a:visited:after, -html>body .postbody h1 a:link:after, html>body .postbody h2 a:link:after { +.postbody .author a:link, +.postbody .author a:visited, +html > body .postbody .author a:link:after, +html > body .postbody .author a:visited:after, +.postquote .quote-by a:link, +.postquote .quote-by a:visited, +html > body .postquote .quote-by a:link:after, +html > body .postquote .quote-by a:visited:after, +html > body .postbody h1 a:link:after, +html > body .postbody h2 a:link:after { text-decoration: none; - content: ""; + content: ''; } /* Poster profile */ -.postprofile { display: none; } -.grip-show { display:none; } +.postprofile { + display: none; +} + +.grip-show { + display: none; +} /* Quote */ -.postquote, blockquote { +.postquote, +blockquote { font-size: 85%; - margin: 1em 18% 1em 4%; - padding: 0.5em; - position: relative; line-height: 1.5em; border: 1px #999999 solid; + position: relative; + margin: 1em 18% 1em 4%; + padding: 0.5em; +} + +.postquote img { + display: none; } -.postquote img { display: none; } -.postquote span { display: block; } -.postquote span .postquote { font-size: 100%; } -.quote-by, blockquote cite { - color: black; - display : block; +.postquote span { + display: block; +} + +.postquote span .postquote { + font-size: 100%; +} + +.quote-by, +blockquote cite { font-weight: bold; + color: #000000; + display: block; } /* List */ -ol, ul { - margin-left: 15pt +ol, +ul { + margin-left: 15pt; } /* Misc page elements */ -div.spacer { clear: both; } +div.spacer { + clear: both; +} /* Accessibility tweaks: Mozilla.org */ -.skip_link { display: none; } +.skip_link { + display: none; +} -.codebox p { display: none; } +.codebox p { + display: none; +} diff --git a/phpBB/styles/prosilver/theme/responsive.css b/phpBB/styles/prosilver/theme/responsive.css index d71fd142e6a..6c5c503d162 100644 --- a/phpBB/styles/prosilver/theme/responsive.css +++ b/phpBB/styles/prosilver/theme/responsive.css @@ -2,13 +2,15 @@ ---------------------------------------- */ @media (max-width: 320px) { - select, .inputbox { + select, + .inputbox { max-width: 240px; } } /* Notifications list ----------------------------------------*/ + @media (max-width: 350px) { .dropdown-extended .dropdown-contents { width: auto; @@ -25,16 +27,16 @@ } .action-bar .search-box .inputbox ::-moz-placeholder { - content: "Search..."; - } + content: 'Search...'; + } - .action-bar .search-box .inputbox :-ms-input-placeholder { - content: "Search..."; - } + .action-bar .search-box .inputbox :-ms-input-placeholder { + content: 'Search...'; + } - .action-bar .search-box .inputbox ::-webkit-input-placeholder { - content: "Search..."; - } + .action-bar .search-box .inputbox ::-webkit-input-placeholder { + content: 'Search...'; + } } @media (max-width: 500px) { @@ -42,7 +44,8 @@ white-space: normal; } - select, .inputbox { + select, + .inputbox { max-width: 260px; } @@ -54,10 +57,11 @@ width: 100%; } - dl.details dt, dl.details dd { - width: auto; - float: none; + dl.details dt, + dl.details dd { text-align: left; + float: none; + width: auto; } dl.details dd { @@ -65,20 +69,20 @@ } p.responsive-center { - float: none; text-align: center; + float: none; margin-bottom: 5px; } .action-bar > div { margin-bottom: 5px; - } + } .action-bar > .pagination { + text-align: center; float: none; clear: both; padding-bottom: 1px; - text-align: center; } .action-bar > .pagination li.page-jump { @@ -95,8 +99,8 @@ } .attach-controls { - margin-top: 5px; width: 100%; + margin-top: 5px; } .quick-links .dropdown-trigger span { @@ -119,11 +123,21 @@ } @media (max-width: 700px) { - .responsive-hide { display: none !important; } - .responsive-show { display: block !important; } - .responsive-show-inline { display: inline !important; } - .responsive-show-inline-block { display: inline-block !important; } + .responsive-hide { + display: none !important; + } + .responsive-show { + display: block !important; + } + + .responsive-show-inline { + display: inline !important; + } + + .responsive-show-inline-block { + display: inline-block !important; + } /* Content wrappers ----------------------------------------*/ html { @@ -137,29 +151,35 @@ .wrap { border: none; border-radius: 0; - margin: 0; min-width: 290px; + margin: 0; padding: 0 5px; } - /* Common block wrappers ----------------------------------------*/ - .headerbar, .navbar, .forabg, .forumbg, .post, .panel { + .headerbar, + .navbar, + .forabg, + .forumbg, + .post, + .panel { border-radius: 0; - margin-left: -5px; margin-right: -5px; + margin-left: -5px; } - .cp-main .forabg, .cp-main .forumdb, .cp-main .post, .cp-main .panel { + .cp-main .forabg, + .cp-main .forumdb, + .cp-main .post, + .cp-main .panel { border-radius: 7px; } - /* Logo block ----------------------------------------*/ .site-description { + text-align: center; float: none; width: auto; - text-align: center; } .logo { @@ -169,40 +189,42 @@ padding: 10px; } - .site-description h1, .site-description p { + .site-description h1, + .site-description p { + line-height: 1.2em; text-align: inherit; + text-overflow: ellipsis; float: none; - margin: 5px; - line-height: 1.2em; overflow: hidden; - text-overflow: ellipsis; + margin: 5px; } - .site-description p, .search-header { + .site-description p, + .search-header { display: none; } - /* Navigation ----------------------------------------*/ .headerbar + .navbar { margin-top: -5px; } - /* Search ----------------------------------------*/ - .responsive-search { display: block !important; } - + .responsive-search { + display: block !important; + } /* .topiclist lists ----------------------------------------*/ li.header dt { + font-size: 1.2em; + line-height: 1em; text-align: center; text-transform: none; - line-height: 1em; - font-size: 1.2em; padding-bottom: 4px; } - ul.topiclist li.header dt, ul.topiclist li.header dt .list-inner { + ul.topiclist li.header dt, + ul.topiclist li.header dt .list-inner { margin-right: 0 !important; padding-right: 0; } @@ -211,10 +233,14 @@ display: none !important; } - ul.topiclist dt, ul.topiclist dt .list-inner, - ul.topiclist.missing-column dt, ul.topiclist.missing-column dt .list-inner, - ul.topiclist.two-long-columns dt, ul.topiclist.two-long-columns dt .list-inner, - ul.topiclist.two-columns dt, ul.topiclist.two-columns dt .list-inner { + ul.topiclist dt, + ul.topiclist dt .list-inner, + ul.topiclist.missing-column dt, + ul.topiclist.missing-column dt .list-inner, + ul.topiclist.two-long-columns dt, + ul.topiclist.two-long-columns dt .list-inner, + ul.topiclist.two-columns dt, + ul.topiclist.two-columns dt .list-inner { margin-right: 0; } @@ -233,10 +259,10 @@ ul.topiclist dd { display: none; } + ul.topiclist dd.mark { display: block; } - /* Forums and topics lists ----------------------------------------*/ ul.topiclist.forums dt { @@ -244,22 +270,23 @@ } ul.topiclist dd.mark { - display: block; + text-align: left; position: absolute; - right: 5px; top: 0; - margin: 0; + right: 5px; + display: block; width: auto; min-width: 0; - text-align: left; + margin: 0; } - ul.topiclist.forums dd.topics dfn, ul.topiclist.topics dd.posts dfn { + ul.topiclist.forums dd.topics dfn, + ul.topiclist.topics dd.posts dfn { + font-weight: normal; position: relative; left: 0; - width: auto; display: inline; - font-weight: normal; + width: auto; } li.row .responsive-show strong { @@ -268,12 +295,11 @@ } ul.topiclist li.row dt a.subforum { + text-overflow: ellipsis; vertical-align: bottom; overflow: hidden; - text-overflow: ellipsis; max-width: 100px; } - /* Pagination ----------------------------------------*/ .pagination > ul { @@ -288,21 +314,25 @@ .row .pagination .ellipsis + li { display: none !important; } - /* Responsive tables ----------------------------------------*/ - table.responsive, table.responsive tbody, table.responsive tr, table.responsive td { + table.responsive, + table.responsive tbody, + table.responsive tr, + table.responsive td { display: block; } - table.responsive thead, table.responsive th { + table.responsive thead, + table.responsive th { display: none; } - table.responsive.show-header thead, table.responsive.show-header th:first-child { + table.responsive.show-header thead, + table.responsive.show-header th:first-child { + text-align: left !important; display: block; width: auto !important; - text-align: left !important; } table.responsive.show-header th:first-child span.rank-img { @@ -314,8 +344,8 @@ } table.responsive td { - width: auto !important; text-align: left !important; + width: auto !important; padding: 4px; } @@ -328,8 +358,8 @@ } table.responsive td > dfn:after { - content: ':'; padding-right: 5px; + content: ':'; } table.responsive span.rank-img { @@ -337,25 +367,29 @@ padding-right: 5px; } - table.responsive.memberlist td:first-child input[type="checkbox"] { + table.responsive.memberlist td:first-child input[type='checkbox'] { float: right; } - /* Forms ----------------------------------------*/ - fieldset dt, fieldset.fields1 dt, fieldset.fields2 dt { - width: auto; + fieldset dt, + fieldset.fields1 dt, + fieldset.fields2 dt { float: none; + width: auto; } - fieldset dd, fieldset.fields1 dd, fieldset.fields2 dd { + fieldset dd, + fieldset.fields1 dd, + fieldset.fields2 dd { margin-left: 20px; } - textarea, dd textarea, .message-box textarea { - width: 100%; - -moz-box-sizing: border-box; + textarea, + dd textarea, + .message-box textarea { box-sizing: border-box; + width: 100%; } dl.pmlist dt { @@ -372,7 +406,8 @@ padding-left: 20px; } - .smiley-box, .message-box { + .smiley-box, + .message-box { float: none; width: auto; } @@ -385,7 +420,9 @@ display: none; } - .colour-palette, .colour-palette tbody, .colour-palette tr { + .colour-palette, + .colour-palette tbody, + .colour-palette tr { display: block; } @@ -394,14 +431,15 @@ margin-right: 2px; } - .horizontal-palette td:nth-child(2n), .vertical-palette tr:nth-child(2n) { + .horizontal-palette td:nth-child(2n), + .vertical-palette tr:nth-child(2n) { display: none; } fieldset.quick-login label { + white-space: normal; display: block; margin-bottom: 5px; - white-space: normal; } fieldset.quick-login label > span { @@ -415,19 +453,19 @@ margin-left: 20px; } - fieldset.quick-login label[for="autologin"] { - display: inline-block; + fieldset.quick-login label[for='autologin'] { text-align: right; + display: inline-block; min-width: 50%; } - /* User profile ----------------------------------------*/ - .column1, .column2, .left-box.profile-details { + .column1, + .column2, + .left-box.profile-details { float: none; width: auto; } - /* Polls ----------------------------------------*/ fieldset.polls dt { @@ -442,46 +480,50 @@ width: 20%; } - fieldset.polls dd.resultbar, fieldset.polls dd.poll_option_percent { + fieldset.polls dd.resultbar, + fieldset.polls dd.poll_option_percent { margin-top: 5px; } - /* Post ----------------------------------------*/ .postbody { position: inherit; } - .postprofile, .postbody, .search .postbody { + .postprofile, + .postbody, + .search .postbody { display: block; - width: auto; float: none; - padding: 0; + width: auto; min-height: 0; + padding: 0; } .post .postprofile { + border-width: 0 0 1px; + overflow: hidden; width: auto; - border-width: 0 0 1px 0; - padding-bottom: 5px; + min-height: 40px; margin: 0; margin-bottom: 5px; - min-height: 40px; - overflow: hidden; + padding-bottom: 5px; } .postprofile dd { display: none; } - .postprofile dt, .postprofile dd.profile-rank, .search .postprofile dd { + .postprofile dt, + .postprofile dd.profile-rank, + .search .postprofile dd { display: block; margin: 0; } .postprofile .has-avatar .avatar-container { - margin: 0; overflow: inherit; + margin: 0; } .postprofile .avatar-container:after { @@ -499,28 +541,27 @@ } .has-profile .postbody h3 { - margin-left: 0 !important; margin-right: 0 !important; + margin-left: 0 !important; } .has-profile .post-buttons { - right: 30px; top: 15px; + right: 30px; } .online { background-size: 40px; } - /* Misc stuff ----------------------------------------*/ h2 { - margin-top: .5em; + margin-top: 0.5em; } p { - margin-bottom: .5em; overflow: hidden; + margin-bottom: 0.5em; } p.rightside { @@ -558,15 +599,21 @@ } @media (min-width: 700px) { - .postbody { width: 70%; } + .postbody { + width: 70%; + } } @media (min-width: 850px) { - .postbody { width: 76%; } + .postbody { + width: 76%; + } } @media (max-width: 850px) { - .postprofile { width: 28%; } + .postprofile { + width: 28%; + } } @media (min-width: 701px) and (max-width: 950px) { @@ -576,15 +623,16 @@ } ul.topiclist dt { - margin-right: -410px; + margin-right: -410px; } ul.topiclist dt .list-inner { - margin-right: 410px; + margin-right: 410px; } - dd.posts, dd.topics, dd.views { - width: 80px; + dd.posts, + dd.topics, + dd.views { + width: 80px; } } - diff --git a/phpBB/styles/prosilver/theme/stylesheet.css b/phpBB/styles/prosilver/theme/stylesheet.css index f235f6030ec..a5973576e57 100644 --- a/phpBB/styles/prosilver/theme/stylesheet.css +++ b/phpBB/styles/prosilver/theme/stylesheet.css @@ -7,15 +7,15 @@ -------------------------------------------------------------- */ -@import url("normalize.css"); -@import url("base.css"); -@import url("utilities.css"); -@import url("common.css"); -@import url("links.css"); -@import url("content.css"); -@import url("buttons.css"); -@import url("cp.css"); -@import url("forms.css"); -@import url("icons.css"); -@import url("colours.css"); -@import url("responsive.css"); +@import url('normalize.css'); +@import url('base.css'); +@import url('utilities.css'); +@import url('common.css'); +@import url('links.css'); +@import url('content.css'); +@import url('buttons.css'); +@import url('cp.css'); +@import url('forms.css'); +@import url('icons.css'); +@import url('colours.css'); +@import url('responsive.css'); diff --git a/phpBB/styles/prosilver/theme/tweaks.css b/phpBB/styles/prosilver/theme/tweaks.css index ba82551f851..19c830b1f16 100644 --- a/phpBB/styles/prosilver/theme/tweaks.css +++ b/phpBB/styles/prosilver/theme/tweaks.css @@ -2,38 +2,50 @@ These style definitions are IE 8 & 9 only. They are required due to the poor CSS support in IE browsers. -------------------------------------------------------------------------------*/ +----------------------------------------------------------------------------- */ /* IE 8 Tweaks (value)\9 equates to IE <= 8 -------------------------------------------------------------------------------*/ +----------------------------------------------------------------------------- */ /* Clear float fix */ -.inner, ul.linklist { zoom: 1\9; } +.inner, +ul.linklist { + zoom: 1\9; +} /* Align checkboxes/radio buttons nicely */ -dd label input { vertical-align: text-bottom\9; } +dd label input { + vertical-align: text-bottom\9; +} /* Fixes header-avatar aspect-ratio */ -.header-avatar img { height: 20px\9; } +.header-avatar img { + height: 20px\9; +} /* IE8 often can't handle max-width in %, so we use px instead */ -.postprofile .avatar img { max-width: 150px\9; } +.postprofile .avatar img { + max-width: 150px\9; +} /* IE 9 Tweaks -------------------------------------------------------------------------------*/ +----------------------------------------------------------------------------- */ /* Border-radius bleed fix in IE9 */ -.search-header, .search-header .inputbox, .search-header a.button { +.search-header, +.search-header .inputbox, +.search-header a.button { border-radius: 0; } -.headerbar, .forumbg { - background-image: url("./images/bg_header.gif"); +.headerbar, +.forumbg { + background-image: url('./images/bg_header.gif'); } .forabg { - background-image: url("./images/bg_list.gif"); + background-image: url('./images/bg_list.gif'); } .tabs .tab > a { diff --git a/phpBB/styles/prosilver/theme/utilities.css b/phpBB/styles/prosilver/theme/utilities.css index cbb8127d1c2..3b003c887e2 100644 --- a/phpBB/styles/prosilver/theme/utilities.css +++ b/phpBB/styles/prosilver/theme/utilities.css @@ -3,24 +3,24 @@ -------------------------------------------------------------- */ .sr-only { + border: 0; position: absolute; + overflow: hidden; + clip: rect(0, 0, 0, 0); width: 1px; height: 1px; margin: -1px; padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; } .sr-only-focusable:active, .sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; + position: static; + overflow: visible; + clip: auto; + width: auto; + height: auto; + margin: 0; } .clearfix:before, @@ -31,36 +31,55 @@ .container-fluid:after, .row:before, .row:after { - content: " "; display: table; + content: ' '; } + .clearfix:after, .container:after, .container-fluid:after, -.row:after { clear: both } +.row:after { + clear: both; +} .center-block { display: block; - margin-left: auto; margin-right: auto; + margin-left: auto; } -.pull-right { float: right !important } -.pull-left { float: left !important } -.hide { display: none !important } -.show { display: block !important } -.invisible { visibility: hidden } +.pull-right { + float: right !important; +} + +.pull-left { + float: left !important; +} + +.hide { + display: none !important; +} + +.show { + display: block !important; +} + +.invisible { + visibility: hidden; +} .text-hide { font: 0/0 a; - color: transparent; - text-shadow: none; background-color: transparent; border: 0; + color: transparent; + text-shadow: none; } .hidden { - display: none ; + display: none; } -.affix { position: fixed } +.affix { + position: fixed; +} From 9dcd206ab3d30ac175835a2829bf3e2a7c2817fd Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 24 Nov 2016 13:03:25 +0100 Subject: [PATCH 029/431] [ticket/14865] Standardize comments a little PHPBB3-14865 --- phpBB/styles/prosilver/theme/base.css | 4 +- phpBB/styles/prosilver/theme/bidi.css | 5 +- phpBB/styles/prosilver/theme/buttons.css | 5 +- phpBB/styles/prosilver/theme/colours.css | 136 ++++++++------------ phpBB/styles/prosilver/theme/common.css | 5 +- phpBB/styles/prosilver/theme/content.css | 5 +- phpBB/styles/prosilver/theme/cp.css | 5 +- phpBB/styles/prosilver/theme/forms.css | 5 +- phpBB/styles/prosilver/theme/icons.css | 4 +- phpBB/styles/prosilver/theme/links.css | 5 +- phpBB/styles/prosilver/theme/plupload.css | 4 + phpBB/styles/prosilver/theme/print.css | 5 +- phpBB/styles/prosilver/theme/responsive.css | 5 +- phpBB/styles/prosilver/theme/tweaks.css | 15 ++- phpBB/styles/prosilver/theme/utilities.css | 4 +- 15 files changed, 97 insertions(+), 115 deletions(-) diff --git a/phpBB/styles/prosilver/theme/base.css b/phpBB/styles/prosilver/theme/base.css index 570a0ad01f8..5b64943704a 100644 --- a/phpBB/styles/prosilver/theme/base.css +++ b/phpBB/styles/prosilver/theme/base.css @@ -1,6 +1,6 @@ -/* -------------------------------------------------------------- +/* -------------------------------------------------------------- /* $Base --------------------------------------------------------------- */ +/* -------------------------------------------------------------- */ /** { -webkit-box-sizing: border-box; diff --git a/phpBB/styles/prosilver/theme/bidi.css b/phpBB/styles/prosilver/theme/bidi.css index a8dc84fc62b..bbf3cb9cdb4 100644 --- a/phpBB/styles/prosilver/theme/bidi.css +++ b/phpBB/styles/prosilver/theme/bidi.css @@ -1,5 +1,6 @@ -/* RTL definitions ----------------------------------------- */ +/* -------------------------------------------------------------- /* + $Bidi +/* -------------------------------------------------------------- */ /** * common.css diff --git a/phpBB/styles/prosilver/theme/buttons.css b/phpBB/styles/prosilver/theme/buttons.css index b4f98f3eaae..2c7e4ba2da8 100644 --- a/phpBB/styles/prosilver/theme/buttons.css +++ b/phpBB/styles/prosilver/theme/buttons.css @@ -1,5 +1,6 @@ -/* Button Styles ----------------------------------------- */ +/* -------------------------------------------------------------- /* + $Buttons +/* -------------------------------------------------------------- */ .button { font-family: 'Open Sans', 'Droid Sans', Verdana, Arial, Helvetica; diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index 207bdfdd24b..4b33c2e71f1 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -1,8 +1,12 @@ -/* --------------------------------------------------------------- -colours and backgrounds for common.css --------------------------------------------------------------- */ - +/* -------------------------------------------------------------- /* + $Colours +/* -------------------------------------------------------------- */ +/* stylelint-disable selector-max-compound-selectors */ +/* stylelint-disable selector-no-qualifying-type */ +/* stylelint-disable no-indistinguishable-colors */ + +/* colours and backgrounds for common.css + ------------------------------------------------------------- */ html, body { background-color: #f5f7fa; @@ -27,11 +31,8 @@ hr { border-top-color: #cccccc; } -/* --------------------------------------------------------------- -colours and backgrounds for links.css --------------------------------------------------------------- */ - +/* colours and backgrounds for links.css + ------------------------------------------------------------- */ a { color: #105289; } @@ -90,8 +91,7 @@ th a:hover { color: #368ad2; } -/* round cornered boxes and backgrounds ----------------------------------------- */ +/* round cornered boxes and backgrounds */ .wrap { background-color: #ffffff; border-color: #e6e9ed; @@ -165,15 +165,13 @@ ul.zebra-list li:nth-child(even) { background-image: url('./images/site_logo.gif'); } -/* horizontal lists ----------------------------------------- */ +/* horizontal lists */ ul.navlinks { border-top-color: #ffffff; } -/* table styles ----------------------------------------- */ +/* table styles */ table.table1 thead th { color: #ffffff; } @@ -206,8 +204,7 @@ table.info tbody th { color: #000000; } -/* misc layout styles ----------------------------------------- */ +/* misc layout styles */ dl.details dt { color: #000000; } @@ -220,8 +217,7 @@ dl.details dd { color: #1198d9; } -/* icon styles ----------------------------------------- */ +/* icon styles */ .icon.icon-blue, a:hover .icon.icon-blue { color: #196db5; @@ -303,8 +299,7 @@ a:hover .icon.icon-black { background-color: #f1f8ff; } -/* miscellaneous styles ----------------------------------------- */ +/* miscellaneous styles */ .copyright { color: #555555; @@ -337,10 +332,8 @@ p.post-notice { background-image: none; } -/* --------------------------------------------------------------- -colours and backgrounds for content.css --------------------------------------------------------------- */ +/* colours and backgrounds for content.css + ------------------------------------------------------------- */ ul.forums { background-color: #eef5f9; /* old browsers */ /* ff3.6+ */ @@ -388,14 +381,12 @@ li.header dd { color: #ffffff; } -/* post body styles ----------------------------------------- */ +/* post body styles */ .postbody { color: #333333; } -/* content container styles ----------------------------------------- */ +/* content container styles */ .content { color: #333333; } @@ -430,8 +421,7 @@ dl.faq dt { border-top-color: #cccccc; } -/* bb code styles ----------------------------------------- */ +/* bb code styles */ /* quote block */ blockquote { @@ -492,8 +482,7 @@ blockquote blockquote blockquote { color: #dd0000; } -/* attachments ----------------------------------------- */ +/* attachments */ .attachbox { background-color: #ffffff; border-color: #c9d2d8; @@ -542,8 +531,7 @@ dl.thumbnail dt a:hover img { border-color: #368ad2; } -/* post poll styles ----------------------------------------- */ +/* post poll styles */ fieldset.polls dl { border-top-color: #dcdee2; @@ -616,8 +604,7 @@ fieldset.polls dd div { border-left-color: #d11a4e; } -/* poster profile block ----------------------------------------- */ +/* poster profile block */ .postprofile { border-color: #ffffff; color: #666666; @@ -639,10 +626,8 @@ dd.profile-warnings { color: #bc2a4d; } -/* --------------------------------------------------------------- -colours and backgrounds for buttons.css --------------------------------------------------------------- */ +/* colours and backgrounds for buttons.css + ------------------------------------------------------------- */ .button { background-color: #e9e9e9; /* old browsers */ /* ff3.6+ */ background-image: linear-gradient(to bottom, #ffffff 0%, #e9e9e9 100%); /* w3c */ @@ -695,8 +680,7 @@ colours and backgrounds for buttons.css background-color: #f2f6f9; } -/* pagination ----------------------------------------- */ +/* pagination */ .pagination li a { background: #ecedee; @@ -731,8 +715,7 @@ colours and backgrounds for buttons.css filter: none; } -/* search box ---------------------------------------------- */ +/* search box */ .search-box .inputbox, .search-box .inputbox:hover, @@ -744,8 +727,7 @@ colours and backgrounds for buttons.css box-shadow: 0 0 10px #0075b0; } -/* icon images ----------------------------------------- */ +/* icon images */ .contact-icon { background-image: url('./images/icons_contact.png'); @@ -984,13 +966,10 @@ colours and backgrounds for buttons.css } -/* --------------------------------------------------------------- -colours and backgrounds for cp.css --------------------------------------------------------------- */ +/* colours and backgrounds for cp.css + ------------------------------------------------------------- */ -/* main cp box ----------------------------------------- */ +/* main cp box */ .panel-container h3, .panel-container hr, @@ -1022,8 +1001,7 @@ ul.cplist { border-color: #dbdee2; } -/* cp tabbed menu ----------------------------------------- */ +/* cp tabbed menu */ .tabs .tab > a { background: #baccd9; color: #536482; @@ -1048,8 +1026,7 @@ ul.cplist { color: #000000; } -/* mini tabbed menu used in mcp ----------------------------------------- */ +/* mini tabbed menu used in mcp */ .minitabs .tab > a { background-color: #e1ebf2; } @@ -1060,8 +1037,7 @@ ul.cplist { color: #333333; } -/* responsive tabs ----------------------------------------- */ +/* responsive tabs */ .responsive-tab .responsive-tab-link:before { border-color: #536482; } @@ -1070,8 +1046,7 @@ ul.cplist { border-color: #d31141; } -/* ucp navigation menu ----------------------------------------- */ +/* ucp navigation menu */ /* link styles for the sub-section links */ .navigation a { @@ -1111,8 +1086,11 @@ ul.cplist { } } -/* preferences pane layout ----------------------------------------- */ +/* stylelint-disable selector-max-compound-selectors */ +/* stylelint-disable selector-no-qualifying-type */ +/* stylelint-disable no-indistinguishable-colors */ + +/* preferences pane layout */ .panel-container h2 { color: #333333; } @@ -1134,8 +1112,7 @@ dl.mini dt { color: #425067; } -/* pm styles ----------------------------------------- */ +/* pm styles */ /* pm message history */ .current { @@ -1179,13 +1156,10 @@ dl.mini dt { background-color: #eeeeee; } -/* --------------------------------------------------------------- -colours and backgrounds for forms.css --------------------------------------------------------------- */ +/* colours and backgrounds for forms.css + ------------------------------------------------------------- */ -/* general form styles ----------------------------------------- */ +/* general form styles */ select { background-color: #fafafa; border-color: #666666; @@ -1200,8 +1174,7 @@ option.disabled-option { color: graytext; } -/* definition list layout for forms ----------------------------------------- */ +/* definition list layout for forms */ dd label { color: #333333; } @@ -1224,8 +1197,7 @@ fieldset.quick-login input.inputbox { background-color: #f2f3f3; } -/* posting page styles ----------------------------------------- */ +/* posting page styles */ .message-box textarea { color: #333333; @@ -1239,8 +1211,7 @@ fieldset.quick-login input.inputbox { outline-color: rgba(17, 163, 234, 0.5); } -/* input field styles ----------------------------------------- */ +/* input field styles */ .inputbox { background-color: #ffffff; border-color: #b4bac0; @@ -1272,8 +1243,7 @@ fieldset.quick-login input.inputbox { } -/* form button styles ----------------------------------------- */ +/* form button styles */ a.button1, input.button1, @@ -1333,8 +1303,7 @@ input.disabled { color: #666666; } -/* jquery popups ----------------------------------------- */ +/* jquery popups */ .phpbb_alert { background-color: #ffffff; border-color: #999999; @@ -1406,8 +1375,7 @@ input.disabled { border-color: #dcdcdc; } -/* notifications ----------------------------------------- */ +/* notifications */ .notification_list p.notification-time { color: #4c5d77; diff --git a/phpBB/styles/prosilver/theme/common.css b/phpBB/styles/prosilver/theme/common.css index 3597550b5da..18173436418 100644 --- a/phpBB/styles/prosilver/theme/common.css +++ b/phpBB/styles/prosilver/theme/common.css @@ -1,5 +1,6 @@ -/* General Markup Styles ----------------------------------------- */ +/* -------------------------------------------------------------- /* + $Common +/* -------------------------------------------------------------- */ html { font-size: 100%; diff --git a/phpBB/styles/prosilver/theme/content.css b/phpBB/styles/prosilver/theme/content.css index 6c6b09d13cc..066da392cab 100644 --- a/phpBB/styles/prosilver/theme/content.css +++ b/phpBB/styles/prosilver/theme/content.css @@ -1,5 +1,6 @@ -/* Content Styles ----------------------------------------- */ +/* -------------------------------------------------------------- /* + $Content +/* -------------------------------------------------------------- */ ul.topiclist { display: block; diff --git a/phpBB/styles/prosilver/theme/cp.css b/phpBB/styles/prosilver/theme/cp.css index 48aa8f561c6..a8dc8c3cf65 100644 --- a/phpBB/styles/prosilver/theme/cp.css +++ b/phpBB/styles/prosilver/theme/cp.css @@ -1,5 +1,6 @@ -/* Control Panel Styles ----------------------------------------- */ +/* -------------------------------------------------------------- /* + $Contorl Panel +/* -------------------------------------------------------------- */ /* Main CP box diff --git a/phpBB/styles/prosilver/theme/forms.css b/phpBB/styles/prosilver/theme/forms.css index 6fcdec33a20..2448c5f532d 100644 --- a/phpBB/styles/prosilver/theme/forms.css +++ b/phpBB/styles/prosilver/theme/forms.css @@ -1,5 +1,6 @@ -/* Form Styles ----------------------------------------- */ +/* -------------------------------------------------------------- /* + $Forms +/* -------------------------------------------------------------- */ /* General form styles ---------------------------------------- */ diff --git a/phpBB/styles/prosilver/theme/icons.css b/phpBB/styles/prosilver/theme/icons.css index 86e51b1087d..1d0c8acb2e9 100644 --- a/phpBB/styles/prosilver/theme/icons.css +++ b/phpBB/styles/prosilver/theme/icons.css @@ -1,6 +1,6 @@ -/* -------------------------------------------------------------- +/* -------------------------------------------------------------- /* $Icons --------------------------------------------------------------- */ +/* -------------------------------------------------------------- */ /* Global module setup ---------------------------------------- */ diff --git a/phpBB/styles/prosilver/theme/links.css b/phpBB/styles/prosilver/theme/links.css index eeb8102fd13..3ea4b3fed40 100644 --- a/phpBB/styles/prosilver/theme/links.css +++ b/phpBB/styles/prosilver/theme/links.css @@ -1,5 +1,6 @@ -/* Link Styles ----------------------------------------- */ +/* -------------------------------------------------------------- /* + $Links +/* -------------------------------------------------------------- */ /* Links adjustment to correctly display an order of rtl/ltr mixed content */ a { diff --git a/phpBB/styles/prosilver/theme/plupload.css b/phpBB/styles/prosilver/theme/plupload.css index d4019a2a3a0..2ec396e682a 100644 --- a/phpBB/styles/prosilver/theme/plupload.css +++ b/phpBB/styles/prosilver/theme/plupload.css @@ -1,3 +1,7 @@ +/* -------------------------------------------------------------- /* + $Plupload +/* -------------------------------------------------------------- */ + .attach-panel-multi { display: none; margin-bottom: 1em; diff --git a/phpBB/styles/prosilver/theme/print.css b/phpBB/styles/prosilver/theme/print.css index 599a6c7fe83..b65903392fb 100644 --- a/phpBB/styles/prosilver/theme/print.css +++ b/phpBB/styles/prosilver/theme/print.css @@ -1,5 +1,6 @@ -/* Print Style Sheet ----------------------------------------- */ +/* -------------------------------------------------------------- /* + $Print +/* -------------------------------------------------------------- */ /* Lots still TODO here! */ diff --git a/phpBB/styles/prosilver/theme/responsive.css b/phpBB/styles/prosilver/theme/responsive.css index 6c5c503d162..13742a61fb3 100644 --- a/phpBB/styles/prosilver/theme/responsive.css +++ b/phpBB/styles/prosilver/theme/responsive.css @@ -1,5 +1,6 @@ -/* Responsive Design ----------------------------------------- */ +/* -------------------------------------------------------------- /* + $Responsive +/* -------------------------------------------------------------- */ @media (max-width: 320px) { select, diff --git a/phpBB/styles/prosilver/theme/tweaks.css b/phpBB/styles/prosilver/theme/tweaks.css index 19c830b1f16..e0515f10f2f 100644 --- a/phpBB/styles/prosilver/theme/tweaks.css +++ b/phpBB/styles/prosilver/theme/tweaks.css @@ -1,11 +1,12 @@ -/* Style Sheet Tweaks - -These style definitions are IE 8 & 9 only. -They are required due to the poor CSS support in IE browsers. ------------------------------------------------------------------------------ */ +/* -------------------------------------------------------------- /* + $Base +/* -------------------------------------------------------------- /* + These style definitions are IE 8 & 9 only. + They are required due to the poor CSS support in IE browsers. +/* -------------------------------------------------------------- */ /* IE 8 Tweaks (value)\9 equates to IE <= 8 ------------------------------------------------------------------------------ */ +----------------------------------------------------------------- */ /* Clear float fix */ .inner, @@ -30,7 +31,7 @@ dd label input { /* IE 9 Tweaks ------------------------------------------------------------------------------ */ +----------------------------------------------------------------- */ /* Border-radius bleed fix in IE9 */ .search-header, diff --git a/phpBB/styles/prosilver/theme/utilities.css b/phpBB/styles/prosilver/theme/utilities.css index 3b003c887e2..bcee77cec5c 100644 --- a/phpBB/styles/prosilver/theme/utilities.css +++ b/phpBB/styles/prosilver/theme/utilities.css @@ -1,6 +1,6 @@ -/* -------------------------------------------------------------- +/* -------------------------------------------------------------- /* $Utilities --------------------------------------------------------------- */ +/* -------------------------------------------------------------- */ .sr-only { border: 0; From 7c85e16c401ae610d7df72b37507a73bad0f8c65 Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 24 Nov 2016 13:04:05 +0100 Subject: [PATCH 030/431] [ticket/14865] Mask remaining issues with bidi PHPBB3-14865 --- phpBB/styles/prosilver/theme/bidi.css | 3 +++ 1 file changed, 3 insertions(+) diff --git a/phpBB/styles/prosilver/theme/bidi.css b/phpBB/styles/prosilver/theme/bidi.css index bbf3cb9cdb4..75b7cb4fab5 100644 --- a/phpBB/styles/prosilver/theme/bidi.css +++ b/phpBB/styles/prosilver/theme/bidi.css @@ -1,6 +1,8 @@ /* -------------------------------------------------------------- /* $Bidi /* -------------------------------------------------------------- */ +/* stylelint-disable selector-max-compound-selectors */ +/* stylelint-disable selector-no-qualifying-type */ /** * common.css @@ -1125,3 +1127,4 @@ li.breadcrumbs span:first-child > a { margin-right: 0; } } +/* stylelint-enable */ From c5fa60cd7895d9dbf97f3dd2a1cadaa3fe019cbc Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 24 Nov 2016 13:04:31 +0100 Subject: [PATCH 031/431] [ticket/14865] Mask remaining issue with buttons PHPBB3-14865 --- phpBB/styles/prosilver/theme/buttons.css | 3 +++ 1 file changed, 3 insertions(+) diff --git a/phpBB/styles/prosilver/theme/buttons.css b/phpBB/styles/prosilver/theme/buttons.css index 2c7e4ba2da8..0a6619b4994 100644 --- a/phpBB/styles/prosilver/theme/buttons.css +++ b/phpBB/styles/prosilver/theme/buttons.css @@ -176,9 +176,12 @@ button::-moz-focus-inner { padding: 0 0 0 18px; } + +/* stylelint-disable selector-no-qualifying-type */ ul.linklist.bulletin > li.small-icon:before { display: none; } +/* stylelint-enable */ .dropdown .small-icon > a { display: block; From 80e5f6f18795e65c70f850ca3318287b7eabfae3 Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 24 Nov 2016 13:05:07 +0100 Subject: [PATCH 032/431] [ticket/14865] Remove duplicate code from colours PHPBB3-14865 --- phpBB/styles/prosilver/theme/colours.css | 4 ---- 1 file changed, 4 deletions(-) diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index 4b33c2e71f1..f20297a60e0 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -664,10 +664,6 @@ dd.profile-warnings { border-color: #c7c3bf; } -.caret { - border-color: #dadada; -} - .caret { border-color: #c7c3bf; } From e69f9e58472c592e03be50d6a98e6f320fc92f27 Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 24 Nov 2016 13:05:30 +0100 Subject: [PATCH 033/431] [ticket/14865] Mask remaining issues with colours PHPBB3-14865 --- phpBB/styles/prosilver/theme/colours.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index f20297a60e0..1918680c601 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -1076,10 +1076,12 @@ ul.cplist { /* This ID needs factored out */ @media only screen and (max-width: 900px), only screen and (max-device-width: 900px) { + /* stylelint-disable selector-no-id */ #navigation a, .rtl #navigation a { background: #b2c2cf; } + /* stylelint-enable */ } /* stylelint-disable selector-max-compound-selectors */ @@ -1386,3 +1388,5 @@ li.notification-disapproved strong { background-color: #D31141; color: #ffffff; } +/* stylelint-enable */ + From 30d3d5c696e174c5d666428367d8448d84f4468e Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 24 Nov 2016 13:06:12 +0100 Subject: [PATCH 034/431] [ticket/14865] Remove duplicate code from common PHPBB3-14865 --- phpBB/styles/prosilver/theme/common.css | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/phpBB/styles/prosilver/theme/common.css b/phpBB/styles/prosilver/theme/common.css index 18173436418..6ebc3e8566b 100644 --- a/phpBB/styles/prosilver/theme/common.css +++ b/phpBB/styles/prosilver/theme/common.css @@ -503,10 +503,6 @@ ul.linklist.bulletin > li.no-bulletin:before { border-top: 1px solid transparent; } -.jumpbox .dropdown-select { - margin: 0; -} - .jumpbox .dropdown-contents { text-decoration: none; padding: 0; @@ -532,19 +528,10 @@ ul.linklist.bulletin > li.no-bulletin:before { width: 20px; } -.dropdown-contents a { - display: block; - padding: 5px; -} - .jumpbox .dropdown-select { margin: 0; } -.jumpbox .dropdown-contents a { - text-decoration: none; -} - .dropdown li { font-size: 1em !important; line-height: normal !important; From abcc7efff1c6705caca55d45ac51e7b0e2e69df7 Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 24 Nov 2016 13:06:32 +0100 Subject: [PATCH 035/431] [ticket/14865] Mask remaining issues with common PHPBB3-14865 --- phpBB/styles/prosilver/theme/common.css | 3 +++ 1 file changed, 3 insertions(+) diff --git a/phpBB/styles/prosilver/theme/common.css b/phpBB/styles/prosilver/theme/common.css index 6ebc3e8566b..5c97c0571a8 100644 --- a/phpBB/styles/prosilver/theme/common.css +++ b/phpBB/styles/prosilver/theme/common.css @@ -1,6 +1,9 @@ /* -------------------------------------------------------------- /* $Common /* -------------------------------------------------------------- */ +/* stylelint-disable selector-max-compound-selectors */ +/* stylelint-disable selector-no-qualifying-type */ + html { font-size: 100%; From cc258f09eb96a8cb2446e7eb70649ded18dbedf8 Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 24 Nov 2016 13:10:16 +0100 Subject: [PATCH 036/431] [ticket/14865] Move colors from content to colours PHPBB3-14865 --- phpBB/styles/prosilver/theme/colours.css | 22 ++++++++++++++++++++++ phpBB/styles/prosilver/theme/content.css | 2 -- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index 1918680c601..10ed275a9a6 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -626,6 +626,28 @@ dd.profile-warnings { color: #bc2a4d; } +/* Show scrollbars for items with overflow on iOS devices +---------------------------------------- */ +.postbody .content::-webkit-scrollbar, +.topicreview::-webkit-scrollbar, +.post_details::-webkit-scrollbar, +.codebox code::-webkit-scrollbar, +.attachbox dd::-webkit-scrollbar, +.attach-image::-webkit-scrollbar, +.dropdown-extended ul::-webkit-scrollbar { + background: rgba(0, 0, 0, 0.1); +} + +.postbody .content::-webkit-scrollbar-thumb, +.topicreview::-webkit-scrollbar-thumb, +.post_details::-webkit-scrollbar-thumb, +.codebox code::-webkit-scrollbar-thumb, +.attachbox dd::-webkit-scrollbar-thumb, +.attach-image::-webkit-scrollbar-thumb, +.dropdown-extended ul::-webkit-scrollbar-thumb { + background: rgba(0, 0, 0, 0.3); +} + /* colours and backgrounds for buttons.css ------------------------------------------------------------- */ .button { diff --git a/phpBB/styles/prosilver/theme/content.css b/phpBB/styles/prosilver/theme/content.css index 066da392cab..e17eca5f352 100644 --- a/phpBB/styles/prosilver/theme/content.css +++ b/phpBB/styles/prosilver/theme/content.css @@ -863,7 +863,6 @@ table.fixed-width-table { .attachbox dd::-webkit-scrollbar, .attach-image::-webkit-scrollbar, .dropdown-extended ul::-webkit-scrollbar { - background: rgba(0, 0, 0, 0.1); border-radius: 3px; width: 8px; height: 8px; @@ -877,7 +876,6 @@ table.fixed-width-table { .attachbox dd::-webkit-scrollbar-thumb, .attach-image::-webkit-scrollbar-thumb, .dropdown-extended ul::-webkit-scrollbar-thumb { - background: rgba(0, 0, 0, 0.3); border-radius: 3px; } From 507428e5dc618d37d9c91e77c0954568fadea3ad Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 24 Nov 2016 13:10:45 +0100 Subject: [PATCH 037/431] [ticket/14865] Mask remaining issues with contnet PHPBB3-14865 --- phpBB/styles/prosilver/theme/content.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/phpBB/styles/prosilver/theme/content.css b/phpBB/styles/prosilver/theme/content.css index e17eca5f352..0fe8e1947e0 100644 --- a/phpBB/styles/prosilver/theme/content.css +++ b/phpBB/styles/prosilver/theme/content.css @@ -1,6 +1,8 @@ /* -------------------------------------------------------------- /* $Content /* -------------------------------------------------------------- */ +/* stylelint-disable selector-max-compound-selectors */ +/* stylelint-disable selector-no-qualifying-type */ ul.topiclist { display: block; @@ -880,7 +882,9 @@ table.fixed-width-table { } /* Factor out this ID */ +/* stylelint-disable selector-no-id */ #memberlist tr.inactive, #team tr.inactive { font-style: italic; } +/* stylelint-enable */ From 628005e730ddfcbcb9315cf4697f93b09cde49d5 Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 24 Nov 2016 13:11:47 +0100 Subject: [PATCH 038/431] [ticket/14865] Mask remaining issues with cp PHPBB3-14865 --- phpBB/styles/prosilver/theme/cp.css | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/phpBB/styles/prosilver/theme/cp.css b/phpBB/styles/prosilver/theme/cp.css index a8dc8c3cf65..6abd9823195 100644 --- a/phpBB/styles/prosilver/theme/cp.css +++ b/phpBB/styles/prosilver/theme/cp.css @@ -1,7 +1,8 @@ /* -------------------------------------------------------------- /* $Contorl Panel /* -------------------------------------------------------------- */ - +/* stylelint-disable selector-max-compound-selectors */ +/* stylelint-disable selector-no-qualifying-type */ /* Main CP box ---------------------------------------- */ @@ -389,3 +390,4 @@ ol.def-rules li { border-bottom-right-radius: 5px; } } +/* stylelint-enable */ From 53b82f28f72d65bfb59fcb2a4070ec236cd26e81 Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 24 Nov 2016 13:12:43 +0100 Subject: [PATCH 039/431] [ticket/14865] Mask remaining issues with forms PHPBB3-14865 --- phpBB/styles/prosilver/theme/forms.css | 3 +++ 1 file changed, 3 insertions(+) diff --git a/phpBB/styles/prosilver/theme/forms.css b/phpBB/styles/prosilver/theme/forms.css index 2448c5f532d..f4985f55087 100644 --- a/phpBB/styles/prosilver/theme/forms.css +++ b/phpBB/styles/prosilver/theme/forms.css @@ -1,6 +1,8 @@ /* -------------------------------------------------------------- /* $Forms /* -------------------------------------------------------------- */ +/* stylelint-disable selector-max-compound-selectors */ +/* stylelint-disable selector-no-qualifying-type */ /* General form styles ---------------------------------------- */ @@ -472,3 +474,4 @@ input.search { .tiny { width: 10%; } +/* stylelint-enable */ From 298353146ddaf503454b6e2fb790ff00169e21f7 Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 24 Nov 2016 13:14:42 +0100 Subject: [PATCH 040/431] [ticket/14865] Mask remaining issues with links PHPBB3-14865 --- phpBB/styles/prosilver/theme/links.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/phpBB/styles/prosilver/theme/links.css b/phpBB/styles/prosilver/theme/links.css index 3ea4b3fed40..357bc7d3147 100644 --- a/phpBB/styles/prosilver/theme/links.css +++ b/phpBB/styles/prosilver/theme/links.css @@ -2,6 +2,7 @@ $Links /* -------------------------------------------------------------- */ + /* Links adjustment to correctly display an order of rtl/ltr mixed content */ a { text-decoration: none; @@ -33,6 +34,8 @@ th a:hover { text-decoration: underline; } +/* stylelint-disable selector-no-qualifying-type */ + /* Notification mark read link */ .dropdown-extended a.mark_read { background-position: center center; @@ -194,3 +197,4 @@ a.feed-icon-forum { a.anchor { display: block; } +/* stylelint-enable */ From fc056cf717e7b12444d7ee546a6d892273a03ff2 Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 24 Nov 2016 13:16:49 +0100 Subject: [PATCH 041/431] [ticket/14865] Remove spacer overqualified div PHPBB3-14865 --- phpBB/styles/prosilver/theme/print.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/styles/prosilver/theme/print.css b/phpBB/styles/prosilver/theme/print.css index b65903392fb..7a40466c6dd 100644 --- a/phpBB/styles/prosilver/theme/print.css +++ b/phpBB/styles/prosilver/theme/print.css @@ -201,7 +201,7 @@ ul { } /* Misc page elements */ -div.spacer { +.spacer { clear: both; } From 6010bc298ea317f35932cdbbce26aae601b19d37 Mon Sep 17 00:00:00 2001 From: hanakin Date: Fri, 25 Nov 2016 00:24:52 +0100 Subject: [PATCH 042/431] [ticket/14865] Mask remaining issues with tweaks PHPBB3-14865 --- phpBB/styles/prosilver/theme/tweaks.css | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/phpBB/styles/prosilver/theme/tweaks.css b/phpBB/styles/prosilver/theme/tweaks.css index e0515f10f2f..db629c19f58 100644 --- a/phpBB/styles/prosilver/theme/tweaks.css +++ b/phpBB/styles/prosilver/theme/tweaks.css @@ -1,9 +1,12 @@ /* -------------------------------------------------------------- /* - $Base + $Tweaks /* -------------------------------------------------------------- /* These style definitions are IE 8 & 9 only. They are required due to the poor CSS support in IE browsers. /* -------------------------------------------------------------- */ +/* stylelint-disable selector-max-compound-selectors */ +/* stylelint-disable selector-no-qualifying-type */ + /* IE 8 Tweaks (value)\9 equates to IE <= 8 ----------------------------------------------------------------- */ @@ -52,3 +55,4 @@ dd label input { .tabs .tab > a { border-radius: 0; } +/* stylelint-enable */ From 154552dfa4959b4514e5077f40507943609ce389 Mon Sep 17 00:00:00 2001 From: hanakin Date: Fri, 25 Nov 2016 00:25:41 +0100 Subject: [PATCH 043/431] [ticket/14865] Fix comments in responsive PHPBB3-14865 --- phpBB/styles/prosilver/theme/responsive.css | 45 +++++++++++++-------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/phpBB/styles/prosilver/theme/responsive.css b/phpBB/styles/prosilver/theme/responsive.css index 13742a61fb3..868a35318ad 100644 --- a/phpBB/styles/prosilver/theme/responsive.css +++ b/phpBB/styles/prosilver/theme/responsive.css @@ -10,7 +10,7 @@ } /* Notifications list -----------------------------------------*/ +---------------------------------------------------------------- */ @media (max-width: 350px) { .dropdown-extended .dropdown-contents { @@ -139,8 +139,9 @@ .responsive-show-inline-block { display: inline-block !important; } + /* Content wrappers - ----------------------------------------*/ + ---------------------------------------------------------------- */ html { height: auto; } @@ -156,8 +157,9 @@ margin: 0; padding: 0 5px; } + /* Common block wrappers - ----------------------------------------*/ + ---------------------------------------------------------------- */ .headerbar, .navbar, .forabg, @@ -175,8 +177,9 @@ .cp-main .panel { border-radius: 7px; } + /* Logo block - ----------------------------------------*/ + ---------------------------------------------------------------- */ .site-description { text-align: center; float: none; @@ -204,18 +207,21 @@ .search-header { display: none; } + /* Navigation - ----------------------------------------*/ + ---------------------------------------------------------------- */ .headerbar + .navbar { margin-top: -5px; } + /* Search - ----------------------------------------*/ + ---------------------------------------------------------------- */ .responsive-search { display: block !important; } - /* .topiclist lists - ----------------------------------------*/ + + /* Forums and topicslists + ---------------------------------------------------------------- */ li.header dt { font-size: 1.2em; line-height: 1em; @@ -264,8 +270,6 @@ ul.topiclist dd.mark { display: block; } - /* Forums and topics lists - ----------------------------------------*/ ul.topiclist.forums dt { margin-right: -250px; } @@ -301,8 +305,9 @@ overflow: hidden; max-width: 100px; } + /* Pagination - ----------------------------------------*/ + ---------------------------------------------------------------- */ .pagination > ul { margin: 5px 0 0; } @@ -315,8 +320,9 @@ .row .pagination .ellipsis + li { display: none !important; } + /* Responsive tables - ----------------------------------------*/ + ---------------------------------------------------------------- */ table.responsive, table.responsive tbody, table.responsive tr, @@ -371,8 +377,9 @@ table.responsive.memberlist td:first-child input[type='checkbox'] { float: right; } + /* Forms - ----------------------------------------*/ + ---------------------------------------------------------------- */ fieldset dt, fieldset.fields1 dt, fieldset.fields2 dt { @@ -459,16 +466,18 @@ display: inline-block; min-width: 50%; } + /* User profile - ----------------------------------------*/ + ---------------------------------------------------------------- */ .column1, .column2, .left-box.profile-details { float: none; width: auto; } + /* Polls - ----------------------------------------*/ + ---------------------------------------------------------------- */ fieldset.polls dt { width: 90%; } @@ -485,8 +494,9 @@ fieldset.polls dd.poll_option_percent { margin-top: 5px; } + /* Post - ----------------------------------------*/ + ---------------------------------------------------------------- */ .postbody { position: inherit; } @@ -554,8 +564,9 @@ .online { background-size: 40px; } + /* Misc stuff - ----------------------------------------*/ + ---------------------------------------------------------------- */ h2 { margin-top: 0.5em; } From 52ddce75f63a144104e07b34fbb54155124f96ef Mon Sep 17 00:00:00 2001 From: hanakin Date: Fri, 25 Nov 2016 00:26:17 +0100 Subject: [PATCH 044/431] [ticket/14865] Remove duplicate from responsive PHPBB3-14865 --- phpBB/styles/prosilver/theme/responsive.css | 3 --- 1 file changed, 3 deletions(-) diff --git a/phpBB/styles/prosilver/theme/responsive.css b/phpBB/styles/prosilver/theme/responsive.css index 868a35318ad..4fd2d9c5b19 100644 --- a/phpBB/styles/prosilver/theme/responsive.css +++ b/phpBB/styles/prosilver/theme/responsive.css @@ -267,9 +267,6 @@ display: none; } - ul.topiclist dd.mark { - display: block; - } ul.topiclist.forums dt { margin-right: -250px; } From 4d5b955a6188473562e2a42d5f2afd2e9a6d95f8 Mon Sep 17 00:00:00 2001 From: hanakin Date: Fri, 25 Nov 2016 00:26:53 +0100 Subject: [PATCH 045/431] [ticket/18465] Fix badge color PHPBB3-14865 --- phpBB/styles/prosilver/theme/colours.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index 10ed275a9a6..46eaa999b52 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -1407,7 +1407,7 @@ li.notification-disapproved strong { } .badge { - background-color: #D31141; + background-color: #d31141; color: #ffffff; } /* stylelint-enable */ From 58d50129cec217cee9741df5451197ab15ac8561 Mon Sep 17 00:00:00 2001 From: hanakin Date: Fri, 25 Nov 2016 00:27:46 +0100 Subject: [PATCH 046/431] [ticket/14865] Mask remaining issues in responsive PHPBB3-14865 --- phpBB/styles/prosilver/theme/responsive.css | 3 +++ 1 file changed, 3 insertions(+) diff --git a/phpBB/styles/prosilver/theme/responsive.css b/phpBB/styles/prosilver/theme/responsive.css index 4fd2d9c5b19..00344ddfb70 100644 --- a/phpBB/styles/prosilver/theme/responsive.css +++ b/phpBB/styles/prosilver/theme/responsive.css @@ -1,6 +1,8 @@ /* -------------------------------------------------------------- /* $Responsive /* -------------------------------------------------------------- */ +/* stylelint-disable selector-max-compound-selectors */ +/* stylelint-disable selector-no-qualifying-type */ @media (max-width: 320px) { select, @@ -645,3 +647,4 @@ width: 80px; } } +/* stylelint-enable */ From e79e0efc9e832f7f7bf7baddd47b86023f8698a0 Mon Sep 17 00:00:00 2001 From: hanakin Date: Fri, 25 Nov 2016 00:28:09 +0100 Subject: [PATCH 047/431] [ticket/14865] Mask remaining issues with print PHPBB3-14865 --- phpBB/styles/prosilver/theme/print.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/phpBB/styles/prosilver/theme/print.css b/phpBB/styles/prosilver/theme/print.css index 7a40466c6dd..f8fefc21aef 100644 --- a/phpBB/styles/prosilver/theme/print.css +++ b/phpBB/styles/prosilver/theme/print.css @@ -1,7 +1,7 @@ /* -------------------------------------------------------------- /* $Print /* -------------------------------------------------------------- */ - +/* stylelint-disable selector-max-compound-selectors */ /* Lots still TODO here! */ @@ -213,3 +213,4 @@ ul { .codebox p { display: none; } +/* stylelint-enable */ From 82830baa165a859d348ed4034057565edff5f50f Mon Sep 17 00:00:00 2001 From: hanakin Date: Mon, 9 Jan 2017 11:05:44 -0500 Subject: [PATCH 048/431] [ticket/14981] Update nomalize.css to v5.0 PHPBB3-14981 --- phpBB/styles/prosilver/theme/normalize.css | 463 +++++++++++---------- 1 file changed, 252 insertions(+), 211 deletions(-) diff --git a/phpBB/styles/prosilver/theme/normalize.css b/phpBB/styles/prosilver/theme/normalize.css index 084ac119284..16857d54996 100644 --- a/phpBB/styles/prosilver/theme/normalize.css +++ b/phpBB/styles/prosilver/theme/normalize.css @@ -1,424 +1,465 @@ -/*! normalize.css v3.0.3 | mit license | github.com/necolas/normalize.css */ +/* stylelint-disable */ + +/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */ /** - * 1. set default font family to sans-serif. - * 2. prevent ios and ie text size adjust after device orientation change, - * without disabling user zoom. + * 1. Change the default font family in all browsers (opinionated). + * 2. Correct the line height in all browsers. + * 3. Prevent adjustments of font size after orientation changes in + * IE on Windows Phone and in iOS. */ +/* Document + ========================================================================== */ + html { - font-family: sans-serif; /* 1 */ - -ms-text-size-adjust: 100%; /* 2 */ - -webkit-text-size-adjust: 100%; /* 2 */ + font-family: sans-serif; /* 1 */ + line-height: 1.15; /* 2 */ + -ms-text-size-adjust: 100%; /* 3 */ + -webkit-text-size-adjust: 100%; /* 3 */ } +/* Sections + ========================================================================== */ + /** - * remove default margin. + * Remove the margin in all browsers (opinionated). */ body { - margin: 0; + margin: 0; } -/* html5 display definitions - ========================================================================== */ - /** - * correct `block` display not defined for any html5 element in ie 8/9. - * correct `block` display not defined for `details` or `summary` in ie 10/11 - * and firefox. - * correct `block` display not defined for `main` in ie 11. + * Add the correct display in IE 9-. */ article, aside, -details, -figcaption, -figure, footer, header, -hgroup, -main, -menu, nav, -section, -summary { - display: block; +section { + display: block; } /** - * 1. correct `inline-block` display not defined in ie 8/9. - * 2. normalize vertical alignment of `progress` in chrome, firefox, and opera. + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. */ -audio, -canvas, -progress, -video { - vertical-align: baseline; /* 2 */ - display: inline-block; /* 1 */ +h1 { + font-size: 2em; + margin: 0.67em 0; } +/* Grouping content + ========================================================================== */ + /** - * prevent modern browsers from displaying `audio` without controls. - * remove excess height in ios 5 devices. + * Add the correct display in IE 9-. + * 1. Add the correct display in IE. */ -audio:not([controls]) { - display: none; - height: 0; +figcaption, +figure, +main { /* 1 */ + display: block; } /** - * address `[hidden]` styling not present in ie 8/9/10. - * hide the `template` element in ie 8/9/10/11, safari, and firefox < 22. + * Add the correct margin in IE 8. */ -[hidden], -template { - display: none; +figure { + margin: 1em 40px; +} + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ } -/* links - ========================================================================== */ +/* Text-level semantics + ========================================================================== */ /** - * remove the gray background color from active links in ie 10. + * 1. Remove the gray background on active links in IE 10. + * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. */ a { - background-color: transparent; + background-color: transparent; /* 1 */ + -webkit-text-decoration-skip: objects; /* 2 */ } /** - * improve readability of focused elements when they are also in an - * active/hover state. + * Remove the outline on focused links when they are also active or hovered + * in all browsers (opinionated). */ a:active, a:hover { - outline: 0; + outline-width: 0; } -/* text-level semantics - ========================================================================== */ - /** - * address styling not present in ie 8/9/10/11, safari, and chrome. + * 1. Remove the bottom border in Firefox 39-. + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. */ abbr[title] { - border-bottom: 1px dotted; + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ } /** - * address style set to `bolder` in firefox 4+, safari, and chrome. + * Prevent the duplicate application of `bolder` by the next rule in Safari 6. */ b, strong { - font-weight: bold; + font-weight: inherit; } /** - * address styling not present in safari and chrome. + * Add the correct font weight in Chrome, Edge, and Safari. */ -dfn { - font-style: italic; +b, +strong { + font-weight: bolder; } /** - * address variable `h1` font-size and margin within `section` and `article` - * contexts in firefox 4+, safari, and chrome. + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. */ -h1 { - font-size: 2em; - margin: 0.67em 0; +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ } /** - * address styling not present in ie 8/9. + * Add the correct font style in Android 4.3-. + */ + +dfn { + font-style: italic; +} + +/** + * Add the correct background and color in IE 9-. */ mark { - background: #ffff00; - color: #000000; + background-color: #ff0; + color: #000; } /** - * address inconsistent and variable font size in all browsers. + * Add the correct font size in all browsers. */ small { - font-size: 80%; + font-size: 80%; } /** - * prevent `sub` and `sup` affecting `line-height` in all browsers. + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. */ sub, sup { - font-size: 75%; - line-height: 0; - vertical-align: baseline; - position: relative; + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } -sup { - top: -0.5em; +sub { + bottom: -0.25em; } -sub { - bottom: -0.25em; +sup { + top: -0.5em; } -/* embedded content - ========================================================================== */ +/* Embedded content + ========================================================================== */ /** - * remove border when inside `a` element in ie 8/9/10. + * Add the correct display in IE 9-. */ -img { - border: 0; +audio, +video { + display: inline-block; } /** - * correct overflow not hidden in ie 9/10/11. + * Add the correct display in iOS 4-7. */ -svg:not(:root) { - overflow: hidden; +audio:not([controls]) { + display: none; + height: 0; } -/* grouping content - ========================================================================== */ - /** - * address margin not present in ie 8/9 and safari. + * Remove the border on images inside links in IE 10-. */ -figure { - margin: 1em 40px; +img { + border-style: none; } /** - * address differences between firefox and other browsers. + * Hide the overflow in IE. */ -hr { - box-sizing: content-box; - height: 0; +svg:not(:root) { + overflow: hidden; } +/* Forms + ========================================================================== */ + /** - * contain overflow in all browsers. + * 1. Change the font styles in all browsers (opinionated). + * 2. Remove the margin in Firefox and Safari. */ -pre { - overflow: auto; +button, +input, +optgroup, +select, +textarea { + font-family: sans-serif; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ } /** - * address odd `em`-unit font size rendering in all browsers. + * Show the overflow in IE. + * 1. Show the overflow in Edge. */ -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; +button, +input { /* 1 */ + overflow: visible; } -/* forms - ========================================================================== */ - /** - * known limitation: by default, chrome and safari on os x allow very limited - * styling of `select`, unless a `border` property is set. + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. */ +button, +select { /* 1 */ + text-transform: none; +} + /** - * 1. correct color not being inherited. - * known issue: affects color of disabled elements. - * 2. correct font properties not being inherited. - * 3. address margins set differently in firefox 4+, safari, and chrome. + * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` + * controls in Android 4. + * 2. Correct the inability to style clickable types in iOS and Safari. */ button, -input, -optgroup, -select, -textarea { - font: inherit; /* 2 */ - color: inherit; /* 1 */ - margin: 0; /* 3 */ +html [type="button"], /* 1 */ +[type="reset"], +[type="submit"] { + -webkit-appearance: button; /* 2 */ } /** - * address `overflow` set to `hidden` in ie 8/9/10/11. + * Remove the inner border and padding in Firefox. */ -button { - overflow: visible; +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; } /** - * address inconsistent `text-transform` inheritance for `button` and `select`. - * all other form control elements do not inherit `text-transform` values. - * correct `button` style inheritance in firefox, ie 8/9/10/11, and opera. - * correct `select` style inheritance in firefox. + * Restore the focus styles unset by the previous rule. */ -button, -select { - text-transform: none; +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; } /** - * 1. avoid the webkit bug in android 4.0.* where (2) destroys native `audio` - * and `video` controls. - * 2. correct inability to style clickable `input` types in ios. - * 3. improve usability and consistency of cursor style between image-type - * `input` and others. + * Change the border, margin, and padding in all browsers (opinionated). */ -button, -html input[type='button'], -input[type='reset'], -input[type='submit'] { - cursor: pointer; /* 3 */ - -webkit-appearance: button; /* 2 */ +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; } /** - * re-set default cursor for disabled elements. + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. */ -button[disabled], -html input[disabled] { - cursor: default; +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ } /** - * address firefox 4+ setting `line-height` on `input` using `!important` in - * the ua stylesheet. + * 1. Add the correct display in IE 9-. + * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. */ -input { - line-height: normal; +progress { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ } /** - * remove inner padding and border in firefox 4+. + * Remove the default vertical scrollbar in IE. */ -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; +textarea { + overflow: auto; } /** - * it's recommended that you don't attempt to style these elements. - * firefox's implementation doesn't respect box-sizing, padding, or width. - * - * 1. address box sizing set to `content-box` in ie 8/9/10. - * 2. remove excess padding in ie 8/9/10. + * 1. Add the correct box sizing in IE 10-. + * 2. Remove the padding in IE 10-. */ -input[type='checkbox'], -input[type='radio'] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ } /** - * fix the cursor style for chrome's increment/decrement buttons. for certain - * `font-size` values of the `input`, it causes the cursor style of the - * decrement button to change from `default` to `text`. + * Correct the cursor style of increment and decrement buttons in Chrome. */ -input[type='number']::-webkit-inner-spin-button, -input[type='number']::-webkit-outer-spin-button { - height: auto; +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; } /** - * 1. address `appearance` set to `searchfield` in safari and chrome. - * 2. address `box-sizing` set to `border-box` in safari and chrome. + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. */ -input[type='search'] { - box-sizing: content-box; /* 2 */ - -webkit-appearance: textfield; /* 1 */ +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ } /** - * remove inner padding and search cancel button in safari and chrome on os x. - * safari (but not chrome) clips the cancel button when the search input has - * padding (and `textfield` appearance). + * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. */ -input[type='search']::-webkit-search-cancel-button, -input[type='search']::-webkit-search-decoration { - -webkit-appearance: none; +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } /** - * define consistent border, margin, and padding. + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. */ -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ } -/** - * 1. correct `color` not being inherited in ie 8/9/10/11. - * 2. remove padding so people aren't caught out if they zero out fieldsets. +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in IE 9-. + * 1. Add the correct display in Edge, IE, and Firefox. */ -legend { - border: 0; /* 1 */ - padding: 0; /* 2 */ +details, /* 1 */ +menu { + display: block; } +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Scripting + ========================================================================== */ + /** - * remove default vertical scrollbar in ie 8/9/10/11. + * Add the correct display in IE 9-. */ -textarea { - overflow: auto; +canvas { + display: inline-block; } /** - * don't inherit the `font-weight` (applied by a rule above). - * note: the default cannot safely be changed in chrome and safari on os x. + * Add the correct display in IE. */ -optgroup { - font-weight: bold; +template { + display: none; } -/* tables - ========================================================================== */ +/* Hidden + ========================================================================== */ /** - * remove most spacing between table cells. + * Add the correct display in IE 10-. */ -table { - border-collapse: collapse; - border-spacing: 0; +[hidden] { + display: none; } -td, -th { - padding: 0; -} +/* stylelint-enable */ From c0b22b380f6e8beafd5b3a4a476cb1529a48f607 Mon Sep 17 00:00:00 2001 From: hanakin Date: Fri, 17 Feb 2017 14:23:14 -0500 Subject: [PATCH 049/431] [ticket/14204] Add new classes PHPBB3-14204 --- .../prosilver/template/captcha_default.html | 2 +- .../prosilver/template/confirm_body.html | 8 +++--- .../template/confirm_delete_body.html | 8 +++--- .../prosilver/template/display_options.html | 4 +-- .../styles/prosilver/template/index_body.html | 2 +- .../styles/prosilver/template/login_body.html | 4 +-- .../prosilver/template/login_body_oauth.html | 2 +- .../prosilver/template/login_forum.html | 2 +- .../prosilver/template/mcp_approve.html | 8 +++--- phpBB/styles/prosilver/template/mcp_ban.html | 8 +++--- .../styles/prosilver/template/mcp_forum.html | 2 +- .../styles/prosilver/template/mcp_front.html | 4 +-- phpBB/styles/prosilver/template/mcp_logs.html | 6 ++--- phpBB/styles/prosilver/template/mcp_move.html | 8 +++--- .../prosilver/template/mcp_notes_front.html | 4 +-- .../prosilver/template/mcp_notes_user.html | 10 +++---- phpBB/styles/prosilver/template/mcp_post.html | 26 +++++++++---------- .../styles/prosilver/template/mcp_queue.html | 10 +++---- .../prosilver/template/mcp_reports.html | 6 ++--- .../styles/prosilver/template/mcp_topic.html | 4 +-- .../prosilver/template/mcp_warn_front.html | 4 +-- .../prosilver/template/mcp_warn_post.html | 4 +-- .../prosilver/template/mcp_warn_user.html | 4 +-- .../prosilver/template/memberlist_body.html | 4 +-- .../prosilver/template/memberlist_email.html | 2 +- .../prosilver/template/memberlist_im.html | 2 +- .../prosilver/template/memberlist_search.html | 4 +-- .../prosilver/template/memberlist_view.html | 2 +- .../styles/prosilver/template/pagination.html | 2 +- .../template/posting_attach_body.html | 12 ++++----- .../prosilver/template/posting_editor.html | 8 +++--- .../prosilver/template/posting_layout.html | 2 +- .../prosilver/template/posting_pm_header.html | 12 ++++----- .../prosilver/template/quickreply_editor.html | 4 +-- .../prosilver/template/report_body.html | 4 +-- .../prosilver/template/search_body.html | 4 +-- .../prosilver/template/timezone_option.html | 2 +- .../prosilver/template/ucp_agreement.html | 8 +++--- .../prosilver/template/ucp_attachments.html | 2 +- .../template/ucp_auth_link_oauth.html | 4 +-- .../template/ucp_avatar_options.html | 4 +-- .../template/ucp_avatar_options_local.html | 2 +- .../prosilver/template/ucp_groups_manage.html | 8 +++--- .../template/ucp_groups_membership.html | 4 +-- .../styles/prosilver/template/ucp_header.html | 4 +-- .../prosilver/template/ucp_login_link.html | 4 +-- .../template/ucp_main_bookmarks.html | 2 +- .../prosilver/template/ucp_main_drafts.html | 6 ++--- .../template/ucp_main_subscribed.html | 2 +- .../prosilver/template/ucp_notifications.html | 2 +- .../prosilver/template/ucp_pm_options.html | 24 ++++++++--------- .../prosilver/template/ucp_pm_viewfolder.html | 8 +++--- .../template/ucp_pm_viewmessage.html | 4 +-- .../template/ucp_prefs_personal.html | 4 +-- .../prosilver/template/ucp_prefs_post.html | 4 +-- .../prosilver/template/ucp_prefs_view.html | 4 +-- .../template/ucp_profile_autologin_keys.html | 2 +- .../template/ucp_profile_profile_info.html | 4 +-- .../template/ucp_profile_reg_details.html | 4 +-- .../template/ucp_profile_signature.html | 6 ++--- .../prosilver/template/ucp_register.html | 4 +-- .../styles/prosilver/template/ucp_remind.html | 2 +- .../styles/prosilver/template/ucp_resend.html | 2 +- .../prosilver/template/ucp_zebra_foes.html | 4 +-- .../prosilver/template/ucp_zebra_friends.html | 4 +-- .../prosilver/template/viewforum_body.html | 2 +- .../prosilver/template/viewtopic_body.html | 10 +++---- 67 files changed, 174 insertions(+), 174 deletions(-) diff --git a/phpBB/styles/prosilver/template/captcha_default.html b/phpBB/styles/prosilver/template/captcha_default.html index 02899bcafdf..6df124b443c 100644 --- a/phpBB/styles/prosilver/template/captcha_default.html +++ b/phpBB/styles/prosilver/template/captcha_default.html @@ -12,7 +12,7 @@

{L_CONFIRMATION}

{L_CONFIRM_CODE}
- +
{L_CONFIRM_CODE_EXPLAIN}
diff --git a/phpBB/styles/prosilver/template/confirm_body.html b/phpBB/styles/prosilver/template/confirm_body.html index aaea5cfd05e..180ccaac592 100644 --- a/phpBB/styles/prosilver/template/confirm_body.html +++ b/phpBB/styles/prosilver/template/confirm_body.html @@ -4,8 +4,8 @@

{MESSAGE_TITLE}

{MESSAGE_TEXT}

-   - +   +
@@ -22,8 +22,8 @@

{MESSAGE_TITLE}

{S_HIDDEN_FIELDS} -   - +   +
diff --git a/phpBB/styles/prosilver/template/confirm_delete_body.html b/phpBB/styles/prosilver/template/confirm_delete_body.html index 98974963c04..ecf96d49333 100644 --- a/phpBB/styles/prosilver/template/confirm_delete_body.html +++ b/phpBB/styles/prosilver/template/confirm_delete_body.html @@ -18,8 +18,8 @@
-   - +   +
@@ -58,8 +58,8 @@

{MESSAGE_TITLE}

{S_HIDDEN_FIELDS} -   - +   +
diff --git a/phpBB/styles/prosilver/template/display_options.html b/phpBB/styles/prosilver/template/display_options.html index d1ec3dcef1d..3c82f6e199a 100644 --- a/phpBB/styles/prosilver/template/display_options.html +++ b/phpBB/styles/prosilver/template/display_options.html @@ -11,7 +11,7 @@
- + @@ -19,7 +19,7 @@
- + diff --git a/phpBB/styles/prosilver/template/index_body.html b/phpBB/styles/prosilver/template/index_body.html index ec5bf354762..2d186aa7668 100644 --- a/phpBB/styles/prosilver/template/index_body.html +++ b/phpBB/styles/prosilver/template/index_body.html @@ -27,7 +27,7 @@

{L_LOGIN_LOGOUT} | - + {S_LOGIN_REDIRECT} diff --git a/phpBB/styles/prosilver/template/login_body.html b/phpBB/styles/prosilver/template/login_body.html index ef080357172..b948d6238ae 100644 --- a/phpBB/styles/prosilver/template/login_body.html +++ b/phpBB/styles/prosilver/template/login_body.html @@ -35,7 +35,7 @@

{LOGIN_EXPLAIN}{L_ {S_LOGIN_REDIRECT}
 
-
{S_HIDDEN_FIELDS}
+
{S_HIDDEN_FIELDS}
@@ -56,7 +56,7 @@

{L_REGISTER}

{L_LOGIN_INFO}

{L_TERMS_USE} | {L_PRIVACY}


-

{L_REGISTER}

+

{L_REGISTER}

diff --git a/phpBB/styles/prosilver/template/login_body_oauth.html b/phpBB/styles/prosilver/template/login_body_oauth.html index 156485d2119..a6a2e700522 100644 --- a/phpBB/styles/prosilver/template/login_body_oauth.html +++ b/phpBB/styles/prosilver/template/login_body_oauth.html @@ -2,7 +2,7 @@
 
-
{oauth.SERVICE_NAME}
+
{oauth.SERVICE_NAME}
diff --git a/phpBB/styles/prosilver/template/login_forum.html b/phpBB/styles/prosilver/template/login_forum.html index 7fa9736a968..a1239c4349d 100644 --- a/phpBB/styles/prosilver/template/login_forum.html +++ b/phpBB/styles/prosilver/template/login_forum.html @@ -27,7 +27,7 @@

{L_LOGIN}

{S_LOGIN_REDIRECT}
 
-
{S_HIDDEN_FIELDS}
+
{S_HIDDEN_FIELDS}
diff --git a/phpBB/styles/prosilver/template/mcp_approve.html b/phpBB/styles/prosilver/template/mcp_approve.html index f7874ab90b3..2acc4753aba 100644 --- a/phpBB/styles/prosilver/template/mcp_approve.html +++ b/phpBB/styles/prosilver/template/mcp_approve.html @@ -19,8 +19,8 @@

{MESSAGE_TITLE}

-   - +   +
@@ -66,8 +66,8 @@

{MESSAGE_TITLE}

- {S_HIDDEN_FIELDS}  - + {S_HIDDEN_FIELDS}  +
diff --git a/phpBB/styles/prosilver/template/mcp_ban.html b/phpBB/styles/prosilver/template/mcp_ban.html index 5b798d9b6c8..cbee56a4520 100644 --- a/phpBB/styles/prosilver/template/mcp_ban.html +++ b/phpBB/styles/prosilver/template/mcp_ban.html @@ -85,8 +85,8 @@

{L_TITLE}

- {S_HIDDEN_FIELDS}  - + {S_HIDDEN_FIELDS}  + {S_FORM_TOKEN}
@@ -122,8 +122,8 @@

{L_UNBAN_TITLE}

- {S_HIDDEN_FIELDS}  - + {S_HIDDEN_FIELDS}  +
diff --git a/phpBB/styles/prosilver/template/mcp_forum.html b/phpBB/styles/prosilver/template/mcp_forum.html index f6c518e1df4..a41fea82949 100644 --- a/phpBB/styles/prosilver/template/mcp_forum.html +++ b/phpBB/styles/prosilver/template/mcp_forum.html @@ -142,7 +142,7 @@

{L_FORUM}{L_COLON} {FORUM_NAME}

- +
{L_MARK_ALL} :: {L_UNMARK_ALL}
{S_FORM_TOKEN} diff --git a/phpBB/styles/prosilver/template/mcp_front.html b/phpBB/styles/prosilver/template/mcp_front.html index 97775814dbd..d401330d743 100644 --- a/phpBB/styles/prosilver/template/mcp_front.html +++ b/phpBB/styles/prosilver/template/mcp_front.html @@ -53,8 +53,8 @@

{L_LATEST_UNAPPROVED}

{S_HIDDEN_FIELDS} -   - +   +
{L_MARK_ALL} :: {L_UNMARK_ALL}
diff --git a/phpBB/styles/prosilver/template/mcp_logs.html b/phpBB/styles/prosilver/template/mcp_logs.html index 03216b4f387..d693ca0fed2 100644 --- a/phpBB/styles/prosilver/template/mcp_logs.html +++ b/phpBB/styles/prosilver/template/mcp_logs.html @@ -8,7 +8,7 @@

{L_TITLE}

- {L_SEARCH_KEYWORDS}{L_COLON}   + {L_SEARCH_KEYWORDS}{L_COLON}  
-   - +   + {S_FORM_TOKEN}
diff --git a/phpBB/styles/prosilver/template/mcp_notes_user.html b/phpBB/styles/prosilver/template/mcp_notes_user.html index 62d0562a46b..6d318dda977 100644 --- a/phpBB/styles/prosilver/template/mcp_notes_user.html +++ b/phpBB/styles/prosilver/template/mcp_notes_user.html @@ -42,8 +42,8 @@

{L_ADD_FEEDBACK}

- {S_HIDDEN_FIELDS}  - + {S_HIDDEN_FIELDS}  + {S_FORM_TOKEN}
@@ -51,7 +51,7 @@

{L_ADD_FEEDBACK}

- {L_SEARCH_KEYWORDS}{L_COLON}   + {L_SEARCH_KEYWORDS}{L_COLON}  
-   - +   + {S_FORM_TOKEN}
diff --git a/phpBB/styles/prosilver/template/mcp_warn_post.html b/phpBB/styles/prosilver/template/mcp_warn_post.html index 5e394806583..6c5b67f5012 100644 --- a/phpBB/styles/prosilver/template/mcp_warn_post.html +++ b/phpBB/styles/prosilver/template/mcp_warn_post.html @@ -69,8 +69,8 @@

{L_ADD_WARNING}

-   - +   + {S_FORM_TOKEN}
diff --git a/phpBB/styles/prosilver/template/mcp_warn_user.html b/phpBB/styles/prosilver/template/mcp_warn_user.html index f4dbf2819e0..8f7391e7b83 100644 --- a/phpBB/styles/prosilver/template/mcp_warn_user.html +++ b/phpBB/styles/prosilver/template/mcp_warn_user.html @@ -53,8 +53,8 @@

{L_ADD_WARNING}

-   - +   + {S_FORM_TOKEN}
diff --git a/phpBB/styles/prosilver/template/memberlist_body.html b/phpBB/styles/prosilver/template/memberlist_body.html index 255e6746e11..4c47a5d511b 100644 --- a/phpBB/styles/prosilver/template/memberlist_body.html +++ b/phpBB/styles/prosilver/template/memberlist_body.html @@ -125,7 +125,7 @@

{PAGE_TITLE}{L_COLON} - + @@ -139,7 +139,7 @@

{PAGE_TITLE}{L_COLON} - + diff --git a/phpBB/styles/prosilver/template/memberlist_email.html b/phpBB/styles/prosilver/template/memberlist_email.html index eea699da08a..29a886e2a82 100644 --- a/phpBB/styles/prosilver/template/memberlist_email.html +++ b/phpBB/styles/prosilver/template/memberlist_email.html @@ -95,7 +95,7 @@

{L_EMAIL_TOPIC}

- +
diff --git a/phpBB/styles/prosilver/template/memberlist_im.html b/phpBB/styles/prosilver/template/memberlist_im.html index 874607d9135..f91454aacb7 100644 --- a/phpBB/styles/prosilver/template/memberlist_im.html +++ b/phpBB/styles/prosilver/template/memberlist_im.html @@ -26,7 +26,7 @@

{L_SEND_IM}

 
-
+
diff --git a/phpBB/styles/prosilver/template/memberlist_search.html b/phpBB/styles/prosilver/template/memberlist_search.html index b1c7a81709f..ecdb9fa2810 100644 --- a/phpBB/styles/prosilver/template/memberlist_search.html +++ b/phpBB/styles/prosilver/template/memberlist_search.html @@ -76,8 +76,8 @@

{L_FIND_USERNAME}


-   - +   + {S_FORM_TOKEN}
diff --git a/phpBB/styles/prosilver/template/memberlist_view.html b/phpBB/styles/prosilver/template/memberlist_view.html index a7439bc7595..568cb92ae9f 100644 --- a/phpBB/styles/prosilver/template/memberlist_view.html +++ b/phpBB/styles/prosilver/template/memberlist_view.html @@ -35,7 +35,7 @@

{PAGE_TITLE}

{L_USER_IS_INACTIVE}{L_COLON}
{USER_INACTIVE_REASON}
{L_AGE}{L_COLON}
{AGE}
-
{L_USERGROUPS}{L_COLON}
+
{L_USERGROUPS}{L_COLON}
diff --git a/phpBB/styles/prosilver/template/pagination.html b/phpBB/styles/prosilver/template/pagination.html index 78b0df84e0f..d1690f7963b 100644 --- a/phpBB/styles/prosilver/template/pagination.html +++ b/phpBB/styles/prosilver/template/pagination.html @@ -8,7 +8,7 @@
  • {L_JUMP_TO_PAGE}{L_COLON}
  • - +
  • diff --git a/phpBB/styles/prosilver/template/posting_attach_body.html b/phpBB/styles/prosilver/template/posting_attach_body.html index 618ac95656d..a7e20530cd4 100644 --- a/phpBB/styles/prosilver/template/posting_attach_body.html +++ b/phpBB/styles/prosilver/template/posting_attach_body.html @@ -8,7 +8,7 @@
    - +
    @@ -18,7 +18,7 @@
    - +
    @@ -37,8 +37,8 @@ -   - +   + @@ -60,8 +60,8 @@ {attach_row.FILENAME} -   - +   + diff --git a/phpBB/styles/prosilver/template/posting_editor.html b/phpBB/styles/prosilver/template/posting_editor.html index d963c98e08c..49fff3fb082 100644 --- a/phpBB/styles/prosilver/template/posting_editor.html +++ b/phpBB/styles/prosilver/template/posting_editor.html @@ -94,10 +94,10 @@ {S_HIDDEN_ADDRESS_FIELD} {S_HIDDEN_FIELDS} -   -   - onclick="document.getElementById('postform').action += '#preview';" />  -   +   +   + onclick="document.getElementById('postform').action += '#preview';" />  +   diff --git a/phpBB/styles/prosilver/template/posting_layout.html b/phpBB/styles/prosilver/template/posting_layout.html index bca9195f0e1..985f92b23d4 100644 --- a/phpBB/styles/prosilver/template/posting_layout.html +++ b/phpBB/styles/prosilver/template/posting_layout.html @@ -51,7 +51,7 @@

    {L_SELECT_DESTINATION_FORUM}

     
    -
    +
    diff --git a/phpBB/styles/prosilver/template/posting_pm_header.html b/phpBB/styles/prosilver/template/posting_pm_header.html index 032d8c6a6f3..02c7d805582 100644 --- a/phpBB/styles/prosilver/template/posting_pm_header.html +++ b/phpBB/styles/prosilver/template/posting_pm_header.html @@ -13,8 +13,8 @@
    - - + + {L_FIND_USERNAME} @@ -31,7 +31,7 @@
    • - + {to_recipient.NAME}{to_recipient.NAME_FULL}
    • @@ -48,7 +48,7 @@
      • - + {bcc_recipient.NAME}{bcc_recipient.NAME_FULL}
      • @@ -62,7 +62,7 @@

        {L_FIND_USERNAME}
        -
        +
        @@ -70,7 +70,7 @@
      • {to_recipient.NAME}{to_recipient.NAME_FULL}  - +
      • diff --git a/phpBB/styles/prosilver/template/quickreply_editor.html b/phpBB/styles/prosilver/template/quickreply_editor.html index 98394944913..86cc2a76549 100644 --- a/phpBB/styles/prosilver/template/quickreply_editor.html +++ b/phpBB/styles/prosilver/template/quickreply_editor.html @@ -18,8 +18,8 @@

        {L_QUICKREPLY}

        {S_FORM_TOKEN} {QR_HIDDEN_FIELDS} -   -   +   +  
    diff --git a/phpBB/styles/prosilver/template/report_body.html b/phpBB/styles/prosilver/template/report_body.html index 285e8ec8d7f..6fb7af7ad21 100644 --- a/phpBB/styles/prosilver/template/report_body.html +++ b/phpBB/styles/prosilver/template/report_body.html @@ -42,8 +42,8 @@

    {L_REPORT_POST}{L_R
    -   - +   + {S_FORM_TOKEN}
    diff --git a/phpBB/styles/prosilver/template/search_body.html b/phpBB/styles/prosilver/template/search_body.html index 618e2680bac..b1941758927 100644 --- a/phpBB/styles/prosilver/template/search_body.html +++ b/phpBB/styles/prosilver/template/search_body.html @@ -93,8 +93,8 @@

    {L_SEARCH_OPTIONS}

    - {S_HIDDEN_FIELDS}  - + {S_HIDDEN_FIELDS}  +
    diff --git a/phpBB/styles/prosilver/template/timezone_option.html b/phpBB/styles/prosilver/template/timezone_option.html index 728dc9487a6..01786d5ef43 100644 --- a/phpBB/styles/prosilver/template/timezone_option.html +++ b/phpBB/styles/prosilver/template/timezone_option.html @@ -8,7 +8,7 @@ - +
    diff --git a/phpBB/styles/prosilver/template/ucp_agreement.html b/phpBB/styles/prosilver/template/ucp_agreement.html index 943774c6ec3..57f902df622 100644 --- a/phpBB/styles/prosilver/template/ucp_agreement.html +++ b/phpBB/styles/prosilver/template/ucp_agreement.html @@ -46,10 +46,10 @@

    {SITENAME} - {L_REGISTRATION}

    - {L_COPPA_NO}  {L_COPPA_YES} + {L_COPPA_NO}  {L_COPPA_YES} -   - +   + {S_HIDDEN_FIELDS} {S_FORM_TOKEN} @@ -66,7 +66,7 @@

    {SITENAME} - {L_REGISTRATION}

    {SITENAME} - {AGREEMENT_TITLE}

    {AGREEMENT_TEXT}


    -

    {L_BACK}

    +

    {L_BACK}

    diff --git a/phpBB/styles/prosilver/template/ucp_attachments.html b/phpBB/styles/prosilver/template/ucp_attachments.html index 696f621116c..c13ef0713a7 100644 --- a/phpBB/styles/prosilver/template/ucp_attachments.html +++ b/phpBB/styles/prosilver/template/ucp_attachments.html @@ -73,7 +73,7 @@

    {L_TITLE}

    - +
    {L_MARK_ALL}{L_UNMARK_ALL}
    {S_FORM_TOKEN}
    diff --git a/phpBB/styles/prosilver/template/ucp_auth_link_oauth.html b/phpBB/styles/prosilver/template/ucp_auth_link_oauth.html index 18316613b01..27124197cd3 100644 --- a/phpBB/styles/prosilver/template/ucp_auth_link_oauth.html +++ b/phpBB/styles/prosilver/template/ucp_auth_link_oauth.html @@ -10,7 +10,7 @@

    {oauth.SERVICE_NAME}

     
    -
    +
    @@ -18,7 +18,7 @@

    {oauth.SERVICE_NAME}

     
    -
    +
    diff --git a/phpBB/styles/prosilver/template/ucp_avatar_options.html b/phpBB/styles/prosilver/template/ucp_avatar_options.html index 2cf9488ed00..8987fecc728 100644 --- a/phpBB/styles/prosilver/template/ucp_avatar_options.html +++ b/phpBB/styles/prosilver/template/ucp_avatar_options.html @@ -39,8 +39,8 @@

    {avatar_drivers.L_TITLE}

    -   - +   +
    diff --git a/phpBB/styles/prosilver/template/ucp_avatar_options_local.html b/phpBB/styles/prosilver/template/ucp_avatar_options_local.html index e431b7425e0..ee17902ed53 100644 --- a/phpBB/styles/prosilver/template/ucp_avatar_options_local.html +++ b/phpBB/styles/prosilver/template/ucp_avatar_options_local.html @@ -4,7 +4,7 @@ - +
    - + {S_FORM_TOKEN}
    diff --git a/phpBB/styles/prosilver/template/ucp_groups_membership.html b/phpBB/styles/prosilver/template/ucp_groups_membership.html index e824a7b8679..e25e6363913 100644 --- a/phpBB/styles/prosilver/template/ucp_groups_membership.html +++ b/phpBB/styles/prosilver/template/ucp_groups_membership.html @@ -149,7 +149,7 @@

    {L_USERGROUPS}

    - + {S_FORM_TOKEN}
    @@ -162,7 +162,7 @@

    {L_USERGROUPS}

      - + {S_FORM_TOKEN} diff --git a/phpBB/styles/prosilver/template/ucp_header.html b/phpBB/styles/prosilver/template/ucp_header.html index 98d2eee1a0c..9ebb404dd9d 100644 --- a/phpBB/styles/prosilver/template/ucp_header.html +++ b/phpBB/styles/prosilver/template/ucp_header.html @@ -69,11 +69,11 @@

    {L_UCP}

    {L_FRIENDS}
    -
    {friends_online.USERNAME_FULL}
    +
    {friends_online.USERNAME_FULL}
    -
    {friends_offline.USERNAME_FULL}
    +
    {friends_offline.USERNAME_FULL}
    diff --git a/phpBB/styles/prosilver/template/ucp_login_link.html b/phpBB/styles/prosilver/template/ucp_login_link.html index be173318cb5..10d2d377ec1 100644 --- a/phpBB/styles/prosilver/template/ucp_login_link.html +++ b/phpBB/styles/prosilver/template/ucp_login_link.html @@ -18,7 +18,7 @@

    {L_REGISTER}

     
    -
    {S_HIDDEN_FIELDS}
    +
    {S_HIDDEN_FIELDS}
    @@ -46,7 +46,7 @@

    {L_LOGIN}

    {S_LOGIN_REDIRECT}
     
    -
    {S_HIDDEN_FIELDS}
    +
    {S_HIDDEN_FIELDS}
    diff --git a/phpBB/styles/prosilver/template/ucp_main_bookmarks.html b/phpBB/styles/prosilver/template/ucp_main_bookmarks.html index 25647afe1ac..d14ae234257 100644 --- a/phpBB/styles/prosilver/template/ucp_main_bookmarks.html +++ b/phpBB/styles/prosilver/template/ucp_main_bookmarks.html @@ -114,7 +114,7 @@

    {L_TITLE}

    - +
    {L_MARK_ALL}{L_UNMARK_ALL}
    {S_FORM_TOKEN}
    diff --git a/phpBB/styles/prosilver/template/ucp_main_drafts.html b/phpBB/styles/prosilver/template/ucp_main_drafts.html index 52ad5b503bf..25eb5ce2d1a 100644 --- a/phpBB/styles/prosilver/template/ucp_main_drafts.html +++ b/phpBB/styles/prosilver/template/ucp_main_drafts.html @@ -16,8 +16,8 @@

    {L_TITLE}

    - {S_HIDDEN_FIELDS}  - + {S_HIDDEN_FIELDS}  + {S_FORM_TOKEN}
    @@ -66,7 +66,7 @@

    {L_TITLE}

    - +
    {L_MARK_ALL}{L_UNMARK_ALL}
    {S_FORM_TOKEN}
    diff --git a/phpBB/styles/prosilver/template/ucp_main_subscribed.html b/phpBB/styles/prosilver/template/ucp_main_subscribed.html index d8de7fd0930..ec1500ffac4 100644 --- a/phpBB/styles/prosilver/template/ucp_main_subscribed.html +++ b/phpBB/styles/prosilver/template/ucp_main_subscribed.html @@ -160,7 +160,7 @@

    {L_TITLE}

    - +
    {L_MARK_ALL}{L_UNMARK_ALL}
    {S_FORM_TOKEN}
    diff --git a/phpBB/styles/prosilver/template/ucp_notifications.html b/phpBB/styles/prosilver/template/ucp_notifications.html index 32efae17fd1..634187e0cab 100644 --- a/phpBB/styles/prosilver/template/ucp_notifications.html +++ b/phpBB/styles/prosilver/template/ucp_notifications.html @@ -109,7 +109,7 @@

    {TITLE}

    {S_HIDDEN_FIELDS} - +
    {L_MARK_ALL}{L_UNMARK_ALL}
    {S_FORM_TOKEN}
    diff --git a/phpBB/styles/prosilver/template/ucp_pm_options.html b/phpBB/styles/prosilver/template/ucp_pm_options.html index 247be8b6fd3..4c971243b16 100644 --- a/phpBB/styles/prosilver/template/ucp_pm_options.html +++ b/phpBB/styles/prosilver/template/ucp_pm_options.html @@ -14,7 +14,7 @@

    {L_DEFINED_RULES}

      -
    1. {L_IF} {rule.CHECK} {rule.RULE} {rule.STRING} | {rule.ACTION}{L_COLON} {rule.FOLDER}
    2. +
    3. {L_IF} {rule.CHECK} {rule.RULE} {rule.STRING} | {rule.ACTION}{L_COLON} {rule.FOLDER}
    4. {L_NO_RULES_DEFINED}
    5. @@ -28,22 +28,22 @@

      {L_ADD_NEW_RULE}

      for="check_option">{L_IF}{L_COLON}
      - {CHECK_CURRENT} + {CHECK_CURRENT}
      -
      -
      {RULE_CURRENT}
      +
      +
      {RULE_CURRENT}
      -
      +
      @@ -53,7 +53,7 @@

      {L_ADD_NEW_RULE}

      {L_NO_GROUPS} - + {COND_CURRENT} @@ -68,8 +68,8 @@

      {L_ADD_NEW_RULE}

      -
      -
      {ACTION_CURRENT}
      +
      +
      {ACTION_CURRENT}
      @@ -82,7 +82,7 @@

      {L_FOLDER_OPTIONS}

      -
      {L_MAX_FOLDER_REACHED}
      +
      {L_MAX_FOLDER_REACHED}

      @@ -94,7 +94,7 @@

      {L_FOLDER_OPTIONS}

      -
      +

      @@ -102,7 +102,7 @@

      {L_FOLDER_OPTIONS}

      -
      +
      @@ -119,7 +119,7 @@

      {L_FOLDER_OPTIONS}


      {L_DEFAULT_ACTION_EXPLAIN}
      {DEFAULT_ACTION}
      -
      +
      diff --git a/phpBB/styles/prosilver/template/ucp_pm_viewfolder.html b/phpBB/styles/prosilver/template/ucp_pm_viewfolder.html index a290313df77..f4556c4555b 100644 --- a/phpBB/styles/prosilver/template/ucp_pm_viewfolder.html +++ b/phpBB/styles/prosilver/template/ucp_pm_viewfolder.html @@ -24,8 +24,8 @@

      {L_OPTIONS}

      -   -   +   +   {S_FORM_TOKEN}
      @@ -100,8 +100,8 @@

      {L_OPTIONS}

      -

      - +

      +
      {L_MARK_ALL}{L_UNMARK_ALL}
      diff --git a/phpBB/styles/prosilver/template/ucp_pm_viewmessage.html b/phpBB/styles/prosilver/template/ucp_pm_viewmessage.html index 4295867c052..4c0166957e9 100644 --- a/phpBB/styles/prosilver/template/ucp_pm_viewmessage.html +++ b/phpBB/styles/prosilver/template/ucp_pm_viewmessage.html @@ -171,7 +171,7 @@

      {SUBJECT}

      -   +   {L_VIEW_PREVIOUS_PM} @@ -182,7 +182,7 @@

      {SUBJECT}

      {L_VIEW_NEXT_PM}
      - + diff --git a/phpBB/styles/prosilver/template/ucp_prefs_personal.html b/phpBB/styles/prosilver/template/ucp_prefs_personal.html index 4cd9f6655b3..46e96799267 100644 --- a/phpBB/styles/prosilver/template/ucp_prefs_personal.html +++ b/phpBB/styles/prosilver/template/ucp_prefs_personal.html @@ -79,8 +79,8 @@

      {L_TITLE}

      - {S_HIDDEN_FIELDS}  - + {S_HIDDEN_FIELDS}  + {S_FORM_TOKEN}
      diff --git a/phpBB/styles/prosilver/template/ucp_prefs_post.html b/phpBB/styles/prosilver/template/ucp_prefs_post.html index 169d41bf722..97a5da0a853 100644 --- a/phpBB/styles/prosilver/template/ucp_prefs_post.html +++ b/phpBB/styles/prosilver/template/ucp_prefs_post.html @@ -44,8 +44,8 @@

      {L_TITLE}

      - {S_HIDDEN_FIELDS}  - + {S_HIDDEN_FIELDS}  + {S_FORM_TOKEN}
      diff --git a/phpBB/styles/prosilver/template/ucp_prefs_view.html b/phpBB/styles/prosilver/template/ucp_prefs_view.html index 4b7142fbea9..e28679aa96b 100644 --- a/phpBB/styles/prosilver/template/ucp_prefs_view.html +++ b/phpBB/styles/prosilver/template/ucp_prefs_view.html @@ -89,8 +89,8 @@

      {L_TITLE}

      - {S_HIDDEN_FIELDS}  - + {S_HIDDEN_FIELDS}  + {S_FORM_TOKEN}
      diff --git a/phpBB/styles/prosilver/template/ucp_profile_autologin_keys.html b/phpBB/styles/prosilver/template/ucp_profile_autologin_keys.html index 65909b7068e..3f63c5b3c0b 100644 --- a/phpBB/styles/prosilver/template/ucp_profile_autologin_keys.html +++ b/phpBB/styles/prosilver/template/ucp_profile_autologin_keys.html @@ -34,7 +34,7 @@

      {L_TITLE}

      - {S_HIDDEN_FIELDS} + {S_HIDDEN_FIELDS}
      {L_MARK_ALL}{L_UNMARK_ALL}
      {S_FORM_TOKEN}
      diff --git a/phpBB/styles/prosilver/template/ucp_profile_profile_info.html b/phpBB/styles/prosilver/template/ucp_profile_profile_info.html index 69eda8c42c2..c5dc0f88a6d 100644 --- a/phpBB/styles/prosilver/template/ucp_profile_profile_info.html +++ b/phpBB/styles/prosilver/template/ucp_profile_profile_info.html @@ -42,8 +42,8 @@

      {L_TITLE} [ - {S_HIDDEN_FIELDS}  - + {S_HIDDEN_FIELDS}  + {S_FORM_TOKEN}

      diff --git a/phpBB/styles/prosilver/template/ucp_profile_reg_details.html b/phpBB/styles/prosilver/template/ucp_profile_reg_details.html index f62d3cf37d5..8d7c6728a77 100644 --- a/phpBB/styles/prosilver/template/ucp_profile_reg_details.html +++ b/phpBB/styles/prosilver/template/ucp_profile_reg_details.html @@ -50,8 +50,8 @@

      {L_TITLE}

      - {S_HIDDEN_FIELDS}  - + {S_HIDDEN_FIELDS}  + {S_FORM_TOKEN}
      diff --git a/phpBB/styles/prosilver/template/ucp_profile_signature.html b/phpBB/styles/prosilver/template/ucp_profile_signature.html index 614f6f440da..41bd3ee2c67 100644 --- a/phpBB/styles/prosilver/template/ucp_profile_signature.html +++ b/phpBB/styles/prosilver/template/ucp_profile_signature.html @@ -41,9 +41,9 @@

      {L_OPTIONS}

      {S_HIDDEN_FIELDS} -   -   - +   +   + {S_FORM_TOKEN}
      diff --git a/phpBB/styles/prosilver/template/ucp_register.html b/phpBB/styles/prosilver/template/ucp_register.html index 38413addba5..0b9897abf6b 100644 --- a/phpBB/styles/prosilver/template/ucp_register.html +++ b/phpBB/styles/prosilver/template/ucp_register.html @@ -96,8 +96,8 @@

      {L_COPPA_COMPLIANCE}

      {S_HIDDEN_FIELDS} -   - +   + {S_FORM_TOKEN}
      diff --git a/phpBB/styles/prosilver/template/ucp_remind.html b/phpBB/styles/prosilver/template/ucp_remind.html index 0ab1251d9ea..57d5d5a2604 100644 --- a/phpBB/styles/prosilver/template/ucp_remind.html +++ b/phpBB/styles/prosilver/template/ucp_remind.html @@ -19,7 +19,7 @@

      {L_SEND_PASSWORD}

       
      -
      {S_HIDDEN_FIELDS} 
      +
      {S_HIDDEN_FIELDS} 
      {S_FORM_TOKEN} diff --git a/phpBB/styles/prosilver/template/ucp_resend.html b/phpBB/styles/prosilver/template/ucp_resend.html index 7713efe5215..48827d811bb 100644 --- a/phpBB/styles/prosilver/template/ucp_resend.html +++ b/phpBB/styles/prosilver/template/ucp_resend.html @@ -20,7 +20,7 @@

      {L_UCP_RESEND}

       
      -
      {S_HIDDEN_FIELDS}{S_FORM_TOKEN} 
      +
      {S_HIDDEN_FIELDS}{S_FORM_TOKEN} 
      diff --git a/phpBB/styles/prosilver/template/ucp_zebra_foes.html b/phpBB/styles/prosilver/template/ucp_zebra_foes.html index 2a0f6e0dea3..efd7a0613d8 100644 --- a/phpBB/styles/prosilver/template/ucp_zebra_foes.html +++ b/phpBB/styles/prosilver/template/ucp_zebra_foes.html @@ -32,8 +32,8 @@

      {L_TITLE}

      - {S_HIDDEN_FIELDS}  - + {S_HIDDEN_FIELDS}  + {S_FORM_TOKEN}
      diff --git a/phpBB/styles/prosilver/template/ucp_zebra_friends.html b/phpBB/styles/prosilver/template/ucp_zebra_friends.html index e584d876b8b..1478fb9546f 100644 --- a/phpBB/styles/prosilver/template/ucp_zebra_friends.html +++ b/phpBB/styles/prosilver/template/ucp_zebra_friends.html @@ -34,8 +34,8 @@

      {L_TITLE}

      - {S_HIDDEN_FIELDS}  - + {S_HIDDEN_FIELDS}  + {S_FORM_TOKEN}
      diff --git a/phpBB/styles/prosilver/template/viewforum_body.html b/phpBB/styles/prosilver/template/viewforum_body.html index 867fd84112b..70713661066 100644 --- a/phpBB/styles/prosilver/template/viewforum_body.html +++ b/phpBB/styles/prosilver/template/viewforum_body.html @@ -111,7 +111,7 @@

      {L_LOGIN_LOGOUT}{POLL_
       
      -
      +
      @@ -297,8 +297,8 @@

      class="first">class="first"> - + - + {S_FORM_TOKEN}

      From 2b52a13a3f550c6670b281003682daa527652ac8 Mon Sep 17 00:00:00 2001 From: hanakin Date: Fri, 17 Feb 2017 14:23:48 -0500 Subject: [PATCH 050/431] [ticket/14204] Remove old code PHPBB3-14204 --- phpBB/styles/prosilver/theme/colours.css | 58 --------------------- phpBB/styles/prosilver/theme/common.css | 6 --- phpBB/styles/prosilver/theme/forms.css | 66 ------------------------ 3 files changed, 130 deletions(-) diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index 46eaa999b52..5f2454ff00a 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -1262,63 +1262,6 @@ fieldset.quick-login input.inputbox { color: transparent; } - -/* form button styles */ - -a.button1, -input.button1, -input.button3, -a.button2, -input.button2 { - background-color: #efefef; /* old browsers */ /* ff3.6+ */ - background-image: linear-gradient(to bottom, #d2d2d2 0%, #efefef 100%); /* w3c */ - color: #000000; - filter: progid:dximagetransform.microsoft.gradient(startcolorstr='#d2d2d2', endcolorstr='#efefef', gradienttype=0); /* ie6-9 */ -} - -a.button1, -input.button1 { - border-color: #666666; -} - -input.button3 { - background-image: none; -} - -/* alternative button */ -a.button2, -input.button2, -input.button3 { - border-color: #666666; -} - -/* button in the style of the form buttons */ -a.button1, -a.button2 { - color: #000000; -} - -/* hover states */ -a.button1:hover, -input.button1:hover, -a.button2:hover, -input.button2:hover, -input.button3:hover { - background-color: #d2d2d2; /* old browsers */ /* ff3.6+ */ - background-image: linear-gradient(to bottom, #efefef 0%, #d2d2d2 100%); /* w3c */ - border-color: #d31141; - color: #d31141; - filter: progid:dximagetransform.microsoft.gradient(startcolorstr='#efefef', endcolorstr='#d2d2d2', gradienttype=0); /* ie6-9 */ -} - -/* focus states */ -input.button1:focus, -input.button2:focus, -input.button3:focus { - border-color: #11a3ea; - color: #0f4987; -} - input.disabled { color: #666666; } @@ -1411,4 +1354,3 @@ li.notification-disapproved strong { color: #ffffff; } /* stylelint-enable */ - diff --git a/phpBB/styles/prosilver/theme/common.css b/phpBB/styles/prosilver/theme/common.css index c4eead7027f..709515d38c5 100644 --- a/phpBB/styles/prosilver/theme/common.css +++ b/phpBB/styles/prosilver/theme/common.css @@ -850,12 +850,6 @@ fieldset.fields1 dd.recipients { margin-left: 1em; } -fieldset.fields1 ul.recipients input.button2 { - font-size: 0.8em; - margin-right: 0; - padding: 0; -} - fieldset.fields1 dl.pmlist > dt { width: auto !important; } diff --git a/phpBB/styles/prosilver/theme/forms.css b/phpBB/styles/prosilver/theme/forms.css index f4985f55087..5d24c7511c4 100644 --- a/phpBB/styles/prosilver/theme/forms.css +++ b/phpBB/styles/prosilver/theme/forms.css @@ -341,41 +341,6 @@ input[type='search']::-webkit-search-cancel-button { cursor: pointer; } -/* Form button styles ----------------------------------------- */ -input.button1, -input.button2 { - font-size: 1em; -} - -a.button1, -input.button1, -input.button3, -a.button2, -input.button2 { - font-family: 'Lucida Grande', Verdana, Helvetica, Arial, sans-serif; - line-height: 1.5; - background: transparent none repeat-x top left; - width: auto !important; - padding-top: 1px; - padding-bottom: 1px; -} - -a.button1, -input.button1 { - font-weight: bold; - border: 1px solid transparent; -} - -input.button3 { - font-variant: small-caps; - line-height: 5px; - background-image: none; - height: 12px; - margin: 0; - padding: 0; -} - input[type='button'], input[type='submit'], input[type='reset'], @@ -384,41 +349,10 @@ input[type='radio'] { cursor: pointer; } -/* Alternative button */ -a.button2, -input.button2, -input.button3 { - border: 1px solid transparent; -} - -/* button in the style of the form buttons */ -a.button1, -a.button2 { - text-decoration: none; - vertical-align: text-bottom; - padding: 0 3px; -} - -/* Hover states */ -a.button1:hover, -input.button1:hover, -a.button2:hover, -input.button2:hover, -input.button3:hover { - border: 1px solid transparent; -} - input.disabled { font-weight: normal; } -/* Focus states */ -input.button1:focus, -input.button2:focus, -input.button3:focus { - outline-style: none; -} - /* Topic and forum Search */ .search-box { float: left; From 1c85634778bcdfb24c425d2e2ebc93a49df94d38 Mon Sep 17 00:00:00 2001 From: hanakin Date: Fri, 17 Feb 2017 14:24:11 -0500 Subject: [PATCH 051/431] [ticket/14204] Add new refactored code PHPBB3-14204 --- phpBB/styles/prosilver/theme/buttons.css | 10 ++++++++++ phpBB/styles/prosilver/theme/colours.css | 23 +++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/phpBB/styles/prosilver/theme/buttons.css b/phpBB/styles/prosilver/theme/buttons.css index 0a6619b4994..9fed9e128b2 100644 --- a/phpBB/styles/prosilver/theme/buttons.css +++ b/phpBB/styles/prosilver/theme/buttons.css @@ -40,6 +40,16 @@ /* Posting page styles ---------------------------------------- */ +.button-form, +.button-form-bold { + font-family: 'Lucida Grande', Verdana, Helvetica, Arial, sans-serif; + border-radius: 0; +} + +.button-form-bold { + font-weight: 700; +} + .button-search, .button-search-end { border-radius: 0; diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index 5f2454ff00a..c01332cd006 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -674,6 +674,29 @@ dd.profile-warnings { color: #8f8f8f; } +.button-form, +.button-form-bold { + border-color: #666666; + -webkit-box-shadow: none; + box-shadow: none; + color: #333333; +} + +.button-form:hover, +.button-form-bold:hover { + border-color: #d31141; + color: #d31141; + text-shadow: none; +} + +.button-form:focus, +.button-form-bold:focus { + border-color: #0a8ed0; + color: #0a8ed0; + text-shadow: none; +} + + .button-secondary:focus, .button-secondary:hover, .button:focus .icon, From 9ac840f853b82551da08e6fd34a1895e386fefcb Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sun, 8 Jan 2017 14:14:55 +0100 Subject: [PATCH 052/431] [ticket/14970] Add package.json for phpBB PHPBB3-14970 --- phpBB/package.json | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 phpBB/package.json diff --git a/phpBB/package.json b/phpBB/package.json new file mode 100644 index 00000000000..a7514e39fc9 --- /dev/null +++ b/phpBB/package.json @@ -0,0 +1,32 @@ +{ + "name": "phpbb", + "version": "3.3.0-dev", + "description": "phpBB Forum Software application", + "main": " ", + "directories": { + "doc": "docs" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/phpbb/phpbb.git" + }, + "keywords": [ + "phpBB", + "phpbb", + "forum", + "php", + "software", + "community" + ], + "author": "", + "license": "GPL-2.0", + "bugs": { + "url": "https://github.com/phpbb/phpbb/issues" + }, + "homepage": "https://github.com/phpbb/phpbb#readme", + "devDependencies": { + } +} From c8dcf82b3ee6ede4dcc4a68d02765b308f40f539 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sun, 8 Jan 2017 14:15:38 +0100 Subject: [PATCH 053/431] [ticket/14970] Ignore node_modules directory PHPBB3-14970 --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index ac29bb403c7..feb702cb86c 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ /phpBB/styles/* !/phpBB/styles/prosilver !/phpBB/styles/all +/phpBB/node_modules /phpBB/vendor /tests/phpbb_unit_tests.sqlite* /tests/test_config*.php From 67bc5f93ce780d069c9d85e9de0d579a23773e72 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sun, 8 Jan 2017 14:28:47 +0100 Subject: [PATCH 054/431] [ticket/14970] Add stylelint to package.json PHPBB3-14970 --- phpBB/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/phpBB/package.json b/phpBB/package.json index a7514e39fc9..18f095b4561 100644 --- a/phpBB/package.json +++ b/phpBB/package.json @@ -28,5 +28,6 @@ }, "homepage": "https://github.com/phpbb/phpbb#readme", "devDependencies": { + "stylelint": "^7.7.1" } } From 47caa97ff2ddf9500c8d37a64179022044ec30ec Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sun, 8 Jan 2017 14:29:05 +0100 Subject: [PATCH 055/431] [ticket/14970] Fixed issues picked up by stylelint PHPBB3-14970 --- phpBB/styles/prosilver/theme/common.css | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/phpBB/styles/prosilver/theme/common.css b/phpBB/styles/prosilver/theme/common.css index c4eead7027f..009d31ecabb 100644 --- a/phpBB/styles/prosilver/theme/common.css +++ b/phpBB/styles/prosilver/theme/common.css @@ -93,9 +93,9 @@ p.right { } p.jumpbox-return { + float: left; margin-top: 10px; margin-bottom: 0; - float: left; } b, @@ -1128,10 +1128,10 @@ ul.linklist:after, } .emoji { - min-height: 18px; + width: 1em; min-width: 18px; height: 1em; - width: 1em; + min-height: 18px; } .smilies { @@ -1299,18 +1299,17 @@ ul.linklist:after, } .badge { - border-radius: 10px; - opacity: 0.8; - text-align: center; - white-space: nowrap; font-size: 10px; line-height: 1; - float: right; - display: inline-block; - margin-left: 3px; - vertical-align: baseline; + text-align: center; + white-space: nowrap; + border-radius: 10px; + opacity: 0.8; position: relative; top: 3px; + display: inline-block; + float: right; + margin-left: 3px; padding: 4px 6px; } From 1be84e0233266e9be70085196208dd8a464910d2 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sun, 8 Jan 2017 14:36:30 +0100 Subject: [PATCH 056/431] [ticket/14970] Run stylelint on travis PHPBB3-14970 --- .travis.yml | 6 ++++++ travis/check-stylesheet.sh | 24 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100755 travis/check-stylesheet.sh diff --git a/.travis.yml b/.travis.yml index 19251d61558..b48927b4ea0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -31,6 +31,11 @@ matrix: - php: nightly fast_finish: true +addons: + apt: + sources: + - node + services: - redis-server @@ -46,6 +51,7 @@ script: - travis/check-sami-parse-errors.sh $DB $TRAVIS_PHP_VERSION $NOTESTS - travis/check-image-icc-profiles.sh $DB $TRAVIS_PHP_VERSION $NOTESTS - travis/check-executable-files.sh $DB $TRAVIS_PHP_VERSION $NOTESTS ./ + - travis/check-stylesheet.sh $DB $TRAVIS_PHP_VERSION $NOTESTS - sh -c "if [ '$SLOWTESTS' != '1' -a '$DB' = 'mysqli' ]; then phpBB/vendor/bin/phpunit tests/lint_test.php; fi" - sh -c "if [ '$NOTESTS' != '1' -a '$SLOWTESTS' != '1' ]; then phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml; fi" - sh -c "if [ '$SLOWTESTS' = '1' ]; then phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml --group slow; fi" diff --git a/travis/check-stylesheet.sh b/travis/check-stylesheet.sh new file mode 100755 index 00000000000..aa1b4d7a6d9 --- /dev/null +++ b/travis/check-stylesheet.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# +# This file is part of the phpBB Forum Software package. +# +# @copyright (c) phpBB Limited +# @license GNU General Public License, version 2 (GPL-2.0) +# +# For full copyright and license information, please see +# the docs/CREDITS.txt file. +# +set -e +set -x + +DB=$1 +TRAVIS_PHP_VERSION=$2 +NOTESTS=$3 + +if [ "$NOTESTS" == '1' ] +then + cd phpBB + npm install -g + npm install + stylelint --config ../.stylelintrc "styles/prosilver/theme/*.css" +fi From f872020c1ad14063c7ba71c4ec152d16170060a6 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sun, 8 Jan 2017 14:47:58 +0100 Subject: [PATCH 057/431] [ticket/14970] Try using newer node version PHPBB3-14970 --- travis/check-stylesheet.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/travis/check-stylesheet.sh b/travis/check-stylesheet.sh index aa1b4d7a6d9..dfcf7332f2a 100755 --- a/travis/check-stylesheet.sh +++ b/travis/check-stylesheet.sh @@ -18,6 +18,20 @@ NOTESTS=$3 if [ "$NOTESTS" == '1' ] then cd phpBB + # Define a node version. + TRAVIS_NODE_VERSION="4" + + # Clear out whatever version of NVM Travis has. + # Their version of NVM is probably old. + rm -rf ~/.nvm + # Grab NVM. + git clone https://github.com/creationix/nvm.git ~/.nvm + # Checkout the latest stable tag. + # Note that you can just hardcode a preferred version here. + (cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`) + # Install the desired version of Node + source ~/.nvm/nvm.sh + nvm install $TRAVIS_NODE_VERSION npm install -g npm install stylelint --config ../.stylelintrc "styles/prosilver/theme/*.css" From 6a8f20a788cc7b6a566feefde74e90d8f3696b84 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Mon, 9 Jan 2017 22:35:01 +0100 Subject: [PATCH 058/431] [ticket/14970] Do not output node install output in stylelint PHPBB3-14970 --- travis/check-stylesheet.sh | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/travis/check-stylesheet.sh b/travis/check-stylesheet.sh index dfcf7332f2a..e8d35da116e 100755 --- a/travis/check-stylesheet.sh +++ b/travis/check-stylesheet.sh @@ -9,7 +9,7 @@ # the docs/CREDITS.txt file. # set -e -set -x +set +x DB=$1 TRAVIS_PHP_VERSION=$2 @@ -25,14 +25,15 @@ then # Their version of NVM is probably old. rm -rf ~/.nvm # Grab NVM. - git clone https://github.com/creationix/nvm.git ~/.nvm + git clone https://github.com/creationix/nvm.git ~/.nvm > /dev/null # Checkout the latest stable tag. # Note that you can just hardcode a preferred version here. (cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`) # Install the desired version of Node source ~/.nvm/nvm.sh - nvm install $TRAVIS_NODE_VERSION - npm install -g - npm install + nvm install $TRAVIS_NODE_VERSION > /dev/null + npm install -g > /dev/null + npm install > /dev/null + set -x stylelint --config ../.stylelintrc "styles/prosilver/theme/*.css" fi From dcf83ce60bc78d00f3c6cb4e9d7d1a3d72ad807c Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Wed, 22 Feb 2017 21:41:17 +0100 Subject: [PATCH 059/431] [ticket/14970] Update package.json definitions for bugs & homepage PHPBB3-14970 --- phpBB/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phpBB/package.json b/phpBB/package.json index 18f095b4561..47372724dd5 100644 --- a/phpBB/package.json +++ b/phpBB/package.json @@ -24,9 +24,9 @@ "author": "", "license": "GPL-2.0", "bugs": { - "url": "https://github.com/phpbb/phpbb/issues" + "url": "https://tracker.phpbb.com" }, - "homepage": "https://github.com/phpbb/phpbb#readme", + "homepage": "https://www.phpbb.com", "devDependencies": { "stylelint": "^7.7.1" } From ccd4aed3c82e5c5a70ec68873f5f7c96c46f026f Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Wed, 22 Feb 2017 21:41:56 +0100 Subject: [PATCH 060/431] [ticket/14970] Add stylelint-order as dependency PHPBB3-14970 --- phpBB/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/phpBB/package.json b/phpBB/package.json index 47372724dd5..fc85b20a99d 100644 --- a/phpBB/package.json +++ b/phpBB/package.json @@ -28,6 +28,7 @@ }, "homepage": "https://www.phpbb.com", "devDependencies": { - "stylelint": "^7.7.1" + "stylelint": "^7.7.1", + "stylelint-order": "^0.3.0" } } From fa2d1eb8b16afd993b46cf16488a94d247c5402d Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Wed, 22 Feb 2017 21:43:19 +0100 Subject: [PATCH 061/431] [ticket/14970] Remove unneeded parameters from check-stylesheet.sh PHPBB3-14970 --- .travis.yml | 2 +- travis/check-stylesheet.sh | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index b48927b4ea0..bdcc3546413 100644 --- a/.travis.yml +++ b/.travis.yml @@ -51,7 +51,7 @@ script: - travis/check-sami-parse-errors.sh $DB $TRAVIS_PHP_VERSION $NOTESTS - travis/check-image-icc-profiles.sh $DB $TRAVIS_PHP_VERSION $NOTESTS - travis/check-executable-files.sh $DB $TRAVIS_PHP_VERSION $NOTESTS ./ - - travis/check-stylesheet.sh $DB $TRAVIS_PHP_VERSION $NOTESTS + - travis/check-stylesheet.sh $NOTESTS - sh -c "if [ '$SLOWTESTS' != '1' -a '$DB' = 'mysqli' ]; then phpBB/vendor/bin/phpunit tests/lint_test.php; fi" - sh -c "if [ '$NOTESTS' != '1' -a '$SLOWTESTS' != '1' ]; then phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml; fi" - sh -c "if [ '$SLOWTESTS' = '1' ]; then phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml --group slow; fi" diff --git a/travis/check-stylesheet.sh b/travis/check-stylesheet.sh index e8d35da116e..ce5ad87f79a 100755 --- a/travis/check-stylesheet.sh +++ b/travis/check-stylesheet.sh @@ -11,9 +11,7 @@ set -e set +x -DB=$1 -TRAVIS_PHP_VERSION=$2 -NOTESTS=$3 +NOTESTS=$1 if [ "$NOTESTS" == '1' ] then From 54d60dc8b1e9e12ec9c178968d6135ff83a95e1f Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Thu, 23 Feb 2017 22:27:42 +0100 Subject: [PATCH 062/431] [ticket/14970] Fix issues noted by stylelint PHPBB3-14970 --- phpBB/styles/prosilver/theme/content.css | 4 ++-- phpBB/styles/prosilver/theme/responsive.css | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/phpBB/styles/prosilver/theme/content.css b/phpBB/styles/prosilver/theme/content.css index a07876917d8..88376d3430c 100644 --- a/phpBB/styles/prosilver/theme/content.css +++ b/phpBB/styles/prosilver/theme/content.css @@ -515,11 +515,11 @@ blockquote cite > div { /* Code block */ .codebox { font-size: 1em; + word-wrap: normal; border: 1px solid transparent; + overflow-x: scroll; margin: 1em 0 1.2em; padding: 3px; - overflow-x: scroll; - word-wrap: normal; } .codebox p { diff --git a/phpBB/styles/prosilver/theme/responsive.css b/phpBB/styles/prosilver/theme/responsive.css index ef4b398dd64..bc606e97234 100644 --- a/phpBB/styles/prosilver/theme/responsive.css +++ b/phpBB/styles/prosilver/theme/responsive.css @@ -623,7 +623,6 @@ } @media (min-width: 701px) and (max-width: 950px) { - ul.topiclist dt { margin-right: -410px; } From cf738f05e543b3353f4ceda1c3a7be8d5d19712f Mon Sep 17 00:00:00 2001 From: hanakin Date: Fri, 17 Feb 2017 13:13:21 -0500 Subject: [PATCH 063/431] [ticket/14095] Swap out everything PHPBB3-14095 --- .../prosilver/template/simple_footer.html | 5 +- phpBB/styles/prosilver/theme/colours.css | 6 +- phpBB/styles/prosilver/theme/common.css | 107 +++++++++++++++--- .../styles/prosilver/theme/images/loading.gif | Bin 1320 -> 0 bytes 4 files changed, 99 insertions(+), 19 deletions(-) delete mode 100644 phpBB/styles/prosilver/theme/images/loading.gif diff --git a/phpBB/styles/prosilver/template/simple_footer.html b/phpBB/styles/prosilver/template/simple_footer.html index 614c1378354..d614bcf6044 100644 --- a/phpBB/styles/prosilver/template/simple_footer.html +++ b/phpBB/styles/prosilver/template/simple_footer.html @@ -8,8 +8,9 @@
       
      -
      - +
      +
      +
      diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index 46eaa999b52..a403dbaad70 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -1333,9 +1333,8 @@ input.disabled { background-color: #000000; } -.loading_indicator { - background-color: #000000; - background-image: url('./images/loading.gif'); +.loader { + color: #ffffff; } .dropdown-extended ul li { @@ -1411,4 +1410,3 @@ li.notification-disapproved strong { color: #ffffff; } /* stylelint-enable */ - diff --git a/phpBB/styles/prosilver/theme/common.css b/phpBB/styles/prosilver/theme/common.css index c4eead7027f..2fec7b208b6 100644 --- a/phpBB/styles/prosilver/theme/common.css +++ b/phpBB/styles/prosilver/theme/common.css @@ -1033,19 +1033,100 @@ fieldset.fields1 dl.pmlist dd.recipients { height: 100%; } -.loading_indicator { - background: center center no-repeat; - border-radius: 5px; - opacity: 0.8; - position: fixed; - top: 50%; - left: 50%; - z-index: 51; - display: none; - width: 50px; - height: 50px; - margin-top: -50px; - margin-left: -50px; +.loader { + font-size: 90px; + text-indent: -9999em; + border-radius: 50%; + position: relative; + overflow: hidden; + width: 1em; + height: 1em; + margin: 72px auto; + -ms-transform: translateZ(0); + -webkit-transform: translateZ(0); + transform: translateZ(0); + -webkit-animation: load6 1.7s infinite ease, round 1.7s infinite ease; + animation: load6 1.7s infinite ease, round 1.7s infinite ease; +} + +@-webkit-keyframes load6 { + 0% { + box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em; + } + + 5%, + 95% { + box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em; + } + + 10%, + 59% { + box-shadow: 0 -0.83em 0 -0.4em, -0.087em -0.825em 0 -0.42em, -0.173em -0.812em 0 -0.44em, -0.256em -0.789em 0 -0.46em, -0.297em -0.775em 0 -0.477em; + } + + 20% { + box-shadow: 0 -0.83em 0 -0.4em, -0.338em -0.758em 0 -0.42em, -0.555em -0.617em 0 -0.44em, -0.671em -0.488em 0 -0.46em, -0.749em -0.34em 0 -0.477em; + } + + 38% { + box-shadow: 0 -0.83em 0 -0.4em, -0.377em -0.74em 0 -0.42em, -0.645em -0.522em 0 -0.44em, -0.775em -0.297em 0 -0.46em, -0.82em -0.09em 0 -0.477em; + } + + 100% { + box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em; + } +} + +@keyframes load6 { + 0% { + box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em; + } + + 5%, + 95% { + box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em; + } + + 10%, + 59% { + box-shadow: 0 -0.83em 0 -0.4em, -0.087em -0.825em 0 -0.42em, -0.173em -0.812em 0 -0.44em, -0.256em -0.789em 0 -0.46em, -0.297em -0.775em 0 -0.477em; + } + + 20% { + box-shadow: 0 -0.83em 0 -0.4em, -0.338em -0.758em 0 -0.42em, -0.555em -0.617em 0 -0.44em, -0.671em -0.488em 0 -0.46em, -0.749em -0.34em 0 -0.477em; + } + + 38% { + box-shadow: 0 -0.83em 0 -0.4em, -0.377em -0.74em 0 -0.42em, -0.645em -0.522em 0 -0.44em, -0.775em -0.297em 0 -0.46em, -0.82em -0.09em 0 -0.477em; + } + + 100% { + box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em; + } +} + +@-webkit-keyframes round { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes round { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } } /* Miscellaneous styles diff --git a/phpBB/styles/prosilver/theme/images/loading.gif b/phpBB/styles/prosilver/theme/images/loading.gif deleted file mode 100644 index e1ed0883e07c63f3a36f9ee38318ffabdfe44147..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1320 zcmd6l{c9U_9LGOt)7<6K<~f(UB$vxmAJ&H~TlbKzUA3ESll8uJwt_Hp&><)jMP);L zm|QM*NnEn6Bh6&Z3@cmf9>f+l?VPUcL23mN9Qag_IhEqWZ^A%@so#rp-u?p*?x%ad zzMt3k{kg&9K)h=#1R+>KaPya6%@&KPzTRfHJ6*KX>2lzgb~l*K1W6hU1|vlojg(%m zKUg}tW9P2-u6%Ui@?vHBjGqs_oKg})!y7mCpzWiFN|TqDKGo@Tk*4M^Zmck@Cm4>n z8TPTU#~Id3yII!b<@kWd>q}+xucQ=@kMnUn=MU_C>D2?p*S(y7`G=p!kCb=p9P8=r zYmct}`1)7H$;u1+Qti=LynFMd#ZN9?UFuvP=luMh7xxV&1+R|_g(K0}nx~)J+tj?O ztEYD$IduMmtNFvF-OoJVxglPjn(+sMU*7zYb~EsQeS&|PhWj5L-P*Uke{D2YtHYkb z-}Q9>2-;O=bxlC5h)7DysG**$ts{uKTC%=DDNaa6onDwMAJglMr4pq(Ha#Qgs43ZG zcyqRFFrD?(%*~f;Jf(LpEYwVx7On~BWa{k&jtkBk&ZJLX^I6Rn$DA&0{7`@!VBb7< z99^H`L(^WD)7H7+>&(&F@N8nsygvKQZ6WvP#YQS2*shG_&427VX?^5GX5QB)-+J=9 zw!~cTw{7f3p z0QNq$f_xwjC9u0uf3+wnjEhTi8rTR<46BN*BI3J|qVQV>{28>Z3mCc(V8P~ec@?)E zDv)tl%vN6^)2P8ojjRv6NRqJ)GJ_LYz(zalz#uoPl_i0Kx~eRPD_P4+Zgw!F<~meB zB_(`7-q zS`7*zS?2gnS&45iNNwXqZIlGZo!%MI4C@6&u?*dxQCj`Ic_lnvoG9fr0&2^()g@8? d2uOVTp3nbwY83?`yc#5-wJ)159KZv+{{|9CDcS%4 From 3d7319d308f1443b78d2793b5c11da6ef07081d7 Mon Sep 17 00:00:00 2001 From: hanakin Date: Fri, 17 Feb 2017 13:23:55 -0500 Subject: [PATCH 064/431] [ticket/14095] Add text for screen reader PHPBB3-14095 --- phpBB/styles/prosilver/template/simple_footer.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/styles/prosilver/template/simple_footer.html b/phpBB/styles/prosilver/template/simple_footer.html index d614bcf6044..564a0434976 100644 --- a/phpBB/styles/prosilver/template/simple_footer.html +++ b/phpBB/styles/prosilver/template/simple_footer.html @@ -9,7 +9,7 @@
       
      -
      +
      Loading...
      -
      Loading...
      +
      {L_Loading}...
      -
      {L_Loading}...
      +
      +
      {L_Loading}...
      +
      diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index a403dbaad70..6f585b6b1db 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -1333,6 +1333,10 @@ input.disabled { background-color: #000000; } +.loading_indicator .darken { + background-color: rgba(0, 0, 0, 0.5); +} + .loader { color: #ffffff; } diff --git a/phpBB/styles/prosilver/theme/common.css b/phpBB/styles/prosilver/theme/common.css index 2fec7b208b6..cb6ae84cb7a 100644 --- a/phpBB/styles/prosilver/theme/common.css +++ b/phpBB/styles/prosilver/theme/common.css @@ -1017,7 +1017,8 @@ fieldset.fields1 dl.pmlist dd.recipients { font-size: 1.1em; } -.darkenwrapper { +.darkenwrapper, +.loading_indicator { position: relative; z-index: 44; display: none; @@ -1033,6 +1034,13 @@ fieldset.fields1 dl.pmlist dd.recipients { height: 100%; } +.loading_indicator .darken { + opacity: 1; + display: flex; + align-items: center; + justify-content: center; +} + .loader { font-size: 90px; text-indent: -9999em; From 920ea3018d0020a4a24024bafe252a0857b747de Mon Sep 17 00:00:00 2001 From: hanakin Date: Fri, 17 Feb 2017 19:35:04 -0500 Subject: [PATCH 067/431] [ticket/14095] Faster & simpler PHPBB3-14095 --- .../prosilver/template/simple_footer.html | 4 +- phpBB/styles/prosilver/theme/colours.css | 28 +++- phpBB/styles/prosilver/theme/common.css | 125 +++++++----------- 3 files changed, 72 insertions(+), 85 deletions(-) diff --git a/phpBB/styles/prosilver/template/simple_footer.html b/phpBB/styles/prosilver/template/simple_footer.html index 0a10f3b04c2..69301571d70 100644 --- a/phpBB/styles/prosilver/template/simple_footer.html +++ b/phpBB/styles/prosilver/template/simple_footer.html @@ -9,9 +9,7 @@
       
      -
      -
      {L_Loading}...
      -
      +
      {L_Loading}...
      diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index 6f585b6b1db..bd0c6f5ac74 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -1333,12 +1333,32 @@ input.disabled { background-color: #000000; } -.loading_indicator .darken { - background-color: rgba(0, 0, 0, 0.5); +.loader { + background: #0076b1; } -.loader { - color: #ffffff; +.loader:before { + background: #ffffff; +} + +@-webkit-keyframes animate { + 0% { + background: #0076b1; + } + + 50% { + background: #d31141; + } +} + +@keyframes animate { + 0% { + background: #0076b1; + } + + 50% { + background: #d31141; + } } .dropdown-extended ul li { diff --git a/phpBB/styles/prosilver/theme/common.css b/phpBB/styles/prosilver/theme/common.css index cb6ae84cb7a..957ea3b9b7a 100644 --- a/phpBB/styles/prosilver/theme/common.css +++ b/phpBB/styles/prosilver/theme/common.css @@ -1017,8 +1017,7 @@ fieldset.fields1 dl.pmlist dd.recipients { font-size: 1.1em; } -.darkenwrapper, -.loading_indicator { +.darkenwrapper { position: relative; z-index: 44; display: none; @@ -1034,109 +1033,79 @@ fieldset.fields1 dl.pmlist dd.recipients { height: 100%; } -.loading_indicator .darken { - opacity: 1; - display: flex; - align-items: center; - justify-content: center; +.loading_indicator { + position: fixed; + top: 50%; + left: 50%; + z-index: 51; + display: none; } .loader { - font-size: 90px; - text-indent: -9999em; + text-indent: -9999px; border-radius: 50%; position: relative; - overflow: hidden; - width: 1em; - height: 1em; - margin: 72px auto; - -ms-transform: translateZ(0); - -webkit-transform: translateZ(0); - transform: translateZ(0); - -webkit-animation: load6 1.7s infinite ease, round 1.7s infinite ease; - animation: load6 1.7s infinite ease, round 1.7s infinite ease; + display: inline-block; + box-sizing: border-box; + width: 24px; + height: 24px; + animation: animate 1s ease-in-out infinite; } -@-webkit-keyframes load6 { - 0% { - box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em; - } - - 5%, - 95% { - box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em; - } - - 10%, - 59% { - box-shadow: 0 -0.83em 0 -0.4em, -0.087em -0.825em 0 -0.42em, -0.173em -0.812em 0 -0.44em, -0.256em -0.789em 0 -0.46em, -0.297em -0.775em 0 -0.477em; - } - - 20% { - box-shadow: 0 -0.83em 0 -0.4em, -0.338em -0.758em 0 -0.42em, -0.555em -0.617em 0 -0.44em, -0.671em -0.488em 0 -0.46em, -0.749em -0.34em 0 -0.477em; - } - - 38% { - box-shadow: 0 -0.83em 0 -0.4em, -0.377em -0.74em 0 -0.42em, -0.645em -0.522em 0 -0.44em, -0.775em -0.297em 0 -0.46em, -0.82em -0.09em 0 -0.477em; - } - - 100% { - box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em; - } +.loader:before { + border-radius: 0 12px 12px 0; + position: absolute; + top: 0; + right: 0; + display: inline-block; + box-sizing: border-box; + width: 12px; + height: 24px; + content: ''; + animation: before 1s ease-in-out infinite; } -@keyframes load6 { +@-webkit-keyframes before { 0% { - box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em; + opacity: 0.5; + transform: rotateY(0); + transform-origin: left center; } - 5%, - 95% { - box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em; - } - - 10%, - 59% { - box-shadow: 0 -0.83em 0 -0.4em, -0.087em -0.825em 0 -0.42em, -0.173em -0.812em 0 -0.44em, -0.256em -0.789em 0 -0.46em, -0.297em -0.775em 0 -0.477em; - } - - 20% { - box-shadow: 0 -0.83em 0 -0.4em, -0.338em -0.758em 0 -0.42em, -0.555em -0.617em 0 -0.44em, -0.671em -0.488em 0 -0.46em, -0.749em -0.34em 0 -0.477em; - } - - 38% { - box-shadow: 0 -0.83em 0 -0.4em, -0.377em -0.74em 0 -0.42em, -0.645em -0.522em 0 -0.44em, -0.775em -0.297em 0 -0.46em, -0.82em -0.09em 0 -0.477em; + 30%, + 70% { + opacity: 0.2; + transform: rotateY(180deg); + transform-origin: left center; } 100% { - box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em; + opacity: 0.5; + transform: rotateY(0); } } -@-webkit-keyframes round { +@keyframes before { 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); + opacity: 0.5; + transform: rotateY(0); + transform-origin: left center; } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} - -@keyframes round { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); + 30%, + 70% { + opacity: 0.2; + transform: rotateY(180deg); + transform-origin: left center; } 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); + opacity: 0.5; + transform: rotateY(0); } } + /* Miscellaneous styles ---------------------------------------- */ .copyright { From 072ac9fdca43690e1d527f2870979d503d97b1a8 Mon Sep 17 00:00:00 2001 From: hanakin Date: Fri, 17 Feb 2017 19:44:37 -0500 Subject: [PATCH 068/431] [ticket/14095] keyframes supported by all browsers PHPBB3-14095 --- phpBB/styles/prosilver/theme/colours.css | 10 ---------- phpBB/styles/prosilver/theme/common.css | 20 -------------------- 2 files changed, 30 deletions(-) diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index bd0c6f5ac74..fd8fdb1d1ad 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -1341,16 +1341,6 @@ input.disabled { background: #ffffff; } -@-webkit-keyframes animate { - 0% { - background: #0076b1; - } - - 50% { - background: #d31141; - } -} - @keyframes animate { 0% { background: #0076b1; diff --git a/phpBB/styles/prosilver/theme/common.css b/phpBB/styles/prosilver/theme/common.css index 957ea3b9b7a..9c8c6d098df 100644 --- a/phpBB/styles/prosilver/theme/common.css +++ b/phpBB/styles/prosilver/theme/common.css @@ -1065,26 +1065,6 @@ fieldset.fields1 dl.pmlist dd.recipients { animation: before 1s ease-in-out infinite; } -@-webkit-keyframes before { - 0% { - opacity: 0.5; - transform: rotateY(0); - transform-origin: left center; - } - - 30%, - 70% { - opacity: 0.2; - transform: rotateY(180deg); - transform-origin: left center; - } - - 100% { - opacity: 0.5; - transform: rotateY(0); - } -} - @keyframes before { 0% { opacity: 0.5; From 2872d6aa1fa04af3464e2dc631605e74775c0f0d Mon Sep 17 00:00:00 2001 From: hanakin Date: Wed, 22 Feb 2017 09:41:20 -0500 Subject: [PATCH 069/431] [ticket/14095] Update design a little PHPBB3-14095 --- phpBB/styles/prosilver/theme/colours.css | 17 +- phpBB/styles/prosilver/theme/common.css | 254 +++++++++++++++++++++-- 2 files changed, 235 insertions(+), 36 deletions(-) diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index fd8fdb1d1ad..fc92ed576d6 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -1333,22 +1333,13 @@ input.disabled { background-color: #000000; } -.loader { - background: #0076b1; +.loader, +.loader:after { + background: #1481b8; } .loader:before { - background: #ffffff; -} - -@keyframes animate { - 0% { - background: #0076b1; - } - - 50% { - background: #d31141; - } + background: #13a4ec; } .dropdown-extended ul li { diff --git a/phpBB/styles/prosilver/theme/common.css b/phpBB/styles/prosilver/theme/common.css index 9c8c6d098df..d185d4bc62c 100644 --- a/phpBB/styles/prosilver/theme/common.css +++ b/phpBB/styles/prosilver/theme/common.css @@ -1043,45 +1043,253 @@ fieldset.fields1 dl.pmlist dd.recipients { .loader { text-indent: -9999px; - border-radius: 50%; + border-radius: 24px; position: relative; display: inline-block; - box-sizing: border-box; - width: 24px; - height: 24px; - animation: animate 1s ease-in-out infinite; + overflow: hidden; + width: 48px; + height: 48px; + -webkit-transform: rotateZ(90deg); + transform: rotateZ(90deg); + -webkit-transform-origin: 50% 50%; + transform-origin: 50% 50%; + -webkit-animation: loader-background 3s infinite ease-in-out; + animation: loader-background 3s infinite ease-in-out; +} + +.loader:after { + border-radius: 24px 0 0 24px; + position: absolute; + top: 0; + right: 50%; + width: 50%; + height: 100%; + content: ''; + -webkit-transform-origin: 100% 50%; + transform-origin: 100% 50%; + -webkit-animation: loader-top 3s infinite linear; + animation: loader-top 3s infinite linear; } .loader:before { - border-radius: 0 12px 12px 0; + border-radius: 24px 0 0 24px; position: absolute; top: 0; - right: 0; - display: inline-block; - box-sizing: border-box; - width: 12px; - height: 24px; + right: 50%; + width: 50%; + height: 100%; content: ''; - animation: before 1s ease-in-out infinite; + -webkit-transform-origin: 100% 50%; + transform-origin: 100% 50%; + -webkit-animation: loader-bottom 3s infinite linear; + animation: loader-bottom 3s infinite linear; +} + +@keyframes loader-top { + 2.5% { + background: #1481b8; + -webkit-transform: rotateY(0deg); + transform: rotateY(0deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 13.75% { + background: #083045; + -webkit-transform: rotateY(90deg); + transform: rotateY(90deg); + -webkit-animation-timing-function: step-start; + animation-timing-function: step-start; + } + + 13.76% { + background: #0a5276; + -webkit-transform: rotateY(90deg); + transform: rotateY(90deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 25% { + background: #13a4ec; + -webkit-transform: rotateY(180deg); + transform: rotateY(180deg); + } + + 27.5% { + background: #13a4ec; + -webkit-transform: rotateY(180deg); + transform: rotateY(180deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 41.25% { + background: #0a5276; + -webkit-transform: rotateY(90deg); + transform: rotateY(90deg); + -webkit-animation-timing-function: step-start; + animation-timing-function: step-start; + } + + 41.26% { + background: #0974aa; + -webkit-transform: rotateY(90deg); + transform: rotateY(90deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 50% { + background: #3db8f5; + -webkit-transform: rotateY(0deg); + transform: rotateY(0deg); + } + + 52.5% { + background: #3db8f5; + -webkit-transform: rotateY(0deg); + transform: rotateY(0deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 63.75% { + background: #0974aa; + -webkit-transform: rotateY(90deg); + transform: rotateY(90deg); + -webkit-animation-timing-function: step-start; + animation-timing-function: step-start; + } + + 63.76% { + background: #0697e0; + -webkit-transform: rotateY(90deg); + transform: rotateY(90deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 75% { + background: #6acbfb; + -webkit-transform: rotateY(180deg); + transform: rotateY(180deg); + } + + 77.5% { + background: #6acbfb; + -webkit-transform: rotateY(180deg); + transform: rotateY(180deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 91.25% { + background: #0697e0; + -webkit-transform: rotateY(90deg); + transform: rotateY(90deg); + -webkit-animation-timing-function: step-start; + animation-timing-function: step-start; + } + + 91.26% { + background: #083045; + -webkit-transform: rotateY(90deg); + transform: rotateY(90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 100% { + background: #1481b8; + -webkit-transform: rotateY(0deg); + transform: rotateY(0deg); + -webkit-animation-timing-function: step-start; + animation-timing-function: step-start; + } } -@keyframes before { +@keyframes loader-bottom { 0% { - opacity: 0.5; - transform: rotateY(0); - transform-origin: left center; + background: #13a4ec; + -webkit-animation-timing-function: step-start; + animation-timing-function: step-start; } - 30%, - 70% { - opacity: 0.2; - transform: rotateY(180deg); - transform-origin: left center; + 50% { + background: #13a4ec; + -webkit-animation-timing-function: step-start; + animation-timing-function: step-start; + } + + 75% { + background: #6acbfb; + -webkit-animation-timing-function: step-start; + animation-timing-function: step-start; + } + + 100% { + background: #6acbfb; + -webkit-animation-timing-function: step-start; + animation-timing-function: step-start; + } +} + +@keyframes loader-background { + 0% { + background: #1481b8; + -webkit-transform: rotateZ(180deg); + transform: rotateZ(180deg); + } + + 25% { + background: #1481b8; + -webkit-transform: rotateZ(180deg); + transform: rotateZ(180deg); + -webkit-animation-timing-function: step-start; + animation-timing-function: step-start; + } + + 27.5% { + background: #3db8f5; + -webkit-transform: rotateZ(90deg); + transform: rotateZ(90deg); + } + + 50% { + background: #3db8f5; + -webkit-transform: rotateZ(90deg); + transform: rotateZ(90deg); + -webkit-animation-timing-function: step-start; + animation-timing-function: step-start; + } + + 52.5% { + background: #3db8f5; + -webkit-transform: rotateZ(0deg); + transform: rotateZ(0deg); + } + + 75% { + background: #3db8f5; + -webkit-transform: rotateZ(0deg); + transform: rotateZ(0deg); + -webkit-animation-timing-function: step-start; + animation-timing-function: step-start; + } + + 77.5% { + background: #1481b8; + -webkit-transform: rotateZ(270deg); + transform: rotateZ(270deg); } 100% { - opacity: 0.5; - transform: rotateY(0); + background: #1481b8; + -webkit-transform: rotateZ(270deg); + transform: rotateZ(270deg); + -webkit-animation-timing-function: step-start; + animation-timing-function: step-start; } } From b19103c5e346b68af19bf923be14fd60883ccea6 Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 23 Feb 2017 13:22:13 -0500 Subject: [PATCH 070/431] [ticket/14095] Use gmd animated svg spinner PHPBB3-14095 --- .../prosilver/template/simple_footer.html | 7 +- phpBB/styles/prosilver/theme/colours.css | 25 +- phpBB/styles/prosilver/theme/common.css | 243 ++---------------- 3 files changed, 42 insertions(+), 233 deletions(-) diff --git a/phpBB/styles/prosilver/template/simple_footer.html b/phpBB/styles/prosilver/template/simple_footer.html index 69301571d70..14dd35a84dd 100644 --- a/phpBB/styles/prosilver/template/simple_footer.html +++ b/phpBB/styles/prosilver/template/simple_footer.html @@ -9,7 +9,12 @@
       
      -
      {L_Loading}...
      +
      + + Loading... + + +
      diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index fc92ed576d6..6924de80adb 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -1333,13 +1333,26 @@ input.disabled { background-color: #000000; } -.loader, -.loader:after { - background: #1481b8; -} +@keyframes colors { + 0% { + stroke: #4285f4; + } -.loader:before { - background: #13a4ec; + 25% { + stroke: #de3e35; + } + + 50% { + stroke: #f7c223; + } + + 75% { + stroke: #1b9a59; + } + + 100% { + stroke: #4285f4; + } } .dropdown-extended ul li { diff --git a/phpBB/styles/prosilver/theme/common.css b/phpBB/styles/prosilver/theme/common.css index d185d4bc62c..c226ca5dbce 100644 --- a/phpBB/styles/prosilver/theme/common.css +++ b/phpBB/styles/prosilver/theme/common.css @@ -1042,254 +1042,45 @@ fieldset.fields1 dl.pmlist dd.recipients { } .loader { - text-indent: -9999px; - border-radius: 24px; - position: relative; - display: inline-block; - overflow: hidden; width: 48px; height: 48px; - -webkit-transform: rotateZ(90deg); - transform: rotateZ(90deg); - -webkit-transform-origin: 50% 50%; - transform-origin: 50% 50%; - -webkit-animation: loader-background 3s infinite ease-in-out; - animation: loader-background 3s infinite ease-in-out; + padding: 12px; } -.loader:after { - border-radius: 24px 0 0 24px; - position: absolute; - top: 0; - right: 50%; - width: 50%; - height: 100%; - content: ''; - -webkit-transform-origin: 100% 50%; - transform-origin: 100% 50%; - -webkit-animation: loader-top 3s infinite linear; - animation: loader-top 3s infinite linear; +.spinner { + animation: rotator 1s linear infinite; } -.loader:before { - border-radius: 24px 0 0 24px; - position: absolute; - top: 0; - right: 50%; - width: 50%; - height: 100%; - content: ''; - -webkit-transform-origin: 100% 50%; - transform-origin: 100% 50%; - -webkit-animation: loader-bottom 3s infinite linear; - animation: loader-bottom 3s infinite linear; -} - -@keyframes loader-top { - 2.5% { - background: #1481b8; - -webkit-transform: rotateY(0deg); - transform: rotateY(0deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 13.75% { - background: #083045; - -webkit-transform: rotateY(90deg); - transform: rotateY(90deg); - -webkit-animation-timing-function: step-start; - animation-timing-function: step-start; - } - - 13.76% { - background: #0a5276; - -webkit-transform: rotateY(90deg); - transform: rotateY(90deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 25% { - background: #13a4ec; - -webkit-transform: rotateY(180deg); - transform: rotateY(180deg); - } - - 27.5% { - background: #13a4ec; - -webkit-transform: rotateY(180deg); - transform: rotateY(180deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 41.25% { - background: #0a5276; - -webkit-transform: rotateY(90deg); - transform: rotateY(90deg); - -webkit-animation-timing-function: step-start; - animation-timing-function: step-start; - } - - 41.26% { - background: #0974aa; - -webkit-transform: rotateY(90deg); - transform: rotateY(90deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 50% { - background: #3db8f5; - -webkit-transform: rotateY(0deg); - transform: rotateY(0deg); - } - - 52.5% { - background: #3db8f5; - -webkit-transform: rotateY(0deg); - transform: rotateY(0deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 63.75% { - background: #0974aa; - -webkit-transform: rotateY(90deg); - transform: rotateY(90deg); - -webkit-animation-timing-function: step-start; - animation-timing-function: step-start; - } - - 63.76% { - background: #0697e0; - -webkit-transform: rotateY(90deg); - transform: rotateY(90deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 75% { - background: #6acbfb; - -webkit-transform: rotateY(180deg); - transform: rotateY(180deg); - } - - 77.5% { - background: #6acbfb; - -webkit-transform: rotateY(180deg); - transform: rotateY(180deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 91.25% { - background: #0697e0; - -webkit-transform: rotateY(90deg); - transform: rotateY(90deg); - -webkit-animation-timing-function: step-start; - animation-timing-function: step-start; - } - - 91.26% { - background: #083045; - -webkit-transform: rotateY(90deg); - transform: rotateY(90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 100% { - background: #1481b8; - -webkit-transform: rotateY(0deg); - transform: rotateY(0deg); - -webkit-animation-timing-function: step-start; - animation-timing-function: step-start; - } +.spinner-path { + stroke-dasharray: 187; + stroke-dashoffset: 0; + transform-origin: center; + animation: dash 1s ease-in-out infinite, colors 4s ease-in-out infinite; } -@keyframes loader-bottom { +@keyframes rotator { 0% { - background: #13a4ec; - -webkit-animation-timing-function: step-start; - animation-timing-function: step-start; - } - - 50% { - background: #13a4ec; - -webkit-animation-timing-function: step-start; - animation-timing-function: step-start; - } - - 75% { - background: #6acbfb; - -webkit-animation-timing-function: step-start; - animation-timing-function: step-start; + transform: rotate(0deg); } 100% { - background: #6acbfb; - -webkit-animation-timing-function: step-start; - animation-timing-function: step-start; + transform: rotate(270deg); } } -@keyframes loader-background { +@keyframes dash { 0% { - background: #1481b8; - -webkit-transform: rotateZ(180deg); - transform: rotateZ(180deg); - } - - 25% { - background: #1481b8; - -webkit-transform: rotateZ(180deg); - transform: rotateZ(180deg); - -webkit-animation-timing-function: step-start; - animation-timing-function: step-start; - } - - 27.5% { - background: #3db8f5; - -webkit-transform: rotateZ(90deg); - transform: rotateZ(90deg); + stroke-dashoffset: 187; } 50% { - background: #3db8f5; - -webkit-transform: rotateZ(90deg); - transform: rotateZ(90deg); - -webkit-animation-timing-function: step-start; - animation-timing-function: step-start; - } - - 52.5% { - background: #3db8f5; - -webkit-transform: rotateZ(0deg); - transform: rotateZ(0deg); - } - - 75% { - background: #3db8f5; - -webkit-transform: rotateZ(0deg); - transform: rotateZ(0deg); - -webkit-animation-timing-function: step-start; - animation-timing-function: step-start; - } - - 77.5% { - background: #1481b8; - -webkit-transform: rotateZ(270deg); - transform: rotateZ(270deg); + stroke-dashoffset: 46.75; + transform: rotate(135deg); } 100% { - background: #1481b8; - -webkit-transform: rotateZ(270deg); - transform: rotateZ(270deg); - -webkit-animation-timing-function: step-start; - animation-timing-function: step-start; + stroke-dashoffset: 187; + transform: rotate(450deg); } } From c9bf006a0980c4fe92cebb75e8033003bf0c9ebb Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 23 Feb 2017 13:35:48 -0500 Subject: [PATCH 071/431] [ticket/14095] Add to all footers by default PHPBB3-14095 --- phpBB/adm/style/overall_footer.html | 9 ++++++++- phpBB/styles/prosilver/template/overall_footer.html | 8 ++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/phpBB/adm/style/overall_footer.html b/phpBB/adm/style/overall_footer.html index 8745286d64e..7afceab319f 100644 --- a/phpBB/adm/style/overall_footer.html +++ b/phpBB/adm/style/overall_footer.html @@ -20,7 +20,14 @@
       
      -
      +
      +
      + + Loading... + + +
      +
      diff --git a/phpBB/styles/prosilver/template/overall_footer.html b/phpBB/styles/prosilver/template/overall_footer.html index 413c93f79a1..6869e299641 100644 --- a/phpBB/styles/prosilver/template/overall_footer.html +++ b/phpBB/styles/prosilver/template/overall_footer.html @@ -18,6 +18,14 @@
       
      +
      +
      + + Loading... + + +
      +
      From e4df5ea53f91c6e63b0ead949485f07ddf72bc9e Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 23 Feb 2017 13:36:22 -0500 Subject: [PATCH 072/431] [ticket/14095] Cleanup/simplify JS PHPBB3-14095 --- phpBB/assets/javascript/core.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/phpBB/assets/javascript/core.js b/phpBB/assets/javascript/core.js index b00da3caff4..db30385faa3 100644 --- a/phpBB/assets/javascript/core.js +++ b/phpBB/assets/javascript/core.js @@ -27,11 +27,7 @@ phpbb.isTouch = (window && typeof window.ontouchstart !== 'undefined'); */ phpbb.loadingIndicator = function() { if (!$loadingIndicator) { - $loadingIndicator = $('
      ', { - id: 'loading_indicator', - class: 'loading_indicator', - }); - $loadingIndicator.appendTo('#page-footer'); + $loadingIndicator = $('#loading_indicator'); } if (!$loadingIndicator.is(':visible')) { From 978c2a6a2872ec7eb9e59c79367d46b9054eb927 Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 23 Feb 2017 17:43:40 -0500 Subject: [PATCH 073/431] [ticket/14095] Update admin.css PHPBB3-14095 --- phpBB/adm/style/admin.css | 78 ++++++++++++++++++++++++++++++++++----- 1 file changed, 68 insertions(+), 10 deletions(-) diff --git a/phpBB/adm/style/admin.css b/phpBB/adm/style/admin.css index d46530700fc..c37df3ce6ef 100644 --- a/phpBB/adm/style/admin.css +++ b/phpBB/adm/style/admin.css @@ -1665,19 +1665,77 @@ input.button1:focus, input.button2:focus { } } -#loading_indicator { - background: #000000 url("../images/loading.gif") center center no-repeat; - border-radius: 5px; - display: none; - opacity: 0.8; - margin-top: -50px; - margin-left: -50px; - height: 50px; - width: 50px; +.loading_indicator { position: fixed; - left: 50%; top: 50%; + left: 50%; z-index: 51; + display: none; +} + +.loader { + width: 48px; + height: 48px; + padding: 12px; +} + +.spinner { + animation: rotator 1s linear infinite; +} + +.spinner-path { + stroke-dasharray: 187; + stroke-dashoffset: 0; + transform-origin: center; + animation: dash 1s ease-in-out infinite, colors 4s ease-in-out infinite; +} + +@keyframes rotator { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(270deg); + } +} + +@keyframes dash { + 0% { + stroke-dashoffset: 187; + } + + 50% { + stroke-dashoffset: 46.75; + transform: rotate(135deg); + } + + 100% { + stroke-dashoffset: 187; + transform: rotate(450deg); + } +} + +@keyframes colors { + 0% { + stroke: #4285f4; + } + + 25% { + stroke: #de3e35; + } + + 50% { + stroke: #f7c223; + } + + 75% { + stroke: #1b9a59; + } + + 100% { + stroke: #4285f4; + } } /* Pagination From 0097a575ecadddb07e6f47775a62c5ac8219f2cb Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Tue, 7 Mar 2017 21:14:28 +0100 Subject: [PATCH 074/431] [ticket/14970] Also run stylelint against admin css PHPBB3-14970 --- travis/check-stylesheet.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/travis/check-stylesheet.sh b/travis/check-stylesheet.sh index ce5ad87f79a..a834833399b 100755 --- a/travis/check-stylesheet.sh +++ b/travis/check-stylesheet.sh @@ -34,4 +34,6 @@ then npm install > /dev/null set -x stylelint --config ../.stylelintrc "styles/prosilver/theme/*.css" + # Disable admin stylelint for now + # stylelint --config ../.stylelintrc "adm/style/*.css" fi From e077bd70a4d1ace52336e05236d4ed083162e328 Mon Sep 17 00:00:00 2001 From: Rishabh04-02 Date: Fri, 10 Mar 2017 11:00:46 +0530 Subject: [PATCH 075/431] [ticket/15120] Semicolon missing PHPBB3-15120 --- phpBB/styles/prosilver/theme/links.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/styles/prosilver/theme/links.css b/phpBB/styles/prosilver/theme/links.css index 14ceeabedae..b4fee560731 100644 --- a/phpBB/styles/prosilver/theme/links.css +++ b/phpBB/styles/prosilver/theme/links.css @@ -98,7 +98,7 @@ a.lastsubject:hover { } .row-item a:hover { - text-decoration: none + text-decoration: none; } .row-item .topictitle:hover, From 9063556a57e00b273a3627849388995b23274e68 Mon Sep 17 00:00:00 2001 From: Vishal Pandey Date: Tue, 14 Mar 2017 00:57:28 +0530 Subject: [PATCH 076/431] [ticket/11515] Extra check after acquiring locks. Add additional check to flock.php and db.php to ensure lock aquiring. PHPBB3-11515 --- phpBB/phpbb/config/config.php | 21 +++++++++++++++++++++ phpBB/phpbb/lock/db.php | 11 ++++++++++- phpBB/phpbb/lock/flock.php | 7 ++++++- 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/phpBB/phpbb/config/config.php b/phpBB/phpbb/config/config.php index aaad333006f..036ae32cef2 100644 --- a/phpBB/phpbb/config/config.php +++ b/phpBB/phpbb/config/config.php @@ -147,6 +147,27 @@ public function set_atomic($key, $old_value, $new_value, $use_cache = true) return false; } + /** + * Checks configuration option's value only if the new_value matches the + * current configuration value and the configuration value does exist.Called + *only after set_atomic has been called. + * + * @param string $key The configuration option's name + * @param string $old_value Current configuration value + * @param string $new_value New configuration value + * @throws \phpbb\exception\http_exception when configuration value is set and not equal to *new_value. + * @return bool True if the value was changed, false otherwise. + */ + public function ensure_lock($key, $new_value) + { + if(isset($this->config[$key]) && $this->config[$key] == $new_value) + { + return true; + } else { + throw new \phpbb\exception\http_exception(500, 'Failure while aqcuiring locks.'); + } + } + /** * Increments an integer configuration value. * diff --git a/phpBB/phpbb/lock/db.php b/phpBB/phpbb/lock/db.php index 85ba9a7aa35..77656194222 100644 --- a/phpBB/phpbb/lock/db.php +++ b/phpBB/phpbb/lock/db.php @@ -110,7 +110,16 @@ public function acquire() // process we failed to acquire the lock. $this->locked = $this->config->set_atomic($this->config_name, $lock_value, $this->unique_id, false); - return $this->locked; + if ($this->locked == true) + { + if ($this->config->ensure_lock($this->config_name, $this->unique_id)) + { + return true; + } + } else { + + return $this->locked; + } } /** diff --git a/phpBB/phpbb/lock/flock.php b/phpBB/phpbb/lock/flock.php index df88e1490a1..89ff7cbe485 100644 --- a/phpBB/phpbb/lock/flock.php +++ b/phpBB/phpbb/lock/flock.php @@ -101,7 +101,12 @@ public function acquire() if ($this->lock_fp) { - @flock($this->lock_fp, LOCK_EX); + if (@flock($this->lock_fp, LOCK_EX)) + { + return (bool) $this->lock_fp; + } else { + throw new \phpbb\exception\http_exception(500, 'Failure while aqcuiring locks.'); + } } return (bool) $this->lock_fp; From 1ba32e1b7ad99adaab5881ca78aee949b1033910 Mon Sep 17 00:00:00 2001 From: Vishal Pandey Date: Tue, 14 Mar 2017 02:16:18 +0530 Subject: [PATCH 077/431] [ticket/11515] Change If...else statement struct Modifications in if-else structure. PHPBB3-11515 --- phpBB/phpbb/config/config.php | 4 +++- phpBB/phpbb/lock/db.php | 4 +++- phpBB/phpbb/lock/flock.php | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/phpBB/phpbb/config/config.php b/phpBB/phpbb/config/config.php index 036ae32cef2..239e4c2e552 100644 --- a/phpBB/phpbb/config/config.php +++ b/phpBB/phpbb/config/config.php @@ -163,7 +163,9 @@ public function ensure_lock($key, $new_value) if(isset($this->config[$key]) && $this->config[$key] == $new_value) { return true; - } else { + } + else + { throw new \phpbb\exception\http_exception(500, 'Failure while aqcuiring locks.'); } } diff --git a/phpBB/phpbb/lock/db.php b/phpBB/phpbb/lock/db.php index 77656194222..d9ad4d3b97c 100644 --- a/phpBB/phpbb/lock/db.php +++ b/phpBB/phpbb/lock/db.php @@ -116,7 +116,9 @@ public function acquire() { return true; } - } else { + } + else + { return $this->locked; } diff --git a/phpBB/phpbb/lock/flock.php b/phpBB/phpbb/lock/flock.php index 89ff7cbe485..b496ed845e9 100644 --- a/phpBB/phpbb/lock/flock.php +++ b/phpBB/phpbb/lock/flock.php @@ -104,7 +104,9 @@ public function acquire() if (@flock($this->lock_fp, LOCK_EX)) { return (bool) $this->lock_fp; - } else { + } + else + { throw new \phpbb\exception\http_exception(500, 'Failure while aqcuiring locks.'); } } From 4f71a75df1653c308e5f6089772abb1503f861a0 Mon Sep 17 00:00:00 2001 From: Vishal Pandey Date: Tue, 14 Mar 2017 02:27:18 +0530 Subject: [PATCH 078/431] [ticket/11515] Space between if and braces Exactly one space between if and opening brace. PHPBB3-11515 --- phpBB/phpbb/config/config.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/phpbb/config/config.php b/phpBB/phpbb/config/config.php index 239e4c2e552..0a867342f5a 100644 --- a/phpBB/phpbb/config/config.php +++ b/phpBB/phpbb/config/config.php @@ -160,7 +160,7 @@ public function set_atomic($key, $old_value, $new_value, $use_cache = true) */ public function ensure_lock($key, $new_value) { - if(isset($this->config[$key]) && $this->config[$key] == $new_value) + if (isset($this->config[$key]) && $this->config[$key] == $new_value) { return true; } From b98acb9409bcc3501c8244e7208bb45d29b8382d Mon Sep 17 00:00:00 2001 From: Vishal Pandey Date: Tue, 14 Mar 2017 17:19:41 +0530 Subject: [PATCH 079/431] [ticket/11515] Refactoring the patch. Removing else conditions. PHPBB3-11515 --- phpBB/phpbb/config/config.php | 5 +---- phpBB/phpbb/lock/db.php | 6 +----- phpBB/phpbb/lock/flock.php | 5 +---- 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/phpBB/phpbb/config/config.php b/phpBB/phpbb/config/config.php index 0a867342f5a..f4b670e8340 100644 --- a/phpBB/phpbb/config/config.php +++ b/phpBB/phpbb/config/config.php @@ -164,10 +164,7 @@ public function ensure_lock($key, $new_value) { return true; } - else - { - throw new \phpbb\exception\http_exception(500, 'Failure while aqcuiring locks.'); - } + throw new \phpbb\exception\http_exception(500, 'Failure while aqcuiring locks.'); } /** diff --git a/phpBB/phpbb/lock/db.php b/phpBB/phpbb/lock/db.php index d9ad4d3b97c..eea919f8f79 100644 --- a/phpBB/phpbb/lock/db.php +++ b/phpBB/phpbb/lock/db.php @@ -117,11 +117,7 @@ public function acquire() return true; } } - else - { - - return $this->locked; - } + return $this->locked; } /** diff --git a/phpBB/phpbb/lock/flock.php b/phpBB/phpbb/lock/flock.php index b496ed845e9..fa4cbe36907 100644 --- a/phpBB/phpbb/lock/flock.php +++ b/phpBB/phpbb/lock/flock.php @@ -105,10 +105,7 @@ public function acquire() { return (bool) $this->lock_fp; } - else - { - throw new \phpbb\exception\http_exception(500, 'Failure while aqcuiring locks.'); - } + throw new \phpbb\exception\http_exception(500, 'Failure while aqcuiring locks.'); } return (bool) $this->lock_fp; From f18743eb503f5f728e05f7ded96f9db4171739aa Mon Sep 17 00:00:00 2001 From: Vishal Pandey Date: Sat, 18 Mar 2017 22:37:16 +0530 Subject: [PATCH 080/431] [ticket/11515] Refactoring changes. Refactoring the code as suggested. PHPBB3-11515 --- phpBB/phpbb/config/config.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/phpBB/phpbb/config/config.php b/phpBB/phpbb/config/config.php index f4b670e8340..c619cae2fd0 100644 --- a/phpBB/phpbb/config/config.php +++ b/phpBB/phpbb/config/config.php @@ -150,12 +150,11 @@ public function set_atomic($key, $old_value, $new_value, $use_cache = true) /** * Checks configuration option's value only if the new_value matches the * current configuration value and the configuration value does exist.Called - *only after set_atomic has been called. + * only after set_atomic has been called. * * @param string $key The configuration option's name - * @param string $old_value Current configuration value * @param string $new_value New configuration value - * @throws \phpbb\exception\http_exception when configuration value is set and not equal to *new_value. + * @throws \phpbb\exception\http_exception when config value is set and not equal to new_value. * @return bool True if the value was changed, false otherwise. */ public function ensure_lock($key, $new_value) From 6102a3f6ae5b363a525ed70938e20deaab559c72 Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 9 Mar 2017 16:34:17 -0500 Subject: [PATCH 081/431] [ticket/15115] Add .postcss-sorting.json file allow for editors to auto sort on save https://github.com/hudochenkov/postcss-sorting#usage PHPBB3-15115 --- .postcss-sorting.json | 241 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 241 insertions(+) create mode 100644 .postcss-sorting.json diff --git a/.postcss-sorting.json b/.postcss-sorting.json new file mode 100644 index 00000000000..af119c28c45 --- /dev/null +++ b/.postcss-sorting.json @@ -0,0 +1,241 @@ +{ + "order": [ + "custom-properties", + "dollar-variables", + "at-rules", + "declarations", + { + "type": "at-rule", + "name": "media" + }, + "rules" + ], + "properties-order": [ + { + "emptyLineBefore": false, + "properties": [ + "-moz-osx-font-smoothing", + "-webkit-font-smoothing", + "font", + "font-family", + "font-size", + "font-weight", + "font-style", + "font-variant", + "font-size-adjust", + "font-stretch", + "font-effect", + "font-emphasize", + "font-emphasize-position", + "font-emphasize-style", + "font-smooth", + "line-height", + "text-align", + "text-align-last", + "vertical-align", + "white-space", + "text-decoration", + "text-emphasis", + "text-emphasis-color", + "text-emphasis-style", + "text-emphasis-position", + "text-indent", + "text-justify", + "letter-spacing", + "word-spacing", + "writing-mode", + "text-outline", + "text-transform", + "text-wrap", + "text-overflow", + "text-overflow-ellipsis", + "text-overflow-mode", + "word-wrap", + "word-break", + "tab-size", + "hyphens" + ] + }, + { + "emptyLineBefore": false, + "properties": [ + "background", + "background-color", + "background-image", + "background-repeat", + "background-attachment", + "background-position", + "background-position-x", + "background-position-y", + "background-clip", + "background-origin", + "background-size", + "interpolation-mode", + "filter" + ] + }, + { + "emptyLineBefore": false, + "properties": [ + "border", + "border-width", + "border-style", + "border-color", + "border-top", + "border-top-width", + "border-top-style", + "border-top-color", + "border-right", + "border-right-width", + "border-right-style", + "border-right-color", + "border-bottom", + "border-bottom-width", + "border-bottom-style", + "border-bottom-color", + "border-left", + "border-left-width", + "border-left-style", + "border-left-color", + "border-radius", + "border-top-left-radius", + "border-top-right-radius", + "border-bottom-right-radius", + "border-bottom-left-radius", + "border-image", + "border-image-source", + "border-image-slice", + "border-image-width", + "border-image-outset", + "border-image-repeat", + "outline", + "outline-width", + "outline-style", + "outline-color", + "outline-offset" + ] + }, + { + "emptyLineBefore": false, + "properties": [ + "box-decoration-break", + "box-shadow", + "text-shadow" + ] + }, + { + "emptyLineBefore": false, + "properties": [ + "color", + "opacity" + ] + }, + { + "emptyLineBefore": false, + "properties": [ + "position", + "z-index", + "top", + "right", + "bottom", + "left" + ] + }, + { + "emptyLineBefore": false, + "properties": [ + "display", + "visibility", + "float", + "clear", + "overflow", + "overflow-x", + "overflow-y", + "clip", + "zoom", + "flex", + "flex-direction", + "flex-order", + "flex-pack", + "flex-align", + "flex-basis", + "flex-grow", + "flex-shrink", + "flex-wrap", + "justify-content", + "align-items", + "align-self" + ] + }, + { + "emptyLineBefore": false, + "properties": [ + "box-sizing", + "width", + "min-width", + "max-width", + "height", + "min-height", + "max-height", + "margin", + "margin-top", + "margin-right", + "margin-bottom", + "margin-left", + "padding", + "padding-top", + "padding-right", + "padding-bottom", + "padding-left" + ] + }, + { + "emptyLineBefore": false, + "properties": [ + "table-layout", + "empty-cells", + "caption-side", + "border-spacing", + "border-collapse", + "list-style", + "list-style-position", + "list-style-type", + "list-style-image" + ] + }, + { + "emptyLineBefore": false, + "properties": [ + "content", + "quotes", + "counter-reset", + "counter-increment", + "resize", + "cursor", + "user-select", + "nav-index", + "nav-up", + "nav-right", + "nav-down", + "nav-left", + "transition", + "transition-delay", + "transition-timing-function", + "transition-duration", + "transition-property", + "transform", + "transform-origin", + "animation", + "animation-name", + "animation-duration", + "animation-play-state", + "animation-timing-function", + "animation-delay", + "animation-iteration-count", + "animation-direction", + "pointer-events" + ] + } + ], + "unspecified-properties-position": "bottomAlphabetical" +} From 2ca1402476d821c8f15b4b6c71a2aa620948629e Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 9 Mar 2017 16:34:53 -0500 Subject: [PATCH 082/431] [ticket/15115] Update stylelintrc & pkg.json files PHPBB3-15115 --- .stylelintrc | 840 ++++++++++++++++++++------------------------- phpBB/package.json | 4 +- 2 files changed, 376 insertions(+), 468 deletions(-) diff --git a/.stylelintrc b/.stylelintrc index b069001a955..094033df348 100644 --- a/.stylelintrc +++ b/.stylelintrc @@ -1,468 +1,376 @@ { - "rules": { - "color-hex-case": "lower", - "color-hex-length": "long", - "color-named": "never", - "color-no-invalid-hex": true, - - "font-family-name-quotes": "always-where-recommended", - - "function-calc-no-unspaced-operator": true, - "function-comma-newline-after": "always-multi-line", - "function-comma-newline-before": "never-multi-line", - "function-comma-space-after": "always-single-line", - "function-comma-space-before": "never", - "function-linear-gradient-no-nonstandard-direction": true, - "function-max-empty-lines": 0, - "function-name-case": "lower", - "function-parentheses-newline-inside": "always-multi-line", - "function-parentheses-space-inside": "never-single-line", - "function-url-quotes": "always", - "function-whitespace-after": "always", - - "number-leading-zero": "always", - "number-max-precision": 3, - "number-no-trailing-zeros": true, - - "string-no-newline": true, - "string-quotes": single, - - "length-zero-no-unit": true, - - "unit-case": "lower", - "unit-no-unknown": true, - - "value-keyword-case": lower, - - "value-list-comma-newline-after": "always-multi-line", - "value-list-comma-newline-before": "never-multi-line", - "value-list-comma-space-after": "always-single-line", - "value-list-comma-space-before": "never", - "value-list-max-empty-lines": 0, - - "shorthand-property-no-redundant-values": true, - - "property-case": "lower", - "property-no-unknown": true, - - "keyframe-declaration-no-important": true, - - "declaration-bang-space-after": "never", - "declaration-bang-space-before": "always", - "declaration-colon-newline-after": "always-multi-line", - "declaration-colon-space-after": "always-single-line", - "declaration-colon-space-before": "never", - "declaration-empty-line-before": "never", - - "declaration-block-no-duplicate-properties": true, - "declaration-block-no-ignored-properties": true, - "declaration-block-no-shorthand-property-overrides": true, - "declaration-block-semicolon-newline-after": "always-multi-line", - "declaration-block-semicolon-newline-before": "never-multi-line", - "declaration-block-semicolon-space-after": "always-single-line", - "declaration-block-semicolon-space-before": "never", - "declaration-block-single-line-max-declarations": 1, - "declaration-block-trailing-semicolon": "always", - - "block-closing-brace-empty-line-before": "never", - "block-closing-brace-newline-after": "always", - "block-closing-brace-newline-before": "always-multi-line", - "block-closing-brace-space-after": "always-single-line", - "block-closing-brace-space-before": "always-single-line", - "block-no-empty": true, - "block-opening-brace-newline-after": "always-multi-line", - "block-opening-brace-space-after": "always-single-line", - "block-opening-brace-space-before": "always", - - "selector-attribute-brackets-space-inside": "never", - "selector-attribute-operator-space-after": "never", - "selector-attribute-operator-space-before": "never", - "selector-attribute-quotes": "always", - "selector-combinator-space-after": "always", - "selector-combinator-space-before": "always", - "selector-descendant-combinator-no-non-space": true, - "selector-max-compound-selectors": 3, - "selector-no-empty": true, - "selector-no-id": true, - "selector-no-qualifying-type": [ - true, { - "ignore": ["attribute"] - } - ], - "selector-pseudo-class-case": "lower", - "selector-pseudo-class-no-unknown": true, - "selector-pseudo-class-parentheses-space-inside": "never", - "selector-pseudo-element-case": "lower", - "selector-pseudo-element-colon-notation": "single", - "selector-pseudo-element-no-unknown": true, - "selector-type-case": "lower", - "selector-type-no-unknown": true, - "selector-max-empty-lines": 0, - - "selector-list-comma-newline-after": "always", - "selector-list-comma-space-before": "never", - - "rule-nested-empty-line-before": [ - "always-multi-line", { - "ignore": ["after-comment"], - "except": ["first-nested"] - } - ], - "rule-non-nested-empty-line-before": [ - "always-multi-line", { - "ignore": ["after-comment"] - } - ], - - "media-feature-colon-space-after": "always", - "media-feature-colon-space-before": "never", - "media-feature-name-case": "lower", - "media-feature-no-missing-punctuation": true, - "media-feature-parentheses-space-inside": "never", - "media-feature-range-operator-space-after": "always", - "media-feature-range-operator-space-before": "always", - - "media-query-list-comma-newline-after": "always-multi-line", - "media-query-list-comma-space-after": "always-single-line", - "media-query-list-comma-space-before": "never", - - "at-rule-empty-line-before": [ - "always", { - "except": ["blockless-group", "all-nested", "first-nested"], - "ignore": ["after-comment"] - } - ], - "at-rule-name-case": "lower", - "at-rule-name-space-after": "always-single-line", - "at-rule-semicolon-newline-after": "always", - - "comment-empty-line-before": [ - "always", { - "except": ["first-nested"], - "ignore": ["stylelint-commands"] - } - ], - "comment-whitespace-inside": "always", - - "indentation": "tab", - "max-empty-lines": 5, - - "no-duplicate-selectors": true, - "no-eol-whitespace": true, - "no-extra-semicolons": true, - "no-indistinguishable-colors": [ - true, { - "ignore": ["#fafafa", "#f5f5f5", "#eeeeee", "#ffffff" ] - } - ], - "no-invalid-double-slash-comments": true, - "no-missing-end-of-source-newline": true, - - "declaration-block-properties-order": [ - [ - "-moz-osx-font-smoothing", - "-webkit-font-smoothing", - "font", - "font-effect", - "font-emphasize", - "font-emphasize-position", - "font-emphasize-style", - "font-family", - "font-feature-settings", - "-webkit-font-feature-settings", - "font-size", - "font-size-adjust", - "font-smooth", - "font-stretch", - "font-style", - "font-variant", - "font-weight", - "-moz-hyphens", - "-webkit-hyphens", - "hyphens", - "letter-spacing", - "line-height", - "-moz-tab-size", - "-o-tab-size", - "-ms-text-size-adjust", - "-webkit-text-size-adjust", - "tab-size", - "text-align", - "-moz-text-align-last", - "-ms-text-align-last", - "-webkit-text-align-last", - "text-align-last", - "-webkit-text-decoration-skip", - "text-decoration", - "text-emphasis", - "text-emphasis-color", - "text-emphasis-position", - "text-emphasis-style", - "text-indent", - "-ms-text-justify", - "text-justify", - "text-outline", - "-ms-text-overflow", - "text-overflow", - "text-overflow-ellipsis", - "text-overflow-mode", - "text-transform", - "text-wrap", - "vertical-align", - "white-space", - "-ms-word-break", - "word-break", - "word-spacing", - "-ms-word-wrap", - "-ms-writing-mode", - "word-wrap", - - "background", - "background-attachment", - "-moz-background-clip", - "-webkit-background-clip", - "background-clip", - "background-color", - "background-image", - "background-origin", - "background-position", - "-ms-background-position-x", - "background-position-x", - "-ms-background-position-y", - "background-position-y", - "background-repeat", - "-moz-background-size", - "-o-background-size", - "-webkit-background-size", - "background-size", - "border", - "border-color", - "border-collapse", - "-o-border-image", - "-moz-border-image", - "-webkit-border-image", - "border-image", - "-moz-border-image-outset", - "-o-border-image-outset", - "-webkit-border-image-outset", - "border-image-outset", - "-moz-border-image-repeat", - "-o-border-image-repeat", - "-webkit-border-image-repeat", - "border-image-repeat", - "-moz-border-image-slice", - "-o-border-image-slice", - "-webkit-border-image-slice", - "border-image-slice", - "-moz-border-image-source", - "-o-border-image-source", - "-webkit-border-image-source", - "border-image-source", - "-moz-border-image-width", - "-o-border-image-width", - "-webkit-border-image-width", - "border-image-width", - "-moz-border-radius", - "-webkit-border-radius", - "border-radius", - "border-top", - "border-top-color", - "border-top-left-radius", - "-moz-border-radius-topleft", - "-webkit-border-top-left-radius", - "border-top-right-radius", - "-moz-border-radius-topright", - "-webkit-border-top-right-radius", - "border-top-style", - "border-top-width", - "border-right", - "border-right-color", - "border-right-style", - "border-right-width", - "border-bottom", - "border-bottom-color", - "-moz-border-radius-bottomleft", - "-webkit-border-bottom-left-radius", - "border-bottom-left-radius", - "-moz-border-radius-bottomright", - "-webkit-border-bottom-right-radius", - "border-bottom-right-radius", - "border-bottom-style", - "border-bottom-width", - "border-left", - "border-left-color", - "border-left-style", - "border-left-width", - "border-spacing", - "border-style", - "border-width", - "box-decoration-break", - "-moz-box-shadow", - "-webkit-box-shadow", - "box-shadow", - "color", - "opacity", - "outline", - "outline-color", - "outline-offset", - "outline-style", - "outline-width", - "text-shadow", - "-ms-interpolation-mode", - "-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", - "-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient", - "filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", - "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", - "filter:progid:DXImageTransform.Microsoft.gradient", - - "position", - "top", - "right", - "bottom", - "left", - "z-index", - - "display", - "visibility", - "float", - "clear", - "-ms-overflow-x", - "-ms-overflow-y", - "-ms-overflow-style", - "overflow", - "overflow-x", - "overflow-y", - "clip", - "zoom", - "-webkit-flex", - "flex-direction", - "flex-order", - "flex-pack", - "flex-align", - "flex", - - "-webkit-box-sizing", - "-moz-box-sizing", - "box-sizing", - "width", - "min-width", - "max-width", - "height", - "min-height", - "max-height", - "margin", - "margin-top", - "margin-right", - "margin-bottom", - "margin-left", - "padding", - "padding-top", - "padding-right", - "padding-bottom", - "padding-left", - - "table-layout", - "empty-cells", - "caption-side", - "list-style", - "list-style-position", - "list-style-type", - "list-style-image", - - "content", - "quotes", - "counter-reset", - "counter-increment", - "resize", - "cursor", - "-moz-user-select", - "-ms-user-select", - "-webkit-user-select", - "user-select", - "nav-index", - "nav-up", - "nav-right", - "nav-down", - "nav-left", - "-webkit-transition", - "-moz-transition", - "-ms-transition", - "-o-transition", - "transition", - "-webkit-transition-delay", - "-moz-transition-delay", - "-ms-transition-delay", - "-o-transition-delay", - "transition-delay", - "-webkit-transition-timing-function", - "-moz-transition-timing-function", - "-ms-transition-timing-function", - "-o-transition-timing-function", - "transition-timing-function", - "-webkit-transition-duration", - "-moz-transition-duration", - "-ms-transition-duration", - "-o-transition-duration", - "transition-duration", - "-webkit-transition-property", - "-moz-transition-property", - "-ms-transition-property", - "-o-transition-property", - "transition-property", - "-webkit-transform", - "-moz-transform", - "-ms-transform", - "-o-transform", - "transform", - "-webkit-transform-origin", - "-moz-transform-origin", - "-ms-transform-origin", - "-o-transform-origin", - "transform-origin", - "-webkit-animation", - "-moz-animation", - "-ms-animation", - "-o-animation", - "animation", - "-webkit-animation-name", - "-moz-animation-name", - "-ms-animation-name", - "-o-animation-name", - "animation-name", - "-webkit-animation-duration", - "-moz-animation-duration", - "-ms-animation-duration", - "-o-animation-duration", - "animation-duration", - "-webkit-animation-play-state", - "-moz-animation-play-state", - "-ms-animation-play-state", - "-o-animation-play-state", - "animation-play-state", - "-webkit-animation-timing-function", - "-moz-animation-timing-function", - "-ms-animation-timing-function", - "-o-animation-timing-function", - "animation-timing-function", - "-webkit-animation-delay", - "-moz-animation-delay", - "-ms-animation-delay", - "-o-animation-delay", - "animation-delay", - "-webkit-animation-iteration-count", - "-moz-animation-iteration-count", - "-ms-animation-iteration-count", - "-o-animation-iteration-count", - "animation-iteration-count", - "-webkit-animation-direction", - "-moz-animation-direction", - "-ms-animation-direction", - "-o-animation-direction", - "animation-direction", - "pointer-events", - "-moz-appearance", - "-webkit-appearance" - ], { unspecified: "ignore" } - ] - } + "plugins": [ + "stylelint-order" + ], + "ignoreFiles": [ + "./phpBB/styles/prosilver/theme/normalize.css", + ], + "rules": { + "at-rule-name-case": "lower", + "at-rule-name-newline-after": "always-multi-line", + "at-rule-name-space-after": "always-single-line", + "at-rule-no-vendor-prefix": true, + "at-rule-semicolon-newline-after": "always", + + "block-closing-brace-newline-after": "always", + "block-closing-brace-newline-before": "always-multi-line", + "block-closing-brace-space-after": "always-single-line", + "block-closing-brace-space-before": "always-single-line", + + "block-no-empty": true, + + "block-opening-brace-newline-after": "always", + "block-opening-brace-space-after": "always-single-line", + "block-opening-brace-space-before": "always", + + "color-hex-case": "lower", + "color-hex-length": "long", + "color-named": "never", + "color-no-invalid-hex": true, + + "comment-empty-line-before": [ + "always", { + "except": ["first-nested"], + "ignore": ["stylelint-commands"] + } + ], + "comment-whitespace-inside": "always", + + "declaration-bang-space-after": "never", + "declaration-bang-space-before": "always", + + "declaration-block-no-shorthand-property-overrides": true, + "declaration-block-semicolon-newline-after": "always-multi-line", + "declaration-block-semicolon-newline-before": "never-multi-line", + "declaration-block-semicolon-space-after": "always-single-line", + "declaration-block-semicolon-space-before": "never", + "declaration-block-trailing-semicolon": "always", + "declaration-block-single-line-max-declarations": 1, + "declaration-block-no-duplicate-properties": [ + true, { + "ignore": ["consecutive-duplicates-with-different-values"] + } + ], + + "declaration-colon-newline-after": "always-multi-line", + "declaration-colon-space-after": "always-single-line", + "declaration-colon-space-before": "never", + + "declaration-empty-line-before": "never", + + "declaration-property-unit-blacklist": { + "line-height": ["rem", "em", "%"] + }, + "declaration-property-unit-whitelist": { + "height": ["px", "%"], + "width": ["px", "%"], + "font-size": ["px", "rem", "%"], + "margin-left": ["px", "rem", "%"], + "margin-right": ["px", "rem", "%"], + "margin-top": ["px", "rem", "%"], + "margin-bottom": ["px", "rem", "%"], + "padding-left": ["px", "rem"], + "padding-right": ["px", "rem"], + "padding-top": ["px", "rem"], + "padding-bottom": ["px", "rem"] + }, + + "font-family-name-quotes": "always-where-recommended", + "function-calc-no-unspaced-operator": true, + + "function-comma-newline-after": "never-multi-line", + "function-comma-newline-before": "never-multi-line", + "function-comma-space-after": "always-single-line", + "function-comma-space-before": "never-single-line", + + "function-linear-gradient-no-nonstandard-direction": true, + "function-max-empty-lines": 5, + + "function-name-case": "lower", + "function-parentheses-newline-inside": "always-multi-line", + "function-parentheses-space-inside": "never-single-line", + "function-url-quotes": "always", + "function-whitespace-after": "always", + + "indentation": "tab", + + "length-zero-no-unit": true, + + "max-empty-lines": 10, + "max-line-length": 180, + "max-nesting-depth": 4, + + "media-feature-colon-space-after": "always", + "media-feature-colon-space-before": "never", + "media-feature-name-case": "lower", + "media-feature-parentheses-space-inside": "never", + "media-feature-range-operator-space-after": "always", + "media-feature-range-operator-space-before": "always", + "media-query-list-comma-newline-after": "always-multi-line", + "media-query-list-comma-newline-before": "never-multi-line", + "media-query-list-comma-space-after": "always-single-line", + "media-query-list-comma-space-before": "never", + + "no-duplicate-selectors": true, + "no-empty-source": true, + "no-eol-whitespace": true, + "no-extra-semicolons": true, + "no-missing-end-of-source-newline": true, + "no-unknown-animations": true, + + "number-leading-zero": "always", + "number-max-precision": 10, + "number-no-trailing-zeros": true, + + "property-case": "lower", + "property-no-unknown": true, + + "rule-empty-line-before": ["always", { + "ignore": ["after-comment"], + "except": ["first-nested"] + }], + + "selector-attribute-brackets-space-inside": "never", + "selector-attribute-operator-space-after": "never", + "selector-attribute-operator-space-before": "never", + "selector-attribute-quotes": "always", + + "selector-combinator-space-after": "always", + "selector-combinator-space-before": "always", + + "selector-list-comma-newline-after": "always", + "selector-list-comma-space-before": "never", + + "selector-max-empty-lines": 5, + "selector-max-compound-selectors": 5, + + "selector-pseudo-class-case": "lower", + "selector-pseudo-class-no-unknown": true, + "selector-pseudo-class-parentheses-space-inside": "never", + + "selector-pseudo-element-case": "lower", + "selector-pseudo-element-colon-notation": "single", + "selector-pseudo-element-no-unknown": true, + + "selector-type-case": "lower", + "selector-type-no-unknown": true, + + "selector-descendant-combinator-no-non-space": true, + "selector-no-id": true, + "selector-no-qualifying-type": [ + true, { + "ignore": ["attribute"] + } + ], + + "shorthand-property-no-redundant-values": true, + + "string-no-newline": true, + "string-quotes": "double", + + "unit-case": "lower", + "unit-no-unknown": true, + + "value-list-comma-newline-after": "always-multi-line", + "value-list-comma-newline-before": "never-multi-line", + "value-list-comma-space-after": "always-single-line", + "value-list-comma-space-before": "never", + "order/declaration-block-order": [ + "custom-properties", + "dollar-variables", + "at-rules", + "declarations", + { + "type": "at-rule", + "name": "media" + }, + "rules" + ], + "order/declaration-block-properties-specified-order": [ + "-moz-osx-font-smoothing", + "-webkit-font-smoothing", + "font", + "font-family", + "font-size", + "font-weight", + "font-style", + "font-variant", + "font-size-adjust", + "font-stretch", + "font-effect", + "font-emphasize", + "font-emphasize-position", + "font-emphasize-style", + "font-smooth", + "line-height", + "text-align", + "text-align-last", + "vertical-align", + "white-space", + "text-decoration", + "text-emphasis", + "text-emphasis-color", + "text-emphasis-style", + "text-emphasis-position", + "text-indent", + "text-justify", + "letter-spacing", + "word-spacing", + "writing-mode", + "text-outline", + "text-transform", + "text-wrap", + "text-overflow", + "text-overflow-ellipsis", + "text-overflow-mode", + "word-wrap", + "word-break", + "tab-size", + "hyphens", + + "background", + "background-color", + "background-image", + "background-repeat", + "background-attachment", + "background-position", + "background-position-x", + "background-position-y", + "background-clip", + "background-origin", + "background-size", + "interpolation-mode", + "filter", + + "border", + "border-width", + "border-style", + "border-color", + "border-top", + "border-top-width", + "border-top-style", + "border-top-color", + "border-right", + "border-right-width", + "border-right-style", + "border-right-color", + "border-bottom", + "border-bottom-width", + "border-bottom-style", + "border-bottom-color", + "border-left", + "border-left-width", + "border-left-style", + "border-left-color", + "border-radius", + "border-top-left-radius", + "border-top-right-radius", + "border-bottom-right-radius", + "border-bottom-left-radius", + "border-image", + "border-image-source", + "border-image-slice", + "border-image-width", + "border-image-outset", + "border-image-repeat", + "outline", + "outline-width", + "outline-style", + "outline-color", + "outline-offset", + + "box-decoration-break", + "box-shadow", + "text-shadow", + + "color", + "opacity", + + "position", + "z-index", + "top", + "right", + "bottom", + "left", + + "display", + "visibility", + "float", + "clear", + "overflow", + "overflow-x", + "overflow-y", + "clip", + "zoom", + "flex", + "flex-direction", + "flex-order", + "flex-pack", + "flex-align", + "flex-basis", + "flex-grow", + "flex-shrink", + "flex-wrap", + "justify-content", + "align-items", + "align-self", + + "box-sizing", + "width", + "min-width", + "max-width", + "height", + "min-height", + "max-height", + "margin", + "margin-top", + "margin-right", + "margin-bottom", + "margin-left", + "padding", + "padding-top", + "padding-right", + "padding-bottom", + "padding-left", + + "table-layout", + "empty-cells", + "caption-side", + "border-spacing", + "border-collapse", + "list-style", + "list-style-position", + "list-style-type", + "list-style-image", + + "content", + "quotes", + "counter-reset", + "counter-increment", + "resize", + "cursor", + "user-select", + "nav-index", + "nav-up", + "nav-right", + "nav-down", + "nav-left", + "transition", + "transition-delay", + "transition-timing-function", + "transition-duration", + "transition-property", + "transform", + "transform-origin", + "animation", + "animation-name", + "animation-duration", + "animation-play-state", + "animation-timing-function", + "animation-delay", + "animation-iteration-count", + "animation-direction", + "pointer-events" + ] + } } diff --git a/phpBB/package.json b/phpBB/package.json index fc85b20a99d..e97fc5cc780 100644 --- a/phpBB/package.json +++ b/phpBB/package.json @@ -28,7 +28,7 @@ }, "homepage": "https://www.phpbb.com", "devDependencies": { - "stylelint": "^7.7.1", - "stylelint-order": "^0.3.0" + "stylelint": "7.8.0", + "stylelint-order": "0.3.0" } } From ec71279a77889474c4ef3bd912b4a4c94aaefbae Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 9 Mar 2017 16:35:28 -0500 Subject: [PATCH 083/431] [ticket/15115] Fix errors PHPBB3-15115 --- phpBB/styles/prosilver/theme/base.css | 12 +- phpBB/styles/prosilver/theme/bidi.css | 20 ++- phpBB/styles/prosilver/theme/buttons.css | 12 +- phpBB/styles/prosilver/theme/colours.css | 184 +++++++++++++------- phpBB/styles/prosilver/theme/common.css | 49 +++--- phpBB/styles/prosilver/theme/content.css | 34 ++-- phpBB/styles/prosilver/theme/cp.css | 17 +- phpBB/styles/prosilver/theme/forms.css | 90 ++++++++-- phpBB/styles/prosilver/theme/icons.css | 4 +- phpBB/styles/prosilver/theme/links.css | 12 +- phpBB/styles/prosilver/theme/plupload.css | 10 +- phpBB/styles/prosilver/theme/print.css | 12 +- phpBB/styles/prosilver/theme/responsive.css | 21 ++- phpBB/styles/prosilver/theme/stylesheet.css | 24 +-- phpBB/styles/prosilver/theme/tweaks.css | 11 +- phpBB/styles/prosilver/theme/utilities.css | 4 +- 16 files changed, 340 insertions(+), 176 deletions(-) diff --git a/phpBB/styles/prosilver/theme/base.css b/phpBB/styles/prosilver/theme/base.css index 5b64943704a..3c5fdb11d52 100644 --- a/phpBB/styles/prosilver/theme/base.css +++ b/phpBB/styles/prosilver/theme/base.css @@ -18,13 +18,17 @@ /* Define your base font-size here; most elements will inherit this. */ html { - font-size: 1em; /* Assuming 16px... */ - line-height: 1.5; /* 24px (This is now our magic number; all subsequent margin-bottoms and line-heights want to be a multiple of this number in order to maintain vertical rhythm.) */ + font-size: 16px; /* Assuming 16px... */ + + /* 24px (This is now our magic number; all subsequent margin-bottoms and + line-heights want to be a multiple of this number in order to maintain + vertical rhythm.) */ + line-height: 1.5; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } body { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff; color: #333333; } @@ -116,7 +120,7 @@ ul { * This prevents an unwanted focus outline from appearing around elements that * might still respond to pointer events. */ -[tabindex='-1']:focus { +[tabindex="-1"]:focus { outline: none !important; } diff --git a/phpBB/styles/prosilver/theme/bidi.css b/phpBB/styles/prosilver/theme/bidi.css index d628f0a5628..a5b9b51dbf9 100644 --- a/phpBB/styles/prosilver/theme/bidi.css +++ b/phpBB/styles/prosilver/theme/bidi.css @@ -3,6 +3,7 @@ /* -------------------------------------------------------------- */ /* stylelint-disable selector-max-compound-selectors */ /* stylelint-disable selector-no-qualifying-type */ +/* stylelint-disable declaration-property-unit-whitelist */ /** * common.css @@ -411,8 +412,8 @@ li.breadcrumbs span:first-child > a { } .rtl ul.topiclist dd { - border-right-style: solid; border-right-width: 1px; + border-right-style: solid; border-left: none; float: right; } @@ -601,8 +602,8 @@ li.breadcrumbs span:first-child > a { .rtl .pollbar4, .rtl .pollbar5 { border-right: none; - border-left-style: solid; border-left-width: 1px; + border-left-style: solid; } /* Poster profile block @@ -615,8 +616,8 @@ li.breadcrumbs span:first-child > a { } .rtl .pm .postprofile { - border-right-style: solid; border-right-width: 1px; + border-right-style: solid; border-left: none; } @@ -669,8 +670,8 @@ li.breadcrumbs span:first-child > a { ---------------------------------------- */ .rtl .contact-icons a { border-right: none; - border-left-style: dotted; border-left-width: 1px; + border-left-style: dotted; float: right; } @@ -810,8 +811,8 @@ li.breadcrumbs span:first-child > a { /* PM marking colours */ .rtl .pm-legend { - border-right-style: solid; border-right-width: 10px; + border-right-style: solid; border-left-width: 0; padding-right: 3px; padding-left: 0; @@ -958,9 +959,9 @@ li.breadcrumbs span:first-child > a { } .rtl .search-box .inputbox { - border-radius: 0 4px 4px 0; border-right-width: 1px; border-left-width: 0; + border-radius: 0 4px 4px 0; float: right; padding: 3px; } @@ -971,9 +972,9 @@ li.breadcrumbs span:first-child > a { } .rtl .button-search-end { - border-radius: 4px 0 0 4px; border-right-width: 0; border-left-width: 1px; + border-radius: 4px 0 0 4px; } .rtl .search-header .button-search-end { @@ -1137,4 +1138,7 @@ li.breadcrumbs span:first-child > a { margin-right: 0; } } -/* stylelint-enable */ + +/* stylelint-enable selector-max-compound-selectors */ +/* stylelint-enable selector-no-qualifying-type */ +/* stylelint-enable declaration-property-unit-whitelist */ diff --git a/phpBB/styles/prosilver/theme/buttons.css b/phpBB/styles/prosilver/theme/buttons.css index 9fed9e128b2..ed1b86ab25b 100644 --- a/phpBB/styles/prosilver/theme/buttons.css +++ b/phpBB/styles/prosilver/theme/buttons.css @@ -2,8 +2,10 @@ $Buttons /* -------------------------------------------------------------- */ +/* stylelint-disable declaration-property-unit-whitelist */ + .button { - font-family: 'Open Sans', 'Droid Sans', Verdana, Arial, Helvetica; + font-family: "Open Sans", "Droid Sans", Verdana, Arial, Helvetica; font-size: 13px; font-weight: normal; line-height: 1.4; @@ -59,8 +61,8 @@ } .button-search-end { - border-radius: 0 4px 4px 0; border-left-width: 0; + border-radius: 0 4px 4px 0; } .search-header .button-search, @@ -173,8 +175,8 @@ button::-moz-focus-inner { ------------------------------------------------- */ .small-icon { background-image: none; - background-position: 0 50%; background-repeat: no-repeat; + background-position: 0 50%; } .dropdown .small-icon { @@ -191,7 +193,7 @@ button::-moz-focus-inner { ul.linklist.bulletin > li.small-icon:before { display: none; } -/* stylelint-enable */ +/* stylelint-enable selector-no-qualifying-type */ .dropdown .small-icon > a { display: block; @@ -205,3 +207,5 @@ ul.linklist.bulletin > li.small-icon:before { padding-right: 19px; padding-left: 0; } + +/* stylelint-enable declaration-property-unit-whitelist */ diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index 85026130204..9113f000b13 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -162,7 +162,7 @@ ul.zebra-list li:nth-child(even) { } .site_logo { - background-image: url('./images/site_logo.gif'); + background-image: url("./images/site_logo.gif"); } /* horizontal lists */ @@ -338,7 +338,7 @@ p.post-notice { ul.forums { background-color: #eef5f9; /* old browsers */ /* ff3.6+ */ background-image: linear-gradient(to bottom, #d2e0eb 0%, #eef5f9 100%); /* w3c */ - filter: progid:dximagetransform.microsoft.gradient(startcolorstr='#d2e0eb', endcolorstr='#eef5f9', gradienttype=0); /* ie6-9 */ + filter: progid:dximagetransform.microsoft.gradient(startcolorstr="#d2e0eb", endcolorstr="#eef5f9", gradienttype=0); /* ie6-9 */ } ul.topiclist li { @@ -426,12 +426,12 @@ dl.faq dt { /* quote block */ blockquote { background-color: #ebeadd; - background-image: url('./images/quote.gif'); + background-image: url("./images/quote.gif"); border-color: #dbdbce; } .rtl blockquote { - background-image: url('./images/quote_rtl.gif'); + background-image: url("./images/quote_rtl.gif"); } blockquote blockquote { @@ -595,7 +595,7 @@ fieldset.polls dd div { } .online { - background-image: url('./en/icon_user_online.gif'); + background-image: url("./en/icon_user_online.gif"); } dd.profile-warnings { @@ -629,20 +629,20 @@ dd.profile-warnings { .button { background-color: #e9e9e9; /* old browsers */ /* ff3.6+ */ background-image: linear-gradient(to bottom, #ffffff 0%, #e9e9e9 100%); /* w3c */ + filter: progid:dximagetransform.microsoft.gradient(startcolorstr="#ffffff", endcolorstr="#e9e9e9", gradienttype=0); /* ie6-9 */ border-color: #c7c3bf; -webkit-box-shadow: 0 0 0 1px #ffffff inset; box-shadow: 0 0 0 1px #ffffff inset; color: #d31141; - filter: progid:dximagetransform.microsoft.gradient(startcolorstr='#ffffff', endcolorstr='#e9e9e9', gradienttype=0); /* ie6-9 */ } .button:hover, .button:focus { background-color: #ffffff; /* old browsers */ /* ff3.6+ */ background-image: linear-gradient(to bottom, #e9e9e9 0%, #ffffff 100%); /* w3c */ + filter: progid:dximagetransform.microsoft.gradient(startcolorstr="#e9e9e9", endcolorstr="#ffffff", gradienttype=0); /* ie6-9 */ border-color: #0a8ed0; text-shadow: 1px 1px 0 #ffffff, -1px -1px 0 #ffffff, -1px -1px 0 rgba(188, 42, 77, 0.2); - filter: progid:dximagetransform.microsoft.gradient(startcolorstr='#e9e9e9', endcolorstr='#ffffff', gradienttype=0); /* ie6-9 */ } .button .icon, @@ -701,12 +701,12 @@ dd.profile-warnings { .pagination li a { background: #ecedee; + -webkit-filter: none; + filter: none; border-color: #b4bac0; -webkit-box-shadow: none; box-shadow: none; color: #5c758c; - -webkit-filter: none; - filter: none; } .pagination li.ellipsis span { @@ -725,11 +725,11 @@ dd.profile-warnings { .pagination .dropdown-visible a.dropdown-trigger, .nojs .pagination .dropdown-container:hover a.dropdown-trigger { background: #368ad2; - border-color: #368ad2; - color: #ffffff; - text-shadow: none; -webkit-filter: none; filter: none; + border-color: #368ad2; + text-shadow: none; + color: #ffffff; } /* search box */ @@ -747,7 +747,7 @@ dd.profile-warnings { /* icon images */ .contact-icon { - background-image: url('./images/icons_contact.png'); + background-image: url("./images/icons_contact.png"); } /* profile & navigation icons */ @@ -805,181 +805,181 @@ dd.profile-warnings { /* forum icons & topic icons */ .global_read { - background-image: url('./images/announce_read.gif'); + background-image: url("./images/announce_read.gif"); } .global_read_mine { - background-image: url('./images/announce_read_mine.gif'); + background-image: url("./images/announce_read_mine.gif"); } .global_read_locked { - background-image: url('./images/announce_read_locked.gif'); + background-image: url("./images/announce_read_locked.gif"); } .global_read_locked_mine { - background-image: url('./images/announce_read_locked_mine.gif'); + background-image: url("./images/announce_read_locked_mine.gif"); } .global_unread { - background-image: url('./images/announce_unread.gif'); + background-image: url("./images/announce_unread.gif"); } .global_unread_mine { - background-image: url('./images/announce_unread_mine.gif'); + background-image: url("./images/announce_unread_mine.gif"); } .global_unread_locked { - background-image: url('./images/announce_unread_locked.gif'); + background-image: url("./images/announce_unread_locked.gif"); } .global_unread_locked_mine { - background-image: url('./images/announce_unread_locked_mine.gif'); + background-image: url("./images/announce_unread_locked_mine.gif"); } .announce_read { - background-image: url('./images/announce_read.gif'); + background-image: url("./images/announce_read.gif"); } .announce_read_mine { - background-image: url('./images/announce_read_mine.gif'); + background-image: url("./images/announce_read_mine.gif"); } .announce_read_locked { - background-image: url('./images/announce_read_locked.gif'); + background-image: url("./images/announce_read_locked.gif"); } .announce_read_locked_mine { - background-image: url('./images/announce_read_locked_mine.gif'); + background-image: url("./images/announce_read_locked_mine.gif"); } .announce_unread { - background-image: url('./images/announce_unread.gif'); + background-image: url("./images/announce_unread.gif"); } .announce_unread_mine { - background-image: url('./images/announce_unread_mine.gif'); + background-image: url("./images/announce_unread_mine.gif"); } .announce_unread_locked { - background-image: url('./images/announce_unread_locked.gif'); + background-image: url("./images/announce_unread_locked.gif"); } .announce_unread_locked_mine { - background-image: url('./images/announce_unread_locked_mine.gif'); + background-image: url("./images/announce_unread_locked_mine.gif"); } .forum_link { - background-image: url('./images/forum_link.gif'); + background-image: url("./images/forum_link.gif"); } .forum_read { - background-image: url('./images/forum_read.gif'); + background-image: url("./images/forum_read.gif"); } .forum_read_locked { - background-image: url('./images/forum_read_locked.gif'); + background-image: url("./images/forum_read_locked.gif"); } .forum_read_subforum { - background-image: url('./images/forum_read_subforum.gif'); + background-image: url("./images/forum_read_subforum.gif"); } .forum_unread { - background-image: url('./images/forum_unread.gif'); + background-image: url("./images/forum_unread.gif"); } .forum_unread_locked { - background-image: url('./images/forum_unread_locked.gif'); + background-image: url("./images/forum_unread_locked.gif"); } .forum_unread_subforum { - background-image: url('./images/forum_unread_subforum.gif'); + background-image: url("./images/forum_unread_subforum.gif"); } .sticky_read { - background-image: url('./images/sticky_read.gif'); + background-image: url("./images/sticky_read.gif"); } .sticky_read_mine { - background-image: url('./images/sticky_read_mine.gif'); + background-image: url("./images/sticky_read_mine.gif"); } .sticky_read_locked { - background-image: url('./images/sticky_read_locked.gif'); + background-image: url("./images/sticky_read_locked.gif"); } .sticky_read_locked_mine { - background-image: url('./images/sticky_read_locked_mine.gif'); + background-image: url("./images/sticky_read_locked_mine.gif"); } .sticky_unread { - background-image: url('./images/sticky_unread.gif'); + background-image: url("./images/sticky_unread.gif"); } .sticky_unread_mine { - background-image: url('./images/sticky_unread_mine.gif'); + background-image: url("./images/sticky_unread_mine.gif"); } .sticky_unread_locked { - background-image: url('./images/sticky_unread_locked.gif'); + background-image: url("./images/sticky_unread_locked.gif"); } .sticky_unread_locked_mine { - background-image: url('./images/sticky_unread_locked_mine.gif'); + background-image: url("./images/sticky_unread_locked_mine.gif"); } .topic_moved { - background-image: url('./images/topic_moved.gif'); + background-image: url("./images/topic_moved.gif"); } .pm_read, .topic_read { - background-image: url('./images/topic_read.gif'); + background-image: url("./images/topic_read.gif"); } .topic_read_mine { - background-image: url('./images/topic_read_mine.gif'); + background-image: url("./images/topic_read_mine.gif"); } .topic_read_hot { - background-image: url('./images/topic_read_hot.gif'); + background-image: url("./images/topic_read_hot.gif"); } .topic_read_hot_mine { - background-image: url('./images/topic_read_hot_mine.gif'); + background-image: url("./images/topic_read_hot_mine.gif"); } .topic_read_locked { - background-image: url('./images/topic_read_locked.gif'); + background-image: url("./images/topic_read_locked.gif"); } .topic_read_locked_mine { - background-image: url('./images/topic_read_locked_mine.gif'); + background-image: url("./images/topic_read_locked_mine.gif"); } .pm_unread, .topic_unread { - background-image: url('./images/topic_unread.gif'); + background-image: url("./images/topic_unread.gif"); } .topic_unread_mine { - background-image: url('./images/topic_unread_mine.gif'); + background-image: url("./images/topic_unread_mine.gif"); } .topic_unread_hot { - background-image: url('./images/topic_unread_hot.gif'); + background-image: url("./images/topic_unread_hot.gif"); } .topic_unread_hot_mine { - background-image: url('./images/topic_unread_hot_mine.gif'); + background-image: url("./images/topic_unread_hot_mine.gif"); } .topic_unread_locked { - background-image: url('./images/topic_unread_locked.gif'); + background-image: url("./images/topic_unread_locked.gif"); } .topic_unread_locked_mine { - background-image: url('./images/topic_unread_locked_mine.gif'); + background-image: url("./images/topic_unread_locked_mine.gif"); } @@ -1033,10 +1033,10 @@ ul.cplist { .tabs .activetab > a:hover { background-color: #cadceb; /* old browsers */ /* ff3.6+ */ background-image: linear-gradient(to bottom, #e2f2ff 0%, #cadceb 100%); /* w3c */ + filter: progid:dximagetransform.microsoft.gradient(startcolorstr="#e2f2ff", endcolorstr="#cadceb", gradienttype=0); /* ie6-9 */ border-color: #cadceb; box-shadow: 0 1px 1px #f2f9ff inset; color: #333333; - filter: progid:dximagetransform.microsoft.gradient(startcolorstr='#e2f2ff', endcolorstr='#cadceb', gradienttype=0); /* ie6-9 */ } .tabs .activetab > a:hover { @@ -1069,26 +1069,26 @@ ul.cplist { .navigation a { background: #cadceb; /* old browsers */ /* ff3.6+ */ background-image: linear-gradient(to right, #b4c4d1 50%, #cadceb 100%); /* w3c */ + filter: progid:dximagetransform.microsoft.gradient(startcolorstr="#b4c4d1", endcolorstr="#cadceb", gradienttype=1); /* ie6-9 */ color: #333333; - filter: progid:dximagetransform.microsoft.gradient(startcolorstr='#b4c4d1', endcolorstr='#cadceb', gradienttype=1); /* ie6-9 */ } .rtl .navigation a { background: #b4c4d1; /* old browsers */ /* ff3.6+ */ background-image: linear-gradient(to right, #cadceb 50%, #b4c4d1 100%); /* w3c */ - filter: progid:dximagetransform.microsoft.gradient(startcolorstr='#cadceb', endcolorstr='#b4c4d1', gradienttype=1); /* ie6-9 */ + filter: progid:dximagetransform.microsoft.gradient(startcolorstr="#cadceb", endcolorstr="#b4c4d1", gradienttype=1); /* ie6-9 */ } .navigation a:hover { background: #aabac6; - color: #bc2a4d; filter: progid:dximagetransform.microsoft.gradient(enabled = false); + color: #bc2a4d; } .navigation .active-subsection a { background: #f9f9f9; - color: #d31141; filter: progid:dximagetransform.microsoft.gradient(enabled = false); + color: #d31141; } .navigation .active-subsection a:hover { @@ -1261,6 +1261,62 @@ fieldset.quick-login input.inputbox { color: transparent; } +/* form button styles */ + +a.button1, +input.button1, +input.button3, +a.button2, +input.button2 { + background-color: #efefef; /* old browsers */ /* ff3.6+ */ + background-image: linear-gradient(to bottom, #d2d2d2 0%, #efefef 100%); /* w3c */ + filter: progid:dximagetransform.microsoft.gradient(startcolorstr="#d2d2d2", endcolorstr="#efefef", gradienttype=0); /* ie6-9 */ + color: #000000; +} + +a.button1, +input.button1 { + border-color: #666666; +} + +input.button3 { + background-image: none; +} + +/* alternative button */ +a.button2, +input.button2, +input.button3 { + border-color: #666666; +} + +/* button in the style of the form buttons */ +a.button1, +a.button2 { + color: #000000; +} + +/* hover states */ +a.button1:hover, +input.button1:hover, +a.button2:hover, +input.button2:hover, +input.button3:hover { + background-color: #d2d2d2; /* old browsers */ /* ff3.6+ */ + background-image: linear-gradient(to bottom, #efefef 0%, #d2d2d2 100%); /* w3c */ + filter: progid:dximagetransform.microsoft.gradient(startcolorstr="#efefef", endcolorstr="#d2d2d2", gradienttype=0); /* ie6-9 */ + border-color: #d31141; + color: #d31141; +} + +/* focus states */ +input.button1:focus, +input.button2:focus, +input.button3:focus { + border-color: #11a3ea; + color: #0f4987; +} + input.disabled { color: #666666; } @@ -1313,14 +1369,14 @@ input.disabled { } .dropdown-extended .footer { - border-top-style: solid; border-top-width: 1px; + border-top-style: solid; } .dropdown-extended .header { background-color: #f1f8ff; /* old browsers */ /* ff3.6+ */ background-image: linear-gradient(to bottom, #f1f8ff 0%, #cadceb 100%); /* w3c */ - filter: progid:dximagetransform.microsoft.gradient(startcolorstr='#f1f8ff', endcolorstr='#cadceb', gradienttype=0); /* ie6-9 */ + filter: progid:dximagetransform.microsoft.gradient(startcolorstr="#f1f8ff", endcolorstr="#cadceb", gradienttype=0); /* ie6-9 */ } .dropdown .pointer { diff --git a/phpBB/styles/prosilver/theme/common.css b/phpBB/styles/prosilver/theme/common.css index b6bcdfdb226..da103941819 100644 --- a/phpBB/styles/prosilver/theme/common.css +++ b/phpBB/styles/prosilver/theme/common.css @@ -3,6 +3,8 @@ /* -------------------------------------------------------------- */ /* stylelint-disable selector-max-compound-selectors */ /* stylelint-disable selector-no-qualifying-type */ +/* stylelint-disable declaration-property-unit-whitelist */ +/* stylelint-disable declaration-property-unit-blacklist */ html { font-size: 100%; @@ -23,7 +25,7 @@ body { h1 { /* Forum name */ - font-family: 'Trebuchet MS', Arial, Helvetica, sans-serif; + font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; font-size: 2em; font-weight: bold; margin-top: 15px; @@ -32,7 +34,7 @@ h1 { h2 { /* Forum header titles */ - font-family: 'Trebuchet MS', Arial, Helvetica, sans-serif; + font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; font-size: 2em; font-weight: normal; margin: 0.8em 0 0.2em; @@ -56,7 +58,7 @@ h3 { h4 { /* Forum and topic list titles */ - font-family: 'Trebuchet MS', Verdana, Helvetica, Arial, sans-serif; + font-family: "Trebuchet MS", Verdana, Helvetica, Arial, sans-serif; font-size: 1.3em; } @@ -238,8 +240,8 @@ a:hover { } .post { - background-position: 100% 0; background-repeat: no-repeat; + background-position: 100% 0; border-radius: 7px; position: relative; margin-bottom: 4px; @@ -341,7 +343,7 @@ ul.linklist.bulletin > li:before { line-height: inherit; display: inline-block; padding-right: 4px; - content: '\2022'; + content: "\2022"; } ul.linklist.bulletin > li:first-child:before, @@ -381,7 +383,7 @@ a.header-avatar span:after { display: inline-block; padding-top: 2px; padding-left: 6px; - content: '\f0dd'; + content: "\f0dd"; } /* Dropdown menu @@ -406,9 +408,9 @@ a.header-avatar span:after { border: 1px solid transparent; border-radius: 5px; position: absolute; + z-index: 2; top: 1.2em; left: 0; - z-index: 2; display: none; margin-right: -500px; padding: 9px 0 0; @@ -465,10 +467,10 @@ a.header-avatar span:after { } .dropdown .pointer { + z-index: 3; top: -1px; right: auto; left: 10px; - z-index: 3; } .dropdown-up .pointer { @@ -612,7 +614,7 @@ a.header-avatar span:after { .breadcrumbs .crumb:before { font-weight: bold; padding: 0 0.5em; - content: '\2039'; + content: "\2039"; } .breadcrumbs .crumb:first-child:before { @@ -620,9 +622,9 @@ a.header-avatar span:after { } .breadcrumbs .crumb a { - text-overflow: ellipsis; vertical-align: bottom; white-space: nowrap; + text-overflow: ellipsis; overflow: hidden; } @@ -777,8 +779,8 @@ table.info tbody th { } .color_palette_placeholder table { - border-collapse: separate; border-spacing: 1px; + border-collapse: separate; } /* Misc layout styles @@ -817,7 +819,7 @@ table.info tbody th { } dl.details { - /* font-family: 'Lucida Grande', Verdana, Helvetica, Arial, sans-serif; */ + /* font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif; */ font-size: 1.1em; } @@ -924,7 +926,7 @@ fieldset.fields1 dl.pmlist dd.recipients { } .pagination li.active span { - font-family: 'Open Sans', 'Droid Sans', Verdana, Arial, Helvetica; + font-family: "Open Sans", "Droid Sans", Verdana, Arial, Helvetica; font-size: 13px; font-weight: normal; line-height: 1.4; @@ -978,10 +980,10 @@ fieldset.fields1 dl.pmlist dd.recipients { .phpbb_alert { border: 1px solid transparent; position: fixed; + z-index: 50; top: 150px; right: 0; left: 0; - z-index: 50; display: none; width: 620px; margin: 0 auto; @@ -1028,18 +1030,18 @@ fieldset.fields1 dl.pmlist dd.recipients { .darken { opacity: 0.5; position: fixed; + z-index: 45; top: 0; left: 0; - z-index: 45; width: 100%; height: 100%; } .loading_indicator { position: fixed; + z-index: 51; top: 50%; left: 50%; - z-index: 51; display: none; } @@ -1163,7 +1165,7 @@ ul.linklist:after, .postprofile .avatar-container:after { display: block; clear: both; - content: ''; + content: ""; } .emoji { @@ -1234,13 +1236,13 @@ ul.linklist:after, } .dropdown-extended .header { - font-family: Arial, 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-family: Arial, "Helvetica Neue", Helvetica, Arial, sans-serif; font-weight: bold; line-height: 3em; text-align: left; text-transform: uppercase; - border-radius: 5px 5px 0 0; border-bottom: 1px solid; + border-radius: 5px 5px 0 0; text-shadow: 1px 1px 1px #ffffff; padding: 0 10px; } @@ -1259,7 +1261,7 @@ ul.linklist:after, .dropdown-extended .header:after { display: table; clear: both; - content: ''; + content: ""; } .dropdown-extended .footer { @@ -1300,8 +1302,8 @@ ul.linklist:after, .notification_list p.notification-reference, .notification_list p.notification-location, .notification_list li a p.notification-reason { - text-overflow: ellipsis; white-space: nowrap; + text-overflow: ellipsis; overflow: hidden; } @@ -1321,7 +1323,7 @@ ul.linklist:after, } .notification_list p.notifications_title { - font-family: 'Trebuchet MS', Arial, Helvetica, sans-serif; + font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; font-size: 1.2em !important; } @@ -1386,3 +1388,6 @@ ul.linklist:after, .dropdown .clone.hidden + li { border-top: none; } + +/* stylelint-enable declaration-property-unit-whitelist */ +/* stylelint-enable declaration-property-unit-blacklist */ diff --git a/phpBB/styles/prosilver/theme/content.css b/phpBB/styles/prosilver/theme/content.css index 88376d3430c..5f0d46852e7 100644 --- a/phpBB/styles/prosilver/theme/content.css +++ b/phpBB/styles/prosilver/theme/content.css @@ -1,8 +1,11 @@ /* -------------------------------------------------------------- /* $Content /* -------------------------------------------------------------- */ + /* stylelint-disable selector-max-compound-selectors */ /* stylelint-disable selector-no-qualifying-type */ +/* stylelint-disable declaration-property-unit-whitelist */ +/* stylelint-disable declaration-property-unit-blacklist */ ul.topiclist { display: block; @@ -135,14 +138,14 @@ li.header dl.row-item dt .list-inner { /* Forum list column styles */ dl.row-item { - background-position: 10px 50%; /* Position of folder icon */ background-repeat: no-repeat; + background-position: 10px 50%; /* Position of folder icon */ background-size: 32px; } dl.row-item dt { - background-position: 5px 95%; /* Position of topic icon */ background-repeat: no-repeat; + background-position: 5px 95%; /* Position of topic icon */ background-size: 17px; } @@ -258,7 +261,7 @@ dd.option { } .postbody h3 { - font-family: 'Trebuchet MS', Verdana, Helvetica, Arial, sans-serif; + font-family: "Trebuchet MS", Verdana, Helvetica, Arial, sans-serif; font-size: 1.5em; line-height: 125%; text-transform: none; @@ -337,7 +340,7 @@ dd.option { /* Content container styles ---------------------------------------- */ .content { - font-family: 'Lucida Grande', 'Trebuchet MS', Verdana, Helvetica, Arial, sans-serif; + font-family: "Lucida Grande", "Trebuchet MS", Verdana, Helvetica, Arial, sans-serif; font-size: 1em; line-height: 1.4em; clear: both; @@ -367,14 +370,14 @@ dd.option { } .content p { - font-family: 'Lucida Grande', 'Trebuchet MS', Verdana, Helvetica, Arial, sans-serif; + font-family: "Lucida Grande", "Trebuchet MS", Verdana, Helvetica, Arial, sans-serif; font-size: 1.2em; line-height: 1.4em; margin-bottom: 1em; } dl.faq { - font-family: 'Lucida Grande', Verdana, Helvetica, Arial, sans-serif; + font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif; font-size: 1.1em; line-height: 1.4em; margin-top: 1em; @@ -448,7 +451,7 @@ dd .signature { /* Post noticies */ .notice { - font-family: 'Lucida Grande', Verdana, Helvetica, Arial, sans-serif; + font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif; font-size: 1em; line-height: 130%; border-top: 1px dashed transparent; @@ -486,10 +489,10 @@ blockquote blockquote { blockquote cite { font-size: 0.9em; + font-weight: bold; /* Username/source of quoter */ font-style: normal; - font-weight: bold; display: block; margin-left: 20px; } @@ -536,7 +539,7 @@ blockquote .codebox { } .codebox code { - font: 0.9em Monaco, 'Andale Mono', 'Courier New', Courier, monospace; + font: 0.9em Monaco, "Andale Mono", "Courier New", Courier, monospace; line-height: 1.3em; display: block; overflow: auto; @@ -651,7 +654,7 @@ dl.thumbnail dt a:hover img { /* Post poll styles ---------------------------------------- */ fieldset.polls { - font-family: 'Trebuchet MS', Verdana, Helvetica, Arial, sans-serif; + font-family: "Trebuchet MS", Verdana, Helvetica, Arial, sans-serif; } fieldset.polls dl { @@ -794,8 +797,8 @@ dd.profile-contact { .online { background-image: none; - background-position: 100% 0; background-repeat: no-repeat; + background-position: 100% 0; } /* Poster profile used by search */ @@ -850,8 +853,8 @@ div.dl_links { } .ellipsis-text { - text-overflow: ellipsis; white-space: nowrap; + text-overflow: ellipsis; display: inline-block; overflow: hidden; } @@ -891,4 +894,9 @@ table.fixed-width-table { #team tr.inactive { font-style: italic; } -/* stylelint-enable */ +/* stylelint-enable selector-no-id */ + +/* stylelint-enable selector-max-compound-selectors */ +/* stylelint-enable selector-no-qualifying-type */ +/* stylelint-enable declaration-property-unit-whitelist */ +/* stylelint-enable declaration-property-unit-blacklist */ diff --git a/phpBB/styles/prosilver/theme/cp.css b/phpBB/styles/prosilver/theme/cp.css index 6abd9823195..a36ef877d48 100644 --- a/phpBB/styles/prosilver/theme/cp.css +++ b/phpBB/styles/prosilver/theme/cp.css @@ -1,8 +1,11 @@ /* -------------------------------------------------------------- /* $Contorl Panel /* -------------------------------------------------------------- */ + /* stylelint-disable selector-max-compound-selectors */ /* stylelint-disable selector-no-qualifying-type */ +/* stylelint-disable declaration-property-unit-whitelist */ +/* stylelint-disable declaration-property-unit-blacklist */ /* Main CP box ---------------------------------------- */ @@ -126,8 +129,8 @@ ul.cplist { .tabs .tab > a, .minitabs .tab > a { - text-decoration: none; white-space: nowrap; + text-decoration: none; position: relative; display: block; padding: 5px 9px; @@ -195,7 +198,7 @@ ul.cplist { left: 10px; width: 14px; height: 0.125em; - content: ''; + content: ""; } .tabs .dropdown, @@ -333,8 +336,8 @@ ol.def-rules li { .pm-legend { border-right-width: 0; - border-left-style: solid; border-left-width: 10px; + border-left-style: solid; margin-bottom: 3px; padding-left: 3px; } @@ -386,8 +389,12 @@ ol.def-rules li { } .navigation li:last-child a { - border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; } } -/* stylelint-enable */ + +/* stylelint-enable selector-max-compound-selectors */ +/* stylelint-enable selector-no-qualifying-type */ +/* stylelint-enable declaration-property-unit-whitelist */ +/* stylelint-enable declaration-property-unit-blacklist */ diff --git a/phpBB/styles/prosilver/theme/forms.css b/phpBB/styles/prosilver/theme/forms.css index 5d24c7511c4..70ed28543de 100644 --- a/phpBB/styles/prosilver/theme/forms.css +++ b/phpBB/styles/prosilver/theme/forms.css @@ -1,8 +1,11 @@ /* -------------------------------------------------------------- /* $Forms /* -------------------------------------------------------------- */ + /* stylelint-disable selector-max-compound-selectors */ /* stylelint-disable selector-no-qualifying-type */ +/* stylelint-disable declaration-property-unit-whitelist */ +/* stylelint-disable declaration-property-unit-blacklist */ /* General form styles ---------------------------------------- */ @@ -44,7 +47,7 @@ select optgroup option { } textarea { - font-family: 'Lucida Grande', Verdana, Helvetica, Arial, sans-serif; + font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif; font-size: 1em; line-height: 1.4em; width: 60%; @@ -263,7 +266,7 @@ fieldset.submit-buttons input { } .message-box textarea { - font-family: 'Trebuchet MS', Verdana, Helvetica, Arial, sans-serif; + font-family: "Trebuchet MS", Verdana, Helvetica, Arial, sans-serif; font-size: 1.2em; outline: 3px dashed transparent; outline-offset: -4px; @@ -322,33 +325,84 @@ textarea.inputbox { width: auto !important; } -input[type='number'] { +input[type="number"] { -moz-padding-end: inherit; } -input[type='search'] { +input[type="search"] { -webkit-box-sizing: content-box; -webkit-appearance: textfield; } -input[type='search']::-webkit-search-decoration, -input[type='search']::-webkit-search-results-button, -input[type='search']::-webkit-search-results-decoration { +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-results-button, +input[type="search"]::-webkit-search-results-decoration { display: none; } -input[type='search']::-webkit-search-cancel-button { +input[type="search"]::-webkit-search-cancel-button { cursor: pointer; } -input[type='button'], -input[type='submit'], -input[type='reset'], -input[type='checkbox'], -input[type='radio'] { +/* Form button styles +---------------------------------------- */ +input.button1, +input.button2 { + font-size: 1em; +} + +a.button1, +input.button1, +input.button3, +a.button2, +input.button2 { + font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif; + line-height: 1.5; + background: transparent none repeat-x top left; + width: auto !important; + padding-top: 1px; + padding-bottom: 1px; +} + +a.button1, +input.button1 { + font-weight: bold; + border: 1px solid transparent; +} + +input.button3 { + font-variant: small-caps; + line-height: 5px; + background-image: none; + height: 12px; + margin: 0; + padding: 0; +} + +input[type="button"], +input[type="submit"], +input[type="reset"], +input[type="checkbox"], +input[type="radio"] { cursor: pointer; } +/* Alternative button */ +a.button2, +input.button2, +input.button3 { + border: 1px solid transparent; +} + +/* button in the style of the form buttons */ +a.button1, +a.button2 { + vertical-align: text-bottom; + text-decoration: none; + padding: 0 3px; +/* Hover states */ +} + input.disabled { font-weight: normal; } @@ -360,8 +414,8 @@ input.disabled { .search-box .inputbox { background-image: none; - border-radius: 4px 0 0 4px; border-right-width: 0; + border-radius: 4px 0 0 4px; float: left; box-sizing: border-box; height: 24px; @@ -388,8 +442,8 @@ input.disabled { input.search { background-image: none; - background-position: left 1px; background-repeat: no-repeat; + background-position: left 1px; padding-left: 17px; } @@ -408,4 +462,8 @@ input.search { .tiny { width: 10%; } -/* stylelint-enable */ + +/* stylelint-enable selector-max-compound-selectors */ +/* stylelint-enable selector-no-qualifying-type */ +/* stylelint-enable declaration-property-unit-whitelist */ +/* stylelint-enable declaration-property-unit-blacklist */ diff --git a/phpBB/styles/prosilver/theme/icons.css b/phpBB/styles/prosilver/theme/icons.css index 1d4634d6847..534ecb2dde5 100644 --- a/phpBB/styles/prosilver/theme/icons.css +++ b/phpBB/styles/prosilver/theme/icons.css @@ -11,13 +11,13 @@ */ .icon, .button .icon { - -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; font-family: FontAwesome; font-size: 14px; + font-weight: normal; font-style: normal; font-variant: normal; - font-weight: normal; line-height: 1; display: inline-block; text-rendering: auto; /* optimizelegibility throws things off #1094 */ diff --git a/phpBB/styles/prosilver/theme/links.css b/phpBB/styles/prosilver/theme/links.css index b4fee560731..10bdd9e7292 100644 --- a/phpBB/styles/prosilver/theme/links.css +++ b/phpBB/styles/prosilver/theme/links.css @@ -2,6 +2,7 @@ $Links /* -------------------------------------------------------------- */ +/* stylelint-disable declaration-property-unit-whitelist */ /* Links adjustment to correctly display an order of rtl/ltr mixed content */ a { @@ -38,13 +39,13 @@ th a:hover { /* Notification mark read link */ .dropdown-extended a.mark_read { - background-position: center center; background-repeat: no-repeat; + background-position: center center; border-radius: 3px 0 0 3px; position: absolute; + z-index: 2; top: 50%; right: 0; - z-index: 2; display: none; box-sizing: border-box; margin-top: -20px; @@ -66,7 +67,7 @@ th a:hover { /* Links for forum/topic lists */ a.forumtitle { - font-family: 'Trebuchet MS', Helvetica, Arial, sans-serif; + font-family: "Trebuchet MS", Helvetica, Arial, sans-serif; font-size: 1.2em; font-weight: bold; text-decoration: none; @@ -77,7 +78,7 @@ a.forumtitle:hover { } a.topictitle { - font-family: 'Trebuchet MS', Helvetica, Arial, sans-serif; + font-family: "Trebuchet MS", Helvetica, Arial, sans-serif; font-size: 1.2em; font-weight: bold; text-decoration: none; @@ -208,4 +209,5 @@ a.feed-icon-forum { a.anchor { display: block; } -/* stylelint-enable */ + +/* stylelint-enable declaration-property-unit-whitelist */ diff --git a/phpBB/styles/prosilver/theme/plupload.css b/phpBB/styles/prosilver/theme/plupload.css index 2ec396e682a..3be5663443b 100644 --- a/phpBB/styles/prosilver/theme/plupload.css +++ b/phpBB/styles/prosilver/theme/plupload.css @@ -2,6 +2,8 @@ $Plupload /* -------------------------------------------------------------- */ +/* stylelint-disable declaration-property-unit-whitelist */ + .attach-panel-multi { display: none; margin-bottom: 1em; @@ -69,15 +71,15 @@ } .file-status.file-working { - background: url('./images/plupload/throbber.gif'); + background: url("./images/plupload/throbber.gif"); } .file-status.file-uploaded { - background: url('./images/plupload/done.gif'); + background: url("./images/plupload/done.gif"); } .file-status.file-error { - background: url('./images/plupload/error.gif'); + background: url("./images/plupload/error.gif"); } .file-status { @@ -90,3 +92,5 @@ vertical-align: bottom; max-width: 65%; } + +/* stylelint-enable declaration-property-unit-whitelist */ diff --git a/phpBB/styles/prosilver/theme/print.css b/phpBB/styles/prosilver/theme/print.css index 192805d8e72..de7531c483a 100644 --- a/phpBB/styles/prosilver/theme/print.css +++ b/phpBB/styles/prosilver/theme/print.css @@ -1,7 +1,10 @@ /* -------------------------------------------------------------- /* $Print /* -------------------------------------------------------------- */ + /* stylelint-disable selector-max-compound-selectors */ +/* stylelint-disable declaration-property-unit-whitelist */ +/* stylelint-disable declaration-property-unit-blacklist */ /* Lots still TODO here! */ @@ -71,7 +74,7 @@ h3, h1 a, h2 a, h3 a { - font-family: 'Trebuchet MS', georgia, Verdana, sans-serif; + font-family: "Trebuchet MS", georgia, Verdana, sans-serif; font-weight: bold; text-decoration: none; background: none; @@ -93,7 +96,7 @@ h3 { } .content { - font-family: 'Lucida Grande', 'Trebuchet MS', Verdana, Arial, Helvetica, sans-serif; + font-family: "Lucida Grande", "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; font-size: 11pt; line-height: 14pt; overflow: hidden; @@ -117,7 +120,7 @@ html > body .postbody a:link:after, html > body .postbody a:visited:after { font-size: 90%; text-decoration: none; - content: ' (' attr(href) ') '; + content: " (" attr(href) ") "; } hr { @@ -152,7 +155,7 @@ html > body .postquote .quote-by a:visited:after, html > body .postbody h1 a:link:after, html > body .postbody h2 a:link:after { text-decoration: none; - content: ''; + content: ""; } /* Poster profile */ @@ -222,3 +225,4 @@ ul { width: 1em; } /* stylelint-enable declaration-property-unit-whitelist */ +/* stylelint-enable declaration-property-unit-blacklist */ diff --git a/phpBB/styles/prosilver/theme/responsive.css b/phpBB/styles/prosilver/theme/responsive.css index bc606e97234..3b556b22db4 100644 --- a/phpBB/styles/prosilver/theme/responsive.css +++ b/phpBB/styles/prosilver/theme/responsive.css @@ -3,6 +3,8 @@ /* -------------------------------------------------------------- */ /* stylelint-disable selector-max-compound-selectors */ /* stylelint-disable selector-no-qualifying-type */ +/* stylelint-disable declaration-property-unit-whitelist */ +/* stylelint-disable declaration-property-unit-blacklist */ @media (max-width: 320px) { select, @@ -30,15 +32,15 @@ } .action-bar .search-box .inputbox ::-moz-placeholder { - content: 'Search...'; + content: "Search..."; } .action-bar .search-box .inputbox :-ms-input-placeholder { - content: 'Search...'; + content: "Search..."; } .action-bar .search-box .inputbox ::-webkit-input-placeholder { - content: 'Search...'; + content: "Search..."; } } @@ -299,8 +301,8 @@ } ul.topiclist li.row dt a.subforum { - text-overflow: ellipsis; vertical-align: bottom; + text-overflow: ellipsis; overflow: hidden; max-width: 100px; } @@ -360,7 +362,7 @@ table.responsive td > dfn:after { padding-right: 5px; - content: ':'; + content: ":"; } table.responsive span.rank-img { @@ -368,7 +370,7 @@ padding-right: 5px; } - table.responsive.memberlist td:first-child input[type='checkbox'] { + table.responsive.memberlist td:first-child input[type="checkbox"] { float: right; } @@ -455,7 +457,7 @@ margin-left: 20px; } - fieldset.quick-login label[for='autologin'] { + fieldset.quick-login label[for="autologin"] { text-align: right; display: inline-block; min-width: 50%; @@ -647,4 +649,7 @@ } } -/* stylelint-enable */ +/* stylelint-enable selector-max-compound-selectors */ +/* stylelint-enable selector-no-qualifying-type */ +/* stylelint-enable declaration-property-unit-whitelist */ +/* stylelint-enable declaration-property-unit-blacklist */ diff --git a/phpBB/styles/prosilver/theme/stylesheet.css b/phpBB/styles/prosilver/theme/stylesheet.css index 0c29ccee306..ddae99a94e5 100644 --- a/phpBB/styles/prosilver/theme/stylesheet.css +++ b/phpBB/styles/prosilver/theme/stylesheet.css @@ -7,15 +7,15 @@ -------------------------------------------------------------- */ -@import url('normalize.css?v=3.3'); -@import url('base.css?v=3.3'); -@import url('utilities.css?v=3.3'); -@import url('common.css?v=3.3'); -@import url('links.css?v=3.3'); -@import url('content.css?v=3.3'); -@import url('buttons.css?v=3.3'); -@import url('cp.css?v=3.3'); -@import url('forms.css?v=3.3'); -@import url('icons.css?v=3.3'); -@import url('colours.css?v=3.3'); -@import url('responsive.css?v=3.3'); +@import url("normalize.css?v=3.3"); +@import url("base.css?v=3.3"); +@import url("utilities.css?v=3.3"); +@import url("common.css?v=3.3"); +@import url("links.css?v=3.3"); +@import url("content.css?v=3.3"); +@import url("buttons.css?v=3.3"); +@import url("cp.css?v=3.3"); +@import url("forms.css?v=3.3"); +@import url("icons.css?v=3.3"); +@import url("colours.css?v=3.3"); +@import url("responsive.css?v=3.3"); diff --git a/phpBB/styles/prosilver/theme/tweaks.css b/phpBB/styles/prosilver/theme/tweaks.css index db629c19f58..c8075c02529 100644 --- a/phpBB/styles/prosilver/theme/tweaks.css +++ b/phpBB/styles/prosilver/theme/tweaks.css @@ -4,6 +4,7 @@ These style definitions are IE 8 & 9 only. They are required due to the poor CSS support in IE browsers. /* -------------------------------------------------------------- */ + /* stylelint-disable selector-max-compound-selectors */ /* stylelint-disable selector-no-qualifying-type */ @@ -27,7 +28,7 @@ dd label input { height: 20px\9; } -/* IE8 often can't handle max-width in %, so we use px instead */ +/* IE8 often can"t handle max-width in %, so we use px instead */ .postprofile .avatar img { max-width: 150px\9; } @@ -45,14 +46,16 @@ dd label input { .headerbar, .forumbg { - background-image: url('./images/bg_header.gif'); + background-image: url("./images/bg_header.gif"); } .forabg { - background-image: url('./images/bg_list.gif'); + background-image: url("./images/bg_list.gif"); } .tabs .tab > a { border-radius: 0; } -/* stylelint-enable */ + +/* stylelint-enable selector-max-compound-selectors */ +/* stylelint-enable selector-no-qualifying-type */ diff --git a/phpBB/styles/prosilver/theme/utilities.css b/phpBB/styles/prosilver/theme/utilities.css index bcee77cec5c..ab47754d5d9 100644 --- a/phpBB/styles/prosilver/theme/utilities.css +++ b/phpBB/styles/prosilver/theme/utilities.css @@ -32,7 +32,7 @@ .row:before, .row:after { display: table; - content: ' '; + content: " "; } .clearfix:after, @@ -72,8 +72,8 @@ font: 0/0 a; background-color: transparent; border: 0; - color: transparent; text-shadow: none; + color: transparent; } .hidden { From 8713c71776f9fd4677fad5b2f56eedd5ea97e73f Mon Sep 17 00:00:00 2001 From: hanakin Date: Sat, 18 Mar 2017 18:06:58 -0400 Subject: [PATCH 084/431] [ticket/15115] prep for rebase PHPBB3-15115 --- phpBB/styles/prosilver/theme/colours.css | 58 +----------------------- phpBB/styles/prosilver/theme/forms.css | 35 -------------- 2 files changed, 1 insertion(+), 92 deletions(-) diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index 9113f000b13..5c2b996f171 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -1190,7 +1190,7 @@ label { } option.disabled-option { - color: graytext; + color: #7f7f7f; } /* definition list layout for forms */ @@ -1261,62 +1261,6 @@ fieldset.quick-login input.inputbox { color: transparent; } -/* form button styles */ - -a.button1, -input.button1, -input.button3, -a.button2, -input.button2 { - background-color: #efefef; /* old browsers */ /* ff3.6+ */ - background-image: linear-gradient(to bottom, #d2d2d2 0%, #efefef 100%); /* w3c */ - filter: progid:dximagetransform.microsoft.gradient(startcolorstr="#d2d2d2", endcolorstr="#efefef", gradienttype=0); /* ie6-9 */ - color: #000000; -} - -a.button1, -input.button1 { - border-color: #666666; -} - -input.button3 { - background-image: none; -} - -/* alternative button */ -a.button2, -input.button2, -input.button3 { - border-color: #666666; -} - -/* button in the style of the form buttons */ -a.button1, -a.button2 { - color: #000000; -} - -/* hover states */ -a.button1:hover, -input.button1:hover, -a.button2:hover, -input.button2:hover, -input.button3:hover { - background-color: #d2d2d2; /* old browsers */ /* ff3.6+ */ - background-image: linear-gradient(to bottom, #efefef 0%, #d2d2d2 100%); /* w3c */ - filter: progid:dximagetransform.microsoft.gradient(startcolorstr="#efefef", endcolorstr="#d2d2d2", gradienttype=0); /* ie6-9 */ - border-color: #d31141; - color: #d31141; -} - -/* focus states */ -input.button1:focus, -input.button2:focus, -input.button3:focus { - border-color: #11a3ea; - color: #0f4987; -} - input.disabled { color: #666666; } diff --git a/phpBB/styles/prosilver/theme/forms.css b/phpBB/styles/prosilver/theme/forms.css index 70ed28543de..8b69ac91680 100644 --- a/phpBB/styles/prosilver/theme/forms.css +++ b/phpBB/styles/prosilver/theme/forms.css @@ -344,41 +344,6 @@ input[type="search"]::-webkit-search-cancel-button { cursor: pointer; } -/* Form button styles ----------------------------------------- */ -input.button1, -input.button2 { - font-size: 1em; -} - -a.button1, -input.button1, -input.button3, -a.button2, -input.button2 { - font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif; - line-height: 1.5; - background: transparent none repeat-x top left; - width: auto !important; - padding-top: 1px; - padding-bottom: 1px; -} - -a.button1, -input.button1 { - font-weight: bold; - border: 1px solid transparent; -} - -input.button3 { - font-variant: small-caps; - line-height: 5px; - background-image: none; - height: 12px; - margin: 0; - padding: 0; -} - input[type="button"], input[type="submit"], input[type="reset"], From c6f2f00a7845a6c4a1fd46ba57fbc3f425825e8f Mon Sep 17 00:00:00 2001 From: hanakin Date: Sat, 18 Mar 2017 18:10:52 -0400 Subject: [PATCH 085/431] [ticket/15115] more prep for rebase PHPBB3-15115 --- phpBB/styles/prosilver/theme/buttons.css | 2 +- phpBB/styles/prosilver/theme/colours.css | 5 ++--- phpBB/styles/prosilver/theme/forms.css | 16 ---------------- 3 files changed, 3 insertions(+), 20 deletions(-) diff --git a/phpBB/styles/prosilver/theme/buttons.css b/phpBB/styles/prosilver/theme/buttons.css index ed1b86ab25b..9c5ba0d4869 100644 --- a/phpBB/styles/prosilver/theme/buttons.css +++ b/phpBB/styles/prosilver/theme/buttons.css @@ -44,7 +44,7 @@ ---------------------------------------- */ .button-form, .button-form-bold { - font-family: 'Lucida Grande', Verdana, Helvetica, Arial, sans-serif; + font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif; border-radius: 0; } diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index 5c2b996f171..2cd236f431b 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -661,18 +661,17 @@ dd.profile-warnings { .button-form:hover, .button-form-bold:hover { border-color: #d31141; - color: #d31141; text-shadow: none; + color: #d31141; } .button-form:focus, .button-form-bold:focus { border-color: #0a8ed0; - color: #0a8ed0; text-shadow: none; + color: #0a8ed0; } - .button-secondary:focus, .button-secondary:hover, .button:focus .icon, diff --git a/phpBB/styles/prosilver/theme/forms.css b/phpBB/styles/prosilver/theme/forms.css index 8b69ac91680..6cec12a3ce3 100644 --- a/phpBB/styles/prosilver/theme/forms.css +++ b/phpBB/styles/prosilver/theme/forms.css @@ -352,22 +352,6 @@ input[type="radio"] { cursor: pointer; } -/* Alternative button */ -a.button2, -input.button2, -input.button3 { - border: 1px solid transparent; -} - -/* button in the style of the form buttons */ -a.button1, -a.button2 { - vertical-align: text-bottom; - text-decoration: none; - padding: 0 3px; -/* Hover states */ -} - input.disabled { font-weight: normal; } From f1ad532a567543fb594ff65433b4780d021f74d8 Mon Sep 17 00:00:00 2001 From: hanakin Date: Sat, 18 Mar 2017 18:17:50 -0400 Subject: [PATCH 086/431] [ticket/15115] pkg.json must be in root PHPBB3-15115 --- phpBB/package.json => package.json | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename phpBB/package.json => package.json (100%) diff --git a/phpBB/package.json b/package.json similarity index 100% rename from phpBB/package.json rename to package.json From 9f5dc941dc5a1628b9a8b8284cc8c471ef8d3a33 Mon Sep 17 00:00:00 2001 From: hanakin Date: Sat, 18 Mar 2017 18:21:22 -0400 Subject: [PATCH 087/431] [ticket/15115] Slight tweaks to rc and sorting file PHPBB3-15115 --- .postcss-sorting.json | 1 - .stylelintrc | 19 +++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/.postcss-sorting.json b/.postcss-sorting.json index af119c28c45..fa52bd67690 100644 --- a/.postcss-sorting.json +++ b/.postcss-sorting.json @@ -2,7 +2,6 @@ "order": [ "custom-properties", "dollar-variables", - "at-rules", "declarations", { "type": "at-rule", diff --git a/.stylelintrc b/.stylelintrc index 094033df348..cc261b46221 100644 --- a/.stylelintrc +++ b/.stylelintrc @@ -12,7 +12,11 @@ "at-rule-no-vendor-prefix": true, "at-rule-semicolon-newline-after": "always", - "block-closing-brace-newline-after": "always", + "block-closing-brace-newline-after": [ + "always", { + "ignoreAtRules": ["if", "else"] + } + ], "block-closing-brace-newline-before": "always-multi-line", "block-closing-brace-space-after": "always-single-line", "block-closing-brace-space-before": "always-single-line", @@ -59,11 +63,11 @@ "declaration-empty-line-before": "never", "declaration-property-unit-blacklist": { - "line-height": ["rem", "em", "%"] + "line-height": ["rem", "px", "em", "%"] }, "declaration-property-unit-whitelist": { - "height": ["px", "%"], - "width": ["px", "%"], + "height": ["px", "%", "vh"], + "width": ["px", "%", "vw"], "font-size": ["px", "rem", "%"], "margin-left": ["px", "rem", "%"], "margin-right": ["px", "rem", "%"], @@ -72,7 +76,9 @@ "padding-left": ["px", "rem"], "padding-right": ["px", "rem"], "padding-top": ["px", "rem"], - "padding-bottom": ["px", "rem"] + "padding-bottom": ["px", "rem"], + "letter-spacing": ["em"], + "word-spacing": ["em"] }, "font-family-name-quotes": "always-where-recommended", @@ -178,7 +184,6 @@ "order/declaration-block-order": [ "custom-properties", "dollar-variables", - "at-rules", "declarations", { "type": "at-rule", @@ -187,8 +192,6 @@ "rules" ], "order/declaration-block-properties-specified-order": [ - "-moz-osx-font-smoothing", - "-webkit-font-smoothing", "font", "font-family", "font-size", From 8f25f40321fe6fda010bef64d11f4c7b65f5e497 Mon Sep 17 00:00:00 2001 From: hanakin Date: Sat, 18 Mar 2017 19:38:12 -0400 Subject: [PATCH 088/431] [ticket/15115] Fix print.css errors PHPBB3-15115 --- phpBB/styles/prosilver/theme/print.css | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/phpBB/styles/prosilver/theme/print.css b/phpBB/styles/prosilver/theme/print.css index de7531c483a..271606b0fe1 100644 --- a/phpBB/styles/prosilver/theme/print.css +++ b/phpBB/styles/prosilver/theme/print.css @@ -4,7 +4,6 @@ /* stylelint-disable selector-max-compound-selectors */ /* stylelint-disable declaration-property-unit-whitelist */ -/* stylelint-disable declaration-property-unit-blacklist */ /* Lots still TODO here! */ @@ -217,12 +216,10 @@ ul { display: none; } -/* stylelint-disable declaration-property-unit-whitelist */ .emoji { - min-height: 18px; + width: 1em; min-width: 18px; height: 1em; - width: 1em; + min-height: 18px; } /* stylelint-enable declaration-property-unit-whitelist */ -/* stylelint-enable declaration-property-unit-blacklist */ From 3b67065d8962c51e5f797aa884e9fd2af5b55fc9 Mon Sep 17 00:00:00 2001 From: hanakin Date: Sun, 19 Mar 2017 12:32:48 -0400 Subject: [PATCH 089/431] [ticket/15115] Update tests to run on proprer dir PHPBB3-15115 --- travis/check-stylesheet.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/travis/check-stylesheet.sh b/travis/check-stylesheet.sh index a834833399b..83bafaa03a8 100755 --- a/travis/check-stylesheet.sh +++ b/travis/check-stylesheet.sh @@ -15,7 +15,6 @@ NOTESTS=$1 if [ "$NOTESTS" == '1' ] then - cd phpBB # Define a node version. TRAVIS_NODE_VERSION="4" @@ -33,7 +32,7 @@ then npm install -g > /dev/null npm install > /dev/null set -x - stylelint --config ../.stylelintrc "styles/prosilver/theme/*.css" + stylelint --config ../.stylelintrc "phpBB/styles/prosilver/theme/*.css" # Disable admin stylelint for now - # stylelint --config ../.stylelintrc "adm/style/*.css" + # stylelint --config ../.stylelintrc "phpBB/adm/style/*.css" fi From 09dbd305419b60087ddcd2e80e6937c133fe9801 Mon Sep 17 00:00:00 2001 From: hanakin Date: Sun, 19 Mar 2017 13:11:38 -0400 Subject: [PATCH 090/431] [ticket/15115] Small tweak to orders PHPBB3-15115 --- .postcss-sorting.json | 9 +- .stylelintrc | 372 +++++++++++++++++++++--------------------- 2 files changed, 196 insertions(+), 185 deletions(-) diff --git a/.postcss-sorting.json b/.postcss-sorting.json index fa52bd67690..98f1126af1f 100644 --- a/.postcss-sorting.json +++ b/.postcss-sorting.json @@ -13,8 +13,6 @@ { "emptyLineBefore": false, "properties": [ - "-moz-osx-font-smoothing", - "-webkit-font-smoothing", "font", "font-family", "font-size", @@ -28,6 +26,7 @@ "font-emphasize-position", "font-emphasize-style", "font-smooth", + "font-smoothing", "line-height", "text-align", "text-align-last", @@ -45,6 +44,7 @@ "writing-mode", "text-outline", "text-transform", + "text-size-adjust", "text-wrap", "text-overflow", "text-overflow-ellipsis", @@ -111,7 +111,8 @@ "outline-width", "outline-style", "outline-color", - "outline-offset" + "outline-offset", + "tap-highlight-color" ] }, { @@ -150,6 +151,7 @@ "overflow", "overflow-x", "overflow-y", + "overflow-scrolling", "clip", "zoom", "flex", @@ -211,6 +213,7 @@ "counter-increment", "resize", "cursor", + "touch-callout", "user-select", "nav-index", "nav-up", diff --git a/.stylelintrc b/.stylelintrc index cc261b46221..8aeda79f719 100644 --- a/.stylelintrc +++ b/.stylelintrc @@ -192,188 +192,196 @@ "rules" ], "order/declaration-block-properties-specified-order": [ - "font", - "font-family", - "font-size", - "font-weight", - "font-style", - "font-variant", - "font-size-adjust", - "font-stretch", - "font-effect", - "font-emphasize", - "font-emphasize-position", - "font-emphasize-style", - "font-smooth", - "line-height", - "text-align", - "text-align-last", - "vertical-align", - "white-space", - "text-decoration", - "text-emphasis", - "text-emphasis-color", - "text-emphasis-style", - "text-emphasis-position", - "text-indent", - "text-justify", - "letter-spacing", - "word-spacing", - "writing-mode", - "text-outline", - "text-transform", - "text-wrap", - "text-overflow", - "text-overflow-ellipsis", - "text-overflow-mode", - "word-wrap", - "word-break", - "tab-size", - "hyphens", - - "background", - "background-color", - "background-image", - "background-repeat", - "background-attachment", - "background-position", - "background-position-x", - "background-position-y", - "background-clip", - "background-origin", - "background-size", - "interpolation-mode", - "filter", - - "border", - "border-width", - "border-style", - "border-color", - "border-top", - "border-top-width", - "border-top-style", - "border-top-color", - "border-right", - "border-right-width", - "border-right-style", - "border-right-color", - "border-bottom", - "border-bottom-width", - "border-bottom-style", - "border-bottom-color", - "border-left", - "border-left-width", - "border-left-style", - "border-left-color", - "border-radius", - "border-top-left-radius", - "border-top-right-radius", - "border-bottom-right-radius", - "border-bottom-left-radius", - "border-image", - "border-image-source", - "border-image-slice", - "border-image-width", - "border-image-outset", - "border-image-repeat", - "outline", - "outline-width", - "outline-style", - "outline-color", - "outline-offset", - - "box-decoration-break", - "box-shadow", - "text-shadow", - - "color", - "opacity", - - "position", - "z-index", - "top", - "right", - "bottom", - "left", - - "display", - "visibility", - "float", - "clear", - "overflow", - "overflow-x", - "overflow-y", - "clip", - "zoom", - "flex", - "flex-direction", - "flex-order", - "flex-pack", - "flex-align", - "flex-basis", - "flex-grow", - "flex-shrink", - "flex-wrap", - "justify-content", - "align-items", - "align-self", - - "box-sizing", - "width", - "min-width", - "max-width", - "height", - "min-height", - "max-height", - "margin", - "margin-top", - "margin-right", - "margin-bottom", - "margin-left", - "padding", - "padding-top", - "padding-right", - "padding-bottom", - "padding-left", - - "table-layout", - "empty-cells", - "caption-side", - "border-spacing", - "border-collapse", - "list-style", - "list-style-position", - "list-style-type", - "list-style-image", - - "content", - "quotes", - "counter-reset", - "counter-increment", - "resize", - "cursor", - "user-select", - "nav-index", - "nav-up", - "nav-right", - "nav-down", - "nav-left", - "transition", - "transition-delay", - "transition-timing-function", - "transition-duration", - "transition-property", - "transform", - "transform-origin", - "animation", - "animation-name", - "animation-duration", - "animation-play-state", - "animation-timing-function", - "animation-delay", - "animation-iteration-count", - "animation-direction", - "pointer-events" + [ + "font", + "font-family", + "font-size", + "font-weight", + "font-style", + "font-variant", + "font-size-adjust", + "font-stretch", + "font-effect", + "font-emphasize", + "font-emphasize-position", + "font-emphasize-style", + "font-smooth", + "font-smoothing", + "line-height", + "text-align", + "text-align-last", + "vertical-align", + "white-space", + "text-decoration", + "text-emphasis", + "text-emphasis-color", + "text-emphasis-style", + "text-emphasis-position", + "text-indent", + "text-justify", + "letter-spacing", + "word-spacing", + "writing-mode", + "text-outline", + "text-transform", + "text-size-adjust", + "text-wrap", + "text-overflow", + "text-overflow-ellipsis", + "text-overflow-mode", + "word-wrap", + "word-break", + "tab-size", + "hyphens", + + "background", + "background-color", + "background-image", + "background-repeat", + "background-attachment", + "background-position", + "background-position-x", + "background-position-y", + "background-clip", + "background-origin", + "background-size", + "interpolation-mode", + "filter", + + "border", + "border-width", + "border-style", + "border-color", + "border-top", + "border-top-width", + "border-top-style", + "border-top-color", + "border-right", + "border-right-width", + "border-right-style", + "border-right-color", + "border-bottom", + "border-bottom-width", + "border-bottom-style", + "border-bottom-color", + "border-left", + "border-left-width", + "border-left-style", + "border-left-color", + "border-radius", + "border-top-left-radius", + "border-top-right-radius", + "border-bottom-right-radius", + "border-bottom-left-radius", + "border-image", + "border-image-source", + "border-image-slice", + "border-image-width", + "border-image-outset", + "border-image-repeat", + "outline", + "outline-width", + "outline-style", + "outline-color", + "outline-offset", + "tap-highlight-color", + + "box-decoration-break", + "box-shadow", + "text-shadow", + + "color", + "opacity", + + "position", + "z-index", + "top", + "right", + "bottom", + "left", + + "display", + "visibility", + "float", + "clear", + "overflow", + "overflow-x", + "overflow-y", + "overflow-scrolling", + "clip", + "zoom", + "flex", + "flex-direction", + "flex-order", + "flex-pack", + "flex-align", + "flex-basis", + "flex-grow", + "flex-shrink", + "flex-wrap", + "justify-content", + "align-items", + "align-self", + + "box-sizing", + "width", + "min-width", + "max-width", + "height", + "min-height", + "max-height", + "margin", + "margin-top", + "margin-right", + "margin-bottom", + "margin-left", + "padding", + "padding-top", + "padding-right", + "padding-bottom", + "padding-left", + + "table-layout", + "empty-cells", + "caption-side", + "border-spacing", + "border-collapse", + "list-style", + "list-style-position", + "list-style-type", + "list-style-image", + + "content", + "quotes", + "counter-reset", + "counter-increment", + "resize", + "cursor", + "touch-callout", + "user-select", + "nav-index", + "nav-up", + "nav-right", + "nav-down", + "nav-left", + "transition", + "transition-delay", + "transition-timing-function", + "transition-duration", + "transition-property", + "transform", + "transform-origin", + "animation", + "animation-name", + "animation-duration", + "animation-play-state", + "animation-timing-function", + "animation-delay", + "animation-iteration-count", + "animation-direction", + "pointer-events" + ], + { unspecified: "bottomAlphabetical" } ] } } From ae85c9e91dec7714bf1b094468490b6a7929e643 Mon Sep 17 00:00:00 2001 From: hanakin Date: Sun, 19 Mar 2017 13:41:27 -0400 Subject: [PATCH 091/431] [ticket/15115] minor order adjustments PHPBB3-15115 --- .postcss-sorting.json | 1 + .stylelintrc | 1 + 2 files changed, 2 insertions(+) diff --git a/.postcss-sorting.json b/.postcss-sorting.json index 98f1126af1f..a1bc5ff1aeb 100644 --- a/.postcss-sorting.json +++ b/.postcss-sorting.json @@ -214,6 +214,7 @@ "resize", "cursor", "touch-callout", + "touch-action", "user-select", "nav-index", "nav-up", diff --git a/.stylelintrc b/.stylelintrc index 8aeda79f719..003b87c42fb 100644 --- a/.stylelintrc +++ b/.stylelintrc @@ -358,6 +358,7 @@ "resize", "cursor", "touch-callout", + "touch-action", "user-select", "nav-index", "nav-up", From 79f865bd561872a50e490f23bd095c0251a147b5 Mon Sep 17 00:00:00 2001 From: hanakin Date: Sun, 19 Mar 2017 16:15:33 -0400 Subject: [PATCH 092/431] [ticket/15115] Fix errors PHPBB3-15115 --- phpBB/styles/prosilver/theme/buttons.css | 2 +- phpBB/styles/prosilver/theme/colours.css | 11 ++--------- phpBB/styles/prosilver/theme/common.css | 10 ++++++---- phpBB/styles/prosilver/theme/icons.css | 6 ++++-- phpBB/styles/prosilver/theme/print.css | 3 +++ 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/phpBB/styles/prosilver/theme/buttons.css b/phpBB/styles/prosilver/theme/buttons.css index 9c5ba0d4869..55ecb53d053 100644 --- a/phpBB/styles/prosilver/theme/buttons.css +++ b/phpBB/styles/prosilver/theme/buttons.css @@ -17,11 +17,11 @@ display: inline-block; padding: 2px 8px; cursor: pointer; + touch-action: manipulation; -moz-user-select: none; -ms-user-select: none; -webkit-user-select: none; user-select: none; - touch-action: manipulation; } .button:focus, diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index 2cd236f431b..f740dafb2c3 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -1094,20 +1094,13 @@ ul.cplist { color: #d31141; } -/* This ID needs factored out */ @media only screen and (max-width: 900px), only screen and (max-device-width: 900px) { - /* stylelint-disable selector-no-id */ - #navigation a, - .rtl #navigation a { + .navigation a, + .rtl .navigation a { background: #b2c2cf; } - /* stylelint-enable */ } -/* stylelint-disable selector-max-compound-selectors */ -/* stylelint-disable selector-no-qualifying-type */ -/* stylelint-disable no-indistinguishable-colors */ - /* preferences pane layout */ .panel-container h2 { color: #333333; diff --git a/phpBB/styles/prosilver/theme/common.css b/phpBB/styles/prosilver/theme/common.css index da103941819..b5c2cfc5f6c 100644 --- a/phpBB/styles/prosilver/theme/common.css +++ b/phpBB/styles/prosilver/theme/common.css @@ -1055,12 +1055,14 @@ fieldset.fields1 dl.pmlist dd.recipients { animation: rotator 1s linear infinite; } +/* stylelint-disable no-unknown-animations */ .spinner-path { - stroke-dasharray: 187; - stroke-dashoffset: 0; transform-origin: center; animation: dash 1s ease-in-out infinite, colors 4s ease-in-out infinite; + stroke-dasharray: 187; + stroke-dashoffset: 0; } +/* stylelint-enable no-unknown-animations */ @keyframes rotator { 0% { @@ -1078,13 +1080,13 @@ fieldset.fields1 dl.pmlist dd.recipients { } 50% { - stroke-dashoffset: 46.75; transform: rotate(135deg); + stroke-dashoffset: 46.75; } 100% { - stroke-dashoffset: 187; transform: rotate(450deg); + stroke-dashoffset: 187; } } diff --git a/phpBB/styles/prosilver/theme/icons.css b/phpBB/styles/prosilver/theme/icons.css index 534ecb2dde5..ce202f1b9d1 100644 --- a/phpBB/styles/prosilver/theme/icons.css +++ b/phpBB/styles/prosilver/theme/icons.css @@ -11,15 +11,17 @@ */ .icon, .button .icon { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; font-family: FontAwesome; font-size: 14px; font-weight: normal; font-style: normal; font-variant: normal; + -webkit-font-smoothing: antialiased; line-height: 1; display: inline-block; + /* stylelint-disable order/declaration-block-properties-specified-order */ + -moz-osx-font-smoothing: grayscale; + /* stylelint-enable order/declaration-block-properties-specified-order */ text-rendering: auto; /* optimizelegibility throws things off #1094 */ } diff --git a/phpBB/styles/prosilver/theme/print.css b/phpBB/styles/prosilver/theme/print.css index 271606b0fe1..753e6bebe5e 100644 --- a/phpBB/styles/prosilver/theme/print.css +++ b/phpBB/styles/prosilver/theme/print.css @@ -4,6 +4,7 @@ /* stylelint-disable selector-max-compound-selectors */ /* stylelint-disable declaration-property-unit-whitelist */ +/* stylelint-disable declaration-property-unit-blacklist */ /* Lots still TODO here! */ @@ -222,4 +223,6 @@ ul { height: 1em; min-height: 18px; } +/* stylelint-enable selector-max-compound-selectors */ /* stylelint-enable declaration-property-unit-whitelist */ +/* stylelint-enable declaration-property-unit-blacklist */ From 3173b463159cf74eedf079eff8cc90d957395a18 Mon Sep 17 00:00:00 2001 From: hanakin Date: Sun, 19 Mar 2017 16:15:58 -0400 Subject: [PATCH 093/431] [ticket/15115] fix stylelintrc error PHPBB3-15115 --- .stylelintrc | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.stylelintrc b/.stylelintrc index 003b87c42fb..160816a389f 100644 --- a/.stylelintrc +++ b/.stylelintrc @@ -131,11 +131,6 @@ "property-case": "lower", "property-no-unknown": true, - "rule-empty-line-before": ["always", { - "ignore": ["after-comment"], - "except": ["first-nested"] - }], - "selector-attribute-brackets-space-inside": "never", "selector-attribute-operator-space-after": "never", "selector-attribute-operator-space-before": "never", From 1f224233c77325a5ebc635e248878a24f5493738 Mon Sep 17 00:00:00 2001 From: hanakin Date: Sun, 19 Mar 2017 16:16:27 -0400 Subject: [PATCH 094/431] [ticket/15115] Fix test paths PHPBB3-15115 --- travis/check-stylesheet.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/travis/check-stylesheet.sh b/travis/check-stylesheet.sh index 83bafaa03a8..d056ff9c472 100755 --- a/travis/check-stylesheet.sh +++ b/travis/check-stylesheet.sh @@ -32,7 +32,7 @@ then npm install -g > /dev/null npm install > /dev/null set -x - stylelint --config ../.stylelintrc "phpBB/styles/prosilver/theme/*.css" + stylelint "phpBB/styles/prosilver/theme/*.css" # Disable admin stylelint for now - # stylelint --config ../.stylelintrc "phpBB/adm/style/*.css" + # stylelint "phpBB/adm/style/*.css" fi From 74fcd60afea032c1af3fe8ec71ea35be47458c49 Mon Sep 17 00:00:00 2001 From: hanakin Date: Fri, 24 Mar 2017 20:33:24 -0400 Subject: [PATCH 095/431] [ticket/15115] Update grads & single line rules PHPBB3-15115 --- .postcss-sorting.json | 15 +- .stylelintrc | 16 +- phpBB/styles/prosilver/theme/colours.css | 344 ++++++----------------- 3 files changed, 101 insertions(+), 274 deletions(-) diff --git a/.postcss-sorting.json b/.postcss-sorting.json index a1bc5ff1aeb..11a55f3c3d9 100644 --- a/.postcss-sorting.json +++ b/.postcss-sorting.json @@ -2,12 +2,16 @@ "order": [ "custom-properties", "dollar-variables", + { + "type": "at-rule", + "name": "include" + }, "declarations", + "rules", { "type": "at-rule", "name": "media" - }, - "rules" + } ], "properties-order": [ { @@ -70,12 +74,7 @@ "background-origin", "background-size", "interpolation-mode", - "filter" - ] - }, - { - "emptyLineBefore": false, - "properties": [ + "filter", "border", "border-width", "border-style", diff --git a/.stylelintrc b/.stylelintrc index 160816a389f..47400683955 100644 --- a/.stylelintrc +++ b/.stylelintrc @@ -18,12 +18,11 @@ } ], "block-closing-brace-newline-before": "always-multi-line", - "block-closing-brace-space-after": "always-single-line", "block-closing-brace-space-before": "always-single-line", "block-no-empty": true, - "block-opening-brace-newline-after": "always", + "block-opening-brace-newline-after": "always-multi-line", "block-opening-brace-space-after": "always-single-line", "block-opening-brace-space-before": "always", @@ -131,6 +130,11 @@ "property-case": "lower", "property-no-unknown": true, + "rule-empty-line-before": ["always-multi-line", { + "ignore": ["after-comment"], + "except": ["first-nested"] + }], + "selector-attribute-brackets-space-inside": "never", "selector-attribute-operator-space-after": "never", "selector-attribute-operator-space-before": "never", @@ -179,12 +183,16 @@ "order/declaration-block-order": [ "custom-properties", "dollar-variables", + { + "type": "at-rule", + "name": "include" + }, "declarations", + "rules", { "type": "at-rule", "name": "media" - }, - "rules" + } ], "order/declaration-block-properties-specified-order": [ [ diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index f740dafb2c3..f5b0211f035 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -161,10 +161,6 @@ ul.zebra-list li:nth-child(even) { background-color: #e7e8ea; } -.site_logo { - background-image: url("./images/site_logo.gif"); -} - /* horizontal lists */ ul.navlinks { @@ -336,9 +332,8 @@ p.post-notice { ------------------------------------------------------------- */ ul.forums { - background-color: #eef5f9; /* old browsers */ /* ff3.6+ */ - background-image: linear-gradient(to bottom, #d2e0eb 0%, #eef5f9 100%); /* w3c */ - filter: progid:dximagetransform.microsoft.gradient(startcolorstr="#d2e0eb", endcolorstr="#eef5f9", gradienttype=0); /* ie6-9 */ + background-color: #eef5f9; + background-image: linear-gradient(to bottom, #d2e0eb 0%, #eef5f9 100%); } ul.topiclist li { @@ -594,10 +589,6 @@ fieldset.polls dd div { color: #000000; } -.online { - background-image: url("./en/icon_user_online.gif"); -} - dd.profile-warnings { color: #bc2a4d; } @@ -627,9 +618,8 @@ dd.profile-warnings { /* colours and backgrounds for buttons.css ------------------------------------------------------------- */ .button { - background-color: #e9e9e9; /* old browsers */ /* ff3.6+ */ - background-image: linear-gradient(to bottom, #ffffff 0%, #e9e9e9 100%); /* w3c */ - filter: progid:dximagetransform.microsoft.gradient(startcolorstr="#ffffff", endcolorstr="#e9e9e9", gradienttype=0); /* ie6-9 */ + background-color: #e9e9e9; + background-image: linear-gradient(to bottom, #ffffff 0%, #e9e9e9 100%); border-color: #c7c3bf; -webkit-box-shadow: 0 0 0 1px #ffffff inset; box-shadow: 0 0 0 1px #ffffff inset; @@ -638,9 +628,8 @@ dd.profile-warnings { .button:hover, .button:focus { - background-color: #ffffff; /* old browsers */ /* ff3.6+ */ - background-image: linear-gradient(to bottom, #e9e9e9 0%, #ffffff 100%); /* w3c */ - filter: progid:dximagetransform.microsoft.gradient(startcolorstr="#e9e9e9", endcolorstr="#ffffff", gradienttype=0); /* ie6-9 */ + background-color: #ffffff; + background-image: linear-gradient(to bottom, #e9e9e9 0%, #ffffff 100%); border-color: #0a8ed0; text-shadow: 1px 1px 0 #ffffff, -1px -1px 0 #ffffff, -1px -1px 0 rgba(188, 42, 77, 0.2); } @@ -743,244 +732,78 @@ dd.profile-warnings { box-shadow: 0 0 10px #0075b0; } -/* icon images */ - -.contact-icon { - background-image: url("./images/icons_contact.png"); -} - -/* profile & navigation icons */ -.pm-icon { - background-position: 0 0; -} - -.email-icon { - background-position: -21px 0; -} - -.jabber-icon { - background-position: -80px 0; -} -.phpbb_icq-icon { - background-position: -61px 0; -} +.site_logo { background-image: url("./images/site_logo.gif"); } +.contact-icon { background-image: url("./images/icons_contact.png"); } -.phpbb_wlm-icon { - background-position: -182px 0; -} - -.phpbb_aol-icon { - background-position: -244px 0; -} - -.phpbb_website-icon { - background-position: -40px 0; -} - -.phpbb_youtube-icon { - background-position: -98px 0; -} - -.phpbb_facebook-icon { - background-position: -119px 0; -} - -.phpbb_googleplus-icon { - background-position: -140px 0; -} - -.phpbb_skype-icon { - background-position: -161px 0; -} - -.phpbb_twitter-icon { - background-position: -203px 0; -} - -.phpbb_yahoo-icon { - background-position: -224px 0; -} +/* profile icons */ +.online { background-image: url("./en/icon_user_online.gif"); } +.pm-icon { background-position: 0 0; } +.email-icon { background-position: -21px 0; } +.jabber-icon { background-position: -80px 0; } +.phpbb_icq-icon { background-position: -61px 0; } +.phpbb_wlm-icon { background-position: -182px 0; } +.phpbb_aol-icon { background-position: -244px 0; } +.phpbb_website-icon { background-position: -40px 0; } +.phpbb_youtube-icon { background-position: -98px 0; } +.phpbb_facebook-icon { background-position: -119px 0; } +.phpbb_googleplus-icon { background-position: -140px 0; } +.phpbb_skype-icon { background-position: -161px 0; } +.phpbb_twitter-icon { background-position: -203px 0; } +.phpbb_yahoo-icon { background-position: -224px 0; } /* forum icons & topic icons */ -.global_read { - background-image: url("./images/announce_read.gif"); -} - -.global_read_mine { - background-image: url("./images/announce_read_mine.gif"); -} - -.global_read_locked { - background-image: url("./images/announce_read_locked.gif"); -} - -.global_read_locked_mine { - background-image: url("./images/announce_read_locked_mine.gif"); -} - -.global_unread { - background-image: url("./images/announce_unread.gif"); -} - -.global_unread_mine { - background-image: url("./images/announce_unread_mine.gif"); -} - -.global_unread_locked { - background-image: url("./images/announce_unread_locked.gif"); -} - -.global_unread_locked_mine { - background-image: url("./images/announce_unread_locked_mine.gif"); -} - -.announce_read { - background-image: url("./images/announce_read.gif"); -} - -.announce_read_mine { - background-image: url("./images/announce_read_mine.gif"); -} - -.announce_read_locked { - background-image: url("./images/announce_read_locked.gif"); -} - -.announce_read_locked_mine { - background-image: url("./images/announce_read_locked_mine.gif"); -} - -.announce_unread { - background-image: url("./images/announce_unread.gif"); -} - -.announce_unread_mine { - background-image: url("./images/announce_unread_mine.gif"); -} - -.announce_unread_locked { - background-image: url("./images/announce_unread_locked.gif"); -} - -.announce_unread_locked_mine { - background-image: url("./images/announce_unread_locked_mine.gif"); -} - -.forum_link { - background-image: url("./images/forum_link.gif"); -} - -.forum_read { - background-image: url("./images/forum_read.gif"); -} - -.forum_read_locked { - background-image: url("./images/forum_read_locked.gif"); -} - -.forum_read_subforum { - background-image: url("./images/forum_read_subforum.gif"); -} - -.forum_unread { - background-image: url("./images/forum_unread.gif"); -} - -.forum_unread_locked { - background-image: url("./images/forum_unread_locked.gif"); -} - -.forum_unread_subforum { - background-image: url("./images/forum_unread_subforum.gif"); -} - -.sticky_read { - background-image: url("./images/sticky_read.gif"); -} - -.sticky_read_mine { - background-image: url("./images/sticky_read_mine.gif"); -} - -.sticky_read_locked { - background-image: url("./images/sticky_read_locked.gif"); -} - -.sticky_read_locked_mine { - background-image: url("./images/sticky_read_locked_mine.gif"); -} - -.sticky_unread { - background-image: url("./images/sticky_unread.gif"); -} - -.sticky_unread_mine { - background-image: url("./images/sticky_unread_mine.gif"); -} - -.sticky_unread_locked { - background-image: url("./images/sticky_unread_locked.gif"); -} - -.sticky_unread_locked_mine { - background-image: url("./images/sticky_unread_locked_mine.gif"); -} - -.topic_moved { - background-image: url("./images/topic_moved.gif"); -} +.global_read { background-image: url("./images/announce_read.gif"); } +.global_read_mine { background-image: url("./images/announce_read_mine.gif"); } +.global_read_locked { background-image: url("./images/announce_read_locked.gif"); } +.global_read_locked_mine { background-image: url("./images/announce_read_locked_mine.gif"); } +.global_unread { background-image: url("./images/announce_unread.gif"); } +.global_unread_mine { background-image: url("./images/announce_unread_mine.gif"); } +.global_unread_locked { background-image: url("./images/announce_unread_locked.gif"); } +.global_unread_locked_mine { background-image: url("./images/announce_unread_locked_mine.gif"); } + +.announce_read { background-image: url("./images/announce_read.gif"); } +.announce_read_mine { background-image: url("./images/announce_read_mine.gif"); } +.announce_read_locked { background-image: url("./images/announce_read_locked.gif"); } +.announce_read_locked_mine { background-image: url("./images/announce_read_locked_mine.gif"); } +.announce_unread { background-image: url("./images/announce_unread.gif"); } +.announce_unread_mine { background-image: url("./images/announce_unread_mine.gif"); } +.announce_unread_locked { background-image: url("./images/announce_unread_locked.gif"); } +.announce_unread_locked_mine { background-image: url("./images/announce_unread_locked_mine.gif"); } + +.forum_link { background-image: url("./images/forum_link.gif"); } +.forum_read { background-image: url("./images/forum_read.gif"); } +.forum_read_locked { background-image: url("./images/forum_read_locked.gif"); } +.forum_read_subforum { background-image: url("./images/forum_read_subforum.gif"); } +.forum_unread { background-image: url("./images/forum_unread.gif"); } +.forum_unread_locked { background-image: url("./images/forum_unread_locked.gif"); } +.forum_unread_subforum { background-image: url("./images/forum_unread_subforum.gif"); } + +.sticky_read { background-image: url("./images/sticky_read.gif"); } +.sticky_read_mine { background-image: url("./images/sticky_read_mine.gif"); } +.sticky_read_locked { background-image: url("./images/sticky_read_locked.gif"); } +.sticky_read_locked_mine { background-image: url("./images/sticky_read_locked_mine.gif"); } +.sticky_unread { background-image: url("./images/sticky_unread.gif"); } +.sticky_unread_mine { background-image: url("./images/sticky_unread_mine.gif"); } +.sticky_unread_locked { background-image: url("./images/sticky_unread_locked.gif"); } +.sticky_unread_locked_mine { background-image: url("./images/sticky_unread_locked_mine.gif"); } .pm_read, -.topic_read { - background-image: url("./images/topic_read.gif"); -} - -.topic_read_mine { - background-image: url("./images/topic_read_mine.gif"); -} - -.topic_read_hot { - background-image: url("./images/topic_read_hot.gif"); -} - -.topic_read_hot_mine { - background-image: url("./images/topic_read_hot_mine.gif"); -} - -.topic_read_locked { - background-image: url("./images/topic_read_locked.gif"); -} - -.topic_read_locked_mine { - background-image: url("./images/topic_read_locked_mine.gif"); -} +.topic_read { background-image: url("./images/topic_read.gif"); } +.topic_moved { background-image: url("./images/topic_moved.gif"); } +.topic_read_mine { background-image: url("./images/topic_read_mine.gif"); } +.topic_read_hot { background-image: url("./images/topic_read_hot.gif"); } +.topic_read_hot_mine { background-image: url("./images/topic_read_hot_mine.gif"); } +.topic_read_locked { background-image: url("./images/topic_read_locked.gif"); } +.topic_read_locked_mine { background-image: url("./images/topic_read_locked_mine.gif"); } .pm_unread, -.topic_unread { - background-image: url("./images/topic_unread.gif"); -} - -.topic_unread_mine { - background-image: url("./images/topic_unread_mine.gif"); -} - -.topic_unread_hot { - background-image: url("./images/topic_unread_hot.gif"); -} - -.topic_unread_hot_mine { - background-image: url("./images/topic_unread_hot_mine.gif"); -} - -.topic_unread_locked { - background-image: url("./images/topic_unread_locked.gif"); -} - -.topic_unread_locked_mine { - background-image: url("./images/topic_unread_locked_mine.gif"); -} - +.topic_unread { background-image: url("./images/topic_unread.gif"); } +.topic_unread_mine { background-image: url("./images/topic_unread_mine.gif"); } +.topic_unread_hot { background-image: url("./images/topic_unread_hot.gif"); } +.topic_unread_hot_mine { background-image: url("./images/topic_unread_hot_mine.gif"); } +.topic_unread_locked { background-image: url("./images/topic_unread_locked.gif"); } +.topic_unread_locked_mine { background-image: url("./images/topic_unread_locked_mine.gif"); } /* colours and backgrounds for cp.css ------------------------------------------------------------- */ @@ -1030,9 +853,8 @@ ul.cplist { .tabs .activetab > a, .tabs .activetab > a:hover { - background-color: #cadceb; /* old browsers */ /* ff3.6+ */ - background-image: linear-gradient(to bottom, #e2f2ff 0%, #cadceb 100%); /* w3c */ - filter: progid:dximagetransform.microsoft.gradient(startcolorstr="#e2f2ff", endcolorstr="#cadceb", gradienttype=0); /* ie6-9 */ + background-color: #cadceb; + background-image: linear-gradient(to bottom, #e2f2ff 0%, #cadceb 100%); border-color: #cadceb; box-shadow: 0 1px 1px #f2f9ff inset; color: #333333; @@ -1066,27 +888,23 @@ ul.cplist { /* link styles for the sub-section links */ .navigation a { - background: #cadceb; /* old browsers */ /* ff3.6+ */ - background-image: linear-gradient(to right, #b4c4d1 50%, #cadceb 100%); /* w3c */ - filter: progid:dximagetransform.microsoft.gradient(startcolorstr="#b4c4d1", endcolorstr="#cadceb", gradienttype=1); /* ie6-9 */ + background: #cadceb; + background-image: linear-gradient(to right, #b4c4d1 50%, #cadceb 100%); color: #333333; } .rtl .navigation a { - background: #b4c4d1; /* old browsers */ /* ff3.6+ */ - background-image: linear-gradient(to right, #cadceb 50%, #b4c4d1 100%); /* w3c */ - filter: progid:dximagetransform.microsoft.gradient(startcolorstr="#cadceb", endcolorstr="#b4c4d1", gradienttype=1); /* ie6-9 */ + background: #b4c4d1; + background-image: linear-gradient(to right, #cadceb 50%, #b4c4d1 100%); } .navigation a:hover { background: #aabac6; - filter: progid:dximagetransform.microsoft.gradient(enabled = false); color: #bc2a4d; } .navigation .active-subsection a { background: #f9f9f9; - filter: progid:dximagetransform.microsoft.gradient(enabled = false); color: #d31141; } @@ -1310,9 +1128,8 @@ input.disabled { } .dropdown-extended .header { - background-color: #f1f8ff; /* old browsers */ /* ff3.6+ */ - background-image: linear-gradient(to bottom, #f1f8ff 0%, #cadceb 100%); /* w3c */ - filter: progid:dximagetransform.microsoft.gradient(startcolorstr="#f1f8ff", endcolorstr="#cadceb", gradienttype=0); /* ie6-9 */ + background-color: #f1f8ff; + background-image: linear-gradient(to bottom, #f1f8ff 0%, #cadceb 100%); } .dropdown .pointer { @@ -1361,4 +1178,7 @@ li.notification-disapproved strong { background-color: #d31141; color: #ffffff; } -/* stylelint-enable */ + +/* stylelint-enable selector-max-compound-selectors */ +/* stylelint-enable selector-no-qualifying-type */ +/* stylelint-enable no-indistinguishable-colors */ From 84fdd1a5d42c2f0c896620d6e7eadfc088fc8beb Mon Sep 17 00:00:00 2001 From: Michael Miday Date: Sat, 25 Mar 2017 10:07:43 -0400 Subject: [PATCH 096/431] [ticket/15115] Fix typo PHPBB3-15115 --- phpBB/styles/prosilver/theme/tweaks.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/styles/prosilver/theme/tweaks.css b/phpBB/styles/prosilver/theme/tweaks.css index c8075c02529..d6328ae5f6d 100644 --- a/phpBB/styles/prosilver/theme/tweaks.css +++ b/phpBB/styles/prosilver/theme/tweaks.css @@ -28,7 +28,7 @@ dd label input { height: 20px\9; } -/* IE8 often can"t handle max-width in %, so we use px instead */ +/* IE8 often can not handle max-width in %, so we use px instead */ .postprofile .avatar img { max-width: 150px\9; } From f0e07ceb90ec811aef3dd1026565a649ce1c3495 Mon Sep 17 00:00:00 2001 From: hanakin Date: Thu, 9 Mar 2017 11:30:51 -0500 Subject: [PATCH 097/431] [ticket/15116] Fix admin errors PHPBB3-15116 --- phpBB/adm/style/admin.css | 1570 +++++++++++++++++++++---------------- 1 file changed, 883 insertions(+), 687 deletions(-) diff --git a/phpBB/adm/style/admin.css b/phpBB/adm/style/admin.css index 9ff349d3e85..3efbf93a474 100644 --- a/phpBB/adm/style/admin.css +++ b/phpBB/adm/style/admin.css @@ -7,50 +7,70 @@ the docs/CREDITS.txt file. ------------------------------------------------------------------------ */ +/* stylelint-disable selector-no-id */ +/* stylelint-disable selector-max-compound-selectors */ +/* stylelint-disable selector-no-qualifying-type */ +/* stylelint-disable declaration-property-unit-blacklist */ +/* stylelint-disable declaration-property-unit-whitelist */ /* General markup styles ---------------------------------------- */ * { /* Reset browsers default margin, padding and font sizes */ + font-size: 100%; margin: 0; padding: 0; - font-size: 100%; } abbr { text-decoration: none; } -body, div, p, th, td, li, dd { - font-size: x-small; +body, +div, +p, +th, +td, +li, +dd { + font-size: small; voice-family: "\"}\""; voice-family: inherit; - font-size: small; } -html>body, html>div, html>p, html>th, html>td, html>li, html>dd { +html > body, +html > div, +html > p, +html > th, +html > td, +html > li, +html > dd { font-size: small; } html { + word-wrap: break-word; + background: #dbd7d1; color: #536482; - background: #DBD7D1; + /* Always show a scrollbar for short pages - stops the jump when the scrollbar appears. non-ie browsers */ height: 100%; margin-bottom: 1px; - word-wrap: break-word; } body { /* Text-Sizing with ems: http://www.clagnut.com/blog/348/ */ font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif; + font-size: 62.5%; + background: #dbd7d1; color: #536482; - background: #DBD7D1; - font-size: 62.5%; /* This sets the default font size to be equivalent to 10px */ + + /* This sets the default font size to be equivalent to 10px */ margin: 10px 15px; } -code, samp { +code, +samp { font-size: 1.2em; } @@ -60,41 +80,44 @@ img { h1 { font-family: "Trebuchet MS", Helvetica, sans-serif; - font-size: 1.70em; + font-size: 1.7em; font-weight: normal; color: #333333; } -h2, caption { +h2, +caption { font-family: "Trebuchet MS", Helvetica, sans-serif; - font-size: 1.40em; + font-size: 1.4em; font-weight: normal; - color: #115098; text-align: left; + color: #115098; margin-top: 25px; } -.rtl h2, .rtl caption { +.rtl h2, +.rtl caption { text-align: right; } -h3, h4 { +h3, +h4 { font-family: "Trebuchet MS", Helvetica, sans-serif; - font-size: 1.20em; + font-size: 1.2em; + line-height: 1.2em; text-decoration: none; - line-height: 1.20em; margin-top: 25px; } p { + font-size: 0.9em; + line-height: 1.4em; margin-bottom: 0.7em; - line-height: 1.40em; - font-size: 0.90em; } ul { - list-style: disc; margin: 0 0 1em 2em; + list-style: disc; } .rtl ul { @@ -104,9 +127,9 @@ ul { hr { border: 0 none; border-top: 1px dashed #999999; + height: 1px; margin-bottom: 5px; padding-bottom: 5px; - height: 1px; } .centered-text { @@ -129,51 +152,53 @@ hr { display: none; } -@media only screen and (max-width: 800px), only screen and (max-device-width: 800px) -{ +@media only screen and (max-width: 800px), only screen and (max-device-width: 800px) { body { margin: 5px 5px 0; } } -@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) -{ - html, body { +@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { + html, + body { height: auto; margin: 0; padding: 0; } } - /* General links */ -a:link, a:visited { - color: #105289; +a:link, +a:visited { text-decoration: none; + color: #105289; } a:hover { - color: #BC2A4D; text-decoration: underline; + color: #bc2a4d; } a:active { - color: #368AD2; text-decoration: none; + color: #368ad2; } .install-body p a { font-weight: bold; } -a#maincontent, a#acl, a#assigned_to { +a#maincontent, +a#acl, +a#assigned_to { display: block; } /* List items */ -ul, ol { - list-style-position: inside; +ul, +ol { margin-left: 1em; + list-style-position: inside; } li { @@ -181,19 +206,18 @@ li { list-style-type: inherit; } - /* Main blocks ---------------------------------------- */ #wrap { - padding: 0 0 15px 0; min-width: 615px; + padding: 0 0 15px; } #page-header { + font-size: 0.85em; text-align: right; background: url("../images/phpbb_logo.png") top left no-repeat; height: 54px; - font-size: 0.85em; margin-bottom: 10px; } @@ -203,14 +227,14 @@ li { } #page-header h1 { + font-family: "Trebuchet MS", Helvetica, sans-serif; + font-size: 1.7em; color: #767676; - font-family: "Trebuchet MS",Helvetica,sans-serif; - font-size: 1.70em; padding-top: 10px; } #page-header p { - font-size: 1.00em; + font-size: 1em; } #page-header p#skip { @@ -227,13 +251,13 @@ li { } #content { - padding: 30px 10px 10px; position: relative; + padding: 30px 10px 10px; } #content h1 { - color: #115098; line-height: 1.2em; + color: #115098; margin-bottom: 0; } @@ -253,29 +277,30 @@ li { } .rtl .main { - margin-left: 0; margin-right: 210px; + margin-left: 0; } #page-body.simple-page-body { + min-width: 0; padding: 0; padding-right: 10px; - min-width: 0; } -@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) -{ - #wrap, #page-body, #page-body.simple-page-body { - padding: 0; +@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { + #wrap, + #page-body, + #page-body.simple-page-body { min-width: 300px; + padding: 0; } #page-header { - margin: 5px; - padding-left: 160px; + overflow: hidden; height: auto; min-height: 54px; - overflow: hidden; + margin: 5px; + padding-left: 160px; } .rtl #page-header { @@ -286,22 +311,25 @@ li { #page-header h1 { font-size: 1.2em; white-space: nowrap; - overflow: hidden; text-overflow: ellipsis; + overflow: hidden; } #page-header fieldset { margin-top: 5px; } - #main, .rtl #main, .main, .rtl .main { + #main, + .rtl #main, + .main, + .rtl .main { float: none; width: auto; margin: 0; } #content { - background: #F3F3F3 url("../images/innerbox_bg.gif") repeat-x top; + background: #f3f3f3 url("../images/innerbox_bg.gif") repeat-x top; padding: 5px; } @@ -310,12 +338,11 @@ li { } } -@media only screen and (max-width: 400px), only screen and (max-device-width: 400px) -{ +@media only screen and (max-width: 400px), only screen and (max-device-width: 400px) { #page-header { background-size: 76px 26.5px; - padding-left: 80px; min-height: 30px; + padding-left: 80px; } .rtl #page-header { @@ -323,34 +350,33 @@ li { } #page-header h1 { - padding-top: 0; font-size: 1.1em; + padding-top: 0; } } - /* Tabbed menu -----------------------------------------*/ +---------------------------------------- */ #tabs { font-family: Arial, Helvetica, sans-serif; line-height: normal; - margin: 0 7px; position: relative; z-index: 2; + margin: 0 7px; } #tabs > ul { - list-style: none; margin: 0; padding: 0; + list-style: none; } #tabs .tab { - display: inline-block; - float: left; font-size: 0.85em; font-weight: bold; line-height: 14px; + display: inline-block; + float: left; } .rtl #tabs .tab { @@ -358,47 +384,37 @@ li { } #tabs .tab > a { - background: #D4D6DA; - background: -moz-linear-gradient(top, #CACBCF 0%, #D4D6DA 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #CACBCF), color-stop(100%, #D4D6DA)); - background: -webkit-linear-gradient(top, #CACBCF 0%, #D4D6DA 100%); - background: -o-linear-gradient(top, #CACBCF 0%, #D4D6DA 100%); - background: -ms-linear-gradient(top, #CACBCF 0%, #D4D6DA 100%); - background: linear-gradient(to bottom, #CACBCF 0%, #D4D6DA 100%); - border: 1px solid #BBB; + font-weight: bold; + white-space: nowrap; + text-decoration: none; + text-transform: uppercase; + background: #d4d6da; + background: linear-gradient(to bottom, #cacbcf 0%, #d4d6da 100%); + border: 1px solid #bbbbbb; border-bottom-width: 0; border-radius: 5px 5px 0 0; color: #767676; + position: relative; display: block; - font-weight: bold; margin: 1px 1px 2px 0; padding: 6px 9px 4px; - position: relative; - text-decoration: none; - text-transform: uppercase; - white-space: nowrap; cursor: pointer; } #tabs .tab > a:hover { - background: #F1F1EE; - border-color: #C0BFBB; - color: #BC2A4D; + background: #f1f1ee; + border-color: #c0bfbb; + color: #bc2a4d; } #tabs .activetab > a, #tabs .activetab > a:hover { - background: #DCDEE2; - background: -moz-linear-gradient(top, #F2F2F2 0%, #DCDEE2 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #F2F2F2), color-stop(100%, #DCDEE2)); - background: -webkit-linear-gradient(top, #F2F2F2 0%, #DCDEE2 100%); - background: -o-linear-gradient(top, #F2F2F2 0%, #DCDEE2 100%); - background: -ms-linear-gradient(top, #F2F2F2 0%, #DCDEE2 100%); - background: linear-gradient(to bottom, #F2F2F2 0%, #DCDEE2 100%); - border-color: #999; - border-bottom: 2px solid #DCDEE2; - box-shadow: 0 1px 1px #FFF inset; - color: #23649F; + background: #dcdee2; + background: linear-gradient(to bottom, #f2f2f2 0%, #dcdee2 100%); + border-color: #999999; + border-bottom: 2px solid #dcdee2; + box-shadow: 0 1px 1px #ffffff inset; + color: #23649f; margin: 0 1px 0 0; padding: 7px 10px 4px; } @@ -408,49 +424,50 @@ li { } /* Responsive tabs -----------------------------------------*/ +---------------------------------------- */ .responsive-tab { position: relative; } .responsive-tab > a.responsive-tab-link { - display: block; font-size: 16px; - position: relative; - width: 16px; line-height: 14px; text-decoration: none; - padding-left: 9px !important; + position: relative; + display: block; + width: 16px; padding-right: 9px !important; + padding-left: 9px !important; } .responsive-tab .responsive-tab-link:before { - content: ''; + border-top: 0.375em double #767676; + border-bottom: 0.125em solid #767676; position: absolute; - left: 10px; top: 7px; - height: .125em; + left: 10px; width: 14px; - border-bottom: 0.125em solid #767676; - border-top: 0.375em double #767676; + height: 0.125em; + content: ""; } .responsive-tab .responsive-tab-link:hover:before { - border-color: #BC2A4D; + border-color: #bc2a4d; } .responsive-tab.activetab .responsive-tab-link:before { - border-color: #23649F; + border-color: #23649f; } .responsive-tab.activetab .responsive-tab-link:hover:before { border-color: #115098; } -#tabs .dropdown, #minitabs .dropdown { +#tabs .dropdown, +#minitabs .dropdown { + font-weight: normal; top: 20px; margin-right: -2px; - font-weight: normal; } #tabs .dropdown-right .dropdown { @@ -458,12 +475,12 @@ li { } #tabs .dropdown-contents { - list-style: none; margin: 0; + list-style: none; } #tabs .dropdown li { - border-bottom: 1px dotted #DCDCDC; + border-bottom: 1px dotted #dcdcdc; } #tabs .dropdown li:last-child { @@ -471,23 +488,23 @@ li { } #tabs .dropdown a { + text-align: right; display: block; padding: 4px 8px; - text-align: right; } /* Main Panel ---------------------------------------- */ #acp { + background: #f3f3f3 url("../images/innerbox_bg.gif") repeat-x top; + border: 1px #999999 solid; + border-radius: 5px; + box-shadow: #ffffff 0 0 0 1px inset; position: relative; top: -2px; + min-width: 550px; margin: 0 0 2px; padding: 3px 1px; - min-width: 550px; - background: #F3F3F3 url("../images/innerbox_bg.gif") repeat-x top; - border: 1px #999999 solid; - border-radius: 5px; - box-shadow: #FFF 0 0 0 1px inset; } #acp:first-child { @@ -495,22 +512,21 @@ li { } .panel { - background: #F3F3F3 url("../images/innerbox_bg.gif") repeat-x top; - padding: 5px 0; + background: #f3f3f3 url("../images/innerbox_bg.gif") repeat-x top; border-radius: 5px; overflow: hidden; + padding: 5px 0; } -@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) -{ +@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { #acp { + background: #ffffff; + border-width: 1px 0; + border-radius: 0; + box-shadow: none; min-width: 0; min-height: 0; - border-radius: 0; - border-width: 1px 0; - background: #fff; padding: 1px 0; - box-shadow: none; } } @@ -519,19 +535,19 @@ li { /* Menu */ #menu { + font-size: 1em; + border-right: 1px solid #cccfd3; + position: relative; + z-index: 1; float: left; width: 200px; - font-size: 1.00em; padding: 0; - border-right: 1px solid #CCCFD3; - position: relative; - z-index: 1; } .rtl #menu { - float: right; border: none; - border-left: 1px solid #CCCFD3; + border-left: 1px solid #cccfd3; + float: right; } #menu p { @@ -539,104 +555,111 @@ li { } #menu ul { - list-style: none; + word-wrap: normal; margin: 0; padding: 0; - word-wrap: normal; + list-style: none; } /* Default list state */ -#menu li, #menu .header { - padding: 0; - margin: 0; +#menu li, +#menu .header { font-size: 0.85em; font-weight: bold; display: block; + margin: 0; + padding: 0; } /* Link styles for the sub-section links */ #menu li span { + font-weight: normal; + text-decoration: none; + color: #138ecb; display: block; - padding: 3px 3px 3px 8px; margin: 1px 0; - text-decoration: none; - font-weight: normal; - color: #138ECB; + padding: 3px 3px 3px 8px; } .rtl #menu li span { padding: 3px 8px 3px 3px; } -#menu li a:hover, #menu li a:hover span { +#menu li a:hover, +#menu li a:hover span { text-decoration: none; - background-color: #FFFFFF; - color: #BC2A4D; + background-color: #ffffff; + color: #bc2a4d; } -#menu li a:active, #menu li a:active span { - color: #F632A0; +#menu li a:active, +#menu li a:active span { + color: #f632a0; } #menu li#activemenu a span { - text-decoration: none; font-weight: bold; - color: #1180B7; + text-decoration: none; background: transparent url("../images/arrow_right.gif") 0% 50% no-repeat; + color: #1180b7; } .rtl #menu li#activemenu a span { background: transparent url("../images/arrow_left.gif") 100% 50% no-repeat; } -#menu li#activemenu a:hover span, #menu li#activemenu span { - text-decoration: none; +#menu li#activemenu a:hover span, +#menu li#activemenu span { font-weight: bold; - color: #BC2A4D; - background: #FFFFFF url("../images/arrow_right.gif") 1% 50% no-repeat; + text-decoration: none; + background: #ffffff url("../images/arrow_right.gif") 1% 50% no-repeat; + color: #bc2a4d; } -.rtl #menu li#activemenu a:hover span, .rtl #menu li#activemenu span { - background: #FFFFFF url("../images/arrow_left.gif") 99% 50% no-repeat; +.rtl #menu li#activemenu a:hover span, +.rtl #menu li#activemenu span { + background: #ffffff url("../images/arrow_left.gif") 99% 50% no-repeat; } -#menu li a:active, #menu li a:active span, #menu li#activemenu a:active span { - color: #F632A0; +#menu li a:active, +#menu li a:active span, +#menu li#activemenu a:active span { + color: #f632a0; } #menu li span.completed { text-decoration: none; - padding: 3px 3px 3px 12px; background: url("../images/arrow_down.gif") 1% 50% no-repeat; + padding: 3px 3px 3px 12px; } .rtl #menu li span.completed { text-decoration: none; - padding: 3px 12px 3px 3px; background: url("../images/arrow_down.gif") 99% 50% no-repeat; + padding: 3px 12px 3px 3px; } #menu .header { font-family: Tahoma, Helvetica, sans-serif; - display: block; + font-size: 0.75em; font-weight: bold; + text-decoration: none; + text-transform: uppercase; + border-bottom: 1px solid #327aa5; + outline-style: none; color: #115098; - border-bottom: 1px solid #327AA5; - padding: 4px 0 2px; + display: block; margin-top: 15px; - text-transform: uppercase; - font-size: 0.75em; - text-decoration: none; + padding: 4px 0 2px; cursor: inherit; - outline-style: none; } -@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) -{ - #menu, .rtl #menu { +@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { + #menu, + .rtl #menu { + border-width: 0; float: none; width: auto; - border-width: 0; max-width: 200px; margin: 0 auto 10px; } @@ -646,10 +669,10 @@ li { } #menu .menu-block.active { + background: rgba(255, 255, 255, 0.5); + border-radius: 5px; margin: 0 -5px; padding: 0 5px 3px; - background: rgba(255, 255, 255, .5); - border-radius: 5px; } #menu .menu-block.no-header.active { @@ -657,31 +680,35 @@ li { } #menu .menu-block .header { - margin-top: 5px; - cursor: pointer; + text-decoration: underline; border-bottom-width: 0; position: relative; - text-decoration: underline; + margin-top: 5px; + cursor: pointer; } - #menu .menu-block .header:focus, #menu .menu-block.active .header { - color: #D31141; + #menu .menu-block .header:focus, + #menu .menu-block.active .header { text-decoration: none; + color: #d31141; } #menu .menu-block ul { display: none; } - .nojs #menu .menu-block:hover ul, #menu .menu-block.active ul, #menu .menu-block.no-header ul { + .nojs #menu .menu-block:hover ul, + #menu .menu-block.active ul, + #menu .menu-block.no-header ul { display: block; } #menu .menu-block li:last-child { - border-bottom: 1px solid #327AA5; + border-bottom: 1px solid #327aa5; } - #menu .menu-block:last-child li:last-child, #menu .menu-block.active li:last-child { + #menu .menu-block:last-child li:last-child, + #menu .menu-block.active li:last-child { border-bottom-width: 0; } @@ -690,48 +717,47 @@ li { } } - /* Table styles ---------------------------------------- */ - table { + background-color: #ffffff; + border: 1px solid #cccfd3; width: 100%; - border: 1px solid #CCCFD3; - background-color: #FFFFFF; padding: 1px; } th { - padding: 3px 4px; - color: #FFFFFF; - background: #70AED3 url("../images/gradient2b.gif") bottom left repeat-x; - border-top: 1px solid #6DACD2; - border-bottom: 1px solid #327AA5; - text-align: left; font-size: 0.75em; + text-align: left; text-transform: uppercase; + background: #70aed3 url("../images/gradient2b.gif") bottom left repeat-x; + border-top: 1px solid #6dacd2; + border-bottom: 1px solid #327aa5; + color: #ffffff; + padding: 3px 4px; } td { - text-align: left; font-size: 0.85em; + line-height: 1.2em; + text-align: left; padding: 4px; - line-height: 1.20em; } -.rtl th, .rtl td { +.rtl th, +.rtl td { text-align: right; } .table1 { - border-collapse: separate; - border-spacing: 1px; clear: both; + border-spacing: 1px; + border-collapse: separate; } dt#color_palette_placeholder table { - margin-right: 5px; width: 80px; + margin-right: 5px; } #color_palette_placeholder td { @@ -739,34 +765,34 @@ dt#color_palette_placeholder table { } table.type2 { - border: none; background: none; + border: none; padding: 0; } table.type2 th { + text-align: center; background: none; border-top: none; - text-align: center; color: #115098; padding: 2px 0; } table.type2 td { - padding: 0; font-size: 1em; + padding: 0; } table.type2 td.name { - padding: 2px; vertical-align: middle; + padding: 2px; } -table.type3 { +table.type3 { + background-color: transparent; + border: none; float: right; width: 300px; - border: none; - background-color: transparent; padding: 0; } @@ -775,25 +801,25 @@ table.type3 { } table.type3 thead th { + font-size: 0.85em; + font-weight: normal; + text-align: center; + text-transform: none; background-color: transparent; border-top: none; - text-align: center; color: #115098; padding: 0 3px; - font-size: 0.85em; - font-weight: normal; - text-transform: none; } table.type3 tbody th { - border-top: none; + font-size: 0.9em; + font-weight: normal; text-align: left; text-transform: none; - padding: 0; border: none; - font-size: 0.90em; - font-weight: normal; + border-top: none; width: 100%; + padding: 0; } .rtl table.type3 tbody th { @@ -815,8 +841,8 @@ th.name { } td.name { - text-align: left; font-weight: bold; + text-align: left; } .rtl td.name { @@ -824,8 +850,8 @@ td.name { } .entry { - text-align: left; font-weight: normal; + text-align: left; } .rtl .entry { @@ -833,95 +859,131 @@ td.name { } .row1 { - background-color: #F9F9F9; + background-color: #f9f9f9; } table.zebra-table tbody tr:nth-child(odd) { - background-color: #F9F9F9; + background-color: #f9f9f9; } .row2 { - background-color: #DCEBFE; + background-color: #dcebfe; } table.zebra-table tbody tr:nth-child(even) { - background-color: #DCEBFE; + background-color: #dcebfe; +} + +.row3 { + background-color: #dbdfe2; +} + +.row4 { + background-color: #e4e8eb; } -.row3 { background-color: #DBDFE2; } -.row4 { background-color: #E4E8EB; } -.col1 { background-color: #DCEBFE; } -.col2 { background-color: #F9F9F9; } +.col1 { + background-color: #dcebfe; +} + +.col2 { + background-color: #f9f9f9; +} /* 4 row background colours for trees */ -.row1a { background-color: #F9F9F9; } -.row1b { background-color: #F6F6F6; } -.row2a { background-color: #E7EEF4; } -.row2b { background-color: #E3EBF2; } +.row1a { + background-color: #f9f9f9; +} + +.row1b { + background-color: #f6f6f6; +} + +.row2a { + background-color: #e7eef4; +} + +.row2b { + background-color: #e3ebf2; +} -tr.row-highlight:hover td { background-color: #DBDFE2; } +tr.row-highlight:hover td { + background-color: #dbdfe2; +} .spacer { - background-color: #DBDFE2; - height: 1px; line-height: 1px; + background-color: #dbdfe2; + height: 1px; } /* Deactivated row */ .row-inactive { - color: #999; + color: #999999; } -.row-inactive a, .row-inactive strong { - color: #888; + +.row-inactive a, +.row-inactive strong { + color: #888888; } + .row-inactive a:hover { - color: #BC2A4D; + color: #bc2a4d; } /* Specific tables */ table.forums td.folder { - width: 27px; text-align: center; + width: 27px; } table td.actions { - vertical-align: middle; - width: 100px; text-align: center; + vertical-align: middle; white-space: nowrap; + width: 100px; } -table tr:first-child td.actions .up, table tr:last-child td.actions .down { +table tr:first-child td.actions .up, +table tr:last-child td.actions .down { display: none; } -table tr:first-child td.actions .up-disabled, table tr:last-child td.actions .down-disabled { +table tr:first-child td.actions .up-disabled, +table tr:last-child td.actions .down-disabled { display: inline !important; } -table.styles td.users, table td.mark { +table.styles td.users, +table td.mark { text-align: center; } table.fixed-width-table { - table-layout: fixed; word-break: break-word; + table-layout: fixed; } -@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) -{ - table.responsive, table.responsive tbody, table.responsive tr, table.responsive td { +@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { + table.responsive, + table.responsive tbody, + table.responsive tr, + table.responsive td { display: block; } - table.responsive thead, table.responsive th, table.responsive colgroup { + table.responsive thead, + table.responsive th, + table.responsive colgroup { display: none; } - table.responsive.show-header thead, table.responsive.show-header th:first-child, table.responsive caption { + table.responsive.show-header thead, + table.responsive.show-header th:first-child, + table.responsive caption { + text-align: left !important; display: block; width: auto !important; - text-align: left !important; margin: 0; } @@ -932,45 +994,76 @@ table.fixed-width-table { } table.responsive caption { - padding: 3px 4px; - color: #FFFFFF; - background: #70AED3 url("../images/gradient2b.gif") bottom left repeat-x; - border-top: 1px solid #6DACD2; - border-bottom: 1px solid #327AA5; - text-align: left; font-size: 0.75em; font-weight: bold; + text-align: left; text-transform: uppercase; + background: #70aed3 url("../images/gradient2b.gif") bottom left repeat-x; + border-top: 1px solid #6dacd2; + border-bottom: 1px solid #327aa5; + color: #ffffff; + padding: 3px 4px; } - table.responsive.show-header th:first-child span.rank-img, table.responsive.no-caption caption, table.responsive.no-header thead { + table.responsive.show-header th:first-child span.rank-img, + table.responsive.no-caption caption, + table.responsive.no-header thead { display: none; } table.responsive tr { + background-color: #ffffff; + border: 1px solid #cccfd3; + overflow: hidden; margin: 2px 0; - border: 1px solid #CCCFD3; - background-color: #FFFFFF; padding: 1px 1px 0; - overflow: hidden; } - table.responsive tr.row1 td { background-color: #F9F9F9; } - table.responsive tr.row2 td { background-color: #DCEBFE; } - table.responsive tr.row3 td { background-color: #DBDFE2; } - table.responsive tr.row4 td { background-color: #E4E8EB; } - table.responsive tr.col1 td { background-color: #DCEBFE; } - table.responsive tr.col2 td { background-color: #F9F9F9; } - table.responsive tr.row1a td { background-color: #F9F9F9; } - table.responsive tr.row1b td { background-color: #F6F6F6; } - table.responsive tr.row2a td { background-color: #E7EEF4; } - table.responsive tr.row2b td { background-color: #E3EBF2; } + table.responsive tr.row1 td { + background-color: #f9f9f9; + } + + table.responsive tr.row2 td { + background-color: #dcebfe; + } + + table.responsive tr.row3 td { + background-color: #dbdfe2; + } + + table.responsive tr.row4 td { + background-color: #e4e8eb; + } + + table.responsive tr.col1 td { + background-color: #dcebfe; + } + + table.responsive tr.col2 td { + background-color: #f9f9f9; + } + + table.responsive tr.row1a td { + background-color: #f9f9f9; + } + + table.responsive tr.row1b td { + background-color: #f6f6f6; + } + + table.responsive tr.row2a td { + background-color: #e7eef4; + } + + table.responsive tr.row2b td { + background-color: #e3ebf2; + } table.responsive td { - width: auto !important; text-align: left !important; - padding: 4px; + width: auto !important; margin-bottom: 1px; + padding: 4px; } .rtl table.responsive td { @@ -986,15 +1079,14 @@ table.fixed-width-table { } table.responsive td > dfn:after { - content: ':'; padding-right: 5px; + content: ":"; } table.responsive.two-columns td { - width: 50% !important; float: left; - -moz-box-sizing: border-box; box-sizing: border-box; + width: 50% !important; } .rtl table.responsive.two-columns td { @@ -1016,28 +1108,29 @@ table.fixed-width-table { /* Specific tables */ table.responsive.forums td.folder { + background: transparent; float: left; width: 27px; - background: transparent; } + .rtl table.responsive.forums td.folder { float: right; } table.responsive.forums td.forum-desc { - margin-left: 35px; - min-height: 27px; background: transparent; + min-height: 27px; + margin-left: 35px; } .rtl table.responsive.forums td.forum-desc { - margin-left: 0; margin-right: 35px; + margin-left: 0; } table.responsive td.actions { - clear: both; text-align: right !important; + clear: both; } .rtl table.responsive td.actions { @@ -1045,15 +1138,17 @@ table.fixed-width-table { } table.responsive.styles tr.responsive-style-row td:first-child { - padding-left: 4px !important; padding-right: 4px !important; + padding-left: 4px !important; } - table.responsive.styles td:first-child > dfn, table.responsive td.actions > dfn { + table.responsive.styles td:first-child > dfn, + table.responsive td.actions > dfn { display: none !important; } - .horizontal-palette td:nth-child(2n), .vertical-palette tr:nth-child(2n) { + .horizontal-palette td:nth-child(2n), + .vertical-palette tr:nth-child(2n) { display: none; } @@ -1063,17 +1158,17 @@ table.fixed-width-table { } /* General form styles -----------------------------------------*/ +---------------------------------------- */ fieldset { + background-color: #ffffff; + border-top: 1px solid #d7d7d7; + border-right: 1px solid #cccccc; + border-bottom: 1px solid #cccccc; + border-left: 1px solid #d7d7d7; + border-radius: 3px; + position: relative; margin: 15px 0; padding: 10px; - border-top: 1px solid #D7D7D7; - border-right: 1px solid #CCCCCC; - border-bottom: 1px solid #CCCCCC; - border-left: 1px solid #D7D7D7; - background-color: #FFFFFF; - position: relative; - border-radius: 3px; } fieldset h2 { @@ -1081,10 +1176,10 @@ fieldset h2 { } .rtl fieldset { - border-top: 1px solid #D7D7D7; - border-right: 1px solid #D7D7D7; - border-bottom: 1px solid #CCCCCC; - border-left: 1px solid #CCCCCC; + border-top: 1px solid #d7d7d7; + border-right: 1px solid #d7d7d7; + border-bottom: 1px solid #cccccc; + border-left: 1px solid #cccccc; } fieldset p { @@ -1092,49 +1187,53 @@ fieldset p { } legend { - padding: 1px 0; - font-family: Tahoma,arial,Verdana,Sans-serif; - font-size: .9em; + font-family: Tahoma, arial, Verdana, Sans-serif; + font-size: 0.9em; font-weight: bold; - color: #115098; - margin-top: -.4em; - position: relative; - text-transform: none; line-height: 1.2em; - top: -.2em; vertical-align: middle; + text-transform: none; + color: #115098; + position: relative; + top: -0.2em; + margin-top: -0.4em; + padding: 1px 0; } -input, textarea { +input, +textarea { font-family: Verdana, Helvetica, Arial, sans-serif; - font-size: 0.90em; + font-size: 0.9em; font-weight: normal; vertical-align: middle; - padding: 2px; + background-color: #e3dfd8; + border-top: 1px solid #afaeaa; + border-right: 1px solid #d5d5c8; + border-bottom: 1px solid #d5d5c8; + border-left: 1px solid #afaeaa; color: #111111; - border-left: 1px solid #AFAEAA; - border-top: 1px solid #AFAEAA; - border-right: 1px solid #D5D5C8; - border-bottom: 1px solid #D5D5C8; - background-color: #E3DFD8; + padding: 2px; } -.rtl input, .rtl textarea { - border-left: 1px solid #D5D5C8; - border-top: 1px solid #AFAEAA; - border-right: 1px solid #AFAEAA; - border-bottom: 1px solid #D5D5C8; +.rtl input, +.rtl textarea { + border-top: 1px solid #afaeaa; + border-right: 1px solid #afaeaa; + border-bottom: 1px solid #d5d5c8; + border-left: 1px solid #d5d5c8; } -input:hover, textarea:hover { - border-left: 1px solid #AFAEAA; - border-top: 1px solid #AFAEAA; - border-right: 1px solid #AFAEAA; - border-bottom: 1px solid #AFAEAA; - background-color: #E9E9E2; +input:hover, +textarea:hover { + background-color: #e9e9e2; + border-top: 1px solid #afaeaa; + border-right: 1px solid #afaeaa; + border-bottom: 1px solid #afaeaa; + border-left: 1px solid #afaeaa; } -input.langvalue, textarea.langvalue { +input.langvalue, +textarea.langvalue { width: 90%; } @@ -1143,18 +1242,19 @@ input[type="number"] { -moz-padding-end: 0; } -optgroup, select { - background-color: #FAFAFA; - border: 1px solid #666666; +optgroup, +select { font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 0.85em; font-weight: normal; font-style: normal; - cursor: pointer; - padding: 1px; vertical-align: middle; + background-color: #fafafa; + border: 1px solid #666666; + color: #000000; width: auto; - color: #000; + padding: 1px; + cursor: pointer; } select:focus { @@ -1162,18 +1262,18 @@ select:focus { } optgroup { - font-size: 1.00em; + font-size: 1em; font-weight: bold; } optgroup.disabled-options { + background-color: #808080; display: none; - background-color: gray; } option { + color: #000000; padding: 0 1em 0 0; - color: #000; } option.disabled-option { @@ -1200,9 +1300,9 @@ textarea { } label { - cursor: pointer; font-size: 0.85em; padding: 0 5px 0 0; + cursor: pointer; } .rtl label { @@ -1210,7 +1310,7 @@ label { } label input { - font-size: 1.00em; + font-size: 1em; vertical-align: middle; } @@ -1218,15 +1318,17 @@ label img { vertical-align: middle; } -fieldset.quick, p.quick { +fieldset.quick, +p.quick { + text-align: right; + background-color: transparent; + border: none; margin: 0 0 5px; padding: 5px 0 0; - border: none; - background-color: transparent; - text-align: right; } -.rtl fieldset.quick, .rtl p.quick { +.rtl fieldset.quick, +.rtl p.quick { text-align: left; } @@ -1236,10 +1338,10 @@ fieldset.quick legend { fieldset.tabulated { background: none; + border: 0; margin: 0; margin-top: 5px; padding: 0; - border: 0; } fieldset.tabulated legend { @@ -1247,29 +1349,31 @@ fieldset.tabulated legend { } fieldset.nobg { - margin: 15px 0 0 0; - padding: 0; - border: none; background-color: transparent; + border: none; + margin: 15px 0 0; + padding: 0; } fieldset.display-options { - margin: 15px 0 2px 0; - padding: 0 0 4px 0; - border: none; - background-color: transparent; - text-align: center; font-size: 0.85em; + text-align: center; + background-color: transparent; + border: none; + margin: 15px 0 2px; + padding: 0 0 4px; } -fieldset.display-options select, fieldset.display-options input, fieldset.display-options label { - font-size: 1.00em; +fieldset.display-options select, +fieldset.display-options input, +fieldset.display-options label { + font-size: 1em; vertical-align: middle; } select option.disabled { - background-color: #bbb; - color: #fff; + background-color: #bbbbbb; + color: #ffffff; } /* Special case inputs */ @@ -1278,15 +1382,15 @@ select#full_folder_action { width: 95%; } -@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) -{ +@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { fieldset { padding: 5px; } - fieldset.quick, p.quick { - float: none !important; + fieldset.quick, + p.quick { text-align: center; + float: none !important; } fieldset.display-options { @@ -1299,7 +1403,7 @@ select#full_folder_action { ---------------------------------------- */ dl { font-family: Verdana, Helvetica, Arial, sans-serif; - font-size: 1.00em; + font-size: 1em; } dt { @@ -1311,18 +1415,31 @@ dt { float: right; } -dd { color: #666666;} -dd + dd { padding-top: 5px;} -dt span { padding: 0 5px 0 0;} -.rtl dt span { padding: 0 0 0 5px;} +dd { + color: #666666; +} + +dd + dd { + padding-top: 5px; +} + +dt span { + padding: 0 5px 0 0; +} + +.rtl dt span { + padding: 0 0 0 5px; +} -dt .explain { font-style: italic;} +dt .explain { + font-style: italic; +} dt label { - font-size: 1.00em; - text-align: left; + font-size: 1em; font-weight: bold; - color: #4A5A73; + text-align: left; + color: #4a5a73; } .rtl dt label { @@ -1330,20 +1447,23 @@ dt label { } dd label { - font-size: 1.00em; + font-size: 1em; white-space: nowrap; + color: #4a5a73; margin: 0 10px 0 0; - color: #4A5A73; } .rtl dd label { margin: 0 0 0 10px; } -html>body dd label input { vertical-align: text-bottom;} /* Tweak for Moz to align checkboxes/radio buttons nicely */ +html > body dd label input { + vertical-align: text-bottom; +} +/* Tweak for Moz to align checkboxes/radio buttons nicely */ dd input { - font-size: 1.00em; + font-size: 1em; max-width: 100%; margin: 2px 0; } @@ -1357,27 +1477,27 @@ dd select { } dd textarea { - font-size: 0.90em; + font-size: 0.9em; width: 90%; } fieldset dl { - margin-bottom: 10px; font-size: 0.85em; + margin-bottom: 10px; } fieldset dt { - width: 45%; text-align: left; border: none; - border-right: 1px solid #CCCCCC; + border-right: 1px solid #cccccc; + width: 45%; padding-top: 3px; } .rtl fieldset dt { text-align: right; border: none; - border-left: 1px solid #CCCCCC; + border-left: 1px solid #cccccc; } fieldset #color_palette_placeholder { @@ -1385,32 +1505,34 @@ fieldset #color_palette_placeholder { } fieldset dd { + font-size: 1em; + vertical-align: top; + border: none; + border-left: 1px solid #cccccc; margin: 0 0 0 45%; padding: 0 0 0 5px; - border: none; - border-left: 1px solid #CCCCCC; - vertical-align: top; - font-size: 1.00em; } .rtl fieldset dd { + border: none; + border-right: 1px solid #cccccc; margin: 0 45% 0 0; padding: 0 5px 0 0; - border: none; - border-right: 1px solid #CCCCCC; } -dd.full, .rtl dd.full { - margin: 0; +dd.full, +.rtl dd.full { + text-align: center; border: 0; + width: 95%; + margin: 0; padding: 0; padding-top: 3px; - text-align: center; - width: 95%; } /* Hover highlights for form rows */ -fieldset dl:hover dt, fieldset dl:hover dd { +fieldset dl:hover dt, +fieldset dl:hover dd { border-color: #666666; } @@ -1419,35 +1541,39 @@ fieldset dl:hover dt label { } fieldset dl dd label:hover { - color: #BC2A4D; + color: #bc2a4d; } -input:focus, textarea:focus { - border: 1px solid #BC2A4D; - background-color: #E9E9E2; - color: #BC2A4D; +input:focus, +textarea:focus { + background-color: #e9e9e2; + border: 1px solid #bc2a4d; outline-style: none; + color: #bc2a4d; } -@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) -{ +@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { fieldset dl { + border-bottom: 1px solid #e8e8e8; margin-bottom: 5px; padding-bottom: 5px; - border-bottom: 1px solid #e8e8e8; } - fieldset > dl:last-child, fieldset > form:last-child > dl:last-child { + fieldset > dl:last-child, + fieldset > form:last-child > dl:last-child { border-bottom-width: 0; margin-bottom: 0; } - fieldset dt, .rtl fieldset dt, fieldset dd, .rtl fieldset dd { + fieldset dt, + .rtl fieldset dt, + fieldset dd, + .rtl fieldset dd { border-width: 0; - margin-left: 0; - margin-right: 0; float: none; width: auto; + margin-right: 0; + margin-left: 0; } fieldset .responsive-columns dt { @@ -1462,18 +1588,22 @@ input:focus, textarea:focus { padding-right: 20px; } - select, dd select, dd input { + select, + dd select, + dd input { max-width: 300px; } - input[type="number"], dd input[type="number"] { + input[type="number"], + dd input[type="number"] { max-width: 70px; } } -@media only screen and (max-width: 400px), only screen and (max-device-width: 400px) -{ - select, dd select, dd input { +@media only screen and (max-width: 400px), only screen and (max-device-width: 400px) { + select, + dd select, + dd input { max-width: 240px; } } @@ -1482,21 +1612,22 @@ input:focus, textarea:focus { ---------------------------------------- */ fieldset.submit-buttons { text-align: center; - border: none; background-color: transparent; + border: none; margin: 0; - padding: 4px; margin-top: -1px; + padding: 4px; } p.submit-buttons { text-align: center; margin: 0; - padding: 4px; margin-top: 10px; + padding: 4px; } -fieldset.submit-buttons input, p.submit-buttons input { +fieldset.submit-buttons input, +p.submit-buttons input { padding: 3px 2px; } @@ -1504,8 +1635,7 @@ fieldset.submit-buttons legend { display: none; } -@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) -{ +@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { p.submit-buttons { margin-top: 0; } @@ -1513,11 +1643,12 @@ fieldset.submit-buttons legend { /* Input field styles ---------------------------------------- */ - -input.radio, input.checkbox, input.permissions-checkbox { - width: auto !important; +input.radio, +input.checkbox, +input.permissions-checkbox { background-color: transparent; border: none; + width: auto !important; cursor: pointer; } @@ -1526,49 +1657,75 @@ textarea.full { width: 99%; } -input.medium { width: 50%;} -input.narrow { width: 25%;} -input.tiny { width: 10%;} -input.autowidth { width: auto !important;} -.box2 .inputbox { background-color: #E9E9E9;} +input.medium { + width: 50%; +} + +input.narrow { + width: 25%; +} + +input.tiny { + width: 10%; +} + +input.autowidth { + width: auto !important; +} + +.box2 .inputbox { + background-color: #e9e9e9; +} /* Form button styles ---------------------------------------- */ -a.button1, input.button1, -a.button2, input.button2 { - width: auto !important; - padding: 1px 3px 0 3px; +a.button1, +input.button1, +a.button2, +input.button2 { font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif; - color: #000; font-size: 0.85em; - background: #EFEFEF url("../images/bg_button.gif") repeat-x top; + background: #efefef url("../images/bg_button.gif") repeat-x top; + color: #000000; + width: auto !important; + padding: 1px 3px 0; cursor: pointer; } -a.button1, input.button1 { +a.button1, +input.button1 { font-weight: bold; border: 1px solid #666666; } /* Alternative button */ -a.button2, input.button2 { +a.button2, +input.button2 { border: 1px solid #666666; } /* button in the style of the form buttons */ -a.button1, a.button1:link, a.button1:visited, a.button1:active, -a.button2, a.button2:link, a.button2:visited, a.button2:active { +a.button1, +a.button1:link, +a.button1:visited, +a.button1:active, +a.button2, +a.button2:link, +a.button2:visited, +a.button2:active { text-decoration: none; color: #000000; padding: 4px 8px; } /* Hover states */ -a.button1:hover, input.button1:hover, -a.button2:hover, input.button2:hover { - border: 1px solid #BC2A4D; - background: #EFEFEF url("../images/bg_button.gif") repeat bottom; - color: #BC2A4D; +a.button1:hover, +input.button1:hover, +a.button2:hover, +input.button2:hover { + background: #efefef url("../images/bg_button.gif") repeat bottom; + border: 1px solid #bc2a4d; + color: #bc2a4d; } input.disabled { @@ -1577,43 +1734,44 @@ input.disabled { } /* Focus states */ -input.button1:focus, input.button2:focus { +input.button1:focus, +input.button2:focus { outline-style: none; } /* jQuery popups ---------------------------------------- */ .phpbb_alert { - background-color: #FFFFFF; + background-color: #ffffff; border: 1px solid #999999; position: fixed; - display: none; + z-index: 50; top: 150px; - left: 0; right: 0; + left: 0; + display: none; width: 620px; margin: 0 auto; - z-index: 50; padding: 25px; - padding: 0 25px 20px 25px; + padding: 0 25px 20px; } .phpbb_alert .alert_close { + text-decoration: none !important; + background: transparent url("../images/alert_close.png") 0 0 no-repeat; display: block; float: right; + overflow: hidden; width: 16px; height: 16px; - overflow: hidden; - text-decoration: none !important; - background: transparent url("../images/alert_close.png") 0 0 no-repeat; margin-top: -7px; margin-right: -31px; } + .phpbb_alert .alert_close:hover { background-position: 0 -16px; } - .phpbb_alert p { margin: 8px 0; padding-bottom: 8px; @@ -1634,31 +1792,29 @@ input.button1:focus, input.button2:focus { } #darkenwrapper { - display: none; position: relative; z-index: 44; + display: none; } #darken { - position: fixed; - left: 0; - top: 0; - width: 100%; - height: 100%; background-color: #000000; opacity: 0.5; + position: fixed; z-index: 45; + top: 0; + left: 0; + width: 100%; + height: 100%; } -@media only screen and (max-height: 500px), only screen and (max-device-width: 500px) -{ +@media only screen and (max-height: 500px), only screen and (max-device-width: 500px) { .phpbb_alert { top: 25px; } } -@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) -{ +@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { .phpbb_alert { width: auto; margin: 0 25px; @@ -1667,9 +1823,9 @@ input.button1:focus, input.button2:focus { .loading_indicator { position: fixed; + z-index: 51; top: 50%; left: 50%; - z-index: 51; display: none; } @@ -1741,16 +1897,18 @@ input.button1:focus, input.button2:focus { /* Pagination ---------------------------------------- */ .pagination { - font-size: .85em; - height: 1%; /* IE tweak (holly hack) */ - width: auto; + font-size: 0.85em; text-align: right; + + /* IE tweak (holly hack) */ + width: auto; + height: 1%; margin: 5px 0; } .top-pagination { float: right; - margin: 15px 0 5px 0; + margin: 15px 0 5px; } .rtl .pagination { @@ -1768,71 +1926,85 @@ li.pagination { .pagination ul { display: inline-block; - *display: inline; /* IE7 inline-block hack */ + *display: inline; + + /* IE7 inline-block hack */ *zoom: 1; - margin-left: 0; margin-bottom: 0; + margin-left: 0; } li.pagination ul { - margin-top: -2px; vertical-align: middle; + margin-top: -2px; } -.pagination ul li, dl .pagination ul li, dl.icon .pagination ul li { - display: inline; - padding: 0; +.pagination ul li, +dl .pagination ul li, +dl.icon .pagination ul li { font-size: 100%; line-height: normal; + display: inline; + padding: 0; } -.pagination li a, .pagnation li span, li .pagination li a, li .pagnation li span, .pagination li.active span, .pagination li.ellipsis span { +.pagination li a, +.pagnation li span, +li .pagination li a, +li .pagnation li span, +.pagination li.active span, +.pagination li.ellipsis span { + font-size: 0.9em; font-weight: normal; + line-height: 1.5em; text-decoration: none; - padding: 0 2px; border: 1px solid transparent; - font-size: 0.9em; - line-height: 1.5em; + padding: 0 2px; } -.pagination li a, .pagination li a:link, .pagination li a:visited { - color: #5C758C; - background-color: #ECEDEE; - border-color: #B4BAC0; +.pagination li a, +.pagination li a:link, +.pagination li a:visited { + background-color: #ecedee; + border-color: #b4bac0; + color: #5c758c; } -.pagination li.ellipsis span { +.pagination li.ellipsis span { background-color: transparent; color: #000000; } .pagination li.active span { - color: #FFFFFF; - background-color: #4692BF; - border-color: #4692BF; + background-color: #4692bf; + border-color: #4692bf; + color: #ffffff; } -.pagination li a:hover, .pagination .active a:hover { - color: #FFFFFF; - background-color: #368AD2; - border-color: #368AD2; +.pagination li a:hover, +.pagination .active a:hover { + background-color: #368ad2; + border-color: #368ad2; + color: #ffffff; } -.pagination li a:active, .pagination li.active a:active { - color: #5C758C; - background-color: #ECEDEE; - border-color: #B4BAC0; +.pagination li a:active, +.pagination li.active a:active { + background-color: #ecedee; + border-color: #b4bac0; + color: #5c758c; } -@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) -{ - .pagination, .rtl .pagination { - float: none; +@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { + .pagination, + .rtl .pagination { text-align: center; + float: none; margin: 5px 0; } - .pagination li a, .pagination li span { + .pagination li a, + .pagination li span { display: inline-block; min-width: 10px; } @@ -1840,12 +2012,14 @@ li.pagination ul { /* Action Highlighting ---------------------------------------- */ -.successbox, .errorbox, .warningbox { - padding: 8px; - margin: 10px 0; - color: #FFFFFF; +.successbox, +.errorbox, +.warningbox { text-align: center; + color: #ffffff; clear: both; + margin: 10px 0; + padding: 8px; } .success { @@ -1853,7 +2027,7 @@ li.pagination ul { } .error { - color: #BC2A4D; + color: #bc2a4d; } .successbox { @@ -1861,52 +2035,59 @@ li.pagination ul { } .errorbox { - background-color: #BC2A4D; + background-color: #bc2a4d; } .warningbox { background-color: #fca600; } -.successbox h3, .errorbox h3 { - color: #FFFFFF; +.successbox h3, +.errorbox h3 { + font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif; + font-size: 1.1em; + color: #ffffff; margin: 0 0 0.5em; - font-size: 1.10em; - font-family: "Lucida Grande",Verdana,Helvetica,Arial,sans-serif; } -.successbox p, .errorbox p { - color: #FFFFFF; +.successbox p, +.errorbox p { font-size: 0.85em; + color: #ffffff; margin-bottom: 0; } -.errorbox a:link, .errorbox a:active, .errorbox a:visited, -.successbox a:link, .successbox a:active, .successbox a:visited { - color: #DBD7D1; - text-decoration: underline; +.errorbox a:link, +.errorbox a:active, +.errorbox a:visited, +.successbox a:link, +.successbox a:active, +.successbox a:visited { font-weight: bold; + text-decoration: underline; + color: #dbd7d1; } -.errorbox a:hover, .successbox a:hover { - color: #FFFFFF; - text-decoration: none; +.errorbox a:hover, +.successbox a:hover { font-weight: bold; + text-decoration: none; + color: #ffffff; } #log-container { + background-color: #ffffff; display: none; - max-height: 300px; - padding: 8px; - margin: 10px 0; clear: both; overflow-y: auto; - background-color: #FFFFFF; + max-height: 300px; + margin: 10px 0; + padding: 8px; } #log-container.show_log_container { + border: 1px solid #dbd7d1; display: block; - border: 1px solid #DBD7D1; } .log { @@ -1914,11 +2095,11 @@ li.pagination ul { } .notice { - background-color: #62A5CC; + background-color: #62a5cc; } .download-box { - margin: 10px 0 10px 0; + margin: 10px 0; } /* Special cases for the error page */ @@ -1932,62 +2113,64 @@ li.pagination ul { } #errorpage #content h1 { - color: #DF075C; + color: #df075c; } #errorpage #content h2 { + border-bottom: 1px solid #cccccc; + color: #333333; margin-top: 20px; margin-bottom: 5px; - border-bottom: 1px solid #CCCCCC; padding-bottom: 5px; - color: #333333; } /* Tooltip for permission roles */ .tooltip { - width: 200px; - color: #000; text-align: center; - border: 1px solid #AAA; - opacity: .95; + border: 1px solid #aaaaaa; + color: #000000; + opacity: 0.95; + width: 200px; } .tooltip span.top { - background: #EFEFEF; font-weight: bold; + background: #efefef; padding: 2px; } .tooltip span.bottom { - padding: 5px; + background: #ffffff; color: #000000; - background: #FFFFFF; + padding: 5px; } /* Format Buttons for signature editor */ #format-buttons { - margin: 15px 0 2px 0; + margin: 15px 0 2px; } -#format-buttons input, #format-buttons select { +#format-buttons input, +#format-buttons select { vertical-align: middle; } -.row, fieldset dl { +.row, +fieldset dl { overflow: hidden; } /* Syntax Highlighting ---------------------------------------- */ .sourcenum { - color: gray; - font-family: Monaco, 'Courier New', monospace; + font-family: Monaco, "Courier New", monospace; font-size: 1.25em; font-weight: bold; - line-height: 1.20em; + line-height: 1.2em; text-align: right; + color: #808080; padding: 0; } @@ -1996,22 +2179,22 @@ li.pagination ul { } .source { - font-family: Monaco, 'Courier New', monospace; + font-family: Monaco, "Courier New", monospace; font-size: 1.25em; - line-height: 1.20em; + line-height: 1.2em; padding: 0; } .syntaxbg { - color: #FFFFFF; + color: #ffffff; } .syntaxcomment { - color: #FF8000; + color: #ff8000; } .syntaxdefault { - color: #0000BB; + color: #0000bb; } .syntaxhtml { @@ -2023,18 +2206,19 @@ li.pagination ul { } .syntaxstring { - color: #DD0000; + color: #dd0000; } /* Permission interface ---------------------------------------- */ - -.column1, .column2 { - width: 48%; +.column1, +.column2 { float: left; + width: 48%; } -.ltr .column2, .rtl .column1 { +.ltr .column2, +.rtl .column1 { float: right; } @@ -2042,7 +2226,7 @@ fieldset.permissions legend { text-transform: none; } -fieldset.permissions legend input{ +fieldset.permissions legend input { height: 1.1em; } @@ -2057,14 +2241,14 @@ fieldset.permissions .permissions-simple { } fieldset.permissions .permissions-advanced { - padding: 10px 0 0 5px; vertical-align: top; clear: right; + padding: 10px 0 0 5px; } .rtl fieldset.permissions .permissions-advanced { - padding: 10px 5px 0 0; clear: left; + padding: 10px 5px 0 0; } fieldset.permissions .permissions-switch { @@ -2075,12 +2259,9 @@ fieldset.permissions .permissions-switch { float: left; } -fieldset.permissions .padding { -} - .permissions-switch { + font-size: 0.9em; margin-top: -6px; - font-size: .9em; } .permissions-switch a { @@ -2092,15 +2273,15 @@ fieldset.permissions .padding { } .permissions-reset a { - font-size: .85em; + font-size: 0.85em; } /* Tabbed menu */ .permissions-category { + font-size: 0.85em; line-height: normal; - margin: 0 0 -1px 7px; min-width: 570px; - font-size: 0.85em; + margin: 0 0 -1px 7px; } .rtl .permissions-category { @@ -2114,20 +2295,20 @@ fieldset.permissions .padding { } .permissions-category li { + font-size: 1em; + font-weight: bold; display: inline; margin: 0; padding: 0; - font-size: 1em; - font-weight: bold; } .permissions-category a { - float: left; + text-decoration: none; background: url("../images/bg_tabs_alt1.gif") no-repeat 0% -35px; + position: relative; + float: left; margin: 0 1px 0 0; padding: 0 0 0 6px; - text-decoration: none; - position: relative; } .rtl .permissions-category a { @@ -2135,24 +2316,28 @@ fieldset.permissions .padding { } .permissions-category a span.tabbg { - float: left; - display: block; + white-space: nowrap; background: url("../images/bg_tabs_alt2.gif") no-repeat 100% -35px; - padding: 7px 12px 6px 6px; color: #536482; - white-space: nowrap; + display: block; + float: left; + padding: 7px 12px 6px 6px; } .rtl .permissions-category a span.tabbg { float: right; } -/* Commented Backslash Hack hides rule from IE5-Mac \*/ -.permissions-category a span.tabbg, .rtl .permissions-category a span.tabbg { float: none;} -/* End hack */ +/* Commented Backslash Hack hides rule from IE5-Mac \ */ +.permissions-category a span.tabbg, +.rtl .permissions-category a span.tabbg { + float: none; +} +/* End hack */ .permissions-category a:hover span.tabbg { - color: #DD6900; + background-position: 100% -70px; + color: #dd6900; } .permissions-category .activetab a { @@ -2161,21 +2346,17 @@ fieldset.permissions .padding { .permissions-category .activetab a span.tabbg { background-position: 100% 0; - padding-bottom: 7px; color: #333333; + padding-bottom: 7px; } .permissions-category a:hover { background-position: 0 -70px; } -.permissions-category a:hover span.tabbg { - background-position: 100% -70px; -} - .permissions-category .activetab a:hover span.tabbg { - color: #333333; background-position: 100% 0; + color: #333333; } .permissions-category .activetab a:hover { @@ -2197,13 +2378,12 @@ fieldset.permissions .padding { margin: 0 0 0 5px; } */ - .permissions-category .activetab span.colour { border-color: #333333; } .permissions-category a:hover span.colour { - border-color: #DD6900; + border-color: #dd6900; } .permissions-category .activetab a:hover span.colour { @@ -2213,30 +2393,30 @@ fieldset.permissions .padding { /* Permission preset colours */ .permissions-preset-yes span.colour, .yes { - background-color: #86F786; + background-color: #86f786; } .permissions-preset-custom span.colour { - background-color: #B2BBDD; + background-color: #b2bbdd; } .permissions-preset-never span.colour { - background-color: #DD0000; + background-color: #dd0000; } .permissions-preset-no span.colour, .never { - background-color: #EFB0B2; + background-color: #efb0b2; } /* Permission panel ---------------------------------------- */ .permissions-panel { - float: left; - background-color: #CADCEB; - width: 100%; + background-color: #cadceb; border-radius: 5px; + float: left; overflow: hidden; + width: 100%; padding: 5px 0; } @@ -2264,8 +2444,8 @@ fieldset.permissions .padding { .permissions-panel th.name { text-align: left; - width: auto; text-transform: none; + width: auto; } .rtl .permissions-panel th.name { @@ -2273,9 +2453,9 @@ fieldset.permissions .padding { } .permissions-panel th.permissions-name { + font-weight: normal; border: none; color: #536482; - font-weight: normal; } .permissions-panel th.permissions-name a.trace { @@ -2283,41 +2463,43 @@ fieldset.permissions .padding { } .permissions-panel th.row3 { + background-color: #d1d7dc; background-image: none; - background-color: #D1D7DC; - color: #536482; border: none; + color: #536482; } .permissions-panel th.row4 { + background-color: #e4e8eb; background-image: none; - background-color: #E4E8EB; - color: #536482; border: none; + color: #536482; } -.permissions-panel th a:link, .permissions-panel th a:hover, .permissions-panel th a:visited { - display: block; - color: #FFFFFF; +.permissions-panel th a:link, +.permissions-panel th a:hover, +.permissions-panel th a:visited { text-decoration: underline; + color: #ffffff; + display: block; } .permissions-panel td.permissions-yes label:hover { - background-color: #86F786; + background-color: #86f786; } .permissions-panel td.permissions-no label:hover { - background-color: #EFB0B2; + background-color: #efb0b2; } .permissions-panel td.permissions-never label:hover { - background-color: #DD0000; + background-color: #dd0000; } .permissions-panel td { - padding: 0; text-align: center; width: 10%; + padding: 0; } .permissions-panel td label { @@ -2326,9 +2508,9 @@ fieldset.permissions .padding { padding: 0; } -@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) -{ - .column1, .column2 { +@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { + .column1, + .column2 { float: none !important; width: auto; } @@ -2337,10 +2519,11 @@ fieldset.permissions .padding { clear: both; } - .permissions-simple td, .permissions-simple dd { + .permissions-simple td, + .permissions-simple dd { width: auto !important; - margin-left: 0 !important; margin-right: 0 !important; + margin-left: 0 !important; } .permissions-simple dd { @@ -2356,23 +2539,24 @@ fieldset.permissions .padding { margin: 0 !important; } - .permissions-category a, .permissions-category a span.tabbg { + .permissions-category a, + .permissions-category a span.tabbg { + background: transparent none; display: block; float: none !important; - background: transparent none; } .permissions-category a { + text-decoration: underline; background: #d9e5ee; + border-radius: 3px; margin: 5px 0; padding: 0 !important; - border-radius: 3px; - text-decoration: underline; } .permissions-category .activetab a { background-color: #dd6900; - color: #fff; + color: #ffffff; } .permissions-category a span.tabbg { @@ -2382,7 +2566,7 @@ fieldset.permissions .padding { } .permissions-category .activetab span.colour { - border-color: #fff; + border-color: #ffffff; } } @@ -2390,40 +2574,40 @@ fieldset.permissions .padding { ---------------------------------------- */ #gallery { display: block; + overflow: hidden; margin: 0 -5px; padding: 0; - overflow: hidden; } #gallery li { + background: #ffffff; + border: 1px solid #cccccc; + border-radius: 2px; display: block; float: left; - border: 1px solid #ccc; - border-radius: 2px; - background: #fff; - padding: 5px; margin: 5px; + padding: 5px; } #gallery li:hover { - background-color: #eee; + background-color: #eeeeee; } #gallery li label { - display: block; text-align: center; + display: block; padding: 0; } /* Dropdown menu -----------------------------------------*/ +---------------------------------------- */ .dropdown { - position: absolute; - left: 0; - top: 22px; - z-index: 2; border: 1px solid transparent; border-radius: 5px; + position: absolute; + z-index: 2; + top: 22px; + left: 0; padding: 9px 0 0; } @@ -2434,78 +2618,74 @@ fieldset.permissions .padding { } .dropdown-left .dropdown { - left: auto; right: 0; + left: auto; } -.dropdown .pointer, .dropdown .pointer-inner { - position: absolute; - width: 0; - height: 0; +.dropdown .pointer, +.dropdown .pointer-inner { border-top-width: 0; + border-right: 10px dashed transparent; border-bottom: 10px solid transparent; border-left: 10px dashed transparent; - border-right: 10px dashed transparent; - -webkit-transform: rotate(360deg); /* better anti-aliasing in webkit */ + position: absolute; + + /* better anti-aliasing in webkit */ display: block; + width: 0; + height: 0; + -webkit-transform: rotate(360deg); } -.dropdown-up .pointer, .dropdown-up .pointer-inner { - border-bottom-width: 0; +.dropdown-up .pointer, +.dropdown-up .pointer-inner { border-top: 10px solid transparent; + border-bottom-width: 0; } .dropdown .pointer { + border-color: #b9b9b9 transparent; + z-index: 3; + top: 0; right: auto; left: 10px; - top: 0; - z-index: 3; } .dropdown-up .pointer { - bottom: 0; top: auto; + bottom: 0; } .dropdown-left .dropdown .pointer { - left: auto; right: 10px; + left: auto; } .dropdown .pointer-inner { + border-color: #ffffff transparent; top: auto; bottom: -11px; left: -10px; } .dropdown-up .pointer-inner { - bottom: auto; top: -11px; -} - -.dropdown .pointer { - border-color: #B9B9B9 transparent; -} - -.dropdown .pointer-inner { - border-color: #FFF transparent; + bottom: auto; } .dropdown .dropdown-contents { - z-index: 2; - overflow: hidden; - overflow-y: auto; - background: #fff; + background: #ffffff; border: 1px solid #b9b9b9; border-radius: 5px; - padding: 5px; + box-shadow: 1px 3px 5px rgba(0, 0, 0, 0.2); position: relative; + z-index: 2; + overflow: hidden; + overflow-y: auto; + box-sizing: border-box; min-width: 40px; max-height: 200px; - box-shadow: 1px 3px 5px rgba(0, 0, 0, 0.2); - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + padding: 5px; } .dropdown-up .dropdown-contents { @@ -2513,42 +2693,44 @@ fieldset.permissions .padding { } .dropdown li { + text-align: left; + white-space: nowrap; float: none; margin: 0; - white-space: nowrap; - text-align: left; } -.wrap .dropdown li, .dropdown.wrap li { +.wrap .dropdown li, +.dropdown.wrap li { white-space: normal; } -.dropdown li:before, .dropdown li:after { +.dropdown li:before, +.dropdown li:after { display: none !important; } .roles-options > .dropdown { - left: auto; top: 3.2em; + left: auto; width: 250px; } .roles-options { + width: 250px; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; -o-user-select: none; user-select: none; - width: 250px; } .roles-options > span { - border: 1px solid #DEDEDE; + background: url("../images/arrow_down.gif") no-repeat 245px 0.7em; + border: 1px solid #dedede; border-radius: 3px; - padding: 4px; - width: 250px; display: none; - background: url('../images/arrow_down.gif') no-repeat 245px .7em; + width: 250px; + padding: 4px; } .roles-options li { @@ -2557,39 +2739,51 @@ fieldset.permissions .padding { .roles-highlight { background-color: #1e90ff; - color: #fff; + color: #ffffff; } - /* Classes for additional tasks ---------------------------------------- */ - .phpinfo { overflow: auto; width: 99%; direction: ltr; } -.phpinfo td, .phpinfo th, .phpinfo h2, .phpinfo h1 { +.phpinfo td, +.phpinfo th, +.phpinfo h2, +.phpinfo h1 { text-align: left; } .requirements_not_met { + background-color: #bc2a4d; padding: 5px; - background-color: #BC2A4D; } -.requirements_not_met dt label, .requirements_not_met dd p { - color: #FFFFFF; +.requirements_not_met dt label, +.requirements_not_met dd p { font-size: 1.4em; + color: #ffffff; } -@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) -{ - .responsive-hide { display: none !important; } - .responsive-show { display: block !important; } - .responsive-show-inline { display: inline !important; } - .responsive-show-inline-block { display: inline-block !important; } +@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { + .responsive-hide { + display: none !important; + } + + .responsive-show { + display: block !important; + } + + .responsive-show-inline { + display: inline !important; + } + + .responsive-show-inline-block { + display: inline-block !important; + } } .clearfix { @@ -2604,42 +2798,42 @@ fieldset.permissions .padding { #tabs li:after, #acp:after, #content:after { - content: ''; - clear: both; display: block; + clear: both; + content: ""; } #progress-bar { + text-align: center; + border: 1px solid #cecece; position: relative; width: 90%; - text-align: center; height: 25px; margin: 20px auto; - border: 1px solid #cecece; } #progress-bar #progress-bar-text { + color: #000000; position: absolute; top: 0; width: 100%; - color: #000; } #progress-bar #progress-bar-filler { - display: block; + background-color: #3c84ad; + color: #ffffff; position: relative; top: 0; left: 0; - background-color: #3c84ad; + display: block; + overflow: hidden; width: 0; height: 25px; - overflow: hidden; - color: #fff; } #progress-bar p { - line-height: 25px; font-weight: bold; + line-height: 25px; } .send-stats-row { @@ -2652,18 +2846,18 @@ fieldset.permissions .padding { } .send-stats-tile { - position: relative; - padding: 14px; - margin-bottom: 20px; background-color: #eff0f2; border-radius: 6px; - box-shadow: rgba(0,0,0,0.3) 1px 1px 5px; + box-shadow: rgba(0, 0, 0, 0.3) 1px 1px 5px; + position: relative; + margin-bottom: 20px; + padding: 14px; } .send-stats-tile h2 { - margin-top: 0; text-align: center; - padding-bottom: 1em; + margin-top: 0; + padding-bottom: 1em; } .send-stats-tile i { @@ -2677,12 +2871,12 @@ fieldset.permissions .padding { .send-stats-data-row { background: #f9f9f9; - border-radius: 6px; - border: #DEDEDE 1px solid; - padding: 10px; + border: #dedede 1px solid; border-top-width: 0; - border-top-right-radius: 0; + border-radius: 6px; border-top-left-radius: 0; + border-top-right-radius: 0; + padding: 10px; } .send-stats-data-hidden .configlist { @@ -2690,26 +2884,27 @@ fieldset.permissions .padding { } .send-stats-data-only-row { - border-radius: 6px !important; border-bottom-width: 1px !important; + border-radius: 6px !important; } .send-stats-data-hidden { - padding: 0; border: none; + padding: 0; } .send-stats-row > .send-stats-data-row:first-child { background-color: #d9edf7; + border-top-width: 1px; border-bottom-width: 0; - border-top-right-radius: 6px; border-top-left-radius: 6px; - border-top-width: 1px; - border-bottom-left-radius: 0; + border-top-right-radius: 6px; border-bottom-right-radius: 0; + border-bottom-left-radius: 0; } -.send-stats-settings dt, .send-stats-settings dd { +.send-stats-settings dt, +.send-stats-settings dd { min-width: 25px; } @@ -2721,15 +2916,15 @@ fieldset.permissions .padding { display: none; } -.send-stats-settings input[type=checkbox] + label:before { - content: "\f096"; +.send-stats-settings input[type="checkbox"] + label:before { font-family: FontAwesome; font-size: 1.5em; + content: "\f096"; } -.send-stats-settings input[type=checkbox]:checked + label:before { - content: "\f14a"; +.send-stats-settings input[type="checkbox"]:checked + label:before { color: #3c763d; + content: "\f14a"; } .send-stats-data-row a:hover span { @@ -2751,6 +2946,7 @@ fieldset.permissions .padding { } /* stylelint-disable declaration-property-unit-whitelist */ +/* stylelint-enable selector-max-compound-selectors */ .emoji { min-height: 18px; min-width: 18px; From 6dc1bdc1caf0240e0046137d95186613e7f216c4 Mon Sep 17 00:00:00 2001 From: hanakin Date: Sat, 25 Mar 2017 17:40:15 -0400 Subject: [PATCH 098/431] [ticket/15116] fix new errors after rc update PHPBB3-15116 --- phpBB/adm/style/admin.css | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/phpBB/adm/style/admin.css b/phpBB/adm/style/admin.css index 3efbf93a474..f81dd35531a 100644 --- a/phpBB/adm/style/admin.css +++ b/phpBB/adm/style/admin.css @@ -7,6 +7,7 @@ the docs/CREDITS.txt file. ------------------------------------------------------------------------ */ + /* stylelint-disable selector-no-id */ /* stylelint-disable selector-max-compound-selectors */ /* stylelint-disable selector-no-qualifying-type */ @@ -1840,10 +1841,10 @@ input.button2:focus { } .spinner-path { - stroke-dasharray: 187; - stroke-dashoffset: 0; transform-origin: center; animation: dash 1s ease-in-out infinite, colors 4s ease-in-out infinite; + stroke-dasharray: 187; + stroke-dashoffset: 0; } @keyframes rotator { @@ -1862,13 +1863,13 @@ input.button2:focus { } 50% { - stroke-dashoffset: 46.75; transform: rotate(135deg); + stroke-dashoffset: 46.75; } 100% { - stroke-dashoffset: 187; transform: rotate(450deg); + stroke-dashoffset: 187; } } @@ -2945,12 +2946,16 @@ fieldset.permissions .permissions-switch { word-break: break-all; } -/* stylelint-disable declaration-property-unit-whitelist */ -/* stylelint-enable selector-max-compound-selectors */ + .emoji { - min-height: 18px; + width: 1em; min-width: 18px; height: 1em; - width: 1em; + min-height: 18px; } + +/* stylelint-enable selector-no-id */ +/* stylelint-enable selector-max-compound-selectors */ +/* stylelint-enable selector-no-qualifying-type */ +/* stylelint-enable declaration-property-unit-blacklist */ /* stylelint-enable declaration-property-unit-whitelist */ From 75e4b235b4d5a49a28bb5a02c2b9ac9b39599786 Mon Sep 17 00:00:00 2001 From: hanakin Date: Sat, 25 Mar 2017 17:41:05 -0400 Subject: [PATCH 099/431] [ticket/15116] turn on adm tests PHPBB3-15116 --- travis/check-stylesheet.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/travis/check-stylesheet.sh b/travis/check-stylesheet.sh index d056ff9c472..331f3f0c30a 100755 --- a/travis/check-stylesheet.sh +++ b/travis/check-stylesheet.sh @@ -34,5 +34,5 @@ then set -x stylelint "phpBB/styles/prosilver/theme/*.css" # Disable admin stylelint for now - # stylelint "phpBB/adm/style/*.css" + stylelint "phpBB/adm/style/*.css" fi From c6321fc61be022561bc07b9995d1f71c994e84b0 Mon Sep 17 00:00:00 2001 From: Matt Friedman Date: Sun, 26 Mar 2017 16:31:59 -0700 Subject: [PATCH 100/431] [ticket/15153] Update to newer homestead for vagrant PHPBB3-15153 --- phpBB/composer.json | 2 +- phpBB/composer.lock | 14 +++++++------- vagrant/after.sh | 19 +++++++++++++------ 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/phpBB/composer.json b/phpBB/composer.json index a202c1ede55..2207d10b9df 100644 --- a/phpBB/composer.json +++ b/phpBB/composer.json @@ -52,7 +52,7 @@ "require-dev": { "fabpot/goutte": "~3.1", "facebook/webdriver": "~1.1", - "laravel/homestead": "~3.0", + "laravel/homestead": "~4.0", "phing/phing": "2.4.*", "phpunit/dbunit": "~2.0", "phpunit/phpunit": "^4.1", diff --git a/phpBB/composer.lock b/phpBB/composer.lock index 00d608bc01a..e73b72d7656 100644 --- a/phpBB/composer.lock +++ b/phpBB/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "8541642eb4b706f15c466e0dd547a7fa", - "content-hash": "68fd1a0bc57151f27948642c75b08114", + "hash": "c53f2fa544168309d695bb1855c98c24", + "content-hash": "4bc93e90a4852f936c13986c3823831b", "packages": [ { "name": "bantu/ini-get-wrapper", @@ -1880,16 +1880,16 @@ }, { "name": "laravel/homestead", - "version": "v3.1.0", + "version": "v4.0.5", "source": { "type": "git", "url": "https://github.com/laravel/homestead.git", - "reference": "7924ab4e27bbeb17dadcc2fc6a40659275bbfb0a" + "reference": "a1bcbde2462d8ac1fa608cd6f00b46623aabd705" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/homestead/zipball/7924ab4e27bbeb17dadcc2fc6a40659275bbfb0a", - "reference": "7924ab4e27bbeb17dadcc2fc6a40659275bbfb0a", + "url": "https://api.github.com/repos/laravel/homestead/zipball/a1bcbde2462d8ac1fa608cd6f00b46623aabd705", + "reference": "a1bcbde2462d8ac1fa608cd6f00b46623aabd705", "shasum": "" }, "require": { @@ -1922,7 +1922,7 @@ } ], "description": "A virtual machine for web artisans.", - "time": "2016-11-29 16:43:51" + "time": "2017-02-07 19:06:26" }, { "name": "phing/phing", diff --git a/vagrant/after.sh b/vagrant/after.sh index aadb7e74928..95266985931 100755 --- a/vagrant/after.sh +++ b/vagrant/after.sh @@ -2,32 +2,39 @@ PHPBB_PATH="/home/vagrant/phpbb" PHPBB_CONFIG="${PHPBB_PATH}/phpBB/config.php" +PHPBB_SQLITE="/tmp/phpbb.sqlite3" PHPBB_INSTALL="${PHPBB_PATH}/vagrant/phpbb-install-config.yml" # Ensure composer deps are installed cd ${PHPBB_PATH}/phpBB php ../composer.phar install -# Backup current config.php file +# Backup and remove current config.php file if [ -e ${PHPBB_CONFIG} ] then cp --backup=numbered ${PHPBB_CONFIG} ${PHPBB_CONFIG}.bak + rm -rf ${PHPBB_CONFIG} fi -# Delete any sqlite db and config file -rm -rf /tmp/phpbb.sqlite3 -rm -rf ${PHPBB_CONFIG} +# Delete any sqlite db +if [ -e ${PHPBB_SQLITE} ] +then + rm -rf ${PHPBB_SQLITE} +fi # Install phpBB php ${PHPBB_PATH}/phpBB/install/phpbbcli.php install ${PHPBB_INSTALL} # Update sqlite db file permissions -sudo chown -R vagrant /tmp/phpbb.sqlite3 +if [ -e ${PHPBB_SQLITE} ] +then + sudo chown -R vagrant ${PHPBB_SQLITE} +fi # Add DEBUG mode to phpBB to remove annoying installer warnings sed -i "$ a @define('DEBUG', true);" ${PHPBB_CONFIG} # Update the PHP memory limits (enough to allow phpunit tests to run) -sed -i "s/memory_limit = .*/memory_limit = 1024M/" /etc/php5/fpm/php.ini +sed -i "s/memory_limit = .*/memory_limit = 1024M/" /etc/php/7.1/fpm/php.ini echo "Your board is ready at http://192.168.10.10/" From a10129e6f42dff696fe77a2ebfecab729a49a741 Mon Sep 17 00:00:00 2001 From: Matt Friedman Date: Sun, 26 Mar 2017 23:40:24 -0700 Subject: [PATCH 101/431] [ticket/15154] Load compatibility globals into the CLI installer PHPBB3-15154 --- phpBB/install/phpbbcli.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/phpBB/install/phpbbcli.php b/phpBB/install/phpbbcli.php index 4b86f64e2ac..4fe75bb0e35 100755 --- a/phpBB/install/phpbbcli.php +++ b/phpBB/install/phpbbcli.php @@ -39,6 +39,9 @@ // Enable superglobals for cli support $phpbb_installer_container->get('request')->enable_super_globals(); +// Load compatibility globals to access deprecated globals +require($phpbb_root_path . 'includes/compatibility_globals.' . $phpEx); + /** @var \phpbb\filesystem\filesystem $phpbb_filesystem */ $phpbb_filesystem = $phpbb_installer_container->get('filesystem'); From bf5d0fc46837a164b3286cd10064e45c8e438211 Mon Sep 17 00:00:00 2001 From: hanakin Date: Fri, 31 Mar 2017 17:36:02 -0400 Subject: [PATCH 102/431] [ticket/15160] correct gitignore node_modules path PHPBB3-15160 --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index feb702cb86c..569e6ce20bc 100644 --- a/.gitignore +++ b/.gitignore @@ -17,7 +17,7 @@ /phpBB/styles/* !/phpBB/styles/prosilver !/phpBB/styles/all -/phpBB/node_modules +node_modules /phpBB/vendor /tests/phpbb_unit_tests.sqlite* /tests/test_config*.php From e67888049286fb9843c6b489213771b6a149d318 Mon Sep 17 00:00:00 2001 From: hanakin Date: Wed, 19 Apr 2017 14:10:34 -0400 Subject: [PATCH 103/431] [ticket/15156] Remove online styles PHPBB3-15156 --- phpBB/styles/prosilver/theme/bidi.css | 4 ---- phpBB/styles/prosilver/theme/colours.css | 1 - phpBB/styles/prosilver/theme/content.css | 6 ------ phpBB/styles/prosilver/theme/responsive.css | 4 ---- 4 files changed, 15 deletions(-) diff --git a/phpBB/styles/prosilver/theme/bidi.css b/phpBB/styles/prosilver/theme/bidi.css index a5b9b51dbf9..45eaa8336bd 100644 --- a/phpBB/styles/prosilver/theme/bidi.css +++ b/phpBB/styles/prosilver/theme/bidi.css @@ -631,10 +631,6 @@ li.breadcrumbs span:first-child > a { float: right; } -.rtl .online { - background-position: 0 0; -} - .rtl dl.pmlist dd { margin-right: 61% !important; margin-left: 0 !important; diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index f5b0211f035..e7b305efe54 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -737,7 +737,6 @@ dd.profile-warnings { .contact-icon { background-image: url("./images/icons_contact.png"); } /* profile icons */ -.online { background-image: url("./en/icon_user_online.gif"); } .pm-icon { background-position: 0 0; } .email-icon { background-position: -21px 0; } .jabber-icon { background-position: -80px 0; } diff --git a/phpBB/styles/prosilver/theme/content.css b/phpBB/styles/prosilver/theme/content.css index 5f0d46852e7..cd98ded4366 100644 --- a/phpBB/styles/prosilver/theme/content.css +++ b/phpBB/styles/prosilver/theme/content.css @@ -795,12 +795,6 @@ dd.profile-contact { margin-right: -14px; } -.online { - background-image: none; - background-repeat: no-repeat; - background-position: 100% 0; -} - /* Poster profile used by search */ .search .postprofile { width: 30%; diff --git a/phpBB/styles/prosilver/theme/responsive.css b/phpBB/styles/prosilver/theme/responsive.css index 3b556b22db4..7d7485e9105 100644 --- a/phpBB/styles/prosilver/theme/responsive.css +++ b/phpBB/styles/prosilver/theme/responsive.css @@ -557,10 +557,6 @@ right: 30px; } - .online { - background-size: 40px; - } - /* Misc stuff ---------------------------------------------------------------- */ h2 { From e34ad7c4a9bb655b2fb371384ef9ef334a156fa8 Mon Sep 17 00:00:00 2001 From: hanakin Date: Wed, 19 Apr 2017 14:32:25 -0400 Subject: [PATCH 104/431] [ticket/15156] Set icon color PHPBB3-15156 --- phpBB/styles/prosilver/theme/colours.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index e7b305efe54..45973125cba 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -219,6 +219,10 @@ a:hover .icon.icon-blue { color: #196db5; } +.icon.online { + color: #85de39; +} + .icon.icon-green, a:hover .icon.icon-green { color: #1b9a1b; From c7307025705b800df4e04c3d3e9e9a98f7c92aea Mon Sep 17 00:00:00 2001 From: hanakin Date: Wed, 19 Apr 2017 14:35:15 -0400 Subject: [PATCH 105/431] [ticket/15156] Add icon to post profile PHPBB3-15156 --- phpBB/styles/prosilver/template/viewtopic_body.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phpBB/styles/prosilver/template/viewtopic_body.html b/phpBB/styles/prosilver/template/viewtopic_body.html index 6d58b2a690d..88a287b1176 100644 --- a/phpBB/styles/prosilver/template/viewtopic_body.html +++ b/phpBB/styles/prosilver/template/viewtopic_body.html @@ -135,7 +135,7 @@

      {POLL_ data-url="{postrow.U_MINI_POST}"> -
      +
      style="display: none;"> @@ -148,7 +148,7 @@

      {POLL_

      - {postrow.POST_AUTHOR_FULL}{postrow.POST_AUTHOR_FULL} + {postrow.POST_AUTHOR_FULL}{postrow.POST_AUTHOR_FULL} {L_ONLINE} From 4ffb0339789fbddba4705726f76486615686ec45 Mon Sep 17 00:00:00 2001 From: hanakin Date: Wed, 19 Apr 2017 14:51:47 -0400 Subject: [PATCH 106/431] [ticket/15156] Add icon to pm profile PHPBB3-15156 --- .../template/ucp_pm_viewmessage.html | 262 +++++++++--------- 1 file changed, 131 insertions(+), 131 deletions(-) diff --git a/phpBB/styles/prosilver/template/ucp_pm_viewmessage.html b/phpBB/styles/prosilver/template/ucp_pm_viewmessage.html index 4c0166957e9..a1cf4ae2923 100644 --- a/phpBB/styles/prosilver/template/ucp_pm_viewmessage.html +++ b/phpBB/styles/prosilver/template/ucp_pm_viewmessage.html @@ -22,147 +22,147 @@ -
      -
      - -
      -
      -
      - - {AUTHOR_AVATAR} - -
      - {MESSAGE_AUTHOR_FULL} -
      - - -
      {RANK_TITLE}
      {RANK_IMG}
      - - -
      {L_POSTS}{L_COLON} {AUTHOR_POSTS}{AUTHOR_POSTS}
      -
      {L_JOINED}{L_COLON} {AUTHOR_JOINED}
      - - - - -
      {custom_fields.PROFILE_FIELD_NAME}{L_COLON} {custom_fields.PROFILE_FIELD_VALUE}
      - - - - - - -
      - {L_CONTACT}{L_COLON} -
      - - -
      - -
      -

      {SUBJECT}

      - - - - - - - - -

      - {L_SENT_AT}{L_COLON} {SENT_DATE} -
      {L_PM_FROM}{L_COLON} {MESSAGE_AUTHOR_FULL} -
      {L_TO}{L_COLON} {to_recipient.NAME_FULL}{to_recipient.NAME}  -
      {L_BCC}{L_COLON} {bcc_recipient.NAME_FULL}{bcc_recipient.NAME}  -

      - - -
      {MESSAGE}
      - - -
      -
      - {L_ATTACHMENTS} -
      - -
      {attachment.DISPLAY_ATTACHMENT}
      - -
      - - -
      {L_DOWNLOAD_NOTICE}
      - + +
      {EDITED_MESSAGE} +
      {L_REASON}{L_COLON} {EDIT_REASON} +
      + - -
      {EDITED_MESSAGE} -
      {L_REASON}{L_COLON} {EDIT_REASON} + +
      {SIGNATURE}
      +
      - - -
      {SIGNATURE}
      - -
      - - +
      From 9f71c1baff5edf7a223072ab49706eaae8dac5b4 Mon Sep 17 00:00:00 2001 From: hanakin Date: Wed, 19 Apr 2017 15:26:31 -0400 Subject: [PATCH 107/431] [ticket/15109] Add icon to member profile PHPBB3-15109 --- phpBB/styles/prosilver/template/memberlist_view.html | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/phpBB/styles/prosilver/template/memberlist_view.html b/phpBB/styles/prosilver/template/memberlist_view.html index 568cb92ae9f..21ba3861770 100644 --- a/phpBB/styles/prosilver/template/memberlist_view.html +++ b/phpBB/styles/prosilver/template/memberlist_view.html @@ -5,7 +5,7 @@

      {PAGE_TITLE}

      -
      +
      @@ -19,7 +19,9 @@

      {PAGE_TITLE}

      -
      {L_USERNAME}{L_COLON}
      +
      + {L_USERNAME}{L_COLON} {L_ONLINE} +
      {USERNAME} [ {L_EDIT_PROFILE} ] From 522b73cd468e0a32b25f83e7a49df6ab0dec31a9 Mon Sep 17 00:00:00 2001 From: hanakin Date: Wed, 19 Apr 2017 19:21:36 -0400 Subject: [PATCH 108/431] [ticket/15156] Fix profile page PHPBB3-15156 --- phpBB/styles/prosilver/template/memberlist_view.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phpBB/styles/prosilver/template/memberlist_view.html b/phpBB/styles/prosilver/template/memberlist_view.html index 21ba3861770..224cf422846 100644 --- a/phpBB/styles/prosilver/template/memberlist_view.html +++ b/phpBB/styles/prosilver/template/memberlist_view.html @@ -20,10 +20,10 @@

      {PAGE_TITLE}

      - {L_USERNAME}{L_COLON} {L_ONLINE} + {L_USERNAME}{L_COLON}
      - {USERNAME} + {USERNAME} {L_ONLINE} [ {L_EDIT_PROFILE} ] [ {L_USER_ADMIN} ] [ {L_USER_BAN} ] From fbb85e2f4f4550dcdf9a0b8f28855959a5a53a47 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Wed, 9 Sep 2015 19:56:52 +0200 Subject: [PATCH 109/431] [ticket/11150] Add ability to manage extensions through composer PHPBB3-11150 --- phpBB/composer.json | 3 +- phpBB/composer.lock | 563 ++++++++++++++++-- phpBB/config/default/container/services.yml | 13 +- .../default/container/services_console.yml | 32 + .../default/container/services_extensions.yml | 39 ++ .../composer/exception/runtime_exception.php | 37 ++ phpBB/phpbb/composer/installer.php | 392 ++++++++++++ phpBB/phpbb/composer/manager.php | 190 ++++++ .../console/command/extension/install.php | 72 +++ .../command/extension/list_available.php | 75 +++ .../console/command/extension/remove.php | 72 +++ .../console/command/extension/update.php | 72 +++ .../data/v320/extensions_composer.php | 27 + 13 files changed, 1523 insertions(+), 64 deletions(-) create mode 100644 phpBB/config/default/container/services_extensions.yml create mode 100644 phpBB/phpbb/composer/exception/runtime_exception.php create mode 100644 phpBB/phpbb/composer/installer.php create mode 100644 phpBB/phpbb/composer/manager.php create mode 100644 phpBB/phpbb/console/command/extension/install.php create mode 100644 phpBB/phpbb/console/command/extension/list_available.php create mode 100644 phpBB/phpbb/console/command/extension/remove.php create mode 100644 phpBB/phpbb/console/command/extension/update.php create mode 100644 phpBB/phpbb/db/migration/data/v320/extensions_composer.php diff --git a/phpBB/composer.json b/phpBB/composer.json index 2207d10b9df..324ef32a1fa 100644 --- a/phpBB/composer.json +++ b/phpBB/composer.json @@ -47,7 +47,8 @@ "symfony/routing": "~3.1", "symfony/twig-bridge": "~3.1", "symfony/yaml": "~3.1", - "twig/twig": "^1.0,<1.25" + "twig/twig": "^1.0,<1.25", + "composer/composer": "^1.0" }, "require-dev": { "fabpot/goutte": "~3.1", diff --git a/phpBB/composer.lock b/phpBB/composer.lock index 0d258bc677e..6ad23abf13e 100644 --- a/phpBB/composer.lock +++ b/phpBB/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "c53f2fa544168309d695bb1855c98c24", - "content-hash": "4bc93e90a4852f936c13986c3823831b", + "hash": "80752e19604f3bd6ac0af14d488a748b", + "content-hash": "60c4fa2116744111294d5c3a5c21afdd", "packages": [ { "name": "bantu/ini-get-wrapper", @@ -37,6 +37,263 @@ "description": "Convenience wrapper around ini_get()", "time": "2014-09-15 13:12:35" }, + { + "name": "composer/ca-bundle", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/composer/ca-bundle.git", + "reference": "5df9ed0ed0c9506ea6404a23450854e5df15cc12" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/5df9ed0ed0c9506ea6404a23450854e5df15cc12", + "reference": "5df9ed0ed0c9506ea6404a23450854e5df15cc12", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0" + }, + "require-dev": { + "symfony/process": "^2.5 || ^3.0" + }, + "suggest": { + "symfony/process": "This is necessary to reliably check whether openssl_x509_parse is vulnerable on older php versions, but can be ignored on PHP 5.5.6+" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\CaBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ], + "time": "2016-07-18 23:07:53" + }, + { + "name": "composer/composer", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/composer/composer.git", + "reference": "b49a006748a460f8dae6500ec80ed021501ce969" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/composer/zipball/b49a006748a460f8dae6500ec80ed021501ce969", + "reference": "b49a006748a460f8dae6500ec80ed021501ce969", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.0", + "composer/semver": "^1.0", + "composer/spdx-licenses": "^1.0", + "justinrainbow/json-schema": "^1.6 || ^2.0", + "php": "^5.3.2 || ^7.0", + "psr/log": "^1.0", + "seld/cli-prompt": "^1.0", + "seld/jsonlint": "^1.4", + "seld/phar-utils": "^1.0", + "symfony/console": "^2.5 || ^3.0", + "symfony/filesystem": "^2.5 || ^3.0", + "symfony/finder": "^2.2 || ^3.0", + "symfony/process": "^2.1 || ^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.5 || ^5.0.5", + "phpunit/phpunit-mock-objects": "^2.3 || ^3.0" + }, + "suggest": { + "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", + "ext-zip": "Enabling the zip extension allows you to unzip archives", + "ext-zlib": "Allow gzip compression of HTTP requests" + }, + "bin": [ + "bin/composer" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\": "src/Composer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.", + "homepage": "https://getcomposer.org/", + "keywords": [ + "autoload", + "dependency", + "package" + ], + "time": "2016-07-18 23:28:52" + }, + { + "name": "composer/semver", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573", + "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.5 || ^5.0.5", + "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "time": "2016-08-30 16:08:34" + }, + { + "name": "composer/spdx-licenses", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/composer/spdx-licenses.git", + "reference": "88c26372b1afac36d8db601cdf04ad8716f53d88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/88c26372b1afac36d8db601cdf04ad8716f53d88", + "reference": "88c26372b1afac36d8db601cdf04ad8716f53d88", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.5 || ^5.0.5", + "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Spdx\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "SPDX licenses list and validation library.", + "keywords": [ + "license", + "spdx", + "validator" + ], + "time": "2016-05-04 12:27:30" + }, { "name": "google/recaptcha", "version": "1.1.2", @@ -253,6 +510,72 @@ ], "time": "2016-06-24 23:00:38" }, + { + "name": "justinrainbow/json-schema", + "version": "2.0.5", + "source": { + "type": "git", + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "6b2a33e6a768f96bdc2ead5600af0822eed17d67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/6b2a33e6a768f96bdc2ead5600af0822eed17d67", + "reference": "6b2a33e6a768f96bdc2ead5600af0822eed17d67", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "json-schema/json-schema-test-suite": "1.2.0", + "phpdocumentor/phpdocumentor": "~2", + "phpunit/phpunit": "^4.8.22" + }, + "bin": [ + "bin/validate-json" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "JsonSchema\\": "src/JsonSchema/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" + }, + { + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" + } + ], + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", + "keywords": [ + "json", + "schema" + ], + "time": "2016-06-02 10:59:52" + }, { "name": "lusitanian/oauth", "version": "v0.8.10", @@ -703,6 +1026,144 @@ ], "time": "2017-01-22 17:12:21" }, + { + "name": "seld/cli-prompt", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/cli-prompt.git", + "reference": "8cbe10923cae5bcd7c5a713f6703fc4727c8c1b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/8cbe10923cae5bcd7c5a713f6703fc4727c8c1b4", + "reference": "8cbe10923cae5bcd7c5a713f6703fc4727c8c1b4", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Seld\\CliPrompt\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "Allows you to prompt for user input on the command line, and optionally hide the characters they type", + "keywords": [ + "cli", + "console", + "hidden", + "input", + "prompt" + ], + "time": "2016-04-18 09:31:41" + }, + { + "name": "seld/jsonlint", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "66834d3e3566bb5798db7294619388786ae99394" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/66834d3e3566bb5798db7294619388786ae99394", + "reference": "66834d3e3566bb5798db7294619388786ae99394", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0" + }, + "bin": [ + "bin/jsonlint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Seld\\JsonLint\\": "src/Seld/JsonLint/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "JSON Linter", + "keywords": [ + "json", + "linter", + "parser", + "validator" + ], + "time": "2015-11-21 02:21:41" + }, + { + "name": "seld/phar-utils", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/phar-utils.git", + "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a", + "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Seld\\PharUtils\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "PHAR file format utilities, for when PHP phars you up", + "keywords": [ + "phra" + ], + "time": "2015-10-13 18:44:15" + }, { "name": "symfony/config", "version": "v3.2.0", @@ -1294,6 +1755,55 @@ ], "time": "2016-11-14 01:06:16" }, + { + "name": "symfony/process", + "version": "v3.1.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "04c2dfaae4ec56a5c677b0c69fac34637d815758" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/04c2dfaae4ec56a5c677b0c69fac34637d815758", + "reference": "04c2dfaae4ec56a5c677b0c69fac34637d815758", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Process Component", + "homepage": "https://symfony.com", + "time": "2016-07-28 11:13:48" + }, { "name": "symfony/proxy-manager-bridge", "version": "v3.2.0", @@ -3231,55 +3741,6 @@ "homepage": "https://symfony.com", "time": "2016-11-25 12:32:42" }, - { - "name": "symfony/process", - "version": "v3.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "02ea84847aad71be7e32056408bb19f3a616cdd3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/02ea84847aad71be7e32056408bb19f3a616cdd3", - "reference": "02ea84847aad71be7e32056408bb19f3a616cdd3", - "shasum": "" - }, - "require": { - "php": ">=5.5.9" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Process Component", - "homepage": "https://symfony.com", - "time": "2016-11-24 10:40:28" - }, { "name": "webmozart/assert", "version": "1.2.0", diff --git a/phpBB/config/default/container/services.yml b/phpBB/config/default/container/services.yml index 9bb1d673f41..17fa223dda6 100644 --- a/phpBB/config/default/container/services.yml +++ b/phpBB/config/default/container/services.yml @@ -8,6 +8,7 @@ imports: - { resource: services_cron.yml } - { resource: services_db.yml } - { resource: services_event.yml } + - { resource: services_extensions.yml } - { resource: services_feed.yml } - { resource: services_files.yml } - { resource: services_filesystem.yml } @@ -98,18 +99,6 @@ services: - '%core.root_path%' - '@template' - ext.manager: - class: phpbb\extension\manager - arguments: - - '@service_container' - - '@dbal.conn' - - '@config' - - '@filesystem' - - '%tables.ext%' - - '%core.root_path%' - - '%core.php_ext%' - - '@cache' - file_downloader: class: phpbb\file_downloader diff --git a/phpBB/config/default/container/services_console.yml b/phpBB/config/default/container/services_console.yml index e25ab4f03f5..3305ede490c 100644 --- a/phpBB/config/default/container/services_console.yml +++ b/phpBB/config/default/container/services_console.yml @@ -141,6 +141,22 @@ services: tags: - { name: console.command } + console.command.extension.install: + class: phpbb\console\command\extension\install + arguments: + - @user + - @ext.composer.manager + tags: + - { name: console.command } + + console.command.extension.list_available: + class: phpbb\console\command\extension\list_available + arguments: + - @user + - @ext.composer.manager + tags: + - { name: console.command } + console.command.extension.purge: class: phpbb\console\command\extension\purge arguments: @@ -150,6 +166,14 @@ services: tags: - { name: console.command } + console.command.extension.remove: + class: phpbb\console\command\extension\remove + arguments: + - @user + - @ext.composer.manager + tags: + - { name: console.command } + console.command.extension.show: class: phpbb\console\command\extension\show arguments: @@ -159,6 +183,14 @@ services: tags: - { name: console.command } + console.command.extension.update: + class: phpbb\console\command\extension\update + arguments: + - @user + - @ext.composer.manager + tags: + - { name: console.command } + console.command.fixup.recalculate_email_hash: class: phpbb\console\command\fixup\recalculate_email_hash arguments: diff --git a/phpBB/config/default/container/services_extensions.yml b/phpBB/config/default/container/services_extensions.yml new file mode 100644 index 00000000000..3a2e83f73ab --- /dev/null +++ b/phpBB/config/default/container/services_extensions.yml @@ -0,0 +1,39 @@ +services: + ext.manager: + class: phpbb\extension\manager + arguments: + - @service_container + - @dbal.conn + - @config + - @filesystem + - %tables.ext% + - %core.root_path% + - %core.php_ext% + - @cache + + ext.composer.installer: + class: phpbb\composer\installer + arguments: + - %core.root_path% + - @config + + ext.composer.manager: + class: phpbb\composer\manager + arguments: + - @ext.composer.installer + - phpbb-extension + - EXTENSIONS_ + + style.composer.manager: + class: phpbb\composer\manager + arguments: + - @ext.composer.installer + - phpbb-style + - STYLES_ + + lang.composer.manager: + class: phpbb\composer\manager + arguments: + - @ext.composer.installer + - phpbb-language + - LANGUAGES_ diff --git a/phpBB/phpbb/composer/exception/runtime_exception.php b/phpBB/phpbb/composer/exception/runtime_exception.php new file mode 100644 index 00000000000..eb927593185 --- /dev/null +++ b/phpBB/phpbb/composer/exception/runtime_exception.php @@ -0,0 +1,37 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\composer\exception; + +use phpbb\exception\runtime_exception as base; + +/** + * Base class for exceptions thrown when managing packages through composer + */ +class runtime_exception extends base +{ + /** + * Constructor + * + * @param string $prefix The language string prefix + * @param string $message The Exception message to throw (must be a language variable). + * @param array $parameters The parameters to use with the language var. + * @param \Exception $previous The previous runtime_exception used for the runtime_exception chaining. + * @param integer $code The Exception code. + */ + public function __construct($prefix, $message = '', array $parameters = [], \Exception $previous = null, $code = 0) + { + parent::__construct($prefix . $message, $parameters, $previous, $code); + } + +} diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php new file mode 100644 index 00000000000..05c3ef2d685 --- /dev/null +++ b/phpBB/phpbb/composer/installer.php @@ -0,0 +1,392 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\composer; + +use Composer\Composer; +use Composer\Factory; +use Composer\IO\BufferIO; +use Composer\IO\NullIO; +use Composer\Json\JsonFile; +use Composer\Package\CompletePackage; +use Composer\Package\PackageInterface; +use Composer\Repository\ComposerRepository; +use Composer\Repository\RepositoryInterface; +use Composer\Util\RemoteFilesystem; +use phpbb\config\config; +use phpbb\exception\runtime_exception; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * Class to install packages through composer while freezing core dependencies. + */ +class installer +{ + /** + * @var array Repositories to look packages from + */ + protected $repositories = []; + + /** + * @var bool Indicates whether packagist usage is allowed or not + */ + protected $packagist = false; + + /** + * @var string Composer filename used to manage the packages + */ + protected $composer_filename = 'composer-ext.json'; + + /** + * @var string Directory where to install packages vendors + */ + protected $packages_vendor_dir = 'vendor-ext/'; + + /** + * @var string phpBB root path + */ + protected $root_path; + + /** + * @param \phpbb\config\config $config Config object + * @param string $root_path phpBB root path + */ + public function __construct($root_path, config $config = null) + { + if ($config) + { + $this->repositories = (array) unserialize($config['exts_composer_repositories']); + $this->packagist = (bool) $config['exts_composer_packagist']; + $this->composer_filename = $config['exts_composer_json_file']; + $this->packages_vendor_dir = $config['exts_composer_vendor_dir']; + } + + $this->root_path = $root_path; + } + + /** + * Update the current installed set of packages + * + * @param array $packages Packages to install. + * Each entry may be a name or an array associating a version constraint to a name + * @param array $whitelist White-listed packages (packages that can be installed/updated/removed) + * @throws runtime_exception + */ + public function install(array $packages, $whitelist) + { + $this->generate_ext_json_file($packages); + + putenv('COMPOSER_VENDOR_DIR=' . $this->root_path . '/' . $this->packages_vendor_dir); + + $io = new BufferIO('', OutputInterface::VERBOSITY_DEBUG); + $composer = Factory::create($io, $this->get_composer_ext_json_filename(), false); + $install = \Composer\Installer::create($io, $composer); + + $install + ->setVerbose(true) + ->setPreferSource(false) + ->setPreferDist(true) + ->setDevMode(false) + ->setUpdate(true) + ->setUpdateWhitelist($whitelist) + ->setWhitelistDependencies(false) + ->setIgnorePlatformRequirements(false) + ->setDumpAutoloader(false) + ->setPreferStable(true) + ->setRunScripts(false) + ->setDryRun(false); + + try + { + $install->run(); + $output = $io->getOutput(); + $error_pos = strpos($output, 'Your requirements could not be resolved to an installable set of packages.'); + + if ($error_pos) + { + // TODO Extract the precise error and use language string + throw new \RuntimeException(substr($output, $error_pos)); + } + + } + catch (\Exception $e) + { + throw new runtime_exception('Cannot install packages', [], $e); + } + } + + /** + * Returns the list of currently installed packages + * + * @param string $type Returns only the packages with the given type + * + * @return array The installed packages associated to their version. + */ + public function get_installed_packages($type) + { + try + { + $io = new NullIO(); + putenv('COMPOSER_VENDOR_DIR=' . $this->root_path . '/' . $this->packages_vendor_dir); + $composer = Factory::create($io, $this->get_composer_ext_json_filename(), false); + + $installed = []; + $packages = $composer->getRepositoryManager()->getLocalRepository()->getCanonicalPackages(); + + foreach ($packages as $package) + { + if ($package->getType() === $type) + { + $installed[$package->getName()] = $package->getPrettyVersion(); + } + } + + return $installed; + } + catch (\Exception $e) + { + return []; + } + } + + /** + * Gets the list of the available packages of the configured type in the configured repositories + * + * @param string $type Returns only the packages with the given type + * + * @return array The name of the available packages, associated to their definition. Ordered by name. + */ + public function get_available_packages($type) + { + try + { + $io = new NullIO(); + + $composer = Factory::create($io, $this->get_composer_ext_json_filename(), false); + + $available = []; + $repositories = $composer->getRepositoryManager()->getRepositories(); + + /** @var RepositoryInterface $repository */ + foreach ($repositories as $repository) + { + if ($repository instanceof ComposerRepository && $repository->hasProviders()) + { + $r = new \ReflectionObject($repository); + $repo_url = $r->getProperty('url'); + $repo_url->setAccessible(true); + + if ($repo_url->getValue($repository) === 'http://packagist.org') + { + $url = 'https://packagist.org/packages/list.json?type=' . $type; + $rfs = new RemoteFilesystem($io); + $hostname = parse_url($url, PHP_URL_HOST) ?: $url; + $json = $rfs->getContents($hostname, $url, false); + + /** @var PackageInterface $package */ + foreach (JsonFile::parseJson($json, $url)['packageNames'] as $package) + { + $packages = $repository->findPackages($package); + $package = array_pop($packages); + $available[$package->getName()] = ['name' => $package->getPrettyName()]; + + if ($package instanceof CompletePackage) + { + $available[$package->getName()]['description'] = $package->getDescription(); + $available[$package->getName()]['url'] = $package->getHomepage(); + } + } + } + } + else + { + /** @var PackageInterface $package */ + foreach ($repository->getPackages() as $package) + { + if ($package->getType() === $type) + { + $available[$package->getName()] = ['name' => $package]; + + if ($package instanceof CompletePackage) + { + $available[$package->getName()]['description'] = $package->getDescription(); + $available[$package->getName()]['url'] = $package->getHomepage(); + } + } + } + } + } + + ksort($available); + + return $available; + } + catch (\Exception $e) + { + return []; + } + } + + /** + * Generates and write the json file used to install the set of packages + * + * @param array $packages Packages to update. + * Each entry may be a name or an array associating a version constraint to a name + */ + protected function generate_ext_json_file(array $packages) + { + $io = new NullIO(); + $composer = Factory::create($io, null, false); + + $core_packages = $this->get_core_packages($composer); + $core_json_data = [ + 'require' => array_merge( + ['php' => $this->get_core_php_requirement($composer)], + $core_packages, + $this->get_extra_dependencies(), + $packages), + 'replace' => $core_packages, + 'repositories' => $this->get_composer_repositories(), + ]; + + $json_file = new JsonFile($this->get_composer_ext_json_filename()); + $json_file->write($core_json_data); + } + + /** + * Get the core installed packages + * + * @param Composer $composer Composer object to load the dependencies + * @return array The core packages with their version + */ + protected function get_core_packages(Composer $composer) + { + $core_deps = []; + $packages = $composer->getRepositoryManager()->getLocalRepository()->getCanonicalPackages(); + + foreach ($packages as $package) + { + $core_deps[$package->getName()] = $package->getPrettyVersion(); + } + + $core_deps['phpbb/phpbb'] = $composer->getPackage()->getPrettyVersion(); + + return $core_deps; + } + + /** + * Get the PHP version required by the core + * + * @param Composer $composer Composer object to load the dependencies + * @return string The PHP version required by the core + */ + protected function get_core_php_requirement(Composer $composer) + { + return $composer->getLocker()->getLockData()['platform']['php']; + } + + /** + * Generate the repositories entry of the packages json file + * + * @return array repositories entry + */ + protected function get_composer_repositories() + { + $repositories = []; + + if (!$this->packagist) + { + $repositories[]['packagist'] = false; + } + + foreach ($this->repositories as $repository) + { + $repositories[] = [ + 'type' => 'composer', + 'url' => $repository, + ]; + } + + return $repositories; + } + + /** + * Get the name of the json file used for the packages. + * + * @return string The json filename + */ + protected function get_composer_ext_json_filename() + { + return $this->root_path . $this->composer_filename; + } + + /** + * Get extra dependencies required to install the packages + * + * @return array Array of composer dependencies + */ + protected function get_extra_dependencies() + { + return []; + } + + /** + * Sets the customs repositories + * + * @param array $repositories An array of composer repositories to use + */ + public function set_repositories($repositories) + { + $this->repositories = $repositories; + } + + /** + * Allow or disallow packagist + * + * @param boolean $packagist + */ + public function set_packagist($packagist) + { + $this->packagist = $packagist; + } + + /** + * Sets the name of the managed packages' json file + * + * @param string $composer_filename + */ + public function set_composer_filename($composer_filename) + { + $this->composer_filename = $composer_filename; + } + + /** + * Sets the location of the managed packages' vendors + * + * @param string $packages_vendor_dir + */ + public function set_packages_vendor_dir($packages_vendor_dir) + { + $this->packages_vendor_dir = $packages_vendor_dir; + } + + /** + * Sets the phpBB root path + * + * @param string $root_path + */ + public function set_root_path($root_path) + { + $this->root_path = $root_path; + } +} diff --git a/phpBB/phpbb/composer/manager.php b/phpBB/phpbb/composer/manager.php new file mode 100644 index 00000000000..836f39b509e --- /dev/null +++ b/phpBB/phpbb/composer/manager.php @@ -0,0 +1,190 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\composer; + +use phpbb\composer\exception\runtime_exception; + +/** + * Class to manage packages through composer. + */ +class manager +{ + /** + * @var installer Composer packages installer + */ + protected $installer; + + /** + * @var string Type of packages (phpbb-packages per example) + */ + protected $package_type; + + /** + * @var string Prefix used for the exception's language string + */ + protected $exception_prefix; + + /** + * @var array Caches the managed packages list + */ + private $managed_packages; + + /** + * @var array Caches the available packages list + */ + private $available_packages; + + /** + * @param installer $installer Installer object + * @param string $package_type Composer type of managed packages + * @param string $exception_prefix Exception prefix to use + */ + public function __construct(installer $installer, $package_type, $exception_prefix) + { + $this->installer = $installer; + $this->package_type = $package_type; + $this->exception_prefix = $exception_prefix; + } + + /** + * Installs (if necessary) a set of packages + * + * @param array $packages Packages to install. + * Each entry may be a name or an array associating a version constraint to a name + * @throws runtime_exception + */ + public function install(array $packages) + { + $packages = $this->normalize_version($packages); + + $already_managed = array_intersect(array_keys($this->get_managed_packages()), array_keys($packages)); + if (count($already_managed) !== 0) + { + throw new runtime_exception($this->exception_prefix, 'ALREADY_INSTALLED', [implode('|', $already_managed)]); + } + + $managed_packages = array_merge($this->get_managed_packages(), $packages); + ksort($managed_packages); + + $this->installer->install($managed_packages, array_keys($packages)); + + $this->managed_packages = null; + } + + /** + * Updates or installs a set of packages + * + * @param array $packages Packages to update. + * Each entry may be a name or an array associating a version constraint to a name + * @throws runtime_exception + */ + public function update(array $packages) + { + $packages = $this->normalize_version($packages); + + // TODO: if the extension is already enabled, we should disabled and re-enable it + $not_managed = array_diff_key($packages, $this->get_managed_packages()); + if (count($not_managed) !== 0) + { + throw new runtime_exception($this->exception_prefix, 'NOT_MANAGED', [implode('|', array_keys($not_managed))]); + } + + $managed_packages = array_merge($this->get_managed_packages(), $packages); + ksort($managed_packages); + + $this->installer->install($managed_packages, array_keys($packages)); + } + + /** + * Removes a set of packages + * + * @param array $packages Packages to remove. + * Each entry may be a name or an array associating a version constraint to a name + * @throws runtime_exception + */ + public function remove(array $packages) + { + $packages = $this->normalize_version($packages); + + // TODO: if the extension is already enabled, we should disabled (with an option for purge) + $not_managed = array_diff_key($packages, $this->get_managed_packages()); + if (count($not_managed) !== 0) + { + throw new runtime_exception($this->exception_prefix, 'NOT_MANAGED', [implode('|', array_keys($not_managed))]); + } + + $managed_packages = array_diff_key($this->get_managed_packages(), $packages); + ksort($managed_packages); + + $this->installer->install($managed_packages, array_keys($packages)); + + $this->managed_packages = null; + } + + /** + * Tells whether or not a package is managed by Composer. + * + * @param string $packages Package name + * @return bool + */ + public function is_managed($packages) + { + return array_key_exists($packages, $this->get_managed_packages()); + } + + /** + * Returns the list of managed packages + * + * @return array The managed packages associated to their version. + */ + public function get_managed_packages() + { + if ($this->managed_packages === null) + { + $this->managed_packages = $this->installer->get_installed_packages($this->package_type); + } + + return $this->managed_packages; + } + + /** + * Returns the list of available packages + * + * @return array The name of the available packages, associated to their definition. Ordered by name. + */ + public function get_available_packages() + { + if ($this->available_packages === null) + { + $this->available_packages = $this->installer->get_available_packages($this->package_type); + } + + return $this->available_packages; + } + + protected function normalize_version($packages) + { + $normalized_packages = []; + + foreach ($packages as $package) + { + if (!is_array($package)) + { + $normalized_packages[$package] = '*'; + } + } + + return $normalized_packages; + } +} diff --git a/phpBB/phpbb/console/command/extension/install.php b/phpBB/phpbb/console/command/extension/install.php new file mode 100644 index 00000000000..f2358e7e4aa --- /dev/null +++ b/phpBB/phpbb/console/command/extension/install.php @@ -0,0 +1,72 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb\console\command\extension; + +use phpbb\composer\manager; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Style\SymfonyStyle; + +class install extends \phpbb\console\command\command +{ + /** + * @var \phpbb\composer\manager Composer extensions manager + */ + protected $manager; + + public function __construct(\phpbb\user $user, manager $manager) + { + $this->manager = $manager; + + parent::__construct($user); + } + + /** + * Sets the command name and description + * + * @return null + */ + protected function configure() + { + $this + ->setName('extension:install') + ->setDescription($this->user->lang('CLI_DESCRIPTION_EXTENSION_INSTALL')) + ->addArgument( + 'extensions', + InputArgument::IS_ARRAY | InputArgument::REQUIRED, + $this->user->lang('CLI_DESCRIPTION_EXTENSION_INSTALL')) + ; + } + + /** + * Executes the command extension:install + * + * @param InputInterface $input + * @param OutputInterface $output + * @return integer + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + $io = new SymfonyStyle($input, $output); + + $extensions = $input->getArgument('extensions'); + + $this->manager->install($extensions); + + $io->success('All extensions installed'); + + return 0; + } +} diff --git a/phpBB/phpbb/console/command/extension/list_available.php b/phpBB/phpbb/console/command/extension/list_available.php new file mode 100644 index 00000000000..0b20ce2d5e3 --- /dev/null +++ b/phpBB/phpbb/console/command/extension/list_available.php @@ -0,0 +1,75 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb\console\command\extension; + +use Composer\Package\CompletePackage; +use Composer\Package\PackageInterface; +use phpbb\composer\installer; +use phpbb\composer\manager; +use Symfony\Component\Console\Formatter\OutputFormatter; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Style\SymfonyStyle; + +class list_available extends \phpbb\console\command\command +{ + /** + * @var \phpbb\composer\manager Composer extensions manager + */ + protected $manager; + + public function __construct(\phpbb\user $user, manager $manager) + { + $this->manager = $manager; + + parent::__construct($user); + } + + /** + * Sets the command name and description + * + * @return null + */ + protected function configure() + { + $this + ->setName('extension:list-available') + ->setDescription($this->user->lang('CLI_DESCRIPTION_EXTENSION_LIST_AVAILABLE')) + ; + } + + /** + * Executes the command extension:install + * + * @param InputInterface $input + * @param OutputInterface $output + * @return integer + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + $io = new SymfonyStyle($input, $output); + + $extensions = []; + + foreach ($this->manager->get_available_packages() as $package) + { + $extensions[] = '' . $package['name'] . ' ' . $package['url'] . "\n" . $package['description']; + } + + $io->listing($extensions); + + return 0; + } +} diff --git a/phpBB/phpbb/console/command/extension/remove.php b/phpBB/phpbb/console/command/extension/remove.php new file mode 100644 index 00000000000..a668322cdf8 --- /dev/null +++ b/phpBB/phpbb/console/command/extension/remove.php @@ -0,0 +1,72 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb\console\command\extension; + +use phpbb\composer\manager; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Style\SymfonyStyle; + +class remove extends \phpbb\console\command\command +{ + /** + * @var \phpbb\composer\manager Composer extensions manager + */ + protected $manager; + + public function __construct(\phpbb\user $user, manager $manager) + { + $this->manager = $manager; + + parent::__construct($user); + } + + /** + * Sets the command name and description + * + * @return null + */ + protected function configure() + { + $this + ->setName('extension:remove') + ->setDescription($this->user->lang('CLI_DESCRIPTION_EXTENSION_REMOVE')) + ->addArgument( + 'extensions', + InputArgument::IS_ARRAY | InputArgument::REQUIRED, + $this->user->lang('CLI_DESCRIPTION_EXTENSION_REMOVE')) + ; + } + + /** + * Executes the command extension:install + * + * @param InputInterface $input + * @param OutputInterface $output + * @return integer + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + $io = new SymfonyStyle($input, $output); + + $extensions = $input->getArgument('extensions'); + + $this->manager->remove($extensions); + + $io->success('All extensions removed'); + + return 0; + } +} diff --git a/phpBB/phpbb/console/command/extension/update.php b/phpBB/phpbb/console/command/extension/update.php new file mode 100644 index 00000000000..01c9db0c280 --- /dev/null +++ b/phpBB/phpbb/console/command/extension/update.php @@ -0,0 +1,72 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb\console\command\extension; + +use phpbb\composer\manager; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Style\SymfonyStyle; + +class update extends \phpbb\console\command\command +{ + /** + * @var \phpbb\composer\manager Composer extensions manager + */ + protected $manager; + + public function __construct(\phpbb\user $user, manager $manager) + { + $this->manager = $manager; + + parent::__construct($user); + } + + /** + * Sets the command name and description + * + * @return null + */ + protected function configure() + { + $this + ->setName('extension:update') + ->setDescription($this->user->lang('CLI_DESCRIPTION_EXTENSION_UPDATE')) + ->addArgument( + 'extensions', + InputArgument::IS_ARRAY | InputArgument::REQUIRED, + $this->user->lang('CLI_DESCRIPTION_EXTENSION_UPDATE')) + ; + } + + /** + * Executes the command extension:install + * + * @param InputInterface $input + * @param OutputInterface $output + * @return integer + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + $io = new SymfonyStyle($input, $output); + + $extensions = $input->getArgument('extensions'); + + $this->manager->update($extensions); + + $io->success('All extensions updated'); + + return 0; + } +} diff --git a/phpBB/phpbb/db/migration/data/v320/extensions_composer.php b/phpBB/phpbb/db/migration/data/v320/extensions_composer.php new file mode 100644 index 00000000000..09771f1797e --- /dev/null +++ b/phpBB/phpbb/db/migration/data/v320/extensions_composer.php @@ -0,0 +1,27 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb\db\migration\data\v320; + +class extensions_composer extends \phpbb\db\migration\migration +{ + public function update_data() + { + return array( + array('config.add', array('exts_composer_repositories', serialize([]))), + array('config.add', array('exts_composer_packagist', true)), + array('config.add', array('exts_composer_json_file', 'composer-ext.json')), + array('config.add', array('exts_composer_vendor_dir', 'vendor-ext/')), + ); + } +} From ac129f34d3b455c9148964c5cc8e60670faa1e62 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Wed, 9 Sep 2015 23:35:14 +0200 Subject: [PATCH 110/431] [ticket/11150] Do not override extensions installed manually PHPBB3-11150 --- .../default/container/services_extensions.yml | 3 +- phpBB/phpbb/composer/extension_manager.php | 63 +++++++++++++++++ phpBB/phpbb/composer/installer.php | 15 +++- phpBB/phpbb/composer/manager.php | 28 ++++++-- phpBB/phpbb/composer/manager_interface.php | 69 +++++++++++++++++++ .../console/command/extension/install.php | 5 +- .../command/extension/list_available.php | 5 +- .../console/command/extension/remove.php | 5 +- .../console/command/extension/update.php | 5 +- 9 files changed, 180 insertions(+), 18 deletions(-) create mode 100644 phpBB/phpbb/composer/extension_manager.php create mode 100644 phpBB/phpbb/composer/manager_interface.php diff --git a/phpBB/config/default/container/services_extensions.yml b/phpBB/config/default/container/services_extensions.yml index 3a2e83f73ab..46953ae4a21 100644 --- a/phpBB/config/default/container/services_extensions.yml +++ b/phpBB/config/default/container/services_extensions.yml @@ -18,9 +18,10 @@ services: - @config ext.composer.manager: - class: phpbb\composer\manager + class: phpbb\composer\extension_manager arguments: - @ext.composer.installer + - @ext.manager - phpbb-extension - EXTENSIONS_ diff --git a/phpBB/phpbb/composer/extension_manager.php b/phpBB/phpbb/composer/extension_manager.php new file mode 100644 index 00000000000..ee3ac1aeafa --- /dev/null +++ b/phpBB/phpbb/composer/extension_manager.php @@ -0,0 +1,63 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\composer; + +use phpbb\composer\exception\runtime_exception; +use phpbb\extension\manager as ext_manager; + +/** + * Class to safely manage extensions through composer. + */ +class extension_manager extends manager +{ + /** + * @var \phpbb\extension\manager + */ + protected $extension_manager; + + /** + * @param installer $installer Installer object + * @param ext_manager $extension_manager phpBB extension manager + * @param string $package_type Composer type of managed packages + * @param string $exception_prefix Exception prefix to use + */ + public function __construct(installer $installer, ext_manager $extension_manager, $package_type, $exception_prefix) + { + $this->extension_manager = $extension_manager; + + parent::__construct($installer, $package_type, $exception_prefix); + } + + /** + * {@inheritdoc} + */ + public function install(array $packages) + { + $packages = $this->normalize_version($packages); + + $already_managed = array_intersect(array_keys($this->get_managed_packages()), array_keys($packages)); + if (count($already_managed) !== 0) + { + throw new runtime_exception($this->exception_prefix, 'ALREADY_INSTALLED', [implode('|', $already_managed)]); + } + + $installed_manually = array_intersect(array_keys($this->extension_manager->all_available()), array_keys($packages)); + if (count($installed_manually) !== 0) + { + throw new runtime_exception($this->exception_prefix, 'ALREADY_INSTALLED_MANUALLY', [implode('|', array_keys($installed_manually))]); + } + + $this->do_install($packages); + } +} diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 05c3ef2d685..7256e82d3ac 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -86,7 +86,8 @@ public function install(array $packages, $whitelist) { $this->generate_ext_json_file($packages); - putenv('COMPOSER_VENDOR_DIR=' . $this->root_path . '/' . $this->packages_vendor_dir); + $original_vendor_dir = getenv('COMPOSER_VENDOR_DIR'); + putenv('COMPOSER_VENDOR_DIR=' . $this->root_path . $this->packages_vendor_dir); $io = new BufferIO('', OutputInterface::VERBOSITY_DEBUG); $composer = Factory::create($io, $this->get_composer_ext_json_filename(), false); @@ -123,6 +124,10 @@ public function install(array $packages, $whitelist) { throw new runtime_exception('Cannot install packages', [], $e); } + finally + { + putenv('COMPOSER_VENDOR_DIR=' . $original_vendor_dir); + } } /** @@ -134,10 +139,12 @@ public function install(array $packages, $whitelist) */ public function get_installed_packages($type) { + $original_vendor_dir = getenv('COMPOSER_VENDOR_DIR'); + try { $io = new NullIO(); - putenv('COMPOSER_VENDOR_DIR=' . $this->root_path . '/' . $this->packages_vendor_dir); + putenv('COMPOSER_VENDOR_DIR=' . $this->root_path . $this->packages_vendor_dir); $composer = Factory::create($io, $this->get_composer_ext_json_filename(), false); $installed = []; @@ -157,6 +164,10 @@ public function get_installed_packages($type) { return []; } + finally + { + putenv('COMPOSER_VENDOR_DIR=' . $original_vendor_dir); + } } /** diff --git a/phpBB/phpbb/composer/manager.php b/phpBB/phpbb/composer/manager.php index 836f39b509e..4ade6e24a0e 100644 --- a/phpBB/phpbb/composer/manager.php +++ b/phpBB/phpbb/composer/manager.php @@ -18,7 +18,7 @@ /** * Class to manage packages through composer. */ -class manager +class manager implements manager_interface { /** * @var installer Composer packages installer @@ -74,6 +74,16 @@ public function install(array $packages) throw new runtime_exception($this->exception_prefix, 'ALREADY_INSTALLED', [implode('|', $already_managed)]); } + $this->do_install($packages); + } + + /** + * Really install the packages. + * + * @param array $packages Packages to install. + */ + protected function do_install($packages) + { $managed_packages = array_merge($this->get_managed_packages(), $packages); ksort($managed_packages); @@ -135,12 +145,12 @@ public function remove(array $packages) /** * Tells whether or not a package is managed by Composer. * - * @param string $packages Package name + * @param string $package Package name * @return bool */ - public function is_managed($packages) + public function is_managed($package) { - return array_key_exists($packages, $this->get_managed_packages()); + return array_key_exists($package, $this->get_managed_packages()); } /** @@ -177,11 +187,15 @@ protected function normalize_version($packages) { $normalized_packages = []; - foreach ($packages as $package) + foreach ($packages as $package => $version) { - if (!is_array($package)) + if (is_numeric($package)) + { + $normalized_packages[$version] = '*'; + } + else { - $normalized_packages[$package] = '*'; + $normalized_packages[$package] = $version; } } diff --git a/phpBB/phpbb/composer/manager_interface.php b/phpBB/phpbb/composer/manager_interface.php new file mode 100644 index 00000000000..d4c2b9eb51a --- /dev/null +++ b/phpBB/phpbb/composer/manager_interface.php @@ -0,0 +1,69 @@ +manager = $manager; diff --git a/phpBB/phpbb/console/command/extension/list_available.php b/phpBB/phpbb/console/command/extension/list_available.php index 0b20ce2d5e3..107aca3410b 100644 --- a/phpBB/phpbb/console/command/extension/list_available.php +++ b/phpBB/phpbb/console/command/extension/list_available.php @@ -17,6 +17,7 @@ use Composer\Package\PackageInterface; use phpbb\composer\installer; use phpbb\composer\manager; +use phpbb\composer\manager_interface; use Symfony\Component\Console\Formatter\OutputFormatter; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; @@ -26,11 +27,11 @@ class list_available extends \phpbb\console\command\command { /** - * @var \phpbb\composer\manager Composer extensions manager + * @var manager_interface Composer extensions manager */ protected $manager; - public function __construct(\phpbb\user $user, manager $manager) + public function __construct(\phpbb\user $user, manager_interface $manager) { $this->manager = $manager; diff --git a/phpBB/phpbb/console/command/extension/remove.php b/phpBB/phpbb/console/command/extension/remove.php index a668322cdf8..16a3ad263ff 100644 --- a/phpBB/phpbb/console/command/extension/remove.php +++ b/phpBB/phpbb/console/command/extension/remove.php @@ -14,6 +14,7 @@ namespace phpbb\console\command\extension; use phpbb\composer\manager; +use phpbb\composer\manager_interface; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; @@ -22,11 +23,11 @@ class remove extends \phpbb\console\command\command { /** - * @var \phpbb\composer\manager Composer extensions manager + * @var manager_interface Composer extensions manager */ protected $manager; - public function __construct(\phpbb\user $user, manager $manager) + public function __construct(\phpbb\user $user, manager_interface $manager) { $this->manager = $manager; diff --git a/phpBB/phpbb/console/command/extension/update.php b/phpBB/phpbb/console/command/extension/update.php index 01c9db0c280..e3f89359854 100644 --- a/phpBB/phpbb/console/command/extension/update.php +++ b/phpBB/phpbb/console/command/extension/update.php @@ -14,6 +14,7 @@ namespace phpbb\console\command\extension; use phpbb\composer\manager; +use phpbb\composer\manager_interface; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; @@ -22,11 +23,11 @@ class update extends \phpbb\console\command\command { /** - * @var \phpbb\composer\manager Composer extensions manager + * @var manager_interface Composer extensions manager */ protected $manager; - public function __construct(\phpbb\user $user, manager $manager) + public function __construct(\phpbb\user $user, manager_interface $manager) { $this->manager = $manager; From 540bac3ba425196d914dce1b74df7eb2880ea00c Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Thu, 10 Sep 2015 13:11:55 +0200 Subject: [PATCH 111/431] [ticket/11150] Better version normalization PHPBB3-11150 --- phpBB/phpbb/composer/installer.php | 1 - phpBB/phpbb/composer/manager.php | 10 +++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 7256e82d3ac..5c3bf712e7f 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -118,7 +118,6 @@ public function install(array $packages, $whitelist) // TODO Extract the precise error and use language string throw new \RuntimeException(substr($output, $error_pos)); } - } catch (\Exception $e) { diff --git a/phpBB/phpbb/composer/manager.php b/phpBB/phpbb/composer/manager.php index 4ade6e24a0e..6f087ea19d1 100644 --- a/phpBB/phpbb/composer/manager.php +++ b/phpBB/phpbb/composer/manager.php @@ -191,7 +191,15 @@ protected function normalize_version($packages) { if (is_numeric($package)) { - $normalized_packages[$version] = '*'; + if (strpos($version, ':') !== false) + { + $parts = explode(':', $version); + $normalized_packages[$parts[0]] = $parts[1]; + } + else + { + $normalized_packages[$version] = '*'; + } } else { From 779c9c8552ed5bb863561a24b539ad3495018798 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Fri, 11 Sep 2015 12:11:29 +0200 Subject: [PATCH 112/431] [ticket/11150] Preserve every packages of every phpbb types in composer-ext.json PHPBB3-11150 --- phpBB/phpbb/composer/installer.php | 12 +++++++++--- phpBB/phpbb/composer/manager.php | 30 +++++++++++++++++++++++++----- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 5c3bf712e7f..8be61944970 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -32,6 +32,8 @@ */ class installer { + const PHPBB_TYPES = ['phpbb-extension', 'phpbb-style', 'phpbb-language']; + /** * @var array Repositories to look packages from */ @@ -132,12 +134,14 @@ public function install(array $packages, $whitelist) /** * Returns the list of currently installed packages * - * @param string $type Returns only the packages with the given type + * @param string|array $types Returns only the packages with the given type(s) * * @return array The installed packages associated to their version. */ - public function get_installed_packages($type) + public function get_installed_packages($types) { + $types = (array) $types; + $original_vendor_dir = getenv('COMPOSER_VENDOR_DIR'); try @@ -151,7 +155,7 @@ public function get_installed_packages($type) foreach ($packages as $package) { - if ($package->getType() === $type) + if (in_array($package->getType(), $types, true)) { $installed[$package->getName()] = $package->getPrettyVersion(); } @@ -180,6 +184,8 @@ public function get_available_packages($type) { try { + $this->generate_ext_json_file($this->get_installed_packages(self::PHPBB_TYPES)); + $io = new NullIO(); $composer = Factory::create($io, $this->get_composer_ext_json_filename(), false); diff --git a/phpBB/phpbb/composer/manager.php b/phpBB/phpbb/composer/manager.php index 6f087ea19d1..02ca33ecb86 100644 --- a/phpBB/phpbb/composer/manager.php +++ b/phpBB/phpbb/composer/manager.php @@ -36,10 +36,15 @@ class manager implements manager_interface protected $exception_prefix; /** - * @var array Caches the managed packages list + * @var array Caches the managed packages list (for the current type) */ private $managed_packages; + /** + * @var array Caches the managed packages list (for all phpBB types) + */ + private $all_managed_packages; + /** * @var array Caches the available packages list */ @@ -84,7 +89,7 @@ public function install(array $packages) */ protected function do_install($packages) { - $managed_packages = array_merge($this->get_managed_packages(), $packages); + $managed_packages = array_merge($this->get_all_managed_packages(), $packages); ksort($managed_packages); $this->installer->install($managed_packages, array_keys($packages)); @@ -110,7 +115,7 @@ public function update(array $packages) throw new runtime_exception($this->exception_prefix, 'NOT_MANAGED', [implode('|', array_keys($not_managed))]); } - $managed_packages = array_merge($this->get_managed_packages(), $packages); + $managed_packages = array_merge($this->get_all_managed_packages(), $packages); ksort($managed_packages); $this->installer->install($managed_packages, array_keys($packages)); @@ -134,7 +139,7 @@ public function remove(array $packages) throw new runtime_exception($this->exception_prefix, 'NOT_MANAGED', [implode('|', array_keys($not_managed))]); } - $managed_packages = array_diff_key($this->get_managed_packages(), $packages); + $managed_packages = array_diff_key($this->get_all_managed_packages(), $packages); ksort($managed_packages); $this->installer->install($managed_packages, array_keys($packages)); @@ -154,7 +159,7 @@ public function is_managed($package) } /** - * Returns the list of managed packages + * Returns the list of managed packages for the current type * * @return array The managed packages associated to their version. */ @@ -168,6 +173,21 @@ public function get_managed_packages() return $this->managed_packages; } + /** + * Returns the list of managed packages for all phpBB types + * + * @return array The managed packages associated to their version. + */ + public function get_all_managed_packages() + { + if ($this->all_managed_packages === null) + { + $this->all_managed_packages = $this->installer->get_installed_packages(installer::PHPBB_TYPES); + } + + return $this->all_managed_packages; + } + /** * Returns the list of available packages * From 00229c20f00a5503ab59826ce35bc15242536696 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Fri, 11 Sep 2015 18:01:56 +0200 Subject: [PATCH 113/431] [ticket/11150] Add extension:start-managing command PHPBB3-11150 --- .../default/container/services_console.yml | 8 ++ .../default/container/services_extensions.yml | 1 + phpBB/language/en/acp/common.php | 3 + phpBB/language/en/acp/extensions.php | 10 +++ ...d_with_clean_error_exception_exception.php | 35 ++++++++ .../managed_with_enable_error_exception.php | 35 ++++++++ .../managed_with_error_exception.php | 35 ++++++++ phpBB/phpbb/composer/extension_manager.php | 76 ++++++++++++++++- phpBB/phpbb/composer/installer.php | 13 ++- phpBB/phpbb/composer/manager.php | 43 ++++------ phpBB/phpbb/composer/manager_interface.php | 20 ++++- .../command/extension/start_managing.php | 84 +++++++++++++++++++ 12 files changed, 331 insertions(+), 32 deletions(-) create mode 100644 phpBB/phpbb/composer/exception/managed_with_clean_error_exception_exception.php create mode 100644 phpBB/phpbb/composer/exception/managed_with_enable_error_exception.php create mode 100644 phpBB/phpbb/composer/exception/managed_with_error_exception.php create mode 100644 phpBB/phpbb/console/command/extension/start_managing.php diff --git a/phpBB/config/default/container/services_console.yml b/phpBB/config/default/container/services_console.yml index 3305ede490c..a1cc599aa78 100644 --- a/phpBB/config/default/container/services_console.yml +++ b/phpBB/config/default/container/services_console.yml @@ -183,6 +183,14 @@ services: tags: - { name: console.command } + console.command.extension.start_managing: + class: phpbb\console\command\extension\start_managing + arguments: + - @user + - @ext.composer.manager + tags: + - { name: console.command } + console.command.extension.update: class: phpbb\console\command\extension\update arguments: diff --git a/phpBB/config/default/container/services_extensions.yml b/phpBB/config/default/container/services_extensions.yml index 46953ae4a21..9e6a9fc0eca 100644 --- a/phpBB/config/default/container/services_extensions.yml +++ b/phpBB/config/default/container/services_extensions.yml @@ -22,6 +22,7 @@ services: arguments: - @ext.composer.installer - @ext.manager + - @filesystem - phpbb-extension - EXTENSIONS_ diff --git a/phpBB/language/en/acp/common.php b/phpBB/language/en/acp/common.php index 9be3cc96762..537cc1a5d16 100644 --- a/phpBB/language/en/acp/common.php +++ b/phpBB/language/en/acp/common.php @@ -240,6 +240,9 @@ 'EXCEPTION' => 'Exception', 'COLOUR_SWATCH' => 'Web-safe colour swatch', + + 'COMPOSER_UNSUPPORTED_OPERATION' => 'Operation unsupported for the package type “%s”.', + 'CONFIG_UPDATED' => 'Configuration updated successfully.', 'CRON_LOCK_ERROR' => 'Could not obtain cron lock.', 'CRON_NO_SUCH_TASK' => 'Could not find cron task “%s”.', diff --git a/phpBB/language/en/acp/extensions.php b/phpBB/language/en/acp/extensions.php index a96a7a2a2bb..a94b767111a 100644 --- a/phpBB/language/en/acp/extensions.php +++ b/phpBB/language/en/acp/extensions.php @@ -35,6 +35,16 @@ // in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine $lang = array_merge($lang, array( + + 'EXTENSION_ALREADY_INSTALLED' => 'The “%s” extension has already been installed.', + 'EXTENSION_ALREADY_INSTALLED_MANUALLY' => 'The “%s” extension has already been installed manually.', + 'EXTENSION_ALREADY_MANAGED' => 'The “%s” extension has already been installed manually.', + 'EXTENSION_CANNOT_MANAGE_FILESYSTEM_ERROR' => 'The “%s” extension cannot be managed because the old files cannot be removed.', + 'EXTENSION_CANNOT_MANAGE_INSTALL_ERROR' => 'The “%s” extension cannot be installed. The old extension have been restored.', + 'EXTENSION_MANAGED_WITH_CLEAN_ERROR' => 'The “%1$s” extension has been installed but an error occurred and the old files have not been removed. You might want to delete the “%2$s” files manually.', + 'EXTENSION_MANAGED_WITH_ENABLE_ERROR' => 'The “%s” extension has been installed but an error occurred when re-enabling it.', + 'EXTENSION_NOT_INSTALLED' => 'The “%s” extension is not installed.', + 'EXTENSION' => 'Extension', 'EXTENSIONS' => 'Extensions', 'EXTENSIONS_ADMIN' => 'Extensions Manager', diff --git a/phpBB/phpbb/composer/exception/managed_with_clean_error_exception_exception.php b/phpBB/phpbb/composer/exception/managed_with_clean_error_exception_exception.php new file mode 100644 index 00000000000..2339fa40964 --- /dev/null +++ b/phpBB/phpbb/composer/exception/managed_with_clean_error_exception_exception.php @@ -0,0 +1,35 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\composer\exception; + +/** + * Packaged managed with success but error occurred when cleaning the filesystem + */ +class managed_with_clean_error_exception extends managed_with_error_exception +{ + /** + * Constructor + * + * @param string $prefix The language string prefix + * @param string $message The Exception message to throw (must be a language variable). + * @param array $parameters The parameters to use with the language var. + * @param \Exception $previous The previous runtime_exception used for the runtime_exception chaining. + * @param integer $code The Exception code. + */ + public function __construct($prefix, $message = '', array $parameters = [], \Exception $previous = null, $code = 0) + { + parent::__construct($prefix . $message, $parameters, $previous, $code); + } + +} diff --git a/phpBB/phpbb/composer/exception/managed_with_enable_error_exception.php b/phpBB/phpbb/composer/exception/managed_with_enable_error_exception.php new file mode 100644 index 00000000000..7ef7a42df36 --- /dev/null +++ b/phpBB/phpbb/composer/exception/managed_with_enable_error_exception.php @@ -0,0 +1,35 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\composer\exception; + +/** + * Packaged managed with success but error occurred when re-enabling the extension + */ +class managed_with_enable_error_exception extends managed_with_error_exception +{ + /** + * Constructor + * + * @param string $prefix The language string prefix + * @param string $message The Exception message to throw (must be a language variable). + * @param array $parameters The parameters to use with the language var. + * @param \Exception $previous The previous runtime_exception used for the runtime_exception chaining. + * @param integer $code The Exception code. + */ + public function __construct($prefix, $message = '', array $parameters = [], \Exception $previous = null, $code = 0) + { + parent::__construct($prefix . $message, $parameters, $previous, $code); + } + +} diff --git a/phpBB/phpbb/composer/exception/managed_with_error_exception.php b/phpBB/phpbb/composer/exception/managed_with_error_exception.php new file mode 100644 index 00000000000..9e7c67580e6 --- /dev/null +++ b/phpBB/phpbb/composer/exception/managed_with_error_exception.php @@ -0,0 +1,35 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\composer\exception; + +/** + * Packaged managed with success but errored at some point + */ +class managed_with_error_exception extends runtime_exception +{ + /** + * Constructor + * + * @param string $prefix The language string prefix + * @param string $message The Exception message to throw (must be a language variable). + * @param array $parameters The parameters to use with the language var. + * @param \Exception $previous The previous runtime_exception used for the runtime_exception chaining. + * @param integer $code The Exception code. + */ + public function __construct($prefix, $message = '', array $parameters = [], \Exception $previous = null, $code = 0) + { + parent::__construct($prefix . $message, $parameters, $previous, $code); + } + +} diff --git a/phpBB/phpbb/composer/extension_manager.php b/phpBB/phpbb/composer/extension_manager.php index ee3ac1aeafa..360e2fca5b7 100644 --- a/phpBB/phpbb/composer/extension_manager.php +++ b/phpBB/phpbb/composer/extension_manager.php @@ -13,8 +13,13 @@ namespace phpbb\composer; +use phpbb\composer\exception\managed_with_clean_error_exception; +use phpbb\composer\exception\managed_with_enable_error_exception; +use phpbb\composer\exception\managed_with_error_exception; use phpbb\composer\exception\runtime_exception; use phpbb\extension\manager as ext_manager; +use phpbb\filesystem\exception\filesystem_exception; +use phpbb\filesystem\filesystem; /** * Class to safely manage extensions through composer. @@ -26,15 +31,22 @@ class extension_manager extends manager */ protected $extension_manager; + /** + * @var \phpbb\filesystem\filesystem + */ + protected $filesystem; + /** * @param installer $installer Installer object * @param ext_manager $extension_manager phpBB extension manager + * @param filesystem $filesystem Filesystem object * @param string $package_type Composer type of managed packages * @param string $exception_prefix Exception prefix to use */ - public function __construct(installer $installer, ext_manager $extension_manager, $package_type, $exception_prefix) + public function __construct(installer $installer, ext_manager $extension_manager, filesystem $filesystem, $package_type, $exception_prefix) { $this->extension_manager = $extension_manager; + $this->filesystem = $filesystem; parent::__construct($installer, $package_type, $exception_prefix); } @@ -60,4 +72,66 @@ public function install(array $packages) $this->do_install($packages); } + + /** + * {@inheritdoc} + */ + public function start_managing($package) + { + if (!$this->extension_manager->is_available($package)) + { + throw new runtime_exception($this->exception_prefix, 'NOT_INSTALLED', [$package]); + } + + if ($this->is_managed($package)) + { + throw new runtime_exception($this->exception_prefix, 'ALREADY_MANAGED', [$package]); + } + + $enabled = false; + if ($this->extension_manager->is_enabled($package)) + { + $enabled = true; + $this->extension_manager->disable($package); + } + + $ext_path = $this->extension_manager->get_extension_path($package); + $backup_path = rtrim($ext_path, '/') . '__backup__'; + + try + { + $this->filesystem->rename($ext_path, $backup_path); + } + catch (filesystem_exception $e) + { + throw new runtime_exception($this->exception_prefix, 'CANNOT_MANAGE_FILESYSTEM_ERROR', [$package], $e); + } + + try + { + $this->install((array) $package); + $this->filesystem->remove($backup_path); + } + catch (runtime_exception $e) + { + $this->filesystem->rename($backup_path, $ext_path); + throw new runtime_exception($this->exception_prefix, 'CANNOT_MANAGE_INSTALL_ERROR', [$package], $e); + } + catch (filesystem_exception $e) + { + throw new managed_with_clean_error_exception($this->exception_prefix, 'MANAGED_WITH_CLEAN_ERROR', [$package, $backup_path], $e); + } + + if ($enabled) + { + try + { + $this->extension_manager->enable($package); + } + catch (\Exception $e) + { + throw new managed_with_enable_error_exception($this->exception_prefix, 'MANAGED_WITH_ENABLE_ERROR', [$package], $e); + } + } + } } diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 8be61944970..94cf0c634cd 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -73,6 +73,9 @@ public function __construct($root_path, config $config = null) $this->packages_vendor_dir = $config['exts_composer_vendor_dir']; } + $this->repositories = ['http://phpbb.local/ext/phpbb/titania/composer/']; + $this->packagist = true; + $this->root_path = $root_path; } @@ -214,12 +217,18 @@ public function get_available_packages($type) { $packages = $repository->findPackages($package); $package = array_pop($packages); + + if (isset($available[$package->getName()])) + { + continue; + } + $available[$package->getName()] = ['name' => $package->getPrettyName()]; if ($package instanceof CompletePackage) { $available[$package->getName()]['description'] = $package->getDescription(); - $available[$package->getName()]['url'] = $package->getHomepage(); + $available[$package->getName()]['url'] = $package->getDistUrl();//getHomepage(); } } } @@ -236,7 +245,7 @@ public function get_available_packages($type) if ($package instanceof CompletePackage) { $available[$package->getName()]['description'] = $package->getDescription(); - $available[$package->getName()]['url'] = $package->getHomepage(); + $available[$package->getName()]['url'] = $package->getDistUrl();//getHomepage(); } } } diff --git a/phpBB/phpbb/composer/manager.php b/phpBB/phpbb/composer/manager.php index 02ca33ecb86..ed4ce6528bb 100644 --- a/phpBB/phpbb/composer/manager.php +++ b/phpBB/phpbb/composer/manager.php @@ -63,11 +63,7 @@ public function __construct(installer $installer, $package_type, $exception_pref } /** - * Installs (if necessary) a set of packages - * - * @param array $packages Packages to install. - * Each entry may be a name or an array associating a version constraint to a name - * @throws runtime_exception + * {@inheritdoc} */ public function install(array $packages) { @@ -98,11 +94,7 @@ protected function do_install($packages) } /** - * Updates or installs a set of packages - * - * @param array $packages Packages to update. - * Each entry may be a name or an array associating a version constraint to a name - * @throws runtime_exception + * {@inheritdoc} */ public function update(array $packages) { @@ -122,11 +114,7 @@ public function update(array $packages) } /** - * Removes a set of packages - * - * @param array $packages Packages to remove. - * Each entry may be a name or an array associating a version constraint to a name - * @throws runtime_exception + * {@inheritdoc} */ public function remove(array $packages) { @@ -148,10 +136,7 @@ public function remove(array $packages) } /** - * Tells whether or not a package is managed by Composer. - * - * @param string $package Package name - * @return bool + * {@inheritdoc} */ public function is_managed($package) { @@ -159,9 +144,7 @@ public function is_managed($package) } /** - * Returns the list of managed packages for the current type - * - * @return array The managed packages associated to their version. + * {@inheritdoc} */ public function get_managed_packages() { @@ -174,9 +157,7 @@ public function get_managed_packages() } /** - * Returns the list of managed packages for all phpBB types - * - * @return array The managed packages associated to their version. + * {@inheritdoc} */ public function get_all_managed_packages() { @@ -189,9 +170,7 @@ public function get_all_managed_packages() } /** - * Returns the list of available packages - * - * @return array The name of the available packages, associated to their definition. Ordered by name. + * {@inheritdoc} */ public function get_available_packages() { @@ -203,6 +182,14 @@ public function get_available_packages() return $this->available_packages; } + /** + * {@inheritdoc} + */ + public function start_managing($package) + { + throw new \phpbb\exception\runtime_exception('COMPOSER_UNSUPPORTED_OPERATION', (array) $this->package_type); + } + protected function normalize_version($packages) { $normalized_packages = []; diff --git a/phpBB/phpbb/composer/manager_interface.php b/phpBB/phpbb/composer/manager_interface.php index d4c2b9eb51a..13f9498b356 100644 --- a/phpBB/phpbb/composer/manager_interface.php +++ b/phpBB/phpbb/composer/manager_interface.php @@ -54,16 +54,34 @@ public function remove(array $packages); public function is_managed($packages); /** - * Returns the list of managed packages + * Returns the list of managed packages for the current type * * @return array The managed packages associated to their version. */ public function get_managed_packages(); + /** + * Returns the list of managed packages for all phpBB types + * + * @return array The managed packages associated to their version. + */ + public function get_all_managed_packages(); + /** * Returns the list of available packages * * @return array The name of the available packages, associated to their definition. Ordered by name. */ public function get_available_packages(); + + /** + * Start managing a manually installed package + * + * Remove a package installed manually and reinstall it using composer. + * + * @param string $package Package to manage + * + * @throws runtime_exception + */ + public function start_managing($package); } diff --git a/phpBB/phpbb/console/command/extension/start_managing.php b/phpBB/phpbb/console/command/extension/start_managing.php new file mode 100644 index 00000000000..ba21f44a70a --- /dev/null +++ b/phpBB/phpbb/console/command/extension/start_managing.php @@ -0,0 +1,84 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb\console\command\extension; + +use phpbb\composer\exception\managed_with_error_exception; +use phpbb\composer\manager; +use phpbb\composer\manager_interface; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Style\SymfonyStyle; + +class start_managing extends \phpbb\console\command\command +{ + /** + * @var manager_interface Composer extensions manager + */ + protected $manager; + + public function __construct(\phpbb\user $user, manager_interface $manager) + { + $this->manager = $manager; + + $user->add_lang('acp/extensions'); + + parent::__construct($user); + } + + /** + * Sets the command name and description + * + * @return null + */ + protected function configure() + { + $this + ->setName('extension:start-managing') + ->setDescription($this->user->lang('CLI_DESCRIPTION_EXTENSION_START_MANAGING')) + ->addArgument( + 'extension', + InputArgument::REQUIRED, + $this->user->lang('CLI_DESCRIPTION_EXTENSION_START_MANAGING')) + ; + } + + /** + * Executes the command extension:install + * + * @param InputInterface $input + * @param OutputInterface $output + * @return integer + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + $io = new SymfonyStyle($input, $output); + + $extension = $input->getArgument('extension'); + + try + { + $this->manager->start_managing($extension); + } + catch (managed_with_error_exception $e) + { + $io->warning(call_user_func_array([$this->user, 'lang'], [$e->getMessage(), $e->get_parameters()])); + return 1; + } + + $io->success('The extension ' . $extension . ' is now managed automatically.'); + + return 0; + } +} From e3fadc1fc73ae65d6503f97182455624fe5b3499 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sat, 12 Sep 2015 11:05:35 +0200 Subject: [PATCH 114/431] [ticket/11150] Display and translate composer output PHPBB3-11150 --- .../default/container/services_console.yml | 3 + phpBB/language/en/acp/common.php | 7 + phpBB/phpbb/composer/extension_manager.php | 5 +- phpBB/phpbb/composer/installer.php | 36 +-- phpBB/phpbb/composer/io/console_io.php | 217 ++++++++++++++++++ phpBB/phpbb/composer/manager.php | 18 +- phpBB/phpbb/composer/manager_interface.php | 10 +- .../console/command/extension/install.php | 18 +- .../console/command/extension/remove.php | 18 +- .../console/command/extension/update.php | 18 +- 10 files changed, 311 insertions(+), 39 deletions(-) create mode 100644 phpBB/phpbb/composer/io/console_io.php diff --git a/phpBB/config/default/container/services_console.yml b/phpBB/config/default/container/services_console.yml index a1cc599aa78..3b05ef9d465 100644 --- a/phpBB/config/default/container/services_console.yml +++ b/phpBB/config/default/container/services_console.yml @@ -154,6 +154,7 @@ services: arguments: - @user - @ext.composer.manager + - @language tags: - { name: console.command } @@ -171,6 +172,7 @@ services: arguments: - @user - @ext.composer.manager + - @language tags: - { name: console.command } @@ -188,6 +190,7 @@ services: arguments: - @user - @ext.composer.manager + - @language tags: - { name: console.command } diff --git a/phpBB/language/en/acp/common.php b/phpBB/language/en/acp/common.php index 537cc1a5d16..7f341abd073 100644 --- a/phpBB/language/en/acp/common.php +++ b/phpBB/language/en/acp/common.php @@ -242,6 +242,13 @@ 'COLOUR_SWATCH' => 'Web-safe colour swatch', 'COMPOSER_UNSUPPORTED_OPERATION' => 'Operation unsupported for the package type “%s”.', + 'COMPOSER_UPDATING_DEPENDENCIES' => 'Updating packages', + 'COMPOSER_LOADING_REPOSITORIES' => 'Loading remote packages information', + 'COMPOSER_ERROR_CONFLICT' => 'Your requirements could not be resolved to an installable set of packages.', + 'COMPOSER_REPOSITORY_UNAVAILABLE' => 'An error occurred when fetching the repository %s.', + 'COMPOSER_INSTALLING_PACKAGE' => ' - Installing %1$s (%2$s)', + 'COMPOSER_DELETING' => ' - Deleting %s', + 'COMPOSER_UPDATE_NOTHING' => 'Nothing to update', 'CONFIG_UPDATED' => 'Configuration updated successfully.', 'CRON_LOCK_ERROR' => 'Could not obtain cron lock.', diff --git a/phpBB/phpbb/composer/extension_manager.php b/phpBB/phpbb/composer/extension_manager.php index 360e2fca5b7..a86b91fffac 100644 --- a/phpBB/phpbb/composer/extension_manager.php +++ b/phpBB/phpbb/composer/extension_manager.php @@ -13,6 +13,7 @@ namespace phpbb\composer; +use Composer\IO\IOInterface; use phpbb\composer\exception\managed_with_clean_error_exception; use phpbb\composer\exception\managed_with_enable_error_exception; use phpbb\composer\exception\managed_with_error_exception; @@ -54,7 +55,7 @@ public function __construct(installer $installer, ext_manager $extension_manager /** * {@inheritdoc} */ - public function install(array $packages) + public function install(array $packages, IOInterface $io = null) { $packages = $this->normalize_version($packages); @@ -70,7 +71,7 @@ public function install(array $packages) throw new runtime_exception($this->exception_prefix, 'ALREADY_INSTALLED_MANUALLY', [implode('|', array_keys($installed_manually))]); } - $this->do_install($packages); + $this->do_install($packages, $io); } /** diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 94cf0c634cd..498fb6cdcb1 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -15,7 +15,7 @@ use Composer\Composer; use Composer\Factory; -use Composer\IO\BufferIO; +use Composer\IO\IOInterface; use Composer\IO\NullIO; use Composer\Json\JsonFile; use Composer\Package\CompletePackage; @@ -25,7 +25,6 @@ use Composer\Util\RemoteFilesystem; use phpbb\config\config; use phpbb\exception\runtime_exception; -use Symfony\Component\Console\Output\OutputInterface; /** * Class to install packages through composer while freezing core dependencies. @@ -85,19 +84,27 @@ public function __construct($root_path, config $config = null) * @param array $packages Packages to install. * Each entry may be a name or an array associating a version constraint to a name * @param array $whitelist White-listed packages (packages that can be installed/updated/removed) + * @param IOInterface $io IO object used for the output + * * @throws runtime_exception */ - public function install(array $packages, $whitelist) + public function install(array $packages, $whitelist, IOInterface $io = null) { + if (!$io) + { + $io = new NullIO(); + } + $this->generate_ext_json_file($packages); $original_vendor_dir = getenv('COMPOSER_VENDOR_DIR'); putenv('COMPOSER_VENDOR_DIR=' . $this->root_path . $this->packages_vendor_dir); - $io = new BufferIO('', OutputInterface::VERBOSITY_DEBUG); $composer = Factory::create($io, $this->get_composer_ext_json_filename(), false); $install = \Composer\Installer::create($io, $composer); + $composer->getDownloadManager()->setOutputProgress(false); + $install ->setVerbose(true) ->setPreferSource(false) @@ -112,17 +119,12 @@ public function install(array $packages, $whitelist) ->setRunScripts(false) ->setDryRun(false); + $result = 0; try { - $install->run(); - $output = $io->getOutput(); - $error_pos = strpos($output, 'Your requirements could not be resolved to an installable set of packages.'); - - if ($error_pos) - { - // TODO Extract the precise error and use language string - throw new \RuntimeException(substr($output, $error_pos)); - } + $result = $install->run(); + //$output = $io->getOutput(); + //$error_pos = strpos($output, 'Your requirements could not be resolved to an installable set of packages.'); } catch (\Exception $e) { @@ -132,6 +134,11 @@ public function install(array $packages, $whitelist) { putenv('COMPOSER_VENDOR_DIR=' . $original_vendor_dir); } + + if ($result !== 0) + { + throw new runtime_exception($io->get_composer_error(), []); + } } /** @@ -154,7 +161,7 @@ public function get_installed_packages($types) $composer = Factory::create($io, $this->get_composer_ext_json_filename(), false); $installed = []; - $packages = $composer->getRepositoryManager()->getLocalRepository()->getCanonicalPackages(); + $packages = $composer->getPackage()->getRequires();//$composer->getRepositoryManager()->getLocalRepository()->getCanonicalPackages(); foreach ($packages as $package) { @@ -282,6 +289,7 @@ protected function generate_ext_json_file(array $packages) $packages), 'replace' => $core_packages, 'repositories' => $this->get_composer_repositories(), + 'minimum-stability' => 'dev', ]; $json_file = new JsonFile($this->get_composer_ext_json_filename()); diff --git a/phpBB/phpbb/composer/io/console_io.php b/phpBB/phpbb/composer/io/console_io.php new file mode 100644 index 00000000000..bf1754d4c01 --- /dev/null +++ b/phpBB/phpbb/composer/io/console_io.php @@ -0,0 +1,217 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\composer\io; + +use Composer\IO\ConsoleIO; +use phpbb\language\language; +use Symfony\Component\Console\Helper\HelperSet; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class console_io extends ConsoleIO +{ + /** + * @var language + */ + protected $language; + + /** + * @var array + */ + protected $composer_error; + + /** + * Constructor. + * + * @param InputInterface $input The input instance + * @param OutputInterface $output The output instance + * @param HelperSet $helperSet The helperSet instance + */ + public function __construct(InputInterface $input, OutputInterface $output, HelperSet $helperSet, language $language) + { + $this->language = $language; + + parent::__construct($input, $output, $helperSet); + } + + /** + * {@inheritdoc} + */ + public function write($messages, $newline = true) + { + $messages = (array) $messages; + $translated_messages = []; + + foreach ($messages as $message) + { + $lang_key = $message; + $parameters = []; + $level = 0; + + $message = trim(strip_tags($message), "\n\r"); + + if (strpos($message, 'Deleting ') === 0) + { + $elements = explode(' ', $message); + $lang_key = 'COMPOSER_DELETING'; + $parameters = [$elements[1]]; + } + + //$translated_message = $this->language->lang_array($lang_key, $parameters); + $translated_message = call_user_func_array([$this->language, 'lang'], array_merge((array)$lang_key, $parameters)); + + switch ($level) + { + case 1: + $translated_message = '' . $translated_message . ''; + break; + case 2: + $translated_message = '' . $translated_message . ''; + break; + case 3: + $translated_message = '' . $translated_message . ''; + break; + case 4: + $translated_message = '' . $translated_message . ''; + break; + } + + $translated_messages[] = $translated_message; + } + + parent::write($translated_messages, $newline); + } + + /** + * {@inheritdoc} + */ + public function writeError($messages, $newline = true) + { + $messages = (array) $messages; + $translated_messages = []; + + foreach ($messages as $message) + { + $lang_key = $message; + $parameters = []; + $level = 0; + + $message = trim(strip_tags($message), "\n\r"); + + if (strpos($message, ' Problem ') === 0) + { + if ($this->output->getVerbosity() < OutputInterface::VERBOSITY_VERBOSE) + { + continue; + } + + $lang_key = "\n" . $message . "\n"; + $level = 4; + } + else if ($message === 'Updating dependencies') + { + $lang_key = 'COMPOSER_UPDATING_DEPENDENCIES'; + $level = 1; + } + else if ($message === 'Loading composer repositories with package information') + { + $lang_key = 'COMPOSER_LOADING_REPOSITORIES'; + $level = 1; + } + else if ($message === 'Your requirements could not be resolved to an installable set of packages.') + { + $this->composer_error[] = ['COMPOSER_ERROR_CONFLICT', []]; + continue; + } + else if (strpos($message, 'could not be fully loaded, package information was loaded from the local cache and may be out of date') !== false) + { + $end_repo = strpos($message, 'could not be fully loaded, package information was loaded from the local cache and may be out of date'); + $repo = substr($message, 0, $end_repo - 1); + + $lang_key = 'COMPOSER_REPOSITORY_UNAVAILABLE'; + $parameters = [$repo]; + $level = 3; + } + else if (strpos($message, 'file could not be downloaded') !== false) + { + continue; + } + else if (strpos($message, ' - Installing ') === 0) + { + $elements = explode(' ', $message); + $lang_key = 'COMPOSER_INSTALLING_PACKAGE'; + $parameters = [$elements[4], trim($elements[5], '()')]; + } + else if ($message === 'Nothing to install or update') + { + $lang_key = 'COMPOSER_UPDATE_NOTHING'; + $level = 3; + } + else if ($message === ' Downloading') + { + continue; + } + else if ($message === ' Loading from cache') + { + continue; + } + else if ($message === 'Writing lock file') + { + continue; + } + else if (empty($message)) + { + continue; + } + + //$translated_message = $this->language->lang_array($lang_key, $parameters); + $translated_message = call_user_func_array([$this->language, 'lang'], array_merge((array)$lang_key, $parameters)); + + switch ($level) + { + case 1: + $translated_message = '' . $translated_message . ''; + break; + case 2: + $translated_message = '' . $translated_message . ''; + break; + case 3: + $translated_message = '' . $translated_message . ''; + break; + case 4: + $translated_message = '' . $translated_message . ''; + break; + } + + $translated_messages[] = $translated_message; + } + + parent::writeError($translated_messages, $newline); + } + + public function get_composer_error() + { + $error = ''; + foreach ($this->composer_error as $error_line) + { + // $error .= $this->language->lang_array($error_line[0], $error_line[1]); + $error .= call_user_func_array([$this->language, 'lang'], array_merge((array)$error_line[0], $error_line[1])); + $error .= "\n"; + } + + $this->composer_error = []; + + return $error; + } +} diff --git a/phpBB/phpbb/composer/manager.php b/phpBB/phpbb/composer/manager.php index ed4ce6528bb..5d942c11d06 100644 --- a/phpBB/phpbb/composer/manager.php +++ b/phpBB/phpbb/composer/manager.php @@ -13,6 +13,7 @@ namespace phpbb\composer; +use Composer\IO\IOInterface; use phpbb\composer\exception\runtime_exception; /** @@ -65,7 +66,7 @@ public function __construct(installer $installer, $package_type, $exception_pref /** * {@inheritdoc} */ - public function install(array $packages) + public function install(array $packages, IOInterface $io = null) { $packages = $this->normalize_version($packages); @@ -75,20 +76,21 @@ public function install(array $packages) throw new runtime_exception($this->exception_prefix, 'ALREADY_INSTALLED', [implode('|', $already_managed)]); } - $this->do_install($packages); + $this->do_install($packages, $io); } /** * Really install the packages. * * @param array $packages Packages to install. + * @param IOInterface $io IO object used for the output */ - protected function do_install($packages) + protected function do_install($packages, IOInterface $io = null) { $managed_packages = array_merge($this->get_all_managed_packages(), $packages); ksort($managed_packages); - $this->installer->install($managed_packages, array_keys($packages)); + $this->installer->install($managed_packages, array_keys($packages), $io); $this->managed_packages = null; } @@ -96,7 +98,7 @@ protected function do_install($packages) /** * {@inheritdoc} */ - public function update(array $packages) + public function update(array $packages, IOInterface $io = null) { $packages = $this->normalize_version($packages); @@ -110,13 +112,13 @@ public function update(array $packages) $managed_packages = array_merge($this->get_all_managed_packages(), $packages); ksort($managed_packages); - $this->installer->install($managed_packages, array_keys($packages)); + $this->installer->install($managed_packages, array_keys($packages), $io); } /** * {@inheritdoc} */ - public function remove(array $packages) + public function remove(array $packages, IOInterface $io = null) { $packages = $this->normalize_version($packages); @@ -130,7 +132,7 @@ public function remove(array $packages) $managed_packages = array_diff_key($this->get_all_managed_packages(), $packages); ksort($managed_packages); - $this->installer->install($managed_packages, array_keys($packages)); + $this->installer->install($managed_packages, array_keys($packages), $io); $this->managed_packages = null; } diff --git a/phpBB/phpbb/composer/manager_interface.php b/phpBB/phpbb/composer/manager_interface.php index 13f9498b356..b5d0177342d 100644 --- a/phpBB/phpbb/composer/manager_interface.php +++ b/phpBB/phpbb/composer/manager_interface.php @@ -6,6 +6,7 @@ * Time: 23:12 */ namespace phpbb\composer; +use Composer\IO\IOInterface; use phpbb\composer\exception\runtime_exception; @@ -19,30 +20,33 @@ interface manager_interface * * @param array $packages Packages to install. * Each entry may be a name or an array associating a version constraint to a name + * @param IOInterface $io IO object used for the output * * @throws runtime_exception */ - public function install(array $packages); + public function install(array $packages, IOInterface $io = null); /** * Updates or installs a set of packages * * @param array $packages Packages to update. * Each entry may be a name or an array associating a version constraint to a name + * @param IOInterface $io IO object used for the output * * @throws runtime_exception */ - public function update(array $packages); + public function update(array $packages, IOInterface $io = null); /** * Removes a set of packages * * @param array $packages Packages to remove. * Each entry may be a name or an array associating a version constraint to a name + * @param IOInterface $io IO object used for the output * * @throws runtime_exception */ - public function remove(array $packages); + public function remove(array $packages, IOInterface $io = null); /** * Tells whether or not a package is managed by Composer. diff --git a/phpBB/phpbb/console/command/extension/install.php b/phpBB/phpbb/console/command/extension/install.php index 4d83fe2cefc..aa9d5a68679 100644 --- a/phpBB/phpbb/console/command/extension/install.php +++ b/phpBB/phpbb/console/command/extension/install.php @@ -13,8 +13,10 @@ namespace phpbb\console\command\extension; -use phpbb\composer\manager; +use phpbb\composer\io\console_io; use phpbb\composer\manager_interface; +use phpbb\language\language; +use Symfony\Component\Console\Formatter\OutputFormatterStyle; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; @@ -27,9 +29,15 @@ class install extends \phpbb\console\command\command */ protected $manager; - public function __construct(\phpbb\user $user, manager_interface $manager) + /** + * @var \phpbb\language\language + */ + protected $language; + + public function __construct(\phpbb\user $user, manager_interface $manager, language $language) { $this->manager = $manager; + $this->language = $language; parent::__construct($user); } @@ -60,11 +68,13 @@ protected function configure() */ protected function execute(InputInterface $input, OutputInterface $output) { - $io = new SymfonyStyle($input, $output); + $output->getFormatter()->setStyle('warning', new OutputFormatterStyle('black', 'yellow')); + $io = new SymfonyStyle($input, $output); + $composer_io = new console_io($input, $output, $this->getHelperSet(), $this->language); $extensions = $input->getArgument('extensions'); - $this->manager->install($extensions); + $this->manager->install($extensions, $composer_io); $io->success('All extensions installed'); diff --git a/phpBB/phpbb/console/command/extension/remove.php b/phpBB/phpbb/console/command/extension/remove.php index 16a3ad263ff..d1f59dec5c2 100644 --- a/phpBB/phpbb/console/command/extension/remove.php +++ b/phpBB/phpbb/console/command/extension/remove.php @@ -13,8 +13,10 @@ namespace phpbb\console\command\extension; -use phpbb\composer\manager; +use phpbb\composer\io\console_io; use phpbb\composer\manager_interface; +use phpbb\language\language; +use Symfony\Component\Console\Formatter\OutputFormatterStyle; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; @@ -27,9 +29,15 @@ class remove extends \phpbb\console\command\command */ protected $manager; - public function __construct(\phpbb\user $user, manager_interface $manager) + /** + * @var \phpbb\language\language + */ + protected $language; + + public function __construct(\phpbb\user $user, manager_interface $manager, language $language) { $this->manager = $manager; + $this->language = $language; parent::__construct($user); } @@ -60,11 +68,13 @@ protected function configure() */ protected function execute(InputInterface $input, OutputInterface $output) { - $io = new SymfonyStyle($input, $output); + $output->getFormatter()->setStyle('warning', new OutputFormatterStyle('black', 'yellow')); + $io = new SymfonyStyle($input, $output); + $composer_io = new console_io($input, $output, $this->getHelperSet(), $this->language); $extensions = $input->getArgument('extensions'); - $this->manager->remove($extensions); + $this->manager->remove($extensions, $composer_io); $io->success('All extensions removed'); diff --git a/phpBB/phpbb/console/command/extension/update.php b/phpBB/phpbb/console/command/extension/update.php index e3f89359854..7a38294ed40 100644 --- a/phpBB/phpbb/console/command/extension/update.php +++ b/phpBB/phpbb/console/command/extension/update.php @@ -13,8 +13,10 @@ namespace phpbb\console\command\extension; -use phpbb\composer\manager; +use phpbb\composer\io\console_io; use phpbb\composer\manager_interface; +use phpbb\language\language; +use Symfony\Component\Console\Formatter\OutputFormatterStyle; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; @@ -27,9 +29,15 @@ class update extends \phpbb\console\command\command */ protected $manager; - public function __construct(\phpbb\user $user, manager_interface $manager) + /** + * @var \phpbb\language\language + */ + protected $language; + + public function __construct(\phpbb\user $user, manager_interface $manager, language $language) { $this->manager = $manager; + $this->language = $language; parent::__construct($user); } @@ -60,11 +68,13 @@ protected function configure() */ protected function execute(InputInterface $input, OutputInterface $output) { - $io = new SymfonyStyle($input, $output); + $output->getFormatter()->setStyle('warning', new OutputFormatterStyle('black', 'yellow')); + $io = new SymfonyStyle($input, $output); + $composer_io = new console_io($input, $output, $this->getHelperSet(), $this->language); $extensions = $input->getArgument('extensions'); - $this->manager->update($extensions); + $this->manager->update($extensions, $composer_io); $io->success('All extensions updated'); From 8a1ca4375e752ca764e8dbcb156f744efecafcf2 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sat, 12 Sep 2015 16:05:19 +0200 Subject: [PATCH 115/431] [ticket/11150] Preserve original requirements and avoid finally PHPBB3-11150 --- phpBB/phpbb/composer/installer.php | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 498fb6cdcb1..72378cfa736 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -119,20 +119,19 @@ public function install(array $packages, $whitelist, IOInterface $io = null) ->setRunScripts(false) ->setDryRun(false); - $result = 0; try { $result = $install->run(); + + putenv('COMPOSER_VENDOR_DIR=' . $original_vendor_dir); //$output = $io->getOutput(); //$error_pos = strpos($output, 'Your requirements could not be resolved to an installable set of packages.'); } catch (\Exception $e) { - throw new runtime_exception('Cannot install packages', [], $e); - } - finally - { + putenv('COMPOSER_VENDOR_DIR=' . $original_vendor_dir); + throw new runtime_exception('Cannot install packages', [], $e); } if ($result !== 0) @@ -161,25 +160,24 @@ public function get_installed_packages($types) $composer = Factory::create($io, $this->get_composer_ext_json_filename(), false); $installed = []; - $packages = $composer->getPackage()->getRequires();//$composer->getRepositoryManager()->getLocalRepository()->getCanonicalPackages(); + $required_links = $composer->getPackage()->getRequires(); + $installed_packages = $composer->getRepositoryManager()->getLocalRepository()->getCanonicalPackages(); - foreach ($packages as $package) + foreach ($installed_packages as $package) { - if (in_array($package->getType(), $types, true)) + if (array_key_exists($package->getName(), $required_links) && in_array($package->getType(), $types, true)) { - $installed[$package->getName()] = $package->getPrettyVersion(); + $installed[$package->getName()] = $required_links[$package->getName()]->getPrettyConstraint(); } } + putenv('COMPOSER_VENDOR_DIR=' . $original_vendor_dir); return $installed; } catch (\Exception $e) - { - return []; - } - finally { putenv('COMPOSER_VENDOR_DIR=' . $original_vendor_dir); + return []; } } From 8b1284594ba8fac8e9247d3eb1af100c4b06e881 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sat, 12 Sep 2015 16:55:03 +0200 Subject: [PATCH 116/431] [ticket/11150] Use a trait to translate composer and introduce web_io PHPBB3-11150 --- phpBB/phpbb/composer/installer.php | 1 - phpBB/phpbb/composer/io/console_io.php | 180 +--------------- .../composer/io/translate_composer_trait.php | 200 ++++++++++++++++++ phpBB/phpbb/composer/io/web_io.php | 39 ++++ 4 files changed, 240 insertions(+), 180 deletions(-) create mode 100644 phpBB/phpbb/composer/io/translate_composer_trait.php create mode 100644 phpBB/phpbb/composer/io/web_io.php diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 72378cfa736..7731d5c0747 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -287,7 +287,6 @@ protected function generate_ext_json_file(array $packages) $packages), 'replace' => $core_packages, 'repositories' => $this->get_composer_repositories(), - 'minimum-stability' => 'dev', ]; $json_file = new JsonFile($this->get_composer_ext_json_filename()); diff --git a/phpBB/phpbb/composer/io/console_io.php b/phpBB/phpbb/composer/io/console_io.php index bf1754d4c01..33ac77ba4e9 100644 --- a/phpBB/phpbb/composer/io/console_io.php +++ b/phpBB/phpbb/composer/io/console_io.php @@ -21,15 +21,7 @@ class console_io extends ConsoleIO { - /** - * @var language - */ - protected $language; - - /** - * @var array - */ - protected $composer_error; + use translate_composer_trait; /** * Constructor. @@ -44,174 +36,4 @@ public function __construct(InputInterface $input, OutputInterface $output, Help parent::__construct($input, $output, $helperSet); } - - /** - * {@inheritdoc} - */ - public function write($messages, $newline = true) - { - $messages = (array) $messages; - $translated_messages = []; - - foreach ($messages as $message) - { - $lang_key = $message; - $parameters = []; - $level = 0; - - $message = trim(strip_tags($message), "\n\r"); - - if (strpos($message, 'Deleting ') === 0) - { - $elements = explode(' ', $message); - $lang_key = 'COMPOSER_DELETING'; - $parameters = [$elements[1]]; - } - - //$translated_message = $this->language->lang_array($lang_key, $parameters); - $translated_message = call_user_func_array([$this->language, 'lang'], array_merge((array)$lang_key, $parameters)); - - switch ($level) - { - case 1: - $translated_message = '' . $translated_message . ''; - break; - case 2: - $translated_message = '' . $translated_message . ''; - break; - case 3: - $translated_message = '' . $translated_message . ''; - break; - case 4: - $translated_message = '' . $translated_message . ''; - break; - } - - $translated_messages[] = $translated_message; - } - - parent::write($translated_messages, $newline); - } - - /** - * {@inheritdoc} - */ - public function writeError($messages, $newline = true) - { - $messages = (array) $messages; - $translated_messages = []; - - foreach ($messages as $message) - { - $lang_key = $message; - $parameters = []; - $level = 0; - - $message = trim(strip_tags($message), "\n\r"); - - if (strpos($message, ' Problem ') === 0) - { - if ($this->output->getVerbosity() < OutputInterface::VERBOSITY_VERBOSE) - { - continue; - } - - $lang_key = "\n" . $message . "\n"; - $level = 4; - } - else if ($message === 'Updating dependencies') - { - $lang_key = 'COMPOSER_UPDATING_DEPENDENCIES'; - $level = 1; - } - else if ($message === 'Loading composer repositories with package information') - { - $lang_key = 'COMPOSER_LOADING_REPOSITORIES'; - $level = 1; - } - else if ($message === 'Your requirements could not be resolved to an installable set of packages.') - { - $this->composer_error[] = ['COMPOSER_ERROR_CONFLICT', []]; - continue; - } - else if (strpos($message, 'could not be fully loaded, package information was loaded from the local cache and may be out of date') !== false) - { - $end_repo = strpos($message, 'could not be fully loaded, package information was loaded from the local cache and may be out of date'); - $repo = substr($message, 0, $end_repo - 1); - - $lang_key = 'COMPOSER_REPOSITORY_UNAVAILABLE'; - $parameters = [$repo]; - $level = 3; - } - else if (strpos($message, 'file could not be downloaded') !== false) - { - continue; - } - else if (strpos($message, ' - Installing ') === 0) - { - $elements = explode(' ', $message); - $lang_key = 'COMPOSER_INSTALLING_PACKAGE'; - $parameters = [$elements[4], trim($elements[5], '()')]; - } - else if ($message === 'Nothing to install or update') - { - $lang_key = 'COMPOSER_UPDATE_NOTHING'; - $level = 3; - } - else if ($message === ' Downloading') - { - continue; - } - else if ($message === ' Loading from cache') - { - continue; - } - else if ($message === 'Writing lock file') - { - continue; - } - else if (empty($message)) - { - continue; - } - - //$translated_message = $this->language->lang_array($lang_key, $parameters); - $translated_message = call_user_func_array([$this->language, 'lang'], array_merge((array)$lang_key, $parameters)); - - switch ($level) - { - case 1: - $translated_message = '' . $translated_message . ''; - break; - case 2: - $translated_message = '' . $translated_message . ''; - break; - case 3: - $translated_message = '' . $translated_message . ''; - break; - case 4: - $translated_message = '' . $translated_message . ''; - break; - } - - $translated_messages[] = $translated_message; - } - - parent::writeError($translated_messages, $newline); - } - - public function get_composer_error() - { - $error = ''; - foreach ($this->composer_error as $error_line) - { - // $error .= $this->language->lang_array($error_line[0], $error_line[1]); - $error .= call_user_func_array([$this->language, 'lang'], array_merge((array)$error_line[0], $error_line[1])); - $error .= "\n"; - } - - $this->composer_error = []; - - return $error; - } } diff --git a/phpBB/phpbb/composer/io/translate_composer_trait.php b/phpBB/phpbb/composer/io/translate_composer_trait.php new file mode 100644 index 00000000000..376ef28a80e --- /dev/null +++ b/phpBB/phpbb/composer/io/translate_composer_trait.php @@ -0,0 +1,200 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\composer\io; + +use phpbb\language\language; +use Symfony\Component\Console\Output\OutputInterface; + +trait translate_composer_trait +{ + /** + * @var language + */ + protected $language; + + /** + * @var array + */ + protected $composer_error; + + /** + * {@inheritdoc} + */ + public function write($messages, $newline = true) + { + $messages = (array) $messages; + $translated_messages = []; + + foreach ($messages as $message) + { + $lang_key = $message; + $parameters = []; + $level = 0; + + $message = trim(strip_tags($message), "\n\r"); + + if (strpos($message, 'Deleting ') === 0) + { + $elements = explode(' ', $message); + $lang_key = 'COMPOSER_DELETING'; + $parameters = [$elements[1]]; + } + + //$translated_message = $this->language->lang_array($lang_key, $parameters); + $translated_message = call_user_func_array([$this->language, 'lang'], array_merge((array)$lang_key, $parameters)); + + switch ($level) + { + case 1: + $translated_message = '' . $translated_message . ''; + break; + case 2: + $translated_message = '' . $translated_message . ''; + break; + case 3: + $translated_message = '' . $translated_message . ''; + break; + case 4: + $translated_message = '' . $translated_message . ''; + break; + } + + $translated_messages[] = $translated_message; + } + + parent::write($translated_messages, $newline); + } + + /** + * {@inheritdoc} + */ + public function writeError($messages, $newline = true) + { + $messages = (array) $messages; + $translated_messages = []; + + foreach ($messages as $message) + { + $lang_key = $message; + $parameters = []; + $level = 0; + + $message = trim(strip_tags($message), "\n\r"); + + if (strpos($message, ' Problem ') === 0) + { + if ($this->output->getVerbosity() < OutputInterface::VERBOSITY_VERBOSE) + { + continue; + } + + $lang_key = "\n" . $message . "\n"; + $level = 4; + } + else if ($message === 'Updating dependencies') + { + $lang_key = 'COMPOSER_UPDATING_DEPENDENCIES'; + $level = 1; + } + else if ($message === 'Loading composer repositories with package information') + { + $lang_key = 'COMPOSER_LOADING_REPOSITORIES'; + $level = 1; + } + else if ($message === 'Your requirements could not be resolved to an installable set of packages.') + { + $this->composer_error[] = ['COMPOSER_ERROR_CONFLICT', []]; + continue; + } + else if (strpos($message, 'could not be fully loaded, package information was loaded from the local cache and may be out of date') !== false) + { + $end_repo = strpos($message, 'could not be fully loaded, package information was loaded from the local cache and may be out of date'); + $repo = substr($message, 0, $end_repo - 1); + + $lang_key = 'COMPOSER_REPOSITORY_UNAVAILABLE'; + $parameters = [$repo]; + $level = 3; + } + else if (strpos($message, 'file could not be downloaded') !== false) + { + continue; + } + else if (strpos($message, ' - Installing ') === 0) + { + $elements = explode(' ', $message); + $lang_key = 'COMPOSER_INSTALLING_PACKAGE'; + $parameters = [$elements[4], trim($elements[5], '()')]; + } + else if ($message === 'Nothing to install or update') + { + $lang_key = 'COMPOSER_UPDATE_NOTHING'; + $level = 3; + } + else if ($message === ' Downloading') + { + continue; + } + else if ($message === ' Loading from cache') + { + continue; + } + else if ($message === 'Writing lock file') + { + continue; + } + else if (empty($message)) + { + continue; + } + + //$translated_message = $this->language->lang_array($lang_key, $parameters); + $translated_message = call_user_func_array([$this->language, 'lang'], array_merge((array)$lang_key, $parameters)); + + switch ($level) + { + case 1: + $translated_message = '' . $translated_message . ''; + break; + case 2: + $translated_message = '' . $translated_message . ''; + break; + case 3: + $translated_message = '' . $translated_message . ''; + break; + case 4: + $translated_message = '' . $translated_message . ''; + break; + } + + $translated_messages[] = $translated_message; + } + + parent::writeError($translated_messages, $newline); + } + + public function get_composer_error() + { + $error = ''; + foreach ($this->composer_error as $error_line) + { + // $error .= $this->language->lang_array($error_line[0], $error_line[1]); + $error .= call_user_func_array([$this->language, 'lang'], array_merge((array)$error_line[0], $error_line[1])); + $error .= "\n"; + } + + $this->composer_error = []; + + return $error; + } +} diff --git a/phpBB/phpbb/composer/io/web_io.php b/phpBB/phpbb/composer/io/web_io.php new file mode 100644 index 00000000000..9e8aa6ec765 --- /dev/null +++ b/phpBB/phpbb/composer/io/web_io.php @@ -0,0 +1,39 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\composer\io; + +use Composer\IO\BufferIO; +use phpbb\language\language; +use Symfony\Component\Console\Helper\HelperSet; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class web_io extends BufferIO +{ + use translate_composer_trait; + + /** + * Constructor. + * + * @param InputInterface $input The input instance + * @param OutputInterface $output The output instance + * @param HelperSet $helperSet The helperSet instance + */ + public function __construct(InputInterface $input, OutputInterface $output, HelperSet $helperSet, language $language) + { + $this->language = $language; + + parent::__construct($input, $output, $helperSet); + } +} From c49cd29e969364ea0dfeeb5c78c131562830cbe9 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sat, 12 Sep 2015 17:07:28 +0200 Subject: [PATCH 117/431] [ticket/11150] Cache the list of available packages for 24 hours PHPBB3-11150 --- .../default/container/services_extensions.yml | 3 +++ phpBB/phpbb/composer/extension_manager.php | 16 +++++++------ phpBB/phpbb/composer/installer.php | 6 ++--- phpBB/phpbb/composer/manager.php | 23 +++++++++++++++---- 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/phpBB/config/default/container/services_extensions.yml b/phpBB/config/default/container/services_extensions.yml index 9e6a9fc0eca..77ff0d2ab99 100644 --- a/phpBB/config/default/container/services_extensions.yml +++ b/phpBB/config/default/container/services_extensions.yml @@ -21,6 +21,7 @@ services: class: phpbb\composer\extension_manager arguments: - @ext.composer.installer + - @cache.driver - @ext.manager - @filesystem - phpbb-extension @@ -30,6 +31,7 @@ services: class: phpbb\composer\manager arguments: - @ext.composer.installer + - @cache.driver - phpbb-style - STYLES_ @@ -37,5 +39,6 @@ services: class: phpbb\composer\manager arguments: - @ext.composer.installer + - @cache.driver - phpbb-language - LANGUAGES_ diff --git a/phpBB/phpbb/composer/extension_manager.php b/phpBB/phpbb/composer/extension_manager.php index a86b91fffac..04c0af666fe 100644 --- a/phpBB/phpbb/composer/extension_manager.php +++ b/phpBB/phpbb/composer/extension_manager.php @@ -14,6 +14,7 @@ namespace phpbb\composer; use Composer\IO\IOInterface; +use phpbb\cache\driver\driver_interface; use phpbb\composer\exception\managed_with_clean_error_exception; use phpbb\composer\exception\managed_with_enable_error_exception; use phpbb\composer\exception\managed_with_error_exception; @@ -38,18 +39,19 @@ class extension_manager extends manager protected $filesystem; /** - * @param installer $installer Installer object - * @param ext_manager $extension_manager phpBB extension manager - * @param filesystem $filesystem Filesystem object - * @param string $package_type Composer type of managed packages - * @param string $exception_prefix Exception prefix to use + * @param installer $installer Installer object + * @param driver_interface $cache Cache object + * @param ext_manager $extension_manager phpBB extension manager + * @param filesystem $filesystem Filesystem object + * @param string $package_type Composer type of managed packages + * @param string $exception_prefix Exception prefix to use */ - public function __construct(installer $installer, ext_manager $extension_manager, filesystem $filesystem, $package_type, $exception_prefix) + public function __construct(installer $installer, driver_interface $cache, ext_manager $extension_manager, filesystem $filesystem, $package_type, $exception_prefix) { $this->extension_manager = $extension_manager; $this->filesystem = $filesystem; - parent::__construct($installer, $package_type, $exception_prefix); + parent::__construct($installer, $cache, $package_type, $exception_prefix); } /** diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 7731d5c0747..73d90c66586 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -233,7 +233,7 @@ public function get_available_packages($type) if ($package instanceof CompletePackage) { $available[$package->getName()]['description'] = $package->getDescription(); - $available[$package->getName()]['url'] = $package->getDistUrl();//getHomepage(); + $available[$package->getName()]['url'] = $package->getHomepage(); } } } @@ -245,12 +245,12 @@ public function get_available_packages($type) { if ($package->getType() === $type) { - $available[$package->getName()] = ['name' => $package]; + $available[$package->getName()] = ['name' => $package->getPrettyName()]; if ($package instanceof CompletePackage) { $available[$package->getName()]['description'] = $package->getDescription(); - $available[$package->getName()]['url'] = $package->getDistUrl();//getHomepage(); + $available[$package->getName()]['url'] = $package->getHomepage(); } } } diff --git a/phpBB/phpbb/composer/manager.php b/phpBB/phpbb/composer/manager.php index 5d942c11d06..f05fec49576 100644 --- a/phpBB/phpbb/composer/manager.php +++ b/phpBB/phpbb/composer/manager.php @@ -14,6 +14,7 @@ namespace phpbb\composer; use Composer\IO\IOInterface; +use phpbb\cache\driver\driver_interface; use phpbb\composer\exception\runtime_exception; /** @@ -26,6 +27,11 @@ class manager implements manager_interface */ protected $installer; + /** + * @var driver_interface Cache instance + */ + protected $cache; + /** * @var string Type of packages (phpbb-packages per example) */ @@ -52,13 +58,15 @@ class manager implements manager_interface private $available_packages; /** - * @param installer $installer Installer object - * @param string $package_type Composer type of managed packages - * @param string $exception_prefix Exception prefix to use + * @param installer $installer Installer object + * @param driver_interface $cache Cache object + * @param string $package_type Composer type of managed packages + * @param string $exception_prefix Exception prefix to use */ - public function __construct(installer $installer, $package_type, $exception_prefix) + public function __construct(installer $installer, driver_interface $cache, $package_type, $exception_prefix) { $this->installer = $installer; + $this->cache = $cache; $this->package_type = $package_type; $this->exception_prefix = $exception_prefix; } @@ -178,7 +186,12 @@ public function get_available_packages() { if ($this->available_packages === null) { - $this->available_packages = $this->installer->get_available_packages($this->package_type); + $this->available_packages = $this->cache->get('_composer_' . $this->package_type . '_available'); + if ($this->available_packages === false) + { + $this->available_packages = $this->installer->get_available_packages($this->package_type); + $this->cache->put('_composer_' . $this->package_type . '_available', $this->available_packages, 24*60*60); + } } return $this->available_packages; From adb8d30d98d56d123692066cbd9f0ba63326f0d7 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sun, 13 Sep 2015 10:48:30 +0200 Subject: [PATCH 118/431] [ticket/11150] Add ACP gallery PHPBB3-11150 --- phpBB/adm/style/acp_ext_gallery.html | 57 ++++++ phpBB/includes/acp/acp_extensions.php | 38 +++- phpBB/includes/acp/info/acp_extensions.php | 1 + phpBB/language/en/acp/common.php | 1 + phpBB/phpbb/composer/installer.php | 166 ++++++++++++++---- phpBB/phpbb/composer/manager.php | 2 +- .../command/extension/list_available.php | 3 +- .../data/v320/extensions_composer.php | 8 + 8 files changed, 236 insertions(+), 40 deletions(-) create mode 100644 phpBB/adm/style/acp_ext_gallery.html diff --git a/phpBB/adm/style/acp_ext_gallery.html b/phpBB/adm/style/acp_ext_gallery.html new file mode 100644 index 00000000000..9be59429f6b --- /dev/null +++ b/phpBB/adm/style/acp_ext_gallery.html @@ -0,0 +1,57 @@ + + + + +

      {{lang( 'EXTENSIONS_ADMIN') }}

      + +

      {{lang( 'EXTENSIONS_EXPLAIN') }}

      + +
      + {{ lang('BROWSE_EXTENSIONS_DATABASE') }}{{ lang('SETTINGS') }} +
      + + + +
      + {{ lang('EXTENSIONS_GALLERY_SETTINGS') }} +
      +
      +
      + + +
      +
      + +

      +   + + + {{ S_FORM_TOKEN }} +

      +
      + + + + + + + + + + + + + {% for extension in extensions %} + + + + + + {% endfor %} + +
      {{ lang("EXTENSION_NAME") }}{{ lang("VERSION") }}{{ lang("DESCRIPTION") }}
      + {{ extension.name }}
      + {{ lang('DETAILS') }}{{ lang('INSTALL') }} +
      {{ extension.version }}{{ extension.description }}
      + + diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index c08674841c0..01e0b5e245f 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -28,10 +28,13 @@ class acp_extensions var $tpl_name; var $page_title; + private $db; private $config; private $template; private $user; private $log; + + /** @var \phpbb\request\request */ private $request; private $phpbb_dispatcher; private $ext_manager; @@ -39,8 +42,10 @@ class acp_extensions function main() { // Start the page - global $config, $user, $template, $request, $phpbb_extension_manager, $phpbb_root_path, $phpbb_log, $phpbb_dispatcher; + global $config, $user, $template, $request, $phpbb_extension_manager, $db, $phpbb_root_path, $phpbb_log, $phpbb_dispatcher; + + $this->db = $db; $this->config = $config; $this->template = $template; $this->user = $user; @@ -49,7 +54,22 @@ function main() $this->phpbb_dispatcher = $phpbb_dispatcher; $this->ext_manager = $phpbb_extension_manager; - $this->user->add_lang(array('install', 'acp/extensions', 'migrator')); + $this->user->add_lang(['install', 'acp/extensions', 'migrator']); + + switch ($mode) + { + case 'gallery': + $this->gallery_mode(); + break; + default: + $this->main_mode(); + break; + } + } + + public function main_mode() + { + global $phpbb_extension_manager, $phpbb_root_path; $this->page_title = 'ACP_EXTENSIONS'; @@ -381,6 +401,20 @@ function main() $this->tpl_name = $tpl_name; } + public function gallery_mode() + { + global $phpbb_container; + + /** @var \phpbb\composer\extension_manager $manager */ + $manager = $phpbb_container->get('ext.composer.manager'); + $this->page_title = 'ACP_EXTENSIONS_GALLERY'; + $this->tpl_name = 'acp_ext_gallery'; + + $this->request->enable_super_globals(); + $this->template->assign_var('extensions', $manager->get_available_packages()); + $this->request->disable_super_globals(); + } + /** * Lists all the enabled extensions and dumps to the template * diff --git a/phpBB/includes/acp/info/acp_extensions.php b/phpBB/includes/acp/info/acp_extensions.php index 9adcd543b92..5d9e420fda8 100644 --- a/phpBB/includes/acp/info/acp_extensions.php +++ b/phpBB/includes/acp/info/acp_extensions.php @@ -20,6 +20,7 @@ function module() 'title' => 'ACP_EXTENSION_MANAGEMENT', 'modes' => array( 'main' => array('title' => 'ACP_EXTENSIONS', 'auth' => 'acl_a_extensions', 'cat' => array('ACP_EXTENSION_MANAGEMENT')), + 'gallery' => array('title' => 'ACP_EXTENSIONS_GALLERY', 'auth' => 'acl_a_extensions', 'cat' => array('ACP_EXTENSION_MANAGEMENT')), ), ); } diff --git a/phpBB/language/en/acp/common.php b/phpBB/language/en/acp/common.php index 7f341abd073..40b4a5d9d47 100644 --- a/phpBB/language/en/acp/common.php +++ b/phpBB/language/en/acp/common.php @@ -88,6 +88,7 @@ 'ACP_EXTENSION_GROUPS' => 'Manage attachment extension groups', 'ACP_EXTENSION_MANAGEMENT' => 'Extension management', 'ACP_EXTENSIONS' => 'Manage extensions', + 'ACP_EXTENSIONS_GALLERY' => 'Extensions gallery', 'ACP_FORUM_BASED_PERMISSIONS' => 'Forum based permissions', 'ACP_FORUM_LOGS' => 'Forum logs', diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 73d90c66586..1135e13c8e8 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -19,6 +19,8 @@ use Composer\IO\NullIO; use Composer\Json\JsonFile; use Composer\Package\CompletePackage; +use Composer\Package\LinkConstraint\LinkConstraintInterface; +use Composer\Package\LinkConstraint\VersionConstraint; use Composer\Package\PackageInterface; use Composer\Repository\ComposerRepository; use Composer\Repository\RepositoryInterface; @@ -198,63 +200,102 @@ public function get_available_packages($type) $composer = Factory::create($io, $this->get_composer_ext_json_filename(), false); + /** @var LinkConstraintInterface $core_constraint */ + $core_constraint = $composer->getPackage()->getRequires()['phpbb/phpbb']->getConstraint(); + $available = []; + + $compatible_packages = []; $repositories = $composer->getRepositoryManager()->getRepositories(); /** @var RepositoryInterface $repository */ foreach ($repositories as $repository) { - if ($repository instanceof ComposerRepository && $repository->hasProviders()) + try { - $r = new \ReflectionObject($repository); - $repo_url = $r->getProperty('url'); - $repo_url->setAccessible(true); - - if ($repo_url->getValue($repository) === 'http://packagist.org') + if ($repository instanceof ComposerRepository && $repository->hasProviders()) { - $url = 'https://packagist.org/packages/list.json?type=' . $type; - $rfs = new RemoteFilesystem($io); - $hostname = parse_url($url, PHP_URL_HOST) ?: $url; - $json = $rfs->getContents($hostname, $url, false); + // Special case for packagist which exposes an api to retrieve all packages of a given type. + // For the others composer repositories with providers we can't do anything. It would be too slow. - /** @var PackageInterface $package */ - foreach (JsonFile::parseJson($json, $url)['packageNames'] as $package) - { - $packages = $repository->findPackages($package); - $package = array_pop($packages); + $r = new \ReflectionObject($repository); + $repo_url = $r->getProperty('url'); + $repo_url->setAccessible(true); - if (isset($available[$package->getName()])) - { - continue; - } - - $available[$package->getName()] = ['name' => $package->getPrettyName()]; + if ($repo_url->getValue($repository) === 'http://packagist.org') + { + $url = 'https://packagist.org/packages/list.json?type=' . $type; + $rfs = new RemoteFilesystem($io); + $hostname = parse_url($url, PHP_URL_HOST) ?: $url; + $json = $rfs->getContents($hostname, $url, false); - if ($package instanceof CompletePackage) + /** @var PackageInterface $package */ + foreach (JsonFile::parseJson($json, $url)['packageNames'] as $package) { - $available[$package->getName()]['description'] = $package->getDescription(); - $available[$package->getName()]['url'] = $package->getHomepage(); + $versions = $repository->findPackages($package); + $compatible_packages = $this->get_compatible_versions($compatible_packages, $core_constraint, $package, $versions); } } } - } - else - { - /** @var PackageInterface $package */ - foreach ($repository->getPackages() as $package) + else { - if ($package->getType() === $type) + // Pre-filter repo packages by their type + $packages = []; + /** @var PackageInterface $package */ + foreach ($repository->getPackages() as $package) { - $available[$package->getName()] = ['name' => $package->getPrettyName()]; - - if ($package instanceof CompletePackage) + if ($package->getType() === $type) { - $available[$package->getName()]['description'] = $package->getDescription(); - $available[$package->getName()]['url'] = $package->getHomepage(); + $packages[$package->getName()][] = $package; } } + + // Filter the compatibles versions + foreach ($packages as $package => $versions) + { + $compatible_packages = $this->get_compatible_versions($compatible_packages, $core_constraint, $package, $versions); + } } } + catch (\Exception $e) + { + // If a repo fails, just skip it. + continue; + } + } + + foreach ($compatible_packages as $name => $versions) + { + // Determine the highest version of the package + /** @var CompletePackage $highest_version */ + $highest_version = null; + + /** @var CompletePackage $version */ + foreach ($versions as $version) + { + if (!$highest_version || version_compare($version->getVersion(), $highest_version->getVersion(), '>')) + { + $highest_version = $version; + } + } + + // Generates the entry + $available[$name] = []; + $available[$name]['name'] = $highest_version->getPrettyName(); + $available[$name]['version'] = $highest_version->getPrettyVersion(); + + if ($version instanceof CompletePackage) + { + $available[$name]['description'] = $highest_version->getDescription(); + $available[$name]['url'] = $highest_version->getHomepage(); + $available[$name]['authors'] = $highest_version->getAuthors(); + } + else + { + $available[$name]['description'] = ''; + $available[$name]['url'] = ''; + $available[$name]['authors'] = []; + } } ksort($available); @@ -267,6 +308,38 @@ public function get_available_packages($type) } } + /** + * Updates $compatible_packages with the versions of $versions compatibles with the $core_constraint + * + * @param array $compatible_packages List of compatibles versions + * @param LinkConstraintInterface $core_constraint Constraint against the phpBB version + * @param string $package_name Considered package + * @param array $versions List of available versions + * + * @return array + */ + private function get_compatible_versions(array $compatible_packages, LinkConstraintInterface $core_constraint, $package_name, array $versions) + { + /** @var PackageInterface $version */ + foreach ($versions as $version) + { + if (array_key_exists('phpbb/phpbb', $version->getRequires())) + { + /** @var LinkConstraintInterface $package_constraint */ + $package_constraint = $version->getRequires()['phpbb/phpbb']->getConstraint(); + + if (!$package_constraint->matches($core_constraint)) + { + continue; + } + } + + $compatible_packages[$package_name][] = $version; + } + + return $compatible_packages; + } + /** * Generates and write the json file used to install the set of packages * @@ -276,7 +349,7 @@ public function get_available_packages($type) protected function generate_ext_json_file(array $packages) { $io = new NullIO(); - $composer = Factory::create($io, null, false); + $composer = Factory::create($io, $this->root_path . 'composer.json', false); $core_packages = $this->get_core_packages($composer); $core_json_data = [ @@ -314,6 +387,27 @@ protected function get_core_packages(Composer $composer) return $core_deps; } + /** + * Get the core installed packages + * + * @param Composer $composer Composer object to load the dependencies + * @return array The core packages with their version + */ + protected function get_core_version(Composer $composer) + { + $core_deps = []; + $packages = $composer->getRepositoryManager()->getLocalRepository()->getCanonicalPackages(); + + foreach ($packages as $package) + { + $core_deps[$package->getName()] = $package->getPrettyVersion(); + } + + $core_deps['phpbb/phpbb'] = $composer->getPackage()->getPrettyVersion(); + + return $core_deps; + } + /** * Get the PHP version required by the core * diff --git a/phpBB/phpbb/composer/manager.php b/phpBB/phpbb/composer/manager.php index f05fec49576..5f7f2e28d9b 100644 --- a/phpBB/phpbb/composer/manager.php +++ b/phpBB/phpbb/composer/manager.php @@ -187,7 +187,7 @@ public function get_available_packages() if ($this->available_packages === null) { $this->available_packages = $this->cache->get('_composer_' . $this->package_type . '_available'); - if ($this->available_packages === false) + if (!$this->available_packages) { $this->available_packages = $this->installer->get_available_packages($this->package_type); $this->cache->put('_composer_' . $this->package_type . '_available', $this->available_packages, 24*60*60); diff --git a/phpBB/phpbb/console/command/extension/list_available.php b/phpBB/phpbb/console/command/extension/list_available.php index 107aca3410b..c844201fd3f 100644 --- a/phpBB/phpbb/console/command/extension/list_available.php +++ b/phpBB/phpbb/console/command/extension/list_available.php @@ -66,7 +66,8 @@ protected function execute(InputInterface $input, OutputInterface $output) foreach ($this->manager->get_available_packages() as $package) { - $extensions[] = '' . $package['name'] . ' ' . $package['url'] . "\n" . $package['description']; + $extensions[] = '' . $package['name'] . ' (' . $package['version'] . ') ' . $package['url'] . + ($package['description'] ? "\n" . $package['description'] : ''); } $io->listing($extensions); diff --git a/phpBB/phpbb/db/migration/data/v320/extensions_composer.php b/phpBB/phpbb/db/migration/data/v320/extensions_composer.php index 09771f1797e..1271adb3589 100644 --- a/phpBB/phpbb/db/migration/data/v320/extensions_composer.php +++ b/phpBB/phpbb/db/migration/data/v320/extensions_composer.php @@ -22,6 +22,14 @@ public function update_data() array('config.add', array('exts_composer_packagist', true)), array('config.add', array('exts_composer_json_file', 'composer-ext.json')), array('config.add', array('exts_composer_vendor_dir', 'vendor-ext/')), + array('module.add', array( + 'acp', + 'ACP_EXTENSION_MANAGEMENT', + array( + 'module_basename' => 'acp_extensions', + 'modes' => array('gallery'), + ), + )), ); } } From 6a15ad1368e42cd1525e2344b608f9eda8eb996f Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sun, 13 Sep 2015 16:21:25 +0200 Subject: [PATCH 119/431] [ticket/11150] Implement install extension link in ACP PHPBB3-11150 --- phpBB/adm/style/acp_ext_gallery.html | 2 +- phpBB/ext/index.htm | 0 phpBB/includes/acp/acp_extensions.php | 58 ++++++++++++++++++++++---- phpBB/phpbb/composer/installer.php | 3 +- phpBB/phpbb/composer/io/console_io.php | 1 + phpBB/phpbb/composer/io/web_io.php | 18 ++++---- 6 files changed, 62 insertions(+), 20 deletions(-) mode change 100644 => 100755 phpBB/ext/index.htm diff --git a/phpBB/adm/style/acp_ext_gallery.html b/phpBB/adm/style/acp_ext_gallery.html index 9be59429f6b..f9cdad34ff4 100644 --- a/phpBB/adm/style/acp_ext_gallery.html +++ b/phpBB/adm/style/acp_ext_gallery.html @@ -45,7 +45,7 @@

      {{lang( 'EXTENSIONS_ADMIN') }}

      {{ extension.name }}
      - {{ lang('DETAILS') }}{{ lang('INSTALL') }} + {{ lang('DETAILS') }}{{ lang('INSTALL') }} {{ extension.version }} {{ extension.description }} diff --git a/phpBB/ext/index.htm b/phpBB/ext/index.htm old mode 100644 new mode 100755 diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index 01e0b5e245f..9506a168a48 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -405,14 +405,56 @@ public function gallery_mode() { global $phpbb_container; - /** @var \phpbb\composer\extension_manager $manager */ - $manager = $phpbb_container->get('ext.composer.manager'); - $this->page_title = 'ACP_EXTENSIONS_GALLERY'; - $this->tpl_name = 'acp_ext_gallery'; - - $this->request->enable_super_globals(); - $this->template->assign_var('extensions', $manager->get_available_packages()); - $this->request->disable_super_globals(); + $action = $this->request->variable('action', 'list'); + + /** @var \phpbb\language\language $language */ + $language = $phpbb_container->get('language'); + + /** @var \phpbb\composer\manager $composer_manager */ + $composer_manager = $phpbb_container->get('ext.composer.manager'); + + switch ($action) + { + case 'install': + $extension = $this->request->variable('extension', ''); + + if (empty($extension)) + { + redirect($this->u_action); + } + + $formatter = new \Composer\Console\HtmlOutputFormatter([ + 'warning' => new \Symfony\Component\Console\Formatter\OutputFormatterStyle('black', 'yellow') + ]); + + $composer_io = new \phpbb\composer\io\web_io($language, '', \Symfony\Component\Console\Output\OutputInterface::VERBOSITY_NORMAL, $formatter); + + try + { + $composer_manager->install((array) $extension, $composer_io); + } + catch (\phpbb\exception\runtime_exception $e) + { + trigger_error($language->lang_array($e->getMessage(), $e->get_parameters()) . '

      ' . $composer_io->getOutput() . adm_back_link($this->u_action), E_USER_WARNING); + } + + trigger_error($language->lang('EXTENSIONS_INSTALLED') . '

      ' . $composer_io->getOutput() . adm_back_link($this->u_action)); + + break; + case 'remove': + break; + case 'list': + default: + /** @var \phpbb\composer\extension_manager $manager */ + $manager = $phpbb_container->get('ext.composer.manager'); + $this->page_title = 'ACP_EXTENSIONS_GALLERY'; + $this->tpl_name = 'acp_ext_gallery'; + + $this->request->enable_super_globals(); + $this->template->assign_var('extensions', $manager->get_available_packages()); + $this->request->disable_super_globals(); + break; + } } /** diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 1135e13c8e8..442dcc3f435 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -119,7 +119,7 @@ public function install(array $packages, $whitelist, IOInterface $io = null) ->setDumpAutoloader(false) ->setPreferStable(true) ->setRunScripts(false) - ->setDryRun(false); + ->setDryRun(true); try { @@ -282,6 +282,7 @@ public function get_available_packages($type) // Generates the entry $available[$name] = []; $available[$name]['name'] = $highest_version->getPrettyName(); + $available[$name]['composer_name'] = $highest_version->getName(); $available[$name]['version'] = $highest_version->getPrettyVersion(); if ($version instanceof CompletePackage) diff --git a/phpBB/phpbb/composer/io/console_io.php b/phpBB/phpbb/composer/io/console_io.php index 33ac77ba4e9..14c1ef29e9f 100644 --- a/phpBB/phpbb/composer/io/console_io.php +++ b/phpBB/phpbb/composer/io/console_io.php @@ -29,6 +29,7 @@ class console_io extends ConsoleIO * @param InputInterface $input The input instance * @param OutputInterface $output The output instance * @param HelperSet $helperSet The helperSet instance + * @param language $language Language object */ public function __construct(InputInterface $input, OutputInterface $output, HelperSet $helperSet, language $language) { diff --git a/phpBB/phpbb/composer/io/web_io.php b/phpBB/phpbb/composer/io/web_io.php index 9e8aa6ec765..e7927c72336 100644 --- a/phpBB/phpbb/composer/io/web_io.php +++ b/phpBB/phpbb/composer/io/web_io.php @@ -15,25 +15,23 @@ use Composer\IO\BufferIO; use phpbb\language\language; -use Symfony\Component\Console\Helper\HelperSet; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Formatter\OutputFormatterInterface; +use Symfony\Component\Console\Output\StreamOutput; class web_io extends BufferIO { use translate_composer_trait; /** - * Constructor. - * - * @param InputInterface $input The input instance - * @param OutputInterface $output The output instance - * @param HelperSet $helperSet The helperSet instance + * @param language $language Language object + * @param string $input Input string + * @param int $verbosity Verbosity level + * @param OutputFormatterInterface $formatter Output formatter */ - public function __construct(InputInterface $input, OutputInterface $output, HelperSet $helperSet, language $language) + public function __construct(language $language, $input = '', $verbosity = StreamOutput::VERBOSITY_NORMAL, OutputFormatterInterface $formatter = null) { $this->language = $language; - parent::__construct($input, $output, $helperSet); + parent::__construct($input, $verbosity, $formatter); } } From d5672303a359be027c403e329d97193884161897 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sun, 13 Sep 2015 18:44:50 +0200 Subject: [PATCH 120/431] [ticket/11150] Install from ACP PHPBB3-11150 --- phpBB/adm/style/detailled_message_body.html | 14 ++ phpBB/includes/acp/acp_extensions.php | 54 +++++++- phpBB/phpbb/composer/installer.php | 124 ++++++++++++++---- .../composer/io/translate_composer_trait.php | 12 ++ 4 files changed, 178 insertions(+), 26 deletions(-) create mode 100644 phpBB/adm/style/detailled_message_body.html diff --git a/phpBB/adm/style/detailled_message_body.html b/phpBB/adm/style/detailled_message_body.html new file mode 100644 index 00000000000..001fe921e1f --- /dev/null +++ b/phpBB/adm/style/detailled_message_body.html @@ -0,0 +1,14 @@ + + +
      + {%- if MESSAGE_DETAIL_LEGEND -%} + {{ MESSAGE_DETAIL_LEGEND|nl2br }} + {%- endif -%} +
      {{ MESSAGE_DETAIL }}
      +
      +
      +

      {{ MESSAGE_TITLE }}

      +

      {{ MESSAGE_TEXT }}

      +
      + + diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index 9506a168a48..a23ced9daa5 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -427,18 +427,65 @@ public function gallery_mode() 'warning' => new \Symfony\Component\Console\Formatter\OutputFormatterStyle('black', 'yellow') ]); - $composer_io = new \phpbb\composer\io\web_io($language, '', \Symfony\Component\Console\Output\OutputInterface::VERBOSITY_NORMAL, $formatter); + $composer_io = new \phpbb\composer\io\web_io($language, '', \Symfony\Component\Console\Output\OutputInterface::VERBOSITY_VERBOSE, $formatter); try { + $this->request->enable_super_globals(); $composer_manager->install((array) $extension, $composer_io); + $this->request->disable_super_globals(); } catch (\phpbb\exception\runtime_exception $e) { - trigger_error($language->lang_array($e->getMessage(), $e->get_parameters()) . '

      ' . $composer_io->getOutput() . adm_back_link($this->u_action), E_USER_WARNING); + $this->tpl_name = 'detailled_message_body'; + + if ($e->getPrevious()) + { + $message_title = $language->lang_array($e->getMessage(), $e->get_parameters()); + + if ($e->getPrevious() instanceof \phpbb\exception\exception_interface) + { + $message_text = $language->lang_array($e->getPrevious()->getMessage(), $e->getPrevious()->get_parameters()) . adm_back_link($this->u_action); + } + else + { + $message_text = $e->getPrevious()->getMessage(); + if (strpos($message_text, 'ext/') === 0 && strpos($message_text, 'does not exist and could not be created.') !== false) + {dump($e->getPrevious()->getTraceAsString()); + $message_text = $language->lang('EXTENSIONS_DIR_NOT_WRITABLE'); + } + $message_text .= adm_back_link($this->u_action); + } + } + else + { + $message_title = $language->lang('INFORMATION'); + $message_text = $language->lang_array($e->getMessage(), $e->get_parameters()) . adm_back_link($this->u_action); + } + + $this->template->assign_vars(array( + 'MESSAGE_TITLE' => $message_title, + 'MESSAGE_TEXT' => $message_text, + 'MESSAGE_DETAIL' => $composer_io->getOutput(), + 'MESSAGE_DETAIL_LEGEND' => $language->lang('COMPOSER_OUTPUT'), + 'S_USER_ERROR' => true, + ) + ); + + return; } + $this->tpl_name = 'detailled_message_body'; + + $this->template->assign_vars(array( + 'MESSAGE_TITLE' => $language->lang('ACP_EXTENSIONS_INSTALL'), + 'MESSAGE_TEXT' => $language->lang('EXTENSIONS_INSTALLED') . adm_back_link($this->u_action), + 'MESSAGE_DETAIL' => $composer_io->getOutput(), + 'MESSAGE_DETAIL_LEGEND' => $language->lang('COMPOSER_OUTPUT'), + 'S_USER_NOTICE' => true, + ) + ); - trigger_error($language->lang('EXTENSIONS_INSTALLED') . '

      ' . $composer_io->getOutput() . adm_back_link($this->u_action)); + return; break; case 'remove': @@ -452,6 +499,7 @@ public function gallery_mode() $this->request->enable_super_globals(); $this->template->assign_var('extensions', $manager->get_available_packages()); + $this->template->assign_var('U_ACTION', $this->u_action); $this->request->disable_super_globals(); break; } diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 442dcc3f435..856ef2f6eb2 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -74,7 +74,7 @@ public function __construct($root_path, config $config = null) $this->packages_vendor_dir = $config['exts_composer_vendor_dir']; } - $this->repositories = ['http://phpbb.local/ext/phpbb/titania/composer/']; + $this->repositories = [/*'http://phpbb.local/ext/phpbb/titania/composer/'*/]; $this->packagist = true; $this->root_path = $root_path; @@ -91,6 +91,36 @@ public function __construct($root_path, config $config = null) * @throws runtime_exception */ public function install(array $packages, $whitelist, IOInterface $io = null) + { + // The composer installers works with a path relative to the current directory + $original_working_dir = getcwd(); + chdir($this->root_path); + + try + { + $this->do_install($packages, $whitelist, $io); + chdir($original_working_dir); + } + catch (\Exception $e) + { + chdir($original_working_dir); + throw $e; + } + } + + /** + * Update the current installed set of packages + * + * /!\ Doesn't change the current working directory + * + * @param array $packages Packages to install. + * Each entry may be a name or an array associating a version constraint to a name + * @param array $whitelist White-listed packages (packages that can be installed/updated/removed) + * @param IOInterface $io IO object used for the output + * + * @throws runtime_exception + */ + protected function do_install(array $packages, $whitelist, IOInterface $io = null) { if (!$io) { @@ -99,9 +129,6 @@ public function install(array $packages, $whitelist, IOInterface $io = null) $this->generate_ext_json_file($packages); - $original_vendor_dir = getenv('COMPOSER_VENDOR_DIR'); - putenv('COMPOSER_VENDOR_DIR=' . $this->root_path . $this->packages_vendor_dir); - $composer = Factory::create($io, $this->get_composer_ext_json_filename(), false); $install = \Composer\Installer::create($io, $composer); @@ -119,21 +146,15 @@ public function install(array $packages, $whitelist, IOInterface $io = null) ->setDumpAutoloader(false) ->setPreferStable(true) ->setRunScripts(false) - ->setDryRun(true); + ->setDryRun(false); try { $result = $install->run(); - - putenv('COMPOSER_VENDOR_DIR=' . $original_vendor_dir); - //$output = $io->getOutput(); - //$error_pos = strpos($output, 'Your requirements could not be resolved to an installable set of packages.'); } catch (\Exception $e) { - - putenv('COMPOSER_VENDOR_DIR=' . $original_vendor_dir); - throw new runtime_exception('Cannot install packages', [], $e); + throw new runtime_exception('COMPOSER_CANNOT_INSTALL', [], $e); } if ($result !== 0) @@ -151,14 +172,40 @@ public function install(array $packages, $whitelist, IOInterface $io = null) */ public function get_installed_packages($types) { - $types = (array) $types; + // The composer installers works with a path relative to the current directory + $original_working_dir = getcwd(); + chdir($this->root_path); - $original_vendor_dir = getenv('COMPOSER_VENDOR_DIR'); + try + { + $result = $this->do_get_installed_packages($types); + chdir($original_working_dir); + } + catch (\Exception $e) + { + chdir($original_working_dir); + throw $e; + } + + return $result; + } + + /** + * Returns the list of currently installed packages + * + * /!\ Doesn't change the current working directory + * + * @param string|array $types Returns only the packages with the given type(s) + * + * @return array The installed packages associated to their version. + */ + protected function do_get_installed_packages($types) + { + $types = (array) $types; try { $io = new NullIO(); - putenv('COMPOSER_VENDOR_DIR=' . $this->root_path . $this->packages_vendor_dir); $composer = Factory::create($io, $this->get_composer_ext_json_filename(), false); $installed = []; @@ -173,12 +220,10 @@ public function get_installed_packages($types) } } - putenv('COMPOSER_VENDOR_DIR=' . $original_vendor_dir); return $installed; } catch (\Exception $e) { - putenv('COMPOSER_VENDOR_DIR=' . $original_vendor_dir); return []; } } @@ -186,18 +231,46 @@ public function get_installed_packages($types) /** * Gets the list of the available packages of the configured type in the configured repositories * + * /!\ Doesn't change the current working directory + * * @param string $type Returns only the packages with the given type * * @return array The name of the available packages, associated to their definition. Ordered by name. */ public function get_available_packages($type) + { + // The composer installers works with a path relative to the current directory + $original_working_dir = getcwd(); + chdir($this->root_path); + + try + { + $result = $this->do_get_available_packages($type); + chdir($original_working_dir); + } + catch (\Exception $e) + { + chdir($original_working_dir); + throw $e; + } + + return $result; + } + + /** + * Gets the list of the available packages of the configured type in the configured repositories + * + * @param string $type Returns only the packages with the given type + * + * @return array The name of the available packages, associated to their definition. Ordered by name. + */ + protected function do_get_available_packages($type) { try { - $this->generate_ext_json_file($this->get_installed_packages(self::PHPBB_TYPES)); + $this->generate_ext_json_file($this->do_get_installed_packages(self::PHPBB_TYPES)); $io = new NullIO(); - $composer = Factory::create($io, $this->get_composer_ext_json_filename(), false); /** @var LinkConstraintInterface $core_constraint */ @@ -350,10 +423,11 @@ private function get_compatible_versions(array $compatible_packages, LinkConstra protected function generate_ext_json_file(array $packages) { $io = new NullIO(); - $composer = Factory::create($io, $this->root_path . 'composer.json', false); + + $composer = Factory::create($io, null, false); $core_packages = $this->get_core_packages($composer); - $core_json_data = [ + $ext_json_data = [ 'require' => array_merge( ['php' => $this->get_core_php_requirement($composer)], $core_packages, @@ -361,10 +435,14 @@ protected function generate_ext_json_file(array $packages) $packages), 'replace' => $core_packages, 'repositories' => $this->get_composer_repositories(), + 'config' => [ + 'cache-dir' => 'store/composer', + 'vendor-dir'=> $this->packages_vendor_dir, + ], ]; $json_file = new JsonFile($this->get_composer_ext_json_filename()); - $json_file->write($core_json_data); + $json_file->write($ext_json_data); } /** @@ -452,7 +530,7 @@ protected function get_composer_repositories() */ protected function get_composer_ext_json_filename() { - return $this->root_path . $this->composer_filename; + return $this->composer_filename; } /** diff --git a/phpBB/phpbb/composer/io/translate_composer_trait.php b/phpBB/phpbb/composer/io/translate_composer_trait.php index 376ef28a80e..e76244b977f 100644 --- a/phpBB/phpbb/composer/io/translate_composer_trait.php +++ b/phpBB/phpbb/composer/io/translate_composer_trait.php @@ -50,6 +50,10 @@ public function write($messages, $newline = true) $lang_key = 'COMPOSER_DELETING'; $parameters = [$elements[1]]; } + else + { + dump('WRITE | ' . $message); + } //$translated_message = $this->language->lang_array($lang_key, $parameters); $translated_message = call_user_func_array([$this->language, 'lang'], array_merge((array)$lang_key, $parameters)); @@ -153,10 +157,18 @@ public function writeError($messages, $newline = true) { continue; } + else if ($message === ' Extracting archive') + { + continue; + } else if (empty($message)) { continue; } + else + { + dump('WRITE ERROR | ' . $message); + } //$translated_message = $this->language->lang_array($lang_key, $parameters); $translated_message = call_user_func_array([$this->language, 'lang'], array_merge((array)$lang_key, $parameters)); From 50b2989cf01fb9a5bb54d198290e23793dff59cf Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sun, 13 Sep 2015 18:51:33 +0200 Subject: [PATCH 121/431] [ticket/11150] PHP 5.4 compatibility PHPBB3-11150 --- phpBB/phpbb/composer/installer.php | 4 ++-- phpBB/phpbb/composer/manager.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 856ef2f6eb2..61289b71354 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -33,7 +33,7 @@ */ class installer { - const PHPBB_TYPES = ['phpbb-extension', 'phpbb-style', 'phpbb-language']; + const PHPBB_TYPES = 'phpbb-extension,phpbb-style,phpbb-language'; /** * @var array Repositories to look packages from @@ -268,7 +268,7 @@ protected function do_get_available_packages($type) { try { - $this->generate_ext_json_file($this->do_get_installed_packages(self::PHPBB_TYPES)); + $this->generate_ext_json_file($this->do_get_installed_packages(explode(',', self::PHPBB_TYPES))); $io = new NullIO(); $composer = Factory::create($io, $this->get_composer_ext_json_filename(), false); diff --git a/phpBB/phpbb/composer/manager.php b/phpBB/phpbb/composer/manager.php index 5f7f2e28d9b..64ab0ccb7cf 100644 --- a/phpBB/phpbb/composer/manager.php +++ b/phpBB/phpbb/composer/manager.php @@ -173,7 +173,7 @@ public function get_all_managed_packages() { if ($this->all_managed_packages === null) { - $this->all_managed_packages = $this->installer->get_installed_packages(installer::PHPBB_TYPES); + $this->all_managed_packages = $this->installer->get_installed_packages(explode(',', installer::PHPBB_TYPES)); } return $this->all_managed_packages; From a32d429f1eb60c487404a4e244010384fa550f4c Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sun, 13 Sep 2015 21:04:03 +0200 Subject: [PATCH 122/431] [ticket/11150] Restore the cwd before using the autoloader in case of error PHPBB3-11150 --- phpBB/phpbb/composer/installer.php | 53 ++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 61289b71354..57e9673049f 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -20,7 +20,6 @@ use Composer\Json\JsonFile; use Composer\Package\CompletePackage; use Composer\Package\LinkConstraint\LinkConstraintInterface; -use Composer\Package\LinkConstraint\VersionConstraint; use Composer\Package\PackageInterface; use Composer\Repository\ComposerRepository; use Composer\Repository\RepositoryInterface; @@ -60,6 +59,11 @@ class installer */ protected $root_path; + /** + * @var string Store the original working directory in case it has been changed through move_to_root() + */ + private $original_cwd; + /** * @param \phpbb\config\config $config Config object * @param string $root_path phpBB root path @@ -93,17 +97,16 @@ public function __construct($root_path, config $config = null) public function install(array $packages, $whitelist, IOInterface $io = null) { // The composer installers works with a path relative to the current directory - $original_working_dir = getcwd(); - chdir($this->root_path); + $this->move_to_root(); try { $this->do_install($packages, $whitelist, $io); - chdir($original_working_dir); + $this->restore_cwd(); } catch (\Exception $e) { - chdir($original_working_dir); + $this->restore_cwd(); throw $e; } } @@ -154,11 +157,13 @@ protected function do_install(array $packages, $whitelist, IOInterface $io = nul } catch (\Exception $e) { + $this->restore_cwd(); throw new runtime_exception('COMPOSER_CANNOT_INSTALL', [], $e); } if ($result !== 0) { + $this->restore_cwd(); throw new runtime_exception($io->get_composer_error(), []); } } @@ -173,17 +178,16 @@ protected function do_install(array $packages, $whitelist, IOInterface $io = nul public function get_installed_packages($types) { // The composer installers works with a path relative to the current directory - $original_working_dir = getcwd(); - chdir($this->root_path); + $this->move_to_root(); try { $result = $this->do_get_installed_packages($types); - chdir($original_working_dir); + $this->restore_cwd(); } catch (\Exception $e) { - chdir($original_working_dir); + $this->restore_cwd(); throw $e; } @@ -240,17 +244,16 @@ protected function do_get_installed_packages($types) public function get_available_packages($type) { // The composer installers works with a path relative to the current directory - $original_working_dir = getcwd(); - chdir($this->root_path); + $this->move_to_root(); try { $result = $this->do_get_available_packages($type); - chdir($original_working_dir); + $this->restore_cwd(); } catch (\Exception $e) { - chdir($original_working_dir); + $this->restore_cwd(); throw $e; } @@ -592,4 +595,28 @@ public function set_root_path($root_path) { $this->root_path = $root_path; } + + /** + * Change the current directory to phpBB root + */ + protected function move_to_root() + { + if ($this->original_cwd === null) + { + $this->original_cwd = getcwd(); + chdir($this->root_path); + } + } + + /** + * Restore the current working directory if move_to_root() have been called + */ + protected function restore_cwd() + { + if ($this->original_cwd) + { + chdir($this->original_cwd); + $this->original_cwd = null; + } + } } From 51916def9c9bc7521dea624932ca92883c751195 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Mon, 14 Sep 2015 13:55:21 +0200 Subject: [PATCH 123/431] [ticket/11150] Display extension status in "gallery" PHPBB3-11150 --- phpBB/adm/style/acp_ext_gallery.html | 11 ++++++++++- phpBB/includes/acp/acp_extensions.php | 7 ++++++- phpBB/language/en/acp/extensions.php | 3 +++ .../composer/io/translate_composer_trait.php | 16 +++++++++++++--- 4 files changed, 32 insertions(+), 5 deletions(-) diff --git a/phpBB/adm/style/acp_ext_gallery.html b/phpBB/adm/style/acp_ext_gallery.html index f9cdad34ff4..9ae42e2e852 100644 --- a/phpBB/adm/style/acp_ext_gallery.html +++ b/phpBB/adm/style/acp_ext_gallery.html @@ -45,7 +45,16 @@

      {{lang( 'EXTENSIONS_ADMIN') }}

      {{ extension.name }}
      - {{ lang('DETAILS') }}{{ lang('INSTALL') }} + + {{ lang('DETAILS') }} • + {% if extension.name in managed_extensions %} + {{ lang('INSTALLED') }} + {% elseif extension.name in installed_extensions -%} + {{ lang('INSTALLED_MANUALLY') }} ({{ lang('MANAGE') }}) + {% else -%} + {{ lang('INSTALL') }} + {%- endif -%} + {{ extension.version }} {{ extension.description }} diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index a23ced9daa5..08a7b36f2e7 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -413,6 +413,9 @@ public function gallery_mode() /** @var \phpbb\composer\manager $composer_manager */ $composer_manager = $phpbb_container->get('ext.composer.manager'); + /** @var \phpbb\extension\manager $extensions_manager */ + $extensions_manager = $phpbb_container->get('ext.manager'); + switch ($action) { case 'install': @@ -451,7 +454,7 @@ public function gallery_mode() { $message_text = $e->getPrevious()->getMessage(); if (strpos($message_text, 'ext/') === 0 && strpos($message_text, 'does not exist and could not be created.') !== false) - {dump($e->getPrevious()->getTraceAsString()); + { $message_text = $language->lang('EXTENSIONS_DIR_NOT_WRITABLE'); } $message_text .= adm_back_link($this->u_action); @@ -499,6 +502,8 @@ public function gallery_mode() $this->request->enable_super_globals(); $this->template->assign_var('extensions', $manager->get_available_packages()); + $this->template->assign_var('managed_extensions', array_keys($manager->get_managed_packages())); + $this->template->assign_var('installed_extensions', array_keys($extensions_manager->all_available())); $this->template->assign_var('U_ACTION', $this->u_action); $this->request->disable_super_globals(); break; diff --git a/phpBB/language/en/acp/extensions.php b/phpBB/language/en/acp/extensions.php index a94b767111a..30d20839fd1 100644 --- a/phpBB/language/en/acp/extensions.php +++ b/phpBB/language/en/acp/extensions.php @@ -104,6 +104,9 @@ 'EXTENSION_ENABLE_CONFIRM' => 'Are you sure that you wish to enable the “%s” extension?', 'EXTENSION_FORCE_UNSTABLE_CONFIRM' => 'Are you sure that you wish to force the use of unstable version?', + 'INSTALLED' => 'Installed', + 'INSTALLED_MANUALLY' => 'Installed manually', + 'RETURN_TO_EXTENSION_LIST' => 'Return to the extension list', 'EXT_DETAILS' => 'Extension Details', diff --git a/phpBB/phpbb/composer/io/translate_composer_trait.php b/phpBB/phpbb/composer/io/translate_composer_trait.php index e76244b977f..b322accafb6 100644 --- a/phpBB/phpbb/composer/io/translate_composer_trait.php +++ b/phpBB/phpbb/composer/io/translate_composer_trait.php @@ -42,7 +42,7 @@ public function write($messages, $newline = true) $parameters = []; $level = 0; - $message = trim(strip_tags($message), "\n\r"); + $message = trim($this->strip_format($message), "\n\r"); if (strpos($message, 'Deleting ') === 0) { @@ -94,7 +94,7 @@ public function writeError($messages, $newline = true) $parameters = []; $level = 0; - $message = trim(strip_tags($message), "\n\r"); + $message = trim($this->strip_format($message), "\n\r"); if (strpos($message, ' Problem ') === 0) { @@ -103,7 +103,7 @@ public function writeError($messages, $newline = true) continue; } - $lang_key = "\n" . $message . "\n"; + $lang_key = "\n" . htmlentities($message) . "\n"; $level = 4; } else if ($message === 'Updating dependencies') @@ -209,4 +209,14 @@ public function get_composer_error() return $error; } + + protected function strip_format($message) + { + return str_replace([ + '', '', + '', '', + '', '', + '', '', + ], '', $message); + } } From d6618397bf6a9c2a9ed71f7d1bf7944d27871f49 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Mon, 14 Sep 2015 16:20:33 +0200 Subject: [PATCH 124/431] [ticket/11150] Better pre/post action handling, restore ext.json in case of err PHPBB3-11150 --- phpBB/phpbb/composer/extension_manager.php | 112 ++++++++++++++++-- phpBB/phpbb/composer/installer.php | 32 ++++- .../composer/io/translate_composer_trait.php | 43 ++++--- phpBB/phpbb/composer/manager.php | 88 ++++++++++++-- phpBB/phpbb/composer/manager_interface.php | 3 +- 5 files changed, 240 insertions(+), 38 deletions(-) diff --git a/phpBB/phpbb/composer/extension_manager.php b/phpBB/phpbb/composer/extension_manager.php index 04c0af666fe..49f27762c2b 100644 --- a/phpBB/phpbb/composer/extension_manager.php +++ b/phpBB/phpbb/composer/extension_manager.php @@ -38,6 +38,11 @@ class extension_manager extends manager */ protected $filesystem; + /** + * @var array + */ + private $enabled_extensions; + /** * @param installer $installer Installer object * @param driver_interface $cache Cache object @@ -57,29 +62,112 @@ public function __construct(installer $installer, driver_interface $cache, ext_m /** * {@inheritdoc} */ - public function install(array $packages, IOInterface $io = null) + public function pre_install(array $packages, IOInterface $io = null) { - $packages = $this->normalize_version($packages); + $installed_manually = array_intersect(array_keys($this->extension_manager->all_available()), array_keys($packages)); + if (count($installed_manually) !== 0) + { + throw new runtime_exception($this->exception_prefix, 'ALREADY_INSTALLED_MANUALLY', [implode('|', array_keys($installed_manually))]); + } + } - $already_managed = array_intersect(array_keys($this->get_managed_packages()), array_keys($packages)); - if (count($already_managed) !== 0) + /** + * {@inheritdoc} + */ + protected function pre_update(array $packages, IOInterface $io = null) + { + $io->writeError('DISABLING_EXTENSIONS', true, 1); + $this->enabled_extensions = []; + foreach ($packages as $package) { - throw new runtime_exception($this->exception_prefix, 'ALREADY_INSTALLED', [implode('|', $already_managed)]); + try + { + if ($this->extension_manager->is_enabled($package)) + { + $this->enabled_extensions[] = $package; + $this->extension_manager->disable($package); + } + } + catch (\phpbb\exception\runtime_exception $e) + { + $io->writeError([$e->getMessage(), $e->get_parameters()], true, 4); + } + catch (\Exception $e) + { + $io->writeError($e->getMessage(), true, 4); + } } + } - $installed_manually = array_intersect(array_keys($this->extension_manager->all_available()), array_keys($packages)); - if (count($installed_manually) !== 0) + /** + * {@inheritdoc} + */ + protected function post_update(array $packages, IOInterface $io = null) + { + $io->writeError('ENABLING_EXTENSIONS', true, 1); + foreach ($this->enabled_extensions as $package) { - throw new runtime_exception($this->exception_prefix, 'ALREADY_INSTALLED_MANUALLY', [implode('|', array_keys($installed_manually))]); + try + { + $this->extension_manager->enable($package); + } + catch (\phpbb\exception\runtime_exception $e) + { + $io->writeError([$e->getMessage(), $e->get_parameters()], true, 4); + } + catch (\Exception $e) + { + $io->writeError($e->getMessage(), true, 4); + } } + } - $this->do_install($packages, $io); + /** + * {@inheritdoc} + */ + public function remove(array $packages, IOInterface $io = null) + { + $packages = $this->normalize_version($packages); + + $not_installed = array_diff(array_keys($packages), array_keys($this->extension_manager->all_available())); + if (count($not_installed) !== 0) + { + throw new runtime_exception($this->exception_prefix, 'NOT_INSTALLED', [implode('|', array_keys($not_installed))]); + } + + parent::remove($packages, $io); } /** * {@inheritdoc} */ - public function start_managing($package) + public function pre_remove(array $packages, IOInterface $io = null) + { + $io->writeError('DISABLING_EXTENSIONS', true, 1); + foreach ($packages as $package) + { + try + { + if ($this->extension_manager->is_enabled($package)) + { + $this->extension_manager->disable($package); + } + } + catch (\phpbb\exception\runtime_exception $e) + { + $io->writeError([$e->getMessage(), $e->get_parameters()], true, 4); + } + catch (\Exception $e) + { + $io->writeError($e->getMessage(), true, 4); + } + } + } + + /** + * {@inheritdoc} + */ + public function start_managing($package, $io) { if (!$this->extension_manager->is_available($package)) { @@ -95,6 +183,7 @@ public function start_managing($package) if ($this->extension_manager->is_enabled($package)) { $enabled = true; + $io->writeError('DISABLING_EXTENSION', true, 1); $this->extension_manager->disable($package); } @@ -129,7 +218,8 @@ public function start_managing($package) { try { - $this->extension_manager->enable($package); + $io->writeError('ENABLING_EXTENSION', true, 1); + $this->extension_manager->enabling($package); } catch (\Exception $e) { diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 57e9673049f..18e1b6e83b9 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -60,10 +60,15 @@ class installer protected $root_path; /** - * @var string Store the original working directory in case it has been changed through move_to_root() + * @var string Stores the original working directory in case it has been changed through move_to_root() */ private $original_cwd; + /** + * @var array Stores the content of the ext json file before generate_ext_json_file() overrides it + */ + private $ext_json_file_backup; + /** * @param \phpbb\config\config $config Config object * @param string $root_path phpBB root path @@ -157,12 +162,14 @@ protected function do_install(array $packages, $whitelist, IOInterface $io = nul } catch (\Exception $e) { + $this->restore_ext_json_file(); $this->restore_cwd(); throw new runtime_exception('COMPOSER_CANNOT_INSTALL', [], $e); } if ($result !== 0) { + $this->restore_ext_json_file(); $this->restore_cwd(); throw new runtime_exception($io->get_composer_error(), []); } @@ -444,8 +451,31 @@ protected function generate_ext_json_file(array $packages) ], ]; + $this->ext_json_file_backup = null; $json_file = new JsonFile($this->get_composer_ext_json_filename()); + $ext_json_file_backup = $json_file->read(); $json_file->write($ext_json_data); + $this->ext_json_file_backup = $ext_json_file_backup; + } + + /** + * Restore the json file overridden by generate_ext_json_file() + */ + protected function restore_ext_json_file() + { + if ($this->ext_json_file_backup) + { + try + { + $json_file = new JsonFile($this->get_composer_ext_json_filename()); + $json_file->write($this->ext_json_file_backup); + } + catch (\Exception $e) + { + } + + $this->ext_json_file_backup = null; + } } /** diff --git a/phpBB/phpbb/composer/io/translate_composer_trait.php b/phpBB/phpbb/composer/io/translate_composer_trait.php index b322accafb6..0f2d6f8e643 100644 --- a/phpBB/phpbb/composer/io/translate_composer_trait.php +++ b/phpBB/phpbb/composer/io/translate_composer_trait.php @@ -38,9 +38,21 @@ public function write($messages, $newline = true) foreach ($messages as $message) { - $lang_key = $message; - $parameters = []; $level = 0; + if (is_array($message)) + { + $lang_key = $message[0]; + $parameters = $message[1]; + if (count($message) > 2) + { + $level = $message[2]; + } + } + else + { + $lang_key = $message; + $parameters = []; + } $message = trim($this->strip_format($message), "\n\r"); @@ -50,10 +62,6 @@ public function write($messages, $newline = true) $lang_key = 'COMPOSER_DELETING'; $parameters = [$elements[1]]; } - else - { - dump('WRITE | ' . $message); - } //$translated_message = $this->language->lang_array($lang_key, $parameters); $translated_message = call_user_func_array([$this->language, 'lang'], array_merge((array)$lang_key, $parameters)); @@ -90,9 +98,21 @@ public function writeError($messages, $newline = true) foreach ($messages as $message) { - $lang_key = $message; - $parameters = []; $level = 0; + if (is_array($message)) + { + $lang_key = $message[0]; + $parameters = $message[1]; + if (count($message) > 2) + { + $level = $message[2]; + } + } + else + { + $lang_key = $message; + $parameters = []; + } $message = trim($this->strip_format($message), "\n\r"); @@ -165,13 +185,8 @@ public function writeError($messages, $newline = true) { continue; } - else - { - dump('WRITE ERROR | ' . $message); - } - //$translated_message = $this->language->lang_array($lang_key, $parameters); - $translated_message = call_user_func_array([$this->language, 'lang'], array_merge((array)$lang_key, $parameters)); + $translated_message = $this->language->lang_array($lang_key, $parameters); switch ($level) { diff --git a/phpBB/phpbb/composer/manager.php b/phpBB/phpbb/composer/manager.php index 64ab0ccb7cf..1941e79fff5 100644 --- a/phpBB/phpbb/composer/manager.php +++ b/phpBB/phpbb/composer/manager.php @@ -84,23 +84,38 @@ public function install(array $packages, IOInterface $io = null) throw new runtime_exception($this->exception_prefix, 'ALREADY_INSTALLED', [implode('|', $already_managed)]); } - $this->do_install($packages, $io); + $this->pre_install($packages, $io); + + $managed_packages = array_merge($this->get_all_managed_packages(), $packages); + ksort($managed_packages); + + $this->installer->install($managed_packages, array_keys($packages), $io); + + $this->post_install($packages, $io); + + $this->managed_packages = null; } /** - * Really install the packages. + * Hook called before installing the packages * - * @param array $packages Packages to install. + * @param array $packages Packages to update. + * Each entry may be a name or an array associating a version constraint to a name * @param IOInterface $io IO object used for the output */ - protected function do_install($packages, IOInterface $io = null) + protected function pre_install(array $packages, IOInterface $io = null) { - $managed_packages = array_merge($this->get_all_managed_packages(), $packages); - ksort($managed_packages); - - $this->installer->install($managed_packages, array_keys($packages), $io); + } - $this->managed_packages = null; + /** + * Hook called after installing the packages + * + * @param array $packages Packages to update. + * Each entry may be a name or an array associating a version constraint to a name + * @param IOInterface $io IO object used for the output + */ + protected function post_install(array $packages, IOInterface $io = null) + { } /** @@ -110,17 +125,42 @@ public function update(array $packages, IOInterface $io = null) { $packages = $this->normalize_version($packages); - // TODO: if the extension is already enabled, we should disabled and re-enable it $not_managed = array_diff_key($packages, $this->get_managed_packages()); if (count($not_managed) !== 0) { throw new runtime_exception($this->exception_prefix, 'NOT_MANAGED', [implode('|', array_keys($not_managed))]); } + $this->pre_update($packages, $io); + $managed_packages = array_merge($this->get_all_managed_packages(), $packages); ksort($managed_packages); $this->installer->install($managed_packages, array_keys($packages), $io); + + $this->post_update($packages, $io); + } + + /** + * Hook called before updating the packages + * + * @param array $packages Packages to update. + * Each entry may be a name or an array associating a version constraint to a name + * @param IOInterface $io IO object used for the output + */ + protected function pre_update(array $packages, IOInterface $io = null) + { + } + + /** + * Hook called after updating the packages + * + * @param array $packages Packages to update. + * Each entry may be a name or an array associating a version constraint to a name + * @param IOInterface $io IO object used for the output + */ + protected function post_update(array $packages, IOInterface $io = null) + { } /** @@ -137,14 +177,40 @@ public function remove(array $packages, IOInterface $io = null) throw new runtime_exception($this->exception_prefix, 'NOT_MANAGED', [implode('|', array_keys($not_managed))]); } + $this->pre_remove($packages, $io); + $managed_packages = array_diff_key($this->get_all_managed_packages(), $packages); ksort($managed_packages); $this->installer->install($managed_packages, array_keys($packages), $io); + $this->post_remove($packages, $io); + $this->managed_packages = null; } + /** + * Hook called before removing the packages + * + * @param array $packages Packages to update. + * Each entry may be a name or an array associating a version constraint to a name + * @param IOInterface $io IO object used for the output + */ + protected function pre_remove(array $packages, IOInterface $io = null) + { + } + + /** + * Hook called after removing the packages + * + * @param array $packages Packages to update. + * Each entry may be a name or an array associating a version constraint to a name + * @param IOInterface $io IO object used for the output + */ + protected function post_remove(array $packages, IOInterface $io = null) + { + } + /** * {@inheritdoc} */ @@ -200,7 +266,7 @@ public function get_available_packages() /** * {@inheritdoc} */ - public function start_managing($package) + public function start_managing($package, $io) { throw new \phpbb\exception\runtime_exception('COMPOSER_UNSUPPORTED_OPERATION', (array) $this->package_type); } diff --git a/phpBB/phpbb/composer/manager_interface.php b/phpBB/phpbb/composer/manager_interface.php index b5d0177342d..2572ba08312 100644 --- a/phpBB/phpbb/composer/manager_interface.php +++ b/phpBB/phpbb/composer/manager_interface.php @@ -84,8 +84,9 @@ public function get_available_packages(); * Remove a package installed manually and reinstall it using composer. * * @param string $package Package to manage + * @param IOInterface $io IO object used for the output * * @throws runtime_exception */ - public function start_managing($package); + public function start_managing($package, $io); } From 88b32580dc1fcc44871b8a27128b086703503383 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Mon, 14 Sep 2015 18:43:58 +0200 Subject: [PATCH 125/431] [ticket/11150] Add Remove && Update buttons PHPBB3-11150 --- phpBB/adm/style/acp_ext_gallery.html | 4 +- phpBB/adm/style/acp_ext_list.html | 11 ++ phpBB/includes/acp/acp_extensions.php | 207 +++++++++++++++++---- phpBB/language/en/common.php | 1 + phpBB/phpbb/composer/extension_manager.php | 4 +- 5 files changed, 183 insertions(+), 44 deletions(-) diff --git a/phpBB/adm/style/acp_ext_gallery.html b/phpBB/adm/style/acp_ext_gallery.html index 9ae42e2e852..b8d940935e8 100644 --- a/phpBB/adm/style/acp_ext_gallery.html +++ b/phpBB/adm/style/acp_ext_gallery.html @@ -35,7 +35,7 @@

      {{lang( 'EXTENSIONS_ADMIN') }}

      - {{ lang("EXTENSION_NAME") }} + {{ lang("EXTENSION_NAME") }} {{ lang("VERSION") }} {{ lang("DESCRIPTION") }} @@ -46,7 +46,7 @@

      {{lang( 'EXTENSIONS_ADMIN') }}

      {{ extension.name }}
      - {{ lang('DETAILS') }} • + {{ lang('HOMEPAGE') }} • {% if extension.name in managed_extensions %} {{ lang('INSTALLED') }} {% elseif extension.name in installed_extensions -%} diff --git a/phpBB/adm/style/acp_ext_list.html b/phpBB/adm/style/acp_ext_list.html index af9e00a614a..80163684c15 100644 --- a/phpBB/adm/style/acp_ext_list.html +++ b/phpBB/adm/style/acp_ext_list.html @@ -62,6 +62,11 @@

      {L_EXTENSIONS_ADMIN}

      title="{enabled.actions.L_ACTION_EXPLAIN}">{enabled.actions.L_ACTION}  |  + + +  |  + {L_UPDATE} + @@ -89,6 +94,12 @@

      {L_EXTENSIONS_ADMIN}

      title="{disabled.actions.L_ACTION_EXPLAIN}">{disabled.actions.L_ACTION}  |  + + +  |  + {L_UPDATE} +  | {L_REMOVE} + diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index 08a7b36f2e7..bcb057ddb94 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -59,17 +59,17 @@ function main() switch ($mode) { case 'gallery': - $this->gallery_mode(); + $this->gallery_mode($id, $mode); break; default: - $this->main_mode(); + $this->main_mode($id, $mode); break; } } - public function main_mode() + public function main_mode($id, $mode) { - global $phpbb_extension_manager, $phpbb_root_path; + global $phpbb_extension_manager, $phpbb_root_path, $phpbb_container, $phpbb_admin_path, $phpEx; $this->page_title = 'ACP_EXTENSIONS'; @@ -167,11 +167,17 @@ public function main_mode() $this->list_disabled_exts(); $this->list_available_exts(); + $composer_manager = $phpbb_container->get('ext.composer.manager'); + + $this->request->enable_super_globals(); $this->template->assign_vars(array( 'U_VERSIONCHECK_FORCE' => $this->u_action . '&action=list&versioncheck_force=1', 'FORCE_UNSTABLE' => $this->config['extension_force_unstable'], 'U_ACTION' => $this->u_action, + 'MANAGED_EXTENSIONS' => array_keys($composer_manager->get_managed_packages()), + 'U_GALLERY_ACTION' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&mode=gallery"), )); + $this->request->disable_super_globals(); $this->tpl_name = 'acp_ext_list'; break; @@ -401,7 +407,7 @@ public function main_mode() $this->tpl_name = $tpl_name; } - public function gallery_mode() + public function gallery_mode($id, $mode) { global $phpbb_container; @@ -440,58 +446,131 @@ public function gallery_mode() } catch (\phpbb\exception\runtime_exception $e) { - $this->tpl_name = 'detailled_message_body'; + $this->display_composer_exception($language, $e, $composer_io); + return; + } + $this->tpl_name = 'detailled_message_body'; - if ($e->getPrevious()) - { - $message_title = $language->lang_array($e->getMessage(), $e->get_parameters()); + $this->template->assign_vars(array( + 'MESSAGE_TITLE' => $language->lang('ACP_EXTENSIONS_INSTALL'), + 'MESSAGE_TEXT' => $language->lang('EXTENSIONS_INSTALLED') . adm_back_link($this->u_action), + 'MESSAGE_DETAIL' => $composer_io->getOutput(), + 'MESSAGE_DETAIL_LEGEND' => $language->lang('COMPOSER_OUTPUT'), + 'S_USER_NOTICE' => true, + ) + ); - if ($e->getPrevious() instanceof \phpbb\exception\exception_interface) - { - $message_text = $language->lang_array($e->getPrevious()->getMessage(), $e->getPrevious()->get_parameters()) . adm_back_link($this->u_action); - } - else - { - $message_text = $e->getPrevious()->getMessage(); - if (strpos($message_text, 'ext/') === 0 && strpos($message_text, 'does not exist and could not be created.') !== false) - { - $message_text = $language->lang('EXTENSIONS_DIR_NOT_WRITABLE'); - } - $message_text .= adm_back_link($this->u_action); - } - } - else - { - $message_title = $language->lang('INFORMATION'); - $message_text = $language->lang_array($e->getMessage(), $e->get_parameters()) . adm_back_link($this->u_action); - } + break; + case 'remove': + $extension = $this->request->variable('extension', ''); - $this->template->assign_vars(array( - 'MESSAGE_TITLE' => $message_title, - 'MESSAGE_TEXT' => $message_text, - 'MESSAGE_DETAIL' => $composer_io->getOutput(), - 'MESSAGE_DETAIL_LEGEND' => $language->lang('COMPOSER_OUTPUT'), - 'S_USER_ERROR' => true, - ) - ); + if (empty($extension)) + { + redirect($this->u_action); + } + $formatter = new \Composer\Console\HtmlOutputFormatter([ + 'warning' => new \Symfony\Component\Console\Formatter\OutputFormatterStyle('black', 'yellow') + ]); + + $composer_io = new \phpbb\composer\io\web_io($language, '', \Symfony\Component\Console\Output\OutputInterface::VERBOSITY_VERBOSE, $formatter); + + try + { + $this->request->enable_super_globals(); + $composer_manager->remove((array) $extension, $composer_io); + $this->request->disable_super_globals(); + } + catch (\phpbb\exception\runtime_exception $e) + { + $this->display_composer_exception($language, $e, $composer_io); return; } $this->tpl_name = 'detailled_message_body'; $this->template->assign_vars(array( - 'MESSAGE_TITLE' => $language->lang('ACP_EXTENSIONS_INSTALL'), - 'MESSAGE_TEXT' => $language->lang('EXTENSIONS_INSTALLED') . adm_back_link($this->u_action), + 'MESSAGE_TITLE' => $language->lang('ACP_EXTENSIONS_REMOVE'), + 'MESSAGE_TEXT' => $language->lang('EXTENSIONS_REMOVED') . adm_back_link($this->u_action), 'MESSAGE_DETAIL' => $composer_io->getOutput(), 'MESSAGE_DETAIL_LEGEND' => $language->lang('COMPOSER_OUTPUT'), 'S_USER_NOTICE' => true, ) ); - return; + break; + case 'update': + $extension = $this->request->variable('extension', ''); + + if (empty($extension)) + { + redirect($this->u_action); + } + + $formatter = new \Composer\Console\HtmlOutputFormatter([ + 'warning' => new \Symfony\Component\Console\Formatter\OutputFormatterStyle('black', 'yellow') + ]); + + $composer_io = new \phpbb\composer\io\web_io($language, '', \Symfony\Component\Console\Output\OutputInterface::VERBOSITY_VERBOSE, $formatter); + + try + { + $this->request->enable_super_globals(); + $composer_manager->update((array) $extension, $composer_io); + $this->request->disable_super_globals(); + } + catch (\phpbb\exception\runtime_exception $e) + { + $this->display_composer_exception($language, $e, $composer_io); + return; + } + $this->tpl_name = 'detailled_message_body'; + + $this->template->assign_vars(array( + 'MESSAGE_TITLE' => $language->lang('ACP_EXTENSIONS_UPDATE'), + 'MESSAGE_TEXT' => $language->lang('EXTENSIONS_UPDATED') . adm_back_link($this->u_action), + 'MESSAGE_DETAIL' => $composer_io->getOutput(), + 'MESSAGE_DETAIL_LEGEND' => $language->lang('COMPOSER_OUTPUT'), + 'S_USER_NOTICE' => true, + ) + ); break; - case 'remove': + case 'manage': + $extension = $this->request->variable('extension', ''); + + if (empty($extension)) + { + redirect($this->u_action); + } + + $formatter = new \Composer\Console\HtmlOutputFormatter([ + 'warning' => new \Symfony\Component\Console\Formatter\OutputFormatterStyle('black', 'yellow') + ]); + + $composer_io = new \phpbb\composer\io\web_io($language, '', \Symfony\Component\Console\Output\OutputInterface::VERBOSITY_VERBOSE, $formatter); + + try + { + $this->request->enable_super_globals(); + $composer_manager->start_managing($extension, $composer_io); + $this->request->disable_super_globals(); + } + catch (\phpbb\exception\runtime_exception $e) + { + $this->display_composer_exception($language, $e, $composer_io); + return; + } + $this->tpl_name = 'detailled_message_body'; + + $this->template->assign_vars(array( + 'MESSAGE_TITLE' => $language->lang('ACP_EXTENSIONS_MANAGE'), + 'MESSAGE_TEXT' => $language->lang('EXTENSION_MANAGED') . adm_back_link($this->u_action), + 'MESSAGE_DETAIL' => $composer_io->getOutput(), + 'MESSAGE_DETAIL_LEGEND' => $language->lang('COMPOSER_OUTPUT'), + 'S_USER_NOTICE' => true, + ) + ); + break; case 'list': default: @@ -510,6 +589,51 @@ public function gallery_mode() } } + /** + * Display an exception raised by the composer manager + * + * @param \phpbb\language\language $language + * @param \phpbb\exception\runtime_exception $e + * @param \phpbb\composer\io\web_io $composer_io + */ + private function display_composer_exception(\phpbb\language\language $language, \phpbb\exception\runtime_exception $e, \phpbb\composer\io\web_io $composer_io) + { + $this->tpl_name = 'detailled_message_body'; + + if ($e->getPrevious()) + { + $message_title = $language->lang_array($e->getMessage(), $e->get_parameters()); + + if ($e->getPrevious() instanceof \phpbb\exception\exception_interface) + { + $message_text = $language->lang_array($e->getPrevious()->getMessage(), $e->getPrevious()->get_parameters()) . adm_back_link($this->u_action); + } + else + { + $message_text = $e->getPrevious()->getMessage(); + if (strpos($message_text, 'ext/') === 0 && strpos($message_text, 'does not exist and could not be created.') !== false) + { + $message_text = $language->lang('EXTENSIONS_DIR_NOT_WRITABLE'); + } + $message_text .= adm_back_link($this->u_action); + } + } + else + { + $message_title = $language->lang('INFORMATION'); + $message_text = $language->lang_array($e->getMessage(), $e->get_parameters()) . adm_back_link($this->u_action); + } + + $this->template->assign_vars(array( + 'MESSAGE_TITLE' => $message_title, + 'MESSAGE_TEXT' => $message_text, + 'MESSAGE_DETAIL' => $composer_io->getOutput(), + 'MESSAGE_DETAIL_LEGEND' => $language->lang('COMPOSER_OUTPUT'), + 'S_USER_ERROR' => true, + ) + ); + } + /** * Lists all the enabled extensions and dumps to the template * @@ -529,6 +653,7 @@ public function list_enabled_exts() $enabled_extension_meta_data[$name] = array( 'META_DISPLAY_NAME' => $md_manager->get_metadata('display-name'), 'META_VERSION' => $meta['version'], + 'META_NAME' => $md_manager->get_metadata('name'), ); if (isset($meta['extra']['version-check'])) @@ -600,6 +725,7 @@ public function list_disabled_exts() $disabled_extension_meta_data[$name] = array( 'META_DISPLAY_NAME' => $md_manager->get_metadata('display-name'), 'META_VERSION' => $meta['version'], + 'META_NAME' => $md_manager->get_metadata('name'), ); if (isset($meta['extra']['version-check'])) @@ -671,6 +797,7 @@ public function list_available_exts() $available_extension_meta_data[$name] = array( 'META_DISPLAY_NAME' => $md_manager->get_metadata('display-name'), 'META_VERSION' => $meta['version'], + 'META_NAME' => $md_manager->get_metadata('name'), ); if (isset($meta['extra']['version-check'])) diff --git a/phpBB/language/en/common.php b/phpBB/language/en/common.php index 709b7d9731a..e2198655c93 100644 --- a/phpBB/language/en/common.php +++ b/phpBB/language/en/common.php @@ -153,6 +153,7 @@ 'BYTES_SHORT' => 'B', 'CANCEL' => 'Cancel', + 'CANNOT_RENAME_FILE' => 'Cannot rename %s', 'CHANGE' => 'Change', 'CHANGE_FONT_SIZE' => 'Change font size', 'CHANGING_PREFERENCES' => 'Changing board preferences', diff --git a/phpBB/phpbb/composer/extension_manager.php b/phpBB/phpbb/composer/extension_manager.php index 49f27762c2b..d877d286766 100644 --- a/phpBB/phpbb/composer/extension_manager.php +++ b/phpBB/phpbb/composer/extension_manager.php @@ -187,7 +187,7 @@ public function start_managing($package, $io) $this->extension_manager->disable($package); } - $ext_path = $this->extension_manager->get_extension_path($package); + $ext_path = $this->extension_manager->get_extension_path($package, true); $backup_path = rtrim($ext_path, '/') . '__backup__'; try @@ -201,7 +201,7 @@ public function start_managing($package, $io) try { - $this->install((array) $package); + $this->install((array) $package, $io); $this->filesystem->remove($backup_path); } catch (runtime_exception $e) From 76a9bb22754c1335aae7c46c745101a0c95398aa Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Mon, 14 Sep 2015 18:54:16 +0200 Subject: [PATCH 126/431] [ticket/11150] Display extensions with the display_name in the gallery PHPBB3-11150 --- phpBB/adm/style/acp_ext_gallery.html | 2 +- phpBB/phpbb/composer/installer.php | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/phpBB/adm/style/acp_ext_gallery.html b/phpBB/adm/style/acp_ext_gallery.html index b8d940935e8..5b9916bf7c7 100644 --- a/phpBB/adm/style/acp_ext_gallery.html +++ b/phpBB/adm/style/acp_ext_gallery.html @@ -44,7 +44,7 @@

      {{lang( 'EXTENSIONS_ADMIN') }}

      {% for extension in extensions %} - {{ extension.name }}
      + {{ extension.display_name }}
      {{ lang('HOMEPAGE') }} • {% if extension.name in managed_extensions %} diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 18e1b6e83b9..1ba3ed42a2f 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -365,6 +365,7 @@ protected function do_get_available_packages($type) // Generates the entry $available[$name] = []; $available[$name]['name'] = $highest_version->getPrettyName(); + $available[$name]['display_name'] = $highest_version->getExtra()['display-name']; $available[$name]['composer_name'] = $highest_version->getName(); $available[$name]['version'] = $highest_version->getPrettyVersion(); From c12cfdad9d20b1c4f5ee7b1a71ac6643c966ada1 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Mon, 14 Sep 2015 18:59:00 +0200 Subject: [PATCH 127/431] [ticket/11150] Move actions to a dedicated collumn in the gallery PHPBB3-11150 --- phpBB/adm/style/acp_ext_gallery.html | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/phpBB/adm/style/acp_ext_gallery.html b/phpBB/adm/style/acp_ext_gallery.html index 5b9916bf7c7..50057f1c4f1 100644 --- a/phpBB/adm/style/acp_ext_gallery.html +++ b/phpBB/adm/style/acp_ext_gallery.html @@ -32,12 +32,13 @@

      {{lang( 'EXTENSIONS_ADMIN') }}

      - + - + + @@ -46,18 +47,20 @@

      {{lang( 'EXTENSIONS_ADMIN') }}

      - + + {% endfor %} From f6a867af5f205a25e70068aa7e6573d332ff818b Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Mon, 14 Sep 2015 19:05:04 +0200 Subject: [PATCH 128/431] [ticket/11150] Move homepage and display package name PHPBB3-11150 --- phpBB/adm/style/acp_ext_gallery.html | 10 +++++----- phpBB/adm/style/acp_ext_list.html | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/phpBB/adm/style/acp_ext_gallery.html b/phpBB/adm/style/acp_ext_gallery.html index 50057f1c4f1..6003875f5e2 100644 --- a/phpBB/adm/style/acp_ext_gallery.html +++ b/phpBB/adm/style/acp_ext_gallery.html @@ -46,15 +46,15 @@

      {{lang( 'EXTENSIONS_ADMIN') }}

      - + From bf5462e7083339dbbf9e085289c277e31d7a1c82 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Mon, 14 Sep 2015 19:06:49 +0200 Subject: [PATCH 129/431] [ticket/11150] Resizes some columns PHPBB3-11150 --- phpBB/adm/style/acp_ext_gallery.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phpBB/adm/style/acp_ext_gallery.html b/phpBB/adm/style/acp_ext_gallery.html index 6003875f5e2..5bf3e295c8c 100644 --- a/phpBB/adm/style/acp_ext_gallery.html +++ b/phpBB/adm/style/acp_ext_gallery.html @@ -35,10 +35,10 @@

      {{lang( 'EXTENSIONS_ADMIN') }}

      - + - + From 8db408a21c2b1a0eb466ba8a7bfc251be8c3d8c4 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Mon, 14 Sep 2015 19:11:52 +0200 Subject: [PATCH 130/431] [ticket/11150] Resize actions column PHPBB3-11150 --- phpBB/adm/style/acp_ext_gallery.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phpBB/adm/style/acp_ext_gallery.html b/phpBB/adm/style/acp_ext_gallery.html index 5bf3e295c8c..eaf57ac284a 100644 --- a/phpBB/adm/style/acp_ext_gallery.html +++ b/phpBB/adm/style/acp_ext_gallery.html @@ -38,7 +38,7 @@

      {{lang( 'EXTENSIONS_ADMIN') }}

      - + @@ -46,7 +46,7 @@

      {{lang( 'EXTENSIONS_ADMIN') }}

      From 3a1f2ad3ff8a0aa5fcdfba43d8c963d29c77d3ed Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Mon, 14 Sep 2015 19:49:15 +0200 Subject: [PATCH 131/431] [ticket/11150] Sorts extensions by display name PHPBB3-11150 --- phpBB/phpbb/composer/installer.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 1ba3ed42a2f..ab1af35525a 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -383,7 +383,10 @@ protected function do_get_available_packages($type) } } - ksort($available); + usort($available, function($a, $b) + { + return strcmp($a['display_name'], $b['display_name']); + }); return $available; } From 3d363a7bb3ae8f76b352a095e1cdbff83dfd3d4f Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Mon, 14 Sep 2015 23:27:10 +0200 Subject: [PATCH 132/431] [ticket/11150] Gallery pagination PHPBB3-11150 --- phpBB/adm/style/acp_ext_gallery.html | 99 +++++++++++++++------------ phpBB/adm/style/admin.css | 10 +++ phpBB/includes/acp/acp_extensions.php | 14 +++- 3 files changed, 78 insertions(+), 45 deletions(-) diff --git a/phpBB/adm/style/acp_ext_gallery.html b/phpBB/adm/style/acp_ext_gallery.html index eaf57ac284a..4a435f48385 100644 --- a/phpBB/adm/style/acp_ext_gallery.html +++ b/phpBB/adm/style/acp_ext_gallery.html @@ -1,18 +1,23 @@ - +{% include('overall_header.html') %} -

      {{lang( 'EXTENSIONS_ADMIN') }}

      +

      {{lang( 'EXTENSIONS_ADMIN') }}

      -

      {{lang( 'EXTENSIONS_EXPLAIN') }}

      +

      {{lang( 'EXTENSIONS_EXPLAIN') }}

      -
      - {{ lang('BROWSE_EXTENSIONS_DATABASE') }}{{ lang('SETTINGS') }} -
      +
      + {{ lang('BROWSE_EXTENSIONS_DATABASE') }}{{ lang('SETTINGS') }} +
      - +{% if pagination is defined %} + +{% endif %} -
      + +
      {{ lang('EXTENSIONS_GALLERY_SETTINGS') }}
      @@ -29,41 +34,47 @@

      {{lang( 'EXTENSIONS_ADMIN') }}

      {{ S_FORM_TOKEN }}

      - + + +
      {{ lang("EXTENSION_NAME") }}{{ lang("VERSION") }}{{ lang("VERSION") }} {{ lang("DESCRIPTION") }}{{ lang("EXTENSION_ACTIONS") }}
      {{ extension.display_name }}
      - {{ lang('HOMEPAGE') }} • - {% if extension.name in managed_extensions %} - {{ lang('INSTALLED') }} - {% elseif extension.name in installed_extensions -%} - {{ lang('INSTALLED_MANUALLY') }} ({{ lang('MANAGE') }}) - {% else -%} - {{ lang('INSTALL') }} - {%- endif -%} + {{ lang('HOMEPAGE') }}
      {{ extension.version }}{{ extension.version }} {{ extension.description }} + {% if extension.name in managed_extensions %} + {{ lang('INSTALLED') }} + {% elseif extension.name in installed_extensions -%} + {{ lang('INSTALLED_MANUALLY') }} ({{ lang('MANAGE') }}) + {% else -%} + {{ lang('INSTALL') }} + {%- endif -%} +
      {{ extension.display_name }}
      - - {{ lang('HOMEPAGE') }} - + {{ extension.name }}
      {{ extension.version }}{{ extension.description }}{{ extension.description }} • {{ lang('HOMEPAGE') }} {% if extension.name in managed_extensions %} - {{ lang('INSTALLED') }} + {{ lang('INSTALLED') }}
      + ({{ lang('UPDATE') }} + • {{ lang('REMOVE') }}) {% elseif extension.name in installed_extensions -%} {{ lang('INSTALLED_MANUALLY') }} ({{ lang('MANAGE') }}) {% else -%} diff --git a/phpBB/adm/style/acp_ext_list.html b/phpBB/adm/style/acp_ext_list.html index 80163684c15..da7c58591fd 100644 --- a/phpBB/adm/style/acp_ext_list.html +++ b/phpBB/adm/style/acp_ext_list.html @@ -66,6 +66,7 @@

      {L_EXTENSIONS_ADMIN}

       |  {L_UPDATE} +  | {L_REMOVE}
      {{ lang("EXTENSION_NAME") }}{{ lang("EXTENSION_NAME") }} {{ lang("VERSION") }} {{ lang("DESCRIPTION") }}{{ lang("EXTENSION_ACTIONS") }}{{ lang("EXTENSION_ACTIONS") }}
      {{ lang("EXTENSION_NAME") }} {{ lang("VERSION") }} {{ lang("DESCRIPTION") }}{{ lang("EXTENSION_ACTIONS") }}{{ lang("EXTENSION_ACTIONS") }}
      {{ extension.display_name }}
      - {{ extension.name }} + {{ extension.name }}
      {{ extension.version }} {{ extension.description }} • {{ lang('HOMEPAGE') }}
      + + + + + + + + + + +{% for extension in extensions %} + + + + + + +{% endfor %} + +
      {{ lang("EXTENSION_NAME") }}{{ lang("VERSION") }}{{ lang("DESCRIPTION") }}{{ lang("EXTENSION_ACTIONS") }}
      + {{ extension.display_name }}
      + {{ extension.name }} +
      {{ extension.version }}{{ extension.description }} • {{ lang('HOMEPAGE') }} + {% if extension.name in managed_extensions %} + {{ lang('INSTALLED') }}
      + ({{ lang('UPDATE') }} + • {{ lang('REMOVE') }}) + {% elseif extension.name in installed_extensions -%} + {{ lang('INSTALLED_MANUALLY') }} ({{ lang('MANAGE') }}) + {% else -%} + {{ lang('INSTALL') }} + {%- endif -%} +
      - - - - - - - - - - - - {% for extension in extensions %} - - - - - - - {% endfor %} - -
      {{ lang("EXTENSION_NAME") }}{{ lang("VERSION") }}{{ lang("DESCRIPTION") }}{{ lang("EXTENSION_ACTIONS") }}
      - {{ extension.display_name }}
      - {{ extension.name }} -
      {{ extension.version }}{{ extension.description }} • {{ lang('HOMEPAGE') }} - {% if extension.name in managed_extensions %} - {{ lang('INSTALLED') }}
      - ({{ lang('UPDATE') }} - • {{ lang('REMOVE') }}) - {% elseif extension.name in installed_extensions -%} - {{ lang('INSTALLED_MANUALLY') }} ({{ lang('MANAGE') }}) - {% else -%} - {{ lang('INSTALL') }} - {%- endif -%} -
      +{% if pagination is defined %} + +{% endif %} - +{% include('overall_footer.html') %} diff --git a/phpBB/adm/style/admin.css b/phpBB/adm/style/admin.css index f81dd35531a..290fee2983e 100644 --- a/phpBB/adm/style/admin.css +++ b/phpBB/adm/style/admin.css @@ -1333,6 +1333,16 @@ p.quick { text-align: left; } +fieldset.quick-left, p.quick-left { + margin: 15px 0 5px 0; + padding: 0 0px 0; + float: left; +} + +.rtl fieldset.quick-left, .rtl p.quick-left { + float: right; +} + fieldset.quick legend { display: none; } diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index bcb057ddb94..8c144b09fc3 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -576,11 +576,23 @@ public function gallery_mode($id, $mode) default: /** @var \phpbb\composer\extension_manager $manager */ $manager = $phpbb_container->get('ext.composer.manager'); + + /** @var \phpbb\pagination $pagination */ + $pagination = $phpbb_container->get('pagination'); + + $start = $this->request->variable('start', 0); + $base_url = $this->u_action; + + $available_extensions = $manager->get_available_packages(); + $extensions = array_slice($available_extensions, $start, 20); + + $pagination->generate_template_pagination($base_url, 'pagination', 'start', count($available_extensions), 20, $start); + $this->page_title = 'ACP_EXTENSIONS_GALLERY'; $this->tpl_name = 'acp_ext_gallery'; $this->request->enable_super_globals(); - $this->template->assign_var('extensions', $manager->get_available_packages()); + $this->template->assign_var('extensions', $extensions); $this->template->assign_var('managed_extensions', array_keys($manager->get_managed_packages())); $this->template->assign_var('installed_extensions', array_keys($extensions_manager->all_available())); $this->template->assign_var('U_ACTION', $this->u_action); From 3640302afd27f1e7dab08592f28ded507c1d7cbe Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Tue, 15 Sep 2015 10:54:38 +0200 Subject: [PATCH 133/431] [ticket/11150] Set settings PHPBB3-11150 --- phpBB/adm/style/acp_ext_gallery.html | 24 ++++++++-- phpBB/adm/style/acp_ext_list.html | 2 +- phpBB/includes/acp/acp_extensions.php | 47 +++++++++++++++++++ phpBB/language/en/acp/extensions.php | 6 +++ .../data/v320/extensions_composer.php | 2 + 5 files changed, 77 insertions(+), 4 deletions(-) diff --git a/phpBB/adm/style/acp_ext_gallery.html b/phpBB/adm/style/acp_ext_gallery.html index 4a435f48385..72ec92785cf 100644 --- a/phpBB/adm/style/acp_ext_gallery.html +++ b/phpBB/adm/style/acp_ext_gallery.html @@ -20,10 +20,28 @@

      {{lang( 'EXTENSIONS_ADMIN') }}

      {{ lang('EXTENSIONS_GALLERY_SETTINGS') }}
      -
      +
      - - + + +
      +
      +
      +
      +
      + + +
      +
      +
      +
      +
      + + {{ lang('WARNING') }}{{ lang('COLON') }} {{ lang('ENABLE_PACKAGIST_DETAIL') }} +
      +
      + +
      diff --git a/phpBB/adm/style/acp_ext_list.html b/phpBB/adm/style/acp_ext_list.html index da7c58591fd..0ab620b864c 100644 --- a/phpBB/adm/style/acp_ext_list.html +++ b/phpBB/adm/style/acp_ext_list.html @@ -7,7 +7,7 @@

      {L_EXTENSIONS_ADMIN}

      {L_EXTENSIONS_EXPLAIN}

      - {L_BROWSE_EXTENSIONS_DATABASE}{L_VERSIONCHECK_FORCE_UPDATE_ALL}{L_SETTINGS} + {L_VERSIONCHECK_FORCE_UPDATE_ALL}{L_SETTINGS}
      +
      +
      + + + {{ lang('COMPOSER_REPOSITORIES_EXPLAIN') }} + +
      +
      + +
      +

      - {{ lang('WARNING') }}{{ lang('COLON') }} {{ lang('ENABLE_PACKAGIST_DETAIL') }} -
      + {{ lang('WARNING') }}{{ lang('COLON') }} {{ lang('ENABLE_PACKAGIST_EXPLAIN') }} + +
      diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index c12348a0205..145d1c20a91 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -638,7 +638,7 @@ public function gallery_mode($id, $mode) 'enable_packagist' => $this->config['exts_composer_packagist'], 'enable_on_install' => $this->config['exts_composer_enable_on_install'], 'purge_on_remove' => $this->config['exts_composer_purge_on_remove'], - 'repositories' => unserialize($this->config['exts_composer_repositories']), + 'repositories' => ['a', 'b', 'c'],//unserialize($this->config['exts_composer_repositories']), ]); $this->request->disable_super_globals(); diff --git a/phpBB/language/en/acp/extensions.php b/phpBB/language/en/acp/extensions.php index f4ab2bf469f..9d669a7587f 100644 --- a/phpBB/language/en/acp/extensions.php +++ b/phpBB/language/en/acp/extensions.php @@ -148,5 +148,5 @@ 'ENABLE_ON_INSTALL' => 'Enable extensions when installing', 'PURGE_ON_REMOVE' => 'Purge extensions when removing', 'ENABLE_PACKAGIST' => 'Enable Packagist usage', - 'ENABLE_PACKAGIST_DETAIL' => 'TODO text explaining why packagist shouldn\'t be enabled, dev usage, etc...', + 'ENABLE_PACKAGIST_EXPLAIN' => 'TODO text explaining why packagist shouldn\'t be enabled, dev usage, etc...', )); From 8f1d254191b94f6e65bdee92aefd608d25eb6dd6 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Tue, 15 Sep 2015 11:57:09 +0200 Subject: [PATCH 135/431] [ticket/11150] Repositories settings - end PHPBB3-11150 --- phpBB/adm/style/acp_ext_gallery.html | 2 +- phpBB/includes/acp/acp_extensions.php | 9 +++++---- phpBB/phpbb/composer/installer.php | 3 --- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/phpBB/adm/style/acp_ext_gallery.html b/phpBB/adm/style/acp_ext_gallery.html index fc641a8b230..b2ef0332889 100644 --- a/phpBB/adm/style/acp_ext_gallery.html +++ b/phpBB/adm/style/acp_ext_gallery.html @@ -35,7 +35,7 @@

      {{lang( 'EXTENSIONS_ADMIN') }}

      - +
      {{ lang('COMPOSER_REPOSITORIES_EXPLAIN') }} diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index 145d1c20a91..bbb27159b14 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -576,7 +576,7 @@ public function gallery_mode($id, $mode) break; case 'list': default: - if ($this->request->is_set('enable_packagist') && confirm_box(true)) + if (!$this->config['exts_composer_packagist'] && $this->request->is_set('enable_packagist') && confirm_box(true)) { $this->config->set('exts_composer_packagist', true); trigger_error($language->lang('CONFIG_UPDATED') . adm_back_link($this->u_action)); @@ -593,11 +593,12 @@ public function gallery_mode($id, $mode) $enable_packagist = $this->request->variable('enable_packagist', false); $enable_on_install = $this->request->variable('enable_on_install', false); $purge_on_remove = $this->request->variable('purge_on_remove', false); - //$repositories = $this->request->variable('repositories', []); + $repositories = array_unique(explode("\n", $this->request->variable('repositories', ''))); $this->config->set('exts_composer_enable_on_install', $enable_on_install); $this->config->set('exts_composer_purge_on_remove', $purge_on_remove); - if ($enable_packagist) + $this->config->set('exts_composer_repositories', serialize($repositories)); + if (!$this->config['exts_composer_packagist'] && $enable_packagist) { $s_hidden_fields = build_hidden_fields(array( 'enable_packagist' => $enable_packagist @@ -638,7 +639,7 @@ public function gallery_mode($id, $mode) 'enable_packagist' => $this->config['exts_composer_packagist'], 'enable_on_install' => $this->config['exts_composer_enable_on_install'], 'purge_on_remove' => $this->config['exts_composer_purge_on_remove'], - 'repositories' => ['a', 'b', 'c'],//unserialize($this->config['exts_composer_repositories']), + 'repositories' => unserialize($this->config['exts_composer_repositories']), ]); $this->request->disable_super_globals(); diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index ab1af35525a..1640c334f0a 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -83,9 +83,6 @@ public function __construct($root_path, config $config = null) $this->packages_vendor_dir = $config['exts_composer_vendor_dir']; } - $this->repositories = [/*'http://phpbb.local/ext/phpbb/titania/composer/'*/]; - $this->packagist = true; - $this->root_path = $root_path; } From 46972aa4c7647e176bc1b7e051054cb8eb5ded43 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Tue, 15 Sep 2015 12:33:19 +0200 Subject: [PATCH 136/431] [ticket/11150] Enforce enable on install and purge on remove options PHPBB3-11150 --- phpBB/includes/acp/acp_extensions.php | 1 + phpBB/phpbb/composer/extension_manager.php | 84 ++++++++++++++++++- phpBB/phpbb/composer/installer.php | 6 +- .../console/command/extension/install.php | 25 ++++-- .../command/extension/list_available.php | 2 + .../console/command/extension/remove.php | 25 ++++-- 6 files changed, 125 insertions(+), 18 deletions(-) diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index bbb27159b14..eec896cbfe1 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -598,6 +598,7 @@ public function gallery_mode($id, $mode) $this->config->set('exts_composer_enable_on_install', $enable_on_install); $this->config->set('exts_composer_purge_on_remove', $purge_on_remove); $this->config->set('exts_composer_repositories', serialize($repositories)); + if (!$this->config['exts_composer_packagist'] && $enable_packagist) { $s_hidden_fields = build_hidden_fields(array( diff --git a/phpBB/phpbb/composer/extension_manager.php b/phpBB/phpbb/composer/extension_manager.php index d877d286766..8b2388e6939 100644 --- a/phpBB/phpbb/composer/extension_manager.php +++ b/phpBB/phpbb/composer/extension_manager.php @@ -17,8 +17,8 @@ use phpbb\cache\driver\driver_interface; use phpbb\composer\exception\managed_with_clean_error_exception; use phpbb\composer\exception\managed_with_enable_error_exception; -use phpbb\composer\exception\managed_with_error_exception; use phpbb\composer\exception\runtime_exception; +use phpbb\config\config; use phpbb\extension\manager as ext_manager; use phpbb\filesystem\exception\filesystem_exception; use phpbb\filesystem\filesystem; @@ -43,6 +43,16 @@ class extension_manager extends manager */ private $enabled_extensions; + /** + * @var bool Enables extensions when installing them? + */ + private $enable_on_install = false; + + /** + * @var bool Purges extensions data when removing them? + */ + private $purge_on_remove = false; + /** * @param installer $installer Installer object * @param driver_interface $cache Cache object @@ -50,12 +60,19 @@ class extension_manager extends manager * @param filesystem $filesystem Filesystem object * @param string $package_type Composer type of managed packages * @param string $exception_prefix Exception prefix to use + * @param config $config Config object */ - public function __construct(installer $installer, driver_interface $cache, ext_manager $extension_manager, filesystem $filesystem, $package_type, $exception_prefix) + public function __construct(installer $installer, driver_interface $cache, ext_manager $extension_manager, filesystem $filesystem, $package_type, $exception_prefix, config $config = null) { $this->extension_manager = $extension_manager; $this->filesystem = $filesystem; + if ($config) + { + $this->enable_on_install = (bool) $config['exts_composer_enable_on_install']; + $this->purge_on_remove = (bool) $config['exts_composer_purge_on_remove']; + } + parent::__construct($installer, $cache, $package_type, $exception_prefix); } @@ -71,6 +88,32 @@ public function pre_install(array $packages, IOInterface $io = null) } } + /** + * {@inheritdoc} + */ + public function post_install(array $packages, IOInterface $io = null) + { + if ($this->enable_on_install) + { + $io->writeError('ENABLING_EXTENSIONS', true, 1); + foreach ($packages as $package) + { + try + { + $this->extension_manager->enable($package); + } + catch (\phpbb\exception\runtime_exception $e) + { + $io->writeError([$e->getMessage(), $e->get_parameters()], true, 4); + } + catch (\Exception $e) + { + $io->writeError($e->getMessage(), true, 4); + } + } + } + } + /** * {@inheritdoc} */ @@ -143,14 +186,25 @@ public function remove(array $packages, IOInterface $io = null) */ public function pre_remove(array $packages, IOInterface $io = null) { - $io->writeError('DISABLING_EXTENSIONS', true, 1); + if ($this->purge_on_remove) + { + $io->writeError('DISABLING_EXTENSIONS', true, 1); + } + foreach ($packages as $package) { try { if ($this->extension_manager->is_enabled($package)) { - $this->extension_manager->disable($package); + if ($this->purge_on_remove) + { + $this->extension_manager->purge($package); + } + else + { + $this->extension_manager->disable($package); + } } } catch (\phpbb\exception\runtime_exception $e) @@ -227,4 +281,26 @@ public function start_managing($package, $io) } } } + + /** + * Enable the extensions when installing + * + * Warning: Only the explicitly required extensions will be enabled + * + * @param bool $enable + */ + public function set_enable_on_install($enable) + { + $this->enable_on_install = $enable; + } + + /** + * Purge the extension when disabling it + * + * @param bool $purge + */ + public function set_purge_on_remove($purge) + { + $this->purge_on_remove = $purge; + } } diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 1640c334f0a..4488aadb829 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -222,9 +222,11 @@ protected function do_get_installed_packages($types) foreach ($installed_packages as $package) { - if (array_key_exists($package->getName(), $required_links) && in_array($package->getType(), $types, true)) + if (in_array($package->getType(), $types, true)) { - $installed[$package->getName()] = $required_links[$package->getName()]->getPrettyConstraint(); + $version = array_key_exists($package->getName(), $required_links) ? + $required_links[$package->getName()]->getPrettyConstraint() : '*'; + $installed[$package->getName()] = $version; } } diff --git a/phpBB/phpbb/console/command/extension/install.php b/phpBB/phpbb/console/command/extension/install.php index aa9d5a68679..6365da4a0ce 100644 --- a/phpBB/phpbb/console/command/extension/install.php +++ b/phpBB/phpbb/console/command/extension/install.php @@ -13,19 +13,20 @@ namespace phpbb\console\command\extension; +use phpbb\composer\extension_manager; use phpbb\composer\io\console_io; -use phpbb\composer\manager_interface; use phpbb\language\language; use Symfony\Component\Console\Formatter\OutputFormatterStyle; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; class install extends \phpbb\console\command\command { /** - * @var manager_interface Composer extensions manager + * @var extension_manager Composer extensions manager */ protected $manager; @@ -34,11 +35,13 @@ class install extends \phpbb\console\command\command */ protected $language; - public function __construct(\phpbb\user $user, manager_interface $manager, language $language) + public function __construct(\phpbb\user $user, extension_manager $manager, language $language) { $this->manager = $manager; $this->language = $language; + $language->add_lang('acp/extensions'); + parent::__construct($user); } @@ -51,11 +54,16 @@ protected function configure() { $this ->setName('extension:install') - ->setDescription($this->user->lang('CLI_DESCRIPTION_EXTENSION_INSTALL')) + ->setDescription($this->language->lang('CLI_DESCRIPTION_EXTENSION_INSTALL')) + ->addOption( + 'enable', + 'e', + InputOption::VALUE_NONE, + $this->language->lang('CLI_DESCRIPTION_EXTENSION_INSTALL_OPTION_ENABLE')) ->addArgument( 'extensions', InputArgument::IS_ARRAY | InputArgument::REQUIRED, - $this->user->lang('CLI_DESCRIPTION_EXTENSION_INSTALL')) + $this->language->lang('CLI_DESCRIPTION_EXTENSION_INSTALL_ARGUMENT')) ; } @@ -74,9 +82,14 @@ protected function execute(InputInterface $input, OutputInterface $output) $composer_io = new console_io($input, $output, $this->getHelperSet(), $this->language); $extensions = $input->getArgument('extensions'); + if ($input->getOption('enable')) + { + $this->manager->set_enable_on_install(true); + } + $this->manager->install($extensions, $composer_io); - $io->success('All extensions installed'); + $io->success($this->language->lang('EXTENSIONS_INSTALLED')); return 0; } diff --git a/phpBB/phpbb/console/command/extension/list_available.php b/phpBB/phpbb/console/command/extension/list_available.php index c844201fd3f..2da8a988453 100644 --- a/phpBB/phpbb/console/command/extension/list_available.php +++ b/phpBB/phpbb/console/command/extension/list_available.php @@ -35,6 +35,8 @@ public function __construct(\phpbb\user $user, manager_interface $manager) { $this->manager = $manager; + $user->add_lang('acp/extensions'); + parent::__construct($user); } diff --git a/phpBB/phpbb/console/command/extension/remove.php b/phpBB/phpbb/console/command/extension/remove.php index d1f59dec5c2..181401e825c 100644 --- a/phpBB/phpbb/console/command/extension/remove.php +++ b/phpBB/phpbb/console/command/extension/remove.php @@ -13,19 +13,20 @@ namespace phpbb\console\command\extension; +use phpbb\composer\extension_manager; use phpbb\composer\io\console_io; -use phpbb\composer\manager_interface; use phpbb\language\language; use Symfony\Component\Console\Formatter\OutputFormatterStyle; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; class remove extends \phpbb\console\command\command { /** - * @var manager_interface Composer extensions manager + * @var extension_manager Composer extensions manager */ protected $manager; @@ -34,11 +35,13 @@ class remove extends \phpbb\console\command\command */ protected $language; - public function __construct(\phpbb\user $user, manager_interface $manager, language $language) + public function __construct(\phpbb\user $user, extension_manager $manager, language $language) { $this->manager = $manager; $this->language = $language; + $language->add_lang('acp/extensions'); + parent::__construct($user); } @@ -51,11 +54,16 @@ protected function configure() { $this ->setName('extension:remove') - ->setDescription($this->user->lang('CLI_DESCRIPTION_EXTENSION_REMOVE')) + ->setDescription($this->language->lang('CLI_DESCRIPTION_EXTENSION_REMOVE')) + ->addOption( + 'purge', + 'p', + InputOption::VALUE_NONE, + $this->language->lang('CLI_DESCRIPTION_EXTENSION_REMOVE_OPTION_URGE')) ->addArgument( 'extensions', InputArgument::IS_ARRAY | InputArgument::REQUIRED, - $this->user->lang('CLI_DESCRIPTION_EXTENSION_REMOVE')) + $this->language->lang('CLI_DESCRIPTION_EXTENSION_REMOVE')) ; } @@ -74,9 +82,14 @@ protected function execute(InputInterface $input, OutputInterface $output) $composer_io = new console_io($input, $output, $this->getHelperSet(), $this->language); $extensions = $input->getArgument('extensions'); + if ($input->getOption('purge')) + { + $this->manager->set_purge_on_remove(true); + } + $this->manager->remove($extensions, $composer_io); - $io->success('All extensions removed'); + $io->success($this->language->lang('EXTENSIONS_REMOVED')); return 0; } From 9b69cd74aeb3369cf469fdec549354b52af9128c Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Tue, 15 Sep 2015 13:52:29 +0200 Subject: [PATCH 137/431] [ticket/11150] Language keys PHPBB3-11150 --- .../default/container/services_console.yml | 18 ++++++------- phpBB/language/en/acp/extensions.php | 5 ++++ phpBB/language/en/cli.php | 12 +++++++++ .../{start_managing.php => manage.php} | 27 ++++++++++++------- .../console/command/extension/remove.php | 4 +-- .../console/command/extension/update.php | 4 +-- 6 files changed, 48 insertions(+), 22 deletions(-) rename phpBB/phpbb/console/command/extension/{start_managing.php => manage.php} (65%) diff --git a/phpBB/config/default/container/services_console.yml b/phpBB/config/default/container/services_console.yml index 3b05ef9d465..a59fe3cd7e0 100644 --- a/phpBB/config/default/container/services_console.yml +++ b/phpBB/config/default/container/services_console.yml @@ -158,6 +158,15 @@ services: tags: - { name: console.command } + console.command.extension.manage: + class: phpbb\console\command\extension\manage + arguments: + - @user + - @ext.composer.manager + - @language + tags: + - { name: console.command } + console.command.extension.purge: class: phpbb\console\command\extension\purge arguments: @@ -185,15 +194,6 @@ services: tags: - { name: console.command } - console.command.extension.start_managing: - class: phpbb\console\command\extension\start_managing - arguments: - - @user - - @ext.composer.manager - - @language - tags: - - { name: console.command } - console.command.extension.update: class: phpbb\console\command\extension\update arguments: diff --git a/phpBB/language/en/acp/extensions.php b/phpBB/language/en/acp/extensions.php index 9d669a7587f..e3ba8e89ead 100644 --- a/phpBB/language/en/acp/extensions.php +++ b/phpBB/language/en/acp/extensions.php @@ -149,4 +149,9 @@ 'PURGE_ON_REMOVE' => 'Purge extensions when removing', 'ENABLE_PACKAGIST' => 'Enable Packagist usage', 'ENABLE_PACKAGIST_EXPLAIN' => 'TODO text explaining why packagist shouldn\'t be enabled, dev usage, etc...', + + 'EXTENSION_MANAGED_SUCCESS' => 'The extension %s is now managed automatically.', + 'EXTENSIONS_INSTALLED' => 'Extensions successfully installed.', + 'EXTENSIONS_REMOVED' => 'Extensions successfully removed.', + 'EXTENSIONS_UPDATED' => 'Extensions successfully updated..', )); diff --git a/phpBB/language/en/cli.php b/phpBB/language/en/cli.php index 2f969ceede8..43211ce4798 100644 --- a/phpBB/language/en/cli.php +++ b/phpBB/language/en/cli.php @@ -157,6 +157,18 @@ 1 => 'Re-cleaning complete. %d username was cleaned.', 2 => 'Re-cleaning complete. %d usernames were cleaned.', ], + + 'CLI_DESCRIPTION_EXTENSION_MANAGE' => 'Manages an extension', + 'CLI_DESCRIPTION_EXTENSION_MANAGE_ARGUMENT' => 'Extension to manage', + 'CLI_DESCRIPTION_EXTENSION_INSTALL' => 'Install extensions', + 'CLI_DESCRIPTION_EXTENSION_INSTALL_OPTION_ENABLE' => 'Enable the extensions after installing them', + 'CLI_DESCRIPTION_EXTENSION_INSTALL_ARGUMENT' => 'Extensions to install', + 'CLI_DESCRIPTION_EXTENSION_LIST_AVAILABLE' => 'Show extensions available for installation', + 'CLI_DESCRIPTION_EXTENSION_REMOVE' => 'Removes extensions', + 'CLI_DESCRIPTION_EXTENSION_REMOVE_OPTION_PURGE' => 'Purge the extensions before removing them', + 'CLI_DESCRIPTION_EXTENSION_REMOVE_ARGUMENT' => 'Extensions to remove', + 'CLI_DESCRIPTION_EXTENSION_UPDATE' => 'Updates extensions', + 'CLI_DESCRIPTION_EXTENSION_UPDATE_ARGUMENT' => 'Extensions to update', )); // Additional help for commands. diff --git a/phpBB/phpbb/console/command/extension/start_managing.php b/phpBB/phpbb/console/command/extension/manage.php similarity index 65% rename from phpBB/phpbb/console/command/extension/start_managing.php rename to phpBB/phpbb/console/command/extension/manage.php index ba21f44a70a..f308bbfb368 100644 --- a/phpBB/phpbb/console/command/extension/start_managing.php +++ b/phpBB/phpbb/console/command/extension/manage.php @@ -14,25 +14,33 @@ namespace phpbb\console\command\extension; use phpbb\composer\exception\managed_with_error_exception; +use phpbb\composer\io\console_io; use phpbb\composer\manager; use phpbb\composer\manager_interface; +use phpbb\language\language; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; -class start_managing extends \phpbb\console\command\command +class manage extends \phpbb\console\command\command { /** * @var manager_interface Composer extensions manager */ protected $manager; - public function __construct(\phpbb\user $user, manager_interface $manager) + /** + * @var \phpbb\language\language + */ + protected $language; + + public function __construct(\phpbb\user $user, manager_interface $manager, language $language) { $this->manager = $manager; + $this->language = $language; - $user->add_lang('acp/extensions'); + $language->add_lang('acp/extensions'); parent::__construct($user); } @@ -45,12 +53,12 @@ public function __construct(\phpbb\user $user, manager_interface $manager) protected function configure() { $this - ->setName('extension:start-managing') - ->setDescription($this->user->lang('CLI_DESCRIPTION_EXTENSION_START_MANAGING')) + ->setName('extension:manage') + ->setDescription($this->language->lang('CLI_DESCRIPTION_EXTENSION_MANAGE')) ->addArgument( 'extension', InputArgument::REQUIRED, - $this->user->lang('CLI_DESCRIPTION_EXTENSION_START_MANAGING')) + $this->language->lang('CLI_DESCRIPTION_EXTENSION_MANAGE_ARGUMENT')) ; } @@ -64,20 +72,21 @@ protected function configure() protected function execute(InputInterface $input, OutputInterface $output) { $io = new SymfonyStyle($input, $output); + $composer_io = new console_io($input, $output, $this->getHelperSet(), $this->language); $extension = $input->getArgument('extension'); try { - $this->manager->start_managing($extension); + $this->manager->start_managing($extension, $composer_io); } catch (managed_with_error_exception $e) { - $io->warning(call_user_func_array([$this->user, 'lang'], [$e->getMessage(), $e->get_parameters()])); + $io->warning($this->language->lang_array($e->getMessage(), $e->get_parameters())); return 1; } - $io->success('The extension ' . $extension . ' is now managed automatically.'); + $io->success($this->language->lang('EXTENSION_MANAGED_SUCCESS', $extension)); return 0; } diff --git a/phpBB/phpbb/console/command/extension/remove.php b/phpBB/phpbb/console/command/extension/remove.php index 181401e825c..8cb6b6c68a4 100644 --- a/phpBB/phpbb/console/command/extension/remove.php +++ b/phpBB/phpbb/console/command/extension/remove.php @@ -59,11 +59,11 @@ protected function configure() 'purge', 'p', InputOption::VALUE_NONE, - $this->language->lang('CLI_DESCRIPTION_EXTENSION_REMOVE_OPTION_URGE')) + $this->language->lang('CLI_DESCRIPTION_EXTENSION_REMOVE_OPTION_PURGE')) ->addArgument( 'extensions', InputArgument::IS_ARRAY | InputArgument::REQUIRED, - $this->language->lang('CLI_DESCRIPTION_EXTENSION_REMOVE')) + $this->language->lang('CLI_DESCRIPTION_EXTENSION_REMOVE_ARGUMENT')) ; } diff --git a/phpBB/phpbb/console/command/extension/update.php b/phpBB/phpbb/console/command/extension/update.php index 7a38294ed40..073b38bae8e 100644 --- a/phpBB/phpbb/console/command/extension/update.php +++ b/phpBB/phpbb/console/command/extension/update.php @@ -55,7 +55,7 @@ protected function configure() ->addArgument( 'extensions', InputArgument::IS_ARRAY | InputArgument::REQUIRED, - $this->user->lang('CLI_DESCRIPTION_EXTENSION_UPDATE')) + $this->user->lang('CLI_DESCRIPTION_EXTENSION_UPDATE_ARGUMENT')) ; } @@ -76,7 +76,7 @@ protected function execute(InputInterface $input, OutputInterface $output) $this->manager->update($extensions, $composer_io); - $io->success('All extensions updated'); + $io->success($this->language->lang('EXTENSIONS_UPDATED')); return 0; } From 0a809fb90ebbb506b139c5587ef9a210deca62f0 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Tue, 15 Sep 2015 14:24:06 +0200 Subject: [PATCH 138/431] [ticket/11150] Add missing language keys PHPBB3-11150 --- phpBB/adm/style/acp_ext_gallery.html | 4 ++-- phpBB/includes/acp/acp_extensions.php | 3 ++- phpBB/language/en/acp/common.php | 5 +++++ phpBB/language/en/acp/extensions.php | 20 ++++++++++++++------ phpBB/phpbb/composer/manager.php | 8 ++++++++ phpBB/phpbb/composer/manager_interface.php | 7 +++++++ 6 files changed, 38 insertions(+), 9 deletions(-) diff --git a/phpBB/adm/style/acp_ext_gallery.html b/phpBB/adm/style/acp_ext_gallery.html index b2ef0332889..dfd8ffaf046 100644 --- a/phpBB/adm/style/acp_ext_gallery.html +++ b/phpBB/adm/style/acp_ext_gallery.html @@ -2,9 +2,9 @@ -

      {{lang( 'EXTENSIONS_ADMIN') }}

      +

      {{lang( 'EXTENSIONS_GALLERY') }}

      -

      {{lang( 'EXTENSIONS_EXPLAIN') }}

      +

      {{lang( 'EXTENSIONS_GALLERY_EXPLAIN') }}

      {{ lang('BROWSE_EXTENSIONS_DATABASE') }}{{ lang('SETTINGS') }} diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index eec896cbfe1..28f102e0066 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -566,7 +566,7 @@ public function gallery_mode($id, $mode) $this->template->assign_vars(array( 'MESSAGE_TITLE' => $language->lang('ACP_EXTENSIONS_MANAGE'), - 'MESSAGE_TEXT' => $language->lang('EXTENSION_MANAGED') . adm_back_link($this->u_action), + 'MESSAGE_TEXT' => $language->lang('EXTENSION_MANAGED_SUCCESS', $extension) . adm_back_link($this->u_action), 'MESSAGE_DETAIL' => $composer_io->getOutput(), 'MESSAGE_DETAIL_LEGEND' => $language->lang('COMPOSER_OUTPUT'), 'S_USER_NOTICE' => true, @@ -642,6 +642,7 @@ public function gallery_mode($id, $mode) 'purge_on_remove' => $this->config['exts_composer_purge_on_remove'], 'repositories' => unserialize($this->config['exts_composer_repositories']), ]); + $this->template->assign_var('enabled', $this->manager->check_requirements()); $this->request->disable_super_globals(); add_form_key('gallery_settings'); diff --git a/phpBB/language/en/acp/common.php b/phpBB/language/en/acp/common.php index 40b4a5d9d47..4657c08bcfd 100644 --- a/phpBB/language/en/acp/common.php +++ b/phpBB/language/en/acp/common.php @@ -89,6 +89,10 @@ 'ACP_EXTENSION_MANAGEMENT' => 'Extension management', 'ACP_EXTENSIONS' => 'Manage extensions', 'ACP_EXTENSIONS_GALLERY' => 'Extensions gallery', + 'ACP_EXTENSIONS_INSTALL' => 'Install extensions', + 'ACP_EXTENSIONS_REMOVE' => 'Remove extensions', + 'ACP_EXTENSIONS_UPDATE' => 'Update extensions', + 'ACP_EXTENSIONS_MANAGE' => 'Manage extension automatically', 'ACP_FORUM_BASED_PERMISSIONS' => 'Forum based permissions', 'ACP_FORUM_LOGS' => 'Forum logs', @@ -250,6 +254,7 @@ 'COMPOSER_INSTALLING_PACKAGE' => ' - Installing %1$s (%2$s)', 'COMPOSER_DELETING' => ' - Deleting %s', 'COMPOSER_UPDATE_NOTHING' => 'Nothing to update', + 'COMPOSER_OUTPUT' => 'Composer output', 'CONFIG_UPDATED' => 'Configuration updated successfully.', 'CRON_LOCK_ERROR' => 'Could not obtain cron lock.', diff --git a/phpBB/language/en/acp/extensions.php b/phpBB/language/en/acp/extensions.php index e3ba8e89ead..55a8778be07 100644 --- a/phpBB/language/en/acp/extensions.php +++ b/phpBB/language/en/acp/extensions.php @@ -45,6 +45,12 @@ 'EXTENSION_MANAGED_WITH_ENABLE_ERROR' => 'The “%s” extension has been installed but an error occurred when re-enabling it.', 'EXTENSION_NOT_INSTALLED' => 'The “%s” extension is not installed.', + 'ENABLING_EXTENSIONS' => 'Enabling extensions', + 'DISABLING_EXTENSIONS' => 'Disabling extensions', + + 'EXTENSIONS_GALLERY' => 'Extensions Gallery', + 'EXTENSIONS_GALLERY_EXPLAIN' => 'The Extensions Gallery is a tool in your phpBB Board which allows you to see all the extensions that are available for your board.', + 'EXTENSION' => 'Extension', 'EXTENSIONS' => 'Extensions', 'EXTENSIONS_ADMIN' => 'Extensions Manager', @@ -148,10 +154,12 @@ 'ENABLE_ON_INSTALL' => 'Enable extensions when installing', 'PURGE_ON_REMOVE' => 'Purge extensions when removing', 'ENABLE_PACKAGIST' => 'Enable Packagist usage', - 'ENABLE_PACKAGIST_EXPLAIN' => 'TODO text explaining why packagist shouldn\'t be enabled, dev usage, etc...', - - 'EXTENSION_MANAGED_SUCCESS' => 'The extension %s is now managed automatically.', - 'EXTENSIONS_INSTALLED' => 'Extensions successfully installed.', - 'EXTENSIONS_REMOVED' => 'Extensions successfully removed.', - 'EXTENSIONS_UPDATED' => 'Extensions successfully updated..', + 'ENABLE_PACKAGIST_EXPLAIN' => 'TODO: text explaining why packagist shouldn\'t be enabled, dev usage, etc...', + 'ENABLE_PACKAGIST_CONFIRM' => 'TODO: are you sure you ant to enable packagist?', + + 'EXTENSION_MANAGED_SUCCESS' => 'The extension %s is now managed automatically.', + 'EXTENSIONS_INSTALLED' => 'Extensions successfully installed.', + 'EXTENSIONS_REMOVED' => 'Extensions successfully removed.', + 'EXTENSIONS_UPDATED' => 'Extensions successfully updated.', + 'EXTENSIONS_DIR_NOT_WRITABLE' => 'The extension directory is not writable', )); diff --git a/phpBB/phpbb/composer/manager.php b/phpBB/phpbb/composer/manager.php index 1941e79fff5..286551ae950 100644 --- a/phpBB/phpbb/composer/manager.php +++ b/phpBB/phpbb/composer/manager.php @@ -271,6 +271,14 @@ public function start_managing($package, $io) throw new \phpbb\exception\runtime_exception('COMPOSER_UNSUPPORTED_OPERATION', (array) $this->package_type); } + /** + * {@inheritdoc} + */ + public function check_requirements() + { + return true; + } + protected function normalize_version($packages) { $normalized_packages = []; diff --git a/phpBB/phpbb/composer/manager_interface.php b/phpBB/phpbb/composer/manager_interface.php index 2572ba08312..ab36f58dc9a 100644 --- a/phpBB/phpbb/composer/manager_interface.php +++ b/phpBB/phpbb/composer/manager_interface.php @@ -89,4 +89,11 @@ public function get_available_packages(); * @throws runtime_exception */ public function start_managing($package, $io); + + /** + * Checks the requirements of the manager and returns true if it can be used. + * + * @return bool + */ + public function check_requirements(); } From cc0a762866fe625a8b284a2b8844c674ad1d4359 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Tue, 15 Sep 2015 14:48:21 +0200 Subject: [PATCH 139/431] [ticket/11150] Disable if directories not writable PHPBB3-11150 --- phpBB/adm/style/acp_ext_gallery.html | 14 ++++++++--- .../default/container/services_extensions.yml | 2 ++ phpBB/includes/acp/acp_extensions.php | 9 ++----- phpBB/language/en/acp/extensions.php | 3 ++- phpBB/phpbb/composer/extension_manager.php | 12 +++++++++- phpBB/phpbb/composer/installer.php | 24 ++++++++++++++++++- phpBB/phpbb/composer/manager.php | 2 +- .../console/command/extension/install.php | 9 ++++++- .../console/command/extension/manage.php | 7 ++++++ .../console/command/extension/remove.php | 9 ++++++- .../console/command/extension/update.php | 7 ++++++ 11 files changed, 82 insertions(+), 16 deletions(-) diff --git a/phpBB/adm/style/acp_ext_gallery.html b/phpBB/adm/style/acp_ext_gallery.html index dfd8ffaf046..d67b657c9c8 100644 --- a/phpBB/adm/style/acp_ext_gallery.html +++ b/phpBB/adm/style/acp_ext_gallery.html @@ -6,6 +6,12 @@

      {{lang( 'EXTENSIONS_GALLERY') }}

      {{lang( 'EXTENSIONS_GALLERY_EXPLAIN') }}

      +{% if not enabled %} +
      + {{ lang('EXTENSIONS_COMPOSER_NOT_WRITABLE') }} +
      +{% endif %} +
      {{ lang('BROWSE_EXTENSIONS_DATABASE') }}{{ lang('SETTINGS') }}
      @@ -87,12 +93,14 @@

      {{lang( 'EXTENSIONS_GALLERY') }}

      {{ extension.description }} • {{ lang('HOMEPAGE') }} {% if extension.name in managed_extensions %} - {{ lang('INSTALLED') }}
      + {{ lang('INSTALLED') }} + {%- if enabled -%}
      ({{ lang('UPDATE') }}{{ lang('REMOVE') }}) + {%- endif -%} {% elseif extension.name in installed_extensions -%} - {{ lang('INSTALLED_MANUALLY') }} ({{ lang('MANAGE') }}) - {% else -%} + {{ lang('INSTALLED_MANUALLY') }}{%- if enabled %} ({{ lang('MANAGE') }}){%- endif -%} + {% elseif enabled -%} {{ lang('INSTALL') }} {%- endif -%} diff --git a/phpBB/config/default/container/services_extensions.yml b/phpBB/config/default/container/services_extensions.yml index 77ff0d2ab99..b97ae1fa9c3 100644 --- a/phpBB/config/default/container/services_extensions.yml +++ b/phpBB/config/default/container/services_extensions.yml @@ -26,6 +26,8 @@ services: - @filesystem - phpbb-extension - EXTENSIONS_ + - %core.root_path% + - @config style.composer.manager: class: phpbb\composer\manager diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index 28f102e0066..4a89bb45a49 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -642,7 +642,7 @@ public function gallery_mode($id, $mode) 'purge_on_remove' => $this->config['exts_composer_purge_on_remove'], 'repositories' => unserialize($this->config['exts_composer_repositories']), ]); - $this->template->assign_var('enabled', $this->manager->check_requirements()); + $this->template->assign_var('enabled', $manager->check_requirements()); $this->request->disable_super_globals(); add_form_key('gallery_settings'); @@ -672,12 +672,7 @@ private function display_composer_exception(\phpbb\language\language $language, } else { - $message_text = $e->getPrevious()->getMessage(); - if (strpos($message_text, 'ext/') === 0 && strpos($message_text, 'does not exist and could not be created.') !== false) - { - $message_text = $language->lang('EXTENSIONS_DIR_NOT_WRITABLE'); - } - $message_text .= adm_back_link($this->u_action); + $message_text = $e->getPrevious()->getMessage() . adm_back_link($this->u_action); } } else diff --git a/phpBB/language/en/acp/extensions.php b/phpBB/language/en/acp/extensions.php index 55a8778be07..e65df90c9ca 100644 --- a/phpBB/language/en/acp/extensions.php +++ b/phpBB/language/en/acp/extensions.php @@ -161,5 +161,6 @@ 'EXTENSIONS_INSTALLED' => 'Extensions successfully installed.', 'EXTENSIONS_REMOVED' => 'Extensions successfully removed.', 'EXTENSIONS_UPDATED' => 'Extensions successfully updated.', - 'EXTENSIONS_DIR_NOT_WRITABLE' => 'The extension directory is not writable', + + 'EXTENSIONS_COMPOSER_NOT_WRITABLE' => 'TODO: some required files / directory are not writable => disable ', )); diff --git a/phpBB/phpbb/composer/extension_manager.php b/phpBB/phpbb/composer/extension_manager.php index 8b2388e6939..aef1513d4b0 100644 --- a/phpBB/phpbb/composer/extension_manager.php +++ b/phpBB/phpbb/composer/extension_manager.php @@ -60,12 +60,14 @@ class extension_manager extends manager * @param filesystem $filesystem Filesystem object * @param string $package_type Composer type of managed packages * @param string $exception_prefix Exception prefix to use + * @param string $root_path phpBB root path * @param config $config Config object */ - public function __construct(installer $installer, driver_interface $cache, ext_manager $extension_manager, filesystem $filesystem, $package_type, $exception_prefix, config $config = null) + public function __construct(installer $installer, driver_interface $cache, ext_manager $extension_manager, filesystem $filesystem, $package_type, $exception_prefix, $root_path, config $config = null) { $this->extension_manager = $extension_manager; $this->filesystem = $filesystem; + $this->root_path = $root_path; if ($config) { @@ -282,6 +284,14 @@ public function start_managing($package, $io) } } + /** + * {@inheritdoc} + */ + public function check_requirements() + { + return parent::check_requirements() && $this->filesystem->is_writable($this->root_path . 'ext/'); + } + /** * Enable the extensions when installing * diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 4488aadb829..9a02060316d 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -77,7 +77,13 @@ public function __construct($root_path, config $config = null) { if ($config) { - $this->repositories = (array) unserialize($config['exts_composer_repositories']); + $repositories = unserialize($config['exts_composer_repositories']); + + if (!is_array($repositories) && !empty($repositories)) + { + $this->repositories = (array) $repositories; + } + $this->packagist = (bool) $config['exts_composer_packagist']; $this->composer_filename = $config['exts_composer_json_file']; $this->packages_vendor_dir = $config['exts_composer_vendor_dir']; @@ -395,6 +401,22 @@ protected function do_get_available_packages($type) } } + /** + * Checks the requirements of the manager and returns true if it can be used. + * + * @return bool + */ + public function check_requirements() + { + $filesystem = new \phpbb\filesystem\filesystem(); + + return $filesystem->is_writable([ + $this->root_path . $this->composer_filename, + $this->root_path . $this->packages_vendor_dir, + $this->root_path . substr($this->composer_filename, 0, -5) . '.lock', + ]); + } + /** * Updates $compatible_packages with the versions of $versions compatibles with the $core_constraint * diff --git a/phpBB/phpbb/composer/manager.php b/phpBB/phpbb/composer/manager.php index 286551ae950..cffc6c85663 100644 --- a/phpBB/phpbb/composer/manager.php +++ b/phpBB/phpbb/composer/manager.php @@ -276,7 +276,7 @@ public function start_managing($package, $io) */ public function check_requirements() { - return true; + return $this->installer->check_requirements(); } protected function normalize_version($packages) diff --git a/phpBB/phpbb/console/command/extension/install.php b/phpBB/phpbb/console/command/extension/install.php index 6365da4a0ce..bbed53be306 100644 --- a/phpBB/phpbb/console/command/extension/install.php +++ b/phpBB/phpbb/console/command/extension/install.php @@ -57,7 +57,7 @@ protected function configure() ->setDescription($this->language->lang('CLI_DESCRIPTION_EXTENSION_INSTALL')) ->addOption( 'enable', - 'e', + null, InputOption::VALUE_NONE, $this->language->lang('CLI_DESCRIPTION_EXTENSION_INSTALL_OPTION_ENABLE')) ->addArgument( @@ -79,6 +79,13 @@ protected function execute(InputInterface $input, OutputInterface $output) $output->getFormatter()->setStyle('warning', new OutputFormatterStyle('black', 'yellow')); $io = new SymfonyStyle($input, $output); + + if (!$this->manager->check_requirements()) + { + $io->error($this->language->lang('EXTENSIONS_COMPOSER_NOT_WRITABLE')); + return 1; + } + $composer_io = new console_io($input, $output, $this->getHelperSet(), $this->language); $extensions = $input->getArgument('extensions'); diff --git a/phpBB/phpbb/console/command/extension/manage.php b/phpBB/phpbb/console/command/extension/manage.php index f308bbfb368..264d120c5da 100644 --- a/phpBB/phpbb/console/command/extension/manage.php +++ b/phpBB/phpbb/console/command/extension/manage.php @@ -72,6 +72,13 @@ protected function configure() protected function execute(InputInterface $input, OutputInterface $output) { $io = new SymfonyStyle($input, $output); + + if (!$this->manager->check_requirements()) + { + $io->error($this->language->lang('EXTENSIONS_COMPOSER_NOT_WRITABLE')); + return 1; + } + $composer_io = new console_io($input, $output, $this->getHelperSet(), $this->language); $extension = $input->getArgument('extension'); diff --git a/phpBB/phpbb/console/command/extension/remove.php b/phpBB/phpbb/console/command/extension/remove.php index 8cb6b6c68a4..69d2a62dd97 100644 --- a/phpBB/phpbb/console/command/extension/remove.php +++ b/phpBB/phpbb/console/command/extension/remove.php @@ -57,7 +57,7 @@ protected function configure() ->setDescription($this->language->lang('CLI_DESCRIPTION_EXTENSION_REMOVE')) ->addOption( 'purge', - 'p', + null, InputOption::VALUE_NONE, $this->language->lang('CLI_DESCRIPTION_EXTENSION_REMOVE_OPTION_PURGE')) ->addArgument( @@ -79,6 +79,13 @@ protected function execute(InputInterface $input, OutputInterface $output) $output->getFormatter()->setStyle('warning', new OutputFormatterStyle('black', 'yellow')); $io = new SymfonyStyle($input, $output); + + if (!$this->manager->check_requirements()) + { + $io->error($this->language->lang('EXTENSIONS_COMPOSER_NOT_WRITABLE')); + return 1; + } + $composer_io = new console_io($input, $output, $this->getHelperSet(), $this->language); $extensions = $input->getArgument('extensions'); diff --git a/phpBB/phpbb/console/command/extension/update.php b/phpBB/phpbb/console/command/extension/update.php index 073b38bae8e..f1479c8b0d7 100644 --- a/phpBB/phpbb/console/command/extension/update.php +++ b/phpBB/phpbb/console/command/extension/update.php @@ -71,6 +71,13 @@ protected function execute(InputInterface $input, OutputInterface $output) $output->getFormatter()->setStyle('warning', new OutputFormatterStyle('black', 'yellow')); $io = new SymfonyStyle($input, $output); + + if (!$this->manager->check_requirements()) + { + $io->error($this->language->lang('EXTENSIONS_COMPOSER_NOT_WRITABLE')); + return 1; + } + $composer_io = new console_io($input, $output, $this->getHelperSet(), $this->language); $extensions = $input->getArgument('extensions'); From 31931134aae2fc9f3addb1b3d8337bf073091834 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Tue, 15 Sep 2015 18:52:45 +0200 Subject: [PATCH 140/431] [ticket/11150] Composer is using $_SERVER for some git stuff PHPBB3-11150 --- phpBB/includes/acp/acp_extensions.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index 4a89bb45a49..4dd1afa27ba 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -427,6 +427,8 @@ public function gallery_mode($id, $mode) switch ($action) { case 'install': + $this->page_title = 'ACP_EXTENSIONS_INSTALL'; + $extension = $this->request->variable('extension', ''); if (empty($extension)) @@ -464,6 +466,8 @@ public function gallery_mode($id, $mode) break; case 'remove': + $this->page_title = 'ACP_EXTENSIONS_REMOVE'; + $extension = $this->request->variable('extension', ''); if (empty($extension)) @@ -501,6 +505,8 @@ public function gallery_mode($id, $mode) break; case 'update': + $this->page_title = 'ACP_EXTENSIONS_UPDATE'; + $extension = $this->request->variable('extension', ''); if (empty($extension)) @@ -538,6 +544,8 @@ public function gallery_mode($id, $mode) break; case 'manage': + $this->page_title = 'ACP_EXTENSIONS_MANAGE'; + $extension = $this->request->variable('extension', ''); if (empty($extension)) @@ -623,7 +631,11 @@ public function gallery_mode($id, $mode) $start = $this->request->variable('start', 0); $base_url = $this->u_action; + $this->request->enable_super_globals(); $available_extensions = $manager->get_available_packages(); + $managed_packages = $manager->get_managed_packages(); + $this->request->disable_super_globals(); + $extensions = array_slice($available_extensions, $start, 20); $pagination->generate_template_pagination($base_url, 'pagination', 'start', count($available_extensions), 20, $start); @@ -631,9 +643,8 @@ public function gallery_mode($id, $mode) $this->page_title = 'ACP_EXTENSIONS_GALLERY'; $this->tpl_name = 'acp_ext_gallery'; - $this->request->enable_super_globals(); $this->template->assign_var('extensions', $extensions); - $this->template->assign_var('managed_extensions', array_keys($manager->get_managed_packages())); + $this->template->assign_var('managed_extensions', array_keys($managed_packages)); $this->template->assign_var('installed_extensions', array_keys($extensions_manager->all_available())); $this->template->assign_var('U_ACTION', $this->u_action); $this->template->assign_var('settings', [ @@ -643,7 +654,6 @@ public function gallery_mode($id, $mode) 'repositories' => unserialize($this->config['exts_composer_repositories']), ]); $this->template->assign_var('enabled', $manager->check_requirements()); - $this->request->disable_super_globals(); add_form_key('gallery_settings'); From 1acef8d2689c8e0958b654f9733ba6793c0a7931 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Tue, 15 Sep 2015 18:56:02 +0200 Subject: [PATCH 141/431] [ticket/11150] Updates CLI wording PHPBB3-11150 --- phpBB/language/en/cli.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/phpBB/language/en/cli.php b/phpBB/language/en/cli.php index 43211ce4798..60469104555 100644 --- a/phpBB/language/en/cli.php +++ b/phpBB/language/en/cli.php @@ -160,15 +160,15 @@ 'CLI_DESCRIPTION_EXTENSION_MANAGE' => 'Manages an extension', 'CLI_DESCRIPTION_EXTENSION_MANAGE_ARGUMENT' => 'Extension to manage', - 'CLI_DESCRIPTION_EXTENSION_INSTALL' => 'Install extensions', - 'CLI_DESCRIPTION_EXTENSION_INSTALL_OPTION_ENABLE' => 'Enable the extensions after installing them', - 'CLI_DESCRIPTION_EXTENSION_INSTALL_ARGUMENT' => 'Extensions to install', - 'CLI_DESCRIPTION_EXTENSION_LIST_AVAILABLE' => 'Show extensions available for installation', - 'CLI_DESCRIPTION_EXTENSION_REMOVE' => 'Removes extensions', - 'CLI_DESCRIPTION_EXTENSION_REMOVE_OPTION_PURGE' => 'Purge the extensions before removing them', - 'CLI_DESCRIPTION_EXTENSION_REMOVE_ARGUMENT' => 'Extensions to remove', - 'CLI_DESCRIPTION_EXTENSION_UPDATE' => 'Updates extensions', - 'CLI_DESCRIPTION_EXTENSION_UPDATE_ARGUMENT' => 'Extensions to update', + 'CLI_DESCRIPTION_EXTENSION_INSTALL' => 'Install the specified extension(s).', + 'CLI_DESCRIPTION_EXTENSION_INSTALL_OPTION_ENABLE' => 'Enable extension(s) after installation', + 'CLI_DESCRIPTION_EXTENSION_INSTALL_ARGUMENT' => 'Extension(s) to install, e.g.: vendor/package', + 'CLI_DESCRIPTION_EXTENSION_LIST_AVAILABLE' => 'List extensions available for installation.', + 'CLI_DESCRIPTION_EXTENSION_REMOVE' => 'Remove the specified extension(s).', + 'CLI_DESCRIPTION_EXTENSION_REMOVE_OPTION_PURGE' => 'Purge extension(s) when removing them', + 'CLI_DESCRIPTION_EXTENSION_REMOVE_ARGUMENT' => 'Extension(s) to remove, e.g.: vendor/package', + 'CLI_DESCRIPTION_EXTENSION_UPDATE' => 'Update the specified extension(s).', + 'CLI_DESCRIPTION_EXTENSION_UPDATE_ARGUMENT' => 'Extension(s) to update, e.g.: vendor/package', )); // Additional help for commands. From 35b0543da9aa2fa8b545b4c3ada21cf24c4fef3d Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Tue, 15 Sep 2015 18:59:43 +0200 Subject: [PATCH 142/431] [ticket/11150] Uses percentages instead of fixed column size PHPBB3-11150 --- phpBB/adm/style/acp_ext_gallery.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/phpBB/adm/style/acp_ext_gallery.html b/phpBB/adm/style/acp_ext_gallery.html index d67b657c9c8..7da97edd1ed 100644 --- a/phpBB/adm/style/acp_ext_gallery.html +++ b/phpBB/adm/style/acp_ext_gallery.html @@ -76,10 +76,10 @@

      {{lang( 'EXTENSIONS_GALLERY') }}

      - {{ lang("EXTENSION_NAME") }} - {{ lang("VERSION") }} + {{ lang("EXTENSION_NAME") }} + {{ lang("VERSION") }} {{ lang("DESCRIPTION") }} - {{ lang("EXTENSION_ACTIONS") }} + {{ lang("EXTENSION_ACTIONS") }} From 178f0e16393fe77f599d708ea96339a766b1ce36 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Tue, 15 Sep 2015 19:00:59 +0200 Subject: [PATCH 143/431] [ticket/11150] Tweak gallery actions PHPBB3-11150 --- phpBB/adm/style/acp_ext_gallery.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/phpBB/adm/style/acp_ext_gallery.html b/phpBB/adm/style/acp_ext_gallery.html index 7da97edd1ed..4b85494a09b 100644 --- a/phpBB/adm/style/acp_ext_gallery.html +++ b/phpBB/adm/style/acp_ext_gallery.html @@ -99,7 +99,9 @@

      {{lang( 'EXTENSIONS_GALLERY') }}

      {{ lang('REMOVE') }}) {%- endif -%} {% elseif extension.name in installed_extensions -%} - {{ lang('INSTALLED_MANUALLY') }}{%- if enabled %} ({{ lang('MANAGE') }}){%- endif -%} + {{ lang('INSTALLED_MANUALLY') }} + {%- if enabled -%}
      + ({{ lang('MANAGE') }}){%- endif -%} {% elseif enabled -%} {{ lang('INSTALL') }} {%- endif -%} From 560d4729f98c4b7d9ce607fa600d22a7c3eaecf0 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Tue, 15 Sep 2015 21:24:28 +0200 Subject: [PATCH 144/431] [ticket/11150] Small fix PHPBB3-11150 --- phpBB/language/en/acp/extensions.php | 2 ++ phpBB/phpbb/composer/extension_manager.php | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/phpBB/language/en/acp/extensions.php b/phpBB/language/en/acp/extensions.php index e65df90c9ca..0a94481a87d 100644 --- a/phpBB/language/en/acp/extensions.php +++ b/phpBB/language/en/acp/extensions.php @@ -156,6 +156,8 @@ 'ENABLE_PACKAGIST' => 'Enable Packagist usage', 'ENABLE_PACKAGIST_EXPLAIN' => 'TODO: text explaining why packagist shouldn\'t be enabled, dev usage, etc...', 'ENABLE_PACKAGIST_CONFIRM' => 'TODO: are you sure you ant to enable packagist?', + 'COMPOSER_REPOSITORIES' => 'Repositories', + 'COMPOSER_REPOSITORIES_EXPLAIN' => 'TODO: One repo per line', 'EXTENSION_MANAGED_SUCCESS' => 'The extension %s is now managed automatically.', 'EXTENSIONS_INSTALLED' => 'Extensions successfully installed.', diff --git a/phpBB/phpbb/composer/extension_manager.php b/phpBB/phpbb/composer/extension_manager.php index aef1513d4b0..8a6a09680b6 100644 --- a/phpBB/phpbb/composer/extension_manager.php +++ b/phpBB/phpbb/composer/extension_manager.php @@ -275,7 +275,7 @@ public function start_managing($package, $io) try { $io->writeError('ENABLING_EXTENSION', true, 1); - $this->extension_manager->enabling($package); + $this->extension_manager->enable($package); } catch (\Exception $e) { From 963eea33a9e34301dba94be3f5f87940302d40b8 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Wed, 16 Sep 2015 11:19:45 +0200 Subject: [PATCH 145/431] [ticket/11150] Move composer output PHPBB3-11150 --- phpBB/adm/style/detailled_message_body.html | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/phpBB/adm/style/detailled_message_body.html b/phpBB/adm/style/detailled_message_body.html index 001fe921e1f..f5f42eff2ef 100644 --- a/phpBB/adm/style/detailled_message_body.html +++ b/phpBB/adm/style/detailled_message_body.html @@ -1,14 +1,15 @@ +
      +

      {{ MESSAGE_TITLE }}

      +

      {{ MESSAGE_TEXT }}

      +
      +
      {%- if MESSAGE_DETAIL_LEGEND -%} - {{ MESSAGE_DETAIL_LEGEND|nl2br }} + {{ MESSAGE_DETAIL_LEGEND|nl2br }} {%- endif -%}
      {{ MESSAGE_DETAIL }}
      -
      -

      {{ MESSAGE_TITLE }}

      -

      {{ MESSAGE_TEXT }}

      -
      From 38a58df41bed8f21a2c72a12b25daca9b3362212 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Wed, 16 Sep 2015 11:33:01 +0200 Subject: [PATCH 146/431] [ticket/11150] Gallery => Catalog PHPBB3-11150 --- ...acp_ext_gallery.html => acp_ext_catalog.html} | 12 ++++++------ phpBB/adm/style/acp_ext_list.html | 8 ++++---- phpBB/includes/acp/acp_extensions.php | 16 ++++++++-------- phpBB/includes/acp/info/acp_extensions.php | 2 +- phpBB/language/en/acp/common.php | 2 +- phpBB/language/en/acp/extensions.php | 6 +++--- .../migration/data/v320/extensions_composer.php | 2 +- 7 files changed, 24 insertions(+), 24 deletions(-) rename phpBB/adm/style/{acp_ext_gallery.html => acp_ext_catalog.html} (92%) diff --git a/phpBB/adm/style/acp_ext_gallery.html b/phpBB/adm/style/acp_ext_catalog.html similarity index 92% rename from phpBB/adm/style/acp_ext_gallery.html rename to phpBB/adm/style/acp_ext_catalog.html index 4b85494a09b..23b966c615b 100644 --- a/phpBB/adm/style/acp_ext_gallery.html +++ b/phpBB/adm/style/acp_ext_catalog.html @@ -2,9 +2,9 @@ -

      {{lang( 'EXTENSIONS_GALLERY') }}

      +

      {{lang( 'EXTENSIONS_CATALOG') }}

      -

      {{lang( 'EXTENSIONS_GALLERY_EXPLAIN') }}

      +

      {{lang( 'EXTENSIONS_CATALOG_EXPLAIN') }}

      {% if not enabled %}
      @@ -13,7 +13,7 @@

      {{lang( 'EXTENSIONS_GALLERY') }}

      {% endif %}
      - {{ lang('BROWSE_EXTENSIONS_DATABASE') }}{{ lang('SETTINGS') }} + {{ lang('BROWSE_EXTENSIONS_DATABASE') }}{{ lang('SETTINGS') }}
      {% if pagination is defined %} @@ -22,9 +22,9 @@

      {{lang( 'EXTENSIONS_GALLERY') }}

      {% endif %} - +
      - {{ lang('EXTENSIONS_GALLERY_SETTINGS') }} + {{ lang('EXTENSIONS_CATALOG_SETTINGS') }}
      @@ -66,7 +66,7 @@

      {{lang( 'EXTENSIONS_GALLERY') }}

        - + {{ S_FORM_TOKEN }}

      diff --git a/phpBB/adm/style/acp_ext_list.html b/phpBB/adm/style/acp_ext_list.html index 0ab620b864c..9f22c037228 100644 --- a/phpBB/adm/style/acp_ext_list.html +++ b/phpBB/adm/style/acp_ext_list.html @@ -65,8 +65,8 @@

      {L_EXTENSIONS_ADMIN}

       |  - {L_UPDATE} -  | {L_REMOVE} + {L_UPDATE} +  | {L_REMOVE} @@ -98,8 +98,8 @@

      {L_EXTENSIONS_ADMIN}

       |  - {L_UPDATE} -  | {L_REMOVE} + {L_UPDATE} +  | {L_REMOVE} diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index 4dd1afa27ba..aaac3b04fd8 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -60,8 +60,8 @@ function main() switch ($mode) { - case 'gallery': - $this->gallery_mode($id, $mode); + case 'catalog': + $this->catalog_mode($id, $mode); break; default: $this->main_mode($id, $mode); @@ -177,7 +177,7 @@ public function main_mode($id, $mode) 'FORCE_UNSTABLE' => $this->config['extension_force_unstable'], 'U_ACTION' => $this->u_action, 'MANAGED_EXTENSIONS' => array_keys($composer_manager->get_managed_packages()), - 'U_GALLERY_ACTION' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&mode=gallery"), + 'U_CATALOG_ACTION' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&mode=catalog"), )); $this->request->disable_super_globals(); @@ -409,7 +409,7 @@ public function main_mode($id, $mode) $this->tpl_name = $tpl_name; } - public function gallery_mode($id, $mode) + public function catalog_mode($id, $mode) { global $phpbb_container; @@ -593,7 +593,7 @@ public function gallery_mode($id, $mode) $submit = $this->request->is_set('update'); if ($submit) { - if (!check_form_key('gallery_settings')) + if (!check_form_key('catalog_settings')) { trigger_error($language->lang('FORM_INVALID') . adm_back_link($this->u_action), E_USER_WARNING); } @@ -640,8 +640,8 @@ public function gallery_mode($id, $mode) $pagination->generate_template_pagination($base_url, 'pagination', 'start', count($available_extensions), 20, $start); - $this->page_title = 'ACP_EXTENSIONS_GALLERY'; - $this->tpl_name = 'acp_ext_gallery'; + $this->page_title = 'ACP_EXTENSIONS_CATALOG'; + $this->tpl_name = 'acp_ext_catalog'; $this->template->assign_var('extensions', $extensions); $this->template->assign_var('managed_extensions', array_keys($managed_packages)); @@ -655,7 +655,7 @@ public function gallery_mode($id, $mode) ]); $this->template->assign_var('enabled', $manager->check_requirements()); - add_form_key('gallery_settings'); + add_form_key('catalog_settings'); break; } diff --git a/phpBB/includes/acp/info/acp_extensions.php b/phpBB/includes/acp/info/acp_extensions.php index 5d9e420fda8..f555d0fa8c0 100644 --- a/phpBB/includes/acp/info/acp_extensions.php +++ b/phpBB/includes/acp/info/acp_extensions.php @@ -20,7 +20,7 @@ function module() 'title' => 'ACP_EXTENSION_MANAGEMENT', 'modes' => array( 'main' => array('title' => 'ACP_EXTENSIONS', 'auth' => 'acl_a_extensions', 'cat' => array('ACP_EXTENSION_MANAGEMENT')), - 'gallery' => array('title' => 'ACP_EXTENSIONS_GALLERY', 'auth' => 'acl_a_extensions', 'cat' => array('ACP_EXTENSION_MANAGEMENT')), + 'catalog' => array('title' => 'ACP_EXTENSIONS_CATALOG', 'auth' => 'acl_a_extensions', 'cat' => array('ACP_EXTENSION_MANAGEMENT')), ), ); } diff --git a/phpBB/language/en/acp/common.php b/phpBB/language/en/acp/common.php index 4657c08bcfd..53ac2f3fa2c 100644 --- a/phpBB/language/en/acp/common.php +++ b/phpBB/language/en/acp/common.php @@ -88,7 +88,7 @@ 'ACP_EXTENSION_GROUPS' => 'Manage attachment extension groups', 'ACP_EXTENSION_MANAGEMENT' => 'Extension management', 'ACP_EXTENSIONS' => 'Manage extensions', - 'ACP_EXTENSIONS_GALLERY' => 'Extensions gallery', + 'ACP_EXTENSIONS_CATALOG' => 'Extensions catalog', 'ACP_EXTENSIONS_INSTALL' => 'Install extensions', 'ACP_EXTENSIONS_REMOVE' => 'Remove extensions', 'ACP_EXTENSIONS_UPDATE' => 'Update extensions', diff --git a/phpBB/language/en/acp/extensions.php b/phpBB/language/en/acp/extensions.php index 0a94481a87d..aaeb1ec3e04 100644 --- a/phpBB/language/en/acp/extensions.php +++ b/phpBB/language/en/acp/extensions.php @@ -48,8 +48,8 @@ 'ENABLING_EXTENSIONS' => 'Enabling extensions', 'DISABLING_EXTENSIONS' => 'Disabling extensions', - 'EXTENSIONS_GALLERY' => 'Extensions Gallery', - 'EXTENSIONS_GALLERY_EXPLAIN' => 'The Extensions Gallery is a tool in your phpBB Board which allows you to see all the extensions that are available for your board.', + 'EXTENSIONS_CATALOG' => 'Extensions Catalog', + 'EXTENSIONS_CATALOG_EXPLAIN' => 'Here you can browse all of the extensions available for your phpBB board. Extensions can easily be installed or removed with just a click. Adjust the Settings to allow instant enabling and purging of extensions.', 'EXTENSION' => 'Extension', 'EXTENSIONS' => 'Extensions', @@ -150,7 +150,7 @@ 'META_FIELD_NOT_SET' => 'Required meta field %s has not been set.', 'META_FIELD_INVALID' => 'Meta field %s is invalid.', - 'EXTENSIONS_GALLERY_SETTINGS' => 'Extensions gallery settings', + 'EXTENSIONS_CATALOG_SETTINGS' => 'Extensions catalog settings', 'ENABLE_ON_INSTALL' => 'Enable extensions when installing', 'PURGE_ON_REMOVE' => 'Purge extensions when removing', 'ENABLE_PACKAGIST' => 'Enable Packagist usage', diff --git a/phpBB/phpbb/db/migration/data/v320/extensions_composer.php b/phpBB/phpbb/db/migration/data/v320/extensions_composer.php index 976dcfaa3ec..71456afd49a 100644 --- a/phpBB/phpbb/db/migration/data/v320/extensions_composer.php +++ b/phpBB/phpbb/db/migration/data/v320/extensions_composer.php @@ -29,7 +29,7 @@ public function update_data() 'ACP_EXTENSION_MANAGEMENT', array( 'module_basename' => 'acp_extensions', - 'modes' => array('gallery'), + 'modes' => array('catalog'), ), )), ); From f1e80830b754ffaaa5653ce41359c67d37541373 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Wed, 16 Sep 2015 11:38:01 +0200 Subject: [PATCH 147/431] [ticket/11150] Wording PHPBB3-11150 --- phpBB/language/en/acp/common.php | 2 +- phpBB/language/en/acp/extensions.php | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/phpBB/language/en/acp/common.php b/phpBB/language/en/acp/common.php index 53ac2f3fa2c..22b78fe218c 100644 --- a/phpBB/language/en/acp/common.php +++ b/phpBB/language/en/acp/common.php @@ -248,7 +248,7 @@ 'COMPOSER_UNSUPPORTED_OPERATION' => 'Operation unsupported for the package type “%s”.', 'COMPOSER_UPDATING_DEPENDENCIES' => 'Updating packages', - 'COMPOSER_LOADING_REPOSITORIES' => 'Loading remote packages information', + 'COMPOSER_LOADING_REPOSITORIES' => 'Loading remote repositories with package information', 'COMPOSER_ERROR_CONFLICT' => 'Your requirements could not be resolved to an installable set of packages.', 'COMPOSER_REPOSITORY_UNAVAILABLE' => 'An error occurred when fetching the repository %s.', 'COMPOSER_INSTALLING_PACKAGE' => ' - Installing %1$s (%2$s)', diff --git a/phpBB/language/en/acp/extensions.php b/phpBB/language/en/acp/extensions.php index aaeb1ec3e04..0a3a43c3a7b 100644 --- a/phpBB/language/en/acp/extensions.php +++ b/phpBB/language/en/acp/extensions.php @@ -38,11 +38,11 @@ 'EXTENSION_ALREADY_INSTALLED' => 'The “%s” extension has already been installed.', 'EXTENSION_ALREADY_INSTALLED_MANUALLY' => 'The “%s” extension has already been installed manually.', - 'EXTENSION_ALREADY_MANAGED' => 'The “%s” extension has already been installed manually.', - 'EXTENSION_CANNOT_MANAGE_FILESYSTEM_ERROR' => 'The “%s” extension cannot be managed because the old files cannot be removed.', - 'EXTENSION_CANNOT_MANAGE_INSTALL_ERROR' => 'The “%s” extension cannot be installed. The old extension have been restored.', + 'EXTENSION_ALREADY_MANAGED' => 'The “%s” extension is already managed.', + 'EXTENSION_CANNOT_MANAGE_FILESYSTEM_ERROR' => 'The “%s” extension cannot be managed because the existing files could not be removed from the filesystem.', + 'EXTENSION_CANNOT_MANAGE_INSTALL_ERROR' => 'The “%s” extension could not be installed. The prior installation of this extension has been restored.', 'EXTENSION_MANAGED_WITH_CLEAN_ERROR' => 'The “%1$s” extension has been installed but an error occurred and the old files have not been removed. You might want to delete the “%2$s” files manually.', - 'EXTENSION_MANAGED_WITH_ENABLE_ERROR' => 'The “%s” extension has been installed but an error occurred when re-enabling it.', + 'EXTENSION_MANAGED_WITH_ENABLE_ERROR' => 'The “%s” extension has been installed but an error occurred when enabling it.', 'EXTENSION_NOT_INSTALLED' => 'The “%s” extension is not installed.', 'ENABLING_EXTENSIONS' => 'Enabling extensions', From c88c692ad6fda740880c62ba4c1f45d3aa0b3633 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Wed, 16 Sep 2015 11:46:03 +0200 Subject: [PATCH 148/431] [ticket/11150] Use json instead of serialize PHPBB3-11150 --- phpBB/includes/acp/acp_extensions.php | 4 ++-- phpBB/phpbb/composer/installer.php | 4 ++-- phpBB/phpbb/db/migration/data/v320/extensions_composer.php | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index aaac3b04fd8..69a1063e4df 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -605,7 +605,7 @@ public function catalog_mode($id, $mode) $this->config->set('exts_composer_enable_on_install', $enable_on_install); $this->config->set('exts_composer_purge_on_remove', $purge_on_remove); - $this->config->set('exts_composer_repositories', serialize($repositories)); + $this->config->set('exts_composer_repositories', json_encode($repositories, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)); if (!$this->config['exts_composer_packagist'] && $enable_packagist) { @@ -651,7 +651,7 @@ public function catalog_mode($id, $mode) 'enable_packagist' => $this->config['exts_composer_packagist'], 'enable_on_install' => $this->config['exts_composer_enable_on_install'], 'purge_on_remove' => $this->config['exts_composer_purge_on_remove'], - 'repositories' => unserialize($this->config['exts_composer_repositories']), + 'repositories' => json_decode($this->config['exts_composer_repositories'], true), ]); $this->template->assign_var('enabled', $manager->check_requirements()); diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 9a02060316d..9bfff313379 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -77,7 +77,7 @@ public function __construct($root_path, config $config = null) { if ($config) { - $repositories = unserialize($config['exts_composer_repositories']); + $repositories = json_decode($config['exts_composer_repositories'], true); if (!is_array($repositories) && !empty($repositories)) { @@ -606,7 +606,7 @@ protected function get_extra_dependencies() * * @param array $repositories An array of composer repositories to use */ - public function set_repositories($repositories) + public function set_repositories(array $repositories) { $this->repositories = $repositories; } diff --git a/phpBB/phpbb/db/migration/data/v320/extensions_composer.php b/phpBB/phpbb/db/migration/data/v320/extensions_composer.php index 71456afd49a..438c412158b 100644 --- a/phpBB/phpbb/db/migration/data/v320/extensions_composer.php +++ b/phpBB/phpbb/db/migration/data/v320/extensions_composer.php @@ -18,7 +18,7 @@ class extensions_composer extends \phpbb\db\migration\migration public function update_data() { return array( - array('config.add', array('exts_composer_repositories', serialize([]))), + array('config.add', array('exts_composer_repositories', json_encode([], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES))), array('config.add', array('exts_composer_packagist', true)), array('config.add', array('exts_composer_json_file', 'composer-ext.json')), array('config.add', array('exts_composer_vendor_dir', 'vendor-ext/')), From ab60adb60c995bf6f6ed039d125f5e16110b2729 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Wed, 16 Sep 2015 13:59:35 +0200 Subject: [PATCH 149/431] [ticket/11150] Add html output formatter PHPBB3-11150 --- phpBB/includes/acp/acp_extensions.php | 8 +++--- .../composer/io/html_output_formatter.php | 27 +++++++++++++++++++ 2 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 phpBB/phpbb/composer/io/html_output_formatter.php diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index 69a1063e4df..2e93f2a09db 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -436,7 +436,7 @@ public function catalog_mode($id, $mode) redirect($this->u_action); } - $formatter = new \Composer\Console\HtmlOutputFormatter([ + $formatter = new \phpbb\composer\io\html_output_formatter([ 'warning' => new \Symfony\Component\Console\Formatter\OutputFormatterStyle('black', 'yellow') ]); @@ -475,7 +475,7 @@ public function catalog_mode($id, $mode) redirect($this->u_action); } - $formatter = new \Composer\Console\HtmlOutputFormatter([ + $formatter = new \phpbb\composer\io\html_output_formatter([ 'warning' => new \Symfony\Component\Console\Formatter\OutputFormatterStyle('black', 'yellow') ]); @@ -514,7 +514,7 @@ public function catalog_mode($id, $mode) redirect($this->u_action); } - $formatter = new \Composer\Console\HtmlOutputFormatter([ + $formatter = new \phpbb\composer\io\html_output_formatter([ 'warning' => new \Symfony\Component\Console\Formatter\OutputFormatterStyle('black', 'yellow') ]); @@ -553,7 +553,7 @@ public function catalog_mode($id, $mode) redirect($this->u_action); } - $formatter = new \Composer\Console\HtmlOutputFormatter([ + $formatter = new \phpbb\composer\io\html_output_formatter([ 'warning' => new \Symfony\Component\Console\Formatter\OutputFormatterStyle('black', 'yellow') ]); diff --git a/phpBB/phpbb/composer/io/html_output_formatter.php b/phpBB/phpbb/composer/io/html_output_formatter.php new file mode 100644 index 00000000000..5431d3210d9 --- /dev/null +++ b/phpBB/phpbb/composer/io/html_output_formatter.php @@ -0,0 +1,27 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\composer\io; + +class html_output_formatter extends \Composer\Console\HtmlOutputFormatter +{ + /** + * {@inheritdoc} + */ + public function format($message) + { + $formatted = parent::format($message); + + return preg_replace_callback("{[\033\e]\[([0-9;]+)m(.*?)[\033\e]\[[0-9;]+m}s", array($this, 'formatHtml'), $formatted); + } +} From a5a678c0d8008f8caaa382e3a7d334b22619ada2 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Wed, 16 Sep 2015 14:02:36 +0200 Subject: [PATCH 150/431] [ticket/11150] Translate Enabling/disabling extension PHPBB3-11150 --- phpBB/phpbb/composer/extension_manager.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/phpBB/phpbb/composer/extension_manager.php b/phpBB/phpbb/composer/extension_manager.php index 8a6a09680b6..cc9c5ba55c4 100644 --- a/phpBB/phpbb/composer/extension_manager.php +++ b/phpBB/phpbb/composer/extension_manager.php @@ -97,7 +97,7 @@ public function post_install(array $packages, IOInterface $io = null) { if ($this->enable_on_install) { - $io->writeError('ENABLING_EXTENSIONS', true, 1); + $io->writeError(['ENABLING_EXTENSIONS', [], 1], true); foreach ($packages as $package) { try @@ -121,7 +121,7 @@ public function post_install(array $packages, IOInterface $io = null) */ protected function pre_update(array $packages, IOInterface $io = null) { - $io->writeError('DISABLING_EXTENSIONS', true, 1); + $io->writeError(['DISABLING_EXTENSIONS', [], 1], true, 1); $this->enabled_extensions = []; foreach ($packages as $package) { @@ -149,7 +149,7 @@ protected function pre_update(array $packages, IOInterface $io = null) */ protected function post_update(array $packages, IOInterface $io = null) { - $io->writeError('ENABLING_EXTENSIONS', true, 1); + $io->writeError(['ENABLING_EXTENSIONS', [], 1], true, 1); foreach ($this->enabled_extensions as $package) { try @@ -190,7 +190,7 @@ public function pre_remove(array $packages, IOInterface $io = null) { if ($this->purge_on_remove) { - $io->writeError('DISABLING_EXTENSIONS', true, 1); + $io->writeError(['DISABLING_EXTENSIONS', [], 1], true, 1); } foreach ($packages as $package) From 6bbd8486b2914ec52dbf839be903dd9a9dedc790 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Wed, 16 Sep 2015 14:29:56 +0200 Subject: [PATCH 151/431] [ticket/11150] Filter out versions incompatibles with the minimum stability flag PHPBB3-11150 --- phpBB/phpbb/composer/installer.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 9bfff313379..74ea5316732 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -18,6 +18,7 @@ use Composer\IO\IOInterface; use Composer\IO\NullIO; use Composer\Json\JsonFile; +use Composer\Package\BasePackage; use Composer\Package\CompletePackage; use Composer\Package\LinkConstraint\LinkConstraintInterface; use Composer\Package\PackageInterface; @@ -290,6 +291,7 @@ protected function do_get_available_packages($type) /** @var LinkConstraintInterface $core_constraint */ $core_constraint = $composer->getPackage()->getRequires()['phpbb/phpbb']->getConstraint(); + $core_stability = $composer->getPackage()->getMinimumStability(); $available = []; @@ -321,7 +323,7 @@ protected function do_get_available_packages($type) foreach (JsonFile::parseJson($json, $url)['packageNames'] as $package) { $versions = $repository->findPackages($package); - $compatible_packages = $this->get_compatible_versions($compatible_packages, $core_constraint, $package, $versions); + $compatible_packages = $this->get_compatible_versions($compatible_packages, $core_constraint, $core_stability, $package, $versions); } } } @@ -341,7 +343,7 @@ protected function do_get_available_packages($type) // Filter the compatibles versions foreach ($packages as $package => $versions) { - $compatible_packages = $this->get_compatible_versions($compatible_packages, $core_constraint, $package, $versions); + $compatible_packages = $this->get_compatible_versions($compatible_packages, $core_constraint, $core_stability, $package, $versions); } } } @@ -422,16 +424,24 @@ public function check_requirements() * * @param array $compatible_packages List of compatibles versions * @param LinkConstraintInterface $core_constraint Constraint against the phpBB version + * @param string $core_stability Core stability * @param string $package_name Considered package * @param array $versions List of available versions * * @return array */ - private function get_compatible_versions(array $compatible_packages, LinkConstraintInterface $core_constraint, $package_name, array $versions) + private function get_compatible_versions(array $compatible_packages, LinkConstraintInterface $core_constraint, $core_stability, $package_name, array $versions) { + $core_stability_value = BasePackage::$stabilities[$core_stability]; + //VersionParser::parseStability($version['version']) /** @var PackageInterface $version */ foreach ($versions as $version) { + if (BasePackage::$stabilities[$version->getStability()] > $core_stability_value) + { + continue; + } + if (array_key_exists('phpbb/phpbb', $version->getRequires())) { /** @var LinkConstraintInterface $package_constraint */ From 317c90cf4897edac76ed3245e10819e0a967f1c8 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Wed, 16 Sep 2015 15:01:26 +0200 Subject: [PATCH 152/431] [ticket/11150] Makes minimum-stability configurable PHPBB3-11150 --- phpBB/adm/style/acp_ext_catalog.html | 15 +++++++++++++++ phpBB/includes/acp/acp_extensions.php | 17 +++++++++++++++++ phpBB/language/en/acp/extensions.php | 10 ++++++++++ phpBB/phpbb/composer/installer.php | 7 +++++++ phpBB/phpbb/composer/manager.php | 12 ++++++++++++ phpBB/phpbb/composer/manager_interface.php | 5 +++++ 6 files changed, 66 insertions(+) diff --git a/phpBB/adm/style/acp_ext_catalog.html b/phpBB/adm/style/acp_ext_catalog.html index 23b966c615b..fff5c551a6b 100644 --- a/phpBB/adm/style/acp_ext_catalog.html +++ b/phpBB/adm/style/acp_ext_catalog.html @@ -62,6 +62,21 @@

      {{lang( 'EXTENSIONS_CATALOG') }}

      +
      +
      +
      + + {{ lang('WARNING') }}{{ lang('COLON') }} {{ lang('COMPOSER_MINIMUM_STABILITY_EXPLAIN') }} + +
      +
      + +
      +

        diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index 2e93f2a09db..79c51bfd707 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -587,6 +587,8 @@ public function catalog_mode($id, $mode) if (!$this->config['exts_composer_packagist'] && $this->request->is_set('enable_packagist') && confirm_box(true)) { $this->config->set('exts_composer_packagist', true); + $composer_manager->reset_cache(); + trigger_error($language->lang('CONFIG_UPDATED') . adm_back_link($this->u_action)); } @@ -601,12 +603,25 @@ public function catalog_mode($id, $mode) $enable_packagist = $this->request->variable('enable_packagist', false); $enable_on_install = $this->request->variable('enable_on_install', false); $purge_on_remove = $this->request->variable('purge_on_remove', false); + $minimum_stability = $this->request->variable('minimum_stability', 'stable'); $repositories = array_unique(explode("\n", $this->request->variable('repositories', ''))); + $previous_minimum_stability = $this->config['exts_composer_minimum_stability']; + $previous_repositories = $this->config['exts_composer_repositories']; + $previous_enable_packagist = $this->config['exts_composer_packagist']; + $this->config->set('exts_composer_enable_on_install', $enable_on_install); $this->config->set('exts_composer_purge_on_remove', $purge_on_remove); + $this->config->set('exts_composer_minimum_stability', $minimum_stability); $this->config->set('exts_composer_repositories', json_encode($repositories, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)); + if ($minimum_stability != $previous_minimum_stability + || $repositories != $previous_repositories + || $enable_packagist != $previous_enable_packagist) + { + $composer_manager->reset_cache(); + } + if (!$this->config['exts_composer_packagist'] && $enable_packagist) { $s_hidden_fields = build_hidden_fields(array( @@ -651,6 +666,8 @@ public function catalog_mode($id, $mode) 'enable_packagist' => $this->config['exts_composer_packagist'], 'enable_on_install' => $this->config['exts_composer_enable_on_install'], 'purge_on_remove' => $this->config['exts_composer_purge_on_remove'], + 'minimum_stability' => $this->config['exts_composer_minimum_stability'], + 'stabilities' => array_keys(\Composer\Package\BasePackage::$stabilities), 'repositories' => json_decode($this->config['exts_composer_repositories'], true), ]); $this->template->assign_var('enabled', $manager->check_requirements()); diff --git a/phpBB/language/en/acp/extensions.php b/phpBB/language/en/acp/extensions.php index 0a3a43c3a7b..53ba5bf859f 100644 --- a/phpBB/language/en/acp/extensions.php +++ b/phpBB/language/en/acp/extensions.php @@ -165,4 +165,14 @@ 'EXTENSIONS_UPDATED' => 'Extensions successfully updated.', 'EXTENSIONS_COMPOSER_NOT_WRITABLE' => 'TODO: some required files / directory are not writable => disable ', + + 'STABILITY_STABLE' => 'stable', + 'STABILITY_RC' => 'RC', + 'STABILITY_BETA' => 'beta', + 'STABILITY_ALPHA' => 'alpha', + 'STABILITY_DEV' => 'dev', + + 'COMPOSER_MINIMUM_STABILITY' => 'Minimum stability', + 'COMPOSER_MINIMUM_STABILITY_EXPLAIN' => 'TODO: why it is dangerous to change that', + )); diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 74ea5316732..2b805288da5 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -55,6 +55,11 @@ class installer */ protected $packages_vendor_dir = 'vendor-ext/'; + /** + * @var string Minimum stability + */ + protected $minimum_stability = 'stable'; + /** * @var string phpBB root path */ @@ -88,6 +93,7 @@ public function __construct($root_path, config $config = null) $this->packagist = (bool) $config['exts_composer_packagist']; $this->composer_filename = $config['exts_composer_json_file']; $this->packages_vendor_dir = $config['exts_composer_vendor_dir']; + $this->minimum_stability = $config['exts_composer_minimum_stability']; } $this->root_path = $root_path; @@ -484,6 +490,7 @@ protected function generate_ext_json_file(array $packages) 'cache-dir' => 'store/composer', 'vendor-dir'=> $this->packages_vendor_dir, ], + 'minimum-stability' => $this->minimum_stability, ]; $this->ext_json_file_backup = null; diff --git a/phpBB/phpbb/composer/manager.php b/phpBB/phpbb/composer/manager.php index cffc6c85663..fbd14c57836 100644 --- a/phpBB/phpbb/composer/manager.php +++ b/phpBB/phpbb/composer/manager.php @@ -263,6 +263,18 @@ public function get_available_packages() return $this->available_packages; } + /** + * {@inheritdoc} + */ + public function reset_cache() + { + $this->cache->destroy('_composer_' . $this->package_type . '_available'); + + $this->available_packages = null; + $this->managed_packages = null; + $this->all_managed_packages = null; + } + /** * {@inheritdoc} */ diff --git a/phpBB/phpbb/composer/manager_interface.php b/phpBB/phpbb/composer/manager_interface.php index ab36f58dc9a..9fae7a0e9c1 100644 --- a/phpBB/phpbb/composer/manager_interface.php +++ b/phpBB/phpbb/composer/manager_interface.php @@ -78,6 +78,11 @@ public function get_all_managed_packages(); */ public function get_available_packages(); + /** + * Reset the cache + */ + public function reset_cache(); + /** * Start managing a manually installed package * From 972f3a7ff42515d9c1a94eb69ea9077d07422a6a Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Wed, 16 Sep 2015 15:12:37 +0200 Subject: [PATCH 153/431] [ticket/11150] Fix Html output formatter PHPBB3-11150 --- phpBB/phpbb/composer/extension_manager.php | 12 ++--- .../composer/io/html_output_formatter.php | 54 +++++++++++++++++++ .../composer/io/translate_composer_trait.php | 2 +- 3 files changed, 61 insertions(+), 7 deletions(-) diff --git a/phpBB/phpbb/composer/extension_manager.php b/phpBB/phpbb/composer/extension_manager.php index cc9c5ba55c4..a1f67c6681b 100644 --- a/phpBB/phpbb/composer/extension_manager.php +++ b/phpBB/phpbb/composer/extension_manager.php @@ -97,7 +97,7 @@ public function post_install(array $packages, IOInterface $io = null) { if ($this->enable_on_install) { - $io->writeError(['ENABLING_EXTENSIONS', [], 1], true); + $io->writeError([['ENABLING_EXTENSIONS', [], 1]], true); foreach ($packages as $package) { try @@ -121,7 +121,7 @@ public function post_install(array $packages, IOInterface $io = null) */ protected function pre_update(array $packages, IOInterface $io = null) { - $io->writeError(['DISABLING_EXTENSIONS', [], 1], true, 1); + $io->writeError([['DISABLING_EXTENSIONS', [], 1]], true, 1); $this->enabled_extensions = []; foreach ($packages as $package) { @@ -149,7 +149,7 @@ protected function pre_update(array $packages, IOInterface $io = null) */ protected function post_update(array $packages, IOInterface $io = null) { - $io->writeError(['ENABLING_EXTENSIONS', [], 1], true, 1); + $io->writeError([['ENABLING_EXTENSIONS', [], 1]], true, 1); foreach ($this->enabled_extensions as $package) { try @@ -190,7 +190,7 @@ public function pre_remove(array $packages, IOInterface $io = null) { if ($this->purge_on_remove) { - $io->writeError(['DISABLING_EXTENSIONS', [], 1], true, 1); + $io->writeError([['DISABLING_EXTENSIONS', [], 1]], true, 1); } foreach ($packages as $package) @@ -239,7 +239,7 @@ public function start_managing($package, $io) if ($this->extension_manager->is_enabled($package)) { $enabled = true; - $io->writeError('DISABLING_EXTENSION', true, 1); + $io->writeError([['DISABLING_EXTENSIONS', [], 1]], true, 1); $this->extension_manager->disable($package); } @@ -274,7 +274,7 @@ public function start_managing($package, $io) { try { - $io->writeError('ENABLING_EXTENSION', true, 1); + $io->writeError([['ENABLING_EXTENSIONS', [], 1]], true, 1); $this->extension_manager->enable($package); } catch (\Exception $e) diff --git a/phpBB/phpbb/composer/io/html_output_formatter.php b/phpBB/phpbb/composer/io/html_output_formatter.php index 5431d3210d9..d3066f969d2 100644 --- a/phpBB/phpbb/composer/io/html_output_formatter.php +++ b/phpBB/phpbb/composer/io/html_output_formatter.php @@ -15,6 +15,36 @@ class html_output_formatter extends \Composer\Console\HtmlOutputFormatter { + protected static $availableForegroundColors = [ + 30 => 'black', + 31 => 'red', + 32 => 'green', + 33 => 'yellow', + 34 => 'blue', + 35 => 'magenta', + 36 => 'cyan', + 37 => 'white' + ]; + + protected static $availableBackgroundColors = [ + 40 => 'black', + 41 => 'red', + 42 => 'green', + 43 => 'yellow', + 44 => 'blue', + 45 => 'magenta', + 46 => 'cyan', + 47 => 'white' + ]; + + protected static $availableOptions = [ + 1 => 'bold', + 4 => 'underscore', + //5 => 'blink', + //7 => 'reverse', + //8 => 'conceal' + ]; + /** * {@inheritdoc} */ @@ -24,4 +54,28 @@ public function format($message) return preg_replace_callback("{[\033\e]\[([0-9;]+)m(.*?)[\033\e]\[[0-9;]+m}s", array($this, 'formatHtml'), $formatted); } + + protected function formatHtml($matches) + { + $out = ''.$matches[2].''; + } } diff --git a/phpBB/phpbb/composer/io/translate_composer_trait.php b/phpBB/phpbb/composer/io/translate_composer_trait.php index 0f2d6f8e643..64f69263e9a 100644 --- a/phpBB/phpbb/composer/io/translate_composer_trait.php +++ b/phpBB/phpbb/composer/io/translate_composer_trait.php @@ -114,7 +114,7 @@ public function writeError($messages, $newline = true) $parameters = []; } - $message = trim($this->strip_format($message), "\n\r"); + $message = trim($this->strip_format($lang_key), "\n\r"); if (strpos($message, ' Problem ') === 0) { From 9a836b5901afa7977a086db8cb9c57df0d5c7072 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Wed, 16 Sep 2015 16:25:45 +0200 Subject: [PATCH 154/431] [ticket/11150] Makes composer output level configurable PHPBB3-11150 --- phpBB/config/development/config.yml | 4 +++ phpBB/includes/acp/acp_extensions.php | 8 +++--- phpBB/phpbb/composer/extension_manager.php | 26 +++++++++---------- .../composer/io/translate_composer_trait.php | 17 +++++++++--- .../di/extension/container_configuration.php | 7 +++++ phpBB/phpbb/di/extension/core.php | 13 ++++++++++ 6 files changed, 55 insertions(+), 20 deletions(-) diff --git a/phpBB/config/development/config.yml b/phpBB/config/development/config.yml index f39eb52e736..1e144d68d6c 100644 --- a/phpBB/config/development/config.yml +++ b/phpBB/config/development/config.yml @@ -11,3 +11,7 @@ core: debug: true auto_reload: true enable_debug_extension: true + + extensions: + composer_debug: true + composer_verbose: true diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index 79c51bfd707..15a9d74623e 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -440,7 +440,7 @@ public function catalog_mode($id, $mode) 'warning' => new \Symfony\Component\Console\Formatter\OutputFormatterStyle('black', 'yellow') ]); - $composer_io = new \phpbb\composer\io\web_io($language, '', \Symfony\Component\Console\Output\OutputInterface::VERBOSITY_VERBOSE, $formatter); + $composer_io = new \phpbb\composer\io\web_io($language, '', $phpbb_container->getParameter('extensions.composer.output'), $formatter); try { @@ -479,7 +479,7 @@ public function catalog_mode($id, $mode) 'warning' => new \Symfony\Component\Console\Formatter\OutputFormatterStyle('black', 'yellow') ]); - $composer_io = new \phpbb\composer\io\web_io($language, '', \Symfony\Component\Console\Output\OutputInterface::VERBOSITY_VERBOSE, $formatter); + $composer_io = new \phpbb\composer\io\web_io($language, '', $phpbb_container->getParameter('extensions.composer.output'), $formatter); try { @@ -518,7 +518,7 @@ public function catalog_mode($id, $mode) 'warning' => new \Symfony\Component\Console\Formatter\OutputFormatterStyle('black', 'yellow') ]); - $composer_io = new \phpbb\composer\io\web_io($language, '', \Symfony\Component\Console\Output\OutputInterface::VERBOSITY_VERBOSE, $formatter); + $composer_io = new \phpbb\composer\io\web_io($language, '', $phpbb_container->getParameter('extensions.composer.output'), $formatter); try { @@ -557,7 +557,7 @@ public function catalog_mode($id, $mode) 'warning' => new \Symfony\Component\Console\Formatter\OutputFormatterStyle('black', 'yellow') ]); - $composer_io = new \phpbb\composer\io\web_io($language, '', \Symfony\Component\Console\Output\OutputInterface::VERBOSITY_VERBOSE, $formatter); + $composer_io = new \phpbb\composer\io\web_io($language, '', $phpbb_container->getParameter('extensions.composer.output'), $formatter); try { diff --git a/phpBB/phpbb/composer/extension_manager.php b/phpBB/phpbb/composer/extension_manager.php index a1f67c6681b..7e148e0d54e 100644 --- a/phpBB/phpbb/composer/extension_manager.php +++ b/phpBB/phpbb/composer/extension_manager.php @@ -106,11 +106,11 @@ public function post_install(array $packages, IOInterface $io = null) } catch (\phpbb\exception\runtime_exception $e) { - $io->writeError([$e->getMessage(), $e->get_parameters()], true, 4); + $io->writeError([[$e->getMessage(), $e->get_parameters(), 4]], true); } catch (\Exception $e) { - $io->writeError($e->getMessage(), true, 4); + $io->writeError([[$e->getMessage(), [], 4]], true); } } } @@ -121,7 +121,7 @@ public function post_install(array $packages, IOInterface $io = null) */ protected function pre_update(array $packages, IOInterface $io = null) { - $io->writeError([['DISABLING_EXTENSIONS', [], 1]], true, 1); + $io->writeError([['DISABLING_EXTENSIONS', [], 1]], true); $this->enabled_extensions = []; foreach ($packages as $package) { @@ -135,11 +135,11 @@ protected function pre_update(array $packages, IOInterface $io = null) } catch (\phpbb\exception\runtime_exception $e) { - $io->writeError([$e->getMessage(), $e->get_parameters()], true, 4); + $io->writeError([[$e->getMessage(), $e->get_parameters(), 4]], true); } catch (\Exception $e) { - $io->writeError($e->getMessage(), true, 4); + $io->writeError([[$e->getMessage(), [], 4]], true); } } } @@ -149,7 +149,7 @@ protected function pre_update(array $packages, IOInterface $io = null) */ protected function post_update(array $packages, IOInterface $io = null) { - $io->writeError([['ENABLING_EXTENSIONS', [], 1]], true, 1); + $io->writeError([['ENABLING_EXTENSIONS', [], 1]], true); foreach ($this->enabled_extensions as $package) { try @@ -158,11 +158,11 @@ protected function post_update(array $packages, IOInterface $io = null) } catch (\phpbb\exception\runtime_exception $e) { - $io->writeError([$e->getMessage(), $e->get_parameters()], true, 4); + $io->writeError([[$e->getMessage(), $e->get_parameters(), 4]], true); } catch (\Exception $e) { - $io->writeError($e->getMessage(), true, 4); + $io->writeError([[$e->getMessage(), [], 4]], true); } } } @@ -190,7 +190,7 @@ public function pre_remove(array $packages, IOInterface $io = null) { if ($this->purge_on_remove) { - $io->writeError([['DISABLING_EXTENSIONS', [], 1]], true, 1); + $io->writeError([['DISABLING_EXTENSIONS', [], 1]], true); } foreach ($packages as $package) @@ -211,11 +211,11 @@ public function pre_remove(array $packages, IOInterface $io = null) } catch (\phpbb\exception\runtime_exception $e) { - $io->writeError([$e->getMessage(), $e->get_parameters()], true, 4); + $io->writeError([[$e->getMessage(), $e->get_parameters(), 4]], true); } catch (\Exception $e) { - $io->writeError($e->getMessage(), true, 4); + $io->writeError([[$e->getMessage(), [], 4]], true); } } } @@ -239,7 +239,7 @@ public function start_managing($package, $io) if ($this->extension_manager->is_enabled($package)) { $enabled = true; - $io->writeError([['DISABLING_EXTENSIONS', [], 1]], true, 1); + $io->writeError([['DISABLING_EXTENSIONS', [], 1]], true); $this->extension_manager->disable($package); } @@ -274,7 +274,7 @@ public function start_managing($package, $io) { try { - $io->writeError([['ENABLING_EXTENSIONS', [], 1]], true, 1); + $io->writeError([['ENABLING_EXTENSIONS', [], 1]], true); $this->extension_manager->enable($package); } catch (\Exception $e) diff --git a/phpBB/phpbb/composer/io/translate_composer_trait.php b/phpBB/phpbb/composer/io/translate_composer_trait.php index 64f69263e9a..fd06dd95ce6 100644 --- a/phpBB/phpbb/composer/io/translate_composer_trait.php +++ b/phpBB/phpbb/composer/io/translate_composer_trait.php @@ -16,6 +16,9 @@ use phpbb\language\language; use Symfony\Component\Console\Output\OutputInterface; +/** + * Trait to translate the composer Output + */ trait translate_composer_trait { /** @@ -54,9 +57,13 @@ public function write($messages, $newline = true) $parameters = []; } - $message = trim($this->strip_format($message), "\n\r"); + $message = trim($this->strip_format($lang_key), "\n\r"); - if (strpos($message, 'Deleting ') === 0) + if ($this->output->getVerbosity() === OutputInterface::VERBOSITY_DEBUG) + { + // Do nothing + } + else if (strpos($message, 'Deleting ') === 0) { $elements = explode(' ', $message); $lang_key = 'COMPOSER_DELETING'; @@ -116,7 +123,11 @@ public function writeError($messages, $newline = true) $message = trim($this->strip_format($lang_key), "\n\r"); - if (strpos($message, ' Problem ') === 0) + if ($this->output->getVerbosity() === OutputInterface::VERBOSITY_DEBUG) + { + // Do nothing + } + else if (strpos($message, ' Problem ') === 0) { if ($this->output->getVerbosity() < OutputInterface::VERBOSITY_VERBOSE) { diff --git a/phpBB/phpbb/di/extension/container_configuration.php b/phpBB/phpbb/di/extension/container_configuration.php index 4585d6509e0..3870670ac00 100644 --- a/phpBB/phpbb/di/extension/container_configuration.php +++ b/phpBB/phpbb/di/extension/container_configuration.php @@ -45,6 +45,13 @@ public function getConfigTreeBuilder() ->booleanNode('enable_debug_extension')->defaultValue(false)->end() ->end() ->end() + ->arrayNode('extensions') + ->addDefaultsIfNotSet() + ->children() + ->booleanNode('composer_debug')->defaultValue(false)->end() + ->booleanNode('composer_verbose')->defaultValue(false)->end() + ->end() + ->end() ->end() ; return $treeBuilder; diff --git a/phpBB/phpbb/di/extension/core.php b/phpBB/phpbb/di/extension/core.php index 67150f0103d..64c3dafcad8 100644 --- a/phpBB/phpbb/di/extension/core.php +++ b/phpBB/phpbb/di/extension/core.php @@ -15,6 +15,7 @@ use Symfony\Component\Config\FileLocator; use Symfony\Component\Config\Resource\FileResource; +use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Loader\YamlFileLoader; use Symfony\Component\HttpKernel\DependencyInjection\Extension; @@ -92,6 +93,18 @@ public function load(array $configs, ContainerBuilder $container) $definition->addTag('twig.extension'); } + $composer_output = OutputInterface::VERBOSITY_NORMAL; + if ($config['extensions']['composer_verbose']) + { + $composer_output = OutputInterface::VERBOSITY_VERBOSE; + } + if ($config['extensions']['composer_debug']) + { + $composer_output = OutputInterface::VERBOSITY_DEBUG; + } + + $container->setParameter('extensions.composer.output', $composer_output); + // Set the debug options foreach ($config['debug'] as $name => $value) { From 60086b5c41f467b28a70397c5fa6e734dc76a9dc Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Thu, 17 Sep 2015 09:33:44 +0200 Subject: [PATCH 155/431] [ticket/11150] Add language key PHPBB3-11150 --- phpBB/language/en/acp/extensions.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/phpBB/language/en/acp/extensions.php b/phpBB/language/en/acp/extensions.php index 53ba5bf859f..135631ba522 100644 --- a/phpBB/language/en/acp/extensions.php +++ b/phpBB/language/en/acp/extensions.php @@ -173,6 +173,8 @@ 'STABILITY_DEV' => 'dev', 'COMPOSER_MINIMUM_STABILITY' => 'Minimum stability', - 'COMPOSER_MINIMUM_STABILITY_EXPLAIN' => 'TODO: why it is dangerous to change that', + 'COMPOSER_MINIMUM_STABILITY_EXPLAIN' => 'Always use stable versions on a live forum. +Non-stable versions may still be in development and could cause unexpected problems with your +forum and should only be used for development purposes in local or staging environments.', )); From fc1d79cf474894c5cbf14e8122de2b6f3b39963b Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Thu, 17 Sep 2015 09:37:18 +0200 Subject: [PATCH 156/431] [ticket/11150] Correctly enable/purge extensions PHPBB3-11150 --- phpBB/phpbb/composer/extension_manager.php | 6 +++--- phpBB/phpbb/composer/manager.php | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/phpBB/phpbb/composer/extension_manager.php b/phpBB/phpbb/composer/extension_manager.php index 7e148e0d54e..a1ceb06d91c 100644 --- a/phpBB/phpbb/composer/extension_manager.php +++ b/phpBB/phpbb/composer/extension_manager.php @@ -98,7 +98,7 @@ public function post_install(array $packages, IOInterface $io = null) if ($this->enable_on_install) { $io->writeError([['ENABLING_EXTENSIONS', [], 1]], true); - foreach ($packages as $package) + foreach ($packages as $package => $version) { try { @@ -123,7 +123,7 @@ protected function pre_update(array $packages, IOInterface $io = null) { $io->writeError([['DISABLING_EXTENSIONS', [], 1]], true); $this->enabled_extensions = []; - foreach ($packages as $package) + foreach ($packages as $package => $version) { try { @@ -193,7 +193,7 @@ public function pre_remove(array $packages, IOInterface $io = null) $io->writeError([['DISABLING_EXTENSIONS', [], 1]], true); } - foreach ($packages as $package) + foreach ($packages as $package => $version) { try { diff --git a/phpBB/phpbb/composer/manager.php b/phpBB/phpbb/composer/manager.php index fbd14c57836..c9d917e5c9c 100644 --- a/phpBB/phpbb/composer/manager.php +++ b/phpBB/phpbb/composer/manager.php @@ -291,7 +291,7 @@ public function check_requirements() return $this->installer->check_requirements(); } - protected function normalize_version($packages) + protected function normalize_version(array $packages) { $normalized_packages = []; From dbfe2d7947561c60be92b6ffe7ba05f07eca4e87 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Thu, 17 Sep 2015 09:41:32 +0200 Subject: [PATCH 157/431] [ticket/11150] Yellow => Orange in composer output PHPBB3-11150 --- phpBB/phpbb/composer/io/html_output_formatter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/phpbb/composer/io/html_output_formatter.php b/phpBB/phpbb/composer/io/html_output_formatter.php index d3066f969d2..6106392b4c6 100644 --- a/phpBB/phpbb/composer/io/html_output_formatter.php +++ b/phpBB/phpbb/composer/io/html_output_formatter.php @@ -19,7 +19,7 @@ class html_output_formatter extends \Composer\Console\HtmlOutputFormatter 30 => 'black', 31 => 'red', 32 => 'green', - 33 => 'yellow', + 33 => 'orange', 34 => 'blue', 35 => 'magenta', 36 => 'cyan', From 0926e94955b01ee6e2d51b35187c4338f5a92cc7 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Thu, 17 Sep 2015 10:17:32 +0200 Subject: [PATCH 158/431] [ticket/11150] CS PHPBB3-11150 --- phpBB/language/en/acp/extensions.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/phpBB/language/en/acp/extensions.php b/phpBB/language/en/acp/extensions.php index 135631ba522..8322be7753f 100644 --- a/phpBB/language/en/acp/extensions.php +++ b/phpBB/language/en/acp/extensions.php @@ -173,8 +173,6 @@ 'STABILITY_DEV' => 'dev', 'COMPOSER_MINIMUM_STABILITY' => 'Minimum stability', - 'COMPOSER_MINIMUM_STABILITY_EXPLAIN' => 'Always use stable versions on a live forum. -Non-stable versions may still be in development and could cause unexpected problems with your -forum and should only be used for development purposes in local or staging environments.', + 'COMPOSER_MINIMUM_STABILITY_EXPLAIN' => 'Always use stable versions on a live forum. Non-stable versions may still be in development and could cause unexpected problems with your forum and should only be used for development purposes in local or staging environments.', )); From ba0f151c39b5fb1b48109157ddb5af673cd71668 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Thu, 17 Sep 2015 10:55:49 +0200 Subject: [PATCH 159/431] [ticket/11150] Adds an overflow to composer output PHPBB3-11150 --- phpBB/adm/style/detailled_message_body.html | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/phpBB/adm/style/detailled_message_body.html b/phpBB/adm/style/detailled_message_body.html index f5f42eff2ef..5fc0b1b2ec5 100644 --- a/phpBB/adm/style/detailled_message_body.html +++ b/phpBB/adm/style/detailled_message_body.html @@ -5,11 +5,13 @@

      {{ MESSAGE_TITLE }}

      {{ MESSAGE_TEXT }}

      -
      - {%- if MESSAGE_DETAIL_LEGEND -%} - {{ MESSAGE_DETAIL_LEGEND|nl2br }} - {%- endif -%} -
      {{ MESSAGE_DETAIL }}
      -
      +
      +
      + {%- if MESSAGE_DETAIL_LEGEND -%} + {{ MESSAGE_DETAIL_LEGEND|nl2br }} + {%- endif -%} +
      {{ MESSAGE_DETAIL }}
      +
      +
      From b10719d03dd1b9184ea89e33502dc6ac003ba113 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Thu, 17 Sep 2015 10:58:42 +0200 Subject: [PATCH 160/431] [ticket/11150] Don't display remove for enabled extensions PHPBB3-11150 --- phpBB/adm/style/acp_ext_list.html | 6 ------ 1 file changed, 6 deletions(-) diff --git a/phpBB/adm/style/acp_ext_list.html b/phpBB/adm/style/acp_ext_list.html index 9f22c037228..eb2e75cff55 100644 --- a/phpBB/adm/style/acp_ext_list.html +++ b/phpBB/adm/style/acp_ext_list.html @@ -62,12 +62,6 @@

      {L_EXTENSIONS_ADMIN}

      title="{enabled.actions.L_ACTION_EXPLAIN}">{enabled.actions.L_ACTION}  |  - - -  |  - {L_UPDATE} -  | {L_REMOVE} - From 65cd20539f3b45d5cc32b321095f3585c918968b Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Thu, 17 Sep 2015 11:00:17 +0200 Subject: [PATCH 161/431] [ticket/11150] Purge on remove by default PHPBB3-11150 --- phpBB/phpbb/composer/extension_manager.php | 2 +- phpBB/phpbb/db/migration/data/v320/extensions_composer.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/phpBB/phpbb/composer/extension_manager.php b/phpBB/phpbb/composer/extension_manager.php index a1ceb06d91c..96250e9dd3f 100644 --- a/phpBB/phpbb/composer/extension_manager.php +++ b/phpBB/phpbb/composer/extension_manager.php @@ -51,7 +51,7 @@ class extension_manager extends manager /** * @var bool Purges extensions data when removing them? */ - private $purge_on_remove = false; + private $purge_on_remove = true; /** * @param installer $installer Installer object diff --git a/phpBB/phpbb/db/migration/data/v320/extensions_composer.php b/phpBB/phpbb/db/migration/data/v320/extensions_composer.php index 438c412158b..8b7065d335a 100644 --- a/phpBB/phpbb/db/migration/data/v320/extensions_composer.php +++ b/phpBB/phpbb/db/migration/data/v320/extensions_composer.php @@ -23,7 +23,7 @@ public function update_data() array('config.add', array('exts_composer_json_file', 'composer-ext.json')), array('config.add', array('exts_composer_vendor_dir', 'vendor-ext/')), array('config.add', array('exts_composer_enable_on_install', false)), - array('config.add', array('exts_composer_purge_on_remove', false)), + array('config.add', array('exts_composer_purge_on_remove', true)), array('module.add', array( 'acp', 'ACP_EXTENSION_MANAGEMENT', From 8b96fc7d040de2d8b68732dfa1269782298a8be3 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Thu, 17 Sep 2015 11:02:43 +0200 Subject: [PATCH 162/431] [ticket/11150] Add missing config entries PHPBB3-11150 --- phpBB/install/schemas/schema_data.sql | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/phpBB/install/schemas/schema_data.sql b/phpBB/install/schemas/schema_data.sql index fe62484afb7..c4eff64c14f 100644 --- a/phpBB/install/schemas/schema_data.sql +++ b/phpBB/install/schemas/schema_data.sql @@ -281,6 +281,12 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('use_system_cron', INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.3.0-a1-dev'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_expire_days', '90'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_gc', '14400'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('exts_composer_repositories', '[]'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('exts_composer_packagist', '1'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('exts_composer_json_file', 'composer-ext.json'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('exts_composer_vendor_dir', 'vendor-ext/'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('exts_composer_enable_on_install', '0'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('exts_composer_purge_on_remove', '1'); INSERT INTO phpbb_config (config_name, config_value, is_dynamic) VALUES ('cache_last_gc', '0', 1); INSERT INTO phpbb_config (config_name, config_value, is_dynamic) VALUES ('cron_lock', '0', 1); From bac391c2820ce0693289e2ba67bf949b8868316c Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Fri, 18 Sep 2015 09:33:44 +0200 Subject: [PATCH 163/431] [ticket/11150] CS PHPBB3-11150 --- phpBB/adm/style/acp_ext_catalog.html | 6 ++--- phpBB/includes/acp/acp_extensions.php | 26 ++++++++++++---------- phpBB/phpbb/composer/manager_interface.php | 16 ++++++++----- 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/phpBB/adm/style/acp_ext_catalog.html b/phpBB/adm/style/acp_ext_catalog.html index fff5c551a6b..b47a241c555 100644 --- a/phpBB/adm/style/acp_ext_catalog.html +++ b/phpBB/adm/style/acp_ext_catalog.html @@ -2,15 +2,15 @@ -

      {{lang( 'EXTENSIONS_CATALOG') }}

      +

      {{ lang( 'EXTENSIONS_CATALOG') }}

      -

      {{lang( 'EXTENSIONS_CATALOG_EXPLAIN') }}

      +

      {{ lang( 'EXTENSIONS_CATALOG_EXPLAIN') }}

      {% if not enabled %}
      {{ lang('EXTENSIONS_COMPOSER_NOT_WRITABLE') }}
      -{% endif %} +{% endif %}I
      {{ lang('BROWSE_EXTENSIONS_DATABASE') }}{{ lang('SETTINGS') }} diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index 15a9d74623e..d9fe8df0398 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -658,19 +658,21 @@ public function catalog_mode($id, $mode) $this->page_title = 'ACP_EXTENSIONS_CATALOG'; $this->tpl_name = 'acp_ext_catalog'; - $this->template->assign_var('extensions', $extensions); - $this->template->assign_var('managed_extensions', array_keys($managed_packages)); - $this->template->assign_var('installed_extensions', array_keys($extensions_manager->all_available())); - $this->template->assign_var('U_ACTION', $this->u_action); - $this->template->assign_var('settings', [ - 'enable_packagist' => $this->config['exts_composer_packagist'], - 'enable_on_install' => $this->config['exts_composer_enable_on_install'], - 'purge_on_remove' => $this->config['exts_composer_purge_on_remove'], - 'minimum_stability' => $this->config['exts_composer_minimum_stability'], - 'stabilities' => array_keys(\Composer\Package\BasePackage::$stabilities), - 'repositories' => json_decode($this->config['exts_composer_repositories'], true), + $this->template->assign_vars([ + 'enabled' => $manager->check_requirements(), + 'extensions' => $extensions, + 'managed_extensions' => array_keys($managed_packages), + 'installed_extensions' => array_keys($extensions_manager->all_available()), + 'U_ACTION' => $this->u_action, + 'settings' => [ + 'enable_packagist' => $this->config['exts_composer_packagist'], + 'enable_on_install' => $this->config['exts_composer_enable_on_install'], + 'purge_on_remove' => $this->config['exts_composer_purge_on_remove'], + 'minimum_stability' => $this->config['exts_composer_minimum_stability'], + 'stabilities' => array_keys(\Composer\Package\BasePackage::$stabilities), + 'repositories' => json_decode($this->config['exts_composer_repositories'], true), + ], ]); - $this->template->assign_var('enabled', $manager->check_requirements()); add_form_key('catalog_settings'); diff --git a/phpBB/phpbb/composer/manager_interface.php b/phpBB/phpbb/composer/manager_interface.php index 9fae7a0e9c1..3cb401f2b6d 100644 --- a/phpBB/phpbb/composer/manager_interface.php +++ b/phpBB/phpbb/composer/manager_interface.php @@ -1,15 +1,21 @@ + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * */ + namespace phpbb\composer; + use Composer\IO\IOInterface; use phpbb\composer\exception\runtime_exception; - /** * Class to manage packages through composer. */ From e71e6224f596677e5bed90f4087c1b6eac5e1e93 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Fri, 25 Sep 2015 19:20:36 +0200 Subject: [PATCH 164/431] [ticket/11150] Remove 'Update' and 'Remove' actions in the catalog PHPBB3-11150 --- phpBB/adm/style/acp_ext_catalog.html | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/phpBB/adm/style/acp_ext_catalog.html b/phpBB/adm/style/acp_ext_catalog.html index b47a241c555..345c32b0678 100644 --- a/phpBB/adm/style/acp_ext_catalog.html +++ b/phpBB/adm/style/acp_ext_catalog.html @@ -109,14 +109,11 @@

      {{ lang( 'EXTENSIONS_CATALOG') }}

      {% if extension.name in managed_extensions %} {{ lang('INSTALLED') }} - {%- if enabled -%}
      - ({{ lang('UPDATE') }} - • {{ lang('REMOVE') }}) - {%- endif -%} {% elseif extension.name in installed_extensions -%} {{ lang('INSTALLED_MANUALLY') }} {%- if enabled -%}
      - ({{ lang('MANAGE') }}){%- endif -%} + ({{ lang('MANAGE') }}) + {%- endif -%} {% elseif enabled -%} {{ lang('INSTALL') }} {%- endif -%} From 7958dca09d354fdf3804937496380d941fa08caf Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Fri, 25 Sep 2015 19:36:05 +0200 Subject: [PATCH 165/431] [ticket/11150] Load vendor/ext-autoload.php PHPBB3-11150 --- phpBB/bin/phpbbcli.php | 5 +++++ phpBB/common.php | 5 +++++ phpBB/download/file.php | 5 +++++ phpBB/phpbb/composer/installer.php | 3 ++- phpBB/phpbb/di/container_builder.php | 6 ++++++ 5 files changed, 23 insertions(+), 1 deletion(-) diff --git a/phpBB/bin/phpbbcli.php b/phpBB/bin/phpbbcli.php index 6bd217ec07d..1b3fac51e01 100755 --- a/phpBB/bin/phpbbcli.php +++ b/phpBB/bin/phpbbcli.php @@ -71,6 +71,11 @@ register_compatibility_globals(); +if (is_file($phpbb_root_path . $config['exts_composer_vendor_dir'] . '/autoload.php')) +{ + require_once($phpbb_root_path . $config['exts_composer_vendor_dir'] . '/autoload.php'); +} + /** @var \phpbb\language\language $language */ $language = $phpbb_container->get('language'); $language->add_lang(array('common', 'acp/common', 'cli')); diff --git a/phpBB/common.php b/phpBB/common.php index 70feb55d04f..30293cae519 100644 --- a/phpBB/common.php +++ b/phpBB/common.php @@ -141,6 +141,11 @@ register_compatibility_globals(); +if (is_file($phpbb_root_path . $config['exts_composer_vendor_dir'] . '/autoload.php')) +{ + require_once($phpbb_root_path . $config['exts_composer_vendor_dir'] . '/autoload.php'); +} + // Add own hook handler require($phpbb_root_path . 'includes/hooks/index.' . $phpEx); $phpbb_hook = new phpbb_hook(array('exit_handler', 'phpbb_user_session_handler', 'append_sid', array('template', 'display'))); diff --git a/phpBB/download/file.php b/phpBB/download/file.php index a9cd4a3b3cc..fbbabfb74f1 100644 --- a/phpBB/download/file.php +++ b/phpBB/download/file.php @@ -99,6 +99,11 @@ /* @var $phpbb_avatar_manager \phpbb\avatar\manager */ $phpbb_avatar_manager = $phpbb_container->get('avatar.manager'); + if (is_file($phpbb_root_path . $config['exts_composer_vendor_dir'] . '/autoload.php')) + { + require_once($phpbb_root_path . $config['exts_composer_vendor_dir'] . '/autoload.php'); + } + $filename = $request->variable('avatar', ''); $avatar_group = false; $exit = false; diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 2b805288da5..730d708d108 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -161,7 +161,8 @@ protected function do_install(array $packages, $whitelist, IOInterface $io = nul ->setUpdateWhitelist($whitelist) ->setWhitelistDependencies(false) ->setIgnorePlatformRequirements(false) - ->setDumpAutoloader(false) + ->setOptimizeAutoloader(true) + ->setDumpAutoloader(true) ->setPreferStable(true) ->setRunScripts(false) ->setDryRun(false); diff --git a/phpBB/phpbb/di/container_builder.php b/phpBB/phpbb/di/container_builder.php index ac1a1a1733e..08400320b72 100644 --- a/phpBB/phpbb/di/container_builder.php +++ b/phpBB/phpbb/di/container_builder.php @@ -415,6 +415,12 @@ protected function load_extensions() $ext_container->register('cache.driver', '\\phpbb\\cache\\driver\\dummy'); $ext_container->compile(); + $config = $ext_container->get('config'); + if (is_file($this->phpbb_root_path . $config['exts_composer_vendor_dir'] . '/autoload.php')) + { + require_once($this->phpbb_root_path . $config['exts_composer_vendor_dir'] . '/autoload.php'); + } + $extensions = $ext_container->get('ext.manager')->all_enabled(); // Load each extension found From 8ea2ecf8351ed78bfb856dfb14c998275ba449c9 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Tue, 8 Dec 2015 20:40:35 +0100 Subject: [PATCH 166/431] [ticket/11150] Disable packagist and add titania PHPBB3-11150 --- phpBB/adm/style/acp_ext_catalog.html | 2 +- .../default/container/services_console.yml | 28 +++++++------ .../default/container/services_extensions.yml | 40 +++++++++---------- phpBB/language/en/acp/extensions.php | 2 +- phpBB/phpbb/composer/installer.php | 12 +++--- .../data/v320/extensions_composer.php | 6 ++- 6 files changed, 47 insertions(+), 43 deletions(-) diff --git a/phpBB/adm/style/acp_ext_catalog.html b/phpBB/adm/style/acp_ext_catalog.html index 345c32b0678..326d6b8bc7b 100644 --- a/phpBB/adm/style/acp_ext_catalog.html +++ b/phpBB/adm/style/acp_ext_catalog.html @@ -10,7 +10,7 @@

      {{ lang( 'EXTENSIONS_CATALOG') }}

      {{ lang('EXTENSIONS_COMPOSER_NOT_WRITABLE') }}
      -{% endif %}I +{% endif %}
      {{ lang('BROWSE_EXTENSIONS_DATABASE') }}{{ lang('SETTINGS') }} diff --git a/phpBB/config/default/container/services_console.yml b/phpBB/config/default/container/services_console.yml index a59fe3cd7e0..94c7c61812d 100644 --- a/phpBB/config/default/container/services_console.yml +++ b/phpBB/config/default/container/services_console.yml @@ -144,26 +144,27 @@ services: console.command.extension.install: class: phpbb\console\command\extension\install arguments: - - @user - - @ext.composer.manager + - '@user' + - '@ext.composer.manager' + - '@language' tags: - { name: console.command } console.command.extension.list_available: class: phpbb\console\command\extension\list_available arguments: - - @user - - @ext.composer.manager - - @language + - '@user' + - '@ext.composer.manager' + - '@language' tags: - { name: console.command } console.command.extension.manage: class: phpbb\console\command\extension\manage arguments: - - @user - - @ext.composer.manager - - @language + - '@user' + - '@ext.composer.manager' + - '@language' tags: - { name: console.command } @@ -179,9 +180,9 @@ services: console.command.extension.remove: class: phpbb\console\command\extension\remove arguments: - - @user - - @ext.composer.manager - - @language + - '@user' + - '@ext.composer.manager' + - '@language' tags: - { name: console.command } @@ -197,8 +198,9 @@ services: console.command.extension.update: class: phpbb\console\command\extension\update arguments: - - @user - - @ext.composer.manager + - '@user' + - '@ext.composer.manager' + - '@language' tags: - { name: console.command } diff --git a/phpBB/config/default/container/services_extensions.yml b/phpBB/config/default/container/services_extensions.yml index b97ae1fa9c3..a28fd019d8e 100644 --- a/phpBB/config/default/container/services_extensions.yml +++ b/phpBB/config/default/container/services_extensions.yml @@ -2,45 +2,45 @@ services: ext.manager: class: phpbb\extension\manager arguments: - - @service_container - - @dbal.conn - - @config - - @filesystem - - %tables.ext% - - %core.root_path% - - %core.php_ext% - - @cache + - '@service_container' + - '@dbal.conn' + - '@config' + - '@filesystem' + - '%tables.ext%' + - '%core.root_path%' + - '%core.php_ext%' + - '@cache' ext.composer.installer: class: phpbb\composer\installer arguments: - - %core.root_path% - - @config + - '%core.root_path%' + - '@config' ext.composer.manager: class: phpbb\composer\extension_manager arguments: - - @ext.composer.installer - - @cache.driver - - @ext.manager - - @filesystem + - '@ext.composer.installer' + - '@cache.driver' + - '@ext.manager' + - '@filesystem' - phpbb-extension - EXTENSIONS_ - - %core.root_path% - - @config + - '%core.root_path%' + - '@config' style.composer.manager: class: phpbb\composer\manager arguments: - - @ext.composer.installer - - @cache.driver + - '@ext.composer.installer' + - '@cache.driver' - phpbb-style - STYLES_ lang.composer.manager: class: phpbb\composer\manager arguments: - - @ext.composer.installer - - @cache.driver + - '@ext.composer.installer' + - '@cache.driver' - phpbb-language - LANGUAGES_ diff --git a/phpBB/language/en/acp/extensions.php b/phpBB/language/en/acp/extensions.php index 8322be7753f..a32676f31a8 100644 --- a/phpBB/language/en/acp/extensions.php +++ b/phpBB/language/en/acp/extensions.php @@ -164,7 +164,7 @@ 'EXTENSIONS_REMOVED' => 'Extensions successfully removed.', 'EXTENSIONS_UPDATED' => 'Extensions successfully updated.', - 'EXTENSIONS_COMPOSER_NOT_WRITABLE' => 'TODO: some required files / directory are not writable => disable ', + 'EXTENSIONS_COMPOSER_NOT_WRITABLE' => 'In order to use the catalog, the following files and directories must be writable: ext/ vendor-ext/ composer-ext.json and composer-ext.json.lock', 'STABILITY_STABLE' => 'stable', 'STABILITY_RC' => 'RC', diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 730d708d108..3605af135b7 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -20,10 +20,10 @@ use Composer\Json\JsonFile; use Composer\Package\BasePackage; use Composer\Package\CompletePackage; -use Composer\Package\LinkConstraint\LinkConstraintInterface; use Composer\Package\PackageInterface; use Composer\Repository\ComposerRepository; use Composer\Repository\RepositoryInterface; +use Composer\Semver\Constraint\ConstraintInterface; use Composer\Util\RemoteFilesystem; use phpbb\config\config; use phpbb\exception\runtime_exception; @@ -85,7 +85,7 @@ public function __construct($root_path, config $config = null) { $repositories = json_decode($config['exts_composer_repositories'], true); - if (!is_array($repositories) && !empty($repositories)) + if (is_array($repositories) && !empty($repositories)) { $this->repositories = (array) $repositories; } @@ -296,7 +296,7 @@ protected function do_get_available_packages($type) $io = new NullIO(); $composer = Factory::create($io, $this->get_composer_ext_json_filename(), false); - /** @var LinkConstraintInterface $core_constraint */ + /** @var ConstraintInterface $core_constraint */ $core_constraint = $composer->getPackage()->getRequires()['phpbb/phpbb']->getConstraint(); $core_stability = $composer->getPackage()->getMinimumStability(); @@ -430,14 +430,14 @@ public function check_requirements() * Updates $compatible_packages with the versions of $versions compatibles with the $core_constraint * * @param array $compatible_packages List of compatibles versions - * @param LinkConstraintInterface $core_constraint Constraint against the phpBB version + * @param ConstraintInterface $core_constraint Constraint against the phpBB version * @param string $core_stability Core stability * @param string $package_name Considered package * @param array $versions List of available versions * * @return array */ - private function get_compatible_versions(array $compatible_packages, LinkConstraintInterface $core_constraint, $core_stability, $package_name, array $versions) + private function get_compatible_versions(array $compatible_packages, ConstraintInterface $core_constraint, $core_stability, $package_name, array $versions) { $core_stability_value = BasePackage::$stabilities[$core_stability]; //VersionParser::parseStability($version['version']) @@ -451,7 +451,7 @@ private function get_compatible_versions(array $compatible_packages, LinkConstra if (array_key_exists('phpbb/phpbb', $version->getRequires())) { - /** @var LinkConstraintInterface $package_constraint */ + /** @var ConstraintInterface $package_constraint */ $package_constraint = $version->getRequires()['phpbb/phpbb']->getConstraint(); if (!$package_constraint->matches($core_constraint)) diff --git a/phpBB/phpbb/db/migration/data/v320/extensions_composer.php b/phpBB/phpbb/db/migration/data/v320/extensions_composer.php index 8b7065d335a..957d1416837 100644 --- a/phpBB/phpbb/db/migration/data/v320/extensions_composer.php +++ b/phpBB/phpbb/db/migration/data/v320/extensions_composer.php @@ -18,8 +18,10 @@ class extensions_composer extends \phpbb\db\migration\migration public function update_data() { return array( - array('config.add', array('exts_composer_repositories', json_encode([], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES))), - array('config.add', array('exts_composer_packagist', true)), + array('config.add', array('exts_composer_repositories', json_encode([ + 'https://www.phpbb.com/customise/db/composer/', + ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES))), + array('config.add', array('exts_composer_packagist', false)), array('config.add', array('exts_composer_json_file', 'composer-ext.json')), array('config.add', array('exts_composer_vendor_dir', 'vendor-ext/')), array('config.add', array('exts_composer_enable_on_install', false)), From ea4a4acee012e74a4624e71bc34c259f8d877166 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Wed, 9 Dec 2015 19:39:05 +0100 Subject: [PATCH 167/431] [ticket/11150] CS and wording PHPBB3-11150 --- ...sage_body.html => detailed_message_body.html} | 0 phpBB/includes/acp/acp_extensions.php | 16 ++++++++-------- phpBB/language/en/acp/common.php | 2 +- phpBB/language/en/acp/extensions.php | 6 +++--- phpBB/phpbb/composer/installer.php | 6 +++--- 5 files changed, 15 insertions(+), 15 deletions(-) rename phpBB/adm/style/{detailled_message_body.html => detailed_message_body.html} (100%) diff --git a/phpBB/adm/style/detailled_message_body.html b/phpBB/adm/style/detailed_message_body.html similarity index 100% rename from phpBB/adm/style/detailled_message_body.html rename to phpBB/adm/style/detailed_message_body.html diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index d9fe8df0398..fe0a6184cdd 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -62,10 +62,10 @@ function main() { case 'catalog': $this->catalog_mode($id, $mode); - break; + break; default: $this->main_mode($id, $mode); - break; + break; } } @@ -155,7 +155,7 @@ public function main_mode($id, $mode) $this->config->set('extension_force_unstable', false); trigger_error($this->user->lang['CONFIG_UPDATED'] . adm_back_link($this->u_action)); } - break; + break; case 'list': default: @@ -464,7 +464,7 @@ public function catalog_mode($id, $mode) ) ); - break; + break; case 'remove': $this->page_title = 'ACP_EXTENSIONS_REMOVE'; @@ -503,7 +503,7 @@ public function catalog_mode($id, $mode) ) ); - break; + break; case 'update': $this->page_title = 'ACP_EXTENSIONS_UPDATE'; @@ -542,7 +542,7 @@ public function catalog_mode($id, $mode) ) ); - break; + break; case 'manage': $this->page_title = 'ACP_EXTENSIONS_MANAGE'; @@ -581,7 +581,7 @@ public function catalog_mode($id, $mode) ) ); - break; + break; case 'list': default: if (!$this->config['exts_composer_packagist'] && $this->request->is_set('enable_packagist') && confirm_box(true)) @@ -676,7 +676,7 @@ public function catalog_mode($id, $mode) add_form_key('catalog_settings'); - break; + break; } } diff --git a/phpBB/language/en/acp/common.php b/phpBB/language/en/acp/common.php index 22b78fe218c..69391970349 100644 --- a/phpBB/language/en/acp/common.php +++ b/phpBB/language/en/acp/common.php @@ -250,7 +250,7 @@ 'COMPOSER_UPDATING_DEPENDENCIES' => 'Updating packages', 'COMPOSER_LOADING_REPOSITORIES' => 'Loading remote repositories with package information', 'COMPOSER_ERROR_CONFLICT' => 'Your requirements could not be resolved to an installable set of packages.', - 'COMPOSER_REPOSITORY_UNAVAILABLE' => 'An error occurred when fetching the repository %s.', + 'COMPOSER_REPOSITORY_UNAVAILABLE' => 'An error occurred while fetching the repository %s.', 'COMPOSER_INSTALLING_PACKAGE' => ' - Installing %1$s (%2$s)', 'COMPOSER_DELETING' => ' - Deleting %s', 'COMPOSER_UPDATE_NOTHING' => 'Nothing to update', diff --git a/phpBB/language/en/acp/extensions.php b/phpBB/language/en/acp/extensions.php index a32676f31a8..280a483d895 100644 --- a/phpBB/language/en/acp/extensions.php +++ b/phpBB/language/en/acp/extensions.php @@ -41,15 +41,15 @@ 'EXTENSION_ALREADY_MANAGED' => 'The “%s” extension is already managed.', 'EXTENSION_CANNOT_MANAGE_FILESYSTEM_ERROR' => 'The “%s” extension cannot be managed because the existing files could not be removed from the filesystem.', 'EXTENSION_CANNOT_MANAGE_INSTALL_ERROR' => 'The “%s” extension could not be installed. The prior installation of this extension has been restored.', - 'EXTENSION_MANAGED_WITH_CLEAN_ERROR' => 'The “%1$s” extension has been installed but an error occurred and the old files have not been removed. You might want to delete the “%2$s” files manually.', - 'EXTENSION_MANAGED_WITH_ENABLE_ERROR' => 'The “%s” extension has been installed but an error occurred when enabling it.', + 'EXTENSION_MANAGED_WITH_CLEAN_ERROR' => 'The “%1$s” extension has been installed but an error occurred and the old files could not be removed. You might want to delete the “%2$s” files manually.', + 'EXTENSION_MANAGED_WITH_ENABLE_ERROR' => 'The “%s” extension has been installed but an error occurred while enabling it.', 'EXTENSION_NOT_INSTALLED' => 'The “%s” extension is not installed.', 'ENABLING_EXTENSIONS' => 'Enabling extensions', 'DISABLING_EXTENSIONS' => 'Disabling extensions', 'EXTENSIONS_CATALOG' => 'Extensions Catalog', - 'EXTENSIONS_CATALOG_EXPLAIN' => 'Here you can browse all of the extensions available for your phpBB board. Extensions can easily be installed or removed with just a click. Adjust the Settings to allow instant enabling and purging of extensions.', + 'EXTENSIONS_CATALOG_EXPLAIN' => 'Here you can browse all of the extensions available for your phpBB board. Extensions can easily be installed or removed with just a click. Adjust the settings to allow instant enabling and purging of extensions.', 'EXTENSION' => 'Extension', 'EXTENSIONS' => 'Extensions', diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 3605af135b7..18a66d1bf8f 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -76,14 +76,14 @@ class installer private $ext_json_file_backup; /** - * @param \phpbb\config\config $config Config object - * @param string $root_path phpBB root path + * @param string $root_path phpBB root path + * @param config $config Config object */ public function __construct($root_path, config $config = null) { if ($config) { - $repositories = json_decode($config['exts_composer_repositories'], true); + $repositories = json_decode($config['exts_composer_repositories'], true); if (is_array($repositories) && !empty($repositories)) { From b5136e4976d803ac92d8bb4a61ecf647ee08ce98 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Wed, 9 Dec 2015 22:44:58 +0100 Subject: [PATCH 168/431] [ticket/11150] Fix CS PHPBB3-11150 --- phpBB/ext/index.htm | 0 .../phpbb/composer/io/html_output_formatter.php | 17 ++++++++++++----- .../composer/io/translate_composer_trait.php | 6 ++---- .../command/extension/list_available.php | 6 ------ .../phpbb/console/command/extension/manage.php | 1 - 5 files changed, 14 insertions(+), 16 deletions(-) mode change 100755 => 100644 phpBB/ext/index.htm diff --git a/phpBB/ext/index.htm b/phpBB/ext/index.htm old mode 100755 new mode 100644 diff --git a/phpBB/phpbb/composer/io/html_output_formatter.php b/phpBB/phpbb/composer/io/html_output_formatter.php index 6106392b4c6..c20ad83c898 100644 --- a/phpBB/phpbb/composer/io/html_output_formatter.php +++ b/phpBB/phpbb/composer/io/html_output_formatter.php @@ -58,13 +58,20 @@ public function format($message) protected function formatHtml($matches) { $out = ' Date: Fri, 11 Dec 2015 20:12:25 +0100 Subject: [PATCH 169/431] [ticket/11150] Case insentitive sort PHPBB3-11150 --- phpBB/phpbb/composer/installer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 18a66d1bf8f..1179d592f52 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -399,7 +399,7 @@ protected function do_get_available_packages($type) usort($available, function($a, $b) { - return strcmp($a['display_name'], $b['display_name']); + return strcasecmp($a['display_name'], $b['display_name']); }); return $available; From 4617037febab3ca9746d9cb03b98536d99ba64a2 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Fri, 11 Dec 2015 20:12:42 +0100 Subject: [PATCH 170/431] [ticket/11150] Console liek output PHPBB3-11150 --- phpBB/adm/style/admin.css | 7 +++++++ phpBB/adm/style/detailed_message_body.html | 7 ++----- phpBB/includes/acp/acp_extensions.php | 10 +++++----- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/phpBB/adm/style/admin.css b/phpBB/adm/style/admin.css index 290fee2983e..f115a6f72cd 100644 --- a/phpBB/adm/style/admin.css +++ b/phpBB/adm/style/admin.css @@ -2969,3 +2969,10 @@ fieldset.permissions .permissions-switch { /* stylelint-enable selector-no-qualifying-type */ /* stylelint-enable declaration-property-unit-blacklist */ /* stylelint-enable declaration-property-unit-whitelist */ + +.console-output { + background-color: #2a2a2a; + color: #f1f1f1; + font-family: monospace; + overflow-x:scroll; +} diff --git a/phpBB/adm/style/detailed_message_body.html b/phpBB/adm/style/detailed_message_body.html index 5fc0b1b2ec5..bc904d7eb62 100644 --- a/phpBB/adm/style/detailed_message_body.html +++ b/phpBB/adm/style/detailed_message_body.html @@ -5,11 +5,8 @@

      {{ MESSAGE_TITLE }}

      {{ MESSAGE_TEXT }}

      -
      -
      - {%- if MESSAGE_DETAIL_LEGEND -%} - {{ MESSAGE_DETAIL_LEGEND|nl2br }} - {%- endif -%} +
      +
      {{ MESSAGE_DETAIL }}
      diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index fe0a6184cdd..1bcbe9f4152 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -453,7 +453,7 @@ public function catalog_mode($id, $mode) $this->display_composer_exception($language, $e, $composer_io); return; } - $this->tpl_name = 'detailled_message_body'; + $this->tpl_name = 'detailed_message_body'; $this->template->assign_vars(array( 'MESSAGE_TITLE' => $language->lang('ACP_EXTENSIONS_INSTALL'), @@ -492,7 +492,7 @@ public function catalog_mode($id, $mode) $this->display_composer_exception($language, $e, $composer_io); return; } - $this->tpl_name = 'detailled_message_body'; + $this->tpl_name = 'detailed_message_body'; $this->template->assign_vars(array( 'MESSAGE_TITLE' => $language->lang('ACP_EXTENSIONS_REMOVE'), @@ -531,7 +531,7 @@ public function catalog_mode($id, $mode) $this->display_composer_exception($language, $e, $composer_io); return; } - $this->tpl_name = 'detailled_message_body'; + $this->tpl_name = 'detailed_message_body'; $this->template->assign_vars(array( 'MESSAGE_TITLE' => $language->lang('ACP_EXTENSIONS_UPDATE'), @@ -570,7 +570,7 @@ public function catalog_mode($id, $mode) $this->display_composer_exception($language, $e, $composer_io); return; } - $this->tpl_name = 'detailled_message_body'; + $this->tpl_name = 'detailed_message_body'; $this->template->assign_vars(array( 'MESSAGE_TITLE' => $language->lang('ACP_EXTENSIONS_MANAGE'), @@ -689,7 +689,7 @@ public function catalog_mode($id, $mode) */ private function display_composer_exception(\phpbb\language\language $language, \phpbb\exception\runtime_exception $e, \phpbb\composer\io\web_io $composer_io) { - $this->tpl_name = 'detailled_message_body'; + $this->tpl_name = 'detailed_message_body'; if ($e->getPrevious()) { From 718ca44a06b606488385bec2ecb8a505854d1583 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Tue, 15 Dec 2015 19:36:56 +0100 Subject: [PATCH 171/431] [ticket/11150] CS PHPBB3-11150 --- phpBB/adm/style/admin.css | 1 + .../default/container/services_extensions.yml | 1 + phpBB/phpbb/composer/installer.php | 34 ++++++---- phpBB/phpbb/composer/io/console_io.php | 2 +- .../composer/io/html_output_formatter.php | 65 ++++++++++--------- phpBB/phpbb/composer/io/io_interface.php | 32 +++++++++ phpBB/phpbb/composer/io/null_io.php | 32 +++++++++ phpBB/phpbb/composer/io/web_io.php | 2 +- 8 files changed, 124 insertions(+), 45 deletions(-) create mode 100644 phpBB/phpbb/composer/io/io_interface.php create mode 100644 phpBB/phpbb/composer/io/null_io.php diff --git a/phpBB/adm/style/admin.css b/phpBB/adm/style/admin.css index f115a6f72cd..aab20b36d5e 100644 --- a/phpBB/adm/style/admin.css +++ b/phpBB/adm/style/admin.css @@ -2975,4 +2975,5 @@ fieldset.permissions .permissions-switch { color: #f1f1f1; font-family: monospace; overflow-x:scroll; + line-height: 1.5em; } diff --git a/phpBB/config/default/container/services_extensions.yml b/phpBB/config/default/container/services_extensions.yml index a28fd019d8e..dda02340ab5 100644 --- a/phpBB/config/default/container/services_extensions.yml +++ b/phpBB/config/default/container/services_extensions.yml @@ -15,6 +15,7 @@ services: class: phpbb\composer\installer arguments: - '%core.root_path%' + - '@filesystem' - '@config' ext.composer.manager: diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 1179d592f52..8b4c762c928 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -20,6 +20,7 @@ use Composer\Json\JsonFile; use Composer\Package\BasePackage; use Composer\Package\CompletePackage; +use Composer\Package\Link; use Composer\Package\PackageInterface; use Composer\Repository\ComposerRepository; use Composer\Repository\RepositoryInterface; @@ -27,6 +28,7 @@ use Composer\Util\RemoteFilesystem; use phpbb\config\config; use phpbb\exception\runtime_exception; +use phpbb\filesystem\filesystem; /** * Class to install packages through composer while freezing core dependencies. @@ -76,10 +78,11 @@ class installer private $ext_json_file_backup; /** - * @param string $root_path phpBB root path - * @param config $config Config object + * @param string $root_path phpBB root path + * @param filesystem $filesystem Filesystem object + * @param config $config Config object */ - public function __construct($root_path, config $config = null) + public function __construct($root_path, filesystem $filesystem, config $config = null) { if ($config) { @@ -90,13 +93,15 @@ public function __construct($root_path, config $config = null) $this->repositories = (array) $repositories; } - $this->packagist = (bool) $config['exts_composer_packagist']; - $this->composer_filename = $config['exts_composer_json_file']; - $this->packages_vendor_dir = $config['exts_composer_vendor_dir']; - $this->minimum_stability = $config['exts_composer_minimum_stability']; + $this->packagist = (bool) $config['exts_composer_packagist']; + $this->composer_filenam = $config['exts_composer_json_file']; + $this->packages_vendor_dir = $config['exts_composer_vendor_dir']; + $this->minimum_stability = $config['exts_composer_minimum_stability']; } $this->root_path = $root_path; + + putenv('COMPOSER_HOME=' . $filesystem->realpath($root_path) . 'store/composer'); } /** @@ -119,7 +124,7 @@ public function install(array $packages, $whitelist, IOInterface $io = null) $this->do_install($packages, $whitelist, $io); $this->restore_cwd(); } - catch (\Exception $e) + catch (runtime_exception $e) { $this->restore_cwd(); throw $e; @@ -175,6 +180,7 @@ protected function do_install(array $packages, $whitelist, IOInterface $io = nul { $this->restore_ext_json_file(); $this->restore_cwd(); + throw new runtime_exception('COMPOSER_CANNOT_INSTALL', [], $e); } @@ -182,6 +188,7 @@ protected function do_install(array $packages, $whitelist, IOInterface $io = nul { $this->restore_ext_json_file(); $this->restore_cwd(); + throw new runtime_exception($io->get_composer_error(), []); } } @@ -192,6 +199,8 @@ protected function do_install(array $packages, $whitelist, IOInterface $io = nul * @param string|array $types Returns only the packages with the given type(s) * * @return array The installed packages associated to their version. + * + * @throws runtime_exception */ public function get_installed_packages($types) { @@ -203,7 +212,7 @@ public function get_installed_packages($types) $result = $this->do_get_installed_packages($types); $this->restore_cwd(); } - catch (\Exception $e) + catch (runtime_exception $e) { $this->restore_cwd(); throw $e; @@ -231,6 +240,8 @@ protected function do_get_installed_packages($types) $composer = Factory::create($io, $this->get_composer_ext_json_filename(), false); $installed = []; + + /** @var Link[] $required_links */ $required_links = $composer->getPackage()->getRequires(); $installed_packages = $composer->getRepositoryManager()->getLocalRepository()->getCanonicalPackages(); @@ -260,6 +271,8 @@ protected function do_get_installed_packages($types) * @param string $type Returns only the packages with the given type * * @return array The name of the available packages, associated to their definition. Ordered by name. + * + * @throws runtime_exception */ public function get_available_packages($type) { @@ -271,7 +284,7 @@ public function get_available_packages($type) $result = $this->do_get_available_packages($type); $this->restore_cwd(); } - catch (\Exception $e) + catch (runtime_exception $e) { $this->restore_cwd(); throw $e; @@ -488,7 +501,6 @@ protected function generate_ext_json_file(array $packages) 'replace' => $core_packages, 'repositories' => $this->get_composer_repositories(), 'config' => [ - 'cache-dir' => 'store/composer', 'vendor-dir'=> $this->packages_vendor_dir, ], 'minimum-stability' => $this->minimum_stability, diff --git a/phpBB/phpbb/composer/io/console_io.php b/phpBB/phpbb/composer/io/console_io.php index 14c1ef29e9f..5239b050bb1 100644 --- a/phpBB/phpbb/composer/io/console_io.php +++ b/phpBB/phpbb/composer/io/console_io.php @@ -19,7 +19,7 @@ use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; -class console_io extends ConsoleIO +class console_io extends ConsoleIO implements io_interface { use translate_composer_trait; diff --git a/phpBB/phpbb/composer/io/html_output_formatter.php b/phpBB/phpbb/composer/io/html_output_formatter.php index c20ad83c898..1629e1895cf 100644 --- a/phpBB/phpbb/composer/io/html_output_formatter.php +++ b/phpBB/phpbb/composer/io/html_output_formatter.php @@ -4,7 +4,7 @@ * This file is part of the phpBB Forum Software package. * * @copyright (c) phpBB Limited - * @license GNU General Public License, version 2 (GPL-2.0) + * @license GNU General Public License, version 2 (GPL-2.0) * * For full copyright and license information, please see * the docs/CREDITS.txt file. @@ -16,34 +16,35 @@ class html_output_formatter extends \Composer\Console\HtmlOutputFormatter { protected static $availableForegroundColors = [ - 30 => 'black', - 31 => 'red', - 32 => 'green', - 33 => 'orange', - 34 => 'blue', - 35 => 'magenta', - 36 => 'cyan', - 37 => 'white' - ]; + 30 => 'black', + 31 => 'red', + 32 => 'green', + 33 => 'orange', + 34 => 'blue', + 35 => 'magenta', + 36 => 'cyan', + 37 => 'white', + ]; protected static $availableBackgroundColors = [ - 40 => 'black', - 41 => 'red', - 42 => 'green', - 43 => 'yellow', - 44 => 'blue', - 45 => 'magenta', - 46 => 'cyan', - 47 => 'white' - ]; + 40 => 'black', + 41 => 'red', + 42 => 'green', + 43 => 'yellow', + 44 => 'blue', + 45 => 'magenta', + 46 => 'cyan', + 47 => 'white', + ]; - protected static $availableOptions = [ - 1 => 'bold', - 4 => 'underscore', - //5 => 'blink', - //7 => 'reverse', - //8 => 'conceal' - ]; + protected static $availableOptions + = [ + 1 => 'bold', + 4 => 'underscore', + //5 => 'blink', + //7 => 'reverse', + //8 => 'conceal' + ]; /** * {@inheritdoc} @@ -52,7 +53,7 @@ public function format($message) { $formatted = parent::format($message); - return preg_replace_callback("{[\033\e]\[([0-9;]+)m(.*?)[\033\e]\[[0-9;]+m}s", array($this, 'formatHtml'), $formatted); + return preg_replace_callback("{[\033\e]\[([0-9;]+)m(.*?)[\033\e]\[[0-9;]+m}s", [$this, 'formatHtml'], $formatted); } protected function formatHtml($matches) @@ -62,13 +63,13 @@ protected function formatHtml($matches) { if (isset(self::$availableForegroundColors[$code])) { - $out .= 'color:'.self::$availableForegroundColors[$code].';'; + $out .= 'color:' . self::$availableForegroundColors[$code] . ';'; } - elseif (isset(self::$availableBackgroundColors[$code])) + else if (isset(self::$availableBackgroundColors[$code])) { - $out .= 'background-color:'.self::$availableBackgroundColors[$code].';'; + $out .= 'background-color:' . self::$availableBackgroundColors[$code] . ';'; } - elseif (isset(self::$availableOptions[$code])) + else if (isset(self::$availableOptions[$code])) { switch (self::$availableOptions[$code]) { @@ -83,6 +84,6 @@ protected function formatHtml($matches) } } - return $out.'">'.$matches[2].''; + return $out . '">' . $matches[2] . ''; } } diff --git a/phpBB/phpbb/composer/io/io_interface.php b/phpBB/phpbb/composer/io/io_interface.php new file mode 100644 index 00000000000..2b1f0c10071 --- /dev/null +++ b/phpBB/phpbb/composer/io/io_interface.php @@ -0,0 +1,32 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\composer\io; + +use Composer\IO\ConsoleIO; +use Composer\IO\IOInterface; +use Composer\IO\NullIO; +use phpbb\language\language; +use Symfony\Component\Console\Helper\HelperSet; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +interface io_interface extends IOInterface +{ + /** + * Returns the composer errors that occurred since the last tcall of the method. + * + * @return string + */ + public function get_composer_error(); +} diff --git a/phpBB/phpbb/composer/io/null_io.php b/phpBB/phpbb/composer/io/null_io.php new file mode 100644 index 00000000000..d38020d5f25 --- /dev/null +++ b/phpBB/phpbb/composer/io/null_io.php @@ -0,0 +1,32 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\composer\io; + +use Composer\IO\ConsoleIO; +use Composer\IO\NullIO; +use phpbb\language\language; +use Symfony\Component\Console\Helper\HelperSet; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class console_io extends NullIO implements io_interface +{ + /** + * {@inheritdoc} + */ + public function get_composer_error() + { + return ''; + } +} diff --git a/phpBB/phpbb/composer/io/web_io.php b/phpBB/phpbb/composer/io/web_io.php index e7927c72336..4eab3d099ae 100644 --- a/phpBB/phpbb/composer/io/web_io.php +++ b/phpBB/phpbb/composer/io/web_io.php @@ -18,7 +18,7 @@ use Symfony\Component\Console\Formatter\OutputFormatterInterface; use Symfony\Component\Console\Output\StreamOutput; -class web_io extends BufferIO +class web_io extends BufferIO implements io_interface { use translate_composer_trait; From 43038a65de77498d37beae6823ed7187bb5e2f14 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Tue, 15 Dec 2015 19:49:53 +0100 Subject: [PATCH 172/431] [ticket/11150] Update tests PHPBB3-11150 --- .../di/fixtures/config/production/container/environment.yml | 5 +++++ tests/di/fixtures/config/test/container/environment.yml | 5 +++++ .../other_config/production/container/environment.yml | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/tests/di/fixtures/config/production/container/environment.yml b/tests/di/fixtures/config/production/container/environment.yml index 8281d9e941d..ba6b6797955 100644 --- a/tests/di/fixtures/config/production/container/environment.yml +++ b/tests/di/fixtures/config/production/container/environment.yml @@ -19,6 +19,11 @@ services: ext.manager: class: phpbb\extension\manager_mock + config: + class: phpbb\config\config + arguments: + - [] + template.twig.environment: class: Exception arguments: diff --git a/tests/di/fixtures/config/test/container/environment.yml b/tests/di/fixtures/config/test/container/environment.yml index 252117dd327..97ebe4aee1f 100644 --- a/tests/di/fixtures/config/test/container/environment.yml +++ b/tests/di/fixtures/config/test/container/environment.yml @@ -16,6 +16,11 @@ services: dispatcher: class: phpbb\db\driver\container_mock + config: + class: phpbb\config\config + arguments: + - [] + template.twig.environment: class: Exception arguments: diff --git a/tests/di/fixtures/other_config/production/container/environment.yml b/tests/di/fixtures/other_config/production/container/environment.yml index c0d2f87babc..aeb552eeb73 100644 --- a/tests/di/fixtures/other_config/production/container/environment.yml +++ b/tests/di/fixtures/other_config/production/container/environment.yml @@ -19,6 +19,11 @@ services: ext.manager: class: phpbb\extension\manager_mock + config: + class: phpbb\config\config + arguments: + - [] + template.twig.environment: class: Exception arguments: From 1c9ecd084c0ae0399a5e56abcf8e4abc1ca85d1d Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Tue, 15 Dec 2015 22:05:18 +0100 Subject: [PATCH 173/431] [ticket/11150] CS PHPBB3-11150 --- phpBB/phpbb/composer/installer.php | 16 +++++++--------- phpBB/phpbb/composer/io/io_interface.php | 6 ------ phpBB/phpbb/composer/io/null_io.php | 7 +------ .../composer/io/translate_composer_trait.php | 3 +-- 4 files changed, 9 insertions(+), 23 deletions(-) diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 8b4c762c928..3e140e9a5fb 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -20,12 +20,10 @@ use Composer\Json\JsonFile; use Composer\Package\BasePackage; use Composer\Package\CompletePackage; -use Composer\Package\Link; -use Composer\Package\PackageInterface; use Composer\Repository\ComposerRepository; -use Composer\Repository\RepositoryInterface; use Composer\Semver\Constraint\ConstraintInterface; use Composer\Util\RemoteFilesystem; +use phpbb\composer\io\null_io; use phpbb\config\config; use phpbb\exception\runtime_exception; use phpbb\filesystem\filesystem; @@ -147,7 +145,7 @@ protected function do_install(array $packages, $whitelist, IOInterface $io = nul { if (!$io) { - $io = new NullIO(); + $io = new null_io(); } $this->generate_ext_json_file($packages); @@ -241,7 +239,7 @@ protected function do_get_installed_packages($types) $installed = []; - /** @var Link[] $required_links */ + /** @var \Composer\Package\Link[] $required_links */ $required_links = $composer->getPackage()->getRequires(); $installed_packages = $composer->getRepositoryManager()->getLocalRepository()->getCanonicalPackages(); @@ -318,7 +316,7 @@ protected function do_get_available_packages($type) $compatible_packages = []; $repositories = $composer->getRepositoryManager()->getRepositories(); - /** @var RepositoryInterface $repository */ + /** @var \Composer\Repository\RepositoryInterface $repository */ foreach ($repositories as $repository) { try @@ -339,7 +337,7 @@ protected function do_get_available_packages($type) $hostname = parse_url($url, PHP_URL_HOST) ?: $url; $json = $rfs->getContents($hostname, $url, false); - /** @var PackageInterface $package */ + /** @var \Composer\Package\PackageInterface $package */ foreach (JsonFile::parseJson($json, $url)['packageNames'] as $package) { $versions = $repository->findPackages($package); @@ -351,7 +349,7 @@ protected function do_get_available_packages($type) { // Pre-filter repo packages by their type $packages = []; - /** @var PackageInterface $package */ + /** @var \Composer\Package\PackageInterface $package */ foreach ($repository->getPackages() as $package) { if ($package->getType() === $type) @@ -454,7 +452,7 @@ private function get_compatible_versions(array $compatible_packages, ConstraintI { $core_stability_value = BasePackage::$stabilities[$core_stability]; //VersionParser::parseStability($version['version']) - /** @var PackageInterface $version */ + /** @var \Composer\Package\PackageInterface $version */ foreach ($versions as $version) { if (BasePackage::$stabilities[$version->getStability()] > $core_stability_value) diff --git a/phpBB/phpbb/composer/io/io_interface.php b/phpBB/phpbb/composer/io/io_interface.php index 2b1f0c10071..a1d41122cb1 100644 --- a/phpBB/phpbb/composer/io/io_interface.php +++ b/phpBB/phpbb/composer/io/io_interface.php @@ -13,13 +13,7 @@ namespace phpbb\composer\io; -use Composer\IO\ConsoleIO; use Composer\IO\IOInterface; -use Composer\IO\NullIO; -use phpbb\language\language; -use Symfony\Component\Console\Helper\HelperSet; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; interface io_interface extends IOInterface { diff --git a/phpBB/phpbb/composer/io/null_io.php b/phpBB/phpbb/composer/io/null_io.php index d38020d5f25..9a667ca097b 100644 --- a/phpBB/phpbb/composer/io/null_io.php +++ b/phpBB/phpbb/composer/io/null_io.php @@ -13,14 +13,9 @@ namespace phpbb\composer\io; -use Composer\IO\ConsoleIO; use Composer\IO\NullIO; -use phpbb\language\language; -use Symfony\Component\Console\Helper\HelperSet; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; -class console_io extends NullIO implements io_interface +class null_io extends NullIO implements io_interface { /** * {@inheritdoc} diff --git a/phpBB/phpbb/composer/io/translate_composer_trait.php b/phpBB/phpbb/composer/io/translate_composer_trait.php index 9f8653f5702..09cc76fa8e2 100644 --- a/phpBB/phpbb/composer/io/translate_composer_trait.php +++ b/phpBB/phpbb/composer/io/translate_composer_trait.php @@ -13,7 +13,6 @@ namespace phpbb\composer\io; -use phpbb\language\language; use Symfony\Component\Console\Output\OutputInterface; /** @@ -22,7 +21,7 @@ trait translate_composer_trait { /** - * @var language + * @var \phpbb\language\language */ protected $language; From f6eb17048a6c7e7d5955b7c9ecf2cab397c167d8 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sat, 19 Dec 2015 18:38:56 +0100 Subject: [PATCH 174/431] [ticket/11150] Initialize the errors array in the translate trait PHPBB3-11150 --- phpBB/phpbb/composer/io/translate_composer_trait.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/phpbb/composer/io/translate_composer_trait.php b/phpBB/phpbb/composer/io/translate_composer_trait.php index 09cc76fa8e2..56a996d91c7 100644 --- a/phpBB/phpbb/composer/io/translate_composer_trait.php +++ b/phpBB/phpbb/composer/io/translate_composer_trait.php @@ -28,7 +28,7 @@ trait translate_composer_trait /** * @var array */ - protected $composer_error; + protected $composer_error = []; /** * {@inheritdoc} From fad379813f1c44887c59d9bcd90b77b96a37b640 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Tue, 22 Dec 2015 16:45:30 +0100 Subject: [PATCH 175/431] [ticket/11150] Always display an error message PHPBB3-11150 --- phpBB/phpbb/composer/installer.php | 2 +- .../phpbb/composer/io/translate_composer_trait.php | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 3e140e9a5fb..6197b59bd51 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -99,7 +99,7 @@ public function __construct($root_path, filesystem $filesystem, config $config = $this->root_path = $root_path; - putenv('COMPOSER_HOME=' . $filesystem->realpath($root_path) . 'store/composer'); + putenv('COMPOSER_HOME=' . $filesystem->realpath($root_path) . '/store/composer'); } /** diff --git a/phpBB/phpbb/composer/io/translate_composer_trait.php b/phpBB/phpbb/composer/io/translate_composer_trait.php index 56a996d91c7..9a0f63ceb57 100644 --- a/phpBB/phpbb/composer/io/translate_composer_trait.php +++ b/phpBB/phpbb/composer/io/translate_composer_trait.php @@ -121,9 +121,14 @@ public function writeError($messages, $newline = true) $message = trim($this->strip_format($lang_key), "\n\r"); - if ($this->output->getVerbosity() === OutputInterface::VERBOSITY_DEBUG) + if ($message === 'Your requirements could not be resolved to an installable set of packages.') { - // Do nothing + $this->composer_error[] = ['COMPOSER_ERROR_CONFLICT', []]; + + if ($this->output->getVerbosity() < OutputInterface::VERBOSITY_DEBUG) + { + continue; + } } else if (strpos($message, ' Problem ') === 0) { @@ -145,11 +150,6 @@ public function writeError($messages, $newline = true) $lang_key = 'COMPOSER_LOADING_REPOSITORIES'; $level = 1; } - else if ($message === 'Your requirements could not be resolved to an installable set of packages.') - { - $this->composer_error[] = ['COMPOSER_ERROR_CONFLICT', []]; - continue; - } else if (strpos($message, 'could not be fully loaded, package information was loaded from the local cache and may be out of date') !== false) { $end_repo = strpos($message, 'could not be fully loaded, package information was loaded from the local cache and may be out of date'); From ce12b7799f0c1d469a082819cedd67e1f82b7cfa Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Wed, 23 Dec 2015 18:12:21 +0100 Subject: [PATCH 176/431] [ticket/11150] Ignore vendor-ext in the sniffer PHPBB3-11150 --- build/build.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/build/build.xml b/build/build.xml index f93ff0079b3..34e1d5f930a 100644 --- a/build/build.xml +++ b/build/build.xml @@ -95,6 +95,7 @@ --ignore=${project.basedir}/phpBB/install/database_update.php --ignore=${project.basedir}/phpBB/phpbb/* --ignore=${project.basedir}/phpBB/vendor/* + --ignore=${project.basedir}/phpBB/vendor-ext/* phpBB" dir="." returnProperty="retval-php-legacy" passthru="true" /> - {{ lang('EXTENSIONS_COMPOSER_NOT_WRITABLE') }} -
      -{% endif %} -
      {{ lang('BROWSE_EXTENSIONS_DATABASE') }}{{ lang('SETTINGS') }}
      diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index 1bcbe9f4152..6888a00772a 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -169,14 +169,21 @@ public function main_mode($id, $mode) $this->list_disabled_exts(); $this->list_available_exts(); + /** @var \phpbb\composer\manager $composer_manager */ $composer_manager = $phpbb_container->get('ext.composer.manager'); + $managed_packages = []; + if ($composer_manager->check_requirements()) + { + $managed_packages = array_keys($composer_manager->get_managed_packages()); + } + $this->request->enable_super_globals(); $this->template->assign_vars(array( 'U_VERSIONCHECK_FORCE' => $this->u_action . '&action=list&versioncheck_force=1', 'FORCE_UNSTABLE' => $this->config['extension_force_unstable'], 'U_ACTION' => $this->u_action, - 'MANAGED_EXTENSIONS' => array_keys($composer_manager->get_managed_packages()), + 'MANAGED_EXTENSIONS' => $managed_packages, 'U_CATALOG_ACTION' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&mode=catalog"), )); $this->request->disable_super_globals(); @@ -424,6 +431,19 @@ public function catalog_mode($id, $mode) /** @var \phpbb\extension\manager $extensions_manager */ $extensions_manager = $phpbb_container->get('ext.manager'); + if (!$composer_manager->check_requirements()) + { + $this->page_title = 'ACP_EXTENSIONS_CATALOG'; + $this->tpl_name = 'message_body'; + + $this->template->assign_vars([ + 'MESSAGE_TITLE' => $language->lang('EXTENSIONS_CATALOG_NOT_AVAILABLE'), + 'MESSAGE_TEXT' => $language->lang('EXTENSIONS_COMPOSER_NOT_WRITABLE'), + ]); + + return; + } + switch ($action) { case 'install': @@ -659,7 +679,6 @@ public function catalog_mode($id, $mode) $this->tpl_name = 'acp_ext_catalog'; $this->template->assign_vars([ - 'enabled' => $manager->check_requirements(), 'extensions' => $extensions, 'managed_extensions' => array_keys($managed_packages), 'installed_extensions' => array_keys($extensions_manager->all_available()), diff --git a/phpBB/language/en/acp/extensions.php b/phpBB/language/en/acp/extensions.php index 6f6add6a86e..d7c111c3b60 100644 --- a/phpBB/language/en/acp/extensions.php +++ b/phpBB/language/en/acp/extensions.php @@ -164,6 +164,7 @@ 'EXTENSIONS_REMOVED' => 'Extensions successfully removed.', 'EXTENSIONS_UPDATED' => 'Extensions successfully updated.', + 'EXTENSIONS_CATALOG_NOT_AVAILABLE' => 'The extensions catalog is not available', 'EXTENSIONS_COMPOSER_NOT_WRITABLE' => 'In order to use the catalog, the following files and directories must be writable: ext/ vendor-ext/ composer-ext.json and composer-ext.lock', 'STABILITY_STABLE' => 'stable', diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index e684882bfaf..205312f9e3b 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -92,7 +92,7 @@ public function __construct($root_path, filesystem $filesystem, config $config = } $this->packagist = (bool) $config['exts_composer_packagist']; - $this->composer_filenam = $config['exts_composer_json_file']; + $this->composer_filename = $config['exts_composer_json_file']; $this->packages_vendor_dir = $config['exts_composer_vendor_dir']; $this->minimum_stability = $config['exts_composer_minimum_stability']; } @@ -451,7 +451,7 @@ public function check_requirements() private function get_compatible_versions(array $compatible_packages, ConstraintInterface $core_constraint, $core_stability, $package_name, array $versions) { $core_stability_value = BasePackage::$stabilities[$core_stability]; - //VersionParser::parseStability($version['version']) + /** @var \Composer\Package\PackageInterface $version */ foreach ($versions as $version) { diff --git a/phpBB/phpbb/composer/manager.php b/phpBB/phpbb/composer/manager.php index c9d917e5c9c..e040e3e0bea 100644 --- a/phpBB/phpbb/composer/manager.php +++ b/phpBB/phpbb/composer/manager.php @@ -253,6 +253,7 @@ public function get_available_packages() if ($this->available_packages === null) { $this->available_packages = $this->cache->get('_composer_' . $this->package_type . '_available'); + if (!$this->available_packages) { $this->available_packages = $this->installer->get_available_packages($this->package_type); From 60bf9af27ace8d81640bd496dd4714a3dda305b8 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sun, 3 Apr 2016 18:42:41 +0200 Subject: [PATCH 181/431] [ticket/11150] Fix illegal uage if $_SERVER when viewing the catalog PHPBB3-11150 --- phpBB/includes/acp/acp_extensions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index 6888a00772a..b0a18719d1c 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -172,13 +172,13 @@ public function main_mode($id, $mode) /** @var \phpbb\composer\manager $composer_manager */ $composer_manager = $phpbb_container->get('ext.composer.manager'); + $this->request->enable_super_globals(); $managed_packages = []; if ($composer_manager->check_requirements()) { $managed_packages = array_keys($composer_manager->get_managed_packages()); } - $this->request->enable_super_globals(); $this->template->assign_vars(array( 'U_VERSIONCHECK_FORCE' => $this->u_action . '&action=list&versioncheck_force=1', 'FORCE_UNSTABLE' => $this->config['extension_force_unstable'], From ed32ab89ad117c83a0cf6705ff654c32724cad5e Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sun, 3 Apr 2016 18:48:58 +0200 Subject: [PATCH 182/431] [ticket/11150] Removes outdated TODO PHPBB3-11150 --- phpBB/composer-ext.json | 0 phpBB/composer-ext.lock | 0 phpBB/phpbb/composer/manager.php | 1 - 3 files changed, 1 deletion(-) mode change 100755 => 100644 phpBB/composer-ext.json mode change 100755 => 100644 phpBB/composer-ext.lock diff --git a/phpBB/composer-ext.json b/phpBB/composer-ext.json old mode 100755 new mode 100644 diff --git a/phpBB/composer-ext.lock b/phpBB/composer-ext.lock old mode 100755 new mode 100644 diff --git a/phpBB/phpbb/composer/manager.php b/phpBB/phpbb/composer/manager.php index e040e3e0bea..8cc9a6ab8f7 100644 --- a/phpBB/phpbb/composer/manager.php +++ b/phpBB/phpbb/composer/manager.php @@ -170,7 +170,6 @@ public function remove(array $packages, IOInterface $io = null) { $packages = $this->normalize_version($packages); - // TODO: if the extension is already enabled, we should disabled (with an option for purge) $not_managed = array_diff_key($packages, $this->get_managed_packages()); if (count($not_managed) !== 0) { From efe37cd5a84819113a58325d1fee747c95f92b81 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sat, 9 Apr 2016 11:29:35 +0200 Subject: [PATCH 183/431] [ticket/11150] Wording PHPBB3-11150 --- phpBB/adm/style/acp_ext_catalog.html | 6 ++++++ phpBB/language/en/acp/extensions.php | 7 ++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/phpBB/adm/style/acp_ext_catalog.html b/phpBB/adm/style/acp_ext_catalog.html index 482d8a8bdab..a6e9995cbbc 100644 --- a/phpBB/adm/style/acp_ext_catalog.html +++ b/phpBB/adm/style/acp_ext_catalog.html @@ -81,6 +81,11 @@

      {{ lang( 'EXTENSIONS_CATALOG') }}

      +{% if extensions is empty %} + +
      {{ lang('NO_EXTENSION_AVAILABLE') }}
      + +{% else %} @@ -116,6 +121,7 @@

      {{ lang( 'EXTENSIONS_CATALOG') }}

      {% endfor %}
      +{% endif %} {% if pagination is defined %}