sofa_blog 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. data/Gemfile +8 -1
  2. data/Gemfile.lock +83 -65
  3. data/LICENSE +1 -1
  4. data/README.md +27 -23
  5. data/Rakefile +8 -7
  6. data/VERSION +1 -1
  7. data/app/assets/images/rails.png +0 -0
  8. data/app/assets/javascripts/sofa_blog/application.js +7 -0
  9. data/app/assets/javascripts/sofa_blog/posts.js +2 -0
  10. data/app/assets/stylesheets/sofa_blog/admin.css +57 -0
  11. data/app/assets/stylesheets/sofa_blog/application.css +73 -0
  12. data/app/assets/stylesheets/sofa_blog/reset.css +1 -0
  13. data/app/controllers/application_controller.rb +5 -0
  14. data/app/controllers/sofa_blog/admin/base_controller.rb +3 -0
  15. data/app/controllers/sofa_blog/admin/comments_controller.rb +74 -0
  16. data/app/controllers/sofa_blog/admin/posts_controller.rb +55 -0
  17. data/app/controllers/sofa_blog/posts_controller.rb +13 -0
  18. data/app/helpers/sofa_blog/posts_helper.rb +2 -0
  19. data/app/helpers/sofa_blog_helper.rb +12 -0
  20. data/app/models/.gitkeep +0 -0
  21. data/app/models/sofa_blog/comment.rb +53 -0
  22. data/app/models/{blog_post.rb → sofa_blog/post.rb} +25 -25
  23. data/app/models/{blog_tag.rb → sofa_blog/tag.rb} +11 -10
  24. data/app/models/sofa_blog/tagging.rb +9 -0
  25. data/app/views/layouts/application.html.erb +17 -0
  26. data/app/views/sofa_blog/admin/_html_head.html.erb +1 -0
  27. data/app/views/sofa_blog/admin/_navigation.html.erb +1 -0
  28. data/app/views/sofa_blog/admin/comments/_comment.html.erb +21 -0
  29. data/app/views/sofa_blog/admin/comments/_form.html.erb +27 -0
  30. data/app/views/sofa_blog/admin/comments/_status.html.erb +7 -0
  31. data/app/views/sofa_blog/admin/comments/approve.js.erb +1 -0
  32. data/app/views/sofa_blog/admin/comments/disapprove.js.erb +1 -0
  33. data/app/views/sofa_blog/admin/comments/edit.html.erb +6 -0
  34. data/app/views/sofa_blog/admin/comments/index.html.erb +7 -0
  35. data/app/views/sofa_blog/admin/comments/new.html.erb +14 -0
  36. data/app/views/sofa_blog/admin/posts/_form.html.erb +35 -0
  37. data/app/views/sofa_blog/admin/posts/_post.html.erb +21 -0
  38. data/app/views/sofa_blog/admin/posts/edit.html.erb +5 -0
  39. data/app/views/sofa_blog/admin/posts/index.html.erb +7 -0
  40. data/app/views/sofa_blog/admin/posts/new.html.erb +5 -0
  41. data/app/views/sofa_blog/posts/_post.html.erb +21 -0
  42. data/app/views/sofa_blog/posts/index.html.erb +5 -0
  43. data/config/application.rb +48 -0
  44. data/config/boot.rb +6 -0
  45. data/config/database.yml +25 -0
  46. data/{tmp → config}/environment.rb +0 -1
  47. data/config/environments/development.rb +33 -0
  48. data/config/environments/production.rb +51 -0
  49. data/config/environments/test.rb +42 -0
  50. data/config/initializers/secret_token.rb +3 -0
  51. data/config/initializers/sofa_blog.rb +12 -0
  52. data/config/initializers/wrap_parameters.rb +14 -0
  53. data/config/locales/en.yml +5 -0
  54. data/config/routes.rb +14 -9
  55. data/config.ru +4 -0
  56. data/db/migrate/01_create_sofa_blog.rb +29 -28
  57. data/db/schema.rb +59 -0
  58. data/db/seeds.rb +7 -0
  59. data/lib/sofa_blog/configuration.rb +21 -0
  60. data/lib/sofa_blog/engine.rb +13 -10
  61. data/lib/sofa_blog/form_builder.rb +50 -0
  62. data/lib/sofa_blog.rb +21 -2
  63. data/script/rails +6 -0
  64. data/sofa_blog.gemspec +89 -47
  65. data/test/fixtures/.gitkeep +0 -0
  66. data/test/fixtures/sofa_blog/comments.yml +6 -0
  67. data/test/fixtures/sofa_blog/posts.yml +7 -0
  68. data/test/functional/.gitkeep +0 -0
  69. data/test/functional/sofa_blog/admin/comments_controller_test.rb +59 -0
  70. data/test/functional/sofa_blog/admin/posts_controller_test.rb +76 -0
  71. data/test/functional/sofa_blog/posts_controller_test.rb +7 -0
  72. data/test/test_helper.rb +37 -0
  73. data/test/unit/.gitkeep +0 -0
  74. data/test/unit/comment_test.rb +55 -0
  75. data/test/unit/helpers/sofa_blog/posts_helper_test.rb +4 -0
  76. data/test/unit/post_test.rb +44 -0
  77. data/test/unit/tag_test.rb +7 -0
  78. data/test/unit/tagging_test.rb +7 -0
  79. metadata +145 -103
  80. data/.DS_Store +0 -0
  81. data/app/.DS_Store +0 -0
  82. data/app/controllers/cms_admin/blog_comments_controller.rb +0 -66
  83. data/app/controllers/cms_admin/blog_posts_controller.rb +0 -48
  84. data/app/models/blog_comment.rb +0 -45
  85. data/app/models/blog_tagging.rb +0 -8
  86. data/app/views/.DS_Store +0 -0
  87. data/app/views/cms_admin/blog_comments/_blog_comment.html.erb +0 -22
  88. data/app/views/cms_admin/blog_comments/_form.html.erb +0 -24
  89. data/app/views/cms_admin/blog_comments/_status.html.erb +0 -7
  90. data/app/views/cms_admin/blog_comments/approve.rjs +0 -1
  91. data/app/views/cms_admin/blog_comments/disapprove.rjs +0 -1
  92. data/app/views/cms_admin/blog_comments/edit.html.erb +0 -7
  93. data/app/views/cms_admin/blog_comments/index.html.erb +0 -7
  94. data/app/views/cms_admin/blog_comments/new.html.erb +0 -6
  95. data/app/views/cms_admin/blog_posts/_blog_post.html.erb +0 -21
  96. data/app/views/cms_admin/blog_posts/_form.html.erb +0 -33
  97. data/app/views/cms_admin/blog_posts/edit.html.erb +0 -7
  98. data/app/views/cms_admin/blog_posts/index.html.erb +0 -8
  99. data/app/views/cms_admin/blog_posts/new.html.erb +0 -5
  100. data/app/views/sofa_blog/_head.html.erb +0 -1
  101. data/app/views/sofa_blog/_nav.html.erb +0 -1
  102. data/config/.DS_Store +0 -0
  103. data/doc/sofa.png +0 -0
  104. data/lib/generators/README +0 -12
  105. data/lib/generators/blog_generator.rb +0 -33
  106. data/public/stylesheets/content.css +0 -53
  107. data/tmp/application.rb +0 -15
  108. data/tmp/boot.rb +0 -13
  109. data/tmp/initializers/formatted_form_builder.rb +0 -141
  110. data/tmp/initializers/wristband.rb +0 -1
  111. /data/{public/javascripts/jquery.autocomplete.pack.js → app/assets/javascripts/sofa_blog/jquery.autocomplete.js} +0 -0
