newsletter 0.1.2 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/.gitignore +2 -0
- data/.ruby-version +1 -1
- data/Gemfile +6 -4
- data/app/controllers/newsletter/application_controller.rb +6 -3
- data/app/controllers/newsletter/designs_controller.rb +1 -1
- data/app/controllers/newsletter/pieces_controller.rb +6 -5
- data/app/models/newsletter.rb +0 -9
- data/app/models/newsletter/design.rb +4 -2
- data/app/models/newsletter/element.rb +2 -9
- data/app/models/newsletter/field.rb +0 -4
- data/app/models/newsletter/piece.rb +1 -1
- data/config/spring.rb +1 -0
- data/lib/newsletter/settings.rb +3 -3
- data/lib/newsletter/version.rb +1 -1
- data/newsletter.gemspec +9 -9
- data/newsletters/exports/example-export.yaml +134 -147
- data/spec/spec_helper.rb +14 -0
- data/spec/test_app/.rspec +1 -0
- data/spec/test_app/config/cucumber.yml +8 -0
- data/spec/test_app/config/database.mysql.yml +28 -0
- data/spec/test_app/config/{database.yml → database.sqlite.yml} +0 -0
- data/spec/test_app/config/newsletter.yml +2 -2
- data/spec/test_app/config/spring.rb +1 -0
- data/spec/test_app/db/structure.sql +12 -0
- data/spec/test_app/features/step_definitions/.gitkeep +0 -0
- data/spec/test_app/features/support/env.rb +58 -0
- data/spec/test_app/lib/tasks/cucumber.rake +65 -0
- data/spec/test_app/newsletters/designs/My_Design/elements/_left_column_article.html.erb +10 -0
- data/spec/test_app/newsletters/designs/My_Design/elements/_left_column_image.html.erb +2 -0
- data/spec/test_app/newsletters/designs/My_Design/elements/_right_column_article.html.erb +5 -0
- data/spec/test_app/newsletters/designs/My_Design/elements/_right_column_headline.html.erb +1 -0
- data/spec/test_app/newsletters/designs/My_Design/elements/_right_column_image.html.erb +1 -0
- data/spec/test_app/newsletters/designs/My_Design/elements/_right_column_paragraph.html.erb +3 -0
- data/spec/test_app/newsletters/designs/My_Design/layout.html.erb +66 -0
- data/spec/test_app/newsletters/designs/Testo_Changeo/elements/_left_column_article.html.erb +10 -0
- data/spec/test_app/newsletters/designs/Testo_Changeo/layout.html.erb +66 -0
- data/spec/test_app/newsletters/designs/empower_innovative_e-business/elements/_left_column_article.html.erb +10 -0
- data/spec/test_app/newsletters/designs/empower_innovative_e-business/elements/_left_column_image.html.erb +2 -0
- data/spec/test_app/newsletters/designs/empower_innovative_e-business/elements/_right_column_article.html.erb +5 -0
- data/spec/test_app/newsletters/designs/empower_innovative_e-business/elements/_right_column_headline.html.erb +1 -0
- data/spec/test_app/newsletters/designs/empower_innovative_e-business/elements/_right_column_image.html.erb +1 -0
- data/spec/test_app/newsletters/designs/empower_innovative_e-business/elements/_right_column_paragraph.html.erb +3 -0
- data/spec/test_app/newsletters/designs/empower_innovative_e-business/layout.html.erb +66 -0
- data/spec/test_app/newsletters/designs/enable_extensible_systems/elements/_left_column_article.html.erb +10 -0
- data/spec/test_app/newsletters/designs/enable_extensible_systems/elements/_left_column_image.html.erb +2 -0
- data/spec/test_app/newsletters/designs/enable_extensible_systems/elements/_right_column_article.html.erb +5 -0
- data/spec/test_app/newsletters/designs/enable_extensible_systems/elements/_right_column_headline.html.erb +1 -0
- data/spec/test_app/newsletters/designs/enable_extensible_systems/elements/_right_column_image.html.erb +1 -0
- data/spec/test_app/newsletters/designs/enable_extensible_systems/elements/_right_column_paragraph.html.erb +3 -0
- data/spec/test_app/newsletters/designs/enable_extensible_systems/layout.html.erb +66 -0
- data/spec/test_app/newsletters/designs/engage_innovative_schemas/elements/_left_column_article.html.erb +10 -0
- data/spec/test_app/newsletters/designs/engage_innovative_schemas/elements/_left_column_image.html.erb +2 -0
- data/spec/test_app/newsletters/designs/engage_innovative_schemas/elements/_right_column_article.html.erb +5 -0
- data/spec/test_app/newsletters/designs/engage_innovative_schemas/elements/_right_column_headline.html.erb +1 -0
- data/spec/test_app/newsletters/designs/engage_innovative_schemas/elements/_right_column_image.html.erb +1 -0
- data/spec/test_app/newsletters/designs/engage_innovative_schemas/elements/_right_column_paragraph.html.erb +3 -0
- data/spec/test_app/newsletters/designs/engage_innovative_schemas/layout.html.erb +67 -0
- data/spec/test_app/newsletters/designs/envisioneer_seamless_ROI/elements/_left_column_article.html.erb +10 -0
- data/spec/test_app/newsletters/designs/envisioneer_seamless_ROI/elements/_left_column_image.html.erb +2 -0
- data/spec/test_app/newsletters/designs/envisioneer_seamless_ROI/elements/_right_column_article.html.erb +5 -0
- data/spec/test_app/newsletters/designs/envisioneer_seamless_ROI/elements/_right_column_headline.html.erb +1 -0
- data/spec/test_app/newsletters/designs/envisioneer_seamless_ROI/elements/_right_column_image.html.erb +1 -0
- data/spec/test_app/newsletters/designs/envisioneer_seamless_ROI/elements/_right_column_paragraph.html.erb +3 -0
- data/spec/test_app/newsletters/designs/envisioneer_seamless_ROI/layout.html.erb +66 -0
- data/spec/test_app/newsletters/designs/harness_integrated_partnerships/elements/_left_column_article.html.erb +10 -0
- data/spec/test_app/newsletters/designs/harness_integrated_partnerships/elements/_left_column_image.html.erb +2 -0
- data/spec/test_app/newsletters/designs/harness_integrated_partnerships/elements/_right_column_article.html.erb +5 -0
- data/spec/test_app/newsletters/designs/harness_integrated_partnerships/elements/_right_column_headline.html.erb +1 -0
- data/spec/test_app/newsletters/designs/harness_integrated_partnerships/elements/_right_column_image.html.erb +1 -0
- data/spec/test_app/newsletters/designs/harness_integrated_partnerships/elements/_right_column_paragraph.html.erb +3 -0
- data/spec/test_app/newsletters/designs/harness_integrated_partnerships/layout.html.erb +66 -0
- data/spec/test_app/newsletters/designs/innovate_24_365_functionalities/elements/_left_column_article.html.erb +10 -0
- data/spec/test_app/newsletters/designs/innovate_24_365_functionalities/elements/_left_column_image.html.erb +2 -0
- data/spec/test_app/newsletters/designs/innovate_24_365_functionalities/elements/_right_column_article.html.erb +5 -0
- data/spec/test_app/newsletters/designs/innovate_24_365_functionalities/elements/_right_column_headline.html.erb +1 -0
- data/spec/test_app/newsletters/designs/innovate_24_365_functionalities/elements/_right_column_image.html.erb +1 -0
- data/spec/test_app/newsletters/designs/innovate_24_365_functionalities/elements/_right_column_paragraph.html.erb +3 -0
- data/spec/test_app/newsletters/designs/innovate_24_365_functionalities/layout.html.erb +66 -0
- data/spec/test_app/newsletters/designs/integrate_mission-critical_systems/elements/_left_column_article.html.erb +10 -0
- data/spec/test_app/newsletters/designs/integrate_mission-critical_systems/layout.html.erb +66 -0
- data/spec/test_app/newsletters/designs/iterate_real-time_web-readiness/elements/_left_column_article.html.erb +10 -0
- data/spec/test_app/newsletters/designs/iterate_real-time_web-readiness/elements/_left_column_image.html.erb +2 -0
- data/spec/test_app/newsletters/designs/iterate_real-time_web-readiness/elements/_right_column_article.html.erb +5 -0
- data/spec/test_app/newsletters/designs/iterate_real-time_web-readiness/elements/_right_column_headline.html.erb +1 -0
- data/spec/test_app/newsletters/designs/iterate_real-time_web-readiness/elements/_right_column_image.html.erb +1 -0
- data/spec/test_app/newsletters/designs/iterate_real-time_web-readiness/elements/_right_column_paragraph.html.erb +3 -0
- data/spec/test_app/newsletters/designs/iterate_real-time_web-readiness/layout.html.erb +67 -0
- data/spec/test_app/newsletters/designs/iterate_strategic_architectures/elements/_left_column_article.html.erb +10 -0
- data/spec/test_app/newsletters/designs/iterate_strategic_architectures/elements/_left_column_image.html.erb +2 -0
- data/spec/test_app/newsletters/designs/iterate_strategic_architectures/elements/_right_column_article.html.erb +5 -0
- data/spec/test_app/newsletters/designs/iterate_strategic_architectures/elements/_right_column_headline.html.erb +1 -0
- data/spec/test_app/newsletters/designs/iterate_strategic_architectures/elements/_right_column_image.html.erb +1 -0
- data/spec/test_app/newsletters/designs/iterate_strategic_architectures/elements/_right_column_paragraph.html.erb +3 -0
- data/spec/test_app/newsletters/designs/iterate_strategic_architectures/layout.html.erb +67 -0
- data/spec/test_app/newsletters/designs/orchestrate_sticky_communities/elements/_left_column_article.html.erb +10 -0
- data/spec/test_app/newsletters/designs/orchestrate_sticky_communities/elements/_left_column_image.html.erb +2 -0
- data/spec/test_app/newsletters/designs/orchestrate_sticky_communities/elements/_right_column_article.html.erb +5 -0
- data/spec/test_app/newsletters/designs/orchestrate_sticky_communities/elements/_right_column_headline.html.erb +1 -0
- data/spec/test_app/newsletters/designs/orchestrate_sticky_communities/elements/_right_column_image.html.erb +1 -0
- data/spec/test_app/newsletters/designs/orchestrate_sticky_communities/elements/_right_column_paragraph.html.erb +3 -0
- data/spec/test_app/newsletters/designs/orchestrate_sticky_communities/layout.html.erb +67 -0
- data/spec/test_app/newsletters/designs/repurpose_impactful_partnerships/elements/_left_column_article.html.erb +10 -0
- data/spec/test_app/newsletters/designs/repurpose_impactful_partnerships/elements/_left_column_image.html.erb +2 -0
- data/spec/test_app/newsletters/designs/repurpose_impactful_partnerships/elements/_right_column_article.html.erb +5 -0
- data/spec/test_app/newsletters/designs/repurpose_impactful_partnerships/elements/_right_column_headline.html.erb +1 -0
- data/spec/test_app/newsletters/designs/repurpose_impactful_partnerships/elements/_right_column_image.html.erb +1 -0
- data/spec/test_app/newsletters/designs/repurpose_impactful_partnerships/elements/_right_column_paragraph.html.erb +3 -0
- data/spec/test_app/newsletters/designs/repurpose_impactful_partnerships/layout.html.erb +67 -0
- data/spec/test_app/newsletters/designs/revolutionize_robust_partnerships/elements/_left_column_article.html.erb +10 -0
- data/spec/test_app/newsletters/designs/revolutionize_robust_partnerships/elements/_left_column_image.html.erb +2 -0
- data/spec/test_app/newsletters/designs/revolutionize_robust_partnerships/elements/_right_column_article.html.erb +5 -0
- data/spec/test_app/newsletters/designs/revolutionize_robust_partnerships/elements/_right_column_headline.html.erb +1 -0
- data/spec/test_app/newsletters/designs/revolutionize_robust_partnerships/elements/_right_column_image.html.erb +1 -0
- data/spec/test_app/newsletters/designs/revolutionize_robust_partnerships/elements/_right_column_paragraph.html.erb +3 -0
- data/spec/test_app/newsletters/designs/revolutionize_robust_partnerships/layout.html.erb +66 -0
- data/spec/test_app/newsletters/designs/revolutionize_turn-key_bandwidth/elements/_left_column_article.html.erb +10 -0
- data/spec/test_app/newsletters/designs/revolutionize_turn-key_bandwidth/elements/_left_column_image.html.erb +2 -0
- data/spec/test_app/newsletters/designs/revolutionize_turn-key_bandwidth/elements/_right_column_article.html.erb +5 -0
- data/spec/test_app/newsletters/designs/revolutionize_turn-key_bandwidth/elements/_right_column_headline.html.erb +1 -0
- data/spec/test_app/newsletters/designs/revolutionize_turn-key_bandwidth/elements/_right_column_image.html.erb +1 -0
- data/spec/test_app/newsletters/designs/revolutionize_turn-key_bandwidth/elements/_right_column_paragraph.html.erb +3 -0
- data/spec/test_app/newsletters/designs/revolutionize_turn-key_bandwidth/layout.html.erb +66 -0
- data/spec/test_app/newsletters/designs/scale_ubiquitous_synergies/elements/_left_column_article.html.erb +10 -0
- data/spec/test_app/newsletters/designs/scale_ubiquitous_synergies/elements/_left_column_image.html.erb +2 -0
- data/spec/test_app/newsletters/designs/scale_ubiquitous_synergies/elements/_right_column_article.html.erb +5 -0
- data/spec/test_app/newsletters/designs/scale_ubiquitous_synergies/elements/_right_column_headline.html.erb +1 -0
- data/spec/test_app/newsletters/designs/scale_ubiquitous_synergies/elements/_right_column_image.html.erb +1 -0
- data/spec/test_app/newsletters/designs/scale_ubiquitous_synergies/elements/_right_column_paragraph.html.erb +3 -0
- data/spec/test_app/newsletters/designs/scale_ubiquitous_synergies/layout.html.erb +67 -0
- data/spec/test_app/newsletters/designs/syndicate_visionary_metrics/elements/_left_column_article.html.erb +10 -0
- data/spec/test_app/newsletters/designs/syndicate_visionary_metrics/elements/_left_column_image.html.erb +2 -0
- data/spec/test_app/newsletters/designs/syndicate_visionary_metrics/elements/_right_column_article.html.erb +5 -0
- data/spec/test_app/newsletters/designs/syndicate_visionary_metrics/elements/_right_column_headline.html.erb +1 -0
- data/spec/test_app/newsletters/designs/syndicate_visionary_metrics/elements/_right_column_image.html.erb +1 -0
- data/spec/test_app/newsletters/designs/syndicate_visionary_metrics/elements/_right_column_paragraph.html.erb +3 -0
- data/spec/test_app/newsletters/designs/syndicate_visionary_metrics/layout.html.erb +66 -0
- data/spec/test_app/newsletters/designs/target_enterprise_functionalities/elements/_left_column_article.html.erb +10 -0
- data/spec/test_app/newsletters/designs/target_enterprise_functionalities/elements/_left_column_image.html.erb +2 -0
- data/spec/test_app/newsletters/designs/target_enterprise_functionalities/elements/_right_column_article.html.erb +5 -0
- data/spec/test_app/newsletters/designs/target_enterprise_functionalities/elements/_right_column_headline.html.erb +1 -0
- data/spec/test_app/newsletters/designs/target_enterprise_functionalities/elements/_right_column_image.html.erb +1 -0
- data/spec/test_app/newsletters/designs/target_enterprise_functionalities/elements/_right_column_paragraph.html.erb +3 -0
- data/spec/test_app/newsletters/designs/target_enterprise_functionalities/layout.html.erb +67 -0
- data/spec/test_app/newsletters/designs/transition_enterprise_systems/elements/_left_column_article.html.erb +10 -0
- data/spec/test_app/newsletters/designs/transition_enterprise_systems/layout.html.erb +66 -0
- data/spec/test_app/newsletters/designs/utilize_one-to-one_schemas/elements/_left_column_article.html.erb +10 -0
- data/spec/test_app/newsletters/designs/utilize_one-to-one_schemas/elements/_left_column_image.html.erb +2 -0
- data/spec/test_app/newsletters/designs/utilize_one-to-one_schemas/elements/_right_column_article.html.erb +5 -0
- data/spec/test_app/newsletters/designs/utilize_one-to-one_schemas/elements/_right_column_headline.html.erb +1 -0
- data/spec/test_app/newsletters/designs/utilize_one-to-one_schemas/elements/_right_column_image.html.erb +1 -0
- data/spec/test_app/newsletters/designs/utilize_one-to-one_schemas/elements/_right_column_paragraph.html.erb +3 -0
- data/spec/test_app/newsletters/designs/utilize_one-to-one_schemas/layout.html.erb +66 -0
- data/spec/test_app/script/cucumber +10 -0
- data/spec/test_app/spec/factories/designs.rb +13 -0
- data/spec/test_app/spec/factories/newsletters.rb +28 -0
- data/spec/test_app/spec/features/newsletter/newsletter_spec.rb +24 -0
- data/spec/test_app/spec/models/newsletter/design_spec.rb +11 -0
- data/spec/test_app/spec/models/newsletter/newsletter_spec.rb +27 -0
- data/spec/test_app/spec/spec_helper.rb +76 -0
- data/spec/test_app/spec/support/database_cleaner.rb +23 -0
- metadata +750 -50
- data/Procfile +0 -2
- data/engine_plan.rb +0 -13
- data/lib/newsletter/config.rb +0 -50
- data/zeus.json +0 -22
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NmM2ZjA1ZGZiODAxODZhNGUzMDZmMGIzZDQ3NTRhYjI0YzEzZDJkNg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MzJmMjgzYzYwYmZkOGUxYzRhNGM3OTAyYmMzMzAyNDI4MGUzYzFkYg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZTZkZDNkZTJkYzczNmQ4ZDViMmQzNTExMjZlMTNkZjZlMWNmZDg1YWRlOTk2
|
10
|
+
NzA5NmJkY2MwYzNlNTBkN2EyZjI3YTVkNmFhZGEyZDRkMTc0NmUyMDMxZjE2
|
11
|
+
MTgzM2NlMzgxMDUxYzlhOTZiMDBiNzRjMDFjNzRlZGUwNjcxYTE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NjYwZTg1MTVlNzgzMzFhYTYwYTIyMGQ4NDJkNTQ4OTFkNDVlY2E0OGZkOTI4
|
14
|
+
YzMzZTRlZGNhMGNjZWJmMmU3MjY3ZDU4MTY2NGYzNzRlMTgwZWM1MWMzODNm
|
15
|
+
ZjQ1Yjg4OGU5NzA1MzQ3N2QzNzA1Y2NlNTQ5ZGY3YWFiMDk5ZDg=
|
data/.gitignore
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-1.9.3-
|
1
|
+
ruby-1.9.3-p551
|
data/Gemfile
CHANGED
@@ -14,13 +14,15 @@ gem "jquery-rails"
|
|
14
14
|
# your gem to rubygems.org.
|
15
15
|
|
16
16
|
# Testing Gems
|
17
|
+
gem 'mysql2'
|
17
18
|
gem "rspec-rails", "~>2.14"
|
19
|
+
gem "cucumber-rails", require: false
|
18
20
|
gem "factory_girl_rails", "~>4.3"
|
21
|
+
gem 'poltergeist'
|
19
22
|
gem "faker"
|
20
23
|
gem "sqlite3"
|
21
|
-
gem 'foreman'
|
22
24
|
gem 'database_cleaner'
|
23
|
-
gem 'guard-rspec'
|
24
|
-
gem 'guard-livereload'
|
25
|
-
gem 'zeus'
|
26
25
|
gem 'pry-rails'
|
26
|
+
gem 'spring'
|
27
|
+
gem 'spring-commands-rspec'
|
28
|
+
gem 'spring-commands-cucumber'
|
@@ -1,9 +1,12 @@
|
|
1
1
|
require 'dynamic_form'
|
2
2
|
require 'nested_form'
|
3
|
-
class Newsletter::ApplicationController <
|
3
|
+
class Newsletter::ApplicationController < ApplicationController
|
4
4
|
layout 'newsletter/application'
|
5
5
|
helper_method :title, :use_show_for_resources?, :site_url, :show_title?
|
6
|
-
|
6
|
+
load_and_authorize_resource if respond_to? :load_and_authorize_resource
|
7
|
+
|
8
|
+
before_filter :authenticate_user! if respond_to? :authenticate_user!
|
9
|
+
|
7
10
|
def title(value=nil)
|
8
11
|
@title = value if value.present?
|
9
12
|
@title
|
@@ -24,4 +27,4 @@ class Newsletter::ApplicationController < ActionController::Base
|
|
24
27
|
rescue
|
25
28
|
"#{default_url_options[:protocol]||'http'}://#{default_url_options[:domain]}"
|
26
29
|
end
|
27
|
-
end
|
30
|
+
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
module Newsletter
|
2
2
|
class PiecesController < ::Newsletter::ApplicationController
|
3
|
-
layout 'admin'
|
4
3
|
before_filter :find_piece, :except => [:new,:create,:index]
|
5
4
|
before_filter :find_newsletter
|
6
5
|
before_filter :find_element
|
@@ -51,21 +50,23 @@ module Newsletter
|
|
51
50
|
protected
|
52
51
|
|
53
52
|
def find_piece
|
54
|
-
@piece
|
53
|
+
return @piece if @piece.newsletter.present?
|
54
|
+
return nil unless params[:id].present?
|
55
|
+
@piece ||= Piece.find_by_id(params[:id])
|
55
56
|
end
|
56
57
|
|
57
58
|
def find_newsletter
|
58
|
-
return @newsletter =
|
59
|
+
return @newsletter = find_piece.newsletter unless find_piece.nil?
|
59
60
|
@newsletter = ::Newsletter::Newsletter.find(params[:newsletter_id] || params[:piece][:newsletter_id])
|
60
61
|
end
|
61
62
|
|
62
63
|
def find_element
|
63
|
-
return @element =
|
64
|
+
return @element = find_piece.element unless find_piece.nil?
|
64
65
|
@element = Element.find(params[:element_id] || params[:piece][:element_id])
|
65
66
|
end
|
66
67
|
|
67
68
|
def find_area
|
68
|
-
return @area =
|
69
|
+
return @area = find_piece.area unless find_piece.nil?
|
69
70
|
@area = Area.find(params[:area_id] || params[:piece][:area_id])
|
70
71
|
end
|
71
72
|
end
|
data/app/models/newsletter.rb
CHANGED
@@ -1,11 +1,2 @@
|
|
1
1
|
module Newsletter
|
2
2
|
end
|
3
|
-
|
4
|
-
require 'newsletter/area'
|
5
|
-
require 'newsletter/asset'
|
6
|
-
require 'newsletter/element'
|
7
|
-
require 'newsletter/field'
|
8
|
-
require 'newsletter/field_value'
|
9
|
-
require 'newsletter/newsletter'
|
10
|
-
require 'newsletter/piece'
|
11
|
-
require 'newsletter/design'
|
@@ -7,7 +7,7 @@ Newsletter::Designs define a main layout, with areas to group Elements/Pieces.
|
|
7
7
|
|
8
8
|
=end
|
9
9
|
|
10
|
-
module Newsletter
|
10
|
+
module ::Newsletter
|
11
11
|
class Design < ActiveRecord::Base
|
12
12
|
self.table_name = "#{::Newsletter.table_prefix}designs"
|
13
13
|
has_many :areas, :order => :name, :class_name => 'Newsletter::Area'
|
@@ -49,6 +49,7 @@ module Newsletter
|
|
49
49
|
def self.import(filename,design_name=nil)
|
50
50
|
raise "You must give a filename to import!" unless filename
|
51
51
|
data = YAML.load_file(filename)
|
52
|
+
design = nil
|
52
53
|
transaction do
|
53
54
|
data[:name] = design_name if design_name
|
54
55
|
design = Design.create!(:name => data[:name],
|
@@ -61,6 +62,7 @@ module Newsletter
|
|
61
62
|
Element.import(design,element_data)
|
62
63
|
end
|
63
64
|
end
|
65
|
+
design
|
64
66
|
end
|
65
67
|
|
66
68
|
# returns path to newsletter design for use in views and is the same for actual file
|
@@ -157,4 +159,4 @@ module Newsletter
|
|
157
159
|
# end
|
158
160
|
# end
|
159
161
|
end
|
160
|
-
end
|
162
|
+
end
|
@@ -66,16 +66,9 @@ module Newsletter
|
|
66
66
|
super
|
67
67
|
end
|
68
68
|
end
|
69
|
-
# {"0"=>{"name"=>"asdfas", "label"=>"asdfasd", "description"=>"fasdfasdf",
|
70
|
-
# "type"=>"Newsletter::Field::TextArea", "_destroy"=>"false", "id"=>"22"},
|
71
|
-
# "1"=>{"name"=>"asdfasdf", "label"=>"asdfasdf", "description"=>"asdfasdf",
|
72
|
-
# "type"=>"Newsletter::Field::InlineAsset", "_destroy"=>"false", "id"=>"23"}}
|
73
|
-
# # # used to modify Newsletter::Fields in-form
|
74
|
-
def fields_attributes=(fields_attributes)
|
75
|
-
@fields_attributes = fields_attributes
|
76
|
-
end
|
77
69
|
|
78
70
|
def save_fields
|
71
|
+
return true unless @fields_attributes.present?
|
79
72
|
@fields_attributes.each_pair do |index,attributes|
|
80
73
|
should_destroy = ['true','1'].include?attributes.delete(:_destroy)
|
81
74
|
if attributes[:id].blank?
|
@@ -166,4 +159,4 @@ module Newsletter
|
|
166
159
|
# end
|
167
160
|
# end
|
168
161
|
end
|
169
|
-
end
|
162
|
+
end
|
@@ -22,7 +22,6 @@ module Newsletter
|
|
22
22
|
scope :by_area, lambda {|area| {:conditions => {:area_id => area.id, :deleted_at => nil}}}
|
23
23
|
scope :by_newsletter, lambda {|newsletter| {:conditions => {:newsletter_id => newsletter.id, :deleted_at => nil}}}
|
24
24
|
|
25
|
-
# accepts_nested_attributes_for :field_values
|
26
25
|
attr_accessor :field_values_attributes
|
27
26
|
|
28
27
|
attr_protected :id
|
@@ -43,6 +42,7 @@ module Newsletter
|
|
43
42
|
end
|
44
43
|
|
45
44
|
def newsletter
|
45
|
+
return nil unless newsletter_id.present?
|
46
46
|
@newsletter ||= ::Newsletter::Newsletter.find(newsletter_id)
|
47
47
|
end
|
48
48
|
|
data/config/spring.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Spring.application_root = './spec/test_app'
|
data/lib/newsletter/settings.rb
CHANGED
@@ -41,10 +41,10 @@ class Newsletter::Settings
|
|
41
41
|
$stderr.puts "Missing Configuration: either define ::Conf with proper values or create a config/newsletter.yml with rake newsletter:default_app_config"
|
42
42
|
end
|
43
43
|
c = ::Newsletter::Settings.new
|
44
|
-
c.use_file!(
|
45
|
-
c.use_file!(
|
44
|
+
c.use_file!(standard_file)
|
45
|
+
c.use_file!(local_file)
|
46
46
|
c.use_section!(Rails.env)
|
47
47
|
c
|
48
48
|
end
|
49
49
|
|
50
|
-
end
|
50
|
+
end
|
data/lib/newsletter/version.rb
CHANGED
data/newsletter.gemspec
CHANGED
@@ -9,19 +9,19 @@ Gem::Specification.new do |gem|
|
|
9
9
|
gem.version = Newsletter::VERSION
|
10
10
|
gem.authors = ["Lone Star Internet"]
|
11
11
|
gem.email = ["biz@lone-star.net"]
|
12
|
-
gem.
|
13
|
-
gem.
|
12
|
+
gem.licenses = ['MIT']
|
13
|
+
gem.description = %q{Newsletter templating and management system.}
|
14
|
+
gem.summary = %q{Newsletter templating and management system.}
|
14
15
|
gem.homepage = "http://ireach.com"
|
15
16
|
|
16
17
|
gem.add_dependency "rails", "~>3.2"
|
17
|
-
gem.add_dependency "mini_magick"
|
18
|
-
gem.add_dependency "will_paginate"
|
19
|
-
gem.add_dependency 'carrierwave'
|
20
|
-
gem.add_dependency "delayed_job", "~>4"
|
18
|
+
gem.add_dependency "mini_magick", "~>4.1"
|
19
|
+
gem.add_dependency "will_paginate", "~>3.0"
|
20
|
+
gem.add_dependency 'carrierwave', "~>0.10"
|
21
21
|
gem.add_dependency "dynamic_form", "~>1.1"
|
22
|
-
gem.add_dependency 'nested_form'
|
23
|
-
gem.add_dependency '
|
24
|
-
gem.add_dependency '
|
22
|
+
gem.add_dependency 'nested_form', "~>0.3"
|
23
|
+
gem.add_dependency 'acts_as_list', "~>0.5"
|
24
|
+
gem.add_dependency 'cancancan', "~>1.9"
|
25
25
|
|
26
26
|
gem.files = `git ls-files`.split($/)
|
27
27
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
@@ -1,213 +1,200 @@
|
|
1
|
-
---
|
2
|
-
:name:
|
3
|
-
:
|
1
|
+
---
|
2
|
+
:name: My Design
|
3
|
+
:html_text: ! "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n<html
|
4
|
+
xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n<meta http-equiv=\"Content-Type\"
|
5
|
+
content=\"text/html; charset=utf-8\" />\r\n<title>Simple Newsletter</title>\r\n<style
|
6
|
+
type=\"text/css\">\r\nh1{font-family: Arial Black, Arial, Helvetica, sans-serif;
|
7
|
+
color: #333333; font-size:22px; margin:0; padding: 20px 0 10px 0; }\r\nh2{font-family:
|
8
|
+
Arial Black, Arial, Helvetica, sans-serif; color: #333333; font-size:17px; margin:0;
|
9
|
+
padding: 7px 0 0 0;}\r\nh3 {font-family: Arial Black, Arial, Helvetica, sans-serif;
|
10
|
+
color: #0068b3; font-size:9pt; margin:0; padding: 0;}\r\np {font-family: Arial,
|
11
|
+
Helvetica, sans-serif; color: #333333; font-size:8.5pt; margin-top:4px; margin-bottom:4px;}\r\np.right{font-family:
|
12
|
+
Arial, Helvetica, sans-serif; color: #333333; font-size:9.5pt; margin:0 0 15px 0;
|
13
|
+
padding: 0; line-height:1.2em;}\r\na{text-decoration:none; color: #0068b3;}\r\na:hover
|
14
|
+
{color: #7fc348;}\r\n.footer {font-size:7pt;}\r\np a {font-size: 6pt; font-weight:
|
15
|
+
bold;}\r\np.right a {font-size: 7pt;}\r\nhr{color: #7fc348; margin:5px 0; height:
|
16
|
+
1px; padding: 0;}\r\n.bullet {color: #7fc348; font-weight: bold; height: 5px;}\r\np.pullquote
|
17
|
+
{color: #333333; background:url(<%= asset_path( \"images/pullquote_bg.gif\") %>)
|
18
|
+
repeat-x ; margin:0; padding: 15px; text-align:center; font-style: italic; font-size:
|
19
|
+
7pt;}\r\np.pullquote a { color: #333333;}\r\np.pullquote a:hover {color: #0068b3;}\r\n</style><% unless is_email? %><%=
|
20
|
+
yield :head_content %><%= javascript_include_tag :application %><% end %>\r\n</head>\r\n\r\n<body>\r\n<table
|
21
|
+
cellspacing=\"0\" cellpadding=\"0\" style=\"margin: 0 8px; width: 574px;\">\r\n<tr><td
|
22
|
+
colspan=\"2\" align=\"center\">\r\n<%= image_tag \"images/newsletter_header.gif\",
|
23
|
+
\ {:width=>\"564\"} %></td></tr>\r\n<tr bgcolor=\"#0068b3\" cellpadding=\"2\" cellspacing=\"2\"><td
|
24
|
+
style=\"font-family:arial,sans-serif;font-size:11px;color:#FFFFFF;\"cellpadding=\"2\"
|
25
|
+
cellspacing=\"2\">A Professional Employer Organization Newsletter</td><td align=\"right\"
|
26
|
+
style=\"font-family:arial,sans-serif;font-size:12px;color:#FFFFFF;\" cellpadding=\"2\"
|
27
|
+
cellspacing=\"2\"><%= @newsletter.name %></td></tr><h3><%= link_to \"Newsletter
|
28
|
+
Archives\", \"#{::Newsletter.site_url}/newsletters/archive\", :target => '_blank'
|
29
|
+
%></h3>\r\n</table>\r\n\r\n<table cellspacing=\"0\" cellpadding=\"0\" style=\"margin:
|
30
|
+
0 8px; width: 574px;\">\r\n<tr valign=\"top\">\r\n<td width=\"227\">\r\n\r\n<h2>In
|
31
|
+
This Issue</h2>\r\n<!-- Left Column -->\r\n<%= render left_column %>\r\n<hr />\r\n\r\n<h3><%=
|
32
|
+
link_to \"Newsletter Archives\", \"#{::Newsletter.site_url}/newsletters/archive\",
|
33
|
+
:target => '_blank' %></h3>\r\n\r\n\r\n<p>If you missed a previous release or simply
|
34
|
+
want to review an article of interest, all our newsletters have been archived. <%=
|
35
|
+
link_to \"Read More\", \"#{::Newsletter.site_url}/newsletters/archive\" %></p>\r\n\r\n\r\n</td>\r\n<!--Right
|
36
|
+
Column-->\r\n<td width=\"347\" style=\"padding-left: 15px; padding-top: 20px;\">\r\n<%=
|
37
|
+
render right_column %>\r\n</td>\r\n</tr>\r\n\r\n<% if is_email? %>\r\n<tr><td colspan=\"3\"><hr
|
38
|
+
/><p class=\"footer\" align=\"center\"><font color=\"#aaaaaa\">To remove your address
|
39
|
+
from this newsletter list, please click <%= link_to \"Here\", '#UNSUBSCRIBE_URL#'
|
40
|
+
%>.</font></p></td></tr>\r\n<% end %>\r\n\r\n<tr><td colspan=\"3\"><hr /><p class=\"footer\"
|
41
|
+
align=\"center\"><font color=\"#555555\"><b>My Company, Inc.</b> <span class=\"bullet\">•</span>
|
42
|
+
123 Test Road <span class=\"bullet\">•</span> Austin, TX 78230 p:210.495.1171
|
43
|
+
<span class=\"bullet\">•</span> f:555.555.1244 <span class=\"bullet\">•</span>
|
44
|
+
toll free: 1.800.555.5555</font></p></td></tr>\r\n\r\n\r\n\r\n\r\n\r\n\r\n</table>\r\n</body>\r\n</html>\r\n"
|
45
|
+
:description: This is the simple newsletter template.
|
46
|
+
:areas:
|
47
|
+
- :name: left_column
|
48
|
+
:description: This will house the elements of the 'left_column'
|
49
|
+
- :name: right_column
|
50
|
+
:description: This will house the elements of the 'right_column'
|
51
|
+
:elements:
|
4
52
|
- :name: Left Column Article
|
5
|
-
:
|
53
|
+
:description: Has a heading, an excerpt, and a Read More link
|
54
|
+
:html_text: ! '<hr />
|
55
|
+
|
56
|
+
<h3>
|
57
|
+
|
58
|
+
<% unless link.url.blank? %>
|
59
|
+
|
60
|
+
<%= link_to headline, link.url %>
|
61
|
+
|
62
|
+
<% else %>
|
63
|
+
|
64
|
+
<%=h headline %>
|
65
|
+
|
66
|
+
<% end %>
|
67
|
+
|
68
|
+
</h3>
|
69
|
+
|
70
|
+
|
71
|
+
<p><%= filter(article_excerpt) %> <nobr><%= link_to(''Read More'', link.url) unless
|
72
|
+
link.url.blank? %></nobr></p>
|
73
|
+
|
74
|
+
'
|
75
|
+
:areas:
|
6
76
|
- :name: left_column
|
7
77
|
:description: This will house the elements of the 'left_column'
|
8
|
-
:
|
9
|
-
:fields:
|
78
|
+
:fields:
|
10
79
|
- :name: article_excerpt
|
80
|
+
:label: Article Excerpt
|
11
81
|
:sequence:
|
82
|
+
:is_required:
|
12
83
|
:description: Article Excerpt
|
13
|
-
:label: Article Excerpt
|
14
84
|
:type: Newsletter::Field::TextArea
|
15
|
-
:is_required:
|
16
85
|
- :name: link
|
86
|
+
:label: Read More Link
|
17
87
|
:sequence:
|
88
|
+
:is_required:
|
18
89
|
:description: Read More Link
|
19
|
-
:label: Read More Link
|
20
90
|
:type: Newsletter::Field::InlineAsset
|
21
|
-
:is_required:
|
22
91
|
- :name: headline
|
92
|
+
:label: Headline
|
23
93
|
:sequence:
|
94
|
+
:is_required:
|
24
95
|
:description: Headline
|
25
|
-
:label: Headline
|
26
96
|
:type: Newsletter::Field::Text
|
27
|
-
:is_required:
|
28
|
-
:html_text: |
|
29
|
-
<hr />
|
30
|
-
<h3>
|
31
|
-
<% unless link.url.blank? %>
|
32
|
-
<%= link_to headline, link.url %>
|
33
|
-
<% else %>
|
34
|
-
<%=h headline %>
|
35
|
-
<% end %>
|
36
|
-
</h3>
|
37
|
-
|
38
|
-
<p><%= filter(article_excerpt) %> <nobr><%= link_to('Read More', link.url) unless link.url.blank? %></nobr></p>
|
39
|
-
|
40
97
|
- :name: Left Column Image
|
41
|
-
:
|
98
|
+
:description: Image that is formatted for the left column
|
99
|
+
:html_text: ! '<hr />
|
100
|
+
|
101
|
+
<p><%= image_tag image.url, {:width=>"220", :alt=>image.text } %></p>
|
102
|
+
|
103
|
+
'
|
104
|
+
:areas:
|
42
105
|
- :name: left_column
|
43
106
|
:description: This will house the elements of the 'left_column'
|
44
|
-
:
|
45
|
-
:fields:
|
107
|
+
:fields:
|
46
108
|
- :name: image
|
109
|
+
:label: Image
|
47
110
|
:sequence: 1
|
111
|
+
:is_required: true
|
48
112
|
:description: image formatted for left column
|
49
|
-
:label: Image
|
50
113
|
:type: Newsletter::Field::InlineAsset
|
51
|
-
:is_required: true
|
52
|
-
:html_text: |
|
53
|
-
<hr />
|
54
|
-
<p><%= image_tag image.url, {:width=>"220", :alt=>image.text } %></p>
|
55
|
-
|
56
114
|
- :name: Right column article
|
57
|
-
:
|
115
|
+
:description: RIght Column Article
|
116
|
+
:html_text: ! '<h1><%= headline %></h1>
|
117
|
+
|
118
|
+
<p class="right">
|
119
|
+
|
120
|
+
<%= image_tag(image.url, {:width=>"174", :vspace=>"5", :hspace=>"10", :align=>"left",
|
121
|
+
:alt => image.text} ) unless image.url.blank? %>
|
122
|
+
|
123
|
+
<%= filter(article_excerpt) %>
|
124
|
+
|
125
|
+
<nobr><%= link_to(''Read More'', link.url) unless link.url.blank? %></nobr></p>'
|
126
|
+
:areas:
|
58
127
|
- :name: right_column
|
59
128
|
:description: This will house the elements of the 'right_column'
|
60
|
-
:
|
61
|
-
:fields:
|
129
|
+
:fields:
|
62
130
|
- :name: headline
|
131
|
+
:label: Headline
|
63
132
|
:sequence:
|
133
|
+
:is_required:
|
64
134
|
:description: Headline
|
65
|
-
:label: Headline
|
66
135
|
:type: Newsletter::Field::Text
|
67
|
-
:is_required:
|
68
136
|
- :name: image
|
137
|
+
:label: Image
|
69
138
|
:sequence:
|
139
|
+
:is_required:
|
70
140
|
:description: Article Image
|
71
|
-
:label: Image
|
72
141
|
:type: Newsletter::Field::InlineAsset
|
73
|
-
:is_required:
|
74
142
|
- :name: link
|
143
|
+
:label: Read More Link
|
75
144
|
:sequence:
|
145
|
+
:is_required:
|
76
146
|
:description: Read More Link
|
77
|
-
:label: Read More Link
|
78
147
|
:type: Newsletter::Field::InlineAsset
|
79
|
-
:is_required:
|
80
148
|
- :name: article_excerpt
|
149
|
+
:label: Article Excerpt
|
81
150
|
:sequence:
|
151
|
+
:is_required:
|
82
152
|
:description: Article Excerpt
|
83
|
-
:label: Article Excerpt
|
84
153
|
:type: Newsletter::Field::TextArea
|
85
|
-
:is_required:
|
86
|
-
:html_text: |-
|
87
|
-
<h1><%= headline %></h1>
|
88
|
-
<p class="right">
|
89
|
-
<%= image_tag(image.url, {:width=>"174", :vspace=>"5", :hspace=>"10", :align=>"left", :alt => image.text} ) unless image.url.blank? %>
|
90
|
-
<%= filter(article_excerpt) %>
|
91
|
-
<nobr><%= link_to('Read More', link.url) unless link.url.blank? %></nobr></p>
|
92
154
|
- :name: Right Column Headline
|
93
|
-
:
|
155
|
+
:description: Headline for use in the right column!
|
156
|
+
:html_text: <h1><%= headline %></h1>
|
157
|
+
:areas:
|
94
158
|
- :name: right_column
|
95
159
|
:description: This will house the elements of the 'right_column'
|
96
|
-
:
|
97
|
-
:fields:
|
160
|
+
:fields:
|
98
161
|
- :name: headline
|
162
|
+
:label: Headline
|
99
163
|
:sequence:
|
164
|
+
:is_required:
|
100
165
|
:description: Headline
|
101
|
-
:label: Headline
|
102
166
|
:type: Newsletter::Field::Text
|
103
|
-
:is_required:
|
104
|
-
:html_text: <h1><%= headline %></h1>
|
105
167
|
- :name: Right Column Image
|
106
|
-
:
|
168
|
+
:description: Image for use in the right column
|
169
|
+
:html_text: ! '<%= image_tag image.url, {:width=>"320", :alt=>image.text, :style=>"margin:0;
|
170
|
+
padding: 15px 0 0 0;"} %>'
|
171
|
+
:areas:
|
107
172
|
- :name: right_column
|
108
173
|
:description: This will house the elements of the 'right_column'
|
109
|
-
:
|
110
|
-
:fields:
|
174
|
+
:fields:
|
111
175
|
- :name: image
|
176
|
+
:label: Image
|
112
177
|
:sequence:
|
178
|
+
:is_required:
|
113
179
|
:description: Right Column Image
|
114
|
-
:label: Image
|
115
180
|
:type: Newsletter::Field::InlineAsset
|
116
|
-
:is_required:
|
117
|
-
:html_text: "<%= image_tag image.url, {:width=>\"320\", :alt=>image.text, :style=>\"margin:0; padding: 15px 0 0 0;\"} %>"
|
118
181
|
- :name: Right Column Paragraph
|
119
|
-
:
|
182
|
+
:description: paragraph for use in the right column, may contain a link
|
183
|
+
:html_text: ! "<p class=\"right\">\n\t<%= filter(body) %> <%= link_to 'Read More',
|
184
|
+
link.url unless link.url.blank? %>\n</p>"
|
185
|
+
:areas:
|
120
186
|
- :name: right_column
|
121
187
|
:description: This will house the elements of the 'right_column'
|
122
|
-
:
|
123
|
-
:fields:
|
188
|
+
:fields:
|
124
189
|
- :name: link
|
190
|
+
:label: Link
|
125
191
|
:sequence:
|
192
|
+
:is_required:
|
126
193
|
:description: Link
|
127
|
-
:label: Link
|
128
194
|
:type: Newsletter::Field::InlineAsset
|
129
|
-
:is_required:
|
130
195
|
- :name: body
|
196
|
+
:label: Body
|
131
197
|
:sequence:
|
198
|
+
:is_required:
|
132
199
|
:description: Body
|
133
|
-
:label: Body
|
134
200
|
:type: Newsletter::Field::TextArea
|
135
|
-
:is_required:
|
136
|
-
:html_text: |-
|
137
|
-
<p class="right">
|
138
|
-
<%= filter(body) %> <%= link_to 'Read More', link.url unless link.url.blank? %>
|
139
|
-
</p>
|
140
|
-
:areas:
|
141
|
-
- :name: left_column
|
142
|
-
:description: This will house the elements of the 'left_column'
|
143
|
-
- :name: right_column
|
144
|
-
:description: This will house the elements of the 'right_column'
|
145
|
-
:description: This is the monthly newsletter template for eEmployers
|
146
|
-
:html_text: |
|
147
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
148
|
-
<html xmlns="http://www.w3.org/1999/xhtml">
|
149
|
-
<head>
|
150
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
151
|
-
<title>eEmployers Newsletter</title>
|
152
|
-
<style type="text/css">
|
153
|
-
h1{font-family: Arial Black, Arial, Helvetica, sans-serif; color: #333333; font-size:22px; margin:0; padding: 20px 0 10px 0; }
|
154
|
-
h2{font-family: Arial Black, Arial, Helvetica, sans-serif; color: #333333; font-size:17px; margin:0; padding: 7px 0 0 0;}
|
155
|
-
h3 {font-family: Arial Black, Arial, Helvetica, sans-serif; color: #0068b3; font-size:9pt; margin:0; padding: 0;}
|
156
|
-
p {font-family: Arial, Helvetica, sans-serif; color: #333333; font-size:8.5pt; margin-top:4px; margin-bottom:4px;}
|
157
|
-
p.right{font-family: Arial, Helvetica, sans-serif; color: #333333; font-size:9.5pt; margin:0 0 15px 0; padding: 0; line-height:1.2em;}
|
158
|
-
a{text-decoration:none; color: #0068b3;}
|
159
|
-
a:hover {color: #7fc348;}
|
160
|
-
.footer {font-size:7pt;}
|
161
|
-
p a {font-size: 6pt; font-weight: bold;}
|
162
|
-
p.right a {font-size: 7pt;}
|
163
|
-
hr{color: #7fc348; margin:5px 0; height: 1px; padding: 0;}
|
164
|
-
.bullet {color: #7fc348; font-weight: bold; height: 5px;}
|
165
|
-
p.pullquote {color: #333333; background:url(http://www.eesipeo.com/newsletter_images/pullquote_bg.gif) repeat-x ; margin:0; padding: 15px; text-align:center; font-style: italic; font-size: 7pt;}
|
166
|
-
p.pullquote a { color: #333333;}
|
167
|
-
p.pullquote a:hover {color: #0068b3;}
|
168
|
-
</style><%= yield :head_content %><%= javascript_include_tag :defaults %>
|
169
|
-
</head>
|
170
|
-
|
171
|
-
<body>
|
172
|
-
<table cellspacing="0" cellpadding="0" style="margin: 0 8px; width: 574px;">
|
173
|
-
<tr><td colspan="2" align="center">
|
174
|
-
<%= image_tag "#{::Newsletter.site_url}/images/newsletter_header.gif", {:width=>"564"} %></td></tr>
|
175
|
-
<tr bgcolor="#0068b3" cellpadding="2" cellspacing="2"><td style="font-family:arial,sans-serif;font-size:11px;color:#FFFFFF;"cellpadding="2" cellspacing="2">A Professional Employer Organization Newsletter</td><td align="right" style="font-family:arial,sans-serif;font-size:12px;color:#FFFFFF;" cellpadding="2" cellspacing="2"><%= @newsletter.name %></td></tr>
|
176
|
-
</table>
|
177
|
-
|
178
|
-
<table cellspacing="0" cellpadding="0" style="margin: 0 8px; width: 574px;">
|
179
|
-
<tr valign="top">
|
180
|
-
<td width="227">
|
181
|
-
|
182
|
-
<h2>In This Issue</h2>
|
183
|
-
<!-- Left Column -->
|
184
|
-
<%= render left_column %>
|
185
|
-
<hr />
|
186
|
-
|
187
|
-
<h3><%= link_to "PeopleTalk Archives", "http://test1.lnstar.com/newsletters/archive", :target => '_blank' %></h3>
|
188
|
-
|
189
|
-
<p>If you missed a previous release or simply want to review an article of interest, all our PeopleTalk newsletters have been archived. <%= link_to "Read More", "http://test1.lnstar.com/newsletters/archive" %></p>
|
190
|
-
|
191
|
-
|
192
|
-
</td>
|
193
|
-
<!--Right Column-->
|
194
|
-
<td width="347" style="padding-left: 15px; padding-top: 20px;">
|
195
|
-
<%= render right_column %>
|
196
|
-
</td>
|
197
|
-
</tr>
|
198
|
-
|
199
|
-
<% if is_email? %>
|
200
|
-
<tr><td colspan="3"><hr /><p class="footer" align="center"><font color="#aaaaaa">To remove your address from this newsletter list, please click <%= link_to "Here", '#UNSUBSCRIBE_URL#' %>.</font></p></td></tr>
|
201
|
-
<% end %>
|
202
|
-
|
203
|
-
<tr><td colspan="3"><hr /><p class="footer" align="center"><font color="#555555"><b>eEmployers Solutions, Inc.</b> <span class="bullet">•</span> 12211 Huebner Road <span class="bullet">•</span> San Antonio, TX 78230 p:210.495.1171 <span class="bullet">•</span> f:210.495.1244 <span class="bullet">•</span> toll free: 1.888.465.1171</font></p></td></tr>
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
</table>
|
211
|
-
</body>
|
212
|
-
</html>
|
213
|
-
|