ish_manager 0.1.8.328 → 0.1.8.329

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6d4a0f293f7775d1cb692bd13e478037207e95d50cb0175b54f872d4c6f20ab6
4
- data.tar.gz: 68b17421aff68e4fc2bef3d1e2e3aba4d5d0ad8120b48e6b201700689433b198
3
+ metadata.gz: 168e3b80f936578509b925a3724a24455bded5f8ec0a340a9db76a02b827a11e
4
+ data.tar.gz: fafe8c1ae99e9677a8b3066410e263d8bfd762fdbf982e2216c83d652eee22cf
5
5
  SHA512:
6
- metadata.gz: a236d6ad5f3ea044628697590553d5752ed21343582f32ef7e9b1a94f8639c8e2d7b0ffca016867567bc9a9dfd3b1e9612e2dc6275d6805fdafe1d433a6529d3
7
- data.tar.gz: d333a3a14fcb5ff46e3c5c16e3549572e76145ab72233adab06e4a268b0cfe32eb3136d16b771bcd521ab337d26b1084e9118e6b52c93c2535374030be928187
6
+ metadata.gz: df33c3dc00fc249314ffeaf0c52ed075e3011ef2b0b939221f9820de50a588c5459c1fe4e3b22c4add4d8078e8ea636e010f5bffe4123e9a0411fdadf57725e1
7
+ data.tar.gz: f59723fe434089ae4e777f546514000c3b6b4fa9730710c535ff4979fe2dbbdb9c65cd6fa54314e67fc5f91959c5f4028fcfa3be42e375c73f425e5a8cd4a45d
@@ -10,6 +10,22 @@ $(document).ready(() => {
10
10
  const val = ev.target.value
11
11
  window.location.href = AppRouter.new_email_context_with(val)
12
12
  })
13
+
14
+ $("#ish_email_context_type").on('change', (ev) => {
15
+ const val = ev.target.value
16
+ if (val == 'TYPE_CAMPAIGN') {
17
+ $(".email-contexts--form .TYPE_SINGLE").css('display', 'none')
18
+ } else {
19
+ $(".email-contexts--form .TYPE_SINGLE").css('display', 'block')
20
+ }
21
+ })
22
+ // on page load:
23
+ if ($("#ish_email_context_type").val() == 'TYPE_CAMPAIGN') {
24
+ $(".email-contexts--form .TYPE_SINGLE").css('display', 'none')
25
+ } else {
26
+ $(".email-contexts--form .TYPE_SINGLE").css('display', 'block')
27
+ }
28
+
13
29
  }
14
30
 
15
31
  })
@@ -2,8 +2,8 @@
2
2
  class ::IshManager::EmailCampaignsController < IshManager::ApplicationController
3
3
 
4
4
  def index
5
- authorize! :index, Ish::Campaign
6
- @campaigns = Ish::Campaign.where( :profile => @current_profile, :is_trash => false )
5
+ authorize! :index, Ish::EmailCampaign
6
+ @campaigns = Ish::EmailCampaign.where( :profile => @current_profile, :is_trash => false )
7
7
  if params[:is_done]
8
8
  @campaigns = @campaigns.where( :is_done => true )
9
9
  else
@@ -12,12 +12,12 @@ class ::IshManager::EmailCampaignsController < IshManager::ApplicationController
12
12
  end
13
13
 
14
14
  def new
15
- @new_campaign = Ish::Campaign.new
15
+ @new_campaign = Ish::EmailCampaign.new
16
16
  authorize! :new, @new_campaign
17
17
  end
18
18
 
19
19
  def create
20
- @campaign = Ish::Campaign.new params[:campaign].permit!
20
+ @campaign = Ish::EmailCampaign.new params[:campaign].permit!
21
21
  @campaign.profile = @current_profile
22
22
  authorize! :create, @campaign
23
23
  if @campaign.save
@@ -34,12 +34,12 @@ class ::IshManager::EmailCampaignsController < IshManager::ApplicationController
34
34
  end
35
35
 
36
36
  def edit
37
- @campaign = Ish::Campaign.find params[:id]
37
+ @campaign = Ish::EmailCampaign.find params[:id]
38
38
  authorize! :edit, @campaign
39
39
  end
40
40
 
41
41
  def update
42
- @campaign = Ish::Campaign.find params[:id]
42
+ @campaign = Ish::EmailCampaign.find params[:id]
43
43
  authorize! :update, @campaign
44
44
  if @campaign.update_attributes params[:campaign].permit!
45
45
  flash[:notice] = 'Successfully updated campaign.'
@@ -32,9 +32,17 @@ class ::IshManager::EmailContextsController < ::IshManager::ApplicationControlle
32
32
  end
33
33
 
34
34
  def do_send
35
- authorize! :send, ::Ish::EmailContext
36
- IshManager::OfficeMailer.send_context_email(params[:id]).deliver_later
37
- flash[:notice] = 'Scheduled send'
35
+ @ctx = ::Ish::EmailContext.find params[:id]
36
+ authorize! :send, @ctx
37
+ case @ctx.type
38
+ when ::Ish::EmailContext::TYPE_SINGLE
39
+ flash[:notice] = 'Scheduled a single send'
40
+ IshManager::OfficeMailer.send_context_email(params[:id]).deliver_later
41
+ when ::Ish::EmailContext::TYPE_CAMPAIGN
42
+ flash[:notice] = 'Scheduled campaign send'
43
+ IshManager::OfficeMailer.send_campaign(params[:id]).deliver_later
44
+ end
45
+
38
46
  redirect_to action: 'index'
39
47
  end
40
48
 
@@ -53,7 +61,7 @@ class ::IshManager::EmailContextsController < ::IshManager::ApplicationControlle
53
61
  return
