fat_free_crm 0.21.0 → 0.22.0

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.

Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/fat_free_crm.js +3 -0
  3. data/app/assets/config/manifest.js +1 -3
  4. data/app/controllers/admin/field_groups_controller.rb +0 -2
  5. data/app/controllers/admin/tags_controller.rb +1 -1
  6. data/app/controllers/admin/users_controller.rb +1 -1
  7. data/app/controllers/application_controller.rb +11 -0
  8. data/app/controllers/comments_controller.rb +2 -0
  9. data/app/controllers/emails_controller.rb +2 -0
  10. data/app/controllers/entities/accounts_controller.rb +3 -1
  11. data/app/controllers/entities/campaigns_controller.rb +3 -1
  12. data/app/controllers/entities/contacts_controller.rb +3 -1
  13. data/app/controllers/entities/leads_controller.rb +4 -2
  14. data/app/controllers/entities/opportunities_controller.rb +3 -1
  15. data/app/controllers/entities_controller.rb +2 -0
  16. data/app/controllers/home_controller.rb +2 -0
  17. data/app/controllers/lists_controller.rb +2 -0
  18. data/app/controllers/tasks_controller.rb +3 -1
  19. data/app/controllers/users_controller.rb +2 -0
  20. data/app/models/fields/custom_field.rb +2 -2
  21. data/app/models/observers/entity_observer.rb +1 -1
  22. data/app/models/polymorphic/comment.rb +1 -1
  23. data/app/models/setting.rb +4 -5
  24. data/app/models/users/user.rb +1 -1
  25. data/bin/bundle +108 -2
  26. data/bin/rails +3 -3
  27. data/bin/rake +2 -2
  28. data/bin/setup +12 -15
  29. data/config/application.rb +9 -4
  30. data/config/boot.rb +3 -5
  31. data/config/cable.yml +10 -0
  32. data/config/database.yml +26 -0
  33. data/config/environment.rb +4 -3
  34. data/config/environments/development.rb +47 -14
  35. data/config/environments/production.rb +17 -15
  36. data/config/environments/test.rb +19 -9
  37. data/config/initializers/action_mailer.rb +1 -0
  38. data/config/initializers/content_security_policy.rb +21 -26
  39. data/config/initializers/custom_field_ransack_translations.rb +1 -0
  40. data/config/initializers/filter_parameter_logging.rb +6 -2
  41. data/config/initializers/inflections.rb +4 -4
  42. data/config/initializers/permissions_policy.rb +12 -0
  43. data/config/storage.yml +5 -5
  44. data/db/demo/field_groups.yml +2 -1
  45. data/db/migrate/20230526212613_convert_to_active_storage.rb +27 -11
  46. data/db/schema.rb +107 -105
  47. data/lib/fat_free_crm/callback.rb +2 -3
  48. data/lib/fat_free_crm/mail_processor/dropbox.rb +1 -1
  49. data/lib/fat_free_crm/version.rb +1 -1
  50. data/public/avatars/User/2/large_rails.png +0 -0
  51. data/public/avatars/User/2/medium_rails.png +0 -0
  52. data/public/avatars/User/2/original_rails.png +0 -0
  53. data/public/avatars/User/2/small_rails.png +0 -0
  54. data/public/avatars/User/2/thumb_rails.png +0 -0
  55. data/public/avatars/User/3/large_rails.png +0 -0
  56. data/public/avatars/User/3/medium_rails.png +0 -0
  57. data/public/avatars/User/3/original_rails.png +0 -0
  58. data/public/avatars/User/3/small_rails.png +0 -0
  59. data/public/avatars/User/3/thumb_rails.png +0 -0
  60. data/public/avatars/User/4/large_rails.png +0 -0
  61. data/public/avatars/User/4/medium_rails.png +0 -0
  62. data/public/avatars/User/4/original_rails.png +0 -0
  63. data/public/avatars/User/4/small_rails.png +0 -0
  64. data/public/avatars/User/4/thumb_rails.png +0 -0
  65. data/public/avatars/User/6/large_rails.png +0 -0
  66. data/public/avatars/User/6/medium_rails.png +0 -0
  67. data/public/avatars/User/6/original_rails.png +0 -0
  68. data/public/avatars/User/6/small_rails.png +0 -0
  69. data/public/avatars/User/6/thumb_rails.png +0 -0
  70. data/public/avatars/User/7/large_rails.png +0 -0
  71. data/public/avatars/User/7/medium_rails.png +0 -0
  72. data/public/avatars/User/7/original_rails.png +0 -0
  73. data/public/avatars/User/7/small_rails.png +0 -0
  74. data/public/avatars/User/7/thumb_rails.png +0 -0
  75. metadata +64 -16
  76. data/config/initializers/new_framework_defaults_6_0.rb +0 -46
