ish_manager 0.1.8.386 → 0.1.8.387

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: ad5f6ecf804df03a3acafbff94f1136e5372aed88b43e0949603620cfeb87c30
4
- data.tar.gz: 7d49e60a9d8ad7f9bd732f02d03ea313232262cb44e56365d671c5665a87f5a9
3
+ metadata.gz: 69f00f3a091162a2aa2b6535f519bd2a9437984131334224bbd8936fe9bf0bac
4
+ data.tar.gz: d3272e499c6b92122a07cac2879f62fa38ea2f44a09562728b6adb7c89d1ab33
5
5
  SHA512:
6
- metadata.gz: 3e2b8b77466307c9e709209632a7013851900dccc7ed29b65e627170ec20be937b9ce58229e76a8d32101b6698516757065927f23b0cb0f8521a89c9ae558054
7
- data.tar.gz: a16b163f1ba2a29dd335711c8c508104ecf06812661cb82b50460bfc61f64acea6a1346d77643da3ef8cc613f1001c811994c1960bae26246453411dba9f86d0
6
+ metadata.gz: fc3f0866b54220116e7ebdac586f19a0333c973b1adfc819ab66ed03a10e691801a09a7dba0baced8cd10079b2078becb9c39c484c0724613177cb0350328818
7
+ data.tar.gz: e3a7dda50885710cb50c784e5d6185dd78c31c0c1fdc3779922ee4523efa073ef761e93c4fb553054d82db8da659f95ad1e516fa8afc29ae4935c1892cb324c8
@@ -18,7 +18,7 @@
18
18
  *= require ish_manager/office
19
19
  *= require ish_manager/pagination
20
20
  *= require ish_manager/photos
21
- *= require ish_manager/scheduled_actions_emails
21
+ *= require ish_manager/scheduled_email_actions
22
22
  *= require ish_manager/tags
23
23
  *= require ish_manager/user_profiles
24
24
  *= require ish_manager/videos
@@ -2,6 +2,7 @@
2
2
 
3
3
  .email-actions-edit,
4
4
  .email-actions-index,
5
+ .email-actions-new,
5
6
  .email-filters-index,
6
7
  .email-templates-edit,
7
8
  .email-templates-new,
@@ -13,6 +14,7 @@
13
14
  .leads-edit,
14
15
  .leads-index,
15
16
  .leads-show,
