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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +345 -7
- data/README.md +22 -19
- data/app/assets/stylesheets/advanced_search.css.scss +1 -1
- data/app/assets/stylesheets/base.scss +11 -7
- data/app/assets/stylesheets/common.scss +20 -17
- data/app/assets/stylesheets/header.scss +2 -2
- data/app/assets/stylesheets/rails.scss +2 -2
- data/app/controllers/comments_controller.rb +1 -1
- data/app/controllers/entities/contacts_controller.rb +3 -1
- data/app/controllers/entities/leads_controller.rb +3 -1
- data/app/controllers/home_controller.rb +1 -1
- data/app/controllers/users_controller.rb +1 -1
- data/app/helpers/application_helper.rb +42 -4
- data/app/helpers/contacts_helper.rb +28 -0
- data/app/mailers/subscription_mailer.rb +1 -1
- data/app/models/entities/account.rb +2 -0
- data/app/models/observers/opportunity_observer.rb +1 -1
- data/app/views/accounts/_contact_info.html.haml +14 -6
- data/app/views/accounts/_index_long.html.haml +1 -1
- data/app/views/accounts/_sidebar_show.html.haml +23 -5
- data/app/views/admin/users/_user.html.haml +6 -4
- data/app/views/comments/_comment.html.haml +3 -3
- data/app/views/contacts/_extra.html.haml +3 -3
- data/app/views/contacts/_index_full.html.haml +2 -2
- data/app/views/contacts/_index_long.html.haml +2 -2
- data/app/views/contacts/_section_general.html.haml +1 -1
- data/app/views/contacts/_sidebar_show.html.haml +3 -3
- data/app/views/contacts/_top_section.html.haml +2 -2
- data/app/views/contacts/_web.html.haml +1 -1
- data/app/views/home/_account.html.haml +1 -1
- data/app/views/layouts/application.html.haml +4 -0
- data/app/views/leads/_contact.html.haml +3 -3
- data/app/views/leads/_index_long.html.haml +2 -2
- data/app/views/leads/_opportunity.html.haml +2 -2
- data/app/views/leads/_sidebar_show.html.haml +2 -2
- data/app/views/leads/_status.html.haml +1 -1
- data/app/views/leads/_top_section.html.haml +1 -1
- data/app/views/opportunities/_top_section.html.haml +2 -2
- data/app/views/tasks/create.js.haml +1 -1
- data/app/views/users/_profile.html.haml +2 -2
- data/app/views/users/_user.html.haml +6 -5
- data/config/initializers/action_mailer.rb +7 -7
- data/config/initializers/custom_field_ransack_translations.rb +3 -3
- data/config/initializers/relative_url_root.rb +3 -1
- data/config/initializers/secret_token.rb +6 -2
- data/config/initializers/simple_form.rb +1 -1
- data/config/locales/fat_free_crm.cs.yml +3 -3
- data/config/locales/fat_free_crm.de.yml +3 -3
- data/config/locales/fat_free_crm.en-GB.yml +3 -3
- data/config/locales/fat_free_crm.en-US.yml +3 -3
- data/config/locales/fat_free_crm.es-CL.yml +3 -3
- data/config/locales/fat_free_crm.es.yml +3 -3
- data/config/locales/fat_free_crm.et.yml +3 -3
- data/config/locales/fat_free_crm.fr-CA.yml +3 -3
- data/config/locales/fat_free_crm.fr.yml +3 -3
- data/config/locales/fat_free_crm.it.yml +3 -3
- data/config/locales/fat_free_crm.ja.yml +3 -3
- data/config/locales/fat_free_crm.nl.yml +3 -3
- data/config/locales/fat_free_crm.pl.yml +3 -3
- data/config/locales/fat_free_crm.pt-BR.yml +3 -3
- data/config/locales/fat_free_crm.ru.yml +3 -3
- data/config/locales/fat_free_crm.sv-SE.yml +3 -3
- data/config/locales/fat_free_crm.th.yml +3 -3
- data/config/locales/fat_free_crm.zh-CN.yml +3 -3
- data/config/settings.default.yml +10 -2
- data/db/demo/accounts.yml +2 -0
- data/db/fat_free_crm_development.sqlite3 +0 -0
- data/db/{fat_free_crm_test.sqlite3-shm → fat_free_crm_development.sqlite3-shm} +0 -0
- data/db/fat_free_crm_development.sqlite3-wal +0 -0
- data/db/fat_free_crm_test.sqlite3 +0 -0
- data/db/migrate/20100928030623_create_addresses.rb +1 -1
- data/db/migrate/20230526212613_convert_to_active_storage.rb +2 -2
- data/db/migrate/20250805093408_add_latitude_and_longitude_to_accounts.rb +8 -0
- data/db/schema.rb +12 -1
- data/lib/fat_free_crm/fields.rb +3 -0
- data/lib/fat_free_crm/mail_processor/dropbox.rb +1 -1
- data/lib/fat_free_crm/version.rb +2 -2
- metadata +10 -9
- 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: 折扣
|
data/config/settings.default.yml
CHANGED
@@ -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
|
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
|
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
|
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
|
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:
|
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"
|
data/lib/fat_free_crm/fields.rb
CHANGED
@@ -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 "
|
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}"
|
data/lib/fat_free_crm/version.rb
CHANGED
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.
|
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:
|
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:
|
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:
|
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:
|
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
|