data/db/schema.rb CHANGED
@@ -10,27 +10,29 @@
10
10
  #
11
11
  # It's strongly recommended that you check this file into your version control system.
12
12
 
13
- ActiveRecord::Schema.define(version: 2023_05_26_212613) do
13
+ ActiveRecord::Schema[7.0].define(version: 2023_05_26_212613) do
14
+ # These are extensions that must be enabled in order to support this database
15
+ enable_extension "plpgsql"
14
16
 
15
- create_table "account_contacts", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
17
+ create_table "account_contacts", force: :cascade do |t|
16
18
  t.integer "account_id"
17
19
  t.integer "contact_id"
18
- t.datetime "deleted_at"
19
- t.datetime "created_at"
20
- t.datetime "updated_at"
20
+ t.datetime "deleted_at", precision: nil
21
+ t.datetime "created_at", precision: nil
22
+ t.datetime "updated_at", precision: nil
21
23
  t.index ["account_id", "contact_id"], name: "index_account_contacts_on_account_id_and_contact_id"
22
24
  end
23
25
 
24
- create_table "account_opportunities", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
26
+ create_table "account_opportunities", force: :cascade do |t|
25
27
  t.integer "account_id"
26
28
  t.integer "opportunity_id"
27
- t.datetime "deleted_at"
28
- t.datetime "created_at"
29
- t.datetime "updated_at"
29
+ t.datetime "deleted_at", precision: nil
30
+ t.datetime "created_at", precision: nil
31
+ t.datetime "updated_at", precision: nil
30
32
  t.index ["account_id", "opportunity_id"], name: "index_account_opportunities_on_account_id_and_opportunity_id"
31
33
  end
32
34
 
33
- create_table "accounts", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
35
+ create_table "accounts", force: :cascade do |t|
34
36
  t.integer "user_id"
35
37
  t.integer "assigned_to"
36
38
  t.string "name", limit: 64, default: "", null: false
@@ -39,9 +41,9 @@ ActiveRecord::Schema.define(version: 2023_05_26_212613) do
39
41
  t.string "toll_free_phone", limit: 32
40
42
  t.string "phone", limit: 32
41
43
  t.string "fax", limit: 32
42
- t.datetime "deleted_at"
43
- t.datetime "created_at"
44
- t.datetime "updated_at"
44
+ t.datetime "deleted_at", precision: nil
45
+ t.datetime "created_at", precision: nil
46
+ t.datetime "updated_at", precision: nil
45
47
  t.string "email", limit: 254
46
48
  t.string "background_info"
47
49
  t.integer "rating", default: 0, null: false
@@ -53,17 +55,17 @@ ActiveRecord::Schema.define(version: 2023_05_26_212613) do
53
55
  t.index ["user_id", "name", "deleted_at"], name: "index_accounts_on_user_id_and_name_and_deleted_at", unique: true
54
56
  end
55
57
 
56
- create_table "active_storage_attachments", charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
58
+ create_table "active_storage_attachments", force: :cascade do |t|
57
59
  t.string "name", null: false
58
60
  t.string "record_type", null: false
59
61
  t.bigint "record_id", null: false
60
62
  t.bigint "blob_id", null: false
61
- t.datetime "created_at", null: false
63
+ t.datetime "created_at", precision: nil, null: false
62
64
  t.index ["blob_id"], name: "index_active_storage_attachments_on_blob_id"
63
65
  t.index ["record_type", "record_id", "name", "blob_id"], name: "index_active_storage_attachments_uniqueness", unique: true
64
66
  end
65
67
 
66
- create_table "active_storage_blobs", charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
68
+ create_table "active_storage_blobs", force: :cascade do |t|
67
69
  t.string "key", null: false
68
70
  t.string "filename", null: false