@@ -0,0 +1,14 @@
1
+ # Be sure to restart your server when you modify this file.
2
+ #
3
+ # This file contains settings for ActionController::ParamsWrapper which
4
+ # is enabled by default.
5
+
6
+ # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
7
+ ActiveSupport.on_load(:action_controller) do
8
+ wrap_parameters format: [:json]
9
+ end
10
+
11
+ # Disable root element in JSON by default.
12
+ ActiveSupport.on_load(:active_record) do
13
+ self.include_root_in_json = false
14
+ end
@@ -0,0 +1,5 @@
1
+ # Sample localization file for English. Add more files in this directory for other locales.
2
+ # See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3
+
4
+ en:
5
+ hello: "Hello world"
data/config/routes.rb CHANGED
@@ -1,14 +1,19 @@
1
1
  Rails.application.routes.draw do
2
+
3
+ namespace :sofa_blog, :path => '' do
2
4
 
3
- namespace :cms_admin, :path => ComfortableMexicanSofa.config.admin_route_prefix do
4
- resources :blog_posts do
5
- resources :blog_comments do
6
- member do
7
- put :approve
8
- put :disapprove
5
+ resources :posts, :only => [:show, :index]
6
+
7
+ namespace :admin, :path => SofaBlog.config.admin_route_prefix do
8
+ resources :posts do
9
+ resources :comments do
10
+ member do
11
+ put :approve
12
+ put :disapprove
13
+ end
9
14
  end
10
15
  end
11
- end
12
- end
16
+ end unless SofaBlog.config.admin_route_prefix.blank?
17
+ end
13
18
 
14
- end
19
+ end
data/config.ru ADDED
@@ -0,0 +1,4 @@
1
+ # This file is used by Rack-based servers to start the application.
2
+
3
+ require ::File.expand_path('../config/environment', __FILE__)
4
+ run SofaBlog::Application
@@ -1,50 +1,51 @@
1
1
  class CreateSofaBlog < ActiveRecord::Migration
2
+
2
3
  def self.up
3
- create_table :blog_posts do |t|
4
+ create_table :sofa_blog_posts do |t|
4
5
  t.string :title
5
6
  t.text :content
6
7
  t.string :author
7
- t.boolean :published, :null => false, :default => false
8
- t.integer :comments_count, :null => false, :default => 0
8
+ t.boolean :is_published, :null => false, :default => false
9
+ t.integer :comments_count, :null => false, :default => 0
9
10
  t.integer :approved_comments_count, :null => false, :default => 0
10
11
  t.timestamps
11
12
  end
12
- add_index :blog_posts, [:published, :title]
13
- add_index :blog_posts, [:title, :published]
14
-
13
+ add_index :sofa_blog_posts, :created_at
14
+ add_index :sofa_blog_posts, [:is_published, :created_at]
15
15
 
16
- create_table :blog_comments do |t|
17
- t.integer :blog_post_id
18
- t.string :name
19
- t.string :email
20
- t.text :content
21
- t.boolean :approved, :null => false, :default => false
16
+ create_table :sofa_blog_comments do |t|
17
+ t.integer :post_id
18
+ t.string :name
19
+ t.string :email
20
+ t.text :content
21
+ t.boolean :is_approved, :null => false, :default => false
22
22
  t.timestamps
23
23
  end
24
- add_index :blog_comments, :blog_post_id
25
-
26
-
27
- create_table :blog_tags do |t|
24
+ add_index :sofa_blog_comments, [:post_id, :created_at]
25
+ add_index :sofa_blog_comments, [:post_id, :is_approved, :created_at],
26
+ :name => 'index_sofa_blog_comments_on_post_and_approved_and_created_at'
27
+
28
+ create_table :sofa_blog_tags do |t|
28
29
  t.string :name
29
- t.integer :blog_taggings_count
30
+ t.integer :taggings_count
30
31
  end
31
- add_index :blog_tags, [:name, :blog_taggings_count], :unique => true
32
- add_index :blog_tags, :blog_taggings_count
32
+ add_index :sofa_blog_tags, [:name, :taggings_count], :unique => true
33
+ add_index :sofa_blog_tags, :taggings_count
33
34
 
34
35
 
35
- create_table :blog_taggings do |t|
36
- t.integer :blog_post_id
37
- t.integer :blog_tag_id
36
+ create_table :sofa_blog_taggings do |t|
37
+ t.integer :post_id
38
+ t.integer :tag_id
38
39
  t.datetime :created_at
39
40
  end
40
- add_index :blog_taggings, [:blog_post_id, :blog_tag_id, :created_at], :unique => true, :name => 'index_blog_taggings_on_post_id_tag_id_created_at'
41
-
41
+ add_index :sofa_blog_taggings, [:post_id, :tag_id, :created_at], :unique => true, :name => 'index_sofa_blog_taggings_on_post_id_tag_id_created_at'
42
+
42
43
  end
43
44
 
44
45
  def self.down
