comfortable_mexican_sofa 1.1.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. data/Gemfile +2 -6
  2. data/Gemfile.lock +3 -4
  3. data/VERSION +1 -1
  4. data/app/controllers/cms_admin/base_controller.rb +1 -1
  5. data/app/controllers/cms_admin/layouts_controller.rb +2 -2
  6. data/app/controllers/cms_admin/pages_controller.rb +2 -2
  7. data/app/controllers/cms_admin/revisions_controller.rb +57 -0
  8. data/app/controllers/cms_admin/sites_controller.rb +2 -2
  9. data/app/controllers/cms_admin/snippets_controller.rb +2 -2
  10. data/app/models/cms/layout.rb +2 -0
  11. data/app/models/cms/page.rb +29 -9
  12. data/app/models/cms/revision.rb +13 -0
  13. data/app/models/cms/snippet.rb +2 -5
  14. data/app/views/cms_admin/layouts/_form.html.erb +0 -1
  15. data/app/views/cms_admin/layouts/edit.html.erb +1 -0
  16. data/app/views/cms_admin/pages/_form.html.erb +0 -1
  17. data/app/views/cms_admin/pages/edit.html.erb +1 -0
  18. data/app/views/cms_admin/revisions/show.html.erb +36 -0
  19. data/app/views/cms_admin/sites/_form.html.erb +0 -1
  20. data/app/views/cms_admin/snippets/_form.html.erb +0 -1
  21. data/app/views/cms_admin/snippets/edit.html.erb +1 -0
  22. data/app/views/layouts/cms_admin/_body.html.erb +4 -0
  23. data/app/views/layouts/cms_admin/_left.html.erb +9 -7
  24. data/comfortable_mexican_sofa.gemspec +19 -12
  25. data/config/initializers/comfortable_mexican_sofa.rb +5 -0
  26. data/config/routes.rb +13 -2
  27. data/db/migrate/01_create_cms.rb +11 -0
  28. data/db/migrate/upgrades/03_upgrade_to_1_2_0.rb +15 -0
  29. data/lib/comfortable_mexican_sofa.rb +3 -1
  30. data/lib/comfortable_mexican_sofa/configuration.rb +4 -0
  31. data/lib/comfortable_mexican_sofa/form_builder.rb +0 -1
  32. data/lib/comfortable_mexican_sofa/has_revisions.rb +64 -0
  33. data/lib/comfortable_mexican_sofa/http_auth.rb +1 -0
  34. data/lib/comfortable_mexican_sofa/version.rb +7 -0
  35. data/public/stylesheets/comfortable_mexican_sofa/content.css +42 -0
  36. data/public/stylesheets/comfortable_mexican_sofa/structure.css +31 -6
  37. data/public/stylesheets/comfortable_mexican_sofa/typography.css +8 -0
  38. data/test/fixtures/cms/revisions.yml +21 -0
  39. data/test/functional/cms_admin/layouts_controller_test.rb +2 -31
  40. data/test/functional/cms_admin/pages_controller_test.rb +7 -48
  41. data/test/functional/cms_admin/revisions_controller_test.rb +135 -0
  42. data/test/functional/cms_admin/sites_controller_test.rb +4 -29
  43. data/test/functional/cms_admin/snippets_controller_test.rb +2 -31
  44. data/test/test_helper.rb +1 -0
  45. data/test/unit/configuration_test.rb +5 -0
  46. data/test/unit/models/page_test.rb +0 -1
  47. data/test/unit/models/snippet_test.rb +0 -5
  48. data/test/unit/revisions_test.rb +185 -0
  49. metadata +18 -19
  50. data/config/initializers/mime_types.rb +0 -5
data/Gemfile CHANGED
@@ -1,12 +1,8 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
- gem 'rails', '>=3.0.3'
4
- gem 'active_link_to', '>=0.0.6'
3
+ gem 'rails', '>=3.0.0'
4
+ gem 'active_link_to', '>=0.0.7'
5
5
  gem 'paperclip', '>=2.3.8'
6
- gem 'mime-types', :require => 'mime/types'
7
-
8
- # If you wish to use sqlite in production
9
- # gem 'sqlite3'
10
6
 
11
7
  group :development do
12
8
  gem 'sqlite3'
data/Gemfile.lock CHANGED
@@ -15,7 +15,7 @@ GEM
15
15
  rack-mount (~> 0.6.13)
16
16
  rack-test (~> 0.5.6)
17
17
  tzinfo (~> 0.3.23)
18
- active_link_to (0.0.6)
18
+ active_link_to (0.0.7)
19
19
  activemodel (3.0.3)
20
20
  activesupport (= 3.0.3)
21
21
  builder (~> 2.1.2)
@@ -78,9 +78,8 @@ PLATFORMS
78
78
  ruby
79
79
 
80
80
  DEPENDENCIES
81
- active_link_to (>= 0.0.6)
81
+ active_link_to (>= 0.0.7)
82
82
  jeweler (>= 1.4.0)
83
- mime-types
84
83
  paperclip (>= 2.3.8)
85
- rails (>= 3.0.3)
84
+ rails (>= 3.0.0)
86
85
  sqlite3
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.2
1
+ 1.2.0
@@ -1,4 +1,4 @@
1
- class CmsAdmin::BaseController < ActionController::Base
1
+ class CmsAdmin::BaseController < ApplicationController
2
2
 
3
3
  protect_from_forgery
4
4
 
@@ -19,7 +19,7 @@ class CmsAdmin::LayoutsController < CmsAdmin::BaseController
19
19
  def create
20
20
  @cms_layout.save!
21
21
  flash[:notice] = 'Layout created'
22
- redirect_to (params[:commit] ? {:action => :index} : {:action => :edit, :id => @cms_layout})
22
+ redirect_to :action => :edit, :id => @cms_layout
23
23
  rescue ActiveRecord::RecordInvalid
24
24
  flash.now[:error] = 'Failed to create layout'
25
25
  render :action => :new
@@ -28,7 +28,7 @@ class CmsAdmin::LayoutsController < CmsAdmin::BaseController
28
28
  def update
29
29
  @cms_layout.update_attributes!(params[:cms_layout])
30
30
  flash[:notice] = 'Layout updated'
31
- redirect_to (params[:commit] ? {:action => :index} : {:action => :edit, :id => @cms_layout})
31
+ redirect_to :action => :edit, :id => @cms_layout
32
32
  rescue ActiveRecord::RecordInvalid
33
33
  flash.now[:error] = 'Failed to update layout'
34
34
  render :action => :edit
@@ -22,7 +22,7 @@ class CmsAdmin::PagesController < CmsAdmin::BaseController
22
22
  def create
23
23
  @cms_page.save!
24
24
  flash[:notice] = 'Page saved'
25
- redirect_to (params[:commit] ? {:action => :index} : {:action => :edit, :id => @cms_page})
25
+ redirect_to :action => :edit, :id => @cms_page
26
26
  rescue ActiveRecord::RecordInvalid
27
27
  flash.now[:error] = 'Failed to create page'
28
28
  render :action => :new
@@ -31,7 +31,7 @@ class CmsAdmin::PagesController < CmsAdmin::BaseController
31
31
  def update
32
32
  @cms_page.save!
33
33
  flash[:notice] = 'Page updated'
34
- redirect_to (params[:commit] ? {:action => :index} : {:action => :edit, :id => @cms_page})
34
+ redirect_to :action => :edit, :id => @cms_page
35
35
  rescue ActiveRecord::RecordInvalid
36
36
  flash.now[:error] = 'Failed to update page'
37
37
  render :action => :edit
@@ -0,0 +1,57 @@
1
+ class CmsAdmin::RevisionsController < CmsAdmin::BaseController
2
+
3
+ before_filter :load_record
4
+ before_filter :load_revision, :except => :index
5
+
6
+ def index
7
+ redirect_to :action => :show, :id => @record.revisions.first.try(:id) || 0
8
+ end
9
+
10
+ def show
11
+ case @record
12
+ when Cms::Page
13
+ @current_content = @record.blocks.inject({}){|c, b| c[b.label] = b.content; c }
14
+ @versioned_content = @record.blocks.inject({}){|c, b| c[b.label] = @revision.data['blocks_attributes'].detect{|r| r[:label] == b.label}.try(:[], :content); c }
15
+ else
16
+ @current_content = @record.revision_fields.inject({}){|c, f| c[f] = @record.send(f); c }
17
+ @versioned_content = @record.revision_fields.inject({}){|c, f| c[f] = @revision.data[f]; c }
18
+ end
19
+ end
20
+
21
+ def revert
22
+ @record.restore_from_revision(@revision)
23
+ flash[:notice] = 'Content Reverted'
24
+ redirect_to_record
25
+ end
26
+
27
+ protected
28
+
29
+ def load_record
30
+ @record = if params[:layout_id]
31
+ Cms::Layout.find(params[:layout_id])
32
+ elsif params[:page_id]
33
+ Cms::Page.find(params[:page_id])
34
+ elsif params[:snippet_id]
35
+ Cms::Snippet.find(params[:snippet_id])
36
+ end
37
+ rescue ActiveRecord::RecordNotFound
38
+ flash[:error] = 'Record Not Found'
39
+ redirect_to cms_admin_path
40
+ end
41
+
42
+ def load_revision
43
+ @revision = @record.revisions.find(params[:id])
44
+ rescue ActiveRecord::RecordNotFound
45
+ flash[:error] = 'Revision Not Found'
46
+ redirect_to_record
47
+ end
48
+
49
+ def redirect_to_record
50
+ redirect_to case @record
51
+ when Cms::Layout then edit_cms_admin_layout_path(@record)
52
+ when Cms::Page then edit_cms_admin_page_path(@record)
53
+ when Cms::Snippet then edit_cms_admin_snippet_path(@record)
54
+ end
55
+ end
56
+
57
+ end
@@ -21,7 +21,7 @@ class CmsAdmin::SitesController < CmsAdmin::BaseController
21
21
  def create
22
22
  @cms_site.save!
23
23
  flash[:notice] = 'Site created'
24
- redirect_to (params[:commit] ? {:action => :index} : {:action => :edit, :id => @cms_site})
24
+ redirect_to :action => :edit, :id => @cms_site
25
25
  rescue ActiveRecord::RecordInvalid
26
26
  flash.now[:error] = 'Failed to create site'
27
27
  render :action => :new
@@ -30,7 +30,7 @@ class CmsAdmin::SitesController < CmsAdmin::BaseController
30
30
  def update
31
31
  @cms_site.update_attributes!(params[:cms_site])
32
32
  flash[:notice] = 'Site updated'
33
- redirect_to (params[:commit] ? {:action => :index} : {:action => :edit, :id => @cms_site})
33
+ redirect_to :action => :edit, :id => @cms_site
34
34
  rescue ActiveRecord::RecordInvalid
35
35
  flash.now[:error] = 'Failed to update site'
36
36
  render :action => :edit
@@ -19,7 +19,7 @@ class CmsAdmin::SnippetsController < CmsAdmin::BaseController
19
19
  def create
20
20
  @cms_snippet.save!
21
21
  flash[:notice] = 'Snippet created'
22
- redirect_to (params[:commit] ? {:action => :index} : {:action => :edit, :id => @cms_snippet})
22
+ redirect_to :action => :edit, :id => @cms_snippet
23
23
  rescue ActiveRecord::RecordInvalid
24
24
  flash.now[:error] = 'Failed to create snippet'
25
25
  render :action => :new
@@ -28,7 +28,7 @@ class CmsAdmin::SnippetsController < CmsAdmin::BaseController
28
28
  def update
29
29
  @cms_snippet.update_attributes!(params[:cms_snippet])
30
30
  flash[:notice] = 'Snippet updated'
31
- redirect_to (params[:commit] ? {:action => :index} : {:action => :edit, :id => @cms_snippet})
31
+ redirect_to :action => :edit, :id => @cms_snippet
32
32
  rescue ActiveRecord::RecordInvalid
33
33
  flash.now[:error] = 'Failed to update snippet'
34
34
  render :action => :edit
@@ -4,6 +4,8 @@ class Cms::Layout < ActiveRecord::Base
4
4
 
5
5
  acts_as_tree
6
6
 
7
+ has_revisions_for :content, :css, :js
8
+
7
9
  # -- Relationships --------------------------------------------------------
8
10
  belongs_to :site
9
11
  has_many :pages, :dependent => :nullify
@@ -2,10 +2,12 @@ class Cms::Page < ActiveRecord::Base
2
2
 
3
3
  set_table_name :cms_pages
4
4
 
5
- # -- AR Extensions --------------------------------------------------------
6
5
  acts_as_tree :counter_cache => :children_count
7
6
 
8
- attr_accessor :tags
7
+ has_revisions_for :blocks_attributes
8
+
9
+ attr_accessor :tags,
10
+ :blocks_attributes_changed
9
11
 
10
12
  # -- Relationships --------------------------------------------------------
11
13
  belongs_to :site
@@ -13,8 +15,8 @@ class Cms::Page < ActiveRecord::Base
13
15
  belongs_to :target_page,
14
16
  :class_name => 'Cms::Page'
15
17
  has_many :blocks,
16
- :dependent => :destroy
17
- accepts_nested_attributes_for :blocks
18
+ :dependent => :destroy,
19
+ :autosave => true
18
20
 
19
21
  # -- Callbacks ------------------------------------------------------------
20
22
  before_validation :assign_parent,
@@ -64,13 +66,26 @@ class Cms::Page < ActiveRecord::Base
64
66
 
65
67
  # Transforms existing cms_block information into a hash that can be used
66
68
  # during form processing. That's the only way to modify cms_blocks.
67
- def blocks_attributes
68
- self.blocks.inject([]) do |arr, block|
69
+ def blocks_attributes(was = false)
70
+ self.blocks.collect do |block|
69
71
  block_attr = {}
70
72
  block_attr[:label] = block.label
71
- block_attr[:content] = block.content
72
- block_attr[:id] = block.id
73
- arr << block_attr
73
+ block_attr[:content] = was ? block.content_was : block.content
74
+ block_attr
75
+ end
76
+ end
77
+
78
+ # Array of block hashes in the following format:
79
+ # [
80
+ # { :label => 'block_1', :content => 'block content' },
81
+ # { :label => 'block_2', :content => 'block content' }
82
+ # ]
83
+ def blocks_attributes=(block_hashes = [])
84
+ block_hashes.each do |block_hash|
85
+ block_hash.symbolize_keys! unless block_hash.is_a?(HashWithIndifferentAccess)
86
+ block = self.blocks.detect{|b| b.label == block_hash[:label]} || self.blocks.build(:label => block_hash[:label])
87
+ block.content = block_hash[:content]
88
+ self.blocks_attributes_changed = self.blocks_attributes_changed || block.content_changed?
74
89
  end
75
90
  end
76
91
 
@@ -97,6 +112,11 @@ class Cms::Page < ActiveRecord::Base
97
112
  "http://#{self.site.hostname}#{self.full_path}"
98
113
  end
99
114
 
115
+ # Method to collect prevous state of blocks for revisions
116
+ def blocks_attributes_was
117
+ blocks_attributes(true)
118
+ end
119
+
100
120
  protected
101
121
 
102
122
  def assign_parent
@@ -0,0 +1,13 @@
1
+ class Cms::Revision < ActiveRecord::Base
2
+
3
+ set_table_name :cms_revisions
4
+
5
+ serialize :data
6
+
7
+ # -- Relationships --------------------------------------------------------
8
+ belongs_to :record, :polymorphic => true
9
+
10
+ # -- Scopes ---------------------------------------------------------------
11
+ default_scope order('created_at DESC')
12
+
13
+ end
@@ -2,6 +2,8 @@ class Cms::Snippet < ActiveRecord::Base
2
2
 
3
3
  set_table_name :cms_snippets
4
4
 
5
+ has_revisions_for :content
6
+
5
7
  # -- Relationships --------------------------------------------------------
6
8
  belongs_to :site
7
9
 
@@ -18,11 +20,6 @@ class Cms::Snippet < ActiveRecord::Base
18
20
  :presence => true,
19
21
  :uniqueness => { :scope => :site_id },
20
22
  :format => { :with => /^\w[a-z0-9_-]*$/i }
21
-
22
- # -- Class Methods --------------------------------------------------------
23
- def self.content_for(slug)
24
- (s = find_by_slug(slug)) ? s.content : ''
25
- end
26
23
 
27
24
  protected
28
25
 
@@ -16,6 +16,5 @@
16
16
  <%= form.text_area :js, :class => 'code_js' %>
17
17
 
18
18
  <%= form.simple_field nil, nil, :class => 'submit_element' do %>
19
- <%= form.submit 'and continue', :id => nil, :name => 'save', :disable_builder => true %>
20
19
  <%= form.submit @cms_layout.new_record?? 'Create Layout' : 'Update Layout', :disable_builder => true %>
21
20
  <% end %>
@@ -1,3 +1,4 @@
1
+ <%= link_to span_tag(pluralize(@cms_layout.revisions.count, 'revision')), cms_admin_layout_revisions_path(@cms_layout), :class => 'big button' %>
1
2
  <h1> Editing Layout </h1>
2
3
 
3
4
  <%= cms_form_for @cms_layout, :url => {:action => :update} do |form| %>
@@ -33,6 +33,5 @@
33
33
  <%= form.check_box :is_published, :disable_builder => true %>
34
34
  <%= form.label_for :is_published, :label => 'Published' %>
35
35
  <%= form.submit 'Preview', :name => 'preview', :id => nil, :disable_builder => true %>
36
- <%= form.submit 'and continue', :id => nil, :name => 'save', :disable_builder => true %>
37
36
  <%= form.submit @cms_page.new_record? ? 'Create Page' : 'Update Page', :disable_builder => true %>
38
37
  <% end %>
@@ -1,3 +1,4 @@
1
+ <%= link_to span_tag(pluralize(@cms_page.revisions.count, 'revision')), cms_admin_page_revisions_path(@cms_page), :class => 'big button' %>
1
2
  <h1> Editing Page </h1>
2
3
 
3
4
  <%= cms_form_for @cms_page, :url => {:action => :update} do |form| %>
@@ -0,0 +1,36 @@
1
+ <h1> Revisions for <%= @record.class.to_s.demodulize %></h1>
2
+ <h2> <%= @record.is_a?(Cms::Page) ? "Full Path: #{@record.full_path}" : "Slug: #{@record.slug}" %> </h2>
3
+
4
+ <% content_for :right_column do %>
5
+ <h2><%= pluralize(@record.revisions.count, 'Revision') %></h2>
6
+ <div class='revisions box'>
7
+ <% @record.revisions.each do |revision| %>
8
+ <%= active_link_to revision.created_at, :id => revision.id %>
9
+ <% end %>
10
+ </div>
11
+ <% end %>
12
+
13
+ <%= cms_form_for @revision, :url => {:action => :revert} do |form| %>
14
+ <%= form.simple_field do %>
15
+ <div class='current'>
16
+ <div class='title'>Current</div>
17
+ </div>
18
+ <div class='versioned'>
19
+ <div class='title'><%= @revision.created_at %></div>
20
+ </div>
21
+ <% end %>
22
+
23
+ <% @current_content.each do |label, content| %>
24
+
25
+ <%= form.simple_field label do %>
26
+ <div class='current'>
27
+ <div class='content'><%= content %></div>
28
+ </div>
29
+ <div class='versioned'>
30
+ <div class='content'><%= @versioned_content[label] %></div>
31
+ </div>
32
+ <% end %>
33
+ <% end %>
34
+
35
+ <%= form.submit 'Update to this Revision' %>
36
+ <% end %>
@@ -2,6 +2,5 @@
2
2
  <%= form.text_field :hostname %>
