From 374534f00ee487d859fc2b826ea519befe0da350 Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Fri, 29 Nov 2019 15:47:17 +0000 Subject: [PATCH] DEV: Use category ids in URLs preferentially --- .../javascripts/discourse/controllers/discovery.js.es6 | 10 +++++----- .../javascripts/discourse/models/nav-item.js.es6 | 2 +- .../discourse/routes/build-category-route.js.es6 | 6 +++--- .../javascripts/discourse/routes/tags-show.js.es6 | 2 +- .../select-kit/components/category-drop.js.es6 | 2 +- .../javascripts/select-kit/components/tag-drop.js.es6 | 6 ++++-- test/javascripts/fixtures/discovery_fixtures.js.es6 | 6 +++--- test/javascripts/helpers/create-pretender.js.es6 | 4 ++-- 8 files changed, 20 insertions(+), 18 deletions(-) diff --git a/app/assets/javascripts/discourse/controllers/discovery.js.es6 b/app/assets/javascripts/discourse/controllers/discovery.js.es6 index c797ed7565..93237fa22b 100644 --- a/app/assets/javascripts/discourse/controllers/discovery.js.es6 +++ b/app/assets/javascripts/discourse/controllers/discovery.js.es6 @@ -23,13 +23,13 @@ export default Controller.extend({ showMoreUrl(period) { let url = "", category = this.category; + if (category) { - url = - "/c/" + - Category.slugFor(category) + - (this.noSubcategories ? "/none" : "") + - "/l"; + url = `/c/${Category.slugFor(category)}/${category.id}${ + this.noSubcategories ? "/none" : "" + }/l`; } + url += "/top/" + period; return url; }, diff --git a/app/assets/javascripts/discourse/models/nav-item.js.es6 b/app/assets/javascripts/discourse/models/nav-item.js.es6 index e2fcff3f92..943f11fd89 100644 --- a/app/assets/javascripts/discourse/models/nav-item.js.es6 +++ b/app/assets/javascripts/discourse/models/nav-item.js.es6 @@ -120,7 +120,7 @@ NavItem.reopenClass({ if (context.category) { includesCategoryContext = true; - path += `/c/${Category.slugFor(context.category)}`; + path += `/c/${Category.slugFor(context.category)}/${context.category.id}`; if (context.noSubcategories) { path += "/none"; diff --git a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 index 56c984a53f..86f18c5ddd 100644 --- a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 +++ b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 @@ -102,9 +102,9 @@ export default (filterArg, params) => { }, _retrieveTopicList(category, transition) { - const listFilter = `c/${Category.slugFor(category)}/l/${this.filter( - category - )}`, + const listFilter = `c/${Category.slugFor(category)}/${ + category.id + }/l/${this.filter(category)}`, findOpts = filterQueryParams(transition.to.queryParams, params), extras = { cached: this.isPoppedState(transition) }; diff --git a/app/assets/javascripts/discourse/routes/tags-show.js.es6 b/app/assets/javascripts/discourse/routes/tags-show.js.es6 index 8616b6959d..ccbb0292cb 100644 --- a/app/assets/javascripts/discourse/routes/tags-show.js.es6 +++ b/app/assets/javascripts/discourse/routes/tags-show.js.es6 @@ -69,7 +69,7 @@ export default DiscourseRoute.extend(FilterModeMixin, { if (category) { category.setupGroupsAndPermissions(); this.set("category", category); - filter = `tags/c/${Category.slugFor(category)}`; + filter = `tags/c/${Category.slugFor(category)}/${category.id}`; if (this.noSubcategories) { filter += "/none"; diff --git a/app/assets/javascripts/select-kit/components/category-drop.js.es6 b/app/assets/javascripts/select-kit/components/category-drop.js.es6 index 5374ed04e3..165818ffb2 100644 --- a/app/assets/javascripts/select-kit/components/category-drop.js.es6 +++ b/app/assets/javascripts/select-kit/components/category-drop.js.es6 @@ -144,7 +144,7 @@ export default ComboBoxComponent.extend({ } else { const category = Category.findById(parseInt(categoryId, 10)); const slug = Category.slugFor(category); - categoryURL = Discourse.getURL("/c/") + slug; + categoryURL = Discourse.getURL(`/c/${slug}/${categoryId}`); } DiscourseURL.routeTo(categoryURL); diff --git a/app/assets/javascripts/select-kit/components/tag-drop.js.es6 b/app/assets/javascripts/select-kit/components/tag-drop.js.es6 index 5e2f953631..66d662be70 100644 --- a/app/assets/javascripts/select-kit/components/tag-drop.js.es6 +++ b/app/assets/javascripts/select-kit/components/tag-drop.js.es6 @@ -84,7 +84,7 @@ export default ComboBoxComponent.extend(TagsMixin, { let url = "/tags"; if (currentCategory) { - url += `/c/${Category.slugFor(currentCategory)}`; + url += `/c/${Category.slugFor(currentCategory)}/${currentCategory.id}`; } return Discourse.getURL(`${url}/none`); @@ -162,7 +162,9 @@ export default ComboBoxComponent.extend(TagsMixin, { url = "/tags"; if (this.currentCategory) { - url += `/c/${Category.slugFor(this.currentCategory)}`; + url += `/c/${Category.slugFor(this.currentCategory)}/${ + this.currentCategory.id + }`; } url = Discourse.getURL(`${url}/${tagId.toLowerCase()}`); diff --git a/test/javascripts/fixtures/discovery_fixtures.js.es6 b/test/javascripts/fixtures/discovery_fixtures.js.es6 index afcdf8fe46..03863bf964 100644 --- a/test/javascripts/fixtures/discovery_fixtures.js.es6 +++ b/test/javascripts/fixtures/discovery_fixtures.js.es6 @@ -2683,7 +2683,7 @@ export default { ] } }, - "/c/bug/l/latest.json": { + "/c/bug/1/l/latest.json": { users: [ { id: 1, username: "sam", avatar_template: "/images/avatar.png" }, { @@ -3863,7 +3863,7 @@ export default { ] } }, - "/c/feature/l/latest.json": { + "/c/feature/2/l/latest.json": { users: [ { id: 1, username: "sam", avatar_template: "/images/avatar.png" }, { @@ -4935,7 +4935,7 @@ export default { ] } }, - "/c/dev/l/latest.json": { + "/c/dev/7/l/latest.json": { users: [ { id: 1, username: "sam", avatar_template: "/images/avatar.png" }, { diff --git a/test/javascripts/helpers/create-pretender.js.es6 b/test/javascripts/helpers/create-pretender.js.es6 index 618a94942e..9beff0a169 100644 --- a/test/javascripts/helpers/create-pretender.js.es6 +++ b/test/javascripts/helpers/create-pretender.js.es6 @@ -64,8 +64,8 @@ export default function() { return response(json); }); - this.get("/c/bug/l/latest.json", () => { - const json = fixturesByUrl["/c/bug/l/latest.json"]; + this.get("/c/bug/1/l/latest.json", () => { + const json = fixturesByUrl["/c/bug/1/l/latest.json"]; if (loggedIn()) { // Stuff to let us post