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
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
|
|