Commit 96d43380 authored by catch's avatar catch
Browse files

Issue #3168375 by mondrake, manishsaharan29497, longwave: Convert calls to...

Issue #3168375 by mondrake, manishsaharan29497, longwave: Convert calls to drupalPostForm(NULL, ...) to submitForm
parent 2c757bac
......@@ -62,7 +62,7 @@ public function testActionConfiguration() {
$new_action_label = $this->randomMachineName();
$edit['label'] = $new_action_label;
$edit['url'] = 'admin';
$this->drupalPostForm(NULL, $edit, 'Save');
$this->submitForm($edit, 'Save');
$this->assertSession()->statusCodeEquals(200);
// Make sure that the action updated properly.
......@@ -79,7 +79,7 @@ public function testActionConfiguration() {
$this->clickLink(t('Delete'));
$this->assertSession()->statusCodeEquals(200);
$edit = [];
$this->drupalPostForm(NULL, $edit, 'Delete');
$this->submitForm($edit, 'Delete');
$this->assertSession()->statusCodeEquals(200);
// Make sure that the action was actually deleted.
......
......@@ -47,7 +47,7 @@ public function testCachePerPage() {
// Make sure that we're currently still on /test-page after submitting the
// form.
$this->drupalPostForm(NULL, $form_values, 'Submit');
$this->submitForm($form_values, 'Submit');
$this->assertSession()->addressEquals('test-page');
$this->assertText('Your email address is test@example.com');
......@@ -59,7 +59,7 @@ public function testCachePerPage() {
// Make sure that submitting the form didn't redirect us to the first page
// we submitted the form from after submitting the form from
// /test-render-title.
$this->drupalPostForm(NULL, $form_values, 'Submit');
$this->submitForm($form_values, 'Submit');
$this->assertSession()->addressEquals('test-render-title');
$this->assertText('Your email address is test@example.com');
}
......
......@@ -44,7 +44,7 @@ public function testBlockVisibility() {
$this->drupalGet('admin/structure/block/add/' . $block_name . '/' . $default_theme);
$this->assertSession()->checkboxChecked('edit-visibility-request-path-negate-0');
$this->drupalPostForm(NULL, $edit, 'Save block');
$this->submitForm($edit, 'Save block');
$this->assertText('The block configuration has been saved.', 'Block was saved');
$this->clickLink('Configure');
......@@ -90,7 +90,7 @@ public function testBlockToggleVisibility() {
$edit = [
'visibility[user_role][roles][' . RoleInterface::AUTHENTICATED_ID . ']' => FALSE,
];
$this->drupalPostForm(NULL, $edit, 'Save block');
$this->submitForm($edit, 'Save block');
$this->clickLink('Configure');
$this->assertSession()->checkboxNotChecked('edit-visibility-user-role-roles-authenticated');
......@@ -230,7 +230,7 @@ public function testBlock() {
$this->drupalGet('admin/structure/block/manage/' . $block['id']);
$this->clickLink(t('Remove block'));
$this->assertRaw(t('Are you sure you want to remove the block @name?', ['@name' => $block['settings[label]']]));
$this->drupalPostForm(NULL, [], 'Remove');
$this->submitForm([], 'Remove');
$this->assertRaw(t('The block %name has been removed.', ['%name' => $block['settings[label]']]));
// Test deleting a block via "Configure block" link.
......@@ -238,7 +238,7 @@ public function testBlock() {
$this->drupalGet('admin/structure/block/manage/' . $block->id(), ['query' => ['destination' => 'admin']]);
$this->clickLink(t('Remove block'));
$this->assertRaw(t('Are you sure you want to remove the block @name?', ['@name' => $block->label()]));
$this->drupalPostForm(NULL, [], 'Remove');
$this->submitForm([], 'Remove');
$this->assertRaw(t('The block %name has been removed.', ['%name' => $block->label()]));
$this->assertSession()->addressEquals('admin');
$this->assertNoRaw($block->id());
......
......@@ -262,7 +262,7 @@ public function testContextAwareBlocks() {
$edit = [
'settings[context_mapping][user]' => '',
];
$this->drupalPostForm(NULL, $edit, 'Save block');
$this->submitForm($edit, 'Save block');
$this->drupalGet('');
$this->assertText('No context mapping selected.');
$this->assertNoText('User context found.');
......@@ -330,7 +330,7 @@ public function testBlockPlacementIndicator() {
$this->assertSession()->addressEquals('admin/structure/block/list/classy?block-placement=' . Html::getClass($block['id']));
// Resaving the block page will remove the block placement indicator.
$this->drupalPostForm(NULL, [], 'Save blocks');
$this->submitForm([], 'Save blocks');
$this->assertSession()->addressEquals('admin/structure/block/list/classy');
// Place another block and test the remove functionality works with the
......
......@@ -105,13 +105,13 @@ public function testBlockCategory() {
$this->assertTrue(!empty($link));
$this->clickLink(t('Lists (Views)'));
$category = $this->randomString();
$this->drupalPostForm(NULL, ['block_category' => $category], 'Apply');
$this->submitForm(['block_category' => $category], 'Apply');
// Duplicate the block after changing the category.
$this->drupalPostForm(NULL, [], 'Duplicate Block');
$this->submitForm([], 'Duplicate Block');
$this->assertSession()->addressEquals('admin/structure/views/view/' . $edit['id'] . '/edit/block_3');
$this->drupalPostForm(NULL, [], 'Save');
$this->submitForm([], 'Save');
// Test that the blocks are listed under the correct categories.
$arguments[':category'] = $category;
......@@ -209,7 +209,7 @@ public function testViewsBlockForm() {
// Save the block.
$edit = ['region' => 'content'];
$this->drupalPostForm(NULL, $edit, 'Save block');
$this->submitForm($edit, 'Save block');
$storage = $this->container->get('entity_type.manager')->getStorage('block');
$block = $storage->load('views_block__test_view_block_block_1');
// This will only return a result if our new block has been created with the
......
......@@ -96,7 +96,7 @@ public function testBlockContentCreationMultipleViewModes() {
'id' => 'test_view_mode',
'label' => 'Test View Mode',
];
$this->drupalPostForm(NULL, $edit, 'Save');
$this->submitForm($edit, 'Save');
$this->assertRaw(t('Saved the %label view mode.', ['%label' => $edit['label']]));
$this->drupalLogin($this->adminUser);
......@@ -114,7 +114,7 @@ public function testBlockContentCreationMultipleViewModes() {
]));
// Save our block permanently
$this->drupalPostForm(NULL, ['region' => 'content'], 'Save block');
$this->submitForm(['region' => 'content'], 'Save block');
// Set test_view_mode as a custom display to be available on the list.
$this->drupalGet('admin/structure/block/block-content');
......@@ -124,7 +124,7 @@ public function testBlockContentCreationMultipleViewModes() {
$custom_view_mode = [
'display_modes_custom[test_view_mode]' => 1,
];
$this->drupalPostForm(NULL, $custom_view_mode, 'Save');
$this->submitForm($custom_view_mode, 'Save');
// Go to the configure page and change the view mode.
$this->drupalGet('admin/structure/block/manage/testblock');
......@@ -136,7 +136,7 @@ public function testBlockContentCreationMultipleViewModes() {
$this->assertSession()->optionExists('edit-settings-view-mode', 'test_view_mode');
$view_mode['settings[view_mode]'] = 'test_view_mode';
$this->drupalPostForm(NULL, $view_mode, 'Save block');
$this->submitForm($view_mode, 'Save block');
// Check that the view mode setting is shown because more than one exists.
$this->drupalGet('admin/structure/block/manage/testblock');
......@@ -145,7 +145,7 @@ public function testBlockContentCreationMultipleViewModes() {
// Change the view mode.
$view_mode['region'] = 'content';
$view_mode['settings[view_mode]'] = 'test_view_mode';
$this->drupalPostForm(NULL, $view_mode, 'Save block');
$this->submitForm($view_mode, 'Save block');
// Go to the configure page and verify the view mode has changed.
$this->drupalGet('admin/structure/block/manage/testblock');
......@@ -254,7 +254,7 @@ public function testBlockDelete() {
$this->drupalGet('block/1/delete');
$this->assertText('This will also remove 1 placed block instance.');
$this->drupalPostForm(NULL, [], 'Delete');
$this->submitForm([], 'Delete');
$this->assertRaw(t('The custom block %name has been deleted.', ['%name' => $edit['info[0][value]']]));
// Create another block and force the plugin cache to flush.
......
......@@ -64,7 +64,7 @@ public function testListing() {
$edit = [];
$edit['info[0][value]'] = $label;
$edit['body[0][value]'] = $this->randomMachineName(16);
$this->drupalPostForm(NULL, $edit, 'Save');
$this->submitForm($edit, 'Save');
// Confirm that once the user returns to the listing, the text of the label
// (versus elsewhere on the page).
......@@ -90,7 +90,7 @@ public function testListing() {
$this->assertSession()->statusCodeEquals(200);
$this->assertSession()->titleEquals("Edit custom block $label | Drupal");
$edit = ['info[0][value]' => $new_label];
$this->drupalPostForm(NULL, $edit, 'Save');
$this->submitForm($edit, 'Save');
}
else {
$this->fail('Did not find Albatross block in the database.');
......@@ -105,7 +105,7 @@ public function testListing() {
$this->clickLink('Delete');
$this->assertSession()->statusCodeEquals(200);
$this->assertSession()->titleEquals("Are you sure you want to delete the custom block $new_label? | Drupal");
$this->drupalPostForm(NULL, [], 'Delete');
$this->submitForm([], 'Delete');
// Verify that the text of the label and machine name does not appear in
// the list (though it may appear elsewhere on the page).
......
......@@ -76,7 +76,7 @@ public function testListing() {
$edit = [];
$edit['info[0][value]'] = $label;
$edit['body[0][value]'] = $this->randomMachineName(16);
$this->drupalPostForm(NULL, $edit, 'Save');
$this->submitForm($edit, 'Save');
// Confirm that once the user returns to the listing, the text of the label
// (versus elsewhere on the page).
......@@ -102,7 +102,7 @@ public function testListing() {
$this->assertSession()->statusCodeEquals(200);
$this->assertSession()->titleEquals("Edit custom block $label | Drupal");
$edit = ['info[0][value]' => $new_label];
$this->drupalPostForm(NULL, $edit, 'Save');
$this->submitForm($edit, 'Save');
}
else {
$this->fail('Did not find Albatross block in the database.');
......@@ -117,7 +117,7 @@ public function testListing() {
$this->clickLink('Delete');
$this->assertSession()->statusCodeEquals(200);
$this->assertSession()->titleEquals("Are you sure you want to delete the custom block $new_label? | Drupal");
$this->drupalPostForm(NULL, [], 'Delete');
$this->submitForm([], 'Delete');
// Verify that the text of the label and machine name does not appear in
// the list (though it may appear elsewhere on the page).
......
......@@ -68,7 +68,7 @@ public function testBlockContentTypeCreation() {
'id' => 'foo',
'label' => 'title for foo',
];
$this->drupalPostForm(NULL, $edit, 'Save');
$this->submitForm($edit, 'Save');
$block_type = BlockContentType::load('foo');
$this->assertInstanceOf(BlockContentType::class, $block_type);
......@@ -121,7 +121,7 @@ public function testBlockContentTypeEditing() {
];
$this->drupalGet('admin/structure/block/block-content/manage/basic');
$this->assertSession()->titleEquals('Edit basic custom block type | Drupal');
$this->drupalPostForm(NULL, $edit, 'Save');
$this->submitForm($edit, 'Save');
$front_page_path = Url::fromRoute('<front>')->toString();
$this->assertBreadcrumb('admin/structure/block/block-content/manage/basic/fields', [
$front_page_path => 'Home',
......@@ -221,12 +221,12 @@ public function testsBlockContentAddTypes() {
}
// Create a new block.
$edit = ['info[0][value]' => $this->randomMachineName(8)];
$this->drupalPostForm(NULL, $edit, 'Save');
$this->submitForm($edit, 'Save');
$blocks = $storage->loadByProperties(['info' => $edit['info[0][value]']]);
if (!empty($blocks)) {
$block = reset($blocks);
$this->assertSession()->addressEquals(Url::fromRoute('block.admin_add', ['plugin_id' => 'block_content:' . $block->uuid(), 'theme' => $theme]));
$this->drupalPostForm(NULL, ['region' => 'content'], 'Save block');
$this->submitForm(['region' => 'content'], 'Save block');
$this->assertSession()->addressEquals(Url::fromRoute('block.admin_display_theme', ['theme' => $theme], ['query' => ['block-placement' => Html::getClass($edit['info[0][value]'])]]));
}
else {
......@@ -241,7 +241,7 @@ public function testsBlockContentAddTypes() {
$this->clickLink(t('Add custom block'));
$this->clickLink('foo');
$edit = ['info[0][value]' => $this->randomMachineName(8)];
$this->drupalPostForm(NULL, $edit, 'Save');
$this->submitForm($edit, 'Save');
$blocks = $storage->loadByProperties(['info' => $edit['info[0][value]']]);
if (!empty($blocks)) {
$this->assertSession()->addressEquals(Url::fromRoute('entity.block_content.collection'));
......
......@@ -51,7 +51,7 @@ public function testPageEdit() {
$edit[$title_key] = $this->randomMachineName(8);
$edit[$body_key] = $this->randomMachineName(16);
// Stay on the current page, without reloading.
$this->drupalPostForm(NULL, $edit, 'Save');
$this->submitForm($edit, 'Save');
// Edit the same block, creating a new revision.
$this->drupalGet("block/" . $block->id());
......@@ -59,7 +59,7 @@ public function testPageEdit() {
$edit['info[0][value]'] = $this->randomMachineName(8);
$edit[$body_key] = $this->randomMachineName(16);
$edit['revision'] = TRUE;
$this->drupalPostForm(NULL, $edit, 'Save');
$this->submitForm($edit, 'Save');
// Ensure that the block revision has been created.
\Drupal::entityTypeManager()->getStorage('block_content')->resetCache([$block->id()]);
......
......@@ -40,7 +40,7 @@ public function testRedirectDestination() {
$edit = [];
$edit['info[0][value]'] = 'Test redirect destination';
$edit['body[0][value]'] = $this->randomMachineName(16);
$this->drupalPostForm(NULL, $edit, 'Save');
$this->submitForm($edit, 'Save');
// Check the block content is present in the view redirect destination.
$this->drupalGet('admin/content/redirect_destination');
......@@ -48,7 +48,7 @@ public function testRedirectDestination() {
// Edit the created block and save.
$this->clickLink('Edit');
$this->drupalPostForm(NULL, [], 'Save');
$this->submitForm([], 'Save');
$this->assertSession()->addressEquals('admin/content/redirect_destination');
}
......
......@@ -137,7 +137,7 @@ protected function createBookNode($book_nid, $parent = NULL) {
$this->drupalPostForm('node/add/book', $edit, 'Change book (update list of parents)');
$edit['book[pid]'] = $parent;
$this->drupalPostForm(NULL, $edit, 'Save');
$this->submitForm($edit, 'Save');
// Make sure the parent was flagged as having children.
$parent_node = \Drupal::entityTypeManager()->getStorage('node')->loadUnchanged($parent);
$this->assertFalse(empty($parent_node->book['has_children']), 'Parent node is marked as having children');
......
......@@ -194,7 +194,7 @@ public function createBookNode($book_nid, $parent = NULL, $edit = []) {
$this->drupalPostForm('node/add/book', $edit, 'Change book (update list of parents)');
$edit['book[pid]'] = $parent;
$this->drupalPostForm(NULL, $edit, 'Save');
$this->submitForm($edit, 'Save');
// Make sure the parent was flagged as having children.
$parent_node = \Drupal::entityTypeManager()->getStorage('node')->loadUnchanged($parent);
$this->assertFalse(empty($parent_node->book['has_children']), 'Parent node is marked as having children');
......
......@@ -124,7 +124,7 @@ protected function createBookNode($book_nid, $parent = NULL) {
$this->drupalPostForm('node/add/book', $edit, 'Change book (update list of parents)');
$edit['book[pid]'] = $parent;
$this->drupalPostForm(NULL, $edit, 'Save');
$this->submitForm($edit, 'Save');
// Make sure the parent was flagged as having children.
$parent_node = \Drupal::entityTypeManager()->getStorage('node')->loadUnchanged($parent);
$this->assertFalse(empty($parent_node->book['has_children']), 'Parent node is marked as having children');
......
......@@ -78,7 +78,7 @@ public function testExistingFormat() {
$edit = [
'editor[editor]' => 'ckeditor',
];
$this->drupalPostForm(NULL, $edit, 'Save configuration');
$this->submitForm($edit, 'Save configuration');
$this->assertRaw(t('You must configure the selected text editor.'));
// Ensure the CKEditor editor returns the expected default settings.
......@@ -115,7 +115,7 @@ public function testExistingFormat() {
$this->assertEquals($expected_default_settings, $ckeditor->getDefaultSettings());
// Keep the "CKEditor" editor selected and click the "Configure" button.
$this->drupalPostForm(NULL, $edit, 'editor_configure');
$this->submitForm($edit, 'editor_configure');
$editor = Editor::load('filtered_html');
$this->assertNull($editor, 'No Editor config entity exists yet.');
......@@ -144,7 +144,7 @@ public function testExistingFormat() {
$this->assertCount(1, $styles_textarea, 'The "styles" textarea exists.');
// Submit the form to save the selection of CKEditor as the chosen editor.
$this->drupalPostForm(NULL, $edit, 'Save configuration');
$this->submitForm($edit, 'Save configuration');
// Ensure an Editor object exists now, with the proper settings.
$expected_settings = $expected_default_settings;
......@@ -158,7 +158,7 @@ public function testExistingFormat() {
$edit = [
'editor[settings][plugins][stylescombo][styles]' => "h1.title|Title\np.callout|Callout\n\n",
];
$this->drupalPostForm(NULL, $edit, 'Save configuration');
$this->submitForm($edit, 'Save configuration');
$expected_settings['plugins']['stylescombo']['styles'] = "h1.title|Title\np.callout|Callout\n\n";
$editor = Editor::load('filtered_html');
$this->assertInstanceOf(Editor::class, $editor);
......@@ -175,7 +175,7 @@ public function testExistingFormat() {
$edit = [
'editor[settings][toolbar][button_groups]' => json_encode($expected_settings['toolbar']['rows']),
];
$this->drupalPostForm(NULL, $edit, 'Save configuration');
$this->submitForm($edit, 'Save configuration');
$editor = Editor::load('filtered_html');
$this->assertInstanceOf(Editor::class, $editor);
$this->assertEqual($expected_settings, $editor->getSettings(), 'The Editor config entity has the correct settings.');
......@@ -213,7 +213,7 @@ public function testExistingFormat() {
$edit = [
'editor[settings][plugins][llama_contextual_and_button][ultra_llama_mode]' => '1',
];
$this->drupalPostForm(NULL, $edit, 'Save configuration');
$this->submitForm($edit, 'Save configuration');
$this->drupalGet('admin/config/content/formats/manage/filtered_html');
$ultra_llama_mode_checkbox = $this->xpath('//input[@type="checkbox" and @name="editor[settings][plugins][llama_contextual_and_button][ultra_llama_mode]" and @checked="checked"]');
$this->assertCount(1, $ultra_llama_mode_checkbox, 'The "Ultra llama mode" checkbox exists and is checked.');
......@@ -264,7 +264,7 @@ public function testNewFormat() {
'format' => 'amazing_format',
'editor[editor]' => 'ckeditor',
];
$this->drupalPostForm(NULL, $edit, 'editor_configure');
$this->submitForm($edit, 'editor_configure');
$filter_format = FilterFormat::load('amazing_format');
$this->assertNull($filter_format, 'No FilterFormat config entity exists yet.');
$editor = Editor::load('amazing_format');
......@@ -289,7 +289,7 @@ public function testNewFormat() {
// Submit the form to create both a new text format and an associated text
// editor.
$this->drupalPostForm(NULL, $edit, 'Save configuration');
$this->submitForm($edit, 'Save configuration');
// Ensure a FilterFormat object exists now.
$filter_format = FilterFormat::load('amazing_format');
......
......@@ -82,7 +82,7 @@ public function testExistingFormat() {
$edit = [
'editor[settings][plugins][stylescombo][styles]' => "h1.title|Title\np.callout|Callout\ndrupal-entity.has-dashes|Allowing Dashes\n\n",
];
$this->drupalPostForm(NULL, $edit, 'Save configuration');
$this->submitForm($edit, 'Save configuration');
$expected_settings['plugins']['stylescombo']['styles'] = "h1.title|Title\np.callout|Callout\ndrupal-entity.has-dashes|Allowing Dashes\n\n";
$editor = Editor::load($this->format);
$this->assertEqual($expected_settings, $editor->getSettings(), 'The Editor config entity has the correct settings.');
......@@ -94,7 +94,7 @@ public function testExistingFormat() {
$edit = [
'editor[settings][plugins][stylescombo][styles]' => "h1.title|Title\np.callout|Title\n\n",
];
$this->drupalPostForm(NULL, $edit, 'Save configuration');
$this->submitForm($edit, 'Save configuration');
$this->assertRaw(t('Each style must have a unique label.'));
$editor = Editor::load($this->format);
$this->assertEqual($expected_settings, $editor->getSettings(), 'The Editor config entity has the correct settings.');
......
......@@ -88,7 +88,7 @@ public function testApprovalAdminInterface() {
"comments[{$comments[0]->id()}]" => 1,
"comments[{$comments[1]->id()}]" => 1,
];
$this->drupalPostForm(NULL, $edit, 'Update');
$this->submitForm($edit, 'Update');
$this->assertText('Unapproved comments (0)', 'All comments were approved.');
// Delete multiple comments in one operation.
......@@ -98,15 +98,15 @@ public function testApprovalAdminInterface() {
"comments[{$comments[1]->id()}]" => 1,
"comments[{$anonymous_comment4->id()}]" => 1,
];
$this->drupalPostForm(NULL, $edit, 'Update');
$this->submitForm($edit, 'Update');
$this->assertText('Are you sure you want to delete these comments and all their children?', 'Confirmation required.');
$this->drupalPostForm(NULL, [], 'Delete');
$this->submitForm([], 'Delete');
$this->assertText('No comments available.', 'All comments were deleted.');
// Test message when no comments selected.
$edit = [
'operation' => 'delete',
];
$this->drupalPostForm(NULL, $edit, 'Update');
$this->submitForm($edit, 'Update');
$this->assertText('Select one or more comments to perform the update on.');
// Make sure the label of unpublished node is not visible on listing page.
......@@ -281,7 +281,7 @@ public function testCommentedTranslationDeletion() {
$this->assertRaw(new FormattableMarkup('@label (Original translation) - <em>The following comment translations will be deleted:</em>', ['@label' => $comment2->label()]));
$this->assertText('English');
$this->assertText('Urdu');
$this->drupalPostForm(NULL, [], 'Delete');
$this->submitForm([], 'Delete');
$after_count = $count_query->execute();
$this->assertEqual($after_count, $before_count, 'No comment or translation found.');
}
......
......@@ -208,7 +208,7 @@ public function testCommentInstallAfterContentModule() {
$edit = [];
$edit['uninstall[comment]'] = TRUE;
$this->drupalPostForm('admin/modules/uninstall', $edit, 'Uninstall');
$this->drupalPostForm(NULL, [], 'Uninstall');
$this->submitForm([], 'Uninstall');
$this->rebuildContainer();
$this->assertFalse($this->container->get('module_handler')->moduleExists('comment'), 'Comment module uninstalled.');
......
......@@ -288,7 +288,7 @@ public function testAutoFilledHtmlSubject() {
'comment_body[0][value]' => $body_text1,
'comment_body[0][format]' => 'filtered_html',
];
$this->drupalPostForm(NULL, $edit1, 'Save');
$this->submitForm($edit1, 'Save');
$this->assertEqual('Hello World', Comment::load(1)->getSubject());
// If there's nothing other than HTML, the subject should be '(No subject)'.
......@@ -297,7 +297,7 @@ public function testAutoFilledHtmlSubject() {
'comment_body[0][value]' => $body_text2,
'comment_body[0][format]' => 'filtered_html',
];
$this->drupalPostForm(NULL, $edit2, 'Save');
$this->submitForm($edit2, 'Save');
$this->assertEqual('(No subject)', Comment::load(2)->getSubject());
}
......
......@@ -128,7 +128,7 @@ public function testCommentLanguage() {
'comment_body[0][value]' => $comment_values[$node_langcode][$langcode],
];
$this->drupalPostForm($prefix . 'node/' . $node->id(), $edit, 'Preview');
$this->drupalPostForm(NULL, $edit, 'Save');
$this->submitForm($edit, 'Save');
// Check that comment language matches the current content language.
$cids = \Drupal::entityQuery('comment')
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment