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