cmor_contact 0.0.40.pre → 0.0.41.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (221) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/cmor/contact/application/whatsapp_widget.js.coffee +30 -0
  3. data/app/assets/javascripts/cmor_contact.js +1 -0
  4. data/app/assets/stylesheets/cmor/contact/application/whatsapp_widget.css +32 -0
  5. data/app/assets/stylesheets/cmor_contact.css +3 -0
  6. data/app/controllers/cmor/contact/whatsapp_requests_controller.rb +60 -0
  7. data/app/models/cmor/contact/whatsapp_request.rb +17 -0
  8. data/app/view_helpers/cmor/contact/application_view_helper.rb +22 -0
  9. data/app/views/cmor/contact/application_view_helper/_render_whatsapp_widget.html.haml +4 -0
  10. data/app/views/cmor/contact/whatsapp_requests/_form.html.haml +1 -0
  11. data/app/views/cmor/contact/whatsapp_requests/_form_errors.haml +6 -0
  12. data/app/views/cmor/contact/whatsapp_requests/_form_xhr.html.haml +1 -0
  13. data/app/views/cmor/contact/whatsapp_requests/new.html.haml +6 -0
  14. data/app/views/cmor/contact/whatsapp_requests/new_xhr.html.haml +3 -0
  15. data/config/initializers/assets.rb +1 -0
  16. data/config/locales/de.yml +17 -1
  17. data/config/locales/en.yml +17 -1
  18. data/config/routes.rb +1 -0
  19. data/lib/cmor/contact/configuration.rb +3 -0
  20. data/lib/cmor_contact.rb +4 -0
  21. data/lib/generators/cmor/contact/install/templates/initializer.rb +8 -0
  22. data/spec/dummy/config/application.rb +1 -0
  23. data/spec/dummy/config/initializers/cmor_contact.rb +19 -0
  24. data/spec/dummy/config/initializers/route_translator.rb +3 -0
  25. data/spec/dummy/db/development.sqlite3 +0 -0
  26. data/spec/dummy/db/migrate/{20190715162723_create_active_storage_tables.active_storage.rb → 20200119053533_create_active_storage_tables.active_storage.rb} +0 -0
  27. data/spec/dummy/db/migrate/{20190715162742_create_cmor_contact_contact_requests.cmor_contact.rb → 20200119053558_create_cmor_contact_contact_requests.cmor_contact.rb} +0 -0
  28. data/spec/dummy/db/schema.rb +1 -1
  29. data/spec/dummy/db/test.sqlite3 +0 -0
  30. data/spec/dummy/log/development.log +49 -49
  31. data/spec/dummy/log/test.log +377 -219
  32. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/--/--uVoRnVC9PFGLoYVIXCrZiiLFnb4IVyoHsm1bbBwNk.cache +1 -0
  33. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-W/-WFODxq3Dt0hS9AAgxfrFGfqd3Rxqw_NTk69O6pMFK0.cache +1 -0
  34. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-c/-cuKPPwHZkwFd6IgxQE8O3NIcz1BxcEtj8_Li4tO65A.cache +0 -0
  35. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-g/-gm8z3bXpUv_LBvCN1fXtzdV2cu8WAWn0CErI26IO0Q.cache +1 -0
  36. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/09/09SIGL6FEukh98CAUiwTeV37kC1-xGzVrteLrVJ9dTE.cache +3 -0
  37. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0V/0VFVJ-JhrAzykBRXIU470to_I4dPSdwlkqqk0Wdu9aw.cache +1 -0
  38. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2P/2PHPPPMFi42XmUrvNieCmjNcgWroCXeTanmnQ-vT62g.cache +1 -0
  39. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2y/2yhdy6CWUdl_CPixYtFbVgDmxEc_22qLA1hj3hZdmBk.cache +1 -0
  40. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3E/3Ehe8GmBgFLMvQFXoupsbBAX6-g8dIyQeJO3Cz4TVK8.cache +2 -0
  41. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3k/3kPoz-P31pV1iErqsbOEr9Fz1HkEzk7dTh_tNdIp2u4.cache +0 -0
  42. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5K/5Kh5RevuIQpUVSDW-EilhDsPlutdytHspzHRGTC9IDU.cache +2 -0
  43. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5Y/5YKSVySTBqHI-Yvfr7qNbH8l-B8vdnxixKnec28E864.cache +1 -0
  44. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6K/6Kfk5m9bAGq0gRDTJ0Kclh-5DdQ_NcYEps0wD6tSChw.cache +1 -0
  45. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6g/6g6ojv_uQnOA-4q8WWr_-zHJ2b1sN77Hy2BZ0g_Gapc.cache +1 -0
  46. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6z/6zXJBhWFTBZTw2ojyb2M4_4H8k3rcVz6Y0RkXU6ZTQE.cache +0 -0
  47. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7L/7LHBZU7cg13v3vtEQ-a-CM9VC4CfKgO_MQhcS-LLzAU.cache +1 -0
  48. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7n/7neD8yjPtb8jSZkg_GONqf1tf_lwAZsBPz4-FQv1pf4.cache +0 -0
  49. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/82/82q_YlNCq3i7XGhlHZtHR4qCRUbe3aXv-PUoEpU7qvk.cache +2 -0
  50. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/88/883eN4SmZ9kXYVNsQJPm_Hg0k4nu7pTz6AdhkpgOyNw.cache +1 -0
  51. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8T/8TKD6f8Mz6KMBvP6vN2eVBI8vtY_GzJDR7PjLbviugg.cache +0 -0
  52. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8x/8xhzs_si4de5dYTOVQwEbF-KDXqSudW7rE51l0OEdrI.cache +0 -0
  53. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9E/9E3bUOAGaTW7NAuSEH7JEKE8P0C42MrUKe45-Oi2Upk.cache +0 -0
  54. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9S/9S33HYb1CcbZkHpsW987i9FWqW9Fce7Q6RbER5SlUrk.cache +1 -0
  55. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/A5/A5jcf9vDFCt1ti-AFxlRPG4HdKb0J_AP2Ne9yNK258Q.cache +2 -0
  56. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AM/AMmCzd0FPCP7ucqJXDVzTxISKuicH3nbG9zmnk0B8XI.cache +2 -0
  57. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AR/AR5HjgPjmHjtApKYFnYqzP4gNCJ99UXyEUJYQ5ItdpU.cache +1 -0
  58. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ax/AxF3q3BNDOVsC5_nZXZI0c7XMyBYt3Tch1jjd_ip2kw.cache +0 -0
  59. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ax/AxP5nvn4nM3_bBtoaeHKZtVZQSs1lo0lXmwVzDAyR44.cache +2 -0
  60. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ay/AynAR4nn1Xtl8cp_h9iZpTGKBUxB3qWFz6gfgv-Wy0Q.cache +1 -0
  61. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bi/BiN2Ha5hUOMTb50aSS144igMPB701e-AeXzEiuq4ibY.cache +3 -0
  62. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bm/BmmBkcCC1qQxVWDcZgrkuhFXZQUTTjglsBdztYI64WM.cache +2 -0
  63. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/CG/CGeyk563RkMWOB9ieZBTRUffxXdXexuGXFqPVnulvKs.cache +1 -0
  64. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ea/Ea_s-_DIqe4ftGhcWp1hai45qUnhsl67fVBNl8e8ddo.cache +1 -0
  65. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Er/ErnEEHubWTt304b_UtyLr9kIF3kmXE4Jx_l703VT8h0.cache +32 -0
  66. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FN/FNadC17Fjn31cNub608HO79L8TxoeE9gk1o_nTEZ4Oc.cache +1 -0
  67. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FN/FNyjcBZA6hdlZbpnzV0BR2OOFc65g4_q2mRH2BeXnbI.cache +1 -0
  68. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Gd/GdD88MBCiQ4YuRlz2E4P0YohDnaGwNkcslSU60oNlyE.cache +2 -0
  69. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Gm/GmkGW_aKzTsiHd7JndhKDLVrMtXFUkgKEnbfE_VWRq4.cache +1 -0
  70. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Gy/Gyz635Hw3BnIvd6_GDhPUqZXE0PKdc9sxpa0jwom8EQ.cache +1 -0
  71. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/H6/H6XZxyZ5u5USfUZ2yEy8E-enaVw0iFq63Z5XVLQogTY.cache +1 -0
  72. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HC/HCDOUd7-S45aJ_PjVAC_Vmjyud3i1aQv4cE3t9_Z3Dw.cache +2 -0
  73. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HQ/HQf2LYaABrxlqVRcdpCiOG-gPeTigMEeRXM22eXGO3w.cache +1 -0
  74. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/I2/I2ptopNvzZHA4c7ho9e9kcmHJjsuoXW8inVcjE5zryw.cache +1 -0
  75. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/If/IfjuVHwDs3o1_4wuUYL8Q6C4G57uRvoah_vChE0pUco.cache +1 -0
  76. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ii/Iiv8TMilHFsgX6mmcbV54_zBJcCKK4z8ILLHbZS4ExU.cache +0 -0
  77. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Iz/IzpCEXoxa9sKQNgQVuR0Hjoon8C6y8Gxo9S5H9FWP5M.cache +0 -0
  78. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/J8/J8DA-jG092fy5gFpwgNvkFgZX4f0-V7KjHeOP6gWVOg.cache +1 -0
  79. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/J9/J90rXakSmo9PYUOh_UM1VWrULnQ2ZLmgDCIcUyizWIo.cache +1 -0
  80. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JR/JRLJwu5F-aux0D48W21AAkB9T95UUri7Q_fmem0aBAw.cache +1 -0
  81. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Jp/Jp-P-w8fzJr9V6xkY_0t0WAWU4hdZD1bQG-T43in35I.cache +1 -0
  82. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Jt/Jt0O9Gt5u370Hb1oUrXBDMDqECnh867hwCIhdzaK0QI.cache +1 -0
  83. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/K3/K35I74n47p-zoG8j2L_NgEDXzSk8Ec7z64AA_W5VkN8.cache +3 -0
  84. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KU/KUzWwLFQ2yX-3EOddrAI1essdUyadjjxK29eM1eT9DY.cache +1 -0
  85. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Kn/KnPEEHK1kwGbXaVP5FU19C09a45CP-jkSvqDFQRBPOg.cache +0 -0
  86. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Lh/LhVXsSQDva1-4mRl_9kDIhSC0yXph2uqSXqs7Xi8k3s.cache +2 -0
  87. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NR/NRcyVN4r-e9NhpoB18n1Ci_MN_efTZCuKVOUxzNg2EY.cache +1 -0
  88. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ng/NgR9ik6wxTBCsz7gAibxGCY_bApnwj_NZHCKqAEZQ1k.cache +0 -0
  89. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Nm/NmUCrpe_dAxwiicWINQMbaAhMZ3Nlgf-5qBPfoCD9B0.cache +0 -0
  90. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/P4/P4D53BiQKAcnAbYFtwTBmgZbnO29UjbqRsfSYk7Okak.cache +2 -0
  91. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/PP/PPURdQ1tkJbYxBJcBdXeQsyy4rGA14yn8dXlcdYpS_Y.cache +0 -0
  92. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/PU/PU-bW8TNmjeHLoPuEnSWfCCqVMeLa6i3-hr4odEY9ZE.cache +1 -0
  93. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/PY/PY8MlEPGHFn5VBci09tK7yPjxtUiLLZe7_MMXff2oW8.cache +1 -0
  94. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Pg/Pg41v8c4sWuBb_W8ZMSCZ2zX23kDejycBOi8YVKkNqQ.cache +1 -0
  95. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Q3/Q3TxuimbxsnBfAe0acZOCxKn6OeBB9d4PoBLW1SZcJU.cache +1 -0
  96. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QL/QLf9qJLa2dMNI996t4LfppZF45m5tUs2AYz-BT31yA8.cache +0 -0
  97. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Qe/Qe9dIPyBf-TLGpyNZ41UbzGFhNkLEBMNw5imoL8nxEU.cache +2 -0
  98. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RK/RKIIoAsO5ihXeqgTFXIU0pbiwDyyEoLPT0OJSEk0FeA.cache +1 -0
  99. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RY/RYs8tjEinElltP-kqfTar7cJPVXdHI51hCZP5nzxl8M.cache +0 -0
  100. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ra/RaNEvqB7dA6k2T2W9xQxPUnN__OjWm9yWxmKuixotQM.cache +1 -0
  101. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Rc/RcuMeBIWl-vYMj0HJjgrxk4zrCSfOBvTUlndewuFMfc.cache +1 -0
  102. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/S6/S68aVGMiAgB8IhZUhas9MXYzV9u0LFcnex-8fhxxWQo.cache +1 -0
  103. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/S7/S7OW0dPUlfzoxTEAo1LLk3ccGn6OONvJ-KiyUfCnPO8.cache +0 -0
  104. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/S8/S86QJzxPNaB2CQXQ1SKDbWfZdTQPRFBCrhsVcRRuvdM.cache +0 -0
  105. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Sl/SlTxCkHUNAUEhd2NqEJ-mE1U3ssU30uRF251P-E6PH8.cache +1 -0
  106. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Td/Tdt1zY2kRAFN4fK4r-nzxcpdCcFSBOjUUr3QFhm1Ipw.cache +0 -0
  107. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Tr/Tr0ZgBAO791VgGmPVAXA8Fvtz-_zqfLFv1X_rfUPH3Q.cache +1 -0
  108. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/V0/V0oynPF8iyKAZX6CsVhLNy0cEn6kMz20zvgCwmhwUAo.cache +1 -0
  109. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/V9/V99EfSaCz3piQ9qb9vICLZ-gmlxEeqXIkLqm-bFZxcM.cache +1 -0
  110. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/W6/W6SY2DWCK5ODMLmxXeWRQ5sitMu-be3z-8rtaZS5AAI.cache +1 -0
  111. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/W9/W97_LwpYet6wurp7-r5keOQeC6daqrhSf9jJW0IiX38.cache +1 -0
  112. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Wu/WuX1taiDT8vjVRLsLw5ocIO96TPF4D9xRrbKnhGGJLc.cache +1 -0
  113. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Wy/WyC1a013QnCOHVWvOE__FMUNl8Xaq7b0D842uw5Dd6E.cache +1 -0
  114. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XT/XTz9VVJzoiCm8mePNq7z2HDLmk-4RFTHqplJak8jNnI.cache +0 -0
  115. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/X_/X_DqQA08T0jcOK8kvKnbuJ60g3wr_MG0JQOwQUYQ1M4.cache +1 -0
  116. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Xk/Xk88pyUkf20D7CqjKcmeUKb50zyuywSuvc38_HvLXqs.cache +0 -0
  117. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Xq/XqkLuENMTUW2nzcPyJZyEuy_5F8K-ICotABR7RArwvA.cache +0 -0
  118. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/YM/YMSkijO4OqF-va090LsCh_f3AaiBWZcHyXM4hqlhuhU.cache +1 -0
  119. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yg/YgVkiPnfqJilOEw63PgVgC-iEn4iAnKAQU6h84gneRE.cache +2 -0
  120. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yh/Yh3PlJjadcoGcCCbCTqgJU_dVe4Doy90AafGyMhu3EQ.cache +0 -0
  121. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yl/YlukUsyujAODdc0yapT61cXvvVIQ_M9YWUgpTpQTa_Y.cache +1 -0
  122. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yn/YnDhC5Hn3XGTCyvL1qKLMdenlf0kSq_sO49MBJFBkqc.cache +2 -0
  123. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yy/Yyz39RjCPMt7Xfe2PpecPYMRbT6wP7Dvu2SmL51FycE.cache +1 -0
  124. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Zm/ZmQObfpXFL0sGTbFRdwtB9ZijGV_xnf0-Z4-0ZbtdBI.cache +1 -0
  125. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_R/_RCIa0Mn-0A6XVkUnYEtAI3yX80EDC6IVRjbZ6DJlg8.cache +1 -0
  126. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/a6/a6c2fElJyz52FG1bzR1lcV7uaAsWFsR7vgCx-9C3Auk.cache +0 -0
  127. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/a9/a9AbcO7bHCvM_zzrZ7GY22eAdaWYE3P7D7NHlc_bqdQ.cache +1 -0
  128. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/aW/aW1eUX8Bdt6woKSobNpaGTb83qrg88NOoUXLJBS8f2M.cache +1 -0
  129. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/az/azPz0MjaMrptwfd2WrANe0mC8dv4x54NUTZ_RHwB2Fs.cache +3 -0
  130. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/b9/b938fG3-fVDu3IGFIQ5lV5QGfA6UIXSje9AeC1RS5BA.cache +1 -0
  131. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bq/bqX4j_zZbeV8LgllrusWMRjlCAKnQopwGmBpRlR0RVo.cache +1 -0
  132. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ci/ciKCYgJ8xqkVKW7svWS-EBI8RGb17E3tr9vTADbOmIc.cache +2 -0
  133. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dC/dCASZpttrXE5-LfRPiHHj6H-V_HGzUvuumoOO-BZtBM.cache +0 -0
  134. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dp/dpYfWRNwhMBvM4r0LC7pRLwCmYyDyXmo-W16YLyUkEY.cache +1 -0
  135. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/e4/e4KhaMiKnHNn7WbKYvSl4qLfn5XOzf7tghXekwAtk_M.cache +3 -0
  136. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eR/eR-8QRvb0sTzJvQ2cCQIK51TPovuLdHn-RY0uIyTaNc.cache +0 -0
  137. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eX/eXrODHOUM-OXkFK5Q1CvWeg-ktPYWwG9U2Unzw62WZo.cache +2 -0
  138. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/f2/f25XXrnER1SO3RQZx9TwzvHDYO9ubMJzYw2G0vZYooQ.cache +0 -0
  139. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fH/fHcE4Kuql8zBhtB1xYJArJKc4RVJcHRkWe17NdQVfX8.cache +1 -0
  140. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fh/fhxP1IPKmUpqSTU3iPliPz87Emd8Jy0T6pUapEY6MS8.cache +2 -0
  141. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/g3/g3meu_FE0d8HVLqnQdR6wmPl9L1IEjF6lLMbWshsISQ.cache +2 -0
  142. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/g8/g8ZIQz8KHkeKEH1tPrQyf57b_a6fkl6hhODGWcpLDYQ.cache +2 -0
  143. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gs/gs8O-hnSVTNtAMoD9-yrTB7WC2L1NXNBheKKW_4t_xw.cache +2 -0
  144. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/h8/h8GfGN76bmpf4DLx0HLB2fDddrH97LpxgVi5S5lXEAg.cache +0 -0
  145. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hE/hE7i1PrvOReI7GbgJuGdlOZcF2exffn_eu3HcETjUtw.cache +0 -0
  146. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hE/hEfqVpUEZekaAwq2WfcTahAURqOqs8qMJRVAMBLJBbk.cache +0 -0
  147. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hh/hhBL0QAskLI4K7s0076rBPZPKRoTCQv730SRl0UkzPc.cache +1 -0
  148. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hr/hrdt0lveCzXrHPwshGxI7NeLRCOXjcNfrOx2EajTj6k.cache +1 -0
  149. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iA/iAm5sdGtDc01QGmA7B200Gg0FWYFDncWeQhRExUjdno.cache +1 -0
  150. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iK/iKD_EVENnAK9F4ZbyFFVRdJs479d65nJ_KqAzUR5Jv4.cache +0 -0
  151. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iY/iYhimmRrdDOmXCdoOoOMlvf5hLfXlGLdIiEAuxsah00.cache +2 -0
  152. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ik/ikqi0IrytERlPVbeJrNZnd1jaKMHIIc5Blerf_4lbh4.cache +2 -0
  153. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iy/iyXcqKtN3SUu5x5TqP48h89gLagEIEKZ3oNV7vpRvTE.cache +0 -0
  154. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jQ/jQwRPkEpFXP9FUM0TXwMKxld_lOpGGWAyiEXD6ejBws.cache +1 -0
  155. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jk/jk-Q6T8oRztqqYmSOxc_AuGgQ8U2ZCP0lxFvmRgxrc0.cache +2 -0
  156. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jl/jl8RmdNOOcNe4aRwgcDPS7XXVowU1fD2AccWQfaAhqs.cache +1 -0
  157. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/k-/k-bsTA315sR8iUULydbJ9swQ_sbliU0Z3nmwvFduMoQ.cache +3 -0
  158. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/l1/l1lmj4PCoaRrPDXkf-ikrO7kRyONy8ClBgVCs5VsXDk.cache +3 -0
  159. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lS/lStvx9Beg2l4s8L-QdTSKuc5_qQPQAZPnIcRI7JkpPE.cache +0 -0
  160. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lu/luWp4WzF2hyzqRLszkLOcO2OsS4BNJrwN5qkemrz5d8.cache +1 -0
  161. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mg/mgKQfCNtf8r-ZBapE8bOEFMzHCe5vL3gXf2pwytxr24.cache +0 -0
  162. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mi/mizDw234RdIIGD3Q0Cu0hurJ_NopWlAOQU101HhTnAM.cache +1 -0
  163. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mt/mti_Jdr3zlygSo4F5-1sh1eE_lSBfg23UMyg7ntjZhs.cache +1 -0
  164. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nO/nOk1StRCpfpfcUL3LxqZXbZiPO5KoAQsu4DCr1DpHtE.cache +2 -0
  165. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/n_/n_xYqQYhwEMQknb3jFQnjlxxBE9TzMNHCdJ-bEyZFIw.cache +2 -0
  166. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nb/nbE9F1Lff6172JJlnsbphWWnUqAETTU97Z_0hbcISTk.cache +1 -0
  167. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nx/nxTv3sKVUQZADJyM3dPaVmUA78MIsMLD_K279yN_GsI.cache +2 -0
  168. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nz/nzP2QqJ701fN4VE7Zum68yIjn8-JyOjInxMYtD4GOgQ.cache +0 -0
  169. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nz/nzTG5PNC0h84EYWsIez6-b_sImMyN7gGVJoFetHa96A.cache +0 -0
  170. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/o8/o8FeUwaKA0MGoRb3xNsqeEpj-i4h89Sf8hAe3KclRjQ.cache +1 -0
  171. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oa/oanPJi8vkcusQmiGR7lV83k4mqPHwrn-h5jEkFWYGXk.cache +0 -0
  172. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/om/om3gxZD0pydiYXgg-qfWU-gAruk0mzO_L4wUSX8hmwQ.cache +1 -0
  173. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pH/pHxVy7FZk5bSzayvqSReVCBDl8tyZsinqbM-1J4LzI4.cache +0 -0
  174. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qE/qEqhM9a-t_QD3BWLpYePOl_GhIrp4pMGwjc86Zh9X0Y.cache +0 -0
  175. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qL/qLI6YmHgTOWSvK-axTrytNHMjxfvLqkfsG0feo-16uA.cache +0 -0
  176. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/q_/q_79RCHcEa48J2wTjEtUIL1PsdQJITwgO4Mbq9vqI_M.cache +0 -0
  177. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qp/qpnn4gewy2_0O7aLG1YcbCjdvoFzZxERgl-uAb2NBiU.cache +3 -0
  178. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rM/rMH5SI34eYLP3UKN6nbXlA1g6OoeVxnGtNgR_RoMrvo.cache +1 -0
  179. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rR/rRG2fiwM_TtG63S7RueONIoSya5pJ3cxk4fJiiVCEGE.cache +1 -0
  180. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rb/rbDCS-io3L3p4WS4ZiqeLynhhonweTQEq3i9R4eLs3s.cache +1 -0
  181. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rk/rkTsARiOkJ36OhhBFKW_pFrumwIPjzwIks84HS7yIa8.cache +1 -0
  182. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ro/roRo4i80-eCp5OBfQixarj57g1MAEFAnJXfB8yIecBU.cache +1 -0
  183. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rv/rvPXCY9kJZYjGQOyZ6zPTQuqWqqQRgIDvwlmVSfV18Q.cache +2 -0
  184. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sD/sDrOEK64tHodTAx_0bfU-f2QfMdrSAPx3E8fz4NSXtQ.cache +0 -0
  185. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sF/sFaDgnrVymV-i1pq8oFTO7AMiXfGh8odbuZc77R1ZIo.cache +0 -0
  186. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sb/sbf6Cd6UTax4Q6dO_IJVvNIpAb-axyk2b0q8yVpnKDg.cache +0 -0
  187. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sn/sn54OOWYdB1enCZ479lEXl2UQEtuiBIXcd17agCLuG8.cache +1 -0
  188. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sp/spHzQy8hpyOazaWV8ps2e8eEN_1JQvuZlOKKAXvP3Pg.cache +1 -0
  189. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tF/tFBBIqJk8kEXHwZodwwsDG1ZnLtHUgQExLBppHiMr70.cache +3 -0
  190. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tJ/tJIViDUQEref41nyBH-5nKSSFyojNH6Vjzx8E_ZVosk.cache +1 -0
  191. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/th/thIhgiuMHO_3A_ryXNheW2_Y0Mw8st3BI6lUVFakJz0.cache +1 -0
  192. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/to/to3OZW5pymhvRwZejeUnb8VX7KzKj6XPWNSKAw_BD8A.cache +0 -0
  193. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/u3/u3aI9g21xngyxdELa4k2UaFOOwEezXm-FXKhlmWevFs.cache +0 -0
  194. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/u8/u8eyB2x_fVKUn-D8y1bx18f_2dk0bWeImNjqPZc6HqU.cache +1 -0
  195. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uP/uPISKnrReBm7Dy5lJ1AiQhMW0o7_2Op5cL2ZGWJh30E.cache +1 -0
  196. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uT/uT_SiFfmeEBzbzkn0IYiJAqgUxwBLiDv7sH0yujLhx0.cache +1 -0
  197. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uZ/uZShm4oTj3aMhVv0aQ-bHZO2ILpbR_YEin0O8xu69Us.cache +1 -0
  198. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uo/uojpnZNmCSLgYSpDHacT7CXvfBiKCjsizN9Mrd7bgiA.cache +0 -0
  199. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vH/vHIeDgPhDOSthVvhWKosHY0EA_KfxcwR62T531rRvi4.cache +1 -0
  200. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wR/wR0e_7hNLcnbWXSyeV5IwVkhy1TMqX_4t1pXsEweTDA.cache +1 -0
  201. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wY/wYscM1kVYoR9SjNgvA8tz8Yw6dGjEFb8NegK1QfM-rc.cache +1 -0
  202. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wb/wbb8AxEBVW39Lc-ueINb9976BZEGN7O3mihYMP0xc_0.cache +2 -0
  203. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wi/win_v0ZNu-l7AoRx8w3ls1xcy0mUExLBVMCSr5oaJFc.cache +0 -0
  204. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wm/wmM3XYZ7jgPQhwclqYwEvWDLmz85O03chKhUsA7oJsA.cache +2 -0
  205. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wv/wvNggJg6YJi4vWK3DdUuyr87nWowIClLyrYPMUhlIos.cache +0 -0
  206. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xC/xCobBePQjr16SbYrc5w5Tfe9I4FoONzo9b8VWWX1zQc.cache +3 -0
  207. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xd/xd3JtG-D44e-jZ7D-VwzpgcjsRPbvL4M5iZds6iinac.cache +1 -0
  208. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xu/xuqTCdNMrB8B8JVihwlZduwqVaT5dhHz4L4Mw-tsyL8.cache +1 -0
  209. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yE/yEhUtQr5RJwWx8_AMli6SaJhinPjfStt2_U1hlE_wQM.cache +1 -0
  210. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yF/yFwH5xg233J3ZOBZVI5OQEIGt6poH4d50zY1BaEASCs.cache +1 -0
  211. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yW/yWFZzGL5OfncjMgS6E7KYJTkzSqwjYQR9H9DJO2G3nQ.cache +1 -0
  212. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yb/ybb4Qfh3jh0WHAq6izBW-whsw6H4gGj7GYNgL3TdrBk.cache +1 -0
  213. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yy/yyPSvwTSsaCOl4J-CXh0eadLP63wfnOJxFXz-hgCldg.cache +1 -0
  214. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/z1/z1meknNd9i0t5EYolx6FTrLlt8iRGzZatDvDjtrD3m0.cache +1 -0
  215. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zb/zbnLOSWWPYE5ydWMPKTuprAHgnao8N5vrc83ZOIe9bk.cache +1 -0
  216. data/spec/dummy/tmp/development_secret.txt +1 -1
  217. data/spec/features/de/kontakt/anfrage_spec.rb +35 -0
  218. data/spec/features/de/kontakt/whatsapp_spec.rb +41 -0
  219. metadata +280 -11
  220. data/app/assets/javascripts/cmor/contact/application/keep.js +0 -0
  221. data/app/assets/stylesheets/cmor/contact/application/keep.css +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bb1d2c0142b73cb13944de57f31ea14fa60101038832653aced86e1752e32f60
4
- data.tar.gz: 6350a59021190a093328a6cb570c88e1f607ef4f935f13f9f338b7fbe2b60a4f
3
+ metadata.gz: deb3da4aa33cd2fa772b7059989850226e0cdfca2cddd9b0ccdf0814e754edcf
4
+ data.tar.gz: 93b59767b93081fffdcec34dbbaef3f24dd8a0b088adfdd1675c757a6110933b
5
5
  SHA512:
6
- metadata.gz: 5818c439c21e7ac80a65e7be505edc859e5e405cb9e3eec000c4634ca6fcd601606e4f83463404d50a1c6de3b8c265a63b247382ffed9e8e64eb61f1b837d774
7
- data.tar.gz: 6f7049631360389d6fab64792f73082681200834f2301839f11919e0b7861d7ed43a5a15f83f2bf75de9ad8c33b932e73e400d28e12df74d3b00d8191d9ba4b4
6
+ metadata.gz: 8357525514e7816387b7f92c6a1b8705ac74fdaac8b9acb97baaa9f33123418d4fcb8796bacdab21fd215f01c9252a23e9fc1d5cc893135e0944a0918cce88c9
7
+ data.tar.gz: 3b35020f4c75648fcfa7c98f527748e05d0ef2d8f1cbb36af84b5e0fd8267a749ac10945e39646fde8bac95aa3a3bbe4ca132c717f8f225d32dc69d9fdbd7e41
@@ -0,0 +1,30 @@
1
+ $ ->
2
+ initializePopover = (element) ->
3
+ url = $(element).data('url')
4
+
5
+ jqxhr = $.get(url, (data) =>
6
+ createPopover(element, data)
7
+ return
8
+ ).done(->
9
+ return
10
+ ).fail(->
11
+ return
12
+ ).always(->
13
+ return
14
+ )
15
+
16
+ createPopover = (element, data) ->
17
+ popover = $(element).popover
18
+ sanitize: false
19
+ content: data
20
+ html: true
21
+ trigger: 'click'
22
+ return
23
+
24
+ initializePopover('#cmor-contact-whatsapp-popover-button')
25
+
26
+ $(document).on 'keypress', 'textarea', (e) ->
27
+ if e.which == 13 and !e.shiftKey
28
+ $(this).closest('form').submit()
29
+ e.preventDefault()
30
+ return
@@ -0,0 +1 @@
1
+ //= require cmor/contact/application
@@ -0,0 +1,32 @@
1
+ .page-action {
2
+ position: fixed;
3
+ bottom: 1rem;
4
+ right: 1rem;
5
+ }
6
+
7
+ .btn-circle {
8
+ width: 30px;
9
+ height: 30px;
10
+ padding: 6px 0px !important;
11
+ border-radius: 15px;
12
+ text-align: center;
13
+ font-size: 12px;
14
+ line-height: 1.42857;
15
+ }
16
+
17
+ .btn-circle.btn-lg {
18
+ width: 50px;
19
+ height: 50px;
20
+ border-radius: 25px;
21
+ font-size: 28px;
22
+ }
23
+
24
+ .btn-whatsapp {
25
+ background-color: #00E676 !important;
26
+ border-color: #00E676 !important;
27
+ color: white !important;
28
+ }
29
+
30
+ .popover #new_whatsapp_request textarea {
31
+ font-size: 80%;
32
+ }
@@ -0,0 +1,3 @@
1
+ /*
2
+ *= require cmor/contact/application
3
+ */
@@ -0,0 +1,60 @@
1
+ module Cmor
2
+ module Contact
3
+ class WhatsappRequestsController < Cmor::Contact::Configuration.base_controller.constantize
4
+ before_action :initialize_resource, only: [:index, :new]
5
+ before_action :initialize_resource_for_create, only: [:create]
6
+
7
+ respond_to :html
8
+ responders :flash
9
+
10
+ def self.resource_class
11
+ Cmor::Contact::WhatsappRequest
12
+ end
13
+
14
+ def index
15
+ new
16
+ if request.xhr?
17
+ render :new_xhr, layout: false
18
+ else
19
+ render :new
20
+ end
21
+ end
22
+
23
+ def new; end
24
+
25
+ def create
26
+ if @resource.valid?
27
+ respond_with @resource, location: after_create_url
28
+ else
29
+ respond_with @resource
30
+ end
31
+ end
32
+
33
+ private
34
+
35
+ def initialize_resource_for_create
36
+ @resource = initialize_scope.new(permitted_params)
37
+ end
38
+
39
+ def initialize_resource
40
+ @resource = initialize_scope.new
41
+ end
42
+
43
+ def initialize_scope
44
+ resource_class
45
+ end
46
+
47
+ def resource_class
48
+ self.class.resource_class
49
+ end
50
+
51
+ def permitted_params
52
+ params.require(:whatsapp_request).permit(:message)
53
+ end
54
+
55
+ def after_create_url
56
+ @resource.whatsapp_link
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,17 @@
1
+ module Cmor::Contact
2
+ class WhatsappRequest
3
+ include ActiveModel::Model
4
+
5
+ attr_accessor :message
6
+
7
+ validates :message, presence: true
8
+
9
+ def whatsapp_link
10
+ "https://wa.me/#{number_for_url}?text=#{URI.encode(message)}"
11
+ end
12
+
13
+ def number_for_url
14
+ Cmor::Contact::Configuration.whatsapp_number&.gsub("+", "")&.gsub(" ", "")
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,22 @@
1
+ module Cmor
2
+ module Contact
3
+ # Example:
4
+ #
5
+ # # app/controllers/application_controller.rb
6
+ # class ApplicationController < ActionController::Base
7
+ # view_helper Cmor::Contact::ApplicationViewHelper, as: :contact_helper
8
+ # end
9
+ #
10
+ class ApplicationViewHelper < Rao::ViewHelper::Base
11
+ # Example:
12
+ #
13
+ # # app/views/layouts/application.html.haml
14
+ # = contact_helper(self).render_whatsapp_widget
15
+ #
16
+ def render_whatsapp_widget(options = {})
17
+ resource = Cmor::Contact::WhatsappRequest.new
18
+ render resource: resource
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,4 @@
1
+ .page-action
2
+ #page-action-whatsapp
3
+ %button.btn.btn-lg.btn-primary.btn-circle.btn-whatsapp{ id: "cmor-contact-whatsapp-popover-button", data: { container: "body", toggle: "cmor-contact-whatsapp-popover", boundary: 'viewport', url: cmor_contact.whatsapp_requests_path } }
4
+ %i.fab.fa-whatsapp
@@ -0,0 +1 @@
1
+ = form.input :message, as: :text
@@ -0,0 +1,6 @@
1
+ - if resource.errors.any?
2
+ .error-explanation.alert.alert-danger
3
+ .error-heading= t('errors.template.header', count: resource.errors.count, model: resource.model_name.human)
4
+ %ul
5
+ - resource.errors.full_messages.each do |msg|
6
+ %li= msg
@@ -0,0 +1 @@
1
+ = form.input :message, as: :text, label: false, input_html: { cols: 20, rows: 10 }
@@ -0,0 +1,6 @@
1
+ %h1= t('.title')
2
+
3
+ = simple_form_for(@resource) do |f|
4
+ = render 'form_errors', resource: f.object
5
+ = render 'form', form: f
6
+ = f.submit class: 'btn btn-primary'
@@ -0,0 +1,3 @@
1
+ = simple_form_for(@resource, html: { target: '_blank' }) do |f|
2
+ = render 'form_errors', resource: f.object
3
+ = render 'form_xhr', form: f
@@ -0,0 +1 @@
1
+ Rails.application.config.assets.precompile += %w( cmor_contact.css cmor_contact.js )
@@ -1,6 +1,14 @@
1
1
  de:
