spud_cms 0.8.0 → 0.8.1
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/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
|