cdx 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -2
- data/app/assets/javascripts/cdx/admin/shared/theme.js +15 -0
- data/app/assets/stylesheets/cdx/admin/cdx.scss +1 -0
- data/app/assets/stylesheets/cdx/admin/shared/radio_buttons.scss +1 -0
- data/app/controllers/cdx/admin/base_controller.rb +26 -4
- data/app/controllers/cdx/admin/devise/confirmations_controller.rb +4 -0
- data/app/controllers/cdx/admin/devise/passwords_controller.rb +4 -0
- data/app/controllers/cdx/admin/devise/sessions_controller.rb +2 -0
- data/app/controllers/cdx/admin/resource_controller.rb +17 -6
- data/app/controllers/cdx/admin/settings_controller.rb +2 -0
- data/app/controllers/cdx/application_controller.rb +11 -0
- data/app/controllers/cdx/static_controller.rb +20 -0
- data/app/helpers/cdx/admin/base_helper.rb +1 -1
- data/app/helpers/cdx/admin/form_helper.rb +1 -1
- data/app/helpers/cdx/admin/resource_helper.rb +29 -19
- data/app/models/cdx/ability.rb +40 -0
- data/app/models/cdx/application_record.rb +2 -0
- data/app/models/cdx/asset/seo/og_image.rb +11 -0
- data/app/models/cdx/page.rb +1 -0
- data/app/models/cdx/seo.rb +22 -0
- data/app/models/cdx/setting.rb +7 -1
- data/app/models/cdx/user.rb +8 -7
- data/app/models/concerns/cdx/attachment_macros.rb +14 -0
- data/app/models/concerns/cdx/seo_support.rb +20 -0
- data/app/views/cdx/admin/devise/mailer/reset_password_instructions.html.erb +2 -2
- data/app/views/cdx/admin/devise/passwords/edit.html.erb +1 -1
- data/app/views/cdx/admin/devise/passwords/new.html.erb +1 -1
- data/app/views/cdx/admin/devise/sessions/new.html.erb +1 -1
- data/app/views/cdx/admin/devise/shared/_links.html.erb +3 -17
- data/app/views/cdx/admin/pages/_form.html.erb +3 -0
- data/app/views/cdx/admin/settings/_form.html.erb +4 -1
- data/app/views/cdx/admin/shared/_header.html.erb +1 -1
- data/app/views/cdx/admin/shared/_main_sidebar_menu.html.erb +5 -5
- data/app/views/cdx/admin/shared/_seo_form.html.erb +34 -0
- data/app/views/cdx/admin/users/_form.html.erb +1 -1
- data/app/views/cdx/static/show.html.erb +1 -0
- data/app/views/layouts/cdx/admin.html.erb +5 -1
- data/app/views/layouts/cdx/admin_login.html.erb +4 -0
- data/config/initializers/devise.rb +3 -5
- data/config/initializers/simple_form_bootstrap.rb +2 -2
- data/config/locales/en.activerecord.yml +44 -10
- data/config/locales/en.admin.yml +45 -40
- data/config/locales/en.simple_form.yml +9 -0
- data/config/locales/fr.activerecord.yml +91 -0
- data/config/locales/fr.admin.yml +89 -0
- data/config/locales/fr.simple_form.yml +9 -0
- data/config/routes.rb +11 -7
- data/db/migrate/20171002130330_create_cdx_seos.rb +10 -0
- data/db/migrate/20171005095457_add_template_to_pages.rb +5 -0
- data/lib/cdx.rb +9 -0
- data/lib/cdx/controller_helpers/locale.rb +17 -0
- data/lib/cdx/controller_helpers/seo.rb +71 -0
- data/lib/cdx/engine.rb +2 -0
- data/lib/cdx/routes.rb +43 -0
- data/lib/cdx/version.rb +1 -1
- data/lib/generators/cdx/install/templates/cdx.rb +10 -0
- data/spec/controllers/cdx/admin/settings_controller_spec.rb +2 -2
- data/spec/controllers/cdx/static_controller_spec.rb +24 -0
- data/spec/dummy/app/models/cdx/ability_decorator.rb +15 -0
- data/spec/dummy/config/application.rb +13 -0
- data/spec/dummy/config/database.yml +0 -2
- data/spec/dummy/config/environments/development.rb +5 -2
- data/spec/dummy/config/environments/test.rb +1 -0
- data/spec/dummy/config/routes.rb +6 -0
- data/spec/dummy/db/schema.rb +11 -1
- data/spec/dummy/log/development.log +1350 -0
- data/spec/dummy/log/test.log +24728 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-i/-iFt0NG282LSk69Sr3JLKXx2M7EC8ruUNefVDbHErkE.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0F/0fNoOWKlJquYntmLiNOkQNi_6a0iVzq5OOeD51d9BAk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0N/0nlKUDQVjUvNn0_rQNmi4goOd1QeXk_3ZCWolj26934.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0P/0p5jNivcntrR0rdOjn18-keOIRTMm5EYtltJGAa7yow.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0V/0VpY59TpaF-KXBqms-znoByVNPjR-P_eCeLlxBepkzE.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0_/0__0m7BBelMOz_X24UBi6SZ3Uh0X4h9e0V14obD3RVo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0h/0HindtmDLfA2puS1rQHtYt_PH1W5Rcb3S-9D32folAg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0j/0jz9seO_qzgc12jOQRBX6Wq77G29sbV101tgL__esjQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0q/0qtpjjwSuyn9F0Zw4FX3bgrDV2La3TQpqPnKIELASl0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1I/1iARm3Mchh3clWJvFBWhoEgTOxzBAQlHifRPTAVxdkU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1_/1_2bXybqcVDdWq70AmQv9_Xww4HyPC3RtGxXgrhPWMA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1_/1_h1fVQCCAksvv_bbIZcstSElyaO0JcwYzEJSE7sKgQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1_/1_oe_BI62RbdA9jkSzL1VwJrFEptRf0K-WCZY-p3lc8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1j/1jdfO5MniydqTDMCc6OlsJevFQCn0FMpg1HEbifyOHw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1p/1PpVGdN-Gky0eA3ONio0s4i-ZQ7OvQigx1-W7ndgQBU.cache +4 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1y/1yo4gBzHOyPj5eNdwH7f2XJjipPR-g43NmbdlgwasXI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2D/2D-E_g4d_wFqhWsACw45AU1T4HgZa24X1fJCD8A-cmk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2D/2DwgKbBdkZUZkIKin21KvhrmwLfNLjOHp0ZEkHhr2lQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2Y/2YoKA-UB1eAF6sFyqgSf4vPvOeXYWzmlsSOyCA1I2BE.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2m/2myor-spZvspHRsw9q5evQpjS-mbavq1dQJpei7J_tA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2n/2N6sTK14LOJztedO9VQjEBXz9TxjMNtDPP6BMjt00Ts.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3K/3kHxvyS2gNyVlhTpICF2xM-T0l-ed7YlEluiW0Zf9T0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3Q/3QMQjVvd2faHufB8gtFGeMIbxH-sCDr4vCOtPUgIcpE.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3l/3LkV-MY4oMsYNWdPvXQGJls3tP3qGznSwO2aiiQcSPA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3s/3sqXUopmZBq7ucOltFVAaeq9k3bl0im68FY_F8FxeJM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4D/4DnLFLUYvftKjHqlCMFap-uS2rn9Z73Kd4VAl62YnTc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4X/4x1jBypiX2Fch4mNVpbwZQNrRMp4saFZ5Qok1whKYvk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4Y/4yoJ745XP_lQvkDB_OMmcORPCl4vVsxaxW4UEUd3sbk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4n/4n-q5a2YIbws7wp3tpljJ5BrNc_s2PJuMhPBRIzdhcI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4w/4WAD0WBxsnN-wNF74X6MorObH79zloR5dIdEh514C0I.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/51/51rQVKR5ShW5Vw6coB54r6kanmIEVsbi5cQ-WBFO560.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/53/53xRB1iTmNzBgiyDHRhDLH68sNoG0l3NuadxWnO6d20.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5b/5BjBasr9gsjHQTbYdQ0Yh87NjjhdqPfLb2CkU2OHJaY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5c/5crQT5B2P3mK86j0Dl6K9sCdXNbTbGEz3NTly0cV8Lk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5s/5SFOdTJpduHEg91zJaIAr1VrLFih5MHNYmv9mtyTq-Q.cache +4 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5y/5yEFF7UIbmhPtA3baKfA3dhd7czO7Mr-Xlc7pSouzAo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6x/6Xjup3_QshPPWD9GFZ1Rsh6BhSv8mtwbvBGWBFySwOI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/72/72erHrbpPtcN7YqhDYnupoNuV3rf2pJozQ3J5HhD1iI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7F/7Fhp0xcD_4hGj0bv9pVrktIH4E8hRHhBDFIU1vA9zeo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7T/7t-1sFAQkGmXMyam9vkBvKF8MJhZ9VQJPfV_7PywF5I.cache +4 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7o/7oCsmfp7c_RuA1zhrvJ7dbDSOOC0sQMg6DW3dxgYmZg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7q/7qqDmxISOZ8Q9ZU5VFECDUzTi3VwB9rqIjgC5OOIrrQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/80/80a3BElReHk-kquPjzlmLtsGEOVZvawBTr3Vy5PMg8o.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/86/86BgsL85R9eVD-0iY6kAI8qmd7MstQe2twPO-9fIkpI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8V/8VuRX4t14W9qg7istJ66rRqCUaW9f4HxfitJlnwH7XM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8i/8i6ilkfD7Z06CVIqzeWC6N_idFglVWRnaZLmLbyIuXM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8k/8KdwyF6we3R_uL-EpfzLppiDGRAnmuKcInrqDd-sM4Q.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8l/8LfCbkph35HmJStppNyWEU5kS6UZq70i3LD__bpZi3A.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/90/90U29nApkOYKhI7f5Ik0hqTCMi6_cY5pBLWetmNPDok.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/90/90yKdlZdkoi7cLuX9171xeFXDBamFl6Q8nBDBIMr_f4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AL/Al4mMT2vXRy0XVI7gPZb_qv_S1xZikH5pWZAMoRg0Ow.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ab/abh-MqdgcZZjYxqJAMU7VmPQgQEc1nsIRUl8PrTR4Xs.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ag/AgWTHd9o70gaIXOgteE61PzuQ7zrXXhUhxXZCwD1k_8.cache +7 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/BK/BKAoOUUdP10MNcNv6y5kkOZFTXF7mLp6spXU2LxfK7s.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/BO/BOpJ7-QqPdxiNr5QjcDhmeXJmlOQREtJCUzieBYDyfU.cache +4 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bd/BD6vdNHjBq3IUAA1De-vsuBzohZ3gC0PKxbmwk9Reqs.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bd/BDRpsfEsYeCu8YKedt9og50isthWbMxWOKGwOwM3g64.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bf/bfA3l64VLm-qcg6ef6pS1swPEkyZp0aKSJKu7uWRppk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bj/bJg2C4nvfAH4OJQI4jEHauHo1ZyFIABVFf0DMqKDPVE.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bv/BVMXHsTFCBqnlZMXA2oHjswGI3JTKoPSg2zW28E_HSY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bx/bxBZ8hJio1vWq2nL4MtMl2o5KdgEXocU1lXqdF_H2Ok.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/C9/C9XqqJn0jzF1cz4gnTlSTNhU8Pa5s4DIg-SJ88FsWXE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/C9/C9xd9XOvzRL-iSdaJVL0ot8YDzizIuYdxXGnj8VTpLo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/C9/c9JOLp9aHOmqYrc61IyX0fuLsfbltewybHRN84pKngg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/CR/crg6faV5hCnyUWUQBvwXsUKXIxeNwdFoeeRZY-9kQ8I.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/CS/CSyBKXmKXX_KNNLX71lUtLo-qibtYKiDiUI7D1_Ad-U.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Cf/cfPGt5PS7oDQyj24rV_aaIL-XBmlD5DQfrvhmt8Zo_k.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ci/cIwTYXAvTveBOKlBbfivMJc6NSW0k7emzlT0_ZO5w9o.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Cx/cxu-X2o-6X399909Ssr6XlxwqdGoWOmdLgy1SGHz7jw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/D5/D5k9pNKFy_4q1izZgrm28HRBhuv37bbussLpNbS0RDg.cache +4 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/D5/d5k69YupUL9o8p2iNuUEoe3zFBbG74sJg5wOOv3nfuU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/D7/d7_pzYKUCrxBOsuEKt9nrKosIlqYtXW-b8129LnvyQo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DM/Dmx097lBqmTT-Oi4kuQviQnRh-a2HActU2dFY-s0_QA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DO/do5awiiOZ_HS5FpsBbrlYLZ_KFBtc9ROw7Yrbtvedb0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DV/dvShsqU3ubcbWOjmi93_42r82SrdBSKooi9vuT9v0vk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Du/DU7SS4Gqtnp5b2BRegxtPhY0d_W5RTctkJIzTnyJnSs.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Dz/dzC0Tg_Pn0DAiA60zRTqwoiufYibY_nMqhh184Jrwj4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Et/ETKn_UyjMllkmPygy3je8yvIjAXuexFZMc3nOMDGZ2g.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/F8/F8VP_mkjQWYzE_kstqaRPFgrOYvfvEXYlNHEJysb2jk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FO/FORksrj3nRzuyQtF7ortyQcv8FKzQoFp7_rvh_a5e_0.cache +5 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fa/fAQ7ZsIRt7gNzB93RfCmjmXarpP3psXoDtpexhi-lcw.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fp/Fp3Fi8NFOunDCuU9rnk4WpD-bwqMJ1RlEHXApZ_Ww78.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fp/fp71stt6rYCx_h5Vtv_SqeqSaErKDmdgQ_zgDk5nPFA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ft/FTS4SzX7DCL-phnfFg6c0L0hlobuf6b6PZNJEBUjiyk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fv/fVO6OABVpR66_lo1S4dZX3TdNJFfOVTVFmQoA6Yo334.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/GB/gbTW4epYUuCV1gRLZ-FfP1mirEaKjjR8xKLP1TqkBNQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/GK/gKyqjKN5EPcboPVsaAWPRguhL4C9n4Ak_I8dxHbuBJ0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/GT/GTw48Whi_H5B30HrWKDHbhMESxxcgmt3cxVJVNxnlCA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Gz/gZr2Ax0pbGr5z478MPqutV_ckMVX5hoGCM4FlxYKptw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HC/HCDOUd7-S45aJ_PjVAC_Vmjyud3i1aQv4cE3t9_Z3Dw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HZ/HZ-pL107JwyUm0FXHqap6QT1gHaBdVO-HwgW7fyjS7w.cache +5 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Hn/HNmwBQyHv0Wd1s_FFE2ZKnlN1gc_60ojDfYMoTWxo2c.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Hp/HPBbedoNr7FnvlUzBaP-F184BEU1LTSih7fp0zYyP3w.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Hp/hPlcWYGmd8PAWMPpOKz8frzYfDv1ZmglHT_dv8lhcNI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/I1/I1KUnvh52K5HLo-DqDyraniWc9XvG72YgYnTWDiskOM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/IK/iK-WxRj6EtSpxgj7zp5ZKdc_QO_1aiEW1ArjZsrGStA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/If/iFR2Vv68kRTEt3rbTO4QMTv14XXSYOOYsdxuEM1XPU0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Im/ImnlN2FMoHZ7TF6gKEfHO3bjfL2wWhxOtGJXgxVn3dk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/J1/J14vesr1A3MZ9btP4P7iNs0FHKeprcTi4X1tt9XGSHo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JG/JGEhVFfZgTVFCRiVAXe44oVveXuVRsa3isuIc9Eh9-c.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Je/JEdK9d77mFvuv6Pk4agvy4WGNbFK9_XX69_mEyZfXJI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/K1/K1sN57T85a7GtrrrRdabe9ukxwC8iuJ1HCv9gvTBVZM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KN/KnbYZeK72MsgFzLutCfAYVSnDv_j5n9x2ZwGiEzjK4A.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Kg/Kg2grZ43Kx1CQ_VXx4RSCpYRCojuIKz-0Dn2G_y4Pdk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Kp/kpgcUcUZJyVmIX7ioTLnr8yi1B1R0mPdLykoKheweyk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Kq/kqVr6Q49dL2u3aAu7hQoZEW22oA76zrZItcqo2BjcIc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/L2/l2WZXgIHGA3F2zeqdZq-izZuMyvXKBI85BLC_0xWOro.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LK/Lkaf1O_V-WIPFyVu6tfJhZ0TdHUU8uCaEPLSklSzx98.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/La/LADi7AZEz3mtq7mQjXXlCBbH8oBk0bcj725-vayk2OA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Lr/lRRHJn2XRFri_mi2DOWJvLRhRAiM1YKh0hurFqvG87E.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ML/MLJfBFcV2AX5sApWFIAHm5Qm4kJIPo_l1P4V7hQrAFs.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MU/MUchbbk2TuTpAxTSBl03faiF7lM5jKcPso_YeoSqcx0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MW/MwyLb1ZP1_eaMijYv-iHTtfnrjTf4fbbbV0OH1epKTo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Nj/NjG05c2jA9Navxh1LFsBqDyPgpG9fiFk_RfLkWu-65Y.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Nm/nMWLxYY30O0E1hkbxV1FFweLkEB6VoFint77FrZJ3pw.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/OD/OD6SmOeQUB2AEmekz7U99o3nO2ioN9_cK36K99qBJ70.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/OD/oDYzF0n64vcUCyvZ5Fxgz2IFRxZVLBa1Qf7NvbP4Rj4.cache +4 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/OF/ofiLQRccxxIb-yC9v4M3_a-gs4kGHt6kvK9oh7bZyXc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Oh/OhWFXM9GuxBD1Yw5r1DnNgC_EUU0m41NsRdMN-cwaLE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ou/oUI7TzCsU_4rW2DtLQ3bkn1TiXdYAl4GXW9MBSS0vJ8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ou/oupue72yFp7MC2LCdPww-3HH00fR_6FjnvDpMDZCtqU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/P7/P7p2i0Sm3DJ3BZGKbialS5-rDXqxKIRt_Az1fRjq7Us.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Pg/PgxniuPvmdPnZe-YAxPqcbogt2k6ZDLnVbCiWgDxooI.cache +4 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Pr/prvtYXooSziuVaUF2LMJF0Uv4JfpTI6ip5I_tJPQE8Q.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ps/psCXHNyv38VAep2dJ0cTOdHQkS_MWXG-guuUVC8t4YI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Q3/Q3whiX7hWA6sHL4BaujPiVI1GQ6YWMNkxu74eBHZl3M.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QS/qS_9kKSqAOD1IsbS049t0luTxiGNgOkznsK63G29XbM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Qc/QCrLyf5oF6nlbHXmhp9hnfjMh1LcK07Z142GDLHKAjQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Qm/QmyRU9WjjNWdjkDsdr9j-NKCyspm6XzAUlTOrIZDlTc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/R5/r5VCnaIlCnfLuvjK6ube003OfLDh1fNrnSHONd9_ocU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RL/rlvpruq1is4grm3GrVv1n_01sNG2MhE9NUuoVeCdWrM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RR/RrlF5aR2LEJoimuYzeygpTdbqFDD2PqEMRStdtvBI8c.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RR/rrk_AkULRJpki1T-n6uQCY0y4JONQ0NEXWAFTxNwNNw.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RT/rT52RKB6g3HZeXb1SBwtrPzIMAi0kgVl4sCBTPJY2EY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Sg/SGrxaiHVJzOOBm0zKHYRC-0xnLVkqOBOpuN_oY_oOUc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/T8/t8310ngJo_JGf8ppMVuyfCaStzB6-shCkX0BSA9CcLg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TH/the1sdNgVTdgMnUinRhMI1WGI3QVETw3pm6KsU2fVMQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TO/To9HIgbxLeRcTRDDZ0ghnupZgaebrNoqdeFjshM3Tu4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Tf/TFHKQ4pT3CcgqUjDzLNhB15gpQkDaHi7pq6ZkJWCuDE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Tu/Tu_FRu6GxmhiowKn5FrH7vYvlCUHdkuWXr5vCz8xuAY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/U7/u7rm5QuAOWJaqKRxL8Of43KkpQdmhmEkVMc1ZvrGvK4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ud/UdUAfPcNU80Y1woqaYlbmxevwd-0qlchMQ6nPLsZBco.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/V2/V2Mr-gWWDkAqZQYmZZqjbFgqWFFb4bRQBKdzIoDNDFA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VT/VTpdpG8eJiAmc4ovAhpsyi2dHb8UZ6POiZ2bknhwemw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VT/vTD5XYvspxAwwGpKmRLROUvKa3Rn3m1IUxSx541orUQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Vl/Vlsm70pT87kfS0a8N036d_pas104--nq1o2oanQGIe8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WI/Wiw750s27MY7h_DJ5btWxNxiqgRLOsI7yjhIJQvhyXI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/W_/w_XNp6PrIPf5HHSYhtAViubTyyriYzfw0xt7a3emimk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XC/xCXzAN6gQCV7s-Ez1BT_fD5s_foJ0ARMam-3pKuiufY.cache +4 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XK/XkQcEEK4sCc3352uItx_Gh5M5ChASrRUxvh1K8kviKM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Xa/xah7XHL6JDUR9tCJIfx3DVDhbycwgDfntEdzOPgm__4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Y-/y-UZhd5FyaI3Hs3KvKtWFLeBAhKUNlZYlcBFzvlKEs0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Y6/y6ItwP5AI4LqD4hXfOQh5LqyI70rX6yy0QfUO10-9HM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/YZ/YZQch5dfmJMHMA819nM1lvaJNIrW1NPDlDWWNZEgGTY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZN/Znxtcq-ZTxzNLztrUr5qugSoCxTd-GWv73X2oF1x0ZM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZU/Zu3ZA7q9vQyo8d_LeMVGaY5OjwMBNr9K7OyOtKQwfKw.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZW/ZWEDoKOwn8uGSGpTnLq0zIlXZCd-lcZ3cReO5xZHS2M.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_-/_-YtNYD2M-58NbvNpYe7S-PDb63s_k0Ia0DXNyor2ls.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_-/_-_qJT08J1eTH_0Vg2UVZohSjv1i11mkKvnyweIvgwU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_1/_1dLc-fSiH4-ZGkYCSoW4WfK7njx8QYvpsT7d0iOOHw.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_7/_7STOiMb3GNnXCgsh82Vh8dSPK3TE5onjH773vl6quA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_f/_f7ipp2FPzR3B5xuwlQ0-QZacf0rvw8DNrTBpEqkwmg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_m/_MJSHrCWTUT8SZ71ih6F-HI5GGcJ7c2YwW8ERiIK5Tw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_v/_Vq5M5rhogfHHjIUiJbvr3TB6vqUBRwC_CttsZjNeu0.cache +7 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/a1/a1R0-5ycIuReJ4-fqbXk6fH2IdxW89a5kaevGv-Dml4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/aF/aFKOFyg5JLPd7cbF-MD0fFuV2fubfdz-yKKyXwsLl8s.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/aO/AohWZS-TPE-wjo80tb76OA6hA3TQQh4b7sJHv7LU6dI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/aq/aQoRtEOx37MRSLS7kP_4yDtmt0AiLLtU5bBN_GtJj8Y.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/b9/B98ns1UOJj2BI40YdrYj2AYpv2jnpcH5uY7caTMKUeo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bA/BaJKhJJLWg3gRQEGckI_F33ILRJvlBhQ9lgrgkGr4gM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bC/bC-NuzAGHhmfyMdEou8QaKV_od64DOu3CiatbX1zS7Y.cache +4 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bH/bhsmt8uMEM17fZf-7L8Tr21Qm7wp0wtNXXEbP48OsnE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/b_/b_Itlk9QZZd7Rvf8kcA4yLP1R5Acu7jB-m1xQiSU0qE.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bp/BpJfHs6Mo8lqlKf2TijySqZ444qek67RWzRwUen64vQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/c3/c3-rWf7UzoWjsYPy5EtXvv3ufQ8CIQ6Z-0kVS09lrDs.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cC/CcBfkGECwA5O7hQpkndgB0Hi90JOu69Ifjs6wSifP7o.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cH/ChcBt03RXtOFBODQDToOchKvzpr2dW6cMQ2HrmYPNq8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cH/cHerKTSfFWYybWwIjdgf4hdq0TMrmPhHgxlEFQ-dQb0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cO/CO5mDqDfmtiDa_MlTuMous_vC3vHyMfMCvG0iPr3oVo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cn/CNJKoiuv7BhPbbHegPk_Qktnz_JF6HQr35hNbw6s-RM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/d-/D-tuIWBYGuFafbtlGFsVUWuW1V532Zkwlhdc9YU_0_Q.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dK/dkEIzUkEZU4yDjWENPIb9mVQ6WLjulPZooIMhh0kjps.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dX/dX8QOFCLVNiDkCAiFD_PFv9d-Qo1wVbsDeLj4mtE4R0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eE/EEpwNSyxAZOsAaJa0FVJLqYX-D8EEzVXrqNADqSq1pg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eV/EVxtlJx2DKEnr7jM6G-nUsoSv7PuWNZ4HqxYV6G0LNE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eb/ebBZEqfj1_tXnSytXRHDulZ2qjRuj2jiuzALy71-p04.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ei/eI82uxHiRfJCRpat_t9RMiiro7Ggp0aaY6gS2RHhXIc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ew/EWvBebjHFMAPVeVD3tkNaDGv1De3T-L_N4DgqM7rPfA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ff/Fft1-kdQYW_lF9qeAgbnyv7nLFkLOug2kmkMt_lLSqA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/g3/G3sgs1Ax6Vk_2s37KNPp2-7IdFiT3LOWxMmlF7OUOuM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gL/gl9epGlvS8NGjkSvO3-Zv20gDWDOihgYl4zev3I4gzM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/go/gObqKgy_NGkfRMIq-hy2D3F82sXUz_xKrQXbW3ZgU5k.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gy/gYo6RbgaJKr4uO3yVeAwQh_fzXzR08K7lkURuVclXX4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/h-/H-wscVetDYgz1C6_9m_zX4Ubit9GpN41Qh36i61d49E.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hq/Hq6ThzYH1Jwap4RjDjkeXS6kh3_SwtUrbSk5u9-pPvQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hv/hvCWsDxXJW9jg2ULOdo9wcMcIiVXr1vPB-7RRCtj-Zg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hw/hWPXtikadUixtV_Vz7dJ5Yb8xdcJ6CC6pXuZKANgAVM.cache +4 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iI/iiw3Z6suXDviQSt5opMZ7iCTz8rrt7lWwxCYG-jOATY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jX/JXX-ip72L8uACavKSd8TQFVw6MQo63MyTadGeyddhj8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jd/JD6N31VqeGIaXMEqjkdDzYExPQxGK7Zi9aVAGYcHcVc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/k5/k5e6-CoVqmpM8jXJRwAaGn_fs_rOUvkz_8mXqHu8_ao.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/k6/k678AMTE8Rpt4M0p22vOGHuMydQhufi7r-XlrQU5p6Y.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kC/kCPTWFwWLADuE4b0kM5PUnetnYdoiFWVL7C91_RGlF0.cache +4 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kJ/KJUwoqIiuj-qpKpMy7k0S-voZVXPonJjx6cblKKdGKg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kL/klyYYLzIHrlg7rcBAWfk8RezPB9yU5qjkFJQgIMwyf4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kV/KvtETa0BMROOFrdvtIkDReAoRz0wHnGGw8RyXETCu5c.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kZ/KzoIWrb49pUv8dm_4xNPu5bj7CW1DraOTvLScFbTpSo.cache +4 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ko/koyJ5Xizwv3o0lnBTF0IsKiH-MnMN39MMDN9JYB_6kM.cache +4 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lB/lBP9PyX9X0z7Q3ChAOemieBBbC7fJE3IcmLcyBjT_fs.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nC/NcSCneaLBTHR1N_d6-NwYjql4r-jmQPEz5Wr6MadHio.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nL/Nl068pZS4lI4dvrWUTQVV3jz9IaH1sZonpVEyEd1cXo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nL/nLmYNs5vhdCsci9KiAHI6bx7jbgGCr_Ev7Bi5CSyTxc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nP/NpPldDHmBprTojKOz0ubr22DkyAkmWCjYgfi1jaUAH4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oG/oGUukVPniof9dUUrs5SqfHqCD80JYsgyYjLuHhYkm58.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ob/obVbAIR4nBUA03U9XbZV0AAeeBl434DzZ0vpqL4qC8w.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/on/on_VGtMCJXLwRJrs_mSYnTR-mpiLLOZHZE5u7W6wfbE.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pk/pkdw-Jgeclt9vajoQqiLRaBZZzhjXjJmfzp8ePPy1G0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qH/QhqfODycIGdVzQX8GRs-Ib6Pq1hGxqNYyLUGvZMM7os.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qb/qb67_izas1nixcQ-AauJdU9nn3EmIDDCKmYePp49rC8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ra/ray_bF5Ej18NZlHx_KQ3cYYeg7nEiYPzBT8WsdHNEmk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/s0/s08CnMSk3W06JZNTVEVqApJd8Vpz7TLOYFO9-6CsE2g.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/s0/s0e75axNmtNlRg8x1AcNxSSxmweSr5pxzu6tg21QGfk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/so/soDpZ_JUnPHmG0FYpI_47WgP1hsnLMxZPrVuNh3MGzg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sy/SYNvEuncguh0B7KSNy0mIfyZSkNlQVOOLPIV5h0ZLwA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/t4/t4fHClD6YGDsSKSJQNND8cK4DG59K4GrSawc9aFtIX0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tn/tnXjvHNgRK7H4M44cOtCkufshJoMKyGxD_3d85_P8io.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uE/uelCAlCK-JD31uF5SDtIbiNJzKNNS8wQjyf-rYxlEqA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uK/uk_pSKPoFIZcb3KkcV0BaPBUkiNJofSVmemhGLguLRQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uM/uMAAFlayLJ1Y44NPWXqXIQED5cpFgzqVlLPP5pYymoE.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ut/uThFl2m0GavTCT4pl2oDWqIBIn0yj9_PoqrYL1S76XQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ut/uTtJNzrVQtxdGXTkkbdGY_HyBs31WvuFNJRa1MKw1oA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ut/ut9R9B1Xb0I7LhpAEJGjlSe2VkwJlGyqP8EUJr8DwCw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vC/vcr2_BONXHi2_t_Sjhvg_Ucp1qY7qOARdnYyC9_qgEU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vZ/vZd7TqVpkThrX7nIZg2gMbl-EYQz4yX32509Kf4zI8g.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vg/vGz1YgkFiH3K3rkMCpUSjE-9ejQH7gheA_F0QTM4-Fk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vw/Vwb24w5R2fbGV6mwam0Zv3ChgVPqtoN2ycurQcbCUpE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wA/WaW9zL376Fd5jhAkSr65m-RaRMG7lqqaMnbbmJd2Roo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wA/WayDgcdBl8u7lmDWTD2G5LueoPHSmIVKsH11ouhvAvA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wS/Ws-va4f_EnxlLEeWHMcMeajnLKLNVzOV9mSnWNjxHsg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wV/WVAQnoAwhp9Ofx9devXpnnElvhZa9wQKf7C0bYOdm2s.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wx/wX40TRI0nDBMeklwhXEUi5g4cUL49_iRk1hM17pjF1A.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xI/xIIoLGg2-k4fy4TFbZ5W1VpEg4PvprGqgwAc_ok0a2E.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xg/xGKpJBeLDVoGW8seoyKcDkbUQHa7BxIiOsdbe0107OQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xl/XlVv4YODOAXqFR8rDkclOihevedZKkisiKA4UV7DIjo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xt/XTNQufvpZiYf099YZk14sezwCWcpSRJejvC_aG9Ibu4.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xt/xTMrRJs3k_JFBaRV3RLvDV8TYJPDNfK8D6WN627Bk6s.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/y7/Y7ykJL1z2RdshacFjZG6B5UvCj72YZYRUF2gJaF0rZg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yB/Ybbz_WJ213Nqi-aFaaQkGhRBlFbtkpF22qQgLe_1uog.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ya/yAUp6d65RN_WmANx7yBiiW_9tKgD3WcHJzuXyIPGfLo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yr/Yr3omw0q7iUD4-ZnhTEHnG5LAfO2ozUyIRYtTL9VyLY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yu/yuvUN0gcqkar9QF-yGu6G016_Qz1XCUVbZutajszLuo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zO/zO0GfKcnBb5wchGGaNXRkku6RZrukJm8oOv_9zWvC3A.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zQ/zQEso6LidPVvaY-mMDkB78rkEzrYmZEYHpFCoVC3xCc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/z_/z_9uUxYxAYgjlNpeinpDwugfQyMQSwnKgYcx-axV3u8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zi/ZiXkZ6gfSxNXmwzpX3-D8Gkr69W59cdAVYvE9E7KHl4.cache +1 -0
- data/spec/factories/cdx_seos.rb +13 -0
- data/spec/factories/cdx_settings.rb +1 -1
- data/spec/features/cdx/admin/login_spec.rb +15 -9
- data/spec/features/cdx/admin/pages_spec.rb +17 -0
- data/spec/features/cdx/admin/users_spec.rb +16 -0
- data/spec/helpers/cdx/admin/base_helper_spec.rb +37 -0
- data/spec/models/cdx/seo_spec.rb +13 -0
- data/spec/models/cdx/setting_spec.rb +1 -1
- data/spec/models/concerns/cdx/taxonomisable_spec.rb +24 -0
- data/spec/rails_helper.rb +17 -3
- data/spec/support/controller_macros.rb +12 -10
- data/spec/support/feature_macros.rb +12 -0
- metadata +566 -26
- data/app/models/cdx/attachment.rb +0 -6
- data/app/views/cdx/admin/devise/confirmations/new.html.erb +0 -16
- data/app/views/cdx/admin/devise/unlocks/new.html.erb +0 -16
- data/config/locales/devise.en.yml +0 -64
- data/config/locales/simple_form.en.yml +0 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 63d9635903d244298f5cf669827925fe464a589a
|
4
|
+
data.tar.gz: f0af518b0aa2f4d2d10b7ba5dbee82e6d00f183d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a500b1dec26eff9486b39cf615f17b1a7e495419307f18c39ee3bc906bc0f1766d6243cba6ea81d732cd8ba220572cfb886178436f7247e75ae99d62b6b7fe2
|
7
|
+
data.tar.gz: 1c5f36825c444d898d717d26317fe3e6e9af40cf9cc26b4d3be40aea5fe620d040a0781615612d48ec96ea7b57fa0059d0ca86b2c97b99bbabcdc0f1e17acf34
|
data/README.md
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
# Cdx
|
2
2
|
|
3
|
-
[![Build Status](https://travis-ci.
|
3
|
+
[![Build Status](https://travis-ci.org/alexandre025/cdx.svg?branch=master)](https://travis-ci.org/alexandre025/cdx)
|
4
4
|
[![Gem Version](https://badge.fury.io/rb/cdx.svg)](https://badge.fury.io/rb/cdx)
|
5
5
|
[![Dependency Status](https://gemnasium.com/badges/github.com/alexandre025/cdx.svg)](https://gemnasium.com/github.com/alexandre025/cdx)
|
6
|
+
[![Test Coverage](https://codeclimate.com/github/alexandre025/cdx/badges/coverage.svg)](https://codeclimate.com/github/alexandre025/cdx/coverage)
|
6
7
|
|
7
8
|
Cdx is a rails 5.1.x engine which provide a ready to use admin panel with some components such as static pages, resource controller, multi-site, models translations, assets uploading, user management...
|
8
9
|
|
@@ -10,7 +11,7 @@ Cdx is a rails 5.1.x engine which provide a ready to use admin panel with some c
|
|
10
11
|
Add this line to your application's Gemfile:
|
11
12
|
|
12
13
|
```ruby
|
13
|
-
gem 'cdx',
|
14
|
+
gem 'cdx', '0.0.4'
|
14
15
|
```
|
15
16
|
|
16
17
|
And then execute:
|
@@ -0,0 +1,15 @@
|
|
1
|
+
Cdx.ready(function () {
|
2
|
+
|
3
|
+
$('.theme-selector').on('select2:select', function (e) {
|
4
|
+
var theme = e.params.data.id;
|
5
|
+
|
6
|
+
var $body = $('body');
|
7
|
+
|
8
|
+
$body.removeClass(function (index, className) {
|
9
|
+
return className.indexOf('skin-') >= 0 ? className : ''
|
10
|
+
});
|
11
|
+
|
12
|
+
$body.addClass('skin-'+theme);
|
13
|
+
});
|
14
|
+
|
15
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
.form-horizontal .radio { margin-right: 15px; display: inline-block; }
|
@@ -1,9 +1,11 @@
|
|
1
1
|
module Cdx
|
2
2
|
module Admin
|
3
3
|
class BaseController < Cdx::ApplicationController
|
4
|
+
include Cdx::ControllerHelpers::Locale
|
5
|
+
|
4
6
|
layout 'cdx/admin'
|
5
7
|
|
6
|
-
|
8
|
+
helper_method :meta_title
|
7
9
|
|
8
10
|
def authenticate_admin_user!
|
9
11
|
if admin_user_signed_in?
|
@@ -13,16 +15,36 @@ module Cdx
|
|
13
15
|
end
|
14
16
|
end
|
15
17
|
|
16
|
-
|
18
|
+
def meta_title
|
19
|
+
if current_settings.meta_title
|
20
|
+
"#{current_settings.meta_title} | Admin"
|
21
|
+
else
|
22
|
+
"Admin#{current_settings.acronym}"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def current_ability
|
27
|
+
if try(:current_admin_user)
|
28
|
+
controller_name_segments = params[:controller].split('/')
|
29
|
+
controller_name_segments.pop
|
30
|
+
controller_namespace = controller_name_segments.join('/').camelize
|
17
31
|
|
18
|
-
|
19
|
-
I18n.locale = current_settings.default_locale || I18n.default_locale
|
32
|
+
@current_ability ||= Ability.new(current_admin_user, controller_namespace, Cdx::Site.current)
|
20
33
|
end
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
21
37
|
|
22
38
|
def flash_message(object, action, context)
|
23
39
|
object_name = object.class.name.demodulize.downcase
|
24
40
|
flash[context] = t("admin.flash.#{object_name}.#{action}.#{context}", default: t("admin.flash.default.#{action}.#{context}", n: object_name.capitalize))
|
25
41
|
end
|
42
|
+
|
43
|
+
protected
|
44
|
+
|
45
|
+
def action
|
46
|
+
action_name.to_sym
|
47
|
+
end
|
26
48
|
end
|
27
49
|
end
|
28
50
|
end
|
@@ -5,6 +5,8 @@ module Cdx
|
|
5
5
|
|
6
6
|
before_action :load_resource
|
7
7
|
|
8
|
+
before_action :authorize_admin
|
9
|
+
|
8
10
|
helper_method :member_action?, :new_object_url, :edit_object_url, :object_url, :collection_url, :parent_collection_url, :parent_object_url, :edit_parent_object_url
|
9
11
|
|
10
12
|
def index
|
@@ -70,16 +72,21 @@ module Cdx
|
|
70
72
|
def load_resource
|
71
73
|
if member_action? # Load member action
|
72
74
|
@object ||= load_resource_instance
|
73
|
-
|
75
|
+
authorize! action, @object
|
76
|
+
instance_variable_set("@#{resource.object_name}", @object)
|
74
77
|
else # Load collection
|
75
78
|
@collection ||= collection
|
76
|
-
|
79
|
+
instance_variable_set("@#{controller_name}", @collection)
|
77
80
|
end
|
78
81
|
end
|
79
82
|
|
80
83
|
def collection
|
81
84
|
return parent.send(controller_name) if parent_data.present?
|
82
|
-
model_class.
|
85
|
+
if model_class.respond_to?(:accessible_by)
|
86
|
+
model_class.accessible_by(current_ability, action)
|
87
|
+
else
|
88
|
+
model_class.where(nil)
|
89
|
+
end
|
83
90
|
end
|
84
91
|
|
85
92
|
def resource
|
@@ -89,7 +96,7 @@ module Cdx
|
|
89
96
|
end
|
90
97
|
|
91
98
|
def load_resource_instance
|
92
|
-
if new_actions.include?
|
99
|
+
if new_actions.include? action
|
93
100
|
build_resource
|
94
101
|
elsif params[:id]
|
95
102
|
find_resource
|
@@ -120,7 +127,7 @@ module Cdx
|
|
120
127
|
def parent
|
121
128
|
if parent_data.present?
|
122
129
|
@parent ||= parent_data[:model_class].send(:find_by, parent_data[:find_by].to_s => params["#{resource.model_name}_id"])
|
123
|
-
|
130
|
+
instance_variable_set("@#{resource.model_name}", @parent)
|
124
131
|
else
|
125
132
|
nil
|
126
133
|
end
|
@@ -143,7 +150,7 @@ module Cdx
|
|
143
150
|
end
|
144
151
|
|
145
152
|
def member_action?
|
146
|
-
!collection_actions.include?
|
153
|
+
!collection_actions.include? action
|
147
154
|
end
|
148
155
|
|
149
156
|
def new_object_url(options = {})
|
@@ -198,6 +205,10 @@ module Cdx
|
|
198
205
|
def location_after_save
|
199
206
|
collection_url
|
200
207
|
end
|
208
|
+
|
209
|
+
def authorize_admin
|
210
|
+
authorize! action, model_class
|
211
|
+
end
|
201
212
|
end
|
202
213
|
end
|
203
214
|
end
|
@@ -2,6 +2,17 @@ module Cdx
|
|
2
2
|
class ApplicationController < ActionController::Base
|
3
3
|
protect_from_forgery with: :exception
|
4
4
|
|
5
|
+
include Cdx::ControllerHelpers::Seo
|
5
6
|
include Cdx::ControllerHelpers::Settings
|
7
|
+
|
8
|
+
def current_ability
|
9
|
+
if try(:current_user)
|
10
|
+
controller_name_segments = params[:controller].split('/')
|
11
|
+
controller_name_segments.pop
|
12
|
+
controller_namespace = controller_name_segments.join('/').camelize
|
13
|
+
|
14
|
+
@current_ability ||= Ability.new(current_user, controller_namespace, Cdx::Site.current)
|
15
|
+
end
|
16
|
+
end
|
6
17
|
end
|
7
18
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Cdx
|
2
|
+
class StaticController < ApplicationController
|
3
|
+
before_action :load_object, only: :show
|
4
|
+
|
5
|
+
# We don't provide routes for this controller, you'll need to define your own routing logic.
|
6
|
+
def show
|
7
|
+
begin
|
8
|
+
render "cdx/static/custom/#{@object.template}"
|
9
|
+
rescue ActionView::MissingTemplate
|
10
|
+
render :show
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def load_object
|
17
|
+
@object = Page.with_state(:published).friendly.find(params[:id])
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -8,7 +8,7 @@ module Cdx
|
|
8
8
|
def theme_class
|
9
9
|
if current_admin_user&.theme && !current_admin_user.theme.blank?
|
10
10
|
"skin-#{current_admin_user.theme}"
|
11
|
-
elsif current_settings
|
11
|
+
elsif current_settings.default_theme
|
12
12
|
"skin-#{current_settings.default_theme}"
|
13
13
|
else
|
14
14
|
'skin-yellow'
|
@@ -30,38 +30,48 @@ module Cdx
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def link_to_new(options = {})
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
if can? :new, @object.class
|
34
|
+
url = options[:url] || new_object_url
|
35
|
+
options[:class] = 'btn-sm btn-info pull-right'
|
36
|
+
link_to url, options do
|
37
|
+
fa_icon(:plus) + ' ' + t('admin.actions.new')
|
38
|
+
end
|
37
39
|
end
|
38
40
|
end
|
39
41
|
|
40
42
|
def link_to_show(resource, options = {})
|
41
|
-
|
42
|
-
|
43
|
-
|
43
|
+
if can? :show, resource
|
44
|
+
url = options[:url] || object_url(resource)
|
45
|
+
options[:class] = 'btn-sm btn-success'
|
46
|
+
link_to fa_icon(:eye), url, options
|
47
|
+
end
|
44
48
|
end
|
45
49
|
|
46
50
|
def link_to_edit(resource, options = {})
|
47
|
-
|
48
|
-
|
49
|
-
|
51
|
+
if can? :edit, resource
|
52
|
+
url = options[:url] || edit_object_url(resource)
|
53
|
+
options[:class] = 'btn-sm btn-info'
|
54
|
+
link_to fa_icon(:pencil), url, options
|
55
|
+
end
|
50
56
|
end
|
51
57
|
|
52
58
|
def link_to_delete(resource, options = {})
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
+
if can? :destroy, resource
|
60
|
+
url = options[:url] || object_url(resource)
|
61
|
+
options[:class] = %w(btn-sm btn-danger)
|
62
|
+
options[:data] ||= {}
|
63
|
+
options[:data][:method] ||= :delete
|
64
|
+
options[:data][:confirm] ||= resource&.content_header_title ? t('admin.ujs_confirm.delete', o: resource.content_header_title) : t('admin.ujs_confirm.default')
|
65
|
+
link_to fa_icon(:trash), url, options
|
66
|
+
end
|
59
67
|
end
|
60
68
|
|
61
69
|
def link_to_return(options = {})
|
62
|
-
|
63
|
-
|
64
|
-
|
70
|
+
if can? :index, @object.class
|
71
|
+
url = options[:url] || collection_url
|
72
|
+
options[:class] = %w(btn btn-default)
|
73
|
+
link_to t('admin.actions.return'), url, options
|
74
|
+
end
|
65
75
|
end
|
66
76
|
end
|
67
77
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Cdx
|
2
|
+
class Ability
|
3
|
+
include CanCan::Ability
|
4
|
+
|
5
|
+
class_attribute :abilities
|
6
|
+
self.abilities = Set.new
|
7
|
+
|
8
|
+
def self.register_ability(ability)
|
9
|
+
abilities.add(ability)
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.remove_ability(ability)
|
13
|
+
abilities.delete(ability)
|
14
|
+
end
|
15
|
+
|
16
|
+
def initialize(user, controller_namespace, current_site = Site.current)
|
17
|
+
clear_aliased_actions
|
18
|
+
|
19
|
+
if controller_namespace == 'Cdx::Admin'
|
20
|
+
|
21
|
+
if user.is_admin?
|
22
|
+
can :manage, :all
|
23
|
+
end
|
24
|
+
|
25
|
+
else
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
Ability.abilities.merge(abilities_to_register).each do |clazz|
|
30
|
+
merge clazz.new(user, controller_namespace, current_site)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def abilities_to_register
|
37
|
+
[]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module Cdx
|
2
|
+
class Asset::Seo::OgImage < Asset
|
3
|
+
has_attached_file :attachment,
|
4
|
+
styles: { thumb: '600x315^', regular: '1200x630^' },
|
5
|
+
url: '/cdx/seo/og_image/:id/:style/:basename.:extension',
|
6
|
+
path: ':rails_root/public/cdx/seo/og_image/:id/:style/:basename.:extension',
|
7
|
+
convert_option: { all: '-strip -crop -gravity center -auto-orient' }
|
8
|
+
|
9
|
+
include Cdx::ImageAsset
|
10
|
+
end
|
11
|
+
end
|
data/app/models/cdx/page.rb
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
module Cdx
|
2
|
+
class Seo < ApplicationRecord
|
3
|
+
belongs_to :record, polymorphic: true, optional: true
|
4
|
+
|
5
|
+
# Assets
|
6
|
+
has_one_attached :og_image, 'Asset::Seo::OgImage'
|
7
|
+
|
8
|
+
store_accessor :meta, :meta_title, :meta_description, :meta_keywords, :meta_canonical
|
9
|
+
store_accessor :og, :og_title, :og_description, :og_keywords, :og_video
|
10
|
+
|
11
|
+
after_validation :normalize_blank_values
|
12
|
+
|
13
|
+
def normalize_blank_values
|
14
|
+
attributes['meta'].each do |column, value|
|
15
|
+
self['meta'][column].present? || (self['meta'][column] = nil)
|
16
|
+
end
|
17
|
+
attributes['og'].each do |column, value|
|
18
|
+
self['og'][column].present? || (self['og'][column] = nil)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/app/models/cdx/setting.rb
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
module Cdx
|
2
2
|
class Setting < ApplicationRecord
|
3
|
+
include Cdx::SeoSupport
|
4
|
+
|
5
|
+
# Constants
|
6
|
+
|
7
|
+
AVAILABLE_THEMES = %w(black-light black blue-light blue green-light green purple-light purple red-light red yellow-light yellow).freeze
|
8
|
+
|
3
9
|
# Validators
|
4
10
|
|
5
11
|
validates :acronym, :default_theme, :default_locale, presence: true
|
@@ -15,7 +21,7 @@ module Cdx
|
|
15
21
|
end
|
16
22
|
|
17
23
|
def self.current
|
18
|
-
Setting.first_or_create(acronym: 'CDX', default_theme:
|
24
|
+
Setting.first_or_create(acronym: 'CDX', default_theme: AVAILABLE_THEMES.last, default_locale: 'en', available_locales: Cdx.available_locales)
|
19
25
|
end
|
20
26
|
end
|
21
27
|
end
|