diff --git a/composer.json b/composer.json index d808be07002df7ad05a7d90b7f27f6fc9eacaa21..b08249dbc4898ab77d62c4ce70ec6f0dc6325986 100644 --- a/composer.json +++ b/composer.json @@ -88,7 +88,7 @@ "drupal/crop": "2.0-rc1", "drupal/ctools": "3.0", "drupal/ctools_views": "3.0", - "drupal/devel": "1.2", + "drupal/devel": "2.0", "drupal/draggableviews": "1.0", "drupal/dropzonejs": "2.0-alpha3", "drupal/editor_advanced_link": "1.4", diff --git a/composer.lock b/composer.lock index 67a83c99d6582282d024de6c5605ade0eaad1409..7874c5740d57e6c254969c7ecb3113ac4db7f8b7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "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": "c290884be59436699c4bc44490b1ab04", + "content-hash": "43369c4e3000a8ac8d21e8dce1d982eb", "packages": [ { "name": "alchemy/zippy", @@ -2844,36 +2844,39 @@ }, { "name": "drupal/devel", - "version": "1.2.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://git.drupal.org/project/devel", - "reference": "8.x-1.2" + "reference": "8.x-2.0" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/devel-8.x-1.2.zip", - "reference": "8.x-1.2", - "shasum": "01f3349ef75f6e21fceef24be9d3d6506ca29647" + "url": "https://ftp.drupal.org/files/projects/devel-8.x-2.0.zip", + "reference": "8.x-2.0", + "shasum": "cf5fb816f767f3cac4f2e170ab39e982d5e0698b" }, "require": { - "drupal/core": "~8.0" - }, - "suggest": { - "symfony/var-dumper": "Pretty print complex values better with var-dumper available" + "drupal/core": "~8.0", + "symfony/var-dumper": "~2.7|^3" }, "type": "drupal-module", "extra": { "branch-alias": { - "dev-1.x": "1.x-dev" + "dev-2.x": "2.x-dev" }, "drupal": { - "version": "8.x-1.2", - "datestamp": "1507197844", + "version": "8.x-2.0", + "datestamp": "1548799380", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" } + }, + "drush": { + "services": { + "drush.services.yml": "^9" + } } }, "notification-url": "https://packages.drupal.org/8/downloads", diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index cfb96f43e17d275b9c06b93568f62696c84ad15d..b2529913438565f9940528ac48862ffd22422c15 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -2930,37 +2930,40 @@ }, { "name": "drupal/devel", - "version": "1.2.0", - "version_normalized": "1.2.0.0", + "version": "2.0.0", + "version_normalized": "2.0.0.0", "source": { "type": "git", "url": "https://git.drupal.org/project/devel", - "reference": "8.x-1.2" + "reference": "8.x-2.0" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/devel-8.x-1.2.zip", - "reference": "8.x-1.2", - "shasum": "01f3349ef75f6e21fceef24be9d3d6506ca29647" + "url": "https://ftp.drupal.org/files/projects/devel-8.x-2.0.zip", + "reference": "8.x-2.0", + "shasum": "cf5fb816f767f3cac4f2e170ab39e982d5e0698b" }, "require": { - "drupal/core": "~8.0" - }, - "suggest": { - "symfony/var-dumper": "Pretty print complex values better with var-dumper available" + "drupal/core": "~8.0", + "symfony/var-dumper": "~2.7|^3" }, "type": "drupal-module", "extra": { "branch-alias": { - "dev-1.x": "1.x-dev" + "dev-2.x": "2.x-dev" }, "drupal": { - "version": "8.x-1.2", - "datestamp": "1507197844", + "version": "8.x-2.0", + "datestamp": "1548799380", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" } + }, + "drush": { + "services": { + "drush.services.yml": "^9" + } } }, "installation-source": "dist", diff --git a/web/modules/devel/README.txt b/web/modules/devel/README.txt index 9ac4acf9bf8f8cdcd0bae55b3fd07eaee3b23047..634f226a1992f9d41aeb49d9d8a90208281828b0 100644 --- a/web/modules/devel/README.txt +++ b/web/modules/devel/README.txt @@ -1,8 +1,23 @@ -Devel -========== -Devel module contains helper functions and pages for Drupal developers and inquisitive admins: +README.txt for Devel module +--------------------------- + +CONTENTS OF THIS FILE +--------------------- + + * Introduction + * Requirements + * Included Modules and Features + * Recommended Modules + * Installation + * Configuration + * Maintainers + +INTRODUCTION +------------ + +Devel module contains helper functions and pages for Drupal developers and +inquisitive admins: - - A block for running custom PHP on a page - A block for quickly accessing devel pages - A block for masquerading as other users (useful for testing) - A mail-system class which redirects outbound email to files @@ -13,35 +28,61 @@ Devel module contains helper functions and pages for Drupal developers and inqui This module is safe to use on a production site. Just be sure to only grant 'access development information' permission to developers. -Devel Kint -=================== -Provides a dpr() function, which pretty prints variables. + - For a full description of the module visit: + https://www.drupal.org/project/devel + + - To submit bug reports and feature suggestions, or to track changes visit: + https://www.drupal.org/project/issues/devel + + +REQUIREMENTS +------------ + +This module requires no modules outside of Drupal core. + + +INCLUDED MODULES AND FEATURES +----------------------------- + +Devel Kint - Provides a dpr() function, which pretty prints variables. Useful during development. Also see similar helpers like dpm(), dvm(). -Webprofiler -============== -Adds a debug bar at bottom of all pages with tons of useful information like a query list, -cache hit/miss data, memory profiling, page speed, php info, session info, etc. +Webprofiler - Adds a debug bar at bottom of all pages with tons of useful +information like a query list, cache hit/miss data, memory profiling, page +speed, php info, session info, etc. + +Devel Generate - Bulk creates nodes, users, comment, terms for development. Has +Drush integration. + +Drush Unit Testing - See develDrushTest.php for an example of unit testing of +the Drush integration. This uses Drush's own test framework, based on PHPUnit. +To run the tests, use run-tests-drush.sh. You may pass in any arguments that +are valid for `phpunit`. + + +RECOMMENDED MODULE +------------------ -Devel Generate -================= -Bulk creates nodes, users, comment, terms for development. Has Drush integration. +Devel Generate Extensions - Devel Images Provider allows to configure external +providers for images. -Devel Generate Extensions -========================= -Devel Images Provider [http://drupal.org/project/devel_image_provider] allows to configure external providers for images. + - http://drupal.org/project/devel_image_provider + + +INSTALLATION +------------ + + - Install the Devel module as you would normally install a contributed Drupal + module. Visit https://www.drupal.org/node/1897420 for further information. -Drush Unit Testing -================== -See develDrushTest.php for an example of unit testing of the Drush integration. -This uses Drush's own test framework, based on PHPUnit. To run the tests, use -run-tests-drush.sh. You may pass in any arguments that are valid for `phpunit`. Author/Maintainers -====================== -- Moshe Weitzman <weitzman at tejasa DOT com> http://www.acquia.com -- Hans Salvisberg <drupal at salvisberg DOT com> -- Pedro Cambra https://drupal.org/user/122101/contact http://www.ymbra.com/ -- Juan Pablo Novillo https://www.drupal.org/u/juampynr -- lussoluca https://www.drupal.org/u/lussoluca -- willzyx https://www.drupal.org/u/willzyx +------------------ + + - Moshe Weitzman (moshe weitzman) - https://www.drupal.org/u/moshe-weitzman + - Hans Salvisberg (salvis) - https://www.drupal.org/u/salvis + - Pedro Cambra https://drupal.org/user/122101/contact http://www.ymbra.com/ + - Juan Pablo Novillo https://www.drupal.org/u/juampynr + - lussoluca https://www.drupal.org/u/lussoluca + - willzyx https://www.drupal.org/u/willzyx + diff --git a/web/modules/devel/composer.json b/web/modules/devel/composer.json index 6faff22e5033f833ea7664b97aaa357eb1682bf3..3c27d59eb66bdc0d280825c897d1297d3579c59d 100644 --- a/web/modules/devel/composer.json +++ b/web/modules/devel/composer.json @@ -38,8 +38,15 @@ }, "license": "GPL-2.0+", "minimum-stability": "dev", - "require": {}, - "suggest": { - "symfony/var-dumper": "Pretty print complex values better with var-dumper available" + "require": { + "symfony/var-dumper": "~2.7|^3" + }, + "suggest": {}, + "extra": { + "drush": { + "services": { + "drush.services.yml": "^9" + } + } } } diff --git a/web/modules/devel/config/install/devel.toolbar.settings.yml b/web/modules/devel/config/install/devel.toolbar.settings.yml index a9a40374e807dc824606bbdd829a028d4e1caabc..b12c5bdc926b243bdcc0bb5762482c3268dd4ca2 100644 --- a/web/modules/devel/config/install/devel.toolbar.settings.yml +++ b/web/modules/devel/config/install/devel.toolbar.settings.yml @@ -2,7 +2,6 @@ toolbar_items: - 'devel.admin_settings_link' - 'devel.cache_clear' - 'devel.container_info.service' - - 'devel.execute_php' - 'devel.menu_rebuild' - 'devel.reinstall' - 'devel.route_info' diff --git a/web/modules/devel/devel.info.yml b/web/modules/devel/devel.info.yml index fa7fbf8946a71f71ee9aa5bd38b0b3bf5f6e4601..a1dd9b2ca82aebe8c18b2aa01510e855604e9004 100644 --- a/web/modules/devel/devel.info.yml +++ b/web/modules/devel/devel.info.yml @@ -7,8 +7,8 @@ configure: devel.admin_settings tags: - developer -# Information added by Drupal.org packaging script on 2017-10-05 -version: '8.x-1.2' +# Information added by Drupal.org packaging script on 2019-01-29 +version: '8.x-2.0' core: '8.x' project: 'devel' -datestamp: 1507197848 +datestamp: 1548799386 diff --git a/web/modules/devel/devel.links.menu.yml b/web/modules/devel/devel.links.menu.yml index 2a90f86a10bb9a5dd1005105d9f1091b6b37d395..4becee6f1d73cd97ae6bf7be8a20c1814d679769 100644 --- a/web/modules/devel/devel.links.menu.yml +++ b/web/modules/devel/devel.links.menu.yml @@ -46,10 +46,6 @@ devel.phpinfo: title: 'PHPinfo()' route_name: system.php menu_name: devel -devel.execute_php: - title: 'Execute PHP' - route_name: devel.execute_php - menu_name: devel devel.session: title: 'View Session' route_name: devel.session diff --git a/web/modules/devel/devel.module b/web/modules/devel/devel.module index 08b93e22f36587f5e53004f50e37745f8ca11981..6364d2ba77bf63b50274a1ccfc1f4a080d46d435 100644 --- a/web/modules/devel/devel.module +++ b/web/modules/devel/devel.module @@ -324,6 +324,9 @@ function dcp() { /** * Wrapper for DevelDumperManager::debug(). * + * @deprecated since Drupal 8.6.0 because symfony now has dd() as a function. + * Use the ddm() function instead. + * * @see \Drupal\devel\DevelDumperManager::debug() */ function dd($data, $label = NULL) { @@ -331,6 +334,17 @@ function dd($data, $label = NULL) { } } +if (!function_exists('ddm')) { + /** + * Wrapper for DevelDumperManager::debug() to replace previous dd function. + * + * @see \Drupal\devel\DevelDumperManager::debug() + */ + function ddm($data, $label = NULL) { + return \Drupal::service('devel.dumper')->debug($data, $label, 'default'); + } +} + /** * Wrapper for DevelDumperManager::message(). * diff --git a/web/modules/devel/devel.permissions.yml b/web/modules/devel/devel.permissions.yml index 256919de9d27498d396a3990666bfddf6e31ed04..e32ad8c110d2e62465740f022fdeccdc471e8fec 100644 --- a/web/modules/devel/devel.permissions.yml +++ b/web/modules/devel/devel.permissions.yml @@ -3,11 +3,6 @@ access devel information: title: 'Access developer information' restrict access: TRUE -execute php code: - title: 'Execute PHP code' - description: 'Run arbitrary PHP from a block.' - restrict access: TRUE - switch users: title: 'Switch users' description: 'Become any user on the site with just a click.' diff --git a/web/modules/devel/devel.routing.yml b/web/modules/devel/devel.routing.yml index 8d20e90d1bb963eb2d169d4b2b5a24b8befe5259..e6c6804d8940e4ecfa5ab9e04891730a79e316ea 100644 --- a/web/modules/devel/devel.routing.yml +++ b/web/modules/devel/devel.routing.yml @@ -96,16 +96,6 @@ devel.field_info_page: requirements: _permission: 'access devel information' -devel.execute_php: - path: '/devel/php' - defaults: - _form: '\Drupal\devel\Form\ExecutePHP' - _title: 'Execute PHP code' - options: - _admin_route: TRUE - requirements: - _permission: 'execute php code' - devel.session: path: '/devel/session' defaults: diff --git a/web/modules/devel/devel_generate/README.txt b/web/modules/devel/devel_generate/README.txt index 2d73ba9be3567b03db5ba0290c67f92962249ba1..1f83389636270dfca8b1dfedbef53281d4b998b9 100644 --- a/web/modules/devel/devel_generate/README.txt +++ b/web/modules/devel/devel_generate/README.txt @@ -38,7 +38,7 @@ will want to directly inherit from Drupal\devel_generate\DevelGenerateBase. To give support for a new field type the field type base class should properly implements \Drupal\Core\Field\FieldItemInterface::generateSampleValue(). -Devel generate automatically use the values returned by this method during the +Devel Generate automatically uses the values returned by this method during the generate process for generate placeholder field values. For more information see: https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Field%21FieldItemInterface.php/function/FieldItemInterface::generateSampleValue diff --git a/web/modules/devel/devel_generate/composer.json b/web/modules/devel/devel_generate/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..624589aad6791ba69b50c6e03ca92530e36e34bc --- /dev/null +++ b/web/modules/devel/devel_generate/composer.json @@ -0,0 +1,52 @@ +{ + "name": "drupal/devel_generate", + "description": "Generate dummy users, nodes, menus, taxonomy terms...", + "type": "drupal-module", + "homepage": "http://drupal.org/project/devel", + "authors": [ + { + "name": "Moshe Weitzman", + "email": "weitzman@tejasa.com", + "homepage": "https://github.com/weitzman", + "role": "Maintainer" + }, + { + "name": "Hans Salvisberg", + "email": "drupal@salvisberg.com", + "homepage": "https://www.drupal.org/u/salvis", + "role": "Maintainer" + }, + { + "name": "Luca Lusso", + "homepage": "https://www.drupal.org/u/lussoluca", + "role": "Maintainer" + }, + { + "name": "Marco (willzyx)", + "homepage": "https://www.drupal.org/u/willzyx", + "role": "Maintainer" + }, + { + "name": "See contributors", + "homepage": "https://www.drupal.org/node/3236/committers" + } + ], + "support": { + "issues": "http://drupal.org/project/devel", + "irc": "irc://irc.freenode.org/drupal-contribute", + "source": "http://cgit.drupalcode.org/devel" + }, + "license": "GPL-2.0+", + "minimum-stability": "dev", + "require": {}, + "suggest": { + "drupal/realistic_dummy_content": "Generate realistic demo content with Devel's devel_generate module." + }, + "extra": { + "drush": { + "services": { + "drush.services.yml": "^9" + } + } + } +} diff --git a/web/modules/devel/devel_generate/devel_generate.info.yml b/web/modules/devel/devel_generate/devel_generate.info.yml index 890261d985b50740aed20635c9572e3b0c314986..f90b08c8045f8be663023ed67b3c5c4880e3ef1d 100644 --- a/web/modules/devel/devel_generate/devel_generate.info.yml +++ b/web/modules/devel/devel_generate/devel_generate.info.yml @@ -1,13 +1,13 @@ type: module -name: 'Devel generate' +name: 'Devel Generate' description: 'Generate dummy users, nodes, menus, taxonomy terms...' package: Development # core: 8.x tags: - developer -# Information added by Drupal.org packaging script on 2017-10-05 -version: '8.x-1.2' +# Information added by Drupal.org packaging script on 2019-01-29 +version: '8.x-2.0' core: '8.x' project: 'devel' -datestamp: 1507197848 +datestamp: 1548799386 diff --git a/web/modules/devel/devel_generate/devel_generate.module b/web/modules/devel/devel_generate/devel_generate.module index 530a4fbc8c6f11ab9d469fbf66caabdc40ccfc0f..3affb925b53b5e5c475511d139102462b4f31034 100644 --- a/web/modules/devel/devel_generate/devel_generate.module +++ b/web/modules/devel/devel_generate/devel_generate.module @@ -53,7 +53,7 @@ function devel_generate_entity_insert(EntityInterface $entity) { 'source' => '/node/' . $entity->id(), 'alias' => '/node-' . $entity->id() . '-' . $entity->bundle(), ); - \Drupal::service('path.alias_storage')->save($path['source'], $path['alias']); + \Drupal::service('path.alias_storage')->save($path['source'], $path['alias'], $entity->language()->getId()); } // Add node statistics. diff --git a/web/modules/devel/devel_generate/src/Form/DevelGenerateForm.php b/web/modules/devel/devel_generate/src/Form/DevelGenerateForm.php index 63c708b4978ffe3d54ae6a13f8ab8f882e8b35c2..72366b8877134a0c49589f3271049cd1e2393b20 100644 --- a/web/modules/devel/devel_generate/src/Form/DevelGenerateForm.php +++ b/web/modules/devel/devel_generate/src/Form/DevelGenerateForm.php @@ -77,12 +77,12 @@ public function buildForm(array $form, FormStateInterface $form_state) { $plugin_id = $this->getPluginIdFromRequest(); $instance = $this->getPluginInstance($plugin_id); $form = $instance->settingsForm($form, $form_state); - $form['actions'] = array('#type' => 'actions'); - $form['actions']['submit'] = array( + $form['actions'] = ['#type' => 'actions']; + $form['actions']['submit'] = [ '#type' => 'submit', '#value' => $this->t('Generate'), '#button_type' => 'primary', - ); + ]; return $form; } diff --git a/web/modules/devel/devel_generate/tests/modules/devel_generate_example/devel_generate_example.info.yml b/web/modules/devel/devel_generate/tests/modules/devel_generate_example/devel_generate_example.info.yml index b4acf0a6d1ddd24e1755f1e5fa7fdb1463a931c6..4489d46a076d4832710a1bed8500c2b7653a3cd3 100644 --- a/web/modules/devel/devel_generate/tests/modules/devel_generate_example/devel_generate_example.info.yml +++ b/web/modules/devel/devel_generate/tests/modules/devel_generate_example/devel_generate_example.info.yml @@ -1,14 +1,14 @@ -name: 'Devel generate Example' +name: 'Devel Generate Example' type: module -description: 'Create an example of DevelGenerate plugin type for testing purposing.' +description: 'Create an example of a Devel Generate plugin type for testing purposes.' package: Development # core: 8.x configure: admin/config/development/generate tags: - developer -# Information added by Drupal.org packaging script on 2017-10-05 -version: '8.x-1.2' +# Information added by Drupal.org packaging script on 2019-01-29 +version: '8.x-2.0' core: '8.x' project: 'devel' -datestamp: 1507197848 +datestamp: 1548799386 diff --git a/web/modules/devel/devel_generate/tests/modules/devel_generate_example/devel_generate_example.module b/web/modules/devel/devel_generate/tests/modules/devel_generate_example/devel_generate_example.module deleted file mode 100644 index b3d9bbc7f3711e882119cd6b3af051245d859d04..0000000000000000000000000000000000000000 --- a/web/modules/devel/devel_generate/tests/modules/devel_generate_example/devel_generate_example.module +++ /dev/null @@ -1 +0,0 @@ -<?php diff --git a/web/modules/devel/devel_generate/tests/modules/devel_generate_example/src/Plugin/DevelGenerate/ExampleDevelGenerate.php b/web/modules/devel/devel_generate/tests/modules/devel_generate_example/src/Plugin/DevelGenerate/ExampleDevelGenerate.php index c80817a13eb5402de8ed68c78ff63872d54be377..b322fb3a8a0f883c408d24b3e24a97d9f40ca65f 100644 --- a/web/modules/devel/devel_generate/tests/modules/devel_generate_example/src/Plugin/DevelGenerate/ExampleDevelGenerate.php +++ b/web/modules/devel/devel_generate/tests/modules/devel_generate_example/src/Plugin/DevelGenerate/ExampleDevelGenerate.php @@ -70,7 +70,7 @@ protected function generateElements(array $values) { } // Populate all fields with sample values. - $this->populateFields($node); + $this->populateFields($account); $account->save(); diff --git a/web/modules/devel/drush/develDrushTest.php b/web/modules/devel/drush/develDrushTest.php deleted file mode 100644 index 54a5cf936e0129de494b4c2e9c81738714aa971c..0000000000000000000000000000000000000000 --- a/web/modules/devel/drush/develDrushTest.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -namespace Unish; - -if (class_exists('Unish\CommandUnishTestCase')) { - - /** - * PHPUnit Tests for devel. This uses Drush's own test framework, based on PHPUnit. - * To run the tests, use run-tests-drush.sh from the devel directory. - */ - class develCase extends CommandUnishTestCase { - - public function testFnCommands() { - // Specify '8' just in case user has not set UNISH_DRUPAL_MAJOR_VERSION env variable. - $sites = $this->setUpDrupal(1, TRUE, '8'); - - // Symlink this module into the Site Under test so it can be enabled. - $target = dirname(__DIR__); - \symlink($target, $this->webroot() . '/modules/devel'); - $options = array( - 'root' => $this->webroot(), - 'uri' => key($sites), - ); - $this->drush('pm-enable', array('devel'), $options + array('skip' => NULL, 'yes' => NULL)); - - $this->drush('fn-view', array('drush_main'), $options); - $output = $this->getOutput(); - $this->assertContains('@return', $output, 'Output contain @return Doxygen.'); - $this->assertContains('function drush_main() {', $output, 'Output contains function drush_main() declaration'); - - // $this->drush('fn-hook', array('cron'), $options); - // $output = $this->getOutputAsList(); - // $expected = array('dblog', 'file', 'field', 'system', 'update'); - // $this->assertSame($expected, $output); - } - } - -} diff --git a/web/modules/devel/kint/kint.info.yml b/web/modules/devel/kint/kint.info.yml index 0b20df64b7d0dcef45f82f5bd35c1911e8ae029b..5a9af5b29ec481fdbb8a57e3741f83a4669eb726 100644 --- a/web/modules/devel/kint/kint.info.yml +++ b/web/modules/devel/kint/kint.info.yml @@ -6,8 +6,8 @@ package: Development tags: - developer -# Information added by Drupal.org packaging script on 2017-10-05 -version: '8.x-1.2' +# Information added by Drupal.org packaging script on 2019-01-29 +version: '8.x-2.0' core: '8.x' project: 'devel' -datestamp: 1507197848 +datestamp: 1548799386 diff --git a/web/modules/devel/run-tests-drush.sh b/web/modules/devel/run-tests-drush.sh deleted file mode 100644 index 4dcd4fb4b7087b4e5313647373d4380b76dc4adf..0000000000000000000000000000000000000000 --- a/web/modules/devel/run-tests-drush.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env sh - -# This script will run phpunit-based test classes using Drush's -# test framework. First, the Drush executable is located, and -# then phpunit is invoked, pointing to Drush's phpunit.xml as -# the configuration. -# -# Any parameters that may be passed to `phpunit` may also be used -# with this script. - -DRUSH_PATH="`which drush`" -DRUSH_DIRNAME="`dirname -- "$DRUSH_PATH"`" -# The following line is needed is you use a `drush` that differs from `which drush` -# export UNISH_DRUSH=$DRUSH_PATH - -if [ $# = 0 ] ; then - phpunit --configuration="$DRUSH_DIRNAME/tests" drush -else - # Pass along any arguments. - phpunit --configuration="$DRUSH_DIRNAME/tests" $@ -fi diff --git a/web/modules/devel/src/DevelDumperManager.php b/web/modules/devel/src/DevelDumperManager.php index b88957e5ab57e4b3c61baac648ace5ad63453c66..d97ab6450fe093f0151406953008352ba7ee8ae2 100644 --- a/web/modules/devel/src/DevelDumperManager.php +++ b/web/modules/devel/src/DevelDumperManager.php @@ -4,12 +4,15 @@ use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Session\AccountProxyInterface; +use Drupal\Core\StringTranslation\StringTranslationTrait; /** - * Class DevelDumperManager + * Class DevelDumperManager. */ class DevelDumperManager implements DevelDumperManagerInterface { + use StringTranslationTrait; + /** * The devel config. * @@ -100,7 +103,7 @@ public function debug($input, $name = NULL, $plugin_id = NULL) { // The temp directory does vary across multiple simpletest instances. $file = file_directory_temp() . '/drupal_debug.txt'; if (file_put_contents($file, $output, FILE_APPEND) === FALSE && $this->hasAccessToDevelInformation()) { - drupal_set_message(t('Devel was unable to write to %file.', ['%file' => $file]), 'error'); + drupal_set_message($this->t('Devel was unable to write to %file.', ['%file' => $file]), 'error'); return FALSE; } } diff --git a/web/modules/devel/src/EventSubscriber/ThemeInfoRebuildSubscriber.php b/web/modules/devel/src/EventSubscriber/ThemeInfoRebuildSubscriber.php index 596e709b4a14e8b245b46e4e4495a7695f9aee51..32743f597a494f4474e8ca966c693c1a1372e142 100644 --- a/web/modules/devel/src/EventSubscriber/ThemeInfoRebuildSubscriber.php +++ b/web/modules/devel/src/EventSubscriber/ThemeInfoRebuildSubscriber.php @@ -96,7 +96,7 @@ public function rebuildThemeInfo(GetResponseEvent $event) { protected function triggerWarningIfNeeded(Request $request) { if ($this->account && $this->account->hasPermission('access devel information')) { $session = $request->getSession(); - if (!$session->has($this->notificationFlag)) { + if ($session && !$session->has($this->notificationFlag)) { $session->set($this->notificationFlag, TRUE); $message = $this->t('The theme information is being rebuilt on every request. Remember to <a href=":url">turn off</a> this feature on production websites.', [':url' => Url::fromRoute('devel.admin_settings')->toString()]); drupal_set_message($message, 'warning', TRUE); diff --git a/web/modules/devel/src/Form/ConfigEditor.php b/web/modules/devel/src/Form/ConfigEditor.php index e4fe88cc2f5085510ec41c2504cbf017d93a3236..231298aac7da8824bf6152272361fbaaaca054f3 100644 --- a/web/modules/devel/src/Form/ConfigEditor.php +++ b/web/modules/devel/src/Form/ConfigEditor.php @@ -69,11 +69,11 @@ public function buildForm(array $form, FormStateInterface $form_state, $config_n '#required' => TRUE, ); - $form['actions'] = array('#type' => 'actions'); - $form['actions']['submit'] = array( + $form['actions'] = ['#type' => 'actions']; + $form['actions']['submit'] = [ '#type' => 'submit', '#value' => $this->t('Save'), - ); + ]; $form['actions']['cancel'] = array( '#type' => 'link', '#title' => $this->t('Cancel'), diff --git a/web/modules/devel/src/Form/ConfigsList.php b/web/modules/devel/src/Form/ConfigsList.php index f0993e77baaadcb9e16927a28e612eedfc9ea018..0c01ca4720b55d81febb3ca70a16fd5e1e8ba4a2 100644 --- a/web/modules/devel/src/Form/ConfigsList.php +++ b/web/modules/devel/src/Form/ConfigsList.php @@ -35,10 +35,11 @@ public function buildForm(array $form, FormStateInterface $form_state, $filter = '#title_display' => 'invisible', '#default_value' => $filter, ); - $form['filter']['show'] = array( + $form['filter']['actions'] = ['#type' => 'actions']; + $form['filter']['actions']['show'] = [ '#type' => 'submit', '#value' => $this->t('Filter'), - ); + ]; $header = array( 'name' => array('data' => $this->t('Name')), diff --git a/web/modules/devel/src/Form/DevelReinstall.php b/web/modules/devel/src/Form/DevelReinstall.php index 109e40b75fec2684659f6abc4f9f2e46f05fe664..ee85c36ce77f0b78087492ca313bd5b3380fccfb 100644 --- a/web/modules/devel/src/Form/DevelReinstall.php +++ b/web/modules/devel/src/Form/DevelReinstall.php @@ -116,11 +116,11 @@ public function buildForm(array $form, FormStateInterface $form_state) { $form['#attached']['library'][] = 'system/drupal.system.modules'; - $form['actions'] = array('#type' => 'actions'); - $form['actions']['submit'] = array( + $form['actions'] = ['#type' => 'actions']; + $form['actions']['submit'] = [ '#type' => 'submit', '#value' => $this->t('Reinstall'), - ); + ]; return $form; } diff --git a/web/modules/devel/src/Form/ExecutePHP.php b/web/modules/devel/src/Form/ExecutePHP.php deleted file mode 100644 index cd66bf4807d11c9260532df13435b2f06d541fb9..0000000000000000000000000000000000000000 --- a/web/modules/devel/src/Form/ExecutePHP.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php - -namespace Drupal\devel\Form; - -use Drupal\Core\Form\FormBase; -use Drupal\Core\Form\FormStateInterface; - -/** - * Defines a form that allows privileged users to execute arbitrary PHP code. - */ -class ExecutePHP extends FormBase { - - /** - * {@inheritdoc} - */ - public function getFormId() { - return 'devel_execute_form'; - } - - /** - * {@inheritdoc} - */ - public function buildForm(array $form, FormStateInterface $form_state) { - $form = array( - '#title' => $this->t('Execute PHP Code'), - '#description' => $this->t('Execute some PHP code'), - ); - $form['execute']['code'] = array( - '#type' => 'textarea', - '#title' => t('PHP code to execute'), - '#description' => t('Enter some code. Do not use <code><?php ?></code> tags.'), - '#default_value' => (isset($_SESSION['devel_execute_code']) ? $_SESSION['devel_execute_code'] : ''), - '#rows' => 20, - ); - $form['execute']['op'] = array('#type' => 'submit', '#value' => t('Execute')); - $form['#redirect'] = FALSE; - if (isset($_SESSION['devel_execute_code'])) { - unset($_SESSION['devel_execute_code']); - } - - return $form; - } - - /** - * {@inheritdoc} - */ - public function submitForm(array &$form, FormStateInterface $form_state) { - ob_start(); - $code = $form_state->getValue('code'); - print eval($code); - $_SESSION['devel_execute_code'] = $code; - dpm(ob_get_clean()); - } - -} diff --git a/web/modules/devel/src/Form/SettingsForm.php b/web/modules/devel/src/Form/SettingsForm.php index 9321d796e33318db05ed6d39b086d90fe5a41066..71367be250be4cab03f1bf5932e1ea68e3452df7 100644 --- a/web/modules/devel/src/Form/SettingsForm.php +++ b/web/modules/devel/src/Form/SettingsForm.php @@ -66,7 +66,7 @@ public function buildForm(array $form, FormStateInterface $form_state, Request $ $form['page_alter'] = array('#type' => 'checkbox', '#title' => t('Display $page array'), '#default_value' => $devel_config->get('page_alter'), - '#description' => t('Display $page array from <a href="http://api.drupal.org/api/function/hook_page_alter/7">hook_page_alter()</a> in the messages area of each page.'), + '#description' => t('Display $page array from <a href="https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Render%21theme.api.php/function/hook_page_attachments_alter/8">hook_page_attachments_alter()</a> in the messages area of each page.'), ); $form['raw_names'] = array('#type' => 'checkbox', '#title' => t('Display machine names of permissions and modules'), diff --git a/web/modules/devel/src/Form/SystemStateEdit.php b/web/modules/devel/src/Form/SystemStateEdit.php index d4ba0eda48d1a3683bee7385acaef92ad14a205c..e83c26091f8ceedbcd10a3fb658cc33ac6dff4bb 100644 --- a/web/modules/devel/src/Form/SystemStateEdit.php +++ b/web/modules/devel/src/Form/SystemStateEdit.php @@ -108,17 +108,17 @@ public function buildForm(array $form, FormStateInterface $form_state, $state_na '#rows' => 15, ); - $form['actions'] = array('#type' => 'actions'); - $form['actions']['submit'] = array( + $form['actions'] = ['#type' => 'actions']; + $form['actions']['submit'] = [ '#type' => 'submit', '#value' => $this->t('Save'), '#disabled' => $disabled, - ); - $form['actions']['cancel'] = array( + ]; + $form['actions']['cancel'] = [ '#type' => 'link', '#title' => $this->t('Cancel'), '#url' => Url::fromRoute('devel.state_system_page') - ); + ]; return $form; } diff --git a/web/modules/devel/src/Plugin/Block/DevelExecutePHP.php b/web/modules/devel/src/Plugin/Block/DevelExecutePHP.php deleted file mode 100644 index 23076bfa0c522d97a041b7cb064d5721ad63262e..0000000000000000000000000000000000000000 --- a/web/modules/devel/src/Plugin/Block/DevelExecutePHP.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php - -namespace Drupal\devel\Plugin\Block; - -use Drupal\Core\Access\AccessResult; -use Drupal\Core\Block\BlockBase; -use Drupal\Core\Session\AccountInterface; - -/** - * Provides a block for executing PHP code. - * - * @Block( - * id = "devel_execute_php", - * admin_label = @Translation("Execute PHP") - * ) - */ -class DevelExecutePHP extends BlockBase { - - /** - * {@inheritdoc} - */ - protected function blockAccess(AccountInterface $account) { - return AccessResult::allowedIfHasPermission($account, 'execute php code'); - } - - /** - * {@inheritdoc} - */ - public function build() { - return \Drupal::formBuilder()->getForm('Drupal\devel\Form\ExecutePHP'); - } - -} diff --git a/web/modules/devel/tests/modules/devel_dumper_test/devel_dumper_test.info.yml b/web/modules/devel/tests/modules/devel_dumper_test/devel_dumper_test.info.yml index 265aeb347f0c29f407dafa8bed8252dd3e9882fb..67a4345b507b64065f0c8c3679e35b29c4087b68 100644 --- a/web/modules/devel/tests/modules/devel_dumper_test/devel_dumper_test.info.yml +++ b/web/modules/devel/tests/modules/devel_dumper_test/devel_dumper_test.info.yml @@ -5,8 +5,8 @@ package: Testing # version: VERSION # core: 8.x -# Information added by Drupal.org packaging script on 2017-10-05 -version: '8.x-1.2' +# Information added by Drupal.org packaging script on 2019-01-29 +version: '8.x-2.0' core: '8.x' project: 'devel' -datestamp: 1507197848 +datestamp: 1548799386 diff --git a/web/modules/devel/tests/modules/devel_entity_test/devel_entity_test.info.yml b/web/modules/devel/tests/modules/devel_entity_test/devel_entity_test.info.yml index 4b01554cfb28c6a116fc20efb11ce429ab831453..bf935fa8f1036b43f0fb6ae586f4edf9ffec5438 100644 --- a/web/modules/devel/tests/modules/devel_entity_test/devel_entity_test.info.yml +++ b/web/modules/devel/tests/modules/devel_entity_test/devel_entity_test.info.yml @@ -5,12 +5,12 @@ package: Testing # version: VERSION # core: 8.x dependencies: - - field - - text - - entity_test + - drupal:field + - drupal:text + - drupal:entity_test -# Information added by Drupal.org packaging script on 2017-10-05 -version: '8.x-1.2' +# Information added by Drupal.org packaging script on 2019-01-29 +version: '8.x-2.0' core: '8.x' project: 'devel' -datestamp: 1507197848 +datestamp: 1548799386 diff --git a/web/modules/devel/tests/modules/devel_test/devel_test.info.yml b/web/modules/devel/tests/modules/devel_test/devel_test.info.yml index 191c8255571a48d22c67f5a0dcbddc28a05ef66b..be642aacd79a06466f1dd340437f6ab7523ce766 100644 --- a/web/modules/devel/tests/modules/devel_test/devel_test.info.yml +++ b/web/modules/devel/tests/modules/devel_test/devel_test.info.yml @@ -5,8 +5,8 @@ package: Testing # version: VERSION # core: 8.x -# Information added by Drupal.org packaging script on 2017-10-05 -version: '8.x-1.2' +# Information added by Drupal.org packaging script on 2019-01-29 +version: '8.x-2.0' core: '8.x' project: 'devel' -datestamp: 1507197848 +datestamp: 1548799386 diff --git a/web/modules/devel/tests/src/Functional/DevelDumperTest.php b/web/modules/devel/tests/src/Functional/DevelDumperTest.php index a4ef9b48fc773ece2c348ae4d2a2139cd9cbd583..d46a95c52019d248abfb590d4e45871e7d8eaf8f 100644 --- a/web/modules/devel/tests/src/Functional/DevelDumperTest.php +++ b/web/modules/devel/tests/src/Functional/DevelDumperTest.php @@ -50,7 +50,7 @@ public function testDumpersConfiguration() { 'chromephp', 'var_dumper', ]; - $available_dumpers = ['default', 'drupal_variable']; + $available_dumpers = ['default', 'drupal_variable', 'var_dumper']; foreach ($dumpers as $dumper) { $this->assertFieldByXPath('//input[@type="radio" and @name="dumper"]', $dumper); diff --git a/web/modules/devel/tests/src/Functional/DevelToolbarTest.php b/web/modules/devel/tests/src/Functional/DevelToolbarTest.php index 26293f896eb3cabde0edc37478564bfaa3f92c67..e348bc5577970effad714ddc93c34a35c4098274 100644 --- a/web/modules/devel/tests/src/Functional/DevelToolbarTest.php +++ b/web/modules/devel/tests/src/Functional/DevelToolbarTest.php @@ -40,7 +40,6 @@ class DevelToolbarTest extends BrowserTestBase { 'devel.cache_clear', 'devel.container_info.service', 'devel.admin_settings_link', - 'devel.execute_php', 'devel.menu_rebuild', 'devel.reinstall', 'devel.route_info', @@ -59,7 +58,6 @@ public function setUp() { $this->develUser = $this->drupalCreateUser([ 'administer site configuration', 'access devel information', - 'execute php code', 'access toolbar', ]); $this->toolbarUser = $this->drupalCreateUser([ diff --git a/web/modules/devel/tests/src/Kernel/DevelQueryDebugTest.php b/web/modules/devel/tests/src/Kernel/DevelQueryDebugTest.php index 3f129258a515f7fe31b4334ff3704e15b394d44f..8e83fbc35722b52ad76ae0af686b29918a29f797 100644 --- a/web/modules/devel/tests/src/Kernel/DevelQueryDebugTest.php +++ b/web/modules/devel/tests/src/Kernel/DevelQueryDebugTest.php @@ -69,7 +69,7 @@ public function testSelectQueryDebugTag() { // permissions. We expect only one status message containing the SQL for // the debugged query. \Drupal::currentUser()->setAccount($this->develUser); - $expected_message = "SELECT u.uid AS uid\nFROM \n{users} u"; + $expected_message = "SELECT u.uid AS uid\nFROM\n{users} u"; $query = \Drupal::database()->select('users', 'u'); $query->fields('u', ['uid']); @@ -102,7 +102,7 @@ public function testEntityQueryDebugTag() { // permissions. We expect only one status message containing the SQL for // the debugged entity query. \Drupal::currentUser()->setAccount($this->develUser); - $expected_message = "SELECT base_table.uid AS uid, base_table.uid AS base_table_uid\nFROM \n{users} base_table"; + $expected_message = "SELECT base_table.uid AS uid, base_table.uid AS base_table_uid\nFROM\n{users} base_table"; $query = \Drupal::entityQuery('user'); $query->addTag('debug'); diff --git a/web/modules/devel/tests/src/Kernel/DevelTwigExtensionTest.php b/web/modules/devel/tests/src/Kernel/DevelTwigExtensionTest.php index 3d22d13c1cada53f482410fc217521a0f63d97ac..349ab09fcde86169e3a611896b767063579cd659 100644 --- a/web/modules/devel/tests/src/Kernel/DevelTwigExtensionTest.php +++ b/web/modules/devel/tests/src/Kernel/DevelTwigExtensionTest.php @@ -70,7 +70,7 @@ public function register(ContainerBuilder $container) { */ public function testTwigExtensionLoaded() { $twig_service = \Drupal::service('twig'); - $extension = $twig_service->getExtension('devel_debug'); + $extension = $twig_service->getExtension(Debug::class); $this->assertEquals(get_class($extension), Debug::class, 'Debug Extension loaded successfully.'); } diff --git a/web/modules/devel/tests/src/Unish/DevelDrushTest.php b/web/modules/devel/tests/src/Unish/DevelDrushTest.php new file mode 100644 index 0000000000000000000000000000000000000000..42981445c164f145e70933c85c66e8bc987f785a --- /dev/null +++ b/web/modules/devel/tests/src/Unish/DevelDrushTest.php @@ -0,0 +1,31 @@ +<?php + +namespace Drupal\Tests\devel\Unish; + +use Unish\CommandUnishTestCase; + +/** + * @group devel + * @group commands + */ +class DevelDrushTest extends CommandUnishTestCase { + + /** + * {@inheritdoc} + */ + protected function setUp() { + $this->setUpDrupal(1, true); + $this->drush('pm:enable', ['devel']); + } + + /** + * Test devel:services command. + */ + public function testServices() { + $this->drush('devel:services'); + $output = $this->getOutput(); + $this->assertContains('account_switcher', $output); + } + +} + diff --git a/web/modules/devel/tests/src/Unish/README.md b/web/modules/devel/tests/src/Unish/README.md new file mode 100644 index 0000000000000000000000000000000000000000..debe184f11cb37f6e91322e2ad87f074eabb0305 --- /dev/null +++ b/web/modules/devel/tests/src/Unish/README.md @@ -0,0 +1,6 @@ +Running Unish Tests +=================== + +Follow instructions provided by [Drush test README.md](https://github.com/drush-ops/drush/blob/master/tests/README.md) in order to test Unish test cases provided by contrib modules. + +See: https://github.com/drush-ops/drush/blob/master/tests/README.md \ No newline at end of file diff --git a/web/modules/devel/webprofiler/src/Controller/ToolbarController.php b/web/modules/devel/webprofiler/src/Controller/ToolbarController.php index de0e240e5d2cc4500bd46322eb1032f694a877df..b79a18278709481e6cb0e39aa82f780e7d0b0ca9 100644 --- a/web/modules/devel/webprofiler/src/Controller/ToolbarController.php +++ b/web/modules/devel/webprofiler/src/Controller/ToolbarController.php @@ -62,7 +62,9 @@ public function __construct(Profiler $profiler, TemplateManager $templateManager * * @param Profile $profile * - * @return array + * @return \Symfony\Component\HttpFoundation\Response + * + * @throws \Exception */ public function toolbarAction(Profile $profile) { $this->profiler->disable(); diff --git a/web/modules/devel/webprofiler/src/DataCollector/DatabaseDataCollector.php b/web/modules/devel/webprofiler/src/DataCollector/DatabaseDataCollector.php index 2c766a4150562b473dde34c6eef08e3b237a511e..ddfbab3c0d768c5d2c3981fbdb2b9e6534e28edc 100644 --- a/web/modules/devel/webprofiler/src/DataCollector/DatabaseDataCollector.php +++ b/web/modules/devel/webprofiler/src/DataCollector/DatabaseDataCollector.php @@ -43,8 +43,16 @@ public function __construct(Connection $database, ConfigFactoryInterface $config public function collect(Request $request, Response $response, \Exception $exception = NULL) { $connections = []; foreach (Database::getAllConnectionInfo() as $key => $info) { - $database = Database::getConnection('default', $key); - $connections[$key] = $database->getLogger()->get('webprofiler'); + try { + $database = Database::getConnection('default', $key); + + if ($database->getLogger()) { + $connections[$key] = $database->getLogger()->get('webprofiler'); + } + } catch(\Exception $e) { + // There was some error during database connection, maybe a stale + // configuration in settings.php or wrong values used for a migration. + } } $this->data['connections'] = array_keys($connections); diff --git a/web/modules/devel/webprofiler/src/DataCollector/DrupalDataCollectorTrait.php b/web/modules/devel/webprofiler/src/DataCollector/DrupalDataCollectorTrait.php index 98a3faf462b8a103a24b8695dcb4e4b65ff07b68..8fdede4f96e6cf9196d0a06be81ea91412637bac 100644 --- a/web/modules/devel/webprofiler/src/DataCollector/DrupalDataCollectorTrait.php +++ b/web/modules/devel/webprofiler/src/DataCollector/DrupalDataCollectorTrait.php @@ -7,6 +7,13 @@ */ trait DrupalDataCollectorTrait { + /** + * {@inheritdoc} + */ + public function reset() { + $this->data = array(); + } + /** * {@inheritdoc} */ @@ -47,8 +54,6 @@ public function getData() { * @param $method * * @return array - * - * @throws \ReflectionException */ public function getMethodData($class, $method) { $class = is_object($class) ? get_class($class) : $class; diff --git a/web/modules/devel/webprofiler/src/DataCollector/FormsDataCollector.php b/web/modules/devel/webprofiler/src/DataCollector/FormsDataCollector.php index 79f633253767de1b072fea49971d2a53150b54aa..a6a1b40464f434cb5f527106beccc88f09c3269e 100644 --- a/web/modules/devel/webprofiler/src/DataCollector/FormsDataCollector.php +++ b/web/modules/devel/webprofiler/src/DataCollector/FormsDataCollector.php @@ -41,11 +41,11 @@ public function collect(Request $request, Response $response, \Exception $except * @return array */ public function getForms() { - return $this->data['forms']; + return (!empty($this->data['forms']) && is_array($this->data['forms'])) ? $this->data['forms'] : []; } /** - * @return array + * @return int */ public function getFormsCount() { return count($this->getForms()); diff --git a/web/modules/devel/webprofiler/src/DataCollector/RequestDataCollector.php b/web/modules/devel/webprofiler/src/DataCollector/RequestDataCollector.php index 9de8f4942f1d6be5d11136d8c9f38b384cc8b55d..a23d5407585894e628bb03ed93df1c47e2860705 100644 --- a/web/modules/devel/webprofiler/src/DataCollector/RequestDataCollector.php +++ b/web/modules/devel/webprofiler/src/DataCollector/RequestDataCollector.php @@ -51,7 +51,8 @@ public function collect(Request $request, Response $response, \Exception $except /** * @param $service_id * @param $callable - * @param $request + * @param \Symfony\Component\HttpFoundation\Request $request + * */ public function addAccessCheck($service_id, $callable, Request $request) { $this->accessCheck[$request->getPathInfo()][] = [ @@ -71,7 +72,7 @@ public function getTitle() { * {@inheritdoc} */ public function getPanelSummary() { - return $this->data['status_code'].' '.$this->data['status_text']; + return $this->data['status_code'] . ' ' . $this->data['status_text']; } /** @@ -80,4 +81,33 @@ public function getPanelSummary() { public function getIcon() { return 'iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAQAAADYBBcfAAACvElEQVR42tVTbUhTYRTerDCnKVoUUr/KCZmypA9Koet0bXNLJ5XazDJ/WFaCUY0pExRZXxYiJgsxWWjkaL+yK+po1gjyR2QfmqWxtBmaBtqWGnabT++c11Fu4l/P4VzOPc95zoHznsNZodIbLDdRcKnc1Bu8DAK45ZsOnykQNMopsNooLxCknb0cDq5vml9FtHiIgpBR0R6iihYyFMTDt2Lg56ObPkI6TMGXSof1EV67IqCwisJSWliFAG/E0CfFIiebdNypcxi/1zgyFiIiZ3sJQr0RQx5frLa6k7SOKRo3oMFNR5t62h2rttKXEOKFqDCxtXNmmBokO2KKTlp3IdWuT2dYRNGKwEXEBCcL172G5FG0aIxC0kR9PBTVH1kkwQn+IqJnCE33EalVzT9GJQS1tAdD3CKicJYFrxqx7W2ejCEdZy1FiC5tZxHhLJKOZaRdQJAyV/YAvDliySALHxmxR4Hqe2iwvaOR/CEuZYJFSgYhVbZRkA8KGdEktrqnqra90NndCdkt77fjIHIhexOrfO6O3bbbOj/rqu5IptgyR3sU93QbOYhquZK4MCDp0Ina/PLsu5JvbCTRaapUdUmIV/RzoMdsk/0hWRNdAvKOmvqlN0drsJbJf1P4YsQ5lGrJeuosiOUgbOC8cto3LfOXTdVd7BqZsQKbse+0jUL6WPcesqs4MNSUTQAxGjwFiC8m3yzmqwHJBWYKBJ9WNqW/dHkpU/osch1Yj5RJfXPfSEe/2UPsN490NPfZG5CKyJmcV5ayHyzy7BMqsXfuHhGK/cjAIeSpR92gehR55D8TcQhDEKJwytBJ4fr4NULvrEM8NszfJPyxDoHYAQ1oPCWmIX4gifmDS/DV2DKeb25FHWr76yEG7/9L4YFPeiQQ4/8LkgJ8Et+NncTCsYqzXAEXa7CWdPZzGWdlyV+vST0JanfPvwAAAABJRU5ErkJggg=='; } + + /** + * @return array|string + */ + public function getData() { + // Drupal 8.5+ uses Symfony 3.4.x that changes the way the Request data are + // collected. Data is altered with \Symfony\Component\HttpKernel\DataCollector\DataCollector::cloneVar. + // The stored data (of type \Symfony\Component\VarDumper\Cloner\Data) is + // suitable to be converted to a string by a Dumper (\Symfony\Component\VarDumper\Dumper\DataDumperInterface). + // In our implementation however we need that data as an array, to be later + // converted in a json response by a REST endpoint. We need to refactor the + // whole way Web Profiler works to allow that. At the moment we just + // retrieve the raw Data value and do some string manipulation to clean the + // output a bit. + + $data = $this->data->getValue(TRUE); + unset($data['request_attributes']['_route_params']); + unset($data['request_attributes']['_access_result']); + + $route_object = []; + foreach($data['request_attributes']['_route_object'] as $key => $result) { + $key = str_replace("\0", '', $key); + $key = str_replace('Symfony\Component\Routing\Route', 'Symfony\Component\Routing\Route::', $key); + $route_object[$key] = $result; + } + $data['request_attributes']['_route_object'] = $route_object; + + return $data; + } } diff --git a/web/modules/devel/webprofiler/src/Entity/Decorators/Config/ImageStyleStorageDecorator.php b/web/modules/devel/webprofiler/src/Entity/Decorators/Config/ImageStyleStorageDecorator.php new file mode 100644 index 0000000000000000000000000000000000000000..a075b29eeeedd5c9baea78d080d92bb466266434 --- /dev/null +++ b/web/modules/devel/webprofiler/src/Entity/Decorators/Config/ImageStyleStorageDecorator.php @@ -0,0 +1,33 @@ +<?php + +namespace Drupal\webprofiler\Entity\Decorators\Config; + +use Drupal\image\ImageStyleStorageInterface; + +/** + * Class ImageStyleStorageDecorator + */ +class ImageStyleStorageDecorator extends ConfigEntityStorageDecorator implements ImageStyleStorageInterface { + + /** + * {@inheritdoc} + */ + public function setReplacementId($name, $replacement) { + return $this->getOriginalObject()->setReplacementId($name, $replacement); + } + + /** + * {@inheritdoc} + */ + public function getReplacementId($name) { + return $this->getOriginalObject()->getReplacementId($name); + } + + /** + * {@inheritdoc} + */ + public function clearReplacementId($name) { + return $this->getOriginalObject()->clearReplacementId($name); + } + +} diff --git a/web/modules/devel/webprofiler/src/Entity/EntityManagerWrapper.php b/web/modules/devel/webprofiler/src/Entity/EntityManagerWrapper.php index c6381a0d25a5b7f45408f9dfb54b20b31bc4dc2c..357971021533f80a0e7d5f09ce1c6602fb6ebd4b 100644 --- a/web/modules/devel/webprofiler/src/Entity/EntityManagerWrapper.php +++ b/web/modules/devel/webprofiler/src/Entity/EntityManagerWrapper.php @@ -8,6 +8,7 @@ use Drupal\Core\Entity\EntityViewBuilderInterface; use Drupal\Core\Plugin\DefaultPluginManager; use Drupal\webprofiler\Entity\Decorators\Config\ConfigEntityStorageDecorator; +use Drupal\webprofiler\Entity\Decorators\Config\ImageStyleStorageDecorator; use Drupal\webprofiler\Entity\Decorators\Config\RoleStorageDecorator; use Drupal\webprofiler\Entity\Decorators\Config\ShortcutSetStorageDecorator; use Drupal\webprofiler\Entity\Decorators\Config\VocabularyStorageDecorator; @@ -98,6 +99,9 @@ private function getStorageDecorator($entity_type, $handler) { case 'shortcut_set': return new ShortcutSetStorageDecorator($handler); break; + case 'image_style': + return new ImageStyleStorageDecorator($handler); + break; default: return new ConfigEntityStorageDecorator($handler); break; diff --git a/web/modules/devel/webprofiler/src/EventDispatcher/TraceableEventDispatcher.php b/web/modules/devel/webprofiler/src/EventDispatcher/TraceableEventDispatcher.php index b3451fb508eec7bafa2c9e8fbf983daec04b8967..2664f507b806eebb9ba231bbb36533873bb4ab40 100644 --- a/web/modules/devel/webprofiler/src/EventDispatcher/TraceableEventDispatcher.php +++ b/web/modules/devel/webprofiler/src/EventDispatcher/TraceableEventDispatcher.php @@ -170,10 +170,18 @@ protected function postDispatch($eventName, Event $event) { * @param $priority */ private function addCalledListener($definition, $event_name, $priority) { - $this->calledListeners[$event_name][$priority][] = [ - 'class' => get_class($definition['callable'][0]), - 'method' => $definition['callable'][1], - ]; + if ($this->isClosure($definition['callable'])) { + $this->calledListeners[$event_name][$priority][] = [ + 'class' => 'Closure', + 'method' => '', + ]; + } + else { + $this->calledListeners[$event_name][$priority][] = [ + 'class' => get_class($definition['callable'][0]), + 'method' => $definition['callable'][1], + ]; + } foreach ($this->notCalledListeners[$event_name][$priority] as $key => $listener) { if (isset($listener['service'])) { @@ -182,12 +190,25 @@ private function addCalledListener($definition, $event_name, $priority) { } } else { - if (get_class($listener['callable'][0]) == get_class($definition['callable'][0]) && $listener['callable'][1] == $definition['callable'][1]) { - unset($this->notCalledListeners[$event_name][$priority][$key]); + if ($this->isClosure($listener['callable'])) { + if (is_callable($listener['callable'], TRUE, $listenerCallableName) && is_callable($definition['callable'], TRUE, $definitionCallableName)) { + if ($listenerCallableName == $definitionCallableName) { + unset($this->notCalledListeners[$event_name][$priority][$key]); + } + } + } + else { + if (get_class($listener['callable'][0]) == get_class($definition['callable'][0]) && $listener['callable'][1] == $definition['callable'][1]) { + unset($this->notCalledListeners[$event_name][$priority][$key]); + } } } } } + private function isClosure($t) { + return is_object($t) && ($t instanceof \Closure); + } + } diff --git a/web/modules/devel/webprofiler/src/EventSubscriber/ProfilerSubscriber.php b/web/modules/devel/webprofiler/src/EventSubscriber/ProfilerSubscriber.php new file mode 100644 index 0000000000000000000000000000000000000000..d3f3124fc0131602d4c4049a81b0b101e0e6f05d --- /dev/null +++ b/web/modules/devel/webprofiler/src/EventSubscriber/ProfilerSubscriber.php @@ -0,0 +1,118 @@ +<?php + +namespace Drupal\webprofiler\EventSubscriber; + +use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; +use Symfony\Component\HttpKernel\Event\FilterResponseEvent; +use Symfony\Component\HttpKernel\Event\FinishRequestEvent; +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\HttpKernel\Profiler\Profiler; +use Symfony\Component\HttpFoundation\RequestMatcherInterface; +use Symfony\Component\HttpFoundation\RequestStack; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + +class ProfilerSubscriber implements EventSubscriberInterface { + + protected $profiler; + + protected $matcher; + + protected $onlyException; + + protected $onlyMasterRequests; + + protected $exception; + + protected $profiles; + + protected $requestStack; + + protected $parents; + + /** + * @param Profiler $profiler A Profiler instance + * @param RequestStack $requestStack A RequestStack instance + * @param RequestMatcherInterface|null $matcher A RequestMatcher instance + * @param bool $onlyException True if the profiler only collects data when an + * exception occurs, false otherwise + * @param bool $onlyMasterRequests True if the profiler only collects data + * when the request is a master request, false otherwise + */ + public function __construct(Profiler $profiler, RequestStack $requestStack, RequestMatcherInterface $matcher = NULL, $onlyException = FALSE, $onlyMasterRequests = FALSE) { + $this->profiler = $profiler; + $this->matcher = $matcher; + $this->onlyException = (bool) $onlyException; + $this->onlyMasterRequests = (bool) $onlyMasterRequests; + $this->profiles = new \SplObjectStorage(); + $this->parents = new \SplObjectStorage(); + $this->requestStack = $requestStack; + } + + /** + * Handles the onKernelException event. + */ + public function onKernelException(GetResponseForExceptionEvent $event) { + if ($this->onlyMasterRequests && !$event->isMasterRequest()) { + return; + } + + $this->exception = $event->getException(); + } + + /** + * Handles the onKernelResponse event. + */ + public function onKernelResponse(FilterResponseEvent $event) { + $master = $event->isMasterRequest(); + if ($this->onlyMasterRequests && !$master) { + return; + } + + if ($this->onlyException && NULL === $this->exception) { + return; + } + + $request = $event->getRequest(); + $exception = $this->exception; + $this->exception = NULL; + + if (NULL !== $this->matcher && !$this->matcher->matches($request)) { + return; + } + + if (!$profile = $this->profiler->collect($request, $event->getResponse(), $exception)) { + return; + } + + $this->profiles[$request] = $profile; + + $this->parents[$request] = $this->requestStack->getParentRequest(); + } + + public function onKernelFinishRequest(FinishRequestEvent $event) { + // attach children to parents + foreach ($this->profiles as $request) { + if (NULL !== $parentRequest = $this->parents[$request]) { + if (isset($this->profiles[$parentRequest])) { + $this->profiles[$parentRequest]->addChild($this->profiles[$request]); + } + } + } + + // save profiles + foreach ($this->profiles as $request) { + $this->profiler->saveProfile($this->profiles[$request]); + } + + $this->profiles = new \SplObjectStorage(); + $this->parents = new \SplObjectStorage(); + } + + public static function getSubscribedEvents() { + return [ + KernelEvents::RESPONSE => ['onKernelResponse', -100], + KernelEvents::EXCEPTION => 'onKernelException', + KernelEvents::FINISH_REQUEST => ['onKernelFinishRequest', -1024], + ]; + } +} diff --git a/web/modules/devel/webprofiler/src/Form/ConfigForm.php b/web/modules/devel/webprofiler/src/Form/ConfigForm.php index e99e2168cade40ab147501fca573df7d2ccf9649..d95582b7c29d46caea9c830ed1e14408102fc25f 100644 --- a/web/modules/devel/webprofiler/src/Form/ConfigForm.php +++ b/web/modules/devel/webprofiler/src/Form/ConfigForm.php @@ -165,7 +165,8 @@ public function buildForm(array $form, FormStateInterface $form_state) { '#open' => FALSE, ]; - $form['purge']['purge'] = [ + $form['purge']['actions'] = ['#type' => 'actions']; + $form['purge']['actions']['purge'] = [ '#type' => 'submit', '#value' => $this->t('Purge'), '#submit' => [[$this, 'purge']], diff --git a/web/modules/devel/webprofiler/src/Http/HttpClientMiddleware.php b/web/modules/devel/webprofiler/src/Http/HttpClientMiddleware.php index b64a2a6cc5cf79f118aaea6df554355f0edfc320..c37c0ca6f9c4bc20c8461e77765916f946240340 100644 --- a/web/modules/devel/webprofiler/src/Http/HttpClientMiddleware.php +++ b/web/modules/devel/webprofiler/src/Http/HttpClientMiddleware.php @@ -36,8 +36,18 @@ public function __invoke() { return function ($handler) { return function (RequestInterface $request, array $options) use ($handler) { - $options['on_stats'] = function (TransferStats $stats) use ($request) { + // If on_stats callback is already set then save it + // and call it after ours. + if (isset($options['on_stats'])) { + $next = $options['on_stats']; + } + else { + $next = function(TransferStats $stats) {}; + } + + $options['on_stats'] = function (TransferStats $stats) use ($request, $next) { $request->stats = $stats; + $next($stats); }; return $handler($request, $options)->then( diff --git a/web/modules/devel/webprofiler/src/Mail/MailManagerWrapper.php b/web/modules/devel/webprofiler/src/Mail/MailManagerWrapper.php index 58ecddcea07770bdfe4cf0873f9aa4c695ca1e94..2689510d7df727921bc2136e476f7209ceb278be 100644 --- a/web/modules/devel/webprofiler/src/Mail/MailManagerWrapper.php +++ b/web/modules/devel/webprofiler/src/Mail/MailManagerWrapper.php @@ -91,4 +91,14 @@ public function mail($module, $key, $to, $langcode, $params = array(), $reply = return $message; } + + /** + * {@inheritdoc} + * + * Must call getInstance on the decorated MailManager. + * @see https://www.drupal.org/node/2625554 + */ + public function getInstance(array $options) { + return $this->mailManager->getInstance($options); + } } diff --git a/web/modules/devel/webprofiler/src/ProxyClass/Command/ListCommand.php b/web/modules/devel/webprofiler/src/ProxyClass/Command/ListCommand.php new file mode 100644 index 0000000000000000000000000000000000000000..e8e22c844cd8591990bc496191be08b42fe44306 --- /dev/null +++ b/web/modules/devel/webprofiler/src/ProxyClass/Command/ListCommand.php @@ -0,0 +1,325 @@ +<?php +// @codingStandardsIgnoreFile + +/** + * This file was generated via php core/scripts/generate-proxy-class.php + * 'Drupal\webprofiler\Command\ListCommand' + * "modules/contrib/devel/webprofiler/src". + */ + +namespace Drupal\webprofiler\ProxyClass\Command { + + /** + * Provides a proxy class for \Drupal\webprofiler\Command\ListCommand. + * + * @see \Drupal\Component\ProxyBuilder + */ + class ListCommand { + + use \Drupal\Core\DependencyInjection\DependencySerializationTrait; + + /** + * The id of the original proxied service. + * + * @var string + */ + protected $drupalProxyOriginalServiceId; + + /** + * The real proxied service, after it was lazy loaded. + * + * @var \Drupal\webprofiler\Command\ListCommand + */ + protected $service; + + /** + * The service container. + * + * @var \Symfony\Component\DependencyInjection\ContainerInterface + */ + protected $container; + + /** + * Constructs a ProxyClass Drupal proxy object. + * + * @param \Symfony\Component\DependencyInjection\ContainerInterface $container + * The container. + * @param string $drupal_proxy_original_service_id + * The service ID of the original service. + */ + public function __construct(\Symfony\Component\DependencyInjection\ContainerInterface $container, $drupal_proxy_original_service_id) { + $this->container = $container; + $this->drupalProxyOriginalServiceId = $drupal_proxy_original_service_id; + } + + /** + * Lazy loads the real service from the container. + * + * @return object + * Returns the constructed real service. + */ + protected function lazyLoadItself() { + if (!isset($this->service)) { + $this->service = $this->container->get($this->drupalProxyOriginalServiceId); + } + + return $this->service; + } + + /** + * {@inheritdoc} + */ + public function showMessage($output, $message, $type = 'info') { + return $this->lazyLoadItself()->showMessage($output, $message, $type); + } + + /** + * {@inheritdoc} + */ + public function ignoreValidationErrors() { + return $this->lazyLoadItself()->ignoreValidationErrors(); + } + + /** + * {@inheritdoc} + */ + public function setApplication(\Symfony\Component\Console\Application $application = NULL) { + return $this->lazyLoadItself()->setApplication($application); + } + + /** + * {@inheritdoc} + */ + public function setHelperSet(\Symfony\Component\Console\Helper\HelperSet $helperSet) { + return $this->lazyLoadItself()->setHelperSet($helperSet); + } + + /** + * {@inheritdoc} + */ + public function getHelperSet() { + return $this->lazyLoadItself()->getHelperSet(); + } + + /** + * {@inheritdoc} + */ + public function getApplication() { + return $this->lazyLoadItself()->getApplication(); + } + + /** + * {@inheritdoc} + */ + public function isEnabled() { + return $this->lazyLoadItself()->isEnabled(); + } + + /** + * {@inheritdoc} + */ + public function run(\Symfony\Component\Console\Input\InputInterface $input, \Symfony\Component\Console\Output\OutputInterface $output) { + return $this->lazyLoadItself()->run($input, $output); + } + + /** + * {@inheritdoc} + */ + public function setCode(callable $code) { + return $this->lazyLoadItself()->setCode($code); + } + + /** + * {@inheritdoc} + */ + public function mergeApplicationDefinition($mergeArgs = TRUE) { + return $this->lazyLoadItself()->mergeApplicationDefinition($mergeArgs); + } + + /** + * {@inheritdoc} + */ + public function setDefinition($definition) { + return $this->lazyLoadItself()->setDefinition($definition); + } + + /** + * {@inheritdoc} + */ + public function getDefinition() { + return $this->lazyLoadItself()->getDefinition(); + } + + /** + * {@inheritdoc} + */ + public function getNativeDefinition() { + return $this->lazyLoadItself()->getNativeDefinition(); + } + + /** + * {@inheritdoc} + */ + public function addArgument($name, $mode = NULL, $description = '', $default = NULL) { + return $this->lazyLoadItself() + ->addArgument($name, $mode, $description, $default); + } + + /** + * {@inheritdoc} + */ + public function addOption($name, $shortcut = NULL, $mode = NULL, $description = '', $default = NULL) { + return $this->lazyLoadItself() + ->addOption($name, $shortcut, $mode, $description, $default); + } + + /** + * {@inheritdoc} + */ + public function setName($name) { + return $this->lazyLoadItself()->setName($name); + } + + /** + * {@inheritdoc} + */ + public function setProcessTitle($title) { + return $this->lazyLoadItself()->setProcessTitle($title); + } + + /** + * {@inheritdoc} + */ + public function getName() { + return $this->lazyLoadItself()->getName(); + } + + /** + * {@inheritdoc} + */ + public function setHidden($hidden) { + return $this->lazyLoadItself()->setHidden($hidden); + } + + /** + * {@inheritdoc} + */ + public function isHidden() { + return $this->lazyLoadItself()->isHidden(); + } + + /** + * {@inheritdoc} + */ + public function setDescription($description) { + return $this->lazyLoadItself()->setDescription($description); + } + + /** + * {@inheritdoc} + */ + public function getDescription() { + return $this->lazyLoadItself()->getDescription(); + } + + /** + * {@inheritdoc} + */ + public function setHelp($help) { + return $this->lazyLoadItself()->setHelp($help); + } + + /** + * {@inheritdoc} + */ + public function getHelp() { + return $this->lazyLoadItself()->getHelp(); + } + + /** + * {@inheritdoc} + */ + public function getProcessedHelp() { + return $this->lazyLoadItself()->getProcessedHelp(); + } + + /** + * {@inheritdoc} + */ + public function setAliases($aliases) { + return $this->lazyLoadItself()->setAliases($aliases); + } + + /** + * {@inheritdoc} + */ + public function getAliases() { + return $this->lazyLoadItself()->getAliases(); + } + + /** + * {@inheritdoc} + */ + public function getSynopsis($short = FALSE) { + return $this->lazyLoadItself()->getSynopsis($short); + } + + /** + * {@inheritdoc} + */ + public function addUsage($usage) { + return $this->lazyLoadItself()->addUsage($usage); + } + + /** + * {@inheritdoc} + */ + public function getUsages() { + return $this->lazyLoadItself()->getUsages(); + } + + /** + * {@inheritdoc} + */ + public function getHelper($name) { + return $this->lazyLoadItself()->getHelper($name); + } + + /** + * {@inheritdoc} + */ + public function setContainer($container) { + return $this->lazyLoadItself()->setContainer($container); + } + + /** + * {@inheritdoc} + */ + public function has($key) { + return $this->lazyLoadItself()->has($key); + } + + /** + * {@inheritdoc} + */ + public function get($key) { + return $this->lazyLoadItself()->get($key); + } + + /** + * {@inheritdoc} + */ + public function setTranslator($translator) { + return $this->lazyLoadItself()->setTranslator($translator); + } + + /** + * {@inheritdoc} + */ + public function trans($key) { + return $this->lazyLoadItself()->trans($key); + } + + } + +} diff --git a/web/modules/devel/webprofiler/templates/Collector/database.html.twig b/web/modules/devel/webprofiler/templates/Collector/database.html.twig index cbe155134286465ca4d7c964361320d4443e6380..f07b7f1fd11082c41d8d95331c0ed44a839041d4 100644 --- a/web/modules/devel/webprofiler/templates/Collector/database.html.twig +++ b/web/modules/devel/webprofiler/templates/Collector/database.html.twig @@ -57,7 +57,7 @@ <option value="1">{{ 'Yes'|t }}</option> <option value="0">{{ 'No'|t }}</option> </select> - <label for="edit-type" class="panel__filter-label">{{ 'Slow queryes'|t }}</label> + <label for="edit-type" class="panel__filter-label">{{ 'Slow queries'|t }}</label> </div> <div class="panel__filter--select"> <select id="edit-database" class="js--live-filter"> diff --git a/web/modules/devel/webprofiler/templates/Collector/events.html.twig b/web/modules/devel/webprofiler/templates/Collector/events.html.twig index 17087e1bff172f0353a93f10f29dac32eea21617..2794fec989090559e9c536fc3acdab689db891e4 100644 --- a/web/modules/devel/webprofiler/templates/Collector/events.html.twig +++ b/web/modules/devel/webprofiler/templates/Collector/events.html.twig @@ -44,7 +44,13 @@ <tr> <td><%= event_name %></td> <% if( listener.clazz ) { %> - <td><%= Drupal.webprofiler.helpers.classLink(listener.clazz) %></td> + <td> + <% if( listener.class == "Closure" ) { %> + <%= "Closure" %> + <% } else { %> + <%= Drupal.webprofiler.helpers.classLink(listener.clazz) %> + <% } %> + </td> <% } else { %> <td><%= listener.service[0] %>::<%= listener.service[1] %></td> <% } %> diff --git a/web/modules/devel/webprofiler/templates/Collector/request.html.twig b/web/modules/devel/webprofiler/templates/Collector/request.html.twig index 4a1e1e308f9ae4017f882926e7ea122ad025ab0d..b57a85419abeba9e1c9f4f248902e1c67306af14 100644 --- a/web/modules/devel/webprofiler/templates/Collector/request.html.twig +++ b/web/modules/devel/webprofiler/templates/Collector/request.html.twig @@ -46,9 +46,10 @@ <% if (!_.isEmpty(data.request_query)) { %> <div class="panel__container"> + <h3>GET parameters</h3> <table class="table--duo"> <thead> - <th>{{ 'GET Parameters'|t }}</th> + <th>{{ 'Name'|t }}</th> <th>{{ 'Value'|t }}</th> </thead> <tbody> @@ -65,9 +66,10 @@ <% if (!_.isEmpty(data.request_request)) { %> <div class="panel__container"> + <h3>POST parameters</h3> <table class="table--duo"> <thead> - <th>{{ 'POST Parameters'|t }}</th> + <th>{{ 'Name'|t }}</th> <th>{{ 'Value'|t }}</th> </thead> <tbody> @@ -83,18 +85,20 @@ <% } %> <div class="panel__container"> + <h3>Request attributes</h3> <table class="table--duo"> <thead> - <th>{{ 'Attributes'|t }}</th> + <th>{{ 'Name'|t }}</th> <th>{{ 'Value'|t }}</th> </thead> <tbody> <% _.each( data.request_attributes, function( item, key ){ %> <tr> <td><%- key %></td> - <% if(key == '_controller') { %> <td><%= Drupal.webprofiler.helpers.classLink(data.controller) %></td> + <% } else if(key == '_form') { %> + <td><%= Drupal.webprofiler.helpers.classLink(data.controller) %></td> <% } else { %> <td><%= Drupal.webprofiler.helpers.frm(item) %></td> <% } %> @@ -106,9 +110,10 @@ <% if (!_.isEmpty(data.request_cookies)) { %> <div class="panel__container"> + <h3>Cookies</h3> <table class="table--duo"> <thead> - <th>{{ 'Cookies'|t }}</th> + <th>{{ 'Name'|t }}</th> <th>{{ 'Value'|t }}</th> </thead> <tbody> @@ -124,9 +129,10 @@ <% } %> <div class="panel__container"> + <h3>Request headers</h3> <table class="table--duo"> <thead> - <th>{{ 'Request headers'|t }}</th> + <th>{{ 'Name'|t }}</th> <th>{{ 'Value'|t }}</th> </thead> <tbody> @@ -142,16 +148,18 @@ <% if (!_.isEmpty(data.content)) { %> <div class="panel__container"> + <h3>Raw content</h3> <div class="h--word-broken"><%- data.content %></div> </div> <% } %> <% if (!_.isEmpty(data.access_check)) { %> <div class="panel__container"> + <h3>Access check</h3> <table class="table--duo"> <thead> <th>{{ 'Path'|t }}</th> - <th>{{ 'Access check'|t }}</th> + <th>{{ 'Service'|t }}</th> </thead> <tbody> <% _.each(data.access_check, function(items, key){ %> @@ -170,9 +178,10 @@ <% } %> <div class="panel__container"> + <h3>Server Parameters</h3> <table class="table--duo"> <thead> - <th>{{ 'Server Parameters'|t }}</th> + <th>{{ 'Name'|t }}</th> <th>{{ 'Value'|t }}</th> </thead> <tbody> @@ -187,9 +196,10 @@ </div> <div class="panel__container"> + <h3>Response headers</h3> <table class="table--duo"> <thead> - <th>{{ 'Response headers'|t }}</th> + <th>{{ 'Name'|t }}</th> <th>{{ 'Value'|t }}</th> </thead> <tbody> diff --git a/web/modules/devel/webprofiler/templates/Collector/views.html.twig b/web/modules/devel/webprofiler/templates/Collector/views.html.twig index d4a2e2f5c23d41c61fe15940c30f4bbc79e49710..5409cc9b5637cecd805a2d88f774d8802570b6c6 100644 --- a/web/modules/devel/webprofiler/templates/Collector/views.html.twig +++ b/web/modules/devel/webprofiler/templates/Collector/views.html.twig @@ -41,9 +41,9 @@ <tr> <td><%- item.id %></td> <td><%- item.current_display %></td> - <td><%- Drupal.webprofiler.helpers.printTime(item.build_time) %></td> - <td><%- Drupal.webprofiler.helpers.printTime(item.execute_time) %></td> - <td><%- Drupal.webprofiler.helpers.printTime(item.render_time) %></td> + <td><%- Drupal.webprofiler.helpers.printTime(item.build_time, 's') %></td> + <td><%- Drupal.webprofiler.helpers.printTime(item.execute_time, 's') %></td> + <td><%- Drupal.webprofiler.helpers.printTime(item.render_time, 's') %></td> <td><a href="<%- item.route %>">{{ 'Edit'|t }}</a></td> </tr> <% }); %> diff --git a/web/modules/devel/webprofiler/webprofiler.info.yml b/web/modules/devel/webprofiler/webprofiler.info.yml index 8aebae23136e74127e1a2ccbc6eb7ae526cac70e..1940a74eca8cb2a855ace6950ebce86ffdc3eda9 100644 --- a/web/modules/devel/webprofiler/webprofiler.info.yml +++ b/web/modules/devel/webprofiler/webprofiler.info.yml @@ -7,10 +7,10 @@ configure: webprofiler.settings tags: - developer dependencies: - - devel + - devel:devel -# Information added by Drupal.org packaging script on 2017-10-05 -version: '8.x-1.2' +# Information added by Drupal.org packaging script on 2019-01-29 +version: '8.x-2.0' core: '8.x' project: 'devel' -datestamp: 1507197848 +datestamp: 1548799386 diff --git a/web/modules/devel/webprofiler/webprofiler.services.yml b/web/modules/devel/webprofiler/webprofiler.services.yml index 6332fef9260b578bd7ddbfaefa365fafa957b93a..50527926a47ea4c5d8c8d5b59e664b23a9004a20 100644 --- a/web/modules/devel/webprofiler/webprofiler.services.yml +++ b/web/modules/devel/webprofiler/webprofiler.services.yml @@ -46,7 +46,7 @@ services: # event subscribers webprofiler.profiler_listener: - class: Symfony\Component\HttpKernel\EventListener\ProfilerListener + class: Drupal\webprofiler\EventSubscriber\ProfilerSubscriber arguments: ['@profiler', '@request_stack', '@?webprofiler.matcher', '%webprofiler.only_exceptions%', '%webprofiler.only_master_requests%'] tags: - { name: event_subscriber }