69
71
  t.string "content_type"
@@ -71,30 +73,30 @@ ActiveRecord::Schema.define(version: 2023_05_26_212613) do
71
73
  t.string "service_name", null: false
72
74
  t.bigint "byte_size", null: false
73
75
  t.string "checksum", null: false
74
- t.datetime "created_at", null: false
76
+ t.datetime "created_at", precision: nil, null: false
75
77
  t.index ["key"], name: "index_active_storage_blobs_on_key", unique: true
76
78
  end
77
79
 
78
- create_table "active_storage_variant_records", charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
80
+ create_table "active_storage_variant_records", force: :cascade do |t|
79
81
  t.bigint "blob_id", null: false
80
82
  t.string "variation_digest", null: false
81
83
  t.index ["blob_id", "variation_digest"], name: "index_active_storage_variant_records_uniqueness", unique: true
82
84
  end
83
85
 
84
- create_table "activities", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
86
+ create_table "activities", force: :cascade do |t|
85
87
  t.integer "user_id"
86
88
  t.string "subject_type"
87
89
  t.integer "subject_id"
88
90
  t.string "action", limit: 32, default: "created"
89
91
  t.string "info", default: ""
90
92
  t.boolean "private", default: false
91
- t.datetime "created_at"
92
- t.datetime "updated_at"
93
+ t.datetime "created_at", precision: nil
94
+ t.datetime "updated_at", precision: nil
93
95
  t.index ["created_at"], name: "index_activities_on_created_at"
94
96
  t.index ["user_id"], name: "index_activities_on_user_id"
95
97
  end
96
98
 
97
- create_table "addresses", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
99
+ create_table "addresses", force: :cascade do |t|
98
100
  t.string "street1"
99
101
  t.string "street2"
100
102
  t.string "city", limit: 64
@@ -105,24 +107,24 @@ ActiveRecord::Schema.define(version: 2023_05_26_212613) do
105
107
  t.string "address_type", limit: 16
106
108
  t.string "addressable_type"
107
109
  t.integer "addressable_id"
108
- t.datetime "created_at"
109
- t.datetime "updated_at"
110
- t.datetime "deleted_at"
110
+ t.datetime "created_at", precision: nil
111
+ t.datetime "updated_at", precision: nil
112
+ t.datetime "deleted_at", precision: nil
111
113
  t.index ["addressable_id", "addressable_type"], name: "index_addresses_on_addressable_id_and_addressable_type"
112
114
  end
113
115
 
114
- create_table "avatars", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
116
+ create_table "avatars", force: :cascade do |t|
115
117
  t.integer "user_id"
116
118
  t.string "entity_type"
117
119
  t.integer "entity_id"
118
120
  t.integer "image_file_size"
119
121
  t.string "image_file_name"
120
122
  t.string "image_content_type"
121
- t.datetime "created_at"
122
- t.datetime "updated_at"
123
+ t.datetime "created_at", precision: nil
124
+ t.datetime "updated_at", precision: nil
123
125
  end
124
126
 
125
- create_table "campaigns", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
127
+ create_table "campaigns", force: :cascade do |t|
126
128
  t.integer "user_id"
127
129
  t.integer "assigned_to"
128
130
  t.string "name", limit: 64, default: "", null: false
@@ -138,38 +140,38 @@ ActiveRecord::Schema.define(version: 2023_05_26_212613) do
138
140
  t.date "starts_on"
139
141
  t.date "ends_on"
140
142
  t.text "objectives"
141
- t.datetime "deleted_at"
142
- t.datetime "created_at"
143
- t.datetime "updated_at"
143
+ t.datetime "deleted_at", precision: nil
144
+ t.datetime "created_at", precision: nil
145
+ t.datetime "updated_at", precision: nil
144
146
  t.string "background_info"
145
147
  t.text "subscribed_users"
146
148
  t.index ["assigned_to"], name: "index_campaigns_on_assigned_to"
147
149
  t.index ["user_id", "name", "deleted_at"], name: "index_campaigns_on_user_id_and_name_and_deleted_at", unique: true
148
150
  end
149
151
 
150
- create_table "comments", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
152
+ create_table "comments", force: :cascade do |t|
151
153
  t.integer "user_id"
152
154
  t.string "commentable_type"
