channel_research_stationery 2.10.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: be8fcc51204385c46925f081845b58c219b823c2
4
+ data.tar.gz: 5db73a74956902fdb88e7c5c703d2e029b323ece
5
+ SHA512:
6
+ metadata.gz: 3f5f9ddaa172edfa781ed39bbb394fc4aa312860c876259994fb203248ac7752f097e3b09f41db64e002b52b13d7e9bf7dcc036c23667415609ebecb87f58a88
7
+ data.tar.gz: 902cdec642b2f97fe80e160c7cae6d5880445e58ff6d3ce951314c1837e79ab94d1bb2deab3ccfc46a0074c5d959c0a6df94034a3463a1000001270ffa163e1a
@@ -0,0 +1,103 @@
1
+ require 'haml'
2
+ require 'premailer'
3
+ require 'nokogiri'
4
+ require 'sassc'
5
+
6
+ class ChannelResearchStationery
7
+ def initialize(content, options = {})
8
+ @content = content
9
+ @primary_color = options.delete(:primary_color) || '#6d6e71'
10
+ @options = default_options.merge(options)
11
+ end
12
+
13
+ def to_text
14
+ Premailer.new(to_html,
15
+ {
16
+ warn_level: Premailer::Warnings::SAFE
17
+ }
18
+ ).to_plain_text
19
+ end
20
+
21
+ def to_html
22
+ @body_with_inline_css = body_with_inline_css
23
+ layout_path = File.join( __dir__, "./generators/templates/layout.html.erb" )
24
+ contents = File.open(layout_path, "rb").read
25
+ ERB.new(contents).result( binding )
26
+ end
27
+
28
+ def body_with_inline_css
29
+ doc_with_placeholder_content.at('body').to_html
30
+ end
31
+
32
+ def doc_with_placeholder_content
33
+ doc = Nokogiri::HTML(template_with_inline_css)
34
+ doc.at('div#main_content') << @content
35
+ # Add content-editable bits
36
+ doc.xpath('//*[@class="contenteditable"]').each do |node|
37
+ node['contenteditable'] = 'true'
38
+ end
39
+ return doc
40
+ end
41
+
42
+ def template_with_inline_css
43
+ Premailer.new(template,
44
+ {
45
+ warn_level: Premailer::Warnings::SAFE,
46
+ css_string: css_string,
47
+ with_html_string: true
48
+ }
49
+ ).to_inline_css
50
+ end
51
+
52
+ def placeholder_content
53
+ contents = File.open("lib/generators/templates/placeholder_contents/#{@options['placeholder']}").read
54
+ Haml::Engine.new(contents).render
55
+ end
56
+
57
+ def template
58
+ template_path = File.join( __dir__, "./generators/templates/template.html.haml" )
59
+ contents = File.open(template_path).read
60
+ engine = Haml::Engine.new(contents)
61
+ engine.render(Object.new, { options: @options })
62
+ end
63
+
64
+ def css_string
65
+ reset_css + styles_css
66
+ end
67
+
68
+ def reset_css
69
+ css_path = File.join( __dir__, "./generators/templates/reset.css" )
70
+ File.open(css_path).read
71
+ end
72
+
73
+ def sass_options
74
+ @options.select {|k,v| [:background_color,:header_background_color,:width].include?(k)}
75
+ end
76
+
77
+ def sass_variables
78
+ sass_options.map {|k,v| "$#{k}: #{v};"}.join("\n")
79
+ end
80
+
81
+ def styles_css
82
+ css_path = File.join( __dir__, "./generators/templates/styles.sass" )
83
+ sass_styles = File.open(css_path, "rb").read
84
+ sass = sass_variables + "\n" + sass_styles
85
+ SassC::Engine.new(sass, style: :compressed).render
86
+ end
87
+
88
+ def default_options
89
+ {
90
+ header_background_color: @primary_color,
91
+ link_color: @primary_color,
92
+ bold_color: @primary_color,
93
+ cta_background_color: @primary_color,
94
+ background_color: '#ffffff',
95
+ cta_color: '#ffffff',
96
+ width: '700px',
97
+ badge_left: false,
98
+ badge_right: false,
99
+ title: false,
100
+ subtitle: false
101
+ }
102
+ end
103
+ end
@@ -0,0 +1,13 @@
1
+ <html>
2
+ <head>
3
+ <title>Channel Research Team</title>
4
+ <link href='https://wwcci-email-assets.s3.amazonaws.com/bnb/css/myriad-set-pro.css' rel='stylesheet' type='text/css' />
5
+ <style>
6
+ #main_content a {color:<%= @options[:link_color] %>;}
7
+ #main_content strong, #main_content b {color:<%= @options[:bold_color] %>;}
8
+ #main_content img {max-width:100%;}
9
+ #main_content p.call_to_action a {color: <%= @options[:cta_color] %>;background-color: <%= @options[:cta_background_color] %>;}
10
+ </style>
11
+ </head>
12
+ <%= @body_with_inline_css %>
13
+ </html>
@@ -0,0 +1,120 @@
1
+ /*
2
+ YUI 3.18.1 (build f7e7bcb)
3
+ Copyright 2014 Yahoo! Inc. All rights reserved.
4
+ Licensed under the BSD License.
5
+ http://yuilibrary.com/license/
6
+ */
7
+
8
+ /*
9
+ TODO will need to remove settings on HTML since we can't namespace it.
10
+ TODO with the prefix, should I group by selector or property for weight savings?
11
+ */
12
+ html{
13
+ color:#000;
14
+ background:#FFF;
15
+ }
16
+ /*
17
+ TODO remove settings on BODY since we can't namespace it.
18
+ */
19
+ /*
20
+ TODO test putting a class on HEAD.
21
+ - Fails on FF.
22
+ */
23
+ body,
24
+ div,
25
+ dl,
26
+ dt,
27
+ dd,
28
+ ul,
29
+ ol,
30
+ li,
31
+ h1,
32
+ h2,
33
+ h3,
34
+ h4,
35
+ h5,
36
+ h6,
37
+ pre,
38
+ code,
39
+ form,
40
+ fieldset,
41
+ legend,
42
+ input,
43
+ textarea,
44
+ p,
45
+ blockquote,
46
+ th,
47
+ td {
48
+ margin:0;
49
+ padding:0;
50
+ }
51
+ table {
52
+ border-collapse:collapse;
53
+ border-spacing:0;
54
+ }
55
+ fieldset,
56
+ img {
57
+ border:0;
58
+ }
59
+ /*
60
+ TODO think about hanlding inheritence differently, maybe letting IE6 fail a bit...
61
+ */
62
+ address,
63
+ caption,
64
+ cite,
65
+ code,
66
+ dfn,
67
+ em,
68
+ strong,
69
+ th,
70
+ var {
71
+ font-style:normal;
72
+ font-weight:normal;
73
+ }
74
+
75
+ ol,
76
+ ul {
77
+ list-style:none;
78
+ }
79
+
80
+ caption,
81
+ th {
82
+ text-align:left;
83
+ }
84
+ h1,
85
+ h2,
86
+ h3,
87
+ h4,
88
+ h5,
89
+ h6 {
90
+ font-size:100%;
91
+ font-weight:normal;
92
+ }
93
+ q:before,
94
+ q:after {
95
+ content:'';
96
+ }
97
+ abbr,
98
+ acronym {
99
+ border:0;
100
+ font-variant:normal;
101
+ }
102
+ /* to preserve line-height and selector appearance */
103
+ sup {
104
+ vertical-align:text-top;
105
+ }
106
+ sub {
107
+ vertical-align:text-bottom;
108
+ }
109
+ input,
110
+ textarea,
111
+ select {
112
+ font-family:inherit;
113
+ font-size:inherit;
114
+ font-weight:inherit;
115
+ *font-size:100%; /*to enable resizing for IE*/
116
+ }
117
+ /*because legend doesn't inherit in IE */
118
+ legend {
119
+ color:#000;
120
+ }
@@ -0,0 +1,89 @@
1
+ body {background-color: $background_color;}
2
+ #background {background-color: $background_color;padding:20px 0px;}
3
+
4
+ table.email-body-wrap {
5
+ max-width: $width;
6
+ td {border:1px solid #d7d7d7;}
7
+ tr#header td {
8
+ background-color: $header_background_color;
9
+ padding: 13px 40px;
10
+ img {
11
+ float: left;
12
+ width: 23px;
13
+ height:28px;
14
+ margin-right:15px;
15
+ }
16
+ h3 {
17
+ color: #ffffff;
18
+ padding-top:8px;
19
+ font-size:13px;
20
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Arial, sans-serif;
21
+ letter-spacing: -1px;
22
+ }
23
+ }
24
+ tr#body td {
25
+ background-color:#ffffff;
26
+ padding: 40px 40px;
27
+ img#badge_right {
28
+ float: right;
29
+ margin-left:15px;
30
+ margin-bottom:15px;
31
+ }
32
+ img#badge_left {
33
+ float: left;
34
+ margin-right:15px;
35
+ margin-bottom:15px;
36
+ }
37
+ h1 {
38
+ padding-top:14px;
39
+ font-size:22px;
40
+ // font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
41
+ font-family: Helvetica, Arial, sans-serif;
42
+ // font-family: "MyriadSetProThin", "Lucida Grande", "Lucida Sans Unicode", Arial, sans-serif;
43
+ // font-family: "Lucida Grande", "Lucida Sans Unicode", Arial, sans-serif;
44
+ letter-spacing: -1px;
45
+ font-weight: 100;
46
+ line-height: 1.1em;
47
+ color: #000000;
48
+ }
49
+ h2 {
50
+ font-size:18px;
51
+ font-weight:normal;
52
+ font-family: Helvetica, Arial, sans-serif;
53
+ // font-family: "Lucida Grande", "Lucida Sans Unicode", Arial, sans-serif;
54
+ letter-spacing: -1px;
55
+ font-weight: 100;
56
+ padding-bottom:36px;
57
+ color: #666666;
58
+ }
59
+ #main_content {
60
+ font-size:13px;
61
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Arial, sans-serif;
62
+ letter-spacing: -1px;
63
+ color: #666666;
64
+ line-height: 19px;
65
+ -webkit-text-size-adjust: none;
66
+ -webkit-font-smoothing: antialiased;
67
+ }
68
+ }
69
+ tr#footer td {
70
+ color: #666666;
71
+ padding: 20px 40px;
72
+ font-size:11px;
73
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Arial, sans-serif;
74
+ letter-spacing: -1px;
75
+ border:0px;
76
+ }
77
+ tr#signature_catcher td {
78
+ color: #666666;
79
+ padding: 20px 40px;
80
+ font-size:11px;
81
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Arial, sans-serif;
82
+ letter-spacing: -1px;
83
+ border:0px;
84
+ }
85
+ .round_about_way_of_100_percent_width_that_helps_with_send_again {
86
+ color: $background_color;
87
+ }
88
+ }
89
+
@@ -0,0 +1,30 @@
1
+ %html
2
+ %body
3
+ #background
4
+ %table.email-body-wrap{align: 'center'}
5
+ %tr#header
6
+ %td
7
+ %img{:alt => "Apple", "aria-hidden" => "true", :src => "https://wwcci-email-assets.s3.amazonaws.com/bnb/images/apple.png"}/
8
+ %h3 Channel Research
9
+ %tr#body
10
+ %td
11
+ - if options[:badge_left]
12
+ %img#badge_left{:alt => "Apple", "aria-hidden" => "true", :src => "https://wwcci-email-assets.s3.amazonaws.com/bnb/images/#{options[:badge_left]}", height: 75}/
13
+ - if options[:badge_right]
14
+ %img#badge_right{:alt => "Apple", "aria-hidden" => "true", :src => "https://wwcci-email-assets.s3.amazonaws.com/bnb/images/#{options[:badge_right]}", height: 75}/
15
+ - if options[:title]
16
+ %h1= options[:title]
17
+ - if options[:subtitle]
18
+ %h2= options[:subtitle]
19
+ %div#main_content
20
+ %tr#footer
21
+ %td
22
+ %p TM and copyright &copy;#{DateTime.now.year} Apple Inc. All rights reserved.
23
+ %tr#signature_catcher
24
+ %td
25
+ %div{class: 'contenteditable'}
26
+ -# There is something about this div that is required by apple email
27
+ -# templates, otherwise your signature gets injected in a weird place
28
+ -# so I'm just leaving it here, empty.
29
+ %div{class: 'round_about_way_of_100_percent_width_that_helps_with_send_again'}
30
+ = '. '*130
metadata ADDED
@@ -0,0 +1,104 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: channel_research_stationery
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.10.1
5
+ platform: ruby
6
+ authors:
7
+ - Channel Research Team
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-06-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: premailer
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: haml
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: sassc
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: nokogiri
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: Email Stationery for Channel Research Team
70
+ email: no-reply@home.com
71
+ executables: []
72
+ extensions: []
73
+ extra_rdoc_files: []
74
+ files:
75
+ - lib/channel_research_stationery.rb
76
+ - lib/generators/templates/layout.html.erb
77
+ - lib/generators/templates/reset.css
78
+ - lib/generators/templates/styles.sass
79
+ - lib/generators/templates/template.html.haml
80
+ homepage: https://www.brandnewbox.com
81
+ licenses:
82
+ - MIT
83
+ metadata: {}
84
+ post_install_message:
85
+ rdoc_options: []
86
+ require_paths:
87
+ - lib
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ required_rubygems_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ requirements: []
99
+ rubyforge_project:
100
+ rubygems_version: 2.5.2
101
+ signing_key:
102
+ specification_version: 4
103
+ summary: Stationery
104
+ test_files: []