fat_free_crm 0.20.1 → 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 (352) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +170 -0
  3. data/README.md +3 -6
  4. data/app/assets/config/fat_free_crm.js +3 -0
  5. data/app/assets/config/manifest.js +1 -0
  6. data/app/controllers/admin/field_groups_controller.rb +0 -2
  7. data/app/controllers/admin/tags_controller.rb +1 -1
  8. data/app/controllers/admin/users_controller.rb +1 -1
  9. data/app/controllers/application_controller.rb +11 -0
  10. data/app/controllers/comments_controller.rb +2 -0
  11. data/app/controllers/emails_controller.rb +2 -0
  12. data/app/controllers/entities/accounts_controller.rb +3 -1
  13. data/app/controllers/entities/campaigns_controller.rb +3 -1
  14. data/app/controllers/entities/contacts_controller.rb +3 -1
  15. data/app/controllers/entities/leads_controller.rb +4 -2
  16. data/app/controllers/entities/opportunities_controller.rb +3 -1
  17. data/app/controllers/entities_controller.rb +2 -0
  18. data/app/controllers/home_controller.rb +2 -0
  19. data/app/controllers/lists_controller.rb +2 -0
  20. data/app/controllers/tasks_controller.rb +3 -1
  21. data/app/controllers/users_controller.rb +2 -0
  22. data/app/helpers/accounts_helper.rb +2 -0
  23. data/app/helpers/application_helper.rb +22 -3
  24. data/app/helpers/tasks_helper.rb +1 -2
  25. data/app/models/entities/account.rb +1 -1
  26. data/app/models/entities/campaign.rb +1 -1
  27. data/app/models/entities/contact.rb +1 -1
  28. data/app/models/entities/lead.rb +1 -1
  29. data/app/models/entities/opportunity.rb +1 -1
  30. data/app/models/fields/custom_field.rb +2 -2
  31. data/app/models/observers/entity_observer.rb +1 -1
  32. data/app/models/polymorphic/avatar.rb +1 -30
  33. data/app/models/polymorphic/comment.rb +1 -1
  34. data/app/models/polymorphic/task.rb +1 -0
  35. data/app/models/setting.rb +4 -5
  36. data/app/models/users/user.rb +1 -1
  37. data/app/views/home/index.xls.builder +1 -0
  38. data/app/views/shared/_address.html.haml +1 -1
  39. data/bin/bundle +108 -2
  40. data/bin/rails +3 -3
  41. data/bin/rake +2 -2
  42. data/bin/setup +12 -15
  43. data/config/application.rb +22 -4
  44. data/config/boot.rb +3 -5
  45. data/config/cable.yml +10 -0
  46. data/config/database.yml +26 -0
  47. data/config/environment.rb +4 -3
  48. data/config/environments/development.rb +47 -11
  49. data/config/environments/production.rb +17 -15
  50. data/config/environments/test.rb +19 -9
  51. data/config/initializers/action_mailer.rb +1 -0
  52. data/config/initializers/content_security_policy.rb +21 -26
  53. data/config/initializers/custom_field_ransack_translations.rb +1 -0
  54. data/config/initializers/filter_parameter_logging.rb +6 -2
  55. data/config/initializers/inflections.rb +4 -4
  56. data/config/initializers/permissions_policy.rb +12 -0
  57. data/config/puma.rb +2 -2
  58. data/config/storage.yml +34 -0
  59. data/db/demo/field_groups.yml +2 -1
  60. data/db/migrate/20100928030617_drop_openid_tables.rb +2 -1
  61. data/db/migrate/20230526211831_create_active_storage_tables.active_storage.rb +51 -0
  62. data/db/migrate/20230526212613_convert_to_active_storage.rb +107 -0
  63. data/db/schema.rb +108 -76
  64. data/db/seeds/fields.rb +7 -21
  65. data/lib/development_tasks/license.rake +10 -10
  66. data/lib/fat_free_crm/callback.rb +2 -3
  67. data/lib/fat_free_crm/errors.rb +2 -10
  68. data/lib/fat_free_crm/exceptions.rb +1 -0
  69. data/lib/fat_free_crm/fields.rb +4 -5
  70. data/lib/fat_free_crm/gem_dependencies.rb +0 -1
  71. data/lib/fat_free_crm/i18n.rb +1 -1
  72. data/lib/fat_free_crm/mail_processor/dropbox.rb +1 -1
  73. data/lib/fat_free_crm/version.rb +3 -3
  74. data/public/avatars/User/2/large_rails.png +0 -0
  75. data/public/avatars/User/2/medium_rails.png +0 -0
  76. data/public/avatars/User/2/small_rails.png +0 -0
  77. data/public/avatars/User/2/thumb_rails.png +0 -0
  78. data/public/avatars/User/3/large_rails.png +0 -0
  79. data/public/avatars/User/3/medium_rails.png +0 -0
  80. data/public/avatars/User/3/original_rails.png +0 -0
  81. data/public/avatars/User/3/small_rails.png +0 -0
  82. data/public/avatars/User/3/thumb_rails.png +0 -0
  83. data/public/avatars/User/4/large_rails.png +0 -0
  84. data/public/avatars/User/4/medium_rails.png +0 -0
  85. data/public/avatars/User/4/original_rails.png +0 -0
  86. data/public/avatars/User/4/small_rails.png +0 -0
  87. data/public/avatars/User/4/thumb_rails.png +0 -0
  88. data/public/avatars/User/6/large_rails.png +0 -0
  89. data/public/avatars/User/6/medium_rails.png +0 -0
  90. data/public/avatars/User/6/original_rails.png +0 -0
  91. data/public/avatars/User/6/small_rails.png +0 -0
  92. data/public/avatars/User/6/thumb_rails.png +0 -0
  93. data/public/avatars/User/7/large_rails.png +0 -0
  94. data/public/avatars/User/7/medium_rails.png +0 -0
  95. data/public/avatars/User/7/original_rails.png +0 -0
  96. data/public/avatars/User/7/small_rails.png +0 -0
  97. data/public/avatars/User/7/thumb_rails.png +0 -0
  98. metadata +73 -288
  99. data/.docker/nginx/sites-enabled/ffcrm.conf +0 -8
  100. data/.github/workflows/brakeman-analysis.yml +0 -46
  101. data/.github/workflows/rubocop-analysis.yml +0 -40
  102. data/.github/workflows/ruby.yml +0 -52
  103. data/.gitignore +0 -39
  104. data/.rubocop.yml +0 -73
  105. data/.rubocop_todo.yml +0 -286
  106. data/.teatro.yml +0 -3
  107. data/.travis.yml +0 -60
  108. data/CONTRIBUTORS.md +0 -135
  109. data/Capfile +0 -27
  110. data/Dockerfile +0 -51
  111. data/Gemfile +0 -106
  112. data/Gemfile.lock +0 -529
  113. data/Guardfile +0 -26
  114. data/Procfile +0 -1
  115. data/SECURITY.md +0 -11
  116. data/Vagrantfile +0 -92
  117. data/config/initializers/new_framework_defaults_6_0.rb +0 -46
  118. data/custom_plan.rb +0 -11
  119. data/docker-compose.yml +0 -27
  120. data/fat_free_crm.gemspec +0 -62
  121. data/lib/tasks/.gitkeep +0 -0
  122. data/lib/tasks/.gitkeep~master +0 -0
  123. data/script/rails +0 -8
  124. data/spec/controllers/admin/groups_controller_spec.rb +0 -11
  125. data/spec/controllers/admin/users_controller_spec.rb +0 -251
  126. data/spec/controllers/applications_controller_spec.rb +0 -43
  127. data/spec/controllers/comments_controller_spec.rb +0 -195
  128. data/spec/controllers/emails_controller_spec.rb +0 -37
  129. data/spec/controllers/entities/accounts_controller_spec.rb +0 -607
  130. data/spec/controllers/entities/campaigns_controller_spec.rb +0 -645
  131. data/spec/controllers/entities/contacts_controller_spec.rb +0 -705
  132. data/spec/controllers/entities/leads_controller_spec.rb +0 -1009
  133. data/spec/controllers/entities/opportunities_controller_spec.rb +0 -904
  134. data/spec/controllers/entities_controller_spec.rb +0 -47
  135. data/spec/controllers/home_controller_spec.rb +0 -235
  136. data/spec/controllers/lists_controller_spec.rb +0 -11
  137. data/spec/controllers/tasks_controller_spec.rb +0 -517
  138. data/spec/controllers/users_controller_spec.rb +0 -375
  139. data/spec/factories/account_factories.rb +0 -40
  140. data/spec/factories/campaign_factories.rb +0 -30
  141. data/spec/factories/contact_factories.rb +0 -45
  142. data/spec/factories/field_factories.rb +0 -40
  143. data/spec/factories/lead_factories.rb +0 -36
  144. data/spec/factories/list_factories.rb +0 -13
  145. data/spec/factories/opportunity_factories.rb +0 -39
  146. data/spec/factories/sequences.rb +0 -32
  147. data/spec/factories/setting_factories.rb +0 -15
  148. data/spec/factories/shared_factories.rb +0 -70
  149. data/spec/factories/subscription_factories.rb +0 -13
  150. data/spec/factories/tag_factories.rb +0 -12
  151. data/spec/factories/task_factories.rb +0 -29
  152. data/spec/factories/user_factories.rb +0 -66
  153. data/spec/features/acceptance_helper.rb +0 -11
  154. data/spec/features/accounts_spec.rb +0 -126
  155. data/spec/features/admin/groups_spec.rb +0 -31
  156. data/spec/features/admin/users_spec.rb +0 -40
  157. data/spec/features/campaigns_spec.rb +0 -104
  158. data/spec/features/contacts_spec.rb +0 -134
  159. data/spec/features/dashboard_spec.rb +0 -67
  160. data/spec/features/devise/sign_in_spec.rb +0 -58
  161. data/spec/features/devise/sign_up_spec.rb +0 -36
  162. data/spec/features/leads_spec.rb +0 -138
  163. data/spec/features/opportunities_overview_spec.rb +0 -88
  164. data/spec/features/opportunities_spec.rb +0 -132
  165. data/spec/features/support/autocomlete_helper.rb +0 -17
  166. data/spec/features/support/browser.rb +0 -28
  167. data/spec/features/support/headless.rb +0 -19
  168. data/spec/features/support/paths.rb +0 -48
  169. data/spec/features/support/selector_helpers.rb +0 -36
  170. data/spec/features/tasks_spec.rb +0 -94
  171. data/spec/helpers/accounts_helper_spec.rb +0 -73
  172. data/spec/helpers/admin/field_groups_helper_spec.rb +0 -20
  173. data/spec/helpers/admin/plugins_helper_spec.rb +0 -11
  174. data/spec/helpers/admin/settings_helper_spec.rb +0 -11
  175. data/spec/helpers/admin/users_helper_spec.rb +0 -11
  176. data/spec/helpers/application_helper_spec.rb +0 -86
  177. data/spec/helpers/authentications_helper_spec.rb +0 -16
  178. data/spec/helpers/campaigns_helper_spec.rb +0 -16
  179. data/spec/helpers/comments_helper_spec.rb +0 -16
  180. data/spec/helpers/contacts_helper_spec.rb +0 -16
  181. data/spec/helpers/emails_helper_spec.rb +0 -11
  182. data/spec/helpers/fields_helper_spec.rb +0 -12
  183. data/spec/helpers/groups_helper_spec.rb +0 -21
  184. data/spec/helpers/home_helper_spec.rb +0 -16
  185. data/spec/helpers/leads_helper_spec.rb +0 -16
  186. data/spec/helpers/lists_helper_spec.rb +0 -21
  187. data/spec/helpers/opportunities_helper_spec.rb +0 -16
  188. data/spec/helpers/passwords_helper_spec.rb +0 -16
  189. data/spec/helpers/tasks_helper_spec.rb +0 -20
  190. data/spec/helpers/users_helper_spec.rb +0 -39
  191. data/spec/lib/comment_extensions_spec.rb +0 -42
  192. data/spec/lib/core_ext/string_spec.rb +0 -23
  193. data/spec/lib/errors_spec.rb +0 -32
  194. data/spec/lib/fields_spec.rb +0 -101
  195. data/spec/lib/mail_processor/base_spec.rb +0 -169
  196. data/spec/lib/mail_processor/comment_replies_spec.rb +0 -70
  197. data/spec/lib/mail_processor/dropbox_spec.rb +0 -306
  198. data/spec/lib/mail_processor/sample_emails/dropbox.rb +0 -173
  199. data/spec/lib/permissions_spec.rb +0 -155
  200. data/spec/lib/secret_token_generator_spec.rb +0 -69
  201. data/spec/lib/view_factory_spec.rb +0 -69
  202. data/spec/mailers/devise_mailer_spec.rb +0 -35
  203. data/spec/mailers/subscription_mailer_spec.rb +0 -48
  204. data/spec/mailers/user_mailer_spec.rb +0 -115
  205. data/spec/models/entities/account_contact_spec.rb +0 -34
  206. data/spec/models/entities/account_opportunity_spec.rb +0 -34
  207. data/spec/models/entities/account_spec.rb +0 -206
  208. data/spec/models/entities/campaign_spec.rb +0 -131
  209. data/spec/models/entities/contact_opportunity_spec.rb +0 -34
  210. data/spec/models/entities/contact_spec.rb +0 -314
  211. data/spec/models/entities/lead_spec.rb +0 -102
  212. data/spec/models/entities/opportunity_spec.rb +0 -299
  213. data/spec/models/fields/custom_field_date_pair_spec.rb +0 -92
  214. data/spec/models/fields/custom_field_pair_spec.rb +0 -76
  215. data/spec/models/fields/custom_field_spec.rb +0 -129
  216. data/spec/models/fields/field_group_spec.rb +0 -29
  217. data/spec/models/fields/field_spec.rb +0 -69
  218. data/spec/models/list_spec.rb +0 -19
  219. data/spec/models/observers/entity_observer_spec.rb +0 -74
  220. data/spec/models/polymorphic/address_spec.rb +0 -34
  221. data/spec/models/polymorphic/avatar_spec.rb +0 -46
  222. data/spec/models/polymorphic/comment_spec.rb +0 -45
  223. data/spec/models/polymorphic/email_spec.rb +0 -53
  224. data/spec/models/polymorphic/task_spec.rb +0 -395
  225. data/spec/models/polymorphic/version_spec.rb +0 -241
  226. data/spec/models/setting_spec.rb +0 -77
  227. data/spec/models/users/abilities/user_ability_spec.rb +0 -70
  228. data/spec/models/users/group_spec.rb +0 -11
  229. data/spec/models/users/permission_spec.rb +0 -58
  230. data/spec/models/users/preference_spec.rb +0 -71
  231. data/spec/models/users/user_spec.rb +0 -238
  232. data/spec/routing/accounts_routing_spec.rb +0 -60
  233. data/spec/routing/admin/users_routing_spec.rb +0 -40
  234. data/spec/routing/campaigns_routing_spec.rb +0 -64
  235. data/spec/routing/comments_routing_spec.rb +0 -32
  236. data/spec/routing/contacts_routing_spec.rb +0 -60
  237. data/spec/routing/emails_routing_spec.rb +0 -40
  238. data/spec/routing/leads_routing_spec.rb +0 -88
  239. data/spec/routing/opportunities_routing_spec.rb +0 -64
  240. data/spec/routing/tasks_routing_spec.rb +0 -68
  241. data/spec/routing/users_routing_spec.rb +0 -106
  242. data/spec/shared/controllers.rb +0 -99
  243. data/spec/shared/models.rb +0 -141
  244. data/spec/spec_helper.rb +0 -117
  245. data/spec/support/assert_select.rb +0 -167
  246. data/spec/support/devise_helpers.rb +0 -28
  247. data/spec/support/feature_helpers.rb +0 -32
  248. data/spec/support/macros.rb +0 -49
  249. data/spec/support/mail_processor_mocks.rb +0 -37
  250. data/spec/support/uploaded_file.rb +0 -10
  251. data/spec/views/accounts/_edit.haml_spec.rb +0 -43
  252. data/spec/views/accounts/_new.haml_spec.rb +0 -42
  253. data/spec/views/accounts/create.js.haml_spec.rb +0 -52
  254. data/spec/views/accounts/destroy.js.haml_spec.rb +0 -34
  255. data/spec/views/accounts/edit.js.haml_spec.rb +0 -66
  256. data/spec/views/accounts/index.haml_spec.rb +0 -43
  257. data/spec/views/accounts/index.js.haml_spec.rb +0 -34
  258. data/spec/views/accounts/new.js.haml_spec.rb +0 -44
  259. data/spec/views/accounts/show.haml_spec.rb +0 -38
  260. data/spec/views/accounts/update.js.haml_spec.rb +0 -93
  261. data/spec/views/admin/field_groups/create.js.haml_spec.rb +0 -30
  262. data/spec/views/admin/field_groups/destroy.js.haml_spec.rb +0 -31
  263. data/spec/views/admin/field_groups/edit.js.haml_spec.rb +0 -24
  264. data/spec/views/admin/field_groups/new.js.haml_spec.rb +0 -25
  265. data/spec/views/admin/field_groups/update.js.haml_spec.rb +0 -29
  266. data/spec/views/admin/users/_create.haml_spec.rb +0 -23
  267. data/spec/views/admin/users/create.js.haml_spec.rb +0 -41
  268. data/spec/views/admin/users/destroy.js.haml_spec.rb +0 -47
  269. data/spec/views/admin/users/edit.js.haml_spec.rb +0 -44
  270. data/spec/views/admin/users/index.haml_spec.rb +0 -22
  271. data/spec/views/admin/users/index.js.haml_spec.rb +0 -26
  272. data/spec/views/admin/users/new.js.haml_spec.rb +0 -34
  273. data/spec/views/admin/users/reactivate.js.haml_spec.rb +0 -22
  274. data/spec/views/admin/users/show.haml_spec.rb +0 -18
  275. data/spec/views/admin/users/suspend.js.haml_spec.rb +0 -22
  276. data/spec/views/admin/users/update.js.haml_spec.rb +0 -37
  277. data/spec/views/application/auto_complete.haml_spec.rb +0 -48
  278. data/spec/views/campaigns/_edit.haml_spec.rb +0 -44
  279. data/spec/views/campaigns/_new.haml_spec.rb +0 -41
  280. data/spec/views/campaigns/create.js.haml_spec.rb +0 -49
  281. data/spec/views/campaigns/destroy.js.haml_spec.rb +0 -31
  282. data/spec/views/campaigns/edit.js.haml_spec.rb +0 -66
  283. data/spec/views/campaigns/index.haml_spec.rb +0 -37
  284. data/spec/views/campaigns/index.js.haml_spec.rb +0 -34
  285. data/spec/views/campaigns/new.js.haml_spec.rb +0 -50
  286. data/spec/views/campaigns/show.haml_spec.rb +0 -38
  287. data/spec/views/campaigns/update.js.haml_spec.rb +0 -78
  288. data/spec/views/comments/edit.js.haml_spec.rb +0 -30
  289. data/spec/views/contacts/_edit.haml_spec.rb +0 -73
  290. data/spec/views/contacts/_new.haml_spec.rb +0 -52
  291. data/spec/views/contacts/create.js.haml_spec.rb +0 -65
  292. data/spec/views/contacts/destroy.js.haml_spec.rb +0 -45
  293. data/spec/views/contacts/edit.js.haml_spec.rb +0 -74
  294. data/spec/views/contacts/index.haml_spec.rb +0 -37
  295. data/spec/views/contacts/index.js.html_spec.rb +0 -34
  296. data/spec/views/contacts/new.js.haml_spec.rb +0 -47
  297. data/spec/views/contacts/show.haml_spec.rb +0 -35
  298. data/spec/views/contacts/update.js.haml_spec.rb +0 -128
  299. data/spec/views/home/index.haml_spec.rb +0 -36
  300. data/spec/views/home/index.js.haml_spec.rb +0 -33
  301. data/spec/views/home/options.js.haml_spec.rb +0 -53
  302. data/spec/views/leads/_convert.haml_spec.rb +0 -30
  303. data/spec/views/leads/_edit.haml_spec.rb +0 -47
  304. data/spec/views/leads/_new.haml_spec.rb +0 -45
  305. data/spec/views/leads/_sidebar_show.haml_spec.rb +0 -31
  306. data/spec/views/leads/convert.js.haml_spec.rb +0 -79
  307. data/spec/views/leads/create.js.haml_spec.rb +0 -67
  308. data/spec/views/leads/destroy.js.haml_spec.rb +0 -47
  309. data/spec/views/leads/edit.js.haml_spec.rb +0 -76
  310. data/spec/views/leads/index.haml_spec.rb +0 -37
  311. data/spec/views/leads/index.js.haml_spec.rb +0 -34
  312. data/spec/views/leads/new.js.haml_spec.rb +0 -47
  313. data/spec/views/leads/promote.js.haml_spec.rb +0 -135
  314. data/spec/views/leads/reject.js.haml_spec.rb +0 -45
  315. data/spec/views/leads/show.haml_spec.rb +0 -32
  316. data/spec/views/leads/update.js.haml_spec.rb +0 -118
  317. data/spec/views/opportunities/_edit.haml_spec.rb +0 -70
  318. data/spec/views/opportunities/_new.haml_spec.rb +0 -51
  319. data/spec/views/opportunities/create.js.haml_spec.rb +0 -86
  320. data/spec/views/opportunities/destroy.js.haml_spec.rb +0 -64
  321. data/spec/views/opportunities/edit.js.haml_spec.rb +0 -75
  322. data/spec/views/opportunities/index.haml_spec.rb +0 -38
  323. data/spec/views/opportunities/index.js.haml_spec.rb +0 -35
  324. data/spec/views/opportunities/new.js.haml_spec.rb +0 -54
  325. data/spec/views/opportunities/show.haml_spec.rb +0 -35
  326. data/spec/views/opportunities/update.js.haml_spec.rb +0 -143
  327. data/spec/views/tasks/_edit.haml_spec.rb +0 -50
  328. data/spec/views/tasks/complete.js.haml_spec.rb +0 -67
  329. data/spec/views/tasks/create.js.haml_spec.rb +0 -119
  330. data/spec/views/tasks/destroy.js.haml_spec.rb +0 -57
  331. data/spec/views/tasks/edit.js.haml_spec.rb +0 -76
  332. data/spec/views/tasks/index.haml_spec.rb +0 -46
  333. data/spec/views/tasks/new.js.haml_spec.rb +0 -49
  334. data/spec/views/tasks/uncomplete.js.haml_spec.rb +0 -45
  335. data/spec/views/tasks/update.js.haml_spec.rb +0 -140
  336. data/spec/views/users/avatar.js.haml_spec.rb +0 -35
  337. data/spec/views/users/change_password.js.haml_spec.rb +0 -51
  338. data/spec/views/users/edit.js.haml_spec.rb +0 -35
  339. data/spec/views/users/password.js.haml_spec.rb +0 -36
  340. data/spec/views/users/update.js.haml_spec.rb +0 -46
  341. data/spec/views/users/upload_avatar.js.haml_spec.rb +0 -45
  342. data/vendor/gems/globby-0.1.2/LICENSE.txt +0 -20
  343. data/vendor/gems/globby-0.1.2/README.md +0 -65
  344. data/vendor/gems/globby-0.1.2/Rakefile +0 -9
  345. data/vendor/gems/globby-0.1.2/lib/globby/glob.rb +0 -90
  346. data/vendor/gems/globby-0.1.2/lib/globby/globject.rb +0 -18
  347. data/vendor/gems/globby-0.1.2/lib/globby/result.rb +0 -20
  348. data/vendor/gems/globby-0.1.2/lib/globby.rb +0 -47
  349. data/vendor/gems/globby-0.1.2/spec/gitignore_spec.rb +0 -109
  350. data/vendor/gems/globby-0.1.2/spec/globby_spec.rb +0 -93
  351. data/zeus.json +0 -22
  352. /data/{spec/fixtures/rails.png → public/avatars/User/2/original_rails.png} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 26e241b45f779ee875eb701d10c70901d668019ef6da6651759db4bef10ba182
4
- data.tar.gz: 0c951a98a80a1bd602da427bf594a00f416665a0c5951bf2a28ce35aafc2e404
3
+ metadata.gz: 325977901a3011b43c20379a5e03317660a3cd2b702e36ceb7aa255ec0f6ff17
4
+ data.tar.gz: 6badcc5bfcc41d304fe646a7ea07d1c4fce631b3a60efd08285752fe645e3572
5
5
  SHA512:
6
- metadata.gz: 7c9f099f4bc93c7cc0f03a848d1696af6a11f5a342b240fbc5db9c2235807d23288598009dbfc194f659b5a755b40a04c3899faaef03bbdf4b323180a411d1ec
7
- data.tar.gz: fc891f7bebe7f19738a708aa439f3aa48300f59b27d8a4707a76bde3733a8e87841d0773cb9674ff9f09d6200482cf389b5a4114e5afdf1543ac2b15ac8b9666
6
+ metadata.gz: 58f6a285322ca7ae834bbf2eeeaf0073a2c501f9dd71117b890c9d7a1403dd3b2e5f725e97d2b3814836f854595eb77f322e09a27a94202fb65ca7b28078cd47
7
+ data.tar.gz: 004b7dadb4c2c77e4863010b59a87dc89500142bc52fe0d90f81e71532d964b287f1bd97365bdd9460898249c0278e0ca389eba9edba1260c3410d0131302d0b
data/CHANGELOG.md CHANGED
@@ -4,6 +4,168 @@ It does not matter how slowly you go as long as you do not stop.
4
4
  First they ignore you, then they laugh at you, then they fight you,
