diff options
author | Philip Arndt <parndt@gmail.com> | 2010-09-03 23:32:07 +1200 |
---|---|---|
committer | Philip Arndt <parndt@gmail.com> | 2010-09-03 23:32:07 +1200 |
commit | a2f655b55eb30a900020e8aff9601ed0606ce58f (patch) | |
tree | d57cf7aef6ae36a4751144587fab7fe2e508d491 /lib | |
parent | c4222bfdf5733d1552a2ecf4468d89cf89a583b1 (diff) | |
download | refinerycms-blog-a2f655b55eb30a900020e8aff9601ed0606ce58f.tar.gz refinerycms-blog-a2f655b55eb30a900020e8aff9601ed0606ce58f.tar.bz2 refinerycms-blog-a2f655b55eb30a900020e8aff9601ed0606ce58f.zip |
Hello rails3 support.
Diffstat (limited to 'lib')
4 files changed, 138 insertions, 1 deletions
diff --git a/lib/generators/refinery_blog/templates/db/migrate/migration_number_create_singular_name.rb b/lib/generators/refinery_blog/templates/db/migrate/migration_number_create_singular_name.rb new file mode 100644 index 0000000..badb213 --- /dev/null +++ b/lib/generators/refinery_blog/templates/db/migrate/migration_number_create_singular_name.rb @@ -0,0 +1,26 @@ +class Create<%= singular_name.camelize %> < ActiveRecord::Migration + + def self.up<% @refinerycms_blog_tables.each do |table| %> + create_table :<%= table[:table_name] %>, :id => <%= table[:id].to_s %> do |t| +<% table[:attributes].each do |attribute| -%> + t.<%= attribute.type %> :<%= attribute.name %> +<% end -%> + <%= 't.timestamps' if table[:id] %> + end + + <%= "add_index :#{table[:table_name]}, :id" if table[:id] %> +<% end -%> + load(Rails.root.join('db', 'seeds', 'refinerycms_blog.rb').to_s) + end + + def self.down + UserPlugin.destroy_all({:name => "refinerycms_blog"}) + + Page.delete_all({:link_url => "/blog"}) + +<% @refinerycms_blog_tables.each do |table| -%> + drop_table :<%= table[:table_name] %> +<% end -%> + end + +end diff --git a/lib/generators/refinery_blog/templates/db/seeds/seed.rb b/lib/generators/refinery_blog/templates/db/seeds/seed.rb new file mode 100644 index 0000000..72648d3 --- /dev/null +++ b/lib/generators/refinery_blog/templates/db/seeds/seed.rb @@ -0,0 +1,16 @@ +User.find(:all).each do |user| + user.plugins.create(:name => "<%= singular_name %>", + :position => (user.plugins.maximum(:position) || -1) +1) +end + +page = Page.create( + :title => "Blog", + :link_url => "/blog", + :deletable => false, + :position => ((Page.maximum(:position, :conditions => {:parent_id => nil}) || -1)+1), + :menu_match => "^/blogs?(\/|\/.+?|)$" +) + +Page.default_parts.each do |default_page_part| + page.parts.create(:title => default_page_part, :body => nil) +end diff --git a/lib/generators/refinery_blog_generator.rb b/lib/generators/refinery_blog_generator.rb new file mode 100644 index 0000000..db2e2ef --- /dev/null +++ b/lib/generators/refinery_blog_generator.rb @@ -0,0 +1,79 @@ +require 'rails/generators/migration' + +class RefineryBlogGenerator < Rails::Generators::NamedBase + include Rails::Generators::Migration + + source_root File.expand_path('../refinery_blog/templates/', __FILE__) + argument :name, :type => :string, :default => 'blog_structure', :banner => '' + + def generate + # seed file + template 'db/seeds/seed.rb', Rails.root.join('db/seeds/refinerycms_blog.rb') + + # migration file + @refinerycms_blog_tables = [{ + :table_name => 'blog_posts', + :attributes => [ + Rails::Generators::GeneratedAttribute.new('title', 'string'), + Rails::Generators::GeneratedAttribute.new('body', 'text'), + Rails::Generators::GeneratedAttribute.new('draft', 'boolean') + ], :id => true + },{ + :table_name => 'blog_comments', + :attributes => [ + Rails::Generators::GeneratedAttribute.new('blog_post_id', 'integer'), + Rails::Generators::GeneratedAttribute.new('spam', 'boolean'), + Rails::Generators::GeneratedAttribute.new('name', 'string'), + Rails::Generators::GeneratedAttribute.new('email', 'string'), + Rails::Generators::GeneratedAttribute.new('body', 'text'), + Rails::Generators::GeneratedAttribute.new('state', 'string'), + ], :id => true + },{ + :table_name => 'blog_categories', + :attributes => [ + Rails::Generators::GeneratedAttribute.new('title', 'string') + ], :id => true + },{ + :table_name => 'blog_categories_blog_posts', + :attributes => [ + Rails::Generators::GeneratedAttribute.new('blog_category_id', 'integer'), + Rails::Generators::GeneratedAttribute.new('blog_post_id', 'integer') + ], :id => false + }] + next_migration_number = ActiveRecord::Generators::Base.next_migration_number(File.dirname(__FILE__)) + template('db/migrate/migration_number_create_singular_name.rb', + Rails.root.join("db/migrate/#{next_migration_number}_create_#{singular_name}.rb")) + + puts "------------------------" + puts "Now run:" + puts "rake db:migrate" + puts "------------------------" + end +end + +# Below is a hack until this issue: +# https://rails.lighthouseapp.com/projects/8994/tickets/3820-make-railsgeneratorsmigrationnext_migration_number-method-a-class-method-so-it-possible-to-use-it-in-custom-generators +# is fixed on the Rails project. + +require 'rails/generators/named_base' +require 'rails/generators/migration' +require 'rails/generators/active_model' +require 'active_record' + +module ActiveRecord + module Generators + class Base < Rails::Generators::NamedBase #:nodoc: + include Rails::Generators::Migration + + # Implement the required interface for Rails::Generators::Migration. + def self.next_migration_number(dirname) #:nodoc: + next_migration_number = current_migration_number(dirname) + 1 + if ActiveRecord::Base.timestamped_migrations + [Time.now.utc.strftime("%Y%m%d%H%M%S"), "%.14d" % next_migration_number].max + else + "%.3d" % next_migration_number + end + end + end + end +end
\ No newline at end of file diff --git a/lib/refinerycms-blog.rb b/lib/refinerycms-blog.rb index 1235d60..3fd844e 100644 --- a/lib/refinerycms-blog.rb +++ b/lib/refinerycms-blog.rb @@ -21,12 +21,28 @@ module Refinery :class => BlogPost } end + + # refinery 0.9.8 had a bug that we later found through using this engine. + # the bug was that the plugin urls were not :controller => '/admin/whatever' + if Refinery.version == '0.9.8' + ::Refinery::Plugin.class_eval %{ + alias_method :old_url, :url + + def url + if (plugin_url = self.old_url).is_a?(Hash) and plugin_url[:controller] =~ %r{^admin} + plugin_url[:controller] = "/\#{plugin_url[:controller]}" + end + + plugin_url + end + } + end end end if defined?(Rails::Engine) class << self def version - %q{1.0.rc3} + %q{1.0.rc4} end end end |