45
- drop_table :blog_posts
46
- drop_table :blog_comments
47
- drop_table :blog_tags
48
- drop_table :blog_taggings
46
+ drop_table :sofa_blog_posts
47
+ drop_table :sofa_blog_comments
48
+ drop_table :sofa_blog_tags
49
+ drop_table :sofa_blog_taggings
49
50
  end
50
51
  end
data/db/schema.rb ADDED
@@ -0,0 +1,59 @@
1
+ # encoding: UTF-8
2
+ # This file is auto-generated from the current state of the database. Instead
3
+ # of editing this file, please use the migrations feature of Active Record to
4
+ # incrementally modify your database, and then regenerate this schema definition.
5
+ #
6
+ # Note that this schema.rb definition is the authoritative source for your
7
+ # database schema. If you need to create the application database on another
8
+ # system, you should be using db:schema:load, not running all the migrations
9
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
11
+ #
12
+ # It's strongly recommended to check this file into your version control system.
13
+
14
+ ActiveRecord::Schema.define(:version => 1) do
15
+
16
+ create_table "sofa_blog_comments", :force => true do |t|
17
+ t.integer "post_id"
18
+ t.string "name"
19
+ t.string "email"
20
+ t.text "content"
21
+ t.boolean "is_approved", :default => false, :null => false
22
+ t.datetime "created_at"
23
+ t.datetime "updated_at"
24
+ end
25
+
26
+ add_index "sofa_blog_comments", ["post_id", "created_at"], :name => "index_sofa_blog_comments_on_post_id_and_created_at"
27
+ add_index "sofa_blog_comments", ["post_id", "is_approved", "created_at"], :name => "index_sofa_blog_comments_on_post_and_approved_and_created_at"
28
+
29
+ create_table "sofa_blog_posts", :force => true do |t|
30
+ t.string "title"
31
+ t.text "content"
32
+ t.string "author"
33
+ t.boolean "is_published", :default => false, :null => false
34
+ t.integer "comments_count", :default => 0, :null => false
35
+ t.integer "approved_comments_count", :default => 0, :null => false
36
+ t.datetime "created_at"
37
+ t.datetime "updated_at"
38
+ end
39
+
40
+ add_index "sofa_blog_posts", ["created_at"], :name => "index_sofa_blog_posts_on_created_at"
41
+ add_index "sofa_blog_posts", ["is_published", "created_at"], :name => "index_sofa_blog_posts_on_is_published_and_created_at"
42
+
43
+ create_table "sofa_blog_taggings", :force => true do |t|
44
+ t.integer "post_id"
45
+ t.integer "tag_id"
46
+ t.datetime "created_at"
47
+ end
48
+
49
+ add_index "sofa_blog_taggings", ["post_id", "tag_id", "created_at"], :name => "index_sofa_blog_taggings_on_post_id_tag_id_created_at", :unique => true
50
+
51
+ create_table "sofa_blog_tags", :force => true do |t|
52
+ t.string "name"
53
+ t.integer "taggings_count"
54
+ end
55
+
56
+ add_index "sofa_blog_tags", ["name", "taggings_count"], :name => "index_sofa_blog_tags_on_name_and_taggings_count", :unique => true
57
+ add_index "sofa_blog_tags", ["taggings_count"], :name => "index_sofa_blog_tags_on_taggings_count"
58
+
59
+ end
data/db/seeds.rb ADDED
@@ -0,0 +1,7 @@
1
+ # This file should contain all the record creation needed to seed the database with its default values.
2
+ # The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
3
+ #
4
+ # Examples:
5
+ #
6
+ # cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
7
+ # Mayor.create(name: 'Emanuel', city: cities.first)
@@ -0,0 +1,21 @@
1
+ module SofaBlog
2
+ class Configuration
3
+ # Default url to access admin area is http://yourhost/cms-admin/
4
+ # You can change 'cms-admin' to 'admin', for example.
5
+ attr_accessor :admin_route_prefix
6
+
7
+ # Controller that should be used for admin area
8
+ attr_accessor :admin_controller
9
+
10
+ # Form builder
11
+ attr_accessor :form_builder
12
+
13
+ # Configuration defaults
14
+ def initialize
15
+ @admin_route_prefix = 'admin'
16
+ @admin_controller = 'ApplicationController'
17
+ @form_builder = 'SofaBlog::FormBuilder'
18
+ end
19
+
20
+ end
21
+ end
@@ -1,17 +1,20 @@
1
+ require 'sofa_blog'
1
2
  require 'rails'
