ish_manager 0.1.8.328 → 0.1.8.329

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.
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