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.
@@ -0,0 +1,2 @@
1
+ // Place all the behaviors and hooks related to the matching controller here.
2
+ // All this logic will automatically be available in application.js.
@@ -0,0 +1,4 @@
1
+ /*
2
+ Place all the styles related to the matching controller here.
3
+ They will automatically be included in application.css.
4
+ */
@@ -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]).first
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).first
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
@@ -0,0 +1,3 @@
1
+ class Spud::Admin::CmsController < Spud::Admin::ApplicationController
2
+
3
+ end
@@ -1,4 +1,4 @@
1
- class Spud::Admin::MenuItemsController < Spud::Admin::ApplicationController
1
+ class Spud::Admin::MenuItemsController < Spud::Admin::CmsController
2
2
  add_breadcrumb "Menus", :spud_admin_menus_path
3
3
  belongs_to_spud_app :menus
4
4
  layout 'spud/admin/cms/detail'
@@ -1,11 +1,11 @@
1
- class Spud::Admin::MenusController < Spud::Admin::ApplicationController
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.find(params[:id])
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::ApplicationController
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.each do |part|
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.each do |part|
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.each do |part|
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::ApplicationController
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
- @template = SpudTemplate.new(:base_layout => Spud::Cms.default_page_layout,:page_parts => Spud::Cms.default_page_parts.join(","))
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
@@ -0,0 +1,2 @@
1
+ module Spud::Admin::CmsHelper
2
+ end
@@ -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("spud_menu_items.id as id,spud_menu_items.url as url,spud_menu_items.classes as classes,spud_menu_items.parent_type as parent_type,spud_menu_items.menu_order as menu_order,spud_menu_items.parent_id as parent_id,spud_menu_items.name as name,spud_pages.url_name as url_name").order(:parent_type,:parent_id).joins("LEFT JOIN spud_pages ON (spud_pages.id = spud_menu_items.spud_page_id)").all
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 = "&nbsp;|&nbsp;".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]).first
121
- menu_items = menu.spud_menu_items_combined.select("spud_menu_items.id as id,spud_menu_items.url as url,spud_menu_items.classes as classes,spud_menu_items.parent_type as parent_type,spud_menu_items.menu_order as menu_order,spud_menu_items.parent_id as parent_id,spud_menu_items.name as name,spud_pages.url_name as url_name").order(:parent_type,:parent_id).joins("LEFT JOIN spud_pages ON (spud_pages.id = spud_menu_items.spud_page_id)").all
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
@@ -50,7 +50,7 @@ private
50
50
  end
51
51
  else
52
52
  Rails.cache.clear
53
- SpudPage.published_pages.all.each {|page| expire_cache_for(page)}
53
+ SpudPage.site(session[:admin_site]).published_pages.all.each {|page| expire_cache_for(page)}
54
54
  end
55
55
  end
56
56
  end
@@ -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?
@@ -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
- validates :url_name,:presence => true, :uniqueness => true
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
@@ -1,3 +1,4 @@
1
1
  class SpudPagePartial < ActiveRecord::Base
2
2
  belongs_to :spud_page
3
+ attr_accessible :name,:spud_page_id,:content,:format
3
4
  end
@@ -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>
@@ -0,0 +1,6 @@
1
+ class AddSiteIdToSpudPages < ActiveRecord::Migration
2
+ def change
3
+ add_column :spud_pages, :site_id, :integer
4
+ add_index :spud_pages,:site_id
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ class AddSiteIdToSpudTemplates < ActiveRecord::Migration
2
+ def change
3
+ add_column :spud_templates, :site_id, :integer
4
+ add_index :spud_templates,:site_id
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ class AddSiteIdToSpudMenus < ActiveRecord::Migration
2
+ def change
3
+ add_column :spud_menus, :site_id, :integer
4
+ add_index :spud_menus,:site_id
5
+ end
6
+ end
@@ -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
@@ -1,5 +1,5 @@
1
1
  module Spud
2
2
  module Cms
3
- VERSION = "0.8.0"
3
+ VERSION = "0.8.1"
4
4
  end
5
5
  end
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.0
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-03-27 00:00:00.000000000 Z
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: &70107591862880 !ruby/object:Gem::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: *70107591862880
24
+ version_requirements: *70155890998780
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: spud_core
27
- requirement: &70107591862360 !ruby/object:Gem::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: *70107591862360
38
+ version_requirements: *70155890997960
39
39
  - !ruby/object:Gem::Dependency
40
40
  name: spud_permalinks
41
- requirement: &70107591861480 !ruby/object:Gem::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.1
46
+ version: 0.0.3
47
47
  type: :runtime
48
48
  prerelease: false
49
- version_requirements: *70107591861480
49
+ version_requirements: *70155890997240
50
50
  - !ruby/object:Gem::Dependency
51
51
  name: codemirror-rails
52
- requirement: &70107591861080 !ruby/object:Gem::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: *70107591861080
60
+ version_requirements: *70155890996860
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: mysql2
63
- requirement: &70107591860480 !ruby/object:Gem::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: *70107591860480
71
+ version_requirements: *70155890996360
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: rspec
74
- requirement: &70107591860060 !ruby/object:Gem::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: *70107591860060
82
+ version_requirements: *70155890995940
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rspec-rails
85
- requirement: &70107591859520 !ruby/object:Gem::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: *70107591859520
93
+ version_requirements: *70155890995520
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: factory_girl
96
- requirement: &70107591858980 !ruby/object:Gem::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: *70107591858980
104
+ version_requirements: *70155890995020
105
105
  - !ruby/object:Gem::Dependency
106
106
  name: mocha
107
- requirement: &70107591858300 !ruby/object:Gem::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: *70107591858300
115
+ version_requirements: *70155890994480
116
116
  - !ruby/object:Gem::Dependency
117
117
  name: database_cleaner
118
- requirement: &70107591857680 !ruby/object:Gem::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: *70107591857680
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: -1833908218773550740
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: -1833908218773550740
270
+ hash: -403661204937112407
264
271
  requirements: []
265
272
  rubyforge_project:
266
273
  rubygems_version: 1.8.15