3
3
 
4
4
  <%= form.simple_field nil, nil, :class => 'submit_element' do %>
5
- <%= form.submit 'and continue', :id => nil, :name => 'save', :disable_builder => true %>
6
5
  <%= form.submit @cms_site.new_record?? 'Create Site' : 'Update Site', :disable_builder => true %>
7
6
  <% end %>
@@ -7,6 +7,5 @@
7
7
  <%= form.text_area :content, :class => 'code' %>
8
8
 
9
9
  <%= form.simple_field nil, nil, :class => 'submit_element' do %>
10
- <%= form.submit 'and continue', :id => nil, :name => 'save', :disable_builder => true %>
11
10
  <%= form.submit @cms_snippet.new_record?? 'Create Snippet' : 'Update Snippet', :disable_builder => true %>
12
11
  <% end %>
@@ -1,3 +1,4 @@
1
+ <%= link_to span_tag(pluralize(@cms_snippet.revisions.count, 'revision')), cms_admin_snippet_revisions_path(@cms_snippet), :class => 'big button' %>
1
2
  <h1> Editing Snippet </h1>
2
3
 
3
4
  <%= cms_form_for @cms_snippet, :url => {:action => :update} do |form| %>
@@ -12,6 +12,10 @@
12
12
  </div>
13
13
  <div class='center_column'>
14
14
  <%= render :partial => 'layouts/cms_admin/center' %>
15
+ <div class='sofa'>
16
+ <a href='http://comfortablemexicansofa.twg.ca' target='_blank'>ComfortableMexicanSofa</a>
17
+ <span class='version'><%= ComfortableMexicanSofa::VERSION %></span>
18
+ </div>
15
19
  </div>
16
20
  </div>
17
21
  </body>
@@ -1,7 +1,9 @@
1
- <% if ComfortableMexicanSofa.config.enable_multiple_sites %>
2
- <%= active_link_to 'Sites', cms_admin_sites_path %>
3
- <% end %>
4
- <%= active_link_to 'Layouts', cms_admin_layouts_path %>
5
- <%= active_link_to 'Pages', cms_admin_pages_path %>
6
- <%= active_link_to 'Snippets', cms_admin_snippets_path %>
7
- <%= cms_hook :navigation %>
1
+ <ul class='nav'>
2
+ <% if ComfortableMexicanSofa.config.enable_multiple_sites %>
3
+ <li><%= active_link_to 'Sites', cms_admin_sites_path %></li>
4
+ <% end %>
5
+ <li><%= active_link_to 'Layouts', cms_admin_layouts_path %></li>
6
+ <li><%= active_link_to 'Pages', cms_admin_pages_path %></li>
7
+ <li><%= active_link_to 'Snippets', cms_admin_snippets_path %></li>
8
+ <%= cms_hook :navigation %>
9
+ </ul>
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{comfortable_mexican_sofa}
8
- s.version = "1.1.2"
8
+ s.version = "1.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Oleg Khabarov", "The Working Group Inc"]
12
- s.date = %q{2011-05-05}
12
+ s.date = %q{2011-05-10}
13
13
  s.description = %q{}
14
14
  s.email = %q{oleg@theworkinggroup.ca}
