fat_free_crm 0.24.2 → 0.25.0

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.

Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +345 -7
  3. data/README.md +22 -19
  4. data/app/assets/stylesheets/advanced_search.css.scss +1 -1
  5. data/app/assets/stylesheets/base.scss +11 -7
  6. data/app/assets/stylesheets/common.scss +20 -17
  7. data/app/assets/stylesheets/header.scss +2 -2
  8. data/app/assets/stylesheets/rails.scss +2 -2
  9. data/app/controllers/comments_controller.rb +1 -1
  10. data/app/controllers/entities/contacts_controller.rb +3 -1
  11. data/app/controllers/entities/leads_controller.rb +3 -1
  12. data/app/controllers/home_controller.rb +1 -1
  13. data/app/controllers/users_controller.rb +1 -1
  14. data/app/helpers/application_helper.rb +42 -4
  15. data/app/helpers/contacts_helper.rb +28 -0
  16. data/app/mailers/subscription_mailer.rb +1 -1
  17. data/app/models/entities/account.rb +2 -0
  18. data/app/models/observers/opportunity_observer.rb +1 -1
  19. data/app/views/accounts/_contact_info.html.haml +14 -6
  20. data/app/views/accounts/_index_long.html.haml +1 -1
  21. data/app/views/accounts/_sidebar_show.html.haml +23 -5
  22. data/app/views/admin/users/_user.html.haml +6 -4
  23. data/app/views/comments/_comment.html.haml +3 -3
  24. data/app/views/contacts/_extra.html.haml +3 -3
  25. data/app/views/contacts/_index_full.html.haml +2 -2
  26. data/app/views/contacts/_index_long.html.haml +2 -2
  27. data/app/views/contacts/_section_general.html.haml +1 -1
  28. data/app/views/contacts/_sidebar_show.html.haml +3 -3
  29. data/app/views/contacts/_top_section.html.haml +2 -2
  30. data/app/views/contacts/_web.html.haml +1 -1
  31. data/app/views/home/_account.html.haml +1 -1
  32. data/app/views/layouts/application.html.haml +4 -0
  33. data/app/views/leads/_contact.html.haml +3 -3
  34. data/app/views/leads/_index_long.html.haml +2 -2
  35. data/app/views/leads/_opportunity.html.haml +2 -2
  36. data/app/views/leads/_sidebar_show.html.haml +2 -2
  37. data/app/views/leads/_status.html.haml +1 -1
  38. data/app/views/leads/_top_section.html.haml +1 -1
  39. data/app/views/opportunities/_top_section.html.haml +2 -2
  40. data/app/views/tasks/create.js.haml +1 -1
  41. data/app/views/users/_profile.html.haml +2 -2
  42. data/app/views/users/_user.html.haml +6 -5
  43. data/config/initializers/action_mailer.rb +7 -7
  44. data/config/initializers/custom_field_ransack_translations.rb +3 -3
  45. data/config/initializers/relative_url_root.rb +3 -1
  46. data/config/initializers/secret_token.rb +6 -2
  47. data/config/initializers/simple_form.rb +1 -1
  48. data/config/locales/fat_free_crm.cs.yml +3 -3
  49. data/config/locales/fat_free_crm.de.yml +3 -3
  50. data/config/locales/fat_free_crm.en-GB.yml +3 -3
  51. data/config/locales/fat_free_crm.en-US.yml +3 -3
  52. data/config/locales/fat_free_crm.es-CL.yml +3 -3
  53. data/config/locales/fat_free_crm.es.yml +3 -3
  54. data/config/locales/fat_free_crm.et.yml +3 -3
  55. data/config/locales/fat_free_crm.fr-CA.yml +3 -3
  56. data/config/locales/fat_free_crm.fr.yml +3 -3
  57. data/config/locales/fat_free_crm.it.yml +3 -3
  58. data/config/locales/fat_free_crm.ja.yml +3 -3
  59. data/config/locales/fat_free_crm.nl.yml +3 -3
  60. data/config/locales/fat_free_crm.pl.yml +3 -3
  61. data/config/locales/fat_free_crm.pt-BR.yml +3 -3
  62. data/config/locales/fat_free_crm.ru.yml +3 -3
  63. data/config/locales/fat_free_crm.sv-SE.yml +3 -3
  64. data/config/locales/fat_free_crm.th.yml +3 -3
  65. data/config/locales/fat_free_crm.zh-CN.yml +3 -3
  66. data/config/settings.default.yml +10 -2
  67. data/db/demo/accounts.yml +2 -0
  68. data/db/fat_free_crm_development.sqlite3 +0 -0
  69. data/db/{fat_free_crm_test.sqlite3-shm → fat_free_crm_development.sqlite3-shm} +0 -0
  70. data/db/fat_free_crm_development.sqlite3-wal +0 -0
  71. data/db/fat_free_crm_test.sqlite3 +0 -0
  72. data/db/migrate/20100928030623_create_addresses.rb +1 -1
  73. data/db/migrate/20230526212613_convert_to_active_storage.rb +2 -2
  74. data/db/migrate/20250805093408_add_latitude_and_longitude_to_accounts.rb +8 -0
  75. data/db/schema.rb +12 -1
  76. data/lib/fat_free_crm/fields.rb +3 -0
  77. data/lib/fat_free_crm/mail_processor/dropbox.rb +1 -1
  78. data/lib/fat_free_crm/version.rb +2 -2
  79. metadata +10 -9
  80. data/db/fat_free_crm_test.sqlite3-wal +0 -0
@@ -345,7 +345,7 @@ zh-CN:
345
345
  actual: 实际
346
346
  actual_performance: 实际效益
347
347
  budget: 预算
348
- budget_label: 预算()
348
+ budget_label: 预算(%{currency})
349
349
  campaign: 促销
350
350
  campaign_and_leads: 促销与领导
351
351
  campaign_small: 促销
@@ -371,7 +371,7 @@ zh-CN:
371
371
 
372
372
  objectives_small: 战役目标
373
373
  revenue: 收入
374
- revenue_label: 收入()
374
+ revenue_label: 收入(%{currency})
375
375
  revenue_number: 收入%{value}
376
376
  save_campaign: 保存促销
377
377
  start_date: 开始日期
@@ -475,7 +475,7 @@ zh-CN:
475
475
  closes_today: 预计今天结束!
476
476
  closing_date: 结束日期是 %{value}
477
477
  create_opportunity: 创建商机
478
- currency: ()
478
+ currency: ""
479
479
  days_late: 晚了
480
480
  days_left: 天剩余
481
481
  discount: 折扣
@@ -80,7 +80,7 @@
80
80
  :email_dropbox:
81
81
  :server : "" # IMAP server name.
82
82
  :port : "" # IMAP server port number.
83
- :ssl : "" # True for secure IMAP connection, false othewise.
83
+ :ssl : "" # True for secure IMAP connection, false otherwise.
84
84
  :address : "" # Dropbox email address.
85
85
  :user : "" # User to login to the IMAP server.
86
86
  :password : "" # Password to login to the IMAP server.
@@ -99,7 +99,7 @@
99
99
  :email_comment_replies:
100
100
  :server : "" # IMAP server name.
101
101
  :port : "" # IMAP server port number.
102
- :ssl : "" # True for secure IMAP connection, false othewise.
102
+ :ssl : "" # True for secure IMAP connection, false otherwise.
103
103
  :address : "" # Comment reply email address.
104
104
  :user : "" # User to login to the IMAP server.
105
105
  :password : "" # Password to login to the IMAP server.
@@ -358,3 +358,11 @@ task_completed:
358
358
  - :completed_last_week
359
359
  - :completed_this_month
360
360
  - :completed_last_month
361
+
362
+ # Phone Numbers
363
+ #------------------------------------------------------------------------------
364
+ # Enforce international phone number format (e.g. +1-555-555-5555)
365
+ # When set to true, a 'pattern' attribute will be added to all phone input fields
366
+ # to help guide users to enter phone numbers in international format.
367
+ #
368
+ :enforce_international_phone_format: false
data/db/demo/accounts.yml CHANGED
@@ -44,4 +44,6 @@ account<%= i %>:
44
44
  category : <%= category.sample %>
