e9_crm 0.1.17 → 0.1.18
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/e9_crm/offers_controller.rb +10 -1
- data/app/controllers/e9_crm/resources_controller.rb +2 -2
- data/app/helpers/e9_crm/campaigns_helper.rb +7 -1
- data/app/helpers/e9_crm/deals_helper.rb +6 -5
- data/app/models/campaign.rb +8 -0
- data/app/models/deal.rb +22 -2
- data/app/models/no_campaign.rb +4 -0
- data/app/models/offer.rb +7 -0
- data/app/observers/deal_observer.rb +0 -4
- data/app/views/e9_crm/campaigns/_table.html.haml +2 -2
- data/app/views/e9_crm/contact_offers/_form_inner.html.haml +1 -1
- data/app/views/e9_crm/contacts/show.html.haml +1 -1
- data/app/views/e9_crm/dated_costs/_form_inner.html.haml +1 -1
- data/app/views/e9_crm/deals/_form_inner.html.haml +4 -4
- data/app/views/e9_crm/deals/_reports_table.html.haml +31 -31
- data/app/views/e9_crm/file_download_offers/_form_inner.html.haml +1 -1
- data/app/views/e9_crm/leads/new.html.haml +1 -1
- data/app/views/e9_crm/offers/_form_inner.html.haml +1 -1
- data/app/views/e9_crm/offers/_public_offer.html.haml +1 -1
- data/app/views/e9_crm/video_offers/_form_inner.html.haml +1 -1
- data/config/locales/en.yml +27 -4
- data/lib/e9_crm/controller.rb +8 -0
- data/lib/e9_crm/version.rb +1 -1
- data/lib/e9_crm.rb +1 -6
- metadata +4 -37
@@ -14,7 +14,8 @@ class E9Crm::OffersController < E9Crm::ResourcesController
|
|
14
14
|
|
15
15
|
def show
|
16
16
|
clear_breadcrumbs
|
17
|
-
|
17
|
+
add_home_crumb
|
18
|
+
add_breadcrumb! @show_title = resource.name
|
18
19
|
end
|
19
20
|
|
20
21
|
protected
|
@@ -38,4 +39,12 @@ class E9Crm::OffersController < E9Crm::ResourcesController
|
|
38
39
|
def determine_layout
|
39
40
|
request.xhr? ? false : super
|
40
41
|
end
|
42
|
+
|
43
|
+
def default_ordered_on
|
44
|
+
:name
|
45
|
+
end
|
46
|
+
|
47
|
+
def default_ordered_dir
|
48
|
+
:ASC
|
49
|
+
end
|
41
50
|
end
|
@@ -1,4 +1,6 @@
|
|
1
1
|
class E9Crm::ResourcesController < E9Crm::BaseController
|
2
|
+
inherit_resources
|
3
|
+
|
2
4
|
include E9Rails::Helpers::ResourceErrorMessages
|
3
5
|
|
4
6
|
# NOTE depending on e9_base pagination (which should eventually use this module)
|
@@ -12,8 +14,6 @@ class E9Crm::ResourcesController < E9Crm::BaseController
|
|
12
14
|
class_inheritable_accessor :should_paginate_index
|
13
15
|
self.should_paginate_index = true
|
14
16
|
|
15
|
-
inherit_resources
|
16
|
-
|
17
17
|
respond_to :js
|
18
18
|
|
19
19
|
add_resource_breadcrumbs
|
@@ -1,12 +1,18 @@
|
|
1
1
|
module E9Crm::CampaignsHelper
|
2
2
|
def display_campaign_fee(val)
|
3
|
-
Money === val && val || 'n/a'
|
3
|
+
Money === val && val.format || 'n/a'
|
4
4
|
end
|
5
5
|
|
6
6
|
def no_money
|
7
7
|
@_no_money ||= Money.new(0)
|
8
8
|
end
|
9
9
|
|
10
|
+
def m(val)
|
11
|
+
val ||= no_money
|
12
|
+
val = val.to_money
|
13
|
+
val.format
|
14
|
+
end
|
15
|
+
|
10
16
|
def display_campaign_code(val)
|
11
17
|
val && "?#{E9Crm.query_param}=#{val}" || 'n/a'
|
12
18
|
end
|
@@ -16,6 +16,7 @@ module E9Crm::DealsHelper
|
|
16
16
|
def deal_status_select_options
|
17
17
|
@_deal_status_select_options ||= begin
|
18
18
|
options = Deal::Status::OPTIONS - %w(lead)
|
19
|
+
options.map! {|o| [o.titleize, o] }
|
19
20
|
options.unshift ['All Statuses', nil]
|
20
21
|
options_for_select(options)
|
21
22
|
end
|
@@ -23,7 +24,7 @@ module E9Crm::DealsHelper
|
|
23
24
|
|
24
25
|
def deal_category_select_options
|
25
26
|
@_deal_category_select_options ||= begin
|
26
|
-
options = MenuOption.options_for('Deal Category')
|
27
|
+
options = MenuOption.options_for('Deal Category').sort
|
27
28
|
options.unshift ['All Categories', nil]
|
28
29
|
options_for_select(options)
|
29
30
|
end
|
@@ -31,7 +32,7 @@ module E9Crm::DealsHelper
|
|
31
32
|
|
32
33
|
def deal_owner_select_options
|
33
34
|
@_deal_owner_select_options ||= begin
|
34
|
-
options =
|
35
|
+
options = deal_contacts_array
|
35
36
|
options.unshift ['All Responsible', nil]
|
36
37
|
options_for_select(options)
|
37
38
|
end
|
@@ -39,7 +40,7 @@ module E9Crm::DealsHelper
|
|
39
40
|
|
40
41
|
def deal_offer_select_options
|
41
42
|
@_deal_offer_select_options ||= begin
|
42
|
-
options = Offer.all.map {|c| [c.name, c.id] }
|
43
|
+
options = Offer.all.map {|c| [c.name, c.id] }.sort_by {|name, id| name.upcase }
|
43
44
|
options.unshift ['Any/No Offer', nil]
|
44
45
|
options_for_select(options)
|
45
46
|
end
|
@@ -84,11 +85,11 @@ module E9Crm::DealsHelper
|
|
84
85
|
def deal_contacts
|
85
86
|
@_eligible_responsible_contacts ||= begin
|
86
87
|
roles = E9::Roles.list.map(&:role).select {|r| r > 'user' && r < 'e9_user' }
|
87
|
-
User.includes(:contact).for_roles(roles).all.map(&:contact).compact
|
88
|
+
User.includes(:contact).for_roles(roles).all.map(&:contact).compact.sort_by {|c| c.name.upcase }
|
88
89
|
end
|
89
90
|
end
|
90
91
|
|
91
92
|
def deal_contacts_array
|
92
|
-
deal_contacts.map {|c| [c.name, c.id] }
|
93
|
+
deal_contacts.map {|c| [c.name, c.id] }
|
93
94
|
end
|
94
95
|
end
|
data/app/models/campaign.rb
CHANGED
data/app/models/deal.rb
CHANGED
@@ -27,8 +27,7 @@ class Deal < ActiveRecord::Base
|
|
27
27
|
# lead only validations
|
28
28
|
# require lead_name and lead_email; gotten from current_user if it exists
|
29
29
|
validates :lead_name, :presence => { :if => lambda {|r| r.lead? } }
|
30
|
-
validates :lead_email, :presence => { :if => lambda {|r| r.lead? } }
|
31
|
-
:email => { :if => lambda {|r| r.lead? }, :allow_blank => true }
|
30
|
+
validates :lead_email, :presence => { :if => lambda {|r| r.lead? } }
|
32
31
|
|
33
32
|
# NOTE should offer be validated?
|
34
33
|
#validates :offer, :presence => { :if => lambda {|r| r.lead? } }
|
@@ -47,6 +46,7 @@ class Deal < ActiveRecord::Base
|
|
47
46
|
# If a lead with no user, find the user by email or create it, then if mailing_lists
|
48
47
|
# were passed, assign the user those mailing lists
|
49
48
|
after_create :handle_user_if_lead
|
49
|
+
after_create :send_offer_conversion_email_if_lead
|
50
50
|
|
51
51
|
# money column definitions for pseudo attributes (added on the reports scope)
|
52
52
|
%w(total_value average_value total_cost average_cost).each do |money_column|
|
@@ -173,6 +173,10 @@ class Deal < ActiveRecord::Base
|
|
173
173
|
scope :owner, lambda {|owner| where(:contact_id => owner.to_param) }
|
174
174
|
scope :status, lambda {|status| where(:status => status) }
|
175
175
|
|
176
|
+
def to_liquid
|
177
|
+
Drop.new(self)
|
178
|
+
end
|
179
|
+
|
176
180
|
protected
|
177
181
|
|
178
182
|
def write_options(obj={})
|
@@ -250,6 +254,15 @@ class Deal < ActiveRecord::Base
|
|
250
254
|
end
|
251
255
|
end
|
252
256
|
|
257
|
+
def send_offer_conversion_email_if_lead
|
258
|
+
if lead? && offer && email = offer.conversion_alert_email.presence
|
259
|
+
Rails.logger.debug("Sending Deal Conversion Alert to [#{email}]")
|
260
|
+
Offer.conversion_email.send!(email, :offer => offer, :lead => self)
|
261
|
+
end
|
262
|
+
rescue
|
263
|
+
Rails.logger.debug("Deal conversion alert failed: #{$!}")
|
264
|
+
end
|
265
|
+
|
253
266
|
def update_to_pending_status
|
254
267
|
if self.status == Status::Lead
|
255
268
|
self.status = Status::Pending
|
@@ -264,6 +277,13 @@ class Deal < ActiveRecord::Base
|
|
264
277
|
)
|
265
278
|
end
|
266
279
|
|
280
|
+
class Drop < ::E9::Liquid::Drops::Base
|
281
|
+
source_methods :name, :category, :lead_email, :lead_name, :info, :offer,
|
282
|
+
:campaign, :contacts, :owner, :status
|
283
|
+
|
284
|
+
date_methods :closed_at, :converted_at
|
285
|
+
end
|
286
|
+
|
267
287
|
module Status
|
268
288
|
OPTIONS = %w(lead pending won lost)
|
269
289
|
Lead = OPTIONS[0]
|
data/app/models/no_campaign.rb
CHANGED
data/app/models/offer.rb
CHANGED
@@ -45,6 +45,9 @@ class Offer < Renderable
|
|
45
45
|
name
|
46
46
|
end
|
47
47
|
|
48
|
+
def to_liquid
|
49
|
+
Drop.new(self)
|
50
|
+
end
|
48
51
|
|
49
52
|
protected
|
50
53
|
|
@@ -54,6 +57,10 @@ class Offer < Renderable
|
|
54
57
|
self.success_page_text ||= 'Thank you!'
|
55
58
|
end
|
56
59
|
|
60
|
+
class Drop < ::E9::Liquid::Drops::Base
|
61
|
+
source_methods :name, :deals, :leads
|
62
|
+
end
|
63
|
+
|
57
64
|
module Identifiers
|
58
65
|
CONVERSION_EMAIL = 'offer_conversion_email'
|
59
66
|
PAGE = 'offer_page'
|
@@ -6,9 +6,5 @@ class DealObserver < ActiveRecord::Observer
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def before_convert(record)
|
9
|
-
if email = record.offer && record.offer.conversion_alert_email.presence
|
10
|
-
Rails.logger.debug("Sending Offer Conversion Alert to [#{email}]")
|
11
|
-
Offer.conversion_email.try(:send!, email)
|
12
|
-
end
|
13
9
|
end
|
14
10
|
end
|
@@ -23,9 +23,9 @@
|
|
23
23
|
= record.name
|
24
24
|
%td.record-code
|
25
25
|
= display_campaign_code(record.code)
|
26
|
-
%td.record-affiliate-fee
|
26
|
+
%td.record-affiliate-fee.num
|
27
27
|
= display_campaign_fee(record.affiliate_fee)
|
28
|
-
%td.record-sales-fee
|
28
|
+
%td.record-sales-fee.num
|
29
29
|
= display_campaign_fee(record.sales_fee)
|
30
30
|
%td.links
|
31
31
|
- if record.is_a?(AdvertisingCampaign)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
= render 'e9_crm/offers/form_inner', :f => f
|
2
2
|
|
3
3
|
.field{:class => request.xhr? ? 'tinymcexhr' : 'tinymce'}
|
4
|
-
= f
|
4
|
+
= help_label(f, :success_page_text, :key => :markdown_help, :header => "Markdown Help", :class => :req)
|
5
5
|
= f.text_area :success_page_text
|
@@ -16,21 +16,21 @@
|
|
16
16
|
= f.text_area :info
|
17
17
|
.field
|
18
18
|
= f.label :value, nil, :class => :req
|
19
|
-
= f.text_field :value
|
19
|
+
= f.text_field :value, :value => f.object.value.to_s
|
20
20
|
.field.select
|
21
|
-
= f.label :campaign, :for => 'deal_campaign_select'
|
21
|
+
= f.label :campaign, :for => 'deal_campaign_select', :class => 'req'
|
22
22
|
= f.collection_select :campaign_id, Campaign.ordered.all, :id, :to_s, {:prompt => true}, :id => 'deal_campaign_select'
|
23
23
|
.field.select
|
24
24
|
= f.label :status
|
25
25
|
= f.select :status, Deal::Status::OPTIONS[1..-1]
|
26
26
|
.field.select
|
27
27
|
= f.label :contacts
|
28
|
-
%input#contact_autocomplete.list{:type => 'text', 'data-values' => resource.contact_ids.join(','), 'data-iname' => resource_instance_name, 'data-field' => '[contact_ids]'
|
28
|
+
%input#contact_autocomplete.list{:type => 'text', 'data-values' => resource.contact_ids.join(','), 'data-iname' => resource_instance_name, 'data-field' => '[contact_ids]'}
|
29
29
|
%ul.select
|
30
30
|
- f.object.contacts.each do |contact|
|
31
31
|
%li.ui-state-default
|
32
32
|
%span.content= contact.name
|
33
|
-
%input{:type => :hidden, :name => "
|
33
|
+
%input{:type => :hidden, :name => "#{resource_instance_name}[contact_ids][]", :value => contact.id}
|
34
34
|
%a{:class => :remove, :title => "Remove", :alt => "Remove"} Remove
|
35
35
|
.field.select
|
36
36
|
= f.label :owner
|
@@ -2,8 +2,8 @@
|
|
2
2
|
%thead
|
3
3
|
%tr
|
4
4
|
%th= orderable_column_link(:campaign_type)
|
5
|
-
%th= orderable_column_link(:campaign_name)
|
6
5
|
%th= orderable_column_link(:campaign_group)
|
6
|
+
%th= orderable_column_link(:campaign_name)
|
7
7
|
%th= orderable_column_link(:new_visits)
|
8
8
|
%th= orderable_column_link(:repeat_visits)
|
9
9
|
%th= orderable_column_link(:lead_count)
|
@@ -26,61 +26,61 @@
|
|
26
26
|
%tr{:id => "ids_#{record.id}", :class => cycle('odd', 'even')}
|
27
27
|
%td.record-campaign-type
|
28
28
|
= display_campaign_type(record.campaign_type)
|
29
|
-
%td.record-campaign-name
|
30
|
-
= record.campaign_name || 'n/a'
|
31
29
|
%td.record-campaign-group
|
32
30
|
= record.campaign_group || 'n/a'
|
33
|
-
%td.record-
|
31
|
+
%td.record-campaign-name
|
32
|
+
= record.campaign_name || 'n/a'
|
33
|
+
%td.record-new-visits.num
|
34
34
|
- dat[:new_visits] << record.new_visits
|
35
35
|
= record.new_visits
|
36
|
-
%td.record-repeat-visits
|
36
|
+
%td.record-repeat-visits.num
|
37
37
|
- dat[:repeat_visits] << record.repeat_visits
|
38
38
|
= record.repeat_visits
|
39
|
-
%td.record-lead-count
|
39
|
+
%td.record-lead-count.num
|
40
40
|
- dat[:lead_count] << record.lead_count
|
41
41
|
= record.lead_count.to_i
|
42
|
-
%td.record-deal-count
|
42
|
+
%td.record-deal-count.num
|
43
43
|
- dat[:deal_count] << record.deal_count
|
44
44
|
= record.deal_count.to_i
|
45
|
-
%td.record-won-deal-count
|
45
|
+
%td.record-won-deal-count.num
|
46
46
|
- dat[:won_deal_count] << record.won_deal_count
|
47
47
|
= record.won_deal_count.to_i
|
48
|
-
%td.record-total-value
|
48
|
+
%td.record-total-value.num
|
49
49
|
- dat[:total_value] << record.total_value
|
50
|
-
= record.total_value
|
51
|
-
%td.record-averate-value
|
50
|
+
= m record.total_value
|
51
|
+
%td.record-averate-value.num
|
52
52
|
- dat[:average_value] << record.average_value
|
53
|
-
= record.average_value
|
54
|
-
%td.record-total-cost
|
53
|
+
= m record.average_value
|
54
|
+
%td.record-total-cost.num
|
55
55
|
- dat[:total_cost] << record.total_cost
|
56
|
-
= record.total_cost
|
57
|
-
%td.record-average-cost
|
56
|
+
= m record.total_cost
|
57
|
+
%td.record-average-cost.num
|
58
58
|
- dat[:average_cost] << record.average_cost
|
59
|
-
= record.average_cost
|
60
|
-
%td.record-average-elapsed
|
59
|
+
= m record.average_cost
|
60
|
+
%td.record-average-elapsed.num
|
61
61
|
- dat[:average_elapsed] << record.average_elapsed
|
62
62
|
= record.average_elapsed && "%s days" % record.average_elapsed || 'n/a'
|
63
63
|
%tfooter
|
64
64
|
%tr{:class => 'record-totals'}
|
65
65
|
%td.record-totals-label{:colspan => 3}
|
66
66
|
#{t(:totals)}:
|
67
|
-
%td.record-new-visits
|
67
|
+
%td.record-new-visits.num
|
68
68
|
= dat[:new_visits].sum
|
69
|
-
%td.record-repeat-visits
|
69
|
+
%td.record-repeat-visits.num
|
70
70
|
= dat[:repeat_visits].sum
|
71
|
-
%td.record-lead-count
|
71
|
+
%td.record-lead-count.num
|
72
72
|
= dat[:lead_count].sum
|
73
|
-
%td.record-deal-count
|
73
|
+
%td.record-deal-count.num
|
74
74
|
= dat[:deal_count].sum.to_i
|
75
|
-
%td.record-won-deal-count
|
75
|
+
%td.record-won-deal-count.num
|
76
76
|
= dat[:won_deal_count].sum.to_i
|
77
|
-
%td.record-total-value
|
78
|
-
= dat[:total_value].compact.sum
|
79
|
-
%td.record-average-value
|
80
|
-
= dat[:average_value].compact.average
|
81
|
-
%td.record-total-cost
|
82
|
-
= dat[:total_cost].compact.sum
|
83
|
-
%td.record-average-cost
|
84
|
-
= dat[:average_cost].compact.average
|
85
|
-
%td.record-average-elapsed
|
77
|
+
%td.record-total-value.num
|
78
|
+
= m dat[:total_value].compact.sum
|
79
|
+
%td.record-average-value.num
|
80
|
+
= m dat[:average_value].compact.average
|
81
|
+
%td.record-total-cost.num
|
82
|
+
= m dat[:total_cost].compact.sum
|
83
|
+
%td.record-average-cost.num
|
84
|
+
= m dat[:average_cost].compact.average
|
85
|
+
%td.record-average-elapsed.num
|
86
86
|
= "%s days" % dat[:average_elapsed].compact.average
|
@@ -1,7 +1,7 @@
|
|
1
1
|
= render 'e9_crm/offers/form_inner', :f => f
|
2
2
|
|
3
3
|
.field{:class => request.xhr? ? 'tinymcexhr' : 'tinymce'}
|
4
|
-
= f
|
4
|
+
= help_label(f, :success_page_text, :key => :markdown_help, :header => "Markdown Help", :class => :req)
|
5
5
|
= f.text_area :success_page_text
|
6
6
|
|
7
7
|
%fieldset.upload
|
@@ -1,5 +1,5 @@
|
|
1
1
|
= render 'e9_crm/offers/form_inner', :f => f
|
2
2
|
|
3
3
|
.field{:class => request.xhr? ? 'tinymcexhr' : 'tinymce'}
|
4
|
-
= f
|
4
|
+
= help_label(f, :success_page_text, :key => :markdown_help, :header => "Markdown Help", :class => :req)
|
5
5
|
= f.text_area :success_page_text
|
data/config/locales/en.yml
CHANGED
@@ -14,6 +14,12 @@ en:
|
|
14
14
|
view: View
|
15
15
|
save: Save
|
16
16
|
|
17
|
+
flash:
|
18
|
+
e9_crm:
|
19
|
+
contact_emails:
|
20
|
+
create:
|
21
|
+
notice: Contact email sent to recipients.
|
22
|
+
|
17
23
|
e9_crm:
|
18
24
|
add_record_attribute: Add
|
19
25
|
destroy_record_attribute: Remove
|
@@ -23,7 +29,6 @@ en:
|
|
23
29
|
show: 'Show %{model}'
|
24
30
|
campaign:
|
25
31
|
show: '%{model}'
|
26
|
-
|
27
32
|
links:
|
28
33
|
index: "Manage %{models}"
|
29
34
|
new: "New %{model}"
|
@@ -31,14 +36,12 @@ en:
|
|
31
36
|
destroy: "Delete"
|
32
37
|
show: "View"
|
33
38
|
confirm_destroy: Are you sure? This cannot be undone.
|
34
|
-
|
35
39
|
campaign_group:
|
36
40
|
confirm_destroy: Are you sure? This cannot be undone. Any campaigns which are associated with this group will become groupless.
|
37
41
|
|
38
42
|
errors:
|
39
43
|
messages:
|
40
44
|
merge_required: 'Merge Required! <a href="%{merge_path}">MERGE ME</a>.'
|
41
|
-
|
42
45
|
models:
|
43
46
|
campaign:
|
44
47
|
not_a_number: "%{attribute} must be a number (maximum 2 decimal places)."
|
@@ -46,7 +49,7 @@ en:
|
|
46
49
|
code:
|
47
50
|
invalid: "%{attribute} must be comprised of letters and numbers only."
|
48
51
|
contact:
|
49
|
-
delete_restricted: "
|
52
|
+
delete_restricted: "You cannot delete a contact that has deals or leads."
|
50
53
|
attributes:
|
51
54
|
users:
|
52
55
|
taken: "Two or more of the login accounts entered share a duplicate email."
|
@@ -115,6 +118,18 @@ en:
|
|
115
118
|
no_leads: 'There are no leads associated with this contact.'
|
116
119
|
company:
|
117
120
|
info: Background Information
|
121
|
+
email:
|
122
|
+
body_help:
|
123
|
+
<p>System emails have variable data which you can interpolate into the fields</p>
|
124
|
+
<h3>Offer Conversion Email:</h3>
|
125
|
+
<p>
|
126
|
+
{{ offer.name }}<br/>
|
127
|
+
{{ lead.lead_email }}<br/>
|
128
|
+
{{ lead.lead_name }}<br/>
|
129
|
+
{{ lead.info }}<br/>
|
130
|
+
{{ lead.created_at }}<br/>
|
131
|
+
</p>
|
132
|
+
|
118
133
|
email_template:
|
119
134
|
text_body_help: |
|
120
135
|
<h3>Variables:</h3>
|
@@ -131,8 +146,16 @@ en:
|
|
131
146
|
offer_name: Offer
|
132
147
|
created_at: Date
|
133
148
|
owner: Responsible
|
149
|
+
won_deal_count: Won count
|
134
150
|
offer:
|
135
151
|
template: Teaser Text
|
152
|
+
template_help: |
|
153
|
+
<h3>Variables:</h3>
|
154
|
+
<p>You can insert the following to render variable data in the field</p>
|
155
|
+
<p>
|
156
|
+
{{campaign.name}}<br/>
|
157
|
+
{{campaign.code}}<br/>
|
158
|
+
</p>
|
136
159
|
alert_email_instructions: (Enter an email if you want to be notified of conversions)
|
137
160
|
submit_button_text: Submit Button Text
|
138
161
|
success_alert_text: Success Alert Text
|
data/lib/e9_crm/controller.rb
CHANGED
@@ -12,6 +12,14 @@ module E9Crm
|
|
12
12
|
prepend_before_filter do
|
13
13
|
E9Crm.log("E9Crm controller request")
|
14
14
|
end
|
15
|
+
|
16
|
+
alias :liquid_env_without_crm :liquid_env
|
17
|
+
|
18
|
+
def liquid_env
|
19
|
+
liquid_env_without_crm.tap do |env|
|
20
|
+
env[:campaign] = tracking_campaign
|
21
|
+
end
|
22
|
+
end
|
15
23
|
end
|
16
24
|
|
17
25
|
protected
|
data/lib/e9_crm/version.rb
CHANGED
data/lib/e9_crm.rb
CHANGED
@@ -1,10 +1,5 @@
|
|
1
1
|
require 'e9_base'
|
2
|
-
require 'e9_rails'
|
3
|
-
require 'e9_tags'
|
4
|
-
require 'e9_attributes'
|
5
|
-
|
6
2
|
require 'money'
|
7
|
-
|
8
3
|
require 'e9_crm/rails_extensions'
|
9
4
|
|
10
5
|
module E9Crm
|
@@ -55,7 +50,7 @@ module E9Crm
|
|
55
50
|
user_model.send(:include, E9Crm::Model)
|
56
51
|
end
|
57
52
|
|
58
|
-
|
53
|
+
ApplicationController.send(:include, E9Crm::Controller)
|
59
54
|
|
60
55
|
::Email.send(:include, E9Crm::Email)
|
61
56
|
|
metadata
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: e9_crm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 1
|
8
|
-
- 17
|
9
|
-
version: 0.1.17
|
4
|
+
prerelease:
|
5
|
+
version: 0.1.18
|
10
6
|
platform: ruby
|
11
7
|
authors:
|
12
8
|
- Travis Cox
|
@@ -14,8 +10,7 @@ autorequire:
|
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
12
|
|
17
|
-
date: 2011-09-
|
18
|
-
default_executable:
|
13
|
+
date: 2011-09-12 00:00:00 Z
|
19
14
|
dependencies:
|
20
15
|
- !ruby/object:Gem::Dependency
|
21
16
|
name: rails
|
@@ -25,10 +20,6 @@ dependencies:
|
|
25
20
|
requirements:
|
26
21
|
- - ~>
|
27
22
|
- !ruby/object:Gem::Version
|
28
|
-
segments:
|
29
|
-
- 3
|
30
|
-
- 0
|
31
|
-
- 0
|
32
23
|
version: 3.0.0
|
33
24
|
type: :runtime
|
34
25
|
version_requirements: *id001
|
@@ -40,10 +31,6 @@ dependencies:
|
|
40
31
|
requirements:
|
41
32
|
- - ~>
|
42
33
|
- !ruby/object:Gem::Version
|
43
|
-
segments:
|
44
|
-
- 1
|
45
|
-
- 1
|
46
|
-
- 2
|
47
34
|
version: 1.1.2
|
48
35
|
type: :runtime
|
49
36
|
version_requirements: *id002
|
@@ -55,8 +42,6 @@ dependencies:
|
|
55
42
|
requirements:
|
56
43
|
- - ">="
|
57
44
|
- !ruby/object:Gem::Version
|
58
|
-
segments:
|
59
|
-
- 0
|
60
45
|
version: "0"
|
61
46
|
type: :runtime
|
62
47
|
version_requirements: *id003
|
@@ -68,8 +53,6 @@ dependencies:
|
|
68
53
|
requirements:
|
69
54
|
- - ">="
|
70
55
|
- !ruby/object:Gem::Version
|
71
|
-
segments:
|
72
|
-
- 0
|
73
56
|
version: "0"
|
74
57
|
type: :runtime
|
75
58
|
version_requirements: *id004
|
@@ -81,8 +64,6 @@ dependencies:
|
|
81
64
|
requirements:
|
82
65
|
- - ">="
|
83
66
|
- !ruby/object:Gem::Version
|
84
|
-
segments:
|
85
|
-
- 0
|
86
67
|
version: "0"
|
87
68
|
type: :runtime
|
88
69
|
version_requirements: *id005
|
@@ -94,8 +75,6 @@ dependencies:
|
|
94
75
|
requirements:
|
95
76
|
- - ">="
|
96
77
|
- !ruby/object:Gem::Version
|
97
|
-
segments:
|
98
|
-
- 0
|
99
78
|
version: "0"
|
100
79
|
type: :runtime
|
101
80
|
version_requirements: *id006
|
@@ -107,8 +86,6 @@ dependencies:
|
|
107
86
|
requirements:
|
108
87
|
- - ">="
|
109
88
|
- !ruby/object:Gem::Version
|
110
|
-
segments:
|
111
|
-
- 0
|
112
89
|
version: "0"
|
113
90
|
type: :runtime
|
114
91
|
version_requirements: *id007
|
@@ -120,8 +97,6 @@ dependencies:
|
|
120
97
|
requirements:
|
121
98
|
- - ">="
|
122
99
|
- !ruby/object:Gem::Version
|
123
|
-
segments:
|
124
|
-
- 0
|
125
100
|
version: "0"
|
126
101
|
type: :runtime
|
127
102
|
version_requirements: *id008
|
@@ -133,9 +108,6 @@ dependencies:
|
|
133
108
|
requirements:
|
134
109
|
- - ~>
|
135
110
|
- !ruby/object:Gem::Version
|
136
|
-
segments:
|
137
|
-
- 0
|
138
|
-
- 13
|
139
111
|
version: "0.13"
|
140
112
|
type: :runtime
|
141
113
|
version_requirements: *id009
|
@@ -353,7 +325,6 @@ files:
|
|
353
325
|
- lib/generators/e9_crm/templates/migration.rb
|
354
326
|
- test/functional/e9_crm/campaign_types_controller_test.rb
|
355
327
|
- test/functional/home_controller_test.rb
|
356
|
-
has_rdoc: true
|
357
328
|
homepage: http://www.e9digital.com
|
358
329
|
licenses: []
|
359
330
|
|
@@ -367,21 +338,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
367
338
|
requirements:
|
368
339
|
- - ">="
|
369
340
|
- !ruby/object:Gem::Version
|
370
|
-
segments:
|
371
|
-
- 0
|
372
341
|
version: "0"
|
373
342
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
374
343
|
none: false
|
375
344
|
requirements:
|
376
345
|
- - ">="
|
377
346
|
- !ruby/object:Gem::Version
|
378
|
-
segments:
|
379
|
-
- 0
|
380
347
|
version: "0"
|
381
348
|
requirements: []
|
382
349
|
|
383
350
|
rubyforge_project: e9_crm
|
384
|
-
rubygems_version: 1.
|
351
|
+
rubygems_version: 1.8.10
|
385
352
|
signing_key:
|
386
353
|
specification_version: 3
|
387
354
|
summary: CRM engine plugin for the e9 CMS
|