2
2
  classes:
3
3
  cmor/contact/engine: Kontakt
4
+ activemodel:
5
+ models:
6
+ cmor/contact/whatsapp_request:
7
+ one: WhatsApp Anfrage
8
+ other: WhatsApp Anfragen
9
+ attributes:
10
+ cmor/contact/whatsapp_request:
11
+ message: Nachricht
4
12
  activerecord:
5
13
  models:
6
14
  cmor/contact/contact_request:
@@ -28,6 +36,9 @@ de:
28
36
  notify:
29
37
  subject: "[%{application_name}] Neue Kontaktanfrage"
30
38
  title: "Neue Kontaktanfrage"
39
+ whatsapp_requests:
40
+ new:
41
+ title: Anfrage über WhatsApp
31
42
  flash:
32
43
  cmor:
33
44
  contact:
@@ -38,9 +49,12 @@ de:
38
49
  submit:
39
50
  contact_request:
40
51
  create: Absenden
52
+ whatsapp_request:
53
+ create: Absenden
41
54
  routes:
42
55
  cmor_contact_engine: kontakt
43
56
  contact_requests: anfrage
57
+ whatsapp_requests: whatsapp
44
58
  simple_form:
45
59
  labels:
46
60
  contact_request:
@@ -51,4 +65,6 @@ de:
51
65
  email: "max.mustermann@example.com"
52
66
  message: "Meine Nachricht"
53
67
  phone: "+49 69 12345678"
54
- subject: "Meine Anfrage"
68
+ subject: "Meine Anfrage"
69
+ whatsapp_request:
70
+ message: "Hallo, wie können wir Ihnen helfen? Senden Sie uns eine Nachricht über WhatsApp."
@@ -1,6 +1,14 @@
1
1
  en:
2
2
  classes:
3
3
  cmor/contact/engine: Contact
4
+ activemodel:
5
+ models:
6
+ cmor/contact/whatsapp_request:
7
+ one: WhatsApp Request
8
+ other: WhatsApp Requests
9
+ attributes:
10
+ cmor/contact/whatsapp_request:
11
+ message: Message
4
12
  activerecord:
5
13
  models:
6
14
  cmor/contact/contact_request:
@@ -28,6 +36,9 @@ en:
28
36
  notify:
29
37
  subject: "[%{application_name}] New contact request"
30
38
  title: "New contact request"
39
+ whatsapp_requests:
40
+ new:
41
+ title: Contact Request via WhatsApp
31
42
  flash:
32
43
  cmor:
33
44
  contact:
@@ -38,9 +49,12 @@ en:
38
49
  submit:
39
50
  contact_request:
40
51
  create: Submit
