This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/app/pre-initializers/dynamic-route-builders.js
Vinoth Kannan 33eae4cbd8
FEATURE: add period filter in top topics route for tags. (#13415)
And also move all the "top topics by period" routes to query string param.

/top/monthly => /top?period=monthly
/c/:slug/:id/l/top/monthly => /c/:slug/:id/l/top?period=monthly
/tag/:slug/l/top/daily => /tag/:slug/l/top?period=daily (new)
2021-07-06 15:25:11 +05:30

78 lines
2.7 KiB
JavaScript

import DiscoverySortableController from "discourse/controllers/discovery-sortable";
import Site from "discourse/models/site";
import TagShowRoute from "discourse/routes/tag-show";
import User from "discourse/models/user";
import buildCategoryRoute from "discourse/routes/build-category-route";
import buildTopicRoute from "discourse/routes/build-topic-route";
export default {
after: "inject-discourse-objects",
name: "dynamic-route-builders",
initialize(registry, app) {
app.DiscoveryCategoryController = DiscoverySortableController.extend();
app.DiscoveryCategoryNoneController = DiscoverySortableController.extend();
app.DiscoveryCategoryAllController = DiscoverySortableController.extend();
app.DiscoveryCategoryRoute = buildCategoryRoute("default");
app.DiscoveryCategoryNoneRoute = buildCategoryRoute("default", {
no_subcategories: true,
});
app.DiscoveryCategoryAllRoute = buildCategoryRoute("default", {
no_subcategories: false,
});
const site = Site.current();
site.get("filters").forEach((filter) => {
const filterCapitalized = filter.capitalize();
app[
`Discovery${filterCapitalized}Controller`
] = DiscoverySortableController.extend();
app[
`Discovery${filterCapitalized}CategoryController`
] = DiscoverySortableController.extend();
app[
`Discovery${filterCapitalized}CategoryNoneController`
] = DiscoverySortableController.extend();
if (filter === "top") {
app.DiscoveryTopRoute = buildTopicRoute("top", {
actions: {
willTransition() {
User.currentProp("should_be_redirected_to_top", false);
User.currentProp("redirected_to_top.reason", null);
return this._super(...arguments);
},
},
});
} else {
app[`Discovery${filterCapitalized}Route`] = buildTopicRoute(filter);
}
app[`Discovery${filterCapitalized}CategoryRoute`] = buildCategoryRoute(
filter
);
app[
`Discovery${filterCapitalized}CategoryNoneRoute`
] = buildCategoryRoute(filter, { no_subcategories: true });
});
app["TagsShowCategoryRoute"] = TagShowRoute.extend();
app["TagsShowCategoryNoneRoute"] = TagShowRoute.extend({
noSubcategories: true,
});
site.get("filters").forEach(function (filter) {
app["TagShow" + filter.capitalize() + "Route"] = TagShowRoute.extend({
navMode: filter,
});
app[
"TagsShowCategory" + filter.capitalize() + "Route"
] = TagShowRoute.extend({ navMode: filter });
app[
"TagsShowNoneCategory" + filter.capitalize() + "Route"
] = TagShowRoute.extend({ navMode: filter, noSubcategories: true });
});
},
};