153
155
  t.integer "commentable_id"
154
156
  t.boolean "private"
155
157
  t.string "title", default: ""
156
158
  t.text "comment"
157
- t.datetime "created_at"
158
- t.datetime "updated_at"
159
+ t.datetime "created_at", precision: nil
160
+ t.datetime "updated_at", precision: nil
159
161
  t.string "state", limit: 16, default: "Expanded", null: false
160
162
  end
161
163
 
162
- create_table "contact_opportunities", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
164
+ create_table "contact_opportunities", force: :cascade do |t|
163
165
  t.integer "contact_id"
164
166
  t.integer "opportunity_id"
165
167
  t.string "role", limit: 32
166
- t.datetime "deleted_at"
167
- t.datetime "created_at"
168
- t.datetime "updated_at"
168
+ t.datetime "deleted_at", precision: nil
169
+ t.datetime "created_at", precision: nil
170
+ t.datetime "updated_at", precision: nil
169
171
  t.index ["contact_id", "opportunity_id"], name: "index_contact_opportunities_on_contact_id_and_opportunity_id"
170
172
  end
171
173
 
172
- create_table "contacts", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
174
+ create_table "contacts", force: :cascade do |t|
173
175
  t.integer "user_id"
174
176
  t.integer "lead_id"
175
177
  t.integer "assigned_to"
@@ -191,9 +193,9 @@ ActiveRecord::Schema.define(version: 2023_05_26_212613) do
191
193
  t.string "twitter", limit: 128
192
194
  t.date "born_on"
193
195
  t.boolean "do_not_call", default: false, null: false
194
- t.datetime "deleted_at"
195
- t.datetime "created_at"
196
- t.datetime "updated_at"
196
+ t.datetime "deleted_at", precision: nil
197
+ t.datetime "created_at", precision: nil
198
+ t.datetime "updated_at", precision: nil
197
199
  t.string "background_info"
198
200
  t.string "skype", limit: 128
199
201
  t.text "subscribed_users"
@@ -201,7 +203,7 @@ ActiveRecord::Schema.define(version: 2023_05_26_212613) do
201
203
  t.index ["user_id", "last_name", "deleted_at"], name: "id_last_name_deleted", unique: true
202
204
  end
203
205
 
204
- create_table "emails", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
206
+ create_table "emails", force: :cascade do |t|
205
207
  t.string "imap_message_id", null: false
206
208
  t.integer "user_id"
207
209
  t.string "mediator_type"
@@ -213,27 +215,27 @@ ActiveRecord::Schema.define(version: 2023_05_26_212613) do
213
215
  t.string "subject"
214
216
  t.text "body"
215
217
  t.text "header"
216
- t.datetime "sent_at"
217
- t.datetime "received_at"
218
- t.datetime "deleted_at"
219
- t.datetime "created_at"
220
- t.datetime "updated_at"
218
+ t.datetime "sent_at", precision: nil
219
+ t.datetime "received_at", precision: nil
220
+ t.datetime "deleted_at", precision: nil
221
+ t.datetime "created_at", precision: nil
222
+ t.datetime "updated_at", precision: nil
221
223
  t.string "state", limit: 16, default: "Expanded", null: false
222
224
  t.index ["mediator_id", "mediator_type"], name: "index_emails_on_mediator_id_and_mediator_type"
223
225
  end
224
226
 
225
- create_table "field_groups", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
227
+ create_table "field_groups", force: :cascade do |t|
226
228
  t.string "name", limit: 64
227
229
  t.string "label", limit: 128
228
230
  t.integer "position"
229
231
  t.string "hint"
230
- t.datetime "created_at"
231
- t.datetime "updated_at"
232
+ t.datetime "created_at", precision: nil
233
+ t.datetime "updated_at", precision: nil
232
234
  t.integer "tag_id"
233
235
  t.string "klass_name", limit: 32
234
236
  end
235
237
 
236
- create_table "fields", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
238
+ create_table "fields", force: :cascade do |t|
237
239
  t.string "type"
238
240
  t.integer "field_group_id"
239
241
  t.integer "position"
@@ -246,8 +248,8 @@ ActiveRecord::Schema.define(version: 2023_05_26_212613) do
246
248
  t.boolean "disabled"
247
249
  t.boolean "required"