45
45
  created_at : <%= created_at = (rand(60) + 2).days.ago + rand(600).minutes; created_at.to_fs(:db) %>
46
46
  updated_at : <%= (created_at + rand(36_000).seconds).to_fs(:db) %>
47
+ latitude : <%= FFaker::Geolocation.lat %>
48
+ longitude : <%= FFaker::Geolocation.lng %>
47
49
  <% end %>
Binary file
Binary file
@@ -34,7 +34,7 @@ class CreateAddresses < ActiveRecord::Migration[4.2]
34
34
  Address.create(street1: asset.address, full_address: asset.address, address_type: "Business", addressable: asset)
35
35
  end
36
36
 
37
- # Remove addresses columns from assets allready migrated
37
+ # Remove addresses columns from assets already migrated
38
38
  remove_column(:contacts, :address)
39
39
  remove_column(:accounts, :billing_address)
40
40
  remove_column(:accounts, :shipping_address)
@@ -11,8 +11,8 @@ class ConvertToActiveStorage < ActiveRecord::Migration[5.2]
11
11
  else
12
12
  'LASTVAL()'
13
13
  end
14
- get_blob_id = 'LAST_INSERT_ROWID()' if conn.is_a?(SQLite3::Database)
15
- if conn.is_a?(::PG::Connection)
14
+ get_blob_id = 'LAST_INSERT_ROWID()' if Object.const_defined?("SQLite3") && conn.is_a?(SQLite3::Database)
15
+ if Object.const_defined?("PG") && conn.is_a?(::PG::Connection)
16
16
  get_blob_id = 'LASTVAL()'
17
17
  conn.prepare('active_storage_blobs', <<-SQL)
18
18
  INSERT INTO active_storage_blobs (
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddLatitudeAndLongitudeToAccounts < ActiveRecord::Migration[4.2]
4
+ def change
5
+ add_column :accounts, :latitude, :decimal, precision: 10, scale: 6
6
+ add_column :accounts, :longitude, :decimal, precision: 10, scale: 6
7
+ end
8
+ end
data/db/schema.rb CHANGED
@@ -10,7 +10,7 @@
10
10
  #
11
11
  # It's strongly recommended that you check this file into your version control system.
12
12
 
13
- ActiveRecord::Schema[7.1].define(version: 2023_05_26_212613) do
13
+ ActiveRecord::Schema[7.1].define(version: 2025_08_05_093408) do
14
14
  create_table "account_contacts", force: :cascade do |t|
15
15
  t.integer "account_id"
16
16
  t.integer "contact_id"
@@ -48,6 +48,9 @@ ActiveRecord::Schema[7.1].define(version: 2023_05_26_212613) do
48
48
  t.text "subscribed_users"
49
49
  t.integer "contacts_count", default: 0
50
50
  t.integer "opportunities_count", default: 0
51
+ t.string "wikidata_id"
52
+ t.decimal "latitude", precision: 10, scale: 6
53
+ t.decimal "longitude", precision: 10, scale: 6
51
54
  t.index ["assigned_to"], name: "index_accounts_on_assigned_to"
52
55
  t.index ["user_id", "name", "deleted_at"], name: "index_accounts_on_user_id_and_name_and_deleted_at", unique: true
53
56
  end
@@ -366,6 +369,14 @@ ActiveRecord::Schema[7.1].define(version: 2023_05_26_212613) do
366
369
  t.index ["user_id", "name"], name: "index_preferences_on_user_id_and_name"
367
370
  end
368
371
 
372
+ create_table "research_tools", force: :cascade do |t|
373
+ t.string "name"
374
+ t.string "url_template"
375
+ t.boolean "enabled", default: false, null: false
376
+ t.datetime "created_at", null: false
377
+ t.datetime "updated_at", null: false
378
+ end
379
+
369
380
  create_table "sessions", force: :cascade do |t|
370
381
  t.string "session_id", null: false
371
382
  t.text "data"
@@ -25,6 +25,9 @@ module FatFreeCRM
25
25
  module SingletonMethods
26
26
  def field_groups
27
27
  # catches cases where this code runs before database has been created or migrated
28
+ return [] unless ActiveRecord::Base.connection.active?
29
+ return [] unless ActiveRecord::Base.connection.table_exists?(:field_groups)
30
+
28
31
  FieldGroup.where(klass_name: name).order(:position)
29
32
  rescue ActiveRecord::NoDatabaseError, ActiveRecord::StatementInvalid
30
33
  []
@@ -232,7 +232,7 @@ module FatFreeCRM
232
232
  # Search for domain name in Accounts.
233
233
  account = Account.where('(lower(email) like ? OR lower(website) like ?)', "%#{recipient_domain.downcase}", "%#{recipient_domain.downcase}%").first
234
234
  if account
235
- log "asociating new contact #{recipient} with the account #{account.name}"
235
+ log "associating new contact #{recipient} with the account #{account.name}"
236
236
  defaults[:account] = account
237
237
  else
238
238
  log "creating new account #{recipient_domain.capitalize} for the contact #{recipient}"
@@ -8,8 +8,8 @@
8
8
  module FatFreeCRM
9
9
  module VERSION # :nodoc:
10
10
  MAJOR = 0
11
- MINOR = 24
12
- TINY = 2
11
+ MINOR = 25
12
+ TINY = 0
13
13
  PRE = nil
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fat_free_crm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.24.2
4
+ version: 0.25.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Dvorkin
@@ -228,19 +228,19 @@ dependencies:
228
228
  - !ruby/object:Gem::Version
229
229
  version: 0.2.0
230
230
  - !ruby/object:Gem::Dependency
231
- name: acts_as_commentable2
231
+ name: acts_as_commentable
232
232
  requirement: !ruby/object:Gem::Requirement
233
233
  requirements:
234
- - - "~>"
234
+ - - ">="
235
235
  - !ruby/object:Gem::Version
236
- version: 7.1.0
236
+ version: '6.1'
237
237
  type: :runtime
238
238
  prerelease: false
239
239
  version_requirements: !ruby/object:Gem::Requirement
240
240
  requirements:
241
- - - "~>"
241
+ - - ">="
242
242
  - !ruby/object:Gem::Version
243
- version: 7.1.0
243
+ version: '6.1'
244
244
  - !ruby/object:Gem::Dependency
245
245
  name: acts-as-taggable-on
246
246
  requirement: !ruby/object:Gem::Requirement
@@ -382,7 +382,7 @@ dependencies:
382
382
  - !ruby/object:Gem::Version
383
383
  version: '0'
384
384
  - !ruby/object:Gem::Dependency
385
- name: responds_to_parent2
385
+ name: responds_to_parent
386
386
  requirement: !ruby/object:Gem::Requirement
387
387
  requirements:
388
388
  - - ">="
@@ -1090,9 +1090,9 @@ files:
1090
1090
  - db/demo/tasks.yml
1091
1091
  - db/demo/users.yml
1092
1092
  - db/fat_free_crm_development.sqlite3
1093
+ - db/fat_free_crm_development.sqlite3-shm
1094
+ - db/fat_free_crm_development.sqlite3-wal
1093
1095
  - db/fat_free_crm_test.sqlite3
1094
- - db/fat_free_crm_test.sqlite3-shm
1095
- - db/fat_free_crm_test.sqlite3-wal
1096
1096
  - db/migrate/20100928030598_create_sessions.rb
1097
1097
  - db/migrate/20100928030599_create_users.rb
1098
1098
  - db/migrate/20100928030600_create_openid_tables.rb
@@ -1168,6 +1168,7 @@ files:
1168
1168
  - db/migrate/20230422234321_optionally_create_action_text_tables.action_text.rb
1169
1169
  - db/migrate/20230526211831_create_active_storage_tables.active_storage.rb
1170
1170
  - db/migrate/20230526212613_convert_to_active_storage.rb
1171
+ - db/migrate/20250805093408_add_latitude_and_longitude_to_accounts.rb
1171
1172
  - db/schema.rb
1172
1173
  - db/seeds.rb
1173
1174
  - db/seeds/fields.rb
Binary file