52
+ whatsapp_request:
53
+ create: Submit
41
54
  routes:
42
55
  cmor_contact_engine: contact
43
56
  contact_requests: request
57
+ whatsapp_requests: whatsapp
44
58
  simple_form:
45
59
  labels:
46
60
  contact_request:
@@ -50,4 +64,6 @@ en:
50
64
  name: "John Doe"
51
65
  email: "john.doe@example.com"
52
66
  message: "Hi Dave..."
53
- phone: "+1-541-754-3010"
67
+ phone: "+1-541-754-3010"
68
+ whatsapp_request:
69
+ message: "Hallo, how may we help you? Send us a message via WhatsApp."
data/config/routes.rb CHANGED
@@ -2,6 +2,7 @@ Cmor::Contact::Engine.routes.draw do
2
2
  localized do
3
3
  scope :cmor_contact_engine do
4
4
  resources :contact_requests, only: [:create, :index]
5
+ resources :whatsapp_requests, only: [:create, :index]
5
6
 
6
7
  root to: 'contact_requests#index'
7
8
  end
@@ -55,6 +55,9 @@ module Cmor
55
55
  mattr_accessor :contact_request_include_modules do
56
56
  ->() { [Cmor::Contact::ContactRequest::PhoneConcern] }
57
57
  end
58
+ mattr_accessor :whatsapp_number do
59
+ nil
60
+ end
58
61
  end
59
62
  end
60
63
  end
data/lib/cmor_contact.rb CHANGED
@@ -1,3 +1,7 @@
1
1
  require "cmor_core"
2
+ require "cmor_core_frontend"
3
+ require "haml-rails"
4
+ require "simple_form"
5
+ require "coffee-rails"
2
6
 
3
7
  require "cmor/contact"
@@ -95,4 +95,12 @@ Cmor::Contact.configure do |config|
95
95
  # Default: config.contact_request_include_modules = ->() { [Cmor::Contact::ContactRequest::PhoneConcern] }
96
96
  #
97
97
  config.contact_request_include_modules = ->() { [Cmor::Contact::ContactRequest::PhoneConcern] }
98
+
99
+ # Set the whatsapp number for the whatsapp contact widget.
100
+ #
101
+ # Example: config.default_whatsapp_number = "+49 123 4567890"
102
+ #
103
+ # Default: config.whatsapp_number = nil
104
+ #
105
+ config.whatsapp_number = nil
98
106
  end
@@ -14,6 +14,7 @@ require "sprockets/railtie"
14
14
  # require "rails/test_unit/railtie"
15
15
 
16
16
  Bundler.require(*Rails.groups)
17
+ require "responders"
17
18
  require "cmor_contact"
18
19
 
19
20
  module Dummy
@@ -84,4 +84,23 @@ Cmor::Contact.configure do |config|
84
84
  # default: config.sender = ->(mail_form) { %("#{mail_form.name}" <#{mail_form.email}>) }
85
85
  #