248
250
  t.integer "maxlength"
249
- t.datetime "created_at"
250
- t.datetime "updated_at"
251
+ t.datetime "created_at", precision: nil
252
+ t.datetime "updated_at", precision: nil
251
253
  t.integer "pair_id"
252
254
  t.text "settings"
253
255
  t.integer "minlength", default: 0
@@ -260,13 +262,13 @@ ActiveRecord::Schema.define(version: 2023_05_26_212613) do
260
262
  t.index ["name"], name: "index_fields_on_name"
261
263
  end
262
264
 
263
- create_table "groups", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
265
+ create_table "groups", force: :cascade do |t|
264
266
  t.string "name"
265
- t.datetime "created_at"
266
- t.datetime "updated_at"
267
+ t.datetime "created_at", precision: nil
268
+ t.datetime "updated_at", precision: nil
267
269
  end
268
270
 
269
- create_table "groups_users", id: false, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
271
+ create_table "groups_users", id: false, force: :cascade do |t|
270
272
  t.integer "group_id"
271
273
  t.integer "user_id"
272
274
  t.index ["group_id", "user_id"], name: "index_groups_users_on_group_id_and_user_id"
@@ -274,7 +276,7 @@ ActiveRecord::Schema.define(version: 2023_05_26_212613) do
274
276
  t.index ["user_id"], name: "index_groups_users_on_user_id"
275
277
  end
276
278
 
277
- create_table "leads", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
279
+ create_table "leads", force: :cascade do |t|
278
280
  t.integer "user_id"
279
281
  t.integer "campaign_id"
280
282
  t.integer "assigned_to"
@@ -296,9 +298,9 @@ ActiveRecord::Schema.define(version: 2023_05_26_212613) do
296
298
  t.string "twitter", limit: 128
297
299
  t.integer "rating", default: 0, null: false
298
300
  t.boolean "do_not_call", default: false, null: false
299
- t.datetime "deleted_at"
300
- t.datetime "created_at"
301
- t.datetime "updated_at"
301
+ t.datetime "deleted_at", precision: nil
302
+ t.datetime "created_at", precision: nil
303
+ t.datetime "updated_at", precision: nil
302
304
  t.string "background_info"
303
305
  t.string "skype", limit: 128
304
306
  t.text "subscribed_users"
@@ -306,16 +308,16 @@ ActiveRecord::Schema.define(version: 2023_05_26_212613) do
306
308
  t.index ["user_id", "last_name", "deleted_at"], name: "index_leads_on_user_id_and_last_name_and_deleted_at", unique: true
307
309
  end
308
310
 
309
- create_table "lists", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
311
+ create_table "lists", force: :cascade do |t|
310
312
  t.string "name"
311
313
  t.text "url"
312
- t.datetime "created_at"
313
- t.datetime "updated_at"
314
+ t.datetime "created_at", precision: nil
315
+ t.datetime "updated_at", precision: nil
314
316
  t.integer "user_id"
315
317
  t.index ["user_id"], name: "index_lists_on_user_id"
316
318
  end
317
319
 
318
- create_table "opportunities", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
320
+ create_table "opportunities", force: :cascade do |t|
319
321
  t.integer "user_id"
320
322
  t.integer "campaign_id"
321
323
  t.integer "assigned_to"
@@ -327,72 +329,72 @@ ActiveRecord::Schema.define(version: 2023_05_26_212613) do
327
329
  t.decimal "amount", precision: 12, scale: 2
328
330
  t.decimal "discount", precision: 12, scale: 2
329
331
  t.date "closes_on"
330
- t.datetime "deleted_at"
331
- t.datetime "created_at"
332
- t.datetime "updated_at"
332
+ t.datetime "deleted_at", precision: nil
333
+ t.datetime "created_at", precision: nil
334
+ t.datetime "updated_at", precision: nil
333
335
  t.string "background_info"
334
336
  t.text "subscribed_users"
335
337
  t.index ["assigned_to"], name: "index_opportunities_on_assigned_to"
336
338
  t.index ["user_id", "name", "deleted_at"], name: "id_name_deleted", unique: true
337
339
  end
338
340
 
339
- create_table "permissions", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
341
+ create_table "permissions", force: :cascade do |t|
340
342
  t.integer "user_id"
