solidus_newsletter 1.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.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/.ruby-version +1 -0
- data/.travis.yml +29 -0
- data/Gemfile +25 -0
- data/LICENSE +26 -0
- data/README.md +29 -0
- data/Rakefile +21 -0
- data/app/controllers/spree/admin/newsletters_controller.rb +33 -0
- data/app/controllers/spree/newsletters_controller.rb +21 -0
- data/app/models/spree/newsletter.rb +6 -0
- data/app/overrides/spree/admin/configurations/index/add_newsletter_to_admin_configurations_menu.html.erb.deface +6 -0
- data/app/overrides/spree/admin/shared/_configuration_menu/add_newsletter_to_admin_configurations_sidebar_menu.html.erb.deface +3 -0
- data/app/views/spree/admin/newsletters/_form.html.erb +47 -0
- data/app/views/spree/admin/newsletters/edit.html.erb +12 -0
- data/app/views/spree/shared/_newsletter.html.erb +23 -0
- data/bin/rails +7 -0
- data/config/locales/en.yml +30 -0
- data/config/locales/es-MX.yml +29 -0
- data/config/locales/es.yml +27 -0
- data/config/routes.rb +8 -0
- data/db/migrate/20180209175720_add_spree_newsletters_table.rb +10 -0
- data/lib/generators/solidus_newsletter/install/install_generator.rb +20 -0
- data/lib/solidus_newsletter.rb +2 -0
- data/lib/solidus_newsletter/configuration.rb +6 -0
- data/lib/solidus_newsletter/engine.rb +26 -0
- data/lib/solidus_newsletter/factories.rb +6 -0
- data/lib/solidus_newsletter/version.rb +3 -0
- data/solidus_newsletter.gemspec +37 -0
- data/spec/controllers/spree/admin/newsletters_controller_spec.rb +27 -0
- data/spec/controllers/spree/newsletters_controller_spec.rb +19 -0
- data/spec/models/spree/newsletter_spec.rb +17 -0
- data/spec/spec_helper.rb +45 -0
- metadata +262 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 8b7181ee38f3d6ae3e37561089ad3d4a6f3d9c0f4f2da4a7a2eeb0b2f0eeaf6e
|
4
|
+
data.tar.gz: 82677d2a3786f839cb907d9aed94f837c940fa1ae733c69b98224e559d4348d0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 785f34dfa1c29564b687afa7d9a14d38eed374b64ae95382d2d58130360125ecc89e7f3dee1fa8e4bea125f0722c1cd7000cc66dd115c10b9d0c0cb804eb6ba1
|
7
|
+
data.tar.gz: 27700c0900df2675e1fb28783ca5fa68132f6bb815e2939bedc110969e115658fb87c0d9d84520ac3a62faba6445a2bea01047733b05759ba64d6bfe4b1d443d
|
data/.gitignore
ADDED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.3.1
|
data/.travis.yml
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
sudo: false
|
2
|
+
cache: bundler
|
3
|
+
language: ruby
|
4
|
+
rvm:
|
5
|
+
- 2.3.1
|
6
|
+
env:
|
7
|
+
matrix:
|
8
|
+
- SOLIDUS_BRANCH=v1.0 DB=postgres
|
9
|
+
- SOLIDUS_BRANCH=v1.1 DB=postgres
|
10
|
+
- SOLIDUS_BRANCH=v1.2 DB=postgres
|
11
|
+
- SOLIDUS_BRANCH=v1.3 DB=postgres
|
12
|
+
- SOLIDUS_BRANCH=v1.4 DB=postgres
|
13
|
+
- SOLIDUS_BRANCH=v2.0 DB=postgres
|
14
|
+
- SOLIDUS_BRANCH=v2.1 DB=postgres
|
15
|
+
- SOLIDUS_BRANCH=v2.2 DB=postgres
|
16
|
+
- SOLIDUS_BRANCH=v2.3 DB=postgres
|
17
|
+
- SOLIDUS_BRANCH=v2.4 DB=postgres
|
18
|
+
- SOLIDUS_BRANCH=master DB=postgres
|
19
|
+
- SOLIDUS_BRANCH=v1.0 DB=mysql
|
20
|
+
- SOLIDUS_BRANCH=v1.1 DB=mysql
|
21
|
+
- SOLIDUS_BRANCH=v1.2 DB=mysql
|
22
|
+
- SOLIDUS_BRANCH=v1.3 DB=mysql
|
23
|
+
- SOLIDUS_BRANCH=v1.4 DB=mysql
|
24
|
+
- SOLIDUS_BRANCH=v2.0 DB=mysql
|
25
|
+
- SOLIDUS_BRANCH=v2.1 DB=mysql
|
26
|
+
- SOLIDUS_BRANCH=v2.2 DB=mysql
|
27
|
+
- SOLIDUS_BRANCH=v2.3 DB=mysql
|
28
|
+
- SOLIDUS_BRANCH=v2.4 DB=mysql
|
29
|
+
- SOLIDUS_BRANCH=master DB=mysql
|
data/Gemfile
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
branch = ENV.fetch('SOLIDUS_BRANCH', 'master')
|
4
|
+
gem 'solidus', github: 'solidusio/solidus', branch: branch
|
5
|
+
gem 'solidus_i18n', github: 'solidusio-contrib/solidus_i18n', branch: 'master'
|
6
|
+
|
7
|
+
if branch == 'master' || branch >= 'v2.3'
|
8
|
+
gem 'rails', '~> 5.1.0'
|
9
|
+
elsif branch >= 'v2.0'
|
10
|
+
gem 'rails', '~> 5.0.0'
|
11
|
+
gem 'rails-controller-testing', group: :test
|
12
|
+
else
|
13
|
+
gem 'rails', '~> 4.2.0'
|
14
|
+
gem 'rails_test_params_backport', group: :test
|
15
|
+
end
|
16
|
+
|
17
|
+
gem 'pg', '~> 0.21'
|
18
|
+
gem 'sqlite3'
|
19
|
+
gem 'mysql2'
|
20
|
+
|
21
|
+
group :development, :test do
|
22
|
+
gem 'i18n-tasks', '~> 0.9' if branch == 'master'
|
23
|
+
end
|
24
|
+
|
25
|
+
gemspec
|
data/LICENSE
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
Copyright (c) 2012 R.S.A.
|
2
|
+
All rights reserved.
|
3
|
+
|
4
|
+
Redistribution and use in source and binary forms, with or without modification,
|
5
|
+
are permitted provided that the following conditions are met:
|
6
|
+
|
7
|
+
* Redistributions of source code must retain the above copyright notice,
|
8
|
+
this list of conditions and the following disclaimer.
|
9
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
10
|
+
this list of conditions and the following disclaimer in the documentation
|
11
|
+
and/or other materials provided with the distribution.
|
12
|
+
* Neither the name Spree nor the names of its contributors may be used to
|
13
|
+
endorse or promote products derived from this software without specific
|
14
|
+
prior written permission.
|
15
|
+
|
16
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
17
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
18
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
19
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
20
|
+
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
21
|
+
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
22
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
23
|
+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
24
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
25
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# Solidus Newsletter
|
2
|
+
[](https://travis-ci.org/jtapia/solidus_newsletter)<br />
|
3
|
+
|
4
|
+
Basic Overview
|
5
|
+
-----
|
6
|
+
|
7
|
+
Add a newsletter to the homepage of your Solidus site, and manage the newsletter content on the Admin panel.
|
8
|
+
|
9
|
+
Setup
|
10
|
+
-----
|
11
|
+
|
12
|
+
Add this extension to your Gemfile:
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
gem 'solidus_newsletter', github: 'jtapia/solidus_newsletter'
|
16
|
+
```
|
17
|
+
|
18
|
+
Then run:
|
19
|
+
|
20
|
+
```
|
21
|
+
bundle exec rails g solidus_newsletter:install
|
22
|
+
```
|
23
|
+
|
24
|
+
Using the newsletter form
|
25
|
+
-----
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
<%= render partial: 'spree/shared/newsletter' %>
|
29
|
+
```
|
data/Rakefile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
Bundler::GemHelper.install_tasks
|
3
|
+
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
require 'spree/testing_support/extension_rake'
|
6
|
+
|
7
|
+
RSpec::Core::RakeTask.new
|
8
|
+
|
9
|
+
task :default do
|
10
|
+
if Dir["spec/dummy"].empty?
|
11
|
+
Rake::Task[:test_app].invoke
|
12
|
+
Dir.chdir("../../")
|
13
|
+
end
|
14
|
+
Rake::Task[:spec].invoke
|
15
|
+
end
|
16
|
+
|
17
|
+
desc 'Generates a dummy app for testing'
|
18
|
+
task :test_app do
|
19
|
+
ENV['LIB_NAME'] = 'solidus_newsletter'
|
20
|
+
Rake::Task['extension:test_app'].invoke
|
21
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
class NewslettersController < Spree::Admin::BaseController
|
4
|
+
def update
|
5
|
+
SolidusNewsletter::Config[:title] = newsletter_params[:title]
|
6
|
+
SolidusNewsletter::Config[:text] = newsletter_params[:text]
|
7
|
+
|
8
|
+
if (title == newsletter_params[:title] && text == newsletter_params[:text]) &&
|
9
|
+
(newsletter_params[:title].present? && newsletter_params[:text])
|
10
|
+
flash[:success] = Spree.t(:'newsletter.admin.success')
|
11
|
+
else
|
12
|
+
flash[:error] = Spree.t(:'newsletter.admin.error')
|
13
|
+
end
|
14
|
+
|
15
|
+
redirect_to admin_newsletters_edit_path
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def title
|
21
|
+
SolidusNewsletter::Config[:title]
|
22
|
+
end
|
23
|
+
|
24
|
+
def text
|
25
|
+
SolidusNewsletter::Config[:text]
|
26
|
+
end
|
27
|
+
|
28
|
+
def newsletter_params
|
29
|
+
params.require(:newsletters).permit(:title, :text)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Spree
|
2
|
+
class NewslettersController < StoreController
|
3
|
+
def create
|
4
|
+
@newsletter = Spree::Newsletter.new(newsletter_params)
|
5
|
+
|
6
|
+
if @newsletter.save
|
7
|
+
flash[:success] = Spree.t(:'newsletter.controller.success')
|
8
|
+
else
|
9
|
+
flash[:error] = Spree.t(:'newsletter.controller.error')
|
10
|
+
end
|
11
|
+
|
12
|
+
redirect_to admin_newsletters_edit_path
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def newsletter_params
|
18
|
+
params.require(:newsletters).permit(:name, :email)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
<% if SolidusSupport.solidus_gem_version < Gem::Version.new('2.4.x') %>
|
2
|
+
<div class='alpha six columns'>
|
3
|
+
<fieldset class='no-border-bottom'>
|
4
|
+
<div class='field'>
|
5
|
+
<%= f.field_container :title do %>
|
6
|
+
<%= f.label Spree.t(:'newsletter.title') %>
|
7
|
+
<%= f.text_field :title, class: 'fullwidth', value: SolidusNewsletter::Config[:title] %>
|
8
|
+
<%= f.error_message_on :title %>
|
9
|
+
<% end %>
|
10
|
+
</div>
|
11
|
+
|
12
|
+
<div class='field'>
|
13
|
+
<%= f.field_container :text do %>
|
14
|
+
<%= f.label Spree.t(:'newsletter.form.text') %>
|
15
|
+
<%= f.text_field :text, class: 'fullwidth', value: SolidusNewsletter::Config[:text] %>
|
16
|
+
<%= f.error_message_on :text %>
|
17
|
+
<% end %>
|
18
|
+
</div>
|
19
|
+
</fieldset>
|
20
|
+
</div>
|
21
|
+
<% else %>
|
22
|
+
<div class='row'>
|
23
|
+
<div class='col-md-6'>
|
24
|
+
<fieldset class='currency no-border-bottom'>
|
25
|
+
<div class='field'>
|
26
|
+
<%= f.field_container :title do %>
|
27
|
+
<%= f.label Spree.t(:'newsletter.form.title') %>
|
28
|
+
<%= f.text_field :title, class: 'fullwidth', value: SolidusNewsletter::Config[:title] %>
|
29
|
+
<%= f.error_message_on :title %>
|
30
|
+
<% end %>
|
31
|
+
</div>
|
32
|
+
</fieldset>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div class='col-md-6'>
|
36
|
+
<fieldset class='currency no-border-bottom'>
|
37
|
+
<div class='field'>
|
38
|
+
<%= f.field_container :text do %>
|
39
|
+
<%= f.label Spree.t(:'newsletter.form.text') %>
|
40
|
+
<%= f.text_field :text, class: 'fullwidth', value: SolidusNewsletter::Config[:text] %>
|
41
|
+
<%= f.error_message_on :text %>
|
42
|
+
<% end %>
|
43
|
+
</div>
|
44
|
+
</fieldset>
|
45
|
+
</div>
|
46
|
+
</div>
|
47
|
+
<% end %>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<%= render 'spree/admin/shared/general_tabs' %>
|
2
|
+
|
3
|
+
<% admin_breadcrumb(link_to(Spree.t(:'newsletter.admin_breadcrumb'), edit_admin_general_settings_path)) %>
|
4
|
+
|
5
|
+
<%= form_for :newsletters, url: admin_newsletters_update_path, method: :put do |f| %>
|
6
|
+
<fieldset class='no-border-top'>
|
7
|
+
<%= render 'form', f: f %>
|
8
|
+
<%= render 'spree/admin/shared/edit_resource_links', collection_url: edit_admin_general_settings_url %>
|
9
|
+
</fieldset>
|
10
|
+
<% end %>
|
11
|
+
|
12
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<section class='newsletter-section'>
|
2
|
+
<h2 class='newsletter-section__title'><%= SolidusNewsletter::Config[:title] %></h2>
|
3
|
+
|
4
|
+
<div class='newsletter-section__content row'>
|
5
|
+
<%= form_for :newsletter, url: newsletters_update_path, method: :post do |f| %>
|
6
|
+
<div class='field text col-md-3 col-sm-12 text-center'>
|
7
|
+
<p><%= SolidusNewsletter::Config[:text] %></p>
|
8
|
+
</div>
|
9
|
+
|
10
|
+
<div class='field col-md-3 col-sm-6' id=<%= 'name' %>>
|
11
|
+
<%= f.text_field :name, class: 'required fullwidth', autofocus: true, placeholder: Spree.t(:'newsletter.form.name') %>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<div class='field col-md-3 col-sm-6' id=<%= 'email' %>>
|
15
|
+
<%= f.email_field :email, class: 'required fullwidth', placeholder: Spree.t(:'newsletter.form.email') %>
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<div class='col-md-3 col-sm-6 form-buttons'>
|
19
|
+
<%= f.submit Spree.t(:'newsletter.form.button'), class: 'newsletter-btn border-rounded small-text' %>
|
20
|
+
</div>
|
21
|
+
<% end %>
|
22
|
+
</div>
|
23
|
+
</section>
|
data/bin/rails
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
2
|
+
|
3
|
+
ENGINE_ROOT = File.expand_path('../..', __FILE__)
|
4
|
+
ENGINE_PATH = File.expand_path('../../lib/solidus_newsletter/engine', __FILE__)
|
5
|
+
|
6
|
+
require 'rails/all'
|
7
|
+
require 'rails/engine/commands'
|
@@ -0,0 +1,30 @@
|
|
1
|
+
en:
|
2
|
+
activerecord:
|
3
|
+
attributes:
|
4
|
+
spree/newsletter:
|
5
|
+
name: Name
|
6
|
+
email: Email
|
7
|
+
text: Text
|
8
|
+
models:
|
9
|
+
spree/newsletter:
|
10
|
+
one: Newsletter
|
11
|
+
other: Newsletters
|
12
|
+
|
13
|
+
spree:
|
14
|
+
newsletter:
|
15
|
+
controller:
|
16
|
+
sucess: Thank you to subscribe to our newsletter
|
17
|
+
error: Something went wrong, please try again
|
18
|
+
admin:
|
19
|
+
success: The newsletter was updated successfuly!
|
20
|
+
error: Something went wrong, please try again
|
21
|
+
form:
|
22
|
+
title: Title
|
23
|
+
text: Text
|
24
|
+
name: Name
|
25
|
+
email: Email
|
26
|
+
button: Send
|
27
|
+
admin_breadcrumb: Newsletter
|
28
|
+
config_name: "Newsletter"
|
29
|
+
config_description: "Manage Spree Newsletter contents"
|
30
|
+
title: "Newsletter"
|
@@ -0,0 +1,29 @@
|
|
1
|
+
es-MX:
|
2
|
+
activerecord:
|
3
|
+
attributes:
|
4
|
+
name: Nombre
|
5
|
+
email: Email
|
6
|
+
text: Texto
|
7
|
+
models:
|
8
|
+
spree/newsletter:
|
9
|
+
one: Newsletter
|
10
|
+
other: Newsletters
|
11
|
+
|
12
|
+
spree:
|
13
|
+
newsletter:
|
14
|
+
controller:
|
15
|
+
sucess: Gracias por suscribirte a nuestro newsletter
|
16
|
+
error: Hubo un problem, por favor intenta otra vez
|
17
|
+
admin:
|
18
|
+
success: El texto del newsletter a sido actualizado correctamente
|
19
|
+
error: El texto del newsletter no se a podido actualizar, intente más tarde
|
20
|
+
form:
|
21
|
+
title: Titulo
|
22
|
+
text: Texto
|
23
|
+
name: Nombre
|
24
|
+
email: Correo Electronico
|
25
|
+
button: Enviar
|
26
|
+
admin_breadcrumb: Newsletter
|
27
|
+
config_name: Newsletter
|
28
|
+
config_description: Manage Spree Newsletter contents
|
29
|
+
title: Newsletter
|
@@ -0,0 +1,27 @@
|
|
1
|
+
es:
|
2
|
+
activerecord:
|
3
|
+
models:
|
4
|
+
spree/slide: "Diapositiva"
|
5
|
+
|
6
|
+
spree:
|
7
|
+
next: "Siguiente"
|
8
|
+
previous: "Anterior"
|
9
|
+
name: "Nombre"
|
10
|
+
body: "Cuerpo"
|
11
|
+
link_url: "URL de enlace"
|
12
|
+
image: "Imagen"
|
13
|
+
image_file_name: "Nombre de la imagen"
|
14
|
+
published: "Publicado"
|
15
|
+
position: "Posición"
|
16
|
+
y: "Sí"
|
17
|
+
n: "No"
|
18
|
+
|
19
|
+
slider:
|
20
|
+
config_name: "Diapositivas"
|
21
|
+
config_description: "Configura las diapositivas de portada"
|
22
|
+
title: "Diapositivas"
|
23
|
+
new_slide: "Nueva Diapositiva"
|
24
|
+
editing_slide: "Editando Diapositiva"
|
25
|
+
placeholder_name: "En blanco para usar el del producto"
|
26
|
+
placeholder_link_url: "En blanco para usar la del producto"
|
27
|
+
image_tip: "Si no selecciona ninguna imagen, se tomará la primera del producto"
|
data/config/routes.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
module SolidusNewsletter
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
class_option :auto_run_migrations, type: :boolean, default: false
|
5
|
+
|
6
|
+
def add_migrations
|
7
|
+
run 'bundle exec rake railties:install:migrations FROM=solidus_newsletter'
|
8
|
+
end
|
9
|
+
|
10
|
+
def run_migrations
|
11
|
+
run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask 'Would you like to run the migrations now? [Y/n]')
|
12
|
+
if run_migrations
|
13
|
+
run 'bundle exec rake db:migrate'
|
14
|
+
else
|
15
|
+
puts 'Skipping rake db:migrate, don\'t forget to run it!'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module SolidusNewsletter
|
2
|
+
class Engine < Rails::Engine
|
3
|
+
require 'spree/core'
|
4
|
+
isolate_namespace Spree
|
5
|
+
engine_name 'solidus_newsletter'
|
6
|
+
|
7
|
+
config.autoload_paths += %W(#{config.root}/lib)
|
8
|
+
|
9
|
+
# use rspec for tests
|
10
|
+
config.generators do |g|
|
11
|
+
g.test_framework :rspec
|
12
|
+
end
|
13
|
+
|
14
|
+
initializer 'solidus_newsletter.environment', before: :load_config_initializers do |app|
|
15
|
+
SolidusNewsletter::Config = SolidusNewsletter::Configuration.new
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.activate
|
19
|
+
Dir.glob(File.join(File.dirname(__FILE__), "../../app/**/*_decorator*.rb")) do |c|
|
20
|
+
Rails.configuration.cache_classes ? require(c) : load(c)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
config.to_prepare &method(:activate).to_proc
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
$:.push File.expand_path('../lib', __FILE__)
|
3
|
+
|
4
|
+
# Maintain your gem's version:
|
5
|
+
require 'solidus_newsletter/version'
|
6
|
+
|
7
|
+
# Describe your gem and declare its dependencies:
|
8
|
+
Gem::Specification.new do |s|
|
9
|
+
s.name = 'solidus_newsletter'
|
10
|
+
s.version = SolidusNewsletter::VERSION
|
11
|
+
s.author = 'Jonathan Tapia'
|
12
|
+
s.email = 'jonathan.tapia@magmalabs.io'
|
13
|
+
s.homepage = 'https://github.com/jtapia/solidus_newsletter'
|
14
|
+
s.summary = 'Solidus Newsletter extension'
|
15
|
+
s.description = 'Adds a newsletter form to the homepage'
|
16
|
+
|
17
|
+
# s.files = Dir['{app,config,models,db,lib}/**/*'] + %w(MIT-LICENSE Rakefile README.md)
|
18
|
+
s.files = `git ls-files`.split("\n")
|
19
|
+
s.require_path = 'lib'
|
20
|
+
s.requirements << 'none'
|
21
|
+
|
22
|
+
solidus_version = ['>= 1.2', '< 3']
|
23
|
+
s.add_dependency 'solidus_core', solidus_version
|
24
|
+
s.add_dependency 'solidus_backend', solidus_version
|
25
|
+
s.add_dependency 'solidus_api', solidus_version
|
26
|
+
s.add_dependency 'solidus_support'
|
27
|
+
|
28
|
+
s.add_development_dependency 'database_cleaner', '~> 1.6'
|
29
|
+
s.add_development_dependency 'factory_bot', '~> 4.4'
|
30
|
+
s.add_development_dependency 'ffaker'
|
31
|
+
s.add_development_dependency 'rspec-rails', '~> 3.3'
|
32
|
+
s.add_development_dependency 'simplecov', '~> 0.14'
|
33
|
+
s.add_development_dependency 'rspec-activemodel-mocks'
|
34
|
+
s.add_development_dependency 'webmock'
|
35
|
+
s.add_development_dependency 'byebug'
|
36
|
+
end
|
37
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Spree::Admin::NewslettersController, type: :controller do
|
4
|
+
stub_authorization!
|
5
|
+
|
6
|
+
before do
|
7
|
+
SolidusNewsletter::Config[:title] = 'Newsletter'
|
8
|
+
SolidusNewsletter::Config[:text] = 'Gets 10%'
|
9
|
+
end
|
10
|
+
|
11
|
+
context '#update' do
|
12
|
+
it 'returns true' do
|
13
|
+
put :update, params: { newsletters: { title: 'Newsletter Test', text: 'Gets 20%' } }
|
14
|
+
|
15
|
+
expect(response.status).to eq(302)
|
16
|
+
expect(SolidusNewsletter::Config[:title]).to eq('Newsletter Test')
|
17
|
+
expect(SolidusNewsletter::Config[:text]).to eq('Gets 20%')
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'returns false' do
|
21
|
+
put :update, params: { newsletters: { title: '', text: '' } }
|
22
|
+
|
23
|
+
expect(response.status).to eq(302)
|
24
|
+
expect(flash[:error]).to include('Something went wrong, please try again')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Spree::NewslettersController, type: :controller do
|
4
|
+
context '#create' do
|
5
|
+
it 'returns true' do
|
6
|
+
post :create, params: { newsletters: { name: 'User Test', email: 'user@test.com' } }
|
7
|
+
|
8
|
+
expect(response.status).to eq(302)
|
9
|
+
expect(flash[:success]).to include(Spree.t('newsletter.controller.success'))
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'returns false' do
|
13
|
+
post :create, params: { newsletters: { name: '', email: '' } }
|
14
|
+
|
15
|
+
expect(response.status).to eq(302)
|
16
|
+
expect(flash[:error]).to include(Spree.t('newsletter.controller.error'))
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Spree::Newsletter, type: :model do
|
4
|
+
context 'validations' do
|
5
|
+
it 'validates by default' do
|
6
|
+
expect(build(:newsletter, name: 'User Test', email: 'user@test.com')).to be_valid
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'does not validate with a nil name' do
|
10
|
+
expect(build(:newsletter, name: nil)).to_not be_valid
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'does not validate with a nil email' do
|
14
|
+
expect(build(:newsletter, email: nil)).to_not be_valid
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
SimpleCov.start do
|
3
|
+
add_filter 'spec'
|
4
|
+
add_group 'Controllers', 'app/controllers'
|
5
|
+
add_group 'Helpers', 'app/helpers'
|
6
|
+
add_group 'Overrides', 'app/overrides'
|
7
|
+
add_group 'Models', 'app/models'
|
8
|
+
end
|
9
|
+
|
10
|
+
ENV['RAILS_ENV'] ||= 'test'
|
11
|
+
|
12
|
+
require File.expand_path('../dummy/config/environment.rb', __FILE__)
|
13
|
+
|
14
|
+
require 'solidus_frontend'
|
15
|
+
require 'solidus_backend'
|
16
|
+
require 'rspec/rails'
|
17
|
+
|
18
|
+
Dir[Rails.root.join('spec/support/**/*.rb')].sort.each { |file| require file }
|
19
|
+
|
20
|
+
require 'spree/testing_support/url_helpers'
|
21
|
+
require 'spree/testing_support/controller_requests'
|
22
|
+
require 'spree/testing_support/authorization_helpers'
|
23
|
+
require 'spree/testing_support/preferences'
|
24
|
+
require 'spree/testing_support/factories'
|
25
|
+
require 'spree/api/testing_support/helpers'
|
26
|
+
require 'spree/api/testing_support/setup'
|
27
|
+
|
28
|
+
# Requires factories defined in lib/solidus_newsletter/factories.rb
|
29
|
+
require 'solidus_newsletter/factories'
|
30
|
+
|
31
|
+
RSpec.configure do |config|
|
32
|
+
config.infer_spec_type_from_file_location!
|
33
|
+
config.infer_base_class_for_anonymous_controllers = false
|
34
|
+
config.infer_spec_type_from_file_location!
|
35
|
+
config.use_transactional_fixtures = true
|
36
|
+
|
37
|
+
config.include FactoryBot::Syntax::Methods
|
38
|
+
config.include Spree::Api::TestingSupport::Helpers, type: :controller
|
39
|
+
config.extend Spree::Api::TestingSupport::Setup, type: :controller
|
40
|
+
config.include Spree::TestingSupport::ControllerRequests, type: :controller
|
41
|
+
config.include Spree::TestingSupport::UrlHelpers
|
42
|
+
config.extend Spree::TestingSupport::AuthorizationHelpers::Request, type: :request
|
43
|
+
config.include Spree::TestingSupport::Preferences, type: :controller
|
44
|
+
config.include Spree::TestingSupport::Preferences, type: :model
|
45
|
+
end
|
metadata
ADDED
@@ -0,0 +1,262 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: solidus_newsletter
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '1.0'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jonathan Tapia
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-02-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: solidus_core
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.2'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '3'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.2'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '3'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: solidus_backend
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '1.2'
|
40
|
+
- - "<"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '3'
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '1.2'
|
50
|
+
- - "<"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '3'
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: solidus_api
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '1.2'
|
60
|
+
- - "<"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '3'
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.2'
|
70
|
+
- - "<"
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '3'
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: solidus_support
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
type: :runtime
|
81
|
+
prerelease: false
|
82
|
+
version_requirements: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
- !ruby/object:Gem::Dependency
|
88
|
+
name: database_cleaner
|
89
|
+
requirement: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - "~>"
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '1.6'
|
94
|
+
type: :development
|
95
|
+
prerelease: false
|
96
|
+
version_requirements: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - "~>"
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '1.6'
|
101
|
+
- !ruby/object:Gem::Dependency
|
102
|
+
name: factory_bot
|
103
|
+
requirement: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - "~>"
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: '4.4'
|
108
|
+
type: :development
|
109
|
+
prerelease: false
|
110
|
+
version_requirements: !ruby/object:Gem::Requirement
|
111
|
+
requirements:
|
112
|
+
- - "~>"
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: '4.4'
|
115
|
+
- !ruby/object:Gem::Dependency
|
116
|
+
name: ffaker
|
117
|
+
requirement: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - ">="
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
122
|
+
type: :development
|
123
|
+
prerelease: false
|
124
|
+
version_requirements: !ruby/object:Gem::Requirement
|
125
|
+
requirements:
|
126
|
+
- - ">="
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '0'
|
129
|
+
- !ruby/object:Gem::Dependency
|
130
|
+
name: rspec-rails
|
131
|
+
requirement: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - "~>"
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '3.3'
|
136
|
+
type: :development
|
137
|
+
prerelease: false
|
138
|
+
version_requirements: !ruby/object:Gem::Requirement
|
139
|
+
requirements:
|
140
|
+
- - "~>"
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '3.3'
|
143
|
+
- !ruby/object:Gem::Dependency
|
144
|
+
name: simplecov
|
145
|
+
requirement: !ruby/object:Gem::Requirement
|
146
|
+
requirements:
|
147
|
+
- - "~>"
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0.14'
|
150
|
+
type: :development
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
requirements:
|
154
|
+
- - "~>"
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: '0.14'
|
157
|
+
- !ruby/object:Gem::Dependency
|
158
|
+
name: rspec-activemodel-mocks
|
159
|
+
requirement: !ruby/object:Gem::Requirement
|
160
|
+
requirements:
|
161
|
+
- - ">="
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
version: '0'
|
164
|
+
type: :development
|
165
|
+
prerelease: false
|
166
|
+
version_requirements: !ruby/object:Gem::Requirement
|
167
|
+
requirements:
|
168
|
+
- - ">="
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
version: '0'
|
171
|
+
- !ruby/object:Gem::Dependency
|
172
|
+
name: webmock
|
173
|
+
requirement: !ruby/object:Gem::Requirement
|
174
|
+
requirements:
|
175
|
+
- - ">="
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '0'
|
178
|
+
type: :development
|
179
|
+
prerelease: false
|
180
|
+
version_requirements: !ruby/object:Gem::Requirement
|
181
|
+
requirements:
|
182
|
+
- - ">="
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: '0'
|
185
|
+
- !ruby/object:Gem::Dependency
|
186
|
+
name: byebug
|
187
|
+
requirement: !ruby/object:Gem::Requirement
|
188
|
+
requirements:
|
189
|
+
- - ">="
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: '0'
|
192
|
+
type: :development
|
193
|
+
prerelease: false
|
194
|
+
version_requirements: !ruby/object:Gem::Requirement
|
195
|
+
requirements:
|
196
|
+
- - ">="
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: '0'
|
199
|
+
description: Adds a newsletter form to the homepage
|
200
|
+
email: jonathan.tapia@magmalabs.io
|
201
|
+
executables: []
|
202
|
+
extensions: []
|
203
|
+
extra_rdoc_files: []
|
204
|
+
files:
|
205
|
+
- ".gitignore"
|
206
|
+
- ".ruby-version"
|
207
|
+
- ".travis.yml"
|
208
|
+
- Gemfile
|
209
|
+
- Gemfile.lock
|
210
|
+
- LICENSE
|
211
|
+
- README.md
|
212
|
+
- Rakefile
|
213
|
+
- app/controllers/spree/admin/newsletters_controller.rb
|
214
|
+
- app/controllers/spree/newsletters_controller.rb
|
215
|
+
- app/models/spree/newsletter.rb
|
216
|
+
- app/overrides/spree/admin/configurations/index/add_newsletter_to_admin_configurations_menu.html.erb.deface
|
217
|
+
- app/overrides/spree/admin/shared/_configuration_menu/add_newsletter_to_admin_configurations_sidebar_menu.html.erb.deface
|
218
|
+
- app/views/spree/admin/newsletters/_form.html.erb
|
219
|
+
- app/views/spree/admin/newsletters/edit.html.erb
|
220
|
+
- app/views/spree/shared/_newsletter.html.erb
|
221
|
+
- bin/rails
|
222
|
+
- config/locales/en.yml
|
223
|
+
- config/locales/es-MX.yml
|
224
|
+
- config/locales/es.yml
|
225
|
+
- config/routes.rb
|
226
|
+
- db/migrate/20180209175720_add_spree_newsletters_table.rb
|
227
|
+
- lib/generators/solidus_newsletter/install/install_generator.rb
|
228
|
+
- lib/solidus_newsletter.rb
|
229
|
+
- lib/solidus_newsletter/configuration.rb
|
230
|
+
- lib/solidus_newsletter/engine.rb
|
231
|
+
- lib/solidus_newsletter/factories.rb
|
232
|
+
- lib/solidus_newsletter/version.rb
|
233
|
+
- solidus_newsletter.gemspec
|
234
|
+
- spec/controllers/spree/admin/newsletters_controller_spec.rb
|
235
|
+
- spec/controllers/spree/newsletters_controller_spec.rb
|
236
|
+
- spec/models/spree/newsletter_spec.rb
|
237
|
+
- spec/spec_helper.rb
|
238
|
+
homepage: https://github.com/jtapia/solidus_newsletter
|
239
|
+
licenses: []
|
240
|
+
metadata: {}
|
241
|
+
post_install_message:
|
242
|
+
rdoc_options: []
|
243
|
+
require_paths:
|
244
|
+
- lib
|
245
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
246
|
+
requirements:
|
247
|
+
- - ">="
|
248
|
+
- !ruby/object:Gem::Version
|
249
|
+
version: '0'
|
250
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
251
|
+
requirements:
|
252
|
+
- - ">="
|
253
|
+
- !ruby/object:Gem::Version
|
254
|
+
version: '0'
|
255
|
+
requirements:
|
256
|
+
- none
|
257
|
+
rubyforge_project:
|
258
|
+
rubygems_version: 2.7.3
|
259
|
+
signing_key:
|
260
|
+
specification_version: 4
|
261
|
+
summary: Solidus Newsletter extension
|
262
|
+
test_files: []
|