comfortable_mexican_sofa 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. data/Gemfile +1 -1
  2. data/Gemfile.lock +1 -1
  3. data/README.md +83 -1
  4. data/VERSION +1 -1
  5. data/app/controllers/cms_admin/base_controller.rb +15 -0
  6. data/app/controllers/cms_admin/layouts_controller.rb +3 -3
  7. data/app/controllers/cms_admin/pages_controller.rb +8 -8
  8. data/app/controllers/cms_admin/sites_controller.rb +58 -0
  9. data/app/controllers/cms_admin/snippets_controller.rb +18 -14
  10. data/app/controllers/cms_admin/uploads_controller.rb +7 -5
  11. data/app/controllers/cms_content_controller.rb +17 -5
  12. data/app/models/cms_layout.rb +7 -7
  13. data/app/models/cms_page.rb +18 -4
  14. data/app/models/cms_site.rb +23 -0
  15. data/app/models/cms_snippet.rb +17 -12
  16. data/app/models/cms_upload.rb +4 -7
  17. data/app/views/cms_admin/layouts/_form.html.erb +1 -1
  18. data/app/views/cms_admin/layouts/index.html.erb +1 -1
  19. data/app/views/cms_admin/pages/_form.html.erb +3 -2
  20. data/app/views/cms_admin/pages/_form_blocks.html.erb +1 -1
  21. data/app/views/cms_admin/pages/_index_branch.html.erb +1 -1
  22. data/app/views/cms_admin/pages/index.html.erb +1 -1
  23. data/app/views/cms_admin/sites/_form.html.erb +2 -0
  24. data/app/views/cms_admin/sites/edit.html.erb +6 -0
  25. data/app/views/cms_admin/sites/index.html.erb +22 -0
  26. data/app/views/cms_admin/sites/new.html.erb +6 -0
  27. data/app/views/cms_admin/snippets/_form.html.erb +2 -1
  28. data/app/views/cms_admin/snippets/index.html.erb +20 -1
  29. data/app/views/layouts/cms_admin.html.erb +2 -1
  30. data/comfortable_mexican_sofa.gemspec +31 -9
  31. data/config/initializers/comfortable_mexican_sofa.rb +10 -0
  32. data/config/routes.rb +3 -1
  33. data/db/migrate/01_create_cms.rb +18 -4
  34. data/lib/comfortable_mexican_sofa.rb +28 -22
  35. data/lib/comfortable_mexican_sofa/acts_as_tree.rb +97 -0
  36. data/lib/comfortable_mexican_sofa/cms_tag/snippet.rb +4 -0
  37. data/lib/comfortable_mexican_sofa/configuration.rb +19 -0
  38. data/lib/comfortable_mexican_sofa/controller_methods.rb +41 -0
  39. data/lib/comfortable_mexican_sofa/{cms_engine.rb → engine.rb} +1 -1
  40. data/lib/comfortable_mexican_sofa/{cms_form_builder.rb → form_builder.rb} +1 -1
  41. data/lib/comfortable_mexican_sofa/http_auth.rb +17 -0
  42. data/lib/comfortable_mexican_sofa/rails_extensions.rb +11 -0
  43. data/lib/comfortable_mexican_sofa/view_methods.rb +33 -0
  44. data/lib/generators/cms_generator.rb +4 -0
  45. data/public/stylesheets/comfortable_mexican_sofa/structure.css +10 -12
  46. data/test/fixtures/cms_layouts.yml +3 -1
  47. data/test/fixtures/cms_pages.yml +6 -2
  48. data/test/fixtures/cms_sites.yml +3 -0
  49. data/test/fixtures/cms_snippets.yml +3 -1
  50. data/test/fixtures/cms_uploads.yml +1 -0
  51. data/test/functional/cms_admin/layouts_controller_test.rb +3 -1
  52. data/test/functional/cms_admin/pages_controller_test.rb +4 -2
  53. data/test/functional/cms_admin/sites_controller_test.rb +92 -0
  54. data/test/functional/cms_admin/snippets_controller_test.rb +62 -37
  55. data/test/functional/cms_content_controller_test.rb +32 -5
  56. data/test/integration/authentication_test.rb +27 -0
  57. data/test/integration/render_cms_test.rb +57 -0
  58. data/test/integration/sites_test.rb +30 -0
  59. data/test/test_helper.rb +46 -3
  60. data/test/unit/cms_block_test.rb +1 -0
  61. data/test/unit/cms_configuration_test.rb +16 -0
  62. data/test/unit/cms_layout_test.rb +3 -3
  63. data/test/unit/cms_page_test.rb +23 -13
  64. data/test/unit/cms_site_test.rb +41 -0
  65. data/test/unit/cms_snippet_test.rb +1 -1
  66. data/test/unit/cms_tags/snippet_test.rb +1 -1
  67. data/test/unit/cms_upload_test.rb +7 -6
  68. metadata +32 -10
  69. data/lib/comfortable_mexican_sofa/cms_acts_as_tree.rb +0 -101
  70. data/lib/comfortable_mexican_sofa/cms_rails_extensions.rb +0 -32
  71. data/test/functional/cms_admin/base_controller_test.rb +0 -9
@@ -0,0 +1,23 @@
1
+ class CmsSite < ActiveRecord::Base
2
+
3
+ # -- Relationships --------------------------------------------------------
4
+ has_many :cms_layouts, :dependent => :destroy
5
+ has_many :cms_pages, :dependent => :destroy
6
+ has_many :cms_snippets, :dependent => :destroy
7
+ has_many :cms_uploads, :dependent => :destroy
8
+
9
+ # -- Validations ----------------------------------------------------------
10
+ validates :label,
11
+ :presence => true,
12
+ :uniqueness => true
13
+ validates :hostname,
14
+ :presence => true,
15
+ :uniqueness => true,
16
+ :format => { :with => /^[\w\.\-]+$/ }
17
+
18
+ # -- Class Methods --------------------------------------------------------
19
+ def self.options_for_select
20
+ CmsSite.all.collect{|s| ["#{s.label} (#{s.hostname})", s.id]}
21
+ end
22
+
23
+ end
@@ -1,20 +1,25 @@
1
1
  class CmsSnippet < ActiveRecord::Base
2
-
3
- # -- Validations ----------------------------------------------------------
4
2
 
5
- validates :label,
6
- :presence => true,
7
- :uniqueness => true,
8
- :format => { :with => /^\w[a-z0-9_-]*$/i }
3
+ # -- Relationships --------------------------------------------------------
4
+ belongs_to :cms_site
9
5
 
6
+ # -- Validations ----------------------------------------------------------
7
+ validates :cms_site_id,
8
+ :presence => true
9
+ validates :label,
10
+ :presence => true
11
+ validates :slug,
12
+ :presence => true,
13
+ :uniqueness => { :scope => :cms_site_id },
14
+ :format => { :with => /^\w[a-z0-9_-]*$/i }
15
+
10
16
  # -- Class Methods --------------------------------------------------------
11
-
12
- def self.content_for(label)
13
- (s = find_by_label(label)) ? s.content : ''
17
+ def self.content_for(slug)
18
+ (s = find_by_slug(slug)) ? s.content : ''
14
19
  end
15
20
 
16
- def self.initialize_or_find(cms_page, label)
17
- find_by_label(label) || new(:label => label)
21
+ def self.initialize_or_find(cms_page, slug)
22
+ find_by_slug(slug) || new(:slug => slug)
18
23
  end
19
-
24
+
20
25
  end
@@ -7,9 +7,11 @@ class CmsUpload < ActiveRecord::Base
7
7
  before_post_process :image?
8
8
 
9
9
  # -- Relationships --------------------------------------------------------
10
- belongs_to :cms_page
10
+ belongs_to :cms_site
11
11
 
12
12
  # -- Validations ----------------------------------------------------------
13
+ validates :cms_site_id,
14
+ :presence => true
13
15
  validates_attachment_presence :file
14
16
 
15
17
  # -- Instance Methods -----------------------------------------------------
@@ -25,12 +27,7 @@ class CmsUpload < ActiveRecord::Base
25
27
  end
26
28
 
27
29
  def icon
28
- if self.image?
29
- self.file.url(:thumb)
30
- else
31
- ext = self.file_file_name.split('.').last
32
- FILE_ICONS.include?(ext) ? "cms/file_icons/#{ext}.png" : "cms/file_icons/_blank.png"
33
- end
30
+ self.image?? self.file.url(:thumb) : 'TODO'
34
31
  end
35
32
 
36
33
  end
@@ -1,5 +1,5 @@
1
1
  <%= form.text_field :label, :label => 'Layout Name' %>
2
- <%= form.select :parent_id, CmsLayout.options_for_select(@cms_layout), :include_blank => true %>
2
+ <%= form.select :parent_id, CmsLayout.options_for_select(@cms_site, @cms_layout), :include_blank => true %>
3
3
  <%= form.select :app_layout, CmsLayout.app_layouts_for_select, :include_blank => true %>
4
4
  <%= form.text_area :content %>
5
5
  <%= form.text_area :css %>
@@ -1,6 +1,6 @@
1
1
  <%= link_to span_tag('Create New Layout'), new_cms_admin_layout_path, :class => 'big_button' %>
2
2
  <h1>Layouts</h1>
3
3
 
4
- <ul class='tree'>
4
+ <ul class='list'>
5
5
  <%= render :partial => 'index_branch', :collection => @cms_layouts %>
6
6
  </ul>
@@ -2,8 +2,9 @@
2
2
 
3
3
  <div class='page_form_extras'>
4
4
  <%= form.text_field :slug, :id => 'slug' %>
5
- <%= form.select :cms_layout_id, CmsLayout.options_for_select, {}, 'data-page-id' => @cms_page.id.to_i, :label => 'Layout' %>
6
- <%= form.select :parent_id, CmsPage.options_for_select(@cms_page) %>
5
+ <%= form.select :cms_layout_id, CmsLayout.options_for_select(@cms_site), {}, 'data-page-id' => @cms_page.id.to_i, :label => 'Layout' %>
6
+ <%= form.select :parent_id, CmsPage.options_for_select(@cms_site, @cms_page) %>
7
+ <%= form.select :target_page_id, CmsPage.options_for_select(@cms_site, @cms_page, nil, 0, false), :include_blank => true, :label => 'Redirect To Page' %>
7
8
  </div>
8
9
 
9
10
  <%= render :partial => 'form_blocks' %>
@@ -1,5 +1,5 @@
1
1
  <div id='form_blocks'>
2
- <%= fields_for :cms_blocks, :builder => CmsFormBuilder do |cms_blocks| %>
2
+ <%= fields_for :cms_blocks, :builder => ComfortableMexicanSofa::FormBuilder do |cms_blocks| %>
3
3
  <% @cms_page.cms_tags(true).each do |tag| %>
4
4
  <%= cms_blocks.send(tag.class.to_s.underscore.downcase.idify, tag)%>
5
5
  <% end %>
@@ -14,7 +14,7 @@
14
14
  </div>
15
15
  <div class='label'>
16
16
  <%= link_to cms_page.label, edit_cms_admin_page_path(cms_page) %>
17
- <div class='url'>
17
+ <div class='sublabel'>
18
18
  <%= link_to cms_page.full_path, cms_page.full_path %>
19
19
  </div>
20
20
  </div>
@@ -1,6 +1,6 @@
1
1
  <%= link_to span_tag('Create New Page'), new_cms_admin_page_path, :class => 'big_button' %>
2
2
  <h1>Pages</h1>
3
3
 
4
- <ul class='tree'>
4
+ <ul class='list'>
5
5
  <%= render :partial => 'index_branch', :collection => @cms_pages %>
6
6
  </ul>
