e9_crm 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +105 -0
- data/README.md +31 -0
- data/Rakefile +2 -0
- data/app/controllers/e9_crm/advertising_campaigns_controller.rb +3 -0
- data/app/controllers/e9_crm/affiliate_campaigns_controller.rb +3 -0
- data/app/controllers/e9_crm/base_controller.rb +5 -0
- data/app/controllers/e9_crm/campaign_groups_controller.rb +3 -0
- data/app/controllers/e9_crm/campaigns_controller.rb +4 -0
- data/app/controllers/e9_crm/companies_controller.rb +3 -0
- data/app/controllers/e9_crm/contact_emails_controller.rb +38 -0
- data/app/controllers/e9_crm/contact_merges_controller.rb +26 -0
- data/app/controllers/e9_crm/contacts_controller.rb +46 -0
- data/app/controllers/e9_crm/dated_costs_controller.rb +4 -0
- data/app/controllers/e9_crm/deals_controller.rb +19 -0
- data/app/controllers/e9_crm/email_campaigns_controller.rb +3 -0
- data/app/controllers/e9_crm/email_templates.controller.rb +3 -0
- data/app/controllers/e9_crm/menu_options_controller.rb +26 -0
- data/app/controllers/e9_crm/offers_controller.rb +3 -0
- data/app/controllers/e9_crm/page_views_controller.rb +20 -0
- data/app/controllers/e9_crm/record_attributes_controller.rb +3 -0
- data/app/controllers/e9_crm/reports_controller.rb +2 -0
- data/app/controllers/e9_crm/resources_controller.rb +43 -0
- data/app/controllers/e9_crm/sales_campaigns_controller.rb +3 -0
- data/app/helpers/e9_crm/base_helper.rb +77 -0
- data/app/helpers/e9_crm/campaigns_helper.rb +14 -0
- data/app/helpers/e9_crm/contact_merges_helper.rb +17 -0
- data/app/helpers/e9_crm/contacts_helper.rb +27 -0
- data/app/helpers/e9_crm/deals_helper.rb +15 -0
- data/app/helpers/e9_crm/menu_options_helper.rb +11 -0
- data/app/helpers/e9_crm/page_views_helper.rb +2 -0
- data/app/models/address_attribute.rb +4 -0
- data/app/models/advertising_campaign.rb +15 -0
- data/app/models/affiliate.rb +4 -0
- data/app/models/affiliate_campaign.rb +15 -0
- data/app/models/campaign.rb +34 -0
- data/app/models/campaign_group.rb +5 -0
- data/app/models/company.rb +4 -0
- data/app/models/contact.rb +258 -0
- data/app/models/contact_email.rb +49 -0
- data/app/models/dated_cost.rb +9 -0
- data/app/models/deal.rb +83 -0
- data/app/models/email_campaign.rb +13 -0
- data/app/models/email_template.rb +7 -0
- data/app/models/instant_messaging_handle_attribute.rb +4 -0
- data/app/models/menu_option.rb +33 -0
- data/app/models/offer.rb +50 -0
- data/app/models/page_view.rb +80 -0
- data/app/models/phone_number_attribute.rb +4 -0
- data/app/models/record_attribute.rb +41 -0
- data/app/models/sales_campaign.rb +15 -0
- data/app/models/sales_person.rb +4 -0
- data/app/models/tracking_cookie.rb +61 -0
- data/app/models/website_attribute.rb +4 -0
- data/app/observers/deal_observer.rb +11 -0
- data/app/uploaders/file_uploader.rb +34 -0
- data/app/views/e9_crm/campaigns/_form_inner.html.haml +5 -0
- data/app/views/e9_crm/contact_emails/_form.html.haml +7 -0
- data/app/views/e9_crm/contact_emails/_form_inner.html.haml +11 -0
- data/app/views/e9_crm/contact_emails/destroy.js.erb +3 -0
- data/app/views/e9_crm/contact_emails/send_email.js.erb +1 -0
- data/app/views/e9_crm/contact_merges/_field.html.haml +10 -0
- data/app/views/e9_crm/contact_merges/_form.html.haml +10 -0
- data/app/views/e9_crm/contact_merges/new.html.haml +2 -0
- data/app/views/e9_crm/contacts/_details.html.haml +22 -0
- data/app/views/e9_crm/contacts/_form_inner.html.haml +51 -0
- data/app/views/e9_crm/contacts/_header.html.haml +19 -0
- data/app/views/e9_crm/contacts/_tag_table.html.haml +15 -0
- data/app/views/e9_crm/contacts/index.html.haml +13 -0
- data/app/views/e9_crm/contacts/index.js.erb +5 -0
- data/app/views/e9_crm/contacts/merge.html.haml +1 -0
- data/app/views/e9_crm/contacts/templates.js.erb +1 -0
- data/app/views/e9_crm/deals/_form_inner.html.haml +5 -0
- data/app/views/e9_crm/deals/_header.html.haml +0 -0
- data/app/views/e9_crm/deals/leads.html.haml +13 -0
- data/app/views/e9_crm/email_templates/_form_inner.html.haml +9 -0
- data/app/views/e9_crm/menu_options/_form_inner.html.haml +6 -0
- data/app/views/e9_crm/menu_options/_header.html.haml +8 -0
- data/app/views/e9_crm/offers/_form.html.haml +7 -0
- data/app/views/e9_crm/offers/_form_inner.html.haml +42 -0
- data/app/views/e9_crm/offers/_form_inner.html.haml.bak +43 -0
- data/app/views/e9_crm/page_views/_table.html.haml +25 -0
- data/app/views/e9_crm/record_attributes/_address_attribute.html.haml +5 -0
- data/app/views/e9_crm/record_attributes/_instant_messaging_handle_attribute.html.haml +5 -0
- data/app/views/e9_crm/record_attributes/_phone_number_attribute.html.haml +5 -0
- data/app/views/e9_crm/record_attributes/_record_attribute.html.haml +10 -0
- data/app/views/e9_crm/record_attributes/_templates.js.erb +12 -0
- data/app/views/e9_crm/record_attributes/_user.html.haml +23 -0
- data/app/views/e9_crm/record_attributes/_website_attribute.html.haml +5 -0
- data/app/views/e9_crm/resources/_footer.html.haml +1 -0
- data/app/views/e9_crm/resources/_form.html.haml +7 -0
- data/app/views/e9_crm/resources/_form_inner.html.haml +5 -0
- data/app/views/e9_crm/resources/_header.html.haml +0 -0
- data/app/views/e9_crm/resources/_table.html.haml +21 -0
- data/app/views/e9_crm/resources/create.js.erb +6 -0
- data/app/views/e9_crm/resources/destroy.js.erb +3 -0
- data/app/views/e9_crm/resources/edit.html.haml +2 -0
- data/app/views/e9_crm/resources/index.html.haml +13 -0
- data/app/views/e9_crm/resources/index.js.erb +1 -0
- data/app/views/e9_crm/resources/new.html.haml +2 -0
- data/app/views/e9_crm/resources/show.html.haml +2 -0
- data/app/views/e9_crm/resources/update.js.erb +5 -0
- data/config/initializers/inflections.rb +3 -0
- data/config/locales/e9.en.yml +28 -0
- data/config/locales/en.yml +63 -0
- data/config/routes.rb +61 -0
- data/e9_crm.gemspec +29 -0
- data/lib/e9_crm/model.rb +63 -0
- data/lib/e9_crm/rails_extensions.rb +98 -0
- data/lib/e9_crm/tracking_controller.rb +78 -0
- data/lib/e9_crm/version.rb +3 -0
- data/lib/e9_crm.rb +59 -0
- data/lib/generators/e9_crm/install_generator.rb +32 -0
- data/lib/generators/e9_crm/templates/create_e9_crm_tables.rb +107 -0
- data/lib/generators/e9_crm/templates/initializer.rb +4 -0
- data/lib/generators/e9_crm/templates/javascript.js +187 -0
- data/test/functional/e9_crm/campaign_types_controller_test.rb +49 -0
- data/test/functional/home_controller_test.rb +8 -0
- metadata +283 -0
@@ -0,0 +1,187 @@
|
|
1
|
+
jQuery(function($) {
|
2
|
+
var selector_prefix = 'body.controller-e9-crm-contacts',
|
3
|
+
$selector = $(selector_prefix);
|
4
|
+
|
5
|
+
$.fn.exclusiveCheck = function() {
|
6
|
+
var selector = $(this);
|
7
|
+
return this.each(function(i) {
|
8
|
+
$(this).click(function(e) {
|
9
|
+
var clicked = this;
|
10
|
+
if (this.checked) {
|
11
|
+
selector.each(function() {
|
12
|
+
if (this != clicked) this.checked = false;
|
13
|
+
});
|
14
|
+
}
|
15
|
+
});
|
16
|
+
});
|
17
|
+
}
|
18
|
+
|
19
|
+
/*
|
20
|
+
* A function might exist for this already, but basically this stores the query variables
|
21
|
+
* in a hash when the page loads for later re-use/modification.
|
22
|
+
*/
|
23
|
+
$.query = (function() {
|
24
|
+
var qs = document.location.search;
|
25
|
+
|
26
|
+
if (!qs.length) return {};
|
27
|
+
|
28
|
+
var params = {},
|
29
|
+
regex = /[?&]?([^=]+)=([^&]*)/g,
|
30
|
+
tokens, key, val;
|
31
|
+
|
32
|
+
qs = qs.split('+').join(' ');
|
33
|
+
|
34
|
+
while (tokens = regex.exec(qs)) {
|
35
|
+
key = decodeURIComponent(tokens[1]);
|
36
|
+
val = decodeURIComponent(tokens[2]);
|
37
|
+
|
38
|
+
if(/\[\]$/.test(key)) {
|
39
|
+
if (!params[key]) params[key] = [];
|
40
|
+
params[key].push(val);
|
41
|
+
} else {
|
42
|
+
params[key] = val;
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
return params;
|
47
|
+
})();
|
48
|
+
|
49
|
+
/*
|
50
|
+
* The status of "primary" for a User login is stored on the individual records, but must be exlcusive in
|
51
|
+
* the scope of the Contact (only one User may be primary).
|
52
|
+
*
|
53
|
+
* NOTE This function is called initially, then after adding new nested associations to the page.
|
54
|
+
*/
|
55
|
+
var exclusifyEmailRadios;
|
56
|
+
(exclusifyEmailRadios = function() {
|
57
|
+
$('.nested-association input[type=radio][name$="[primary]"]', $(selector_prefix)).exclusiveCheck();
|
58
|
+
})();
|
59
|
+
|
60
|
+
/**
|
61
|
+
* Adds a new nested assocation. Depends on the nested association
|
62
|
+
* js templates being loaded.
|
63
|
+
*/
|
64
|
+
$('a.add-nested-association').click(function(e) {
|
65
|
+
e.preventDefault();
|
66
|
+
|
67
|
+
var $this = $(this),
|
68
|
+
$parent = $this.closest('.nested-associations'),
|
69
|
+
template,
|
70
|
+
index;
|
71
|
+
|
72
|
+
try {
|
73
|
+
template = E9CRM.js_templates[this.getAttribute('data-association')];
|
74
|
+
} catch(e) { return }
|
75
|
+
|
76
|
+
template = template.replace(
|
77
|
+
new RegExp(E9CRM.js_templates.start_child_index, 'g'),
|
78
|
+
++E9CRM.js_templates.current_child_index
|
79
|
+
);
|
80
|
+
|
81
|
+
$(template).appendTo($parent);
|
82
|
+
|
83
|
+
exclusifyEmailRadios();
|
84
|
+
});
|
85
|
+
|
86
|
+
/**
|
87
|
+
* Effectively destroys an added nested association, removing the container
|
88
|
+
* the association is not persisted, or hiding it and setting the _destroy
|
89
|
+
* parameter for the association if it is.
|
90
|
+
*/
|
91
|
+
$('a.destroy-nested-association').live('click', function(e) {
|
92
|
+
e.preventDefault();
|
93
|
+
|
94
|
+
var $parent = $(this).closest('.nested-association').hide(),
|
95
|
+
$destro = $parent.find('input[id$=__destroy]');
|
96
|
+
|
97
|
+
if ($destro.length) {
|
98
|
+
$destro.val('1');
|
99
|
+
} else {
|
100
|
+
$parent.remove();
|
101
|
+
}
|
102
|
+
});
|
103
|
+
|
104
|
+
var filter_contacts = function(data) {
|
105
|
+
$.ajax({
|
106
|
+
dataType: 'script',
|
107
|
+
url: window.location.pathname,
|
108
|
+
data: data || $.param($.query)
|
109
|
+
});
|
110
|
+
}
|
111
|
+
|
112
|
+
$('#contact_email_form', $selector).live('submit', function(e) {
|
113
|
+
var $f = $(this);
|
114
|
+
|
115
|
+
if ($f.attr('data-count') == '0') {
|
116
|
+
alert($f.attr('data-empty'));
|
117
|
+
$f.undisable();
|
118
|
+
return false;
|
119
|
+
}
|
120
|
+
});
|
121
|
+
|
122
|
+
$.fn.undisable = function() {
|
123
|
+
$('input[type=submit]', this).removeAttr('disabled').removeClass('ui-state-hover').blur();
|
124
|
+
}
|
125
|
+
|
126
|
+
$('#contact_newsletter_form', $selector).live('submit', function(e) {
|
127
|
+
e.preventDefault();
|
128
|
+
|
129
|
+
var $f = $(this);
|
130
|
+
|
131
|
+
if (!$('select', this).children().length) {
|
132
|
+
$f.undisable();
|
133
|
+
return false;
|
134
|
+
}
|
135
|
+
|
136
|
+
if ($f.attr('data-count') == '0') {
|
137
|
+
alert($f.attr('data-empty'));
|
138
|
+
$f.undisable();
|
139
|
+
return false;
|
140
|
+
}
|
141
|
+
|
142
|
+
if (!confirm($f.attr('data-confirm'))) {
|
143
|
+
$f.undisable();
|
144
|
+
return false;
|
145
|
+
}
|
146
|
+
|
147
|
+
$f.attr('action', function(i, val) {
|
148
|
+
return val.replace(/__ID__/, $('#eid', $f).val());
|
149
|
+
});
|
150
|
+
|
151
|
+
$f.callRemote();
|
152
|
+
});
|
153
|
+
|
154
|
+
$('.tag-table', $selector).change(function(e) {
|
155
|
+
$.extend($.query, {
|
156
|
+
'tagged[]': $.makeArray($(this).find('input[name="tagged[]"]').map(function(i, el) { return $(el).attr('checked') ? $(el).val() : null }))
|
157
|
+
});
|
158
|
+
|
159
|
+
filter_contacts();
|
160
|
+
});
|
161
|
+
|
162
|
+
$('form#contact_search_form', $(selector_prefix)).live('submit', function(e) {
|
163
|
+
e.preventDefault();
|
164
|
+
|
165
|
+
$.extend($.query, {
|
166
|
+
'search': $(this).find('input[name=search]').val()
|
167
|
+
});
|
168
|
+
|
169
|
+
filter_contacts();
|
170
|
+
});
|
171
|
+
|
172
|
+
$('input#contact_search_clear', $(selector_prefix)).live('click', function(e) {
|
173
|
+
|
174
|
+
$(selector_prefix)
|
175
|
+
.find('form#contact_search_form input[name=search]', $selector).val('').end()
|
176
|
+
.find('.tag-table input[name="tagged[]"]', $selector).attr('checked', false)
|
177
|
+
;
|
178
|
+
|
179
|
+
$.query = {};
|
180
|
+
|
181
|
+
filter_contacts();
|
182
|
+
});
|
183
|
+
|
184
|
+
//$('#menu_option_key_select_form select').change(function(e) {
|
185
|
+
//$(this).submit();
|
186
|
+
//});
|
187
|
+
});
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class E9Crm::CampaignTypesControllerTest < ActionController::TestCase
|
4
|
+
setup do
|
5
|
+
@e9_crm_campaign_type = e9_crm_campaign_types(:one)
|
6
|
+
end
|
7
|
+
|
8
|
+
test "should get index" do
|
9
|
+
get :index
|
10
|
+
assert_response :success
|
11
|
+
assert_not_nil assigns(:e9_crm_campaign_types)
|
12
|
+
end
|
13
|
+
|
14
|
+
test "should get new" do
|
15
|
+
get :new
|
16
|
+
assert_response :success
|
17
|
+
end
|
18
|
+
|
19
|
+
test "should create e9_crm_campaign_type" do
|
20
|
+
assert_difference('E9Crm::CampaignType.count') do
|
21
|
+
post :create, :e9_crm_campaign_type => @e9_crm_campaign_type.attributes
|
22
|
+
end
|
23
|
+
|
24
|
+
assert_redirected_to e9_crm_campaign_type_path(assigns(:e9_crm_campaign_type))
|
25
|
+
end
|
26
|
+
|
27
|
+
test "should show e9_crm_campaign_type" do
|
28
|
+
get :show, :id => @e9_crm_campaign_type.to_param
|
29
|
+
assert_response :success
|
30
|
+
end
|
31
|
+
|
32
|
+
test "should get edit" do
|
33
|
+
get :edit, :id => @e9_crm_campaign_type.to_param
|
34
|
+
assert_response :success
|
35
|
+
end
|
36
|
+
|
37
|
+
test "should update e9_crm_campaign_type" do
|
38
|
+
put :update, :id => @e9_crm_campaign_type.to_param, :e9_crm_campaign_type => @e9_crm_campaign_type.attributes
|
39
|
+
assert_redirected_to e9_crm_campaign_type_path(assigns(:e9_crm_campaign_type))
|
40
|
+
end
|
41
|
+
|
42
|
+
test "should destroy e9_crm_campaign_type" do
|
43
|
+
assert_difference('E9Crm::CampaignType.count', -1) do
|
44
|
+
delete :destroy, :id => @e9_crm_campaign_type.to_param
|
45
|
+
end
|
46
|
+
|
47
|
+
assert_redirected_to e9_crm_campaign_types_path
|
48
|
+
end
|
49
|
+
end
|
metadata
ADDED
@@ -0,0 +1,283 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: e9_crm
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.1.1
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Travis Cox
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2011-05-12 00:00:00 -04:00
|
14
|
+
default_executable:
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: rails
|
18
|
+
prerelease: false
|
19
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
|
+
none: false
|
21
|
+
requirements:
|
22
|
+
- - ~>
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: 3.0.0
|
25
|
+
type: :runtime
|
26
|
+
version_requirements: *id001
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: inherited_resources
|
29
|
+
prerelease: false
|
30
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
31
|
+
none: false
|
32
|
+
requirements:
|
33
|
+
- - ~>
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: 1.1.2
|
36
|
+
type: :runtime
|
37
|
+
version_requirements: *id002
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: has_scope
|
40
|
+
prerelease: false
|
41
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: "0"
|
47
|
+
type: :runtime
|
48
|
+
version_requirements: *id003
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: money
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: "0"
|
58
|
+
type: :runtime
|
59
|
+
version_requirements: *id004
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: e9_rails
|
62
|
+
prerelease: false
|
63
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.0.11
|
69
|
+
type: :runtime
|
70
|
+
version_requirements: *id005
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: e9_tags
|
73
|
+
prerelease: false
|
74
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
76
|
+
requirements:
|
77
|
+
- - ~>
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: 0.0.11
|
80
|
+
type: :runtime
|
81
|
+
version_requirements: *id006
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: will_paginate
|
84
|
+
prerelease: false
|
85
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
86
|
+
none: false
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: "0"
|
91
|
+
type: :runtime
|
92
|
+
version_requirements: *id007
|
93
|
+
description: |
|
94
|
+
CRM Plugin for the e9 CMS
|
95
|
+
=========================
|
96
|
+
|
97
|
+
It should be noted that while this plugin is intended for use in the
|
98
|
+
e9 CMS, it does neither includes nor requires it.
|
99
|
+
|
100
|
+
To use, add as a gem and install by running:
|
101
|
+
|
102
|
+
rails g e9_crm:install
|
103
|
+
|
104
|
+
Then modify the installed initializer as per your app, including
|
105
|
+
the controller module in your desired controllers, with the final
|
106
|
+
result looking something like this:
|
107
|
+
|
108
|
+
require 'e9_crm'
|
109
|
+
|
110
|
+
User.send :include, E9Crm::Backend::ActiveRecord
|
111
|
+
|
112
|
+
Rails.configuration.after_initialize do
|
113
|
+
[
|
114
|
+
MyFirstTrackedController,
|
115
|
+
MySecondTrackedController
|
116
|
+
].each {|c| c.send(:include, E9Crm::TrackingController) }
|
117
|
+
end
|
118
|
+
|
119
|
+
NOTE: A few assumptions are made:
|
120
|
+
---------------------------------
|
121
|
+
|
122
|
+
1. Your app has a "User" model
|
123
|
+
2. Your app has a controller method #current_user to return the
|
124
|
+
currently logged in user.
|
125
|
+
|
126
|
+
email: travis@e9digital.com
|
127
|
+
executables: []
|
128
|
+
|
129
|
+
extensions: []
|
130
|
+
|
131
|
+
extra_rdoc_files: []
|
132
|
+
|
133
|
+
files:
|
134
|
+
- .gitignore
|
135
|
+
- Gemfile
|
136
|
+
- Gemfile.lock
|
137
|
+
- README.md
|
138
|
+
- Rakefile
|
139
|
+
- app/controllers/e9_crm/advertising_campaigns_controller.rb
|
140
|
+
- app/controllers/e9_crm/affiliate_campaigns_controller.rb
|
141
|
+
- app/controllers/e9_crm/base_controller.rb
|
142
|
+
- app/controllers/e9_crm/campaign_groups_controller.rb
|
143
|
+
- app/controllers/e9_crm/campaigns_controller.rb
|
144
|
+
- app/controllers/e9_crm/companies_controller.rb
|
145
|
+
- app/controllers/e9_crm/contact_emails_controller.rb
|
146
|
+
- app/controllers/e9_crm/contact_merges_controller.rb
|
147
|
+
- app/controllers/e9_crm/contacts_controller.rb
|
148
|
+
- app/controllers/e9_crm/dated_costs_controller.rb
|
149
|
+
- app/controllers/e9_crm/deals_controller.rb
|
150
|
+
- app/controllers/e9_crm/email_campaigns_controller.rb
|
151
|
+
- app/controllers/e9_crm/email_templates.controller.rb
|
152
|
+
- app/controllers/e9_crm/menu_options_controller.rb
|
153
|
+
- app/controllers/e9_crm/offers_controller.rb
|
154
|
+
- app/controllers/e9_crm/page_views_controller.rb
|
155
|
+
- app/controllers/e9_crm/record_attributes_controller.rb
|
156
|
+
- app/controllers/e9_crm/reports_controller.rb
|
157
|
+
- app/controllers/e9_crm/resources_controller.rb
|
158
|
+
- app/controllers/e9_crm/sales_campaigns_controller.rb
|
159
|
+
- app/helpers/e9_crm/base_helper.rb
|
160
|
+
- app/helpers/e9_crm/campaigns_helper.rb
|
161
|
+
- app/helpers/e9_crm/contact_merges_helper.rb
|
162
|
+
- app/helpers/e9_crm/contacts_helper.rb
|
163
|
+
- app/helpers/e9_crm/deals_helper.rb
|
164
|
+
- app/helpers/e9_crm/menu_options_helper.rb
|
165
|
+
- app/helpers/e9_crm/page_views_helper.rb
|
166
|
+
- app/models/address_attribute.rb
|
167
|
+
- app/models/advertising_campaign.rb
|
168
|
+
- app/models/affiliate.rb
|
169
|
+
- app/models/affiliate_campaign.rb
|
170
|
+
- app/models/campaign.rb
|
171
|
+
- app/models/campaign_group.rb
|
172
|
+
- app/models/company.rb
|
173
|
+
- app/models/contact.rb
|
174
|
+
- app/models/contact_email.rb
|
175
|
+
- app/models/dated_cost.rb
|
176
|
+
- app/models/deal.rb
|
177
|
+
- app/models/email_campaign.rb
|
178
|
+
- app/models/email_template.rb
|
179
|
+
- app/models/instant_messaging_handle_attribute.rb
|
180
|
+
- app/models/menu_option.rb
|
181
|
+
- app/models/offer.rb
|
182
|
+
- app/models/page_view.rb
|
183
|
+
- app/models/phone_number_attribute.rb
|
184
|
+
- app/models/record_attribute.rb
|
185
|
+
- app/models/sales_campaign.rb
|
186
|
+
- app/models/sales_person.rb
|
187
|
+
- app/models/tracking_cookie.rb
|
188
|
+
- app/models/website_attribute.rb
|
189
|
+
- app/observers/deal_observer.rb
|
190
|
+
- app/uploaders/file_uploader.rb
|
191
|
+
- app/views/e9_crm/campaigns/_form_inner.html.haml
|
192
|
+
- app/views/e9_crm/contact_emails/_form.html.haml
|
193
|
+
- app/views/e9_crm/contact_emails/_form_inner.html.haml
|
194
|
+
- app/views/e9_crm/contact_emails/destroy.js.erb
|
195
|
+
- app/views/e9_crm/contact_emails/send_email.js.erb
|
196
|
+
- app/views/e9_crm/contact_merges/_field.html.haml
|
197
|
+
- app/views/e9_crm/contact_merges/_form.html.haml
|
198
|
+
- app/views/e9_crm/contact_merges/new.html.haml
|
199
|
+
- app/views/e9_crm/contacts/_details.html.haml
|
200
|
+
- app/views/e9_crm/contacts/_form_inner.html.haml
|
201
|
+
- app/views/e9_crm/contacts/_header.html.haml
|
202
|
+
- app/views/e9_crm/contacts/_tag_table.html.haml
|
203
|
+
- app/views/e9_crm/contacts/index.html.haml
|
204
|
+
- app/views/e9_crm/contacts/index.js.erb
|
205
|
+
- app/views/e9_crm/contacts/merge.html.haml
|
206
|
+
- app/views/e9_crm/contacts/templates.js.erb
|
207
|
+
- app/views/e9_crm/deals/_form_inner.html.haml
|
208
|
+
- app/views/e9_crm/deals/_header.html.haml
|
209
|
+
- app/views/e9_crm/deals/leads.html.haml
|
210
|
+
- app/views/e9_crm/email_templates/_form_inner.html.haml
|
211
|
+
- app/views/e9_crm/menu_options/_form_inner.html.haml
|
212
|
+
- app/views/e9_crm/menu_options/_header.html.haml
|
213
|
+
- app/views/e9_crm/offers/_form.html.haml
|
214
|
+
- app/views/e9_crm/offers/_form_inner.html.haml
|
215
|
+
- app/views/e9_crm/offers/_form_inner.html.haml.bak
|
216
|
+
- app/views/e9_crm/page_views/_table.html.haml
|
217
|
+
- app/views/e9_crm/record_attributes/_address_attribute.html.haml
|
218
|
+
- app/views/e9_crm/record_attributes/_instant_messaging_handle_attribute.html.haml
|
219
|
+
- app/views/e9_crm/record_attributes/_phone_number_attribute.html.haml
|
220
|
+
- app/views/e9_crm/record_attributes/_record_attribute.html.haml
|
221
|
+
- app/views/e9_crm/record_attributes/_templates.js.erb
|
222
|
+
- app/views/e9_crm/record_attributes/_user.html.haml
|
223
|
+
- app/views/e9_crm/record_attributes/_website_attribute.html.haml
|
224
|
+
- app/views/e9_crm/resources/_footer.html.haml
|
225
|
+
- app/views/e9_crm/resources/_form.html.haml
|
226
|
+
- app/views/e9_crm/resources/_form_inner.html.haml
|
227
|
+
- app/views/e9_crm/resources/_header.html.haml
|
228
|
+
- app/views/e9_crm/resources/_table.html.haml
|
229
|
+
- app/views/e9_crm/resources/create.js.erb
|
230
|
+
- app/views/e9_crm/resources/destroy.js.erb
|
231
|
+
- app/views/e9_crm/resources/edit.html.haml
|
232
|
+
- app/views/e9_crm/resources/index.html.haml
|
233
|
+
- app/views/e9_crm/resources/index.js.erb
|
234
|
+
- app/views/e9_crm/resources/new.html.haml
|
235
|
+
- app/views/e9_crm/resources/show.html.haml
|
236
|
+
- app/views/e9_crm/resources/update.js.erb
|
237
|
+
- config/initializers/inflections.rb
|
238
|
+
- config/locales/e9.en.yml
|
239
|
+
- config/locales/en.yml
|
240
|
+
- config/routes.rb
|
241
|
+
- e9_crm.gemspec
|
242
|
+
- lib/e9_crm.rb
|
243
|
+
- lib/e9_crm/model.rb
|
244
|
+
- lib/e9_crm/rails_extensions.rb
|
245
|
+
- lib/e9_crm/tracking_controller.rb
|
246
|
+
- lib/e9_crm/version.rb
|
247
|
+
- lib/generators/e9_crm/install_generator.rb
|
248
|
+
- lib/generators/e9_crm/templates/create_e9_crm_tables.rb
|
249
|
+
- lib/generators/e9_crm/templates/initializer.rb
|
250
|
+
- lib/generators/e9_crm/templates/javascript.js
|
251
|
+
- test/functional/e9_crm/campaign_types_controller_test.rb
|
252
|
+
- test/functional/home_controller_test.rb
|
253
|
+
has_rdoc: true
|
254
|
+
homepage: http://www.e9digital.com
|
255
|
+
licenses: []
|
256
|
+
|
257
|
+
post_install_message:
|
258
|
+
rdoc_options: []
|
259
|
+
|
260
|
+
require_paths:
|
261
|
+
- lib
|
262
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
263
|
+
none: false
|
264
|
+
requirements:
|
265
|
+
- - ">="
|
266
|
+
- !ruby/object:Gem::Version
|
267
|
+
version: "0"
|
268
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
269
|
+
none: false
|
270
|
+
requirements:
|
271
|
+
- - ">="
|
272
|
+
- !ruby/object:Gem::Version
|
273
|
+
version: "0"
|
274
|
+
requirements: []
|
275
|
+
|
276
|
+
rubyforge_project: e9_crm
|
277
|
+
rubygems_version: 1.6.2
|
278
|
+
signing_key:
|
279
|
+
specification_version: 3
|
280
|
+
summary: CRM engine plugin for the e9 CMS
|
281
|
+
test_files:
|
282
|
+
- test/functional/e9_crm/campaign_types_controller_test.rb
|
283
|
+
- test/functional/home_controller_test.rb
|