FIX: categories with non-ascii names will have broken next page urls

This commit is contained in:
Neil Lalonde 2014-03-24 13:36:23 -04:00
parent 36cbd0d348
commit ea86cfd4ef
3 changed files with 14 additions and 5 deletions

View File

@ -104,9 +104,9 @@ class ListController < ApplicationController
discourse_expires_in 1.minute
@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}"
@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)
render 'list', formats: [:rss]
@ -222,8 +222,8 @@ class ListController < ApplicationController
def page_params(opts = nil)
opts ||= {}
route_params = {format: 'json'}
route_params[:category] = @category.slug if @category
route_params[:parent_category] = @category.parent_category.slug if @category && @category.parent_category
route_params[:category] = @category.slug_for_url if @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_descending] = opts[:sort_descending] if opts[:sort_descending].present?
route_params

View File

@ -186,6 +186,10 @@ SQL
end
end
def slug_for_url
slug.present? ? self.slug : "#{self.id}-category"
end
def publish_categories_list
MessageBus.publish('/categories', {categories: ActiveModel::ArraySerializer.new(Category.latest).as_json})
end

View File

@ -150,6 +150,7 @@ describe Category do
it "creates a blank slug, this is OK." do
category.slug.should be_blank
category.slug_for_url.should == "#{category.id}-category"
end
end
@ -158,6 +159,7 @@ describe Category do
it 'creates a blank slug' do
category.slug.should be_blank
category.slug_for_url.should == "#{category.id}-category"
end
end
@ -169,6 +171,7 @@ describe Category do
it 'is created correctly' do
@category.slug.should == 'amazing-category'
@category.slug_for_url.should == @category.slug
@category.description.should be_blank
@ -204,7 +207,9 @@ describe Category do
describe "creating a new category with the same 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