@@ -0,0 +1,2 @@
1
+ <%= form.text_field :label %>
2
+ <%= form.text_field :hostname %>
@@ -0,0 +1,6 @@
1
+ <h1> Editing Site </h1>
2
+
3
+ <%= cms_form_for @cms_site, :url => {:action => :update} do |form| %>
4
+ <%= render :partial => 'form', :object => form %>
5
+ <%= form.submit 'Update Site' %>
6
+ <% end %>
@@ -0,0 +1,22 @@
1
+ <%= link_to span_tag('Create New Site'), new_cms_admin_site_path, :class => 'big_button' %>
2
+ <h1>Sites</h1>
3
+
4
+ <ul class='list'>
5
+ <% @cms_sites.each do |cms_site| %>
6
+ <li id='cms_site_<%= cms_site.id %>'>
7
+ <div class='item'>
8
+ <div class='icon'></div>
9
+ <div class='action_links'>
10
+ <%= link_to 'Edit', edit_cms_admin_site_path(cms_site) %>
11
+ <%= link_to 'Delete', cms_admin_site_path(cms_site), :method => :delete, :confirm => 'Are you sure?' %>
12
+ </div>
13
+ <div class='label'>
14
+ <%= link_to cms_site.label, edit_cms_admin_site_path(cms_site) %>
15
+ <div class='sublabel'>
16
+ <%= link_to cms_site.hostname, "http://#{cms_site.hostname}/cms-admin" %>
17
+ </div>
18
+ </div>
19
+ </div>
20
+ </li>
21
+ <% end %>
22
+ </ul>
@@ -0,0 +1,6 @@
1
+ <h1> New Site </h1>
2
+
3
+ <%= cms_form_for @cms_site, :url => {:action => :create} do |form| %>
4
+ <%= render :partial => 'form', :object => form %>
5
+ <%= form.submit 'Create Site' %>
6
+ <% end %>
@@ -1,2 +1,3 @@
1
- <%= form.text_field :label %>
1
+ <%= form.text_field :label, :id => (@cms_snippet.new_record?? 'slugify' : nil) %>
2
+ <%= form.text_field :slug, :id => 'slug' %>
2
3
  <%= form.text_area :content %>
@@ -1,3 +1,22 @@
1
+ <%= link_to span_tag('Create New Snippet'), new_cms_admin_snippet_path, :class => 'big_button' %>
1
2
  <h1>Snippets</h1>
2
3
 
3
- <%= debug @cms_snippets %>
4
+ <ul class='list'>
5
+ <% @cms_snippets.each do |cms_snippet| %>
6
+ <li id='cms_snippet_<%= cms_snippet.id %>'>
7
+ <div class='item'>
8
+ <div class='icon'></div>
9
+ <div class='action_links'>
10
+ <%= link_to 'Edit', edit_cms_admin_snippet_path(cms_snippet) %>
11
+ <%= link_to 'Delete', cms_admin_snippet_path(cms_snippet), :method => :delete, :confirm => 'Are you sure?' %>
12
+ </div>
13
+ <div class='label'>
14
+ <%= link_to cms_snippet.label, edit_cms_admin_snippet_path(cms_snippet) %>
15
+ <div class='sublabel'>
16
+ <%= link_to cms_snippet.slug, edit_cms_admin_snippet_path(cms_snippet) %>
17
+ </div>
18
+ </div>
19
+ </div>
20
+ </li>
21
+ <% end %>
22
+ </ul>
@@ -2,7 +2,7 @@
2
2
  <html>
3
3
  <head>
4
4
  <meta http-equiv="Content-type" content="text/html; charset=utf-8">
5
- <title>Comfortable Mexican Sofa</title>
5
+ <title><%= ComfortableMexicanSofa.config.cms_title %></title>
6
6
  <%= csrf_meta_tag %>
7
7
  <%= stylesheet_link_tag :cms %>
8
8
  <%= javascript_include_tag :cms %>
@@ -12,6 +12,7 @@
12
12
  <div class='body_wrapper'>
13
13
  <div class='left_column'>
14
14
  <div class='left_column_content'>
15
+ <%= active_link_to 'Sites', cms_admin_sites_path %>
15
16
  <%= active_link_to 'Layouts', cms_admin_layouts_path %>