5
5
  then you win. –- Mahatma Gandhi
6
6
 
7
+ Thu Aug 10, 2023 (0.21.0)
8
+ ======
9
+
10
+ #1114 Migrate from Paperclip to Active Storage.
11
+ Upgrade to Ruby 3.1
12
+
13
+ ## What's Changed
14
+ * Bump nokogiri by @CloCkWeRX in https://github.com/fatfreecrm/fat_free_crm/pull/956
15
+ * Bump rails by @CloCkWeRX in https://github.com/fatfreecrm/fat_free_crm/pull/957
16
+ * Bump puma by @CloCkWeRX in https://github.com/fatfreecrm/fat_free_crm/pull/959
17
+ * Rubocop by @CloCkWeRX in https://github.com/fatfreecrm/fat_free_crm/pull/960
18
+ * Rails 6.1 by @CloCkWeRX in https://github.com/fatfreecrm/fat_free_crm/pull/954
19
+ * Bump by @CloCkWeRX in https://github.com/fatfreecrm/fat_free_crm/pull/963
20
+ * Bump by @CloCkWeRX in https://github.com/fatfreecrm/fat_free_crm/pull/964
21
+ * Remove globby by @CloCkWeRX in https://github.com/fatfreecrm/fat_free_crm/pull/965
22
+ * Update Dockerfile Ruby Version by @doconnor-clintel in https://github.com/fatfreecrm/fat_free_crm/pull/962
23
+ * Bump rb-fsevent from 0.11.0 to 0.11.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/976
24
+ * Bump font-awesome-rails from 4.7.0.7 to 4.7.0.8 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/974
25
+ * Bump webdrivers from 4.6.1 to 4.7.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/973
26
+ * Bump capistrano from 3.16.0 to 3.17.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/969
27
+ * Bump devise-i18n from 1.10.0 to 1.10.2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/968
28
+ * Bump actions/checkout from 2 to 3 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/966
29
+ * Bump ffaker from 2.19.0 to 2.21.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/970
30
+ * Bump acts-as-taggable-on from 8.1.0 to 9.0.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/972
31
+ * Bump rainbow from 3.0.0 to 3.1.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/967
32
+ * Bump brakeman from 5.1.1 to 5.2.2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/979
33
+ * Bump ransack from 2.4.2 to 2.6.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/977
34
+ * Bump capybara from 3.35.3 to 3.36.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/980
35
+ * Bump rails-i18n from 6.0.0 to 7.0.3 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/978
36
+ * Bump rspec-rails from 5.0.2 to 5.1.2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/981
37
+ * Bump capistrano-rails from 1.6.1 to 1.6.2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/983
38
+ * Bump github/codeql-action from 1 to 2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/986
39
+ * Bump rubocop from 1.22.1 to 1.28.2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/989
40
+ * Bump timecop from 0.9.4 to 0.9.5 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/984
41
+ * Bump bootsnap from 1.9.1 to 1.11.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/988
42
+ * Bump devise from 4.8.0 to 4.8.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/987
43
+ * Bump selenium-webdriver from 3.142.7 to 4.1.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/982
44
+ * Bump rails by @CloCkWeRX in https://github.com/fatfreecrm/fat_free_crm/pull/992
45
+ * Bump bootsnap from 1.11.1 to 1.12.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/995
46
+ * Bump capistrano-bundler from 2.0.1 to 2.1.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/994
47
+ * Bump rack from 2.2.3 to 2.2.3.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/996
48
+ * Bump sqlite3 from 1.4.2 to 1.4.4 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/998
49
+ * Bump cancancan from 3.3.0 to 3.4.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1000
50
+ * Bump rails-html-sanitizer from 1.4.2 to 1.4.3 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1001
51
+ * Bump capistrano from 3.17.0 to 3.17.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1004
52
+ * Bump rb-fsevent from 0.11.1 to 0.11.2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1006
53
+ * Bump puma from 5.6.4 to 5.6.5 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1005
54
+ * Bump mini_racer by @CloCkWeRX in https://github.com/fatfreecrm/fat_free_crm/pull/1014
55
+ * Swap to sassc-rails by @CloCkWeRX in https://github.com/fatfreecrm/fat_free_crm/pull/1013
56
+ * Bump country_select from 6.0.0 to 7.0.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/985
57
+ * Improve actions by @CloCkWeRX in https://github.com/fatfreecrm/fat_free_crm/pull/1015
58
+ * Fixed issue with ActiveStorage missing storage.yml in production mode. by @steveyken in https://github.com/fatfreecrm/fat_free_crm/pull/1019
59
+ * Bump nokogiri from 1.13.8 to 1.13.10 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1020
60
+ * Bump brakeman from 5.2.2 to 5.4.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1022
61
+ * Bump bootsnap from 1.12.0 to 1.15.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1029
62
+ * Bump webdrivers from 4.7.0 to 5.2.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1021
63
+ * Bump rails-i18n from 7.0.3 to 7.0.6 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1028
64
+ * Bump rubocop from 1.28.2 to 1.40.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1025
65
+ * Bump timecop from 0.9.5 to 0.9.6 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1034
66
+ * Bump capybara from 3.36.0 to 3.38.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1033
67
+ * Bump premailer from 1.15.0 to 1.18.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1023
68
+ * Bump rspec-rails from 5.1.2 to 6.0.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1026
69
+ * Bump selenium-webdriver from 4.1.0 to 4.7.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1032
70
+ * Bump pg from 1.2.3 to 1.4.5 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1031
71
+ * Bump rails-html-sanitizer from 1.4.3 to 1.4.4 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1036
72
+ * Bump loofah from 2.19.0 to 2.19.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1035
73
+ * Bump rubocop from 1.40.0 to 1.41.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1038
74
+ * Bump puma from 5.6.5 to 6.0.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1037
75
+ * Bump rubocop from 1.41.0 to 1.42.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1042
76
+ * Bump puma from 6.0.1 to 6.0.2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1041
77
+ * Bump country_select from 8.0.0 to 8.0.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1043
78
+ * Bump rack from 2.2.4 to 2.2.6.2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1046
79
+ * Bump rubocop from 1.42.0 to 1.43.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1044
80
+ * Bump globalid from 1.0.0 to 1.0.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1047
81
+ * Bump nokogiri from 1.13.10 to 1.14.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1045
82
+ * Bump selenium-webdriver from 4.7.1 to 4.8.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1049
83
+ * Bump rubocop from 1.43.0 to 1.44.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1050
84
+ * Bump premailer from 1.18.0 to 1.19.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1051
85
+ * Bump rubocop from 1.44.0 to 1.44.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1053
86
+ * Bump bootsnap from 1.15.0 to 1.16.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1052
87
+ * Bump simple_form from 5.1.0 to 5.2.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1055
88
+ * Bump nokogiri from 1.14.0 to 1.14.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1056
89
+ * Bump acts_as_list from 1.0.4 to 1.1.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1057
90
+ * Bump responders from 3.0.1 to 3.1.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1058
91
+ * Bump rubocop from 1.44.1 to 1.45.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1060
92
+ * Bump puma from 6.0.2 to 6.1.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1061
93
+ * Bump nokogiri from 1.14.1 to 1.14.2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1062
94
+ * Bump devise-i18n from 1.10.2 to 1.10.3 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1063
95
+ * Bump devise from 4.8.1 to 4.9.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1066
96
+ * Bump brakeman from 5.4.0 to 5.4.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1069
97
+ * Bump capistrano from 3.17.1 to 3.17.2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1068
98
+ * Bump devise-i18n from 1.10.3 to 1.11.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1067
99
+ * Bump pg from 1.4.5 to 1.4.6 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1071
100
+ * Bump rubocop from 1.45.1 to 1.47.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1073
101
+ * Bump puma from 6.1.0 to 6.1.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1072
102
+ * Bump rack from 2.2.6.2 to 2.2.6.3 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1076
103
+ * Bump cancancan from 3.4.0 to 3.5.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1074
104
+ * Bump rubocop from 1.47.0 to 1.48.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1075
105
+ * Bump premailer from 1.19.0 to 1.20.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1077
106
+ * Bump selenium-webdriver from 4.8.0 to 4.8.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1065
107
+ * Bump database_cleaner from 2.0.1 to 2.0.2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1078
108
+ * Bump rubocop from 1.48.0 to 1.48.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1079
109
+ * Bump rack from 2.2.6.3 to 2.2.6.4 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1080
110
+ * Bump premailer from 1.20.0 to 1.21.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1081
111
+ * Bump selenium-webdriver from 4.8.1 to 4.8.3 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1082
112
+ * Bump puma from 6.1.1 to 6.2.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1086
113
+ * Bump devise from 4.9.0 to 4.9.2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1090
114
+ * Bump capybara from 3.38.0 to 3.39.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1087
115
+ * Bump rubocop from 1.48.1 to 1.49.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1089
116
+ * Bump selenium-webdriver from 4.8.3 to 4.8.6 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1085
117
+ * Bump rubocop from 1.49.0 to 1.50.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1092
118
+ * Bump selenium-webdriver from 4.8.6 to 4.9.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1097
119
+ * Bump puma from 6.2.1 to 6.2.2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1096
120
+ * Bump nokogiri from 1.14.2 to 1.14.3 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1093
121
+ * Bump rubocop from 1.50.0 to 1.50.2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1095
122
+ * Bump pg from 1.4.6 to 1.5.2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1099
123
+ * Bump pg from 1.5.2 to 1.5.3 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1100
124
+ * Bump rspec-rails from 6.0.1 to 6.0.2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1101
125
+ * Bump thor from 1.2.1 to 1.2.2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1104
126
+ * Bump nokogiri from 1.14.3 to 1.14.4 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1103
127
+ * Bump rubocop from 1.50.2 to 1.51.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1107
128
+ * Bump rails-i18n from 7.0.6 to 7.0.7 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1106
129
+ * Bump capybara from 3.39.0 to 3.39.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1105
130
+ * Bump nokogiri from 1.14.4 to 1.15.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1108
131
+ * Bump nokogiri from 1.15.0 to 1.15.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1110
132
+ * Bump capistrano from 3.17.2 to 3.17.3 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1111
133
+ * Bump nokogiri from 1.15.1 to 1.15.2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1112
134
+ * Bump mini_racer from 0.6.3 to 0.6.4 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1113
135
+ * Migrate from Paperclip (EOL) to Active Storage by @johnbumgardner in https://github.com/fatfreecrm/fat_free_crm/pull/1114
136
+ * Bump puma from 6.2.2 to 6.3.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1117
137
+ * Bump will_paginate from 3.3.1 to 4.0.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1116
138
+ * Bump rspec-rails from 6.0.2 to 6.0.3 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1118
139
+ * Bump rubocop from 1.51.0 to 1.52.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1119
140
+ * Bump capybara from 3.39.1 to 3.39.2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1124
141
+ * Fixes #1120 error raised when running rake db:create db:migrate the first time by @steveyken in https://github.com/fatfreecrm/fat_free_crm/pull/1121
142
+ * Bump rubocop from 1.52.0 to 1.52.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1125
143
+ * Bump jquery-rails from 4.5.1 to 4.6.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1127
144
+ * Bump rubocop from 1.52.1 to 1.53.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1128
145
+ * Bump nokogiri from 1.15.2 to 1.15.3 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1132
146
+ * Bump capistrano-rails from 1.6.2 to 1.6.3 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1131
147
+ * Bump rubocop from 1.53.1 to 1.54.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1130
148
+ * Bump rails by @CloCkWeRX in https://github.com/fatfreecrm/fat_free_crm/pull/1059
149
+ * Bump rubocop from 1.54.1 to 1.54.2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1133
150
+ * Bump rubocop from 1.54.2 to 1.55.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1136
151
+ * Bump country_select from 8.0.1 to 8.0.2 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1142
152
+ * Bump webdrivers from 5.2.0 to 5.3.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1141
153
+ * Bump rubocop from 1.55.0 to 1.55.1 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1140
154
+ * Support for hash arguments in i18n. Fixes #1102 by @ferrisoxide in https://github.com/fatfreecrm/fat_free_crm/pull/1144
155
+ * Bump rubocop from 1.55.1 to 1.56.0 by @dependabot in https://github.com/fatfreecrm/fat_free_crm/pull/1145
156
+ * App and specs working under Ruby 3.1.4 #1138 by @ferrisoxide in https://github.com/fatfreecrm/fat_free_crm/pull/1139
157
+
158
+ ## New Contributors
159
+ * @doconnor-clintel made their first contribution in https://github.com/fatfreecrm/fat_free_crm/pull/962
160
+ * @dependabot made their first contribution in https://github.com/fatfreecrm/fat_free_crm/pull/976
161
+ * @ferrisoxide made their first contribution in https://github.com/fatfreecrm/fat_free_crm/pull/1144
162
+
163
+ **Full Changelog**: https://github.com/fatfreecrm/fat_free_crm/compare/v0.20.0...v0.21.0
164
+
165
+ Fri Oct 07, 2022 (0.20.1)
166
+ ======
167
+ CVE-2022-39281
168
+
7
169
  Mon Oct 04, 2021 (0.20.0)
