cdx 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -10,9 +10,8 @@ module Cdx
10
10
  devise :database_authenticatable, :registerable,
11
11
  :recoverable, :rememberable, :trackable, :validatable
12
12
 
13
- # Associations
14
- has_one :avatar, -> { where(name: :avatar) }, class_name: 'Asset::User::Avatar', as: :record, dependent: :destroy
15
- accepts_nested_attributes_for :avatar, allow_destroy: true
13
+ # Assets
14
+ has_one_attached :avatar, 'Asset::User::Avatar'
16
15
 
17
16
  # Settings
18
17
  store_accessor :settings, :theme
@@ -37,12 +36,14 @@ module Cdx
37
36
  "#{first_name} #{last_name}".strip
38
37
  end
39
38
 
40
- def admin?
41
- has_role?(:admin)
42
- end
43
-
44
39
  def has_role?(role)
45
40
  roles.include? role.to_s
46
41
  end
42
+
43
+ Cdx.user_available_roles.each do |role|
44
+ define_method("is_#{role}?") do
45
+ has_role?(role)
46
+ end
47
+ end
47
48
  end
48
49
  end
@@ -0,0 +1,14 @@
1
+ # Mimic ActiveStorage DSL, but works with nested attributes
2
+ module Cdx
3
+ module AttachmentMacros
4
+ def has_one_attached(name, class_name)
5
+ has_one name.to_sym, -> { where(name: name) }, class_name: class_name, as: :record, dependent: :destroy
6
+ accepts_nested_attributes_for name.to_sym, allow_destroy: true
7
+ end
8
+
9
+ def has_many_attached(name, class_name)
10
+ has_many name.to_sym, -> { where(name: name) }, class_name: class_name, as: :record, dependent: :destroy
11
+ accepts_nested_attributes_for name.to_sym, allow_destroy: true, reject_if: :all_blank
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,20 @@
1
+ module Cdx
2
+ module SeoSupport
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ has_one :seo, as: :record, dependent: :destroy
7
+ accepts_nested_attributes_for :seo, reject_if: :all_blank
8
+
9
+ delegate :meta_title,
10
+ :meta_description,
11
+ :meta_keywords,
12
+ :meta_canonical,
13
+ :og_title, :og_description,
14
+ :og_keywords,
15
+ :og_video,
16
+ :og_image,
17
+ to: :seo, allow_nil: true
18
+ end
19
+ end
20
+ end
@@ -1,8 +1,8 @@
1
1
  <p>Hello <%= @resource.email %>!</p>
2
2
 
3
3
  <p>Someone has requested a link to change your password. You can do this through the link below.</p>
4
-
5
- <p><%= link_to 'Change my password', edit_password_url(@resource, reset_password_token: @token) %></p>
4
+ <%= byebug %>
5
+ <p><%= link_to 'Change my password', edit_admin_user_password_url(@resource, reset_password_token: @token) %></p>
6
6
 
7
7
  <p>If you didn't request this, please ignore this email.</p>
8
8
  <p>Your password won't change until you access the link above and create a new one.</p>
@@ -1,6 +1,6 @@
1
1
  <h2>Change your password</h2>
2
2
 
3
- <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f| %>
3
+ <%= form_for(resource, as: resource_name, url: admin_user_password_path, html: { method: :put }) do |f| %>
4
4
  <%= devise_error_messages! %>
5
5
  <%= f.hidden_field :reset_password_token %>
6
6
 
@@ -1,6 +1,6 @@
1
1
  <h2>Forgot your password?</h2>
2
2
 
3
- <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f| %>
3
+ <%= form_for(resource, as: resource_name, url: admin_user_password_path, html: { method: :post }) do |f| %>
4
4
  <%= devise_error_messages! %>
5
5
 
6
6
  <div class="field">
@@ -2,7 +2,7 @@
2
2
  Sign in to start your session
3
3
  </p>
4
4
 
5
- <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
5
+ <%= form_for(resource, as: resource_name, url: admin_user_session_path) do |f| %>
6
6
  <div class="form-group has-feedback">
7
7
  <%= f.email_field :email, autofocus: true, class: %w(form-control), placeholder: 'Email' %>
8
8
  <span class="glyphicon glyphicon-envelope form-control-feedback"></span>
@@ -1,21 +1,7 @@
1
1
  <%- if controller_name != 'sessions' %>
2
- <%= link_to "Log in", new_session_path(resource_name) %><br />
2
+ <%= link_to "Log in", new_admin_user_session_path %><br />
3
3
  <% end -%>
4
4
 
5
5
  <%- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' %>
6
- <%= link_to "Forgot your password?", new_password_path(resource_name) %><br />
7
- <% end -%>
8
-
9
- <%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
10
- <%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name) %><br />
11
- <% end -%>
12
-
13
- <%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %>
14
- <%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %><br />
15
- <% end -%>
16
-
17
- <%- if devise_mapping.omniauthable? %>
18
- <%- resource_class.omniauth_providers.each do |provider| %>
19
- <%= link_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider) %><br />
20
- <% end -%>
21
- <% end -%>
6
+ <%= link_to "Forgot your password?", new_admin_user_password_path %><br />
7
+ <% end -%>
@@ -3,6 +3,9 @@
3
3
  <% translated_field f, :title %>
4
4
  <% translated_field(f, :slug, disabled: true) if f.object.persisted? %>
5
5
  <% translated_field f, :content, as: :wysiwyg %>
6
+ <%= f.input :template, collection: Cdx.page_available_templates, input_html: { class: %w(select2-simple) } %>
7
+
8
+ <%= render partial: 'cdx/admin/shared/seo_form', locals: { f: f } %>
6
9
  </div>
7
10
 
8
11
  <div class="box-footer">
@@ -1,9 +1,12 @@
1
1
  <% if defined?(f) %>
2
2
  <div class="box-body">
3
3
  <%= f.input :acronym %>
4
- <%= f.input :default_theme %>
4
+ <%= f.input :default_theme, collection: Cdx::Setting::AVAILABLE_THEMES, input_html: { class: 'select2-simple theme-selector' }, include_blank: false %>
5
5
  <%= f.input :default_locale, collection: locales_options_tags, input_html: { class: 'select2-simple-search' }, include_hidden: false %>
6
6
  <%= f.input :available_locales, collection: locales_options_tags, input_html: { class: 'select2-multiple', multiple: true }, include_hidden: false %>
7
+
8
+ <%= render partial: 'cdx/admin/shared/seo_form', locals: { f: f } %>
9
+
7
10
  </div>
8
11
  <div class="box-footer">
9
12
  <%= f.button :submit %>
@@ -27,7 +27,7 @@
27
27
  <% end %>
28
28
  </li>
29
29
  <li>
30
- <%= link_to destroy_admin_user_session_path, data: { method: :delete } do %>
30
+ <%= link_to destroy_admin_user_session_path do %>
31
31
  <%= fa_icon 'sign-out' %>
32
32
  <%= t('admin.signout') %>
33
33
  <% end %>
@@ -4,10 +4,10 @@
4
4
  <%= main_sidebar_menu_simple_item(current_main_tree, :home, :dashboard, admin_root_path, t('admin.main_sidebar.menu.title.dashboard')) %>
5
5
 
6
6
  <li class="header"><%= t('admin.main_sidebar.menu.title.contents') %></li>
7
- <%= main_sidebar_menu_simple_item(current_main_tree, :users, :user, admin_users_path, t('activerecord.models.cdx/user.other')) %>
8
- <%= main_sidebar_menu_simple_item(current_main_tree, :pages, :file, admin_pages_path, t('activerecord.models.cdx/page.other')) %>
9
- <%= main_sidebar_menu_simple_item(current_main_tree, [:taxonomies, :taxons], :tags, admin_taxonomies_path, t('activerecord.models.cdx/taxonomy.other')) %>
7
+ <%= main_sidebar_menu_simple_item(current_main_tree, :users, :user, admin_users_path, t('activerecord.models.cdx/user.other')) if can?(:index, Cdx::User) %>
8
+ <%= main_sidebar_menu_simple_item(current_main_tree, :pages, :file, admin_pages_path, t('activerecord.models.cdx/page.other')) if can?(:index, Cdx::Page) %>
9
+ <%= main_sidebar_menu_simple_item(current_main_tree, [:taxonomies, :taxons], :tags, admin_taxonomies_path, t('activerecord.models.cdx/taxonomy.other')) if can?(:index, Cdx::Taxonomy) %>
10
10
 
11
11
  <li class="header"><%= t('admin.main_sidebar.menu.title.parameters') %></li>
12
- <%= main_sidebar_menu_simple_item(current_main_tree, :sites, :sitemap, admin_sites_path, t('activerecord.models.cdx/site.other')) %>
13
- <%= main_sidebar_menu_simple_item(current_main_tree, :settings, :wrench, edit_admin_setting_path, t('activerecord.models.cdx/setting.other')) %>
12
+ <%= main_sidebar_menu_simple_item(current_main_tree, :sites, :sitemap, admin_sites_path, t('activerecord.models.cdx/site.other')) if can?(:index, Cdx::Site) %>
13
+ <%= main_sidebar_menu_simple_item(current_main_tree, :settings, :wrench, edit_admin_setting_path, t('activerecord.models.cdx/setting.other')) if can?(:edit, Cdx::Setting) %>
@@ -0,0 +1,34 @@
1
+ <% if can? :edit, Cdx::Seo %>
2
+ <div class="panel box box-primary">
3
+ <div class="box-header">
4
+ <h4 class="box-title">
5
+ <%= link_to t('admin.seo'), '#seo_module', data: { toggle: 'collapse' }, class: %w(collapsed), aria: { expended: false } %>
6
+ </h4>
7
+ </div>
8
+ <div id="seo_module" class="panel-collapse collapse" aria-expanded="false" style="height:0px">
9
+ <div class="box-body">
10
+ <%= f.fields_for :seo, (f.object.seo ? f.object.seo : f.object.build_seo), wrapper: :horizontal_form do |seo_form| %>
11
+ <%= seo_form.input :meta_title %>
12
+ <%= seo_form.input :meta_description, as: :text %>
13
+ <%= seo_form.input :meta_keywords %>
14
+ <%= seo_form.input :meta_canonical %>
15
+ <%= seo_form.input :og_title %>
16
+ <%= seo_form.input :og_description, as: :text %>
17
+ <%= seo_form.input :og_keywords %>
18
+ <%= seo_form.input :og_video %>
19
+ <%= seo_form.fields_for :og_image, (seo_form.object.og_image ? seo_form.object.og_image : seo_form.object.build_og_image) do |image_form| %>
20
+ <div class="form-group">
21
+ <div class="col-sm-2 control-label string optional">
22
+ <%= image_form.label :og_image, t('activerecord.attributes.cdx/seo.og_image') %>
23
+ </div>
24
+ <div class="col-sm-10">
25
+ <%= render partial: 'cdx/admin/shared/file_input', locals: { f: image_form, multiple: '', style: 'info', attachment: 'attachment' } %>
26
+ <%= tag.p image_form.object.attachment_file_name %>
27
+ </div>
28
+ </div>
29
+ <% end %>
30
+ <% end %>
31
+ </div>
32
+ </div>
33
+ </div>
34
+ <% end %>
@@ -5,7 +5,7 @@
5
5
  <%= f.input :first_name %>
6
6
  <%= f.input :last_name %>
7
7
  <%= f.input :roles, collection: Cdx::User::AVAILABLE_ROLES, input_html: { class: 'select2-multiple', multiple: true }, include_hidden: false %>
8
- <%= f.input :theme if current_admin_user == f.object %>
8
+ <%= f.input :theme, collection: Cdx::Setting::AVAILABLE_THEMES, input_html: { class: 'select2-simple theme-selector' }, include_blank: false if current_admin_user == f.object %>
9
9
  <hr>
10
10
  <h4><%= t('admin.avatar') %></h4>
11
11
  <%= f.fields_for :avatar do |avatar_form| %>
@@ -0,0 +1 @@
1
+ <%= @object.content %>
@@ -1,11 +1,15 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
- <title>Cdx</title>
4
+ <title><%= meta_title %></title>
5
5
  <%= stylesheet_link_tag 'cdx/admin', media: 'all' %>
6
6
  <%= javascript_include_tag 'cdx/admin' %>
7
7
  <%= csrf_meta_tags %>
8
8
 
9
+ <%== seo_data_tags %>
10
+
11
+ <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
12
+
9
13
  <%= render partial: 'cdx/admin/shared/head' %>
10
14
  </head>
11
15
  <body id="<%= context_tag %>" class="<%= theme_class %> sidebar-mini">
@@ -6,6 +6,10 @@
6
6
  <%= javascript_include_tag 'cdx/admin' %>
7
7
  <%= csrf_meta_tags %>
8
8
 
9
+ <%== seo_data_tags %>
10
+
11
+ <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
12
+
9
13
  <%= render partial: 'cdx/admin/shared/head' %>
10
14
  </head>
11
15
  <body id="<%= context_tag %>" class="hold-transition login-page">
@@ -4,8 +4,6 @@ Devise.setup do |config|
4
4
 
5
5
  config.scoped_views = true
6
6
 
7
- config.router_name = :cdx
8
-
9
7
  # The secret key used by Devise. Devise uses this key to generate
10
8
  # random tokens. Changing this key will render invalid all existing
11
9
  # confirmation, reset password and unlock tokens in the database.
@@ -23,7 +21,7 @@ Devise.setup do |config|
23
21
  # config.mailer = 'Devise::Mailer'
24
22
 
25
23
  # Configure the parent class responsible to send e-mails.
26
- # config.parent_mailer = 'ActionMailer::Base'
24
+ config.parent_mailer = 'Cdx::ApplicationMailer'
27
25
 
28
26
  # ==> ORM configuration
29
27
  # Load and configure the ORM. Supports :active_record (default) and
@@ -250,7 +248,7 @@ Devise.setup do |config|
250
248
  # config.navigational_formats = ['*/*', :html]
251
249
 
252
250
  # The default HTTP method used to sign out a resource. Default is :delete.
253
- config.sign_out_via = :delete
251
+ config.sign_out_via = :get
254
252
 
255
253
  # ==> OmniAuth
256
254
  # Add a new OmniAuth provider. Check the wiki for more information on setting
@@ -274,7 +272,7 @@ Devise.setup do |config|
274
272
  # mount MyEngine, at: '/my_engine'
275
273
  #
276
274
  # The router that invoked `devise_for`, in the example above, would be:
277
- # config.router_name = :my_engine
275
+ config.router_name = :cdx
278
276
  #
279
277
  # When using OmniAuth, Devise cannot automatically set OmniAuth path,
280
278
  # so you need to do it manually. For the users scope, it would be:
@@ -103,9 +103,9 @@ SimpleForm.setup do |config|
103
103
  b.use :html5
104
104
  b.optional :readonly
105
105
 
106
- b.use :label, class: 'col-sm-3 control-label'
106
+ b.use :label, class: 'col-sm-2 control-label'
107
107
 
108
- b.wrapper tag: 'div', class: 'col-sm-9' do |ba|
108
+ b.wrapper tag: 'div', class: 'col-sm-10' do |ba|
109
109
  ba.use :input
110
110
  ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
111
111
  ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
@@ -4,26 +4,24 @@ en:
4
4
  cdx/user:
5
5
  one: User
6
6
  other: Users
7
-
8
7
  cdx/site:
9
8
  one: Site
10
9
  other: Sites
11
-
12
10
  cdx/page:
13
11
  one: Page
14
12
  other: Pages
15
-
16
13
  cdx/taxonomy:
17
14
  one: Taxonomy
18
15
  other: Taxonomies
19
-
20
16
  cdx/taxon:
21
17
  one: Taxon
22
18
  other: Taxons
23
-
24
19
  cdx/setting:
25
20
  one: Setting
26
21
  other: Settings
22
+ cdx/seo:
23
+ one: Seo
24
+ other: Seo
27
25
 
28
26
  attributes:
29
27
  cdx/user:
@@ -33,25 +31,61 @@ en:
33
31
  last_name: Last name
34
32
  full_name: Full name
35
33
  theme: Theme
36
-
34
+ roles: Roles
35
+ password_confirmation: Password confirmation
37
36
  cdx/site:
38
37
  name: Name
39
38
  code: Code
40
39
  domain: Domain
41
- default : Default ?
42
-
40
+ default: Default ?
43
41
  cdx/page:
44
42
  title: Title
45
43
  content: Page content
46
44
  state: State
47
45
  published_on: Published on
48
46
  slug: Slug
49
-
47
+ template: Template
50
48
  cdx/taxonomy:
51
49
  name: Name
52
50
  description: Description
53
-
51
+ available_codes: Available codes
54
52
  cdx/taxon:
55
53
  name: Name
56
54
  description: Description
57
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: Acronym
68
+ default_theme: Default theme
69
+ default_locale: Default locale
70
+ available_locales: Available locales
71
+
72
+ helpers:
73
+ submit:
74
+ user:
75
+ create: Create user
76
+ update: Update user
77
+ page:
78
+ create: Create page
79
+ update: Update page
80
+ taxonomy:
81
+ create: Create taxonomy
82
+ update: Update taxonomy
83
+ taxon:
84
+ create: Create taxon
85
+ update: Update taxon
86
+ site:
87
+ create: Create site
88
+ update: Update site
89
+ setting:
90
+ create: Create setting
91
+ update: Update setting
@@ -1,47 +1,48 @@
1
1
  en:
2
2
  admin:
3
3
  generic_states:
4
- published: "Published"
5
- draft: "Draft"
4
+ published: Published
5
+ draft: Draft
6
6
  content_header:
7
7
  page_title:
8
- home_index: "Dashboard"
8
+ home_index: Dashboard
9
9
  actions:
10
- edit: "Edit"
11
- update: "Edit"
12
- new: "New"
13
- create: "New"
14
- index: "Index"
15
- settings: "Settings"
10
+ edit: Edit
11
+ update: Edit
12
+ new: New
13
+ create: New
14
+ index: Index
15
+ settings: Settings
16
16
  breadcrumb:
17
- home_index: "Dashboard"
17
+ home_index: Dashboard
18
+
18
19
  main_sidebar:
19
20
  menu:
20
21
  title:
21
- parameters: "Parameters"
22
- contents: "Contents"
23
- dashboard: "Dashboard"
22
+ parameters: Parameters
23
+ contents: Contents
24
+ dashboard: Dashboard
25
+
24
26
  actions:
25
- new: "New"
26
- return: "Return"
27
- all: "Actions"
28
- publish: "Publish"
29
- draft: "Draft"
30
- unpublish: "Unpublish"
31
- upload: "Upload a file"
32
- general: "General"
33
- alert: "Alert"
34
- password: "Password"
35
- avatar: "Avatar"
36
- online: "Online"
37
- signout: "Sign out"
38
- profile: "Profile"
27
+ new: New
28
+ return: Return
29
+ all: Actions
30
+ publish: Publish
31
+ draft: Draft
32
+ unpublish: Unpublish
33
+ upload: Upload a file
34
+ general: General
35
+ alert: Alert
36
+ password: Password
37
+ avatar: Avatar
38
+ online: Online
39
+ signout: Sign out
40
+ profile: Profile
39
41
  custom_validators:
40
- must_have_one_default_site: "One default site is required"
42
+ must_have_one_default_site: One default site is required
41
43
  ujs_confirm:
42
- delete: "Are you sure you want to delete : %{o} ?"
43
- default: "Are you sure ?"
44
-
44
+ delete: 'Are you sure you want to delete : %{o} ?'
45
+ default: Are you sure ?
45
46
  flash:
46
47
  default:
47
48
  create:
@@ -62,19 +63,23 @@ en:
62
63
 
63
64
  settings:
64
65
  update:
65
- success: "Settings successfully updated"
66
- error: "Settings cannot be created"
66
+ success: Settings successfully updated
67
+ error: Settings cannot be created
67
68
  clear_cache:
68
- success: "Cache successfully cleared"
69
+ success: Cache successfully cleared
70
+
69
71
  sessions:
70
- not_admin: "User isn't admin"
71
- settings:
72
- clear_cache: "Clear cache"
73
- cache: "Cache"
74
- clear_cache_alert: "Clear cache may affect global performances."
72
+ not_admin: User isn't admin
75
73
 
74
+ settings:
75
+ clear_cache: Clear cache
76
+ cache: Cache
77
+ clear_cache_alert: Clear cache may affect global performances.
76
78
  taxonomies:
77
79
  available_codes:
78
80
  users: Users
79
81
  pages: Pages
80
- available_codes_message: If this field is empty, all taxonomisable models are considered as availables.
82
+ available_codes_message: If this field is empty, all taxonomisable models are
83
+ considered as availables.
84
+
85
+ seo: SEO