e9_crm 0.1.17 → 0.1.18
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.
- 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
|