diff options
author | Philip Arndt <parndt@gmail.com> | 2010-11-22 15:23:25 +1300 |
---|---|---|
committer | Philip Arndt <parndt@gmail.com> | 2010-11-22 15:26:53 +1300 |
commit | e5b9af1054bbd259bde0265acf4386cdaab0ca41 (patch) | |
tree | a5a89e83d262aab943c7e3f5d22dc52788de24d8 /generators/refinerycms_blog | |
parent | ebb4c59cef0eb4e89700275e23579ca6dd18d619 (diff) | |
parent | 6d94a0ba7b781f93519183c96bbc718465dccdb4 (diff) | |
download | refinerycms-blog-e5b9af1054bbd259bde0265acf4386cdaab0ca41.tar.gz refinerycms-blog-e5b9af1054bbd259bde0265acf4386cdaab0ca41.tar.bz2 refinerycms-blog-e5b9af1054bbd259bde0265acf4386cdaab0ca41.zip |
Merged in Joe's and Steven's forks and updated for compatibility with < 0.9.9. Also, specs now work by including the factories and I have also laid the foundation for cucumber features. Fixed an issue where the javascript file was clashing with the same code we merged to core from this engine relating to submenus. Regenerated gemspec.
Diffstat (limited to 'generators/refinerycms_blog')
3 files changed, 111 insertions, 0 deletions
diff --git a/generators/refinerycms_blog/refinerycms_blog_generator.rb b/generators/refinerycms_blog/refinerycms_blog_generator.rb new file mode 100644 index 0000000..2945823 --- /dev/null +++ b/generators/refinerycms_blog/refinerycms_blog_generator.rb @@ -0,0 +1,69 @@ +class RefinerycmsBlogGenerator < Rails::Generator::NamedBase + + def initialize(*runtime_args) + # set argument for the user. + runtime_args[0] = %w(refinerycms_blog) + super(*runtime_args) + end + + def banner + 'Usage: script/generate refinerycms_blog' + end + + def manifest + record do |m| + matches = Dir[ + File.expand_path('../../../public/images/**/*', __FILE__), + File.expand_path('../../../public/stylesheets/**/*', __FILE__), + File.expand_path('../../../public/javascripts/**/*', __FILE__), + ] + matches.reject{|d| !File.directory?(d)}.each do |dir| + m.directory((%w(public) | dir.split('public/').last.split('/')).join('/')) + end + matches.reject{|f| File.directory?(f)}.each do |image| + path = (%w(public) | image.split('public/').last.split('/'))[0...-1].join('/') + m.template "../../../#{path}/#{image.split('/').last}", "#{path}/#{image.split('/').last}" + end + + m.directory('db/seeds') + m.template('db/seeds/seed.rb', 'db/seeds/refinerycms_blog.rb') + + m.migration_template('db/migrate/migration.rb', 'db/migrate', + :migration_file_name => 'create_blog_structure', + :assigns => { + :migration_name => 'CreateBlogStructure', + :tables => [{ + :table_name => 'blog_posts', + :attributes => [ + Rails::Generator::GeneratedAttribute.new('title', 'string'), + Rails::Generator::GeneratedAttribute.new('body', 'text'), + Rails::Generator::GeneratedAttribute.new('draft', 'boolean'), + Rails::Generator::GeneratedAttribute.new('published_at', 'datetime') + ], :id => true + },{ + :table_name => 'blog_comments', + :attributes => [ + Rails::Generator::GeneratedAttribute.new('blog_post_id', 'integer'), + Rails::Generator::GeneratedAttribute.new('spam', 'boolean'), + Rails::Generator::GeneratedAttribute.new('name', 'string'), + Rails::Generator::GeneratedAttribute.new('email', 'string'), + Rails::Generator::GeneratedAttribute.new('body', 'text'), + Rails::Generator::GeneratedAttribute.new('state', 'string'), + ], :id => true + },{ + :table_name => 'blog_categories', + :attributes => [ + Rails::Generator::GeneratedAttribute.new('title', 'string') + ], :id => true + },{ + :table_name => 'blog_categories_blog_posts', + :attributes => [ + Rails::Generator::GeneratedAttribute.new('blog_category_id', 'integer'), + Rails::Generator::GeneratedAttribute.new('blog_post_id', 'integer') + ], :id => false + }] + }) + end + end + +end if defined?(Rails::Generator::NamedBase)
\ No newline at end of file diff --git a/generators/refinerycms_blog/templates/db/migrate/migration.rb b/generators/refinerycms_blog/templates/db/migrate/migration.rb new file mode 100644 index 0000000..5ba29c6 --- /dev/null +++ b/generators/refinerycms_blog/templates/db/migrate/migration.rb @@ -0,0 +1,26 @@ +class <%= migration_name %> < ActiveRecord::Migration + + def self.up<% 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"}) + +<% tables.each do |table| -%> + drop_table :<%= table[:table_name] %> +<% end -%> + end + +end diff --git a/generators/refinerycms_blog/templates/db/seeds/seed.rb b/generators/refinerycms_blog/templates/db/seeds/seed.rb new file mode 100644 index 0000000..228fc7b --- /dev/null +++ b/generators/refinerycms_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?(\/|\/.+?|)$" +) + +RefinerySetting.find_or_set(:default_page_parts, %w(Body Side\ Body)).each do |default_page_part| + page.parts.create(:title => default_page_part, :body => nil) +end |