mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 02:41:13 +08:00
FIX: categories with non-ascii names will have broken next page urls
This commit is contained in:
@ -104,9 +104,9 @@ class ListController < ApplicationController
|
|||||||
discourse_expires_in 1.minute
|
discourse_expires_in 1.minute
|
||||||
|
|
||||||
@title = @category.name
|
@title = @category.name
|
||||||
@link = "#{Discourse.base_url}/category/#{@category.slug}"
|
@link = "#{Discourse.base_url}/category/#{@category.slug_for_url}"
|
||||||
@description = "#{I18n.t('topics_in_category', category: @category.name)} #{@category.description}"
|
@description = "#{I18n.t('topics_in_category', category: @category.name)} #{@category.description}"
|
||||||
@atom_link = "#{Discourse.base_url}/category/#{@category.slug}.rss"
|
@atom_link = "#{Discourse.base_url}/category/#{@category.slug_for_url}.rss"
|
||||||
@topic_list = TopicQuery.new.list_new_in_category(@category)
|
@topic_list = TopicQuery.new.list_new_in_category(@category)
|
||||||
|
|
||||||
render 'list', formats: [:rss]
|
render 'list', formats: [:rss]
|
||||||
@ -222,8 +222,8 @@ class ListController < ApplicationController
|
|||||||
def page_params(opts = nil)
|
def page_params(opts = nil)
|
||||||
opts ||= {}
|
opts ||= {}
|
||||||
route_params = {format: 'json'}
|
route_params = {format: 'json'}
|
||||||
route_params[:category] = @category.slug if @category
|
route_params[:category] = @category.slug_for_url if @category
|
||||||
route_params[:parent_category] = @category.parent_category.slug if @category && @category.parent_category
|
route_params[:parent_category] = @category.parent_category.slug_for_url if @category && @category.parent_category
|
||||||
route_params[:sort_order] = opts[:sort_order] if opts[:sort_order].present?
|
route_params[:sort_order] = opts[:sort_order] if opts[:sort_order].present?
|
||||||
route_params[:sort_descending] = opts[:sort_descending] if opts[:sort_descending].present?
|
route_params[:sort_descending] = opts[:sort_descending] if opts[:sort_descending].present?
|
||||||
route_params
|
route_params
|
||||||
|
@ -186,6 +186,10 @@ SQL
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def slug_for_url
|
||||||
|
slug.present? ? self.slug : "#{self.id}-category"
|
||||||
|
end
|
||||||
|
|
||||||
def publish_categories_list
|
def publish_categories_list
|
||||||
MessageBus.publish('/categories', {categories: ActiveModel::ArraySerializer.new(Category.latest).as_json})
|
MessageBus.publish('/categories', {categories: ActiveModel::ArraySerializer.new(Category.latest).as_json})
|
||||||
end
|
end
|
||||||
|
@ -150,6 +150,7 @@ describe Category do
|
|||||||
|
|
||||||
it "creates a blank slug, this is OK." do
|
it "creates a blank slug, this is OK." do
|
||||||
category.slug.should be_blank
|
category.slug.should be_blank
|
||||||
|
category.slug_for_url.should == "#{category.id}-category"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -158,6 +159,7 @@ describe Category do
|
|||||||
|
|
||||||
it 'creates a blank slug' do
|
it 'creates a blank slug' do
|
||||||
category.slug.should be_blank
|
category.slug.should be_blank
|
||||||
|
category.slug_for_url.should == "#{category.id}-category"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -169,6 +171,7 @@ describe Category do
|
|||||||
|
|
||||||
it 'is created correctly' do
|
it 'is created correctly' do
|
||||||
@category.slug.should == 'amazing-category'
|
@category.slug.should == 'amazing-category'
|
||||||
|
@category.slug_for_url.should == @category.slug
|
||||||
|
|
||||||
@category.description.should be_blank
|
@category.description.should be_blank
|
||||||
|
|
||||||
@ -204,7 +207,9 @@ describe Category do
|
|||||||
|
|
||||||
describe "creating a new category with the same slug" do
|
describe "creating a new category with the same slug" do
|
||||||
it "should have a blank slug" do
|
it "should have a blank slug" do
|
||||||
Fabricate(:category, name: "Amazing Categóry").slug.should be_blank
|
category = Fabricate(:category, name: "Amazing Categóry")
|
||||||
|
category.slug.should be_blank
|
||||||
|
category.slug_for_url.should == "#{category.id}-category"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user