2
- require 'comfortable_mexican_sofa'
3
- require "sofa_blog"
4
- require "rails"
5
3
 
6
4
  module SofaBlog
7
5
  class Engine < Rails::Engine
8
- initializer 'sofa_blog' do |app|
9
- ComfortableMexicanSofa::ViewHooks.add(:navigation, 'sofa_blog/nav')
10
- ComfortableMexicanSofa::ViewHooks.add(:html_head, 'sofa_blog/head')
11
-
12
- ActionView::Helpers::AssetTagHelper.register_stylesheet_expansion :blog => [
13
- 'comfortable_mexican_sofa/blog/content'
14
- ]
6
+ initializer 'sofa_blog.configuration' do |app|
7
+ if defined?(ComfortableMexicanSofa)
8
+ # Applying configuraion
9
+ SofaBlog.configure do |conf|
10
+ conf.admin_route_prefix = ComfortableMexicanSofa.config.admin_route_prefix
11
+ conf.admin_controller = 'CmsAdmin::BaseController'
12
+ conf.form_builder = 'ComfortableMexicanSofa::FormBuilder'
13
+ end
14
+ # Adding view hooks
15
+ ComfortableMexicanSofa::ViewHooks.add(:navigation, '/sofa_blog/admin/navigation')
16
+ ComfortableMexicanSofa::ViewHooks.add(:html_head, '/sofa_blog/admin/html_head')
17
+ end
15
18
  end
16
19
  end
17
20
  end
@@ -0,0 +1,50 @@
1
+ class SofaBlog::FormBuilder < ActionView::Helpers::FormBuilder
2
+
3
+ helpers = field_helpers -
4
+ %w(hidden_field fields_for) +
5
+ %w(select)
6
+
7
+ helpers.each do |name|
8
+ class_eval %Q^
9
+ def #{name}(field, *args)
10
+ options = args.extract_options!
11
+ args << options
12
+ return super if options.delete(:disable_builder)
13
+ default_field('#{name}', field, options){ super }
14
+ end
15
+ ^
16
+ end
17
+
18
+ def default_field(type, field, options = {}, &block)
19
+ errors = if object.respond_to?(:errors) && object.errors[field].present?
20
+ "<div class='errors'>#{[object.errors[field]].flatten.first}</div>"
21
+ end
22
+ if desc = options.delete(:desc)
23
+ desc = "<div class='desc'>#{desc}</div>"
24
+ end
25
+ %(
26
+ <div class='form_element #{type}_element #{'errors' if errors}'>
27
+ <div class='label'>#{label_for(field, options)}</div>
28
+ <div class='value'>#{yield}</div>
29
+ #{desc}
30
+ #{errors}
31
+ </div>
32
+ ).html_safe
33
+ end
34
+
35
+ def label_for(field, options)
36
+ label = options.delete(:label) || field.to_s.titleize.capitalize
37
+ "<label for=\"#{object_name}_#{field}\">#{label}</label>".html_safe
38
+ end
39
+
40
+ def simple_field(label = nil, content = nil, options = {}, &block)
41
+ content ||= @template.capture(&block) if block_given?
42
+ %(
43
+ <div class='form_element #{options.delete(:class)}'>
44
+ <div class='label'>#{label}</div>
45
+ <div class='value'>#{content}</div>
46
+ </div>
47
+ ).html_safe
48
+ end
49
+
50
+ end
data/lib/sofa_blog.rb CHANGED
@@ -1,3 +1,22 @@
1
- module SofaBlog
2
- require 'sofa_blog/engine' if defined?(Rails)
1
+ # Loading engine only if this is not a standalone installation
2
+ unless defined? SofaBlog::Application
3
+ require File.expand_path('sofa_blog/engine', File.dirname(__FILE__))
3
4
  end
