Issue #2348007 by jibran, olli, marcus7777: Taxonomy term view needs status filter
parent
b0f2463942
commit
9ae8e2c86a
|
@ -95,9 +95,9 @@ display:
|
||||||
relationship: none
|
relationship: none
|
||||||
group_type: group
|
group_type: group
|
||||||
admin_label: ''
|
admin_label: ''
|
||||||
default_action: ignore
|
default_action: 'not found'
|
||||||
exception:
|
exception:
|
||||||
value: all
|
value: ''
|
||||||
title_enable: false
|
title_enable: false
|
||||||
title: All
|
title: All
|
||||||
title_enable: true
|
title_enable: true
|
||||||
|
@ -168,6 +168,42 @@ display:
|
||||||
default_group_multiple: { }
|
default_group_multiple: { }
|
||||||
group_items: { }
|
group_items: { }
|
||||||
plugin_id: language
|
plugin_id: language
|
||||||
|
status:
|
||||||
|
id: status
|
||||||
|
table: taxonomy_index
|
||||||
|
field: status
|
||||||
|
relationship: none
|
||||||
|
group_type: group
|
||||||
|
admin_label: ''
|
||||||
|
operator: '='
|
||||||
|
value: true
|
||||||
|
group: 1
|
||||||
|
exposed: false
|
||||||
|
expose:
|
||||||
|
operator_id: ''
|
||||||
|
label: ''
|
||||||
|
description: ''
|
||||||
|
use_operator: false
|
||||||
|
operator: ''
|
||||||
|
identifier: ''
|
||||||
|
required: false
|
||||||
|
remember: false
|
||||||
|
multiple: false
|
||||||
|
remember_roles:
|
||||||
|
authenticated: authenticated
|
||||||
|
is_grouped: false
|
||||||
|
group_info:
|
||||||
|
label: ''
|
||||||
|
description: ''
|
||||||
|
identifier: ''
|
||||||
|
optional: true
|
||||||
|
widget: select
|
||||||
|
multiple: false
|
||||||
|
remember: false
|
||||||
|
default_group: All
|
||||||
|
default_group_multiple: { }
|
||||||
|
group_items: { }
|
||||||
|
plugin_id: boolean
|
||||||
style:
|
style:
|
||||||
type: default
|
type: default
|
||||||
options:
|
options:
|
||||||
|
|
|
@ -74,6 +74,12 @@ class TermStorageSchema extends SqlContentEntityStorageSchema {
|
||||||
'not null' => TRUE,
|
'not null' => TRUE,
|
||||||
'default' => 0,
|
'default' => 0,
|
||||||
),
|
),
|
||||||
|
'status' => array(
|
||||||
|
'description' => 'Boolean indicating whether the node is published (visible to non-administrators).',
|
||||||
|
'type' => 'int',
|
||||||
|
'not null' => TRUE,
|
||||||
|
'default' => 1,
|
||||||
|
),
|
||||||
'sticky' => array(
|
'sticky' => array(
|
||||||
'description' => 'Boolean indicating whether the node is sticky.',
|
'description' => 'Boolean indicating whether the node is sticky.',
|
||||||
'type' => 'int',
|
'type' => 'int',
|
||||||
|
@ -90,7 +96,7 @@ class TermStorageSchema extends SqlContentEntityStorageSchema {
|
||||||
),
|
),
|
||||||
'primary key' => array('nid', 'tid'),
|
'primary key' => array('nid', 'tid'),
|
||||||
'indexes' => array(
|
'indexes' => array(
|
||||||
'term_node' => array('tid', 'sticky', 'created'),
|
'term_node' => array('tid', 'status', 'sticky', 'created'),
|
||||||
),
|
),
|
||||||
'foreign keys' => array(
|
'foreign keys' => array(
|
||||||
'tracked_node' => array(
|
'tracked_node' => array(
|
||||||
|
|
|
@ -214,6 +214,15 @@ class TermViewsData extends EntityViewsData {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$data['taxonomy_index']['status'] = [
|
||||||
|
'title' => t('Publish status'),
|
||||||
|
'help' => t('Whether or not the content related to a term is published.'),
|
||||||
|
'filter' => [
|
||||||
|
'id' => 'boolean',
|
||||||
|
'label' => t('Published status'),
|
||||||
|
'type' => 'yes-no',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
$data['taxonomy_index']['sticky'] = [
|
$data['taxonomy_index']['sticky'] = [
|
||||||
'title' => t('Sticky status'),
|
'title' => t('Sticky status'),
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
namespace Drupal\taxonomy\Tests;
|
namespace Drupal\taxonomy\Tests;
|
||||||
|
|
||||||
use Drupal\Core\Field\FieldStorageDefinitionInterface;
|
use Drupal\Core\Field\FieldStorageDefinitionInterface;
|
||||||
|
use Drupal\views\Views;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ensure that data added as terms appears in RSS feeds if "RSS Category" format
|
* Ensure that data added as terms appears in RSS feeds if "RSS Category" format
|
||||||
|
@ -106,5 +107,27 @@ class RssTest extends TaxonomyTestBase {
|
||||||
// Test that the feed page exists for the term.
|
// Test that the feed page exists for the term.
|
||||||
$this->drupalGet("taxonomy/term/{$term1->id()}/feed");
|
$this->drupalGet("taxonomy/term/{$term1->id()}/feed");
|
||||||
$this->assertRaw('<rss version="2.0"', "Feed page is RSS.");
|
$this->assertRaw('<rss version="2.0"', "Feed page is RSS.");
|
||||||
|
|
||||||
|
// Check that the "Exception value" is disabled by default.
|
||||||
|
$this->drupalGet('taxonomy/term/all/feed');
|
||||||
|
$this->assertResponse(404);
|
||||||
|
// Set the exception value to 'all'.
|
||||||
|
$view = Views::getView('taxonomy_term');
|
||||||
|
$arguments = $view->getDisplay()->getOption('arguments');
|
||||||
|
$arguments['tid']['exception']['value'] = 'all';
|
||||||
|
$view->getDisplay()->overrideOption('arguments', $arguments);
|
||||||
|
$view->storage->save();
|
||||||
|
// Check the article is shown in the feed.
|
||||||
|
$node = $this->drupalGetNodeByTitle($edit['title[0][value]']);
|
||||||
|
$raw_xml = format_xml_elements([[
|
||||||
|
'key' => 'title',
|
||||||
|
'value' => $node->label(),
|
||||||
|
]]);
|
||||||
|
$this->drupalGet('taxonomy/term/all/feed');
|
||||||
|
$this->assertRaw($raw_xml);
|
||||||
|
// Unpublish the article and check that it is not shown in the feed.
|
||||||
|
$node->setPublished(FALSE)->save();
|
||||||
|
$this->drupalGet('taxonomy/term/all/feed');
|
||||||
|
$this->assertNoRaw($raw_xml);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -162,6 +162,7 @@ function taxonomy_select_nodes($tid, $pager = TRUE, $limit = FALSE, $order = arr
|
||||||
$query->addTag('node_access');
|
$query->addTag('node_access');
|
||||||
$query->addMetaData('base_table', 'taxonomy_index');
|
$query->addMetaData('base_table', 'taxonomy_index');
|
||||||
$query->condition('tid', $tid);
|
$query->condition('tid', $tid);
|
||||||
|
$query->condition('status', NODE_PUBLISHED);
|
||||||
if ($pager) {
|
if ($pager) {
|
||||||
$count_query = clone $query;
|
$count_query = clone $query;
|
||||||
$count_query->addExpression('COUNT(t.nid)');
|
$count_query->addExpression('COUNT(t.nid)');
|
||||||
|
@ -686,7 +687,7 @@ function taxonomy_build_node_index($node) {
|
||||||
if (!empty($tid_all)) {
|
if (!empty($tid_all)) {
|
||||||
foreach ($tid_all as $tid) {
|
foreach ($tid_all as $tid) {
|
||||||
db_merge('taxonomy_index')
|
db_merge('taxonomy_index')
|
||||||
->key(array('nid' => $node->id(), 'tid' => $tid))
|
->key(array('nid' => $node->id(), 'tid' => $tid, 'status' => $node->isPublished()))
|
||||||
->fields(array('sticky' => $sticky, 'created' => $node->getCreatedTime()))
|
->fields(array('sticky' => $sticky, 'created' => $node->getCreatedTime()))
|
||||||
->execute();
|
->execute();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue