cdx 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -2
  3. data/app/assets/javascripts/cdx/admin/shared/theme.js +15 -0
  4. data/app/assets/stylesheets/cdx/admin/cdx.scss +1 -0
  5. data/app/assets/stylesheets/cdx/admin/shared/radio_buttons.scss +1 -0
  6. data/app/controllers/cdx/admin/base_controller.rb +26 -4
  7. data/app/controllers/cdx/admin/devise/confirmations_controller.rb +4 -0
  8. data/app/controllers/cdx/admin/devise/passwords_controller.rb +4 -0
  9. data/app/controllers/cdx/admin/devise/sessions_controller.rb +2 -0
  10. data/app/controllers/cdx/admin/resource_controller.rb +17 -6
  11. data/app/controllers/cdx/admin/settings_controller.rb +2 -0
  12. data/app/controllers/cdx/application_controller.rb +11 -0
  13. data/app/controllers/cdx/static_controller.rb +20 -0
  14. data/app/helpers/cdx/admin/base_helper.rb +1 -1
  15. data/app/helpers/cdx/admin/form_helper.rb +1 -1
  16. data/app/helpers/cdx/admin/resource_helper.rb +29 -19
  17. data/app/models/cdx/ability.rb +40 -0
  18. data/app/models/cdx/application_record.rb +2 -0
  19. data/app/models/cdx/asset/seo/og_image.rb +11 -0
  20. data/app/models/cdx/page.rb +1 -0
  21. data/app/models/cdx/seo.rb +22 -0
  22. data/app/models/cdx/setting.rb +7 -1
  23. data/app/models/cdx/user.rb +8 -7
  24. data/app/models/concerns/cdx/attachment_macros.rb +14 -0
  25. data/app/models/concerns/cdx/seo_support.rb +20 -0
  26. data/app/views/cdx/admin/devise/mailer/reset_password_instructions.html.erb +2 -2
  27. data/app/views/cdx/admin/devise/passwords/edit.html.erb +1 -1
  28. data/app/views/cdx/admin/devise/passwords/new.html.erb +1 -1
  29. data/app/views/cdx/admin/devise/sessions/new.html.erb +1 -1
  30. data/app/views/cdx/admin/devise/shared/_links.html.erb +3 -17
  31. data/app/views/cdx/admin/pages/_form.html.erb +3 -0
  32. data/app/views/cdx/admin/settings/_form.html.erb +4 -1
  33. data/app/views/cdx/admin/shared/_header.html.erb +1 -1
  34. data/app/views/cdx/admin/shared/_main_sidebar_menu.html.erb +5 -5
  35. data/app/views/cdx/admin/shared/_seo_form.html.erb +34 -0
  36. data/app/views/cdx/admin/users/_form.html.erb +1 -1
  37. data/app/views/cdx/static/show.html.erb +1 -0
  38. data/app/views/layouts/cdx/admin.html.erb +5 -1
  39. data/app/views/layouts/cdx/admin_login.html.erb +4 -0
  40. data/config/initializers/devise.rb +3 -5
  41. data/config/initializers/simple_form_bootstrap.rb +2 -2
  42. data/config/locales/en.activerecord.yml +44 -10
  43. data/config/locales/en.admin.yml +45 -40
  44. data/config/locales/en.simple_form.yml +9 -0
  45. data/config/locales/fr.activerecord.yml +91 -0
  46. data/config/locales/fr.admin.yml +89 -0
  47. data/config/locales/fr.simple_form.yml +9 -0
  48. data/config/routes.rb +11 -7
  49. data/db/migrate/20171002130330_create_cdx_seos.rb +10 -0
  50. data/db/migrate/20171005095457_add_template_to_pages.rb +5 -0
  51. data/lib/cdx.rb +9 -0
  52. data/lib/cdx/controller_helpers/locale.rb +17 -0
  53. data/lib/cdx/controller_helpers/seo.rb +71 -0
  54. data/lib/cdx/engine.rb +2 -0
  55. data/lib/cdx/routes.rb +43 -0
  56. data/lib/cdx/version.rb +1 -1
  57. data/lib/generators/cdx/install/templates/cdx.rb +10 -0
  58. data/spec/controllers/cdx/admin/settings_controller_spec.rb +2 -2
  59. data/spec/controllers/cdx/static_controller_spec.rb +24 -0
  60. data/spec/dummy/app/models/cdx/ability_decorator.rb +15 -0
  61. data/spec/dummy/config/application.rb +13 -0
  62. data/spec/dummy/config/database.yml +0 -2
  63. data/spec/dummy/config/environments/development.rb +5 -2
  64. data/spec/dummy/config/environments/test.rb +1 -0
  65. data/spec/dummy/config/routes.rb +6 -0
  66. data/spec/dummy/db/schema.rb +11 -1
  67. data/spec/dummy/log/development.log +1350 -0
  68. data/spec/dummy/log/test.log +24728 -0
  69. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-i/-iFt0NG282LSk69Sr3JLKXx2M7EC8ruUNefVDbHErkE.cache +0 -0
  70. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0F/0fNoOWKlJquYntmLiNOkQNi_6a0iVzq5OOeD51d9BAk.cache +1 -0
  71. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0N/0nlKUDQVjUvNn0_rQNmi4goOd1QeXk_3ZCWolj26934.cache +0 -0
  72. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0P/0p5jNivcntrR0rdOjn18-keOIRTMm5EYtltJGAa7yow.cache +1 -0
  73. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0V/0VpY59TpaF-KXBqms-znoByVNPjR-P_eCeLlxBepkzE.cache +0 -0
  74. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0_/0__0m7BBelMOz_X24UBi6SZ3Uh0X4h9e0V14obD3RVo.cache +0 -0
  75. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0h/0HindtmDLfA2puS1rQHtYt_PH1W5Rcb3S-9D32folAg.cache +0 -0
  76. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0j/0jz9seO_qzgc12jOQRBX6Wq77G29sbV101tgL__esjQ.cache +0 -0
  77. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0q/0qtpjjwSuyn9F0Zw4FX3bgrDV2La3TQpqPnKIELASl0.cache +1 -0
  78. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1I/1iARm3Mchh3clWJvFBWhoEgTOxzBAQlHifRPTAVxdkU.cache +1 -0
  79. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1_/1_2bXybqcVDdWq70AmQv9_Xww4HyPC3RtGxXgrhPWMA.cache +0 -0
  80. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1_/1_h1fVQCCAksvv_bbIZcstSElyaO0JcwYzEJSE7sKgQ.cache +1 -0
  81. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1_/1_oe_BI62RbdA9jkSzL1VwJrFEptRf0K-WCZY-p3lc8.cache +1 -0
  82. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1j/1jdfO5MniydqTDMCc6OlsJevFQCn0FMpg1HEbifyOHw.cache +0 -0
  83. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1p/1PpVGdN-Gky0eA3ONio0s4i-ZQ7OvQigx1-W7ndgQBU.cache +4 -0
  84. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1y/1yo4gBzHOyPj5eNdwH7f2XJjipPR-g43NmbdlgwasXI.cache +0 -0
  85. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2D/2D-E_g4d_wFqhWsACw45AU1T4HgZa24X1fJCD8A-cmk.cache +1 -0
  86. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2D/2DwgKbBdkZUZkIKin21KvhrmwLfNLjOHp0ZEkHhr2lQ.cache +1 -0
  87. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2Y/2YoKA-UB1eAF6sFyqgSf4vPvOeXYWzmlsSOyCA1I2BE.cache +0 -0
  88. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2m/2myor-spZvspHRsw9q5evQpjS-mbavq1dQJpei7J_tA.cache +1 -0
  89. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2n/2N6sTK14LOJztedO9VQjEBXz9TxjMNtDPP6BMjt00Ts.cache +0 -0
  90. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3K/3kHxvyS2gNyVlhTpICF2xM-T0l-ed7YlEluiW0Zf9T0.cache +1 -0
  91. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3Q/3QMQjVvd2faHufB8gtFGeMIbxH-sCDr4vCOtPUgIcpE.cache +0 -0
  92. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3l/3LkV-MY4oMsYNWdPvXQGJls3tP3qGznSwO2aiiQcSPA.cache +0 -0
  93. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3s/3sqXUopmZBq7ucOltFVAaeq9k3bl0im68FY_F8FxeJM.cache +1 -0
  94. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4D/4DnLFLUYvftKjHqlCMFap-uS2rn9Z73Kd4VAl62YnTc.cache +0 -0
  95. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4X/4x1jBypiX2Fch4mNVpbwZQNrRMp4saFZ5Qok1whKYvk.cache +1 -0
  96. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4Y/4yoJ745XP_lQvkDB_OMmcORPCl4vVsxaxW4UEUd3sbk.cache +0 -0
  97. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4n/4n-q5a2YIbws7wp3tpljJ5BrNc_s2PJuMhPBRIzdhcI.cache +1 -0
  98. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4w/4WAD0WBxsnN-wNF74X6MorObH79zloR5dIdEh514C0I.cache +1 -0
  99. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/51/51rQVKR5ShW5Vw6coB54r6kanmIEVsbi5cQ-WBFO560.cache +0 -0
  100. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/53/53xRB1iTmNzBgiyDHRhDLH68sNoG0l3NuadxWnO6d20.cache +0 -0
  101. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5b/5BjBasr9gsjHQTbYdQ0Yh87NjjhdqPfLb2CkU2OHJaY.cache +1 -0
  102. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5c/5crQT5B2P3mK86j0Dl6K9sCdXNbTbGEz3NTly0cV8Lk.cache +1 -0
  103. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5s/5SFOdTJpduHEg91zJaIAr1VrLFih5MHNYmv9mtyTq-Q.cache +4 -0
  104. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5y/5yEFF7UIbmhPtA3baKfA3dhd7czO7Mr-Xlc7pSouzAo.cache +1 -0
  105. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6x/6Xjup3_QshPPWD9GFZ1Rsh6BhSv8mtwbvBGWBFySwOI.cache +0 -0
  106. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/72/72erHrbpPtcN7YqhDYnupoNuV3rf2pJozQ3J5HhD1iI.cache +1 -0
  107. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7F/7Fhp0xcD_4hGj0bv9pVrktIH4E8hRHhBDFIU1vA9zeo.cache +0 -0
  108. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7T/7t-1sFAQkGmXMyam9vkBvKF8MJhZ9VQJPfV_7PywF5I.cache +4 -0
  109. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7o/7oCsmfp7c_RuA1zhrvJ7dbDSOOC0sQMg6DW3dxgYmZg.cache +0 -0
  110. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7q/7qqDmxISOZ8Q9ZU5VFECDUzTi3VwB9rqIjgC5OOIrrQ.cache +0 -0
  111. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/80/80a3BElReHk-kquPjzlmLtsGEOVZvawBTr3Vy5PMg8o.cache +0 -0
  112. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/86/86BgsL85R9eVD-0iY6kAI8qmd7MstQe2twPO-9fIkpI.cache +0 -0
  113. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8V/8VuRX4t14W9qg7istJ66rRqCUaW9f4HxfitJlnwH7XM.cache +0 -0
  114. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8i/8i6ilkfD7Z06CVIqzeWC6N_idFglVWRnaZLmLbyIuXM.cache +0 -0
  115. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8k/8KdwyF6we3R_uL-EpfzLppiDGRAnmuKcInrqDd-sM4Q.cache +0 -0
  116. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8l/8LfCbkph35HmJStppNyWEU5kS6UZq70i3LD__bpZi3A.cache +1 -0
  117. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/90/90U29nApkOYKhI7f5Ik0hqTCMi6_cY5pBLWetmNPDok.cache +0 -0
  118. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/90/90yKdlZdkoi7cLuX9171xeFXDBamFl6Q8nBDBIMr_f4.cache +0 -0
  119. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AL/Al4mMT2vXRy0XVI7gPZb_qv_S1xZikH5pWZAMoRg0Ow.cache +0 -0
  120. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ab/abh-MqdgcZZjYxqJAMU7VmPQgQEc1nsIRUl8PrTR4Xs.cache +1 -0
  121. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ag/AgWTHd9o70gaIXOgteE61PzuQ7zrXXhUhxXZCwD1k_8.cache +7 -0
  122. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/BK/BKAoOUUdP10MNcNv6y5kkOZFTXF7mLp6spXU2LxfK7s.cache +0 -0
  123. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/BO/BOpJ7-QqPdxiNr5QjcDhmeXJmlOQREtJCUzieBYDyfU.cache +4 -0
  124. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bd/BD6vdNHjBq3IUAA1De-vsuBzohZ3gC0PKxbmwk9Reqs.cache +1 -0
  125. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bd/BDRpsfEsYeCu8YKedt9og50isthWbMxWOKGwOwM3g64.cache +0 -0
  126. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bf/bfA3l64VLm-qcg6ef6pS1swPEkyZp0aKSJKu7uWRppk.cache +0 -0
  127. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bj/bJg2C4nvfAH4OJQI4jEHauHo1ZyFIABVFf0DMqKDPVE.cache +0 -0
  128. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bv/BVMXHsTFCBqnlZMXA2oHjswGI3JTKoPSg2zW28E_HSY.cache +1 -0
  129. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bx/bxBZ8hJio1vWq2nL4MtMl2o5KdgEXocU1lXqdF_H2Ok.cache +0 -0
  130. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/C9/C9XqqJn0jzF1cz4gnTlSTNhU8Pa5s4DIg-SJ88FsWXE.cache +1 -0
  131. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/C9/C9xd9XOvzRL-iSdaJVL0ot8YDzizIuYdxXGnj8VTpLo.cache +1 -0
  132. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/C9/c9JOLp9aHOmqYrc61IyX0fuLsfbltewybHRN84pKngg.cache +0 -0
  133. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/CR/crg6faV5hCnyUWUQBvwXsUKXIxeNwdFoeeRZY-9kQ8I.cache +1 -0
  134. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/CS/CSyBKXmKXX_KNNLX71lUtLo-qibtYKiDiUI7D1_Ad-U.cache +1 -0
  135. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Cf/cfPGt5PS7oDQyj24rV_aaIL-XBmlD5DQfrvhmt8Zo_k.cache +0 -0
  136. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ci/cIwTYXAvTveBOKlBbfivMJc6NSW0k7emzlT0_ZO5w9o.cache +1 -0
  137. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Cx/cxu-X2o-6X399909Ssr6XlxwqdGoWOmdLgy1SGHz7jw.cache +0 -0
  138. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/D5/D5k9pNKFy_4q1izZgrm28HRBhuv37bbussLpNbS0RDg.cache +4 -0
  139. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/D5/d5k69YupUL9o8p2iNuUEoe3zFBbG74sJg5wOOv3nfuU.cache +1 -0
  140. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/D7/d7_pzYKUCrxBOsuEKt9nrKosIlqYtXW-b8129LnvyQo.cache +0 -0
  141. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DM/Dmx097lBqmTT-Oi4kuQviQnRh-a2HActU2dFY-s0_QA.cache +1 -0
  142. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DO/do5awiiOZ_HS5FpsBbrlYLZ_KFBtc9ROw7Yrbtvedb0.cache +0 -0
  143. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DV/dvShsqU3ubcbWOjmi93_42r82SrdBSKooi9vuT9v0vk.cache +1 -0
  144. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Du/DU7SS4Gqtnp5b2BRegxtPhY0d_W5RTctkJIzTnyJnSs.cache +0 -0
  145. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Dz/dzC0Tg_Pn0DAiA60zRTqwoiufYibY_nMqhh184Jrwj4.cache +1 -0
  146. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Et/ETKn_UyjMllkmPygy3je8yvIjAXuexFZMc3nOMDGZ2g.cache +1 -0
  147. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/F8/F8VP_mkjQWYzE_kstqaRPFgrOYvfvEXYlNHEJysb2jk.cache +1 -0
  148. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FO/FORksrj3nRzuyQtF7ortyQcv8FKzQoFp7_rvh_a5e_0.cache +5 -0
  149. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fa/fAQ7ZsIRt7gNzB93RfCmjmXarpP3psXoDtpexhi-lcw.cache +1 -0
  150. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fp/Fp3Fi8NFOunDCuU9rnk4WpD-bwqMJ1RlEHXApZ_Ww78.cache +1 -0
  151. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fp/fp71stt6rYCx_h5Vtv_SqeqSaErKDmdgQ_zgDk5nPFA.cache +1 -0
  152. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ft/FTS4SzX7DCL-phnfFg6c0L0hlobuf6b6PZNJEBUjiyk.cache +1 -0
  153. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fv/fVO6OABVpR66_lo1S4dZX3TdNJFfOVTVFmQoA6Yo334.cache +0 -0
  154. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/GB/gbTW4epYUuCV1gRLZ-FfP1mirEaKjjR8xKLP1TqkBNQ.cache +1 -0
  155. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/GK/gKyqjKN5EPcboPVsaAWPRguhL4C9n4Ak_I8dxHbuBJ0.cache +0 -0
  156. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/GT/GTw48Whi_H5B30HrWKDHbhMESxxcgmt3cxVJVNxnlCA.cache +1 -0
  157. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Gz/gZr2Ax0pbGr5z478MPqutV_ckMVX5hoGCM4FlxYKptw.cache +0 -0
  158. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HC/HCDOUd7-S45aJ_PjVAC_Vmjyud3i1aQv4cE3t9_Z3Dw.cache +0 -0
  159. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HZ/HZ-pL107JwyUm0FXHqap6QT1gHaBdVO-HwgW7fyjS7w.cache +5 -0
  160. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Hn/HNmwBQyHv0Wd1s_FFE2ZKnlN1gc_60ojDfYMoTWxo2c.cache +1 -0
  161. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Hp/HPBbedoNr7FnvlUzBaP-F184BEU1LTSih7fp0zYyP3w.cache +0 -0
  162. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Hp/hPlcWYGmd8PAWMPpOKz8frzYfDv1ZmglHT_dv8lhcNI.cache +0 -0
  163. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/I1/I1KUnvh52K5HLo-DqDyraniWc9XvG72YgYnTWDiskOM.cache +1 -0
  164. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/IK/iK-WxRj6EtSpxgj7zp5ZKdc_QO_1aiEW1ArjZsrGStA.cache +1 -0
  165. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/If/iFR2Vv68kRTEt3rbTO4QMTv14XXSYOOYsdxuEM1XPU0.cache +1 -0
  166. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Im/ImnlN2FMoHZ7TF6gKEfHO3bjfL2wWhxOtGJXgxVn3dk.cache +1 -0
  167. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/J1/J14vesr1A3MZ9btP4P7iNs0FHKeprcTi4X1tt9XGSHo.cache +1 -0
  168. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JG/JGEhVFfZgTVFCRiVAXe44oVveXuVRsa3isuIc9Eh9-c.cache +0 -0
  169. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Je/JEdK9d77mFvuv6Pk4agvy4WGNbFK9_XX69_mEyZfXJI.cache +1 -0
  170. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/K1/K1sN57T85a7GtrrrRdabe9ukxwC8iuJ1HCv9gvTBVZM.cache +0 -0
  171. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KN/KnbYZeK72MsgFzLutCfAYVSnDv_j5n9x2ZwGiEzjK4A.cache +0 -0
  172. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Kg/Kg2grZ43Kx1CQ_VXx4RSCpYRCojuIKz-0Dn2G_y4Pdk.cache +1 -0
  173. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Kp/kpgcUcUZJyVmIX7ioTLnr8yi1B1R0mPdLykoKheweyk.cache +0 -0
  174. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Kq/kqVr6Q49dL2u3aAu7hQoZEW22oA76zrZItcqo2BjcIc.cache +1 -0
  175. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/L2/l2WZXgIHGA3F2zeqdZq-izZuMyvXKBI85BLC_0xWOro.cache +0 -0
  176. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LK/Lkaf1O_V-WIPFyVu6tfJhZ0TdHUU8uCaEPLSklSzx98.cache +1 -0
  177. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/La/LADi7AZEz3mtq7mQjXXlCBbH8oBk0bcj725-vayk2OA.cache +1 -0
  178. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Lr/lRRHJn2XRFri_mi2DOWJvLRhRAiM1YKh0hurFqvG87E.cache +1 -0
  179. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ML/MLJfBFcV2AX5sApWFIAHm5Qm4kJIPo_l1P4V7hQrAFs.cache +0 -0
  180. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MU/MUchbbk2TuTpAxTSBl03faiF7lM5jKcPso_YeoSqcx0.cache +0 -0
  181. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MW/MwyLb1ZP1_eaMijYv-iHTtfnrjTf4fbbbV0OH1epKTo.cache +1 -0
  182. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Nj/NjG05c2jA9Navxh1LFsBqDyPgpG9fiFk_RfLkWu-65Y.cache +1 -0
  183. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Nm/nMWLxYY30O0E1hkbxV1FFweLkEB6VoFint77FrZJ3pw.cache +1 -0
  184. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/OD/OD6SmOeQUB2AEmekz7U99o3nO2ioN9_cK36K99qBJ70.cache +0 -0
  185. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/OD/oDYzF0n64vcUCyvZ5Fxgz2IFRxZVLBa1Qf7NvbP4Rj4.cache +4 -0
  186. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/OF/ofiLQRccxxIb-yC9v4M3_a-gs4kGHt6kvK9oh7bZyXc.cache +1 -0
  187. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Oh/OhWFXM9GuxBD1Yw5r1DnNgC_EUU0m41NsRdMN-cwaLE.cache +1 -0
  188. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ou/oUI7TzCsU_4rW2DtLQ3bkn1TiXdYAl4GXW9MBSS0vJ8.cache +1 -0
  189. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ou/oupue72yFp7MC2LCdPww-3HH00fR_6FjnvDpMDZCtqU.cache +0 -0
  190. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/P7/P7p2i0Sm3DJ3BZGKbialS5-rDXqxKIRt_Az1fRjq7Us.cache +1 -0
  191. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Pg/PgxniuPvmdPnZe-YAxPqcbogt2k6ZDLnVbCiWgDxooI.cache +4 -0
  192. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Pr/prvtYXooSziuVaUF2LMJF0Uv4JfpTI6ip5I_tJPQE8Q.cache +1 -0
  193. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ps/psCXHNyv38VAep2dJ0cTOdHQkS_MWXG-guuUVC8t4YI.cache +1 -0
  194. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Q3/Q3whiX7hWA6sHL4BaujPiVI1GQ6YWMNkxu74eBHZl3M.cache +1 -0
  195. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QS/qS_9kKSqAOD1IsbS049t0luTxiGNgOkznsK63G29XbM.cache +0 -0
  196. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Qc/QCrLyf5oF6nlbHXmhp9hnfjMh1LcK07Z142GDLHKAjQ.cache +1 -0
  197. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Qm/QmyRU9WjjNWdjkDsdr9j-NKCyspm6XzAUlTOrIZDlTc.cache +0 -0
  198. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/R5/r5VCnaIlCnfLuvjK6ube003OfLDh1fNrnSHONd9_ocU.cache +1 -0
  199. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RL/rlvpruq1is4grm3GrVv1n_01sNG2MhE9NUuoVeCdWrM.cache +1 -0
  200. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RR/RrlF5aR2LEJoimuYzeygpTdbqFDD2PqEMRStdtvBI8c.cache +0 -0
  201. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RR/rrk_AkULRJpki1T-n6uQCY0y4JONQ0NEXWAFTxNwNNw.cache +1 -0
  202. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RT/rT52RKB6g3HZeXb1SBwtrPzIMAi0kgVl4sCBTPJY2EY.cache +1 -0
  203. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Sg/SGrxaiHVJzOOBm0zKHYRC-0xnLVkqOBOpuN_oY_oOUc.cache +0 -0
  204. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/T8/t8310ngJo_JGf8ppMVuyfCaStzB6-shCkX0BSA9CcLg.cache +0 -0
  205. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TH/the1sdNgVTdgMnUinRhMI1WGI3QVETw3pm6KsU2fVMQ.cache +0 -0
  206. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TO/To9HIgbxLeRcTRDDZ0ghnupZgaebrNoqdeFjshM3Tu4.cache +1 -0
  207. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Tf/TFHKQ4pT3CcgqUjDzLNhB15gpQkDaHi7pq6ZkJWCuDE.cache +1 -0
  208. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Tu/Tu_FRu6GxmhiowKn5FrH7vYvlCUHdkuWXr5vCz8xuAY.cache +1 -0
  209. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/U7/u7rm5QuAOWJaqKRxL8Of43KkpQdmhmEkVMc1ZvrGvK4.cache +1 -0
  210. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ud/UdUAfPcNU80Y1woqaYlbmxevwd-0qlchMQ6nPLsZBco.cache +1 -0
  211. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/V2/V2Mr-gWWDkAqZQYmZZqjbFgqWFFb4bRQBKdzIoDNDFA.cache +0 -0
  212. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VT/VTpdpG8eJiAmc4ovAhpsyi2dHb8UZ6POiZ2bknhwemw.cache +0 -0
  213. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VT/vTD5XYvspxAwwGpKmRLROUvKa3Rn3m1IUxSx541orUQ.cache +0 -0
  214. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Vl/Vlsm70pT87kfS0a8N036d_pas104--nq1o2oanQGIe8.cache +1 -0
  215. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WI/Wiw750s27MY7h_DJ5btWxNxiqgRLOsI7yjhIJQvhyXI.cache +0 -0
  216. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/W_/w_XNp6PrIPf5HHSYhtAViubTyyriYzfw0xt7a3emimk.cache +1 -0
  217. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XC/xCXzAN6gQCV7s-Ez1BT_fD5s_foJ0ARMam-3pKuiufY.cache +4 -0
  218. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XK/XkQcEEK4sCc3352uItx_Gh5M5ChASrRUxvh1K8kviKM.cache +0 -0
  219. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Xa/xah7XHL6JDUR9tCJIfx3DVDhbycwgDfntEdzOPgm__4.cache +0 -0
  220. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Y-/y-UZhd5FyaI3Hs3KvKtWFLeBAhKUNlZYlcBFzvlKEs0.cache +0 -0
  221. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Y6/y6ItwP5AI4LqD4hXfOQh5LqyI70rX6yy0QfUO10-9HM.cache +0 -0
  222. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/YZ/YZQch5dfmJMHMA819nM1lvaJNIrW1NPDlDWWNZEgGTY.cache +0 -0
  223. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZN/Znxtcq-ZTxzNLztrUr5qugSoCxTd-GWv73X2oF1x0ZM.cache +0 -0
  224. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZU/Zu3ZA7q9vQyo8d_LeMVGaY5OjwMBNr9K7OyOtKQwfKw.cache +1 -0
  225. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZW/ZWEDoKOwn8uGSGpTnLq0zIlXZCd-lcZ3cReO5xZHS2M.cache +0 -0
  226. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_-/_-YtNYD2M-58NbvNpYe7S-PDb63s_k0Ia0DXNyor2ls.cache +0 -0
  227. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_-/_-_qJT08J1eTH_0Vg2UVZohSjv1i11mkKvnyweIvgwU.cache +0 -0
  228. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_1/_1dLc-fSiH4-ZGkYCSoW4WfK7njx8QYvpsT7d0iOOHw.cache +1 -0
  229. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_7/_7STOiMb3GNnXCgsh82Vh8dSPK3TE5onjH773vl6quA.cache +0 -0
  230. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_f/_f7ipp2FPzR3B5xuwlQ0-QZacf0rvw8DNrTBpEqkwmg.cache +0 -0
  231. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_m/_MJSHrCWTUT8SZ71ih6F-HI5GGcJ7c2YwW8ERiIK5Tw.cache +0 -0
  232. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_v/_Vq5M5rhogfHHjIUiJbvr3TB6vqUBRwC_CttsZjNeu0.cache +7 -0
  233. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/a1/a1R0-5ycIuReJ4-fqbXk6fH2IdxW89a5kaevGv-Dml4.cache +0 -0
  234. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/aF/aFKOFyg5JLPd7cbF-MD0fFuV2fubfdz-yKKyXwsLl8s.cache +1 -0
  235. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/aO/AohWZS-TPE-wjo80tb76OA6hA3TQQh4b7sJHv7LU6dI.cache +1 -0
  236. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/aq/aQoRtEOx37MRSLS7kP_4yDtmt0AiLLtU5bBN_GtJj8Y.cache +0 -0
  237. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/b9/B98ns1UOJj2BI40YdrYj2AYpv2jnpcH5uY7caTMKUeo.cache +1 -0
  238. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bA/BaJKhJJLWg3gRQEGckI_F33ILRJvlBhQ9lgrgkGr4gM.cache +1 -0
  239. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bC/bC-NuzAGHhmfyMdEou8QaKV_od64DOu3CiatbX1zS7Y.cache +4 -0
  240. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bH/bhsmt8uMEM17fZf-7L8Tr21Qm7wp0wtNXXEbP48OsnE.cache +1 -0
  241. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/b_/b_Itlk9QZZd7Rvf8kcA4yLP1R5Acu7jB-m1xQiSU0qE.cache +0 -0
  242. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bp/BpJfHs6Mo8lqlKf2TijySqZ444qek67RWzRwUen64vQ.cache +0 -0
  243. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/c3/c3-rWf7UzoWjsYPy5EtXvv3ufQ8CIQ6Z-0kVS09lrDs.cache +1 -0
  244. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cC/CcBfkGECwA5O7hQpkndgB0Hi90JOu69Ifjs6wSifP7o.cache +1 -0
  245. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cH/ChcBt03RXtOFBODQDToOchKvzpr2dW6cMQ2HrmYPNq8.cache +0 -0
  246. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cH/cHerKTSfFWYybWwIjdgf4hdq0TMrmPhHgxlEFQ-dQb0.cache +1 -0
  247. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cO/CO5mDqDfmtiDa_MlTuMous_vC3vHyMfMCvG0iPr3oVo.cache +1 -0
  248. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cn/CNJKoiuv7BhPbbHegPk_Qktnz_JF6HQr35hNbw6s-RM.cache +0 -0
  249. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/d-/D-tuIWBYGuFafbtlGFsVUWuW1V532Zkwlhdc9YU_0_Q.cache +0 -0
  250. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dK/dkEIzUkEZU4yDjWENPIb9mVQ6WLjulPZooIMhh0kjps.cache +1 -0
  251. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dX/dX8QOFCLVNiDkCAiFD_PFv9d-Qo1wVbsDeLj4mtE4R0.cache +0 -0
  252. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eE/EEpwNSyxAZOsAaJa0FVJLqYX-D8EEzVXrqNADqSq1pg.cache +1 -0
  253. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eV/EVxtlJx2DKEnr7jM6G-nUsoSv7PuWNZ4HqxYV6G0LNE.cache +1 -0
  254. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eb/ebBZEqfj1_tXnSytXRHDulZ2qjRuj2jiuzALy71-p04.cache +1 -0
  255. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ei/eI82uxHiRfJCRpat_t9RMiiro7Ggp0aaY6gS2RHhXIc.cache +0 -0
  256. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ew/EWvBebjHFMAPVeVD3tkNaDGv1De3T-L_N4DgqM7rPfA.cache +0 -0
  257. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ff/Fft1-kdQYW_lF9qeAgbnyv7nLFkLOug2kmkMt_lLSqA.cache +0 -0
  258. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/g3/G3sgs1Ax6Vk_2s37KNPp2-7IdFiT3LOWxMmlF7OUOuM.cache +0 -0
  259. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gL/gl9epGlvS8NGjkSvO3-Zv20gDWDOihgYl4zev3I4gzM.cache +1 -0
  260. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/go/gObqKgy_NGkfRMIq-hy2D3F82sXUz_xKrQXbW3ZgU5k.cache +1 -0
  261. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gy/gYo6RbgaJKr4uO3yVeAwQh_fzXzR08K7lkURuVclXX4.cache +1 -0
  262. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/h-/H-wscVetDYgz1C6_9m_zX4Ubit9GpN41Qh36i61d49E.cache +0 -0
  263. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hq/Hq6ThzYH1Jwap4RjDjkeXS6kh3_SwtUrbSk5u9-pPvQ.cache +0 -0
  264. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hv/hvCWsDxXJW9jg2ULOdo9wcMcIiVXr1vPB-7RRCtj-Zg.cache +1 -0
  265. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hw/hWPXtikadUixtV_Vz7dJ5Yb8xdcJ6CC6pXuZKANgAVM.cache +4 -0
  266. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iI/iiw3Z6suXDviQSt5opMZ7iCTz8rrt7lWwxCYG-jOATY.cache +0 -0
  267. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jX/JXX-ip72L8uACavKSd8TQFVw6MQo63MyTadGeyddhj8.cache +1 -0
  268. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jd/JD6N31VqeGIaXMEqjkdDzYExPQxGK7Zi9aVAGYcHcVc.cache +1 -0
  269. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/k5/k5e6-CoVqmpM8jXJRwAaGn_fs_rOUvkz_8mXqHu8_ao.cache +1 -0
  270. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/k6/k678AMTE8Rpt4M0p22vOGHuMydQhufi7r-XlrQU5p6Y.cache +1 -0
  271. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kC/kCPTWFwWLADuE4b0kM5PUnetnYdoiFWVL7C91_RGlF0.cache +4 -0
  272. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kJ/KJUwoqIiuj-qpKpMy7k0S-voZVXPonJjx6cblKKdGKg.cache +1 -0
  273. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kL/klyYYLzIHrlg7rcBAWfk8RezPB9yU5qjkFJQgIMwyf4.cache +1 -0
  274. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kV/KvtETa0BMROOFrdvtIkDReAoRz0wHnGGw8RyXETCu5c.cache +1 -0
  275. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kZ/KzoIWrb49pUv8dm_4xNPu5bj7CW1DraOTvLScFbTpSo.cache +4 -0
  276. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ko/koyJ5Xizwv3o0lnBTF0IsKiH-MnMN39MMDN9JYB_6kM.cache +4 -0
  277. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lB/lBP9PyX9X0z7Q3ChAOemieBBbC7fJE3IcmLcyBjT_fs.cache +0 -0
  278. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nC/NcSCneaLBTHR1N_d6-NwYjql4r-jmQPEz5Wr6MadHio.cache +0 -0
  279. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nL/Nl068pZS4lI4dvrWUTQVV3jz9IaH1sZonpVEyEd1cXo.cache +1 -0
  280. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nL/nLmYNs5vhdCsci9KiAHI6bx7jbgGCr_Ev7Bi5CSyTxc.cache +0 -0
  281. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nP/NpPldDHmBprTojKOz0ubr22DkyAkmWCjYgfi1jaUAH4.cache +1 -0
  282. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oG/oGUukVPniof9dUUrs5SqfHqCD80JYsgyYjLuHhYkm58.cache +1 -0
  283. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ob/obVbAIR4nBUA03U9XbZV0AAeeBl434DzZ0vpqL4qC8w.cache +0 -0
  284. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/on/on_VGtMCJXLwRJrs_mSYnTR-mpiLLOZHZE5u7W6wfbE.cache +0 -0
  285. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pk/pkdw-Jgeclt9vajoQqiLRaBZZzhjXjJmfzp8ePPy1G0.cache +1 -0
  286. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qH/QhqfODycIGdVzQX8GRs-Ib6Pq1hGxqNYyLUGvZMM7os.cache +0 -0
  287. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qb/qb67_izas1nixcQ-AauJdU9nn3EmIDDCKmYePp49rC8.cache +1 -0
  288. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ra/ray_bF5Ej18NZlHx_KQ3cYYeg7nEiYPzBT8WsdHNEmk.cache +0 -0
  289. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/s0/s08CnMSk3W06JZNTVEVqApJd8Vpz7TLOYFO9-6CsE2g.cache +1 -0
  290. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/s0/s0e75axNmtNlRg8x1AcNxSSxmweSr5pxzu6tg21QGfk.cache +0 -0
  291. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/so/soDpZ_JUnPHmG0FYpI_47WgP1hsnLMxZPrVuNh3MGzg.cache +1 -0
  292. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sy/SYNvEuncguh0B7KSNy0mIfyZSkNlQVOOLPIV5h0ZLwA.cache +0 -0
  293. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/t4/t4fHClD6YGDsSKSJQNND8cK4DG59K4GrSawc9aFtIX0.cache +1 -0
  294. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tn/tnXjvHNgRK7H4M44cOtCkufshJoMKyGxD_3d85_P8io.cache +0 -0
  295. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uE/uelCAlCK-JD31uF5SDtIbiNJzKNNS8wQjyf-rYxlEqA.cache +0 -0
  296. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uK/uk_pSKPoFIZcb3KkcV0BaPBUkiNJofSVmemhGLguLRQ.cache +1 -0
  297. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uM/uMAAFlayLJ1Y44NPWXqXIQED5cpFgzqVlLPP5pYymoE.cache +0 -0
  298. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ut/uThFl2m0GavTCT4pl2oDWqIBIn0yj9_PoqrYL1S76XQ.cache +0 -0
  299. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ut/uTtJNzrVQtxdGXTkkbdGY_HyBs31WvuFNJRa1MKw1oA.cache +0 -0
  300. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ut/ut9R9B1Xb0I7LhpAEJGjlSe2VkwJlGyqP8EUJr8DwCw.cache +0 -0
  301. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vC/vcr2_BONXHi2_t_Sjhvg_Ucp1qY7qOARdnYyC9_qgEU.cache +0 -0
  302. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vZ/vZd7TqVpkThrX7nIZg2gMbl-EYQz4yX32509Kf4zI8g.cache +0 -0
  303. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vg/vGz1YgkFiH3K3rkMCpUSjE-9ejQH7gheA_F0QTM4-Fk.cache +0 -0
  304. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vw/Vwb24w5R2fbGV6mwam0Zv3ChgVPqtoN2ycurQcbCUpE.cache +1 -0
  305. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wA/WaW9zL376Fd5jhAkSr65m-RaRMG7lqqaMnbbmJd2Roo.cache +1 -0
  306. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wA/WayDgcdBl8u7lmDWTD2G5LueoPHSmIVKsH11ouhvAvA.cache +1 -0
  307. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wS/Ws-va4f_EnxlLEeWHMcMeajnLKLNVzOV9mSnWNjxHsg.cache +0 -0
  308. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wV/WVAQnoAwhp9Ofx9devXpnnElvhZa9wQKf7C0bYOdm2s.cache +0 -0
  309. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wx/wX40TRI0nDBMeklwhXEUi5g4cUL49_iRk1hM17pjF1A.cache +1 -0
  310. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xI/xIIoLGg2-k4fy4TFbZ5W1VpEg4PvprGqgwAc_ok0a2E.cache +0 -0
  311. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xg/xGKpJBeLDVoGW8seoyKcDkbUQHa7BxIiOsdbe0107OQ.cache +1 -0
  312. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xl/XlVv4YODOAXqFR8rDkclOihevedZKkisiKA4UV7DIjo.cache +0 -0
  313. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xt/XTNQufvpZiYf099YZk14sezwCWcpSRJejvC_aG9Ibu4.cache +2 -0
  314. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xt/xTMrRJs3k_JFBaRV3RLvDV8TYJPDNfK8D6WN627Bk6s.cache +0 -0
  315. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/y7/Y7ykJL1z2RdshacFjZG6B5UvCj72YZYRUF2gJaF0rZg.cache +1 -0
  316. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yB/Ybbz_WJ213Nqi-aFaaQkGhRBlFbtkpF22qQgLe_1uog.cache +1 -0
  317. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ya/yAUp6d65RN_WmANx7yBiiW_9tKgD3WcHJzuXyIPGfLo.cache +1 -0
  318. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yr/Yr3omw0q7iUD4-ZnhTEHnG5LAfO2ozUyIRYtTL9VyLY.cache +0 -0
  319. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yu/yuvUN0gcqkar9QF-yGu6G016_Qz1XCUVbZutajszLuo.cache +0 -0
  320. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zO/zO0GfKcnBb5wchGGaNXRkku6RZrukJm8oOv_9zWvC3A.cache +0 -0
  321. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zQ/zQEso6LidPVvaY-mMDkB78rkEzrYmZEYHpFCoVC3xCc.cache +1 -0
  322. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/z_/z_9uUxYxAYgjlNpeinpDwugfQyMQSwnKgYcx-axV3u8.cache +1 -0
  323. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zi/ZiXkZ6gfSxNXmwzpX3-D8Gkr69W59cdAVYvE9E7KHl4.cache +1 -0
  324. data/spec/factories/cdx_seos.rb +13 -0
  325. data/spec/factories/cdx_settings.rb +1 -1
  326. data/spec/features/cdx/admin/login_spec.rb +15 -9
  327. data/spec/features/cdx/admin/pages_spec.rb +17 -0
  328. data/spec/features/cdx/admin/users_spec.rb +16 -0
  329. data/spec/helpers/cdx/admin/base_helper_spec.rb +37 -0
  330. data/spec/models/cdx/seo_spec.rb +13 -0
  331. data/spec/models/cdx/setting_spec.rb +1 -1
  332. data/spec/models/concerns/cdx/taxonomisable_spec.rb +24 -0
  333. data/spec/rails_helper.rb +17 -3
  334. data/spec/support/controller_macros.rb +12 -10
  335. data/spec/support/feature_macros.rb +12 -0
  336. metadata +566 -26
  337. data/app/models/cdx/attachment.rb +0 -6
  338. data/app/views/cdx/admin/devise/confirmations/new.html.erb +0 -16
  339. data/app/views/cdx/admin/devise/unlocks/new.html.erb +0 -16
  340. data/config/locales/devise.en.yml +0 -64
  341. data/config/locales/simple_form.en.yml +0 -31
@@ -0,0 +1,9 @@
1
+ en:
2
+ simple_form:
3
+ 'yes': 'Yes'
4
+ 'no': 'No'
5
+ required:
6
+ text: required
7
+ mark: "*"
8
+ error_notification:
9
+ default_message: 'Please review the problems below:'
@@ -0,0 +1,91 @@
1
+ fr:
2
+ activerecord:
3
+ models:
4
+ cdx/user:
5
+ one: Utilisateur
6
+ other: Utilisateurs
7
+ cdx/site:
8
+ one: Site
9
+ other: Sites
10
+ cdx/page:
11
+ one: Page
12
+ other: Pages
13
+ cdx/taxonomy:
14
+ one: Taxonomie
15
+ other: Taxonomies
16
+ cdx/taxon:
17
+ one: Taxon
18
+ other: Taxons
19
+ cdx/setting:
20
+ one: Paramètre
21
+ other: Paramètres
22
+ cdx/seo:
23
+ one: SEO
24
+ other: SEO
25
+
26
+ attributes:
27
+ cdx/user:
28
+ email: Email
29
+ password: Mot de passe
30
+ first_name: Prénom
31
+ last_name: Nom
32
+ full_name: Nom complet
33
+ theme: Thème
34
+ roles: Rôles
35
+ password_confirmation: Confirmation du mot de passe
36
+ cdx/site:
37
+ name: Nom
38
+ code: Code
39
+ domain: Domaine
40
+ default: Site par défaut ?
41
+ cdx/page:
42
+ title: Titre
43
+ content: Contenu
44
+ state: Statut
45
+ published_on: Publié le
46
+ slug: Slug
47
+ template: Template associé
48
+ cdx/taxonomy:
49
+ name: Nom
50
+ description: Description
51
+ available_codes: Codes disponibles
52
+ cdx/taxon:
53
+ name: Nom
54
+ description: Description
55
+ parent: Parent
56
+ cdx/seo:
57
+ meta_title: Meta title
58
+ meta_description: Meta description
59
+ meta_keywords: Meta keywords
60
+ meta_canonical: Canonical url
61
+ og_title: OpenGraph title
62
+ og_description: OpenGraph description
63
+ og_keywords: OpenGraph keywords
64
+ og_video: OpenGraph video url
65
+ og_image: OpenGraph image
66
+ cdx/setting:
67
+ acronym: Acronyme
68
+ default_theme: Couleur du thème
69
+ default_locale: Langue par défaut
70
+ available_locales: Langues disponibles
71
+
72
+ helpers:
73
+ submit:
74
+ user:
75
+ create: Créer un utilisateur
76
+ update: Mettre à jour
77
+ page:
78
+ create: Créer une page
79
+ update: Mettre à jour
80
+ taxonomy:
81
+ create: Créer une taxonomie
82
+ update: Mettre à jour
83
+ taxon:
84
+ create: Créer un taxon
85
+ update: Mettre à jour
86
+ site:
87
+ create: Créer un site
88
+ update: Mettre à jour
89
+ setting:
90
+ create: Créer un paramètre
91
+ update: Mettre à jour
@@ -0,0 +1,89 @@
1
+ fr:
2
+ admin:
3
+ generic_states:
4
+ published: Publié
5
+ draft: Brouillon
6
+ content_header:
7
+ page_title:
8
+ home_index: Dashboard
9
+ users_index: Liste des utilisateurs
10
+ pages_index: Liste des pages
11
+ sites_index: Liste des sites
12
+ taxonomies_index: Liste des taxonomies
13
+ actions:
14
+ edit: Éditer
15
+ update: Éditer
16
+ new: Nouveau
17
+ create: Nouveau
18
+ index: Index
19
+ settings: Paramètres
20
+ breadcrumb:
21
+ home_index: Dashboard
22
+
23
+ main_sidebar:
24
+ menu:
25
+ title:
26
+ parameters: Paramètres
27
+ contents: Contenus
28
+ dashboard: Dashboard
29
+
30
+ actions:
31
+ new: Nouveau
32
+ return: Retour
33
+ all: Actions
34
+ publish: Publier
35
+ draft: Enregistrer comme brouillon
36
+ unpublish: Enregistrer comme brouillon
37
+ upload: Ajouter un fichier
38
+ general: Général
39
+ alert: Alerte
40
+ password: Mot de passe
41
+ avatar: Avatar
42
+ online: En ligne
43
+ signout: Déconnexion
44
+ profile: Profil
45
+ custom_validators:
46
+ must_have_one_default_site: Un site par défaut est requis
47
+ ujs_confirm:
48
+ delete: 'Êtes vous sûr de vouloir supprimer : %{o} ?'
49
+ default: Êtes vous sûr ?
50
+ flash:
51
+ default:
52
+ create:
53
+ success: "%{n} crée avec succès"
54
+ error: "%{n} ne peut pas être crée"
55
+ update:
56
+ success: "%{n} mis à jour avec succès"
57
+ error: "%{n} ne peut pas être mis à jour"
58
+ destroy:
59
+ success: "%{n} supprimé avec succès"
60
+ error: "%{n} ne peut pas être supprimé"
61
+ publish:
62
+ success: "%{n} publié avec succès"
63
+ error: "%{n} ne peut pas être publié"
64
+ unpublish:
65
+ success: "%{n} a bien été enregistré comme brouillon"
66
+ error: "%{n} ne peut pas être enregistré comme brouillon"
67
+
68
+ settings:
69
+ update:
70
+ success: Paramètres mis à jour avec succès
71
+ error: Impossible de créer les paramètres
72
+ clear_cache:
73
+ success: Cache vidé avec succès
74
+
75
+ sessions:
76
+ not_admin: L'utilisateur n'est pas admin
77
+
78
+ settings:
79
+ clear_cache: Vider le cache
80
+ cache: Cache
81
+ clear_cache_alert: Vider le cache peut affecter les performances.
82
+ taxonomies:
83
+ available_codes:
84
+ users: Utilisateurs
85
+ pages: Pages
86
+ available_codes_message: Si ce champs est vide, tout les models taxonomisables
87
+ seront considérés comme disponibles.
88
+
89
+ seo: SEO
@@ -0,0 +1,9 @@
1
+ fr:
2
+ simple_form:
3
+ 'yes': 'Oui'
4
+ 'no': 'Non'
5
+ required:
6
+ text: Requis
7
+ mark: "*"
8
+ error_notification:
9
+ default_message: 'Veuillez traiter les problèmes suivants:'
@@ -1,15 +1,16 @@
1
- Cdx::Engine.routes.draw do
1
+ Cdx::Engine.add_routes do
2
+
2
3
  namespace :admin, path: Cdx.admin_path do
3
4
  root to: 'home#index'
4
5
 
5
6
  devise_for :users,
6
- class_name: 'Cdx::User',
7
- path: 'auth',
8
- path_names: { sign_in: 'login', sign_out: 'logout', confirmation: 'verification' },
9
- skip: %i[unlocks omniauth_callbacks registrations],
7
+ class_name: 'Cdx::User',
8
+ path: 'auth',
9
+ path_names: { sign_in: 'login', sign_out: 'logout', confirmation: 'verification' },
10
+ skip: %i[unlocks omniauth_callbacks registrations],
10
11
  controllers: {
11
- sessions: 'cdx/admin/devise/sessions',
12
- passwords: 'cdx/admin/devise/passwords'
12
+ sessions: 'cdx/admin/devise/sessions',
13
+ passwords: 'cdx/admin/devise/passwords'
13
14
  }
14
15
 
15
16
  resource :setting, path: :settings, only: [:edit, :update] do
@@ -33,4 +34,7 @@ Cdx::Engine.routes.draw do
33
34
  end
34
35
  end
35
36
  end
37
+
36
38
  end
39
+
40
+ Cdx::Engine.draw_routes
@@ -0,0 +1,10 @@
1
+ class CreateCdxSeos < ActiveRecord::Migration[5.1]
2
+ def change
3
+ create_table :cdx_seos do |t|
4
+ t.references :record, polymorphic: true, null: false, index: false
5
+ t.hstore :meta
6
+ t.hstore :og
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ class AddTemplateToPages < ActiveRecord::Migration[5.1]
2
+ def change
3
+ add_column :cdx_pages, :template, :string, length: 45, default: 'default'
4
+ end
5
+ end
data/lib/cdx.rb CHANGED
@@ -10,6 +10,7 @@ require 'toastr-rails'
10
10
  require 'emoji_flag'
11
11
  require 'cocoon'
12
12
  require 'rails-i18n'
13
+ require 'cancan'
13
14
  require 'paperclip'
14
15
  require 'kaminari'
15
16
  require 'kaminari-i18n'
@@ -30,12 +31,18 @@ module Cdx
30
31
  mattr_accessor :admin_path
31
32
  @@admin_path = 'admin'
32
33
 
34
+ mattr_accessor :available_locales
35
+ @@available_locales = %w(fr en es)
36
+
33
37
  mattr_accessor :taxonomy_available_codes
34
38
  @@taxonomy_available_codes = %w(pages)
35
39
 
36
40
  mattr_accessor :user_available_roles
37
41
  @@user_available_roles = %w(admin)
38
42
 
43
+ mattr_accessor :page_available_templates
44
+ @@page_available_templates = %w(contact)
45
+
39
46
  def self.setup
40
47
  yield self
41
48
  end
@@ -43,3 +50,5 @@ end
43
50
 
44
51
  require 'cdx/controller_helpers/site'
45
52
  require 'cdx/controller_helpers/settings'
53
+ require 'cdx/controller_helpers/seo'
54
+ require 'cdx/controller_helpers/locale'
@@ -0,0 +1,17 @@
1
+ module Cdx
2
+ module ControllerHelpers
3
+ module Locale
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ before_action :set_locale
8
+ end
9
+
10
+ private
11
+
12
+ def set_locale
13
+ I18n.locale = current_settings.default_locale || I18n.default_locale
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,71 @@
1
+ module Cdx
2
+ module ControllerHelpers
3
+ module Seo
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ helper Cdx::SeoHelper
8
+ helper_method :meta_data, :open_graph_data, :canonical_url, :meta_title
9
+ end
10
+
11
+ def meta_title
12
+ # Override this methods in your controllers to get a custom title
13
+ contextual_record.meta_title
14
+ end
15
+
16
+ def canonical_url
17
+ # Override this methods in your controllers to get a custom canonical_url
18
+ request.fullpath
19
+ end
20
+
21
+ def contextual_record
22
+ # Override this methods in your controllers to get seo data from a specific record
23
+ instance_variable_get("@#{controller_name.singularize}") || @object || Setting.current
24
+ end
25
+
26
+ def meta_data
27
+ # Override this methods in your controllers to get custom SEO data
28
+ object = contextual_record
29
+ fields = {}
30
+
31
+ if object.respond_to? :seo
32
+ fields[:keywords] = object.meta_keywords || Setting.current.meta_keywords
33
+ fields[:description] = object.meta_description || Setting.current.meta_description
34
+ end
35
+ fields.reject { |k, v| v.blank? }
36
+ end
37
+
38
+ def open_graph_data
39
+ # Override this methods in your controllers to get custom OpenGraph data
40
+ object = contextual_record
41
+ fields = {}
42
+
43
+ if object.respond_to? :seo
44
+ fields['og:title'] = object.og_title || Setting.current.og_title
45
+ fields['og:description'] = object.og_description || Setting.current.og_description
46
+ fields['og:keywords'] = object.og_keywords || Setting.current.og_keywords
47
+ fields['og:image'] = object.og_image&.attachment&.url(:regular) || Setting.current.og_image&.attachment&.url(:regular)
48
+ fields['og:video'] = object.og_video || Setting.current.og_video
49
+ end
50
+ fields.reject { |k, v| v.blank? }
51
+ end
52
+ end
53
+ end
54
+
55
+ module SeoHelper
56
+ extend ActiveSupport::Concern
57
+
58
+ def seo_data_tags
59
+ # Should be included in your head tag
60
+ html = meta_data.map do |k, v|
61
+ tag.meta name: k, content: v
62
+ end.join
63
+
64
+ html += open_graph_data.map do |k, v|
65
+ tag.meta property: k, content: v
66
+ end.join
67
+
68
+ html += tag.link rel: :canonical, href: canonical_url
69
+ end
70
+ end
71
+ end
@@ -22,3 +22,5 @@ module Cdx
22
22
  end
23
23
  end
24
24
  end
25
+
26
+ require 'cdx/routes'
@@ -0,0 +1,43 @@
1
+ # Source : https://github.com/spree/spree/blob/master/core/lib/spree/core/routes.rb
2
+
3
+ module Cdx
4
+ class Engine < ::Rails::Engine
5
+ def self.add_routes(&block)
6
+ @cdx_routes ||= []
7
+
8
+ # Anything that causes the application's routes to be reloaded,
9
+ # will cause this method to be called more than once
10
+ # i.e. https://github.com/plataformatec/devise/blob/31971e69e6a1bcf6c7f01eaaa44f227c4af5d4d2/lib/devise/rails.rb#L14
11
+ # In the case of Devise, this *only* happens in the production env
12
+ # This coupled with Rails 4's insistence that routes are not drawn twice,
13
+ # poses quite a serious problem.
14
+ #
15
+ # This is mainly why this whole file exists in the first place.
16
+ #
17
+ # Thus we need to make sure that the routes aren't drawn twice.
18
+
19
+ @cdx_routes << block unless @cdx_routes.include?(block)
20
+ end
21
+
22
+ def self.append_routes(&block)
23
+ @append_routes ||= []
24
+ # See comment in add_routes.
25
+ @append_routes << block unless @append_routes.include?(block)
26
+ end
27
+
28
+ def self.draw_routes(&block)
29
+ @cdx_routes ||= []
30
+ @append_routes ||= []
31
+ eval_block(block) if block_given?
32
+ @cdx_routes.each { |r| eval_block(&r) }
33
+ @append_routes.each { |r| eval_block(&r) }
34
+ # # Clear out routes so that they aren't drawn twice.
35
+ @cdx_routes = []
36
+ @append_routes = []
37
+ end
38
+
39
+ def eval_block(&block)
40
+ Cdx::Engine.routes.send :eval_block, block
41
+ end
42
+ end
43
+ end
@@ -1,3 +1,3 @@
1
1
  module Cdx
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -4,6 +4,10 @@ Cdx.setup do |config|
4
4
  #
5
5
  # config.admin_path = 'admin'
6
6
 
7
+ # Available locales for settings
8
+ #
9
+ # config.available_locales = %w(fr en es)
10
+
7
11
  # Add available roles to users
8
12
  #
9
13
  # Admin role should not be removed in order
@@ -15,4 +19,10 @@ Cdx.setup do |config|
15
19
  #
16
20
  # config.taxonomy_available_codes = %w(pages)
17
21
 
22
+ # Add available templates for pages
23
+ # Don't forget to add your template in
24
+ # app/view/cdx/custom/template_name.html.erb
25
+ # Please refer to Cdx::StaticController for more informations
26
+ #
27
+ # config.page_available_templates = %w(contact)
18
28
  end