diff --git a/modules/distro/panelizer/CHANGELOG.txt b/modules/distro/panelizer/CHANGELOG.txt index 8e9ae484b..f06a8db9e 100644 --- a/modules/distro/panelizer/CHANGELOG.txt +++ b/modules/distro/panelizer/CHANGELOG.txt @@ -1,3 +1,10 @@ +Panelizer 8.x-4.5, 2023-10-10 +----------------------------- +#3288958 by Project Update Bot, DamienMcKenna: Drupal 10 compatibility fixes. +#3352704 by sker101, codebymikey, hamzadwaya, Mingsong, joseph.olstad, jan + kellermann, DamienMcKenna: Additional Drupal 10 compatibility fixes. + + Panelizer 8.x-4.x-dev, xxxx-xx-xx --------------------------------- #2889815 by samuel.mortenson: Fix tests for Panelizer 8.x. @@ -9,7 +16,6 @@ Panelizer 8.x-4.x-dev, xxxx-xx-xx #2912622 by gaydabura: Panelizer field should only show enabled view modes. #2878095 by zuernBernhard: Panelizer Post Update fails in combination with search_api index tracking. -#3288958 by Project Update Bot, DamienMcKenna: Drupal 10 compatibility fixes. Panelizer 8.x-4.0, 2017-04-28 diff --git a/modules/distro/panelizer/js/panelizer-default-form.js b/modules/distro/panelizer/js/panelizer-default-form.js index 76aafe84a..06474bf47 100644 --- a/modules/distro/panelizer/js/panelizer-default-form.js +++ b/modules/distro/panelizer/js/panelizer-default-form.js @@ -2,11 +2,14 @@ * @file * Javascript for the Panelizer defaults page. */ -(function ($) { +(function ($, once) { Drupal.behaviors.panelizer_default_form = { attach: function (context, settings) { - var $panelizer_checkbox = $(':input[name="panelizer[enable]"]'); + var $panelizer_checkbox = $(once('panelizer-default-form', 'input[name="panelizer[enable]"]', context)); + if (!$panelizer_checkbox.length) { + return; + } function update_form() { var $core_form = $('#field-display-overview-wrapper'); if ($panelizer_checkbox.is(':checked')) { @@ -17,8 +20,8 @@ } } - $panelizer_checkbox.once('panelizer-default-form').click(update_form); + $panelizer_checkbox.click(update_form); update_form(); } }; -})(jQuery); +})(jQuery, once); diff --git a/modules/distro/panelizer/panelizer.info.yml b/modules/distro/panelizer/panelizer.info.yml index f9cf276e4..fe2c315f4 100644 --- a/modules/distro/panelizer/panelizer.info.yml +++ b/modules/distro/panelizer/panelizer.info.yml @@ -10,7 +10,7 @@ dependencies: - panels:panels - panels:panels_ipe -# Information added by Drupal.org packaging script on 2022-08-23 -version: '8.x-4.4+2-dev' +# Information added by Drupal.org packaging script on 2023-10-10 +version: '8.x-4.5' project: 'panelizer' -datestamp: 1661286213 +datestamp: 1696975733 diff --git a/modules/distro/panelizer/panelizer.install b/modules/distro/panelizer/panelizer.install index ba3925d61..5515f62f6 100644 --- a/modules/distro/panelizer/panelizer.install +++ b/modules/distro/panelizer/panelizer.install @@ -10,7 +10,7 @@ * default layouts. */ function panelizer_update_8401(&$sandbox) { - module_load_install('panels'); + \Drupal::moduleHandler()->loadInclude('panels', 'install'); $config_factory = \Drupal::configFactory(); foreach ($config_factory->listAll('core.entity_view_display.') as $entity_display_name) { $entity_display = $config_factory->getEditable($entity_display_name); diff --git a/modules/distro/panelizer/panelizer.libraries.yml b/modules/distro/panelizer/panelizer.libraries.yml index 50b9c7622..45d8908c2 100644 --- a/modules/distro/panelizer/panelizer.libraries.yml +++ b/modules/distro/panelizer/panelizer.libraries.yml @@ -4,7 +4,7 @@ panelizer_default_form: js/panelizer-default-form.js: {} dependencies: - core/jquery - - core/jquery.once + - core/once panels_ipe: version: VERSION js: diff --git a/modules/distro/panelizer/panelizer.module b/modules/distro/panelizer/panelizer.module index badc90dc0..88c11eb6b 100644 --- a/modules/distro/panelizer/panelizer.module +++ b/modules/distro/panelizer/panelizer.module @@ -343,7 +343,7 @@ function template_preprocess_panelizer_wizard_tree(&$variables) { /** @var $wizard \Drupal\ctools\Wizard\FormWizardInterface|\Drupal\ctools\Wizard\EntityFormWizardInterface */ $wizard = $variables['wizard']; $cached_values = $variables['cached_values']; - $tree = $variables['tree']; + $tree = $variables['tree'] ?: []; $variables['step'] = $wizard->getStep($cached_values); foreach ($wizard->getOperations($cached_values) as $step => $operation) { diff --git a/modules/distro/panelizer/panelizer.post_update.php b/modules/distro/panelizer/panelizer.post_update.php index fcb8e184e..a5b4aee56 100644 --- a/modules/distro/panelizer/panelizer.post_update.php +++ b/modules/distro/panelizer/panelizer.post_update.php @@ -19,7 +19,7 @@ * default layouts. */ function panelizer_post_update_rename_layout_machine_names(&$sandbox) { - module_load_install('panels'); + \Drupal::moduleHandler()->loadInclude('panels', 'install'); /** @var \Drupal\panelizer\Plugin\PanelizerEntityManager $panelizer_manager */ $panelizer_manager = \Drupal::service('plugin.manager.panelizer_entity'); @@ -31,6 +31,7 @@ function panelizer_post_update_rename_layout_machine_names(&$sandbox) { $storage = \Drupal::entityTypeManager()->getStorage($entity_type); $ids = $storage->getQuery() ->condition('panelizer', serialize([]), '<>') + ->accessCheck(FALSE) ->execute(); foreach ($storage->loadMultiple($ids) as $entity_id => $entity) { diff --git a/modules/distro/panelizer/panelizer_quickedit/panelizer_quickedit.info.yml b/modules/distro/panelizer/panelizer_quickedit/panelizer_quickedit.info.yml index 1be832157..00584941a 100644 --- a/modules/distro/panelizer/panelizer_quickedit/panelizer_quickedit.info.yml +++ b/modules/distro/panelizer/panelizer_quickedit/panelizer_quickedit.info.yml @@ -8,7 +8,7 @@ dependencies: - panelizer:panelizer - drupal:quickedit -# Information added by Drupal.org packaging script on 2022-08-23 -version: '8.x-4.4+2-dev' +# Information added by Drupal.org packaging script on 2023-10-10 +version: '8.x-4.5' project: 'panelizer' -datestamp: 1661286213 +datestamp: 1696975733 diff --git a/modules/distro/panelizer/src/Panelizer.php b/modules/distro/panelizer/src/Panelizer.php index d34b8de10..1aaefc032 100644 --- a/modules/distro/panelizer/src/Panelizer.php +++ b/modules/distro/panelizer/src/Panelizer.php @@ -171,6 +171,7 @@ public function getEntityViewDisplay($entity_type_id, $bundle, $view_mode) { $results = \Drupal::entityQuery('entity_view_display') ->condition('id', $candidate_ids) ->condition('status', TRUE) + ->accessCheck() ->execute(); // Select the first valid candidate display, if any. diff --git a/modules/distro/panelizer/tests/modules/panelizer_test/panelizer_test.info.yml b/modules/distro/panelizer/tests/modules/panelizer_test/panelizer_test.info.yml index bc0c22784..69e6a4d21 100644 --- a/modules/distro/panelizer/tests/modules/panelizer_test/panelizer_test.info.yml +++ b/modules/distro/panelizer/tests/modules/panelizer_test/panelizer_test.info.yml @@ -1,11 +1,11 @@ type: module name: Panelizer Test description: 'Required for Panelizer simpletests only.' -core_version_requirement: ^8.8 || ^9 +core_version_requirement: ^8.8 || ^9 || ^10 dependencies: - panelizer:panelizer -# Information added by Drupal.org packaging script on 2022-08-23 -version: '8.x-4.4+2-dev' +# Information added by Drupal.org packaging script on 2023-10-10 +version: '8.x-4.5' project: 'panelizer' -datestamp: 1661286213 +datestamp: 1696975733 diff --git a/modules/distro/panelizer/tests/src/Functional/PanelizerDefaultsTest.php b/modules/distro/panelizer/tests/src/Functional/PanelizerDefaultsTest.php index 33878cbaa..08122e86f 100644 --- a/modules/distro/panelizer/tests/src/Functional/PanelizerDefaultsTest.php +++ b/modules/distro/panelizer/tests/src/Functional/PanelizerDefaultsTest.php @@ -16,7 +16,7 @@ class PanelizerDefaultsTest extends BrowserTestBase { /** * {@inheritdoc} */ - protected $defaultTheme = 'bartik'; + protected $defaultTheme = 'stark'; /** * {@inheritdoc} @@ -71,7 +71,7 @@ public function test() { // default, they aren't. $this->drupalGet('node/add/page'); $this->assertSession()->statusCodeEquals(200); - $this->assertSession()->fieldValueNotEquals("panelizer['{$i}][default]", ''); + $this->assertSession()->fieldNotExists("panelizer['{$i}][default]"); // Allow user to select panelized modes in UI. $this->panelize('page', $view_mode_name, [ 'panelizer[custom]' => TRUE, diff --git a/modules/distro/panelizer/tests/src/Functional/PanelizerIpeTest.php b/modules/distro/panelizer/tests/src/Functional/PanelizerIpeTest.php index 731ff6c97..1e1268bb0 100644 --- a/modules/distro/panelizer/tests/src/Functional/PanelizerIpeTest.php +++ b/modules/distro/panelizer/tests/src/Functional/PanelizerIpeTest.php @@ -86,7 +86,7 @@ protected function createAdminUser(array $perms = array()) { // From Panels. 'access panels in-place editing', ]; - $this->verbose('
' . print_r($perms, TRUE) . '
'); + dump('
' . print_r($perms, TRUE) . '
'); return $this->drupalCreateUser($perms); } @@ -111,7 +111,7 @@ public function testAdminUser() { $matches = []; if (preg_match('@@', $this->getSession()->getPage()->getContent(), $matches)) { $drupalSettings = Json::decode($matches[1]); - $this->verbose('
' . print_r($drupalSettings, TRUE) . '
'); + dump('
' . print_r($drupalSettings, TRUE) . '
'); } $this->assertNotNull($drupalSettings); if (!empty($drupalSettings)) { @@ -158,7 +158,7 @@ public function testAdministerPanelizerPermission() { $matches = []; if (preg_match('@@', $this->getSession()->getPage()->getContent(), $matches)) { $drupalSettings = Json::decode($matches[1]); - $this->verbose('
' . print_r($drupalSettings, TRUE) . '
'); + dump('
' . print_r($drupalSettings, TRUE) . '
'); } $this->assertNotNull($drupalSettings); if (!empty($drupalSettings)) { @@ -375,7 +375,7 @@ protected function setupPermissionTests(array $perms, $node = NULL) { $matches = []; if (preg_match('@@', $this->getSession()->getPage()->getContent(), $matches)) { $drupalSettings = Json::decode($matches[1]); - $this->verbose('
' . print_r($drupalSettings, TRUE) . '
'); + dump('
' . print_r($drupalSettings, TRUE) . '
'); } return $drupalSettings; } diff --git a/modules/distro/panelizer/tests/src/Functional/PanelizerNodeFunctionalTest.php b/modules/distro/panelizer/tests/src/Functional/PanelizerNodeFunctionalTest.php index 827bd9a95..5fb98d3ca 100644 --- a/modules/distro/panelizer/tests/src/Functional/PanelizerNodeFunctionalTest.php +++ b/modules/distro/panelizer/tests/src/Functional/PanelizerNodeFunctionalTest.php @@ -151,7 +151,7 @@ public function testPanelizerDefault() { $node = $this->drupalCreateNode(['type' => 'page']); $out = $this->drupalGet('node/' . $node->id()); $this->assertSession()->statusCodeEquals(200); - $this->verbose($out); + dump($out); $elements = $this->xpath('//*[@id="panels-ipe-content"]'); if (is_array($elements)) { $this->assertSame(count($elements), 1); diff --git a/modules/distro/panelizer/tests/src/Functional/PanelizerNodeTranslationsTest.php b/modules/distro/panelizer/tests/src/Functional/PanelizerNodeTranslationsTest.php index 2952f2187..01b75d1e0 100644 --- a/modules/distro/panelizer/tests/src/Functional/PanelizerNodeTranslationsTest.php +++ b/modules/distro/panelizer/tests/src/Functional/PanelizerNodeTranslationsTest.php @@ -174,7 +174,7 @@ public function testPanelizerDefault() { ]); $out = $this->drupalGet('node/' . $node->id()); $this->assertSession()->statusCodeEquals(200); - $this->verbose($out); + dump($out); $elements = $this->xpath('//*[@id="panels-ipe-content"]'); if (is_array($elements)) { $this->assertSame(count($elements), 1); diff --git a/modules/distro/panelizer/tests/src/Functional/PanelizerTermFunctionalTest.php b/modules/distro/panelizer/tests/src/Functional/PanelizerTermFunctionalTest.php index 5469be531..69a2829fc 100644 --- a/modules/distro/panelizer/tests/src/Functional/PanelizerTermFunctionalTest.php +++ b/modules/distro/panelizer/tests/src/Functional/PanelizerTermFunctionalTest.php @@ -93,7 +93,7 @@ public function testPanelizerDefault() { $out = $this->drupalGet('taxonomy/term/' . $term->id()); $this->assertSession()->statusCodeEquals(200); - $this->verbose($out); + dump($out); $elements = $this->xpath('//*[@id="panels-ipe-content"]'); if (is_array($elements)) { $this->assertSame(count($elements), 1); diff --git a/modules/distro/panelizer/tests/src/Functional/PanelizerTestTrait.php b/modules/distro/panelizer/tests/src/Functional/PanelizerTestTrait.php index a5e47ea6f..9ef589992 100644 --- a/modules/distro/panelizer/tests/src/Functional/PanelizerTestTrait.php +++ b/modules/distro/panelizer/tests/src/Functional/PanelizerTestTrait.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\panelizer\Functional; +use Drupal\Core\Url; use Drupal\user\Entity\User; /** @@ -74,24 +75,27 @@ protected function createTestNode($type = 'page') { * (optional) Additional form values. */ protected function panelize($content_type = 'page', $display = NULL, array $values = []) { + /** @var \Drupal\Tests\WebAssert $assert_sesion */ + $assert_session = $this->assertSession(); + $this->drupalGet("admin/structure/types"); - $this->assertResponse(200); + $assert_session->statusCodeEquals(200); $this->drupalGet("admin/structure/types/manage/{$content_type}"); - $this->assertResponse(200); + $assert_session->statusCodeEquals(200); $path = "admin/structure/types/manage/{$content_type}/display"; if (!empty($display)) { $path .= '/' . $display; } $this->drupalGet($path); - $this->assertResponse(200); + $assert_session->statusCodeEquals(200); $edit = [ 'panelizer[enable]' => TRUE, ] + $values; - $this->drupalPostForm(NULL, $edit, t('Save')); - $this->assertResponse(200); + $this->submitForm($edit, t('Save')); + $assert_session->statusCodeEquals(200); \Drupal::service('entity_display.repository')->getFormDisplay('node', $content_type, 'default') ->setComponent('panelizer', [ @@ -114,14 +118,17 @@ protected function panelize($content_type = 'page', $display = NULL, array $valu * (optional) Additional form values. */ protected function unpanelize($content_type = 'page', $display = NULL, array $values = []) { + /** @var \Drupal\Tests\WebAssert $assert_sesion */ + $assert_session = $this->assertSession(); + $this->drupalGet("admin/structure/types/manage/{$content_type}/display/{$display}"); - $this->assertResponse(200); + $assert_session->statusCodeEquals(200); $edit = [ 'panelizer[enable]' => FALSE, ] + $values; - $this->drupalPostForm(NULL, $edit, t('Save')); - $this->assertResponse(200); + $this->submitForm($edit, t('Save')); + $assert_session->statusCodeEquals(200); \Drupal::service('entity_display.repository')->getFormDisplay('node', $content_type, 'default') ->removeComponent('panelizer') @@ -136,6 +143,9 @@ protected function unpanelize($content_type = 'page', $display = NULL, array $va * 'page'. */ protected function addPanelizerDefault($content_type = 'page', $display = 'default') { + /** @var \Drupal\Tests\WebAssert $assert_sesion */ + $assert_session = $this->assertSession(); + $label = $this->getRandomGenerator()->word(16); $id = strtolower($label); $default_id = "node__{$content_type}__{$display}__{$id}"; @@ -149,7 +159,7 @@ protected function addPanelizerDefault($content_type = 'page', $display = 'defau $path .= '/' . $display; } $this->drupalGet($path); - $this->assertResponse(200); + $assert_session->statusCodeEquals(200); $this->clickLink('Add a new Panelizer default display'); // Step 1: Enter the default's label and ID. @@ -157,18 +167,19 @@ protected function addPanelizerDefault($content_type = 'page', $display = 'defau 'id' => $id, 'label' => $label, ]; - $this->drupalPostForm(NULL, $edit, t('Next')); - $this->assertResponse(200); + $this->submitForm($edit, t('Next')); + $assert_session->statusCodeEquals(200); // Step 2: Define contexts. - $this->assertUrl("admin/structure/panelizer/add/{$default_id}/contexts", $options); - $this->drupalPostForm(NULL, [], t('Next')); - $this->assertResponse(200); + + $assert_session->addressEquals(Url::fromUserInput("/admin/structure/panelizer/add/{$default_id}/contexts", $options)->toString()); + $this->submitForm([], t('Next')); + $assert_session->statusCodeEquals(200); // Step 3: Select layout. - $this->assertUrl("admin/structure/panelizer/add/{$default_id}/layout", $options); - $this->drupalPostForm(NULL, [], t('Next')); - $this->assertResponse(200); + $assert_session->addressEquals(Url::fromUserInput("/admin/structure/panelizer/add/{$default_id}/layout", $options)->toString()); + $this->submitForm([], t('Next')); + $assert_session->statusCodeEquals(200); // Step 4: If the layout has settings (new since Drupal 8.8), accept the // defaults. @@ -180,9 +191,9 @@ protected function addPanelizerDefault($content_type = 'page', $display = 'defau } // Step 5: Select content. - $this->assertUrl("admin/structure/panelizer/add/{$default_id}/content", $options); - $this->drupalPostForm(NULL, [], t('Finish')); - $this->assertResponse(200); + $assert_session->addressEquals(Url::fromUserInput("/admin/structure/panelizer/add/{$default_id}/content", $options)->toString()); + $this->submitForm([], t('Finish')); + $assert_session->statusCodeEquals(200); return $id; } @@ -199,10 +210,13 @@ protected function addPanelizerDefault($content_type = 'page', $display = 'defau * (optional) The default ID. */ protected function deletePanelizerDefault($content_type = 'page', $display = 'default', $id = 'default') { + /** @var \Drupal\Tests\WebAssert $assert_sesion */ + $assert_session = $this->assertSession(); + $this->drupalGet("admin/structure/panelizer/delete/node__{$content_type}__{$display}__{$id}"); - $this->assertResponse(200); - $this->drupalPostForm(NULL, [], t('Confirm')); - $this->assertResponse(200); + $assert_session->statusCodeEquals(200); + $this->submitForm([], t('Confirm')); + $assert_session->statusCodeEquals(200); } /** diff --git a/modules/distro/panelizer/tests/src/Functional/PanelizerUserFunctionalTest.php b/modules/distro/panelizer/tests/src/Functional/PanelizerUserFunctionalTest.php index 40e57991a..a5494d953 100644 --- a/modules/distro/panelizer/tests/src/Functional/PanelizerUserFunctionalTest.php +++ b/modules/distro/panelizer/tests/src/Functional/PanelizerUserFunctionalTest.php @@ -97,7 +97,7 @@ public function testPanelizerDefault() { // Check the user entity page. $out = $this->drupalGet('user/' . $account->id()); $this->assertSession()->statusCodeEquals(200); - $this->verbose($out); + dump($out); // Verify that $elements = $this->xpath('//*[@id="panels-ipe-content"]'); diff --git a/modules/distro/panelizer/tests/src/Functional/Update/PanelizerLayoutIDUpdateTest.php b/modules/distro/panelizer/tests/src/Functional/Update/PanelizerLayoutIDUpdateTest.php index d7fd728f1..8e57090b2 100644 --- a/modules/distro/panelizer/tests/src/Functional/Update/PanelizerLayoutIDUpdateTest.php +++ b/modules/distro/panelizer/tests/src/Functional/Update/PanelizerLayoutIDUpdateTest.php @@ -16,7 +16,7 @@ class PanelizerLayoutIDUpdateTest extends UpdatePathTestBase { */ protected function setDatabaseDumpFiles() { $this->databaseDumpFiles = [ - $this->getDrupalRoot() . '/core/modules/system/tests/fixtures/update/drupal-8.8.0.bare.standard.php.gz', + $this->getDrupalRoot() . '/core/modules/system/tests/fixtures/update/drupal-9.4.0.bare.standard.php.gz', __DIR__ . '/../../../fixtures/update/drupal-8.8.panelizer.minimal.php.gz', ]; } diff --git a/modules/distro/panelizer/tests/src/FunctionalJavascript/PanelizerIntegrationTest.php b/modules/distro/panelizer/tests/src/FunctionalJavascript/PanelizerIntegrationTest.php index 2a2b38911..fc8f4468f 100644 --- a/modules/distro/panelizer/tests/src/FunctionalJavascript/PanelizerIntegrationTest.php +++ b/modules/distro/panelizer/tests/src/FunctionalJavascript/PanelizerIntegrationTest.php @@ -52,10 +52,9 @@ protected function setUp(): void { 'access content', 'access panels in-place editing', 'administer blocks', - 'administer content types', - 'administer nodes', 'administer node display', 'administer panelizer', + 'bypass node access', ]); $this->drupalLogin($admin_user);