16
17
  <%= active_link_to 'Pages', cms_admin_pages_path %>
17
18
  <%= active_link_to 'Snippets', cms_admin_snippets_path %>
@@ -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.0.1"
8
+ s.version = "1.0.2"
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{2010-10-14}
12
+ s.date = %q{2010-10-19}
13
13
  s.description = %q{}
14
14
  s.email = %q{oleg@theworkinggroup.ca}
15
15
  s.extra_rdoc_files = [
@@ -26,12 +26,14 @@ Gem::Specification.new do |s|
26
26
  "app/controllers/cms_admin/base_controller.rb",
27
27
  "app/controllers/cms_admin/layouts_controller.rb",
28
28
  "app/controllers/cms_admin/pages_controller.rb",
29
+ "app/controllers/cms_admin/sites_controller.rb",
29
30
  "app/controllers/cms_admin/snippets_controller.rb",
30
31
  "app/controllers/cms_admin/uploads_controller.rb",
31
32
  "app/controllers/cms_content_controller.rb",
32
33
  "app/models/cms_block.rb",
33
34
  "app/models/cms_layout.rb",
34
35
  "app/models/cms_page.rb",
36
+ "app/models/cms_site.rb",
35
37
  "app/models/cms_snippet.rb",
36
38
  "app/models/cms_upload.rb",
37
39
  "app/views/cms_admin/layouts/_form.html.erb",
@@ -46,6 +48,10 @@ Gem::Specification.new do |s|
46
48
  "app/views/cms_admin/pages/form_blocks.js.erb",
47
49
  "app/views/cms_admin/pages/index.html.erb",
48
50
  "app/views/cms_admin/pages/new.html.erb",
51
+ "app/views/cms_admin/sites/_form.html.erb",
52
+ "app/views/cms_admin/sites/edit.html.erb",
53
+ "app/views/cms_admin/sites/index.html.erb",
54
+ "app/views/cms_admin/sites/new.html.erb",
49
55
  "app/views/cms_admin/snippets/_form.html.erb",
50
56
  "app/views/cms_admin/snippets/edit.html.erb",
51
57
  "app/views/cms_admin/snippets/index.html.erb",
@@ -64,6 +70,7 @@ Gem::Specification.new do |s|
64
70
  "config/environments/development.rb",
65
71
  "config/environments/production.rb",
66
72
  "config/environments/test.rb",
73
+ "config/initializers/comfortable_mexican_sofa.rb",
67
74
  "config/initializers/mime_types.rb",
68
75
  "config/initializers/paperclip.rb",
69
76
  "config/locales/en.yml",
@@ -72,10 +79,7 @@ Gem::Specification.new do |s|
72
79
  "db/seeds.rb",
73
80
  "doc/README_FOR_APP",
74
81
  "lib/comfortable_mexican_sofa.rb",
75
- "lib/comfortable_mexican_sofa/cms_acts_as_tree.rb",
76
- "lib/comfortable_mexican_sofa/cms_engine.rb",
77
- "lib/comfortable_mexican_sofa/cms_form_builder.rb",
78
- "lib/comfortable_mexican_sofa/cms_rails_extensions.rb",
82
+ "lib/comfortable_mexican_sofa/acts_as_tree.rb",
79
83
  "lib/comfortable_mexican_sofa/cms_tag.rb",
80
84
  "lib/comfortable_mexican_sofa/cms_tag/field_datetime.rb",
81
85
  "lib/comfortable_mexican_sofa/cms_tag/field_integer.rb",
@@ -87,6 +91,13 @@ Gem::Specification.new do |s|
87
91
  "lib/comfortable_mexican_sofa/cms_tag/page_text.rb",
88
92
  "lib/comfortable_mexican_sofa/cms_tag/partial.rb",
89
93
  "lib/comfortable_mexican_sofa/cms_tag/snippet.rb",
94
+ "lib/comfortable_mexican_sofa/configuration.rb",
95
+ "lib/comfortable_mexican_sofa/controller_methods.rb",
96
+ "lib/comfortable_mexican_sofa/engine.rb",
97
+ "lib/comfortable_mexican_sofa/form_builder.rb",
98
+ "lib/comfortable_mexican_sofa/http_auth.rb",
99
+ "lib/comfortable_mexican_sofa/rails_extensions.rb",
100
+ "lib/comfortable_mexican_sofa/view_methods.rb",
90
101
  "lib/generators/README",
91
102
  "lib/generators/cms_generator.rb",
92
103
  "public/404.html",
@@ -113,20 +124,26 @@ Gem::Specification.new do |s|
113
124
  "test/fixtures/cms_blocks.yml",
114
125
  "test/fixtures/cms_layouts.yml",
115
126
  "test/fixtures/cms_pages.yml",
127
+ "test/fixtures/cms_sites.yml",
116
128
  "test/fixtures/cms_snippets.yml",
117
129
  "test/fixtures/cms_uploads.yml",
118
130
  "test/fixtures/files/invalid_file.gif",
119
131
  "test/fixtures/files/valid_image.jpg",
120
- "test/functional/cms_admin/base_controller_test.rb",
121
132
  "test/functional/cms_admin/layouts_controller_test.rb",
122
133
  "test/functional/cms_admin/pages_controller_test.rb",
134
+ "test/functional/cms_admin/sites_controller_test.rb",
123
135
  "test/functional/cms_admin/snippets_controller_test.rb",
124
136
  "test/functional/cms_admin/uploads_controller_test.rb",
125
137
  "test/functional/cms_content_controller_test.rb",
138
+ "test/integration/authentication_test.rb",
139
+ "test/integration/render_cms_test.rb",
140
+ "test/integration/sites_test.rb",
126
141
  "test/test_helper.rb",
127
142
  "test/unit/cms_block_test.rb",
143
+ "test/unit/cms_configuration_test.rb",
128
144
  "test/unit/cms_layout_test.rb",
129
145
  "test/unit/cms_page_test.rb",
146
+ "test/unit/cms_site_test.rb",
130
147
  "test/unit/cms_snippet_test.rb",
131
148
  "test/unit/cms_tag_test.rb",
132
149
  "test/unit/cms_tags/field_datetime_test.rb",
@@ -148,16 +165,21 @@ Gem::Specification.new do |s|
148
165
  s.rubygems_version = %q{1.3.7}
149
166
  s.summary = %q{ComfortableMexicanSofa is a Rails Engine CMS gem}
150
167
  s.test_files = [
151
- "test/functional/cms_admin/base_controller_test.rb",
152
- "test/functional/cms_admin/layouts_controller_test.rb",
168
+ "test/functional/cms_admin/layouts_controller_test.rb",
153
169
  "test/functional/cms_admin/pages_controller_test.rb",
170
+ "test/functional/cms_admin/sites_controller_test.rb",
154
171
  "test/functional/cms_admin/snippets_controller_test.rb",
155
172
  "test/functional/cms_admin/uploads_controller_test.rb",
156
173
  "test/functional/cms_content_controller_test.rb",
174
+ "test/integration/authentication_test.rb",
175
+ "test/integration/render_cms_test.rb",
176
+ "test/integration/sites_test.rb",
157
177
  "test/test_helper.rb",
158
178
  "test/unit/cms_block_test.rb",
179
+ "test/unit/cms_configuration_test.rb",
159
180
  "test/unit/cms_layout_test.rb",
160
181
  "test/unit/cms_page_test.rb",
182
+ "test/unit/cms_site_test.rb",
161
183
  "test/unit/cms_snippet_test.rb",
162
184
  "test/unit/cms_tag_test.rb",
163
185
  "test/unit/cms_tags/field_datetime_test.rb",
@@ -0,0 +1,10 @@
1
+ # Comfortable Mexican Sofa initializer. Change defaults to whatever you require
2
+
3
+ ComfortableMexicanSofa.configure do |config|
4
+ config.cms_title = 'ComfortableMexicanSofa'
5
+ config.authentication = 'ComfortableMexicanSofa::HttpAuth'
6
+ end
7
+
8
+ # Credentials for CmsHttpAuthentication
9
+ ComfortableMexicanSofa::HttpAuth.username = 'username'
10
+ ComfortableMexicanSofa::HttpAuth.password = 'password'
data/config/routes.rb CHANGED
@@ -1,12 +1,14 @@
1
1
  Rails.application.routes.draw do
2
2
 
3
3
  namespace :cms_admin, :path => 'cms-admin', :except => :show do
4
- resources :layouts
4
+ get '/' => redirect('/cms-admin/pages')
5
5
  resources :pages do
6
6
  member do
7
7
  match :form_blocks
8
8
  end
9
9
  end
10
+ resources :sites
11
+ resources :layouts
10
12
  resources :snippets
11
13
  resources :uploads
12
14
  end
@@ -1,9 +1,16 @@
1
1
  class CreateCms < ActiveRecord::Migration
2
2
 
3
3
  def self.up
4
+ # -- Sites --------------------------------------------------------------
5
+ create_table :cms_sites do |t|
6
+ t.string :label
7
+ t.string :hostname
8
+ end
9
+ add_index :cms_sites, :hostname
4
10
 
5
11
  # -- Layouts ------------------------------------------------------------
6
12
  create_table :cms_layouts do |t|
13
+ t.integer :cms_site_id
7
14
  t.integer :parent_id
8
15
  t.string :app_layout
9
16
  t.string :label
@@ -13,13 +20,15 @@ class CreateCms < ActiveRecord::Migration
13
20
  t.integer :position, :null => false, :default => 0
14
21
  t.timestamps
15
22
  end
16
- add_index :cms_layouts, :label
23
+ add_index :cms_layouts, [:cms_site_id, :label]
17
24
  add_index :cms_layouts, [:parent_id, :position]
18
25
 
19
26
  # -- Pages --------------------------------------------------------------
20
27
  create_table :cms_pages do |t|
28
+ t.integer :cms_site_id
21
29
  t.integer :cms_layout_id
22
30
  t.integer :parent_id
31
+ t.integer :target_page_id
23
32
  t.string :label
24
33
  t.string :slug
25
34
  t.string :full_path
@@ -28,7 +37,7 @@ class CreateCms < ActiveRecord::Migration
28
37
  t.integer :children_count, :null => false, :default => 0
29
38
  t.timestamps
30
39
  end
31
- add_index :cms_pages, :full_path
40
+ add_index :cms_pages, [:cms_site_id, :full_path]
32
41
  add_index :cms_pages, [:parent_id, :position]
33
42
 
34
43
  # -- Page Blocks --------------------------------------------------------
@@ -43,27 +52,32 @@ class CreateCms < ActiveRecord::Migration
43
52
  t.timestamps
44
53
  end
45
54
  add_index :cms_blocks, [:cms_page_id, :type, :label]
46
- # TODO: index this
47
55
 
48
56
  # -- Snippets -----------------------------------------------------------
49
57
  create_table :cms_snippets do |t|
58
+ t.integer :cms_site_id
50
59
  t.string :label
60
+ t.string :slug
51
61
  t.text :content
52
62
  t.timestamps
53
63
  end
54
- add_index :cms_snippets, :label, :unique => true
64
+ add_index :cms_snippets, [:cms_site_id, :slug], :unique => true
55
65
 
56
66
  # -- Assets -------------------------------------------------------------
57
67
  create_table :cms_uploads do |t|
68
+ t.integer :cms_site_id
58
69
  t.string :file_file_name
59
70
  t.string :file_content_type
60
71
  t.integer :file_file_size
61
72
  t.timestamps
62
73
  end
74
+ add_index :cms_uploads, [:cms_site_id, :file_file_name]
63
75
 
64
76
  end
65
77
 
66
78
  def self.down
79
+ drop_table :cms_sites
80
+ drop_table :cms_hosts
67
81
  drop_table :cms_layouts
68
82
  drop_table :cms_pages
69
83
  drop_table :cms_snippets