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.
@@ -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