tb_cms 0.9.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (150) hide show
  1. checksums.yaml +15 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.markdown +110 -0
  4. data/Rakefile +28 -0
  5. data/app/assets/images/spud/admin/menus_thumb.png +0 -0
  6. data/app/assets/images/spud/admin/menus_thumb@2x.png +0 -0
  7. data/app/assets/images/spud/admin/pages_thumb.png +0 -0
  8. data/app/assets/images/spud/admin/snippets_thumb.png +0 -0
  9. data/app/assets/images/spud/admin/snippets_thumb@2x.png +0 -0
  10. data/app/assets/javascripts/spud/admin/cms/application.js +25 -0
  11. data/app/assets/javascripts/spud/admin/cms/menu_items.js +35 -0
  12. data/app/assets/javascripts/spud/admin/cms/pages.js +29 -0
  13. data/app/assets/javascripts/spud/admin/snippets.js +2 -0
  14. data/app/assets/stylesheets/spud/admin/cms/application.css +28 -0
  15. data/app/assets/stylesheets/spud/admin/cms.css +4 -0
  16. data/app/assets/stylesheets/spud/admin/snippets.css +4 -0
  17. data/app/controllers/pages_controller.rb +90 -0
  18. data/app/controllers/spud/admin/cms_controller.rb +3 -0
  19. data/app/controllers/spud/admin/menu_items_controller.rb +115 -0
  20. data/app/controllers/spud/admin/menus_controller.rb +55 -0
  21. data/app/controllers/spud/admin/pages_controller.rb +182 -0
  22. data/app/controllers/spud/admin/snippets_controller.rb +61 -0
  23. data/app/controllers/spud/cms/sitemaps_controller.rb +13 -0
  24. data/app/helpers/spud/cms/application_helper.rb +283 -0
  25. data/app/models/spud_menu.rb +9 -0
  26. data/app/models/spud_menu_item.rb +72 -0
  27. data/app/models/spud_page.rb +131 -0
  28. data/app/models/spud_page_liquid_tag.rb +4 -0
  29. data/app/models/spud_page_partial.rb +67 -0
  30. data/app/models/spud_page_partial_revision.rb +5 -0
  31. data/app/models/spud_snippet.rb +42 -0
  32. data/app/observers/page_sweeper.rb +48 -0
  33. data/app/observers/snippet_sweeper.rb +41 -0
  34. data/app/views/pages/not_found.html.erb +2 -0
  35. data/app/views/pages/show.html.erb +24 -0
  36. data/app/views/spud/admin/menu_items/_form.html.erb +51 -0
  37. data/app/views/spud/admin/menu_items/_menu_item_row.html.erb +22 -0
  38. data/app/views/spud/admin/menu_items/edit.html.erb +10 -0
  39. data/app/views/spud/admin/menu_items/index.html.erb +17 -0
  40. data/app/views/spud/admin/menu_items/new.html.erb +12 -0
  41. data/app/views/spud/admin/menus/_form.html.erb +11 -0
  42. data/app/views/spud/admin/menus/edit.html.erb +13 -0
  43. data/app/views/spud/admin/menus/index.html.erb +24 -0
  44. data/app/views/spud/admin/menus/new.html.erb +7 -0
  45. data/app/views/spud/admin/pages/_form.html.erb +95 -0
  46. data/app/views/spud/admin/pages/_page_partials_form.html.erb +18 -0
  47. data/app/views/spud/admin/pages/_page_row.html.erb +18 -0
  48. data/app/views/spud/admin/pages/edit.html.erb +32 -0
  49. data/app/views/spud/admin/pages/index.html.erb +13 -0
  50. data/app/views/spud/admin/pages/new.html.erb +34 -0
  51. data/app/views/spud/admin/pages/show.html.erb +20 -0
  52. data/app/views/spud/admin/snippets/_form.html.erb +8 -0
  53. data/app/views/spud/admin/snippets/edit.html.erb +7 -0
  54. data/app/views/spud/admin/snippets/index.html.erb +24 -0
  55. data/app/views/spud/admin/snippets/new.html.erb +7 -0
  56. data/app/views/spud/admin/templates/_form.html.erb +43 -0
  57. data/app/views/spud/admin/templates/edit.html.erb +9 -0
  58. data/app/views/spud/admin/templates/index.html.erb +17 -0
  59. data/app/views/spud/admin/templates/new.html.erb +11 -0
  60. data/app/views/spud/cms/sitemaps/show.xml.builder +16 -0
  61. data/config/boot.rb +6 -0
  62. data/config/routes.rb +29 -0
  63. data/db/migrate/20120101192412_create_spud_pages.rb +19 -0
  64. data/db/migrate/20120101193138_create_spud_menus.rb +10 -0
  65. data/db/migrate/20120101193255_create_spud_menu_items.rb +17 -0
  66. data/db/migrate/20120101194124_create_spud_templates.rb +11 -0
  67. data/db/migrate/20120103034659_create_spud_page_partials.rb +13 -0
  68. data/db/migrate/20120104194032_add_visibility_to_spud_pages.rb +6 -0
  69. data/db/migrate/20120107181337_add_menu_name_to_spud_menu_items.rb +5 -0
  70. data/db/migrate/20120111134754_add_use_custom_url_name_to_spud_pages.rb +5 -0
  71. data/db/migrate/20120118141852_add_notes_to_spud_pages.rb +5 -0
  72. data/db/migrate/20120126232428_add_menu_id_to_spud_menu_items.rb +7 -0
  73. data/db/migrate/20120128163601_add_classes_to_spud_menu_items.rb +6 -0
  74. data/db/migrate/20120329132314_add_site_id_to_spud_pages.rb +6 -0
  75. data/db/migrate/20120329132322_add_site_id_to_spud_templates.rb +6 -0
  76. data/db/migrate/20120329132330_add_site_id_to_spud_menus.rb +6 -0
  77. data/db/migrate/20120510195151_create_spud_page_partial_revisions.rb +13 -0
  78. data/db/migrate/20120911190030_add_symbol_name_to_spud_page_partials.rb +5 -0
  79. data/db/migrate/20120912121313_modify_site_id_for_spud_pages.rb +15 -0
  80. data/db/migrate/20121016233715_add_content_processed_to_spud_page_partials.rb +5 -0
  81. data/db/migrate/20121112151110_add_layout_to_spud_pages.rb +8 -0
  82. data/db/migrate/20121112212113_create_spud_page_liquid_tags.rb +11 -0
  83. data/db/migrate/20121119025608_create_spud_snippets.rb +17 -0
  84. data/db/migrate/20121119030136_change_liquid_tags_to_polymorphic.rb +17 -0
  85. data/lib/generators/spud/cms/template_generator.rb +17 -0
  86. data/lib/generators/spud/cms/templates/template.html.erb +28 -0
  87. data/lib/spud_cms/configuration.rb +27 -0
  88. data/lib/spud_cms/engine.rb +69 -0
  89. data/lib/spud_cms/liquid_snippet.rb +29 -0
  90. data/lib/spud_cms/page_route.rb +5 -0
  91. data/lib/spud_cms/template_parser.rb +126 -0
  92. data/lib/spud_cms/test_files.rb +25 -0
  93. data/lib/spud_cms/version.rb +5 -0
  94. data/lib/spud_cms.rb +10 -0
  95. data/lib/tasks/spud_cms_tasks.rake +4 -0
  96. data/spec/controllers/pages_controller_spec.rb +108 -0
  97. data/spec/controllers/spud/admin/cms_controller_spec.rb +11 -0
  98. data/spec/controllers/spud/admin/menu_items_controller_spec.rb +148 -0
  99. data/spec/controllers/spud/admin/menus_controller_spec.rb +121 -0
  100. data/spec/controllers/spud/admin/pages_controller_spec.rb +111 -0
  101. data/spec/controllers/spud/admin/snippets_controller_spec.rb +5 -0
  102. data/spec/controllers/spud/cms/sitemaps_controller_spec.rb +48 -0
  103. data/spec/dummy/README.rdoc +261 -0
  104. data/spec/dummy/Rakefile +7 -0
  105. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  106. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  107. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  108. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  109. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  110. data/spec/dummy/app/views/layouts/content_left.html.erb +0 -0
  111. data/spec/dummy/config/application.rb +59 -0
  112. data/spec/dummy/config/boot.rb +10 -0
  113. data/spec/dummy/config/database.yml +15 -0
  114. data/spec/dummy/config/environment.rb +5 -0
  115. data/spec/dummy/config/environments/development.rb +37 -0
  116. data/spec/dummy/config/environments/production.rb +67 -0
  117. data/spec/dummy/config/environments/test.rb +37 -0
  118. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  119. data/spec/dummy/config/initializers/inflections.rb +15 -0
  120. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  121. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  122. data/spec/dummy/config/initializers/session_store.rb +8 -0
  123. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  124. data/spec/dummy/config/locales/en.yml +5 -0
  125. data/spec/dummy/config/routes.rb +3 -0
  126. data/spec/dummy/config.ru +4 -0
  127. data/spec/dummy/db/migrate/20120307002859_create_spud_admin_permissions.spud_core.rb +12 -0
  128. data/spec/dummy/db/migrate/20120307002860_create_spud_users.spud_core.rb +30 -0
  129. data/spec/dummy/db/migrate/20120307003559_create_spud_permalinks.spud_permalinks.rb +12 -0
  130. data/spec/dummy/db/migrate/20120610123555_add_time_zone_to_spud_user.spud_core.rb +7 -0
  131. data/spec/dummy/db/migrate/20120610123556_add_scope_to_spud_admin_permissions.spud_core.rb +7 -0
  132. data/spec/dummy/db/migrate/20120610123557_create_spud_user_settings.spud_core.rb +12 -0
  133. data/spec/dummy/db/migrate/20120610123615_add_site_id_to_spud_permalinks.spud_permalinks.rb +7 -0
  134. data/spec/dummy/db/schema.rb +171 -0
  135. data/spec/dummy/log/test.log +1874 -0
  136. data/spec/dummy/public/404.html +26 -0
  137. data/spec/dummy/public/422.html +26 -0
  138. data/spec/dummy/public/500.html +25 -0
  139. data/spec/dummy/public/favicon.ico +0 -0
  140. data/spec/dummy/script/rails +6 -0
  141. data/spec/helpers/spud/cms/application_helper_spec.rb +160 -0
  142. data/spec/models/spud_menu_item_spec.rb +31 -0
  143. data/spec/models/spud_page_liquid_tag_spec.rb +5 -0
  144. data/spec/models/spud_page_partial_revision_spec.rb +5 -0
  145. data/spec/models/spud_page_partial_spec.rb +44 -0
  146. data/spec/models/spud_page_spec.rb +163 -0
  147. data/spec/models/spud_snippet_spec.rb +5 -0
  148. data/spec/spec_helper.rb +40 -0
  149. data/spec/support/authlogic_helper.rb +2 -0
  150. metadata +427 -0
@@ -0,0 +1,18 @@
1
+ <div class="page_row">
2
+
3
+ <span class="row_meta"><%=prefix if defined? prefix%><%=link_to page.name,edit_spud_admin_page_path(:id => page.id)%></span>
4
+
5
+ <span class="edit_controls"><%=link_to "Preview",spud_admin_page_path(:id => page.id), :title => "Preview",:class => 'btn'%>&nbsp;&nbsp;<%=link_to "Remove",spud_admin_page_path(:id => page.id),:method => :delete,:class => 'btn btn-danger',:confirm => "Are you sure you want to remove this page?"%></span>
6
+ <br style="clear:both;"/>
7
+ </div>
8
+ <%if !page.spud_pages.all.blank?%>
9
+
10
+ <div class="left_guide">
11
+
12
+ <%page.spud_pages.each do |spud_page|%>
13
+ <%=render :partial => 'page_row',:locals => {:page => spud_page}%>
14
+ <%end%>
15
+
16
+ </div>
17
+
18
+ <%end%>
@@ -0,0 +1,32 @@
1
+ <%=form_for @page,:url => spud_admin_page_path(:id => @page.id),:html=>{:class=>"form-horizontal page_form",:target => "report" } do |f|%>
2
+ <%=render :partial => "form",:locals => {:f => f}%>
3
+ <div class="form-actions">
4
+ <%=f.submit "Save Page", :class=>"btn btn-primary btn-save",:onclick => "savePage();"%>&nbsp;<%=f.submit "Preview", :class=>"btn btn-info btn-preview"%> or <%=link_to "cancel",spud_admin_pages_path,:class => "btn"%>
5
+ </div>
6
+ <%end%>
7
+ <br />
8
+ <script type="text/javascript">
9
+ $(document).ready(function() {
10
+ $('input[type=submit].btn-preview').click(function(evt) {
11
+
12
+ $(this).button('reset')
13
+ $('#preview').val(1);
14
+ var form = $('form.page_form')[0];
15
+ form.onsubmit = function() {
16
+ window.open('about:blank','preview_window','width=500,height=400')
17
+ };
18
+ form.target = 'preview_window';
19
+
20
+ });
21
+
22
+ $('input[type=submit].btn-save').click(function(evt) {
23
+ $('#preview').val(0);
24
+ var form = $('form.page_form')[0];
25
+ form.onsubmit = null;
26
+ form.target = null;
27
+ });
28
+
29
+ });
30
+
31
+ </script>
32
+
@@ -0,0 +1,13 @@
1
+ <%=content_for :data_controls do%>
2
+ <%=link_to "New Page",new_spud_admin_page_path(),:class => "btn btn-primary",:title => "New Page"%>&nbsp;<%=link_to "Clear Cache",clear_spud_admin_pages_path(),:class => "btn btn-warning",:title => "Clear Page Cache" if Spud::Cms.cache_mode %>
3
+ <%end%>
4
+
5
+ <%=content_for :detail do%>
6
+ <div class="page_list">
7
+ <%@pages.each do |page|%>
8
+ <%=render :partial => "page_row",:locals => {:page => page}%>
9
+ <%end%>
10
+ <%=will_paginate @pages%>
11
+ </div>
12
+
13
+ <%end%>
@@ -0,0 +1,34 @@
1
+ <%=form_for @page,:url => spud_admin_pages_path(),:html=>{:class=>"form-horizontal page_form"} do |f|%>
2
+ <%=render :partial => "form",:locals => {:f => f}%>
3
+ <div class="form-actions">
4
+ <%=f.submit "Create Page", :class=>"btn btn-primary form-btn btn-save","data-loading-text"=>"Saving..."%>&nbsp;<%=f.submit "Preview", :class=>"btn btn-primary btn-preview"%> or <%=link_to "cancel",spud_admin_pages_path,:class => "btn"%>
5
+ </div>
6
+
7
+ <%end%>
8
+
9
+
10
+
11
+ <script type="text/javascript">
12
+ $(document).ready(function() {
13
+ $('input[type=submit].btn-preview').click(function(evt) {
14
+
15
+ $(this).button('reset')
16
+ $('#preview').val(1);
17
+ var form = $('form.page_form')[0];
18
+ form.onsubmit = function() {
19
+ window.open('about:blank','preview_window','width=500,height=400')
20
+ };
21
+ form.target = 'preview_window';
22
+
23
+ });
24
+
25
+ $('input[type=submit].btn-save').click(function(evt) {
26
+ $('#preview').val(0);
27
+ var form = $('form.page_form')[0];
28
+ form.onsubmit = null;
29
+ form.target = null;
30
+ });
31
+
32
+ });
33
+
34
+ </script>
@@ -0,0 +1,20 @@
1
+
2
+ <%=content_for :head do%>
3
+ <meta name="description" content="<%=@page.meta_description%>" />
4
+
5
+ <meta name="keywords" content="<%=@page.meta_keywords%>" />
6
+ <%end%>
7
+
8
+ <%if !@inline.blank?%>
9
+ <%=render :inline => @inline%>
10
+ <%end%>
11
+ <%@page.spud_page_partials.each do |page_partial|%>
12
+
13
+ <%if(page_partial.name.downcase == 'body' && Spud::Cms.yield_body_as_content_block == false)%>
14
+ <%=page_partial.postprocess_content.html_safe%>
15
+ <%else%>
16
+ <%=content_for page_partial.name.parameterize.underscore.to_sym do%>
17
+ <%=page_partial.postprocess_content.html_safe%>
18
+ <%end%>
19
+ <%end%>
20
+ <%end%>
@@ -0,0 +1,8 @@
1
+ <fieldset>
2
+ <%= f.label :name, :required=>true,:style =>"display:none;" %>
3
+ <%= f.text_field :name, :class => "full-width",:placeholder=>"Enter title here" %>
4
+ </fieldset>
5
+ <br/>
6
+ <div>
7
+ <%= f.text_area :content,:style => "width:100%;", :class => 'tinymce full-width' %>
8
+ </div>
@@ -0,0 +1,7 @@
1
+ <%=form_for @snippet,:url => spud_admin_snippet_path(@snippet),:html=>{:class=>"form-horizontal"} do |f|%>
2
+ <%=render :partial => "form",:locals => {:f => f}%>
3
+ <div class="form-actions">
4
+ <%=f.submit "Save Snippet", :class=>"btn btn-primary"%> or <%=link_to "cancel",spud_admin_snippets_path,:class => "btn"%>
5
+ </div>
6
+
7
+ <%end%>
@@ -0,0 +1,24 @@
1
+ <%=content_for :data_controls do%>
2
+ <%=link_to "New Snippet",new_spud_admin_snippet_path(),:class => "btn btn-primary",:title => "New Snippet"%>
3
+ <%end%>
4
+ <%=content_for :detail do%>
5
+ <div class="page_list">
6
+ <%@snippets.each do |snippet|%>
7
+ <div class="page_row">
8
+
9
+ <span class="row_meta"><%=link_to snippet.name,edit_spud_admin_snippet_path(:id => snippet.id)%></span>
10
+
11
+ <span class="edit_controls">
12
+
13
+ <%=link_to "Remove",spud_admin_snippet_path(:id => snippet.id),:method => :delete,:class => 'btn btn-danger',:confirm => "Are you sure you want to remove this snippet?"%>
14
+ </span>
15
+ <br style="clear:both;"/>
16
+ </div>
17
+ <%end%>
18
+ <%=will_paginate @snippets%>
19
+
20
+ </div>
21
+
22
+
23
+
24
+ <%end%>
@@ -0,0 +1,7 @@
1
+ <%=form_for @snippet,:url => spud_admin_snippets_path,:html=>{:class=>"form-horizontal"} do |f|%>
2
+ <%=render :partial => "form",:locals => {:f => f}%>
3
+ <div class="form-actions">
4
+ <%=f.submit "Create Snippet", :class=>"btn btn-primary"%> or <%=link_to "cancel",spud_admin_snippets_path,:class => "btn"%>
5
+ </div>
6
+
7
+ <%end%>
@@ -0,0 +1,43 @@
1
+ <%=error_messages_for(f.object)%>
2
+ <fieldset>
3
+
4
+ <div class="control-group">
5
+ <%=f.label :name, :required=>true,:class=>"control-label"%>
6
+ <div class="controls">
7
+ <%=f.text_field :name,:title => "",:size=>40%>
8
+ </div>
9
+ </div>
10
+
11
+
12
+ <div class="control-group">
13
+ <%=f.label :base_layout, "Base Layout",:class=>"control-label"%>
14
+ <div class="controls">
15
+ <%=f.text_field :base_layout%>
16
+ </div>
17
+ </div>
18
+ <div class="control-group">
19
+ <%=f.label :content, "Content",:class=>"control-label"%>
20
+ <div class="controls">
21
+ <%=f.text_area :content, :rows => 20,:cols => 110%>
22
+ </div>
23
+ </div>
24
+ <div class="control-group">
25
+ <%=f.label :page_parts, "Page Parts",:class=>"control-label"%>
26
+ <div class="controls">
27
+ <%=f.text_field :page_parts%>
28
+ </div>
29
+ </div>
30
+
31
+
32
+
33
+ </fieldset>
34
+
35
+
36
+ <script type="text/javascript">
37
+ var editor = CodeMirror.fromTextArea(document.getElementById("spud_template_content"), {
38
+ lineNumbers: true,
39
+ mode: "application/x-ejs",
40
+ matchBrackets: true,
41
+ theme:'night'
42
+ });
43
+ </script>
@@ -0,0 +1,9 @@
1
+
2
+ <%=form_for @template,:url => spud_admin_template_path(:id => @template.id),:html=>{:class=>"form-horizontal"} do |f|%>
3
+ <%=render :partial => "form",:locals => {:f => f}%>
4
+ <div class="form-actions">
5
+ <%=f.submit "Save Template", :class=>"btn btn-primary"%> or <%=link_to "cancel",spud_admin_templates_path,:class => "btn"%>
6
+ </div>
7
+ <%end%>
8
+
9
+
@@ -0,0 +1,17 @@
1
+ <%=content_for :data_controls do%>
2
+ <%=link_to "New Template",new_spud_admin_template_path(),:class => "btn btn-primary",:title => "New Template"%>
3
+ <%end%>
4
+ <%=content_for :detail do%>
5
+ <div class="page_list">
6
+ <%@templates.each do |template|%>
7
+ <div class="page_row">
8
+ <span class="row_meta"><%=link_to template.name,edit_spud_admin_template_path(:id => template.id)%></span>
9
+
10
+ <span class="edit_controls"><%=link_to "Edit",edit_spud_admin_template_path(:id => template.id), :title => "Edit Template",:class => 'btn'%>&nbsp;&nbsp;<%=link_to "Remove",spud_admin_template_path(:id => template.id),:method => :delete,:class => 'btn btn-danger',:confirm => "Are you sure you want to remove this template?"%></span>
11
+ <br style="clear:both;"/>
12
+ </div>
13
+ <%end%>
14
+ <%=will_paginate @templates%>
15
+ </div>
16
+
17
+ <%end%>
@@ -0,0 +1,11 @@
1
+
2
+
3
+
4
+ <%=form_for @template,:url => spud_admin_templates_path(),:html=>{:class=>"form-horizontal"} do |f|%>
5
+ <%=render :partial => "form",:locals => {:f => f}%>
6
+ <div class="form-actions">
7
+ <%=f.submit "Create Template", :class=>"btn btn-primary"%> or <%=link_to "cancel",spud_admin_templates_path,:class => "btn"%>
8
+ </div>
9
+ <%end%>
10
+
11
+
@@ -0,0 +1,16 @@
1
+
2
+ xml.instruct! :xml, :version => '1.0', :encoding => 'UTF-8'
3
+
4
+ # create the urlset
5
+ xml.urlset :xmlns => 'http://www.sitemaps.org/schemas/sitemap/0.9' do
6
+ @pages.each do |page|
7
+ xml.url do
8
+ if page.url_name == Spud::Cms.root_page_name
9
+ xml.loc root_url()
10
+ else
11
+ xml.loc page_url(:id => page.url_name)
12
+ end
13
+ xml.lastmod page.updated_at.xmlschema
14
+ end
15
+ end
16
+ end
data/config/boot.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'rubygems'
2
+
3
+ # Set up gems listed in the Gemfile.
4
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
5
+
6
+ require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
data/config/routes.rb ADDED
@@ -0,0 +1,29 @@
1
+ Rails.application.routes.draw do
2
+ namespace :spud do
3
+ namespace :admin do
4
+ resources :pages do
5
+ get :page_parts, :on => :collection
6
+ get :clear, :on => :collection
7
+ member do
8
+ post 'preview'
9
+ end
10
+ end
11
+
12
+ resources :snippets
13
+
14
+ resources :menus do
15
+ resources :menu_items
16
+ end
17
+ resources :contacts
18
+ end
19
+ namespace :cms do
20
+ resource :sitemap,:only => "show"
21
+ end
22
+ end
23
+ root :to => 'pages#show'
24
+
25
+ # This is located in lib/spud_cms/page_route.rb to make sure it is loaded last
26
+ # match "*id", :controller => "pages",:action => "show", :as => "page"
27
+
28
+ end
29
+
@@ -0,0 +1,19 @@
1
+ class CreateSpudPages < ActiveRecord::Migration
2
+ def change
3
+ create_table :spud_pages do |t|
4
+ t.string :name
5
+ t.string :url_name
6
+ t.datetime :publish_at
7
+ t.integer :created_by
8
+ t.integer :updated_by
9
+ t.string :format,:default => "html"
10
+ t.integer :spud_page_id
11
+ t.text :meta_description
12
+ t.string :meta_keywords
13
+ t.integer :page_order
14
+ t.integer :template_id
15
+
16
+ t.timestamps
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,10 @@
1
+ class CreateSpudMenus < ActiveRecord::Migration
2
+ def change
3
+ create_table :spud_menus do |t|
4
+ t.string :name
5
+ t.text :description
6
+
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,17 @@
1
+ class CreateSpudMenuItems < ActiveRecord::Migration
2
+ def change
3
+ create_table :spud_menu_items do |t|
4
+ t.string :parent_type
5
+ t.integer :parent_id
6
+ t.integer :item_type
7
+ t.integer :spud_page_id
8
+ t.integer :menu_order,:default => 0
9
+ t.string :url
10
+
11
+ t.timestamps
12
+ end
13
+
14
+ add_index :spud_menu_items,[:parent_type,:parent_id]
15
+ add_index :spud_menu_items,[:menu_order]
16
+ end
17
+ end
@@ -0,0 +1,11 @@
1
+ class CreateSpudTemplates < ActiveRecord::Migration
2
+ def change
3
+ create_table :spud_templates do |t|
4
+ t.string :name
5
+ t.string :base_layout
6
+ t.text :content
7
+ t.text :page_parts # On top of Main
8
+ t.timestamps
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ class CreateSpudPagePartials < ActiveRecord::Migration
2
+ def change
3
+ create_table :spud_page_partials do |t|
4
+ t.integer :spud_page_id
5
+ t.string :name
6
+ t.text :content
7
+ t.string :format
8
+
9
+ t.timestamps
10
+ end
11
+ add_index :spud_page_partials,:spud_page_id
12
+ end
13
+ end
@@ -0,0 +1,6 @@
1
+ class AddVisibilityToSpudPages < ActiveRecord::Migration
2
+ def change
3
+ add_column :spud_pages, :visibility, :integer,:default => 0
4
+ add_column :spud_pages, :published, :boolean,:default => true
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ class AddMenuNameToSpudMenuItems < ActiveRecord::Migration
2
+ def change
3
+ add_column :spud_menu_items, :name, :string
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddUseCustomUrlNameToSpudPages < ActiveRecord::Migration
2
+ def change
3
+ add_column :spud_pages, :use_custom_url_name, :boolean,:default => false
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddNotesToSpudPages < ActiveRecord::Migration
2
+ def change
3
+ add_column :spud_pages, :notes, :text
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ class AddMenuIdToSpudMenuItems < ActiveRecord::Migration
2
+
3
+ def change
4
+ add_column :spud_menu_items, :spud_menu_id, :integer
5
+ add_index :spud_menu_items,:spud_menu_id
6
+ end
7
+ end
@@ -0,0 +1,6 @@
1
+ class AddClassesToSpudMenuItems < ActiveRecord::Migration
2
+ def change
3
+ add_column :spud_menu_items, :classes, :string
4
+
5
+ end
6
+ end
@@ -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
@@ -0,0 +1,13 @@
1
+ class CreateSpudPagePartialRevisions < ActiveRecord::Migration
2
+ def change
3
+ create_table :spud_page_partial_revisions do |t|
4
+ t.string :name
5
+ t.text :content
6
+ t.string :format
7
+ t.integer :spud_page_id
8
+ t.timestamps
9
+ end
10
+
11
+ add_index :spud_page_partial_revisions,[:spud_page_id,:name],:name => "revision_idx"
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ class AddSymbolNameToSpudPagePartials < ActiveRecord::Migration
2
+ def change
3
+ add_column :spud_page_partials, :symbol_name, :string
4
+ end
5
+ end
@@ -0,0 +1,15 @@
1
+ class ModifySiteIdForSpudPages < ActiveRecord::Migration
2
+ def up
3
+ change_column :spud_pages,:site_id,:integer,:default => 0,:null => false
4
+ change_column :spud_templates,:site_id,:integer,:default => 0,:null => false
5
+ change_column :spud_menus,:site_id,:integer,:default => 0,:null => false
6
+ SpudPage.where(:site_id => nil).each {|f| f.site_id = 0 ; f.save}
7
+ SpudMenu.where(:site_id => nil).each {|f| f.site_id = 0 ; f.save}
8
+ end
9
+
10
+ def down
11
+ change_column :spud_pages,:site_id,:integer,:default => nil,:null => true
12
+ change_column :spud_templates,:site_id,:integer,:default => nil,:null => true
13
+ change_column :spud_menus,:site_id,:integer,:default => nil,:null => true
14
+ end
15
+ end
@@ -0,0 +1,5 @@
1
+ class AddContentProcessedToSpudPagePartials < ActiveRecord::Migration
2
+ def change
3
+ add_column :spud_page_partials, :content_processed, :text
4
+ end
5
+ end
@@ -0,0 +1,8 @@
1
+ class AddLayoutToSpudPages < ActiveRecord::Migration
2
+ def change
3
+ add_column :spud_pages, :layout, :string
4
+
5
+ remove_column :spud_pages, :template_id
6
+ drop_table :spud_templates
7
+ end
8
+ end
@@ -0,0 +1,11 @@
1
+ class CreateSpudPageLiquidTags < ActiveRecord::Migration
2
+ def change
3
+ create_table :spud_page_liquid_tags do |t|
4
+ t.integer :spud_page_partial_id
5
+ t.string :tag_name
6
+ t.string :value
7
+ t.timestamps
8
+ end
9
+ add_index :spud_page_liquid_tags, [:tag_name,:value]
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ class CreateSpudSnippets < ActiveRecord::Migration
2
+ def change
3
+ create_table :spud_snippets do |t|
4
+ t.string :name
5
+ t.text :content
6
+ t.string :format
7
+ t.text :content_processed
8
+ t.integer :site_id, :default => 0
9
+ t.timestamps
10
+ end
11
+
12
+ add_index :spud_snippets, :site_id
13
+ add_index :spud_snippets, :name
14
+ end
15
+
16
+
17
+ end
@@ -0,0 +1,17 @@
1
+ class ChangeLiquidTagsToPolymorphic < ActiveRecord::Migration
2
+ def up
3
+ rename_column :spud_page_liquid_tags, :spud_page_partial_id, :attachment_id
4
+ add_column :spud_page_liquid_tags, :attachment_type, :string
5
+
6
+ add_index :spud_page_liquid_tags, [:attachment_type,:attachment_id]
7
+
8
+ SpudPageLiquidTag.all.each do |f|
9
+ f.update_attributes(:attachment_type => "SpudPagePartial")
10
+ end
11
+ end
12
+
13
+ def down
14
+ rename_column :spud_page_liquid_tags, :attachment_id, :spud_page_partial_id
15
+ remove_column :spud_page_liquid_tags, :attachment_type
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ require 'rails/generators/migration'
2
+
3
+ class Spud::Cms::TemplateGenerator < ::Rails::Generators::Base
4
+ desc "This generator creates a new spud cms layout file"
5
+ argument :template_name, :type => :string
6
+ argument :attributes, :type => :array, :default => [], :banner => "content_block content_block"
7
+
8
+ source_root File.expand_path('../templates', __FILE__)
9
+
10
+ def create_module
11
+ template "template.html.erb", "app/views/layouts/#{template_name.downcase.underscore}.html.erb"
12
+ end
13
+
14
+ private
15
+
16
+
17
+ end
@@ -0,0 +1,28 @@
1
+ <%%
2
+ #template_name: <%=template_name.humanize.titlecase%>
3
+ <%-attributes.each do |attribute|-%>
4
+ <%="#html: #{attribute.humanize.titlecase}\n"-%>
5
+ <%-end-%>
6
+ %>
7
+
8
+ <!DOCTYPE html>
9
+ <html>
10
+ <head>
11
+ <title><%%=content_for?(:title) ? yield(:title) : Spud::Core.site_name%></title>
12
+ <%%= stylesheet_link_tag "application", :media => "all" %>
13
+ <%%= javascript_include_tag "application" %>
14
+ <%%= csrf_meta_tags %>
15
+ <%%= yield :head%>
16
+ </head>
17
+ <body>
18
+
19
+ <%attributes.each do |attribute|%>
20
+ <%if(attribute.downcase == 'body')%>
21
+ <%%=yield%>
22
+ <%else%>
23
+ <%%=yield :<%=attribute.downcase.underscore%>%>
24
+ <%end%>
25
+ <%end%>
26
+
27
+ </body>
28
+ </html>
@@ -0,0 +1,27 @@
1
+ module Spud
2
+ module Cms
3
+ include ActiveSupport::Configurable
4
+
5
+ config_accessor :menus_enabled,:root_page_name,:yield_body_as_content_block,:default_page_layout,:enable_sitemap,:multisite_config,:max_revisions,:template_404, :cache_mode, :snippets_enabled
6
+ self.menus_enabled = true
7
+ self.snippets_enabled = true
8
+ self.root_page_name = "home"
9
+ self.default_page_layout = 'application'
10
+ self.yield_body_as_content_block = false
11
+ self.cache_mode = nil #Options :full_page, :action
12
+
13
+ self.enable_sitemap = true
14
+ self.max_revisions = 10
15
+ self.template_404 = 'not_found'
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
+
26
+ end
27
+ end