FEATURE: after category name is changed, URLs with old category slug and tag filter will redirect to new category slug
This commit is contained in:
parent
547abda6d6
commit
2293fca012
|
@ -167,11 +167,11 @@ class TagsController < ::ApplicationController
|
||||||
parent_category_id = nil
|
parent_category_id = nil
|
||||||
if parent_slug_or_id.present?
|
if parent_slug_or_id.present?
|
||||||
parent_category_id = Category.query_parent_category(parent_slug_or_id)
|
parent_category_id = Category.query_parent_category(parent_slug_or_id)
|
||||||
raise Discourse::NotFound if parent_category_id.blank?
|
redirect_or_not_found and return if parent_category_id.blank?
|
||||||
end
|
end
|
||||||
|
|
||||||
@filter_on_category = Category.query_category(slug_or_id, parent_category_id)
|
@filter_on_category = Category.query_category(slug_or_id, parent_category_id)
|
||||||
raise Discourse::NotFound if !@filter_on_category
|
redirect_or_not_found and return if !@filter_on_category
|
||||||
|
|
||||||
guardian.ensure_can_see!(@filter_on_category)
|
guardian.ensure_can_see!(@filter_on_category)
|
||||||
end
|
end
|
||||||
|
@ -197,4 +197,17 @@ class TagsController < ::ApplicationController
|
||||||
|
|
||||||
options
|
options
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def redirect_or_not_found
|
||||||
|
# automatic redirects for renamed categories
|
||||||
|
url = params[:parent_category] ? "c/#{params[:parent_category]}/#{params[:category]}" : "c/#{params[:category]}"
|
||||||
|
permalink = Permalink.find_by_url(url)
|
||||||
|
|
||||||
|
if permalink.present? && permalink.category_id
|
||||||
|
redirect_to "#{Discourse::base_uri}/tags#{permalink.target_url}/#{params[:tag_id]}", status: :moved_permanently
|
||||||
|
else
|
||||||
|
# redirect to 404
|
||||||
|
raise Discourse::NotFound
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue