spree_static_content 0.30.0.beta1

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.
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ .DS_Store
2
+ nbproject
@@ -0,0 +1,7 @@
1
+ h2. Contributors list - Thanks guys!
2
+
3
+ |Maxim Filatov|http://github.com/Bregor|
4
+ |Marcin Raczkowski|http://github.com/swistak|
5
+ |Roman Smirnov|http://github.com/romul|
6
+ |Eliot Sykes|http://github.com/eliotsykes|
7
+ |Oliver Azevedo Barnes|http://github.com/oliverbarnes|
data/README.rdoc ADDED
@@ -0,0 +1,33 @@
1
+ = Static Content
2
+
3
+ Good, clean content management of pages for Spree. You can use this to:
4
+
5
+ - Add and manage static pages such as an 'About' page.
6
+ - Show a static page instead of existing dynamic pages such as the home page,
7
+ products pages, and taxon pages.
8
+
9
+ To override a dynamic page, use the path of that dynamic page as the slug when
10
+ you create your page in the Spree Administration area, including the
11
+ leading slash. For example:
12
+
13
+ - to override the home page, use a path of '/' (without quotes).
14
+ - to override a product page, use its path, e.g. '/products/apache-baseball-jersey' (without quotes).
15
+
16
+ The dynamic page can be made available again if you delete the static page or change its slug.
17
+
18
+ Create your own copy of the app/views/content/show.html.erb template in your site
19
+ extension to change the layout of the static pages.
20
+
21
+ === Example to use the static pages inside a menu
22
+ <ul>
23
+ <% for page in Page.header_links do %>
24
+ <li><%= link_to page.title, page.link %></li>
25
+ <% end %>
26
+ </ul>
27
+
28
+ == Installation
29
+
30
+ 1. Add `gem "spree_static_content"` to your Gemfile
31
+ 1. Run `bundle install`
32
+ 1. Run `rails g spree_static_content:install`
33
+ 1. Run `rake db:migrate`
data/Rakefile ADDED
@@ -0,0 +1,111 @@
1
+ # encoding: utf-8
2
+ require 'rubygems'
3
+ begin
4
+ require 'jeweler'
5
+ rescue LoadError
6
+ puts "Jeweler not available. Install it with: sudo gem install jeweler"
7
+ exit 1
8
+ end
9
+ #gem 'rdoc', '= 2.2'
10
+ require 'rdoc'
11
+ require 'rake'
12
+ require 'rake/testtask'
13
+ require 'rake/rdoctask'
14
+ require 'rake/packagetask'
15
+ require 'rake/gempackagetask'
16
+
17
+ Jeweler::Tasks.new do |s|
18
+ s.name = "spree_static_content"
19
+ s.summary = "Extention to manage the static pages for your Spree shop."
20
+ s.description = s.summary
21
+ #s.email = ""
22
+ s.homepage = "http://github.com/spree/spree-static-content"
23
+ s.authors = ["Peter Berkenbosch", "Roman Smirnov"]
24
+ s.add_dependency 'spree_core', ['>= 0.30.0.beta1']
25
+ #s.has_rdoc = false
26
+ #s.extra_rdoc_files = [ "README.rdoc"]
27
+ #s.rdoc_options = ["--main", "README.rdoc", "--inline-source", "--line-numbers"]
28
+ #s.test_files = Dir['test/**/*.{yml,rb}']
29
+ end
30
+ Jeweler::GemcutterTasks.new
31
+
32
+
33
+ require 'spec/rake/spectask'
34
+ # require 'spec/translator'
35
+
36
+ extension_root = File.expand_path(File.dirname(__FILE__))
37
+
38
+ task :default => :spec
39
+ task :stats => "spec:statsetup"
40
+
41
+ desc "Run all specs in spec directory"
42
+ Spec::Rake::SpecTask.new(:spec) do |t|
43
+ t.spec_opts = ['--options', "\"#{extension_root}/spec/spec.opts\""]
44
+ t.spec_files = FileList['spec/**/*_spec.rb']
45
+ end
46
+
47
+ namespace :spec do
48
+ desc "Run all specs in spec directory with RCov"
49
+ Spec::Rake::SpecTask.new(:rcov) do |t|
50
+ t.spec_opts = ['--options', "\"#{extension_root}/spec/spec.opts\""]
51
+ t.spec_files = FileList['spec/**/*_spec.rb']
52
+ t.rcov = true
53
+ t.rcov_opts = ['--exclude', 'spec', '--rails']
54
+ end
55
+
56
+ desc "Print Specdoc for all specs"
57
+ Spec::Rake::SpecTask.new(:doc) do |t|
58
+ t.spec_opts = ["--format", "specdoc", "--dry-run"]
59
+ t.spec_files = FileList['spec/**/*_spec.rb']
60
+ end
61
+
62
+ [:models, :controllers, :views, :helpers].each do |sub|
63
+ desc "Run the specs under spec/#{sub}"
64
+ Spec::Rake::SpecTask.new(sub) do |t|
65
+ t.spec_opts = ['--options', "\"#{extension_root}/spec/spec.opts\""]
66
+ t.spec_files = FileList["spec/#{sub}/**/*_spec.rb"]
67
+ end
68
+ end
69
+
70
+ # Hopefully no one has written their extensions in pre-0.9 style
71
+ # desc "Translate specs from pre-0.9 to 0.9 style"
72
+ # task :translate do
73
+ # translator = ::Spec::Translator.new
74
+ # dir = RAILS_ROOT + '/spec'
75
+ # translator.translate(dir, dir)
76
+ # end
77
+
78
+ # Setup specs for stats
79
+ task :statsetup do
80
+ require 'code_statistics'
81
+ ::STATS_DIRECTORIES << %w(Model\ specs spec/models)
82
+ ::STATS_DIRECTORIES << %w(View\ specs spec/views)
83
+ ::STATS_DIRECTORIES << %w(Controller\ specs spec/controllers)
84
+ ::STATS_DIRECTORIES << %w(Helper\ specs spec/views)
85
+ ::CodeStatistics::TEST_TYPES << "Model specs"
86
+ ::CodeStatistics::TEST_TYPES << "View specs"
87
+ ::CodeStatistics::TEST_TYPES << "Controller specs"
88
+ ::CodeStatistics::TEST_TYPES << "Helper specs"
89
+ ::STATS_DIRECTORIES.delete_if {|a| a[0] =~ /test/}
90
+ end
91
+ end
92
+
93
+ desc 'Generate documentation for the static_content extension.'
94
+ Rake::RDocTask.new(:rdoc) do |rdoc|
95
+ rdoc.rdoc_dir = 'rdoc'
96
+ rdoc.title = 'StaticContentExtension'
97
+ rdoc.options << '--line-numbers' << '--inline-source'
98
+ rdoc.rdoc_files.include('README')
99
+ rdoc.rdoc_files.include('lib/**/*.rb')
100
+ end
101
+
102
+ # For extensions that are in transition
103
+ desc 'Test the static_content extension.'
104
+ Rake::TestTask.new(:test) do |t|
105
+ t.libs << 'lib'
106
+ t.pattern = 'test/**/*_test.rb'
107
+ t.verbose = true
108
+ end
109
+
110
+ # Load any custom rakefiles for extension
111
+ Dir[File.dirname(__FILE__) + '/tasks/*.rake'].sort.each { |f| require f }
@@ -0,0 +1,21 @@
1
+ class Admin::PagesController < Admin::BaseController
2
+ resource_controller
3
+
4
+ update.response do |wants|
5
+ wants.html { redirect_to collection_url }
6
+ end
7
+
8
+ update.after do
9
+ expire_page :controller => 'static_content', :action => 'show', :path => @page.slug
10
+ Rails.cache.delete('page_not_exist/'+@page.slug)
11
+ end
12
+
13
+ create.response do |wants|
14
+ wants.html { redirect_to collection_url }
15
+ end
16
+
17
+ create.after do
18
+ Rails.cache.delete('page_not_exist/'+@page.slug)
19
+ end
20
+
21
+ end
@@ -0,0 +1,25 @@
1
+ class StaticContentController < Spree::BaseController
2
+ caches_action :show
3
+
4
+ def show
5
+ path = case params[:path]
6
+ when Array
7
+ '/' + params[:path].join("/")
8
+ when String
9
+ params[:path]
10
+ when nil
11
+ request.path
12
+ end
13
+
14
+ unless @page = Page.visible.find_by_slug(path)
15
+ render :file => "#{RAILS_ROOT}/public/404.html", :layout => false, :status => 404
16
+ end
17
+ end
18
+
19
+ private
20
+
21
+ def accurate_title
22
+ @page ? @page.title : nil
23
+ end
24
+ end
25
+
@@ -0,0 +1,50 @@
1
+ class Page < ActiveRecord::Base
2
+ default_scope :order => "position ASC"
3
+
4
+ validates_presence_of :title
5
+ validates_presence_of [:slug, :body], :if => :not_using_foreign_link?
6
+
7
+ scope :header_links, where(["show_in_header = ?", true])
8
+ scope :footer_links, where(["show_in_footer = ?", true])
9
+ scope :sidebar_links, where(["show_in_sidebar = ?", true])
10
+ scope :visible, where(:visible => true)
11
+
12
+ before_save :update_positions_and_slug
13
+
14
+ def initialize(*args)
15
+ super(*args)
16
+ last_page = Page.last
17
+ self.position = last_page ? last_page.position + 1 : 0
18
+ end
19
+
20
+ def link
21
+ foreign_link.blank? ? slug_link : foreign_link
22
+ end
23
+
24
+ private
25
+
26
+ def update_positions_and_slug
27
+ unless new_record?
28
+ return unless prev_position = Page.find(self.id).position
29
+ if prev_position > self.position
30
+ Page.update_all("position = position + 1", ["? <= position AND position < ?", self.position, prev_position])
31
+ elsif prev_position < self.position
32
+ Page.update_all("position = position - 1", ["? < position AND position <= ?", prev_position, self.position])
33
+ end
34
+ end
35
+
36
+ self.slug = slug_link
37
+ end
38
+
39
+ def not_using_foreign_link?
40
+ foreign_link.blank?
41
+ end
42
+
43
+ def slug_link
44
+ ensure_slash_prefix slug
45
+ end
46
+
47
+ def ensure_slash_prefix(str)
48
+ str.index('/') == 0 ? str : '/' + str
49
+ end
50
+ end
@@ -0,0 +1,77 @@
1
+ <% content_for :head do %>
2
+
3
+ <%= javascript_include_tag 'wymeditor/jquery.wymeditor.js' %>
4
+
5
+ <script type="text/javascript" charset="utf-8">
6
+
7
+ var $j = jQuery.noConflict();
8
+ $j(function() {
9
+ $j('.wymeditor').wymeditor({
10
+ xhtmlParser: 'xhtml_parser.js',
11
+ cssParser: 'wym_css_parser.js',
12
+ stylesheet: '/stylesheets/static.css?v='+Math.random(),
13
+ containersItems: [
14
+ {'name': 'P', 'title': 'Paragraph', 'css': 'wym_containers_p'},
15
+ {'name': 'H1', 'title': 'Heading_1', 'css': 'wym_containers_h1'},
16
+ {'name': 'H2', 'title': 'Heading_2', 'css': 'wym_containers_h2'},
17
+ {'name': 'H3', 'title': 'Heading_3', 'css': 'wym_containers_h3'},
18
+ {'name': 'PRE', 'title': 'Preformatted', 'css': 'wym_containers_pre'},
19
+ {'name': 'BLOCKQUOTE', 'title': 'Blockquote', 'css': 'wym_containers_blockquote'},
20
+ ],
21
+ lang: '<%= I18n.locale.to_s.split("-").first %>'
22
+ });
23
+ });
24
+
25
+ </script>
26
+ <% end %>
27
+
28
+ <table class="admin-report" width="545">
29
+ <tr>
30
+ <td valign="top"><%=t("ext_static_content_title")%>:</td>
31
+ <td><%= f.text_field :title, {"style" => "width:500px"} %></td>
32
+ </tr>
33
+ <tr>
34
+ <td valign="top"><%=t("ext_static_content_slug")%>:</td>
35
+ <td><%= f.text_field :slug, {"style" => "width:500px"} %></td>
36
+ </tr>
37
+ <tr>
38
+ <td valign="top"><%=t("ext_static_content_body")%>:</td>
39
+ <td><%= f.text_area :body, {"style" => "width:500px", "class"=> "wymeditor"} %> </td>
40
+ </tr>
41
+ <tr>
42
+ <td valign="top"><%=t("ext_static_content_foreign_link")%>:</td>
43
+ <td><%= f.text_field :foreign_link, {"style" => "width:500px"} %></td>
44
+ </tr>
45
+ <tr>
46
+ <td valign="top"><%=t("ext_static_content_meta_keywords")%>:</td>
47
+ <td><%= f.text_field :meta_keywords, {"style" => "width:500px"} %></td>
48
+ </tr>
49
+ <tr>
50
+ <td valign="top"><%=t("ext_static_content_meta_description")%>:</td>
51
+ <td><%= f.text_field :meta_description, {"style" => "width:500px"} %></td>
52
+ </tr>
53
+ <tr>
54
+ <td valign="top"><%=t("ext_static_content_show_in_sidebar")%>:</td>
55
+ <td><%= f.check_box :show_in_sidebar %></td>
56
+ </tr>
57
+ <tr>
58
+ <td valign="top"><%=t("ext_static_content_show_in_header")%>:</td>
59
+ <td><%= f.check_box :show_in_header %></td>
60
+ </tr>
61
+ <tr>
62
+ <td valign="top"><%=t("ext_static_content_show_in_footer")%>:</td>
63
+ <td><%= f.check_box :show_in_footer %></td>
64
+ </tr>
65
+ <tr>
66
+ <td valign="top"><%=t("ext_static_content_position")%>:</td>
67
+ <td><%= f.text_field :position %></td>
68
+ </tr>
69
+ <tr>
70
+ <td valign="top"><%=t("ext_static_content_layout")%>:</td>
71
+ <td><%= f.text_field :layout %></td>
72
+ </tr>
73
+ <tr>
74
+ <td valign="top"><%=t("ext_static_content_visible")%>:</td>
75
+ <td><%= f.check_box :visible %></td>
76
+ </tr>
77
+ </table>
@@ -0,0 +1,12 @@
1
+ <%= render :partial => 'admin/shared/configuration_menu' %>
2
+
3
+ <h1><%= t("ext_static_content_editing_page") %></h1>
4
+ <%= render "shared/error_messages", :target => @page %>
5
+
6
+ <% form_for(:page, :url => object_url, :html => { :method => :put }) do |f| -%>
7
+ <%= render :partial => "form", :locals => { :f => f } %>
8
+ <p class="form-buttons">
9
+ <%= button t("actions.update"), nil, 'submit', {"class" => "wymupdate"} %>
10
+ <%= t("or") %> <%= link_to t("actions.cancel"), collection_url %>
11
+ </p>
12
+ <% end %>
@@ -0,0 +1,40 @@
1
+ <%= render :partial => 'admin/shared/configuration_menu' %>
2
+
3
+ <div class='toolbar'>
4
+ <ul class='actions'>
5
+ <li id="new_product_link">
6
+ <%= button_link_to t("ext_static_content_new_page"), new_object_url, {:icon => 'add'} %>
7
+ </li>
8
+ </ul>
9
+ <br class='clear' />
10
+ </div>
11
+
12
+ <h1><%=t("ext_static_content_static_pages") %></h1>
13
+
14
+ <table class="index">
15
+ <tr>
16
+ <th><%=t("ext_static_content_title")%></th>
17
+ <th><%=t("ext_static_content_link")%></th>
18
+ <th><%=t("ext_static_content_visible")%></th>
19
+ <th><%=t("action")%></th>
20
+ </tr>
21
+ <tbody>
22
+ <% @pages.each do |page| %>
23
+ <tr class="<%= cycle('even', 'odd') %>" id="<%= dom_id page %>">
24
+ <td>
25
+ <%= page.title %>
26
+ </td>
27
+ <td>
28
+ <%= link_to page.link, page.link %>
29
+ </td>
30
+ <td>
31
+ <%= page.visible %>
32
+ </td>
33
+ <td>
34
+ <%= link_to_edit page %> &nbsp;
35
+ <%= link_to_delete page %>
36
+ </td>
37
+ </tr>
38
+ <% end %>
39
+ </tbody>
40
+ </table>
@@ -0,0 +1,12 @@
1
+ <%= render :partial => 'admin/shared/configuration_menu' %>
2
+
3
+ <h1><%= t("ext_static_content_new_page") %></h1>
4
+ <%= render "shared/error_messages", :target => @page %>
5
+
6
+ <% form_for(:page, :url => collection_url) do |f| %>
7
+ <%= render :partial => "form", :locals => { :f => f } %>
8
+ <p class="form-buttons">
9
+ <%= button t("actions.create"), nil, 'submit', {"class" => "wymupdate"} %>
10
+ <%= t("or") %> <%= link_to t("actions.cancel"), collection_url %>
11
+ </p>
12
+ <% end %>
@@ -0,0 +1,18 @@
1
+ <% content_for :head do -%>
2
+ <meta name="title" content="<%=@page.title%>">
3
+ <% if @page.attribute_present? :meta_keywords -%>
4
+ <meta name="keywords" content="<%=@page.meta_keywords%>">
5
+ <% end -%>
6
+ <% if @page.attribute_present? :meta_description -%>
7
+ <meta name="description" content="<%=@page.meta_description%>">
8
+ <% end -%>
9
+ <% end -%>
10
+ <% content_for :sidebar do %>
11
+ <% if "products" == @current_controller && @taxon %>
12
+ <%= render :partial => "shared/filters" %>
13
+ <% else %>
14
+ <%= render :partial => "shared/taxonomies" %>
15
+ <% end %>
16
+ <% end %>
17
+ <h1><%= @page.title %></h1>
18
+ <%= raw @page.body %>
@@ -0,0 +1,22 @@
1
+ ---
2
+ en-GB:
3
+ pages: Pages
4
+ ext_static_content_static_pages: Static pages
5
+ ext_static_content_static_pages_desc: Manage static page with WYSIWYG editor.
6
+ ext_static_content_title: Title
7
+ ext_static_content_slug: Slug
8
+ ext_static_content_body: Body
9
+ ext_static_content_new_page: New page
10
+ ext_static_content_editing_page: Editing page
11
+ ext_static_content_foreign_link: Foreign link (URL)
12
+ ext_static_content_show_in_sidebar: Show in sidebar
13
+ ext_static_content_show_in_header: Show in header
14
+ ext_static_content_show_in_footer: Show in footer
15
+ ext_static_content_position: Position
16
+ ext_static_content_visible: Visible
17
+ ext_static_content_confirm_delete: Are you sure?
18
+ ext_static_content_link: Link
19
+ ext_static_content_meta_title: Meta Title
20
+ ext_static_content_meta_keywords: Meta Keywords
21
+ ext_static_content_meta_description: Meta Description
22
+ ext_static_content_layout: Layout
@@ -0,0 +1,17 @@
1
+ ---
2
+ es-ES:
3
+ pages: Pages
4
+ ext_static_content_static_pages: Páginas estáticas
5
+ ext_static_content_static_pages_desc: Administrar página estática con el editor WYSIWYG.
6
+ ext_static_content_title: Título
7
+ ext_static_content_slug: Slug
8
+ ext_static_content_body: Cuerpo
9
+ ext_static_content_new_page: Nueva página
10
+ ext_static_content_editing_page: Edición de página
11
+ ext_static_content_foreign_link: Enlace externo (URL)
12
+ ext_static_content_show_in_header: Mostrar en la cabecera
13
+ ext_static_content_show_in_footer: Mostrar en el pié de página
14
+ ext_static_content_position: Posición
15
+ ext_static_content_visible: Visible
16
+ ext_static_content_confirm_delete: ¿ Estás seguro ?
17
+ ext_static_content_link: Enlace
@@ -0,0 +1,22 @@
1
+ ---
2
+ nl-BE:
3
+ pages: Statische pagina's
4
+ ext_static_content_static_pages: Statische pagina's
5
+ ext_static_content_static_pages_desc: Beheer statische pagina's met een WYSIWYG editor.
6
+ ext_static_content_title: Titel
7
+ ext_static_content_slug: Slug
8
+ ext_static_content_body: Body
9
+ ext_static_content_new_page: Nieuwe pagina
10
+ ext_static_content_editing_page: Pagina bewerken
11
+ ext_static_content_foreign_link: Externe link (URL)
12
+ ext_static_content_show_in_header: Toon in header
13
+ ext_static_content_show_in_footer: Toon in footer
14
+ ext_static_content_position: Positie
15
+ ext_static_content_visible: Zichtbaar?
16
+ ext_static_content_confirm_delete: Weet u zeker dat u deze pagina wilt verwijderen ?
17
+ ext_static_content_link: Link
18
+ ext_static_content_meta_title: Meta Titel
19
+ ext_static_content_meta_keywords: Meta Keywords
20
+ ext_static_content_meta_description: Meta Description
21
+ ext_static_content_layout: Layout
22
+ ext_static_content_show_in_sidebar: Toon in zijbalk?
@@ -0,0 +1,22 @@
1
+ ---
2
+ nl-NL:
3
+ pages: Statische pagina's
4
+ ext_static_content_static_pages: Statische pagina's
5
+ ext_static_content_static_pages_desc: Beheer statische pagina's met een WYSIWYG editor.
6
+ ext_static_content_title: Titel
7
+ ext_static_content_slug: Slug
8
+ ext_static_content_body: Body
9
+ ext_static_content_new_page: Nieuwe pagina
10
+ ext_static_content_editing_page: Pagina bewerken
11
+ ext_static_content_foreign_link: Externe link (URL)
12
+ ext_static_content_show_in_header: Toon in header
13
+ ext_static_content_show_in_footer: Toon in footer
14
+ ext_static_content_position: Positie
15
+ ext_static_content_visible: Zichtbaar?
16
+ ext_static_content_confirm_delete: Weet u zeker dat u deze pagina wilt verwijderen ?
17
+ ext_static_content_link: Link
18
+ ext_static_content_meta_title: Meta Titel
19
+ ext_static_content_meta_keywords: Meta Keywords
20
+ ext_static_content_meta_description: Meta Description
21
+ ext_static_content_layout: Layout
22
+ ext_static_content_show_in_sidebar: Toon in zijbalk?
@@ -0,0 +1,20 @@
1
+ ---
2
+ pl:
3
+ pages: Strony statyczne
4
+ ext_static_content_static_pages: Strony statyczne
5
+ ext_static_content_static_pages_desc: Zarządzaj stronami statycznymi.
6
+ ext_static_content_title: Tytuł
7
+ ext_static_content_slug: Skrót
8
+ ext_static_content_body: Zawartość
9
+ ext_static_content_new_page: Nowa strona
10
+ ext_static_content_editing_page: Edycja strony
11
+ ext_static_content_foreign_link: Odnośnik zewnętrzny
12
+ ext_static_content_show_in_header: Pokaż w nagłówku
13
+ ext_static_content_show_in_footer: Pokaż w stopce
14
+ ext_static_content_position: Pozycja
15
+ ext_static_content_visible: Widoczna
16
+ ext_static_content_confirm_delete: Jesteś pewien ?
17
+ ext_static_content_link: Odnośnik
18
+ ext_static_content_meta_title: Tytół (w nagłówku przeglądarki)
19
+ ext_static_content_meta_keywords: Słowa kluczowe (SEO)
20
+ ext_static_content_meta_description: Skrócony opis (SEO)
@@ -0,0 +1,14 @@
1
+ ---
2
+ pt-BR:
3
+ pages: Páginas
4
+ ext_static_content_static_pages: Páginas estáticas
5
+ ext_static_content_static_pages_desc: Administrar página estática com editor visual (WYSIWYG).
6
+ ext_static_content_title: Título
7
+ ext_static_content_slug: Slug
8
+ ext_static_content_body: Corpo
9
+ ext_static_content_new_page: Nova página
10
+ ext_static_content_editing_page: Editando página
11
+ ext_static_content_foreign_link: Link externo (URL)
12
+ ext_static_content_show_in_header: Mostrar no cabeçalho
13
+ ext_static_content_show_in_footer: Mostrar no rodapé
14
+ ext_static_content_position: Posição
@@ -0,0 +1,21 @@
1
+ ---
2
+ ru-RU:
3
+ pages: "Страницы"
4
+ ext_static_content_static_pages: "Статические страницы"
5
+ ext_static_content_static_pages_desc: "Управление статическими страницами"
6
+ ext_static_content_title: "Заголовок"
7
+ ext_static_content_slug: "Постоянная ссылка"
8
+ ext_static_content_body: "Основной текст"
9
+ ext_static_content_new_page: "Новая страница"
10
+ ext_static_content_editing_page: "Редактирование страницы"
11
+ ext_static_content_foreign_link: "Внешняя ссылка (URL)"
12
+ ext_static_content_show_in_header: "Отображать в верхнем меню"
13
+ ext_static_content_show_in_footer: "Отображать в нижнем меню"
14
+ ext_static_content_position: "Позиция в меню"
15
+ ext_static_content_visible: "Публиковать"
16
+ ext_static_content_confirm_delete: "Вы уверены, что хотите удалить страницу?"
17
+ ext_static_content_link: "Ссылка"
18
+ ext_static_content_meta_title: "Мета заголовок"
19
+ ext_static_content_meta_keywords: "Ключевые слова"
20
+ ext_static_content_meta_description: "Описание"
21
+ ext_static_content_layout: "Макет"
data/config/routes.rb ADDED
@@ -0,0 +1,9 @@
1
+ Rails.application.routes.draw do
2
+
3
+ namespace :admin do
4
+ resources :pages
5
+ end
6
+
7
+ match '/static/*path', :to => 'static_content#show', :via => :get, :as => 'static'
8
+
9
+ end
@@ -0,0 +1,5 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe Admin::PagesController do
4
+
5
+ end
@@ -0,0 +1,18 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe ContentController do
4
+
5
+ before(:each) do
6
+ @page = mock("page")
7
+
8
+ # Generally, prefer stub! over should_receive in setup.
9
+ @page.stub!(:slug).and_return('/test')
10
+ @page.stub!(:title).and_return('Testing 123')
11
+ @page.stub!(:body).and_return('This is a test... cooool')
12
+ end
13
+
14
+ it "should use the catch all route to place path in path variable" do
15
+ params_from(:get, "/foobar").should == {:controller => "content", :action => "show", :path=>["foobar"]}
16
+ end
17
+
18
+ end
@@ -0,0 +1,20 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe Page do
4
+ before(:each) do
5
+ @page = Page.create(
6
+ :title => 'test page',
7
+ :slug => 'test-page',
8
+ :body => 'this is a test page'
9
+ )
10
+ end
11
+
12
+ it "should be valid" do
13
+ @page.should be_valid
14
+ end
15
+
16
+ it "should add an / to the slug" do
17
+ @page.slug.should == "/test-page"
18
+ end
19
+
20
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1,3 @@
1
+ --colour
2
+ --format
3
+ progress
@@ -0,0 +1,28 @@
1
+ # This file is copied to ~/spec when you run 'ruby script/generate rspec'
2
+ # from the project root directory.
3
+ ENV["RAILS_ENV"] ||= 'test'
4
+ require File.expand_path("#{::Rails.root}/config/environment", __FILE__)
5
+ require 'rspec/rails'
6
+ require 'fabrication'
7
+
8
+ # Requires supporting files with custom matchers and macros, etc,
9
+ # in ./support/ and its subdirectories.
10
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
11
+
12
+ RSpec.configure do |config|
13
+ # == Mock Framework
14
+ #
15
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
16
+ #
17
+ # config.mock_with :mocha
18
+ # config.mock_with :flexmock
19
+ # config.mock_with :rr
20
+ config.mock_with :rspec
21
+
22
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
23
+
24
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
25
+ # examples within a transaction, comment the following line or assign false
26
+ # instead of true.
27
+ config.use_transactional_fixtures = true
28
+ end
metadata ADDED
@@ -0,0 +1,107 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spree_static_content
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: true
5
+ segments:
6
+ - 0
7
+ - 30
8
+ - 0
9
+ - beta1
10
+ version: 0.30.0.beta1
11
+ platform: ruby
12
+ authors:
13
+ - Peter Berkenbosch
14
+ - Roman Smirnov
15
+ autorequire:
16
+ bindir: bin
17
+ cert_chain: []
18
+
19
+ date: 2010-09-15 00:00:00 +04:00
20
+ default_executable:
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
23
+ name: spree_core
24
+ prerelease: false
25
+ requirement: &id001 !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ segments:
30
+ - 0
31
+ - 30
32
+ - 0
33
+ - beta1
34
+ version: 0.30.0.beta1
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ description: Extention to manage the static pages for your Spree shop.
38
+ email:
39
+ executables: []
40
+
41
+ extensions: []
42
+
43
+ extra_rdoc_files:
44
+ - README.rdoc
45
+ files:
46
+ - .gitignore
47
+ - CONTRIBUTORS.textile
48
+ - README.rdoc
49
+ - Rakefile
50
+ - app/controllers/admin/pages_controller.rb
51
+ - app/controllers/static_content_controller.rb
52
+ - app/models/page.rb
53
+ - app/views/admin/pages/_form.html.erb
54
+ - app/views/admin/pages/edit.html.erb
55
+ - app/views/admin/pages/index.html.erb
56
+ - app/views/admin/pages/new.html.erb
57
+ - app/views/static_content/show.html.erb
58
+ - config/locales/en-GB.yml
59
+ - config/locales/es-ES.yml
60
+ - config/locales/nl-BE.yml
61
+ - config/locales/nl-NL.yml
62
+ - config/locales/pl.yml
63
+ - config/locales/pt-BR.yml
64
+ - config/locales/ru-RU.yml
65
+ - config/routes.rb
66
+ - spec/controllers/admin/pages_controller_spec.rb
67
+ - spec/controllers/content_controller_spec.rb
68
+ - spec/models/page_spec.rb
69
+ - spec/spec.opts
70
+ - spec/spec_helper.rb
71
+ has_rdoc: true
72
+ homepage: http://github.com/spree/spree-static-content
73
+ licenses: []
74
+
75
+ post_install_message:
76
+ rdoc_options:
77
+ - --charset=UTF-8
78
+ require_paths:
79
+ - lib
80
+ required_ruby_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ segments:
85
+ - 0
86
+ version: "0"
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">"
90
+ - !ruby/object:Gem::Version
91
+ segments:
92
+ - 1
93
+ - 3
94
+ - 1
95
+ version: 1.3.1
96
+ requirements: []
97
+
98
+ rubyforge_project:
99
+ rubygems_version: 1.3.6
100
+ signing_key:
101
+ specification_version: 3
102
+ summary: Extention to manage the static pages for your Spree shop.
103
+ test_files:
104
+ - spec/models/page_spec.rb
105
+ - spec/spec_helper.rb
106
+ - spec/controllers/content_controller_spec.rb
107
+ - spec/controllers/admin/pages_controller_spec.rb