8
170
  ======
9
171
  #905 Swap from Marshal.load. Be sure to run `bundle exec rake ffcrm:preference_update` to migrate your users from old to new format
@@ -16,6 +178,14 @@ Drop ruby 2.5 support
16
178
 
17
179
  Upgrade to rails 6, papertail 12, devise 4.8
18
180
 
181
+ A variety of minor bug fixes and security updates
182
+
183
+ #946
184
+ #947
185
+ #950
186
+ #951
187
+ #952
188
+
19
189
  Wed May 09, 2021 (0.19.2)
20
190
  ======
21
191
  CVE-2021-22885
data/README.md CHANGED
@@ -1,7 +1,5 @@
1
- # Fat Free CRM [![TravisCI][travis-img-url]][travis-ci-url] [![Code Climate][codeclimate-img-url]][codeclimate-url] [![Discord][discord-img-url]][discord-url]
1
+ # Fat Free CRM [![Code Climate][codeclimate-img-url]][codeclimate-url] [![Discord][discord-img-url]][discord-url]
2
2
 
3
- [travis-img-url]: https://secure.travis-ci.org/fatfreecrm/fat_free_crm.svg?branch=master
4
- [travis-ci-url]: https://travis-ci.org/fatfreecrm/fat_free_crm
5
3
  [codeclimate-img-url]: https://codeclimate.com/github/fatfreecrm/fat_free_crm.svg
