tb_cms 0.9.18

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 (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