aboutsummaryrefslogtreecommitdiffstats
path: root/generators/refinerycms_blog
diff options
context:
space:
mode:
authorPhilip Arndt <parndt@gmail.com>2010-11-22 15:23:25 +1300
committerPhilip Arndt <parndt@gmail.com>2010-11-22 15:26:53 +1300
commite5b9af1054bbd259bde0265acf4386cdaab0ca41 (patch)
treea5a89e83d262aab943c7e3f5d22dc52788de24d8 /generators/refinerycms_blog
parentebb4c59cef0eb4e89700275e23579ca6dd18d619 (diff)
parent6d94a0ba7b781f93519183c96bbc718465dccdb4 (diff)
downloadrefinerycms-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')
-rw-r--r--generators/refinerycms_blog/refinerycms_blog_generator.rb69
-rw-r--r--generators/refinerycms_blog/templates/db/migrate/migration.rb26
-rw-r--r--generators/refinerycms_blog/templates/db/seeds/seed.rb16
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