6
4
  [codeclimate-url]: https://codeclimate.com/github/fatfreecrm/fat_free_crm
7
5
  [discord-img-url]: https://img.shields.io/badge/chat-on%20discord-7289da.svg?sanitize=true
@@ -54,7 +52,7 @@ Visit our website at http://www.fatfreecrm.com/
54
52
 
55
53
  ## System Requirements
56
54
 
57
- * Ruby 2.6+ recommended
55
+ * Ruby 3.1+ recommended
58
56
  * MySQL v4.1.1 or later (v5+ is recommended), SQLite v3.4 or later, or Postgres 8.4.8 or later.
59
57
  * ImageMagick (optional, only needed if you would like to use avatars)
60
58
 
@@ -94,7 +92,6 @@ Please read the [Changelog](https://github.com/fatfreecrm/fat_free_crm/blob/mast
94
92
  |-----------------------------------:|:--------------------------|
95
93
  | **Home Page**: | http://www.fatfreecrm.com |
96
94
  | **Guides**: | http://guides.fatfreecrm.com |
97
- | **Online Demo**: | http://demo.fatfreecrm.com |
98
95
  | **Github Project Page**: | http://github.com/fatfreecrm/fat_free_crm |
99
96
  | **Feature Requests and Bugs**: | http://support.fatfreecrm.com/ |
100
97
  | **RDoc API**: | http://api.fatfreecrm.com |
@@ -111,7 +108,7 @@ Fat Free CRM is released under the MIT license and is freely available for you t
111
108
 
112
109
  Specific features that are not 'Fat Free' in nature, can be added by creating Rails Engines. See the [wiki](http://github.com/fatfreecrm/fat_free_crm/wiki) for information on how to do this.
113
110
 
114
- Tests can easily be run by typing 'rake' but please note that they do take a while to run! Alternatively, you can see the test build status over at our [travis page](http://travis-ci.org/fatfreecrm/fat_free_crm)
111
+ Tests can easily be run by typing 'rake' but please note that they do take a while to run!
115
112
 
116
113
 
117
114
  ## Main contributors
@@ -0,0 +1,3 @@
1
+ //= link_tree ../images
2
+ //= link_directory ../javascripts .js
3
+ //= link_directory ../stylesheets .css
@@ -0,0 +1 @@
1
+ //= link fat_free_crm
@@ -22,8 +22,6 @@ class Admin::FieldGroupsController < Admin::ApplicationController
22
22
  def edit
23
23
  @field_group = FieldGroup.find(params[:id])
24
24
 
25
- @previous = FieldGroup.find_by_id(Regexp.last_match[1]) || Regexp.last_match[1].to_i if params[:previous].to_s =~ /(\d+)\z/
26
-
27
25
  respond_with(@field_group)
28
26
  end
29
27
 
@@ -28,7 +28,7 @@ class Admin::TagsController < Admin::ApplicationController
28
28
  # GET /admin/tags/1/edit AJAX
29
29
  #----------------------------------------------------------------------------
30
30
  def edit
31
- @previous = Tag.find_by_id(Regexp.last_match[1]) || Regexp.last_match[1].to_i if params[:previous].to_s =~ /(\d+)\z/
31
+ @previous = Tag.find_by_id(detect_previous_id) || detect_previous_id if detect_previous_id
32
32
  end
33
33
 
34
34
  # POST /admin/tags
@@ -35,7 +35,7 @@ class Admin::UsersController < Admin::ApplicationController
35
35
  # GET /admin/users/1/edit AJAX
36
36
  #----------------------------------------------------------------------------
37
37
  def edit
38
- @previous = User.find_by_id(Regexp.last_match[1]) || Regexp.last_match[1].to_i if params[:previous].to_s =~ /(\d+)\z/
38
+ @previous = User.find_by_id(detect_previous_id) || detect_previous_id if detect_previous_id
39
39
 
40
40
  respond_with(@user)
41
41
  end
@@ -268,4 +268,15 @@ class ApplicationController < ActionController::Base
268
268
  raise "Unknown resource"
269
269
  end
270
270
  end
271
+
272
+ # In a number of places, we pass ?previous=(id) or ?previous=crm.find_form...
273
+ # This method centralises all of the places we can pass in a previous param
274
+ # and extracts an int ID, or nil
275
+ def detect_previous_id
276
+ return unless params[:previous]
277
+ return if params[:previous].start_with?("crm")
278
+
279
+ params[:previous].to_i
280
+ end
281
+ ActiveSupport.run_load_hooks(:fat_free_crm_application_controller, self)
271
282
  end
@@ -99,4 +99,6 @@ class CommentsController < ApplicationController
99
99
  def extract_commentable_name(params)
100
100
  params.keys.detect { |x| x =~ /_id$/ }.try(:sub, /_id$/, '')
101
101
  end
102
+
103
+ ActiveSupport.run_load_hooks(:fat_free_crm_comments_controller, self)
102
104
  end
@@ -15,4 +15,6 @@ class EmailsController < ApplicationController
15
15
  @email.destroy
16
16
  respond_with(@email)
17
17
  end
18
+
19
+ ActiveSupport.run_load_hooks(:fat_free_crm_emails_controller, self)
18
20
  end
@@ -45,7 +45,7 @@ class AccountsController < EntitiesController
45
45
  # GET /accounts/1/edit AJAX
46
46
  #----------------------------------------------------------------------------
47
47
  def edit
48
- @previous = Account.my(current_user).find_by_id(Regexp.last_match[1]) || Regexp.last_match[1].to_i if params[:previous].to_s =~ /(\d+)\z/
48
+ @previous = Account.my(current_user).find_by_id(detect_previous_id) || detect_previous_id if detect_previous_id
49
49
 
50
50
  respond_with(@account)
51
51
  end
@@ -160,4 +160,6 @@ class AccountsController < EntitiesController
160
160
  @account_category_total[:all] = Account.my(current_user).count
161
161
  @account_category_total[:other] = @account_category_total[:all] - categorized
162
162
  end
163
+
164
+ ActiveSupport.run_load_hooks(:fat_free_crm_accounts_controller, self)
163
165
  end
@@ -84,7 +84,7 @@ class CampaignsController < EntitiesController
84
84
  # GET /campaigns/1/edit AJAX
85
85
  #----------------------------------------------------------------------------
86
86
  def edit
87
- @previous = Campaign.my(current_user).find_by_id(Regexp.last_match[1]) || Regexp.last_match[1].to_i if params[:previous].to_s =~ /(\d+)\z/
87
+ @previous = Campaign.my(current_user).find_by_id(detect_previous_id) || detect_previous_id if detect_previous_id
88
88
 
89
89
  respond_with(@campaign)
90
90
  end
@@ -204,4 +204,6 @@ class CampaignsController < EntitiesController
204
204
  end
205
205
  @campaign_status_total[:other] += @campaign_status_total[:all]
206
206
  end
207
+
208
+ ActiveSupport.run_load_hooks(:fat_free_crm_campaigns_controller, self)
207
209
  end
@@ -51,7 +51,7 @@ class ContactsController < EntitiesController
51
51
  #----------------------------------------------------------------------------
52
52
  def edit
53
53
  @account = @contact.account || Account.new(user: current_user)
54
- @previous = Contact.my(current_user).find_by_id(Regexp.last_match[1]) || Regexp.last_match[1].to_i if params[:previous].to_s =~ /(\d+)\z/
54
+ @previous = Contact.my(current_user).find_by_id(detect_previous_id) || detect_previous_id if detect_previous_id
55
55
 
56
56
  respond_with(@contact)
57
57
  end
@@ -164,4 +164,6 @@ class ContactsController < EntitiesController
164
164
  redirect_to contacts_path
165
165
  end
166
166
  end
167
+
168
+ ActiveSupport.run_load_hooks(:fat_free_crm_contacts_controller, self)
167
169
  end
@@ -52,7 +52,7 @@ class LeadsController < EntitiesController
52
52
  def edit
53
53
  get_campaigns
54
54
 
55
- @previous = Lead.my(current_user).find_by_id(Regexp.last_match[1]) || Regexp.last_match[1].to_i if params[:previous].to_s =~ /(\d+)\z/
55
+ @previous = Lead.my(current_user).find_by_id(detect_previous_id) || detect_previous_id if detect_previous_id
56
56
 
57
57
  respond_with(@lead)
58
58
  end
@@ -108,7 +108,7 @@ class LeadsController < EntitiesController
108
108
  @accounts = Account.my(current_user).order('name')
109
109
  @opportunity = Opportunity.new(user: current_user, access: "Lead", stage: "prospecting", campaign: @lead.campaign, source: @lead.source)
110
110
 
111
- @previous = Lead.my(current_user).find_by_id(Regexp.last_match[1]) || Regexp.last_match[1].to_i if params[:previous].to_s =~ /(\d+)\z/
111
+ @previous = Lead.my(current_user).find_by_id(detect_previous_id) || detect_previous_id if detect_previous_id
112
112
 
113
113
  respond_with(@lead)
114
114
  end
@@ -268,4 +268,6 @@ class LeadsController < EntitiesController
268
268
  get_data_for_sidebar(:campaign)
269
269
  end
270
270
  end
271
+
272
+ ActiveSupport.run_load_hooks(:fat_free_crm_leads_controller, self)
271
273
  end
@@ -57,7 +57,7 @@ class OpportunitiesController < EntitiesController
57
57
  @account = @opportunity.account || Account.new(user: current_user)
58
58
  @accounts = Account.my(current_user).order('name')
59
59
 
60
- @previous = Opportunity.my(current_user).find_by_id(Regexp.last_match[1]) || Regexp.last_match[1].to_i if params[:previous].to_s =~ /(\d+)\z/
60
+ @previous = Opportunity.my(current_user).find_by_id(detect_previous_id) || detect_previous_id if detect_previous_id
61
61
 
62
62
  respond_with(@opportunity)
63
63
  end
@@ -227,4 +227,6 @@ class OpportunitiesController < EntitiesController
227
227
  current_user.pref[:opportunities_sort_by] = Opportunity.sort_by_map[params[:sort_by]] if params[:sort_by]
228
228
  session[:opportunities_filter] = params[:stage] if params[:stage]
229
229
  end
230
+
231
+ ActiveSupport.run_load_hooks(:fat_free_crm_opportunities_controller, self)
230
232
  end
@@ -245,4 +245,6 @@ class EntitiesController < ApplicationController
245
245
  Account.new(user: user)
246
246
  end
247
247
  end
248
+
249
+ ActiveSupport.run_load_hooks(:fat_free_crm_entities_controller, self)
248
250
  end
@@ -165,4 +165,6 @@ class HomeController < ApplicationController
165
165
  %w[zero one two].index(words.first).send(words.last) if %w[one two].include?(words.first) && %w[hour day days week weeks month].include?(words.last)
166
166
  end
167
167
  end
168
+
169
+ ActiveSupport.run_load_hooks(:fat_free_crm_home_controller, self)
168
170
  end
@@ -39,4 +39,6 @@ class ListsController < ApplicationController
39
39
  :user_id
40
40
  )
41
41
  end
42
+
43
+ ActiveSupport.run_load_hooks(:fat_free_crm_lists_controller, self)
42
44
  end
@@ -58,7 +58,7 @@ class TasksController < ApplicationController
58
58
  @category = Setting.unroll(:task_category)
59
59
  @asset = @task.asset if @task.asset_id?
60
60
 
61
- @previous = Task.tracked_by(current_user).find_by_id(Regexp.last_match[1]) || Regexp.last_match[1].to_i if params[:previous].to_s =~ /(\d+)\z/
61
+ @previous = Task.tracked_by(current_user).find_by_id(detect_previous_id) || detect_previous_id if detect_previous_id
62
62
 
63
63
  respond_with(@task)
64
64
  end
@@ -224,4 +224,6 @@ class TasksController < ApplicationController
224
224
  views = Task::ALLOWED_VIEWS
225
225
  views.include?(view) ? view : views.first
226
226
  end
227
+
228
+ ActiveSupport.run_load_hooks(:fat_free_crm_tasks_controller, self)
227
229
  end
@@ -143,4 +143,6 @@ class UsersController < ApplicationController
143
143
  .permit(:image)
144
144
  .merge(entity: @user, user_id: @user.id)
145
145
  end
146
+
147
+ ActiveSupport.run_load_hooks(:fat_free_crm_users_controller, self)
146
148
  end
@@ -109,11 +109,13 @@ module AccountsHelper
109
109
  # - a helper that abstracts the logic to the backend
110
110
  def display_value(value)
111
111
  return "N/A" if value.zero?
112
+
112
113
  number_to_currency(value, precision: 0)
113
114
  end
114
115
 
115
116
  def display_assigned(account)
116
117
  return truncate(account.assignee.full_name, length: 16) if account.assigned_to
118
+
117
119
  nil
118
120
  end
119
121
  end
@@ -300,18 +300,37 @@ module ApplicationHelper
300
300
  raw "$.get('#{timezone_path}', {offset: (new Date()).getTimezoneOffset()});" unless session[:timezone_offset]
301
301
  end
302
302
 
303
+ STYLES = { large: "75x75#", medium: "50x50#", small: "25x25#", thumb: "16x16#" }.freeze
304
+
305
+ # Convert STYLE symbols to 'w x h' format for Gravatar and Rails
306
+ # e.g. size_from_style(:size => :large) -> '75x75'
307
+ # Allow options to contain :width and :height override keys
308
+ #----------------------------------------------------------------------------
309
+ def size_from_style!(options)
310
+ if options[:width] && options[:height]
311
+ options[:size] = %i[width height].map { |d| options[d] }.join("x")
312
+ options.delete(:width)
313
+ options.delete(:height)
314
+ elsif STYLES.keys.include?(options[:size])
315
+ options[:size] = STYLES[options[:size]].sub(/\#\z/, '')
316
+ end
317
+ options
318
+ end
319
+
303
320
  # Entities can have associated avatars or gravatars. Only calls Gravatar
304
321
  # in production env. Gravatar won't serve default images if they are not
305
322
  # publically available: https://en.gravatar.com/site/implement/images
306
323
  #----------------------------------------------------------------------------
307
324
  def avatar_for(model, args = {})
308
325
  args = { class: 'gravatar', size: :large }.merge(args)
326
+ args = size_from_style!(args)
309
327
  if model.respond_to?(:avatar) && model.avatar.present?
310
- image_tag(model.avatar.image.url(args.delete(:size)), args)
328
+ size = args[:size].split('x').map(&:to_i) # convert '75x75' into [75, 75]
329
+
330
+ image_tag model.avatar.image.variant(resize_to_limit: size)
311
331
  else
312
- args = Avatar.size_from_style!(args) # convert size format :large => '75x75'
313
332
  gravatar_image_tag(model.email, args)
314
- end
333
+ end
315
334
  end
316
335
 
317
336
  # Returns default permissions intro.
@@ -96,8 +96,7 @@ module TasksHelper
96
96
  def replace_content(task, bucket = nil)
97
97
  partial = task.assigned_to && task.assigned_to != current_user.id ? "assigned" : "pending"
98
98
  html = render(partial: "tasks/#{partial}", collection: [task], locals: { bucket: bucket })
99
- text = "$('##{dom_id(task)}').html('#{j html}');\n".html_safe
100
- text
99
+ "$('##{dom_id(task)}').html('#{j html}');\n".html_safe
101
100
  end
102
101
 
103
102
  #----------------------------------------------------------------------------
@@ -41,7 +41,7 @@ class Account < ActiveRecord::Base
41
41
  has_many :addresses, dependent: :destroy, as: :addressable, class_name: "Address" # advanced search uses this
42
42
  has_many :emails, as: :mediator
43
43
 
44
- serialize :subscribed_users, Set
44
+ serialize :subscribed_users, Array
45
45
 
46
46
  accepts_nested_attributes_for :billing_address, allow_destroy: true, reject_if: proc { |attributes| Address.reject_address(attributes) }
47
47
  accepts_nested_attributes_for :shipping_address, allow_destroy: true, reject_if: proc { |attributes| Address.reject_address(attributes) }
@@ -39,7 +39,7 @@ class Campaign < ActiveRecord::Base
39
39
  has_many :opportunities, -> { order "id DESC" }, dependent: :destroy
40
40
  has_many :emails, as: :mediator
41
41
 
42
- serialize :subscribed_users, Set
42
+ serialize :subscribed_users, Array
43
43
 
44
44
  scope :state, lambda { |filters|
45
45
  where('status IN (?)' + (filters.delete('other') ? ' OR status IS NULL' : ''), filters)
@@ -57,7 +57,7 @@ class Contact < ActiveRecord::Base
57
57
  has_ransackable_associations %w[account opportunities tags activities emails addresses comments tasks]
58
58
  ransack_can_autocomplete
59
59
 
60
- serialize :subscribed_users, Set
60
+ serialize :subscribed_users, Array
61
61
 
62
62
  accepts_nested_attributes_for :business_address, allow_destroy: true, reject_if: proc { |attributes| Address.reject_address(attributes) }
63
63
 
@@ -48,7 +48,7 @@ class Lead < ActiveRecord::Base
48
48
  has_many :addresses, dependent: :destroy, as: :addressable, class_name: "Address" # advanced search uses this
49
49
  has_many :emails, as: :mediator
50
50
 
51
- serialize :subscribed_users, Set
51
+ serialize :subscribed_users, Array
52
52
 
53
53
  accepts_nested_attributes_for :business_address, allow_destroy: true, reject_if: proc { |attributes| Address.reject_address(attributes) }
54
54
 
@@ -38,7 +38,7 @@ class Opportunity < ActiveRecord::Base
38
38
  has_many :tasks, as: :asset, dependent: :destroy # , :order => 'created_at DESC'
39
39
  has_many :emails, as: :mediator
40
40
 
41
- serialize :subscribed_users, Set
41
+ serialize :subscribed_users, Array
42
42
 
43
43
  scope :state, lambda { |filters|
44
44
  where('stage IN (?)' + (filters.delete('other') ? ' OR stage IS NULL' : ''), filters)
@@ -124,7 +124,7 @@ class CustomField < Field
124
124
  #------------------------------------------------------------------------------
125
125
  def add_column
126
126
  self.name = generate_column_name if name.blank?
127
- klass.connection.add_column(table_name, name, column_type, column_options)
127
+ klass.connection.add_column(table_name, name, column_type, **column_options)
128
128
  klass.reset_column_information
129
129
  klass.serialize_custom_fields!
130
130
  end
@@ -142,7 +142,7 @@ class CustomField < Field
142
142
  #------------------------------------------------------------------------------
143
143
  def update_column
144
144
  if errors.empty? && db_transition_safety(as_was) == :safe
145
- klass.connection.change_column(table_name, name, column_type, column_options)
145
+ klass.connection.change_column(table_name, name, column_type, **column_options)
146
146
  klass.reset_column_information
147
147
  klass.serialize_custom_fields!
148
148
  end
@@ -19,7 +19,7 @@ class EntityObserver < ActiveRecord::Observer
19
19
  private
20
20
 
21
21
  def send_notification_to_assignee(item)
22
- UserMailer.assigned_entity_notification(item, current_user).deliver_now if item.assignee.present? && current_user.present? && can_send_email?
22
+ UserMailer.assigned_entity_notification(item, current_user).deliver_later if item.assignee.present? && current_user.present? && can_send_email?
23
23
  end
24
24
 
25
25
  # Need to have a host set before email can be sent