54
62
  when 'plain'
55
63
  @body = @email_template.body
56
- @body.gsub!('{name}', @email_ctx.name)
64
+ @body.gsub!('{name}', @email_ctx.tmpl_name)
57
65
  render 'ish_manager/email_templates/plain', layout: false
58
66
  return
59
67
  end
@@ -1,6 +1,59 @@
1
1
 
2
2
  class IshManager::OfficeMailer < IshManager::ApplicationMailer
3
3
 
4
+ def send_campaign campaign_id
5
+ @ctx = ::Ish::EmailContext.find campaign_id
6
+ actl = ActionController::Base.new
7
+ actl.instance_variable_set( :@ctx, @ctx )
8
+
9
+ if @ctx.email_template.type != 'partial'
10
+ raise "only `partial` template type is supported for campaigns."
11
+ end
12
+
13
+ puts! @ctx.leads, '@ctx.leads'
14
+
15
+ @ctx.leads.each do |clead| # a campaign lead
16
+ @lead = clead
17
+
18
+ @pixel_tracking = {
19
+ 'v' => 1,
20
+ 'tid' => 'UA-53077236-2',
21
+ 'cid' => @lead[:cid],
22
+ 't' => 'event',
23
+ 'ec' => 'email',
24
+ 'ea' => 'open',
25
+ 'utm_source' => 'eror1',
26
+ 'utm_medium' => 'email',
27
+ 'utm_campaign' => 'eror1',
28
+ }.map { |k, v| "#{k}=#{v}" }.join("&")
29
+ actl.instance_variable_set( :@pixel_tracking, @pixel_tracking )
30
+
31
+ @click_tracking = {
32
+ 'cid' => @lead[:cid],
33
+ 't' => 'event',
34
+ 'ec' => 'email',
35
+ 'ea' => 'clk-ctct', # clicked contact us
36
+ 'utm_source' => 'eror1',
37
+ 'utm_medium' => 'email',
38
+ 'utm_campaign' => 'eror1',
39
+ }.map { |k, v| "#{k}=#{v}" }.join("&")
40
+ actl.instance_variable_set( :@click_tracking, @click_tracking )
41
+
42
+
43
+ actl.instance_variable_set( :@lead, @lead )
44
+
45
+ template = "render/_#{@ctx.email_template.slug}"
46
+ # rendered_str = actl.render_to_string("ish_manager/email_templates/_#{@ctx.email_template.slug}")
47
+ # @lead.update( rendered_str: rendered_str, sent_at: Time.now )
48
+
49
+ mail( from: @ctx.from_email,
50
+ to: @lead.email,
51
+ bcc: 'piousbox@gmail.com',
52
+ subject: @ctx.subject,
53
+ template_name: template )
54
+ end
55
+ end
56
+
4
57
  def send_context_email ctx_id
5
58
  @email_ctx = ::Ish::EmailContext.find ctx_id
6
59
  ac = ActionController::Base.new
@@ -53,7 +53,7 @@
53
53
  Office
54
54
  .namespace
55
55
  %ul
56
- %li= link_to 'Leads', leads_path
56
+ %li= link_to 'Leads', '/admin/leads'
57
57
  %li
58
58
  = link_to 'Meetings', meetings_path
59
59
  = link_to '[+]', new_meeting_path
@@ -62,7 +62,6 @@
62
62
  = link_to 'Email Templates', email_templates_path
63
63
  %li
64
64
  = link_to 'Email Contexts', email_contexts_path
65
- %li
66
- = link_to 'Email Campaigns', email_campaigns_path
65
+ -# %li= link_to 'Email Campaigns', email_campaigns_path
67
66
  %hr
68
67
 
@@ -8,23 +8,32 @@
8
8
  - url = %w| index new create |.include?( params[:action] ) ? email_contexts_path : email_context_path(email_ctx)
9
9
  = form_for email_ctx, url: url do |f|
10
10
  .row
11
+
11
12
  .col.s6
12
13
  .field
13
14
  = f.label :email_template_id
14
15
  = f.select :email_template_id, options_for_select(@email_templates_list, selected: params[:email_template_id] || email_ctx.email_template&.id )
16
+ .field
17
+ = f.label :title
18
+ = f.text_field :title
15
19
 
16
20
  .field
17
21
  = f.label :from_email
18
22
  = f.select :from_email, options_for_select(Ish::EmailContext.from_email_list, selected: email_ctx.from_email)
19
- .field
20
- = f.label :to_email
21
- = f.text_field :to_email
22
23
 
23
24
  .col.s6
24
- %h5 Templating
25
25
  .field
26
- = f.label :name
27
- = f.text_field :name
26
+ = f.label :type
27
+ = f.select :type, options_for_select(Ish::EmailContext.types_list, selected: email_ctx.type)
28
+ .TYPE_SINGLE
29
+ .field
30
+ = f.label :to_email
31
+ = f.text_field :to_email
32
+ %h5 Templating
33
+ .field
34
+ = f.label :tmpl_name
35
+ = f.text_field :tmpl_name
36
+
28
37
  .field.field-subject
29
38
  = f.label :subject
30
39
  = f.text_field :subject
@@ -19,6 +19,7 @@
19
19
  = link_to '~', edit_email_context_path(ctx)
20
20
  = link_to email_context_path(ctx) do
21
21
  view
22
+ = ctx.title
22
23
  = button_to '[x]', email_context_path(ctx), method: :delete, form_class: :inline, data: { confirm: 'Are you sure?' }
23
24
  -# = link_to 'iframe', email_context_iframe_path(ctx), target: :_blank do
24
25
 
@@ -2,10 +2,20 @@
2
2
  .email-contexts-show
3
3
 
4
4
  %ul
