mirror of
https://github.com/discourse/discourse.git
synced 2025-01-30 05:05:15 +08:00
DEV: Add unambiguous routes for tags
The trouble with having: /tags/:tag_id/... and: /tags/intersection/*tag_ids for example, is: what happens if you want a tag called intersection? Under this new scheme. Routes referring to a single tag are unambiguous because they are prefixed with: /tag/:tag_id Routes referring to the collection of tags still start with: /tags/ This commit just adds the new routes. It doesn't remove the old ones or cause the new ones to be used.
This commit is contained in:
parent
dc3c4bdd00
commit
1fb7a6297c
|
@ -103,10 +103,15 @@ export default {
|
||||||
});
|
});
|
||||||
app["TagsShowParentCategoryRoute"] = TagsShowRoute.extend();
|
app["TagsShowParentCategoryRoute"] = TagsShowRoute.extend();
|
||||||
|
|
||||||
|
app["TagShowRoute"] = TagsShowRoute;
|
||||||
|
|
||||||
site.get("filters").forEach(function(filter) {
|
site.get("filters").forEach(function(filter) {
|
||||||
app["TagsShow" + filter.capitalize() + "Route"] = TagsShowRoute.extend({
|
app["TagsShow" + filter.capitalize() + "Route"] = TagsShowRoute.extend({
|
||||||
navMode: filter
|
navMode: filter
|
||||||
});
|
});
|
||||||
|
app["TagShow" + filter.capitalize() + "Route"] = TagsShowRoute.extend({
|
||||||
|
navMode: filter
|
||||||
|
});
|
||||||
app[
|
app[
|
||||||
"TagsShowCategory" + filter.capitalize() + "Route"
|
"TagsShowCategory" + filter.capitalize() + "Route"
|
||||||
] = TagsShowRoute.extend({ navMode: filter });
|
] = TagsShowRoute.extend({ navMode: filter });
|
||||||
|
|
|
@ -209,8 +209,17 @@ export default function() {
|
||||||
|
|
||||||
this.route("full-page-search", { path: "/search" });
|
this.route("full-page-search", { path: "/search" });
|
||||||
|
|
||||||
this.route("tags", { resetNamespace: true }, function() {
|
this.route("tag", { resetNamespace: true }, function() {
|
||||||
this.route("show", { path: "/:tag_id" });
|
this.route("show", { path: "/:tag_id" });
|
||||||
|
|
||||||
|
Site.currentProp("filters").forEach(filter => {
|
||||||
|
this.route("show" + filter.capitalize(), {
|
||||||
|
path: "/:tag_id/l/" + filter
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
this.route("tags", { resetNamespace: true }, function() {
|
||||||
this.route("showCategory", {
|
this.route("showCategory", {
|
||||||
path: "/c/*category_slug_path_with_id/:tag_id"
|
path: "/c/*category_slug_path_with_id/:tag_id"
|
||||||
});
|
});
|
||||||
|
@ -219,9 +228,6 @@ export default function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
Site.currentProp("filters").forEach(filter => {
|
Site.currentProp("filters").forEach(filter => {
|
||||||
this.route("show" + filter.capitalize(), {
|
|
||||||
path: "/:tag_id/l/" + filter
|
|
||||||
});
|
|
||||||
this.route("showCategory" + filter.capitalize(), {
|
this.route("showCategory" + filter.capitalize(), {
|
||||||
path: "/c/*category_slug_path_with_id/:tag_id/l/" + filter
|
path: "/c/*category_slug_path_with_id/:tag_id/l/" + filter
|
||||||
});
|
});
|
||||||
|
@ -232,6 +238,14 @@ export default function() {
|
||||||
this.route("intersection", {
|
this.route("intersection", {
|
||||||
path: "intersection/:tag_id/*additional_tags"
|
path: "intersection/:tag_id/*additional_tags"
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// legacy routes
|
||||||
|
this.route("show", { path: "/:tag_id" });
|
||||||
|
Site.currentProp("filters").forEach(filter => {
|
||||||
|
this.route("show" + filter.capitalize(), {
|
||||||
|
path: "/:tag_id/l/" + filter
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
this.route(
|
this.route(
|
||||||
|
|
|
@ -840,6 +840,27 @@ Discourse::Application.routes.draw do
|
||||||
get "apple-app-site-association" => "metadata#app_association_ios", format: false
|
get "apple-app-site-association" => "metadata#app_association_ios", format: false
|
||||||
get "opensearch" => "metadata#opensearch", constraints: { format: :xml }
|
get "opensearch" => "metadata#opensearch", constraints: { format: :xml }
|
||||||
|
|
||||||
|
scope '/tag/:tag_id' do
|
||||||
|
constraints format: :json do
|
||||||
|
get '/' => 'tags#show'
|
||||||
|
get '/info' => 'tags#info'
|
||||||
|
get '/notifications' => 'tags#notifications'
|
||||||
|
put '/notifications' => 'tags#update_notifications'
|
||||||
|
put '/' => 'tags#update'
|
||||||
|
delete '/' => 'tags#destroy'
|
||||||
|
post '/synonyms' => 'tags#create_synonyms'
|
||||||
|
delete '/synonyms/:synonym_id' => 'tags#destroy_synonym'
|
||||||
|
|
||||||
|
Discourse.filters.each do |filter|
|
||||||
|
get "/l/#{filter}" => "tags#show_#{filter}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
constraints format: :rss do
|
||||||
|
get '/' => 'tags#tag_feed'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
scope "/tags" do
|
scope "/tags" do
|
||||||
get '/' => 'tags#index'
|
get '/' => 'tags#index'
|
||||||
get '/filter/list' => 'tags#index'
|
get '/filter/list' => 'tags#index'
|
||||||
|
@ -849,6 +870,7 @@ Discourse::Application.routes.draw do
|
||||||
post '/upload' => 'tags#upload'
|
post '/upload' => 'tags#upload'
|
||||||
get '/unused' => 'tags#list_unused'
|
get '/unused' => 'tags#list_unused'
|
||||||
delete '/unused' => 'tags#destroy_unused'
|
delete '/unused' => 'tags#destroy_unused'
|
||||||
|
|
||||||
constraints(tag_id: /[^\/]+?/, format: /json|rss/) do
|
constraints(tag_id: /[^\/]+?/, format: /json|rss/) do
|
||||||
scope path: '/c/*category_slug_path_with_id' do
|
scope path: '/c/*category_slug_path_with_id' do
|
||||||
Discourse.filters.each do |filter|
|
Discourse.filters.each do |filter|
|
||||||
|
@ -864,9 +886,13 @@ Discourse::Application.routes.draw do
|
||||||
get '/:tag_id' => 'tags#show', as: 'tag_category_show'
|
get '/:tag_id' => 'tags#show', as: 'tag_category_show'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
get '/intersection/:tag_id/*additional_tag_ids' => 'tags#show', as: 'tag_intersection'
|
||||||
|
end
|
||||||
|
|
||||||
|
# legacy routes
|
||||||
|
constraints(tag_id: /[^\/]+?/, format: /json|rss/) do
|
||||||
get '/:tag_id.rss' => 'tags#tag_feed'
|
get '/:tag_id.rss' => 'tags#tag_feed'
|
||||||
get '/:tag_id' => 'tags#show', as: 'tag_show'
|
get '/:tag_id' => 'tags#show', as: 'tag_show'
|
||||||
get '/intersection/:tag_id/*additional_tag_ids' => 'tags#show', as: 'tag_intersection'
|
|
||||||
get '/:tag_id/info' => 'tags#info'
|
get '/:tag_id/info' => 'tags#info'
|
||||||
get '/:tag_id/notifications' => 'tags#notifications'
|
get '/:tag_id/notifications' => 'tags#notifications'
|
||||||
put '/:tag_id/notifications' => 'tags#update_notifications'
|
put '/:tag_id/notifications' => 'tags#update_notifications'
|
||||||
|
|
Loading…
Reference in New Issue
Block a user