newsletter 3.2.6 → 3.2.7
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 +4 -4
- data/README.md +1 -0
- data/app/controllers/newsletter/newsletters_controller.rb +8 -2
- data/app/models/newsletter/design.rb +11 -6
- data/app/models/newsletter/element.rb +1 -1
- data/app/models/newsletter/newsletter.rb +5 -0
- data/app/views/newsletter/designs/_form.html.erb +2 -0
- data/app/views/newsletter/newsletters/_head.html.erb +1 -1
- data/app/views/newsletter/newsletters/_newsletter.html.erb +13 -2
- data/app/views/newsletter/newsletters/archive.html.erb +1 -1
- data/app/views/newsletter/newsletters/edit.html.erb +1 -1
- data/app/views/newsletter/newsletters/show.css.erb +1 -0
- data/app/views/newsletter/newsletters/show.html.erb +13 -2
- data/app/views/newsletter/newsletters/stylesheet.css +1 -0
- data/config/locales/newsletters.en.yml +1 -0
- data/config/routes.rb +1 -1
- data/db/migrate/002_carrier_wave_for_assets.rb +19 -0
- data/db/migrate/003_add_stylesheet_text_to_designs.rb +12 -0
- data/designs/exports/example-export.yaml +61 -268
- data/lib/newsletter/engine.rb +7 -1
- data/lib/newsletter/version.rb +1 -1
- data/newsletter.gemspec +11 -0
- data/spec/test_app/config/database.postgres.yml +3 -3
- data/spec/test_app/db/migrate/20150507154748_carrier_wave_for_assets.rb +19 -0
- data/spec/test_app/db/migrate/20150507195612_add_stylesheet_text_to_designs.rb +12 -0
- data/spec/test_app/db/schema.rb +5 -4
- data/spec/test_app/script/full_suite +3 -3
- data/spec/test_app/spec/factories/designs.rb +3 -1
- data/spec/test_app/spec/factories/newsletters.rb +1 -1
- data/spec/test_app/spec/features/newsletter/design_spec.rb +2 -0
- data/spec/test_app/spec/models/newsletter/design_spec.rb +27 -3
- data/spec/test_app/spec/models/newsletter/engine_spec.rb +11 -0
- data/spec/test_app/spec/models/newsletter/newsletter_spec.rb +21 -0
- data/spec/test_app/spec/support/files/newsletter_empty_table_prefix.yml +12 -0
- metadata +21 -3
data/lib/newsletter/engine.rb
CHANGED
@@ -106,6 +106,8 @@ module Newsletter
|
|
106
106
|
::Newsletter::Area,
|
107
107
|
::Newsletter::Field
|
108
108
|
]
|
109
|
+
can [:sort,:publish,:unpublish], ::Newsletter::Newsletter
|
110
|
+
can :sort, ::Newsletter::Area
|
109
111
|
end
|
110
112
|
can :read, [
|
111
113
|
::Newsletter::Newsletter,
|
@@ -125,7 +127,11 @@ module Newsletter
|
|
125
127
|
# initializes the configuration options pulled from config/newsletter.yml and
|
126
128
|
# overrides with config/newsletter.local.yml if it exists
|
127
129
|
def self.initialize_with_config(conf)
|
128
|
-
|
130
|
+
if conf.params.has_key?('table_prefix')
|
131
|
+
::Newsletter.table_prefix ||= conf.table_prefix.to_s # allow empty
|
132
|
+
else
|
133
|
+
::Newsletter.table_prefix ||= 'newsletter_'
|
134
|
+
end
|
129
135
|
::Newsletter.designs_path ||= conf.designs_path || "#{Rails.root}/designs" rescue "#{Rails.root}/designs"
|
130
136
|
default_url_options = ActionController::Base.default_url_options
|
131
137
|
default_site_url = "#{default_url_options[:protocol]||'http'}://#{default_url_options[:domain]}"
|
data/lib/newsletter/version.rb
CHANGED
data/newsletter.gemspec
CHANGED
@@ -13,6 +13,17 @@ Gem::Specification.new do |gem|
|
|
13
13
|
gem.description = %q{Email newsletter templating and management system which allows a designer to develop templates and elements that are email-friendly and allows a user to create newsletters without html/css knowledge utilizing a wysiwyg interface. Also available with the mail manager (including contact and mailing list management, double opt-in mailing list sign up, mailer, and bounce processing) and user access as the iReach gem.}
|
14
14
|
gem.summary = %q{Newsletter templating and management system.}
|
15
15
|
gem.homepage = "http://ireachnews.com"
|
16
|
+
gem.post_install_message = <<-EOT
|
17
|
+
Added 'Style Sheet' text area to newsletter design.
|
18
|
+
**This allows us to properly trigger viewport for mobile window size in newsletter editor.
|
19
|
+
|
20
|
+
** Required Actions ( pre 3.2.7 ) **
|
21
|
+
Please move your inline styles to the new 'Style Sheet' text area in the newsletter design editor.
|
22
|
+
|
23
|
+
** Required Actions for every upgrade **
|
24
|
+
rake newsletter:upgrade # this adds any new migrations and migrates your DB ...
|
25
|
+
** NOTE! you should try this in development before pushing to your production site
|
26
|
+
EOT
|
16
27
|
|
17
28
|
gem.add_dependency "rails", "~>3.2"
|
18
29
|
gem.add_dependency "jquery-rails", "~>3.1"
|
@@ -10,12 +10,12 @@ credentials: &credentials
|
|
10
10
|
|
11
11
|
development:
|
12
12
|
<<: *credentials
|
13
|
-
database:
|
13
|
+
database: newsletter_development
|
14
14
|
|
15
15
|
test:
|
16
16
|
<<: *credentials
|
17
|
-
database:
|
17
|
+
database: newsletter_test
|
18
18
|
|
19
19
|
production:
|
20
20
|
<<: *credentials
|
21
|
-
database:
|
21
|
+
database: newsletter
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class CarrierWaveForAssets < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
table_prefix = 'newsletter_'
|
4
|
+
begin
|
5
|
+
table_prefix = ::Newsletter.table_prefix
|
6
|
+
rescue
|
7
|
+
end
|
8
|
+
rename_column :"#{table_prefix}assets", :filename, :image
|
9
|
+
end
|
10
|
+
|
11
|
+
def down
|
12
|
+
table_prefix = 'newsletter_'
|
13
|
+
begin
|
14
|
+
table_prefix = ::Newsletter.table_prefix
|
15
|
+
rescue
|
16
|
+
end
|
17
|
+
rename_column :"#{table_prefix}assets", :image, :filename
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class AddStylesheetTextToDesigns < ActiveRecord::Migration
|
2
|
+
def table_prefix
|
3
|
+
table_prefix = 'newsletter_'
|
4
|
+
begin
|
5
|
+
table_prefix = ::Newsletter.table_prefix
|
6
|
+
rescue
|
7
|
+
end
|
8
|
+
end
|
9
|
+
def change
|
10
|
+
add_column :"#{table_prefix}designs", :stylesheet_text, :text
|
11
|
+
end
|
12
|
+
end
|
data/spec/test_app/db/schema.rb
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
#
|
12
12
|
# It's strongly recommended to check this file into your version control system.
|
13
13
|
|
14
|
-
ActiveRecord::Schema.define(:version =>
|
14
|
+
ActiveRecord::Schema.define(:version => 20150507195612) do
|
15
15
|
|
16
16
|
create_table "news_areas", :force => true do |t|
|
17
17
|
t.string "name", :null => false
|
@@ -45,13 +45,14 @@ ActiveRecord::Schema.define(:version => 20150414102034) do
|
|
45
45
|
end
|
46
46
|
|
47
47
|
create_table "news_designs", :force => true do |t|
|
48
|
-
t.string "name",
|
48
|
+
t.string "name", :null => false
|
49
49
|
t.string "description"
|
50
50
|
t.text "html_design"
|
51
51
|
t.integer "updated_by"
|
52
52
|
t.datetime "deleted_at"
|
53
|
-
t.datetime "created_at",
|
54
|
-
t.datetime "updated_at",
|
53
|
+
t.datetime "created_at", :null => false
|
54
|
+
t.datetime "updated_at", :null => false
|
55
|
+
t.text "stylesheet_text"
|
55
56
|
end
|
56
57
|
|
57
58
|
create_table "news_elements", :force => true do |t|
|
@@ -10,14 +10,14 @@ export CUC_SQLITE_SUCCESS=0
|
|
10
10
|
DBADAPTER=sqlite bundle exec rspec spec && export SQLITE_SUCCESS=1
|
11
11
|
DBADAPTER=sqlite bundle exec cucumber features && export CUC_SQLITE_SUCCESS=1
|
12
12
|
|
13
|
-
if [ $POSTGRES -eq 1 ]; then
|
13
|
+
if [ "$POSTGRES" -eq "1" ]; then
|
14
14
|
#RUN FOR Postgresql
|
15
15
|
cp config/database.postgres.local.yml config/database.yml
|
16
16
|
|
17
17
|
bundle exec rake db:schema:load
|
18
18
|
|
19
19
|
export PGSQL_SUCCESS=0
|
20
|
-
export
|
20
|
+
export CUC_PGSQL_SUCCESS=0
|
21
21
|
|
22
22
|
DBADAPTER=pg bundle exec rspec spec && export PGSQL_SUCCESS=1
|
23
23
|
DBADAPTER=pg bundle exec cucumber features && export CUC_PGSQL_SUCCESS=1
|
@@ -29,7 +29,7 @@ cp config/database.mysql.local.yml config/database.yml
|
|
29
29
|
bundle exec rake db:schema:load
|
30
30
|
|
31
31
|
export MYSQL_SUCCESS=0
|
32
|
-
export
|
32
|
+
export CUC_MYSQL_SUCCESS=0
|
33
33
|
|
34
34
|
DBADAPTER=mysql bundle exec rspec spec && export MYSQL_SUCCESS=1
|
35
35
|
DBADAPTER=mysql bundle exec cucumber features && export CUC_MYSQL_SUCCESS=1
|
@@ -2,7 +2,9 @@
|
|
2
2
|
def import_design(file=nil, name=nil)
|
3
3
|
name ||= Faker::Company.bs.split(/\s+/).each(&:capitalize).join(' ')
|
4
4
|
file ||= File.join(Newsletter::PLUGIN_ROOT,'designs','exports','example-export.yaml')
|
5
|
-
Newsletter::Design.import(file,name)
|
5
|
+
design = Newsletter::Design.import(file,name)
|
6
|
+
design.update_attribute(:stylesheet_text, ".blah{background-color: red}")
|
7
|
+
design
|
6
8
|
end
|
7
9
|
|
8
10
|
FactoryGirl.define do
|
@@ -3,7 +3,7 @@
|
|
3
3
|
FactoryGirl.define do
|
4
4
|
factory :newsletter, class: Newsletter::Newsletter do
|
5
5
|
name {Faker::Company.name}
|
6
|
-
description {Faker::Lorem.paragraphs(1)[0..125]}
|
6
|
+
description {Faker::Lorem.paragraphs(1).join("\n")[0..125]}
|
7
7
|
association :design
|
8
8
|
pieces do |newsletter|
|
9
9
|
left_area = newsletter.design.areas.where(name: 'left_column').first
|
@@ -19,6 +19,7 @@ EOT
|
|
19
19
|
fill_in "Name", with: "My Design"
|
20
20
|
fill_in "Description", with: "This is an awesome design!"
|
21
21
|
fill_in "HTML code", with: left_area_only_layout
|
22
|
+
fill_in "Style Sheet", with: ".bobos { background-color: blue; }"
|
22
23
|
click_link "Add Area"
|
23
24
|
find(:css, ".area input").set 'left_area'
|
24
25
|
click_button "Submit"
|
@@ -41,6 +42,7 @@ EOT
|
|
41
42
|
@right_area = @design.areas.detect{|a| a.name.eql?('right_area')}
|
42
43
|
@left_area = @design.areas.detect{|a| a.name.eql?('left_area')}
|
43
44
|
expect(remove_whitespace(@design.html_text)).to eq remove_whitespace(full_layout)
|
45
|
+
expect(@design.stylesheet_text).to eq ".bobos { background-color: blue; }"
|
44
46
|
end
|
45
47
|
and_it "when managing elements" do
|
46
48
|
and_it "can create an element with a text area in the left area" do
|
@@ -9,6 +9,27 @@ RSpec.describe Newsletter::Design do
|
|
9
9
|
expect(@design.name).to eq("My Design")
|
10
10
|
end
|
11
11
|
|
12
|
+
context "when name changed/moved" do
|
13
|
+
it "moves its images" do
|
14
|
+
old_images_path = @design.images_path
|
15
|
+
old_name = @design.name
|
16
|
+
expect(@design.images_path).to include("public/images/#{@design.name_as_path(@design.name)}")
|
17
|
+
expect(File.exist?(@design.images_path)).to be true
|
18
|
+
new_name = @design.name + " NEW!"
|
19
|
+
expect{@design.update_attributes(name: new_name)}.not_to raise_error
|
20
|
+
expect(@design.name).to eq new_name
|
21
|
+
expect(@design.images_path).to include("public/images/#{@design.name_as_path(new_name)}")
|
22
|
+
expect(File.exist?(old_images_path)).to be false
|
23
|
+
expect(File.exist?(@design.images_path)).to be true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context "has an associated stylesheet" do
|
28
|
+
it "that is accessible" do
|
29
|
+
expect{@design.stylesheet_text}.not_to raise_error
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
12
33
|
context "whether it exports and imports correctly" do
|
13
34
|
it "doesn't blow up" do
|
14
35
|
reimported_design = nil
|
@@ -20,11 +41,14 @@ RSpec.describe Newsletter::Design do
|
|
20
41
|
)
|
21
42
|
end
|
22
43
|
and_it "has the same elements" do
|
23
|
-
expect(
|
24
|
-
pluck(:name).sort
|
44
|
+
expect(reimported_design.elements.pluck(:name).sort).to eq @design.
|
45
|
+
elements.pluck(:name).sort
|
25
46
|
end
|
26
47
|
and_it "knows its images" do
|
27
|
-
expect(
|
48
|
+
expect(reimported_design.images).to include("newsletter_header.png")
|
49
|
+
end
|
50
|
+
and_it "knows its stylesheet" do
|
51
|
+
expect(reimported_design.stylesheet_text).to eq @design.stylesheet_text
|
28
52
|
end
|
29
53
|
end
|
30
54
|
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
RSpec.describe Newsletter::Engine do
|
4
|
+
it "can set table prefix to empty" do
|
5
|
+
Newsletter.table_prefix = nil
|
6
|
+
conf = Newsletter::Settings.new(
|
7
|
+
'spec/support/files/newsletter_empty_table_prefix.yml')
|
8
|
+
Newsletter.initialize_with_config(conf)
|
9
|
+
expect(Newsletter.table_prefix).to eq ''
|
10
|
+
end
|
11
|
+
end
|
@@ -25,6 +25,10 @@ RSpec.describe Newsletter::Newsletter do
|
|
25
25
|
expect(@newsletter.generate(:email)).not_to include('<script>')
|
26
26
|
end
|
27
27
|
|
28
|
+
it "contains its stylesheet" do
|
29
|
+
expect(@newsletter.generate(:email)).to match %r|<style>\s+#{@design.stylesheet_text}\s+</style>|
|
30
|
+
end
|
31
|
+
|
28
32
|
it "can generate an email_html" do
|
29
33
|
email_html = @newsletter.email_html
|
30
34
|
expect(email_html.strip).not_to eq ''
|
@@ -89,6 +93,23 @@ EOT
|
|
89
93
|
end
|
90
94
|
end
|
91
95
|
|
96
|
+
it "contains its stylesheet for public generation", js: true do
|
97
|
+
visit '/newsletters/archive'
|
98
|
+
expect(@newsletter.generate(:public)).to \
|
99
|
+
match %r|<link.*/newsletters/#{@newsletter.id}/stylesheet.css|
|
100
|
+
end
|
101
|
+
|
102
|
+
it "returns its stylesheet from the public url: /newsletters/:id/stylesheet.css" do
|
103
|
+
visit "/newsletters/#{@newsletter.id}/stylesheet.css"
|
104
|
+
expect(page.body.strip).to eq @newsletter.design.stylesheet_text.strip
|
105
|
+
end
|
106
|
+
|
107
|
+
it "contains its stylesheet for editor generation", js: true do
|
108
|
+
visit '/newsletters/archive'
|
109
|
+
expect(@newsletter.generate(:editor)).to \
|
110
|
+
match %r|<link.*/newsletters/#{@newsletter.id}/stylesheet.css|
|
111
|
+
end
|
112
|
+
|
92
113
|
context "regarding its public url" do
|
93
114
|
it "goes to the default without any mode" do
|
94
115
|
expect(@newsletter.public_url).to eq \
|
@@ -0,0 +1,12 @@
|
|
1
|
+
---
|
2
|
+
common:
|
3
|
+
site_url: http://newsletter.dev
|
4
|
+
table_prefix:
|
5
|
+
designs_path: <%= "#{Rails.root}/" %>
|
6
|
+
use_show_for_resources: false
|
7
|
+
asset_path: newsletter_assets
|
8
|
+
site_path: /
|
9
|
+
layout: newsletter/application
|
10
|
+
test:
|
11
|
+
site_url: http://newsletter.lvh.me:4447
|
12
|
+
designs_path: <%= "#{Rails.root}/tmp" %>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: newsletter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.
|
4
|
+
version: 3.2.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lone Star Internet
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-05-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -247,7 +247,9 @@ files:
|
|
247
247
|
- app/views/newsletter/newsletters/edit.html.erb
|
248
248
|
- app/views/newsletter/newsletters/index.html.erb
|
249
249
|
- app/views/newsletter/newsletters/new.html.erb
|
250
|
+
- app/views/newsletter/newsletters/show.css.erb
|
250
251
|
- app/views/newsletter/newsletters/show.html.erb
|
252
|
+
- app/views/newsletter/newsletters/stylesheet.css
|
251
253
|
- app/views/newsletter/pieces/_form.html.erb
|
252
254
|
- app/views/newsletter/pieces/edit.html.erb
|
253
255
|
- app/views/newsletter/pieces/new.html.erb
|
@@ -258,6 +260,8 @@ files:
|
|
258
260
|
- config/routes.rb
|
259
261
|
- config/spring.rb
|
260
262
|
- db/migrate/001_newsletter_initial.rb
|
263
|
+
- db/migrate/002_carrier_wave_for_assets.rb
|
264
|
+
- db/migrate/003_add_stylesheet_text_to_designs.rb
|
261
265
|
- db/pre-scoped/002_newsletter_scoped.rb
|
262
266
|
- designs/exports/Example.yml
|
263
267
|
- designs/exports/example-export.yaml
|
@@ -310,6 +314,8 @@ files:
|
|
310
314
|
- spec/test_app/config/spring.rb
|
311
315
|
- spec/test_app/db/migrate/20131222171229_newsletter_initial.rb
|
312
316
|
- spec/test_app/db/migrate/20131222171230_create_users.rb
|
317
|
+
- spec/test_app/db/migrate/20150507154748_carrier_wave_for_assets.rb
|
318
|
+
- spec/test_app/db/migrate/20150507195612_add_stylesheet_text_to_designs.rb
|
313
319
|
- spec/test_app/db/schema.rb
|
314
320
|
- spec/test_app/features/newsletter_management.feature
|
315
321
|
- spec/test_app/features/piece_management.feature
|
@@ -348,6 +354,7 @@ files:
|
|
348
354
|
- spec/test_app/spec/models/newsletter/asset_spec.rb
|
349
355
|
- spec/test_app/spec/models/newsletter/design_spec.rb
|
350
356
|
- spec/test_app/spec/models/newsletter/element_spec.rb
|
357
|
+
- spec/test_app/spec/models/newsletter/engine_spec.rb
|
351
358
|
- spec/test_app/spec/models/newsletter/inline_asset_spec.rb
|
352
359
|
- spec/test_app/spec/models/newsletter/newsletter_spec.rb
|
353
360
|
- spec/test_app/spec/models/newsletter/piece_spec.rb
|
@@ -358,13 +365,20 @@ files:
|
|
358
365
|
- spec/test_app/spec/support/continuances.rb
|
359
366
|
- spec/test_app/spec/support/database_cleaner.rb
|
360
367
|
- spec/test_app/spec/support/files/iReach_logo.gif
|
368
|
+
- spec/test_app/spec/support/files/newsletter_empty_table_prefix.yml
|
361
369
|
- spec/test_app/spec/support/files/test.pdf
|
362
370
|
- spec/test_app/spec/support/functions.rb
|
363
371
|
homepage: http://ireachnews.com
|
364
372
|
licenses:
|
365
373
|
- MIT
|
366
374
|
metadata: {}
|
367
|
-
post_install_message:
|
375
|
+
post_install_message: " Added 'Style Sheet' text area to newsletter design.\n **This
|
376
|
+
allows us to properly trigger viewport for mobile window size in newsletter editor.\n
|
377
|
+
\ \n ** Required Actions ( pre 3.2.7 ) **\n Please move your inline styles
|
378
|
+
to the new 'Style Sheet' text area in the newsletter design editor.\n \n **
|
379
|
+
Required Actions for every upgrade **\n rake newsletter:upgrade # this adds any
|
380
|
+
new migrations and migrates your DB ...\n ** NOTE! you should try this in development
|
381
|
+
before pushing to your production site\n"
|
368
382
|
rdoc_options: []
|
369
383
|
require_paths:
|
370
384
|
- lib
|
@@ -423,6 +437,8 @@ test_files:
|
|
423
437
|
- spec/test_app/config/spring.rb
|
424
438
|
- spec/test_app/db/migrate/20131222171229_newsletter_initial.rb
|
425
439
|
- spec/test_app/db/migrate/20131222171230_create_users.rb
|
440
|
+
- spec/test_app/db/migrate/20150507154748_carrier_wave_for_assets.rb
|
441
|
+
- spec/test_app/db/migrate/20150507195612_add_stylesheet_text_to_designs.rb
|
426
442
|
- spec/test_app/db/schema.rb
|
427
443
|
- spec/test_app/features/newsletter_management.feature
|
428
444
|
- spec/test_app/features/piece_management.feature
|
@@ -461,6 +477,7 @@ test_files:
|
|
461
477
|
- spec/test_app/spec/models/newsletter/asset_spec.rb
|
462
478
|
- spec/test_app/spec/models/newsletter/design_spec.rb
|
463
479
|
- spec/test_app/spec/models/newsletter/element_spec.rb
|
480
|
+
- spec/test_app/spec/models/newsletter/engine_spec.rb
|
464
481
|
- spec/test_app/spec/models/newsletter/inline_asset_spec.rb
|
465
482
|
- spec/test_app/spec/models/newsletter/newsletter_spec.rb
|
466
483
|
- spec/test_app/spec/models/newsletter/piece_spec.rb
|
@@ -471,5 +488,6 @@ test_files:
|
|
471
488
|
- spec/test_app/spec/support/continuances.rb
|
472
489
|
- spec/test_app/spec/support/database_cleaner.rb
|
473
490
|
- spec/test_app/spec/support/files/iReach_logo.gif
|
491
|
+
- spec/test_app/spec/support/files/newsletter_empty_table_prefix.yml
|
474
492
|
- spec/test_app/spec/support/files/test.pdf
|
475
493
|
- spec/test_app/spec/support/functions.rb
|