tb_cms 0.9.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/MIT-LICENSE +20 -0
- data/README.markdown +110 -0
- data/Rakefile +28 -0
- data/app/assets/images/spud/admin/menus_thumb.png +0 -0
- data/app/assets/images/spud/admin/menus_thumb@2x.png +0 -0
- data/app/assets/images/spud/admin/pages_thumb.png +0 -0
- data/app/assets/images/spud/admin/snippets_thumb.png +0 -0
- data/app/assets/images/spud/admin/snippets_thumb@2x.png +0 -0
- data/app/assets/javascripts/spud/admin/cms/application.js +25 -0
- data/app/assets/javascripts/spud/admin/cms/menu_items.js +35 -0
- data/app/assets/javascripts/spud/admin/cms/pages.js +29 -0
- data/app/assets/javascripts/spud/admin/snippets.js +2 -0
- data/app/assets/stylesheets/spud/admin/cms/application.css +28 -0
- data/app/assets/stylesheets/spud/admin/cms.css +4 -0
- data/app/assets/stylesheets/spud/admin/snippets.css +4 -0
- data/app/controllers/pages_controller.rb +90 -0
- data/app/controllers/spud/admin/cms_controller.rb +3 -0
- data/app/controllers/spud/admin/menu_items_controller.rb +115 -0
- data/app/controllers/spud/admin/menus_controller.rb +55 -0
- data/app/controllers/spud/admin/pages_controller.rb +182 -0
- data/app/controllers/spud/admin/snippets_controller.rb +61 -0
- data/app/controllers/spud/cms/sitemaps_controller.rb +13 -0
- data/app/helpers/spud/cms/application_helper.rb +283 -0
- data/app/models/spud_menu.rb +9 -0
- data/app/models/spud_menu_item.rb +72 -0
- data/app/models/spud_page.rb +131 -0
- data/app/models/spud_page_liquid_tag.rb +4 -0
- data/app/models/spud_page_partial.rb +67 -0
- data/app/models/spud_page_partial_revision.rb +5 -0
- data/app/models/spud_snippet.rb +42 -0
- data/app/observers/page_sweeper.rb +48 -0
- data/app/observers/snippet_sweeper.rb +41 -0
- data/app/views/pages/not_found.html.erb +2 -0
- data/app/views/pages/show.html.erb +24 -0
- data/app/views/spud/admin/menu_items/_form.html.erb +51 -0
- data/app/views/spud/admin/menu_items/_menu_item_row.html.erb +22 -0
- data/app/views/spud/admin/menu_items/edit.html.erb +10 -0
- data/app/views/spud/admin/menu_items/index.html.erb +17 -0
- data/app/views/spud/admin/menu_items/new.html.erb +12 -0
- data/app/views/spud/admin/menus/_form.html.erb +11 -0
- data/app/views/spud/admin/menus/edit.html.erb +13 -0
- data/app/views/spud/admin/menus/index.html.erb +24 -0
- data/app/views/spud/admin/menus/new.html.erb +7 -0
- data/app/views/spud/admin/pages/_form.html.erb +95 -0
- data/app/views/spud/admin/pages/_page_partials_form.html.erb +18 -0
- data/app/views/spud/admin/pages/_page_row.html.erb +18 -0
- data/app/views/spud/admin/pages/edit.html.erb +32 -0
- data/app/views/spud/admin/pages/index.html.erb +13 -0
- data/app/views/spud/admin/pages/new.html.erb +34 -0
- data/app/views/spud/admin/pages/show.html.erb +20 -0
- data/app/views/spud/admin/snippets/_form.html.erb +8 -0
- data/app/views/spud/admin/snippets/edit.html.erb +7 -0
- data/app/views/spud/admin/snippets/index.html.erb +24 -0
- data/app/views/spud/admin/snippets/new.html.erb +7 -0
- data/app/views/spud/admin/templates/_form.html.erb +43 -0
- data/app/views/spud/admin/templates/edit.html.erb +9 -0
- data/app/views/spud/admin/templates/index.html.erb +17 -0
- data/app/views/spud/admin/templates/new.html.erb +11 -0
- data/app/views/spud/cms/sitemaps/show.xml.builder +16 -0
- data/config/boot.rb +6 -0
- data/config/routes.rb +29 -0
- data/db/migrate/20120101192412_create_spud_pages.rb +19 -0
- data/db/migrate/20120101193138_create_spud_menus.rb +10 -0
- data/db/migrate/20120101193255_create_spud_menu_items.rb +17 -0
- data/db/migrate/20120101194124_create_spud_templates.rb +11 -0
- data/db/migrate/20120103034659_create_spud_page_partials.rb +13 -0
- data/db/migrate/20120104194032_add_visibility_to_spud_pages.rb +6 -0
- data/db/migrate/20120107181337_add_menu_name_to_spud_menu_items.rb +5 -0
- data/db/migrate/20120111134754_add_use_custom_url_name_to_spud_pages.rb +5 -0
- data/db/migrate/20120118141852_add_notes_to_spud_pages.rb +5 -0
- data/db/migrate/20120126232428_add_menu_id_to_spud_menu_items.rb +7 -0
- data/db/migrate/20120128163601_add_classes_to_spud_menu_items.rb +6 -0
- data/db/migrate/20120329132314_add_site_id_to_spud_pages.rb +6 -0
- data/db/migrate/20120329132322_add_site_id_to_spud_templates.rb +6 -0
- data/db/migrate/20120329132330_add_site_id_to_spud_menus.rb +6 -0
- data/db/migrate/20120510195151_create_spud_page_partial_revisions.rb +13 -0
- data/db/migrate/20120911190030_add_symbol_name_to_spud_page_partials.rb +5 -0
- data/db/migrate/20120912121313_modify_site_id_for_spud_pages.rb +15 -0
- data/db/migrate/20121016233715_add_content_processed_to_spud_page_partials.rb +5 -0
- data/db/migrate/20121112151110_add_layout_to_spud_pages.rb +8 -0
- data/db/migrate/20121112212113_create_spud_page_liquid_tags.rb +11 -0
- data/db/migrate/20121119025608_create_spud_snippets.rb +17 -0
- data/db/migrate/20121119030136_change_liquid_tags_to_polymorphic.rb +17 -0
- data/lib/generators/spud/cms/template_generator.rb +17 -0
- data/lib/generators/spud/cms/templates/template.html.erb +28 -0
- data/lib/spud_cms/configuration.rb +27 -0
- data/lib/spud_cms/engine.rb +69 -0
- data/lib/spud_cms/liquid_snippet.rb +29 -0
- data/lib/spud_cms/page_route.rb +5 -0
- data/lib/spud_cms/template_parser.rb +126 -0
- data/lib/spud_cms/test_files.rb +25 -0
- data/lib/spud_cms/version.rb +5 -0
- data/lib/spud_cms.rb +10 -0
- data/lib/tasks/spud_cms_tasks.rake +4 -0
- data/spec/controllers/pages_controller_spec.rb +108 -0
- data/spec/controllers/spud/admin/cms_controller_spec.rb +11 -0
- data/spec/controllers/spud/admin/menu_items_controller_spec.rb +148 -0
- data/spec/controllers/spud/admin/menus_controller_spec.rb +121 -0
- data/spec/controllers/spud/admin/pages_controller_spec.rb +111 -0
- data/spec/controllers/spud/admin/snippets_controller_spec.rb +5 -0
- data/spec/controllers/spud/cms/sitemaps_controller_spec.rb +48 -0
- data/spec/dummy/README.rdoc +261 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +15 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/app/views/layouts/content_left.html.erb +0 -0
- data/spec/dummy/config/application.rb +59 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +15 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +37 -0
- data/spec/dummy/config/environments/production.rb +67 -0
- data/spec/dummy/config/environments/test.rb +37 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/inflections.rb +15 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +3 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/db/migrate/20120307002859_create_spud_admin_permissions.spud_core.rb +12 -0
- data/spec/dummy/db/migrate/20120307002860_create_spud_users.spud_core.rb +30 -0
- data/spec/dummy/db/migrate/20120307003559_create_spud_permalinks.spud_permalinks.rb +12 -0
- data/spec/dummy/db/migrate/20120610123555_add_time_zone_to_spud_user.spud_core.rb +7 -0
- data/spec/dummy/db/migrate/20120610123556_add_scope_to_spud_admin_permissions.spud_core.rb +7 -0
- data/spec/dummy/db/migrate/20120610123557_create_spud_user_settings.spud_core.rb +12 -0
- data/spec/dummy/db/migrate/20120610123615_add_site_id_to_spud_permalinks.spud_permalinks.rb +7 -0
- data/spec/dummy/db/schema.rb +171 -0
- data/spec/dummy/log/test.log +1874 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +25 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/helpers/spud/cms/application_helper_spec.rb +160 -0
- data/spec/models/spud_menu_item_spec.rb +31 -0
- data/spec/models/spud_page_liquid_tag_spec.rb +5 -0
- data/spec/models/spud_page_partial_revision_spec.rb +5 -0
- data/spec/models/spud_page_partial_spec.rb +44 -0
- data/spec/models/spud_page_spec.rb +163 -0
- data/spec/models/spud_snippet_spec.rb +5 -0
- data/spec/spec_helper.rb +40 -0
- data/spec/support/authlogic_helper.rb +2 -0
- 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'%> <%=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();"%> <%=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"%> <%=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..."%> <%=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'%> <%=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
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,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,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,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,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,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
|