mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
DEV: Add plugin api for adding to search-advanced-options dropdowns (#10606)
This commit is contained in:
parent
ac4cbfb61d
commit
097f06b4fa
@ -32,48 +32,55 @@ const REGEXP_POST_TIME_WHEN = /^(before|after)/gi;
|
|||||||
|
|
||||||
const IN_OPTIONS_MAPPING = { images: "with" };
|
const IN_OPTIONS_MAPPING = { images: "with" };
|
||||||
|
|
||||||
|
const inOptionsForUsers = [
|
||||||
|
{ name: I18n.t("search.advanced.filters.unseen"), value: "unseen" },
|
||||||
|
{ name: I18n.t("search.advanced.filters.posted"), value: "posted" },
|
||||||
|
{ name: I18n.t("search.advanced.filters.created"), value: "created" },
|
||||||
|
{ name: I18n.t("search.advanced.filters.watching"), value: "watching" },
|
||||||
|
{ name: I18n.t("search.advanced.filters.tracking"), value: "tracking" },
|
||||||
|
{ name: I18n.t("search.advanced.filters.bookmarks"), value: "bookmarks" },
|
||||||
|
];
|
||||||
|
|
||||||
|
const inOptionsForAll = [
|
||||||
|
{ name: I18n.t("search.advanced.filters.first"), value: "first" },
|
||||||
|
{ name: I18n.t("search.advanced.filters.pinned"), value: "pinned" },
|
||||||
|
{ name: I18n.t("search.advanced.filters.wiki"), value: "wiki" },
|
||||||
|
{ name: I18n.t("search.advanced.filters.images"), value: "images" },
|
||||||
|
];
|
||||||
|
|
||||||
|
const statusOptions = [
|
||||||
|
{ name: I18n.t("search.advanced.statuses.open"), value: "open" },
|
||||||
|
{ name: I18n.t("search.advanced.statuses.closed"), value: "closed" },
|
||||||
|
{ name: I18n.t("search.advanced.statuses.public"), value: "public" },
|
||||||
|
{ name: I18n.t("search.advanced.statuses.archived"), value: "archived" },
|
||||||
|
{
|
||||||
|
name: I18n.t("search.advanced.statuses.noreplies"),
|
||||||
|
value: "noreplies",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: I18n.t("search.advanced.statuses.single_user"),
|
||||||
|
value: "single_user",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const postTimeOptions = [
|
||||||
|
{ name: I18n.t("search.advanced.post.time.before"), value: "before" },
|
||||||
|
{ name: I18n.t("search.advanced.post.time.after"), value: "after" },
|
||||||
|
];
|
||||||
|
|
||||||
|
function addAdvancedSearchOptions(options) {
|
||||||
|
inOptionsForAll.pushObjects(options.inOptionsForAll);
|
||||||
|
inOptionsForUsers.pushObjects(options.inOptionsForUsers);
|
||||||
|
statusOptions.pushObjects(options.statusOptions);
|
||||||
|
postTimeOptions.pushObjects(options.postTimeOptions);
|
||||||
|
}
|
||||||
|
|
||||||
export default Component.extend({
|
export default Component.extend({
|
||||||
classNames: ["search-advanced-options"],
|
classNames: ["search-advanced-options"],
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
this._super(...arguments);
|
this._super(...arguments);
|
||||||
|
|
||||||
this.inOptionsForUsers = [
|
|
||||||
{ name: I18n.t("search.advanced.filters.unseen"), value: "unseen" },
|
|
||||||
{ name: I18n.t("search.advanced.filters.posted"), value: "posted" },
|
|
||||||
{ name: I18n.t("search.advanced.filters.created"), value: "created" },
|
|
||||||
{ name: I18n.t("search.advanced.filters.watching"), value: "watching" },
|
|
||||||
{ name: I18n.t("search.advanced.filters.tracking"), value: "tracking" },
|
|
||||||
{ name: I18n.t("search.advanced.filters.bookmarks"), value: "bookmarks" },
|
|
||||||
];
|
|
||||||
|
|
||||||
this.inOptionsForAll = [
|
|
||||||
{ name: I18n.t("search.advanced.filters.first"), value: "first" },
|
|
||||||
{ name: I18n.t("search.advanced.filters.pinned"), value: "pinned" },
|
|
||||||
{ name: I18n.t("search.advanced.filters.wiki"), value: "wiki" },
|
|
||||||
{ name: I18n.t("search.advanced.filters.images"), value: "images" },
|
|
||||||
];
|
|
||||||
|
|
||||||
this.statusOptions = [
|
|
||||||
{ name: I18n.t("search.advanced.statuses.open"), value: "open" },
|
|
||||||
{ name: I18n.t("search.advanced.statuses.closed"), value: "closed" },
|
|
||||||
{ name: I18n.t("search.advanced.statuses.public"), value: "public" },
|
|
||||||
{ name: I18n.t("search.advanced.statuses.archived"), value: "archived" },
|
|
||||||
{
|
|
||||||
name: I18n.t("search.advanced.statuses.noreplies"),
|
|
||||||
value: "noreplies",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: I18n.t("search.advanced.statuses.single_user"),
|
|
||||||
value: "single_user",
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
this.postTimeOptions = [
|
|
||||||
{ name: I18n.t("search.advanced.post.time.before"), value: "before" },
|
|
||||||
{ name: I18n.t("search.advanced.post.time.after"), value: "after" },
|
|
||||||
];
|
|
||||||
|
|
||||||
this._init();
|
this._init();
|
||||||
|
|
||||||
scheduleOnce("afterRender", this, this._update);
|
scheduleOnce("afterRender", this, this._update);
|
||||||
@ -111,8 +118,10 @@ export default Component.extend({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
inOptions: this.currentUser
|
inOptions: this.currentUser
|
||||||
? this.inOptionsForUsers.concat(this.inOptionsForAll)
|
? inOptionsForUsers.concat(inOptionsForAll)
|
||||||
: this.inOptionsForAll,
|
: inOptionsForAll,
|
||||||
|
statusOptions: statusOptions,
|
||||||
|
postTimeOptions: postTimeOptions,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -651,3 +660,5 @@ export default Component.extend({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export { addAdvancedSearchOptions };
|
||||||
|
@ -60,9 +60,10 @@ import { addQuickAccessProfileItem } from "discourse/widgets/quick-access-profil
|
|||||||
import KeyboardShortcuts from "discourse/lib/keyboard-shortcuts";
|
import KeyboardShortcuts from "discourse/lib/keyboard-shortcuts";
|
||||||
import { addFeaturedLinkMetaDecorator } from "discourse/lib/render-topic-featured-link";
|
import { addFeaturedLinkMetaDecorator } from "discourse/lib/render-topic-featured-link";
|
||||||
import { getOwner } from "discourse-common/lib/get-owner";
|
import { getOwner } from "discourse-common/lib/get-owner";
|
||||||
|
import { addAdvancedSearchOptions } from "discourse/components/search-advanced-options";
|
||||||
|
|
||||||
// If you add any methods to the API ensure you bump up this number
|
// If you add any methods to the API ensure you bump up this number
|
||||||
const PLUGIN_API_VERSION = "0.10.2";
|
const PLUGIN_API_VERSION = "0.11.0";
|
||||||
|
|
||||||
class PluginApi {
|
class PluginApi {
|
||||||
constructor(version, container) {
|
constructor(version, container) {
|
||||||
@ -1180,6 +1181,30 @@ class PluginApi {
|
|||||||
addFeaturedLinkMetaDecorator(decorator) {
|
addFeaturedLinkMetaDecorator(decorator) {
|
||||||
addFeaturedLinkMetaDecorator(decorator);
|
addFeaturedLinkMetaDecorator(decorator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds items to dropdown's in search-advanced-options.
|
||||||
|
*
|
||||||
|
* ```
|
||||||
|
* api.addAdvancedSearchOptions({
|
||||||
|
* inOptionsForUsers:[{
|
||||||
|
* name: I18n.t("search.advanced.in.assigned"),
|
||||||
|
* value: "assigned",
|
||||||
|
* },
|
||||||
|
* {
|
||||||
|
* name: I18n.t("search.advanced.in.not_assigned"),
|
||||||
|
* value: "not_assigned",
|
||||||
|
* },]
|
||||||
|
* statusOptions: [{
|
||||||
|
* name: I18n.t("search.advanced.status.open"),
|
||||||
|
* value: "open"
|
||||||
|
* }]
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
addAdvancedSearchOptions(options) {
|
||||||
|
addAdvancedSearchOptions(options);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let _pluginv01;
|
let _pluginv01;
|
||||||
|
Loading…
Reference in New Issue
Block a user