5
+
6
+ %li <b>Type:</b> #{@email_ctx.type}
7
+ %li <b>Title:</b> #{@email_ctx.title}
8
+ %li <b>Template:</b> #{@email_ctx.email_template.slug}
5
9
  %li <b>From:</b> #{@email_ctx.from_email}
6
- %li <b>To:</b> #{@email_ctx.to_email}
10
+
7
11
  %li <b>Subject:</b> #{@email_ctx.subject}
8
- %li <b>Template:</b> #{@email_ctx.email_template.slug} <b>Type:</b> #{@email_ctx.email_template.type}
12
+
13
+ - if @email_ctx.type == Ish::EmailContext::TYPE_SINGLE
14
+ %li <b>To:</b> #{@email_ctx.to_email}
15
+ %li <b>Template:</b> #{@email_ctx.email_template.slug} <b>Type:</b> #{@email_ctx.email_template.type}
16
+ - if @email_ctx.type == Ish::EmailContext::TYPE_CAMPAIGN
17
+ %li <b>Leads (#{@email_ctx.leads.length}):</b> #{@email_ctx.leads.map { |p| p&.email }.join(", ") }
18
+
9
19
  - if @email_ctx.sent_at
10
20
  %li <b>Sent at:</b> #{@email_ctx.sent_at.strftime('%Y-%m-%d %l:%M%P')}
11
21
  - else
@@ -0,0 +1,753 @@
1
+
2
+ <img src="https://www.google-analytics.com/collect?<%=@pixel_tracking%>" />
3
+
4
+ <table align="center" border="0" cellpadding="0" cellspacing="0" height="100%" width="100%"
5
+ style="border-collapse: collapse; height: 100%; margin: 0px; padding: 0px; width: 100%;">
6
+ <tbody>
7
+ <tr>
8
+ <td align="center" valign="top"
9
+ style="height: 100%; margin: 0px; padding: 0px; width: 100%; border-top: 0px;">
10
+
11
+ <table border="0" cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse;">
12
+ <tbody>
13
+ <tr>
14
+ <td align="center" valign="top"
15
+ style="background: none 50% 50% / cover no-repeat rgb(244, 227, 39); border-top: 0px; border-bottom: 0px; padding-top: 0px; padding-bottom: 9px;">
16
+
17
+ <table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"
18
+ style="border-collapse: collapse; max-width: 600px;">
19
+ <tbody>
20
+ <tr>
21
+ <td valign="top"></td>
22
+ </tr>
23
+ </tbody>
24
+ </table>
25
+
26
+ </td>
27
+ </tr>
28
+ <tr>
29
+ <td align="center" valign="top"
30
+ style="background: none 50% 50% / cover no-repeat rgb(198, 0, 0); border-top: 0px; border-bottom: 0px; padding-top: 9px;">
31
+
32
+ <table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"
33
+ style="border-collapse: collapse; max-width: 600px;">
34
+ <tbody>
35
+ <tr>
36
+ <td valign="top">
37
+ <table border="0" cellpadding="0" cellspacing="0" width="100%"
38
+ style="min-width: 100%; border-collapse: collapse;">
39
+ <tbody>
40
+ <tr>
41
+ <td valign="top" style="padding: 9px 9px 0px;">
42
+ <table align="left" width="100%" border="0" cellpadding="0" cellspacing="0"
43
+ style="min-width: 100%; border-collapse: collapse;">
44
+ <tbody>
45
+ <tr>
46
+ <td valign="top" style="padding: 0px 9px; text-align: center;">
47
+
48
+
49
+ <img align="center" alt="" width="80"
50
+ style="max-width: 80px; padding-bottom: 0px; vertical-align: bottom; border: 0px; height: auto; outline: none; text-decoration: none; display: inline;"
51
+ src="https://d15g8hc4183yn4.cloudfront.net/wp-content/uploads/2022/10/03183645/80x80_diamond_icon.png" />
52
+
53
+
54
+ <table align="left" border="0" cellpadding="0" cellspacing="0" width="100%"
55
+ style="min-width: 100%; border-collapse: collapse;" >
56
+ <tbody>
57
+ <tr>
58
+ <td style="padding-top: 27px;">
59
+ <table border="0" cellspacing="0" width="100%"
60
+ style="background-color: rgb(255, 255, 255); border-width: 2px 2px 0px; border-top-style: dashed; border-right-style: dashed; border-left-style: dashed; border-color: initial; border-image: initial; border-bottom-style: initial; border-collapse: collapse; min-width: 100%;">
61
+ <tbody>
62
+ <tr>
63
+ <td valign="top"
64
+ style="padding: 18px; color: rgb(198, 0, 0); font-family: Helvetica; font-size: 14px; font-weight: normal; text-align: left; word-break: break-word; line-height: 150%;">
65
+ <div style="text-align: center;"></div>
66
+
67
+ </td>
68
+ </tr>
69
+ </tbody>
70
+ </table>
71
+ </td>
72
+ </tr>
73
+ </tbody>
74
+ </table>
75
+
76
+
77
+ </td>
78
+ </tr>
79
+ </tbody>
80
+ </table>
81
+ </td>
82
+ </tr>
83
+ </tbody>
84
+ </table>
85
+ </td>
86
+ </tr>
87
+ </tbody>
88
+ </table>
89
+
90
+ </td>
91
+ </tr>
92
+ <tr>
93
+ <td align="center" valign="top"
94
+ style="background: none 50% 50% / cover no-repeat rgb(51, 204, 204); border-top: 0px; border-bottom: 0px;">
95
+
96
+ <table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"
97
+ style="border-collapse: collapse; max-width: 600px;">
98
+ <tbody>
99
+ <tr>
100
+ <td valign="top">
101
+ <table border="0" cellpadding="0" cellspacing="0" width="100%"
102
+ style="min-width: 100%; border-collapse: collapse;">
103
+
104
+ <tbody>
105
+ <tr>
106
+ <td valign="top">
107
+
108
+
109
+ <table align="left" border="0" cellpadding="0" cellspacing="0" width="100%"
110
+ style="min-width: 100%; border-collapse: collapse;"
111
+ >
112
+ <tbody>
113
+ <tr>
114
+
115
+ <td style="padding-top: 0px; padding-left: 18px; padding-right: 18px;">
116
+
117
+ <table border="0" cellspacing="0"
118
+ width="100%"
119
+ style="background-color: rgb(255, 255, 255); border-width: 0px 2px; border-right-style: dashed; border-left-style: dashed; border-color: initial; border-image: initial; border-top-style: initial; border-bottom-style: initial; border-collapse: collapse; min-width: 100%;">
120
+ <tbody>
121
+ <tr>
122
+ <td valign="top"
123
+ style="padding: 18px; color: rgb(198, 0, 0); font-family: Helvetica; font-size: 14px; font-weight: normal; text-align: left; word-break: break-word; line-height: 150%;">
124
+ <div style="text-align: center;">
125
+ <a href="https://wasya.co/landing-pages/ruby-on-rails-development-1"
126
+ style="color: rgb(0, 124, 137); font-weight: normal; text-decoration: underline;"
127
+ target="_blank"
128
+ data-saferedirecturl="https://wasya.co/landing-pages/ruby-on-rails-development-1"
129
+ >
130
+ <img height="64"
131
+ style="border: 0px; width: 257px; height: 64px; margin: 0px; outline: none; text-decoration: none;"
132
+ width="257"
133
+ src="https://d15g8hc4183yn4.cloudfront.net/wp-content/uploads/2022/10/03183647/257x64_wasya_co-logo.png" />
134
+ </a>
135
+ </div>
136
+
137
+ <h1
138
+ style="text-align: center; display: block; margin: 0px 0 40px 0; padding: 0px; color: rgb(254, 0, 0); font-family: Helvetica; font-size: 26px; font-style: normal; font-weight: bold; line-height: 125%; letter-spacing: normal;">
139
+ <span >Ruby</span> on <span >Rails</span>
140
+ Application <span >Development</span></h1>
141
+
142
+
143
+
144
+ <table border="0" cellpadding="0" cellspacing="0" width="100%"
145
+ style="min-width: 100%; border-collapse: collapse;">
146
+ <tbody>
147
+ <tr>
148
+ <td valign="top" style="padding-top: 9px;">
149
+
150
+
151
+
152
+ <table align="left" border="0" cellpadding="0" cellspacing="0"
153
+ style="max-width: 200px; border-collapse: collapse;"
154
+ width="100%" >
155
+ <tbody>
156
+ <tr>
157
+ <td valign="top"
158
+ style="padding: 0px 18px 9px; color: rgb(0, 0, 0); font-family: &quot;Lucida Sans Unicode&quot;, &quot;Lucida Grande&quot;, sans-serif; font-style: normal; font-weight: bold; word-break: break-word; font-size: 16px; line-height: 150%; text-align: right;">
159
+ <div>
160
+ <img height="100"
161
+ style="border: 0px; width: 100px; height: 100px; margin: 0px; outline: none; text-decoration: none;"
162
+ width="100"
163
+ src="https://d15g8hc4183yn4.cloudfront.net/wp-content/uploads/2022/10/03183646/100x100_floppy_icon.png" />
164
+ </div>
165
+ </td>
166
+ </tr>
167
+ </tbody>
168
+ </table>
169
+
170
+
171
+
172
+ <table align="left" valign="center" border="0" cellpadding="0" cellspacing="0" height="100"
173
+ style="max-width: 300px; border-collapse: collapse;"
174
+ width="100%"
175
+ >
176
+ <tbody>
177
+ <tr>
178
+ <td valign="center"
179
+ style="color: rgb(0, 0, 0); font-family: &quot;Lucida Sans Unicode&quot;, &quot;Lucida Grande&quot;, sans-serif; font-style: normal; font-weight: bold; word-break: break-word; font-size: 16px; line-height: 150%; text-align: left;">
180
+ Support for &amp; Migration of<br>Legacy Systems
181
+ </td>
182
+ </tr>
183
+ </tbody>
184
+ </table>
185
+
186
+
187
+
188
+ </td>
189
+ </tr>
190
+ </tbody>
191
+ </table>
192
+
193
+
194
+
195
+
196
+ <table border="0" cellpadding="0" cellspacing="0" width="100%"
197
+ style="min-width: 100%; border-collapse: collapse;">
198
+ <tbody>
199
+ <tr>
200
+ <td valign="top" style="padding-top: 9px;">
201
+
202
+
203
+
204
+
205
+
206
+ <table align="left" border="0" cellpadding="0" cellspacing="0"
207
+ height="100px"
208
+ style="max-width: 300px; border-collapse: collapse;"
209
+ width="100%"
210
+ >
211
+ <tbody>
212
+ <tr>
213
+ <td valign="center"
214
+
215
+ style="padding: 0px 18px 9px; color: rgb(0, 0, 0); font-family: &quot;Lucida Sans Unicode&quot;, &quot;Lucida Grande&quot;, sans-serif; font-style: normal; font-weight: bold; word-break: break-word; font-size: 16px; line-height: 150%; text-align: right;">
216
+ Greenfield <span class="il">Development</span> of<br>New Systems
217
+ </td>
218
+ </tr>
219
+ </tbody>
220
+ </table>
221
+
222
+
223
+
224
+ <table align="left" border="0" cellpadding="0" cellspacing="0"
225
+ style="max-width: 200px; border-collapse: collapse;"
226
+ width="100%"
227
+ >
228
+ <tbody>
229
+ <tr>
230
+ <td valign="top"
231
+
232
+ style="padding: 0px 18px 9px; color: rgb(0, 0, 0); font-family: &quot;Lucida Sans Unicode&quot;, &quot;Lucida Grande&quot;, sans-serif; font-style: normal; font-weight: bold; word-break: break-word; font-size: 16px; line-height: 150%; text-align: left;">
233
+ <div class="m_7956922134145776498img-lg-right-desktop">
234
+ <img height="100"
235
+ style="border: 0px; width: 100px; height: 100px; margin: 0px; outline: none; text-decoration: none;"
236
+ width="100"
237
+ src="https://d15g8hc4183yn4.cloudfront.net/wp-content/uploads/2022/10/03183646/100x100_code_icon.png" />
238
+ </div>
239
+ </td>
240
+ </tr>
241
+ </tbody>
242
+ </table>
243
+
244
+
245
+
246
+ </td>
247
+ </tr>
248
+ </tbody>
249
+ </table>
250
+
251
+
252
+
253
+
254
+ <table border="0" cellpadding="0" cellspacing="0" width="100%"
255
+ style="min-width: 100%; border-collapse: collapse;">
256
+ <tbody>
257
+ <tr>
258
+ <td valign="top" style="padding-top: 9px;">
259
+
260
+
261
+
262
+ <table align="left" border="0" cellpadding="0" cellspacing="0"
263
+ style="max-width: 200px; border-collapse: collapse;"
264
+ width="100%"
265
+ >
266
+ <tbody>
267
+ <tr>
268
+ <td valign="top"
269
+ style="padding: 0px 18px 9px; color: rgb(0, 0, 0); font-family: &quot;Lucida Sans Unicode&quot;, &quot;Lucida Grande&quot;, sans-serif; font-style: normal; font-weight: bold; word-break: break-word; font-size: 16px; line-height: 150%; text-align: right;">
270
+ <div class="m_7956922134145776498img-lg-left">
271
+ <img
272
+ height="100"
273
+ style="border: 0px; width: 100px; height: 100px; margin: 0px; outline: none; text-decoration: none;"
274
+ width="100"
275
+ src="https://d15g8hc4183yn4.cloudfront.net/wp-content/uploads/2022/10/03183646/100x100_paper_plane_icon.png" /></div>
276
+ </td>
277
+ </tr>
278
+ </tbody>
279
+ </table>
280
+
281
+
282
+
283
+ <table align="left" border="0" cellpadding="0" cellspacing="0"
284
+ style="max-width: 300px; border-collapse: collapse;"
285
+ height="100px"
286
+ width="100%"
287
+ >
288
+ <tbody>
289
+ <tr>
290
+ <td valign="center"
291
+ style="padding: 0px 18px 9px; color: rgb(0, 0, 0); font-family: &quot;Lucida Sans Unicode&quot;, &quot;Lucida Grande&quot;, sans-serif; font-style: normal; font-weight: bold; word-break: break-word; font-size: 16px; line-height: 150%; text-align: left;">
292
+ Architecture, Tooling &amp; <br />Continuous Improvement
293
+ </td>
294
+ </tr>
295
+ </tbody>
296
+ </table>
297
+
298
+
299
+
300
+ </td>
301
+ </tr>
302
+ </tbody>
303
+ </table>
304
+
305
+
306
+
307
+ <table border="0" cellpadding="0" cellspacing="0" width="100%"
308
+ style="min-width: 100%; border-collapse: collapse;">
309
+ <tbody>
310
+ <tr>
311
+ <td valign="top" style="padding-top: 72px;">
312
+
313
+
314
+
315
+ <table align="left" border="0" cellpadding="0" cellspacing="0"
316
+ style="max-width: 100%; min-width: 100%; border-collapse: collapse;"
317
+ width="100%"
318
+ >
319
+ <tbody>
320
+ <tr>
321
+ <td valign="top"
322
+
323
+ style="padding: 0px 18px 9px; word-break: break-word; color: rgb(32, 32, 32); font-family: Helvetica; font-size: 16px; line-height: 150%; text-align: left;">
324
+ We are software <span class="il">development</span>
325
+ experts who can act as your IT department, resolve
326
+ technical issues and create new functionality that your
327
+ business needs to succeed.
328
+ </td>
329
+ </tr>
330
+ </tbody>
331
+ </table>
332
+
333
+
334
+
335
+ </td>
336
+ </tr>
337
+ </tbody>
338
+ </table>
339
+
340
+
341
+
342
+
343
+
344
+ <table border="0" cellpadding="0" cellspacing="0" width="100%"
345
+ style="min-width: 100%; border-collapse: collapse;">
346
+ <tbody>
347
+ <tr>
348
+ <td valign="top" style="padding-top: 9px;">
349
+
350
+
351
+
352
+ <table align="left" border="0" cellpadding="0" cellspacing="0"
353
+ style="max-width: 90px; border-collapse: collapse;"
354
+ width="100%">
355
+ <tbody>
356
+ <tr>
357
+ <td valign="top"
358
+
359
+ style="padding: 0px 18px 9px; word-break: break-word; color: rgb(32, 32, 32); font-family: Helvetica; font-size: 16px; line-height: 150%; text-align: left;">
360
+ <div style="text-align: right;"><img height="50"
361
+ style="border: 0px; width: 23px; height: 50px; margin: 0px; outline: none; text-decoration: none;"
362
+ width="23"
363
+ src="https://d15g8hc4183yn4.cloudfront.net/wp-content/uploads/2022/10/03183644/23x50_paragraph_icon.png" /></div>
364
+ </td>
365
+ </tr>
366
+ </tbody>
367
+ </table>
368
+
369
+
370
+
371
+ <table align="left" border="0" cellpadding="0" cellspacing="0"
372
+ width="80%"
373
+ style="border-collapse: collapse;">
374
+ <tbody>
375
+ <tr>
376
+ <td valign="top"
377
+ style="padding: 0px 18px 9px; word-break: break-word; color: rgb(32, 32, 32); font-family: Helvetica; font-size: 16px; line-height: 150%; text-align: left;">
378
+ <span style="color: rgb(198, 0, 0);"><strong>Scale existing systems, resolve performance bottlenecks, fix critical issues</strong></span>
379
+ </td>
380
+ </tr>
381
+ </tbody>
382
+ </table>
383
+
384
+
385
+
386
+ </td>
387
+ </tr>
388
+ </tbody>
389
+ </table>
390
+
391
+
392
+
393
+
394
+
395
+
396
+ <table border="0" cellpadding="0" cellspacing="0" width="100%"
397
+ style="min-width: 100%; border-collapse: collapse;">
398
+ <tbody>
399
+ <tr>
400
+ <td valign="top" style="padding-top: 9px;">
401
+
402
+
403
+
404
+ <table align="left" border="0" cellpadding="0" cellspacing="0"
405
+ style="max-width: 90px; border-collapse: collapse;"
406
+ width="100%">
407
+ <tbody>
408
+ <tr>
409
+
410
+ <td valign="top"
411
+
412
+ style="padding: 0px 18px 9px; word-break: break-word; color: rgb(32, 32, 32); font-family: Helvetica; font-size: 16px; line-height: 150%; text-align: left;">
413
+
414
+ <div style="text-align: right;"><img height="50"
415
+ style="border: 0px; width: 23px; height: 50px; margin: 0px; outline: none; text-decoration: none;"
416
+ width="23"
417
+ src="https://d15g8hc4183yn4.cloudfront.net/wp-content/uploads/2022/10/03183644/23x50_paragraph_icon.png" /></div>
418
+
419
+ </td>
420
+ </tr>
421
+ </tbody>
422
+ </table>
423
+
424
+
425
+
426
+ <table align="left" border="0" cellpadding="0" cellspacing="0"
427
+ width="80%"
428
+ style="border-collapse: collapse;">
429
+ <tbody>
430
+ <tr>
431
+
432
+ <td valign="top"
433
+
434
+ style="padding: 0px 18px 9px; word-break: break-word; color: rgb(32, 32, 32); font-family: Helvetica; font-size: 16px; line-height: 150%; text-align: left;">
435
+
436
+ <span style="color: rgb(198, 0, 0);"><strong>Implement
437
+ new features to answer client &amp; internal
438
+ needs</strong></span>
439
+ </td>
440
+ </tr>
441
+ </tbody>
442
+ </table>
443
+
444
+
445
+
446
+ </td>
447
+ </tr>
448
+ </tbody>
449
+ </table>
450
+
451
+
452
+
453
+
454
+ <table border="0" cellpadding="0" cellspacing="0" width="100%"
455
+ style="min-width: 100%; border-collapse: collapse;">
456
+ <tbody>
457
+ <tr>
458
+ <td valign="top" style="padding-top: 9px;">
459
+
460
+
461
+
462
+ <table align="left" border="0" cellpadding="0" cellspacing="0"
463
+ style="max-width: 90px; border-collapse: collapse;"
464
+ width="100%">
465
+ <tbody>
466
+ <tr>
467
+
468
+ <td valign="top"
469
+
470
+ style="padding: 0px 18px 9px; word-break: break-word; color: rgb(32, 32, 32); font-family: Helvetica; font-size: 16px; line-height: 150%; text-align: left;">
471
+
472
+ <div style="text-align: right;"><img height="50"
473
+ style="border: 0px; width: 23px; height: 50px; margin: 0px; outline: none; text-decoration: none;"
474
+ width="23"
475
+ src="https://d15g8hc4183yn4.cloudfront.net/wp-content/uploads/2022/10/03183644/23x50_paragraph_icon.png" /></div>
476
+
477
+ </td>
478
+ </tr>
479
+ </tbody>
480
+ </table>
481
+
482
+
483
+
484
+ <table align="left" border="0" cellpadding="0" cellspacing="0"
485
+ width="80%"
486
+ style="border-collapse: collapse;">
487
+ <tbody>
488
+ <tr>
489
+
490
+ <td valign="top"
491
+
492
+ style="padding: 0px 18px 9px; word-break: break-word; color: rgb(32, 32, 32); font-family: Helvetica; font-size: 16px; line-height: 150%; text-align: left;">
493
+
494
+ <span style="color: rgb(198, 0, 0);"><strong>We provide
495
+ SLA's, support and 99.9% uptime
496
+ guarantee</strong></span>
497
+ </td>
498
+ </tr>
499
+ </tbody>
500
+ </table>
501
+
502
+
503
+
504
+ </td>
505
+ </tr>
506
+ </tbody>
507
+ </table>
508
+
509
+
510
+
511
+
512
+ <table border="0" cellpadding="0" cellspacing="0" width="100%"
513
+ style="min-width: 100%; border-collapse: collapse;">
514
+ <tbody>
515
+ <tr>
516
+ <td valign="top" style="padding-top: 9px;">
517
+
518
+
519
+
520
+ <table align="left" border="0" cellpadding="0" cellspacing="0"
521
+ style="max-width: 100%; min-width: 100%; border-collapse: collapse;"
522
+ width="100%"
523
+ >
524
+ <tbody>
525
+ <tr>
526
+
527
+ <td valign="top"
528
+
529
+ style="padding: 0px 18px 72px; word-break: break-word; color: rgb(32, 32, 32); font-family: Helvetica; font-size: 16px; line-height: 150%; text-align: left;">
530
+
531
+ Are you ready to schedule a free call with one of our
532
+ experts to take a deep dive on your project?
533
+ </td>
534
+ </tr>
535
+ </tbody>
536
+ </table>
537
+
538
+
539
+
540
+ </td>
541
+ </tr>
542
+ </tbody>
543
+ </table>
544
+ <table border="0" cellpadding="0" cellspacing="0" width="100%"
545
+ style="min-width: 100%; border-collapse: collapse;">
546
+ <tbody>
547
+ <tr>
548
+ <td style="padding: 0px 18px 18px;" valign="top" align="center">
549
+ <table border="0" cellpadding="0" cellspacing="0"
550
+ style="border: 1px solid rgb(238, 238, 238); border-radius: 5px; background-color: rgb(198, 0, 0); border-collapse: separate;">
551
+ <tbody>
552
+ <tr>
553
+ <td align="center" valign="middle"
554
+ style="font-family: Arial; font-size: 16px; padding: 18px;"
555
+ >
556
+ <a
557
+ title="Chat with Us!"
558
+ href="https://wasya.co/contact-us?<%=@click_tracking%>"
559
+ style="font-weight: bold; letter-spacing: 1px; line-height: 100%; text-align: center; text-decoration: none; color: rgb(238, 238, 238); display: block;"
560
+ target="_blank"
561
+ > Chat with Us! </a>
562
+ </td>
563
+ </tr>
564
+ </tbody>
565
+ </table>
566
+ </td>
567
+ </tr>
568
+ </tbody>
569
+ </table>
570
+
571
+
572
+
573
+ </td>
574
+ </tr>
575
+ </tbody>
576
+ </table>
577
+ </td>
578
+ </tr>
579
+ </tbody>
580
+ </table>
581
+
582
+
583
+
584
+ </td>
585
+ </tr>
586
+ </tbody>
587
+ </table>
588
+
589
+
590
+ </td>
591
+ </tr>
592
+ </tbody>
593
+ </table>
594
+
595
+ </td>
596
+ </tr>
597
+ <tr>
598
+ <td align="center" valign="top"
599
+ style="background: none 50% 50% / cover no-repeat rgb(170, 167, 167); border-top: 0px; border-bottom: 0px; padding-bottom: 9px;">
600
+
601
+ <table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"
602
+ style="border-collapse: collapse; max-width: 600px;">
603
+ <tbody>
604
+ <tr>
605
+ <td valign="top">
606
+ <table border="0" cellpadding="0" cellspacing="0" width="100%"
607
+
608
+ style="min-width: 100%; border-collapse: collapse; table-layout: fixed;">
609
+
610
+
611
+
612
+
613
+
614
+ <tbody>
615
+ <tr>
616
+ <td>
617
+ <table border="0" cellpadding="0" cellspacing="0" width="100%"
618
+ style="min-width: 100%; border-collapse: collapse;">
619
+
620
+ <tbody>
621
+ <tr>
622
+ <td valign="top">
623
+
624
+
625
+ <table align="left" border="0" cellpadding="0" cellspacing="0" width="100%"
626
+ style="min-width: 100%; border-collapse: collapse;"
627
+ >
628
+ <tbody>
629
+ <tr>
630
+
631
+ <td style="padding: 0px 18px 9px;">
632
+
633
+ <table border="0" cellspacing="0"
634
+ width="100%"
635
+ style="background-color: rgb(255, 251, 251); border-width: 0px 2px 2px; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-color: initial; border-image: initial; border-top-style: initial; border-collapse: collapse; min-width: 100%;">
636
+ <tbody>
637
+ <tr>
638
+ <td valign="top"
639
+ style="padding: 18px; color: rgb(242, 242, 242); font-family: Helvetica; font-size: 14px; font-weight: normal; text-align: center; word-break: break-word; line-height: 150%;">
640
+ </td>
641
+ </tr>
642
+ </tbody>
643
+ </table>
644
+ </td>
645
+ </tr>
646
+ </tbody>
647
+ </table>
648
+
649
+
650
+
651
+ </td>
652
+ </tr>
653
+ </tbody>
654
+ </table>
655
+
656
+
657
+
658
+
659
+
660
+
661
+
662
+
663
+ </td>
664
+ </tr>
665
+ </tbody>
666
+ <tbody>
667
+ <tr>
668
+ <td style="min-width: 100%; padding: 10px 18px 25px;">
669
+ <table border="0" cellpadding="0" cellspacing="0" width="100%"
670
+ style="min-width: 100%; border-top: 2px solid rgb(238, 238, 238); border-collapse: collapse;">
671
+ <tbody>
672
+ <tr>
673
+ <td>
674
+ <span></span>
675
+ </td>
676
+ </tr>
677
+ </tbody>
678
+ </table>
679
+
680
+ </td>
681
+ </tr>
682
+ </tbody>
683
+ </table>
684
+
685
+
686
+
687
+ <table border="0" cellpadding="0" cellspacing="0" width="100%"
688
+ style="min-width: 100%; border-collapse: collapse;">
689
+ <tbody>
690
+ <tr>
691
+ <td valign="top" style="padding-top: 9px;">
692
+
693
+
694
+
695
+ <table align="left" border="0" cellpadding="0" cellspacing="0"
696
+ style="max-width: 100%; min-width: 100%; border-collapse: collapse;" width="100%"
697
+ >
698
+ <tbody>
699
+ <tr>
700
+ <td valign="top"
701
+ style="padding: 0px 18px 27px; color: rgb(204, 204, 204); word-break: break-word; font-family: Helvetica; font-size: 12px; line-height: 150%; text-align: center;">
702
+ <div style="text-align: center;">
703
+ Wasya Co is a niche&nbsp;consultancy in Austin, TX.<br>
704
+ We respect your privacy - click to unsubscribe.<br>
705
+ You can also reply to request more info.
706
+ </div>
707
+ </td>
708
+ </tr>
709
+ </tbody>
710
+ </table>
711
+
712
+
713
+
714
+ </td>
715
+ </tr>
716
+ </tbody>
717
+ </table>
718
+
719
+
720
+ </td>
721
+ </tr>
722
+ </tbody>
723
+ </table>
724
+
725
+ </td>
726
+ </tr>
727
+
728
+
729
+ <tr>
730
+ <td align="center" valign="top"
731
+ style="background: none 50% 50% / cover no-repeat rgb(244, 227, 39); border-top: 0px; border-bottom: 0px; padding-top: 0px; padding-bottom: 9px;">
732
+
733
+ <table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"
734
+ style="border-collapse: collapse; max-width: 600px;">
735
+ <tbody>
736
+ <tr>
737
+ <td valign="top"></td>
738
+ </tr>
739
+ </tbody>
740
+ </table>
741
+
742
+ </td>
743
+ </tr>
744
+
745
+
746
+
747
+ </tbody>
748
+ </table>
749
+
750
+ </td>
751
+ </tr>
752
+ </tbody>
753
+ </table>
@@ -0,0 +1,46 @@
1
+
2
+ .email-campaigns--form
3
+ %h2
4
+ Email Campaign
5
+ - if email_campaign.email_template
6
+ with template `#{email_campaign.email_template.slug}` type:#{email_campaign.email_template.type}.
7
+
8
+ - url = %w| index new create |.include?( params[:action] ) ? email_contexts_path : email_context_path(email_campaign)
9
+ = form_for email_campaign, url: url do |f|
10
+ .row
11
+ .col.s6
12
+ .field
13
+ = f.label :title
14
+ = f.text_field :title
15
+
16
+ .field
17
+ = f.label :email_template_id
18
+ = f.select :email_template_id, options_for_select(@email_templates_list, selected: params[:email_template_id] || email_campaign.email_template&.id )
19
+
20
+ .field
21
+ = f.label :from_email
22
+ = f.select :from_email, options_for_select(Ish::EmailContext.from_email_list, selected: email_campaign.from_email)
23
+ .field
24
+ = f.label :to_email
25
+ = f.text_field :to_email
26
+
27
+ .col.s6
28
+ %h5 Templating
29
+ .field
30
+ = f.label :name
31
+ = f.text_field :name
32
+ .field.field-subject
33
+ = f.label :subject
34
+ = f.text_field :subject
35
+ - if 'plain' == email_campaign.email_template&.type
36
+ .body
37
+ = raw email_campaign.email_template.body
38
+ - else
39
+ .field
40
+ = f.label :body
41
+ = f.text_area :body, class: 'tinymce'
42
+ .actions
43
+ .left
44
+ = f.submit 'Preview'
45
+ .right
46
+ -# = f.submit 'Schedule/Send'
@@ -0,0 +1,4 @@
1
+
2
+ %h2
3
+ Email Campaigns
4
+ = link_to '[+]', new_email_campaign_path
@@ -0,0 +1,2 @@
1
+
2
+ = render 'form'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ish_manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8.328
4
+ version: 0.1.8.329
5
5
  platform: ruby
6
6
  authors:
7
7
  - piousbox
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-10 00:00:00.000000000 Z
11
+ date: 2022-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -307,7 +307,6 @@ files:
307
307
  - app/views/ish_manager/application/trash/_main_header_manager.haml
308
308
  - app/views/ish_manager/application_mailer/shared_galleries.html.erb
309
309
  - app/views/ish_manager/application_mailer/welcome.html.erb
310
- - app/views/ish_manager/email_campaigns/index.haml
311
310
  - app/views/ish_manager/email_contexts/_form.haml
312
311
  - app/views/ish_manager/email_contexts/edit.haml
313
312
  - app/views/ish_manager/email_contexts/index.haml
@@ -318,7 +317,7 @@ files:
318
317
  - app/views/ish_manager/email_templates/_index.haml
319
318
  - app/views/ish_manager/email_templates/_marketing_react_1.html
320
319
  - app/views/ish_manager/email_templates/_marketing_ror_1.html
321
- - app/views/ish_manager/email_templates/_marketing_ror_2.html
320
+ - app/views/ish_manager/email_templates/_marketing_ror_2.html.erb
322
321
  - app/views/ish_manager/email_templates/_marketing_wordpress_1.html
323
322
  - app/views/ish_manager/email_templates/_marketing_wordpress_2.html
324
323
  - app/views/ish_manager/email_templates/_piousbox_roundborders.html.erb
@@ -404,6 +403,10 @@ files:
404
403
  - app/views/ish_manager/reports/index.haml
405
404
  - app/views/ish_manager/reports/new.haml
406
405
  - app/views/ish_manager/reports/show.haml
406
+ - app/views/ish_manager/trash/email_campaigns-trash/_form.haml
407
+ - app/views/ish_manager/trash/email_campaigns-trash/edit.haml
408
+ - app/views/ish_manager/trash/email_campaigns-trash/index.haml
409
+ - app/views/ish_manager/trash/email_campaigns-trash/new.haml
407
410
  - app/views/ish_manager/user_profiles/_form.haml
408
411
  - app/views/ish_manager/user_profiles/_show.haml
409
412
  - app/views/ish_manager/user_profiles/edit.haml
@@ -1,2 +0,0 @@
1
-
2
- %h2 Email Campaigns