5
+
6
+ require File.expand_path('sofa_blog/configuration', File.dirname(__FILE__))
7
+ require File.expand_path('sofa_blog/form_builder', File.dirname(__FILE__))
8
+
9
+ module SofaBlog
10
+ class << self
11
+
12
+ def configure
13
+ yield configuration
14
+ end
15
+
16
+ def configuration
17
+ @configuration ||= Configuration.new
18
+ end
19
+ alias :config :configuration
20
+
21
+ end
22
+ end
data/script/rails ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
data/sofa_blog.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{sofa_blog}
8
- s.version = "0.0.1"
8
+ s.version = "0.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Jack Neto", "The Working Group Inc"]
12
- s.date = %q{2011-02-27}
11
+ s.authors = ["Jack Neto", "The Working Group Inc."]
12
+ s.date = %q{2011-10-07}
13
13
  s.description = %q{}
14
14
  s.email = %q{jack@theworkinggroup.ca}
15
15
  s.extra_rdoc_files = [
@@ -17,72 +17,114 @@ Gem::Specification.new do |s|
17
17
  "README.md"
18
18
  ]
19
19
  s.files = [
20
- ".DS_Store",
21
20
  "Gemfile",
22
21
  "Gemfile.lock",
23
22
  "LICENSE",
24
23
  "README.md",
25
24
  "Rakefile",
26
25
  "VERSION",
27
- "app/.DS_Store",
28
- "app/controllers/cms_admin/blog_comments_controller.rb",
29
- "app/controllers/cms_admin/blog_posts_controller.rb",
30
- "app/models/blog_comment.rb",
31
- "app/models/blog_post.rb",
32
- "app/models/blog_tag.rb",
33
- "app/models/blog_tagging.rb",
34
- "app/views/.DS_Store",
35
- "app/views/cms_admin/blog_comments/_blog_comment.html.erb",
36
- "app/views/cms_admin/blog_comments/_form.html.erb",
37
- "app/views/cms_admin/blog_comments/_status.html.erb",
38
- "app/views/cms_admin/blog_comments/approve.rjs",
39
- "app/views/cms_admin/blog_comments/disapprove.rjs",
40
- "app/views/cms_admin/blog_comments/edit.html.erb",
41
- "app/views/cms_admin/blog_comments/index.html.erb",
42
- "app/views/cms_admin/blog_comments/new.html.erb",
43
- "app/views/cms_admin/blog_posts/_blog_post.html.erb",
44
- "app/views/cms_admin/blog_posts/_form.html.erb",
45
- "app/views/cms_admin/blog_posts/edit.html.erb",
46
- "app/views/cms_admin/blog_posts/index.html.erb",
47
- "app/views/cms_admin/blog_posts/new.html.erb",
48
- "app/views/sofa_blog/_head.html.erb",
49
- "app/views/sofa_blog/_nav.html.erb",
50
- "config/.DS_Store",
26
+ "app/assets/images/rails.png",
27
+ "app/assets/javascripts/sofa_blog/application.js",
28
+ "app/assets/javascripts/sofa_blog/jquery.autocomplete.js",
29
+ "app/assets/javascripts/sofa_blog/posts.js",
30
+ "app/assets/stylesheets/sofa_blog/admin.css",
31
+ "app/assets/stylesheets/sofa_blog/application.css",
32
+ "app/assets/stylesheets/sofa_blog/reset.css",
33
+ "app/controllers/application_controller.rb",
34
+ "app/controllers/sofa_blog/admin/base_controller.rb",
35
+ "app/controllers/sofa_blog/admin/comments_controller.rb",
36
+ "app/controllers/sofa_blog/admin/posts_controller.rb",
37
+ "app/controllers/sofa_blog/posts_controller.rb",
38
+ "app/helpers/sofa_blog/posts_helper.rb",
39
+ "app/helpers/sofa_blog_helper.rb",
40
+ "app/models/.gitkeep",
41
+ "app/models/sofa_blog/comment.rb",
42
+ "app/models/sofa_blog/post.rb",
43
+ "app/models/sofa_blog/tag.rb",
44
+ "app/models/sofa_blog/tagging.rb",
45
+ "app/views/layouts/application.html.erb",
46
+ "app/views/sofa_blog/admin/_html_head.html.erb",
47
+ "app/views/sofa_blog/admin/_navigation.html.erb",
48
+ "app/views/sofa_blog/admin/comments/_comment.html.erb",
49
+ "app/views/sofa_blog/admin/comments/_form.html.erb",
50
+ "app/views/sofa_blog/admin/comments/_status.html.erb",
51
+ "app/views/sofa_blog/admin/comments/approve.js.erb",
52
+ "app/views/sofa_blog/admin/comments/disapprove.js.erb",
53
+ "app/views/sofa_blog/admin/comments/edit.html.erb",
54
+ "app/views/sofa_blog/admin/comments/index.html.erb",
55
+ "app/views/sofa_blog/admin/comments/new.html.erb",
56
+ "app/views/sofa_blog/admin/posts/_form.html.erb",
57
+ "app/views/sofa_blog/admin/posts/_post.html.erb",
58
+ "app/views/sofa_blog/admin/posts/edit.html.erb",
59
+ "app/views/sofa_blog/admin/posts/index.html.erb",
60
+ "app/views/sofa_blog/admin/posts/new.html.erb",
61
+ "app/views/sofa_blog/posts/_post.html.erb",
62
+ "app/views/sofa_blog/posts/index.html.erb",
63
+ "config.ru",
64
+ "config/application.rb",
65
+ "config/boot.rb",
66
+ "config/database.yml",
67
+ "config/environment.rb",
68
+ "config/environments/development.rb",
69
+ "config/environments/production.rb",
70
+ "config/environments/test.rb",
71
+ "config/initializers/secret_token.rb",
72
+ "config/initializers/sofa_blog.rb",
73
+ "config/initializers/wrap_parameters.rb",
74
+ "config/locales/en.yml",
51
75
  "config/routes.rb",
52
76
  "db/migrate/01_create_sofa_blog.rb",
53
- "doc/sofa.png",
54
- "lib/generators/README",
55
- "lib/generators/blog_generator.rb",
77
+ "db/schema.rb",
78
+ "db/seeds.rb",
56
79
  "lib/sofa_blog.rb",
80
+ "lib/sofa_blog/configuration.rb",
57
81
  "lib/sofa_blog/engine.rb",
58
- "public/javascripts/jquery.autocomplete.pack.js",
59
- "public/stylesheets/content.css",
82
+ "lib/sofa_blog/form_builder.rb",
83
+ "script/rails",
60
84
  "sofa_blog.gemspec",
61
- "tmp/application.rb",
62
- "tmp/boot.rb",
63
- "tmp/environment.rb",
64
- "tmp/initializers/formatted_form_builder.rb",
65
- "tmp/initializers/wristband.rb"
85
+ "test/fixtures/.gitkeep",
86
+ "test/fixtures/sofa_blog/comments.yml",
87
+ "test/fixtures/sofa_blog/posts.yml",
88
+ "test/functional/.gitkeep",
89
+ "test/functional/sofa_blog/admin/comments_controller_test.rb",
90
+ "test/functional/sofa_blog/admin/posts_controller_test.rb",
91
+ "test/functional/sofa_blog/posts_controller_test.rb",
92
+ "test/test_helper.rb",
93
+ "test/unit/.gitkeep",
94
+ "test/unit/comment_test.rb",
95
+ "test/unit/helpers/sofa_blog/posts_helper_test.rb",
96
+ "test/unit/post_test.rb",
97
+ "test/unit/tag_test.rb",
98
+ "test/unit/tagging_test.rb"
66
99
  ]
