fat_free_crm 0.11.1 → 0.11.2
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.
Potentially problematic release.
This version of fat_free_crm might be problematic. Click here for more details.
- data/Gemfile +30 -12
- data/Gemfile.lock +131 -119
- data/Procfile +1 -1
- data/README.md +1 -1
- data/app/assets/images/notifications.png +0 -0
- data/app/assets/javascripts/application.js.erb +3 -0
- data/app/assets/javascripts/crm_textarea_autocomplete.js +44 -0
- data/app/assets/stylesheets/application.css.erb +2 -0
- data/app/assets/stylesheets/common.scss +7 -11
- data/app/assets/stylesheets/textarea_autocomplete.scss +42 -0
- data/app/controllers/admin/application_controller.rb +5 -5
- data/app/controllers/admin/field_groups_controller.rb +11 -51
- data/app/controllers/admin/fields_controller.rb +13 -59
- data/app/controllers/admin/plugins_controller.rb +1 -4
- data/app/controllers/admin/settings_controller.rb +0 -4
- data/app/controllers/admin/tags_controller.rb +11 -66
- data/app/controllers/admin/users_controller.rb +20 -83
- data/app/controllers/application_controller.rb +83 -69
- data/app/controllers/comments_controller.rb +12 -29
- data/app/controllers/emails_controller.rb +1 -5
- data/app/controllers/entities/accounts_controller.rb +13 -32
- data/app/controllers/entities/campaigns_controller.rb +17 -32
- data/app/controllers/entities/contacts_controller.rb +20 -38
- data/app/controllers/entities/leads_controller.rb +33 -55
- data/app/controllers/entities/opportunities_controller.rb +26 -42
- data/app/controllers/entities_controller.rb +92 -83
- data/app/controllers/home_controller.rb +1 -10
- data/app/controllers/lists_controller.rb +1 -4
- data/app/controllers/{entities/tasks_controller.rb → tasks_controller.rb} +21 -32
- data/app/controllers/users_controller.rb +6 -5
- data/app/helpers/accounts_helper.rb +32 -9
- data/app/helpers/application_helper.rb +15 -1
- data/app/helpers/campaigns_helper.rb +1 -1
- data/app/helpers/comments_helper.rb +11 -1
- data/app/helpers/leads_helper.rb +1 -1
- data/app/helpers/opportunities_helper.rb +1 -1
- data/app/{models/mailers/notifier.rb → mailers/dropbox_mailer.rb} +5 -16
- data/app/mailers/subscription_mailer.rb +37 -0
- data/{lib/tasks/dropbox.rake → app/mailers/user_mailer.rb} +11 -13
- data/app/models/entities/account.rb +3 -1
- data/app/models/entities/campaign.rb +3 -1
- data/app/models/entities/contact.rb +3 -1
- data/app/models/entities/lead.rb +6 -5
- data/app/models/entities/opportunity.rb +3 -1
- data/app/models/fields/field.rb +1 -1
- data/app/models/polymorphic/comment.rb +34 -0
- data/app/models/{entities → polymorphic}/task.rb +16 -3
- data/app/models/setting.rb +15 -15
- data/app/models/users/ability.rb +12 -5
- data/app/models/users/user.rb +7 -2
- data/app/views/accounts/index.html.haml +1 -1
- data/app/views/accounts/index.js.rjs +1 -1
- data/app/views/admin/plugins/index.html.haml +1 -7
- data/app/views/{shared/auto_complete.html.haml → application/_auto_complete.html.haml} +0 -0
- data/app/views/{shared → application}/index.atom.builder +1 -1
- data/app/views/{shared → application}/index.rss.builder +1 -1
- data/app/views/campaigns/index.html.haml +1 -1
- data/app/views/campaigns/index.js.rjs +1 -1
- data/app/views/comments/_new.html.haml +6 -0
- data/app/views/comments/_subscription_links.html.haml +13 -0
- data/app/views/comments/new.js.rjs +2 -0
- data/app/views/contacts/_top_section.html.haml +3 -13
- data/app/views/contacts/index.html.haml +1 -1
- data/app/views/contacts/index.js.rjs +1 -1
- data/app/views/{notifier/dropbox_ack_notification.html.haml → dropbox_mailer/dropbox_notification.html.haml} +2 -2
- data/app/views/{shared → entities}/attach.js.rjs +1 -1
- data/app/views/entities/contacts.js.rjs +1 -1
- data/app/views/{shared/discard.rjs → entities/discard.js.rjs} +0 -0
- data/app/views/entities/leads.js.rjs +1 -1
- data/app/views/entities/opportunities.js.rjs +1 -1
- data/app/views/entities/subscription_update.js.rjs +4 -0
- data/app/views/entities/versions.js.rjs +1 -1
- data/app/views/layouts/_footer.html.haml +1 -1
- data/app/views/layouts/application.html.haml +3 -0
- data/app/views/leads/_contact.html.haml +1 -0
- data/app/views/leads/index.html.haml +1 -1
- data/app/views/leads/index.js.rjs +1 -1
- data/app/views/opportunities/_top_section.html.haml +4 -14
- data/app/views/opportunities/index.html.haml +1 -1
- data/app/views/opportunities/index.js.rjs +1 -1
- data/app/views/subscription_mailer/comment_notification.text.erb +7 -0
- data/app/views/{notifier → user_mailer}/password_reset_instructions.html.haml +0 -0
- data/config/application.rb +3 -1
- data/config/environments/development.rb +1 -1
- data/config/environments/test.rb +3 -0
- data/config/initializers/action_mailer.rb +8 -5
- data/config/initializers/cancan.rb +151 -0
- data/config/initializers/constants.rb +1 -0
- data/config/initializers/locale.rb +20 -0
- data/config/initializers/paper_trail.rb +4 -5
- data/config/initializers/relative_url_root.rb +0 -1
- data/config/initializers/squeel.rb +5 -0
- data/config/locales/cz_fat_free_crm.yml +3 -3
- data/config/locales/de.yml +2 -2
- data/config/locales/de_fat_free_crm.yml +651 -596
- data/config/locales/en-GB_fat_free_crm.yml +3 -3
- data/config/locales/en-US_fat_free_crm.yml +13 -3
- data/config/locales/es_fat_free_crm.yml +3 -3
- data/config/locales/fr-CA_fat_free_crm.yml +3 -3
- data/config/locales/fr_fat_free_crm.yml +3 -3
- data/config/locales/it_fat_free_crm.yml +3 -3
- data/config/locales/pl_fat_free_crm.yml +3 -3
- data/config/locales/pt-BR_fat_free_crm.yml +3 -3
- data/config/locales/ru_fat_free_crm.yml +3 -3
- data/config/locales/sv-SE_fat_free_crm.yml +3 -3
- data/config/locales/th_fat_free_crm.yml +3 -3
- data/config/routes.rb +10 -0
- data/config/settings.default.yml +29 -10
- data/config/unicorn.rb +4 -0
- data/db/migrate/20111201030535_add_field_groups_klass_name.rb +3 -1
- data/db/migrate/20120314080441_add_subscribed_users_to_entities.rb +23 -0
- data/db/migrate/20120405080727_change_subscribed_users_to_set.rb +24 -0
- data/db/migrate/20120405080742_change_further_subscribed_users_to_set.rb +27 -0
- data/db/migrate/20120413034923_add_index_on_versions_item_type.rb +5 -0
- data/db/schema.rb +109 -126
- data/fat_free_crm.gemspec +12 -18
- data/lib/fat_free_crm.rb +0 -1
- data/lib/fat_free_crm/core_ext/array.rb +1 -0
- data/lib/fat_free_crm/gem_dependencies.rb +1 -0
- data/lib/fat_free_crm/mail_processor/base.rb +226 -0
- data/lib/fat_free_crm/mail_processor/comment_replies.rb +86 -0
- data/lib/fat_free_crm/mail_processor/dropbox.rb +288 -0
- data/lib/fat_free_crm/permissions.rb +6 -19
- data/lib/fat_free_crm/renderers.rb +0 -8
- data/lib/fat_free_crm/tabs.rb +1 -1
- data/lib/fat_free_crm/version.rb +1 -1
- data/lib/plugins/country_select/lib/country_select.rb +2 -2
- data/lib/tasks/mail_processing.rake +60 -0
- data/spec/controllers/admin/users_controller_spec.rb +0 -2
- data/spec/controllers/{accounts_controller_spec.rb → entities/accounts_controller_spec.rb} +7 -9
- data/spec/controllers/{campaigns_controller_spec.rb → entities/campaigns_controller_spec.rb} +7 -7
- data/spec/controllers/{contacts_controller_spec.rb → entities/contacts_controller_spec.rb} +5 -9
- data/spec/controllers/{leads_controller_spec.rb → entities/leads_controller_spec.rb} +7 -9
- data/spec/controllers/{opportunities_controller_spec.rb → entities/opportunities_controller_spec.rb} +8 -15
- data/spec/controllers/tasks_controller_spec.rb +1 -5
- data/spec/controllers/users_controller_spec.rb +5 -9
- data/spec/factories/subscription_factories.rb +6 -0
- data/spec/lib/mail_processor/base_spec.rb +164 -0
- data/spec/lib/mail_processor/comment_replies_spec.rb +63 -0
- data/spec/lib/{dropbox_spec.rb → mail_processor/dropbox_spec.rb} +73 -181
- data/spec/lib/mail_processor/sample_emails/dropbox.rb +167 -0
- data/spec/mailers/subscription_mailer_spec.rb +17 -0
- data/spec/models/{base → entities}/account_contact_spec.rb +0 -0
- data/spec/models/{base → entities}/account_opportunity_spec.rb +0 -0
- data/spec/models/{base → entities}/account_spec.rb +4 -0
- data/spec/models/{base → entities}/campaign_spec.rb +4 -0
- data/spec/models/{base → entities}/contact_opportunity_spec.rb +0 -0
- data/spec/models/{base → entities}/contact_spec.rb +4 -0
- data/spec/models/{base → entities}/lead_spec.rb +4 -0
- data/spec/models/{base → entities}/opportunity_spec.rb +4 -0
- data/spec/models/polymorphic/comment_spec.rb +15 -0
- data/spec/models/{base → polymorphic}/task_spec.rb +124 -30
- data/spec/models/polymorphic/version_spec.rb +1 -1
- data/spec/shared/controllers.rb +5 -7
- data/spec/shared/models.rb +46 -0
- data/spec/spec_helper.rb +3 -4
- data/spec/support/mail_processor_mocks.rb +30 -0
- data/spec/support/uploaded_file.rb +3 -0
- data/spec/views/{common → application}/auto_complete.haml_spec.rb +1 -1
- data/vendor/assets/images/jquery-ui/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_flat_10_000000_40x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-icons_222222_256x240.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-icons_228ef1_256x240.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-icons_ef8c08_256x240.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-icons_ffd27a_256x240.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-icons_ffffff_256x240.png +0 -0
- data/vendor/assets/javascripts/textarea_autocomplete.js +605 -0
- data/vendor/assets/stylesheets/jquery-ui.custom.css.erb +565 -0
- metadata +234 -154
- data/config/locales/simple_form.en.yml +0 -24
- data/lib/fat_free_crm/dropbox.rb +0 -439
- data/spec/lib/dropbox/email_samples.rb +0 -77
@@ -18,9 +18,6 @@
|
|
18
18
|
class CommentsController < ApplicationController
|
19
19
|
before_filter :require_user
|
20
20
|
|
21
|
-
respond_to :js
|
22
|
-
respond_to :json, :xml, :except => :edit
|
23
|
-
|
24
21
|
COMMENTABLE = %w(account_id campaign_id contact_id lead_id opportunity_id task_id).freeze
|
25
22
|
|
26
23
|
# GET /comments
|
@@ -56,13 +53,12 @@ class CommentsController < ApplicationController
|
|
56
53
|
|
57
54
|
if @commentable
|
58
55
|
update_commentable_session
|
59
|
-
@commentable.classify.constantize.my.
|
56
|
+
unless @commentable.classify.constantize.my.find_by_id(params[:"#{@commentable}_id"])
|
57
|
+
respond_to_related_not_found(@commentable) and return
|
58
|
+
end
|
60
59
|
end
|
61
60
|
|
62
61
|
respond_with(@comment)
|
63
|
-
|
64
|
-
rescue ActiveRecord::RecordNotFound # Kicks in if commentable asset was not found.
|
65
|
-
respond_to_related_not_found(@commentable, :js)
|
66
62
|
end
|
67
63
|
|
68
64
|
# GET /comments/1/edit AJAX
|
@@ -70,14 +66,10 @@ class CommentsController < ApplicationController
|
|
70
66
|
def edit
|
71
67
|
@comment = Comment.find(params[:id])
|
72
68
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
raise ActiveRecord::RecordNotFound
|
69
|
+
model, id = @comment.commentable_type, @comment.commentable_id
|
70
|
+
unless model.constantize.my.find_by_id(id)
|
71
|
+
respond_to_related_not_found(model.downcase)
|
77
72
|
end
|
78
|
-
|
79
|
-
rescue ActiveRecord::RecordNotFound # Kicks in if commentable asset was not found.
|
80
|
-
respond_to_related_not_found(params[:comment][:commentable_type].downcase, :js, :xml)
|
81
73
|
end
|
82
74
|
|
83
75
|
# POST /comments
|
@@ -88,17 +80,13 @@ class CommentsController < ApplicationController
|
|
88
80
|
@comment = Comment.new(params[:comment])
|
89
81
|
|
90
82
|
# Make sure commentable object exists and is accessible to the current user.
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
raise ActiveRecord::RecordNotFound
|
83
|
+
model, id = @comment.commentable_type, @comment.commentable_id
|
84
|
+
unless model.constantize.my.find_by_id(id)
|
85
|
+
respond_to_related_not_found(model.downcase)
|
95
86
|
end
|
96
87
|
|
97
88
|
@comment.save
|
98
89
|
respond_with(@comment)
|
99
|
-
|
100
|
-
rescue ActiveRecord::RecordNotFound # Kicks in if commentable asset was not found.
|
101
|
-
respond_to_related_not_found(params[:comment][:commentable_type].downcase, :js, :xml)
|
102
90
|
end
|
103
91
|
|
104
92
|
# PUT /comments/1
|
@@ -109,9 +97,6 @@ class CommentsController < ApplicationController
|
|
109
97
|
@comment = Comment.find(params[:id])
|
110
98
|
@comment.update_attributes(params[:comment])
|
111
99
|
respond_with(@comment)
|
112
|
-
|
113
|
-
rescue ActiveRecord::RecordNotFound
|
114
|
-
respond_to_not_found(:js, :json, :xml)
|
115
100
|
end
|
116
101
|
|
117
102
|
# DELETE /comments/1
|
@@ -122,16 +107,14 @@ class CommentsController < ApplicationController
|
|
122
107
|
@comment = Comment.find(params[:id])
|
123
108
|
@comment.destroy
|
124
109
|
respond_with(@comment)
|
125
|
-
|
126
|
-
rescue ActiveRecord::RecordNotFound
|
127
|
-
respond_to_not_found(:html, :js, :json, :xml)
|
128
110
|
end
|
129
111
|
|
130
|
-
|
112
|
+
private
|
113
|
+
|
131
114
|
#----------------------------------------------------------------------------
|
132
115
|
def extract_commentable_name(params)
|
133
116
|
commentable = (params.keys & COMMENTABLE).first
|
134
|
-
commentable.sub(
|
117
|
+
commentable.sub('_id', '') if commentable
|
135
118
|
end
|
136
119
|
|
137
120
|
#----------------------------------------------------------------------------
|
@@ -18,8 +18,6 @@
|
|
18
18
|
class EmailsController < ApplicationController
|
19
19
|
before_filter :require_user
|
20
20
|
|
21
|
-
respond_to :js, :json, :xml
|
22
|
-
|
23
21
|
# GET /email
|
24
22
|
# GET /email.xml not implemented
|
25
23
|
#----------------------------------------------------------------------------
|
@@ -56,9 +54,7 @@ class EmailsController < ApplicationController
|
|
56
54
|
def destroy
|
57
55
|
@email = Email.find(params[:id])
|
58
56
|
@email.destroy
|
59
|
-
respond_with(@email)
|
60
57
|
|
61
|
-
|
62
|
-
respond_to_not_found(:html, :js, :json, :xml)
|
58
|
+
respond_with(@email)
|
63
59
|
end
|
64
60
|
end
|
@@ -28,8 +28,6 @@ class AccountsController < EntitiesController
|
|
28
28
|
# GET /accounts/1
|
29
29
|
#----------------------------------------------------------------------------
|
30
30
|
def show
|
31
|
-
@account = Account.my.find(params[:id])
|
32
|
-
|
33
31
|
respond_with(@account) do |format|
|
34
32
|
format.html do
|
35
33
|
@stage = Setting.unroll(:opportunity_stage)
|
@@ -37,18 +35,16 @@ class AccountsController < EntitiesController
|
|
37
35
|
@timeline = timeline(@account)
|
38
36
|
end
|
39
37
|
end
|
40
|
-
|
41
|
-
rescue ActiveRecord::RecordNotFound
|
42
|
-
respond_to_not_found(:html, :json, :xml)
|
43
38
|
end
|
44
39
|
|
45
40
|
# GET /accounts/new
|
46
41
|
#----------------------------------------------------------------------------
|
47
42
|
def new
|
48
|
-
@account =
|
43
|
+
@account.attributes = {:user => @current_user, :access => Setting.default_access}
|
49
44
|
@users = User.except(@current_user)
|
45
|
+
|
50
46
|
if params[:related]
|
51
|
-
model, id = params[:related].split(
|
47
|
+
model, id = params[:related].split('_')
|
52
48
|
instance_variable_set("@#{model}", model.classify.constantize.find(id))
|
53
49
|
end
|
54
50
|
|
@@ -58,22 +54,17 @@ class AccountsController < EntitiesController
|
|
58
54
|
# GET /accounts/1/edit AJAX
|
59
55
|
#----------------------------------------------------------------------------
|
60
56
|
def edit
|
61
|
-
@account = Account.my.find(params[:id])
|
62
57
|
@users = User.except(@current_user)
|
63
58
|
if params[:previous].to_s =~ /(\d+)\z/
|
64
|
-
@previous = Account.my.
|
59
|
+
@previous = Account.my.find_by_id($1) || $1.to_i
|
65
60
|
end
|
66
|
-
respond_with(@account)
|
67
61
|
|
68
|
-
|
69
|
-
@previous ||= $1.to_i
|
70
|
-
respond_to_not_found(:js) unless @account
|
62
|
+
respond_with(@account)
|
71
63
|
end
|
72
64
|
|
73
65
|
# POST /accounts
|
74
66
|
#----------------------------------------------------------------------------
|
75
67
|
def create
|
76
|
-
@account = Account.new(params[:account])
|
77
68
|
@users = User.except(@current_user)
|
78
69
|
|
79
70
|
respond_with(@account) do |format|
|
@@ -89,8 +80,6 @@ class AccountsController < EntitiesController
|
|
89
80
|
# PUT /accounts/1
|
90
81
|
#----------------------------------------------------------------------------
|
91
82
|
def update
|
92
|
-
@account = Account.my.find(params[:id])
|
93
|
-
|
94
83
|
respond_with(@account) do |format|
|
95
84
|
if @account.update_with_permissions(params[:account], params[:users])
|
96
85
|
get_data_for_sidebar
|
@@ -98,33 +87,26 @@ class AccountsController < EntitiesController
|
|
98
87
|
@users = User.except(@current_user) # Need it to redraw [Edit Account] form.
|
99
88
|
end
|
100
89
|
end
|
101
|
-
|
102
|
-
rescue ActiveRecord::RecordNotFound
|
103
|
-
respond_to_not_found(:js, :json, :xml)
|
104
90
|
end
|
105
91
|
|
106
92
|
# DELETE /accounts/1
|
107
93
|
#----------------------------------------------------------------------------
|
108
94
|
def destroy
|
109
|
-
@account
|
110
|
-
@account.destroy if @account
|
95
|
+
@account.destroy
|
111
96
|
|
112
97
|
respond_with(@account) do |format|
|
113
98
|
format.html { respond_to_destroy(:html) }
|
114
99
|
format.js { respond_to_destroy(:ajax) }
|
115
100
|
end
|
116
|
-
|
117
|
-
rescue ActiveRecord::RecordNotFound
|
118
|
-
respond_to_not_found(:html, :js, :json, :xml)
|
119
101
|
end
|
120
102
|
|
121
103
|
# PUT /accounts/1/attach
|
122
104
|
#----------------------------------------------------------------------------
|
123
|
-
# Handled by
|
105
|
+
# Handled by EntitiesController :attach
|
124
106
|
|
125
107
|
# PUT /accounts/1/discard
|
126
108
|
#----------------------------------------------------------------------------
|
127
|
-
# Handled by
|
109
|
+
# Handled by EntitiesController :discard
|
128
110
|
|
129
111
|
# POST /accounts/auto_complete/query AJAX
|
130
112
|
#----------------------------------------------------------------------------
|
@@ -153,23 +135,22 @@ class AccountsController < EntitiesController
|
|
153
135
|
# POST /accounts/filter AJAX
|
154
136
|
#----------------------------------------------------------------------------
|
155
137
|
def filter
|
156
|
-
session[:
|
138
|
+
session[:accounts_filter] = params[:category]
|
157
139
|
@accounts = get_accounts(:page => 1)
|
158
140
|
render :index
|
159
141
|
end
|
160
142
|
|
161
|
-
|
143
|
+
private
|
144
|
+
|
162
145
|
#----------------------------------------------------------------------------
|
163
|
-
|
164
|
-
get_list_of_records(Account, options.merge!(:filter => :filter_by_account_category))
|
165
|
-
end
|
146
|
+
alias :get_accounts :get_list_of_records
|
166
147
|
|
167
148
|
#----------------------------------------------------------------------------
|
168
149
|
def respond_to_destroy(method)
|
169
150
|
if method == :ajax
|
170
151
|
@accounts = get_accounts
|
171
152
|
get_data_for_sidebar
|
172
|
-
if @accounts.
|
153
|
+
if @accounts.empty?
|
173
154
|
@accounts = get_accounts(:page => current_page - 1) if current_page > 1
|
174
155
|
render :index and return
|
175
156
|
end
|
@@ -28,8 +28,6 @@ class CampaignsController < EntitiesController
|
|
28
28
|
# GET /campaigns/1
|
29
29
|
#----------------------------------------------------------------------------
|
30
30
|
def show
|
31
|
-
@campaign = Campaign.my.find(params[:id])
|
32
|
-
|
33
31
|
respond_with(@campaign) do |format|
|
34
32
|
format.html do
|
35
33
|
@stage = Setting.unroll(:opportunity_stage)
|
@@ -37,9 +35,6 @@ class CampaignsController < EntitiesController
|
|
37
35
|
@timeline = timeline(@campaign)
|
38
36
|
end
|
39
37
|
end
|
40
|
-
|
41
|
-
rescue ActiveRecord::RecordNotFound
|
42
|
-
respond_to_not_found(:html, :json, :xml)
|
43
38
|
end
|
44
39
|
|
45
40
|
# GET /campaigns/new
|
@@ -47,11 +42,16 @@ class CampaignsController < EntitiesController
|
|
47
42
|
# GET /campaigns/new.xml AJAX
|
48
43
|
#----------------------------------------------------------------------------
|
49
44
|
def new
|
50
|
-
@campaign =
|
45
|
+
@campaign.attributes = {:user => @current_user, :access => Setting.default_access}
|
51
46
|
@users = User.except(@current_user)
|
47
|
+
|
52
48
|
if params[:related]
|
53
|
-
model, id = params[:related].split(
|
54
|
-
|
49
|
+
model, id = params[:related].split('_')
|
50
|
+
if related = model.classify.constantize.my.find_by_id(id)
|
51
|
+
instance_variable_set("@#{model}", related)
|
52
|
+
else
|
53
|
+
respond_to_related_not_found(model) and return
|
54
|
+
end
|
55
55
|
end
|
56
56
|
|
57
57
|
respond_with(@campaign)
|
@@ -60,22 +60,17 @@ class CampaignsController < EntitiesController
|
|
60
60
|
# GET /campaigns/1/edit AJAX
|
61
61
|
#----------------------------------------------------------------------------
|
62
62
|
def edit
|
63
|
-
@campaign = Campaign.my.find(params[:id])
|
64
63
|
@users = User.except(@current_user)
|
65
64
|
if params[:previous].to_s =~ /(\d+)\z/
|
66
|
-
@previous = Campaign.my.
|
65
|
+
@previous = Campaign.my.find_by_id($1) || $1.to_i
|
67
66
|
end
|
68
|
-
respond_with(@campaign)
|
69
67
|
|
70
|
-
|
71
|
-
@previous ||= $1.to_i
|
72
|
-
respond_to_not_found(:js) unless @campaign
|
68
|
+
respond_with(@campaign)
|
73
69
|
end
|
74
70
|
|
75
71
|
# POST /campaigns
|
76
72
|
#----------------------------------------------------------------------------
|
77
73
|
def create
|
78
|
-
@campaign = Campaign.new(params[:campaign])
|
79
74
|
@users = User.except(@current_user)
|
80
75
|
|
81
76
|
respond_with(@campaign) do |format|
|
@@ -89,8 +84,6 @@ class CampaignsController < EntitiesController
|
|
89
84
|
# PUT /campaigns/1
|
90
85
|
#----------------------------------------------------------------------------
|
91
86
|
def update
|
92
|
-
@campaign = Campaign.my.find(params[:id])
|
93
|
-
|
94
87
|
respond_with(@campaign) do |format|
|
95
88
|
if @campaign.update_with_permissions(params[:campaign], params[:users])
|
96
89
|
get_data_for_sidebar if called_from_index_page?
|
@@ -98,33 +91,26 @@ class CampaignsController < EntitiesController
|
|
98
91
|
@users = User.except(@current_user) # Need it to redraw [Edit Campaign] form.
|
99
92
|
end
|
100
93
|
end
|
101
|
-
|
102
|
-
rescue ActiveRecord::RecordNotFound
|
103
|
-
respond_to_not_found(:js, :json, :xml)
|
104
94
|
end
|
105
95
|
|
106
96
|
# DELETE /campaigns/1
|
107
97
|
#----------------------------------------------------------------------------
|
108
98
|
def destroy
|
109
|
-
@campaign
|
110
|
-
@campaign.destroy if @campaign
|
99
|
+
@campaign.destroy
|
111
100
|
|
112
101
|
respond_with(@campaign) do |format|
|
113
102
|
format.html { respond_to_destroy(:html) }
|
114
103
|
format.js { respond_to_destroy(:ajax) }
|
115
104
|
end
|
116
|
-
|
117
|
-
rescue ActiveRecord::RecordNotFound
|
118
|
-
respond_to_not_found(:html, :js, :json, :xml)
|
119
105
|
end
|
120
106
|
|
121
107
|
# PUT /campaigns/1/attach
|
122
108
|
#----------------------------------------------------------------------------
|
123
|
-
# Handled by
|
109
|
+
# Handled by EntitiesController :attach
|
124
110
|
|
125
111
|
# PUT /campaigns/1/discard
|
126
112
|
#----------------------------------------------------------------------------
|
127
|
-
# Handled by
|
113
|
+
# Handled by EntitiesController :discard
|
128
114
|
|
129
115
|
# POST /campaigns/auto_complete/query AJAX
|
130
116
|
#----------------------------------------------------------------------------
|
@@ -153,16 +139,15 @@ class CampaignsController < EntitiesController
|
|
153
139
|
# POST /campaigns/filter AJAX
|
154
140
|
#----------------------------------------------------------------------------
|
155
141
|
def filter
|
156
|
-
session[:
|
142
|
+
session[:campaigns_filter] = params[:status]
|
157
143
|
@campaigns = get_campaigns(:page => 1)
|
158
144
|
render :index
|
159
145
|
end
|
160
146
|
|
161
|
-
|
147
|
+
private
|
148
|
+
|
162
149
|
#----------------------------------------------------------------------------
|
163
|
-
|
164
|
-
get_list_of_records(Campaign, options.merge!(:filter => :filter_by_campaign_status))
|
165
|
-
end
|
150
|
+
alias :get_campaigns :get_list_of_records
|
166
151
|
|
167
152
|
#----------------------------------------------------------------------------
|
168
153
|
def respond_to_destroy(method)
|
@@ -29,8 +29,6 @@ class ContactsController < EntitiesController
|
|
29
29
|
# GET /contacts/1
|
30
30
|
#----------------------------------------------------------------------------
|
31
31
|
def show
|
32
|
-
@contact = Contact.my.find(params[:id])
|
33
|
-
|
34
32
|
respond_with(@contact) do |format|
|
35
33
|
format.html do
|
36
34
|
@stage = Setting.unroll(:opportunity_stage)
|
@@ -38,46 +36,40 @@ class ContactsController < EntitiesController
|
|
38
36
|
@timeline = timeline(@contact)
|
39
37
|
end
|
40
38
|
end
|
41
|
-
|
42
|
-
rescue ActiveRecord::RecordNotFound
|
43
|
-
respond_to_not_found(:html, :json, :xml)
|
44
39
|
end
|
45
40
|
|
46
41
|
# GET /contacts/new
|
47
42
|
#----------------------------------------------------------------------------
|
48
43
|
def new
|
49
|
-
@contact
|
50
|
-
@account
|
44
|
+
@contact.attributes = {:user => current_user, :access => Setting.default_access}
|
45
|
+
@account = Account.new(:user => current_user)
|
46
|
+
|
51
47
|
if params[:related]
|
52
|
-
model, id = params[:related].split(
|
53
|
-
|
48
|
+
model, id = params[:related].split('_')
|
49
|
+
if related = model.classify.constantize.my.find_by_id(id)
|
50
|
+
instance_variable_set("@#{model}", related)
|
51
|
+
else
|
52
|
+
respond_to_related_not_found(model) and return
|
53
|
+
end
|
54
54
|
end
|
55
|
-
respond_with(@contact)
|
56
55
|
|
57
|
-
|
58
|
-
respond_to_related_not_found(model, :js) if model
|
56
|
+
respond_with(@contact)
|
59
57
|
end
|
60
58
|
|
61
59
|
# GET /contacts/1/edit AJAX
|
62
60
|
#----------------------------------------------------------------------------
|
63
61
|
def edit
|
64
|
-
@
|
65
|
-
@account = @contact.account || Account.new(:user => current_user)
|
62
|
+
@account = @contact.account || Account.new(:user => current_user)
|
66
63
|
if params[:previous].to_s =~ /(\d+)\z/
|
67
|
-
@previous = Contact.my.
|
64
|
+
@previous = Contact.my.find_by_id($1) || $1.to_i
|
68
65
|
end
|
69
|
-
respond_with(@contact)
|
70
66
|
|
71
|
-
|
72
|
-
@previous ||= $1.to_i
|
73
|
-
respond_to_not_found(:js) unless @contact
|
67
|
+
respond_with(@contact)
|
74
68
|
end
|
75
69
|
|
76
70
|
# POST /contacts
|
77
71
|
#----------------------------------------------------------------------------
|
78
72
|
def create
|
79
|
-
@contact = Contact.new(params[:contact])
|
80
|
-
|
81
73
|
respond_with(@contact) do |format|
|
82
74
|
if @contact.save_with_account_and_permissions(params)
|
83
75
|
@contacts = get_contacts if called_from_index_page?
|
@@ -91,7 +83,7 @@ class ContactsController < EntitiesController
|
|
91
83
|
@account = Account.new(:user => current_user)
|
92
84
|
end
|
93
85
|
end
|
94
|
-
@opportunity = Opportunity.find(params[:opportunity]) unless params[:opportunity].blank?
|
86
|
+
@opportunity = Opportunity.my.find(params[:opportunity]) unless params[:opportunity].blank?
|
95
87
|
end
|
96
88
|
end
|
97
89
|
end
|
@@ -99,8 +91,6 @@ class ContactsController < EntitiesController
|
|
99
91
|
# PUT /contacts/1
|
100
92
|
#----------------------------------------------------------------------------
|
101
93
|
def update
|
102
|
-
@contact = Contact.my.find(params[:id])
|
103
|
-
|
104
94
|
respond_with(@contact) do |format|
|
105
95
|
unless @contact.update_with_account_and_permissions(params)
|
106
96
|
@users = User.except(current_user)
|
@@ -111,33 +101,26 @@ class ContactsController < EntitiesController
|
|
111
101
|
end
|
112
102
|
end
|
113
103
|
end
|
114
|
-
|
115
|
-
rescue ActiveRecord::RecordNotFound
|
116
|
-
respond_to_not_found(:js, :json, :xml)
|
117
104
|
end
|
118
105
|
|
119
106
|
# DELETE /contacts/1
|
120
107
|
#----------------------------------------------------------------------------
|
121
108
|
def destroy
|
122
|
-
@contact
|
123
|
-
@contact.destroy if @contact
|
109
|
+
@contact.destroy
|
124
110
|
|
125
111
|
respond_with(@contact) do |format|
|
126
112
|
format.html { respond_to_destroy(:html) }
|
127
113
|
format.js { respond_to_destroy(:ajax) }
|
128
114
|
end
|
129
|
-
|
130
|
-
rescue ActiveRecord::RecordNotFound
|
131
|
-
respond_to_not_found(:html, :js, :json, :xml)
|
132
115
|
end
|
133
116
|
|
134
117
|
# PUT /contacts/1/attach
|
135
118
|
#----------------------------------------------------------------------------
|
136
|
-
# Handled by
|
119
|
+
# Handled by EntitiesController :attach
|
137
120
|
|
138
121
|
# POST /contacts/1/discard
|
139
122
|
#----------------------------------------------------------------------------
|
140
|
-
# Handled by
|
123
|
+
# Handled by EntitiesController :discard
|
141
124
|
|
142
125
|
# POST /contacts/auto_complete/query AJAX
|
143
126
|
#----------------------------------------------------------------------------
|
@@ -178,12 +161,11 @@ class ContactsController < EntitiesController
|
|
178
161
|
|
179
162
|
private
|
180
163
|
#----------------------------------------------------------------------------
|
181
|
-
|
182
|
-
get_list_of_records(Contact, options)
|
183
|
-
end
|
164
|
+
alias :get_contacts :get_list_of_records
|
184
165
|
|
166
|
+
#----------------------------------------------------------------------------
|
185
167
|
def get_accounts
|
186
|
-
@accounts = Account.my.order(
|
168
|
+
@accounts = Account.my.order('name')
|
187
169
|
end
|
188
170
|
|
189
171
|
#----------------------------------------------------------------------------
|