solidus_static_content 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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