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.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -0
  3. data/app/controllers/newsletter/newsletters_controller.rb +8 -2
  4. data/app/models/newsletter/design.rb +11 -6
  5. data/app/models/newsletter/element.rb +1 -1
  6. data/app/models/newsletter/newsletter.rb +5 -0
  7. data/app/views/newsletter/designs/_form.html.erb +2 -0
  8. data/app/views/newsletter/newsletters/_head.html.erb +1 -1
  9. data/app/views/newsletter/newsletters/_newsletter.html.erb +13 -2
  10. data/app/views/newsletter/newsletters/archive.html.erb +1 -1
  11. data/app/views/newsletter/newsletters/edit.html.erb +1 -1
  12. data/app/views/newsletter/newsletters/show.css.erb +1 -0
  13. data/app/views/newsletter/newsletters/show.html.erb +13 -2
  14. data/app/views/newsletter/newsletters/stylesheet.css +1 -0
  15. data/config/locales/newsletters.en.yml +1 -0
  16. data/config/routes.rb +1 -1
  17. data/db/migrate/002_carrier_wave_for_assets.rb +19 -0
  18. data/db/migrate/003_add_stylesheet_text_to_designs.rb +12 -0
  19. data/designs/exports/example-export.yaml +61 -268
  20. data/lib/newsletter/engine.rb +7 -1
  21. data/lib/newsletter/version.rb +1 -1
  22. data/newsletter.gemspec +11 -0
  23. data/spec/test_app/config/database.postgres.yml +3 -3
  24. data/spec/test_app/db/migrate/20150507154748_carrier_wave_for_assets.rb +19 -0
  25. data/spec/test_app/db/migrate/20150507195612_add_stylesheet_text_to_designs.rb +12 -0
  26. data/spec/test_app/db/schema.rb +5 -4
  27. data/spec/test_app/script/full_suite +3 -3
  28. data/spec/test_app/spec/factories/designs.rb +3 -1
  29. data/spec/test_app/spec/factories/newsletters.rb +1 -1
  30. data/spec/test_app/spec/features/newsletter/design_spec.rb +2 -0
  31. data/spec/test_app/spec/models/newsletter/design_spec.rb +27 -3
  32. data/spec/test_app/spec/models/newsletter/engine_spec.rb +11 -0
  33. data/spec/test_app/spec/models/newsletter/newsletter_spec.rb +21 -0
  34. data/spec/test_app/spec/support/files/newsletter_empty_table_prefix.yml +12 -0
  35. metadata +21 -3
@@ -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
- ::Newsletter.table_prefix ||= conf.table_prefix || 'newsletter_' rescue 'newsletter_'
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]}"
@@ -1,3 +1,3 @@
1
1
  module Newsletter
2
- VERSION = "3.2.6"
2
+ VERSION = "3.2.7"
3
3
  end
@@ -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: mail_manager_development
13
+ database: newsletter_development
14
14
 
15
15
  test:
16
16
  <<: *credentials
17
- database: mail_manager_test
17
+ database: newsletter_test
18
18
 
19
19
  production:
20
20
  <<: *credentials
21
- database: mail_manager
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
@@ -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 => 20150414102034) do
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", :null => false
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", :null => false
54
- t.datetime "updated_at", :null => false
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 CUCPGSQL_SUCCESS=0
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 CUCMYSQL_SUCCESS=0
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(@design.elements.pluck(:name).sort).to eq reimported_design.elements.
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(@design.images).to include("newsletter_header.png")
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.6
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-04-30 00:00:00.000000000 Z
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