Issue #242324 by rychannel, kbasarab, chx, cgalli, LinL, pfrenssen, wonder95, triclops | whatistocome: Fixed Going to page 2 on "list terms" page doesn't display additional terms.
parent
d2e7d6211b
commit
9bc009b1b8
|
@ -100,10 +100,10 @@ class OverviewTerms extends FormBase {
|
|||
// @todo taxonomy_get_tree needs to be converted to a service and injected.
|
||||
// Will be fixed in http://drupal.org/node/1976298.
|
||||
$tree = taxonomy_get_tree($taxonomy_vocabulary->id(), 0, NULL, TRUE);
|
||||
$term = current($tree);
|
||||
$tree_index = 0;
|
||||
do {
|
||||
// In case this tree is completely empty.
|
||||
if (empty($term)) {
|
||||
if (empty($tree[$tree_index])) {
|
||||
break;
|
||||
}
|
||||
$delta++;
|
||||
|
@ -119,13 +119,14 @@ class OverviewTerms extends FormBase {
|
|||
}
|
||||
|
||||
// Do not let a term start the page that is not at the root.
|
||||
$term = $tree[$tree_index];
|
||||
if (isset($term->depth) && ($term->depth > 0) && !isset($back_step)) {
|
||||
$back_step = 0;
|
||||
while ($pterm = prev($tree)) {
|
||||
while ($pterm = $tree[--$tree_index]) {
|
||||
$before_entries--;
|
||||
$back_step++;
|
||||
if ($pterm->depth == 0) {
|
||||
prev($tree);
|
||||
$tree_index--;
|
||||
// Jump back to the start of the root level parent.
|
||||
continue 2;
|
||||
}
|
||||
|
@ -159,7 +160,7 @@ class OverviewTerms extends FormBase {
|
|||
$root_entries++;
|
||||
}
|
||||
$current_page[$key] = $term;
|
||||
} while ($term = next($tree));
|
||||
} while (isset($tree[++$tree_index]));
|
||||
|
||||
// Because we didn't use a pager query, set the necessary pager variables.
|
||||
$total_entries = $before_entries + $page_entries + $after_entries;
|
||||
|
|
|
@ -9,6 +9,7 @@ namespace Drupal\taxonomy\Tests;
|
|||
|
||||
use Drupal\Core\Language\LanguageInterface;
|
||||
use Drupal\simpletest\WebTestBase;
|
||||
use Drupal\taxonomy\Entity\Vocabulary;
|
||||
|
||||
/**
|
||||
* Provides common helper methods for Taxonomy module tests.
|
||||
|
@ -49,11 +50,20 @@ abstract class TaxonomyTestBase extends WebTestBase {
|
|||
|
||||
/**
|
||||
* Returns a new term with random properties in vocabulary $vid.
|
||||
*
|
||||
* @param \Drupal\taxonomy\Entity\Vocabulary $vocabulary
|
||||
* The vocabulary object.
|
||||
* @param array $values
|
||||
* (optional) An array of values to set, keyed by property name. If the
|
||||
* entity type has bundles, the bundle key has to be specified.
|
||||
*
|
||||
* @return \Drupal\taxonomy\Entity\Term
|
||||
* The new taxonomy term object.
|
||||
*/
|
||||
function createTerm($vocabulary) {
|
||||
function createTerm(Vocabulary $vocabulary, $values = array()) {
|
||||
$filter_formats = filter_formats();
|
||||
$format = array_pop($filter_formats);
|
||||
$term = entity_create('taxonomy_term', array(
|
||||
$term = entity_create('taxonomy_term', $values + array(
|
||||
'name' => $this->randomName(),
|
||||
'description' => array(
|
||||
'value' => $this->randomName(),
|
||||
|
|
|
@ -97,6 +97,57 @@ class TermTest extends TaxonomyTestBase {
|
|||
$this->assertTrue(isset($parents[$term1->id()]) && isset($parents[$term3->id()]), 'Both parents found successfully.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that many terms with parents show on each page
|
||||
*/
|
||||
function testTaxonomyTermChildTerms() {
|
||||
// Set limit to 10 terms per page. Set variable to 9 so 10 terms appear.
|
||||
\Drupal::config('taxonomy.settings')->set('terms_per_page_admin', '9')->save();
|
||||
$term1 = $this->createTerm($this->vocabulary);
|
||||
$terms_array = '';
|
||||
|
||||
// Create 40 terms. Terms 1-12 get parent of $term1. All others are
|
||||
// individual terms.
|
||||
for ($x = 1; $x <= 40; $x++) {
|
||||
$edit = array();
|
||||
// Set terms in order so we know which terms will be on which pages.
|
||||
$edit['weight'] = $x;
|
||||
|
||||
// Set terms 1-20 to be children of first term created.
|
||||
if ($x <= 12) {
|
||||
$edit['parent'] = $term1->id();
|
||||
}
|
||||
$term = $this->createTerm($this->vocabulary, $edit);
|
||||
$children = taxonomy_term_load_children($term1->id());
|
||||
$parents = taxonomy_term_load_parents($term->id());
|
||||
$terms_array[$x] = taxonomy_term_load($term->id());
|
||||
}
|
||||
|
||||
// Get Page 1.
|
||||
$this->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/overview');
|
||||
$this->assertText($term1->getName(), 'Parent Term is displayed on Page 1');
|
||||
for ($x = 1; $x <= 13; $x++) {
|
||||
$this->assertText($terms_array[$x]->getName(), $terms_array[$x]->getName() . ' found on Page 1');
|
||||
}
|
||||
|
||||
// Get Page 2.
|
||||
$this->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/overview', array('query' => array('page' => 1)));
|
||||
$this->assertText($term1->getName(), 'Parent Term is displayed on Page 2');
|
||||
for ($x = 1; $x <= 18; $x++) {
|
||||
$this->assertText($terms_array[$x]->getName(), $terms_array[$x]->getName() . ' found on Page 2');
|
||||
}
|
||||
|
||||
// Get Page 3.
|
||||
$this->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/overview', array('query' => array('page' => 2)));
|
||||
$this->assertNoText($term1->getName(), 'Parent Term is not displayed on Page 3');
|
||||
for ($x = 1; $x <= 17; $x++) {
|
||||
$this->assertNoText($terms_array[$x]->getName(), $terms_array[$x]->getName() . ' not found on Page 3');
|
||||
}
|
||||
for ($x =18; $x <= 25; $x++) {
|
||||
$this->assertText($terms_array[$x]->getName(), $terms_array[$x]->getName() . ' found on Page 3');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that hook_node_$op implementations work correctly.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue