solidus_static_content 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +21 -0
  5. data/Gemfile +13 -0
  6. data/Guardfile +9 -0
  7. data/LICENSE.md +26 -0
  8. data/README.md +105 -0
  9. data/Rakefile +15 -0
  10. data/app/assets/javascripts/spree/backend/spree_static_content.js +1 -0
  11. data/app/assets/javascripts/spree/frontend/spree_static_content.js +1 -0
  12. data/app/assets/stylesheets/spree/backend/spree_static_content.css +3 -0
  13. data/app/assets/stylesheets/spree/frontend/spree_static_content.css +7 -0
  14. data/app/controllers/spree/admin/pages_controller.rb +3 -0
  15. data/app/controllers/spree/static_content_controller.rb +20 -0
  16. data/app/helpers/spree/pages_helper.rb +6 -0
  17. data/app/models/spree/page.rb +54 -0
  18. data/app/overrides/pages_in_footer.rb +5 -0
  19. data/app/overrides/pages_in_header.rb +5 -0
  20. data/app/overrides/pages_in_menu.rb +5 -0
  21. data/app/overrides/pages_in_sidebar.rb +5 -0
  22. data/app/views/spree/admin/pages/_form.html.erb +98 -0
  23. data/app/views/spree/admin/pages/edit.html.erb +18 -0
  24. data/app/views/spree/admin/pages/index.html.erb +51 -0
  25. data/app/views/spree/admin/pages/new.html.erb +18 -0
  26. data/app/views/spree/static_content/_static_content_footer.html.erb +3 -0
  27. data/app/views/spree/static_content/_static_content_header.html.erb +1 -0
  28. data/app/views/spree/static_content/_static_content_list.html.erb +6 -0
  29. data/app/views/spree/static_content/_static_content_sidebar.html.erb +6 -0
  30. data/app/views/spree/static_content/show.html.erb +26 -0
  31. data/bin/rails +7 -0
  32. data/config/locales/de.yml +37 -0
  33. data/config/locales/en.yml +37 -0
  34. data/config/locales/es.yml +37 -0
  35. data/config/locales/et.yml +37 -0
  36. data/config/locales/fr.yml +37 -0
  37. data/config/locales/it.yml +37 -0
  38. data/config/locales/nl.yml +37 -0
  39. data/config/locales/pl.yml +39 -0
  40. data/config/locales/pt-BR.yml +37 -0
  41. data/config/locales/pt.yml +37 -0
  42. data/config/locales/ro.yml +39 -0
  43. data/config/locales/ru.yml +39 -0
  44. data/config/locales/sv.yml +37 -0
  45. data/config/routes.rb +8 -0
  46. data/db/migrate/20081216193152_create_pages.rb +15 -0
  47. data/db/migrate/20090625125735_extend_pages.rb +28 -0
  48. data/db/migrate/20090814113100_add_visible_to_pages.rb +17 -0
  49. data/db/migrate/20090814142845_add_default_true_to_visible_for_page.rb +8 -0
  50. data/db/migrate/20090829000527_add_index_for_page.rb +10 -0
  51. data/db/migrate/20091219021134_add_meta_fields_to_pages.rb +9 -0
  52. data/db/migrate/20100204105222_add_layout_to_pages.rb +9 -0
  53. data/db/migrate/20100323085528_add_show_in_sidebar_option_to_pages.rb +9 -0
  54. data/db/migrate/20110717103112_add_meta_title_to_page.rb +9 -0
  55. data/db/migrate/20120723144115_add_render_as_partial_for_layout_for_spree_pages.rb +13 -0
  56. data/db/migrate/20140926121757_add_pages_stores.rb +14 -0
  57. data/lib/generators/solidus_static_content/install/install_generator.rb +24 -0
  58. data/lib/solidus_static_content.rb +21 -0
  59. data/lib/spree_static_content/engine.rb +17 -0
  60. data/solidus_static_content.gemspec +32 -0
  61. data/spec/controllers/static_content_controller_spec.rb +37 -0
  62. data/spec/factories/page_factory.rb +18 -0
  63. data/spec/features/admin/pages_spec.rb +67 -0
  64. data/spec/features/static_content_spec.rb +53 -0
  65. data/spec/helpers/page_helper_spec.rb +14 -0
  66. data/spec/lib/spree_static.content_spec.rb +34 -0
  67. data/spec/models/page_spec.rb +46 -0
  68. data/spec/spec_helper.rb +50 -0
  69. metadata +294 -0
@@ -0,0 +1,37 @@
1
+ ---
2
+ pt-BR:
3
+ activerecord:
4
+ attributes:
5
+ spree/page:
6
+ body: Corpo
7
+ foreign_link: Link externo (URL)
8
+ show_in_header: Mostrar no cabeçalho
9
+ show_in_footer: Mostrar no rodapé
10
+ position: Posição
11
+ layout: Traçado
12
+ meta_description: "Meta Descrição"
13
+ meta_keywords: "Meta Palavras"
14
+ meta_title: "Meta Título"
15
+ render_layout_as_partial: "Renderização layout como parcial"
16
+ slug: Slug
17
+ title: Título
18
+ visible: Visível
19
+ show_in_sidebar: Mostrar na barra lateral
20
+ models:
21
+ spree/page:
22
+ few: Páginas
23
+ many: Páginas
24
+ one: Página
25
+ other: Páginas
26
+ spree:
27
+ admin:
28
+ tab:
29
+ pages: Páginas
30
+ back_to_static_pages_list: "Voltar à lista de páginas estáticas"
31
+ page: Página
32
+ pages: Páginas
33
+ static_content:
34
+ editing_page: "Editando página"
35
+ link: Link
36
+ new_page: "Nova página"
37
+ static_pages: "Páginas estáticas"
@@ -0,0 +1,37 @@
1
+ ---
2
+ pt:
3
+ activerecord:
4
+ attributes:
5
+ spree/page:
6
+ body: Corpo
7
+ foreign_link: "Link externo (URL)"
8
+ layout: Traçado
9
+ meta_description: "Meta Descrição"
10
+ meta_keywords: "Meta Palavras"
11
+ meta_title: "Meta Título"
12
+ position: Posição
13
+ render_layout_as_partial: "Renderização layout como parcial"
14
+ show_in_footer: "Mostrar no rodapé"
15
+ show_in_header: "Mostrar no cabeçalho"
16
+ show_in_sidebar: "Mostrar na barra lateral"
17
+ slug: Slug
18
+ title: Título
19
+ visible: Visível
20
+ models:
21
+ spree/page:
22
+ few: Páginas
23
+ many: Páginas
24
+ one: Página
25
+ other: Páginas
26
+ spree:
27
+ admin:
28
+ tab:
29
+ pages: Páginas
30
+ back_to_static_pages_list: "Voltar à lista de páginas estáticas"
31
+ page: Página
32
+ pages: Páginas
33
+ static_content:
34
+ editing_page: "Editar página"
35
+ link: Link
36
+ new_page: "Nova página"
37
+ static_pages: "Páginas estáticas"
@@ -0,0 +1,39 @@
1
+ ---
2
+ ro:
3
+ activerecord:
4
+ attributes:
5
+ spree/page:
6
+ title: Titlu
7
+ slug: Permalink
8
+ body: Content de bază
9
+ foreign_link: "Link extern (URL)"
10
+ show_in_header: "Arată în header"
11
+ show_in_footer: "Arată în blocul de jos"
12
+ show_in_sidebar: "Arată în bara laterală"
13
+ position: "Poziția în meniu"
14
+ visible: "Vizibilitate"
15
+ meta_keywords: "Cuvinte Cheie"
16
+ meta_description: "Descriere"
17
+ layout: "Machet"
18
+ render_layout_as_partial: "Utilizează șablonul ca un machet"
19
+ models:
20
+ page:
21
+ one: Pagină
22
+ few: Pagini
23
+ many: Pagini
24
+ spree:
25
+ page: Pagină
26
+ pages: Pagine
27
+ static_content:
28
+ static_pages: Pagini statice
29
+ static_pages_desc: Descrierea paginilor statice
30
+ new_page: Pagină nouă
31
+ editing_page: Editarea paginii
32
+ confirm_delete: Sunteți siguri că doriți să ștergeți această pagină?
33
+ link: Link
34
+ meta_title: Titlu meta
35
+ page_navigation_title: Pagini
36
+ back_to_static_pages_list: Înapoi la lista de pagini
37
+ admin:
38
+ tab:
39
+ pages: Pagini
@@ -0,0 +1,39 @@
1
+ ---
2
+ ru:
3
+ activerecord:
4
+ attributes:
5
+ spree/page:
6
+ title: Заголовок
7
+ slug: Постоянная ссылка
8
+ body: Основной текст
9
+ foreign_link: "Внешняя ссылка (URL)"
10
+ show_in_header: "Отображать в верхнем меню"
11
+ show_in_footer: "Отображать в нижнем меню"
12
+ show_in_sidebar: "Отображать в боковом меню"
13
+ position: "Позиция в меню"
14
+ visible: "Публиковать"
15
+ meta_keywords: "Ключевые слова"
16
+ meta_description: "Описание"
17
+ layout: "Макет"
18
+ render_layout_as_partial: "Использовать макет как шаблон страниц"
19
+ meta_title: "Мета заголовок"
20
+ page_navigation_title: "Страницы"
21
+ models:
22
+ spree/page:
23
+ one: Страница
24
+ few: Страницы
25
+ many: Страниц
26
+ other: Страницы
27
+ spree:
28
+ page: "Страница"
29
+ pages: "Страницы"
30
+ static_content:
31
+ static_pages: "Статические страницы"
32
+ new_page: "Новая страница"
33
+ editing_page: "Редактирование страницы"
34
+ link: "Ссылка"
35
+ back_to_static_pages_list: "Назад к списку страниц"
36
+ admin:
37
+ tab:
38
+ pages: "Страницы"
39
+
@@ -0,0 +1,37 @@
1
+ ---
2
+ sv:
3
+ activerecord:
4
+ attributes:
5
+ spree/page:
6
+ body: Innehåll
7
+ foreign_link: "Extern länk (URL)"
8
+ layout: Layout
9
+ meta_description: "Meta beskrivning"
10
+ meta_keywords: "Meta referensord"
11
+ meta_title: "Meta titel"
12
+ position: Position
13
+ render_layout_as_partial: "Rendera layouten som del"
14
+ show_in_footer: "Visa i sidfot"
15
+ show_in_header: "Visa i huvudet"
16
+ show_in_sidebar: "Visa i sidomeny"
17
+ slug: Permalänk
18
+ title: Rubrik
19
+ visible: Synlig
20
+ models:
21
+ spree/page:
22
+ few: Sidor
23
+ many: Sidor
24
+ one: Sida
25
+ other: Sidor
26
+ spree:
27
+ admin:
28
+ tab:
29
+ pages: Sidor
30
+ back_to_static_pages_list: "Tillbaka till listan med sidor"
31
+ page: Sida
32
+ pages: Sidor
33
+ static_content:
34
+ editing_page: "Editera sidan"
35
+ link: Länk
36
+ new_page: "Ny sida"
37
+ static_pages: "Statiska sidor"
@@ -0,0 +1,8 @@
1
+ Spree::Core::Engine.routes.draw do
2
+ namespace :admin do
3
+ resources :pages
4
+ end
5
+ constraints(Spree::StaticPage) do
6
+ get '/(*path)', :to => 'static_content#show', :as => 'static'
7
+ end
8
+ end
@@ -0,0 +1,15 @@
1
+ class CreatePages < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :spree_pages do |t|
4
+ t.string :title
5
+ t.text :body
6
+ t.string :slug
7
+
8
+ t.timestamps
9
+ end
10
+ end
11
+
12
+ def self.down
13
+ drop_table :spree_pages
14
+ end
15
+ end
@@ -0,0 +1,28 @@
1
+ class ExtendPages < ActiveRecord::Migration
2
+ class Page < ActiveRecord::Base
3
+ end
4
+
5
+ def self.up
6
+ change_table :spree_pages do |t|
7
+ t.boolean :show_in_header, :default => false, :null => false
8
+ t.boolean :show_in_footer, :default => false, :null => false
9
+ t.string :foreign_link
10
+ t.integer :position, :default => 1, :null => false
11
+ if Page.table_exists?
12
+ Page.order(:updated_at).each_with_index{|page,x| page.update_attribute(:position, x+1)}
13
+ else
14
+ Spree::Page.order(:updated_at).each_with_index{|page,x| page.update_attribute(:position, x+1)}
15
+ end
16
+
17
+ end
18
+ end
19
+
20
+ def self.down
21
+ change_table :spree_pages do |t|
22
+ t.remove :show_in_header
23
+ t.remove :show_in_footer
24
+ t.remove :foreign_link
25
+ t.remove :position
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,17 @@
1
+ class AddVisibleToPages < ActiveRecord::Migration
2
+ class Page < ActiveRecord::Base
3
+ end
4
+
5
+ def self.up
6
+ add_column :spree_pages, :visible, :boolean
7
+ if Page.table_exists?
8
+ Page.update_all :visible => true
9
+ else
10
+ Spree::Page.update_all :visible => true
11
+ end
12
+ end
13
+
14
+ def self.down
15
+ remove_column :spree_pages, :visible
16
+ end
17
+ end
@@ -0,0 +1,8 @@
1
+ class AddDefaultTrueToVisibleForPage < ActiveRecord::Migration
2
+ def self.up
3
+ change_column :spree_pages, :visible, :boolean, :default=> true
4
+ end
5
+
6
+ def self.down
7
+ end
8
+ end
@@ -0,0 +1,10 @@
1
+ class AddIndexForPage < ActiveRecord::Migration
2
+ def self.up
3
+ add_index(:spree_pages, :slug)
4
+ end
5
+
6
+ def self.down
7
+ remove_index(:spree_pages, :slug)
8
+ end
9
+ end
10
+
@@ -0,0 +1,9 @@
1
+ class AddMetaFieldsToPages < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :spree_pages, :meta_keywords, :string
4
+ add_column :spree_pages, :meta_description, :string
5
+ end
6
+
7
+ def self.down
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class AddLayoutToPages < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :spree_pages, :layout, :string
4
+ end
5
+
6
+ def self.down
7
+ remove_column :spree_pages, :layout
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class AddShowInSidebarOptionToPages < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :spree_pages, :show_in_sidebar, :boolean, :default=> false, :null=>false
4
+ end
5
+
6
+ def self.down
7
+ remove_column :spree_pages, :show_in_sidebar
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class AddMetaTitleToPage < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :spree_pages, :meta_title, :string
4
+ end
5
+
6
+ def self.down
7
+ remove_column :spree_pages, :meta_title
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ class AddRenderAsPartialForLayoutForSpreePages < ActiveRecord::Migration
2
+ def up
3
+ unless column_exists? :spree_pages, :render_layout_as_partial
4
+ add_column :spree_pages, :render_layout_as_partial, :boolean, :default => false
5
+ end
6
+ end
7
+
8
+ def down
9
+ if column_exists? :spree_pages, :render_layout_as_partial
10
+ remove_column :spree_pages, :render_layout_as_partial
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ class AddPagesStores < ActiveRecord::Migration
2
+
3
+ def change
4
+ create_table :spree_pages_stores, :id => false do |t|
5
+ t.integer :store_id
6
+ t.integer :page_id
7
+ t.timestamps
8
+ end
9
+
10
+ add_index :spree_pages_stores, :store_id
11
+ add_index :spree_pages_stores, :page_id
12
+
13
+ end
14
+ end
@@ -0,0 +1,24 @@
1
+ module SolidusStaticContent
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+ class_option :auto_run_migrations, type: :boolean, default: false
5
+
6
+ def add_stylesheets
7
+ inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/spree_static_content\n", before: /\*\//, verbose: true
8
+ end
9
+
10
+ def add_migrations
11
+ run 'bundle exec rake railties:install:migrations FROM=solidus_static_content'
12
+ end
13
+
14
+ def run_migrations
15
+ run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask 'Would you like to run the migrations now? [Y/n]')
16
+ if run_migrations
17
+ run 'bundle exec rake db:migrate'
18
+ else
19
+ puts 'Skipping rake db:migrate, don\'t forget to run it!'
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,21 @@
1
+ require 'solidus_core'
2
+ require 'solidus_frontend'
3
+ require 'solidus_backend'
4
+ require 'deface'
5
+ require 'spree_static_content/engine'
6
+ require 'coffee_script'
7
+ require 'sass/rails'
8
+
9
+ module StaticPage
10
+ def self.remove_spree_mount_point(path)
11
+ regex = Regexp.new '\A' + Rails.application.routes.url_helpers.spree_path
12
+ path.sub( regex, '').split('?')[0]
13
+ end
14
+ end
15
+
16
+ class Spree::StaticPage
17
+ def self.matches?(request)
18
+ return false if request.path =~ /(^\/+(admin|account|cart|checkout|content|login|pg\/|orders|products|s\/|session|signup|shipments|states|t\/|tax_categories|user)+)/
19
+ !Spree::Page.visible.find_by_slug(request.path).nil?
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ module SpreeStaticContent
2
+ class Engine < Rails::Engine
3
+ require 'spree/core'
4
+ isolate_namespace Spree
5
+ engine_name 'spree_static_content'
6
+
7
+ config.autoload_paths += %W(#{config.root}/lib)
8
+
9
+ def self.activate
10
+ Dir.glob(File.join(File.dirname(__FILE__), "../../app/overrides/*.rb")) do |c|
11
+ Rails.configuration.cache_classes ? require(c) : load(c)
12
+ end
13
+ end
14
+
15
+ config.to_prepare &method(:activate).to_proc
16
+ end
17
+ end
@@ -0,0 +1,32 @@
1
+ Gem::Specification.new do |s|
2
+ s.platform = Gem::Platform::RUBY
3
+ s.name = 'solidus_static_content'
4
+ s.version = '1.0.0'
5
+ s.summary = 'Extention to manage the static pages for your Spree shop.'
6
+ s.description = s.summary
7
+ s.required_ruby_version = '>= 1.9.3'
8
+
9
+ s.authors = [%q{Peter Berkenbosch}, %q{Roman Smirnov}]
10
+ s.email = 'peter@pero-ict.nl'
11
+ s.homepage = 'http://spreecommerce.com/extensions/139-static-content'
12
+ s.license = %q{BSD-3}
13
+
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- spec/*`.split("\n")
16
+ s.require_path = 'lib'
17
+ s.requirements << 'none'
18
+
19
+ s.add_dependency 'solidus', ['>= 1.1', '< 3']
20
+ s.add_dependency 'deface', '~> 1.0.2'
21
+
22
+ s.add_development_dependency 'capybara', '~> 2.7'
23
+ s.add_development_dependency 'factory_girl', '~> 4.7'
24
+ s.add_development_dependency 'ffaker'
25
+ s.add_development_dependency 'database_cleaner', '~> 1.5'
26
+ s.add_development_dependency 'rspec-rails', '~> 3.5'
27
+ s.add_development_dependency 'sqlite3', '~> 1.3'
28
+ s.add_development_dependency 'poltergeist', '~> 1.10'
29
+ s.add_development_dependency 'simplecov', '~> 0.12'
30
+ s.add_development_dependency 'pry-rails'
31
+ s.add_development_dependency 'test-unit'
32
+ end