UX: exclude irrelevant search filters for anonymous users
On the advanced search page, filters like "I've read", "I'm watch -ing", etc, are irrelevant to anonymous users and should be hidden
This commit is contained in:
parent
4b53fe3cc7
commit
cea2a9fe53
|
@ -30,12 +30,14 @@ const IN_OPTIONS_MAPPING = {'images': 'with'};
|
||||||
export default Em.Component.extend({
|
export default Em.Component.extend({
|
||||||
classNames: ['search-advanced-options'],
|
classNames: ['search-advanced-options'],
|
||||||
|
|
||||||
inOptions: [
|
inOptionsForUsers: [
|
||||||
{name: I18n.t('search.advanced.filters.unseen'), value: "unseen"},
|
{name: I18n.t('search.advanced.filters.unseen'), value: "unseen"},
|
||||||
{name: I18n.t('search.advanced.filters.posted'), value: "posted"},
|
{name: I18n.t('search.advanced.filters.posted'), value: "posted"},
|
||||||
{name: I18n.t('search.advanced.filters.watching'), value: "watching"},
|
{name: I18n.t('search.advanced.filters.watching'), value: "watching"},
|
||||||
{name: I18n.t('search.advanced.filters.tracking'), value: "tracking"},
|
{name: I18n.t('search.advanced.filters.tracking'), value: "tracking"},
|
||||||
{name: I18n.t('search.advanced.filters.bookmarks'), value: "bookmarks"},
|
{name: I18n.t('search.advanced.filters.bookmarks'), value: "bookmarks"},
|
||||||
|
],
|
||||||
|
inOptionsForAll: [
|
||||||
{name: I18n.t('search.advanced.filters.first'), value: "first"},
|
{name: I18n.t('search.advanced.filters.first'), value: "first"},
|
||||||
{name: I18n.t('search.advanced.filters.pinned'), value: "pinned"},
|
{name: I18n.t('search.advanced.filters.pinned'), value: "pinned"},
|
||||||
{name: I18n.t('search.advanced.filters.unpinned'), value: "unpinned"},
|
{name: I18n.t('search.advanced.filters.unpinned'), value: "unpinned"},
|
||||||
|
@ -91,7 +93,8 @@ export default Em.Component.extend({
|
||||||
when: 'before',
|
when: 'before',
|
||||||
days: ''
|
days: ''
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
inOptions: this.currentUser ? this.inOptionsForUsers.concat(this.inOptionsForAll) : this.inOptionsForAll
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -53,11 +53,13 @@
|
||||||
<div class="control-group pull-left">
|
<div class="control-group pull-left">
|
||||||
<label class="control-label" for="search-in-options">{{i18n "search.advanced.filters.label"}}</label>
|
<label class="control-label" for="search-in-options">{{i18n "search.advanced.filters.label"}}</label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
|
{{#if currentUser}}
|
||||||
<section class='field'>
|
<section class='field'>
|
||||||
<label>{{input type="checkbox" class="in-likes" checked=searchedTerms.special.in.likes}} {{i18n "search.advanced.filters.likes"}}</label>
|
<label>{{input type="checkbox" class="in-likes" checked=searchedTerms.special.in.likes}} {{i18n "search.advanced.filters.likes"}}</label>
|
||||||
<label>{{input type="checkbox" class="in-private" checked=searchedTerms.special.in.private}} {{i18n "search.advanced.filters.private"}}</label>
|
<label>{{input type="checkbox" class="in-private" checked=searchedTerms.special.in.private}} {{i18n "search.advanced.filters.private"}}</label>
|
||||||
<label>{{input type="checkbox" class="in-seen" checked=searchedTerms.special.in.seen}} {{i18n "search.advanced.filters.seen"}}</label>
|
<label>{{input type="checkbox" class="in-seen" checked=searchedTerms.special.in.seen}} {{i18n "search.advanced.filters.seen"}}</label>
|
||||||
</section>
|
</section>
|
||||||
|
{{/if}}
|
||||||
{{combo-box id="in" valueAttribute="value" content=inOptions value=searchedTerms.in none="user.locale.any"}}
|
{{combo-box id="in" valueAttribute="value" content=inOptions value=searchedTerms.in none="user.locale.any"}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import { acceptance, waitFor } from "helpers/qunit-helpers";
|
import { acceptance, waitFor } from "helpers/qunit-helpers";
|
||||||
acceptance("Search - Full Page", {
|
acceptance("Search - Full Page", {
|
||||||
settings: {tagging_enabled: true},
|
settings: {tagging_enabled: true},
|
||||||
|
loggedIn: true,
|
||||||
beforeEach() {
|
beforeEach() {
|
||||||
const response = (object) => {
|
const response = (object) => {
|
||||||
return [
|
return [
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { acceptance } from "helpers/qunit-helpers";
|
import { acceptance, logIn } from "helpers/qunit-helpers";
|
||||||
acceptance("Search");
|
acceptance("Search");
|
||||||
|
|
||||||
QUnit.test("search", (assert) => {
|
QUnit.test("search", (assert) => {
|
||||||
|
@ -73,3 +73,53 @@ QUnit.test("Search with context", assert => {
|
||||||
assert.ok(!$('.search-context input[type=checkbox]').is(":checked"));
|
assert.ok(!$('.search-context input[type=checkbox]').is(":checked"));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
QUnit.test("in:likes, in:private, and in:seen filters are hidden to anonymous users", assert => {
|
||||||
|
visit("/search?expanded=true");
|
||||||
|
|
||||||
|
andThen(() => {
|
||||||
|
assert.notOk(exists('.search-advanced-options .in-likes'));
|
||||||
|
assert.notOk(exists('.search-advanced-options .in-private'));
|
||||||
|
assert.notOk(exists('.search-advanced-options .in-seen'));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
QUnit.test("in:likes, in:private, and in:seen filters are available to logged in users", assert => {
|
||||||
|
logIn();
|
||||||
|
Discourse.reset();
|
||||||
|
visit("/search?expanded=true");
|
||||||
|
|
||||||
|
andThen(() => {
|
||||||
|
assert.ok(exists('.search-advanced-options .in-likes'));
|
||||||
|
assert.ok(exists('.search-advanced-options .in-private'));
|
||||||
|
assert.ok(exists('.search-advanced-options .in-seen'));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
QUnit.test(`"I've not read", "I posted in", "I'm watching", "I'm tracking",
|
||||||
|
"I've bookmarked" filters are hidden to anonymous users from the dropdown`, assert => {
|
||||||
|
visit("/search?expanded=true");
|
||||||
|
|
||||||
|
andThen(() => {
|
||||||
|
assert.notOk(exists('select#in option[value=unseen]'));
|
||||||
|
assert.notOk(exists('select#in option[value=posted]'));
|
||||||
|
assert.notOk(exists('select#in option[value=watching]'));
|
||||||
|
assert.notOk(exists('select#in option[value=tracking]'));
|
||||||
|
assert.notOk(exists('select#in option[value=bookmarks]'));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
QUnit.test(`"I've not read", "I posted in", "I'm watching", "I'm tracking",
|
||||||
|
"I've bookmarked" filters are available to logged in users in the dropdown`, assert => {
|
||||||
|
logIn();
|
||||||
|
Discourse.reset();
|
||||||
|
visit("/search?expanded=true");
|
||||||
|
|
||||||
|
andThen(() => {
|
||||||
|
assert.ok(exists('select#in option[value=unseen]'));
|
||||||
|
assert.ok(exists('select#in option[value=posted]'));
|
||||||
|
assert.ok(exists('select#in option[value=watching]'));
|
||||||
|
assert.ok(exists('select#in option[value=tracking]'));
|
||||||
|
assert.ok(exists('select#in option[value=bookmarks]'));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
Loading…
Reference in New Issue