15
15
  s.extra_rdoc_files = [
@@ -28,6 +28,7 @@ Gem::Specification.new do |s|
28
28
  "app/controllers/cms_admin/base_controller.rb",
29
29
  "app/controllers/cms_admin/layouts_controller.rb",
30
30
  "app/controllers/cms_admin/pages_controller.rb",
31
+ "app/controllers/cms_admin/revisions_controller.rb",
31
32
  "app/controllers/cms_admin/sites_controller.rb",
32
33
  "app/controllers/cms_admin/snippets_controller.rb",
33
34
  "app/controllers/cms_admin/uploads_controller.rb",
@@ -35,6 +36,7 @@ Gem::Specification.new do |s|
35
36
  "app/models/cms/block.rb",
36
37
  "app/models/cms/layout.rb",
37
38
  "app/models/cms/page.rb",
39
+ "app/models/cms/revision.rb",
38
40
  "app/models/cms/site.rb",
39
41
  "app/models/cms/snippet.rb",
40
42
  "app/models/cms/upload.rb",
@@ -51,6 +53,7 @@ Gem::Specification.new do |s|
51
53
  "app/views/cms_admin/pages/index.html.erb",
52
54
  "app/views/cms_admin/pages/new.html.erb",
53
55
  "app/views/cms_admin/pages/toggle_branch.js.erb",
56
+ "app/views/cms_admin/revisions/show.html.erb",
54
57
  "app/views/cms_admin/sites/_form.html.erb",
55
58
  "app/views/cms_admin/sites/edit.html.erb",
56
59
  "app/views/cms_admin/sites/index.html.erb",
@@ -78,7 +81,6 @@ Gem::Specification.new do |s|
78
81
  "config/environments/production.rb",
79
82
  "config/environments/test.rb",
80
83
  "config/initializers/comfortable_mexican_sofa.rb",
81
- "config/initializers/mime_types.rb",
82
84
  "config/initializers/paperclip.rb",
83
85
  "config/locales/en.yml",
84
86
  "config/routes.rb",
@@ -99,6 +101,7 @@ Gem::Specification.new do |s|
99
101
  "db/cms_fixtures/example.com/snippets/default/content.html",
100
102
  "db/migrate/01_create_cms.rb",
101
103
  "db/migrate/upgrades/02_upgrade_to_1_1_0.rb",
104
+ "db/migrate/upgrades/03_upgrade_to_1_2_0.rb",
102
105
  "db/seeds.rb",
103
106
  "doc/page_editing.png",
104
107
  "doc/sofa.png",
@@ -109,6 +112,7 @@ Gem::Specification.new do |s|
109
112
  "lib/comfortable_mexican_sofa/engine.rb",
110
113
  "lib/comfortable_mexican_sofa/fixtures.rb",
111
114
  "lib/comfortable_mexican_sofa/form_builder.rb",
115
+ "lib/comfortable_mexican_sofa/has_revisions.rb",
112
116
  "lib/comfortable_mexican_sofa/http_auth.rb",
113
117
  "lib/comfortable_mexican_sofa/rails_extensions.rb",
114
118
  "lib/comfortable_mexican_sofa/tag.rb",
@@ -124,6 +128,7 @@ Gem::Specification.new do |s|
124
128
  "lib/comfortable_mexican_sofa/tags/page_text.rb",
125
129
  "lib/comfortable_mexican_sofa/tags/partial.rb",
126
130
  "lib/comfortable_mexican_sofa/tags/snippet.rb",
131
+ "lib/comfortable_mexican_sofa/version.rb",
127
132
  "lib/comfortable_mexican_sofa/view_hooks.rb",
128
133
  "lib/comfortable_mexican_sofa/view_methods.rb",
129
134
  "lib/generators/README",
@@ -209,6 +214,7 @@ Gem::Specification.new do |s|
209
214
  "test/fixtures/cms/blocks.yml",
210
215
  "test/fixtures/cms/layouts.yml",
211
216
  "test/fixtures/cms/pages.yml",
217
+ "test/fixtures/cms/revisions.yml",
212
218
  "test/fixtures/cms/sites.yml",
213
219
  "test/fixtures/cms/snippets.yml",
214
220
  "test/fixtures/cms/uploads.yml",
@@ -218,6 +224,7 @@ Gem::Specification.new do |s|
218
224
  "test/fixtures/views/_nav_hook_2.html.erb",
219
225
  "test/functional/cms_admin/layouts_controller_test.rb",
220
226
  "test/functional/cms_admin/pages_controller_test.rb",
227
+ "test/functional/cms_admin/revisions_controller_test.rb",
221
228
  "test/functional/cms_admin/sites_controller_test.rb",
222
229
  "test/functional/cms_admin/snippets_controller_test.rb",
223
230
  "test/functional/cms_admin/uploads_controller_test.rb",
@@ -237,6 +244,7 @@ Gem::Specification.new do |s|
237
244
  "test/unit/models/site_test.rb",
238
245
  "test/unit/models/snippet_test.rb",
239
246
  "test/unit/models/upload_test.rb",
247
+ "test/unit/revisions_test.rb",
240
248
  "test/unit/tag_test.rb",
241
249
  "test/unit/tags/field_datetime_test.rb",
242
250
  "test/unit/tags/field_integer_test.rb",
@@ -259,6 +267,7 @@ Gem::Specification.new do |s|
259
267
  s.test_files = [
260
268
  "test/functional/cms_admin/layouts_controller_test.rb",
261
269
  "test/functional/cms_admin/pages_controller_test.rb",
270
+ "test/functional/cms_admin/revisions_controller_test.rb",
262
271
  "test/functional/cms_admin/sites_controller_test.rb",
263
272
  "test/functional/cms_admin/snippets_controller_test.rb",
264
273
  "test/functional/cms_admin/uploads_controller_test.rb",
@@ -278,6 +287,7 @@ Gem::Specification.new do |s|
278
287
  "test/unit/models/site_test.rb",
279
288
  "test/unit/models/snippet_test.rb",
280
289
  "test/unit/models/upload_test.rb",
290
+ "test/unit/revisions_test.rb",
281
291
  "test/unit/tag_test.rb",
282
292
  "test/unit/tags/field_datetime_test.rb",
283
293
  "test/unit/tags/field_integer_test.rb",
@@ -298,23 +308,20 @@ Gem::Specification.new do |s|
298
308
  s.specification_version = 3
299
309
 
300
310
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
301
- s.add_runtime_dependency(%q<rails>, [">= 3.0.3"])
302
- s.add_runtime_dependency(%q<active_link_to>, [">= 0.0.6"])
311
+ s.add_runtime_dependency(%q<rails>, [">= 3.0.0"])
312
+ s.add_runtime_dependency(%q<active_link_to>, [">= 0.0.7"])
303
313
  s.add_runtime_dependency(%q<paperclip>, [">= 2.3.8"])
304
- s.add_runtime_dependency(%q<mime-types>, [">= 0"])
305
314
  s.add_development_dependency(%q<sqlite3>, [">= 0"])
306
315
  else
307
- s.add_dependency(%q<rails>, [">= 3.0.3"])
308
- s.add_dependency(%q<active_link_to>, [">= 0.0.6"])
316
+ s.add_dependency(%q<rails>, [">= 3.0.0"])
317
+ s.add_dependency(%q<active_link_to>, [">= 0.0.7"])
309
318
  s.add_dependency(%q<paperclip>, [">= 2.3.8"])
310
- s.add_dependency(%q<mime-types>, [">= 0"])
311
319
  s.add_dependency(%q<sqlite3>, [">= 0"])
312
320
  end
313
321
  else
314
- s.add_dependency(%q<rails>, [">= 3.0.3"])
315
- s.add_dependency(%q<active_link_to>, [">= 0.0.6"])
322
+ s.add_dependency(%q<rails>, [">= 3.0.0"])
323
+ s.add_dependency(%q<active_link_to>, [">= 0.0.7"])
316
324
  s.add_dependency(%q<paperclip>, [">= 2.3.8"])
317
- s.add_dependency(%q<mime-types>, [">= 0"])
318
325
  s.add_dependency(%q<sqlite3>, [">= 0"])
319
326
  end
320
327
  end