ish_manager 0.1.8.428 → 0.1.8.430
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/ish_manager/application.js +2 -0
- data/app/assets/javascripts/ish_manager/leads.js +13 -0
- data/app/assets/stylesheets/ish_manager/email.scss +5 -1
- data/app/controllers/ish_manager/categories_controller.rb +6 -0
- data/app/controllers/ish_manager/email_campaigns_controller.rb +5 -0
- data/app/controllers/ish_manager/leads_controller.rb +21 -21
- data/app/controllers/ish_manager/leadsets_controller.rb +11 -3
- data/app/controllers/ish_manager/user_profiles_controller.rb +1 -1
- data/app/views/ish_manager/application/_main_header_admin.haml +1 -1
- data/app/views/ish_manager/categories/show.haml +2 -5
- data/app/views/ish_manager/email_campaigns/index.haml +1 -0
- data/app/views/ish_manager/email_campaigns/show.haml +1 -7
- data/app/views/ish_manager/email_contexts/index.haml +3 -3
- data/app/views/ish_manager/leads/_index.haml +69 -0
- data/app/views/ish_manager/leads/index.haml +1 -56
- data/app/views/ish_manager/leads/show.haml +1 -0
- data/app/views/ish_manager/leadsets/index.haml +31 -32
- data/app/views/ish_manager/leadsets/show.haml +5 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e6abbf238a452811df0495561ea410cf0a569b39065ad1067e829ee09d0091d
|
4
|
+
data.tar.gz: fe6580a8254170fcfc39b0feef97976bdd30e5b8272e57a8d85275d198e2a9bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b671d0e4eabdcd2e351d9fb0fa51661c6c8e6b52cd05d19af5f79a58cd67ea703f9159bcf882330ad4e0fec1d3c16c1e32d7d01123a38427b4bc52ef39733e2e
|
7
|
+
data.tar.gz: '008e15ce28bfdd511fdd4186081368a7989bfae05e8d424b04ef5408248233f070e35b81f356312284636581c940ae1ca4c19fb64ccd730184e2753ae50252d3'
|
@@ -3,6 +3,7 @@
|
|
3
3
|
//= require ish_manager/vendor/jquery.ui.widget
|
4
4
|
//= require ish_manager/vendor/jquery.fileupload
|
5
5
|
//= require ish_manager/vendor/jquery-ui.min
|
6
|
+
//
|
6
7
|
// require ish_manager/vendor/summernote-bs4.min
|
7
8
|
//
|
8
9
|
//= require ish_manager/shared
|
@@ -13,6 +14,7 @@
|
|
13
14
|
//= require ish_manager/email_templates
|
14
15
|
//= require ish_manager/galleries
|
15
16
|
//= require ish_manager/iro
|
17
|
+
//= require ish_manager/leads
|
16
18
|
//
|
17
19
|
|
18
20
|
const AppRouter = {
|
@@ -0,0 +1,13 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
$(document).ready(() => {
|
4
|
+
|
5
|
+
$("input[type='checkbox']#selectAll").change(function () {
|
6
|
+
logg(this, 'clicked')
|
7
|
+
|
8
|
+
const checked = $(this).prop('checked')
|
9
|
+
$(this).closest('table').find("tbody input[type='checkbox']").prop('checked', checked)
|
10
|
+
})
|
11
|
+
|
12
|
+
})
|
13
|
+
|
@@ -12,8 +12,10 @@
|
|
12
12
|
.emails-ns, // emails namespace
|
13
13
|
.iro-purses-my,
|
14
14
|
.leads-edit,
|
15
|
+
.leads--index,
|
15
16
|
.leads-index,
|
16
17
|
.leads-show,
|
18
|
+
.leadsets-show,
|
17
19
|
.scheduled-email-actions--form,
|
18
20
|
.scheduled-emails-index {
|
19
21
|
.header {
|
@@ -21,7 +23,9 @@
|
|
21
23
|
justify-content: center;
|
22
24
|
}
|
23
25
|
}
|
24
|
-
|
26
|
+
.ctxs {
|
27
|
+
text-align: center;
|
28
|
+
}
|
25
29
|
.email-actions--form {
|
26
30
|
.select2-container {
|
27
31
|
flex-grow: 1;
|
@@ -14,6 +14,12 @@ class ::IshManager::CategoriesController < IshManager::ApplicationController
|
|
14
14
|
@category = WpTag.find params[:id]
|
15
15
|
authorize! :show, @category
|
16
16
|
|
17
|
+
## same as in leads#index
|
18
|
+
@leads = @category.leads
|
19
|
+
if params[:q].present?
|
20
|
+
@leads = @leads.where(" email LIKE ? ", "%#{params[:q]}%" )
|
21
|
+
end
|
22
|
+
@leads = @leads.page( params[:leads_page] ).per( current_profile.per_page )
|
17
23
|
end
|
18
24
|
|
19
25
|
end
|
@@ -38,6 +38,11 @@ class ::IshManager::EmailCampaignsController < IshManager::ApplicationController
|
|
38
38
|
def show
|
39
39
|
@campaign = Ish::EmailCampaign.find params[:id]
|
40
40
|
authorize! :show, @campaign
|
41
|
+
@leads = @campaign.leads
|
42
|
+
if params[:q].present?
|
43
|
+
@leads = @leads.where(" email LIKE ? ", "%#{params[:q]}%" )
|
44
|
+
end
|
45
|
+
@leads = @leads.page( params[:leads_page ] ).per( current_profile.per_page )
|
41
46
|
end
|
42
47
|
|
43
48
|
def update
|
@@ -71,27 +71,27 @@ class ::IshManager::LeadsController < IshManager::ApplicationController
|
|
71
71
|
@leads = @leads.page( params[:leads_page ] ).per( current_profile.per_page )
|
72
72
|
|
73
73
|
@email_contexts = {}
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
74
|
+
lead_emails = @leads.map( &:email ).compact.reject(&:empty?)
|
75
|
+
map = %Q{
|
76
|
+
function() {
|
77
|
+
emit(this.to_email, {count: 1})
|
78
|
+
}
|
79
|
+
}
|
80
|
+
reduce = %Q{
|
81
|
+
function(key, values) {
|
82
|
+
var result = {count: 0};
|
83
|
+
values.forEach(function(value) {
|
84
|
+
result.count += value.count;
|
85
|
+
});
|
86
|
+
return result;
|
87
|
+
}
|
88
|
+
}
|
89
|
+
tmp_contexts = Ish::EmailContext.all.where( :to_email.in => lead_emails
|
90
|
+
).map_reduce( map, reduce
|
91
|
+
).out( inline: 1 ## From: https://www.mongodb.com/docs/mongoid/current/reference/map-reduce/
|
92
|
+
).to_a
|
93
|
+
tmp_contexts.map { |x| @email_contexts[x[:_id]] = x[:value][:count].to_i }
|
94
|
+
puts! @email_contexts, '@email_contexts'
|
95
95
|
|
96
96
|
end
|
97
97
|
|
@@ -33,7 +33,11 @@ class ::IshManager::LeadsetsController < IshManager::ApplicationController
|
|
33
33
|
|
34
34
|
def index
|
35
35
|
authorize! :index, Leadset
|
36
|
-
@leadsets = Leadset.all.kept.
|
36
|
+
@leadsets = Leadset.all.kept.includes(:leads)
|
37
|
+
if params[:q].present?
|
38
|
+
@leadsets = @leadsets.where(" company_url LIKE ? ", "%#{params[:q]}%" )
|
39
|
+
end
|
40
|
+
@leadsets = @leadsets.page( params[:leadsets_page] ).per( current_profile.per_page )
|
37
41
|
end
|
38
42
|
|
39
43
|
def new
|
@@ -42,8 +46,12 @@ class ::IshManager::LeadsetsController < IshManager::ApplicationController
|
|
42
46
|
end
|
43
47
|
|
44
48
|
def show
|
45
|
-
|
46
|
-
|
49
|
+
@leadset = Leadset.find params[:id]
|
50
|
+
authorize! :show, @leadset
|
51
|
+
@email_contexts = {}
|
52
|
+
@leadset.employees.each do |lead|
|
53
|
+
@email_contexts[lead.email] = lead.email_contexts
|
54
|
+
end
|
47
55
|
end
|
48
56
|
|
49
57
|
def update
|
@@ -59,7 +59,7 @@
|
|
59
59
|
= link_to "Tmpls (#{Ish::EmailTemplate.all.count})", email_templates_path
|
60
60
|
= link_to '[+]', new_email_template_path
|
61
61
|
%li
|
62
|
-
= link_to "
|
62
|
+
= link_to "Companies (#{Leadset.kept.length})", leadsets_path
|
63
63
|
= link_to '[+]', new_leadset_path
|
64
64
|
|
65
65
|
|
@@ -3,8 +3,5 @@
|
|
3
3
|
.header
|
4
4
|
%h2.title Category/Tag `#{@category.slug}`
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
%ol
|
9
|
-
- @category.leads.each do |lead|
|
10
|
-
%li= link_to lead.email, lead_path(lead)
|
6
|
+
= render 'ish_manager/leads/index', leads: @leads, email_contexts: {}, search_path: category_path(@category)
|
7
|
+
|
@@ -14,10 +14,4 @@
|
|
14
14
|
-# %li Send At: #{@campaign.send_at}
|
15
15
|
|
16
16
|
.collapse-expand#campaignLeads Email Campaign leads (#{@campaign.campaign_leads.length})
|
17
|
-
|
18
|
-
- @campaign.campaign_leads.each do |clead|
|
19
|
-
%li.item
|
20
|
-
.inline-block= button_to '[x]', email_campaign_lead_path(clead), method: :delete, :data => { :confirm => 'Are you sure?' }
|
21
|
-
= link_to clead.lead.email, lead_path(clead.lead.id)
|
22
|
-
(#{clead.lead.email_contexts.length} ctxs)
|
23
|
-
|
17
|
+
= render 'ish_manager/leads/index', leads: @leads, search_path: email_campaign_path(@campaign), email_contexts: {}
|
@@ -31,15 +31,15 @@
|
|
31
31
|
%tbody
|
32
32
|
- @ctxs.each do |ctx|
|
33
33
|
%tr
|
34
|
-
%td
|
34
|
+
%td.actions
|
35
35
|
- if ctx.sent_at
|
36
36
|
[~]
|
37
37
|
- else
|
38
38
|
= link_to '[~]', edit_email_context_path(ctx)
|
39
39
|
= button_to '[x]', email_context_path(ctx), method: :delete, form_class: :inline, data: { confirm: 'Are you sure?' }
|
40
|
-
%td
|
40
|
+
%td.from
|
41
41
|
= ctx.from_email ? ctx.from_email : "t| #{ctx.tmpl.from_email}"
|
42
|
-
%td= ctx.
|
42
|
+
%td.to= link_to ctx.lead.email, lead_path(ctx.lead)
|
43
43
|
%td
|
44
44
|
= link_to email_context_path(ctx) do
|
45
45
|
= ctx.subject ? ctx.subject : "t| #{ctx.tmpl.subject}"
|
@@ -0,0 +1,69 @@
|
|
1
|
+
|
2
|
+
-#
|
3
|
+
-# receives locals: leads , email_contexts , search_path
|
4
|
+
-#
|
5
|
+
- email_contexts ||= {}
|
6
|
+
|
7
|
+
.leads--index.padded
|
8
|
+
.header
|
9
|
+
%h2.title
|
10
|
+
Leads
|
11
|
+
- if !defined?( skip_pagination ) || !skip_pagination
|
12
|
+
(#{leads.total_count})
|
13
|
+
- else
|
14
|
+
(#{leads.length})
|
15
|
+
= link_to raw("<i class='fa fa-plus-square'></i>"), new_lead_path
|
16
|
+
|
17
|
+
- if defined?( search_path )
|
18
|
+
.float-right= render 'search', path: search_path
|
19
|
+
= form_tag leads_bulkop_path do
|
20
|
+
= label_tag 'Act on Selected:'
|
21
|
+
= select_tag :op, options_for_select( [[nil,nil]] + Lead::OPS )
|
22
|
+
= select_tag :email_campaign_id, options_for_select( @email_campaigns_list )
|
23
|
+
= submit_tag 'Go'
|
24
|
+
|
25
|
+
- if !defined?( skip_pagination ) || !skip_pagination
|
26
|
+
= paginate leads, param_name: :leads_page
|
27
|
+
%table.bordered
|
28
|
+
%thead
|
29
|
+
%tr
|
30
|
+
%th= check_box_tag :selectAll
|
31
|
+
%th Name/Email
|
32
|
+
%th.company Company
|
33
|
+
%th Phone, address
|
34
|
+
%th Tag
|
35
|
+
%th created_at
|
36
|
+
%th.ctxs Ctxs
|
37
|
+
%th Sch
|
38
|
+
|
39
|
+
%tbody
|
40
|
+
- leads.each do |lead|
|
41
|
+
%tr
|
42
|
+
%td= check_box_tag 'lead_ids[]', lead.id
|
43
|
+
%td= link_to "#{lead.name} <#{lead.email}>", lead_path( lead )
|
44
|
+
%td.company
|
45
|
+
= lead.company.company_url
|
46
|
+
- if lead.company.name.present?
|
47
|
+
<br /><b>#{lead.company.name}</b>
|
48
|
+
%td
|
49
|
+
.a= lead.phone if lead.phone.present?
|
50
|
+
.a= lead.address if lead.address.present?
|
51
|
+
%td= lead.wp_tags.map(&:name).join(", ")
|
52
|
+
%td= lead.created_at.to_s[0..10]
|
53
|
+
%td.ctxs
|
54
|
+
= email_contexts[lead.email].length || '-'
|
55
|
+
%td.sch
|
56
|
+
= lead.scheduled_email_actions.length
|
57
|
+
= link_to '[+]', new_scheduled_email_action_path( lead_id: lead.id )
|
58
|
+
-# %ul
|
59
|
+
-# - lead.scheduled_email_actions.map do |sch_a|
|
60
|
+
-# %li
|
61
|
+
-# = link_to sch_a.email_action.slug, edit_scheduled_email_action_path( sch_a )
|
62
|
+
-# [x]
|
63
|
+
|
64
|
+
- if !defined?( skip_pagination ) || !skip_pagination
|
65
|
+
= paginate leads, param_name: :leads_page
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
|
@@ -1,57 +1,2 @@
|
|
1
1
|
|
2
|
-
|
3
|
-
.header
|
4
|
-
%h2.title
|
5
|
-
#{link_to 'Kept Leads', leads_path} (#{::Lead.kept.count}, #{::Lead.all.count})
|
6
|
-
= link_to raw("<i class='fa fa-plus-square'></i>"), new_lead_path
|
7
|
-
|
8
|
-
= render 'search', resource: ::Lead
|
9
|
-
= form_tag leads_bulkop_path do
|
10
|
-
= label_tag 'Act on Selected:'
|
11
|
-
= select_tag :op, options_for_select( [[nil,nil]] + Lead::OPS )
|
12
|
-
= select_tag :email_campaign_id, options_for_select( @email_campaigns_list )
|
13
|
-
= submit_tag 'Go'
|
14
|
-
|
15
|
-
= paginate @leads, param_name: :leads_page
|
16
|
-
%table.bordered
|
17
|
-
%thead
|
18
|
-
%tr
|
19
|
-
%th
|
20
|
-
%th Name/Email
|
21
|
-
%th.company Company
|
22
|
-
%th Phone, address
|
23
|
-
%th Tag
|
24
|
-
%th created_at
|
25
|
-
%th Ctx
|
26
|
-
%th Sch
|
27
|
-
|
28
|
-
%tbody
|
29
|
-
- @leads.each do |lead|
|
30
|
-
%tr
|
31
|
-
%td= check_box_tag 'lead_ids[]', lead.id
|
32
|
-
%td= link_to "#{lead.name} <#{lead.email}>", lead_path( lead )
|
33
|
-
%td.company
|
34
|
-
= lead.company.company_url
|
35
|
-
- if lead.company.name.present?
|
36
|
-
<br /><b>#{lead.company.name}</b>
|
37
|
-
%td
|
38
|
-
.a= lead.phone if lead.phone.present?
|
39
|
-
.a= lead.address if lead.address.present?
|
40
|
-
%td= lead.wp_tags.map(&:name).join(", ")
|
41
|
-
%td= lead.created_at.to_s[0..10]
|
42
|
-
%td.ctx
|
43
|
-
= @email_contexts[lead.email] || '-'
|
44
|
-
%td.sch
|
45
|
-
= lead.scheduled_email_actions.length
|
46
|
-
= link_to '[+]', new_scheduled_email_action_path( lead_id: lead.id )
|
47
|
-
-# %ul
|
48
|
-
-# - lead.scheduled_email_actions.map do |sch_a|
|
49
|
-
-# %li
|
50
|
-
-# = link_to sch_a.email_action.slug, edit_scheduled_email_action_path( sch_a )
|
51
|
-
-# [x]
|
52
|
-
|
53
|
-
= paginate @leads, param_name: :leads_page
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
2
|
+
= render 'index', leads: @leads, email_contexts: @email_contexts, search_path: leads_path
|
@@ -13,26 +13,24 @@
|
|
13
13
|
.n-selected -
|
14
14
|
= button_tag 'Delete', method: :delete, class: 'delete-btn'
|
15
15
|
|
16
|
+
.float-right= render 'search', path: leadsets_path
|
16
17
|
= paginate @leadsets, :param_name => :leadsets_page, :views_prefix => 'ish_manager'
|
17
|
-
%table
|
18
|
+
%table.bordered
|
18
19
|
%thead
|
19
20
|
%tr
|
20
21
|
%th
|
21
|
-
-# %th created at
|
22
|
-
-# %th Name
|
23
22
|
%th.company-url Company Url
|
24
23
|
%th Tags
|
25
24
|
%th +
|
25
|
+
%th.employees Employees
|
26
26
|
%th.leads Leads
|
27
27
|
%tbody
|
28
28
|
- @leadsets.each_with_index do |leadset, idx1|
|
29
29
|
%tr
|
30
30
|
%td= check_box_tag 'leadset_ids[]', leadset.id, nil, { class: 'i-sel' }
|
31
|
-
|
32
|
-
-# %td= link_to leadset.name, leadset_path( leadset )
|
33
|
-
%td= link_to leadset.company_url, leadset.company_url
|
34
|
-
%td.tags
|
31
|
+
%td= link_to leadset.company_url, leadset_path(leadset)
|
35
32
|
|
33
|
+
%td.tags
|
36
34
|
- leadset.wp_tags.each_with_index do |tag, idx2|
|
37
35
|
.chip
|
38
36
|
= tag.name
|
@@ -47,35 +45,36 @@
|
|
47
45
|
.actions
|
48
46
|
= submit_tag 'Add'
|
49
47
|
|
50
|
-
%td.
|
51
|
-
|
52
|
-
- leadset.
|
53
|
-
|
48
|
+
%td.employees
|
49
|
+
= leadset.employees.length
|
50
|
+
-# - leadset.employees.each do |lead|
|
51
|
+
-# .item
|
52
|
+
|
53
|
+
-# .chip
|
54
|
+
-# -# = lead.email
|
55
|
+
-# = link_to lead.name, lead_path( lead )
|
54
56
|
|
55
|
-
|
56
|
-
|
57
|
-
|
57
|
+
-# .relative
|
58
|
+
-# %a.chip{ href: email_contexts_for_lead_path( lead ) }
|
59
|
+
-# \(
|
60
|
+
-# = lead.email_contexts.count
|
61
|
+
-# %i.fa.fa-envelope
|
62
|
+
-# \)
|
58
63
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
%i.fa.fa-envelope
|
64
|
-
\)
|
64
|
+
-# .relative
|
65
|
+
-# %i.fa.fa-pencil.expand-next
|
66
|
+
-# %form.form-mini{ style: 'display: none' }
|
67
|
+
-# Editing...
|
65
68
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
Editing...
|
69
|
+
-# .relative
|
70
|
+
-# %i.fa.fa-clock-o.expand-next
|
71
|
+
-# .expand-hide= render 'ish_manager/scheduled_email_actions/form', scheduled_email_action: Sch.new({ lead_id: lead.id })
|
70
72
|
|
71
|
-
|
72
|
-
|
73
|
-
|
73
|
+
-# -# .scheduled
|
74
|
+
-# -# - lead.scheduled_emails.each do |sch|
|
75
|
+
-# -# .chip
|
76
|
+
-# -# -# .interval= sch.interval
|
77
|
+
-# -# -# .tmpl= sch.email_template.slug
|
74
78
|
|
75
|
-
.scheduled
|
76
|
-
- lead.scheduled_emails.each do |sch|
|
77
|
-
.chip
|
78
|
-
.interval= sch.interval
|
79
|
-
.tmpl= sch.email_template.slug
|
80
79
|
= paginate @leadsets, :param_name => :leadsets_page, :views_prefix => 'ish_manager'
|
81
80
|
|
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.
|
4
|
+
version: 0.1.8.430
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- piousbox
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-05-
|
11
|
+
date: 2023-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -252,6 +252,7 @@ files:
|
|
252
252
|
- app/assets/javascripts/ish_manager/email_templates.js
|
253
253
|
- app/assets/javascripts/ish_manager/galleries.js
|
254
254
|
- app/assets/javascripts/ish_manager/iro.js
|
255
|
+
- app/assets/javascripts/ish_manager/leads.js
|
255
256
|
- app/assets/javascripts/ish_manager/maps.js
|
256
257
|
- app/assets/javascripts/ish_manager/shared.js
|
257
258
|
- app/assets/javascripts/ish_manager/vendor/jquery-ui.min.js
|
@@ -654,6 +655,7 @@ files:
|
|
654
655
|
- app/views/ish_manager/kaminari/_prev_page.html.erb
|
655
656
|
- app/views/ish_manager/leads/_form.haml
|
656
657
|
- app/views/ish_manager/leads/_form_import.haml
|
658
|
+
- app/views/ish_manager/leads/_index.haml
|
657
659
|
- app/views/ish_manager/leads/_index_rows.haml
|
658
660
|
- app/views/ish_manager/leads/edit.haml
|
659
661
|
- app/views/ish_manager/leads/index.haml
|
@@ -664,6 +666,7 @@ files:
|
|
664
666
|
- app/views/ish_manager/leadsets/index.haml
|
665
667
|
- app/views/ish_manager/leadsets/index_dataTables.haml
|
666
668
|
- app/views/ish_manager/leadsets/new.haml
|
669
|
+
- app/views/ish_manager/leadsets/show.haml
|
667
670
|
- app/views/ish_manager/maps/_form.haml
|
668
671
|
- app/views/ish_manager/maps/_index_item.haml
|
669
672
|
- app/views/ish_manager/maps/_map_meta_row.haml
|