e9_crm 0.1.14 → 0.1.16
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/campaigns_controller.rb +1 -1
- data/app/controllers/e9_crm/contacts_controller.rb +6 -1
- data/app/controllers/e9_crm/dated_costs_controller.rb +0 -2
- data/app/helpers/e9_crm/base_helper.rb +56 -79
- data/app/helpers/e9_crm/contacts_helper.rb +1 -1
- data/app/models/contact.rb +6 -16
- data/app/views/e9_crm/contacts/show.html.haml +5 -0
- data/app/views/e9_crm/offers/_offer.html.haml +2 -2
- data/app/views/{e9_crm/record_attributes → record_attributes}/_user.html.haml +0 -0
- data/config/routes.rb +0 -4
- data/e9_crm.gemspec +3 -2
- data/lib/e9_crm.rb +5 -6
- data/lib/e9_crm/version.rb +1 -1
- metadata +54 -28
- data/app/controllers/e9_crm/menu_options_controller.rb +0 -28
- data/app/models/address_attribute.rb +0 -7
- data/app/models/instant_messaging_handle_attribute.rb +0 -4
- data/app/models/menu_option.rb +0 -38
- data/app/models/phone_number_attribute.rb +0 -4
- data/app/models/record_attribute.rb +0 -41
- data/app/models/website_attribute.rb +0 -4
- data/app/views/e9_crm/menu_options/_form_inner.html.haml +0 -6
- data/app/views/e9_crm/menu_options/_header.html.haml +0 -7
- data/app/views/e9_crm/record_attributes/_address_attribute.html.haml +0 -5
- data/app/views/e9_crm/record_attributes/_form_partial.html.haml +0 -4
- data/app/views/e9_crm/record_attributes/_instant_messaging_handle_attribute.html.haml +0 -5
- data/app/views/e9_crm/record_attributes/_phone_number_attribute.html.haml +0 -5
- data/app/views/e9_crm/record_attributes/_record_attribute.html.haml +0 -10
- data/app/views/e9_crm/record_attributes/_templates.js.erb +0 -12
- data/app/views/e9_crm/record_attributes/_website_attribute.html.haml +0 -5
@@ -17,7 +17,7 @@ class E9Crm::CampaignsController < E9Crm::ResourcesController
|
|
17
17
|
protected
|
18
18
|
|
19
19
|
def collection_scope
|
20
|
-
end_of_association_chain.typed.includes(:campaign_group)
|
20
|
+
#end_of_association_chain.typed.includes(:campaign_group)
|
21
21
|
|
22
22
|
# NOTE this is a pretty ugly join just to be able to sort on campaign group name
|
23
23
|
end_of_association_chain.typed
|
@@ -18,9 +18,14 @@ class E9Crm::ContactsController < E9Crm::ResourcesController
|
|
18
18
|
has_scope :by_company, :as => :company, :only => :index
|
19
19
|
|
20
20
|
# record attributes templates js
|
21
|
+
#caches_action :templates
|
22
|
+
|
21
23
|
skip_before_filter :authenticate_user!, :filter_access_filter, :only => :templates
|
22
24
|
before_filter :build_resource, :only => :templates
|
23
|
-
|
25
|
+
|
26
|
+
def templates
|
27
|
+
render RecordAttribute::TEMPLATES
|
28
|
+
end
|
24
29
|
|
25
30
|
# NOTE for some reason create! { redirect } is trying to redirect on failure
|
26
31
|
def create
|
@@ -1,33 +1,10 @@
|
|
1
1
|
module E9Crm::BaseHelper
|
2
2
|
|
3
|
-
def kramdown(string)
|
4
|
-
Kramdown::Document.new(string).to_html.html_safe
|
5
|
-
end
|
6
|
-
|
7
|
-
alias :k :kramdown
|
8
|
-
|
9
|
-
def help_tooltip(string, data_title = nil)
|
10
|
-
return <<-HTML.strip.html_safe
|
11
|
-
<span class="help" rel="tooltip" #{data_title ? %Q[data-title="#{data_title}"] : nil } title="#{CGI.escape_html(string)}">#{t(:inline_help_link)}</span>
|
12
|
-
HTML
|
13
|
-
end
|
3
|
+
#def kramdown(string)
|
4
|
+
#Kramdown::Document.new(string).to_html.html_safe
|
5
|
+
#end
|
14
6
|
|
15
|
-
|
16
|
-
options[:key] ||= :"#{key}_help"
|
17
|
-
|
18
|
-
help_title = options.delete(:title) || resource_humanize(options.delete(:key))
|
19
|
-
|
20
|
-
str = ''.html_safe
|
21
|
-
str.safe_concat resource_humanize(key)
|
22
|
-
str.safe_concat ' '
|
23
|
-
str.safe_concat help_tooltip(help_title, options.delete(:header))
|
24
|
-
|
25
|
-
if form_or_id.respond_to?(:label)
|
26
|
-
form_or_id.label(key, str, options)
|
27
|
-
else
|
28
|
-
label_tag(form_or_id, str, options)
|
29
|
-
end
|
30
|
-
end
|
7
|
+
#alias :k :kramdown
|
31
8
|
|
32
9
|
##
|
33
10
|
# Field maps
|
@@ -56,58 +33,58 @@ module E9Crm::BaseHelper
|
|
56
33
|
# Misc
|
57
34
|
#
|
58
35
|
|
59
|
-
def link_to_add_record_attribute(association_name)
|
60
|
-
link_to(
|
61
|
-
t(:add_record_attribute, :scope => :e9_crm),
|
62
|
-
'javascript:;',
|
63
|
-
|
64
|
-
'data-association' => association_name
|
65
|
-
)
|
66
|
-
end
|
67
|
-
|
68
|
-
def link_to_destroy_record_attribute
|
69
|
-
link_to(
|
70
|
-
t(:destroy_record_attribute, :scope => :e9_crm),
|
71
|
-
'javascript:;',
|
72
|
-
|
73
|
-
)
|
74
|
-
end
|
75
|
-
|
76
|
-
def render_record_attribute_form(association_name, form)
|
77
|
-
render('e9_crm/record_attributes/form_partial', {
|
78
|
-
|
79
|
-
|
80
|
-
})
|
81
|
-
end
|
82
|
-
|
83
|
-
def render_record_attribute_association(association_name, form, options = {})
|
84
|
-
options.symbolize_keys!
|
85
|
-
|
86
|
-
association = resource.send(association_name)
|
87
|
-
|
88
|
-
unless association.empty?
|
89
|
-
form.fields_for(association_name) do |f|
|
90
|
-
concat record_attribute_template(association_name, f, options)
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
def record_attribute_template(association_name, builder, options = {})
|
96
|
-
options.symbolize_keys!
|
97
|
-
|
98
|
-
render(
|
99
|
-
|
100
|
-
|
101
|
-
)
|
102
|
-
end
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
def build_associated_resource(association_name)
|
107
|
-
params_method = "#{association_name}_build_parameters"
|
108
|
-
build_params = resource_class.send(params_method) if resource_class.respond_to?(params_method)
|
109
|
-
resource.send(association_name).build(build_params || {})
|
110
|
-
end
|
36
|
+
#def link_to_add_record_attribute(association_name)
|
37
|
+
#link_to(
|
38
|
+
#t(:add_record_attribute, :scope => :e9_crm),
|
39
|
+
#'javascript:;',
|
40
|
+
#:class => 'add-nested-association',
|
41
|
+
#'data-association' => association_name
|
42
|
+
#)
|
43
|
+
#end
|
44
|
+
|
45
|
+
#def link_to_destroy_record_attribute
|
46
|
+
#link_to(
|
47
|
+
#t(:destroy_record_attribute, :scope => :e9_crm),
|
48
|
+
#'javascript:;',
|
49
|
+
#:class => 'destroy-nested-association'
|
50
|
+
#)
|
51
|
+
#end
|
52
|
+
|
53
|
+
#def render_record_attribute_form(association_name, form)
|
54
|
+
#render('e9_crm/record_attributes/form_partial', {
|
55
|
+
#:form => form,
|
56
|
+
#:association_name => association_name
|
57
|
+
#})
|
58
|
+
#end
|
59
|
+
|
60
|
+
#def render_record_attribute_association(association_name, form, options = {})
|
61
|
+
#options.symbolize_keys!
|
62
|
+
|
63
|
+
#association = resource.send(association_name)
|
64
|
+
|
65
|
+
#unless association.empty?
|
66
|
+
#form.fields_for(association_name) do |f|
|
67
|
+
#concat record_attribute_template(association_name, f, options)
|
68
|
+
#end
|
69
|
+
#end
|
70
|
+
#end
|
71
|
+
|
72
|
+
#def record_attribute_template(association_name, builder, options = {})
|
73
|
+
#options.symbolize_keys!
|
74
|
+
|
75
|
+
#render(
|
76
|
+
#:partial => options[:partial] || "e9_crm/record_attributes/#{association_name.to_s.singularize}",
|
77
|
+
#:locals => { :f => builder }
|
78
|
+
#)
|
79
|
+
#end
|
80
|
+
|
81
|
+
## tries to build an associated resource, looking to the assocatiaon's model for a method
|
82
|
+
## named "%{association_name}_build_parameters}" first for any default params
|
83
|
+
#def build_associated_resource(association_name)
|
84
|
+
#params_method = "#{association_name}_build_parameters"
|
85
|
+
#build_params = resource_class.send(params_method) if resource_class.respond_to?(params_method)
|
86
|
+
#resource.send(association_name).build(build_params || {})
|
87
|
+
#end
|
111
88
|
|
112
89
|
def sortable_controller?
|
113
90
|
@_sortable_controller ||= controller.class.ancestors.member?(E9Rails::Controllers::Sortable)
|
@@ -10,7 +10,7 @@ module E9Crm::ContactsHelper
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def company_select_options
|
13
|
-
options = Company.select(
|
13
|
+
options = Company.select("companies.name, companies.id").ordered.all.map {|c| [c.name, c.id] }
|
14
14
|
options.unshift(['Any Company', nil])
|
15
15
|
options_for_select(options, params[:company])
|
16
16
|
end
|
data/app/models/contact.rb
CHANGED
@@ -94,22 +94,12 @@ class Contact < ActiveRecord::Base
|
|
94
94
|
PageView.by_user(users)
|
95
95
|
end
|
96
96
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
accepts_nested_attributes_for association_name.to_sym, :allow_destroy => true, :reject_if => :reject_record_attribute?
|
104
|
-
end
|
105
|
-
|
106
|
-
def build_all_record_attributes
|
107
|
-
RECORD_ATTRIBUTES.each do |attr|
|
108
|
-
params_method = "#{attr}_build_parameters"
|
109
|
-
build_params = self.class.send(params_method) if self.class.respond_to?(params_method)
|
110
|
-
send(attr).send(:build, build_params || {})
|
111
|
-
end
|
112
|
-
end
|
97
|
+
has_record_attributes :users,
|
98
|
+
:phone_number_attributes,
|
99
|
+
:instant_messaging_handle_attributes,
|
100
|
+
:website_attributes,
|
101
|
+
:address_attributes,
|
102
|
+
:skip_name_format => true
|
113
103
|
|
114
104
|
##
|
115
105
|
# Validations
|
@@ -1,16 +1,21 @@
|
|
1
1
|
.contact-body
|
2
2
|
= title resource.name
|
3
|
+
|
3
4
|
.contact-photo
|
4
5
|
%img{:src => resource.avatar_url, :alt => "Avatar for #{resource.name}"}
|
6
|
+
|
5
7
|
= render 'who', :record => resource, :hide_name => true
|
8
|
+
|
6
9
|
.contact-links.actions
|
7
10
|
= link_to_edit_resource(resource)
|
8
11
|
= google_search_link(resource.name)
|
9
12
|
= google_news_link(resource.name)
|
13
|
+
|
10
14
|
- if (tags = resource.tags(:show_all => true)).present?
|
11
15
|
.contact-tags
|
12
16
|
%label #{Tag.model_name.human.pluralize}:
|
13
17
|
= contact_tag_list(tags)
|
18
|
+
|
14
19
|
.contact-info
|
15
20
|
%label #{Contact.human_attribute_name(:info)}:
|
16
21
|
= contact_simple_format(resource.info.presence || t(:none))
|
@@ -1,4 +1,4 @@
|
|
1
|
-
%div{:id => "offer_#{
|
1
|
+
%div{:id => "offer_#{offer.id}_body"}
|
2
2
|
- content_for :bottom_javascripts do
|
3
3
|
:javascript
|
4
|
-
$(function(){ $("#offer_#{
|
4
|
+
$(function(){ $("#offer_#{offer.id}_body").load("#{new_public_offer_deal_path(offer)}") });
|
File without changes
|
data/config/routes.rb
CHANGED
@@ -35,10 +35,6 @@ Rails.application.routes.draw do
|
|
35
35
|
collection { get :select }
|
36
36
|
end
|
37
37
|
|
38
|
-
resources :menu_options, :except => [:show] do
|
39
|
-
collection { post :update_order }
|
40
|
-
end
|
41
|
-
|
42
38
|
resources :dated_costs, :path => 'advertising_costs', :only => [:index] do
|
43
39
|
collection do
|
44
40
|
post :bulk_create
|
data/e9_crm.gemspec
CHANGED
@@ -23,8 +23,9 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.add_dependency("inherited_resources", "~> 1.1.2")
|
24
24
|
s.add_dependency("has_scope")
|
25
25
|
s.add_dependency("money")
|
26
|
-
s.add_dependency("e9_rails"
|
27
|
-
s.add_dependency("e9_tags"
|
26
|
+
s.add_dependency("e9_rails")
|
27
|
+
s.add_dependency("e9_tags")
|
28
|
+
s.add_dependency("e9_attributes")
|
28
29
|
s.add_dependency("will_paginate")
|
29
30
|
s.add_dependency("kramdown", "~> 0.13")
|
30
31
|
end
|
data/lib/e9_crm.rb
CHANGED
@@ -1,12 +1,9 @@
|
|
1
|
-
require '
|
1
|
+
require 'e9_base'
|
2
2
|
require 'e9_rails'
|
3
3
|
require 'e9_tags'
|
4
|
+
require 'e9_attributes'
|
5
|
+
|
4
6
|
require 'money'
|
5
|
-
require 'inherited_resources'
|
6
|
-
require 'will_paginate'
|
7
|
-
require 'has_scope'
|
8
|
-
require 'kramdown'
|
9
|
-
require 'e9_base'
|
10
7
|
|
11
8
|
require 'e9_crm/rails_extensions'
|
12
9
|
|
@@ -65,6 +62,8 @@ module E9Crm
|
|
65
62
|
E9Crm.tracking_controllers.each do |controller|
|
66
63
|
controller.send(:include, E9Crm::TrackingController)
|
67
64
|
end
|
65
|
+
|
66
|
+
MenuOption.keys |= %w(Deal\ Category)
|
68
67
|
end
|
69
68
|
|
70
69
|
class Engine < ::Rails::Engine
|
data/lib/e9_crm/version.rb
CHANGED
metadata
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: e9_crm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 16
|
9
|
+
version: 0.1.16
|
6
10
|
platform: ruby
|
7
11
|
authors:
|
8
12
|
- Travis Cox
|
@@ -10,7 +14,7 @@ autorequire:
|
|
10
14
|
bindir: bin
|
11
15
|
cert_chain: []
|
12
16
|
|
13
|
-
date: 2011-
|
17
|
+
date: 2011-09-07 00:00:00 -04:00
|
14
18
|
default_executable:
|
15
19
|
dependencies:
|
16
20
|
- !ruby/object:Gem::Dependency
|
@@ -21,6 +25,10 @@ dependencies:
|
|
21
25
|
requirements:
|
22
26
|
- - ~>
|
23
27
|
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 3
|
30
|
+
- 0
|
31
|
+
- 0
|
24
32
|
version: 3.0.0
|
25
33
|
type: :runtime
|
26
34
|
version_requirements: *id001
|
@@ -32,6 +40,10 @@ dependencies:
|
|
32
40
|
requirements:
|
33
41
|
- - ~>
|
34
42
|
- !ruby/object:Gem::Version
|
43
|
+
segments:
|
44
|
+
- 1
|
45
|
+
- 1
|
46
|
+
- 2
|
35
47
|
version: 1.1.2
|
36
48
|
type: :runtime
|
37
49
|
version_requirements: *id002
|
@@ -43,6 +55,8 @@ dependencies:
|
|
43
55
|
requirements:
|
44
56
|
- - ">="
|
45
57
|
- !ruby/object:Gem::Version
|
58
|
+
segments:
|
59
|
+
- 0
|
46
60
|
version: "0"
|
47
61
|
type: :runtime
|
48
62
|
version_requirements: *id003
|
@@ -54,6 +68,8 @@ dependencies:
|
|
54
68
|
requirements:
|
55
69
|
- - ">="
|
56
70
|
- !ruby/object:Gem::Version
|
71
|
+
segments:
|
72
|
+
- 0
|
57
73
|
version: "0"
|
58
74
|
type: :runtime
|
59
75
|
version_requirements: *id004
|
@@ -63,9 +79,11 @@ dependencies:
|
|
63
79
|
requirement: &id005 !ruby/object:Gem::Requirement
|
64
80
|
none: false
|
65
81
|
requirements:
|
66
|
-
- -
|
82
|
+
- - ">="
|
67
83
|
- !ruby/object:Gem::Version
|
68
|
-
|
84
|
+
segments:
|
85
|
+
- 0
|
86
|
+
version: "0"
|
69
87
|
type: :runtime
|
70
88
|
version_requirements: *id005
|
71
89
|
- !ruby/object:Gem::Dependency
|
@@ -74,33 +92,53 @@ dependencies:
|
|
74
92
|
requirement: &id006 !ruby/object:Gem::Requirement
|
75
93
|
none: false
|
76
94
|
requirements:
|
77
|
-
- -
|
95
|
+
- - ">="
|
78
96
|
- !ruby/object:Gem::Version
|
79
|
-
|
97
|
+
segments:
|
98
|
+
- 0
|
99
|
+
version: "0"
|
80
100
|
type: :runtime
|
81
101
|
version_requirements: *id006
|
82
102
|
- !ruby/object:Gem::Dependency
|
83
|
-
name:
|
103
|
+
name: e9_attributes
|
84
104
|
prerelease: false
|
85
105
|
requirement: &id007 !ruby/object:Gem::Requirement
|
86
106
|
none: false
|
87
107
|
requirements:
|
88
108
|
- - ">="
|
89
109
|
- !ruby/object:Gem::Version
|
110
|
+
segments:
|
111
|
+
- 0
|
90
112
|
version: "0"
|
91
113
|
type: :runtime
|
92
114
|
version_requirements: *id007
|
93
115
|
- !ruby/object:Gem::Dependency
|
94
|
-
name:
|
116
|
+
name: will_paginate
|
95
117
|
prerelease: false
|
96
118
|
requirement: &id008 !ruby/object:Gem::Requirement
|
119
|
+
none: false
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
segments:
|
124
|
+
- 0
|
125
|
+
version: "0"
|
126
|
+
type: :runtime
|
127
|
+
version_requirements: *id008
|
128
|
+
- !ruby/object:Gem::Dependency
|
129
|
+
name: kramdown
|
130
|
+
prerelease: false
|
131
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
97
132
|
none: false
|
98
133
|
requirements:
|
99
134
|
- - ~>
|
100
135
|
- !ruby/object:Gem::Version
|
136
|
+
segments:
|
137
|
+
- 0
|
138
|
+
- 13
|
101
139
|
version: "0.13"
|
102
140
|
type: :runtime
|
103
|
-
version_requirements: *
|
141
|
+
version_requirements: *id009
|
104
142
|
description: |
|
105
143
|
*NOTE his plugin requires the private e9_base CMS gem and WILL NOT WORK without it.*
|
106
144
|
|
@@ -162,7 +200,6 @@ files:
|
|
162
200
|
- app/controllers/e9_crm/email_templates.controller.rb
|
163
201
|
- app/controllers/e9_crm/file_download_offers_controller.rb
|
164
202
|
- app/controllers/e9_crm/leads_controller.rb
|
165
|
-
- app/controllers/e9_crm/menu_options_controller.rb
|
166
203
|
- app/controllers/e9_crm/new_content_subscription_offers_controller.rb
|
167
204
|
- app/controllers/e9_crm/newsletter_subscription_offers_controller.rb
|
168
205
|
- app/controllers/e9_crm/offer_subclass_controller.rb
|
@@ -184,7 +221,6 @@ files:
|
|
184
221
|
- app/helpers/e9_crm/menu_options_helper.rb
|
185
222
|
- app/helpers/e9_crm/offers_helper.rb
|
186
223
|
- app/helpers/e9_crm/page_views_helper.rb
|
187
|
-
- app/models/address_attribute.rb
|
188
224
|
- app/models/advertising_campaign.rb
|
189
225
|
- app/models/affiliate_campaign.rb
|
190
226
|
- app/models/campaign.rb
|
@@ -198,20 +234,15 @@ files:
|
|
198
234
|
- app/models/email_campaign.rb
|
199
235
|
- app/models/email_template.rb
|
200
236
|
- app/models/file_download_offer.rb
|
201
|
-
- app/models/instant_messaging_handle_attribute.rb
|
202
|
-
- app/models/menu_option.rb
|
203
237
|
- app/models/new_content_subscription_offer.rb
|
204
238
|
- app/models/newsletter_subscription_offer.rb
|
205
239
|
- app/models/no_campaign.rb
|
206
240
|
- app/models/offer.rb
|
207
241
|
- app/models/page_view.rb
|
208
|
-
- app/models/phone_number_attribute.rb
|
209
|
-
- app/models/record_attribute.rb
|
210
242
|
- app/models/sales_campaign.rb
|
211
243
|
- app/models/subscription_offer.rb
|
212
244
|
- app/models/tracking_cookie.rb
|
213
245
|
- app/models/video_offer.rb
|
214
|
-
- app/models/website_attribute.rb
|
215
246
|
- app/observers/deal_observer.rb
|
216
247
|
- app/uploaders/file_uploader.rb
|
217
248
|
- app/views/e9_crm/advertising_campaigns/_form_inner.html.haml
|
@@ -277,8 +308,6 @@ files:
|
|
277
308
|
- app/views/e9_crm/leads/_form.html.haml
|
278
309
|
- app/views/e9_crm/leads/create.js.erb
|
279
310
|
- app/views/e9_crm/leads/new.html.haml
|
280
|
-
- app/views/e9_crm/menu_options/_form_inner.html.haml
|
281
|
-
- app/views/e9_crm/menu_options/_header.html.haml
|
282
311
|
- app/views/e9_crm/new_content_subscription_offers/_form_inner.html.haml
|
283
312
|
- app/views/e9_crm/newsletter_subscription_offers/_form_inner.html.haml
|
284
313
|
- app/views/e9_crm/offers/_form_inner.html.haml
|
@@ -287,14 +316,6 @@ files:
|
|
287
316
|
- app/views/e9_crm/offers/_public_offer.html.haml
|
288
317
|
- app/views/e9_crm/offers/show.html.haml
|
289
318
|
- app/views/e9_crm/page_views/_table.html.haml
|
290
|
-
- app/views/e9_crm/record_attributes/_address_attribute.html.haml
|
291
|
-
- app/views/e9_crm/record_attributes/_form_partial.html.haml
|
292
|
-
- app/views/e9_crm/record_attributes/_instant_messaging_handle_attribute.html.haml
|
293
|
-
- app/views/e9_crm/record_attributes/_phone_number_attribute.html.haml
|
294
|
-
- app/views/e9_crm/record_attributes/_record_attribute.html.haml
|
295
|
-
- app/views/e9_crm/record_attributes/_templates.js.erb
|
296
|
-
- app/views/e9_crm/record_attributes/_user.html.haml
|
297
|
-
- app/views/e9_crm/record_attributes/_website_attribute.html.haml
|
298
319
|
- app/views/e9_crm/resources/_form.html.haml
|
299
320
|
- app/views/e9_crm/resources/_form_inner.html.haml
|
300
321
|
- app/views/e9_crm/resources/_header.html.haml
|
@@ -310,6 +331,7 @@ files:
|
|
310
331
|
- app/views/e9_crm/sales_campaigns/_form_inner.html.haml
|
311
332
|
- app/views/e9_crm/subscription_offers/_form_inner.html.haml
|
312
333
|
- app/views/e9_crm/video_offers/_form_inner.html.haml
|
334
|
+
- app/views/record_attributes/_user.html.haml
|
313
335
|
- config/initializers/inflections.rb
|
314
336
|
- config/locales/e9.en.yml
|
315
337
|
- config/locales/en.yml
|
@@ -345,17 +367,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
345
367
|
requirements:
|
346
368
|
- - ">="
|
347
369
|
- !ruby/object:Gem::Version
|
370
|
+
segments:
|
371
|
+
- 0
|
348
372
|
version: "0"
|
349
373
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
350
374
|
none: false
|
351
375
|
requirements:
|
352
376
|
- - ">="
|
353
377
|
- !ruby/object:Gem::Version
|
378
|
+
segments:
|
379
|
+
- 0
|
354
380
|
version: "0"
|
355
381
|
requirements: []
|
356
382
|
|
357
383
|
rubyforge_project: e9_crm
|
358
|
-
rubygems_version: 1.
|
384
|
+
rubygems_version: 1.3.7
|
359
385
|
signing_key:
|
360
386
|
specification_version: 3
|
361
387
|
summary: CRM engine plugin for the e9 CMS
|
@@ -1,28 +0,0 @@
|
|
1
|
-
class E9Crm::MenuOptionsController < E9Crm::ResourcesController
|
2
|
-
defaults :resource_class => MenuOption
|
3
|
-
include E9Rails::Controllers::Sortable
|
4
|
-
|
5
|
-
self.should_paginate_index = false
|
6
|
-
|
7
|
-
has_scope :options_for, :as => :key, :only => :index
|
8
|
-
|
9
|
-
# NOTE The reason this is set in a filter instead of just a default scope value
|
10
|
-
# is that it is used in the index view to add the key param to the new
|
11
|
-
# resource link
|
12
|
-
#
|
13
|
-
before_filter :ensure_default_fetch_key, :only => :index
|
14
|
-
|
15
|
-
def create
|
16
|
-
create! { collection_path(:key => resource.key) }
|
17
|
-
end
|
18
|
-
|
19
|
-
def update
|
20
|
-
update! { collection_path(:key => resource.key) }
|
21
|
-
end
|
22
|
-
|
23
|
-
protected
|
24
|
-
|
25
|
-
def ensure_default_fetch_key
|
26
|
-
params[:key] ||= MenuOption::KEYS.sort.first
|
27
|
-
end
|
28
|
-
end
|
data/app/models/menu_option.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
# A simple class to manage menu options, usable by other classes to build their menus.
|
2
|
-
#
|
3
|
-
class MenuOption < ActiveRecord::Base
|
4
|
-
KEYS = [
|
5
|
-
#'Task Category',
|
6
|
-
#'Task Status',
|
7
|
-
'Address',
|
8
|
-
'Deal Category',
|
9
|
-
'Email',
|
10
|
-
'Instant Messaging Handle',
|
11
|
-
'Phone Number',
|
12
|
-
'Website'
|
13
|
-
].freeze
|
14
|
-
|
15
|
-
validates :value, :presence => true
|
16
|
-
validates :key, :presence => true, :inclusion => { :in => KEYS, :allow_blank => true }
|
17
|
-
|
18
|
-
acts_as_list :scope => 'menu_options.key = \"#{key}\"'
|
19
|
-
|
20
|
-
scope :options_for, lambda {|key| where(:key => key).order('menu_options.position ASC') }
|
21
|
-
|
22
|
-
##
|
23
|
-
# A direct SQL selection of values for a given key
|
24
|
-
#
|
25
|
-
# MenuOption.fetch('Email') #=> ['Personal','Work']
|
26
|
-
#
|
27
|
-
# === Parameters
|
28
|
-
#
|
29
|
-
# [key (String)] The key for the assocated menu options.
|
30
|
-
#
|
31
|
-
def self.fetch_values(key)
|
32
|
-
connection.send(:select_values, options_for(key).order(:position).project('value').to_sql, 'Menu Option Select')
|
33
|
-
end
|
34
|
-
|
35
|
-
def to_s
|
36
|
-
value
|
37
|
-
end
|
38
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
# An arbitrary 'attribute' attachable to records.
|
2
|
-
#
|
3
|
-
# Gets support for arbitrary options via InheritableOptions. By default it
|
4
|
-
# has one option, +type+, but subclasses could extend for further options by
|
5
|
-
# overwriting +options_parameters+.
|
6
|
-
#
|
7
|
-
# By default, the +type+ options are managed via the +MenuOption+ class.
|
8
|
-
#
|
9
|
-
class RecordAttribute < ActiveRecord::Base
|
10
|
-
include E9Rails::ActiveRecord::STI
|
11
|
-
include E9Rails::ActiveRecord::AttributeSearchable
|
12
|
-
include E9Rails::ActiveRecord::InheritableOptions
|
13
|
-
|
14
|
-
self.options_parameters = [:type]
|
15
|
-
|
16
|
-
belongs_to :record, :polymorphic => true
|
17
|
-
|
18
|
-
##
|
19
|
-
# Looks up the available +types+ for this attribute by fetching a
|
20
|
-
# titleized version of the class name from +MenuOption+.
|
21
|
-
#
|
22
|
-
# e.g.
|
23
|
-
#
|
24
|
-
# PhoneNumberAttribute.types
|
25
|
-
#
|
26
|
-
# is equivalent to:
|
27
|
-
#
|
28
|
-
# MenuOption.fetch_values('Phone Number')
|
29
|
-
#
|
30
|
-
def self.types
|
31
|
-
if name =~ /^(\w+)Attribute$/
|
32
|
-
MenuOption.fetch_values($1.titleize)
|
33
|
-
else
|
34
|
-
[]
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def to_s
|
39
|
-
options.type ? "#{value} (#{options.type})" : value
|
40
|
-
end
|
41
|
-
end
|
@@ -1,7 +0,0 @@
|
|
1
|
-
.toolbar
|
2
|
-
.toolbar-left
|
3
|
-
%form{:action => menu_options_path, :method => :get, :class => 'scope-selects'}
|
4
|
-
= label_tag 'menu_option_key_select', t(:view)
|
5
|
-
= select_tag 'key', options_for_select(MenuOption::KEYS.sort, params[:key])
|
6
|
-
.toolbar-right
|
7
|
-
= link_to_new_resource(MenuOption, :menu_option => {:key => params[:key]}, :class => 'new-menu-option')
|
@@ -1,12 +0,0 @@
|
|
1
|
-
E9CRM = window.E9CRM || {};
|
2
|
-
E9CRM.js_templates = {};
|
3
|
-
E9CRM.js_templates.start_child_index =
|
4
|
-
E9CRM.js_templates.current_child_index = <%= child_index = 100000 %>;
|
5
|
-
<%= fields_for(resource) do |f| %>
|
6
|
-
<% resource_class::RECORD_ATTRIBUTES.each do |association_name| %>
|
7
|
-
<% build_associated_resource(association_name) %>
|
8
|
-
<%= f.fields_for(association_name, :child_index => child_index) do |association_form_builder| %>
|
9
|
-
E9CRM.js_templates.<%= association_name %> = "<%= escape_javascript(record_attribute_template(association_name, association_form_builder)) %>";
|
10
|
-
<% end %>
|
11
|
-
<% end %>
|
12
|
-
<% end %>
|