spud_cms 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/javascripts/spud/admin/cms.js +2 -0
- data/app/assets/stylesheets/spud/admin/cms.css +4 -0
- data/app/controllers/pages_controller.rb +28 -2
- data/app/controllers/spud/admin/cms_controller.rb +3 -0
- data/app/controllers/spud/admin/menu_items_controller.rb +1 -1
- data/app/controllers/spud/admin/menus_controller.rb +5 -4
- data/app/controllers/spud/admin/pages_controller.rb +32 -7
- data/app/controllers/spud/admin/templates_controller.rb +13 -5
- data/app/helpers/spud/admin/cms_helper.rb +2 -0
- data/app/helpers/spud/cms/application_helper.rb +44 -4
- data/app/models/page_sweeper.rb +1 -1
- data/app/models/spud_menu.rb +3 -0
- data/app/models/spud_menu_item.rb +3 -0
- data/app/models/spud_page.rb +17 -11
- data/app/models/spud_page_partial.rb +1 -0
- data/app/models/spud_template.rb +3 -0
- data/app/views/spud/admin/menu_items/_form.html.erb +1 -1
- data/app/views/spud/admin/pages/_form.html.erb +2 -2
- data/db/migrate/20120329132314_add_site_id_to_spud_pages.rb +6 -0
- data/db/migrate/20120329132322_add_site_id_to_spud_templates.rb +6 -0
- data/db/migrate/20120329132330_add_site_id_to_spud_menus.rb +6 -0
- data/lib/spud_cms/configuration.rb +11 -1
- data/lib/spud_cms/version.rb +1 -1
- metadata +32 -25
@@ -1,5 +1,6 @@
|
|
1
1
|
class PagesController < ApplicationController
|
2
2
|
caches_action :show, :if => Proc.new { |c| Spud::Cms.enable_action_caching }
|
3
|
+
|
3
4
|
# caches_page :show, :if => Proc.new { |c| Spud::Cms.enable_full_page_caching }
|
4
5
|
after_filter({:only => [:show]}) do |c|
|
5
6
|
return if !Spud::Cms.enable_full_page_caching
|
@@ -9,9 +10,24 @@ class PagesController < ApplicationController
|
|
9
10
|
end
|
10
11
|
def show
|
11
12
|
url_name = !params[:id].blank? ? params[:id] : Spud::Cms.root_page_name
|
12
|
-
@page = SpudPage.published_pages.where(:url_name => url_name).includes([:spud_template,:spud_page_partials])
|
13
|
+
@page = SpudPage.published_pages.where(:url_name => url_name).includes([:spud_template,:spud_page_partials])
|
14
|
+
|
15
|
+
# MultiSite Code Block
|
16
|
+
if Spud::Core.multisite_mode_enabled
|
17
|
+
site_config = Spud::Core.site_config_for_host(request.host_with_port)
|
18
|
+
@page = @page.site(site_config[:site_id]) if !site_config.blank?
|
19
|
+
end
|
20
|
+
|
21
|
+
@page = @page.first
|
13
22
|
if @page.blank?
|
14
|
-
@permalink = SpudPermalink.includes(:attachment).where(:url_name => url_name)
|
23
|
+
@permalink = SpudPermalink.includes(:attachment).where(:url_name => url_name)
|
24
|
+
|
25
|
+
# MultiSite Code Block
|
26
|
+
if Spud::Core.multisite_mode_enabled && !site_config.blank?
|
27
|
+
@permalink = @permalink.site(site_config[:site_id])
|
28
|
+
end
|
29
|
+
@permalink = @permalink.first
|
30
|
+
|
15
31
|
if !@permalink.blank? && @permalink.attachment_type == 'SpudPage'
|
16
32
|
redirect_to @permalink.attachment.url_name == Spud::Cms.root_page_name ? root_url() : page_url(:id => @permalink.attachment.url_name) , :status => :moved_permanently and return
|
17
33
|
end
|
@@ -28,8 +44,15 @@ class PagesController < ApplicationController
|
|
28
44
|
return
|
29
45
|
end
|
30
46
|
end
|
47
|
+
|
31
48
|
layout = Spud::Cms.default_page_layout
|
32
49
|
|
50
|
+
# MultiSite Code Block
|
51
|
+
if Spud::Core.multisite_mode_enabled && !site_config.blank?
|
52
|
+
cms_config = Spud::Cms.site_config_for_short_name(site_config[:short_name])
|
53
|
+
layout = cms_config[:default_page_layout] if !cms_config.blank? && !cms_config[:default_page_layout].blank?
|
54
|
+
end
|
55
|
+
|
33
56
|
|
34
57
|
if !@page.spud_template.blank?
|
35
58
|
if !@page.spud_template.base_layout.blank?
|
@@ -41,4 +64,7 @@ class PagesController < ApplicationController
|
|
41
64
|
render :layout => layout
|
42
65
|
|
43
66
|
end
|
67
|
+
|
68
|
+
private
|
69
|
+
|
44
70
|
end
|
@@ -1,11 +1,11 @@
|
|
1
|
-
class Spud::Admin::MenusController < Spud::Admin::
|
1
|
+
class Spud::Admin::MenusController < Spud::Admin::CmsController
|
2
2
|
layout 'spud/admin/detail'
|
3
3
|
belongs_to_spud_app :menus
|
4
4
|
add_breadcrumb "Menus", :spud_admin_menus_path
|
5
5
|
before_filter :load_menu,:only => [:edit,:update,:show,:destroy]
|
6
6
|
|
7
7
|
def index
|
8
|
-
@menus = SpudMenu.order(:name).paginate :page => params[:page]
|
8
|
+
@menus = SpudMenu.site(session[:admin_site]).order(:name).paginate :page => params[:page]
|
9
9
|
respond_with @menus
|
10
10
|
end
|
11
11
|
|
@@ -19,8 +19,9 @@ class Spud::Admin::MenusController < Spud::Admin::ApplicationController
|
|
19
19
|
def create
|
20
20
|
add_breadcrumb "New", :new_spud_admin_menu_path
|
21
21
|
@menu = SpudMenu.new(params[:spud_menu])
|
22
|
+
@menu.site_id = session[:admin_site]
|
22
23
|
flash[:notice] = "New menu created" if @menu.save
|
23
|
-
respond_with @menu,:location => spud_admin_menu_menu_items_url(:menu_id => @menu.id)
|
24
|
+
respond_with @menu,:location => @menu.id != nil ? spud_admin_menu_menu_items_url(:menu_id => @menu.id) : spud_admin_menus_url
|
24
25
|
end
|
25
26
|
|
26
27
|
def edit
|
@@ -42,7 +43,7 @@ class Spud::Admin::MenusController < Spud::Admin::ApplicationController
|
|
42
43
|
|
43
44
|
private
|
44
45
|
def load_menu
|
45
|
-
@menu = SpudMenu.
|
46
|
+
@menu = SpudMenu.site(session[:admin_site]).where(:id => params[:id]).first
|
46
47
|
if @menu.blank?
|
47
48
|
flash[:error] = "Menu not found!"
|
48
49
|
redirect_to spud_admin_menus_url() and return false
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class Spud::Admin::PagesController < Spud::Admin::
|
1
|
+
class Spud::Admin::PagesController < Spud::Admin::CmsController
|
2
2
|
layout 'spud/admin/cms/detail'
|
3
3
|
add_breadcrumb "Pages", :spud_admin_pages_path
|
4
4
|
belongs_to_spud_app :pages
|
@@ -6,7 +6,7 @@ class Spud::Admin::PagesController < Spud::Admin::ApplicationController
|
|
6
6
|
cache_sweeper :page_sweeper,:only => [:update,:destroy]
|
7
7
|
def index
|
8
8
|
|
9
|
-
@pages = SpudPage.where(:spud_page_id => nil).order(:page_order).includes(:spud_pages).paginate :page => params[:page]
|
9
|
+
@pages = SpudPage.site(session[:admin_site]).where(:spud_page_id => nil).order(:page_order).includes(:spud_pages).paginate :page => params[:page]
|
10
10
|
respond_with @pages
|
11
11
|
end
|
12
12
|
|
@@ -39,7 +39,15 @@ class Spud::Admin::PagesController < Spud::Admin::ApplicationController
|
|
39
39
|
|
40
40
|
@templates = SpudTemplate.all
|
41
41
|
@page = SpudPage.new
|
42
|
-
Spud::Cms.default_page_parts
|
42
|
+
parts = Spud::Cms.default_page_parts
|
43
|
+
if Spud::Core.multisite_mode_enabled && !session[:admin_site].blank?
|
44
|
+
site_config = Spud::Core.multisite_config.select{|c| c[:site_id] == session[:admin_site]}
|
45
|
+
if !site_config.blank?
|
46
|
+
cms_config = Spud::Cms.site_config_for_short_name(site_config[0][:short_name])
|
47
|
+
parts = cms_config[:default_page_parts] if !cms_config.blank? && !cms_config[:default_page_parts].blank?
|
48
|
+
end
|
49
|
+
end
|
50
|
+
parts.each do |part|
|
43
51
|
@page.spud_page_partials.new(:name => part.strip)
|
44
52
|
end
|
45
53
|
respond_with @page
|
@@ -47,6 +55,7 @@ class Spud::Admin::PagesController < Spud::Admin::ApplicationController
|
|
47
55
|
|
48
56
|
def create
|
49
57
|
@page = SpudPage.new(params[:spud_page])
|
58
|
+
@page.site_id = session[:admin_site]
|
50
59
|
flash[:notice] = "Page Saved successfully" if @page.save
|
51
60
|
respond_with @page,:location => spud_admin_pages_url
|
52
61
|
end
|
@@ -57,7 +66,15 @@ class Spud::Admin::PagesController < Spud::Admin::ApplicationController
|
|
57
66
|
|
58
67
|
@templates = SpudTemplate.all
|
59
68
|
if @page.spud_page_partials.blank?
|
60
|
-
Spud::Cms.default_page_parts
|
69
|
+
parts = Spud::Cms.default_page_parts
|
70
|
+
if Spud::Core.multisite_mode_enabled && !session[:admin_site].blank?
|
71
|
+
site_config = Spud::Core.multisite_config.select{|c| c[:site_id] == session[:admin_site]}
|
72
|
+
if !site_config.blank?
|
73
|
+
cms_config = Spud::Cms.site_config_for_short_name(site_config[0][:short_name])
|
74
|
+
parts = cms_config[:default_page_parts] if !cms_config.blank? && !cms_config[:default_page_parts].blank?
|
75
|
+
end
|
76
|
+
end
|
77
|
+
parts.each do |part|
|
61
78
|
@page.spud_page_partials.new(:name => part.strip)
|
62
79
|
end
|
63
80
|
end
|
@@ -109,7 +126,15 @@ class Spud::Admin::PagesController < Spud::Admin::ApplicationController
|
|
109
126
|
new_page_partials << page.spud_page_partials.build(:name => page_part.strip)
|
110
127
|
end
|
111
128
|
else
|
112
|
-
Spud::Cms.default_page_parts
|
129
|
+
parts = Spud::Cms.default_page_parts
|
130
|
+
if Spud::Core.multisite_mode_enabled && !session[:admin_site].blank?
|
131
|
+
site_config = Spud::Core.multisite_config.select{|c| c[:site_id] == session[:admin_site]}
|
132
|
+
if !site_config.blank?
|
133
|
+
cms_config = Spud::Cms.site_config_for_short_name(site_config[0][:short_name])
|
134
|
+
parts = cms_config[:default_page_parts] if !cms_config.blank? && !cms_config[:default_page_parts].blank?
|
135
|
+
end
|
136
|
+
end
|
137
|
+
parts.each do |part|
|
113
138
|
new_page_partials << page.spud_page_partials.build(:name => part)
|
114
139
|
end
|
115
140
|
|
@@ -132,7 +157,7 @@ class Spud::Admin::PagesController < Spud::Admin::ApplicationController
|
|
132
157
|
|
133
158
|
def clear
|
134
159
|
Rails.cache.clear
|
135
|
-
SpudPage.published_pages.all.each do |record|
|
160
|
+
SpudPage.site(session[:admin_site]).published_pages.all.each do |record|
|
136
161
|
if Spud::Cms.enable_full_page_caching
|
137
162
|
if record.url_name == Spud::Cms.root_page_name
|
138
163
|
expire_page root_path
|
@@ -151,7 +176,7 @@ class Spud::Admin::PagesController < Spud::Admin::ApplicationController
|
|
151
176
|
|
152
177
|
private
|
153
178
|
def load_page
|
154
|
-
@page = SpudPage.where(:id => params[:id]).includes(:spud_page_partials).first
|
179
|
+
@page = SpudPage.site(session[:admin_site]).where(:id => params[:id]).includes(:spud_page_partials).first
|
155
180
|
if @page.blank?
|
156
181
|
flash[:error] = "Page not found!"
|
157
182
|
redirect_to spud_admin_pages_url() and return false
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class Spud::Admin::TemplatesController < Spud::Admin::
|
1
|
+
class Spud::Admin::TemplatesController < Spud::Admin::CmsController
|
2
2
|
layout 'spud/admin/cms/detail'
|
3
3
|
add_breadcrumb "Templates", :spud_admin_templates_path
|
4
4
|
belongs_to_spud_app :templates
|
@@ -7,13 +7,21 @@ class Spud::Admin::TemplatesController < Spud::Admin::ApplicationController
|
|
7
7
|
|
8
8
|
def index
|
9
9
|
flash.now[:warning] = "Templates are an advanced way to create modified pages and require some experience in HTML and Ruby."
|
10
|
-
@templates = SpudTemplate.order(:name).paginate :page => params[:page]
|
10
|
+
@templates = SpudTemplate.site(session[:admin_site]).order(:name).paginate :page => params[:page]
|
11
11
|
respond_with @templates
|
12
12
|
end
|
13
13
|
|
14
14
|
def new
|
15
15
|
add_breadcrumb "New", :new_spud_admin_template_path
|
16
|
-
|
16
|
+
parts = Spud::Cms.default_page_parts
|
17
|
+
if Spud::Core.multisite_mode_enabled && !session[:admin_site].blank?
|
18
|
+
site_config = Spud::Core.multisite_config.select{|c| c[:site_id] == session[:admin_site]}
|
19
|
+
if !site_config.blank?
|
20
|
+
cms_config = Spud::Cms.site_config_for_short_name(site_config[0][:short_name])
|
21
|
+
parts = cms_config[:default_page_parts] if !cms_config.blank? && !cms_config[:default_page_parts].blank?
|
22
|
+
end
|
23
|
+
end
|
24
|
+
@template = SpudTemplate.new(:base_layout => Spud::Cms.default_page_layout,:page_parts => parts.join(","))
|
17
25
|
respond_with @template
|
18
26
|
end
|
19
27
|
|
@@ -21,7 +29,7 @@ class Spud::Admin::TemplatesController < Spud::Admin::ApplicationController
|
|
21
29
|
add_breadcrumb "New", :new_spud_admin_template_path
|
22
30
|
|
23
31
|
@template = SpudTemplate.new(params[:spud_template])
|
24
|
-
|
32
|
+
@template.site_id = session[:admin_site]
|
25
33
|
flash[:notice] = "Template created successfully!" if @template.save
|
26
34
|
|
27
35
|
respond_with @template, :location => spud_admin_templates_url
|
@@ -50,7 +58,7 @@ class Spud::Admin::TemplatesController < Spud::Admin::ApplicationController
|
|
50
58
|
|
51
59
|
private
|
52
60
|
def load_template
|
53
|
-
@template = SpudTemplate.where(:id => params[:id]).first
|
61
|
+
@template = SpudTemplate.site(session[:admin_site]).where(:id => params[:id]).first
|
54
62
|
if @template.blank?
|
55
63
|
flash[:error] = "Template not found!"
|
56
64
|
redirect_to spud_admin_templates_url and return false
|
@@ -1,6 +1,12 @@
|
|
1
1
|
module Spud::Cms::ApplicationHelper
|
2
2
|
def sp_list_pages(options = {})
|
3
|
+
|
3
4
|
pages = SpudPage.public.published_pages
|
5
|
+
|
6
|
+
if Spud::Core.multisite_mode_enabled
|
7
|
+
site_config = Spud::Core.site_config_for_host(request.host_with_port)
|
8
|
+
pages = pages.site(site_config[:site_id]) if !site_config.blank?
|
9
|
+
end
|
4
10
|
start_page = nil
|
5
11
|
max_depth = 0
|
6
12
|
active_class = "menu-active"
|
@@ -30,6 +36,7 @@ module Spud::Cms::ApplicationHelper
|
|
30
36
|
|
31
37
|
pages = pages.all.group_by(&:spud_page_id)
|
32
38
|
if pages[start_page].blank?
|
39
|
+
|
33
40
|
return ""
|
34
41
|
end
|
35
42
|
pages[start_page].sort_by{|p| p.page_order}.each do |page|
|
@@ -48,13 +55,19 @@ module Spud::Cms::ApplicationHelper
|
|
48
55
|
content += "</li>"
|
49
56
|
end
|
50
57
|
content += "</ul>"
|
58
|
+
|
51
59
|
return content.html_safe
|
52
60
|
end
|
53
61
|
|
54
62
|
|
55
63
|
def sp_list_menu(options = {})
|
64
|
+
|
56
65
|
max_depth = 0
|
57
66
|
menu = SpudMenu
|
67
|
+
if Spud::Core.multisite_mode_enabled
|
68
|
+
site_config = Spud::Core.site_config_for_host(request.host_with_port)
|
69
|
+
menu = menu.site(site_config[:site_id]) if !site_config.blank?
|
70
|
+
end
|
58
71
|
if !options.blank?
|
59
72
|
|
60
73
|
if options.has_key?(:menu_id)
|
@@ -78,12 +91,22 @@ module Spud::Cms::ApplicationHelper
|
|
78
91
|
end
|
79
92
|
menu = menu.first
|
80
93
|
if menu.blank?
|
94
|
+
|
81
95
|
return ""
|
82
96
|
end
|
83
|
-
menu_items = menu.spud_menu_items_combined.select("
|
97
|
+
menu_items = menu.spud_menu_items_combined.select("
|
98
|
+
#{SpudMenuItem.table_name}.id as id,
|
99
|
+
#{SpudMenuItem.table_name}.url as url,
|
100
|
+
#{SpudMenuItem.table_name}.classes as classes,
|
101
|
+
#{SpudMenuItem.table_name}.parent_type as parent_type,
|
102
|
+
#{SpudMenuItem.table_name}.menu_order as menu_order,
|
103
|
+
#{SpudMenuItem.table_name}.parent_id as parent_id,
|
104
|
+
#{SpudMenuItem.table_name}.name as name,
|
105
|
+
#{SpudPage.table_name}.url_name as url_name").order(:parent_type,:parent_id).joins("LEFT JOIN #{SpudPage.table_name} ON (#{SpudPage.table_name}.id = #{SpudMenuItem.table_name}.spud_page_id)").all
|
84
106
|
|
85
107
|
grouped_items = menu_items.group_by(&:parent_type)
|
86
108
|
if grouped_items["SpudMenu"].blank?
|
109
|
+
|
87
110
|
return ""
|
88
111
|
end
|
89
112
|
child_items = grouped_items["SpudMenuItem"].blank? ? [] : grouped_items["SpudMenuItem"].group_by(&:parent_id)
|
@@ -108,23 +131,38 @@ module Spud::Cms::ApplicationHelper
|
|
108
131
|
end
|
109
132
|
|
110
133
|
content += "</ul>"
|
134
|
+
|
111
135
|
return content.html_safe
|
112
136
|
end
|
113
137
|
|
114
138
|
def sp_menu_with_seperator(options={})
|
139
|
+
|
115
140
|
seperator = " | ".html_safe
|
116
141
|
if(options.has_key?(:seperator))
|
117
142
|
seperator = options[:seperator]
|
118
143
|
end
|
119
144
|
|
120
|
-
menu = SpudMenu.where(:name => options[:name])
|
121
|
-
|
145
|
+
menu = SpudMenu.where(:name => options[:name])
|
146
|
+
if Spud::Core.multisite_mode_enabled
|
147
|
+
site_config = Spud::Core.site_config_for_host(request.host_with_port)
|
148
|
+
menu = menu.site(site_config[:site_id]) if !site_config.blank?
|
149
|
+
end
|
150
|
+
menu = menu.first
|
151
|
+
menu_items = menu.spud_menu_items_combined.select("
|
152
|
+
#{SpudMenuItem.table_name}.id as id,
|
153
|
+
#{SpudMenuItem.table_name}.url as url,
|
154
|
+
#{SpudMenuItem.table_name}.classes as classes,
|
155
|
+
#{SpudMenuItem.table_name}.parent_type as parent_type,
|
156
|
+
#{SpudMenuItem.table_name}.menu_order as menu_order,
|
157
|
+
#{SpudMenuItem.table_name}.parent_id as parent_id,
|
158
|
+
#{SpudMenuItem.table_name}.name as name,
|
159
|
+
#{SpudPage.table_name}.url_name as url_name").order(:parent_type,:parent_id).joins("LEFT JOIN #{SpudPage.table_name} ON (#{SpudPage.table_name}.id = #{SpudMenuItem.table_name}.spud_page_id)").all
|
122
160
|
|
123
161
|
menu_tags = []
|
124
162
|
menu_items.sort_by{|p| p.menu_order}.each do |item|
|
125
163
|
menu_tags += ["<a #{"class='#{item.classes}' " if !item.classes.blank?}href='#{!item.url_name.blank? ? (item.url_name == Spud::Cms.root_page_name ? root_path() : page_path(:id => item.url_name)) : item.url}'>#{item.name}</a>"]
|
126
164
|
end
|
127
|
-
|
165
|
+
|
128
166
|
return menu_tags.join(seperator).html_safe
|
129
167
|
end
|
130
168
|
private
|
@@ -185,5 +223,7 @@ private
|
|
185
223
|
return content.html_safe
|
186
224
|
end
|
187
225
|
|
226
|
+
|
227
|
+
|
188
228
|
|
189
229
|
end
|
data/app/models/page_sweeper.rb
CHANGED
data/app/models/spud_menu.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
class SpudMenu < ActiveRecord::Base
|
2
2
|
validates :name,:presence => true
|
3
|
+
validates_uniqueness_of :name, :scope => [:site_id]
|
3
4
|
has_many :spud_menu_items,:as => :parent,:dependent => :destroy
|
4
5
|
has_many :spud_menu_items_combined,:class_name => "SpudMenuItem",:foreign_key => :spud_menu_id,:dependent => :destroy
|
5
6
|
|
7
|
+
attr_protected :site_id
|
8
|
+
scope :site, lambda {|sid| where(:site_id => sid)}
|
6
9
|
end
|
@@ -9,6 +9,9 @@ class SpudMenuItem < ActiveRecord::Base
|
|
9
9
|
validates :parent_id,:presence => true
|
10
10
|
|
11
11
|
|
12
|
+
attr_accessible :name,:parent_type,:parent_id,:item_type,:spud_page_id,:menu_order,:url,:classes
|
13
|
+
|
14
|
+
|
12
15
|
def options_tree(options,depth,current = nil)
|
13
16
|
sub_items = self.spud_menu_items
|
14
17
|
sub_items = sub_items.where(["id != ?",current.id]) if !current.blank? && !current.id.blank?
|
data/app/models/spud_page.rb
CHANGED
@@ -8,25 +8,31 @@ class SpudPage < ActiveRecord::Base
|
|
8
8
|
belongs_to :created_by_user,:class_name => "SpudUser",:foreign_key => :created_by
|
9
9
|
belongs_to :updated_by_user,:class_name => "SpudUser",:foreign_key => :updated_by
|
10
10
|
|
11
|
+
|
12
|
+
|
13
|
+
|
11
14
|
before_validation :generate_url_name
|
12
15
|
validates :name,:presence => true
|
13
|
-
|
14
|
-
|
16
|
+
validates_uniqueness_of :name, :scope => [:site_id,:spud_page_id]
|
17
|
+
validates :url_name,:presence => true
|
18
|
+
validates_uniqueness_of :url_name, :scope => :site_id
|
19
|
+
attr_protected :site_id
|
15
20
|
accepts_nested_attributes_for :spud_page_partials, :allow_destroy => true
|
16
21
|
scope :parent_pages, where(:spud_page_id => nil)
|
22
|
+
scope :site, lambda {|sid| where(:site_id => sid)}
|
17
23
|
scope :published_pages, where(:published => true)
|
18
24
|
scope :public, where(:visibility => 0)
|
19
25
|
|
20
26
|
|
21
|
-
def self.grouped
|
22
|
-
return all.group_by(&:spud_page_id)
|
27
|
+
def self.grouped(site_id=nil)
|
28
|
+
return site(site_id).all.group_by(&:spud_page_id)
|
23
29
|
end
|
24
30
|
|
25
31
|
# Returns an array of pages in order of heirarchy
|
26
32
|
# :fitler Filters out a page by ID, and all of its children
|
27
33
|
# :value Pick an attribute to be used in the value field, defaults to ID
|
28
34
|
def self.options_tree_for_page(config={})
|
29
|
-
collection = config[:collection] || self.grouped
|
35
|
+
collection = config[:collection] || self.grouped(config[:site_id])
|
30
36
|
level = config[:level] || 0
|
31
37
|
parent_id = config[:parent_id] || nil
|
32
38
|
filter = config[:filter] || nil
|
@@ -58,7 +64,7 @@ class SpudPage < ActiveRecord::Base
|
|
58
64
|
if !self.id.blank?
|
59
65
|
pages = pages.where("id != #{self.id}")
|
60
66
|
end
|
61
|
-
url_names = pages.all.collect{|p| p.url_name}
|
67
|
+
url_names = pages.site(self.site_id).all.collect{|p| p.url_name}
|
62
68
|
|
63
69
|
counter = 1
|
64
70
|
url_name_new = url_name
|
@@ -69,7 +75,7 @@ class SpudPage < ActiveRecord::Base
|
|
69
75
|
# url_name = url_name_new
|
70
76
|
# Check Permalinks List
|
71
77
|
|
72
|
-
permalink = SpudPermalink.where(:url_name => url_name_new).first
|
78
|
+
permalink = SpudPermalink.site(self.site_id).where(:url_name => url_name_new).first
|
73
79
|
counter = 1
|
74
80
|
while permalink.blank? == false
|
75
81
|
|
@@ -79,20 +85,20 @@ class SpudPage < ActiveRecord::Base
|
|
79
85
|
else
|
80
86
|
url_name_new = url_name + "-#{counter}"
|
81
87
|
counter += 1
|
82
|
-
permalink = SpudPermalink.where(:url_name => url_name_new).first
|
88
|
+
permalink = SpudPermalink.site(self.site_id).where(:url_name => url_name_new).first
|
83
89
|
end
|
84
90
|
end
|
85
91
|
url_name = url_name_new
|
86
92
|
end
|
87
93
|
if self.url_name.blank? == false && url_name != self.url_name
|
88
|
-
self.spud_permalinks.create(:url_name => self.url_name)
|
94
|
+
self.spud_permalinks.create(:url_name => self.url_name,:site_id => self.site_id)
|
89
95
|
end
|
90
96
|
self.url_name = url_name
|
91
97
|
self.use_custom_url_name = false
|
92
98
|
elsif self.id.to_i > 0
|
93
99
|
page = SpudPage.where(:id => self.id).first
|
94
100
|
if page.url_name.blank? == false && page.url_name != self.url_name
|
95
|
-
permalink = SpudPermalink.where(:url_name => self.url_name).first
|
101
|
+
permalink = SpudPermalink.site(self.site_id).where(:url_name => self.url_name).first
|
96
102
|
if permalink.blank? == false
|
97
103
|
if permalink.attachment == self
|
98
104
|
permalink.destroy
|
@@ -101,7 +107,7 @@ class SpudPage < ActiveRecord::Base
|
|
101
107
|
return false
|
102
108
|
end
|
103
109
|
end
|
104
|
-
self.spud_permalinks.create(:url_name => page.url_name)
|
110
|
+
self.spud_permalinks.create(:url_name => page.url_name,:site_id => self.site_id)
|
105
111
|
end
|
106
112
|
end
|
107
113
|
return true
|
data/app/models/spud_template.rb
CHANGED
@@ -4,4 +4,7 @@ class SpudTemplate < ActiveRecord::Base
|
|
4
4
|
validates :base_layout, :presence => true
|
5
5
|
validates :page_parts, :presence => true
|
6
6
|
validates :name, :presence => true,:uniqueness => true
|
7
|
+
|
8
|
+
attr_protected :site_id
|
9
|
+
scope :site, lambda {|sid| where(:site_id => sid)}
|
7
10
|
end
|
@@ -18,7 +18,7 @@
|
|
18
18
|
<div class="control-group">
|
19
19
|
<%=f.label :spud_page_id, "Page",:class => "control-label"%>
|
20
20
|
<div class="controls">
|
21
|
-
<%=f.select :spud_page_id,options_for_select(SpudPage.options_tree_for_page(),@menu_item.spud_page_id),{:include_blank => 'Use URL instead'},{:title => "",:onchange => "if($(this).val() != '') {$('#spud_menu_item_url').val('');}"}%>
|
21
|
+
<%=f.select :spud_page_id,options_for_select(SpudPage.options_tree_for_page(:site_id => session[:admin_site]),@menu_item.spud_page_id),{:include_blank => 'Use URL instead'},{:title => "",:onchange => "if($(this).val() != '') {$('#spud_menu_item_url').val('');}"}%>
|
22
22
|
</div>
|
23
23
|
|
24
24
|
</div>
|
@@ -27,7 +27,7 @@
|
|
27
27
|
|
28
28
|
<%=f.label :template_id, "Template", :class=>"control-label"%>
|
29
29
|
<div class="controls">
|
30
|
-
<%=f.select :template_id, options_for_select(SpudTemplate.all.collect{|tp| [tp.name,tp.id]},@page.template_id), {:include_blank => 'Default'},{:title => "", 'data-source' => page_parts_spud_admin_pages_path(:page => @page.id) }%>
|
30
|
+
<%=f.select :template_id, options_for_select(SpudTemplate.site(session[:admin_site]).all.collect{|tp| [tp.name,tp.id]},@page.template_id), {:include_blank => 'Default'},{:title => "", 'data-source' => page_parts_spud_admin_pages_path(:page => @page.id) }%>
|
31
31
|
<span class="help-inline">Use this to control the layout template to be used for this page if they are available.</span>
|
32
32
|
</div>
|
33
33
|
</div>
|
@@ -36,7 +36,7 @@
|
|
36
36
|
|
37
37
|
<%=f.label :spud_page_id, "Parent Page", :class=>"control-label"%>
|
38
38
|
<div class="controls">
|
39
|
-
<%=f.select :spud_page_id,options_for_select(SpudPage.options_tree_for_page(:filter => @page),@page.spud_page_id),{:include_blank => 'None'},{:title => ""}%>
|
39
|
+
<%=f.select :spud_page_id,options_for_select(SpudPage.options_tree_for_page(:filter => @page,:site_id => session[:admin_site]),@page.spud_page_id),{:include_blank => 'None'},{:title => ""}%>
|
40
40
|
|
41
41
|
</div>
|
42
42
|
</div>
|
@@ -2,7 +2,7 @@ module Spud
|
|
2
2
|
module Cms
|
3
3
|
include ActiveSupport::Configurable
|
4
4
|
|
5
|
-
config_accessor :menus_enabled,:templates_enabled,:root_page_name,:default_page_parts,:yield_body_as_content_block,:default_page_layout,:enable_sitemap,:enable_full_page_caching,:enable_action_caching
|
5
|
+
config_accessor :menus_enabled,:templates_enabled,:root_page_name,:default_page_parts,:yield_body_as_content_block,:default_page_layout,:enable_sitemap,:enable_full_page_caching,:enable_action_caching,:multisite_config
|
6
6
|
|
7
7
|
self.root_page_name = "home"
|
8
8
|
self.menus_enabled = true
|
@@ -13,5 +13,15 @@ module Spud
|
|
13
13
|
self.enable_full_page_caching = false
|
14
14
|
self.enable_action_caching = false
|
15
15
|
self.enable_sitemap = true
|
16
|
+
self.multisite_config = []
|
17
|
+
def self.site_config_for_short_name(short_name)
|
18
|
+
configs = Spud::Cms.multisite_config.select{|p| p[:short_name].to_s == short_name.to_s}
|
19
|
+
if configs.blank?
|
20
|
+
return nil
|
21
|
+
else
|
22
|
+
return configs[0]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
16
26
|
end
|
17
27
|
end
|
data/lib/spud_cms/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spud_cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-04-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &70155890998780 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.2.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70155890998780
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: spud_core
|
27
|
-
requirement: &
|
27
|
+
requirement: &70155890997960 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -35,21 +35,21 @@ dependencies:
|
|
35
35
|
version: 0.9.0
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
|
-
version_requirements: *
|
38
|
+
version_requirements: *70155890997960
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
40
|
name: spud_permalinks
|
41
|
-
requirement: &
|
41
|
+
requirement: &70155890997240 !ruby/object:Gem::Requirement
|
42
42
|
none: false
|
43
43
|
requirements:
|
44
44
|
- - ~>
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: 0.0.
|
46
|
+
version: 0.0.3
|
47
47
|
type: :runtime
|
48
48
|
prerelease: false
|
49
|
-
version_requirements: *
|
49
|
+
version_requirements: *70155890997240
|
50
50
|
- !ruby/object:Gem::Dependency
|
51
51
|
name: codemirror-rails
|
52
|
-
requirement: &
|
52
|
+
requirement: &70155890996860 !ruby/object:Gem::Requirement
|
53
53
|
none: false
|
54
54
|
requirements:
|
55
55
|
- - ! '>='
|
@@ -57,10 +57,10 @@ dependencies:
|
|
57
57
|
version: '0'
|
58
58
|
type: :runtime
|
59
59
|
prerelease: false
|
60
|
-
version_requirements: *
|
60
|
+
version_requirements: *70155890996860
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: mysql2
|
63
|
-
requirement: &
|
63
|
+
requirement: &70155890996360 !ruby/object:Gem::Requirement
|
64
64
|
none: false
|
65
65
|
requirements:
|
66
66
|
- - ! '>='
|
@@ -68,10 +68,10 @@ dependencies:
|
|
68
68
|
version: '0'
|
69
69
|
type: :development
|
70
70
|
prerelease: false
|
71
|
-
version_requirements: *
|
71
|
+
version_requirements: *70155890996360
|
72
72
|
- !ruby/object:Gem::Dependency
|
73
73
|
name: rspec
|
74
|
-
requirement: &
|
74
|
+
requirement: &70155890995940 !ruby/object:Gem::Requirement
|
75
75
|
none: false
|
76
76
|
requirements:
|
77
77
|
- - ! '>='
|
@@ -79,10 +79,10 @@ dependencies:
|
|
79
79
|
version: '0'
|
80
80
|
type: :development
|
81
81
|
prerelease: false
|
82
|
-
version_requirements: *
|
82
|
+
version_requirements: *70155890995940
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rspec-rails
|
85
|
-
requirement: &
|
85
|
+
requirement: &70155890995520 !ruby/object:Gem::Requirement
|
86
86
|
none: false
|
87
87
|
requirements:
|
88
88
|
- - ! '>='
|
@@ -90,10 +90,10 @@ dependencies:
|
|
90
90
|
version: '0'
|
91
91
|
type: :development
|
92
92
|
prerelease: false
|
93
|
-
version_requirements: *
|
93
|
+
version_requirements: *70155890995520
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
95
|
name: factory_girl
|
96
|
-
requirement: &
|
96
|
+
requirement: &70155890995020 !ruby/object:Gem::Requirement
|
97
97
|
none: false
|
98
98
|
requirements:
|
99
99
|
- - =
|
@@ -101,10 +101,10 @@ dependencies:
|
|
101
101
|
version: 2.5.0
|
102
102
|
type: :development
|
103
103
|
prerelease: false
|
104
|
-
version_requirements: *
|
104
|
+
version_requirements: *70155890995020
|
105
105
|
- !ruby/object:Gem::Dependency
|
106
106
|
name: mocha
|
107
|
-
requirement: &
|
107
|
+
requirement: &70155890994480 !ruby/object:Gem::Requirement
|
108
108
|
none: false
|
109
109
|
requirements:
|
110
110
|
- - =
|
@@ -112,10 +112,10 @@ dependencies:
|
|
112
112
|
version: 0.10.3
|
113
113
|
type: :development
|
114
114
|
prerelease: false
|
115
|
-
version_requirements: *
|
115
|
+
version_requirements: *70155890994480
|
116
116
|
- !ruby/object:Gem::Dependency
|
117
117
|
name: database_cleaner
|
118
|
-
requirement: &
|
118
|
+
requirement: &70155890994000 !ruby/object:Gem::Requirement
|
119
119
|
none: false
|
120
120
|
requirements:
|
121
121
|
- - =
|
@@ -123,7 +123,7 @@ dependencies:
|
|
123
123
|
version: 0.7.1
|
124
124
|
type: :development
|
125
125
|
prerelease: false
|
126
|
-
version_requirements: *
|
126
|
+
version_requirements: *70155890994000
|
127
127
|
description: Spud CMS is a full-featured light weight modular cms engine as a part
|
128
128
|
of the spud suite of rails gems. This particular gem comes with page management,
|
129
129
|
administrative dashboard, template management, menu management and more. It is also
|
@@ -140,13 +140,17 @@ files:
|
|
140
140
|
- app/assets/images/spud/admin/pages_thumb.png
|
141
141
|
- app/assets/images/spud/admin/templates_thumb.png
|
142
142
|
- app/assets/javascripts/spud/admin/cms/application.js
|
143
|
+
- app/assets/javascripts/spud/admin/cms.js
|
143
144
|
- app/assets/stylesheets/spud/admin/cms/application.css
|
145
|
+
- app/assets/stylesheets/spud/admin/cms.css
|
144
146
|
- app/controllers/pages_controller.rb
|
147
|
+
- app/controllers/spud/admin/cms_controller.rb
|
145
148
|
- app/controllers/spud/admin/menu_items_controller.rb
|
146
149
|
- app/controllers/spud/admin/menus_controller.rb
|
147
150
|
- app/controllers/spud/admin/pages_controller.rb
|
148
151
|
- app/controllers/spud/admin/templates_controller.rb
|
149
152
|
- app/controllers/spud/cms/sitemaps_controller.rb
|
153
|
+
- app/helpers/spud/admin/cms_helper.rb
|
150
154
|
- app/helpers/spud/cms/application_helper.rb
|
151
155
|
- app/models/page_sweeper.rb
|
152
156
|
- app/models/spud_menu.rb
|
@@ -190,6 +194,9 @@ files:
|
|
190
194
|
- db/migrate/20120118141852_add_notes_to_spud_pages.rb
|
191
195
|
- db/migrate/20120126232428_add_menu_id_to_spud_menu_items.rb
|
192
196
|
- db/migrate/20120128163601_add_classes_to_spud_menu_items.rb
|
197
|
+
- db/migrate/20120329132314_add_site_id_to_spud_pages.rb
|
198
|
+
- db/migrate/20120329132322_add_site_id_to_spud_templates.rb
|
199
|
+
- db/migrate/20120329132330_add_site_id_to_spud_menus.rb
|
193
200
|
- lib/spud_cms/configuration.rb
|
194
201
|
- lib/spud_cms/engine.rb
|
195
202
|
- lib/spud_cms/page_route.rb
|
@@ -251,7 +258,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
251
258
|
version: '0'
|
252
259
|
segments:
|
253
260
|
- 0
|
254
|
-
hash: -
|
261
|
+
hash: -403661204937112407
|
255
262
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
256
263
|
none: false
|
257
264
|
requirements:
|
@@ -260,7 +267,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
260
267
|
version: '0'
|
261
268
|
segments:
|
262
269
|
- 0
|
263
|
-
hash: -
|
270
|
+
hash: -403661204937112407
|
264
271
|
requirements: []
|
265
272
|
rubyforge_project:
|
266
273
|
rubygems_version: 1.8.15
|