set('paragraphs_test_dragdrop_force_show', TRUE); $this->addParagraphedContentType('paragraphed_test'); $this->loginAsAdmin([ 'create paragraphed_test content', 'edit any paragraphed_test content', ]); // Add a Paragraph type. $paragraph_type = 'text_paragraph'; $this->addParagraphsType($paragraph_type); // Add a text field to the text_paragraph type. static::fieldUIAddNewField( 'admin/structure/paragraphs_type/' . $paragraph_type, 'text', 'Text', 'text_long', [], [] ); // Add 2 paragraphs and check for Collapse/Edit all button. $this->drupalGet('node/add/paragraphed_test'); $this->assertNoRaw('field_paragraphs_collapse_all'); $this->assertNoRaw('field_paragraphs_edit_all'); $this->assertRaw('field_paragraphs_dragdrop_mode'); // Ensure there is only a single table row. $table_rows = $this->xpath('//table[contains(@class, :class)]/tbody/tr', [':class' => 'field-multiple-table']); $this->assertEqual(1, count($table_rows)); // Add second paragraph and check for Collapse/Edit all button. $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_text_paragraph_add_more'); $this->assertRaw('field_paragraphs_collapse_all'); $this->assertRaw('field_paragraphs_edit_all'); $edit = [ 'field_paragraphs[0][subform][field_text][0][value]' => 'First text', 'field_paragraphs[1][subform][field_text][0][value]' => 'Second text', ]; $this->drupalPostForm(NULL, $edit, 'Collapse all'); // Checks that after collapsing all we can edit again these paragraphs. $this->assertRaw('field_paragraphs_0_edit'); $this->assertRaw('field_paragraphs_1_edit'); // Test Edit all button. $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_edit_all'); $this->assertRaw('field_paragraphs_0_collapse'); $this->assertRaw('field_paragraphs_1_collapse'); $edit = [ 'title[0][value]' => 'Test', ]; $this->drupalPostForm(NULL, $edit, t('Save')); $this->assertText('paragraphed_test Test has been created.'); $node = $this->getNodeByTitle('Test'); $this->drupalGet('node/' . $node->id()); $this->clickLink('Edit'); $this->assertNoText('No Paragraph added yet.'); // Add and remove another paragraph. $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_text_paragraph_add_more'); $edit = [ 'field_paragraphs[2][subform][field_text][0][value]' => 'Third text', ]; $this->drupalPostAjaxForm(NULL, $edit, 'field_paragraphs_2_remove'); // Check that pressing "Collapse all" does not restore the removed // paragraph. $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_edit_all'); $this->assertText('First text'); $this->assertText('Second text'); $this->assertNoText('Third text'); // Check that pressing "Edit all" does not restore the removed paragraph, // either. $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_collapse_all'); $this->assertText('First text'); $this->assertText('Second text'); $this->assertNoText('Third text'); } /** * Tests that header actions works fine with nesting. */ public function testHeaderActionsWithNesting() { $this->addParagraphedContentType('paragraphed_test'); $this->loginAsAdmin([ 'create paragraphed_test content', 'edit any paragraphed_test content', ]); // Add Paragraph types. $nested_paragraph_type = 'nested_paragraph'; $this->addParagraphsType($nested_paragraph_type); $paragraph_type = 'text'; $this->addParagraphsType($paragraph_type); // Add a text field to the text_paragraph type. static::fieldUIAddNewField( 'admin/structure/paragraphs_type/' . $paragraph_type, 'text', 'Text', 'text_long', [], [] ); // Add a ERR paragraph field to the nested_paragraph type. static::fieldUIAddNewField( 'admin/structure/paragraphs_type/' . $nested_paragraph_type, 'nested', 'Nested', 'field_ui:entity_reference_revisions:paragraph', [ 'settings[target_type]' => 'paragraph', 'cardinality' => '-1', ], [] ); // Checks that Collapse/Edit all button is presented. $this->drupalGet('node/add/paragraphed_test'); $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_nested_paragraph_add_more'); $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_text_add_more'); $this->assertRaw('field_paragraphs_collapse_all'); $this->assertRaw('field_paragraphs_edit_all'); $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_text_add_more'); $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_0_subform_field_nested_text_add_more'); $this->assertNoRaw('field_paragraphs_0_collapse_all'); $this->assertNoRaw('field_paragraphs_0_edit_all'); $edit = [ 'field_paragraphs[0][subform][field_nested][0][subform][field_text][0][value]' => 'Nested text', 'field_paragraphs[1][subform][field_text][0][value]' => 'Second text paragraph', ]; $this->drupalPostForm(NULL, $edit, 'Collapse all'); $this->assertRaw('field-paragraphs-0-edit'); $this->assertFieldByXPath((new CssSelectorConverter())->toXPath('[name="field_paragraphs_1_edit"] + .paragraphs-dropdown')); $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_edit_all'); $this->assertRaw('field-paragraphs-0-collapse'); $edit = [ 'title[0][value]' => 'Test', ]; $this->drupalPostForm(NULL, $edit, t('Save')); $this->assertText('paragraphed_test Test has been created.'); $node = $this->getNodeByTitle('Test'); $this->drupalGet('node/' . $node->id()); $this->clickLink('Edit'); $this->assertNoText('No Paragraph added yet.'); } /** * Tests header actions with multi fields. */ public function testHeaderActionsWithMultiFields() { $this->addParagraphedContentType('paragraphed_test'); $this->loginAsAdmin([ 'create paragraphed_test content', 'edit any paragraphed_test content', ]); $this->drupalGet('/admin/structure/types/manage/paragraphed_test/fields/add-field'); // Add a Paragraph type. $paragraph_type = 'text_paragraph'; $this->addParagraphsType($paragraph_type); $edit = [ 'new_storage_type' => 'field_ui:entity_reference_revisions:paragraph', 'label' => 'Second paragraph', 'field_name' => 'second', ]; $this->drupalPostForm(NULL, $edit, 'Save and continue'); $this->drupalPostForm(NULL, [], 'Save field settings'); $this->drupalPostForm(NULL, [], 'Save settings'); $this->drupalGet('/admin/structure/types/manage/paragraphed_test/form-display'); $edit = [ 'fields[field_second][type]' => 'paragraphs', ]; $this->drupalPostForm(NULL, $edit, 'Save'); // Add a text field to the text_paragraph type. static::fieldUIAddNewField( 'admin/structure/paragraphs_type/' . $paragraph_type, 'text', 'Text', 'text_long', [], [] ); $this->drupalGet('node/add/paragraphed_test'); $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_text_paragraph_add_more'); $this->drupalPostAjaxForm(NULL, [], 'field_second_text_paragraph_add_more'); // Checks that we have Collapse\Edit all for each field. $this->assertRaw('field_paragraphs_collapse_all'); $this->assertRaw('field_paragraphs_edit_all'); $this->assertRaw('field_second_collapse_all'); $this->assertRaw('field_second_edit_all'); $edit = [ 'field_second[0][subform][field_text][0][value]' => 'Second field', ]; $this->drupalPostAjaxForm(NULL, $edit, 'field_second_collapse_all'); // Checks that we collapsed only children from second field. $this->assertNoRaw('field_paragraphs_0_edit'); $this->assertRaw('field_second_0_edit'); $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_collapse_all'); $this->assertRaw('field_paragraphs_0_edit'); $this->assertRaw('field_second_0_edit'); $this->drupalPostAjaxForm(NULL, [], 'field_second_edit_all'); $this->assertRaw('field_second_0_collapse'); $edit = [ 'title[0][value]' => 'Test', ]; $this->drupalPostForm(NULL, $edit, t('Save')); $this->assertText('paragraphed_test Test has been created.'); $node = $this->getNodeByTitle('Test'); $this->drupalGet('node/' . $node->id()); $this->clickLink('Edit'); $this->assertNoText('No Paragraph added yet.'); } }