67
100
  s.homepage = %q{http://github.com/twg/sofa-blog}
101
+ s.licenses = ["MIT"]
68
102
  s.require_paths = ["lib"]
69
- s.rubygems_version = %q{1.3.7}
70
- s.summary = %q{A blog extension for Comfortable Mexican Sofa}
103
+ s.rubygems_version = %q{1.6.2}
104
+ s.summary = %q{SofaBlog is a blog engine for Rails 3.1 apps (and ComfortableMexicanSofa)}
71
105
 
72
106
  if s.respond_to? :specification_version then
73
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
74
107
  s.specification_version = 3
75
108
 
76
109
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
77
- s.add_runtime_dependency(%q<comfortable_mexican_sofa>, [">= 1.0.46"])
78
- s.add_runtime_dependency(%q<comfortable_mexican_sofa>, [">= 1.0.46"])
110
+ s.add_runtime_dependency(%q<rails>, [">= 3.1.0.rc8"])
111
+ s.add_runtime_dependency(%q<rinku>, [">= 1.2.2"])
112
+ s.add_runtime_dependency(%q<jquery-rails>, [">= 0"])
113
+ s.add_development_dependency(%q<sqlite3>, [">= 0"])
114
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
79
115
  else
80
- s.add_dependency(%q<comfortable_mexican_sofa>, [">= 1.0.46"])
81
- s.add_dependency(%q<comfortable_mexican_sofa>, [">= 1.0.46"])
116
+ s.add_dependency(%q<rails>, [">= 3.1.0.rc8"])
117
+ s.add_dependency(%q<rinku>, [">= 1.2.2"])
118
+ s.add_dependency(%q<jquery-rails>, [">= 0"])
119
+ s.add_dependency(%q<sqlite3>, [">= 0"])
120
+ s.add_dependency(%q<jeweler>, [">= 0"])
82
121
  end
83
122
  else
84
- s.add_dependency(%q<comfortable_mexican_sofa>, [">= 1.0.46"])
85
- s.add_dependency(%q<comfortable_mexican_sofa>, [">= 1.0.46"])
123
+ s.add_dependency(%q<rails>, [">= 3.1.0.rc8"])
124
+ s.add_dependency(%q<rinku>, [">= 1.2.2"])
125
+ s.add_dependency(%q<jquery-rails>, [">= 0"])
126
+ s.add_dependency(%q<sqlite3>, [">= 0"])
127
+ s.add_dependency(%q<jeweler>, [">= 0"])
86
128
  end
87
129
  end
88
130
 
File without changes
@@ -0,0 +1,6 @@
1
+ default:
2
+ post: default
3
+ name: Default Name
4
+ email: default@test.test
5
+ content: Default Content
6
+ is_approved: true
@@ -0,0 +1,7 @@
1
+ default:
2
+ title: Default Title
3
+ content: Default Content
4
+ author: Default Author
5
+ is_published: true
6
+ comments_count: 1
7
+ approved_comments_count: 1
File without changes
@@ -0,0 +1,59 @@
1
+ require File.expand_path('../../../test_helper', File.dirname(__FILE__))
2
+
3
+ class SofaBlog::Admin::CommentsControllerTest < ActionController::TestCase
4
+
5
+ def test_get_index
6
+ get :index, :post_id => sofa_blog_posts(:default).id
7
+ assert_response :success
8
+ assert assigns(:post)
9
+ assert assigns(:comments)
10
+ assert_template :index
11
+ end
12
+
13
+ def test_get_new
14
+ get :new, :post_id => sofa_blog_posts(:default).id
15
+ assert_response :success
16
+ assert assigns(:post)
17
+ assert assigns(:comment)
18
+ assert_template :new
19
+ end
20
+
21
+ def test_creation
22
+ assert_difference 'SofaBlog::Comment.count' do
23
+ post :create, :post_id => sofa_blog_posts(:default).id, :comment => {:name => 'John Doe', :email => 'john@test.com', :content => 'New comment'}
24
+ assert assigns(:post)
25
+ assert_equal 'Comment created', flash[:notice]
26
+ assert_redirected_to :action => :index
27
+ end
28
+ end
29
+
30
+ def test_creation_failure
31
+ assert_no_difference 'SofaBlog::Comment.count' do
32
+ post :create, :post_id => sofa_blog_posts(:default).id, :post => {:name => nil, :email => nil, :content => 'New comment'}
33
+ assert_response :success
34
+ assert assigns(:post)
35
+ assert_template :new
36
+ end
37
+ end
38
+
39
+ def test_get_edit
40
+ get :edit, :post_id => sofa_blog_posts(:default).id, :id => sofa_blog_comments(:default).id
41
+ assert_response :success
42
+ assert assigns(:post)
43
+ assert assigns(:comment)
44
+ assert_template :edit
45
+ end
46
+
47
+ def test_get_edit_failure_on_bogus_comment
48
+ get :edit, :post_id => sofa_blog_posts(:default).id, :id => 'bogus'
49
+ assert_equal 'Comment not found', flash[:error]
50
+ assert_redirected_to :action => :index
51
+ end
52
+
53
+ def test_get_edit_failure_on_bogus_post
54
+ get :edit, :post_id => 'bogus', :id => 'bogus'
55
+ assert_equal 'Blog post not found', flash[:error]
56
+ assert_redirected_to sofa_blog_admin_posts_path
57
+ end
58
+
59
+ end