341
343
  t.string "asset_type"
342
344
  t.integer "asset_id"
343
- t.datetime "created_at"
344
- t.datetime "updated_at"
345
+ t.datetime "created_at", precision: nil
346
+ t.datetime "updated_at", precision: nil
345
347
  t.integer "group_id"
346
348
  t.index ["asset_id", "asset_type"], name: "index_permissions_on_asset_id_and_asset_type"
347
349
  t.index ["group_id"], name: "index_permissions_on_group_id"
348
350
  t.index ["user_id"], name: "index_permissions_on_user_id"
349
351
  end
350
352
 
351
- create_table "preferences", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
353
+ create_table "preferences", force: :cascade do |t|
352
354
  t.integer "user_id"
353
355
  t.string "name", limit: 32, default: "", null: false
354
356
  t.text "value"
355
- t.datetime "created_at"
356
- t.datetime "updated_at"
357
+ t.datetime "created_at", precision: nil
358
+ t.datetime "updated_at", precision: nil
357
359
  t.index ["user_id", "name"], name: "index_preferences_on_user_id_and_name"
358
360
  end
359
361
 
360
- create_table "sessions", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
362
+ create_table "sessions", force: :cascade do |t|
361
363
  t.string "session_id", null: false
362
364
  t.text "data"
363
- t.datetime "created_at"
364
- t.datetime "updated_at"
365
+ t.datetime "created_at", precision: nil
366
+ t.datetime "updated_at", precision: nil
365
367
  t.index ["session_id"], name: "index_sessions_on_session_id"
366
368
  t.index ["updated_at"], name: "index_sessions_on_updated_at"
367
369
  end
368
370
 
369
- create_table "settings", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
371
+ create_table "settings", force: :cascade do |t|
370
372
  t.string "name", limit: 32, default: "", null: false
371
373
  t.text "value"
372
- t.datetime "created_at"
373
- t.datetime "updated_at"
374
+ t.datetime "created_at", precision: nil
375
+ t.datetime "updated_at", precision: nil
374
376
  t.index ["name"], name: "index_settings_on_name"
375
377
  end
376
378
 
377
- create_table "taggings", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
379
+ create_table "taggings", force: :cascade do |t|
378
380
  t.integer "tag_id"
379
381
  t.integer "taggable_id"
380
382
  t.integer "tagger_id"
381
383
  t.string "tagger_type"
382
384
  t.string "taggable_type", limit: 50
383
385
  t.string "context", limit: 50
384
- t.datetime "created_at"
386
+ t.datetime "created_at", precision: nil
385
387
  t.index ["tag_id", "taggable_id", "taggable_type", "context"], name: "taggings_idx", unique: true
386
388
  t.index ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context"
387
389
  end
388
390
 
389
- create_table "tags", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
391
+ create_table "tags", force: :cascade do |t|
390
392
  t.string "name"
391
393
  t.integer "taggings_count", default: 0
392
394
  t.index ["name"], name: "index_tags_on_name", unique: true
393
395
  end
394
396
 
395
- create_table "tasks", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
397
+ create_table "tasks", force: :cascade do |t|
396
398
  t.integer "user_id"
397
399
  t.integer "assigned_to"
398
400
  t.integer "completed_by"
@@ -402,18 +404,18 @@ ActiveRecord::Schema.define(version: 2023_05_26_212613) do
402
404
  t.string "priority", limit: 32
403
405
  t.string "category", limit: 32
404
406
  t.string "bucket", limit: 32
405
- t.datetime "due_at"
406
- t.datetime "completed_at"
407
- t.datetime "deleted_at"
408
- t.datetime "created_at"
409
- t.datetime "updated_at"
407
+ t.datetime "due_at", precision: nil
408
+ t.datetime "completed_at", precision: nil
409
+ t.datetime "deleted_at", precision: nil
410
+ t.datetime "created_at", precision: nil
411
+ t.datetime "updated_at", precision: nil
410
412
  t.string "background_info"
411
413
  t.text "subscribed_users"
412
414
  t.index ["assigned_to"], name: "index_tasks_on_assigned_to"
413
415
  t.index ["user_id", "name", "deleted_at"], name: "index_tasks_on_user_id_and_name_and_deleted_at", unique: true
414
416
  end
415
417
 
