mirror of
https://github.com/discourse/discourse.git
synced 2025-02-20 17:52:45 +08:00
DEV: Update tag-show route to native class syntax (#23701)
This commit is contained in:
parent
9136109ca0
commit
0ec3cc4eb2
@ -1,6 +1,6 @@
|
||||
import DiscoverySortableController from "discourse/controllers/discovery-sortable";
|
||||
import Site from "discourse/models/site";
|
||||
import TagShowRoute from "discourse/routes/tag-show";
|
||||
import { buildTagRoute } from "discourse/routes/tag-show";
|
||||
import buildCategoryRoute from "discourse/routes/build-category-route";
|
||||
import buildTopicRoute from "discourse/routes/build-topic-route";
|
||||
import { dasherize } from "@ember/string";
|
||||
@ -66,16 +66,16 @@ export default {
|
||||
);
|
||||
});
|
||||
|
||||
app.register("route:tags.show-category", TagShowRoute.extend());
|
||||
app.register("route:tags.show-category", buildTagRoute());
|
||||
app.register(
|
||||
"route:tags.show-category-none",
|
||||
TagShowRoute.extend({
|
||||
buildTagRoute({
|
||||
noSubcategories: true,
|
||||
})
|
||||
);
|
||||
app.register(
|
||||
"route:tags.show-category-all",
|
||||
TagShowRoute.extend({
|
||||
buildTagRoute({
|
||||
noSubcategories: false,
|
||||
})
|
||||
);
|
||||
@ -85,21 +85,21 @@ export default {
|
||||
|
||||
app.register(
|
||||
`route:tag.show-${filterDasherized}`,
|
||||
TagShowRoute.extend({
|
||||
buildTagRoute({
|
||||
navMode: filter,
|
||||
})
|
||||
);
|
||||
app.register(
|
||||
`route:tags.show-category-${filterDasherized}`,
|
||||
TagShowRoute.extend({ navMode: filter })
|
||||
buildTagRoute({ navMode: filter })
|
||||
);
|
||||
app.register(
|
||||
`route:tags.show-category-none-${filterDasherized}`,
|
||||
TagShowRoute.extend({ navMode: filter, noSubcategories: true })
|
||||
buildTagRoute({ navMode: filter, noSubcategories: true })
|
||||
);
|
||||
app.register(
|
||||
`route:tags.show-category-all-${filterDasherized}`,
|
||||
TagShowRoute.extend({ navMode: filter, noSubcategories: false })
|
||||
buildTagRoute({ navMode: filter, noSubcategories: false })
|
||||
);
|
||||
});
|
||||
},
|
||||
|
@ -1,3 +1,4 @@
|
||||
import { inject as service } from "@ember/service";
|
||||
import {
|
||||
filterQueryParams,
|
||||
findTopicList,
|
||||
@ -17,21 +18,27 @@ import { setTopicList } from "discourse/lib/topic-list-tracker";
|
||||
import showModal from "discourse/lib/show-modal";
|
||||
import { action } from "@ember/object";
|
||||
import PreloadStore from "discourse/lib/preload-store";
|
||||
import { inject as service } from "@ember/service";
|
||||
|
||||
const NONE = "none";
|
||||
const ALL = "all";
|
||||
|
||||
export default DiscourseRoute.extend({
|
||||
composer: service(),
|
||||
router: service(),
|
||||
currentUser: service(),
|
||||
navMode: "latest",
|
||||
export default class TagShowRoute extends DiscourseRoute {
|
||||
@service composer;
|
||||
@service router;
|
||||
@service currentUser;
|
||||
|
||||
queryParams,
|
||||
queryParams = queryParams;
|
||||
controllerName = "tag.show";
|
||||
templateName = "tag.show";
|
||||
routeConfig = {};
|
||||
|
||||
controllerName: "tag.show",
|
||||
templateName: "tag.show",
|
||||
get navMode() {
|
||||
return this.routeConfig.navMode || "latest";
|
||||
}
|
||||
|
||||
get noSubcategories() {
|
||||
return this.routeConfig.noSubcategories;
|
||||
}
|
||||
|
||||
beforeModel() {
|
||||
const controller = this.controllerFor("tag.show");
|
||||
@ -39,7 +46,7 @@ export default DiscourseRoute.extend({
|
||||
loading: true,
|
||||
showInfo: false,
|
||||
});
|
||||
},
|
||||
}
|
||||
|
||||
async model(params, transition) {
|
||||
const tag = this.store.createRecord("tag", {
|
||||
@ -138,7 +145,7 @@ export default DiscourseRoute.extend({
|
||||
canCreateTopicOnCategory: category?.permission === PermissionType.FULL,
|
||||
canCreateTopicOnTag: !tag.staff || this.currentUser?.staff,
|
||||
};
|
||||
},
|
||||
}
|
||||
|
||||
setupController(controller, model) {
|
||||
const noSubcategories = this.noSubcategories;
|
||||
@ -166,7 +173,7 @@ export default DiscourseRoute.extend({
|
||||
} else {
|
||||
this.searchService.searchContext = model.tag.searchContext;
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
titleToken() {
|
||||
const filterText = I18n.t(
|
||||
@ -199,17 +206,17 @@ export default DiscourseRoute.extend({
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
deactivate() {
|
||||
this._super(...arguments);
|
||||
super.deactivate(...arguments);
|
||||
this.searchService.searchContext = null;
|
||||
},
|
||||
}
|
||||
|
||||
@action
|
||||
renameTag(tag) {
|
||||
showModal("rename-tag", { model: tag });
|
||||
},
|
||||
}
|
||||
|
||||
@action
|
||||
createTopic() {
|
||||
@ -231,13 +238,13 @@ export default DiscourseRoute.extend({
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
@action
|
||||
dismissReadTopics(dismissTopics) {
|
||||
const operationType = dismissTopics ? "topics" : "posts";
|
||||
this.send("dismissRead", operationType);
|
||||
},
|
||||
}
|
||||
|
||||
@action
|
||||
dismissRead(operationType) {
|
||||
@ -256,16 +263,22 @@ export default DiscourseRoute.extend({
|
||||
}
|
||||
|
||||
controller.send("dismissRead", operationType, options);
|
||||
},
|
||||
}
|
||||
|
||||
@action
|
||||
resetParams(skipParams = []) {
|
||||
resetParams.call(this, skipParams);
|
||||
},
|
||||
}
|
||||
|
||||
_controllerTags(controller) {
|
||||
return [controller.get("model.id"), ...makeArray(controller.additionalTags)]
|
||||
.filter(Boolean)
|
||||
.filter((tag) => ![NONE, ALL].includes(tag));
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export function buildTagRoute(routeConfig = {}) {
|
||||
return class extends TagShowRoute {
|
||||
routeConfig = routeConfig;
|
||||
};
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
import TagShowRoute from "discourse/routes/tag-show";
|
||||
import { buildTagRoute } from "discourse/routes/tag-show";
|
||||
|
||||
export default TagShowRoute.extend({});
|
||||
export default buildTagRoute();
|
||||
|
||||
// The tags-intersection route is exactly the same as the tags-show route, but the wildcard at the
|
||||
// end of the route (*additional_tags) will cause a match when query parameters are present,
|
||||
|
Loading…
x
Reference in New Issue
Block a user