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.
- checksums.yaml +4 -4
- data/app/assets/config/fat_free_crm.js +3 -0
- data/app/assets/config/manifest.js +1 -3
- data/app/controllers/admin/field_groups_controller.rb +0 -2
- data/app/controllers/admin/tags_controller.rb +1 -1
- data/app/controllers/admin/users_controller.rb +1 -1
- data/app/controllers/application_controller.rb +11 -0
- data/app/controllers/comments_controller.rb +2 -0
- data/app/controllers/emails_controller.rb +2 -0
- data/app/controllers/entities/accounts_controller.rb +3 -1
- data/app/controllers/entities/campaigns_controller.rb +3 -1
- data/app/controllers/entities/contacts_controller.rb +3 -1
- data/app/controllers/entities/leads_controller.rb +4 -2
- data/app/controllers/entities/opportunities_controller.rb +3 -1
- data/app/controllers/entities_controller.rb +2 -0
- data/app/controllers/home_controller.rb +2 -0
- data/app/controllers/lists_controller.rb +2 -0
- data/app/controllers/tasks_controller.rb +3 -1
- data/app/controllers/users_controller.rb +2 -0
- data/app/models/fields/custom_field.rb +2 -2
- data/app/models/observers/entity_observer.rb +1 -1
- data/app/models/polymorphic/comment.rb +1 -1
- data/app/models/setting.rb +4 -5
- data/app/models/users/user.rb +1 -1
- data/bin/bundle +108 -2
- data/bin/rails +3 -3
- data/bin/rake +2 -2
- data/bin/setup +12 -15
- data/config/application.rb +9 -4
- data/config/boot.rb +3 -5
- data/config/cable.yml +10 -0
- data/config/database.yml +26 -0
- data/config/environment.rb +4 -3
- data/config/environments/development.rb +47 -14
- data/config/environments/production.rb +17 -15
- data/config/environments/test.rb +19 -9
- data/config/initializers/action_mailer.rb +1 -0
- data/config/initializers/content_security_policy.rb +21 -26
- data/config/initializers/custom_field_ransack_translations.rb +1 -0
- data/config/initializers/filter_parameter_logging.rb +6 -2
- data/config/initializers/inflections.rb +4 -4
- data/config/initializers/permissions_policy.rb +12 -0
- data/config/storage.yml +5 -5
- data/db/demo/field_groups.yml +2 -1
- data/db/migrate/20230526212613_convert_to_active_storage.rb +27 -11
- data/db/schema.rb +107 -105
- data/lib/fat_free_crm/callback.rb +2 -3
- data/lib/fat_free_crm/mail_processor/dropbox.rb +1 -1
- data/lib/fat_free_crm/version.rb +1 -1
- data/public/avatars/User/2/large_rails.png +0 -0
- data/public/avatars/User/2/medium_rails.png +0 -0
- data/public/avatars/User/2/original_rails.png +0 -0
- data/public/avatars/User/2/small_rails.png +0 -0
- data/public/avatars/User/2/thumb_rails.png +0 -0
- data/public/avatars/User/3/large_rails.png +0 -0
- data/public/avatars/User/3/medium_rails.png +0 -0
- data/public/avatars/User/3/original_rails.png +0 -0
- data/public/avatars/User/3/small_rails.png +0 -0
- data/public/avatars/User/3/thumb_rails.png +0 -0
- data/public/avatars/User/4/large_rails.png +0 -0
- data/public/avatars/User/4/medium_rails.png +0 -0
- data/public/avatars/User/4/original_rails.png +0 -0
- data/public/avatars/User/4/small_rails.png +0 -0
- data/public/avatars/User/4/thumb_rails.png +0 -0
- data/public/avatars/User/6/large_rails.png +0 -0
- data/public/avatars/User/6/medium_rails.png +0 -0
- data/public/avatars/User/6/original_rails.png +0 -0
- data/public/avatars/User/6/small_rails.png +0 -0
- data/public/avatars/User/6/thumb_rails.png +0 -0
- data/public/avatars/User/7/large_rails.png +0 -0
- data/public/avatars/User/7/medium_rails.png +0 -0
- data/public/avatars/User/7/original_rails.png +0 -0
- data/public/avatars/User/7/small_rails.png +0 -0
- data/public/avatars/User/7/thumb_rails.png +0 -0
- metadata +64 -16
- 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",
|
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",
|
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",
|
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",
|
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",
|
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",
|
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",
|
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",
|
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",
|
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",
|
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",
|
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",
|
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",
|
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",
|
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",
|
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",
|
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",
|
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,
|
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",
|
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",
|
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",
|
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",
|
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",
|
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",
|
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",
|
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",
|
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",
|
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",
|
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",
|
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.
|
450
|
-
t.
|
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",
|
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
|
-
#
|
114
|
-
if
|
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
|
data/lib/fat_free_crm/version.rb
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|