17
+ .scheduled-email-actions--form,
16
18
  .scheduled-emails-index {
17
19
  .header {
18
20
  display: flex;
@@ -4,8 +4,6 @@
4
4
  }
5
5
 
6
6
  .scheduled-emails-new {
7
-
8
-
9
7
  border: 1px solid red;
10
8
  border-radius: .5em;
11
9
  padding: .5em;
@@ -18,13 +16,32 @@
18
16
 
19
17
  }
20
18
 
21
- .scheduled-actions--form-mini {
22
- display: inline-block;
19
+ .form-mini {
20
+ border: 1px solid blue;
23
21
  background: #ccc;
24
22
 
23
+ display: inline-block;
24
+ }
25
+
26
+ .scheduled-email-actions--form {
27
+
25
28
  form {
26
29
  border: 1px solid blue;
30
+ border-radius: 0.5em;
31
+ padding: 0.5em;
32
+
33
+ background: #ccc;
34
+ display: inline-block;
35
+ }
27
36
 
37
+ .actions {
28
38
  display: flex;
39
+ justify-content: flex-end;
40
+ padding-top: .5em;
29
41
  }
42
+
43
+ .flex-row {
44
+ justify-content: space-between;
45
+ }
46
+
30
47
  }
@@ -1,6 +1,7 @@
1
1
 
2
2
  module IshManager
3
3
  class ApplicationController < ActionController::Base
4
+
4
5
  protect_from_forgery :with => :exception, :prepend => true
5
6
  before_action :set_current_ability
6
7
  before_action :set_changelog
@@ -9,7 +10,11 @@ module IshManager
9
10
  check_authorization
10
11
  rescue_from ::CanCan::AccessDenied, :with => :access_denied
11
12
 
12
- http_basic_authenticate_with :name => BASIC_AUTH_NAME, :password => BASIC_AUTH_PASSWORD
13
+ before_action :basic_auth
14
+ def basic_auth
15
+ return if Rails.env.test?
16
+ http_basic_authenticate_or_request_with :name => BASIC_AUTH_NAME, :password => BASIC_AUTH_PASSWORD
17
+ end
13
18
 
14
19
  def home
15
20
  authorize! :home, IshManager::Ability
@@ -26,6 +31,11 @@ module IshManager
26
31
  redirect_to user_signed_in? ? root_path : Rails.application.routes.url_helpers.new_user_session_path, :alert => exception.message
27
32
  end
28
33
 
34
+ def encode(payload, exp = 48.hours.from_now) # @TODO: definitely change, right now I expire once in 2 days.
35
+ payload[:exp] = exp.to_i
36
+ JWT.encode(payload, Rails.application.secrets.secret_key_base.to_s)
37
+ end
38
+
29
39
  def pp_errors err
30
40
  err
31
41
  end
@@ -51,23 +61,17 @@ module IshManager
51
61
  @jwt_token = encode(user_profile_id: @current_user.profile.id.to_s)
52
62
  end
53
63
 
54
- def encode(payload, exp = 48.hours.from_now) # @TODO: definitely change, right now I expire once in 2 days.
55
- payload[:exp] = exp.to_i
56
- JWT.encode(payload, Rails.application.secrets.secret_key_base.to_s)
57
- end
58
-
59
64
  def set_lists
60
- @galleries_list = Gallery.all.list
61
- @locations_list = ::Gameui::Map.list
62
- @maps_list = ::Gameui::Map.list # @TODO: missing nonpublic!
63
- @reports_list = Report.all.list
64
- @user_profiles_list = Ish::UserProfile.list
65
- @videos_list = Video.all.list
66
-
67
- @leads_list = Lead.list
68
- @leadsets_list = Leadset.list
69
- @email_actions_list = [[nil,nil]] + ::Office::EmailAction.all.map { |a| [ a.slug, a.id ] }
70
- @email_templates_list = Ish::EmailTemplate.all.map { |t| [ t.slug, t.id ] }
65
+ @galleries_list = Gallery.all.list
66
+ @locations_list = ::Gameui::Map.list
67
+ @maps_list = ::Gameui::Map.list # @TODO: missing nonpublic!
68
+ @reports_list = Report.all.list
69
+ @user_profiles_list = Ish::UserProfile.list
70
+ @videos_list = Video.all.list
71
+ @leads_list = Lead.list
72
+ @leadsets_list = Leadset.list
73
+ @email_actions_list = [[nil,nil]] + Office::EmailAction.all.map { |a| [ a.slug, a.id ] }
74
+ @email_templates_list = [[nil,nil]] + Ish::EmailTemplate.all.map { |t| [ t.slug, t.id ] }
71
75
  end
72
76
 
73
77
  def set_title
@@ -5,28 +5,6 @@ class ::IshManager::EmailActionsController < IshManager::ApplicationController
5
5
 
6
6
  ## Alphabetized : )
7
7
 
8
- def create
9
- @act = @email_action = Office::EmailAction.new
10
- authorize! :create, @act
11
-
12
- next_ids = params[:email_action].delete(:next_email_actions)
13
- next_ids.delete("")
14
- Office::EmailAction.where(prev_email_action_id: params[:id] ).update_all(prev_email_action_id: nil)
15
- next_ids.each do |next_id|
16
- next_action = ::Office::EmailAction.find next_id
17
- next_action.update_attribute( :prev_email_action_id, params[:id] )
18
- end
19
-
20
- flag = @act.update_attributes( params[:email_action].permit! )
21
- if flag
22
- flash[:notice] = 'Success'
23
- else
24
- flash[:alert] = "No luck: #{@act.errors.full_messages.join(', ')}"
25
- end
26
-
27
- redirect_to action: 'index'
28
- end
29
-
30
8
  def edit
31
9
  @act = @email_action = Office::EmailAction.find( params[:id] )
32
10
  @act.ties.push Office::EmailActionTie.new( next_email_action_id: nil )
@@ -48,28 +26,37 @@ class ::IshManager::EmailActionsController < IshManager::ApplicationController
48
26
  authorize! :show, @act
49
27
  end
50
28
 
29
+ ## def create; update; end
30
+ ## def upsert; update; end
51
31
  def update
52
- @act = @email_action = Office::EmailAction.find( params[:id] )
53
- authorize! :update, @act
54
-
55
- params[:email_action][:ties_attributes].each do |k, v|
56
- if !v[:next_email_action_id].present?
57
- params[:email_action][:ties_attributes].delete( k )
58
- end
59
- if v[:to_delete] == "1"
60
- Actie.find( v[:id] ).delete
61
- params[:email_action][:ties_attributes].delete( k )
32
+ if params[:id]
33
+ @act = @email_action = Office::EmailAction.find( params[:id] )
34
+ else
35
+ @act = @email_action = Office::EmailAction.new
36
+ end
37
+ authorize! :upsert, @act
38
+
39
+ if params[:email_action][:ties_attributes]
40
+ params[:email_action][:ties_attributes].each do |k, v|
41
+ if !v[:next_email_action_id].present?
42
+ params[:email_action][:ties_attributes].delete( k )
43
+ end
44
+ if v[:to_delete] == "1"
45
+ Actie.find( v[:id] ).delete
46
+ params[:email_action][:ties_attributes].delete( k )
47
+ end
62
48
  end
63
49
  end
64
50
 
65
51
  flag = @act.update_attributes( params[:email_action].permit! )
66
52
  if flag
67
53
  flash[:notice] = 'Success'
54
+ redirect_to action: 'index'
68
55
  else
69
56
  flash[:alert] = "No luck: #{@act.errors.full_messages.join(', ')}. #{@act.ties.map { |t| t.errors.full_messages.join(', ') }.join(' | ') }"
57
+ render action: 'edit'
70
58
  end
71
59
 
72
- redirect_to action: 'index'
73
60
  end
74
61
 
75
62
  ##
@@ -9,3 +9,5 @@ class IshManager::TestEmailJob
9
9
  end
10
10
 
11
11
  end
12
+
13
+
@@ -25,5 +25,9 @@ module IshManager
25
25
  mail( :to => stock.profile.email, :subject => "IshManager Stock Alert :: #{stock.ticker}" ).deliver
26
26
  end
27
27
 
28
+ def test_email
29
+ mail( to: 'piousbox@gmail.com', subject: "Test email at #{Time.now}" )
30
+ end
31
+
28
32
  end
29
33
  end
@@ -56,28 +56,18 @@ class IshManager::OfficeMailer < IshManager::ApplicationMailer
56
56
  end
57
57
 
58
58
  def send_context_email ctx_id
59
- @email_ctx = ::Ish::EmailContext.find ctx_id
59
+ @ctx = ::Ish::EmailContext.find ctx_id
60
60
  ac = ActionController::Base.new
61
- ac.instance_variable_set( :@email_ctx, @email_ctx )
61
+ ac.instance_variable_set( :@ctx, @ctx )
62
62
 
63
- raise '@TODO: re-implement. _vp_ 2023-03-04'
64
- # case @email_ctx.email_template.type
65
- # when 'partial'
66
- # template = "render/_#{@email_ctx.email_template.slug}"
67
- # rendered_str = ac.render_to_string("ish_manager/email_templates/_#{@email_ctx.email_template.slug}")
68
- # when 'plain'
69
- # @body = @email_ctx.body_templated
70
- # template = "render/plain"
71
- # rendered_str = ac.render_to_string("ish_manager/email_templates/plain")
72
- # end
73
-
74
- @email_ctx.update( rendered_str: rendered_str, sent_at: Time.now.to_s )
63
+ rendered_str = ac.render_to_string("ish_manager/email_templates/_#{@ctx.tmpl.slug}")
64
+ @ctx.update( rendered_str: rendered_str, sent_at: Time.now.to_s )
75
65
 
76
66
  mail( from: @email_ctx.from_email,
77
67
  to: @email_ctx.to_email,
78
68
  bcc: 'piousbox@gmail.com',
79
69
  subject: @email_ctx.subject,
80
- template_name: template )
70
+ template_name: "render/_#{@ctx.tmpl.slug}" )
81
71
  end
82
72
 
83
73
  end
@@ -0,0 +1,3 @@
1
+
2
+ <p>This is a test email.</p>
3
+ <p>Time now: <%= Time.now %>.</p>
@@ -14,10 +14,10 @@
14
14
  .field
15
15
  %label Slug
16
16
  = f.text_field :slug
17
- .field
18
- %label Descr
19
- = f.text_area :descr
20
- .field
17
+ -# .field
18
+ -# %label Descr
19
+ -# = f.text_area :descr
20
+ .field.flex-row
21
21
  %label Template
22
22
  = f.select :email_template_id, options_for_select( @email_templates_list, selected: act.email_template_id ), {}, class: 'select2'
23
23
 
@@ -1,4 +1,6 @@
1
1
 
2
+ -# padded b/c eval(next_time_at) is long
3
+
2
4
  .email-actions-new.padded
3
5
  .header
4
6
  %h2.title
@@ -1,3 +1,11 @@
1
1
 
2
2
  .email-actions-show.max-width
3
- show...
3
+ .header
4
+ .title Email Action #{@act.id}
5
+
6
+ %ul
7
+ - @act.ties.map do |next_a|
8
+ %li
9
+ .a <b>Next act:</b> #{"(same)" if next_a.next_email_action.slug == @act.slug} #{next_a.next_email_action.slug}
10
+ .a <b>Next at exe:</b> #{next_a.next_at_exe}
11
+ .a <b>Eval'ed:</b> #{eval( next_a.next_at_exe )}
@@ -1,4 +1,4 @@
1
1
 
2
2
 
3
- = render "ish_manager/email_templates/#{@email_template.layout}", body: @body
3
+ = render "ish_manager/email_templates/#{@email_template.layout}"
4
4
 
@@ -1,3 +1,4 @@
1
1
 
2
- = raw ERB.new( body ).result
2
+
3
+ = raw ERB.new( @ctx.body ).result
3
4
 
@@ -1,28 +1,22 @@
1
1
 
2
- -#
3
- -# scheduled_emails / _form
4
- -#
5
-
6
2
  - sch_a = scheduled_email_action
7
3
  - url = sch_a.new_record? ? scheduled_email_actions_path : scheduled_email_action_path(sch_a.id)
8
4
 
9
5
  .scheduled-email-actions--form
10
- = form_for scheduled_email_action, url: url, as: :sch, html: { class: "form-mini" } do |f|
6
+ = form_for scheduled_email_action, url: url, as: :sch do |f|
11
7
  .header
12
8
  %h5.title Schedule an email action
13
9
 
14
- .field
10
+ .flex-row
15
11
  = f.label :lead
16
- = f.select :lead_id, options_for_select(@leads_list, selected: sch_a[:lead_id]||params[:lead_id] ), class: 'select2'
17
- .field
12
+ = f.select :lead_id, options_for_select(@leads_list, selected: sch_a[:lead_id]||params[:lead_id] ), {}, class: 'select2'
13
+ .flex-row
18
14
  %label State
19
- = f.select :state, options_for_select(::Office::ScheduledEmailAction::STATES, selected: sch_a.state ), class: 'select2'
20
- %br
21
- .field
22
- %label Email Action
23
- = f.select :email_action, options_for_select( @email_actions_list, selected: sch_a[:email_action_id] ), class: 'select2'
24
- %br
25
- .field
15
+ = f.select :state, options_for_select(::Office::ScheduledEmailAction::STATES, selected: sch_a.state )
16
+ .flex-row
17
+ = f.label :email_action
18
+ = f.select :email_action, options_for_select( @email_actions_list, selected: sch_a[:email_action_id] ), {}, class: 'select2'
19
+ .flex-row
26
20
  = f.label :perform_at
27
21
  = f.text_field :perform_at
28
22
 
@@ -0,0 +1,28 @@
1
+
2
+ -# unused, but maybe I should separate _form and _form_mini ?
3
+
4
+ - sch_a = scheduled_email_action
5
+ - url = sch_a.new_record? ? scheduled_email_actions_path : scheduled_email_action_path(sch_a.id)
6
+
7
+ .scheduled-email-actions--form
8
+ = form_for scheduled_email_action, url: url, as: :sch, html: { class: "form-mini" } do |f|
9
+ .header
10
+ %h5.title Schedule an email action
11
+
12
+ .flex-row
13
+ = f.label :lead
14
+ = f.select :lead_id, options_for_select(@leads_list, selected: sch_a[:lead_id]||params[:lead_id] ), {}, class: 'select2'
15
+ .field
16
+ %label State
17
+ = f.select :state, options_for_select(::Office::ScheduledEmailAction::STATES, selected: sch_a.state )
18
+ %br
19
+ .flex-row
20
+ = f.label :email_action
21
+ = f.select :email_action, options_for_select( @email_actions_list, selected: sch_a[:email_action_id] ), {}, class: 'select2'
22
+ %br
23
+ .field
24
+ = f.label :perform_at
25
+ = f.text_field :perform_at
26
+
27
+ .actions
28
+ = submit_tag 'Schedule'
@@ -6,6 +6,8 @@
6
6
  -# (#{Sch.kept.count})
7
7
  (#{Sch.all.count})
8
8
  = link_to '[+]', new_scheduled_email_action_path
9
+ .header
10
+ Time now: #{Time.now.strftime('%Y-%m-%d %l:%M%P')}
9
11
 
10
12
  .items
11
13
  - @scheduled_email_actions.each do |sch|
@@ -19,4 +21,4 @@
19
21
  %li <b>Tmpl:</b> #{sch.email_action.email_template.slug}
20
22
  %li <b>Lead:</b> #{link_to sch.lead.email, lead_path(sch.lead) }
21
23
  %li <b>State:</b> #{sch.state}
22
- %li <b>Perform at:</b> #{sch.perform_at}
24
+ %li <b>Perform at:</b> #{sch.perform_at.in_time_zone}
data/config/routes.rb CHANGED
@@ -50,6 +50,7 @@ IshManager::Engine.routes.draw do
50
50
  # office, below
51
51
  #
52
52
 
53
+ post :email_actions, to: 'email_actions#update'
53
54
  resources :email_actions
54
55
 
55
56
  resources :email_campaigns
@@ -27,11 +27,11 @@ namespace :office do
27
27
  next_at = eval(tie.next_at_exe)
28
28
  next_sch = Sch.find_or_initialize_by({
29
29
  lead_id: sch.lead_id,
30
- email_action_id: nxt.id,
30
+ email_action_id: next_act.id,
31
31
  })
32
- sch_nxt.perform_at = next_at
33
- sch_nxt.state = Sch::STATE_ACTIVE
34
- sch_nxt.save!
32
+ next_sch.perform_at = next_at
33
+ next_sch.state = Sch::STATE_ACTIVE
34
+ next_sch.save!
35
35
  end
36
36
 
37
37
  print '+'
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.386
4
+ version: 0.1.8.387
5
5
  platform: ruby
6
6
  authors:
7
7
  - piousbox
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-25 00:00:00.000000000 Z
11
+ date: 2023-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -298,7 +298,7 @@ files:
298
298
  - app/assets/stylesheets/ish_manager/office.scss
299
299
  - app/assets/stylesheets/ish_manager/pagination.scss
300
300
  - app/assets/stylesheets/ish_manager/photos.scss
301
- - app/assets/stylesheets/ish_manager/scheduled_actions_emails.scss
301
+ - app/assets/stylesheets/ish_manager/scheduled_email_actions.scss
302
302
  - app/assets/stylesheets/ish_manager/tags.scss
303
303
  - app/assets/stylesheets/ish_manager/trash/bootstrap.css
304
304
  - app/assets/stylesheets/ish_manager/trash/materialize.css
@@ -393,6 +393,7 @@ files:
393
393
  - app/views/ish_manager/application/_search.haml
394
394
  - app/views/ish_manager/application/home.haml
395
395
  - app/views/ish_manager/application_mailer/shared_galleries.html.erb
396
+ - app/views/ish_manager/application_mailer/test_email.html.erb
396
397
  - app/views/ish_manager/application_mailer/welcome.html.erb
397
398
  - app/views/ish_manager/categories/_subtree.haml
398
399
  - app/views/ish_manager/categories/index.haml
@@ -447,7 +448,7 @@ files:
447
448
  - app/views/ish_manager/email_templates/iframe_src.haml
448
449
  - app/views/ish_manager/email_templates/index.haml
449
450
  - app/views/ish_manager/email_templates/new.haml
450
- - app/views/ish_manager/email_templates/plain.html.erb
451
+ - app/views/ish_manager/email_templates/plain.html.erb-trash
451
452
  - app/views/ish_manager/email_templates/show.haml
452
453
  - app/views/ish_manager/email_unsubscribes/new.haml
453
454
  - app/views/ish_manager/galleries/_form.haml
@@ -539,6 +540,7 @@ files:
539
540
  - app/views/ish_manager/reports/show.haml
540
541
  - app/views/ish_manager/scheduled_actions/_form_mini.haml
541
542
  - app/views/ish_manager/scheduled_email_actions/_form.haml
543
+ - app/views/ish_manager/scheduled_email_actions/_form_mini.haml-trash
542
544
  - app/views/ish_manager/scheduled_email_actions/edit.haml
543
545
  - app/views/ish_manager/scheduled_email_actions/index.haml
544
546
  - app/views/ish_manager/scheduled_email_actions/new.haml