fat_free_crm 0.11.1 → 0.11.2
Sign up to get free protection for your applications and to get access to all the features.
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
data/Procfile
CHANGED
@@ -1 +1 @@
|
|
1
|
-
web:
|
1
|
+
web: ./bin/unicorn -p $PORT -c config/unicorn.rb
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Fat Free CRM
|
2
2
|
|
3
|
-
[![TravisCI][travis-img]][travis-ci]
|
3
|
+
[![TravisCI][travis-img]][travis-ci]
|
4
4
|
|
5
5
|
[travis-img]: https://secure.travis-ci.org/fatfreecrm/fat_free_crm.png?branch=master
|
6
6
|
[travis-ci]: http://travis-ci.org/fatfreecrm/fat_free_crm
|
Binary file
|
@@ -16,6 +16,7 @@
|
|
16
16
|
//------------------------------------------------------------------------------
|
17
17
|
|
18
18
|
//= require jquery
|
19
|
+
//= require jquery-ui
|
19
20
|
//= require jquery-noconflict
|
20
21
|
//= require prototype
|
21
22
|
//= require effects
|
@@ -27,6 +28,8 @@
|
|
27
28
|
//= require crm_classes
|
28
29
|
//= require crm_loginout
|
29
30
|
//= require crm_fields
|
31
|
+
//= require textarea_autocomplete
|
32
|
+
//= require crm_textarea_autocomplete
|
30
33
|
//= require calendar_date_select/calendar_date_select
|
31
34
|
//= require event.simulate
|
32
35
|
//= require ajax-chosen-prototype
|
@@ -0,0 +1,44 @@
|
|
1
|
+
// Fat Free CRM
|
2
|
+
// Copyright (C) 2008-2011 by Michael Dvorkin
|
3
|
+
//
|
4
|
+
// This program is free software: you can redistribute it and/or modify
|
5
|
+
// it under the terms of the GNU Affero General Public License as published by
|
6
|
+
// the Free Software Foundation, either version 3 of the License, or
|
7
|
+
// (at your option) any later version.
|
8
|
+
//
|
9
|
+
// This program is distributed in the hope that it will be useful,
|
10
|
+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
// GNU Affero General Public License for more details.
|
13
|
+
//
|
14
|
+
// You should have received a copy of the GNU Affero General Public License
|
15
|
+
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
16
|
+
//------------------------------------------------------------------------------
|
17
|
+
|
18
|
+
crm.textarea_user_autocomplete = function(el_id) {
|
19
|
+
if (! jQuery('#areacomplete_' + el_id)[0]) {
|
20
|
+
jQuery('#' + el_id).areacomplete({
|
21
|
+
wordCount: 1,
|
22
|
+
mode: "outter",
|
23
|
+
on: {
|
24
|
+
query: function(text,cb) {
|
25
|
+
// Only autocomplete if search term starts with '@'
|
26
|
+
if (text.indexOf("@") != 0) { return []; }
|
27
|
+
|
28
|
+
var words = [];
|
29
|
+
for( var i=0; i < _ffcrm_users.length; i++ ) {
|
30
|
+
var name_query = text.replace("@",'').toLowerCase();
|
31
|
+
if (_ffcrm_users[i].toLowerCase().indexOf(name_query) != -1 ) {
|
32
|
+
words.push(_ffcrm_users[i]);
|
33
|
+
}
|
34
|
+
}
|
35
|
+
cb(words, text.replace("@",''));
|
36
|
+
},
|
37
|
+
selected: function(text, data) {
|
38
|
+
var username_regEx = new RegExp("\\((@[^)]+)\\)");
|
39
|
+
return text.match(username_regEx)[1];
|
40
|
+
}
|
41
|
+
}
|
42
|
+
});
|
43
|
+
}
|
44
|
+
}
|
@@ -18,6 +18,7 @@
|
|
18
18
|
*/
|
19
19
|
|
20
20
|
/*
|
21
|
+
*= require jquery-ui.custom
|
21
22
|
*= require modalbox
|
22
23
|
*= require facebooklist
|
23
24
|
*= require rails
|
@@ -28,6 +29,7 @@
|
|
28
29
|
*= require chosen
|
29
30
|
*= require ffcrm_chosen
|
30
31
|
*= require fields
|
32
|
+
*= require textarea_autocomplete
|
31
33
|
*= require_self
|
32
34
|
*/
|
33
35
|
|
@@ -335,7 +335,12 @@ $sidebar_width: 210px;
|
|
335
335
|
padding: 0px;
|
336
336
|
margin: -10px 0px 0px 36px;
|
337
337
|
p {
|
338
|
-
margin: 10px 0px 0px 0px; } }
|
338
|
+
margin: 10px 0px 0px 0px; } }
|
339
|
+
.comment_subscriptions {
|
340
|
+
margin-top: 7px;
|
341
|
+
margin-left: 4px;
|
342
|
+
a {
|
343
|
+
font-size: 11px; } } }
|
339
344
|
|
340
345
|
// Avoid collision with .email CSS class which is used to display Task category strip.
|
341
346
|
.mail {
|
@@ -435,16 +440,7 @@ $sidebar_width: 210px;
|
|
435
440
|
dt {
|
436
441
|
color: #3f3f3f;
|
437
442
|
font-size: 11px;
|
438
|
-
padding: 2px 0px 0px 0px; }
|
439
|
-
dt a:link, dt a:visited {
|
440
|
-
color: #3f3f3f;
|
441
|
-
font-weight: bold;
|
442
|
-
text-decoration: none; }
|
443
|
-
dt a:hover {
|
444
|
-
background: dimgray;
|
445
|
-
color: white;
|
446
|
-
font-weight: bold;
|
447
|
-
text-decoration: none; } } }
|
443
|
+
padding: 2px 0px 0px 0px; } } }
|
448
444
|
|
449
445
|
// Sidebar, filters, and selectors.
|
450
446
|
//------------------------------------------------------------------------------
|
@@ -0,0 +1,42 @@
|
|
1
|
+
.areacomplete-dropdown {
|
2
|
+
ul.auto-list {
|
3
|
+
display: none;
|
4
|
+
position: absolute;
|
5
|
+
top: 0px;
|
6
|
+
left: 0px;
|
7
|
+
background: white;
|
8
|
+
padding: 0;
|
9
|
+
margin: 0 4px 4px 0;
|
10
|
+
list-style:none;
|
11
|
+
overflow-x: hidden;
|
12
|
+
overflow-y: auto;
|
13
|
+
max-height: 230px;
|
14
|
+
border: 1px solid #AAA;
|
15
|
+
-webkit-border-radius: 0 0 4px 4px;
|
16
|
+
-moz-border-radius: 0 0 4px 4px;
|
17
|
+
border-radius: 0 0 4px 4px;
|
18
|
+
-moz-background-clip: padding;
|
19
|
+
-webkit-background-clip: padding-box;
|
20
|
+
background-clip: padding-box;
|
21
|
+
font-family: "Lucida Grande", Geneva, Arial, Helvetica, sans-serif;
|
22
|
+
}
|
23
|
+
|
24
|
+
ul.auto-list > li:hover, ul.auto-list > li[data-selected=true] {
|
25
|
+
background: #3875D7;
|
26
|
+
color: white;
|
27
|
+
em{
|
28
|
+
background: inherit;
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
ul.auto-list > li {
|
33
|
+
line-height: 15px;
|
34
|
+
padding: 4px 7px 4px;
|
35
|
+
border-bottom: none;
|
36
|
+
}
|
37
|
+
|
38
|
+
em{
|
39
|
+
background: #FEFFDE;
|
40
|
+
font-style: normal;
|
41
|
+
}
|
42
|
+
}
|
@@ -15,10 +15,10 @@
|
|
15
15
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
16
16
|
#------------------------------------------------------------------------------
|
17
17
|
|
18
|
-
class Admin::ApplicationController <
|
19
|
-
layout "admin/application"
|
18
|
+
class Admin::ApplicationController < ApplicationController
|
20
19
|
before_filter :require_admin_user
|
21
20
|
|
21
|
+
layout "admin/application"
|
22
22
|
helper "admin/field_groups"
|
23
23
|
|
24
24
|
# Autocomplete handler for all admin controllers.
|
@@ -26,10 +26,11 @@ class Admin::ApplicationController < EntitiesController
|
|
26
26
|
def auto_complete
|
27
27
|
@query = params[:auto_complete_query]
|
28
28
|
@auto_complete = klass.text_search(@query).limit(10)
|
29
|
-
render
|
29
|
+
render :partial => 'auto_complete'
|
30
30
|
end
|
31
31
|
|
32
|
-
|
32
|
+
private
|
33
|
+
|
33
34
|
#----------------------------------------------------------------------------
|
34
35
|
def require_admin_user
|
35
36
|
require_user
|
@@ -39,4 +40,3 @@ class Admin::ApplicationController < EntitiesController
|
|
39
40
|
end
|
40
41
|
end
|
41
42
|
end
|
42
|
-
|
@@ -16,7 +16,6 @@
|
|
16
16
|
#------------------------------------------------------------------------------
|
17
17
|
|
18
18
|
class Admin::FieldGroupsController < Admin::ApplicationController
|
19
|
-
before_filter :require_user
|
20
19
|
|
21
20
|
# GET /admin/field_groups/new
|
22
21
|
# GET /admin/field_groups/new.xml AJAX
|
@@ -24,13 +23,7 @@ class Admin::FieldGroupsController < Admin::ApplicationController
|
|
24
23
|
def new
|
25
24
|
@field_group = FieldGroup.new(:klass_name => params[:klass_name])
|
26
25
|
|
27
|
-
|
28
|
-
format.js # new.js.rjs
|
29
|
-
format.xml { render :xml => @field_group }
|
30
|
-
end
|
31
|
-
|
32
|
-
rescue ActiveRecord::RecordNotFound
|
33
|
-
respond_to_not_found(:html, :xml)
|
26
|
+
respond_with(@field_group)
|
34
27
|
end
|
35
28
|
|
36
29
|
# GET /admin/field_groups/1/edit AJAX
|
@@ -39,29 +32,19 @@ class Admin::FieldGroupsController < Admin::ApplicationController
|
|
39
32
|
@field_group = FieldGroup.find(params[:id])
|
40
33
|
|
41
34
|
if params[:previous].to_s =~ /(\d+)\z/
|
42
|
-
@previous = FieldGroup.
|
35
|
+
@previous = FieldGroup.find_by_id($1) || $1.to_i
|
43
36
|
end
|
44
37
|
|
45
|
-
|
46
|
-
@previous ||= $1.to_i
|
47
|
-
respond_to_not_found(:js)
|
38
|
+
respond_with(@field_group)
|
48
39
|
end
|
49
40
|
|
50
41
|
# POST /admin/field_groups
|
51
42
|
# POST /admin/field_groups.xml AJAX
|
52
43
|
#----------------------------------------------------------------------------
|
53
44
|
def create
|
54
|
-
@field_group = FieldGroup.
|
55
|
-
|
56
|
-
|
57
|
-
if @field_group.save
|
58
|
-
format.js # create.js.rjs
|
59
|
-
format.xml { render :xml => @field_group, :status => :created, :location => @field_group }
|
60
|
-
else
|
61
|
-
format.js # create.js.rjs
|
62
|
-
format.xml { render :xml => @field_group.errors, :status => :unprocessable_entity }
|
63
|
-
end
|
64
|
-
end
|
45
|
+
@field_group = FieldGroup.create(params[:field_group])
|
46
|
+
|
47
|
+
respond_with(@field_group)
|
65
48
|
end
|
66
49
|
|
67
50
|
# PUT /admin/field_groups/1
|
@@ -69,19 +52,9 @@ class Admin::FieldGroupsController < Admin::ApplicationController
|
|
69
52
|
#----------------------------------------------------------------------------
|
70
53
|
def update
|
71
54
|
@field_group = FieldGroup.find(params[:id])
|
55
|
+
@field_group.update_attributes(params[:field_group])
|
72
56
|
|
73
|
-
|
74
|
-
if @field_group.update_attributes(params[:field_group])
|
75
|
-
format.js
|
76
|
-
format.xml { head :ok }
|
77
|
-
else
|
78
|
-
format.js
|
79
|
-
format.xml { render :xml => @field_group.errors, :status => :unprocessable_entity }
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
rescue ActiveRecord::RecordNotFound
|
84
|
-
respond_to_not_found(:js, :xml)
|
57
|
+
respond_with(@field_group)
|
85
58
|
end
|
86
59
|
|
87
60
|
# DELETE /admin/field_groups/1
|
@@ -89,18 +62,9 @@ class Admin::FieldGroupsController < Admin::ApplicationController
|
|
89
62
|
#----------------------------------------------------------------------------
|
90
63
|
def destroy
|
91
64
|
@field_group = FieldGroup.find(params[:id])
|
65
|
+
@field_group.destroy
|
92
66
|
|
93
|
-
|
94
|
-
if @field_group.destroy
|
95
|
-
# Redirect to fields index
|
96
|
-
format.js { render(:destroy) { |page| page.redirect_to admin_fields_url } }
|
97
|
-
format.xml { head :ok }
|
98
|
-
else
|
99
|
-
flash[:warning] = t(:msg_cant_delete_field_group, @field_group.name)
|
100
|
-
format.js # destroy.js.rjs
|
101
|
-
format.xml { render :xml => @field_group.errors, :status => :unprocessable_entity }
|
102
|
-
end
|
103
|
-
end
|
67
|
+
respond_with(@field_group)
|
104
68
|
end
|
105
69
|
|
106
70
|
# POST /admin/field_groups/sort
|
@@ -115,14 +79,10 @@ class Admin::FieldGroupsController < Admin::ApplicationController
|
|
115
79
|
|
116
80
|
render :nothing => true
|
117
81
|
end
|
118
|
-
|
82
|
+
|
119
83
|
# GET /admin/field_groups/1/confirm AJAX
|
120
84
|
#----------------------------------------------------------------------------
|
121
85
|
def confirm
|
122
86
|
@field_group = FieldGroup.find(params[:id])
|
123
|
-
|
124
|
-
rescue ActiveRecord::RecordNotFound
|
125
|
-
respond_to_not_found(:js, :xml)
|
126
87
|
end
|
127
|
-
|
128
88
|
end
|
@@ -16,10 +16,9 @@
|
|
16
16
|
#------------------------------------------------------------------------------
|
17
17
|
|
18
18
|
class Admin::FieldsController < Admin::ApplicationController
|
19
|
-
before_filter :require_user
|
20
|
-
before_filter :set_current_tab, :only => [ :index, :show ]
|
21
19
|
before_filter "set_current_tab('admin/fields')", :only => [ :index ]
|
22
|
-
|
20
|
+
|
21
|
+
load_resource
|
23
22
|
|
24
23
|
# GET /fields
|
25
24
|
# GET /fields.xml HTML
|
@@ -31,15 +30,7 @@ class Admin::FieldsController < Admin::ApplicationController
|
|
31
30
|
# GET /fields/1.xml HTML
|
32
31
|
#----------------------------------------------------------------------------
|
33
32
|
def show
|
34
|
-
@
|
35
|
-
|
36
|
-
respond_to do |format|
|
37
|
-
format.html # show.html.erb
|
38
|
-
format.xml { render :xml => @custom_field }
|
39
|
-
end
|
40
|
-
|
41
|
-
rescue ActiveRecord::RecordNotFound
|
42
|
-
respond_to_not_found(:html, :xml)
|
33
|
+
respond_with(@field)
|
43
34
|
end
|
44
35
|
|
45
36
|
# GET /fields/new
|
@@ -48,13 +39,7 @@ class Admin::FieldsController < Admin::ApplicationController
|
|
48
39
|
def new
|
49
40
|
@field = CustomField.new(:field_group_id => params[:field_group_id])
|
50
41
|
|
51
|
-
|
52
|
-
format.js # new.js.rjs
|
53
|
-
format.xml { render :xml => @field }
|
54
|
-
end
|
55
|
-
|
56
|
-
rescue ActiveRecord::RecordNotFound # Kicks in if related asset was not found.
|
57
|
-
respond_to_not_found(:html, :xml)
|
42
|
+
respond_with(@custom_field)
|
58
43
|
end
|
59
44
|
|
60
45
|
# GET /fields/1/edit AJAX
|
@@ -63,29 +48,19 @@ class Admin::FieldsController < Admin::ApplicationController
|
|
63
48
|
@field = Field.find(params[:id])
|
64
49
|
|
65
50
|
if params[:previous].to_s =~ /(\d+)\z/
|
66
|
-
@previous = Field.
|
51
|
+
@previous = Field.find_by_id($1) || $1.to_i
|
67
52
|
end
|
68
53
|
|
69
|
-
|
70
|
-
@previous ||= $1.to_i
|
71
|
-
respond_to_not_found(:js)
|
54
|
+
respond_with(@field)
|
72
55
|
end
|
73
56
|
|
74
57
|
# POST /fields
|
75
58
|
# POST /fields.xml AJAX
|
76
59
|
#----------------------------------------------------------------------------
|
77
60
|
def create
|
78
|
-
@field = CustomField.
|
79
|
-
|
80
|
-
|
81
|
-
if @field.save
|
82
|
-
format.js # create.js.rjs
|
83
|
-
format.xml { render :xml => @field, :status => :created, :location => @field }
|
84
|
-
else
|
85
|
-
format.js # create.js.rjs
|
86
|
-
format.xml { render :xml => @field.errors, :status => :unprocessable_entity }
|
87
|
-
end
|
88
|
-
end
|
61
|
+
@field = CustomField.create(params[:field])
|
62
|
+
|
63
|
+
respond_with(@field)
|
89
64
|
end
|
90
65
|
|
91
66
|
# PUT /fields/1
|
@@ -93,19 +68,9 @@ class Admin::FieldsController < Admin::ApplicationController
|
|
93
68
|
#----------------------------------------------------------------------------
|
94
69
|
def update
|
95
70
|
@field = Field.find(params[:id])
|
71
|
+
@field.update_attributes(params[:field])
|
96
72
|
|
97
|
-
|
98
|
-
if @field.update_attributes(params[:field])
|
99
|
-
format.js
|
100
|
-
format.xml { head :ok }
|
101
|
-
else
|
102
|
-
format.js
|
103
|
-
format.xml { render :xml => @field.errors, :status => :unprocessable_entity }
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
rescue ActiveRecord::RecordNotFound
|
108
|
-
respond_to_not_found(:js, :xml)
|
73
|
+
respond_with(@field)
|
109
74
|
end
|
110
75
|
|
111
76
|
# DELETE /fields/1
|
@@ -113,19 +78,9 @@ class Admin::FieldsController < Admin::ApplicationController
|
|
113
78
|
#----------------------------------------------------------------------------
|
114
79
|
def destroy
|
115
80
|
@field = CustomField.find(params[:id])
|
81
|
+
@field.destroy
|
116
82
|
|
117
|
-
|
118
|
-
if @field.destroy
|
119
|
-
format.js # destroy.js.rjs
|
120
|
-
format.xml { head :ok }
|
121
|
-
else
|
122
|
-
format.js # destroy.js.rjs
|
123
|
-
format.xml { render :xml => @field.errors, :status => :unprocessable_entity }
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
rescue ActiveRecord::RecordNotFound
|
128
|
-
respond_to_not_found(:html, :js, :xml)
|
83
|
+
respond_with(@field)
|
129
84
|
end
|
130
85
|
|
131
86
|
# POST /fields/sort
|
@@ -145,4 +100,3 @@ class Admin::FieldsController < Admin::ApplicationController
|
|
145
100
|
#----------------------------------------------------------------------------
|
146
101
|
# Handled by before_filter :auto_complete, :only => :auto_complete
|
147
102
|
end
|
148
|
-
|
@@ -24,10 +24,7 @@ class Admin::PluginsController < Admin::ApplicationController
|
|
24
24
|
def index
|
25
25
|
@plugins = FatFreeCRM::Plugin.list
|
26
26
|
|
27
|
-
|
28
|
-
format.html # index.html.haml
|
29
|
-
format.xml { render :xml => nil }
|
30
|
-
end
|
27
|
+
respond_with(@plugins)
|
31
28
|
end
|
32
29
|
end
|
33
30
|
|