spud_cms 0.8.17 → 0.9.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.
- data/README.markdown +30 -13
- data/app/assets/images/spud/admin/snippets_thumb.png +0 -0
- data/app/assets/images/spud/admin/snippets_thumb@2x.png +0 -0
- data/app/assets/javascripts/spud/admin/cms/application.js +3 -3
- data/app/controllers/pages_controller.rb +6 -23
- data/app/controllers/spud/admin/menu_items_controller.rb +6 -10
- data/app/controllers/spud/admin/menus_controller.rb +1 -1
- data/app/controllers/spud/admin/pages_controller.rb +40 -86
- data/app/controllers/spud/cms/sitemaps_controller.rb +1 -1
- data/app/helpers/spud/cms/application_helper.rb +50 -26
- data/app/models/spud_menu_item.rb +10 -13
- data/app/models/spud_page.rb +12 -4
- data/app/models/spud_page_liquid_tag.rb +4 -0
- data/app/models/spud_page_partial.rb +40 -1
- data/app/observers/page_sweeper.rb +48 -0
- data/app/views/pages/show.html.erb +9 -11
- data/app/views/spud/admin/pages/_form.html.erb +15 -16
- data/app/views/spud/admin/pages/_page_partials_form.html.erb +3 -3
- data/app/views/spud/admin/pages/index.html.erb +1 -1
- data/app/views/spud/admin/pages/show.html.erb +4 -6
- data/config/routes.rb +3 -3
- data/db/migrate/20120911190030_add_symbol_name_to_spud_page_partials.rb +5 -0
- data/db/migrate/20120912121313_modify_site_id_for_spud_pages.rb +15 -0
- data/db/migrate/20121016233715_add_content_processed_to_spud_page_partials.rb +5 -0
- data/db/migrate/20121112151110_add_layout_to_spud_pages.rb +8 -0
- data/db/migrate/20121112212113_create_spud_page_liquid_tags.rb +11 -0
- data/lib/spud_cms.rb +1 -0
- data/lib/spud_cms/configuration.rb +4 -7
- data/lib/spud_cms/engine.rb +37 -16
- data/lib/spud_cms/template_parser.rb +121 -0
- data/lib/spud_cms/version.rb +1 -1
- data/spec/controllers/pages_controller_spec.rb +108 -0
- data/spec/controllers/spud/admin/menu_items_controller_spec.rb +148 -0
- data/spec/controllers/spud/admin/menus_controller_spec.rb +121 -0
- data/spec/controllers/spud/admin/pages_controller_spec.rb +5 -13
- data/spec/controllers/spud/cms/sitemaps_controller_spec.rb +35 -4
- data/spec/dummy/app/controllers/application_controller.rb +1 -1
- data/spec/dummy/db/schema.rb +146 -0
- data/spec/dummy/log/development.log +341 -0
- data/spec/dummy/log/test.log +182863 -0
- data/spec/helpers/spud/cms/application_helper_spec.rb +160 -0
- data/spec/models/spud_menu_item_spec.rb +31 -0
- data/spec/models/spud_page_liquid_tag_spec.rb +5 -0
- data/spec/models/spud_page_partial_spec.rb +44 -0
- data/spec/models/spud_page_spec.rb +1 -2
- metadata +50 -19
- data/app/assets/images/spud/admin/templates_thumb.png +0 -0
- data/app/controllers/spud/admin/templates_controller.rb +0 -73
- data/app/models/page_sweeper.rb +0 -63
- data/app/models/spud_template.rb +0 -10
- data/app/views/layouts/spud/admin/cms/detail.html.erb +0 -5
- data/spec/models/spud_template_spec.rb +0 -34
@@ -0,0 +1,148 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Spud::Admin::MenuItemsController do
|
4
|
+
before(:each) do
|
5
|
+
ActiveRecord::Base.observers.disable(:page_sweeper)
|
6
|
+
|
7
|
+
activate_authlogic
|
8
|
+
u = SpudUser.new(:login => "testuser",:email => "test@testuser.com",:password => "test",:password_confirmation => "test")
|
9
|
+
u.super_admin = true
|
10
|
+
u.save
|
11
|
+
@user = SpudUserSession.create(u)
|
12
|
+
Spud::Core.configure do |config|
|
13
|
+
config.site_name = "Test Site"
|
14
|
+
config.multisite_mode_enabled = false
|
15
|
+
config.multisite_config = []
|
16
|
+
end
|
17
|
+
|
18
|
+
@menu = FactoryGirl.create(:spud_menu)
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
describe :index do
|
23
|
+
it "should return an array of menus" do
|
24
|
+
2.times {|x| s = FactoryGirl.create(:spud_menu_item,:spud_menu_id => @menu.id,:parent_id => @menu.id)}
|
25
|
+
get :index,:menu_id =>@menu.id
|
26
|
+
|
27
|
+
assigns(:menu_items).count.should be > 1
|
28
|
+
end
|
29
|
+
it "should redirect if the menu is not found" do
|
30
|
+
get :index,:menu_id => @menu.id + 1
|
31
|
+
response.should redirect_to spud_admin_menus_url
|
32
|
+
flash[:error].should_not be_blank
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe :new do
|
37
|
+
it "should assign a new menu" do
|
38
|
+
get :new,:menu_id =>@menu.id
|
39
|
+
assigns(:menu_item).should_not be_blank
|
40
|
+
response.should be_success
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe :create do
|
45
|
+
it "should create a new menu item with a valid form submission" do
|
46
|
+
lambda {
|
47
|
+
post :create,:menu_id => @menu.id, :spud_menu_item => FactoryGirl.attributes_for(:spud_menu_item,:parent_id => nil).reject{|k,v| k == 'id' || k == :spud_menu_id}
|
48
|
+
}.should change(SpudMenuItem,:count).by(1)
|
49
|
+
response.should be_redirect
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should not create a menu item with an invalid form entry" do
|
53
|
+
yamldata = FactoryGirl.attributes_for(:spud_menu_item,:name => nil).reject{|k,v| k == 'id' || k == :spud_menu_id}
|
54
|
+
|
55
|
+
lambda {
|
56
|
+
post :create,:menu_id => @menu.id, :spud_menu_item => FactoryGirl.attributes_for(:spud_menu_item,:name => nil,:parent_id => nil).reject{|k,v| k == 'id' || k == :spud_menu_id}
|
57
|
+
}.should_not change(SpudMenuItem,:count)
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should autoset order if not specified" do
|
61
|
+
menuitem = FactoryGirl.create(:spud_menu_item,:parent_id => @menu.id)
|
62
|
+
|
63
|
+
post :create,:menu_id => @menu.id, :spud_menu_item => FactoryGirl.attributes_for(:spud_menu_item,:menu_order => nil,:parent_id => nil).reject{|k,v| k == 'id' || k == :spud_menu_id}
|
64
|
+
assigns(:menu_item).menu_order.should == 1
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should assign the menu name based on page name if left blank" do
|
68
|
+
page = FactoryGirl.create(:spud_page)
|
69
|
+
post :create,:menu_id => @menu.id, :spud_menu_item => FactoryGirl.attributes_for(:spud_menu_item,:name => nil,:spud_page_id => page.id).reject{|k,v| k == 'id' || k == :spud_menu_id}
|
70
|
+
assigns(:menu_item).name.should == page.name
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should set the parent to a submenu if specified" do
|
74
|
+
menuitem = FactoryGirl.create(:spud_menu_item,:parent_id => @menu.id)
|
75
|
+
post :create,:menu_id => @menu.id, :spud_menu_item => FactoryGirl.attributes_for(:spud_menu_item,:parent_id => menuitem.id).reject{|k,v| k == 'id' || k == :spud_menu_id}
|
76
|
+
assigns(:menu_item).parent.should == menuitem
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe :edit do
|
81
|
+
it "should respond with menu item by id" do
|
82
|
+
menu1 = FactoryGirl.create(:spud_menu_item)
|
83
|
+
menu2 = FactoryGirl.create(:spud_menu_item)
|
84
|
+
get :edit, :menu_id => @menu.id,:id => menu2.id
|
85
|
+
assigns(:menu_item).should == menu2
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should redirect_to index if menu item not found" do
|
89
|
+
get :edit,:menu_id => @menu.id,:id => "345"
|
90
|
+
response.should redirect_to spud_admin_menu_menu_items_url(:menu_id => @menu.id)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe :update do
|
95
|
+
it "should update the name when the name attribute is changed" do
|
96
|
+
menu_item = FactoryGirl.create(:spud_menu_item)
|
97
|
+
new_name = 'MyMenu'
|
98
|
+
lambda {
|
99
|
+
put :update,:menu_id => @menu.id,:id => menu_item.id, :spud_menu_item => menu_item.attributes.merge!(:name => new_name,:parent_id => nil).reject{|k,v| k.to_sym == :spud_menu_id || k == 'id' || k.to_sym == :updated_at || k.to_sym == :created_at}
|
100
|
+
menu_item.reload
|
101
|
+
}.should change(menu_item,:name).to(new_name)
|
102
|
+
end
|
103
|
+
it "should assign a menu to a submenu if parentid is defined" do
|
104
|
+
menu_item1 = FactoryGirl.create(:spud_menu_item)
|
105
|
+
menu_item = FactoryGirl.create(:spud_menu_item)
|
106
|
+
|
107
|
+
lambda {
|
108
|
+
put :update,:menu_id => @menu.id,:id => menu_item.id, :spud_menu_item => menu_item.attributes.merge!(:parent_id => menu_item1.id).reject{|k,v| k.to_sym == :spud_menu_id || k == 'id' || k.to_sym == :updated_at || k.to_sym == :created_at}
|
109
|
+
menu_item.reload
|
110
|
+
}.should change(menu_item,:parent).to(menu_item1)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
|
115
|
+
describe :destroy do
|
116
|
+
it "should destroy the menu item" do
|
117
|
+
menu_item = FactoryGirl.create(:spud_menu_item,:parent_id => @menu.id)
|
118
|
+
lambda {
|
119
|
+
delete :destroy,:menu_id => @menu.id,:id => menu_item.id
|
120
|
+
}.should change(SpudMenuItem,:count).by(-1)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
describe :multisite do
|
125
|
+
before(:each) do
|
126
|
+
Spud::Core.configure do |config|
|
127
|
+
config.site_name = "Test Site"
|
128
|
+
config.multisite_mode_enabled = true
|
129
|
+
config.multisite_config = [{:hosts => ["test.host"], :site_name =>"Site B", :site_id => 1,:short_name => "siteb"}]
|
130
|
+
end
|
131
|
+
Spud::Cms.configure do |config|
|
132
|
+
config.multisite_config = [{:short_name => "siteb",:default_page_parts => ["Body","Sidebar"]}]
|
133
|
+
end
|
134
|
+
session[:admin_site] = 1
|
135
|
+
end
|
136
|
+
|
137
|
+
|
138
|
+
describe :edit do
|
139
|
+
it "should not allow editing of a menu_item in a menu that is different from the current admin site" do
|
140
|
+
menu_item = FactoryGirl.create(:spud_menu_item)
|
141
|
+
get :edit,:id => menu_item.id,:menu_id => @menu.id
|
142
|
+
response.should redirect_to spud_admin_menus_url
|
143
|
+
flash[:warning].should_not be_blank
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
end
|
148
|
+
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Spud::Admin::MenusController do
|
4
|
+
before(:each) do
|
5
|
+
activate_authlogic
|
6
|
+
u = SpudUser.new(:login => "testuser",:email => "test@testuser.com",:password => "test",:password_confirmation => "test")
|
7
|
+
u.super_admin = true
|
8
|
+
u.save
|
9
|
+
@user = SpudUserSession.create(u)
|
10
|
+
Spud::Core.configure do |config|
|
11
|
+
config.site_name = "Test Site"
|
12
|
+
config.multisite_mode_enabled = false
|
13
|
+
config.multisite_config = []
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
describe :index do
|
19
|
+
it "should return an array of menus" do
|
20
|
+
2.times {|x| s = FactoryGirl.create(:spud_menu)}
|
21
|
+
get :index
|
22
|
+
|
23
|
+
assigns(:menus).count.should be > 1
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
describe :new do
|
29
|
+
it "should response with new menu" do
|
30
|
+
get :new
|
31
|
+
assigns(:menu).should_not be_blank
|
32
|
+
response.should be_success
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe :create do
|
37
|
+
it "should create a new menu with a valid form submission" do
|
38
|
+
lambda {
|
39
|
+
post :create, :spud_menu => FactoryGirl.attributes_for(:spud_menu).reject{|k,v| k == 'site_id' || k == 'id'}
|
40
|
+
}.should change(SpudMenu,:count).by(1)
|
41
|
+
response.should be_redirect
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should not create a menu with an invalid form entry" do
|
45
|
+
lambda {
|
46
|
+
post :create, :spud_menu => FactoryGirl.attributes_for(:spud_menu,:name => nil).reject{|k,v| k == 'site_id' || k == 'id'}
|
47
|
+
}.should_not change(SpudMenu,:count)
|
48
|
+
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe :multisite do
|
54
|
+
before(:each) do
|
55
|
+
Spud::Core.configure do |config|
|
56
|
+
config.site_name = "Test Site"
|
57
|
+
config.multisite_mode_enabled = true
|
58
|
+
config.multisite_config = [{:hosts => ["test.host"], :site_name =>"Site B", :site_id => 1}]
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
it "should not allow editing of a menu on a different site id" do
|
63
|
+
menu2 = FactoryGirl.create(:spud_menu,:site_id => 1)
|
64
|
+
get :edit,:id => menu2.id
|
65
|
+
|
66
|
+
response.should redirect_to spud_admin_menus_url
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe :edit do
|
71
|
+
it "should response with menu by id" do
|
72
|
+
menu1 = FactoryGirl.create(:spud_menu)
|
73
|
+
menu2 = FactoryGirl.create(:spud_menu)
|
74
|
+
get :edit,:id => menu2.id
|
75
|
+
assigns(:menu).should == menu2
|
76
|
+
end
|
77
|
+
it "should redirect to index if menu not found" do
|
78
|
+
get :edit,:id => 3
|
79
|
+
response.should redirect_to spud_admin_menus_url
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
|
84
|
+
describe :update do
|
85
|
+
it "should update the name when the name attribute is changed" do
|
86
|
+
menu = FactoryGirl.create(:spud_menu)
|
87
|
+
new_name = 'MyMenu'
|
88
|
+
lambda {
|
89
|
+
put :update,:id => menu.id, :spud_menu => menu.attributes.merge!(:name => new_name).reject{|k,v| k == 'site_id' || k == 'id'}
|
90
|
+
menu.reload
|
91
|
+
}.should change(menu,:name).to(new_name)
|
92
|
+
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should redirect to the admin menus after a successful update" do
|
96
|
+
menu = FactoryGirl.create(:spud_menu)
|
97
|
+
put :update,:id => menu.id,:spud_menu => menu.attributes.merge!(:name => "MyMenu").reject{|k,v| k == 'site_id' || k == 'id'}
|
98
|
+
|
99
|
+
response.should redirect_to(spud_admin_menu_menu_items_url(:menu_id => menu.id))
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
describe :destroy do
|
104
|
+
it "should destroy the menu" do
|
105
|
+
menu = FactoryGirl.create(:spud_menu)
|
106
|
+
lambda {
|
107
|
+
delete :destroy, :id => menu.id
|
108
|
+
}.should change(SpudMenu,:count).by(-1)
|
109
|
+
response.should be_redirect
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should not destroy the menu with a wrong id" do
|
113
|
+
menu = FactoryGirl.create(:spud_menu)
|
114
|
+
lambda {
|
115
|
+
delete :destroy,:id => "23532"
|
116
|
+
}.should_not change(SpudMenu,:count)
|
117
|
+
response.should be_redirect
|
118
|
+
end
|
119
|
+
|
120
|
+
end
|
121
|
+
end
|
@@ -11,7 +11,7 @@ describe Spud::Admin::PagesController do
|
|
11
11
|
|
12
12
|
describe :index do
|
13
13
|
it "should return an array of parent pages" do
|
14
|
-
2.times {|x| FactoryGirl.create(:spud_page)
|
14
|
+
2.times {|x| s = FactoryGirl.create(:spud_page)}
|
15
15
|
get :index
|
16
16
|
|
17
17
|
assigns(:pages).count.should be > 1
|
@@ -34,21 +34,13 @@ describe Spud::Admin::PagesController do
|
|
34
34
|
response.should be_success
|
35
35
|
end
|
36
36
|
|
37
|
-
it "should render custom layout if template in use" do
|
38
|
-
t = FactoryGirl.build(:spud_template)
|
39
|
-
t.base_layout = 'content_left'
|
40
|
-
t.save
|
41
|
-
p = FactoryGirl.create(:spud_page,:template_id => t.id)
|
42
37
|
|
43
|
-
get :show ,:id => p.id
|
44
|
-
assigns(:layout).should render_template(:layout => "layouts/#{t.base_layout}")
|
45
|
-
end
|
46
38
|
|
47
|
-
it "should redirect if no id specified" do
|
48
|
-
|
39
|
+
# it "should redirect if no id specified" do
|
40
|
+
# get :show,:id => nil
|
49
41
|
|
50
|
-
|
51
|
-
end
|
42
|
+
# response.should redirect_to spud_admin_pages_url
|
43
|
+
# end
|
52
44
|
|
53
45
|
end
|
54
46
|
|
@@ -2,16 +2,47 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Spud::Cms::SitemapsController do
|
4
4
|
describe :show do
|
5
|
+
before(:each) do
|
6
|
+
Spud::Core.configure do |config|
|
7
|
+
config.site_name = "Test Site"
|
8
|
+
config.multisite_mode_enabled = false
|
9
|
+
config.multisite_config = []
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
5
13
|
it "should return the sitemap urls" do
|
6
|
-
|
14
|
+
|
7
15
|
get :show, :format => :xml
|
8
|
-
|
16
|
+
|
9
17
|
assigns(:pages).should == SpudPage.published_pages.public.order(:spud_page_id)
|
10
18
|
end
|
11
|
-
|
19
|
+
|
12
20
|
it "should only respond to an XML format" do
|
13
21
|
get :show
|
14
22
|
response.response_code.should == 406
|
15
23
|
end
|
24
|
+
|
25
|
+
describe :multisite do
|
26
|
+
before(:each) do
|
27
|
+
Spud::Core.configure do |config|
|
28
|
+
config.site_name = "Test Site"
|
29
|
+
config.multisite_mode_enabled = true
|
30
|
+
config.multisite_config = [{:hosts => ["test.host"], :site_name =>"Site B", :site_id => 1}]
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should only assign pages for current site" do
|
35
|
+
2.times {|x| s = FactoryGirl.create(:spud_page)}
|
36
|
+
3.times {|x| s = FactoryGirl.create(:spud_page,:site_id => 1)}
|
37
|
+
|
38
|
+
get :show, :format => :xml
|
39
|
+
|
40
|
+
assigns(:pages).should == SpudPage.published_pages.public.order(:spud_page_id).site(1)
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
16
45
|
end
|
17
|
-
|
46
|
+
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,146 @@
|
|
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 => 20121112151110) do
|
15
|
+
|
16
|
+
create_table "spud_admin_permissions", :force => true do |t|
|
17
|
+
t.integer "user_id"
|
18
|
+
t.string "name"
|
19
|
+
t.boolean "access"
|
20
|
+
t.datetime "created_at", :null => false
|
21
|
+
t.datetime "updated_at", :null => false
|
22
|
+
t.string "scope"
|
23
|
+
end
|
24
|
+
|
25
|
+
create_table "spud_menu_items", :force => true do |t|
|
26
|
+
t.string "parent_type"
|
27
|
+
t.integer "parent_id"
|
28
|
+
t.integer "item_type"
|
29
|
+
t.integer "spud_page_id"
|
30
|
+
t.integer "menu_order", :default => 0
|
31
|
+
t.string "url"
|
32
|
+
t.datetime "created_at", :null => false
|
33
|
+
t.datetime "updated_at", :null => false
|
34
|
+
t.string "name"
|
35
|
+
t.integer "spud_menu_id"
|
36
|
+
t.string "classes"
|
37
|
+
end
|
38
|
+
|
39
|
+
add_index "spud_menu_items", ["menu_order"], :name => "index_spud_menu_items_on_menu_order"
|
40
|
+
add_index "spud_menu_items", ["parent_type", "parent_id"], :name => "index_spud_menu_items_on_parent_type_and_parent_id"
|
41
|
+
add_index "spud_menu_items", ["spud_menu_id"], :name => "index_spud_menu_items_on_spud_menu_id"
|
42
|
+
|
43
|
+
create_table "spud_menus", :force => true do |t|
|
44
|
+
t.string "name"
|
45
|
+
t.text "description"
|
46
|
+
t.datetime "created_at", :null => false
|
47
|
+
t.datetime "updated_at", :null => false
|
48
|
+
t.integer "site_id", :default => 0, :null => false
|
49
|
+
end
|
50
|
+
|
51
|
+
add_index "spud_menus", ["site_id"], :name => "index_spud_menus_on_site_id"
|
52
|
+
|
53
|
+
create_table "spud_page_partial_revisions", :force => true do |t|
|
54
|
+
t.string "name"
|
55
|
+
t.text "content"
|
56
|
+
t.string "format"
|
57
|
+
t.integer "spud_page_id"
|
58
|
+
t.datetime "created_at", :null => false
|
59
|
+
t.datetime "updated_at", :null => false
|
60
|
+
end
|
61
|
+
|
62
|
+
add_index "spud_page_partial_revisions", ["spud_page_id", "name"], :name => "revision_idx"
|
63
|
+
|
64
|
+
create_table "spud_page_partials", :force => true do |t|
|
65
|
+
t.integer "spud_page_id"
|
66
|
+
t.string "name"
|
67
|
+
t.text "content"
|
68
|
+
t.string "format"
|
69
|
+
t.datetime "created_at", :null => false
|
70
|
+
t.datetime "updated_at", :null => false
|
71
|
+
t.string "symbol_name"
|
72
|
+
t.text "content_processed"
|
73
|
+
end
|
74
|
+
|
75
|
+
add_index "spud_page_partials", ["spud_page_id"], :name => "index_spud_page_partials_on_spud_page_id"
|
76
|
+
|
77
|
+
create_table "spud_pages", :force => true do |t|
|
78
|
+
t.string "name"
|
79
|
+
t.string "url_name"
|
80
|
+
t.datetime "publish_at"
|
81
|
+
t.integer "created_by"
|
82
|
+
t.integer "updated_by"
|
83
|
+
t.string "format", :default => "html"
|
84
|
+
t.integer "spud_page_id"
|
85
|
+
t.text "meta_description"
|
86
|
+
t.string "meta_keywords"
|
87
|
+
t.integer "page_order"
|
88
|
+
t.datetime "created_at", :null => false
|
89
|
+
t.datetime "updated_at", :null => false
|
90
|
+
t.integer "visibility", :default => 0
|
91
|
+
t.boolean "published", :default => true
|
92
|
+
t.boolean "use_custom_url_name", :default => false
|
93
|
+
t.text "notes"
|
94
|
+
t.integer "site_id", :default => 0, :null => false
|
95
|
+
t.string "layout"
|
96
|
+
end
|
97
|
+
|
98
|
+
add_index "spud_pages", ["site_id"], :name => "index_spud_pages_on_site_id"
|
99
|
+
|
100
|
+
create_table "spud_permalinks", :force => true do |t|
|
101
|
+
t.string "url_name"
|
102
|
+
t.string "attachment_type"
|
103
|
+
t.integer "attachment_id"
|
104
|
+
t.datetime "created_at", :null => false
|
105
|
+
t.datetime "updated_at", :null => false
|
106
|
+
t.integer "site_id"
|
107
|
+
end
|
108
|
+
|
109
|
+
add_index "spud_permalinks", ["attachment_type", "attachment_id"], :name => "index_spud_permalinks_on_attachment_type_and_attachment_id"
|
110
|
+
add_index "spud_permalinks", ["site_id"], :name => "index_spud_permalinks_on_site_id"
|
111
|
+
|
112
|
+
create_table "spud_user_settings", :force => true do |t|
|
113
|
+
t.integer "spud_user_id"
|
114
|
+
t.string "key"
|
115
|
+
t.string "value"
|
116
|
+
t.datetime "created_at", :null => false
|
117
|
+
t.datetime "updated_at", :null => false
|
118
|
+
end
|
119
|
+
|
120
|
+
create_table "spud_users", :force => true do |t|
|
121
|
+
t.string "first_name"
|
122
|
+
t.string "last_name"
|
123
|
+
t.boolean "super_admin"
|
124
|
+
t.string "login", :null => false
|
125
|
+
t.string "email", :null => false
|
126
|
+
t.string "crypted_password", :null => false
|
127
|
+
t.string "password_salt", :null => false
|
128
|
+
t.string "persistence_token", :null => false
|
129
|
+
t.string "single_access_token", :null => false
|
130
|
+
t.string "perishable_token", :null => false
|
131
|
+
t.integer "login_count", :default => 0, :null => false
|
132
|
+
t.integer "failed_login_count", :default => 0, :null => false
|
133
|
+
t.datetime "last_request_at"
|
134
|
+
t.datetime "current_login_at"
|
135
|
+
t.datetime "last_login_at"
|
136
|
+
t.string "current_login_ip"
|
137
|
+
t.string "last_login_ip"
|
138
|
+
t.datetime "created_at", :null => false
|
139
|
+
t.datetime "updated_at", :null => false
|
140
|
+
t.string "time_zone"
|
141
|
+
end
|
142
|
+
|
143
|
+
add_index "spud_users", ["email"], :name => "index_spud_users_on_email"
|
144
|
+
add_index "spud_users", ["login"], :name => "index_spud_users_on_login"
|
145
|
+
|
146
|
+
end
|