From 07a1a81b95ff4be4b4a861496af6af6afbdf8923 Mon Sep 17 00:00:00 2001 From: Kyle Wilkinson Date: Thu, 16 Jun 2011 22:18:36 -0700 Subject: [PATCH 1/4] Add migration to add custom_url field to BlogPost. --- db/migrate/5_add_custom_url_field_to_blog_posts.rb | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 db/migrate/5_add_custom_url_field_to_blog_posts.rb diff --git a/db/migrate/5_add_custom_url_field_to_blog_posts.rb b/db/migrate/5_add_custom_url_field_to_blog_posts.rb new file mode 100644 index 0000000..5a8901e --- /dev/null +++ b/db/migrate/5_add_custom_url_field_to_blog_posts.rb @@ -0,0 +1,9 @@ +class AddCustomUrlFieldToBlogPosts < ActiveRecord::Migration + def self.up + add_column :blog_posts, :custom_url, :string + end + + def self.down + remove_column :blog_posts, :custom_url + end +end From 9320a6a608f097c8fc316b9c2a1e2a3f0bc21afb Mon Sep 17 00:00:00 2001 From: Kyle Wilkinson Date: Thu, 16 Jun 2011 22:24:49 -0700 Subject: [PATCH 2/4] Add logic to allow users to override the url for a post from just a title. --- app/models/blog_post.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/models/blog_post.rb b/app/models/blog_post.rb index 5c0101d..914e112 100644 --- a/app/models/blog_post.rb +++ b/app/models/blog_post.rb @@ -21,7 +21,7 @@ class BlogPost < ActiveRecord::Base validates :title, :presence => true, :uniqueness => true validates :body, :presence => true - has_friendly_id :title, :use_slug => true, + has_friendly_id :friendly_id_source, :use_slug => true, :default_locale => (::Refinery::I18n.default_frontend_locale rescue :en), :approximate_ascii => RefinerySetting.find_or_set(:approximate_ascii, false, :scoping => 'blog'), :strip_non_ascii => RefinerySetting.find_or_set(:strip_non_ascii, false, :scoping => 'blog') @@ -61,6 +61,10 @@ class BlogPost < ActiveRecord::Base }.compact end + def friendly_id_source + custom_url.present? ? custom_url : title + end + class << self def next current_record self.send(:with_exclusive_scope) do From ec405cdbea1d286da947b3b134dbc156b3e88f8e Mon Sep 17 00:00:00 2001 From: Kyle Wilkinson Date: Thu, 16 Jun 2011 22:47:50 -0700 Subject: [PATCH 3/4] Make blog_post custom_url field updatable. --- app/models/blog_post.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/blog_post.rb b/app/models/blog_post.rb index 914e112..a010d98 100644 --- a/app/models/blog_post.rb +++ b/app/models/blog_post.rb @@ -26,7 +26,7 @@ class BlogPost < ActiveRecord::Base :approximate_ascii => RefinerySetting.find_or_set(:approximate_ascii, false, :scoping => 'blog'), :strip_non_ascii => RefinerySetting.find_or_set(:strip_non_ascii, false, :scoping => 'blog') - attr_accessible :title, :body, :tag_list, :draft, :published_at, :browser_title, :meta_keywords, :meta_description, :user_id, :category_ids + attr_accessible :title, :body, :tag_list, :draft, :published_at, :browser_title, :meta_keywords, :meta_description, :user_id, :category_ids, :custom_url scope :by_archive, lambda { |archive_date| where(['published_at between ? and ?', archive_date.beginning_of_month, archive_date.end_of_month]) From e1390a0d72e2dc35f1306d11e1e756c138903572 Mon Sep 17 00:00:00 2001 From: Kyle Wilkinson Date: Thu, 16 Jun 2011 22:48:30 -0700 Subject: [PATCH 4/4] Add field to edit custom url on BlogPosts. --- app/views/admin/blog/posts/_form.html.erb | 9 +++++++++ config/locales/en.yml | 4 +++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/views/admin/blog/posts/_form.html.erb b/app/views/admin/blog/posts/_form.html.erb index c0467fd..abff4f2 100644 --- a/app/views/admin/blog/posts/_form.html.erb +++ b/app/views/admin/blog/posts/_form.html.erb @@ -73,6 +73,15 @@

<%= t('.published_at') %>

<%= f.datetime_select :published_at %> + +
+ + <%= f.label :custom_url, t('.custom_url') %> + <%= refinery_help_tag t('.custom_url_help') %> + + <%= f.text_field :custom_url, :class => "widest" %> +
+
<%= render :partial => '/seo_meta/form', :locals => {:form => f} %> diff --git a/config/locales/en.yml b/config/locales/en.yml index eb886a9..a4ad0fd 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -38,6 +38,8 @@ en: toggle_advanced_options: Click to access meta tag settings and menu options save_as_draft: Save as Draft published_at: Publish Date + custom_url: Custom Url + custom_url_help: Generate the url for the blog post from this text instead of the title. index: no_items_yet: 'There are no Blog Posts yet. Click "%{create}" to add your first blog post.' uncategorized: @@ -150,4 +152,4 @@ en: message: Message blog_post: title: Title - body: Body \ No newline at end of file + body: Body