fat_free_crm 0.11.3 → 0.11.4
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/.gitignore +1 -0
- data/.travis.yml +2 -2
- data/CHANGELOG +6 -1
- data/CONTRIBUTORS +40 -1
- data/Capfile +5 -0
- data/Gemfile +25 -6
- data/Gemfile.lock +128 -86
- data/README.md +23 -16
- data/{vendor → app}/assets/images/delete.png +0 -0
- data/app/assets/javascripts/admin/fields.js.coffee +62 -0
- data/app/assets/javascripts/application.js.erb +8 -1
- data/app/assets/javascripts/crm.js +44 -46
- data/app/assets/javascripts/crm_chosen.js.coffee +10 -7
- data/app/assets/javascripts/datepicker.js.coffee +15 -0
- data/app/assets/javascripts/format_buttons.js.coffee +48 -0
- data/app/assets/javascripts/{admin/field_groups.js.coffee → groups.js.coffee} +0 -0
- data/app/assets/javascripts/lists.js.coffee +1 -1
- data/app/assets/javascripts/search.js.coffee +56 -38
- data/app/assets/stylesheets/admin/{field_groups.css.scss → fields.css.scss} +4 -0
- data/app/assets/stylesheets/advanced_search.css.scss +79 -0
- data/app/assets/stylesheets/application.css.erb +4 -0
- data/app/assets/stylesheets/base.scss +3 -3
- data/app/assets/stylesheets/common.scss +72 -25
- data/app/assets/stylesheets/fields.scss +14 -0
- data/app/assets/stylesheets/format_buttons.css.scss +30 -0
- data/app/assets/stylesheets/groups.css.scss +3 -0
- data/app/assets/stylesheets/header.scss +7 -6
- data/{vendor/plugins/.gitkeep → app/assets/stylesheets/index_headers.css.scss} +0 -0
- data/app/assets/stylesheets/print.css.scss +12 -3
- data/app/assets/stylesheets/rails.scss +12 -3
- data/app/controllers/admin/application_controller.rb +1 -1
- data/app/controllers/admin/field_groups_controller.rb +2 -0
- data/app/controllers/admin/fields_controller.rb +41 -17
- data/app/controllers/admin/groups_controller.rb +70 -0
- data/app/controllers/admin/tags_controller.rb +1 -0
- data/app/controllers/admin/users_controller.rb +8 -7
- data/app/controllers/application_controller.rb +34 -5
- data/app/controllers/comments_controller.rb +2 -3
- data/app/controllers/entities/accounts_controller.rb +30 -37
- data/app/controllers/entities/campaigns_controller.rb +56 -29
- data/app/controllers/entities/contacts_controller.rb +24 -26
- data/app/controllers/entities/leads_controller.rb +38 -37
- data/app/controllers/entities/opportunities_controller.rb +28 -34
- data/app/controllers/entities_controller.rb +71 -43
- data/app/controllers/home_controller.rb +29 -27
- data/app/controllers/tasks_controller.rb +18 -17
- data/app/controllers/users_controller.rb +12 -8
- data/app/helpers/accounts_helper.rb +58 -16
- data/app/helpers/addresses_helper.rb +4 -1
- data/app/helpers/admin/fields_helper.rb +3 -4
- data/app/helpers/application_helper.rb +147 -100
- data/app/helpers/campaigns_helper.rb +2 -9
- data/app/helpers/fields_helper.rb +0 -1
- data/app/helpers/groups_helper.rb +2 -0
- data/app/helpers/home_helper.rb +11 -0
- data/app/helpers/leads_helper.rb +2 -9
- data/app/helpers/opportunities_helper.rb +2 -9
- data/app/helpers/{crm_tags_helper.rb → tags_helper.rb} +9 -8
- data/app/helpers/tasks_helper.rb +5 -21
- data/app/helpers/users_helper.rb +14 -7
- data/app/helpers/versions_helper.rb +46 -0
- data/app/inputs/date_time_input.rb +8 -25
- data/app/inputs/datepair_input.rb +77 -0
- data/app/inputs/datetimepair_input.rb +37 -0
- data/app/mailers/user_mailer.rb +10 -0
- data/app/models/entities/account.rb +18 -11
- data/app/models/entities/account_contact.rb +4 -3
- data/app/models/entities/account_opportunity.rb +0 -1
- data/app/models/entities/campaign.rb +6 -7
- data/app/models/entities/contact.rb +53 -25
- data/app/models/entities/contact_opportunity.rb +0 -1
- data/app/models/entities/lead.rb +24 -13
- data/app/models/entities/opportunity.rb +34 -16
- data/app/models/fields/custom_field.rb +29 -13
- data/app/models/fields/custom_field_date_pair.rb +58 -0
- data/app/models/fields/custom_field_datetime_pair.rb +28 -0
- data/app/models/fields/custom_field_pair.rb +54 -0
- data/app/models/fields/field.rb +60 -43
- data/app/models/fields/field_group.rb +0 -9
- data/app/models/observers/entity_observer.rb +29 -0
- data/app/models/observers/opportunity_observer.rb +3 -0
- data/app/models/polymorphic/address.rb +14 -0
- data/app/models/polymorphic/avatar.rb +13 -1
- data/app/models/polymorphic/email.rb +1 -1
- data/app/models/polymorphic/task.rb +14 -13
- data/app/models/setting.rb +14 -21
- data/app/models/users/ability.rb +25 -4
- data/app/models/users/group.rb +13 -0
- data/app/models/users/permission.rb +3 -1
- data/app/models/users/preference.rb +1 -2
- data/app/models/users/user.rb +25 -3
- data/app/views/accounts/_account.html.haml +5 -39
- data/app/views/accounts/_edit.html.haml +3 -2
- data/app/views/accounts/_index_brief.html.haml +32 -0
- data/app/views/accounts/_index_long.html.haml +42 -0
- data/app/views/accounts/_new.html.haml +3 -2
- data/app/views/accounts/_sidebar_index.html.haml +3 -4
- data/app/views/accounts/_sidebar_show.html.haml +2 -2
- data/app/views/accounts/_title_bar.html.haml +11 -0
- data/app/views/accounts/_top_section.html.haml +1 -1
- data/app/views/accounts/create.js.rjs +1 -2
- data/app/views/accounts/destroy.js.rjs +1 -1
- data/app/views/accounts/edit.js.rjs +0 -2
- data/app/views/accounts/index.html.haml +6 -13
- data/app/views/accounts/index.js.rjs +3 -1
- data/app/views/accounts/index.xls.builder +82 -0
- data/app/views/accounts/new.js.rjs +0 -2
- data/app/views/accounts/show.html.haml +17 -15
- data/app/views/accounts/show.js.erb +2 -0
- data/app/views/admin/custom_fields/_base_field.html.haml +21 -0
- data/app/views/admin/custom_fields/_check_boxes_field.html.haml +6 -0
- data/app/views/admin/custom_fields/_date_field.html.haml +14 -0
- data/app/views/admin/custom_fields/_date_pair_field.html.haml +21 -0
- data/app/views/admin/custom_fields/_datetime_field.html.haml +14 -0
- data/app/views/admin/custom_fields/_datetime_pair_field.html.haml +21 -0
- data/app/views/admin/custom_fields/_radio_field.html.haml +6 -0
- data/app/views/admin/custom_fields/_select_field.html.haml +25 -0
- data/app/views/admin/custom_fields/_string_field.html.haml +2 -0
- data/app/views/admin/field_groups/_field_group.html.haml +7 -5
- data/app/views/admin/field_groups/_top_section.html.haml +4 -3
- data/app/views/admin/field_groups/create.js.rjs +1 -2
- data/app/views/admin/fields/_field.html.haml +5 -3
- data/app/views/admin/fields/_form.html.haml +35 -0
- data/app/views/admin/fields/_subform.html.haml +6 -0
- data/app/views/admin/fields/create.js.erb +19 -0
- data/app/views/admin/fields/destroy.js.erb +9 -0
- data/app/views/admin/fields/edit.js.erb +1 -0
- data/app/views/admin/fields/index.html.haml +11 -8
- data/app/views/admin/fields/update.js.erb +13 -0
- data/app/views/admin/groups/_edit.html.haml +12 -0
- data/app/views/admin/groups/_form.html.haml +13 -0
- data/app/views/admin/groups/_group.html.haml +15 -0
- data/app/views/admin/groups/_new.html.haml +12 -0
- data/app/views/admin/groups/create.js.rjs +11 -0
- data/app/views/admin/{fields → groups}/destroy.js.rjs +3 -3
- data/app/views/admin/groups/edit.js.rjs +21 -0
- data/app/views/admin/groups/index.html.haml +18 -0
- data/app/views/admin/groups/index.js.rjs +2 -0
- data/app/views/admin/groups/new.js.rjs +9 -0
- data/app/views/admin/groups/show.html.haml +11 -0
- data/app/views/admin/groups/update.js.rjs +10 -0
- data/app/views/admin/users/_profile.html.haml +13 -1
- data/app/views/admin/users/_user.html.haml +7 -2
- data/app/views/admin/users/index.js.rjs +1 -0
- data/app/views/application/index.atom.builder +1 -1
- data/app/views/application/index.rss.builder +1 -1
- data/app/views/application/show.atom.builder +32 -0
- data/app/views/application/show.rss.builder +29 -0
- data/app/views/campaigns/_campaign.html.haml +5 -21
- data/app/views/campaigns/_edit.html.haml +3 -2
- data/app/views/campaigns/_index_brief.html.haml +15 -0
- data/app/views/campaigns/_index_long.html.haml +20 -0
- data/app/views/campaigns/_new.html.haml +4 -2
- data/app/views/campaigns/_sidebar_index.html.haml +3 -3
- data/app/views/campaigns/_title_bar.html.haml +11 -0
- data/app/views/campaigns/_top_section.html.haml +2 -2
- data/app/views/campaigns/create.js.rjs +1 -4
- data/app/views/campaigns/destroy.js.rjs +1 -1
- data/app/views/campaigns/edit.js.rjs +0 -4
- data/app/views/campaigns/index.html.haml +6 -13
- data/app/views/campaigns/index.js.rjs +3 -1
- data/app/views/campaigns/index.xls.builder +75 -0
- data/app/views/campaigns/new.js.rjs +0 -4
- data/app/views/campaigns/show.html.haml +17 -15
- data/app/views/campaigns/show.js.erb +2 -0
- data/app/views/campaigns/update.js.rjs +0 -2
- data/app/views/comments/_comment.html.haml +6 -5
- data/app/views/comments/_edit.html.haml +5 -5
- data/app/views/comments/_new.html.haml +6 -5
- data/app/views/comments/create.js.rjs +1 -1
- data/app/views/contacts/_contact.html.haml +5 -52
- data/app/views/contacts/_contacts.html.haml +1 -0
- data/app/views/contacts/_edit.html.haml +3 -2
- data/app/views/contacts/_index_brief.html.haml +25 -0
- data/app/views/contacts/_index_full.html.haml +57 -0
- data/app/views/contacts/_index_long.html.haml +43 -0
- data/app/views/contacts/_new.html.haml +4 -2
- data/app/views/contacts/_section_extra.html.haml +26 -0
- data/app/views/contacts/_section_general.html.haml +22 -0
- data/app/views/contacts/_sidebar_index.html.haml +0 -3
- data/app/views/contacts/_sidebar_show.html.haml +2 -10
- data/app/views/contacts/_title_bar.html.haml +11 -0
- data/app/views/contacts/_top_section.html.haml +1 -1
- data/app/views/contacts/create.js.rjs +1 -2
- data/app/views/contacts/destroy.js.rjs +1 -1
- data/app/views/contacts/edit.js.rjs +0 -2
- data/app/views/contacts/index.html.haml +6 -14
- data/app/views/contacts/index.js.rjs +3 -1
- data/app/views/contacts/index.xls.builder +102 -0
- data/app/views/contacts/new.js.rjs +0 -2
- data/app/views/contacts/show.html.haml +15 -15
- data/app/views/contacts/show.js.erb +2 -0
- data/app/views/entities/_basic_search.html.haml +22 -0
- data/app/views/entities/_permissions.html.haml +41 -0
- data/app/views/entities/_search.html.haml +15 -0
- data/app/views/entities/_section_custom_fields.html.haml +11 -0
- data/app/views/entities/_title_bar.html.haml +12 -0
- data/app/views/entities/attach.js.rjs +1 -1
- data/app/views/entities/opportunities.js.rjs +1 -1
- data/app/views/entities/versions.js.erb +3 -0
- data/app/views/fields/_edit_custom_field_group.html.haml +8 -0
- data/app/views/fields/_group.html.haml +11 -20
- data/app/views/fields/_group_table.html.haml +13 -0
- data/app/views/fields/_group_view.html.haml +7 -0
- data/app/views/fields/_groups.html.haml +1 -4
- data/app/views/fields/_sidebar_show.html.haml +5 -4
- data/app/views/home/_account.html.haml +29 -0
- data/app/views/home/_activity.html.haml +16 -6
- data/app/views/home/_opportunity.html.haml +41 -0
- data/app/views/home/_options.html.haml +1 -1
- data/app/views/home/_task.html.haml +46 -0
- data/app/views/home/index.html.haml +32 -1
- data/app/views/home/index.js.rjs +1 -0
- data/app/views/layouts/_header.html.haml +3 -3
- data/app/views/layouts/_sidebar.html.haml +1 -3
- data/app/views/layouts/_tabbed.html.haml +2 -3
- data/app/views/layouts/_tabless.html.haml +1 -1
- data/app/views/layouts/admin/_header.html.haml +1 -1
- data/app/views/layouts/application.html.haml +7 -8
- data/app/views/layouts/header.xls.builder +8 -0
- data/app/views/leads/_contact.html.haml +1 -2
- data/app/views/leads/_convert.html.haml +1 -2
- data/app/views/leads/_convert_permissions.html.haml +21 -11
- data/app/views/leads/_edit.html.haml +3 -2
- data/app/views/leads/_index_brief.html.haml +41 -0
- data/app/views/leads/_index_long.html.haml +62 -0
- data/app/views/leads/_lead.html.haml +5 -62
- data/app/views/leads/_new.html.haml +4 -2
- data/app/views/leads/_opportunity.html.haml +1 -1
- data/app/views/leads/_sidebar_index.html.haml +3 -3
- data/app/views/leads/_sidebar_show.html.haml +3 -3
- data/app/views/leads/_status.html.haml +1 -1
- data/app/views/leads/_title_bar.html.haml +16 -0
- data/app/views/leads/convert.js.rjs +0 -1
- data/app/views/leads/create.js.rjs +1 -2
- data/app/views/leads/destroy.js.rjs +1 -1
- data/app/views/leads/edit.js.rjs +0 -2
- data/app/views/leads/index.html.haml +6 -13
- data/app/views/leads/index.js.rjs +3 -1
- data/app/views/leads/index.xls.builder +100 -0
- data/app/views/leads/new.js.rjs +0 -2
- data/app/views/leads/promote.js.rjs +0 -1
- data/app/views/leads/show.html.haml +13 -18
- data/app/views/leads/show.js.erb +2 -0
- data/app/views/{shared/_lists.html.haml → lists/_sidebar.html.haml} +0 -0
- data/app/views/lists/create.js.rjs +1 -1
- data/app/views/opportunities/_edit.html.haml +3 -2
- data/app/views/opportunities/_index_brief.html.haml +29 -0
- data/app/views/opportunities/_index_long.html.haml +59 -0
- data/app/views/opportunities/_new.html.haml +4 -2
- data/app/views/opportunities/_opportunity.html.haml +5 -57
- data/app/views/opportunities/_sidebar_index.html.haml +3 -3
- data/app/views/opportunities/_sidebar_show.html.haml +2 -2
- data/app/views/opportunities/_title_bar.html.haml +11 -0
- data/app/views/opportunities/_top_section.html.haml +2 -2
- data/app/views/opportunities/create.js.rjs +4 -6
- data/app/views/opportunities/destroy.js.rjs +1 -1
- data/app/views/opportunities/edit.js.rjs +0 -3
- data/app/views/opportunities/index.html.haml +6 -14
- data/app/views/opportunities/index.js.rjs +3 -1
- data/app/views/opportunities/index.xls.builder +69 -0
- data/app/views/opportunities/new.js.rjs +1 -5
- data/app/views/opportunities/show.html.haml +14 -14
- data/app/views/opportunities/show.js.erb +2 -0
- data/app/views/opportunities/update.js.rjs +0 -1
- data/app/views/passwords/new.html.haml +1 -1
- data/app/views/shared/_add_comment.html.haml +8 -0
- data/app/views/shared/_address.html.haml +1 -1
- data/app/views/shared/_address_show.html.haml +1 -1
- data/app/views/shared/_edit_comment.html.haml +2 -2
- data/app/views/shared/_export.html.haml +2 -1
- data/app/views/shared/_paginate_with_per_page.html.haml +14 -0
- data/app/views/shared/_recently.html.haml +1 -1
- data/app/views/shared/_search.html.haml +1 -1
- data/app/views/shared/_tags.html.haml +1 -2
- data/app/views/shared/_tasks.html.haml +2 -2
- data/app/views/tasks/_completed.html.haml +3 -3
- data/app/views/tasks/_new.html.haml +1 -1
- data/app/views/tasks/_pending.html.haml +2 -3
- data/app/views/tasks/_sidebar_index.html.haml +2 -2
- data/app/views/tasks/_top_section.html.haml +5 -3
- data/app/views/tasks/create.js.rjs +3 -4
- data/app/views/tasks/edit.js.rjs +2 -4
- data/app/views/tasks/index.html.haml +1 -1
- data/app/views/tasks/index.xls.builder +47 -0
- data/app/views/tasks/new.js.rjs +0 -2
- data/app/views/tasks/update.js.rjs +0 -1
- data/app/views/user_mailer/assigned_entity_notification.html.haml +3 -0
- data/app/views/users/_user.html.haml +2 -2
- data/app/views/users/_user_report.html.haml +6 -0
- data/app/views/users/opportunities_overview.html.haml +16 -0
- data/app/views/users/show.html.haml +2 -3
- data/app/views/users/update.js.rjs +1 -1
- data/app/views/versions/_version.html.haml +4 -19
- data/app/views/versions/_version_item.html.haml +8 -0
- data/app/views/versions/_versions.html.haml +9 -9
- data/config/application.rb +10 -2
- data/config/deploy.example.rb +47 -0
- data/config/environments/development.rb +1 -0
- data/config/environments/production.rb +1 -3
- data/config/environments/staging.rb +1 -1
- data/config/initializers/action_mailer.rb +10 -8
- data/config/initializers/custom_fields.rb +21 -0
- data/config/initializers/gravatar.rb +7 -0
- data/config/initializers/paper_trail.rb +1 -0
- data/config/initializers/ransack.rb +15 -0
- data/config/initializers/simple_form.rb +1 -2
- data/config/initializers/views.rb +42 -0
- data/config/locales/cz_fat_free_crm.yml +0 -10
- data/config/locales/de_fat_free_crm.yml +23 -21
- data/config/locales/en-GB_fat_free_crm.yml +241 -25
- data/config/locales/en-US_fat_free_crm.yml +139 -57
- data/config/locales/en-US_ransack.yml +92 -0
- data/config/locales/es_fat_free_crm.yml +0 -6
- data/config/locales/fr-CA_fat_free_crm.yml +0 -6
- data/config/locales/fr_fat_free_crm.yml +3 -14
- data/config/locales/it_fat_free_crm.yml +0 -11
- data/config/locales/ja_fat_free_crm.yml +0 -10
- data/config/locales/pl_fat_free_crm.yml +0 -6
- data/config/locales/pt-BR_fat_free_crm.yml +0 -6
- data/config/locales/ru_fat_free_crm.yml +0 -9
- data/config/locales/sv-SE_fat_free_crm.yml +0 -10
- data/config/locales/th_fat_free_crm.yml +0 -6
- data/config/locales/zh-CN.yml +4 -0
- data/config/locales/zh-CN_fat_free_crm.yml +78 -47
- data/config/routes.rb +13 -0
- data/config/settings.default.yml +20 -20
- data/db/demo/addresses.yml +2 -2
- data/db/migrate/20100928030598_create_sessions.rb +5 -0
- data/db/migrate/20100928030627_acts_as_taggable_on_migration.rb +6 -6
- data/db/migrate/20111201030535_add_field_groups_klass_name.rb +2 -1
- data/db/migrate/20120406082136_create_groups.rb +19 -0
- data/db/migrate/20120510025219_add_not_null_constraints_for_timestamp_columns.rb +21 -0
- data/db/migrate/20120528102124_increase_length_of_version_events.rb +9 -0
- data/db/migrate/20120801032706_add_pair_id_to_fields.rb +5 -0
- data/db/migrate/20121003063155_add_settings_to_custom_fields.rb +5 -0
- data/db/migrate/20121221033947_fix_country_mapping.rb +32 -0
- data/db/schema.rb +25 -6
- data/fat_free_crm.gemspec +16 -13
- data/lib/fat_free_crm.rb +2 -0
- data/lib/fat_free_crm/comment_extensions.rb +23 -0
- data/lib/fat_free_crm/core_ext/array.rb +8 -2
- data/lib/fat_free_crm/fields.rb +24 -2
- data/lib/fat_free_crm/gem_dependencies.rb +7 -1
- data/lib/fat_free_crm/permissions.rb +47 -26
- data/lib/fat_free_crm/version.rb +1 -1
- data/lib/fat_free_crm/view_factory.rb +95 -0
- data/lib/plugins/country_select/lib/country_select.rb +393 -374
- data/lib/tasks/{plugins.rake → db/migrate.rake} +1 -1
- data/lib/tasks/{schema_upgrade.rake → db/schema.rake} +2 -1
- data/lib/tasks/{mail_processing.rake → ffcrm/comment_replies.rake} +2 -21
- data/lib/tasks/ffcrm/config.rake +33 -0
- data/lib/tasks/{demo.rake → ffcrm/demo.rake} +3 -2
- data/lib/tasks/ffcrm/dropbox.rake +42 -0
- data/lib/tasks/ffcrm/settings.rake +46 -0
- data/lib/tasks/{fat_free_crm.rake → ffcrm/setup.rake} +1 -39
- data/lib/tasks/ffcrm/update_data.rake +256 -0
- data/{acceptance → spec/acceptance}/acceptance_helper.rb +5 -4
- data/{acceptance → spec/acceptance}/accounts_spec.rb +36 -10
- data/spec/acceptance/admin/groups_spec.rb +26 -0
- data/spec/acceptance/admin/users_spec.rb +34 -0
- data/spec/acceptance/campaigns_spec.rb +101 -0
- data/spec/acceptance/contacts_spec.rb +101 -0
- data/spec/acceptance/dashboard_spec.rb +62 -0
- data/spec/acceptance/leads_spec.rb +109 -0
- data/spec/acceptance/opportunities_overview_spec.rb +82 -0
- data/spec/acceptance/opportunities_spec.rb +103 -0
- data/{acceptance → spec/acceptance}/support/browser.rb +0 -0
- data/{acceptance → spec/acceptance}/support/headless.rb +0 -0
- data/{acceptance → spec/acceptance}/support/helpers.rb +8 -1
- data/{acceptance → spec/acceptance}/support/maintain_sessions.rb +0 -0
- data/spec/acceptance/support/paths.rb +42 -0
- data/spec/acceptance/support/selector_helpers.rb +31 -0
- data/spec/acceptance/tasks_spec.rb +85 -0
- data/spec/controllers/admin/groups_controller_spec.rb +5 -0
- data/spec/controllers/admin/users_controller_spec.rb +2 -3
- data/spec/controllers/applications_controller_spec.rb +40 -0
- data/spec/controllers/comments_controller_spec.rb +5 -6
- data/spec/controllers/emails_controller_spec.rb +1 -2
- data/spec/controllers/entities/accounts_controller_spec.rb +65 -81
- data/spec/controllers/entities/campaigns_controller_spec.rb +69 -85
- data/spec/controllers/entities/contacts_controller_spec.rb +78 -95
- data/spec/controllers/entities/leads_controller_spec.rb +105 -127
- data/spec/controllers/entities/opportunities_controller_spec.rb +88 -103
- data/spec/controllers/entities_controller_spec.rb +39 -0
- data/spec/controllers/home_controller_spec.rb +101 -11
- data/spec/controllers/tasks_controller_spec.rb +27 -32
- data/spec/controllers/users_controller_spec.rb +95 -28
- data/spec/factories/account_factories.rb +2 -2
- data/spec/factories/opportunity_factories.rb +12 -4
- data/spec/factories/task_factories.rb +4 -0
- data/spec/factories/user_factories.rb +9 -2
- data/spec/helpers/application_helper_spec.rb +15 -1
- data/spec/helpers/groups_helper_spec.rb +15 -0
- data/spec/helpers/users_helper_spec.rb +26 -4
- data/spec/lib/comment_extensions_spec.rb +29 -0
- data/spec/lib/core_ext/{string.rb → string_spec.rb} +0 -1
- data/spec/lib/fields_spec.rb +104 -0
- data/spec/lib/permissions_spec.rb +144 -0
- data/spec/lib/view_factory_spec.rb +68 -0
- data/spec/mailers/subscription_mailer_spec.rb +18 -4
- data/spec/mailers/user_mailer_spec.rb +134 -0
- data/spec/models/entities/account_spec.rb +44 -4
- data/spec/models/entities/campaign_spec.rb +3 -4
- data/spec/models/entities/contact_spec.rb +45 -5
- data/spec/models/entities/lead_spec.rb +3 -4
- data/spec/models/entities/opportunity_spec.rb +105 -9
- data/spec/models/fields/custom_field_date_pair_spec.rb +106 -0
- data/spec/models/fields/custom_field_pair_spec.rb +94 -0
- data/spec/models/fields/custom_field_spec.rb +43 -23
- data/spec/models/fields/field_spec.rb +3 -5
- data/spec/models/observers/entity_observer_spec.rb +65 -0
- data/spec/models/polymorphic/task_spec.rb +74 -118
- data/spec/models/polymorphic/version_spec.rb +18 -18
- data/spec/models/users/group_spec.rb +5 -0
- data/spec/models/users/permission_spec.rb +18 -1
- data/spec/models/users/preference_spec.rb +5 -1
- data/spec/models/users/user_spec.rb +55 -8
- data/spec/shared/models.rb +54 -0
- data/spec/spec_helper.rb +82 -87
- data/spec/support/auth_macros.rb +2 -3
- data/spec/views/accounts/_edit.haml_spec.rb +1 -2
- data/spec/views/accounts/_new.haml_spec.rb +1 -2
- data/spec/views/accounts/create.rjs_spec.rb +1 -3
- data/spec/views/accounts/edit.rjs_spec.rb +3 -4
- data/spec/views/accounts/index.haml_spec.rb +9 -6
- data/spec/views/accounts/new.rjs_spec.rb +2 -9
- data/spec/views/accounts/show.haml_spec.rb +1 -2
- data/spec/views/accounts/update.rjs_spec.rb +2 -3
- data/spec/views/admin/users/_create.haml_spec.rb +1 -2
- data/spec/views/admin/users/create.rjs_spec.rb +1 -2
- data/spec/views/campaigns/_edit.haml_spec.rb +2 -3
- data/spec/views/campaigns/_new.haml_spec.rb +2 -3
- data/spec/views/campaigns/create.rjs_spec.rb +0 -3
- data/spec/views/campaigns/destroy.rjs_spec.rb +1 -2
- data/spec/views/campaigns/edit.rjs_spec.rb +3 -6
- data/spec/views/campaigns/index.haml_spec.rb +6 -3
- data/spec/views/campaigns/new.rjs_spec.rb +2 -13
- data/spec/views/campaigns/show.haml_spec.rb +4 -6
- data/spec/views/campaigns/update.rjs_spec.rb +2 -7
- data/spec/views/contacts/_edit.haml_spec.rb +6 -7
- data/spec/views/contacts/_new.haml_spec.rb +2 -3
- data/spec/views/contacts/create.rjs_spec.rb +1 -3
- data/spec/views/contacts/edit.rjs_spec.rb +3 -4
- data/spec/views/contacts/index.haml_spec.rb +6 -3
- data/spec/views/contacts/new.rjs_spec.rb +2 -11
- data/spec/views/contacts/show.haml_spec.rb +1 -2
- data/spec/views/contacts/update.rjs_spec.rb +2 -3
- data/spec/views/home/index.haml_spec.rb +6 -2
- data/spec/views/home/index.rjs_spec.rb +1 -2
- data/spec/views/home/options.rjs_spec.rb +1 -2
- data/spec/views/leads/_convert.haml_spec.rb +1 -2
- data/spec/views/leads/_edit.haml_spec.rb +2 -3
- data/spec/views/leads/_new.haml_spec.rb +2 -3
- data/spec/views/leads/_sidebar_show.haml_spec.rb +1 -2
- data/spec/views/leads/convert.rjs_spec.rb +3 -5
- data/spec/views/leads/edit.rjs_spec.rb +4 -5
- data/spec/views/leads/index.haml_spec.rb +6 -3
- data/spec/views/leads/new.rjs_spec.rb +2 -11
- data/spec/views/leads/promote.rjs_spec.rb +3 -5
- data/spec/views/leads/show.haml_spec.rb +1 -2
- data/spec/views/leads/update.rjs_spec.rb +2 -3
- data/spec/views/opportunities/_edit.haml_spec.rb +5 -6
- data/spec/views/opportunities/_new.haml_spec.rb +2 -4
- data/spec/views/opportunities/create.rjs_spec.rb +0 -2
- data/spec/views/opportunities/edit.rjs_spec.rb +3 -4
- data/spec/views/opportunities/index.haml_spec.rb +7 -4
- data/spec/views/opportunities/new.rjs_spec.rb +2 -12
- data/spec/views/opportunities/show.haml_spec.rb +1 -2
- data/spec/views/opportunities/update.rjs_spec.rb +2 -3
- data/spec/views/tasks/_edit.haml_spec.rb +1 -3
- data/spec/views/tasks/complete.rjs_spec.rb +2 -3
- data/spec/views/tasks/create.rjs_spec.rb +2 -2
- data/spec/views/tasks/edit.rjs_spec.rb +1 -2
- data/spec/views/tasks/new.rjs_spec.rb +1 -18
- data/spec/views/users/avatar.rjs_spec.rb +1 -2
- data/spec/views/users/change_password.rjs_spec.rb +1 -2
- data/spec/views/users/edit.rjs_spec.rb +1 -2
- data/spec/views/users/password.rjs_spec.rb +1 -1
- data/spec/views/users/update.rjs_spec.rb +1 -2
- data/spec/views/users/upload_avatar.rjs_spec.rb +6 -7
- data/vendor/assets/images/brief.png +0 -0
- data/vendor/assets/images/chosen-sprite.png +0 -0
- data/vendor/assets/images/full.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_flat_0_eeeeee_40x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_flat_100_ffffff_40x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_flat_25_3875d7_40x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_flat_55_ffffff_40x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_flat_65_3875d7_40x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_50_dddddd_1x100.png +0 -0
- data/vendor/assets/images/jquery-ui/{ui-icons_ef8c08_256x240.png → ui-icons_0073ea_256x240.png} +0 -0
- data/vendor/assets/images/jquery-ui/ui-icons_466bb1_256x240.png +0 -0
- data/vendor/assets/images/jquery-ui/{ui-icons_ffd27a_256x240.png → ui-icons_ff0084_256x240.png} +0 -0
- data/vendor/assets/images/long.png +0 -0
- data/vendor/assets/javascripts/chosen-jquery.js +3 -0
- data/vendor/assets/javascripts/chosen-prototype.js +3 -0
- data/vendor/assets/javascripts/chosen.jquery.coffee +574 -0
- data/vendor/assets/javascripts/chosen.proto.coffee +580 -0
- data/vendor/assets/javascripts/jquery.disable.js +23 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-addon.js +1882 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-af.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-ca.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-cz.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-de.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-el.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-es.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-et.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-fi.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-fr-CA.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-fr.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-gl.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-he.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-hu.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-id.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-it.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-ja.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-ko.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-lt.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-nl.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-no.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-pl.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-pt.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-ro.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-ru.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-sk.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-sv.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-tr.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-vi.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-zh-CN.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery-ui-timepicker-zh-TW.js +20 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery.ui.datepicker-cz.js +23 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery.ui.datepicker-de.js +23 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery.ui.datepicker-en-GB.js +23 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery.ui.datepicker-es.js +23 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery.ui.datepicker-fr.js +23 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery.ui.datepicker-it.js +23 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery.ui.datepicker-ja.js +23 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery.ui.datepicker-pl.js +23 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery.ui.datepicker-pt-BR.js +23 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery.ui.datepicker-ru.js +23 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery.ui.datepicker-sv-SE.js +23 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery.ui.datepicker-th.js +23 -0
- data/vendor/assets/javascripts/jquery_ui_datepicker/jquery.ui.datepicker-zh-CN.js +23 -0
- data/vendor/assets/javascripts/lib/abstract-chosen.coffee +110 -0
- data/vendor/assets/javascripts/lib/select-parser.coffee +51 -0
- data/vendor/assets/stylesheets/chosen.css.sass +361 -0
- data/vendor/assets/stylesheets/{jquery-ui.custom.css.erb → jquery-ui.custom.css} +70 -70
- data/zeus.json +21 -0
- metadata +304 -140
- data/acceptance/support/database_cleaner.rb +0 -16
- data/acceptance/support/paths.rb +0 -9
- data/app/views/accounts/_options.html.haml +0 -20
- data/app/views/accounts/_permissions.html.haml +0 -24
- data/app/views/accounts/options.js.rjs +0 -10
- data/app/views/admin/fields/_edit.html.haml +0 -9
- data/app/views/admin/fields/_new.html.haml +0 -10
- data/app/views/admin/fields/_options.html.haml +0 -12
- data/app/views/admin/fields/_top_section.html.haml +0 -54
- data/app/views/admin/fields/create.js.rjs +0 -16
- data/app/views/admin/fields/edit.js.rjs +0 -35
- data/app/views/admin/fields/index.js.rjs +0 -6
- data/app/views/admin/fields/new.js.rjs +0 -8
- data/app/views/admin/fields/options.js.rjs +0 -10
- data/app/views/admin/fields/update.js.rjs +0 -17
- data/app/views/campaigns/_options.html.haml +0 -20
- data/app/views/campaigns/_permissions.html.haml +0 -24
- data/app/views/campaigns/options.js.rjs +0 -10
- data/app/views/contacts/_options.html.haml +0 -21
- data/app/views/contacts/_permissions.html.haml +0 -24
- data/app/views/contacts/options.js.rjs +0 -10
- data/app/views/entities/_advanced_search.html.haml +0 -12
- data/app/views/entities/_condition_fields.html.haml +0 -14
- data/app/views/entities/_grouping_fields.html.haml +0 -12
- data/app/views/entities/advanced_search.js.rjs +0 -9
- data/app/views/entities/versions.js.rjs +0 -3
- data/app/views/leads/_options.html.haml +0 -21
- data/app/views/leads/_permissions.html.haml +0 -28
- data/app/views/leads/options.js.rjs +0 -10
- data/app/views/opportunities/_options.html.haml +0 -20
- data/app/views/opportunities/_permissions.html.haml +0 -24
- data/app/views/opportunities/options.js.rjs +0 -10
- data/app/views/shared/_outline.html.haml +0 -9
- data/app/views/shared/_per_page.html.haml +0 -10
- data/app/views/shared/_sort_by.html.haml +0 -10
- data/config/initializers/cancan.rb +0 -151
- data/config/initializers/squeel.rb +0 -5
- data/public/blank_iframe.html +0 -2
- data/spec/views/accounts/options.rjs_spec.rb +0 -59
- data/spec/views/campaigns/options.rjs_spec.rb +0 -60
- data/spec/views/contacts/options.rjs_spec.rb +0 -61
- data/spec/views/leads/options.rjs_spec.rb +0 -61
- data/spec/views/opportunities/options.rjs_spec.rb +0 -60
- 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/javascripts/calendar_date_select/calendar_date_select.js +0 -446
- data/vendor/assets/javascripts/calendar_date_select/format_american.js +0 -35
- data/vendor/assets/javascripts/calendar_date_select/format_danish.js +0 -31
- data/vendor/assets/javascripts/calendar_date_select/format_db.js +0 -27
- data/vendor/assets/javascripts/calendar_date_select/format_euro_24hr.js +0 -7
- data/vendor/assets/javascripts/calendar_date_select/format_euro_24hr_ymd.js +0 -7
- data/vendor/assets/javascripts/calendar_date_select/format_finnish.js +0 -32
- data/vendor/assets/javascripts/calendar_date_select/format_french.js +0 -24
- data/vendor/assets/javascripts/calendar_date_select/format_hyphen_ampm.js +0 -37
- data/vendor/assets/javascripts/calendar_date_select/format_iso_date.js +0 -29
- data/vendor/assets/javascripts/calendar_date_select/format_italian.js +0 -24
- data/vendor/assets/javascripts/calendar_date_select/locale/ar.js +0 -10
- data/vendor/assets/javascripts/calendar_date_select/locale/da.js +0 -11
- data/vendor/assets/javascripts/calendar_date_select/locale/de.js +0 -11
- data/vendor/assets/javascripts/calendar_date_select/locale/es.js +0 -11
- data/vendor/assets/javascripts/calendar_date_select/locale/fi.js +0 -10
- data/vendor/assets/javascripts/calendar_date_select/locale/fr.js +0 -11
- data/vendor/assets/javascripts/calendar_date_select/locale/it.js +0 -9
- data/vendor/assets/javascripts/calendar_date_select/locale/ja.js +0 -11
- data/vendor/assets/javascripts/calendar_date_select/locale/nl.js +0 -11
- data/vendor/assets/javascripts/calendar_date_select/locale/pl.js +0 -11
- data/vendor/assets/javascripts/calendar_date_select/locale/pt.js +0 -11
- data/vendor/assets/javascripts/calendar_date_select/locale/ru.js +0 -10
- data/vendor/assets/javascripts/calendar_date_select/locale/sl.js +0 -11
- data/vendor/assets/javascripts/calendar_date_select/locale/sv.js +0 -9
- data/vendor/assets/stylesheets/calendar_date_select/blue.css +0 -130
- data/vendor/assets/stylesheets/calendar_date_select/default.css +0 -135
- data/vendor/assets/stylesheets/calendar_date_select/green.css +0 -142
- data/vendor/assets/stylesheets/calendar_date_select/plain.css +0 -128
- data/vendor/assets/stylesheets/calendar_date_select/red.css +0 -135
- data/vendor/assets/stylesheets/calendar_date_select/silver.css +0 -133
- data/vendor/plugins/.gitkeep~master +0 -0
@@ -19,6 +19,7 @@ Rake::Task.remove("db:migrate:status") # (Clears task so that it can be extended
|
|
19
19
|
|
20
20
|
namespace :db do
|
21
21
|
namespace :migrate do
|
22
|
+
|
22
23
|
desc "Display status of migrations, including plugins"
|
23
24
|
task :status => :environment do
|
24
25
|
def find_migrations(path)
|
@@ -75,4 +76,3 @@ namespace :db do
|
|
75
76
|
|
76
77
|
end
|
77
78
|
end
|
78
|
-
|
@@ -17,6 +17,7 @@
|
|
17
17
|
|
18
18
|
namespace :db do
|
19
19
|
namespace :schema do
|
20
|
+
|
20
21
|
desc "Upgrade your database schema from ids to timestamps"
|
21
22
|
task :upgrade => :environment do
|
22
23
|
timestamps = Dir.glob("db/migrate/*.rb").map{|f| File.basename(f)[/(\d+)/,1] }.sort
|
@@ -26,6 +27,6 @@ namespace :db do
|
|
26
27
|
execute("update schema_migrations set version=#{timestamp} where version='#{i+1}';")
|
27
28
|
end
|
28
29
|
end
|
30
|
+
|
29
31
|
end
|
30
32
|
end
|
31
|
-
|
@@ -16,28 +16,8 @@
|
|
16
16
|
#------------------------------------------------------------------------------
|
17
17
|
|
18
18
|
namespace :ffcrm do
|
19
|
-
namespace :dropbox do
|
20
|
-
desc "Run dropbox crawler and process incoming emails"
|
21
|
-
task :run => :environment do
|
22
|
-
require "fat_free_crm/mail_processor/dropbox"
|
23
|
-
FatFreeCRM::MailProcessor::Dropbox.new.run(dry_run = false)
|
24
|
-
end
|
25
|
-
namespace :run do
|
26
|
-
desc "[Dry run] - Run dropbox crawler and process incoming emails"
|
27
|
-
task :dry => :environment do
|
28
|
-
require "fat_free_crm/mail_processor/dropbox"
|
29
|
-
FatFreeCRM::MailProcessor::Dropbox.new.run(dry_run = true)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
desc "Set up email dropbox based on currently loaded settings"
|
34
|
-
task :setup => :environment do
|
35
|
-
require "fat_free_crm/mail_processor/dropbox"
|
36
|
-
FatFreeCRM::MailProcessor::Dropbox.new.setup
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
19
|
namespace :comment_replies do
|
20
|
+
|
41
21
|
desc "Run comment inbox crawler and process incoming emails"
|
42
22
|
task :run => :environment do
|
43
23
|
require "fat_free_crm/mail_processor/comment_replies"
|
@@ -56,5 +36,6 @@ namespace :ffcrm do
|
|
56
36
|
require "fat_free_crm/mail_processor/comment_replies"
|
57
37
|
FatFreeCRM::MailProcessor::CommentReplies.new.setup
|
58
38
|
end
|
39
|
+
|
59
40
|
end
|
60
41
|
end
|
@@ -0,0 +1,33 @@
|
|
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
|
+
namespace :ffcrm do
|
19
|
+
namespace :config do
|
20
|
+
|
21
|
+
desc "Setup database.yml"
|
22
|
+
task :copy_database_yml do
|
23
|
+
require 'fileutils'
|
24
|
+
filename = "config/database.#{ENV['DB'] || 'postgres'}.yml"
|
25
|
+
orig, dest = FatFreeCRM.root.join(filename), Rails.root.join('config/database.yml')
|
26
|
+
unless File.exists?(dest)
|
27
|
+
puts "Copying #{filename} to config/database.yml ..."
|
28
|
+
FileUtils.cp orig, dest
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
@@ -17,11 +17,11 @@
|
|
17
17
|
|
18
18
|
namespace :ffcrm do
|
19
19
|
namespace :demo do
|
20
|
+
|
20
21
|
desc "Load demo data"
|
21
22
|
task :load => :environment do
|
22
|
-
# Load fixtures
|
23
|
+
# Load fixtures
|
23
24
|
require 'active_record/fixtures'
|
24
|
-
ActiveRecord::Base.establish_connection(Rails.env.to_sym)
|
25
25
|
Dir.glob(FatFreeCRM.root.join('db', 'demo', '*.{yml,csv}')).each do |fixture_file|
|
26
26
|
ActiveRecord::Fixtures.create_fixtures(FatFreeCRM.root.join('db/demo'), File.basename(fixture_file, '.*'))
|
27
27
|
end
|
@@ -71,5 +71,6 @@ namespace :ffcrm do
|
|
71
71
|
Rake::Task["db:migrate:reset"].invoke
|
72
72
|
Rake::Task["ffcrm:demo:load"].invoke
|
73
73
|
end
|
74
|
+
|
74
75
|
end
|
75
76
|
end
|
@@ -0,0 +1,42 @@
|
|
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
|
+
namespace :ffcrm do
|
19
|
+
namespace :dropbox do
|
20
|
+
|
21
|
+
desc "Run dropbox crawler and process incoming emails"
|
22
|
+
task :run => :environment do
|
23
|
+
require "fat_free_crm/mail_processor/dropbox"
|
24
|
+
FatFreeCRM::MailProcessor::Dropbox.new.run(dry_run = false)
|
25
|
+
end
|
26
|
+
|
27
|
+
namespace :run do
|
28
|
+
desc "[Dry run] - Run dropbox crawler and process incoming emails"
|
29
|
+
task :dry => :environment do
|
30
|
+
require "fat_free_crm/mail_processor/dropbox"
|
31
|
+
FatFreeCRM::MailProcessor::Dropbox.new.run(dry_run = true)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
desc "Set up email dropbox based on currently loaded settings"
|
36
|
+
task :setup => :environment do
|
37
|
+
require "fat_free_crm/mail_processor/dropbox"
|
38
|
+
FatFreeCRM::MailProcessor::Dropbox.new.setup
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,46 @@
|
|
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
|
+
namespace :ffcrm do
|
19
|
+
namespace :settings do
|
20
|
+
|
21
|
+
desc "Clear settings from database (reset to default)"
|
22
|
+
task :clear => :environment do
|
23
|
+
puts "== Clearing settings table..."
|
24
|
+
|
25
|
+
# Truncate settings table
|
26
|
+
ActiveRecord::Base.establish_connection(Rails.env)
|
27
|
+
if ActiveRecord::Base.connection.adapter_name.downcase == "sqlite"
|
28
|
+
ActiveRecord::Base.connection.execute("DELETE FROM settings")
|
29
|
+
else # mysql and postgres
|
30
|
+
ActiveRecord::Base.connection.execute("TRUNCATE settings")
|
31
|
+
end
|
32
|
+
|
33
|
+
puts "===== Settings table has been cleared."
|
34
|
+
end
|
35
|
+
|
36
|
+
desc "Show current settings in the database"
|
37
|
+
task :show => :environment do
|
38
|
+
ActiveRecord::Base.establish_connection(Rails.env)
|
39
|
+
names = ActiveRecord::Base.connection.select_values("SELECT name FROM settings ORDER BY name")
|
40
|
+
names.each do |name|
|
41
|
+
puts "\n#{name}:\n #{Setting.send(name).inspect}"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
@@ -15,46 +15,7 @@
|
|
15
15
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
16
16
|
#------------------------------------------------------------------------------
|
17
17
|
|
18
|
-
require 'fileutils'
|
19
|
-
|
20
18
|
namespace :ffcrm do
|
21
|
-
namespace :config do
|
22
|
-
desc "Setup database.yml"
|
23
|
-
task :copy_database_yml do
|
24
|
-
filename = "config/database.#{ENV['DB'] || 'postgres'}.yml"
|
25
|
-
orig, dest = FatFreeCRM.root.join(filename), Rails.root.join('config/database.yml')
|
26
|
-
unless File.exists?(dest)
|
27
|
-
puts "Copying #{filename} to config/database.yml ..."
|
28
|
-
FileUtils.cp orig, dest
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
namespace :settings do
|
34
|
-
desc "Clear settings from database (reset to default)"
|
35
|
-
task :clear => :environment do
|
36
|
-
puts "== Clearing settings table..."
|
37
|
-
|
38
|
-
# Truncate settings table
|
39
|
-
ActiveRecord::Base.establish_connection(Rails.env)
|
40
|
-
if ActiveRecord::Base.connection.adapter_name.downcase == "sqlite"
|
41
|
-
ActiveRecord::Base.connection.execute("DELETE FROM settings")
|
42
|
-
else # mysql and postgres
|
43
|
-
ActiveRecord::Base.connection.execute("TRUNCATE settings")
|
44
|
-
end
|
45
|
-
|
46
|
-
puts "===== Settings table has been cleared."
|
47
|
-
end
|
48
|
-
|
49
|
-
desc "Show current settings in the database"
|
50
|
-
task :show => :environment do
|
51
|
-
ActiveRecord::Base.establish_connection(Rails.env)
|
52
|
-
names = ActiveRecord::Base.connection.select_values("SELECT name FROM settings ORDER BY name")
|
53
|
-
names.each do |name|
|
54
|
-
puts "\n#{name}:\n #{Setting.send(name).inspect}"
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
19
|
|
59
20
|
desc "Prepare the database"
|
60
21
|
task :setup => :environment do
|
@@ -128,4 +89,5 @@ namespace :ffcrm do
|
|
128
89
|
puts "Admin user has been created."
|
129
90
|
end
|
130
91
|
end
|
92
|
+
|
131
93
|
end
|
@@ -0,0 +1,256 @@
|
|
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
|
+
namespace :ffcrm do
|
19
|
+
namespace :update_data do
|
20
|
+
|
21
|
+
#
|
22
|
+
# Important note about countries. Please read carefully!
|
23
|
+
#
|
24
|
+
# The country mapping in lib/plugins/country_select/lib/country_select.rb
|
25
|
+
# was found to be wrong. E.g. Australia was originally mapped to AS, which is
|
26
|
+
# officially the ISO code for American Samoa. (This is just one example!)
|
27
|
+
# From this point on, it will be mapped to AU, the correct ISO code for Australia.
|
28
|
+
# It is critical that you run 'rake ffcrm:update_data:fix_countries' to fix your address data.
|
29
|
+
#
|
30
|
+
# However, please note, this task should only ever be run ONCE!
|
31
|
+
#
|
32
|
+
# If you run it multiple times on the same database then you will mess up your existing
|
33
|
+
# address data. E.g. running once will map AS -> AU (Australia) and AU -> AT (Austria). If you run
|
34
|
+
# that again, it will map all Australian countries to Austria!! (...and so on for all the
|
35
|
+
# other mappings that have changed.)
|
36
|
+
#
|
37
|
+
# This message is also included in a migration and checks whether it has run before.
|
38
|
+
# i.e. if Setting.have_run_country_migration has been set.
|
39
|
+
# If not, it asks you to run this rake task.
|
40
|
+
#
|
41
|
+
desc "Update country codes to ISO 3166-1"
|
42
|
+
task :fix_countries => :environment do
|
43
|
+
|
44
|
+
message = """This task is only designed to run once and we think you've run this before!!!
|
45
|
+
|
46
|
+
Please read the following carefully!
|
47
|
+
|
48
|
+
The country mapping in lib/plugins/country_select/lib/country_select.rb
|
49
|
+
was found to be wrong. E.g. Australia was originally mapped to AS, which is
|
50
|
+
officially the ISO code for American Samoa. (This is just one example!)
|
51
|
+
From this point on, it will be mapped to AU, the correct ISO code for Australia.
|
52
|
+
It is critical that you run 'rake ffcrm:update_data:fix_countries' to fix your address data.
|
53
|
+
|
54
|
+
However, please note, this task should only ever be run ONCE!
|
55
|
+
|
56
|
+
If you run it multiple times on the same database then you will mess up your existing
|
57
|
+
address data. E.g. running once will map AS -> AU (Australia) and AU -> AT (Austria). If you run
|
58
|
+
that again, it will map all Australian countries to Austria!! (...and so on for all the
|
59
|
+
other mappings that have changed.)
|
60
|
+
|
61
|
+
This message is also included in a migration and checks whether it has run before.
|
62
|
+
i.e. if Setting.have_run_country_migration has been set. If not, it asks you to run this rake task.
|
63
|
+
|
64
|
+
If you really want to run it again, you will have to set Setting.have_run_country_migration = false
|
65
|
+
in a console and continue. This is strongly discouraged. You have been warned!
|
66
|
+
|
67
|
+
"""
|
68
|
+
|
69
|
+
if Setting.have_run_country_migration == true
|
70
|
+
puts message
|
71
|
+
exit
|
72
|
+
end
|
73
|
+
|
74
|
+
convert_table = [
|
75
|
+
#["Aland Islands", "FI", "AX"], # this clashed with FI for Finland. We'll prefer Finland.
|
76
|
+
["Algeria", "AG", "DZ"],
|
77
|
+
["American Samoa", "AQ", "AS"],
|
78
|
+
["Andorra", "AN", "AD"],
|
79
|
+
["Anguilla", "AV", "AI"],
|
80
|
+
["Antarctica", "AY", "AQ"],
|
81
|
+
["Antigua and Barbuda", "AC", "AG"],
|
82
|
+
["Aruba", "AA", "AW"],
|
83
|
+
["Australia", "AS", "AU"],
|
84
|
+
["Austria", "AU", "AT"],
|
85
|
+
["Azerbaijan", "AJ", "AZ"],
|
86
|
+
["Bahamas", "BF", "BS"],
|
87
|
+
["Bahrain", "BA", "BH"],
|
88
|
+
["Bangladesh", "BG", "BD"],
|
89
|
+
["Belarus", "BO", "BY"],
|
90
|
+
["Belize", "BH", "BZ"],
|
91
|
+
["Benin", "BN", "BJ"],
|
92
|
+
["Bermuda", "BD", "BM"],
|
93
|
+
["Bosnia and Herzegovina", "BK", "BA"],
|
94
|
+
["Botswana", "BC", "BW"],
|
95
|
+
["Brunei Darussalam", "BX", "BN"],
|
96
|
+
["Bulgaria", "BU", "BG"],
|
97
|
+
["Burkina Faso", "UV", "BF"],
|
98
|
+
["Burundi", "BY", "BI"],
|
99
|
+
["Cambodia", "CB", "KH"],
|
100
|
+
["Cayman Islands", "CJ", "KY"],
|
101
|
+
["Central African Republic", "CT", "CF"],
|
102
|
+
["Chad", "CD", "TD"],
|
103
|
+
["Chile", "CI", "CL"],
|
104
|
+
["China", "CH", "CN"],
|
105
|
+
["Christmas Island", "KT", "CX"],
|
106
|
+
["Cocos (Keeling) Islands", "CK", "CC"],
|
107
|
+
["Comoros", "CN", "KM"],
|
108
|
+
["Congo, the Democratic Republic of the", "CF", "CD"],
|
109
|
+
["Cook Islands", "CW", "CK"],
|
110
|
+
["Costa Rica", "CS", "CR"],
|
111
|
+
["Czech Republic", "EZ", "CZ"],
|
112
|
+
["Denmark", "DA", "DK"],
|
113
|
+
["Dominica", "DO", "DM"],
|
114
|
+
["Dominican Republic", "DR", "DO"],
|
115
|
+
["El Salvador", "ES", "SV"],
|
116
|
+
["Equatorial Guinea", "EK", "GQ"],
|
117
|
+
["Estonia", "EN", "EE"],
|
118
|
+
["French Guiana", "FG", "GF"],
|
119
|
+
["French Polynesia", "FP", "PF"],
|
120
|
+
["French Southern Territories", "FS", "TF"],
|
121
|
+
["Gabon", "GB", "GA"],
|
122
|
+
["Gambia", "GA", "GM"],
|
123
|
+
["Georgia", "GG", "GE"],
|
124
|
+
["Germany", "GM", "DE"],
|
125
|
+
["Grenada", "GJ", "GD"],
|
126
|
+
["Guam", "GQ", "GU"],
|
127
|
+
["Guernsey", "GK", "GG"],
|
128
|
+
["Guinea", "GV", "GN"],
|
129
|
+
["Guinea-Bissau", "PU", "GW"],
|
130
|
+
["Haiti", "HA", "HT"],
|
131
|
+
["Holy See (Vatican City State)", "VT", "VA"],
|
132
|
+
["Honduras", "HO", "HN"],
|
133
|
+
["Iceland", "IC", "IS"],
|
134
|
+
["Iraq", "IZ", "IQ"],
|
135
|
+
["Ireland", "EI", "IE"],
|
136
|
+
["Israel", "IS", "IL"],
|
137
|
+
["Japan", "JA", "JP"],
|
138
|
+
["Kiribati", "KR", "KI"],
|
139
|
+
["Korea, Democratic People's Republic of", "KN", "KP"],
|
140
|
+
["Korea, Republic of", "KS", "KR"],
|
141
|
+
["Kuwait", "KU", "KW"],
|
142
|
+
["Latvia", "LG", "LV"],
|
143
|
+
["Lebanon", "LE", "LB"],
|
144
|
+
["Lesotho", "LT", "LS"],
|
145
|
+
["Liberia", "LI", "LR"],
|
146
|
+
["Liechtenstein", "LS", "LI"],
|
147
|
+
["Lithuania", "LH", "LT"],
|
148
|
+
["Macao", "MC", "MO"],
|
149
|
+
["Madagascar", "MA", "MG"],
|
150
|
+
["Malawi", "MI", "MW"],
|
151
|
+
["Marshall Islands", "RM", "MH"],
|
152
|
+
["Martinique", "MB", "MQ"],
|
153
|
+
["Mauritius", "MP", "MU"],
|
154
|
+
["Mayotte", "MF", "YT"],
|
155
|
+
["Monaco", "MN", "MC"],
|
156
|
+
["Mongolia", "MG", "MN"],
|
157
|
+
["Montenegro", "MJ", "ME"],
|
158
|
+
["Montserrat", "MH", "MS"],
|
159
|
+
["Morocco", "MO", "MA"],
|
160
|
+
["Myanmar", "BM", "MM"],
|
161
|
+
["Namibia", "WA", "NA"],
|
162
|
+
["Nicaragua", "NU", "NI"],
|
163
|
+
["Niger", "NG", "NE"],
|
164
|
+
["Nigeria", "NI", "NG"],
|
165
|
+
["Niue", "NE", "NU"],
|
166
|
+
["Northern Mariana Islands", "CQ", "MP"],
|
167
|
+
["Oman", "MU", "OM"],
|
168
|
+
["Palau", "PS", "PW"],
|
169
|
+
["Palestinian Territory, Occupied", "WE", "PS"],
|
170
|
+
["Panama", "PM", "PA"],
|
171
|
+
["Papua New Guinea", "PP", "PG"],
|
172
|
+
["Paraguay", "PA", "PY"],
|
173
|
+
["Philippines", "RP", "PH"],
|
174
|
+
["Pitcairn", "PC", "PN"],
|
175
|
+
["Portugal", "PO", "PT"],
|
176
|
+
["Puerto Rico", "RQ", "PR"],
|
177
|
+
["Russian Federation", "RS", "RU"],
|
178
|
+
["Saint Kitts and Nevis", "SC", "KN"],
|
179
|
+
["Saint Lucia", "ST", "LC"],
|
180
|
+
["Saint Pierre and Miquelon", "SB", "PM"],
|
181
|
+
["Sao Tome and Principe", "TP", "ST"],
|
182
|
+
["Senegal", "SG", "SN"],
|
183
|
+
["Serbia", "RB", "RS"],
|
184
|
+
["Seychelles", "SE", "SC"],
|
185
|
+
["Singapore", "SN", "SG"],
|
186
|
+
["Slovakia", "LO", "SK"],
|
187
|
+
["Solomon Islands", "BP", "SB"],
|
188
|
+
["South Africa", "SF", "ZA"],
|
189
|
+
["South Georgia and the South Sandwich Islands", "SX", "GS"],
|
190
|
+
["Spain", "SP", "ES"],
|
191
|
+
["Sri Lanka", "CE", "LK"],
|
192
|
+
["Sudan", "SU", "SD"],
|
193
|
+
["Suriname", "NS", "SR"],
|
194
|
+
["Svalbard and Jan Mayen", "SV", "SJ"],
|
195
|
+
["Swaziland", "WZ", "SZ"],
|
196
|
+
["Sweden", "SW", "SE"],
|
197
|
+
["Switzerland", "SZ", "CH"],
|
198
|
+
["Tajikistan", "TI", "TJ"],
|
199
|
+
["Timor-Leste", "TT", "TL"],
|
200
|
+
["Togo", "TO", "TG"],
|
201
|
+
["Tokelau", "TL", "TK"],
|
202
|
+
["Tonga", "TN", "TO"],
|
203
|
+
["Trinidad and Tobago", "TD", "TT"],
|
204
|
+
["Tunisia", "TS", "TN"],
|
205
|
+
["Turkey", "TU", "TR"],
|
206
|
+
["Turkmenistan", "TX", "TM"],
|
207
|
+
["Turks and Caicos Islands", "TK", "TC"],
|
208
|
+
["Ukraine", "UP", "UA"],
|
209
|
+
["United Kingdom", "UK", "GB"],
|
210
|
+
["Vanuatu", "NH", "VU"],
|
211
|
+
["Viet Nam", "VM", "VN"],
|
212
|
+
["Virgin Islands, British", "VI", "VG"],
|
213
|
+
["Virgin Islands, U.S.", "VQ", "VI"],
|
214
|
+
["Western Sahara", "WI", "EH"],
|
215
|
+
["Yemen", "YM", "YE"],
|
216
|
+
["Zambia", "ZA", "ZM"],
|
217
|
+
["Zimbabwe", "ZI", "ZW"],
|
218
|
+
["United States", "USA", "US"],
|
219
|
+
]
|
220
|
+
|
221
|
+
addresses_to_update = []
|
222
|
+
|
223
|
+
# e.g. convert AS -> AU and Australia -> AU
|
224
|
+
# SELECT "addresses".* FROM "addresses"
|
225
|
+
# WHERE (("addresses"."country" = 'AU' OR "addresses"."country" = 'Australia'))
|
226
|
+
convert_table.each { |ct|
|
227
|
+
t=Address.arel_table
|
228
|
+
scope = t[:country].eq(ct[0]) # Australia
|
229
|
+
scope = scope.or(t[:country].eq(ct[1])) # AU
|
230
|
+
|
231
|
+
tmp = Address.where(scope)
|
232
|
+
tmp.map{ |t| t.country=ct[2] }
|
233
|
+
|
234
|
+
unless tmp.blank?
|
235
|
+
addresses_to_update << tmp
|
236
|
+
end
|
237
|
+
}
|
238
|
+
|
239
|
+
Address.transaction do
|
240
|
+
begin
|
241
|
+
addresses_to_update.each { |address_arr|
|
242
|
+
address_arr.each { |address|
|
243
|
+
address.save!
|
244
|
+
}
|
245
|
+
}
|
246
|
+
Setting.have_run_country_migration = true
|
247
|
+
rescue Exception => e
|
248
|
+
ActiveRecord::Rollback
|
249
|
+
puts e
|
250
|
+
end
|
251
|
+
end
|
252
|
+
|
253
|
+
end
|
254
|
+
end
|
255
|
+
|
256
|
+
end
|