spud_cms 0.8.17 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. data/README.markdown +30 -13
  2. data/app/assets/images/spud/admin/snippets_thumb.png +0 -0
  3. data/app/assets/images/spud/admin/snippets_thumb@2x.png +0 -0
  4. data/app/assets/javascripts/spud/admin/cms/application.js +3 -3
  5. data/app/controllers/pages_controller.rb +6 -23
  6. data/app/controllers/spud/admin/menu_items_controller.rb +6 -10
  7. data/app/controllers/spud/admin/menus_controller.rb +1 -1
  8. data/app/controllers/spud/admin/pages_controller.rb +40 -86
  9. data/app/controllers/spud/cms/sitemaps_controller.rb +1 -1
  10. data/app/helpers/spud/cms/application_helper.rb +50 -26
  11. data/app/models/spud_menu_item.rb +10 -13
  12. data/app/models/spud_page.rb +12 -4
  13. data/app/models/spud_page_liquid_tag.rb +4 -0
  14. data/app/models/spud_page_partial.rb +40 -1
  15. data/app/observers/page_sweeper.rb +48 -0
  16. data/app/views/pages/show.html.erb +9 -11
  17. data/app/views/spud/admin/pages/_form.html.erb +15 -16
  18. data/app/views/spud/admin/pages/_page_partials_form.html.erb +3 -3
  19. data/app/views/spud/admin/pages/index.html.erb +1 -1
  20. data/app/views/spud/admin/pages/show.html.erb +4 -6
  21. data/config/routes.rb +3 -3
  22. data/db/migrate/20120911190030_add_symbol_name_to_spud_page_partials.rb +5 -0
  23. data/db/migrate/20120912121313_modify_site_id_for_spud_pages.rb +15 -0
  24. data/db/migrate/20121016233715_add_content_processed_to_spud_page_partials.rb +5 -0
  25. data/db/migrate/20121112151110_add_layout_to_spud_pages.rb +8 -0
  26. data/db/migrate/20121112212113_create_spud_page_liquid_tags.rb +11 -0
  27. data/lib/spud_cms.rb +1 -0
  28. data/lib/spud_cms/configuration.rb +4 -7
  29. data/lib/spud_cms/engine.rb +37 -16
  30. data/lib/spud_cms/template_parser.rb +121 -0
  31. data/lib/spud_cms/version.rb +1 -1
  32. data/spec/controllers/pages_controller_spec.rb +108 -0
  33. data/spec/controllers/spud/admin/menu_items_controller_spec.rb +148 -0
  34. data/spec/controllers/spud/admin/menus_controller_spec.rb +121 -0
  35. data/spec/controllers/spud/admin/pages_controller_spec.rb +5 -13
  36. data/spec/controllers/spud/cms/sitemaps_controller_spec.rb +35 -4
  37. data/spec/dummy/app/controllers/application_controller.rb +1 -1
  38. data/spec/dummy/db/schema.rb +146 -0
  39. data/spec/dummy/log/development.log +341 -0
  40. data/spec/dummy/log/test.log +182863 -0
  41. data/spec/helpers/spud/cms/application_helper_spec.rb +160 -0
  42. data/spec/models/spud_menu_item_spec.rb +31 -0
  43. data/spec/models/spud_page_liquid_tag_spec.rb +5 -0
  44. data/spec/models/spud_page_partial_spec.rb +44 -0
  45. data/spec/models/spud_page_spec.rb +1 -2
  46. metadata +50 -19
  47. data/app/assets/images/spud/admin/templates_thumb.png +0 -0
  48. data/app/controllers/spud/admin/templates_controller.rb +0 -73
  49. data/app/models/page_sweeper.rb +0 -63
  50. data/app/models/spud_template.rb +0 -10
  51. data/app/views/layouts/spud/admin/cms/detail.html.erb +0 -5
  52. data/spec/models/spud_template_spec.rb +0 -34
@@ -1,73 +0,0 @@
1
- class Spud::Admin::TemplatesController < Spud::Admin::CmsController
2
- layout 'spud/admin/cms/detail'
3
- add_breadcrumb "Templates", :spud_admin_templates_path
4
- belongs_to_spud_app :templates
5
- before_filter :load_template,:only => [:edit,:update,:show,:destroy]
6
- cache_sweeper :page_sweeper,:only => [:update,:destroy]
7
-
8
- def index
9
- flash.now[:warning] = "Templates are an advanced way to create modified pages and require some experience in HTML and Ruby."
10
- @templates = SpudTemplate.site(session[:admin_site]).order(:name).paginate :page => params[:page]
11
- respond_with @templates
12
- end
13
-
14
- def new
15
- add_breadcrumb "New", :new_spud_admin_template_path
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(","))
25
- respond_with @template
26
- end
27
-
28
- def create
29
- add_breadcrumb "New", :new_spud_admin_template_path
30
-
31
- @template = SpudTemplate.new(params[:spud_template])
32
- @template.site_id = session[:admin_site]
33
- flash[:notice] = "Template created successfully!" if @template.save
34
-
35
- respond_with @template, :location => spud_admin_templates_url
36
- end
37
-
38
- def edit
39
- add_breadcrumb "Edit #{@template.name}", :edit_spud_admin_template_path
40
- respond_with @template
41
- end
42
-
43
- def update
44
-
45
- add_breadcrumb "Edit #{@template.name}", :edit_spud_admin_template_path
46
- flash[:notice] = "Template updated successfully" if @template.update_attributes(params[:spud_template])
47
-
48
- respond_with @template, :location => spud_admin_templates_url
49
- end
50
-
51
-
52
- def destroy
53
-
54
- flash[:notice] = "Template removed" if @template.destroy
55
-
56
- respond_with @template, :location => spud_admin_templates_url
57
- end
58
-
59
- private
60
- def load_template
61
- @template = SpudTemplate.where(:id => params[:id]).first
62
- if @template.blank?
63
- flash[:error] = "Template not found!"
64
- redirect_to spud_admin_templates_url and return false
65
- elsif Spud::Core.multisite_mode_enabled && @template.site_id != session[:admin_site]
66
- flash[:warning] = "Site Context Changed. The template you were viewing is not associated with the current site. Redirected back to template selections."
67
- redirect_to spud_admin_templates_url() and return false
68
- end
69
- end
70
-
71
-
72
-
73
- end
@@ -1,63 +0,0 @@
1
- class PageSweeper < ActionController::Caching::Sweeper
2
- observe SpudPage,SpudTemplate,SpudMenuItem
3
-
4
- def before_save(record)
5
- if record.is_a?(SpudPage) && record.changed_attributes.has_key?("url_name")
6
- if Spud::Cms.enable_full_page_caching
7
- if record.changed_attributes["url_name"] == Spud::Cms.root_page_name
8
- expire_page root_path
9
- else
10
- expire_page page_path(:id => record.changed_attributes["url_name"])
11
- end
12
- elsif Spud::Cms.enable_action_caching
13
- if record.changed_attributes["url_name"] == Spud::Cms.root_page_name
14
- expire_action root_path
15
- else
16
- expire_action page_path(:id => record.changed_attributes["url_name"])
17
- end
18
- end
19
- end
20
- end
21
- def after_save(record)
22
- expire_cache_for(record)
23
- expire_page spud_cms_sitemap_path(:format => :xml)
24
- expire_page spud_sitemap_path(:format => :xml)
25
- end
26
- def after_destroy(record)
27
- expire_cache_for(record)
28
- expire_page spud_cms_sitemap_path
29
- expire_page spud_sitemap_path
30
- end
31
- private
32
- def expire_cache_for(record)
33
- if(record.is_a?(SpudTemplate))
34
- record.spud_pages.each do |page|
35
- expire_cache_for(page)
36
- end
37
- elsif record.is_a?(SpudPage)
38
- if Spud::Cms.enable_full_page_caching
39
- multisite_prefix = ""
40
-
41
- if Spud::Core.multisite_mode_enabled
42
- site_config = Spud::Core.site_config_for_id(record.site_id)
43
- multisite_prefix = "/" + site_config[:short_name].to_s.downcase
44
- end
45
-
46
- if record.url_name == Spud::Cms.root_page_name
47
- expire_page root_path
48
- else
49
- expire_page page_path(:id => record.url_name)
50
- end
51
- elsif Spud::Cms.enable_action_caching
52
- if record.url_name == Spud::Cms.root_page_name
53
- expire_action root_path
54
- else
55
- expire_action page_path(:id => record.url_name)
56
- end
57
- end
58
- else
59
- Rails.cache.clear
60
- SpudPage.site(record.spud_menu.site_id).published_pages.all.each {|page| expire_cache_for(page)}
61
- end
62
- end
63
- end
@@ -1,10 +0,0 @@
1
- class SpudTemplate < ActiveRecord::Base
2
- has_many :spud_pages,:dependent => :nullify,:foreign_key => :template_id
3
-
4
- validates :base_layout, :presence => true
5
- validates :page_parts, :presence => true
6
- validates :name, :presence => true,:uniqueness => true
7
-
8
- attr_protected :site_id
9
- scope :site, lambda {|sid| where(:site_id => sid)}
10
- end
@@ -1,5 +0,0 @@
1
- <%=content_for :head do%>
2
- <%= stylesheet_link_tag "spud/admin/cms/application" %>
3
- <%= javascript_include_tag "spud/admin/cms/application" %>
4
- <%end%>
5
- <%= render :template => 'layouts/spud/admin/detail' %>
@@ -1,34 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe SpudTemplate do
4
- it {should have_many(:spud_pages)}
5
- describe "validations" do
6
- it "should require a base layout" do
7
- t = Factory.build(:spud_template, :base_layout => nil)
8
- t.valid?.should == false
9
- end
10
- it "should require a page_part" do
11
- t = Factory.build(:spud_template, :page_parts => nil)
12
- t.valid?.should == false
13
- end
14
- it "should require a name" do
15
- t = Factory.build(:spud_template, :name => nil)
16
- t.valid?.should == false
17
- end
18
- it "should require a unique name" do
19
- t = Factory.build(:spud_template, :name => "test")
20
- t.save.should == true
21
- t = Factory.build(:spud_template, :name => "test")
22
- t.valid?.should == false
23
- end
24
- it "should not destroy pages on destroy" do
25
- t = Factory.build(:spud_template)
26
- t.save
27
- p = Factory.build(:spud_page,:id => 1,:spud_template => t)
28
- p.save
29
- t.destroy
30
- page = SpudPage.find(1)
31
- page.should == page
32
- end
33
- end
34
- end