86
86
  config.sender = ->(mail_form) { %("#{mail_form.name}" <#{mail_form.email}>) }
87
+
88
+ # Modules listed here will be included in Cmor::Contact::ContactRequest.
89
+ #
90
+ # Available modules are:
91
+ #
92
+ # - Cmor::Contact::ContactRequest::PhoneConcern
93
+ # - Cmor::Contact::ContactRequest::SubjectConcern
94
+ #
95
+ # Default: config.contact_request_include_modules = ->() { [Cmor::Contact::ContactRequest::PhoneConcern] }
96
+ #
97
+ config.contact_request_include_modules = ->() { [Cmor::Contact::ContactRequest::PhoneConcern] }
98
+
99
+ # Set the whatsapp number for the whatsapp contact widget.
100
+ #
101
+ # Example: config.default_whatsapp_number = "+49 123 4567890"
102
+ #
103
+ # Default: config.whatsapp_number = nil
104
+ #
105
+ config.whatsapp_number = nil
87
106
  end
@@ -0,0 +1,3 @@
1
+ RouteTranslator.config do |config|
2
+ config.force_locale = true
3
+ end
Binary file
@@ -10,7 +10,7 @@
10
10
  #
11
11
  # It's strongly recommended that you check this file into your version control system.
12
12
 
13
- ActiveRecord::Schema.define(version: 2019_07_15_162742) do
13
+ ActiveRecord::Schema.define(version: 2020_01_19_053558) do
14
14
 
15
15
  create_table "active_storage_attachments", force: :cascade do |t|
16
16
  t.string "name", null: false
Binary file
@@ -1,49 +1,49 @@
1
-  (0.4ms) SELECT sqlite_version(*)
1
+  (0.1ms) SELECT sqlite_version(*)
2
2
  ↳ bin/rails:4
3
-  (6.7ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL PRIMARY KEY)
3
+  (3.6ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL PRIMARY KEY)
4
4
  ↳ bin/rails:4
5
-  (5.3ms) CREATE TABLE "ar_internal_metadata" ("key" varchar NOT NULL PRIMARY KEY, "value" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
5
+  (4.0ms) CREATE TABLE "ar_internal_metadata" ("key" varchar NOT NULL PRIMARY KEY, "value" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
6
6
  ↳ bin/rails:4
7
-  (0.3ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
7
+  (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
8
8
  ↳ bin/rails:4
9
- Migrating to CreateActiveStorageTables (20190715162723)
9
+ Migrating to CreateActiveStorageTables (20200119053533)
10
10
   (0.1ms) begin transaction
11
11
  ↳ bin/rails:4
12
-  (0.7ms) CREATE TABLE "active_storage_blobs" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "key" varchar NOT NULL, "filename" varchar NOT NULL, "content_type" varchar, "metadata" text, "byte_size" bigint NOT NULL, "checksum" varchar NOT NULL, "created_at" datetime NOT NULL)
13
- ↳ db/migrate/20190715162723_create_active_storage_tables.active_storage.rb:4
14
-  (0.3ms) CREATE UNIQUE INDEX "index_active_storage_blobs_on_key" ON "active_storage_blobs" ("key")
15
- ↳ db/migrate/20190715162723_create_active_storage_tables.active_storage.rb:4
16
-  (0.5ms) CREATE TABLE "active_storage_attachments" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "record_type" varchar NOT NULL, "record_id" integer NOT NULL, "blob_id" integer NOT NULL, "created_at" datetime NOT NULL, CONSTRAINT "fk_rails_c3b3935057"
12
+  (0.4ms) CREATE TABLE "active_storage_blobs" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "key" varchar NOT NULL, "filename" varchar NOT NULL, "content_type" varchar, "metadata" text, "byte_size" bigint NOT NULL, "checksum" varchar NOT NULL, "created_at" datetime NOT NULL)
13
+ ↳ db/migrate/20200119053533_create_active_storage_tables.active_storage.rb:4
14
+  (0.2ms) CREATE UNIQUE INDEX "index_active_storage_blobs_on_key" ON "active_storage_blobs" ("key")
15
+ ↳ db/migrate/20200119053533_create_active_storage_tables.active_storage.rb:4
16
+  (0.3ms) CREATE TABLE "active_storage_attachments" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "record_type" varchar NOT NULL, "record_id" integer NOT NULL, "blob_id" integer NOT NULL, "created_at" datetime NOT NULL, CONSTRAINT "fk_rails_c3b3935057"
17
17
  FOREIGN KEY ("blob_id")
18
18
  REFERENCES "active_storage_blobs" ("id")
19
19
  )
20
- ↳ db/migrate/20190715162723_create_active_storage_tables.active_storage.rb:16
20
+ ↳ db/migrate/20200119053533_create_active_storage_tables.active_storage.rb:16
21
21
   (0.2ms) CREATE INDEX "index_active_storage_attachments_on_blob_id" ON "active_storage_attachments" ("blob_id")
22
- ↳ db/migrate/20190715162723_create_active_storage_tables.active_storage.rb:16
23
-  (0.3ms) CREATE UNIQUE INDEX "index_active_storage_attachments_uniqueness" ON "active_storage_attachments" ("record_type", "record_id", "name", "blob_id")
24
- ↳ db/migrate/20190715162723_create_active_storage_tables.active_storage.rb:16
25
- ActiveRecord::SchemaMigration Create (0.6ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20190715162723"]]
22
+ ↳ db/migrate/20200119053533_create_active_storage_tables.active_storage.rb:16
23
+  (0.2ms) CREATE UNIQUE INDEX "index_active_storage_attachments_uniqueness" ON "active_storage_attachments" ("record_type", "record_id", "name", "blob_id")
24
+ ↳ db/migrate/20200119053533_create_active_storage_tables.active_storage.rb:16
25
+ ActiveRecord::SchemaMigration Create (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20200119053533"]]
26
26
  ↳ bin/rails:4
27
-  (6.1ms) commit transaction
27
+  (3.2ms) commit transaction
28
28
  ↳ bin/rails:4
29
- Migrating to CreateCmorContactContactRequests (20190715162742)
30
-  (0.2ms) begin transaction
29
+ Migrating to CreateCmorContactContactRequests (20200119053558)
30
+  (0.1ms) begin transaction
31
31
  ↳ bin/rails:4
32
-  (1.0ms) CREATE TABLE "cmor_contact_contact_requests" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "email" varchar, "phone" varchar, "ip_address" varchar, "message" text, "accept_terms_of_service" boolean, "notified_at" datetime, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
33
- ↳ db/migrate/20190715162742_create_cmor_contact_contact_requests.cmor_contact.rb:4
34
- ActiveRecord::SchemaMigration Create (0.7ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20190715162742"]]
32
+  (0.4ms) CREATE TABLE "cmor_contact_contact_requests" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "email" varchar, "phone" varchar, "ip_address" varchar, "message" text, "accept_terms_of_service" boolean, "notified_at" datetime, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
33
+ ↳ db/migrate/20200119053558_create_cmor_contact_contact_requests.cmor_contact.rb:4
34
+ ActiveRecord::SchemaMigration Create (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20200119053558"]]
35
35
  ↳ bin/rails:4
36
-  (5.4ms) commit transaction
36
+  (3.3ms) commit transaction
37
37
  ↳ bin/rails:4
38
- ActiveRecord::InternalMetadata Load (0.5ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? LIMIT ? [["key", "environment"], ["LIMIT", 1]]
38
+ ActiveRecord::InternalMetadata Load (0.3ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? LIMIT ? [["key", "environment"], ["LIMIT", 1]]
39
39
  ↳ bin/rails:4
40
40
   (0.1ms) begin transaction
41
41
  ↳ bin/rails:4
42
- ActiveRecord::InternalMetadata Create (0.9ms) INSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["key", "environment"], ["value", "development"], ["created_at", "2019-07-15 16:27:42.203838"], ["updated_at", "2019-07-15 16:27:42.203838"]]
42
+ ActiveRecord::InternalMetadata Create (0.3ms) INSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["key", "environment"], ["value", "development"], ["created_at", "2020-01-19 05:35:58.530428"], ["updated_at", "2020-01-19 05:35:58.530428"]]
43
43
  ↳ bin/rails:4
44
-  (5.4ms) commit transaction
44
+  (3.1ms) commit transaction
45
45
  ↳ bin/rails:4
46
-  (0.6ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
46
+  (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
47
47
  ↳ bin/rails:4
48
48
   (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
49
49
  ↳ bin/rails:4
@@ -51,58 +51,58 @@ Migrating to CreateCmorContactContactRequests (20190715162742)
51
51
  ↳ bin/rails:4
52
52
   (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
53
53
  ↳ bin/rails:4
54
-  (0.2ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? [["key", "environment"]]
54
+  (0.1ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? [["key", "environment"]]
55
55
  ↳ bin/rails:4
56
-  (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
56
+  (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
57
57
  ↳ bin/rails:4
58
-  (0.3ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? [["key", "environment"]]
58
+  (0.1ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? [["key", "environment"]]
59
59
  ↳ bin/rails:4
60
60
   (0.1ms) DROP TABLE IF EXISTS "active_storage_attachments"
61
61
  ↳ db/schema.rb:15
62
62
   (0.2ms) SELECT sqlite_version(*)
63
63
  ↳ db/schema.rb:15
64
-  (7.3ms) CREATE TABLE "active_storage_attachments" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "record_type" varchar NOT NULL, "record_id" integer NOT NULL, "blob_id" integer NOT NULL, "created_at" datetime NOT NULL)
64
+  (4.4ms) CREATE TABLE "active_storage_attachments" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "record_type" varchar NOT NULL, "record_id" integer NOT NULL, "blob_id" integer NOT NULL, "created_at" datetime NOT NULL)
65
65
  ↳ db/schema.rb:15
66
-  (5.8ms) CREATE INDEX "index_active_storage_attachments_on_blob_id" ON "active_storage_attachments" ("blob_id")
66
+  (3.4ms) CREATE INDEX "index_active_storage_attachments_on_blob_id" ON "active_storage_attachments" ("blob_id")
67
67
  ↳ db/schema.rb:15
68
-  (4.0ms) CREATE UNIQUE INDEX "index_active_storage_attachments_uniqueness" ON "active_storage_attachments" ("record_type", "record_id", "name", "blob_id")
68
+  (17.6ms) CREATE UNIQUE INDEX "index_active_storage_attachments_uniqueness" ON "active_storage_attachments" ("record_type", "record_id", "name", "blob_id")
69
69
  ↳ db/schema.rb:15
70
-  (0.3ms) DROP TABLE IF EXISTS "active_storage_blobs"
70
+  (0.1ms) DROP TABLE IF EXISTS "active_storage_blobs"
71
71
  ↳ db/schema.rb:25
72
-  (3.9ms) CREATE TABLE "active_storage_blobs" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "key" varchar NOT NULL, "filename" varchar NOT NULL, "content_type" varchar, "metadata" text, "byte_size" bigint NOT NULL, "checksum" varchar NOT NULL, "created_at" datetime NOT NULL)
72
+  (9.4ms) CREATE TABLE "active_storage_blobs" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "key" varchar NOT NULL, "filename" varchar NOT NULL, "content_type" varchar, "metadata" text, "byte_size" bigint NOT NULL, "checksum" varchar NOT NULL, "created_at" datetime NOT NULL)
73
73
  ↳ db/schema.rb:25
74
-  (3.7ms) CREATE UNIQUE INDEX "index_active_storage_blobs_on_key" ON "active_storage_blobs" ("key")
74
+  (17.5ms) CREATE UNIQUE INDEX "index_active_storage_blobs_on_key" ON "active_storage_blobs" ("key")
75
75
  ↳ db/schema.rb:25
76
-  (0.2ms) DROP TABLE IF EXISTS "cmor_contact_contact_requests"
76
+  (0.1ms) DROP TABLE IF EXISTS "cmor_contact_contact_requests"
77
77
  ↳ db/schema.rb:36
78
-  (3.5ms) CREATE TABLE "cmor_contact_contact_requests" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "email" varchar, "phone" varchar, "ip_address" varchar, "message" text, "accept_terms_of_service" boolean, "notified_at" datetime, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
78
+  (19.5ms) CREATE TABLE "cmor_contact_contact_requests" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "email" varchar, "phone" varchar, "ip_address" varchar, "message" text, "accept_terms_of_service" boolean, "notified_at" datetime, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
79
79
  ↳ db/schema.rb:36
80
-  (4.3ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL PRIMARY KEY)
80
+  (12.1ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL PRIMARY KEY)
81
81
  ↳ db/schema.rb:13
82
-  (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
82
+  (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
83
83
  ↳ db/schema.rb:13
84
-  (3.5ms) INSERT INTO "schema_migrations" (version) VALUES (20190715162742)
84
+  (10.7ms) INSERT INTO "schema_migrations" (version) VALUES (20200119053558)
85
85
  ↳ db/schema.rb:13
86
-  (3.4ms) INSERT INTO "schema_migrations" (version) VALUES
87
- (20190715162723);
86
+  (13.1ms) INSERT INTO "schema_migrations" (version) VALUES
87
+ (20200119053533);
88
88
 
89
89
  
90
90
  ↳ db/schema.rb:13
91
-  (3.6ms) CREATE TABLE "ar_internal_metadata" ("key" varchar NOT NULL PRIMARY KEY, "value" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
91
+  (3.9ms) CREATE TABLE "ar_internal_metadata" ("key" varchar NOT NULL PRIMARY KEY, "value" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
92
92
  ↳ db/schema.rb:13
93
93
  ActiveRecord::InternalMetadata Load (0.2ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? LIMIT ? [["key", "environment"], ["LIMIT", 1]]
94
94
  ↳ db/schema.rb:13
95
-  (0.1ms) begin transaction
95
+  (0.0ms) begin transaction
96
96
  ↳ db/schema.rb:13
97
- ActiveRecord::InternalMetadata Create (0.4ms) INSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["key", "environment"], ["value", "development"], ["created_at", "2019-07-15 16:27:42.327279"], ["updated_at", "2019-07-15 16:27:42.327279"]]
97
+ ActiveRecord::InternalMetadata Create (0.3ms) INSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["key", "environment"], ["value", "development"], ["created_at", "2020-01-19 05:35:58.686513"], ["updated_at", "2020-01-19 05:35:58.686513"]]
98
98
  ↳ db/schema.rb:13
99
-  (3.5ms) commit transaction
99
+  (9.0ms) commit transaction
100
100
  ↳ db/schema.rb:13
101
- ActiveRecord::InternalMetadata Load (0.2ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? LIMIT ? [["key", "environment"], ["LIMIT", 1]]
101
+ ActiveRecord::InternalMetadata Load (0.1ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? LIMIT ? [["key", "environment"], ["LIMIT", 1]]
102
102
  ↳ bin/rails:4
103
103
   (0.1ms) begin transaction
104
104
  ↳ bin/rails:4
105
- ActiveRecord::InternalMetadata Update (0.4ms) UPDATE "ar_internal_metadata" SET "value" = ?, "updated_at" = ? WHERE "ar_internal_metadata"."key" = ? [["value", "test"], ["updated_at", "2019-07-15 16:27:42.337793"], ["key", "environment"]]
105
+ ActiveRecord::InternalMetadata Update (0.2ms) UPDATE "ar_internal_metadata" SET "value" = ?, "updated_at" = ? WHERE "ar_internal_metadata"."key" = ? [["value", "test"], ["updated_at", "2020-01-19 05:35:58.701308"], ["key", "environment"]]
106
106
  ↳ bin/rails:4
107
-  (3.4ms) commit transaction
107
+  (2.5ms) commit transaction
108
108
  ↳ bin/rails:4