diff --git a/.gitignore b/.gitignore index c2fd2085c..e588bf1f7 100644 --- a/.gitignore +++ b/.gitignore @@ -37,7 +37,3 @@ sites/simpletest # Ignore SimpleTest multi-site environment. simpletest - -# Ignore core phpcs.xml and phpunit.xml. -core/phpcs.xml -core/phpunit.xml diff --git a/composer.json b/composer.json index 7a97a4799..b9536cfe3 100644 --- a/composer.json +++ b/composer.json @@ -5,10 +5,10 @@ "license": "GPL-2.0+", "require": { "composer/installers": "^1.0.24", - "wikimedia/composer-merge-plugin": "~1.4" + "wikimedia/composer-merge-plugin": "^1.4" }, "replace": { - "drupal/core": "~8.3" + "drupal/core": "^8.4" }, "minimum-stability": "dev", "prefer-stable": true, diff --git a/composer.lock b/composer.lock index eb564b8e0..21fb0fdca 100644 --- a/composer.lock +++ b/composer.lock @@ -4,31 +4,40 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "38fbd049e065401d0e3a8f7b92465485", + "content-hash": "bec46eaaa9fa07a4cbd8c84302f0d275", "packages": [ { "name": "asm89/stack-cors", - "version": "1.0.0", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/asm89/stack-cors.git", - "reference": "3ae8ef219bb4c9a6caf857421719aa07fa7776cc" + "reference": "65ccbd455370f043c2e3b93482a3813603d68731" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/3ae8ef219bb4c9a6caf857421719aa07fa7776cc", - "reference": "3ae8ef219bb4c9a6caf857421719aa07fa7776cc", + "url": "https://api.github.com/repos/asm89/stack-cors/zipball/65ccbd455370f043c2e3b93482a3813603d68731", + "reference": "65ccbd455370f043c2e3b93482a3813603d68731", "shasum": "" }, "require": { - "php": ">=5.3.2", - "symfony/http-foundation": "~2.1|~3.0", - "symfony/http-kernel": "~2.1|~3.0" + "php": ">=5.5.9", + "symfony/http-foundation": "~2.7|~3.0", + "symfony/http-kernel": "~2.7|~3.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.0 || ^4.8.10", + "squizlabs/php_codesniffer": "^2.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, "autoload": { - "psr-0": { - "Asm89\\Stack": "src/" + "psr-4": { + "Asm89\\Stack\\": "src/Asm89/Stack/" } }, "notification-url": "https://packagist.org/downloads/", @@ -47,20 +56,20 @@ "cors", "stack" ], - "time": "2016-08-01T12:05:04+00:00" + "time": "2017-04-11T20:03:41+00:00" }, { "name": "composer/installers", - "version": "v1.2.0", + "version": "v1.4.0", "source": { "type": "git", "url": "https://github.com/composer/installers.git", - "reference": "d78064c68299743e0161004f2de3a0204e33b804" + "reference": "9ce17fb70e9a38dd8acff0636a29f5cf4d575c1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/installers/zipball/d78064c68299743e0161004f2de3a0204e33b804", - "reference": "d78064c68299743e0161004f2de3a0204e33b804", + "url": "https://api.github.com/repos/composer/installers/zipball/9ce17fb70e9a38dd8acff0636a29f5cf4d575c1b", + "reference": "9ce17fb70e9a38dd8acff0636a29f5cf4d575c1b", "shasum": "" }, "require": { @@ -102,12 +111,17 @@ "keywords": [ "Craft", "Dolibarr", + "Eliasis", "Hurad", "ImageCMS", + "Kanboard", + "Lan Management System", "MODX Evo", "Mautic", + "Maya", "OXID", "Plentymarkets", + "Porto", "RadPHP", "SMF", "Thelia", @@ -125,20 +139,24 @@ "croogo", "dokuwiki", "drupal", + "eZ Platform", "elgg", "expressionengine", "fuelphp", "grav", "installer", + "itop", "joomla", "kohana", "laravel", + "lavalite", "lithium", "magento", "mako", "mediawiki", "modulework", "moodle", + "osclass", "phpbb", "piwik", "ppi", @@ -147,6 +165,7 @@ "roundcube", "shopware", "silverstripe", + "sydes", "symfony", "typo3", "wordpress", @@ -154,7 +173,7 @@ "zend", "zikula" ], - "time": "2016-08-13T20:53:52+00:00" + "time": "2017-08-09T07:53:48+00:00" }, { "name": "composer/semver", @@ -732,16 +751,16 @@ }, { "name": "guzzlehttp/guzzle", - "version": "6.2.3", + "version": "6.3.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "8d6c6cc55186db87b7dc5009827429ba4e9dc006" + "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/8d6c6cc55186db87b7dc5009827429ba4e9dc006", - "reference": "8d6c6cc55186db87b7dc5009827429ba4e9dc006", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4db5a78a5ea468d4831de7f0bf9d9415e348699", + "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699", "shasum": "" }, "require": { @@ -751,9 +770,12 @@ }, "require-dev": { "ext-curl": "*", - "phpunit/phpunit": "^4.0", + "phpunit/phpunit": "^4.0 || ^5.0", "psr/log": "^1.0" }, + "suggest": { + "psr/log": "Required for using the Log middleware" + }, "type": "library", "extra": { "branch-alias": { @@ -790,7 +812,7 @@ "rest", "web service" ], - "time": "2017-02-28T22:50:30+00:00" + "time": "2017-06-22T18:50:49+00:00" }, { "name": "guzzlehttp/promises", @@ -908,60 +930,18 @@ ], "time": "2017-03-20T17:10:46+00:00" }, - { - "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", - "keywords": [ - "hashing", - "password" - ], - "time": "2014-11-20T16:49:30+00:00" - }, { "name": "masterminds/html5", - "version": "2.2.2", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/Masterminds/html5-php.git", - "reference": "7866e93dcf0245de22378414e0c2c7350abc45af" + "reference": "2c37c6c520b995b761674de3be8455a381679067" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/7866e93dcf0245de22378414e0c2c7350abc45af", - "reference": "7866e93dcf0245de22378414e0c2c7350abc45af", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/2c37c6c520b995b761674de3be8455a381679067", + "reference": "2c37c6c520b995b761674de3be8455a381679067", "shasum": "" }, "require": { @@ -1013,7 +993,7 @@ "serializer", "xml" ], - "time": "2016-09-22T11:01:11+00:00" + "time": "2017-09-04T12:26:28+00:00" }, { "name": "paragonie/random_compat", @@ -1211,16 +1191,16 @@ }, { "name": "symfony-cmf/routing", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", - "url": "https://github.com/symfony-cmf/Routing.git", - "reference": "b93704ca098334f56e9b317932f21a4362e620db" + "url": "https://github.com/symfony-cmf/routing.git", + "reference": "fb1e7f85ff8c6866238b7e73a490a0a0243ae8ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony-cmf/Routing/zipball/b93704ca098334f56e9b317932f21a4362e620db", - "reference": "b93704ca098334f56e9b317932f21a4362e620db", + "url": "https://api.github.com/repos/symfony-cmf/routing/zipball/fb1e7f85ff8c6866238b7e73a490a0a0243ae8ac", + "reference": "fb1e7f85ff8c6866238b7e73a490a0a0243ae8ac", "shasum": "" }, "require": { @@ -1266,33 +1246,36 @@ "database", "routing" ], - "time": "2016-03-31T09:11:39+00:00" + "time": "2017-05-09T08:10:41+00:00" }, { "name": "symfony/class-loader", - "version": "v2.8.18", + "version": "v3.2.8", "source": { "type": "git", "url": "https://github.com/symfony/class-loader.git", - "reference": "2c8de07a8a4cc4da9c018ab7a81888b80e762f93" + "reference": "fc4c04bfd17130a9dccfded9578353f311967da7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/class-loader/zipball/2c8de07a8a4cc4da9c018ab7a81888b80e762f93", - "reference": "2c8de07a8a4cc4da9c018ab7a81888b80e762f93", + "url": "https://api.github.com/repos/symfony/class-loader/zipball/fc4c04bfd17130a9dccfded9578353f311967da7", + "reference": "fc4c04bfd17130a9dccfded9578353f311967da7", "shasum": "" }, "require": { - "php": ">=5.3.9", - "symfony/polyfill-apcu": "~1.1" + "php": ">=5.5.9" }, "require-dev": { - "symfony/finder": "^2.0.5|~3.0.0" + "symfony/finder": "~2.8|~3.0", + "symfony/polyfill-apcu": "~1.1" + }, + "suggest": { + "symfony/polyfill-apcu": "For using ApcClassLoader on HHVM" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -1319,41 +1302,43 @@ ], "description": "Symfony ClassLoader Component", "homepage": "https://symfony.com", - "time": "2017-02-18T19:13:35+00:00" + "time": "2017-04-12T14:13:17+00:00" }, { "name": "symfony/console", - "version": "v2.8.18", + "version": "v3.2.8", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "81508e6fac4476771275a3f4f53c3fee9b956bfa" + "reference": "a7a17e0c6c3c4d70a211f80782e4b90ddadeaa38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/81508e6fac4476771275a3f4f53c3fee9b956bfa", - "reference": "81508e6fac4476771275a3f4f53c3fee9b956bfa", + "url": "https://api.github.com/repos/symfony/console/zipball/a7a17e0c6c3c4d70a211f80782e4b90ddadeaa38", + "reference": "a7a17e0c6c3c4d70a211f80782e4b90ddadeaa38", "shasum": "" }, "require": { - "php": ">=5.3.9", - "symfony/debug": "^2.7.2|~3.0.0", + "php": ">=5.5.9", + "symfony/debug": "~2.8|~3.0", "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/filesystem": "~2.8|~3.0", + "symfony/process": "~2.8|~3.0" }, "suggest": { "psr/log": "For using the console logger", "symfony/event-dispatcher": "", + "symfony/filesystem": "", "symfony/process": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -1380,37 +1365,37 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2017-03-04T11:00:12+00:00" + "time": "2017-04-26T01:39:17+00:00" }, { "name": "symfony/debug", - "version": "v2.8.18", + "version": "v3.2.8", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "e90099a2958d4833a02d05b504cc06e1c234abcc" + "reference": "fd6eeee656a5a7b384d56f1072243fe1c0e81686" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/e90099a2958d4833a02d05b504cc06e1c234abcc", - "reference": "e90099a2958d4833a02d05b504cc06e1c234abcc", + "url": "https://api.github.com/repos/symfony/debug/zipball/fd6eeee656a5a7b384d56f1072243fe1c0e81686", + "reference": "fd6eeee656a5a7b384d56f1072243fe1c0e81686", "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|~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.2-dev" } }, "autoload": { @@ -1437,32 +1422,32 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2017-02-18T19:13:35+00:00" + "time": "2017-04-19T20:17:50+00:00" }, { "name": "symfony/dependency-injection", - "version": "v2.8.18", + "version": "v3.2.8", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "efdbeefa454a41154fd99a6f0489f0e9cb46c497" + "reference": "5e00857475b6d1fa31ff4c76f1fddf1cfa9e8d59" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/efdbeefa454a41154fd99a6f0489f0e9cb46c497", - "reference": "efdbeefa454a41154fd99a6f0489f0e9cb46c497", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/5e00857475b6d1fa31ff4c76f1fddf1cfa9e8d59", + "reference": "5e00857475b6d1fa31ff4c76f1fddf1cfa9e8d59", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.5.9" }, "conflict": { - "symfony/expression-language": "<2.6" + "symfony/yaml": "<3.2" }, "require-dev": { - "symfony/config": "~2.2|~3.0.0", - "symfony/expression-language": "~2.6|~3.0.0", - "symfony/yaml": "~2.3.42|~2.7.14|~2.8.7|~3.0.7" + "symfony/config": "~2.8|~3.0", + "symfony/expression-language": "~2.8|~3.0", + "symfony/yaml": "~3.2" }, "suggest": { "symfony/config": "", @@ -1473,7 +1458,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -1500,31 +1485,31 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2017-02-28T12:31:05+00:00" + "time": "2017-04-26T01:39:17+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v2.8.18", + "version": "v3.2.8", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "bb4ec47e8e109c1c1172145732d0aa468d967cd0" + "reference": "b8a401f733b43251e1d088c589368b2a94155e40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/bb4ec47e8e109c1c1172145732d0aa468d967cd0", - "reference": "bb4ec47e8e109c1c1172145732d0aa468d967cd0", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b8a401f733b43251e1d088c589368b2a94155e40", + "reference": "b8a401f733b43251e1d088c589368b2a94155e40", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.5.9" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "^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": "", @@ -1533,7 +1518,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -1560,35 +1545,33 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2017-02-21T08:33:48+00:00" + "time": "2017-05-01T14:58:48+00:00" }, { "name": "symfony/http-foundation", - "version": "v2.8.18", + "version": "v3.2.8", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "88af747e7af17d8d7d439ad4639dc3e23ddd3edd" + "reference": "9de6add7f731e5af7f5b2e9c0da365e43383ebef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/88af747e7af17d8d7d439ad4639dc3e23ddd3edd", - "reference": "88af747e7af17d8d7d439ad4639dc3e23ddd3edd", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/9de6add7f731e5af7f5b2e9c0da365e43383ebef", + "reference": "9de6add7f731e5af7f5b2e9c0da365e43383ebef", "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.2-dev" } }, "autoload": { @@ -1615,48 +1598,48 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2017-03-04T12:20:59+00:00" + "time": "2017-05-01T14:55:58+00:00" }, { "name": "symfony/http-kernel", - "version": "v2.8.18", + "version": "v3.2.8", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "18d7a01ac14ffa5a652a635c402b9777f858fc1a" + "reference": "46e8b209abab55c072c47d72d5cd1d62c0585e05" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/18d7a01ac14ffa5a652a635c402b9777f858fc1a", - "reference": "18d7a01ac14ffa5a652a635c402b9777f858fc1a", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/46e8b209abab55c072c47d72d5cd1d62c0585e05", + "reference": "46e8b209abab55c072c47d72d5cd1d62c0585e05", "shasum": "" }, "require": { - "php": ">=5.3.9", + "php": ">=5.5.9", "psr/log": "~1.0", - "symfony/debug": "^2.6.2", - "symfony/event-dispatcher": "^2.6.7|~3.0.0", - "symfony/http-foundation": "~2.7.20|~2.8.13|~3.1.6" + "symfony/debug": "~2.8|~3.0", + "symfony/event-dispatcher": "~2.8|~3.0", + "symfony/http-foundation": "~2.8.13|~3.1.6|~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.5|~3.0.0", - "symfony/dependency-injection": "~2.8|~3.0.0", - "symfony/dom-crawler": "^2.0.5|~3.0.0", - "symfony/expression-language": "~2.4|~3.0.0", - "symfony/finder": "^2.0.5|~3.0.0", - "symfony/process": "^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.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": "~3.2" }, "suggest": { "symfony/browser-kit": "", @@ -1670,7 +1653,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -1697,60 +1680,7 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2017-03-06T03:54:35+00:00" - }, - { - "name": "symfony/polyfill-apcu", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-apcu.git", - "reference": "5d4474f447403c3348e37b70acc2b95475b7befa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/5d4474f447403c3348e37b70acc2b95475b7befa", - "reference": "5d4474f447403c3348e37b70acc2b95475b7befa", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "autoload": { - "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 apcu_* functions to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "apcu", - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2016-11-14T01:06:16+00:00" + "time": "2017-05-01T17:46:48+00:00" }, { "name": "symfony/polyfill-iconv", @@ -1870,141 +1800,27 @@ ], "time": "2016-11-14T01:06:16+00:00" }, - { - "name": "symfony/polyfill-php54", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php54.git", - "reference": "90e085822963fdcc9d1c5b73deb3d2e5783b16a0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/90e085822963fdcc9d1c5b73deb3d2e5783b16a0", - "reference": "90e085822963fdcc9d1c5b73deb3d2e5783b16a0", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-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-11-14T01:06:16+00:00" - }, - { - "name": "symfony/polyfill-php55", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php55.git", - "reference": "03e3f0350bca2220e3623a0e340eef194405fc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php55/zipball/03e3f0350bca2220e3623a0e340eef194405fc67", - "reference": "03e3f0350bca2220e3623a0e340eef194405fc67", - "shasum": "" - }, - "require": { - "ircmaxell/password-compat": "~1.0", - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-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-11-14T01:06:16+00:00" - }, { "name": "symfony/process", - "version": "v2.8.18", + "version": "v3.2.8", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "41336b20b52f5fd5b42a227e394e673c8071118f" + "reference": "999c2cf5061e627e6cd551dc9ebf90dd1d11d9f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/41336b20b52f5fd5b42a227e394e673c8071118f", - "reference": "41336b20b52f5fd5b42a227e394e673c8071118f", + "url": "https://api.github.com/repos/symfony/process/zipball/999c2cf5061e627e6cd551dc9ebf90dd1d11d9f0", + "reference": "999c2cf5061e627e6cd551dc9ebf90dd1d11d9f0", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.5.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -2031,7 +1847,7 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2017-03-04T12:20:59+00:00" + "time": "2017-04-12T14:13:17+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -2095,32 +1911,32 @@ }, { "name": "symfony/routing", - "version": "v2.8.18", + "version": "v3.2.8", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "d145cd396f702c497cb24b21785ddac90a23fe71" + "reference": "5029745d6d463585e8b487dbc83d6333f408853a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/d145cd396f702c497cb24b21785ddac90a23fe71", - "reference": "d145cd396f702c497cb24b21785ddac90a23fe71", + "url": "https://api.github.com/repos/symfony/routing/zipball/5029745d6d463585e8b487dbc83d6333f408853a", + "reference": "5029745d6d463585e8b487dbc83d6333f408853a", "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.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", @@ -2133,7 +1949,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -2166,44 +1982,55 @@ "uri", "url" ], - "time": "2017-03-02T15:56:34+00:00" + "time": "2017-04-12T14:13:17+00:00" }, { "name": "symfony/serializer", - "version": "v2.8.18", + "version": "v3.2.8", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "df3d919f00177f599c8970e86112c7582b08a582" + "reference": "6eeae1ba82005b761a53b7b8cf960bbf40c95986" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/df3d919f00177f599c8970e86112c7582b08a582", - "reference": "df3d919f00177f599c8970e86112c7582b08a582", + "url": "https://api.github.com/repos/symfony/serializer/zipball/6eeae1ba82005b761a53b7b8cf960bbf40c95986", + "reference": "6eeae1ba82005b761a53b7b8cf960bbf40c95986", "shasum": "" }, "require": { - "php": ">=5.3.9", - "symfony/polyfill-php55": "~1.0" + "php": ">=5.5.9" + }, + "conflict": { + "symfony/property-access": ">=3.0,<3.0.4|>=2.8,<2.8.4", + "symfony/property-info": "<3.1", + "symfony/yaml": "<3.1" }, "require-dev": { "doctrine/annotations": "~1.0", "doctrine/cache": "~1.0", - "symfony/config": "~2.2|~3.0.0", - "symfony/property-access": "~2.3|~3.0.0", - "symfony/yaml": "^2.0.5|~3.0.0" + "phpdocumentor/reflection-docblock": "~3.0", + "symfony/cache": "~3.1", + "symfony/config": "~2.8|~3.0", + "symfony/http-foundation": "~2.8|~3.0", + "symfony/property-access": "~2.8|~3.0", + "symfony/property-info": "~3.1", + "symfony/yaml": "~3.1" }, "suggest": { "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", "doctrine/cache": "For using the default cached annotation reader and metadata cache.", + "psr/cache-implementation": "For using the metadata cache.", "symfony/config": "For using the XML mapping loader.", + "symfony/http-foundation": "To use the DataUriNormalizer.", "symfony/property-access": "For using the ObjectNormalizer.", + "symfony/property-info": "To deserialize relations.", "symfony/yaml": "For using the default YAML mapping loader." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -2230,34 +2057,34 @@ ], "description": "Symfony Serializer Component", "homepage": "https://symfony.com", - "time": "2017-03-05T17:40:13+00:00" + "time": "2017-05-01T14:55:58+00:00" }, { "name": "symfony/translation", - "version": "v2.8.18", + "version": "v3.2.8", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "b538355bc99db2ec7cc35284ec76d92ae7d1d256" + "reference": "f4a04d2df710f81515df576b2de06bdeee518b83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/b538355bc99db2ec7cc35284ec76d92ae7d1d256", - "reference": "b538355bc99db2ec7cc35284ec76d92ae7d1d256", + "url": "https://api.github.com/repos/symfony/translation/zipball/f4a04d2df710f81515df576b2de06bdeee518b83", + "reference": "f4a04d2df710f81515df576b2de06bdeee518b83", "shasum": "" }, "require": { - "php": ">=5.3.9", + "php": ">=5.5.9", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/config": "<2.7" + "symfony/config": "<2.8" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~2.8", - "symfony/intl": "~2.7.25|^2.8.18|~3.2.5", - "symfony/yaml": "~2.2|~3.0.0" + "symfony/config": "~2.8|~3.0", + "symfony/intl": "^2.8.18|^3.2.5", + "symfony/yaml": "~2.8|~3.0" }, "suggest": { "psr/log": "To use logging capability in translator", @@ -2267,7 +2094,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -2294,53 +2121,57 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2017-03-04T12:20:59+00:00" + "time": "2017-04-12T14:13:17+00:00" }, { "name": "symfony/validator", - "version": "v2.8.18", + "version": "v3.2.8", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "8d4bfa7ec24e70ebc28d0cea5f2702d3f1257a63" + "reference": "98bf011bf1f3b69bece3b79e19633e9c51545b2b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/8d4bfa7ec24e70ebc28d0cea5f2702d3f1257a63", - "reference": "8d4bfa7ec24e70ebc28d0cea5f2702d3f1257a63", + "url": "https://api.github.com/repos/symfony/validator/zipball/98bf011bf1f3b69bece3b79e19633e9c51545b2b", + "reference": "98bf011bf1f3b69bece3b79e19633e9c51545b2b", "shasum": "" }, "require": { - "php": ">=5.3.9", + "php": ">=5.5.9", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation": "~2.4|~3.0.0" + "symfony/translation": "~2.8|~3.0" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" }, "require-dev": { "doctrine/annotations": "~1.0", "doctrine/cache": "~1.0", - "egulias/email-validator": "^1.2.1", - "symfony/config": "~2.2|~3.0.0", - "symfony/expression-language": "~2.4|~3.0.0", - "symfony/http-foundation": "~2.3|~3.0.0", - "symfony/intl": "~2.7.25|^2.8.18|~3.2.5", - "symfony/property-access": "~2.3|~3.0.0", - "symfony/yaml": "^2.0.5|~3.0.0" + "egulias/email-validator": "^1.2.8|~2.0", + "symfony/cache": "~3.1", + "symfony/config": "~2.8|~3.0", + "symfony/expression-language": "~2.8|~3.0", + "symfony/http-foundation": "~2.8|~3.0", + "symfony/intl": "^2.8.18|^3.2.5", + "symfony/yaml": "~2.8|~3.0" }, "suggest": { "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", "doctrine/cache": "For using the default cached annotation reader and metadata cache.", "egulias/email-validator": "Strict (RFC compliant) email validation", + "psr/cache-implementation": "For using the metadata cache.", "symfony/config": "", - "symfony/expression-language": "For using the 2.4 Expression validator", + "symfony/expression-language": "For using the Expression validator", "symfony/http-foundation": "", "symfony/intl": "", - "symfony/property-access": "For using the 2.4 Validator API", + "symfony/property-access": "For using the Expression validator", "symfony/yaml": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -2367,29 +2198,35 @@ ], "description": "Symfony Validator Component", "homepage": "https://symfony.com", - "time": "2017-02-28T02:24:56+00:00" + "time": "2017-04-12T14:13:17+00:00" }, { "name": "symfony/yaml", - "version": "v2.8.18", + "version": "v3.2.8", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "2a7bab3c16f6f452c47818fdd08f3b1e49ffcf7d" + "reference": "acec26fcf7f3031e094e910b94b002fa53d4e4d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/2a7bab3c16f6f452c47818fdd08f3b1e49ffcf7d", - "reference": "2a7bab3c16f6f452c47818fdd08f3b1e49ffcf7d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/acec26fcf7f3031e094e910b94b002fa53d4e4d6", + "reference": "acec26fcf7f3031e094e910b94b002fa53d4e4d6", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.5.9" + }, + "require-dev": { + "symfony/console": "~2.8|~3.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -2416,33 +2253,34 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2017-03-01T18:13:50+00:00" + "time": "2017-05-01T14:55:58+00:00" }, { "name": "twig/twig", - "version": "v1.25.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "f16a634ab08d87e520da5671ec52153d627f10f6" + "reference": "9935b662e24d6e634da88901ab534cc12e8c728f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/f16a634ab08d87e520da5671ec52153d627f10f6", - "reference": "f16a634ab08d87e520da5671ec52153d627f10f6", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/9935b662e24d6e634da88901ab534cc12e8c728f", + "reference": "9935b662e24d6e634da88901ab534cc12e8c728f", "shasum": "" }, "require": { "php": ">=5.2.7" }, "require-dev": { + "psr/container": "^1.0", "symfony/debug": "~2.7", - "symfony/phpunit-bridge": "~2.7" + "symfony/phpunit-bridge": "~3.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.25-dev" + "dev-master": "1.32-dev" } }, "autoload": { @@ -2477,20 +2315,20 @@ "keywords": [ "templating" ], - "time": "2016-09-21T23:05:12+00:00" + "time": "2017-02-27T00:07:03+00:00" }, { "name": "wikimedia/composer-merge-plugin", - "version": "v1.4.0", + "version": "v1.4.1", "source": { "type": "git", "url": "https://github.com/wikimedia/composer-merge-plugin.git", - "reference": "ca453f9f13d8b05f86f20ea10be992a782e6f78c" + "reference": "81c6ac72a24a67383419c7eb9aa2b3437f2ab100" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wikimedia/composer-merge-plugin/zipball/ca453f9f13d8b05f86f20ea10be992a782e6f78c", - "reference": "ca453f9f13d8b05f86f20ea10be992a782e6f78c", + "url": "https://api.github.com/repos/wikimedia/composer-merge-plugin/zipball/81c6ac72a24a67383419c7eb9aa2b3437f2ab100", + "reference": "81c6ac72a24a67383419c7eb9aa2b3437f2ab100", "shasum": "" }, "require": { @@ -2526,20 +2364,20 @@ } ], "description": "Composer plugin to merge multiple composer.json files", - "time": "2017-03-13T16:52:55+00:00" + "time": "2017-04-25T02:31:25+00:00" }, { "name": "zendframework/zend-diactoros", - "version": "1.3.10", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/zendframework/zend-diactoros.git", - "reference": "83e8d98b9915de76c659ce27d683c02a0f99fa90" + "reference": "424a840dc3bedcdeea510b42e056c77c2d6c4bef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/83e8d98b9915de76c659ce27d683c02a0f99fa90", - "reference": "83e8d98b9915de76c659ce27d683c02a0f99fa90", + "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/424a840dc3bedcdeea510b42e056c77c2d6c4bef", + "reference": "424a840dc3bedcdeea510b42e056c77c2d6c4bef", "shasum": "" }, "require": { @@ -2547,17 +2385,19 @@ "psr/http-message": "~1.0" }, "provide": { - "psr/http-message-implementation": "~1.0.0" + "psr/http-message-implementation": "1.0" }, "require-dev": { + "ext-dom": "*", + "ext-libxml": "*", "phpunit/phpunit": "^4.6 || ^5.5", "zendframework/zend-coding-standard": "~1.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev", - "dev-develop": "1.4-dev" + "dev-master": "1.4-dev", + "dev-develop": "1.5-dev" } }, "autoload": { @@ -2576,7 +2416,7 @@ "psr", "psr-7" ], - "time": "2017-01-23T04:53:24+00:00" + "time": "2017-08-17T21:21:00+00:00" }, { "name": "zendframework/zend-escaper", @@ -3039,6 +2879,48 @@ ], "time": "2017-01-03T13:21:43+00:00" }, + { + "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", + "keywords": [ + "hashing", + "password" + ], + "time": "2014-11-20T16:49:30+00:00" + }, { "name": "jcalderonzumba/gastonjs", "version": "v1.0.2", @@ -3159,16 +3041,16 @@ }, { "name": "mikey179/vfsStream", - "version": "v1.6.4", + "version": "v1.6.5", "source": { "type": "git", "url": "https://github.com/mikey179/vfsStream.git", - "reference": "0247f57b2245e8ad2e689d7cee754b45fbabd592" + "reference": "d5fec95f541d4d71c4823bb5e30cf9b9e5b96145" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mikey179/vfsStream/zipball/0247f57b2245e8ad2e689d7cee754b45fbabd592", - "reference": "0247f57b2245e8ad2e689d7cee754b45fbabd592", + "url": "https://api.github.com/repos/mikey179/vfsStream/zipball/d5fec95f541d4d71c4823bb5e30cf9b9e5b96145", + "reference": "d5fec95f541d4d71c4823bb5e30cf9b9e5b96145", "shasum": "" }, "require": { @@ -3201,7 +3083,7 @@ ], "description": "Virtual file system to mock the real file system in unit tests.", "homepage": "http://vfs.bovigo.org/", - "time": "2016-07-18T14:02:57+00:00" + "time": "2017-08-01T08:02:14+00:00" }, { "name": "phpdocumentor/reflection-docblock", @@ -3565,16 +3447,16 @@ }, { "name": "phpunit/phpunit", - "version": "4.8.35", + "version": "4.8.36", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "791b1a67c25af50e230f841ee7a9c6eba507dc87" + "reference": "46023de9a91eec7dfb06cc56cb4e260017298517" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/791b1a67c25af50e230f841ee7a9c6eba507dc87", - "reference": "791b1a67c25af50e230f841ee7a9c6eba507dc87", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517", + "reference": "46023de9a91eec7dfb06cc56cb4e260017298517", "shasum": "" }, "require": { @@ -3633,7 +3515,7 @@ "testing", "xunit" ], - "time": "2017-02-06T05:18:07+00:00" + "time": "2017-06-21T08:07:12+00:00" }, { "name": "phpunit/phpunit-mock-objects", @@ -4143,25 +4025,25 @@ }, { "name": "symfony/browser-kit", - "version": "v2.8.18", + "version": "v3.2.8", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "8827db04bcd8d9b9bf3114ea41081d8036ab209c" + "reference": "9fab1ab6f77b77f3df5fc5250fc6956811699b57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/8827db04bcd8d9b9bf3114ea41081d8036ab209c", - "reference": "8827db04bcd8d9b9bf3114ea41081d8036ab209c", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/9fab1ab6f77b77f3df5fc5250fc6956811699b57", + "reference": "9fab1ab6f77b77f3df5fc5250fc6956811699b57", "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.5|~3.0.0", - "symfony/process": "~2.3.34|^2.7.6|~3.0.0" + "symfony/css-selector": "~2.8|~3.0", + "symfony/process": "~2.8|~3.0" }, "suggest": { "symfony/process": "" @@ -4169,7 +4051,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -4196,29 +4078,29 @@ ], "description": "Symfony BrowserKit Component", "homepage": "https://symfony.com", - "time": "2017-02-21T08:33:48+00:00" + "time": "2017-04-12T14:13:17+00:00" }, { "name": "symfony/css-selector", - "version": "v2.8.18", + "version": "v3.2.8", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "742bd688bd778dde8991ba696cb372570610afcd" + "reference": "02983c144038e697c959e6b06ef6666de759ccbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/742bd688bd778dde8991ba696cb372570610afcd", - "reference": "742bd688bd778dde8991ba696cb372570610afcd", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/02983c144038e697c959e6b06ef6666de759ccbc", + "reference": "02983c144038e697c959e6b06ef6666de759ccbc", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.5.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -4249,28 +4131,28 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2017-02-21T08:33:48+00:00" + "time": "2017-05-01T14:55:58+00:00" }, { "name": "symfony/dom-crawler", - "version": "v2.8.18", + "version": "v3.2.8", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "24b1a3ffa5b64e4f8b1c5f2cdffd16368640704a" + "reference": "f1ad34e8af09ed17570e027cf0c58a12eddec286" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/24b1a3ffa5b64e4f8b1c5f2cdffd16368640704a", - "reference": "24b1a3ffa5b64e4f8b1c5f2cdffd16368640704a", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/f1ad34e8af09ed17570e027cf0c58a12eddec286", + "reference": "f1ad34e8af09ed17570e027cf0c58a12eddec286", "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": "" @@ -4278,7 +4160,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -4305,7 +4187,69 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2017-02-21T08:33:48+00:00" + "time": "2017-04-12T14:13:17+00:00" + }, + { + "name": "symfony/phpunit-bridge", + "version": "v3.2.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/phpunit-bridge.git", + "reference": "00916603c524b8048906de460b7ea0dfa1651281" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/00916603c524b8048906de460b7ea0dfa1651281", + "reference": "00916603c524b8048906de460b7ea0dfa1651281", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "conflict": { + "phpunit/phpunit": ">=6.0" + }, + "suggest": { + "ext-zip": "Zip support is required when using bin/simple-phpunit", + "symfony/debug": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" + }, + "bin": [ + "bin/simple-phpunit" + ], + "type": "symfony-bridge", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Bridge\\PhpUnit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "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 PHPUnit Bridge", + "homepage": "https://symfony.com", + "time": "2017-04-12T14:13:17+00:00" } ], "aliases": [], diff --git a/core/.eslintignore b/core/.eslintignore index a15282a9a..fae394892 100644 --- a/core/.eslintignore +++ b/core/.eslintignore @@ -1,4 +1,6 @@ assets/vendor/**/* -modules/locale/tests/locale_test.js node_modules/**/* **/js_test_files/**/* +*.js +!*.es6.js +modules/locale/tests/locale_test.es6.js diff --git a/core/.eslintrc.json b/core/.eslintrc.json index 218d84f93..369539d27 100644 --- a/core/.eslintrc.json +++ b/core/.eslintrc.json @@ -1,5 +1,6 @@ { - "extends": "eslint:recommended", + "extends": "eslint-config-airbnb", + "root": true, "env": { "browser": true, "es6": true, @@ -18,80 +19,23 @@ "CKEDITOR": true }, "rules": { - // Errors. - "array-bracket-spacing": [2, "never"], - "block-scoped-var": 2, - "brace-style": [2, "stroustrup", {"allowSingleLine": true}], - "comma-dangle": [2, "never"], - "comma-spacing": 2, - "comma-style": [2, "last"], - "computed-property-spacing": [2, "never"], - "curly": [2, "all"], - "eol-last": 2, - "eqeqeq": [2, "smart"], - "guard-for-in": 2, - "indent": [2, 2, {"SwitchCase": 1}], - "key-spacing": [2, {"beforeColon": false, "afterColon": true}], - "keyword-spacing": [2, {"before": true, "after": true}], - "linebreak-style": [2, "unix"], - "lines-around-comment": [2, {"beforeBlockComment": true, "afterBlockComment": false}], - "new-parens": 2, - "no-array-constructor": 2, - "no-caller": 2, - "no-catch-shadow": 2, - "no-eval": 2, - "no-extend-native": 2, - "no-extra-bind": 2, - "no-extra-parens": [2, "functions"], - "no-implied-eval": 2, - "no-iterator": 2, - "no-label-var": 2, - "no-labels": 2, - "no-lone-blocks": 2, - "no-loop-func": 2, - "no-multi-spaces": 2, - "no-multi-str": 2, - "no-native-reassign": 2, - "no-nested-ternary": 2, - "no-new-func": 2, - "no-new-object": 2, - "no-new-wrappers": 2, - "no-octal-escape": 2, - "no-process-exit": 2, - "no-proto": 2, - "no-return-assign": 2, - "no-script-url": 2, - "no-sequences": 2, - "no-shadow-restricted-names": 2, - "no-spaced-func": 2, - "no-trailing-spaces": 2, - "no-undef-init": 2, - "no-undefined": 2, - "no-unused-expressions": 2, - "no-unused-vars": [2, {"vars": "all", "args": "none"}], - "no-with": 2, - "object-curly-spacing": [2, "never"], - "one-var": [2, "never"], - "quote-props": [2, "consistent-as-needed"], - "quotes": [2, "single", "avoid-escape"], - "semi": [2, "always"], - "semi-spacing": [2, {"before": false, "after": true}], - "space-before-blocks": [2, "always"], - "space-before-function-paren": [2, {"anonymous": "always", "named": "never"}], - "space-in-parens": [2, "never"], - "space-infix-ops": 2, - "space-unary-ops": [2, { "words": true, "nonwords": false }], - "spaced-comment": [2, "always"], - "strict": [2, "function"], - "yoda": [2, "never"], - // Warnings. + "consistent-return": [0], + "no-underscore-dangle": [0], "max-nested-callbacks": [1, 3], + "no-mutable-exports": [1], + "no-plusplus": [1, { + "allowForLoopAfterthoughts": true + }], + "no-param-reassign": [0], + "no-prototype-builtins": [0], "valid-jsdoc": [1, { "prefer": { "returns": "return", "property": "prop" }, "requireReturn": false - }] + }], + "brace-style": ["error", "stroustrup"], + "no-unused-vars": [1] } } diff --git a/core/.eslintrc.legacy.json b/core/.eslintrc.legacy.json new file mode 100644 index 000000000..9051bbfa5 --- /dev/null +++ b/core/.eslintrc.legacy.json @@ -0,0 +1,94 @@ +{ + "extends": "eslint:recommended", + "root": true, + "env": { + "browser": true + }, + "globals": { + "Drupal": true, + "drupalSettings": true, + "drupalTranslations": true, + "domready": true, + "jQuery": true, + "_": true, + "matchMedia": true, + "Backbone": true, + "Modernizr": true, + "CKEDITOR": true + }, + "rules": { + "array-bracket-spacing": [2, "never"], + "block-scoped-var": 2, + "brace-style": [2, "stroustrup", {"allowSingleLine": true}], + "comma-dangle": [2, "never"], + "comma-spacing": 2, + "comma-style": [2, "last"], + "computed-property-spacing": [2, "never"], + "curly": [2, "all"], + "eol-last": 2, + "eqeqeq": [2, "smart"], + "guard-for-in": 2, + "indent": [2, 2, {"SwitchCase": 1}], + "key-spacing": [2, {"beforeColon": false, "afterColon": true}], + "keyword-spacing": [2, {"before": true, "after": true}], + "linebreak-style": [2, "unix"], + "lines-around-comment": [2, {"beforeBlockComment": true, "afterBlockComment": false}], + "new-parens": 2, + "no-array-constructor": 2, + "no-caller": 2, + "no-catch-shadow": 2, + "no-eval": 2, + "no-extend-native": 2, + "no-extra-bind": 2, + "no-extra-parens": [2, "functions"], + "no-implied-eval": 2, + "no-iterator": 2, + "no-label-var": 2, + "no-labels": 2, + "no-lone-blocks": 2, + "no-loop-func": 2, + "no-multi-spaces": 2, + "no-multi-str": 2, + "no-native-reassign": 2, + "no-nested-ternary": 2, + "no-new-func": 2, + "no-new-object": 2, + "no-new-wrappers": 2, + "no-octal-escape": 2, + "no-process-exit": 2, + "no-proto": 2, + "no-return-assign": 2, + "no-script-url": 2, + "no-sequences": 2, + "no-shadow-restricted-names": 2, + "no-spaced-func": 2, + "no-trailing-spaces": 2, + "no-undef-init": 2, + "no-undefined": 2, + "no-unused-expressions": 2, + "no-unused-vars": [2, {"vars": "all", "args": "none"}], + "no-with": 2, + "object-curly-spacing": [2, "never"], + "one-var": [2, "never"], + "quote-props": [2, "consistent-as-needed"], + "quotes": [2, "single", "avoid-escape"], + "semi": [2, "always"], + "semi-spacing": [2, {"before": false, "after": true}], + "space-before-blocks": [2, "always"], + "space-before-function-paren": [2, {"anonymous": "always", "named": "never"}], + "space-in-parens": [2, "never"], + "space-infix-ops": 2, + "space-unary-ops": [2, { "words": true, "nonwords": false }], + "spaced-comment": [2, "always"], + "strict": [2, "function"], + "yoda": [2, "never"], + "max-nested-callbacks": [1, 3], + "valid-jsdoc": [1, { + "prefer": { + "returns": "return", + "property": "prop" + }, + "requireReturn": false + }] + } +} diff --git a/core/.gitignore b/core/.gitignore new file mode 100644 index 000000000..be42d4885 --- /dev/null +++ b/core/.gitignore @@ -0,0 +1,11 @@ +# Ignore node_modules folder created when installing core's JavaScript +# dependencies. +node_modules + +# Ignore overrides of core's phpcs.xml.dist and phpunit.xml.dist. +phpcs.xml +phpunit.xml + +# Ignore package-lock.json that is automatically created when adding +# dependencies by users of NPMv5. +package-lock.json diff --git a/core/.stylelintrc.json b/core/.stylelintrc.json new file mode 100644 index 000000000..832748d39 --- /dev/null +++ b/core/.stylelintrc.json @@ -0,0 +1,47 @@ +{ + "extends": "stylelint-config-standard", + "plugins": [ + "stylelint-no-browser-hacks/lib" + ], + "rules": { + "at-rule-empty-line-before": null, + "block-no-empty": null, + "color-hex-case": null, + "color-hex-length": null, + "comment-empty-line-before": null, + "declaration-block-no-duplicate-properties": null, + "declaration-block-no-redundant-longhand-properties": null, + "declaration-block-no-shorthand-property-overrides": null, + "declaration-block-trailing-semicolon": null, + "declaration-colon-space-after": null, + "function-comma-space-after": null, + "function-linear-gradient-no-nonstandard-direction": null, + "function-name-case": null, + "function-whitespace-after": null, + "length-zero-no-unit": null, + "no-empty-source": null, + "no-unknown-animations": true, + "number-leading-zero": null, + "number-no-trailing-zeros": null, + "plugin/no-browser-hacks": [true, { + "browsers": [ + "ie >= 9", + "edge >= 13", + "firefox >= 5", + "opera >= 12", + "safari >= 5", + "chrome >= 56" + ] + }], + "property-no-unknown": null, + "rule-empty-line-before": null, + "selector-pseudo-element-colon-notation": null, + "selector-type-no-unknown": null, + "shorthand-property-no-redundant-values": null, + "unit-whitelist": ["deg", "em", "ex", "ms", "rem", "%", "s", "px"] + }, + "ignoreFiles": [ + "assets/vendor/**/*.css", + "tests/Drupal/Tests/Core/Asset/css_test_files/**/*.css" + ] +} diff --git a/core/CHANGELOG.txt b/core/CHANGELOG.txt index 1cfd863cf..ac078d5c2 100644 --- a/core/CHANGELOG.txt +++ b/core/CHANGELOG.txt @@ -1,14 +1,544 @@ -Drupal 8.3.7, 2017-08-16 +Drupal 8.4.0, 2017-10-04 ------------------------ -- Fixed security issues. See SA-CORE-2017-004. +### Drush users: Update to Drush 8.1.12+ or higher -Drupal 8.3.4, 2017-06-21 ------------------------- -- Fixed security issues. See SA-CORE-2017-003. +[Versions of Drush earlier than 8.1.12 will not work with Drupal +8.4.x](https://www.drupal.org/node/2874827). Update Drush to 8.1.12 or higher +**before using it to update to Drupal core 8.4.x** or you will encounter fatal +errors that prevent updates from running. -Drupal 8.3.1, 2017-04-19 ------------------------- -- Fixed security issues. See SA-CORE-2017-002. +* If Drush is installed globally (i.e., generally available on the web host), + Drush 8.1.12 and higher will successfully update Drupal 8.3.x to 8.4.0, but + users may still see [other error messages after updates have + run](https://github.com/drush-ops/drush/issues/2933).) +* If the site is built with Composer and includes Drush as a local dependency + (less common), you should update your `composer.json` file to require at + least [Drush 8.1.15](https://github.com/drush-ops/drush/releases/tag/8.1.15). + Drush 8.1.14 will not work in the same composer project as Drupal 8.4. + +### Updated browser requirements: Internet Explorer 9 and 10 no longer supported + +In April 2017, Microsoft discontinued all support for Internet Explorer 9 and +10. Therefore, [Drupal 8.4 has as well](https://www.drupal.org/node/2842298). +Drupal 8.4 still mostly works in these browser versions, but bugs that affect +them only will no longer be fixed, and existing workarounds for them will +be removed beginning in Drupal 8.5. + +Additionally, Drupal 8's [browser requirements documentation +page](https://www.drupal.org/docs/8/system-requirements/browser-requirements) +currently lists incorrect information regarding very outdated browser versions +such as Safari 5 and Firefox 5. [Clarifications to the browser policy and +documentation](https://www.drupal.org/node/2390621) are underway. + +### Known Issues + +Drupal 8.4.0 includes major version updates for two dependencies: +Symfony 3.2 and jQuery 3. Both updates may introduce backwards compatibility +issues for some sites or modules, so test carefully. For more information, see +the "Third-party library updates" section below. Known issues related to the +Symfony update include: + +* Drush issues: + * [Incompatibility with Drush 8.1.11 and earlier](https://www.drupal.org/node/2874827). + * [Other error messages with Drush 8.1.12 and higher](https://github.com/drush-ops/drush/issues/2933). + * [Incompatibility with Drush 8.1.14 and earlier for Composer-built sites](https://github.com/drupal-composer/drupal-project/issues/305). +* [Certain file uploads may fail + silently](https://www.drupal.org/node/2906030) due to a Symfony 3 backwards + compatibility break if they used the `$deep` parameter (which was already + deprecated in Symfony 2.8 and is removed in Symfony 3.0. *Check any custom + file upload code* that may have used the deprecated parameter and [update + it according to the API change record](https://www.drupal.org/node/2743809). + +See the ['8.4.0 update' tag for a list of known issues across +projects](https://www.drupal.org/project/issues/search?issue_tags=8.4.0%20update). + +[Search the issue queue for known +issues](https://www.drupal.org/project/issues/search/drupal?project_issue_followers=&status%5B%5D=Open&version%5B%5D=8.x&issue_tags_op=%3D). + +### Important fixes since 8.3.x + +Translators should take note of several [string additions and changes since the +last release](https://www.drupal.org/project/issues/search/drupal?project_issue_followers=&issue_tags_op=%3D&issue_tags=String+change+in+8.4.0). + +#### File usage tracking + +Drupal 8 has several longstanding [file usage tracking +bugs](https://www.drupal.org/node/2821423). To prevent further data loss, +Drupal 8.4 has [disabled the automatic deletion of files with no known +remaining usages](https://www.drupal.org/node/2801777). This will result of the +accumulation of unused files on sites, but ensures that files erroneously +reporting 0 usages are not deleted while in use. Additionally, an issue with +[validation errors when saving content referencing these +files](https://www.drupal.org/node/2896480) has also been resolved. + +[The change record explains how sites can opt back into marking files +temporary](https://www.drupal.org/node/2891902). If you choose to enable the +setting, you can also set "Delete orphaned files" to "Never" on +`/admin/config/media/file-system` to avoid permanent deletion of the affected +files. + +While the files will no longer be deleted by default, file usage is still not +tracked correctly in several scenarios, regardless of the setting. Discussion +on [how to evolve the file usage tracking +system](https://www.drupal.org/node/2821423) is underway. + +#### Configuration export sorting + +* [#2361539: Config export key order is not predictable for sequences, add + orderby property to config schema](https://www.drupal.org/node/2361539) + resolves an issue where sequences in configuration were not sorted unless + the code responsible for saving configuration explicitly performed a sort. + This resulted in unpredictable changes in configuration ordering and + confusing diffs even when nothing had changed. To resolve this issue, we've + [added an `orderby` key to the config schema](https://www.drupal.org/node/2852566) + that allows it to be sorted either by key or by value. Adding a preferred + sort is strongly recommended. +* Two related issues remain open: + * [#2860531: Add orderby key to third-party + settings](https://www.drupal.org/node/2860531) relates to unsorted + sequences which result in unexpected discrepancies in configuration + during a configuration import. + * [#2885368: Config export key order for sequences: "orderedby" does not + support cases where the order actually + matters](https://www.drupal.org/node/2885368) relates to various + sequences in core and contributed modules in which the source order is + important. + +#### Revision data integrity fixes + +* Previously, data from draft revisions for + [path aliases](https://www.drupal.org/node/2856363), + [menus](https://www.drupal.org/node/2858434), + and [books](https://www.drupal.org/node/2858431) could leak into the live + site. Drupal 8.4.0 hotfixes all three issues by preventing changes to + this data from being saved on any revision that is not the default revision. + These fixes improve revision support for both stable features and the + experimental Content Moderation module. +* Correspondingly, [Content Moderation now avoids such scenarios with + non-default revisions](https://www.drupal.org/node/2883868) by setting the + 'default revision' flag earlier. +* Previously, [saving a revision of an entity translation could cause draft + revisions to go "missing"](https://www.drupal.org/node/2766957). Drupal 8.4.0 + prevents this by preventing the moderation state from being set to anything + that would make the revision go "missing". Going forward, the entity system + will also [provide the 'revision_translation_affected' base field by default + for all revisionable and translatable entity + types](https://www.drupal.org/node/2896845) for tracking such revisions. +* [A similar but unrelated bug in + Content Moderation](https://www.drupal.org/node/2862988) has also been fixed + in this release. + +#### Other critical improvements + +* When nodes were deleted, Menu UI module deleted their menu items. However, + menu items may exist even whenm Menu UI module is not enabled and can also be + attached to entities other than nodes. Therefore, menu item cleanup on entity + deletetion [is now performed by the Custom Menu Links + module](https://www.drupal.org/node/2350797) instead, covering the previously + missing cases. A related issue that [broke module uninstallation for some + modules providing menu items for certain entity + forms](https://www.drupal.org/node/2907654) has also been resolved. +* A race condition occured in the Batch API when using fastcgi. The Batch API + now ensures that [the current batch state is written completely to the + database before starting the next + batch](https://www.drupal.org/node/2851111). +* When uninstalling modules, empty fields were left behind to be purged. + However, without the field definitions from the module, it was not possible + to purge them any more. [Empty field deletion is now performed + immediately](https://www.drupal.org/node/2884202) instead to avoid this + scenario. +* When clearing caches in a translated interface, the field labels would + [return to the default language](https://www.drupal.org/node/2650434). + +### New stable modules + +The following modules, previously considered experimental, are now stable and +safe for use on production sites, with full backwards compatibility and upgrade +paths from 8.4.0 to future releases: + +#### Datetime Range + +The [Datetime Range module](https://www.drupal.org/node/2893128) provides a +field type that allows end dates to support contributed modules like +[Calendar](https://www.drupal.org/project/calendar). This stable release is +backwards-compatible with the 8.3.x experimental version and shares a +consistent API with other Datetime fields. + +Future releases may improve Views support, usability, Datetime Range field +validation, and REST support. For bugs or feature requests for this module, +[see the core Datetime issue +queue](https://www.drupal.org/project/issues/search/drupal?project_issue_followers=&status%5B%5D=Open&version%5B%5D=8.x&component%5B%5D=datetime.module&issue_tags_op=%3D). + +#### Layout Discovery + +The [Layout Discovery module](https://www.drupal.org/node/2834025) provides +an API for modules or themes to register layouts as well as five common +layouts. Providing this API in core enables core and contributed layout +solutions to be compatible with each other. This stable release is +backwards-compatible with the 8.3.x experimental version and introduces +[support for per-region attributes](https://www.drupal.org/node/2885877). + +#### Media + +The new core [Media module](https://www.drupal.org/node/2831274) provides an +API for reusable media entities and references. It is based on the contributed +[Media Entity module](https://www.drupal.org/project/media_entity). + +Since there is a rich ecosystem of Drupal contributed modules built on Media +Entity, the top priority for this release is to [provide a stable core API and +data model](https://www.drupal.org/node/2895059) for a smoother transition for +these modules. Developers and expert site builders can now add Media as a +dependency. Work is underway to [provide an update path for existing sites' +Media Entity data](https://www.drupal.org/node/2880334) and to [port existing +contributed modules to the improved core +API](https://www.drupal.org/node/2860796). Both versions cannot be used at the +same time, so we also [prevent the 1.x version of the contributed Media Entity +module from being enabled at the same time as the core Media +module](https://www.drupal.org/node/2896427). + +Note that **the core Media module is currently marked hidden** and will not +appear on the 'Extend' (module administration) page. (Enabling a contributed +module that depends on the core Media module will also enable Media +automatically.) The module will be displayed to site builders normally once +user experience issues with it are resolved. Similarly, the REST API and +normalizations for Media is not final and support for decoupled applications +will also be improved in a future release. + +#### Inline Form Errors + +The [Inline Form Errors module](https://www.drupal.org/node/2897652) provides a +summary of any validation errors at the top of a form and places the individual +error messages next to the form elements themselves. This helps users +understand which entries need to be fixed, and how. Inline Form Errors was +provided as an experimental module from Drupal 8.0.0 on, but it is now stable +and polished enough for production use. See the core [Inline Form Errors module +issue queue](https://www.drupal.org/project/issues/drupal?text=&status=Open&priorities=All&categories=All&version=All&component=inline_form_errors.module) +for outstanding issues. + +#### Workflows + +The Workflows module provides an abstract system of states (like Draft, +Archived, and Published) and transitions between them. Workflows can be used by +modules that implement non-publishing workflows (such as for users or products) +as well as content publishing workflows. + +Drupal 8.4 introduces a final significant backwards compatibility and data +model break for this module, [moving responsibility for workflow states and +transitions from the Workflow entity to the Workflow type +plugin](https://www.drupal.org/node/2849827). Read [Workflow type plugins are +now responsible for state and transition +schema](https://www.drupal.org/node/2897706) for full details on the API and +data model changes related to this fix. Now that this change is complete, [the +Workflows module became stable](https://www.drupal.org/node/2897130)! + +While the module can be installed as-is, it is not useful in itself without +either Content Moderation and/or some other module that requires it. + +### Content authoring and site administration improvements + +* The "Save and keep (un)published" dropbutton has been replaced with [a + "Published" checkbox and single "Save" + button](https://www.drupal.org/node/2068063). The "Save and..." dropbutton + was a new design in Drupal 8, but users found it confusing, so we have + restored a design that is more similar to the user interface for Drupal 7 and + earlier. +* Previously, deleting a field on a content type would also delete any views + depending on the field. While the confirmation form did indicate that the + view would be deleted, users did not expect the behavior and often missed the + message, leading to data loss. [Now, the view is disabled + instead](https://www.drupal.org/node/2468045). In the future, we intend to + [notify users that configuration has been + disabled](https://www.drupal.org/node/2832558) (as in this fix) as well as + [give users clearer warnings for other highly destructive + operations](https://www.drupal.org/node/2773205). +* The [Drupal toolbar no longer flickers](https://www.drupal.org/node/2542050) + during page rendering, thus improving perceived front-end performance. +* Options in [timezones selector are now grouped by + regions](https://www.drupal.org/node/2847651) and labeled by cities instead + of timezone names, making it much easier for users to find and select the + specific timezone they need. +* Both the ["Comments" administration page at + `/admin/content/comment`](https://www.drupal.org/node/1986606) and the + ["Recent log messages" report provided by + dblog](https://www.drupal.org/node/2015149) are now configurable views. The + "Comments" administration page also [has some default filters + added](https://www.drupal.org/node/2898344). +* Useful meta information about a node's status is typically displayed at the + top of the node sidebar. Previously, this meta information was provided by + the Seven theme, so it was not available in other administrative themes. + [This meta information is now provided by node.module + itself](https://www.drupal.org/node/2803875) so other administration themes + can access it. +* [Views now supports rendering computed + fields](https://www.drupal.org/node/2852067). + +### REST and API-first improvements + +* Authenticated REST API performance increased by 15% by [utilizing the Dynamic + Page Cache](https://www.drupal.org/node/2827797). +* POSTing entities [can now happen at `/node`, `/taxonomy/term` and so + on](https://www.drupal.org/node/2293697), instead of `/entity/node`, + `/entity/taxonomy_term`. Instead of confusingly different URLs, they therefore + now use the URLs you'd expect. Backwards compatibility is maintained. +* There is now a dedicated resource for [resetting a user's + password](https://www.drupal.org/node/2847708). +* Time fields now are [normalized to RFC3339 timestamps by + default](https://www.drupal.org/node/2768651), fixing time ambiguity. + Existing sites continue to receive UNIX timestamps, but can opt in. [See the + change record for more information about backwards compatibility and on how + to opt in](https://www.drupal.org/node/2859657). +* [Path alias fields are now normalized as + well](https://www.drupal.org/node/2846554). [See the change record for + information about how this impacts API-first modules and other features + relying on serialized entities](https://www.drupal.org/node/2856220). +* When denormalization fails, a [422 response is now + returned](https://www.drupal.org/node/2827084) instead of a 400, per the HTTP + specification. +* With CORS enabled to allow origins besides the site's own host, [submitting + forms was broken](https://www.drupal.org/node/2853201) unless the site's own + host was also explicitly allowed. This is now resolved. +* Fatal errors and exceptions [now show a + backtrace](https://www.drupal.org/node/2853300) for all non-HTML requests as + well as HTML requests, which makes for easier debugging and better bug + reports. +* Massive expansion of test coverage. + +### Performance and scalability improvements + +* Drupal 8 caches at various different levels for more effective caching. + However, this resulted in exessively growing cache tables with tens or + hundreds of thousands of entries, and gigabytes in size. [A new limit of 5000 + rows per cache bin was introduced to limit this + growth](https://www.drupal.org/node/2526150). +* The internal page cache now [has a dedicated cache + bin](https://www.drupal.org/node/2889603) distinct from the rest of the + render cache for improved scalability. +* The service collector pattern instantiates all services it collects, which is + expensive, and unnecessary for some use cases. For those use cases, a [new + service ID collector](https://www.drupal.org/node/2472337) pattern has been + added and the theme negotiator updated to use it. [See the change record for + information about how to use the service ID + collector](https://www.drupal.org/node/2598944) for improved performance. +* The maximum time in-progress forms are cached [is now + customizable](https://www.drupal.org/node/1286154) rather than being limited + to a default cache lifetime of 6 hours. Sites can decrease the lifetime to + reduce cache footprint, or increase it if needed for a particular site's + usecase. [See the change record to learn how to access this new + setting](https://www.drupal.org/node/2886836). +* If there are no status messages, the corresponding rendering [is now + skipped](https://www.drupal.org/node/2853509). On simple sites that use the + Dynamic Page Cache (the default), this can result in a 10% improvement when + there are no messages! +* [Optimized the early Drupal installer](https://www.drupal.org/node/2872611) + to check whether any themes are installed first before invoking an + unnecessary function, which improves Drupal install time measurably for both + sites and automated tests. + +### Developer experience improvements + +* [Adopted Airbnb JavaScript style guide + 14.1](https://www.drupal.org/node/2815077) as the new baseline set of coding + standards for Drupal core and contributed modules. [See the change record for + information about how to configure your project for + eslint](https://www.drupal.org/node/2873849). +* Field type definitions can now [enforce the cardinality of the + field](https://www.drupal.org/node/2403703). [See the change record for + information about how to specify a cardinality via the + annotation](https://www.drupal.org/node/2869873). +* [Added new methods](https://www.drupal.org/node/2869809) to make getting + typed configuration entity representations easier. [See the change record for + more information about how to invoke these + methods](https://www.drupal.org/node/2877282). +* The `html_tag` render element now [supports nested render + arrays](https://www.drupal.org/node/2694535), enabling the creation of + dynamic SVGs. [See the change record for information about how you can use + this in your theme](https://www.drupal.org/node/2887146). +* [Added more helpful errors](https://www.drupal.org/node/2705037) when CSS + is not properly nested under an existing category in asset libraries. +* Also see the [change records for the 8.4.x + branch](https://www.drupal.org/list-changes/drupal/published?keywords_description=&to_branch=8.4.x&version=&created_op=%3E%3D&created%5Bvalue%5D=&created%5Bmin%5D=&created%5Bmax%5D=) + for other changes for developers. + +### Automated testing improvements + +* [PHPUnit has been updated from 4.8.28 to + 4.8.35](https://www.drupal.org/node/2850797) in order to incorporate a + forward-compatibility layer for PHPUnit 4.8, which will be useful during a + future migration to PHPUnit 5 or PHPUnit 6. +* Many former WebTestBase tests were converted to BrowserTestBase. [Track + current progress](http://simpletest-countdown.org/). +* The default approach for testing deprecated code has changed to [require use + of the Drupal core deprecation policy](https://www.drupal.org/node/2488860) + (`@trigger_error()`) to mark code deprecated; otherwise a test error will + be thrown. [See the change record for information about how to update + `phpunit.xml` and how to test deprecated + code](https://www.drupal.org/node/2811561). +* BrowserTestBase is [no longer dependent on traits from + Simpletest](https://www.drupal.org/node/2803621). Backwards + compatibility is preserved. +* [Resolved random test failures](https://www.drupal.org/node/2866056) due to + ResourceTestBase's HTTP client timeout of 30 seconds. + +### Third-party library updates + +* [Drupal's Symfony dependency has been updated from Symfony 2.8 to Symfony + 3.2](https://www.drupal.org/node/2712647). This major version update is + necessary because Symfony 2.8 support will end around the release of Drupal + 8.6.0 next year. See the change record for information about [Symfony 3 + backwards compatibility breaks that affected Drupal + core](https://www.drupal.org/node/2743809). [Drupal 8 also requires Symfony + 3.2.8](https://www.drupal.org/node/2871253) because of a bug in Symfony + 3.2.7. +* [#2533498: Update jQuery to version 3](https://www.drupal.org/node/2533498). + Now that jQuery 3.0 has been released, jQuery 2.x will only be receiving + security updates, so Drupal 8.4.0 ships with this library update. jQuery 3 + features numerous improvements, including better error reporting. See the + [jQuery Core 3.0 Upgrade Guide](https://jquery.com/upgrade-guide/3.0/) for + information on jQuery 3 backwards compatibility breaks that might affect the + JavaScript code in your modules, themes, and sites. +* The zurb/joyride library (used by the Tour module) has been [updated to a + development version higher than 2.1.0.1](https://www.drupal.org/node/2898808) + to resolve an upstream incompatibility with jQuery 3. We will update to + Joyride 2.1.1 once it is available with the needed fix. +* [zendframework/zend-diactoros has been updated from 1.3.10 to 1.4.1](https://www.drupal.org/node/2874817). +* [jQuery UI has been updated from 1.11.4 to 1.12.1](https://www.drupal.org/node/2809427). +* [jQuery Once has been updated from 2.1.1 to 2.2.0](https://www.drupal.org/node/2899156). +* [CKEditor has been updated from 4.6.2 to 4.7.2](https://www.drupal.org/node/2904142). +* [asm89/stack-cors has been updated from 1.0 to 1.1](https://www.drupal.org/node/2853201). +* [The minimum phpsec/prophecy requirement is now 1.4](https://www.drupal.org/node/2900800). +* [composer/installers has been updated from 1.2.0 to 1.4.0](https://www.drupal.org/node/2900112). +* [wikimedia/composer-merge-plugin has been updated from 1.4.0 to 1.4.1](https://www.drupal.org/node/2900112). +* [guzzlehttp/guzzle has been updated from 6.2.3 to 6.3.0](https://www.drupal.org/node/2900112). +* [mikey179/vfsstream has been updated from 1.6.4 to 1.6.5](https://www.drupal.org/node/2900112). +* [phpunit/phpunit has been updated from 4.8.35 to 4.8.36](https://www.drupal.org/node/2900112). +* [masterminds/html5 has been updated from 2.2.2 to 2.3.0](https://www.drupal.org/node/2909743). +* [symfony-cmf/routing has been udpated from 1.4.0 to 1.4.1](https://www.drupal.org/node/2909743). + +### Experimental modules + +#### Migrate ([beta stability](https://www.drupal.org/core/experimental#beta)) + +Migrate provides a general API for migrations. It will be considered completely +stable once all issues tagged [Migrate +critical](https://www.drupal.org/project/issues/search/drupal?project_issue_followers=&status%5B%5D=Open&version%5B%5D=8.x&issue_tags_op=%3D&issue_tags=Migrate+critical) +are resolved. + +* This release includes numerous developer experience improvements for Migrate + and Migrate Drupal, including [deprecating outdated references to + "CCK"](https://www.drupal.org/node/2751897), [simplifying field type + mapping](https://www.drupal.org/node/2896507), renaming several plugins to + better capture their and many other API and documentation improvements. + (Backwards compatibility is provided in each case Migrate is in beta.) +* Added the ability to [provide the source + module](https://www.drupal.org/node/2569805) to migrations to help site + owners review what data is being migrating, especially for cases where the + source and destination module are not the same (for example if a new Drupal 8 + module replaces old functionality. + + +#### Migrate Drupal and Migrate Drupal UI ([alpha stability](https://www.drupal.org/core/experimental#alpha)) + +Migrate Drupal module provides API support for Drupal-to-Drupal migrations, and +Migrate Drupal UI offers a simple user interface to run migrations from older +Drupal versions. + +* This release adds [date](https://www.drupal.org/node/2566779) and + [node reference](https://www.drupal.org/node/2814949) support for Drupal 6 to + 8 migrations. +* Core provides migrations for most Drupal 6 data and can be used for migrating + Drupal 6 sites to Drupal 8, and the Drupal 6 to 8 migration path is nearing + beta stability. Some gaps remain, such as for some internationalization data. + ([Outstanding issues for the Drupal 6 to Drupal 8 + migration](https://www.drupal.org/project/issues/search/drupal?project_issue_followers=&status%5B%5D=1&status%5B%5D=13&status%5B%5D=8&status%5B%5D=14&status%5B%5D=15&status%5B%5D=4&issue_tags_op=%3D&issue_tags=migrate-d6-d8).) +* The Drupal 7 to Drupal 8 migration is incomplete but is suitable for + developers who would like to help improve the migration and can be used to + test upgrades especially for simple Drupal 7 sites. Most high-priority + migrations are available. ([Outstanding issues for the Drupal 7 to Drupal 8 + migration](https://www.drupal.org/node/2456259).) +* Drush support for Migrate is currently only available in the + [Drupal Upgrade](https://www.drupal.org/project/migrate_upgrade) contributed + module. (See the [pull request to add support to + Drush](https://github.com/drush-ops/drush/issues/2140).) +* Conflicting text field processing settings [are now identified and + logged](https://www.drupal.org/node/2842222) to avoid security or data + integrity issues with the migration of plain and formatted text fields. +* Automatic redirects are now [added for translation node paths that are no + longer valid](https://www.drupal.org/node/2850085) after migration has merged + translations into a single node. +* A data integrity bug that resulted in [duplicate comment types and incorrect + comment_entity_statistics](https://www.drupal.org/node/2853872) for node and + forum comment migrations has been resolved. +* A bug that [stopped public files from being migrated from D6 to D8 if the + user first selected Drupal 7 in the UI](https://www.drupal.org/node/2907233) + has also been resolved. + +#### Content Moderation ([beta stability](https://www.drupal.org/core/experimental#beta)) + +Content Moderation allows workflows from the Workflows module to be applied to +content. Content Moderation has beta stability in 8.4.0-alpha1. Notable improvements in this release: + +* Workflow states are now [selected from a select list, rather than under a drop-button](https://www.drupal.org/node/2753717), which represents a significant + usability improvement. +* Now that workflows can be applied to any revisionable entity type, Content + Moderation [adds entity type checkboxes to the workflow form](https://www.drupal.org/node/2843083). + This allows site administrators to configure which entity types should have + the workflow at the same time as they configure the workflow itself, for a + more intuitive user experience. +* Content Moderation now [prevents the deletion of workflows that are currently in use](https://www.drupal.org/node/2830740) + to prevent fatal errors and data integrity problems. +* The confusing terminology of + ["forward revisions" has been replaced with that of "pending revisions"](https://www.drupal.org/node/2890364). + If your contributed module refers to revisions that are not yet published, it + should use this new term. +* [The 'Latest revision' views filter has been rewritten to avoid relying on a + custom {revision_tracker}](https://www.drupal.org/node/2865579), and that + table has been removed from the database schema. + +As per the experimental module process, there were some backwards-incompatible +changes since Drupal 8.3.x. Experimental modules do not offer a supported +upgrade path, but [an unofficial upgrade path is +available](https://www.drupal.org/node/2896630). + +#### Field Layout ([alpha stability](https://www.drupal.org/core/experimental#alpha)) + +This module provides the ability for site builders to rearrange fields on +content types, block types, etc. into new regions, for both the form and +display, on the same forms provided by the normal field user interface. Field +Layout has had several bugfixes since 8.3.0, but no significant changes. See +the [entity display layout roadmap](https://www.drupal.org/node/2795833) for +the next steps for this module, which needs to become stable by 8.5.0 to remain +in Drupal core. + +#### Settings Tray ([beta stability](https://www.drupal.org/core/experimental#beta)) + +The Settings Tray module allows configuring page elements such as blocks and +menus from the frontend of your site. Settings Tray has improved significantly +since Drupal 8.3.0, including numerous user interaction and accessibility +fixes, better compatibility with stable core modules like Quick Edit and +Contextual Links, added documentation, and [a CSS +reset](https://www.drupal.org/node/2826722) for better themer experience. + +The module reached beta stability following completion of [moving the +off-canvas dialog renderer into a core +component](https://www.drupal.org/node/2784443), and [renaming the machine name +of the module to settings_tray](https://www.drupal.org/node/2803375), to match +its user-facing name. We hope to make Settings Tray stable by 8.5.0. To track +progress, see the ["outside in" roadmap issue](https://www.drupal.org/node/2762505). + +#### Place Blocks ([alpha stability](https://www.drupal.org/core/experimental#alpha)) + +This feature allows the user to place a block on any page and see the region +where it will be displayed, without having to navigate to a backend +administration form. [8.4.0-alpha1 was the deadline for Place Blocks to +stabilize](https://www.drupal.org/core/experimental#versions), but the module's +roadmap was not completed. Furthermore, the module is not intended as a +standalone feature and should instead be a built-in part of the Block system. +For these reasons, [Place Blocks module has been marked hidden in this +release](https://www.drupal.org/node/2898267) (it can still be enabled with +Drush). The Place Blocks module itself will be turned into an empty module in +Drupal 8.5.x, since ideally the core Block system will offer the same +functionality in 8.5.0 (though this depends on completion of a [core patch for +the feature](https://www.drupal.org/node/2739075).) Drupal 8.3.0, 2017-04-05 ------------------------ diff --git a/core/MAINTAINERS.txt b/core/MAINTAINERS.txt index 4e5f4e619..884a046f9 100644 --- a/core/MAINTAINERS.txt +++ b/core/MAINTAINERS.txt @@ -170,6 +170,7 @@ CSS - John Albin Wilkins 'JohnAlbin' https://www.drupal.org/u/johnalbin Database API +- ? MySQL DB driver - David Strauss 'David Strauss' https://www.drupal.org/u/david-strauss @@ -272,6 +273,10 @@ Mail Markup - ? +Media +- Sean Blommaert 'seanB' https://www.drupal.org/u/seanb +- Adam Globus-Hoenich 'phenaproxima' https://www.drupal.org/u/phenaproxima + Menu - Daniel Wehner 'dawehner' https://www.drupal.org/u/dawehner - Peter Wolanin 'pwolanin' https://www.drupal.org/u/pwolanin @@ -285,16 +290,10 @@ Menu UI Migrate - Adam Globus-Hoenich 'phenaproxima' https://www.drupal.org/u/phenaproxima -- Ben Dougherty 'benjy' https://www.drupal.org/u/benjy - Lucas Hedding 'heddn' https://www.drupal.org/u/heddn -- Mike Ryan 'mikeryan' https://www.drupal.org/u/mikeryan -- Vicki Spagnolo 'quietone' https://www.drupal.org/u/quietone - -Migrate (Drupal) -- Ben Dougherty 'benjy' https://www.drupal.org/u/benjy -- Lucas Hedding 'heddn' https://www.drupal.org/u/heddn -- Mike Ryan 'mikeryan' https://www.drupal.org/u/mikeryan +- Markus Sipilä 'masipila' https://www.drupal.org/u/masipila - Vicki Spagnolo 'quietone' https://www.drupal.org/u/quietone +- Maxime Turcotte 'maxocub' https://www.drupal.org/u/maxocub Node - Tim Millwood 'timmillwood' https://www.drupal.org/u/timmillwood @@ -307,9 +306,6 @@ Node Access Options - ? -Outside In -- Ted Bowman 'tedbow' https://www.drupal.org/u/tedbow - Page Cache - Lorenz Schori 'znerol' https://www.drupal.org/u/znerol - Fabian Franz 'Fabianx' https://www.drupal.org/u/fabianx @@ -356,6 +352,9 @@ Search Serialization - Damian Lee 'damiankloip' https://www.drupal.org/u/damiankloip +Settings Tray +- Ted Bowman 'tedbow' https://www.drupal.org/u/tedbow + Seven - ? @@ -512,11 +511,11 @@ tools, documentation, and processes to make it easier for new contributors to get involved. They organize communications and logistics, and actively participate in mentoring. +- Mauricio Dinarte 'dinarcon' https://www.drupal.org/u/dinarcon - Lucas Hedding 'heddn' https://www.drupal.org/u/heddn +- Rachel Lawson 'rachel_norfolk' https://www.drupal.org/u/rachel_norfolk - Valery Lourie 'valthebald' https://www.drupal.org/u/valthebald -- Alina Mackenzie 'alimac' https://www.drupal.org/u/alimac - Jess Myrbo 'xjm' https://www.drupal.org/u/xjm -- Andrea Soper 'ZenDoodles' https://www.drupal.org/u/zendoodles -- Cathy Theys 'YesCT' https://www.drupal.org/u/yesct +- Matthew Radcliffe 'mradcliffe' https://www.drupal.org/u/mradcliffe Provisional membership: None at this time. diff --git a/core/assets/vendor/ckeditor/CHANGES.md b/core/assets/vendor/ckeditor/CHANGES.md index 72c579805..19c099e4c 100644 --- a/core/assets/vendor/ckeditor/CHANGES.md +++ b/core/assets/vendor/ckeditor/CHANGES.md @@ -1,6 +1,119 @@ CKEditor 4 Changelog ==================== +## CKEditor 4.7.2 + +New Features: + +* [#455](https://github.com/ckeditor/ckeditor-dev/issues/455): Added [Advanced Content Filter](https://docs.ckeditor.com/#!/guide/dev_acf) integration with the [Justify](http://ckeditor.com/addon/justify) plugin. + +Fixed Issues: + +* [#663](https://github.com/ckeditor/ckeditor-dev/issues/663): [Chrome] Fixed: Clicking the scrollbar throws an `Uncaught TypeError: element.is is not a function` error. +* [#520](https://github.com/ckeditor/ckeditor-dev/issues/520): Fixed: Widgets cannot be properly pasted into a table cell. +* [#579](https://github.com/ckeditor/ckeditor-dev/issues/579): Fixed: Internal `cke_table-faked-selection-table` class is visible in the Stylesheet Classes field of the [Table Properties](http://ckeditor.com/addon/table) dialog. +* [#545](https://github.com/ckeditor/ckeditor-dev/issues/545): [Edge] Fixed: Error thrown when pressing the [Select All](https://ckeditor.com/addon/selectall) button in [Source Mode](http://ckeditor.com/addon/sourcearea). +* [#582](https://github.com/ckeditor/ckeditor-dev/issues/582): Fixed: Double slash in the path to stylesheet needed by the [Table Selection](http://ckeditor.com/addon/tableselection) plugin. Thanks to [Marius Dumitru Florea](https://github.com/mflorea)! +* [#491](https://github.com/ckeditor/ckeditor-dev/issues/491): Fixed: Unnecessary dependency on the [Editor Toolbar](http://ckeditor.com/addon/toolbar) plugin inside the [Notification](http://ckeditor.com/addon/notification) plugin. +* [#646](https://github.com/ckeditor/ckeditor-dev/issues/646): Fixed: Error thrown into the browser console after opening the [Styles Combo](http://ckeditor.com/addon/stylescombo) plugin menu in the editor without any selection. +* [#501](https://github.com/ckeditor/ckeditor-dev/issues/501): Fixed: Double click does not open the dialog for modifying anchors inserted via the [Link](http://ckeditor.com/addon/link) plugin. +* [#9780](https://dev.ckeditor.com/ticket/9780): [IE8-9] Fixed: Clicking inside an empty [read-only](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-readOnly) editor throws an error. +* [#16820](https://dev.ckeditor.com/ticket/16820): [IE10] Fixed: Clicking below a single horizontal rule throws an error. +* [#426](https://github.com/ckeditor/ckeditor-dev/issues/426): Fixed: The [`range.cloneContents`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-cloneContents) method selects the whole element when the selection starts at the beginning of that element. +* [#644](https://github.com/ckeditor/ckeditor-dev/issues/644): Fixed: The [`range.extractContents`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-extractContents) method returns an incorrect result when multiple nodes are selected. +* [#684](https://github.com/ckeditor/ckeditor-dev/issues/684): Fixed: The [`elementPath.contains`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.elementPath-method-contains) method incorrectly excludes the last element instead of root when the `fromTop` parameter is set to `true`. + +Other Changes: + +* Updated the [SCAYT](http://ckeditor.com/addon/scayt) (Spell Check As You Type) plugin: + * [#148](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/148): Fixed: SCAYT leaves underlined word after the CKEditor Replace dialog corrects it. +* [#751](https://github.com/ckeditor/ckeditor-dev/issues/751): Added the [`CKEDITOR.dom.nodeList.toArray`](https://docs.ckeditor.com/#!/api/CKEDITOR.dom.nodeList-method-toArray) method which returns an array representation of a [node list](https://docs.ckeditor.com/#!/api/CKEDITOR.dom.nodeList). + +## CKEditor 4.7.1 + +New Features: + +* Added a new Mexican Spanish localization. Thanks to [David Alexandro Rodriguez](https://www.transifex.com/user/profile/darsco16/)! +* [#413](https://github.com/ckeditor/ckeditor-dev/issues/413): Added Paste as Plain Text keyboard shortcut to the [Accessibility Help](http://ckeditor.com/addon/a11yhelp) instructions. + +Fixed Issues: + +* [#515](https://github.com/ckeditor/ckeditor-dev/issues/515): [Chrome] Fixed: Mouse actions on CKEditor scrollbar throw an exception when the [Table Selection](http://ckeditor.com/addon/tableselection) plugin is loaded. +* [#493](https://github.com/ckeditor/ckeditor-dev/issues/493): Fixed: Selection started from a nested table causes an error in the browser while scrolling down. +* [#415](https://github.com/ckeditor/ckeditor-dev/issues/415): [Firefox] Fixed: Enter key breaks the table structure when pressed in a table selection. +* [#457](https://github.com/ckeditor/ckeditor-dev/issues/457): Fixed: Error thrown when deleting content from the editor with no selection. +* [#478](https://github.com/ckeditor/ckeditor-dev/issues/478): [Chrome] Fixed: Error thrown by the [Enter Key](http://ckeditor.com/addon/enterkey) plugin when pressing Enter with no selection. +* [#424](https://github.com/ckeditor/ckeditor-dev/issues/424): Fixed: Error thrown by [Tab Key Handling](http://ckeditor.com/addon/tab) and [Indent List](http://ckeditor.com/addon/indentlist) plugins when pressing Tab with no selection in inline editor. +* [#476](https://github.com/ckeditor/ckeditor-dev/issues/476): Fixed: Anchors inserted with the [Link](http://ckeditor.com/addon/link) plugin on collapsed selection cannot be edited. +* [#417](https://github.com/ckeditor/ckeditor-dev/issues/417): Fixed: The [Table Resize](http://ckeditor.com/addon/tableresize) plugin throws an error when used with a table with only header or footer rows. +* [#523](https://github.com/ckeditor/ckeditor-dev/issues/523): Fixed: The [`editor.getCommandKeystroke`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getCommandKeystroke) method does not obtain the correct keystroke. +* [#534](https://github.com/ckeditor/ckeditor-dev/issues/534): [IE] Fixed: [Paste from Word](http://ckeditor.com/addon/pastefromword) does not work in Quirks Mode. +* [#450](https://github.com/ckeditor/ckeditor-dev/issues/450): Fixed: [`CKEDITOR.filter`](http://docs.ckeditor.com/#!/api/CKEDITOR.filter) incorrectly transforms the `margin` CSS property. + +## CKEditor 4.7 + +**Important Notes:** + +* [#13793](http://dev.ckeditor.com/ticket/13793): The [`embed_provider`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-embed_provider) configuration option for the [Media Embed](http://ckeditor.com/addon/embed) and [Semantic Media Embed](http://ckeditor.com/addon/embedsemantic) plugins is no longer preset by default. +* The [UI Color](http://ckeditor.com/addon/uicolor) plugin now uses a custom color picker instead of the `YUI 2.7.0` library which has some known vulnerabilities (it's a security precaution, there was no security issue in CKEditor due to the way it was used). + +New Features: + +* [#16755](http://dev.ckeditor.com/ticket/16755): Added the [Table Selection](http://ckeditor.com/addon/tableselection) plugin that lets you select and manipulate an arbitrary rectangular table fragment (a few cells, a row or a column). +* [#16961](http://dev.ckeditor.com/ticket/16961): Added support for pasting from Microsoft Excel. +* [#13381](http://dev.ckeditor.com/ticket/13381): Dynamic code evaluation call in [`CKEDITOR.template`](http://docs.ckeditor.com/#!/api/CKEDITOR.template) removed. CKEditor can now be used with the `unsafe-eval` Content Security Policy. Thanks to [Caridy Patiño](http://caridy.name)! +* [#16971](http://dev.ckeditor.com/ticket/16971): Added support for color in the `background` property containing also other styles for table cells in the [Table Tools](http://ckeditor.com/addon/tabletools) plugin. +* [#16847](http://dev.ckeditor.com/ticket/16847): Added support for parsing and inlining any formatting created using the Microsoft Word style system to the [Paste from Word](http://ckeditor.com/addon/pastefromword) plugin. +* [#16818](http://dev.ckeditor.com/ticket/16818): Added table cell height parsing in the [Paste from Word](http://ckeditor.com/addon/pastefromword) plugin. +* [#16850](http://dev.ckeditor.com/ticket/16850): Added a new [`config.enableContextMenu`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-enableContextMenu) configuration option for enabling and disabling the [context menu](http://ckeditor.com/addon/contextmenu). +* [#16937](http://dev.ckeditor.com/ticket/16937): The `command` parameter in [CKEDITOR.editor.getCommandKeystroke](http://docs.ckeditor.dev/#!/api/CKEDITOR.editor-method-getCommandKeystroke) now also accepts a command name as an argument. +* [#17010](http://dev.ckeditor.com/ticket/17010): The [`CKEDITOR.dom.range.shrink`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-shrink) method now allows for skipping bogus `
` elements. + +Fixed Issues: + +* [#16935](http://dev.ckeditor.com/ticket/16935): [Chrome] Fixed: Blurring the editor in [Source Mode](http://ckeditor.com/addon/sourcearea) throws an error. +* [#16825](http://dev.ckeditor.com/ticket/16825): [Chrome] Fixed: Error thrown when destroying a focused inline editor. +* [#16857](http://dev.ckeditor.com/ticket/16857): Fixed: Ctrl+Shift+V blocked by [Copy Formatting](http://ckeditor.com/addon/copyformatting). +* [#16845](https://dev.ckeditor.com/ticket/16845): [IE] Fixed: Cursor jumps to the top of the scrolled editor after focusing it when the [Copy Formatting](http://ckeditor.com/addon/copyformatting) plugin is enabled. +* [#16786](http://dev.ckeditor.com/ticket/16786): Fixed: Added missing translations for the [Copy Formatting](http://ckeditor.com/addon/copyformatting) plugin. +* [#14714](http://dev.ckeditor.com/ticket/14714): [WebKit/Blink] Fixed: Exception thrown on refocusing a blurred inline editor. +* [#16913](http://dev.ckeditor.com/ticket/16913): [Firefox, IE] Fixed: [Paste as Plain Text](http://ckeditor.com/addon/pastetext) keystroke does not work. +* [#16968](http://dev.ckeditor.com/ticket/16968): Fixed: [Safari] [Paste as Plain Text](http://ckeditor.com/addon/pastetext) is not handled by the editor. +* [#16912](http://dev.ckeditor.com/ticket/16912): Fixed: Exception thrown when a single image is pasted using [Paste from Word](http://ckeditor.com/addon/pastefromword). +* [#16821](http://dev.ckeditor.com/ticket/16821): Fixed: Extraneous `` elements with `height` style stacked when [pasting from Word](http://ckeditor.com/addon/pastefromword). +* [#16866](http://dev.ckeditor.com/ticket/16866): [IE, Edge] Fixed: Whitespaces not preserved when [pasting from Word](http://ckeditor.com/addon/pastefromword). +* [#16860](http://dev.ckeditor.com/ticket/16860): Fixed: Paragraphs which only look like lists incorrectly transformed into them when [pasting from Word](http://ckeditor.com/addon/pastefromword). +* [#16817](http://dev.ckeditor.com/ticket/16817): Fixed: When [pasting from Word](http://ckeditor.com/addon/pastefromword), paragraphs are transformed into lists with some corrupted data. +* [#16833](http://dev.ckeditor.com/ticket/16833): [IE11] Fixed: Malformed list with headers [pasted from Word](http://ckeditor.com/addon/pastefromword). +* [#16826](http://dev.ckeditor.com/ticket/16826): [IE] Fixed: Superfluous paragraphs within lists [pasted from Word](http://ckeditor.com/addon/pastefromword). +* [#12465](http://dev.ckeditor.com/ticket/12465): Fixed: Cannot change the state of checkboxes or radio buttons if the properties dialog was invoked with a double-click. +* [#13062](http://dev.ckeditor.com/ticket/13062): Fixed: Impossible to unlink when the caret is at the edge of the link. +* [#13585](http://dev.ckeditor.com/ticket/13585): Fixed: Error when wrapping two adjacent `
` elements with a `
`. +* [#16811](http://dev.ckeditor.com/ticket/16811): Fixed: Table alignment is not preserved by the [Paste from Word](http://ckeditor.com/addon/pastefromword) plugin. +* [#16810](http://dev.ckeditor.com/ticket/16810): Fixed: Vertical align in tables is not supported by the [Paste from Word](http://ckeditor.com/addon/pastefromword) plugin. +* [#11956](http://dev.ckeditor.com/ticket/11956): [Blink, IE] Fixed: [Link](http://ckeditor.com/addon/link) dialog does not open on a double click on the second word of the link with a background color or other styles. +* [#10472](http://dev.ckeditor.com/ticket/10472): Fixed: Unable to use [Table Resize](http://ckeditor.com/addon/tableresize) on table header and footer. +* [#14762](http://dev.ckeditor.com/ticket/14762): Fixed: Hovering over an empty table (without rows or cells) throws an error when the [Table Resize](http://ckeditor.com/addon/tableresize) plugin is active. +* [#16777](https://dev.ckeditor.com/ticket/16777): [Edge] Fixed: The [Clipboard](http://ckeditor.com/addon/clipboard) plugin does not allow to drop widgets into the editor. +* [#14894](https://dev.ckeditor.com/ticket/14894): [Chrome] Fixed: The editor scrolls to the top after focusing or when a dialog is opened. +* [#14769](https://dev.ckeditor.com/ticket/14769): Fixed: URLs with '-' in host are not detected by the [Auto Link](http://ckeditor.com/addon/autolink) plugin. +* [#16804](https://dev.ckeditor.com/ticket/16804): Fixed: Focus is not on the first menu item when the user opens a context menu or a drop-down list from the editor toolbar. +* [#14407](https://dev.ckeditor.com/ticket/14407): [IE] Fixed: Non-editable widgets can be edited. +* [#16927](https://dev.ckeditor.com/ticket/16927): Fixed: An error thrown if a bundle containing the [Color Button](http://ckeditor.com/addon/colorbutton) plugin is run in ES5 strict mode. Thanks to [Igor Rubinovich](https://github.com/IgorRubinovich)! +* [#16920](http://dev.ckeditor.com/ticket/16920): Fixed: Several plugins not using the [Dialog](http://ckeditor.com/addon/dialog) plugin as a direct dependency. +* [PR#336](https://github.com/ckeditor/ckeditor-dev/pull/336): Fixed: Typo in [`CKEDITOR.getCss`](http://docs.ckeditor.com/#!/api/CKEDITOR-method-getCss) API documentation. Thanks to [knusperpixel](https://github.com/knusperpixel)! +* [#17027](http://dev.ckeditor.com/ticket/17027): Fixed: Command event data should be initialized as an empty object. +* Fixed the behavior of HTML parser when parsing `src`/`srcdoc` attributes of the `