416
- create_table "users", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
418
+ create_table "users", force: :cascade do |t|
417
419
  t.string "username", limit: 32, default: "", null: false
418
420
  t.string "email", limit: 254, default: "", null: false
419
421
  t.string "first_name", limit: 32
@@ -429,25 +431,25 @@ ActiveRecord::Schema.define(version: 2023_05_26_212613) do
429
431
  t.string "skype", limit: 32
430
432
  t.string "encrypted_password", default: "", null: false
431
433
  t.string "password_salt", default: "", null: false
432
- t.datetime "last_sign_in_at"
433
- t.datetime "current_sign_in_at"
434
+ t.datetime "last_sign_in_at", precision: nil
435
+ t.datetime "current_sign_in_at", precision: nil
434
436
  t.string "last_sign_in_ip"
435
437
  t.string "current_sign_in_ip"
436
438
  t.integer "sign_in_count", default: 0, null: false
437
- t.datetime "deleted_at"
438
- t.datetime "created_at"
439
- t.datetime "updated_at"
439
+ t.datetime "deleted_at", precision: nil
440
+ t.datetime "created_at", precision: nil
441
+ t.datetime "updated_at", precision: nil
440
442
  t.boolean "admin", default: false, null: false
441
- t.datetime "suspended_at"
443
+ t.datetime "suspended_at", precision: nil
442
444
  t.string "unconfirmed_email", limit: 254
443
445
  t.string "reset_password_token"
444
- t.datetime "reset_password_sent_at"
446
+ t.datetime "reset_password_sent_at", precision: nil
445
447
  t.string "remember_token"
446
- t.datetime "remember_created_at"
448
+ t.datetime "remember_created_at", precision: nil
447
449
  t.string "authentication_token"
448
- t.string "confirmation_token"
449
- t.timestamp "confirmed_at"
450
- t.timestamp "confirmation_sent_at"
450
+ t.string "confirmation_token", limit: 255
451
+ t.datetime "confirmed_at", precision: nil
452
+ t.datetime "confirmation_sent_at", precision: nil
451
453
  t.index ["authentication_token"], name: "index_users_on_authentication_token", unique: true
452
454
  t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
453
455
  t.index ["email"], name: "index_users_on_email"
@@ -456,13 +458,13 @@ ActiveRecord::Schema.define(version: 2023_05_26_212613) do
456
458
  t.index ["username", "deleted_at"], name: "index_users_on_username_and_deleted_at", unique: true
457
459
  end
458
460
 
459
- create_table "versions", id: :integer, charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
461
+ create_table "versions", force: :cascade do |t|
460
462
  t.string "item_type", null: false
461
463
  t.integer "item_id", null: false
462
464
  t.string "event", limit: 512, null: false
463
465
  t.string "whodunnit"
464
466
  t.text "object"
465
- t.datetime "created_at"
467
+ t.datetime "created_at", precision: nil
466
468
  t.text "object_changes"
467
469
  t.integer "related_id"
468
470
  t.string "related_type"
@@ -108,10 +108,9 @@ module FatFreeCRM
108
108
  #--------------------------------------------------------------------------
109
109
  module Helper
110
110
  def hook(method, caller, context = {}, &block)
111
- is_view_hook = caller.is_haml?
112
111
 
113
- # If a block was given, hooks are able to replace, append or prepend view content.
114
- if is_view_hook
112
+ # In a view template context, hooks are able to replace, append or prepend content.
113
+ if caller.is_a?(ActionView::Base)
115
114
  hooks = FatFreeCRM::Callback.view_hook(method, caller, context)
116
115
  # Add content to the view in the following order:
117
116
  # -- before
@@ -258,7 +258,7 @@ module FatFreeCRM
258
258
  def notify(email, mediator_links)
259
259
  DropboxMailer.create_dropbox_notification(
260
260
  @sender, @settings[:address], email, mediator_links
261
- ).deliver_now
261
+ ).deliver_later
262
262
  end
263
263
  end
264
264
  end
@@ -8,7 +8,7 @@
8
8
  module FatFreeCRM
9
9
  module VERSION # :nodoc:
10
10
  MAJOR = 0
11
- MINOR = 21
11
+ MINOR = 22
12
12
  TINY = 0
13
13
  PRE = nil
14
14