fat_free_crm 0.13.2 → 0.13.3
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.
- checksums.yaml +5 -13
- data/.travis.yml +3 -3
- data/Gemfile +5 -2
- data/Gemfile.lock +137 -119
- data/MIT-LICENSE +1 -1
- data/README.md +5 -3
- data/app/assets/javascripts/admin/fields.js.coffee +31 -8
- data/app/assets/javascripts/application.js.erb +6 -10
- data/app/assets/javascripts/crm.js.coffee +426 -0
- data/app/assets/javascripts/crm_chosen.js.coffee +19 -38
- data/app/assets/javascripts/crm_classes.js.coffee +215 -0
- data/app/assets/javascripts/crm_comments.js.coffee +20 -58
- data/app/assets/javascripts/crm_loginout.js.coffee +27 -0
- data/app/assets/javascripts/crm_select2.js.coffee +29 -0
- data/app/assets/javascripts/crm_sortable.js.coffee +32 -0
- data/app/assets/javascripts/crm_tags.js.coffee +22 -0
- data/app/assets/javascripts/crm_textarea_autocomplete.js.coffee +33 -0
- data/app/assets/javascripts/datepicker.js.coffee +2 -2
- data/app/assets/javascripts/format_buttons.js.coffee +23 -24
- data/app/assets/javascripts/lists.js.coffee +45 -76
- data/app/assets/javascripts/pagination.js.coffee +16 -0
- data/app/assets/javascripts/search.js.coffee +6 -22
- data/app/assets/javascripts/timeago.js.coffee +21 -0
- data/app/assets/stylesheets/application.css.erb +0 -1
- data/app/assets/stylesheets/common.scss +36 -29
- data/app/assets/stylesheets/lists.css.scss +17 -3
- data/app/controllers/admin/groups_controller.rb +2 -1
- data/app/controllers/application_controller.rb +5 -5
- data/app/controllers/entities/accounts_controller.rb +1 -1
- data/app/controllers/entities/campaigns_controller.rb +1 -1
- data/app/controllers/entities/contacts_controller.rb +1 -1
- data/app/controllers/entities/leads_controller.rb +1 -1
- data/app/controllers/entities/opportunities_controller.rb +1 -1
- data/app/controllers/home_controller.rb +10 -7
- data/app/controllers/tasks_controller.rb +15 -0
- data/app/controllers/users_controller.rb +6 -4
- data/app/helpers/accounts_helper.rb +8 -5
- data/app/helpers/application_helper.rb +53 -39
- data/app/helpers/campaigns_helper.rb +1 -0
- data/app/helpers/leads_helper.rb +3 -3
- data/app/helpers/opportunities_helper.rb +15 -0
- data/app/helpers/remote_link_pagination_helper.rb +8 -0
- data/app/helpers/tags_helper.rb +2 -2
- data/app/helpers/tasks_helper.rb +22 -15
- data/app/helpers/users_helper.rb +3 -2
- data/app/mailers/user_mailer.rb +9 -3
- data/app/models/entities/account_contact.rb +1 -1
- data/app/models/fields/custom_field.rb +1 -1
- data/app/models/list.rb +1 -0
- data/app/models/observers/entity_observer.rb +10 -1
- data/app/models/observers/lead_observer.rb +2 -0
- data/app/models/observers/opportunity_observer.rb +2 -0
- data/app/models/observers/task_observer.rb +2 -0
- data/app/models/polymorphic/avatar.rb +2 -0
- data/app/models/polymorphic/comment.rb +0 -1
- data/app/models/polymorphic/task.rb +41 -9
- data/app/models/users/ability.rb +1 -0
- data/app/models/users/group.rb +0 -5
- data/app/models/users/user.rb +0 -7
- data/app/views/accounts/_edit.html.haml +1 -0
- data/app/views/accounts/_index_brief.html.haml +2 -2
- data/app/views/accounts/_index_long.html.haml +2 -2
- data/app/views/accounts/_new.html.haml +1 -0
- data/app/views/accounts/_sidebar_index.html.haml +1 -1
- data/app/views/accounts/_sidebar_show.html.haml +1 -1
- data/app/views/accounts/_top_section.html.haml +1 -1
- data/app/views/accounts/create.js.haml +9 -9
- data/app/views/accounts/destroy.js.haml +2 -2
- data/app/views/accounts/edit.js.haml +5 -5
- data/app/views/accounts/index.js.haml +5 -5
- data/app/views/accounts/new.js.haml +1 -1
- data/app/views/accounts/show.html.haml +1 -1
- data/app/views/accounts/show.js.haml +1 -1
- data/app/views/accounts/update.js.haml +7 -5
- data/app/views/admin/field_groups/_field_group.html.haml +4 -5
- data/app/views/admin/field_groups/confirm.js.haml +2 -2
- data/app/views/admin/field_groups/create.js.haml +6 -12
- data/app/views/admin/field_groups/destroy.js.haml +3 -3
- data/app/views/admin/field_groups/edit.js.haml +1 -1
- data/app/views/admin/field_groups/new.js.haml +1 -1
- data/app/views/admin/field_groups/update.js.haml +2 -2
- data/app/views/admin/fields/_field.html.haml +1 -1
- data/app/views/admin/fields/_sort_by.html.haml +3 -3
- data/app/views/admin/fields/create.js.haml +9 -9
- data/app/views/admin/fields/destroy.js.haml +4 -4
- data/app/views/admin/fields/edit.js.haml +2 -2
- data/app/views/admin/fields/index.html.haml +1 -8
- data/app/views/admin/fields/show.html.haml +1 -1
- data/app/views/admin/fields/update.js.haml +8 -8
- data/app/views/admin/groups/_form.html.haml +1 -3
- data/app/views/admin/groups/create.js.haml +8 -8
- data/app/views/admin/groups/destroy.js.haml +3 -3
- data/app/views/admin/groups/edit.js.haml +3 -3
- data/app/views/admin/groups/index.js.haml +2 -2
- data/app/views/admin/groups/new.js.haml +2 -2
- data/app/views/admin/groups/update.js.haml +5 -5
- data/app/views/admin/tags/confirm.js.haml +2 -2
- data/app/views/admin/tags/create.js.haml +8 -8
- data/app/views/admin/tags/destroy.js.haml +3 -3
- data/app/views/admin/tags/edit.js.haml +4 -4
- data/app/views/admin/tags/new.js.haml +1 -1
- data/app/views/admin/tags/update.js.haml +5 -5
- data/app/views/admin/users/_profile.html.haml +3 -4
- data/app/views/admin/users/confirm.js.haml +2 -2
- data/app/views/admin/users/create.js.haml +8 -8
- data/app/views/admin/users/destroy.js.haml +3 -3
- data/app/views/admin/users/edit.js.haml +4 -4
- data/app/views/admin/users/index.js.haml +2 -2
- data/app/views/admin/users/new.js.haml +2 -2
- data/app/views/admin/users/reactivate.js.haml +2 -2
- data/app/views/admin/users/suspend.js.haml +2 -2
- data/app/views/admin/users/update.js.haml +5 -5
- data/app/views/campaigns/_edit.html.haml +1 -0
- data/app/views/campaigns/_index_brief.html.haml +1 -1
- data/app/views/campaigns/_index_long.html.haml +1 -1
- data/app/views/campaigns/_new.html.haml +1 -0
- data/app/views/campaigns/_sidebar_index.html.haml +1 -1
- data/app/views/campaigns/_sidebar_show.html.haml +1 -1
- data/app/views/campaigns/_status.html.haml +1 -1
- data/app/views/campaigns/_top_section.html.haml +1 -1
- data/app/views/campaigns/create.js.haml +10 -10
- data/app/views/campaigns/destroy.js.haml +2 -2
- data/app/views/campaigns/edit.js.haml +6 -6
- data/app/views/campaigns/index.js.haml +5 -5
- data/app/views/campaigns/new.js.haml +1 -1
- data/app/views/campaigns/show.html.haml +1 -1
- data/app/views/campaigns/show.js.haml +1 -1
- data/app/views/campaigns/update.js.haml +8 -6
- data/app/views/comments/_edit.html.haml +1 -1
- data/app/views/comments/_new.html.haml +1 -1
- data/app/views/comments/create.js.haml +9 -9
- data/app/views/comments/destroy.js.haml +2 -2
- data/app/views/comments/edit.js.haml +3 -3
- data/app/views/comments/update.js.haml +5 -5
- data/app/views/contacts/_contacts.html.haml +1 -1
- data/app/views/contacts/_edit.html.haml +1 -0
- data/app/views/contacts/_index_brief.html.haml +2 -2
- data/app/views/contacts/_index_full.html.haml +2 -2
- data/app/views/contacts/_index_long.html.haml +2 -2
- data/app/views/contacts/_new.html.haml +1 -0
- data/app/views/contacts/_section_general.html.haml +4 -3
- data/app/views/contacts/_sidebar_show.html.haml +1 -1
- data/app/views/contacts/_top_section.html.haml +1 -1
- data/app/views/contacts/create.js.haml +10 -10
- data/app/views/contacts/destroy.js.haml +3 -3
- data/app/views/contacts/edit.js.haml +5 -5
- data/app/views/contacts/index.js.haml +5 -5
- data/app/views/contacts/new.js.haml +1 -1
- data/app/views/contacts/show.html.haml +1 -1
- data/app/views/contacts/show.js.haml +1 -1
- data/app/views/contacts/update.js.haml +8 -6
- data/app/views/emails/destroy.js.haml +2 -2
- data/app/views/entities/_basic_search.html.haml +15 -12
- data/app/views/entities/_permissions.html.haml +6 -11
- data/app/views/entities/attach.js.haml +3 -3
- data/app/views/entities/contacts.js.haml +2 -2
- data/app/views/entities/discard.js.haml +1 -1
- data/app/views/entities/leads.js.haml +2 -2
- data/app/views/entities/opportunities.js.haml +2 -2
- data/app/views/entities/subscription_update.js.haml +1 -1
- data/app/views/entities/versions.js.haml +2 -2
- data/app/views/fields/group.js.erb +1 -1
- data/app/views/home/_account.html.haml +2 -2
- data/app/views/home/_assets_menu.html.haml +3 -3
- data/app/views/home/_duration_menu.html.haml +3 -3
- data/app/views/home/_events_menu.html.haml +3 -3
- data/app/views/home/_opportunity.html.haml +2 -2
- data/app/views/home/_options.html.haml +0 -1
- data/app/views/home/_users_menu.html.haml +3 -3
- data/app/views/home/index.js.haml +4 -4
- data/app/views/home/options.js.haml +1 -1
- data/app/views/layouts/_about.html.haml +3 -3
- data/app/views/layouts/_footer.html.haml +1 -1
- data/app/views/layouts/_header.html.haml +1 -1
- data/app/views/layouts/_jumpbox.html.haml +23 -21
- data/app/views/layouts/_sidebar.html.haml +1 -2
- data/app/views/layouts/admin/application.html.haml +1 -1
- data/app/views/layouts/application.html.haml +3 -3
- data/app/views/leads/_convert.html.haml +1 -11
- data/app/views/leads/_convert_permissions.html.haml +4 -9
- data/app/views/leads/_edit.html.haml +1 -0
- data/app/views/leads/_index_brief.html.haml +1 -1
- data/app/views/leads/_index_long.html.haml +1 -1
- data/app/views/leads/_leads.html.haml +1 -1
- data/app/views/leads/_new.html.haml +1 -0
- data/app/views/leads/_sidebar_index.html.haml +1 -1
- data/app/views/leads/_sidebar_show.html.haml +1 -1
- data/app/views/leads/_top_section.html.haml +1 -1
- data/app/views/leads/convert.js.haml +5 -5
- data/app/views/leads/create.js.haml +9 -9
- data/app/views/leads/destroy.js.haml +2 -2
- data/app/views/leads/edit.js.haml +5 -5
- data/app/views/leads/index.js.haml +5 -5
- data/app/views/leads/new.js.haml +1 -1
- data/app/views/leads/promote.js.haml +7 -7
- data/app/views/leads/reject.js.haml +2 -2
- data/app/views/leads/show.html.haml +1 -1
- data/app/views/leads/show.js.haml +1 -1
- data/app/views/leads/update.js.haml +9 -7
- data/app/views/lists/_lists.html.haml +6 -0
- data/app/views/lists/_sidebar.html.haml +18 -17
- data/app/views/lists/create.js.haml +6 -7
- data/app/views/lists/destroy.js.haml +1 -1
- data/app/views/opportunities/_edit.html.haml +2 -1
- data/app/views/opportunities/_index_brief.html.haml +1 -1
- data/app/views/opportunities/_index_long.html.haml +1 -1
- data/app/views/opportunities/_new.html.haml +2 -1
- data/app/views/opportunities/_opportunities.html.haml +1 -1
- data/app/views/opportunities/_sidebar_index.html.haml +1 -1
- data/app/views/opportunities/_sidebar_show.html.haml +1 -1
- data/app/views/opportunities/_top_section.html.haml +2 -2
- data/app/views/opportunities/contacts.js.haml +2 -2
- data/app/views/opportunities/create.js.haml +10 -10
- data/app/views/opportunities/destroy.js.haml +3 -3
- data/app/views/opportunities/edit.js.haml +5 -5
- data/app/views/opportunities/index.html.haml +1 -1
- data/app/views/opportunities/index.js.haml +5 -5
- data/app/views/opportunities/new.js.haml +1 -1
- data/app/views/opportunities/show.html.haml +1 -1
- data/app/views/opportunities/show.js.haml +1 -1
- data/app/views/opportunities/update.js.haml +8 -6
- data/app/views/shared/_address.html.haml +1 -1
- data/app/views/shared/_inline_styles.html.haml +1 -1
- data/app/views/shared/_naming.html.haml +3 -3
- data/app/views/shared/_paginate.haml +2 -1
- data/app/views/shared/_paginate_with_per_page.html.haml +10 -12
- data/app/views/shared/_search.html.haml +7 -3
- data/app/views/shared/_select_popup.html.haml +9 -11
- data/app/views/shared/_tags.html.haml +5 -4
- data/app/views/tasks/_completed.html.haml +3 -1
- data/app/views/tasks/_selector.html.haml +1 -1
- data/app/views/tasks/_top_section.html.haml +1 -1
- data/app/views/tasks/complete.js.haml +7 -7
- data/app/views/tasks/create.js.haml +17 -17
- data/app/views/tasks/destroy.js.haml +2 -2
- data/app/views/tasks/discard.js.haml +1 -1
- data/app/views/tasks/edit.js.haml +4 -4
- data/app/views/tasks/filter.js.haml +2 -2
- data/app/views/tasks/new.js.haml +1 -1
- data/app/views/tasks/uncomplete.js.haml +12 -0
- data/app/views/tasks/update.js.haml +4 -4
- data/app/views/users/_avatar.html.haml +1 -1
- data/app/views/users/_languages.html.haml +3 -3
- data/app/views/users/_profile.html.haml +1 -1
- data/app/views/users/avatar.js.haml +1 -1
- data/app/views/users/change_password.js.haml +5 -5
- data/app/views/users/edit.js.haml +1 -1
- data/app/views/users/password.js.haml +2 -2
- data/app/views/users/show.html.haml +1 -1
- data/app/views/users/update.js.haml +5 -5
- data/app/views/users/upload_avatar.js.haml +3 -3
- data/app/views/versions/_versions.html.haml +1 -1
- data/config/application.rb +3 -0
- data/config/environments/production.rb +1 -1
- data/config/environments/staging.rb +58 -13
- data/config/initializers/locale.rb +2 -0
- data/config/locales/cz_fat_free_crm.yml +1 -0
- data/config/locales/de_fat_free_crm.yml +1 -0
- data/config/locales/en-GB_fat_free_crm.yml +1 -0
- data/config/locales/en-US_fat_free_crm.yml +2 -0
- data/config/locales/es_fat_free_crm.yml +1 -0
- data/config/locales/fr-CA_fat_free_crm.yml +1 -0
- data/config/locales/fr_fat_free_crm.yml +1 -0
- data/config/locales/it_fat_free_crm.yml +1 -0
- data/config/locales/ja_fat_free_crm.yml +1 -0
- data/config/locales/pl_fat_free_crm.yml +1 -0
- data/config/locales/pt-BR_fat_free_crm.yml +1 -0
- data/config/locales/ru_fat_free_crm.yml +444 -61
- data/config/locales/sv-SE_fat_free_crm.yml +1 -0
- data/config/locales/th_fat_free_crm.yml +1 -0
- data/config/locales/zh-CN_fat_free_crm.yml +1 -0
- data/config/routes.rb +20 -19
- data/config/settings.default.yml +11 -10
- data/fat_free_crm.gemspec +5 -4
- data/lib/{plugins/country_select/lib/country_select.rb → country_select.rb} +0 -0
- data/lib/fat_free_crm.rb +3 -1
- data/lib/fat_free_crm/engine.rb +2 -4
- data/lib/fat_free_crm/gem_dependencies.rb +1 -1
- data/lib/fat_free_crm/gem_ext.rb +0 -2
- data/lib/fat_free_crm/permissions.rb +2 -3
- data/lib/fat_free_crm/version.rb +1 -1
- data/lib/{plugins/gravatar_image_tag/lib/gravatar_image_tag.rb → gravatar_image_tag.rb} +0 -0
- data/lib/tasks/ffcrm/settings.rake +4 -16
- data/public/favicon.ico +0 -0
- data/spec/controllers/entities/accounts_controller_spec.rb +5 -5
- data/spec/controllers/entities/campaigns_controller_spec.rb +5 -5
- data/spec/controllers/entities/contacts_controller_spec.rb +42 -5
- data/spec/controllers/entities/leads_controller_spec.rb +7 -7
- data/spec/controllers/entities/opportunities_controller_spec.rb +5 -5
- data/spec/controllers/home_controller_spec.rb +3 -3
- data/spec/controllers/tasks_controller_spec.rb +29 -0
- data/spec/factories/shared_factories.rb +1 -3
- data/spec/features/support/selector_helpers.rb +4 -4
- data/spec/helpers/tasks_helper_spec.rb +10 -5
- data/spec/lib/permissions_spec.rb +10 -22
- data/spec/mailers/user_mailer_spec.rb +5 -4
- data/spec/models/observers/entity_observer_spec.rb +13 -8
- data/spec/models/polymorphic/task_spec.rb +111 -32
- data/spec/routing/accounts_routing_spec.rb +1 -1
- data/spec/routing/campaigns_routing_spec.rb +1 -1
- data/spec/routing/contacts_routing_spec.rb +1 -1
- data/spec/routing/leads_routing_spec.rb +1 -1
- data/spec/routing/opportunities_routing_spec.rb +1 -1
- data/spec/shared/controllers.rb +2 -2
- data/spec/spec_helper.rb +1 -0
- data/spec/views/accounts/create.js.haml_spec.rb +3 -3
- data/spec/views/accounts/index.js.haml_spec.rb +4 -4
- data/spec/views/accounts/update.js.haml_spec.rb +5 -5
- data/spec/views/admin/field_groups/create.js.haml_spec.rb +2 -2
- data/spec/views/admin/field_groups/edit.js.haml_spec.rb +1 -1
- data/spec/views/admin/field_groups/new.js.haml_spec.rb +1 -1
- data/spec/views/admin/field_groups/update.js.haml_spec.rb +1 -1
- data/spec/views/admin/users/create.js.haml_spec.rb +2 -2
- data/spec/views/admin/users/destroy.js.haml_spec.rb +1 -1
- data/spec/views/admin/users/edit.js.haml_spec.rb +1 -1
- data/spec/views/admin/users/index.js.haml_spec.rb +1 -1
- data/spec/views/admin/users/new.js.haml_spec.rb +1 -1
- data/spec/views/admin/users/reactivate.js.haml_spec.rb +1 -1
- data/spec/views/admin/users/suspend.js.haml_spec.rb +1 -1
- data/spec/views/admin/users/update.js.haml_spec.rb +3 -3
- data/spec/views/campaigns/create.js.haml_spec.rb +4 -4
- data/spec/views/campaigns/destroy.js.haml_spec.rb +1 -1
- data/spec/views/campaigns/edit.js.haml_spec.rb +4 -4
- data/spec/views/campaigns/index.js.haml_spec.rb +2 -2
- data/spec/views/campaigns/new.js.haml_spec.rb +1 -1
- data/spec/views/campaigns/update.js.haml_spec.rb +7 -7
- data/spec/views/contacts/create.js.haml_spec.rb +4 -4
- data/spec/views/contacts/edit.js.haml_spec.rb +4 -4
- data/spec/views/contacts/index.js.html_spec.rb +2 -2
- data/spec/views/contacts/new.js.haml_spec.rb +2 -2
- data/spec/views/contacts/update.js.haml_spec.rb +11 -11
- data/spec/views/home/index.js.haml_spec.rb +1 -1
- data/spec/views/home/options.js.haml_spec.rb +3 -3
- data/spec/views/leads/convert.js.haml_spec.rb +3 -3
- data/spec/views/leads/create.js.haml_spec.rb +5 -5
- data/spec/views/leads/destroy.js.haml_spec.rb +1 -1
- data/spec/views/leads/edit.js.haml_spec.rb +4 -4
- data/spec/views/leads/index.js.haml_spec.rb +2 -2
- data/spec/views/leads/new.js.haml_spec.rb +1 -1
- data/spec/views/leads/promote.js.haml_spec.rb +13 -13
- data/spec/views/leads/reject.js.haml_spec.rb +6 -6
- data/spec/views/leads/update.js.haml_spec.rb +11 -11
- data/spec/views/opportunities/create.js.haml_spec.rb +4 -4
- data/spec/views/opportunities/destroy.js.haml_spec.rb +1 -1
- data/spec/views/opportunities/edit.js.haml_spec.rb +4 -4
- data/spec/views/opportunities/index.js.haml_spec.rb +2 -2
- data/spec/views/opportunities/update.js.haml_spec.rb +11 -11
- data/spec/views/tasks/complete.js.haml_spec.rb +5 -5
- data/spec/views/tasks/create.js.haml_spec.rb +13 -13
- data/spec/views/tasks/destroy.js.haml_spec.rb +3 -3
- data/spec/views/tasks/edit.js.haml_spec.rb +4 -4
- data/spec/views/tasks/new.js.haml_spec.rb +2 -2
- data/spec/views/tasks/uncomplete.js.haml_spec.rb +44 -0
- data/spec/views/tasks/update.js.haml_spec.rb +17 -17
- data/spec/views/users/avatar.js.haml_spec.rb +1 -1
- data/spec/views/users/change_password.js.haml_spec.rb +4 -4
- data/spec/views/users/edit.js.haml_spec.rb +1 -1
- data/spec/views/users/password.js.haml_spec.rb +2 -2
- data/spec/views/users/update.js.haml_spec.rb +5 -5
- data/spec/views/users/upload_avatar.js.haml_spec.rb +2 -2
- data/vendor/assets/javascripts/ajax-chosen.jquery.coffee +166 -76
- data/vendor/assets/javascripts/chosen.jquery.coffee +2 -2
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-pt-BR.js +22 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/{jquery-ui-timepicker-sv.js → jquery-ui-timepicker-sv-SE.js} +0 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-th.js +19 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery.ui.datepicker-fr-CA.js +21 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery.ui.datepicker-pt.js +21 -0
- data/vendor/assets/javascripts/rating.js +2 -2
- metadata +101 -122
- data/app/assets/images/facebook-close.gif +0 -0
- data/app/assets/javascripts/crm.js +0 -495
- data/app/assets/javascripts/crm_classes.js +0 -218
- data/app/assets/javascripts/crm_fields.js +0 -34
- data/app/assets/javascripts/crm_loginout.js +0 -29
- data/app/assets/javascripts/crm_textarea_autocomplete.js +0 -32
- data/app/assets/javascripts/groups.js.coffee +0 -8
- data/app/assets/javascripts/jquery-noconflict.js +0 -6
- data/app/assets/javascripts/timeago.js +0 -17
- data/app/views/lists/_personal_sidebar.html.haml +0 -28
- data/lib/fat_free_crm/gem_ext/active_model/serializers/xml/serializer/attribute.rb +0 -17
- data/lib/fat_free_crm/gem_ext/authlogic/session/cookies.rb +0 -16
- data/lib/fat_free_crm/plugin_dependencies.rb +0 -12
- data/lib/plugins/country_select/MIT-LICENSE +0 -20
- data/lib/plugins/country_select/README +0 -14
- data/lib/plugins/country_select/init.rb +0 -1
- data/lib/plugins/country_select/install.rb +0 -2
- data/lib/plugins/country_select/uninstall.rb +0 -2
- data/lib/plugins/gravatar_image_tag/Gemfile +0 -8
- data/lib/plugins/gravatar_image_tag/README.textile +0 -108
- data/lib/plugins/gravatar_image_tag/ROADMAP.textile +0 -33
- data/lib/plugins/gravatar_image_tag/Rakefile +0 -50
- data/lib/plugins/gravatar_image_tag/VERSION +0 -1
- data/lib/plugins/gravatar_image_tag/gravatar_image_tag.gemspec +0 -45
- data/lib/plugins/gravatar_image_tag/init.rb +0 -2
- data/lib/plugins/gravatar_image_tag/spec/gravatar_image_tag_spec.rb +0 -83
- data/lib/plugins/gravatar_image_tag/spec/test_helper.rb +0 -12
- data/lib/tasks/db/migrate.rake +0 -66
- data/lib/tasks/db/schema.rake +0 -20
- data/vendor/assets/javascripts/ajax-chosen-prototype.js +0 -2
- data/vendor/assets/javascripts/ajax-chosen.proto.coffee +0 -98
- data/vendor/assets/javascripts/chosen-prototype.js +0 -3
- data/vendor/assets/javascripts/chosen.proto.coffee +0 -580
- data/vendor/assets/javascripts/event.simulate.js +0 -64
- data/vendor/assets/javascripts/facebooklist.js +0 -548
- data/vendor/assets/javascripts/facebooklist.simulate.js +0 -28
- data/vendor/assets/javascripts/modalbox.js +0 -506
- data/vendor/assets/stylesheets/facebooklist.css +0 -47
@@ -407,6 +407,7 @@ sv-SE:
|
|
407
407
|
task_assigned: Ärendet har tilldelats till %{value}
|
408
408
|
task_assigned_to: och tilldelats till %{value}
|
409
409
|
task_completed: utfört
|
410
|
+
task_uncomplete: Återställ
|
410
411
|
task_completed_ago: utfört %{value} sedan
|
411
412
|
task_completed_by: utfört %{time_ago} sedan (%{date}) av %{user}
|
412
413
|
task_created: Ärendet har skapats
|
@@ -406,6 +406,7 @@ th:
|
|
406
406
|
task_assigned: ภารกิจได้ถูกมอบหมายให้ %{value}
|
407
407
|
task_assigned_to: และได้มอบหมายให้ %{value}
|
408
408
|
task_completed: เสร็จสมบูรณ์
|
409
|
+
task_uncomplete: คืนกลับ
|
409
410
|
task_completed_by: เสร็จ %{time_ago} ที่ผ่านมา โดย %{user}
|
410
411
|
task_completed_ago: เสร็จ %{value} ที่ผ่านมา
|
411
412
|
task_created: ภารกิจได้ถูกสร้างขึ้นแล้ว
|
data/config/routes.rb
CHANGED
@@ -32,8 +32,8 @@ Rails.application.routes.draw do
|
|
32
32
|
post :filter
|
33
33
|
get :options
|
34
34
|
get :field_group
|
35
|
-
|
36
|
-
|
35
|
+
match :auto_complete
|
36
|
+
get :redraw
|
37
37
|
get :versions
|
38
38
|
end
|
39
39
|
member do
|
@@ -52,8 +52,8 @@ Rails.application.routes.draw do
|
|
52
52
|
post :filter
|
53
53
|
get :options
|
54
54
|
get :field_group
|
55
|
-
|
56
|
-
|
55
|
+
match :auto_complete
|
56
|
+
get :redraw
|
57
57
|
get :versions
|
58
58
|
end
|
59
59
|
member do
|
@@ -72,8 +72,8 @@ Rails.application.routes.draw do
|
|
72
72
|
post :filter
|
73
73
|
get :options
|
74
74
|
get :field_group
|
75
|
-
|
76
|
-
|
75
|
+
match :auto_complete
|
76
|
+
get :redraw
|
77
77
|
get :versions
|
78
78
|
end
|
79
79
|
member do
|
@@ -91,8 +91,8 @@ Rails.application.routes.draw do
|
|
91
91
|
post :filter
|
92
92
|
get :options
|
93
93
|
get :field_group
|
94
|
-
|
95
|
-
|
94
|
+
match :auto_complete
|
95
|
+
get :redraw
|
96
96
|
get :versions
|
97
97
|
get :autocomplete_account_name
|
98
98
|
end
|
@@ -113,9 +113,9 @@ Rails.application.routes.draw do
|
|
113
113
|
post :filter
|
114
114
|
get :options
|
115
115
|
get :field_group
|
116
|
-
|
117
|
-
|
118
|
-
get
|
116
|
+
match :auto_complete
|
117
|
+
get :redraw
|
118
|
+
get :versions
|
119
119
|
end
|
120
120
|
member do
|
121
121
|
put :attach
|
@@ -129,10 +129,11 @@ Rails.application.routes.draw do
|
|
129
129
|
resources :tasks, :id => /\d+/ do
|
130
130
|
collection do
|
131
131
|
post :filter
|
132
|
-
|
132
|
+
match :auto_complete
|
133
133
|
end
|
134
134
|
member do
|
135
135
|
put :complete
|
136
|
+
put :uncomplete
|
136
137
|
end
|
137
138
|
end
|
138
139
|
|
@@ -145,8 +146,8 @@ Rails.application.routes.draw do
|
|
145
146
|
post :redraw
|
146
147
|
end
|
147
148
|
collection do
|
148
|
-
post :auto_complete
|
149
149
|
get :opportunities_overview
|
150
|
+
match :auto_complete
|
150
151
|
end
|
151
152
|
end
|
152
153
|
|
@@ -155,7 +156,7 @@ Rails.application.routes.draw do
|
|
155
156
|
|
156
157
|
resources :users do
|
157
158
|
collection do
|
158
|
-
|
159
|
+
match :auto_complete
|
159
160
|
end
|
160
161
|
member do
|
161
162
|
get :confirm
|
@@ -175,11 +176,11 @@ Rails.application.routes.draw do
|
|
175
176
|
|
176
177
|
resources :fields do
|
177
178
|
collection do
|
178
|
-
|
179
|
-
get
|
180
|
-
|
181
|
-
post
|
182
|
-
get
|
179
|
+
match :auto_complete
|
180
|
+
get :options
|
181
|
+
get :redraw
|
182
|
+
post :sort
|
183
|
+
get :subform
|
183
184
|
end
|
184
185
|
end
|
185
186
|
|
data/config/settings.default.yml
CHANGED
@@ -66,6 +66,7 @@
|
|
66
66
|
#------------------------------------------------------------------------------
|
67
67
|
:smtp:
|
68
68
|
:address : "" # e.g. smtp.gmail.com
|
69
|
+
:from : "" # e.g. no-reply@your-domain.com
|
69
70
|
:enable_starttls_auto : true # true/false
|
70
71
|
:port : "" # e.g. 587
|
71
72
|
:authentication : :plain
|
@@ -258,16 +259,16 @@
|
|
258
259
|
:icon: :fa-tags
|
259
260
|
:url:
|
260
261
|
:controller: admin/tags
|
261
|
-
|
262
|
-
:text: :admin_tab_settings
|
263
|
-
:icon: :fa-cogs
|
264
|
-
:url:
|
265
|
-
:controller: admin/settings
|
266
|
-
|
267
|
-
:text: :admin_tab_plugins
|
268
|
-
:icon: :fa-plus-circle
|
269
|
-
:url:
|
270
|
-
:controller: admin/plugins
|
262
|
+
#- :active: false
|
263
|
+
# :text: :admin_tab_settings
|
264
|
+
# :icon: :fa-cogs
|
265
|
+
# :url:
|
266
|
+
# :controller: admin/settings
|
267
|
+
#- :active: false
|
268
|
+
# :text: :admin_tab_plugins
|
269
|
+
# :icon: :fa-plus-circle
|
270
|
+
# :url:
|
271
|
+
# :controller: admin/plugins
|
271
272
|
|
272
273
|
# Account Category. To add custom account type use string value, for example:
|
273
274
|
#
|
data/fat_free_crm.gemspec
CHANGED
@@ -15,11 +15,10 @@ Gem::Specification.new do |gem|
|
|
15
15
|
gem.license = 'MIT'
|
16
16
|
|
17
17
|
gem.add_dependency 'rails', '~> 3.2.12'
|
18
|
-
gem.add_dependency 'prototype-rails'
|
19
18
|
gem.add_dependency 'jquery-rails', '~> 2.1.4' # pegs us to jQuery 1.8
|
20
19
|
gem.add_dependency 'select2-rails'
|
21
20
|
gem.add_dependency 'simple_form', '~> 2.0.1'
|
22
|
-
gem.add_dependency 'will_paginate'
|
21
|
+
gem.add_dependency 'will_paginate'
|
23
22
|
gem.add_dependency 'paperclip'
|
24
23
|
# Manually added paperclip gem dependency "cocaine" in order to fix load error: "no such file to load -- cocaine"
|
25
24
|
gem.add_dependency 'cocaine'
|
@@ -28,8 +27,8 @@ Gem::Specification.new do |gem|
|
|
28
27
|
gem.add_dependency 'acts_as_commentable', '~> 3.0.1'
|
29
28
|
gem.add_dependency 'acts-as-taggable-on', '~> 2.3.3'
|
30
29
|
gem.add_dependency 'dynamic_form'
|
31
|
-
gem.add_dependency 'haml'
|
32
|
-
gem.add_dependency 'sass'
|
30
|
+
gem.add_dependency 'haml'
|
31
|
+
gem.add_dependency 'sass'
|
33
32
|
gem.add_dependency 'acts_as_list', '~> 0.1.4'
|
34
33
|
gem.add_dependency 'ffaker', '>= 1.12.0'
|
35
34
|
gem.add_dependency 'cancan'
|
@@ -40,9 +39,11 @@ Gem::Specification.new do |gem|
|
|
40
39
|
gem.add_dependency 'rails3-jquery-autocomplete'
|
41
40
|
gem.add_dependency 'valium'
|
42
41
|
gem.add_dependency 'psych', '~> 1' if RUBY_VERSION.to_f < 2.0
|
42
|
+
gem.add_dependency 'thor'
|
43
43
|
|
44
44
|
# FatFreeCRM has released it's own versions of the following gems:
|
45
45
|
#-----------------------------------------------------------------
|
46
46
|
gem.add_dependency 'ransack_ui', '>= 1.1.0'
|
47
|
+
gem.add_dependency 'ransack', '1.1.0' # not compatible with 1.2.X yet
|
47
48
|
gem.add_dependency 'email_reply_parser_ffcrm'
|
48
49
|
end
|
File without changes
|
data/lib/fat_free_crm.rb
CHANGED
@@ -38,7 +38,6 @@ require 'fat_free_crm/load_settings' # register load hook for Setting
|
|
38
38
|
# Require gem dependencies, monkey patches, and vendored plugins (in lib)
|
39
39
|
require "fat_free_crm/gem_dependencies"
|
40
40
|
require "fat_free_crm/gem_ext"
|
41
|
-
require "fat_free_crm/plugin_dependencies"
|
42
41
|
|
43
42
|
require "fat_free_crm/custom_fields" # load hooks for Field
|
44
43
|
require "fat_free_crm/version"
|
@@ -57,3 +56,6 @@ require "fat_free_crm/tabs"
|
|
57
56
|
require "fat_free_crm/callback"
|
58
57
|
require "fat_free_crm/plugin"
|
59
58
|
require "fat_free_crm/view_factory"
|
59
|
+
|
60
|
+
require "country_select"
|
61
|
+
require "gravatar_image_tag"
|
data/lib/fat_free_crm/engine.rb
CHANGED
@@ -7,9 +7,7 @@ module FatFreeCRM
|
|
7
7
|
class Engine < ::Rails::Engine
|
8
8
|
config.autoload_paths += Dir[root.join("app/models/**")] +
|
9
9
|
Dir[root.join("app/controllers/entities")]
|
10
|
-
|
11
|
-
|
12
|
-
ActiveRecord::Base.observers = :lead_observer, :opportunity_observer, :task_observer
|
13
|
-
end
|
10
|
+
config.active_record.observers = [:lead_observer, :opportunity_observer,
|
11
|
+
:task_observer, :entity_observer]
|
14
12
|
end
|
15
13
|
end
|
@@ -6,7 +6,6 @@
|
|
6
6
|
require 'rails/all'
|
7
7
|
require 'jquery-rails'
|
8
8
|
require 'select2-rails'
|
9
|
-
require 'prototype-rails'
|
10
9
|
require 'haml'
|
11
10
|
require 'sass'
|
12
11
|
require 'acts_as_commentable'
|
@@ -28,6 +27,7 @@ require 'ffaker'
|
|
28
27
|
require 'premailer'
|
29
28
|
require 'nokogiri'
|
30
29
|
require 'font-awesome-rails'
|
30
|
+
require 'thor'
|
31
31
|
|
32
32
|
# Load redcloth if available (for textile markup in emails)
|
33
33
|
begin
|
data/lib/fat_free_crm/gem_ext.rb
CHANGED
@@ -6,8 +6,6 @@
|
|
6
6
|
require "fat_free_crm/gem_ext/rails/text_helper"
|
7
7
|
require "fat_free_crm/gem_ext/active_record/schema_dumper"
|
8
8
|
require "fat_free_crm/gem_ext/active_support/buffered_logger"
|
9
|
-
require "fat_free_crm/gem_ext/active_model/serializers/xml/serializer/attribute"
|
10
9
|
require "fat_free_crm/gem_ext/action_controller/base"
|
11
|
-
require "fat_free_crm/gem_ext/authlogic/session/cookies"
|
12
10
|
require "fat_free_crm/gem_ext/simple_form/action_view_extensions/form_helper"
|
13
11
|
require "fat_free_crm/gem_ext/rake/task" if defined?(Rake)
|
@@ -44,7 +44,6 @@ module FatFreeCRM
|
|
44
44
|
if access != "Shared"
|
45
45
|
remove_permissions
|
46
46
|
else
|
47
|
-
value.map!{|c| c.split(',')} if value.map{|v| v.to_s.include?(',')}.any? # fix for a bug in "Chosen" which gives values like ["", "1,2,3"]
|
48
47
|
value = value.flatten.reject(&:blank?).uniq.map(&:to_i)
|
49
48
|
permissions_to_remove = Permission.find_all_by_#{model}_id_and_asset_id_and_asset_type(self.#{model}_ids - value, self.id, self.class)
|
50
49
|
permissions_to_remove.each {|p| (permissions.delete(p); p.destroy)}
|
@@ -57,7 +56,7 @@ module FatFreeCRM
|
|
57
56
|
end
|
58
57
|
}
|
59
58
|
end
|
60
|
-
|
59
|
+
|
61
60
|
# Remove all shared permissions if no longer shared
|
62
61
|
#--------------------------------------------------------------------------
|
63
62
|
def access=(value)
|
@@ -95,7 +94,7 @@ module FatFreeCRM
|
|
95
94
|
self.group_ids = model.group_ids
|
96
95
|
save
|
97
96
|
end
|
98
|
-
|
97
|
+
|
99
98
|
end
|
100
99
|
|
101
100
|
module SingletonMethods
|
data/lib/fat_free_crm/version.rb
CHANGED
File without changes
|
@@ -5,30 +5,18 @@
|
|
5
5
|
#------------------------------------------------------------------------------
|
6
6
|
namespace :ffcrm do
|
7
7
|
namespace :settings do
|
8
|
-
|
8
|
+
|
9
9
|
desc "Clear settings from database (reset to default)"
|
10
10
|
task :clear => :environment do
|
11
|
-
|
12
|
-
|
13
|
-
# Truncate settings table
|
14
|
-
ActiveRecord::Base.establish_connection(Rails.env)
|
15
|
-
if ActiveRecord::Base.connection.adapter_name.downcase == "sqlite"
|
16
|
-
ActiveRecord::Base.connection.execute("DELETE FROM settings")
|
17
|
-
else # mysql and postgres
|
18
|
-
ActiveRecord::Base.connection.execute("TRUNCATE settings")
|
19
|
-
end
|
20
|
-
|
21
|
-
puts "===== Settings table has been cleared."
|
11
|
+
Setting.delete_all
|
22
12
|
end
|
23
13
|
|
24
14
|
desc "Show current settings in the database"
|
25
15
|
task :show => :environment do
|
26
|
-
|
27
|
-
names = ActiveRecord::Base.connection.select_values("SELECT name FROM settings ORDER BY name")
|
28
|
-
names.each do |name|
|
16
|
+
Setting.select('name').order('name').pluck('name').each do |name|
|
29
17
|
puts "\n#{name}:\n #{Setting.send(name).inspect}"
|
30
18
|
end
|
31
19
|
end
|
32
|
-
|
20
|
+
|
33
21
|
end
|
34
22
|
end
|
data/public/favicon.ico
CHANGED
Binary file
|
@@ -566,18 +566,18 @@ describe AccountsController do
|
|
566
566
|
it_should_behave_like("auto complete")
|
567
567
|
end
|
568
568
|
|
569
|
-
#
|
569
|
+
# GET /accounts/redraw AJAX
|
570
570
|
#----------------------------------------------------------------------------
|
571
|
-
describe "responding to
|
571
|
+
describe "responding to GET redraw" do
|
572
572
|
it "should save user selected account preference" do
|
573
|
-
xhr :
|
573
|
+
xhr :get, :redraw, :per_page => 42, :view => "brief", :sort_by => "name"
|
574
574
|
current_user.preference[:accounts_per_page].should == "42"
|
575
575
|
current_user.preference[:accounts_index_view].should == "brief"
|
576
576
|
current_user.preference[:accounts_sort_by].should == "accounts.name ASC"
|
577
577
|
end
|
578
578
|
|
579
579
|
it "should reset current page to 1" do
|
580
|
-
xhr :
|
580
|
+
xhr :get, :redraw, :per_page => 42, :view => "brief", :sort_by => "name"
|
581
581
|
session[:accounts_current_page].should == 1
|
582
582
|
end
|
583
583
|
|
@@ -587,7 +587,7 @@ describe AccountsController do
|
|
587
587
|
FactoryGirl.create(:account, :name => "B", :user => current_user)
|
588
588
|
]
|
589
589
|
|
590
|
-
xhr :
|
590
|
+
xhr :get, :redraw, :per_page => 1, :sort_by => "name"
|
591
591
|
assigns(:accounts).should == [ @accounts.first ]
|
592
592
|
response.should render_template("accounts/index")
|
593
593
|
end
|
@@ -605,18 +605,18 @@ describe CampaignsController do
|
|
605
605
|
it_should_behave_like("auto complete")
|
606
606
|
end
|
607
607
|
|
608
|
-
#
|
608
|
+
# GET /campaigns/redraw AJAX
|
609
609
|
#----------------------------------------------------------------------------
|
610
|
-
describe "responding to
|
610
|
+
describe "responding to GET redraw" do
|
611
611
|
it "should save user selected campaign preference" do
|
612
|
-
xhr :
|
612
|
+
xhr :get, :redraw, :per_page => 42, :view => "brief", :sort_by => "name"
|
613
613
|
current_user.preference[:campaigns_per_page].should == "42"
|
614
614
|
current_user.preference[:campaigns_index_view].should == "brief"
|
615
615
|
current_user.preference[:campaigns_sort_by].should == "campaigns.name ASC"
|
616
616
|
end
|
617
617
|
|
618
618
|
it "should reset current page to 1" do
|
619
|
-
xhr :
|
619
|
+
xhr :get, :redraw, :per_page => 42, :view => "brief", :sort_by => "name"
|
620
620
|
session[:campaigns_current_page].should == 1
|
621
621
|
end
|
622
622
|
|
@@ -626,7 +626,7 @@ describe CampaignsController do
|
|
626
626
|
FactoryGirl.create(:campaign, :name => "B", :user => current_user)
|
627
627
|
]
|
628
628
|
|
629
|
-
xhr :
|
629
|
+
xhr :get, :redraw, :per_page => 1, :sort_by => "name"
|
630
630
|
assigns(:campaigns).should == [ @campaigns.first ]
|
631
631
|
response.should render_template("campaigns/index")
|
632
632
|
end
|
@@ -216,6 +216,43 @@ describe ContactsController do
|
|
216
216
|
end
|
217
217
|
end
|
218
218
|
|
219
|
+
# GET /contacts/field_group AJAX
|
220
|
+
#----------------------------------------------------------------------------
|
221
|
+
describe "responding to GET field_group" do
|
222
|
+
|
223
|
+
context "with an existing tag" do
|
224
|
+
before :each do
|
225
|
+
@tag = FactoryGirl.create(:tag)
|
226
|
+
end
|
227
|
+
|
228
|
+
it "should return with an existing tag name" do
|
229
|
+
xhr :get, :field_group, {:tag => @tag.name}
|
230
|
+
assigns[:tag].name == @tag.name
|
231
|
+
end
|
232
|
+
|
233
|
+
it "should have the same count of tags" do
|
234
|
+
xhr :get, :field_group, {:tag => @tag.name}
|
235
|
+
Tag.count.should equal(1)
|
236
|
+
end
|
237
|
+
|
238
|
+
end
|
239
|
+
|
240
|
+
context "without an existing tag" do
|
241
|
+
it "should not find a tag" do
|
242
|
+
tag_name = "New-Tag"
|
243
|
+
xhr :get, :field_group, {:tag => tag_name}
|
244
|
+
assigns[:tag].should eql(nil)
|
245
|
+
end
|
246
|
+
|
247
|
+
it "should have the same count of tags" do
|
248
|
+
tag_name = "New-Tag-1"
|
249
|
+
xhr :get, :field_group, {:tag => tag_name}
|
250
|
+
Tag.count.should equal(0)
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
end
|
255
|
+
|
219
256
|
# GET /contacts/1/edit AJAX
|
220
257
|
#----------------------------------------------------------------------------
|
221
258
|
describe "responding to GET edit" do
|
@@ -648,11 +685,11 @@ describe ContactsController do
|
|
648
685
|
it_should_behave_like("auto complete")
|
649
686
|
end
|
650
687
|
|
651
|
-
#
|
688
|
+
# GET /contacts/redraw AJAX
|
652
689
|
#----------------------------------------------------------------------------
|
653
690
|
describe "responding to POST redraw" do
|
654
691
|
it "should save user selected contact preference" do
|
655
|
-
xhr :
|
692
|
+
xhr :get, :redraw, :per_page => 42, :view => "long", :sort_by => "first_name", :naming => "after"
|
656
693
|
current_user.preference[:contacts_per_page].to_i.should == 42
|
657
694
|
current_user.preference[:contacts_index_view].should == "long"
|
658
695
|
current_user.preference[:contacts_sort_by].should == "contacts.first_name ASC"
|
@@ -660,13 +697,13 @@ describe ContactsController do
|
|
660
697
|
end
|
661
698
|
|
662
699
|
it "should set similar options for Leads" do
|
663
|
-
xhr :
|
700
|
+
xhr :get, :redraw, :sort_by => "first_name", :naming => "after"
|
664
701
|
current_user.pref[:leads_sort_by].should == "leads.first_name ASC"
|
665
702
|
current_user.pref[:leads_naming].should == "after"
|
666
703
|
end
|
667
704
|
|
668
705
|
it "should reset current page to 1" do
|
669
|
-
xhr :
|
706
|
+
xhr :get, :redraw, :per_page => 42, :view => "long", :sort_by => "first_name", :naming => "after"
|
670
707
|
session[:contacts_current_page].should == 1
|
671
708
|
end
|
672
709
|
|
@@ -676,7 +713,7 @@ describe ContactsController do
|
|
676
713
|
FactoryGirl.create(:contact, :first_name => "Bobby", :user => current_user)
|
677
714
|
]
|
678
715
|
|
679
|
-
xhr :
|
716
|
+
xhr :get, :redraw, :per_page => 1, :sort_by => "first_name"
|
680
717
|
assigns(:contacts).should == [ @contacts.first ]
|
681
718
|
response.should render_template("contacts/index")
|
682
719
|
end
|