stenographer-rails 0.6.5 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/stenographer/admin/links_controller.rb +64 -0
- data/app/controllers/stenographer/admin_controller.rb +1 -0
- data/app/models/stenographer/change.rb +0 -2
- data/app/models/stenographer/link.rb +7 -0
- data/app/views/stenographer/admin/index.html.erb +7 -0
- data/app/views/stenographer/admin/links/edit.html.erb +38 -0
- data/app/views/stenographer/admin/links/index.html.erb +38 -0
- data/app/views/stenographer/admin/links/new.html.erb +32 -0
- data/app/views/stenographer/admin/links/show.html.erb +32 -0
- data/app/views/stenographer/changes/index.html.erb +15 -2
- data/config/routes.rb +2 -0
- data/db/migrate/20181204190243_create_stenographer_links.rb +10 -0
- data/lib/generators/stenographer/templates/config/initializers/stenographer.rb +6 -0
- data/lib/stenographer-rails.rb +2 -0
- data/lib/stenographer/outputs/base_output.rb +1 -0
- data/lib/stenographer/version.rb +1 -1
- data/spec/controllers/stenographer/admin/authentications_controller_spec.rb +2 -2
- data/spec/controllers/stenographer/admin/changes_controller_spec.rb +5 -5
- data/spec/controllers/stenographer/admin/links_controller_spec.rb +173 -0
- data/spec/controllers/stenographer/admin/outputs_controller_spec.rb +5 -5
- data/spec/controllers/stenographer/admin_controller_spec.rb +8 -3
- data/spec/controllers/stenographer/authentications_controller_spec.rb +7 -0
- data/spec/controllers/stenographer/changes_controller_spec.rb +4 -4
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/schema.rb +8 -1
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +5302 -0
- data/spec/dummy/log/test.log +77853 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-N/-NJzBVdgeX19yMifVfZU4LtMI2TGeJ9TkurzQM2HXug.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-x/-xNnp6j_VEwrjCRU-hnLmUvGPqApK2VfXv-Up6R2tYo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0-/0-kzlBt9RD7hQYw3VEC-Wi2eB5FD3_SgMg0RSnjXWGQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0o/0oS3Au2Xq6WP3Zn7HgW9gIy_4TY0bqhGJXx3CKXsuDQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1U/1U3ekVoGdHXDYyeUnmk944CHeQKeslt_C0CG269KWj8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1w/1wnX0K0zk0on8q4emQYf3rBHjp4tgf3wsuAnQG51GvM.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2B/2B5uwIRf1Fso4dLbSAq5Sdyvgj4A0cevOCUFBLwo0gM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2s/2st8v4TDq62lxdSNuGz_iaqh2iW6F0kUsJG0hPvWj2Q.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2w/2wGVTVFMa4bt9U_iR4eKsRFzWuHwyutCzD6Ld19QdQw.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/32/3201WG-bEgcptSslglD0M7Nl4luqk66HYBy3n5J0rnU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3H/3HlIgEKbFV0UBp3_XkJn6264ePCpSVHOxoj5N1bcZLQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3K/3KXE6baGmtTa3Hmf6RzKOf5FHqZvUUv6DaOHTLB_b9k.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4R/4RMOqnmEAE-PtnZoWKHKHDd8yAni_hmYQMHRwSq-uZ0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4U/4Uw8wZbDte0QyT7MjshIBU_9ECnFXu6c_vbYEAR4M2c.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4_/4_UTzAJHyHT0WBxpt445HGX7RP1ptKvynLIWEFdaeHk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5Y/5Y3mCuZtMgVcuh8wmwRoh4i2iwuQjfQQiLiMCnMHpXg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5d/5d6TuZ5_yTWG35Vb7syy92du0O5XlC_zW-BLV1ZI3Ww.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6d/6dJren9KGhdXxqSIBHto4s6qoonz4e55G9p5_6uJA7w.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6i/6IvOSdEuvGgol8DnUVtMT1s4IdxlsceyHndbebYriZc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6k/6khgfXRd7jHnsBJdxbl5lNIo9J0udS3cs_VI0QKpfoo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6w/6wKmJqcHjBsl9YZp6MECj68XIOOJ7R770cEZ-iwqdi8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6y/6y3w3nk0J_hD8AQZoPACGi3QWe89XcQZJ-liHBQMrH0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7y/7yuXKZu-1F0d1qKHGKus2VgzEDOf8tBEX6qdtzOjh2A.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7z/7zvU5MEok9MnXCyM_e0icay22pkO1LVwSh8SiGMim4Q.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/85/85gq-ETvmz5K6rX1ILFtV9IoDz-Z_wQqvtL5aJzg8Kc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8b/8b_zPrGQgHaPZZnaEyHEF0tQRv03X02BQMnAdqXKV20.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8e/8e1840KshWeyU6Q5fgSoaTQQEdm6WWtK87N_Rf8ZvKo.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8g/8g7w6Xg80wTa6H1XvYNUGvywTAC2-8JiJp7yKFftYZo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8i/8i2lKjLN5z2a_-FxHIRujIugQ_nX-Nz_5nFIhrpIHD8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9D/9DM5TVfvwLWWTiOPN2hEfg8xWfH46uPZ_voF7QOAfkw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9S/9Surlmbs84jPg9eZeFchblETbbSUJIlEAtMxz_t_h-o.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9e/9EbIvGIgB0Xjq8_SAGOMQw3w2wjC7MAft1IUrfFMQh8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AD/AD6HFzVIDGLR9qdwMw312XNGlCvCgySD85BDBbSKHpw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AP/APQcJdq3VoNbo8xRgg2hc6rsyq2694Jn08_YSFvD1TI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ag/aG04dSNldD_3oyXF2gKPyvKwiwruBI7SdHoW_i6YBc4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ar/ARjrQ7AgXFKZgjQc7slG6bLenSR_be_E6eyWPJhiW3o.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ar/ArVNvzZVWwDLDi1bm0jjYll1adcM1Z5auK4bznXWKgM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bd/bDf105jw4qsBCy6LEZYY7MYifFKnjnWrh4yTgn49fk8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bd/bDmgD2lqBMEHQ22tB2_dTgAj4pM1E2g9VxSp8uiU6mg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Be/be7UdEDkS6THiko76eKZdb8h9pR25bf82lRVy3AJeRI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Cq/Cqrx1RYZtDaT0aLTGo46w7drof5CI1xAAL4NS64z9Ig.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Cu/CuCZyvQOc_O_Mna5VVNMfM3aDuFkPtaCWEI6QKShA54.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DQ/DQE1OHSJGGwW2CcImPks6H_nfgY85ykGLgF0pQu2o4M.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Dr/Drhlnxk5piASfMOrgsqglgYx12aluIPH1rWyHeiSdIM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EP/EPqM-0EnW5olg9jidQPr41Usw5c7GAQ2narcneLLNkI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/El/El8DR6YJKHo_6a7uVWaZGpfagyxItMbq10Y3r0zG19I.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Eo/EojMquJwOBmoatkiCJkARpnKmgvLlpfjnG0PtdFnOdc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/F2/F2fL1Tu_c0A8C7rmOa06x__AgpuU_jazNCM6bUqavKQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FX/FXNmfjghzhYM6NWY9tXv3Q0nUSX-Ym6jJjcC0Kfgtb0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fe/FeoK_HXgz9XQ9QzcnT6f8E6QHE40iEOO5Q1xhmOAe64.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fm/Fm-g3a-oZYM64P3Wgtq13EnMJJxuDqPP2pustHKhXj0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fm/fmNgQe_EYt_RrRIBVm1rIrqRj2wOiKXEmaxY_is6k7w.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ge/GeqokwiUkRgNOFa7vPhON4rAOezo8VXcQqpr2Ma3lM0.cache +1 -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/HF/HF73Vpxn93qBBTUObphLrADq4trz13nNCwWYIplkHb8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HG/HGPvpqJH96Kvx2DF8wkkuqhSUzsqBQ1mIE-AyteNmI8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Hr/Hr6IWZlvMj_OqZDH4U1zBLOvFAbE9gGeVsyuZwaVaGs.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ht/HT23gstm0l1qloUREYd4pbtPvBHV9_l20NNXhJoheeo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ht/HtUBi_Q98sZ4EJVThLKOlj-S9nZsZ4x9HbvEXIODtHw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Hy/HyzQWd4FQ-zvAUB2WQmwRndxOhLiWgjumqonKkkdkB4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/IU/IUbsNcPeaCQT-nbMId9lCA2uFovnwjVA6CAZjN_o5Ro.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/IU/iu0MM_-XCpsS2KlfuHIKlX8WKLkgOHGblMAf0Fp7gy4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/IW/IWJaM3ZKNwBz0WV7Gaae0gapb5z0BWmpnjNoj7u2tNY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Im/iM5JaONDs_bFhfuewT8JT87KboLLY6Mw-QwvU1lz95w.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ip/IPv7l3BsvV_PBAoDUJuP5b6Lf6mxemdCviN5-2BrPO0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Iv/ivMhbm1phjvFldJPovWpyISH1vrzTHRK4hw_EGXyyLA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Jk/JkGeHAxLw8bmqt2jwhsc_Ojxzu8aGKxNt5ZsK-ZJZ8U.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Kx/KXoBQ7MvFdFLMTVGbgyp3RgOQ6zwB9cFrzRqKFdplGc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LI/lIFqY_l_MA5v-BDzhGJNIH4-cReE7_DFdW0IgqnMaek.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LJ/Lj3YLMqLI6h4ZUObv5FlPfDjyOho5APrMetItBnPkwY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LY/LYKeT7VwcCCvGQ7ByIRA1MG3Tk0GP_IIQptf0Gc1l1E.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/M7/M7VbEL7yv0oRtRd_fNS7QPqTZn0lUuvTvl546gYKhvA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MA/MAqyobNGZdW6E7Zhx8ioJ3oRZL3jPPtXJPqkUqrYpB8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MS/MS0NKXPSnMSDNWwZMCSNyPp2mW5twRMkgz0WyPZMavw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MU/MUSVvSkjXNa6kO3u0cyG13FYIU3OMKN49w5dBFBKnR8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NC/NCz7OTlbVUGGaLbsQNmCClvfKVhrCdG7Kg3IwkdkmMQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NV/NvBbJtU9p2ruUSDHS4DvjyIYoAKWeMiHwBtXnwRFC-g.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Nl/nLiw9DJC-uIHE5OIs0inmbkOeRvbCBzF3PrEMXDEhZU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/OT/OTpqZb-eWBVl8CVlioDr5eHkr5ATNBoALeA8P1DC7xA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Oa/OAKEYc0PVj9QdQlgzNGHYJOstVjxTMgjwmoYAHVFiUI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Om/oMD1x_v6mLtgkOTZJqX0vi_oy1O8uAueE0NuocbwV2I.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/PP/PPkQtFBVScijLllHAQ54QbBGTGMPD2Mex1WlA2WDYMc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ph/PhjQoKc065DOibXsUB6YacDh88WYeRbgtQMxZNCNH34.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Po/PoGdDBvYlxXK8vThUtfu51od89X9MN8WZ_w2mV7WkVM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Pw/pWf_3op53LccOYkKEpLx3RKatQpPWEDG3wbVLzcFvQQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QT/qt6L3SFmxOEX_2NHVbcyzSESyBfgtMQVWjSbMcMarfw.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Qs/Qsnkjr28NxlpfV-pm7RSCUpo_sJjGVhYu_hza4xAFrQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Qv/QvipndC9gyFQctrj2PaUCZz-gbyZb4iKY4y8PjQMjq8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RQ/RQxCsTSEo5Man6mBL_YrrTLYmBeQtzabnaH0lVLsueY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Rj/Rjzp4wQ6OGyxkhQ1h5tY0-SApKcdPlknjQre0GSypOw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SD/SDdgCZWuPZGrHyVCE1-_I2svvtHYhkwl09aaByIvHE0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Sp/SppldlBIGAhZWFolg3RUTQeqUHCzcFTnuGkJJm7P-Ww.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TP/TP8qJaCZazHSP04zcIfmcl1fiAj5Ir0k5ieh3KbW0z0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TP/tpjceDw69YoXZSP_aWWBs7iNUc3r19fdH1kTeo2ZWO4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TQ/TQ2QHdC_MxZEAeSvUlXn1GyQI-5ORLZ3Ii61HxJr12k.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/T_/T_NKFz9Eo-Iv6IIuruh5tBc8jwaxTIw4xmL9A7OgXjg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Tr/TREMo1l-a_F26N8FfHvT07B6QWzAmrW3m2fOpZLZoJw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Tr/TrQxz3A2KH7EV_xDjLmm5aDlJZuXHZ2c79Wr00Gorms.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ts/TsGqImoSxqGgBkvRlCGWdoyxcYlmoidBfGSAxbov5TI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ts/tsotrxnfjhOkszeaC2b945--xuiaB6l5XnnExwxY-3g.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Tt/tTthSuikRHoGMkok_Z7ywjuhIBT8kDbo-D8AwY1Uhpk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ud/UDaCOfUIbV1LKHaq_eD7E8HFy4u8gX6z1_4sRnDFeAU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ud/UdvDAb75IWUMTS5JJ9CCeY3PPCID1_uac2GGKzmIfnQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Um/UmszeUx5I89fG8EJ0lodVEnRbPASW_7mnDniCLjGe7U.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Um/uMqiviiuntbE6ldib6YQvwz2ScRl8VuBzpjM-dSAoEE.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/V_/v_Q44QfWtfFUNrJi0lbA3h8f4CFQol5XlD1YW-jyaJQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Va/VA7h0HmCB3QmRKhduAqgWlZfDFeAOOTXLJtAo5UqmYw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Vs/VsWn8Db_n1AC7K3sU6IsbTss9bkL3LMBA6w-vrY1WIg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Vy/Vy07J90LgLJbjJBRPi_UiUGO_kIpEUi8Zs15wQFKtKo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/W7/W7ho6sqtxm6N-7ygIzqyU-G1Aa6JCAacTQ2wnQecT1w.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WL/WLe_Rgkeu_HthdBUfpw3vHUt_5CQ6owJMrpkz8tRp38.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WL/wl5FMGHQBrAcwD2Qo4c8h16bktUz9tA0F_YiKyNHFQ8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WM/WM5Zlvi2-LpitmMnl805tvVjgF7N39ZzJpvTIxgJNFk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/We/wEr3XRUajmsB5psHLHeatm4ZB2HNAb_NyB32CYwytZk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XF/XFY4kND_VZCbw7ed6zRxKSkZOjLfUzqs6i5lFHJgFyA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Xe/Xe167vqCtDOT_tYTfk4BpYNr9-KI9dAF3RoGPlD1jHo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Xx/XxxhwqaLpCOzOa0ZRf9Habg5zJxdCPBgOGxCcrTLq8U.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yc/YcZZVuTV-mMyrPvQgt4ZeIQ3WpGIO1wOAwuai7C5llM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yr/YrIMJQQa_i-vd8lvmqooJBi1hdZwSLz7K3oLr_y1I4Y.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yt/YtLa0Rs7w7dBTfgbUFRB37ag-V2uLErwnG-CyTKJ8xI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yu/Yu47tM6NFYqebO7-nQ2xzfH0JL8T4URbgw0CyT1-C0U.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Zn/ZnM67LM3I-vm7e8xTTtC58Z4pGCPNSV_qyvE7lMNe_Q.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_S/_SUAxZReuOtor3EWSerH7tLkiIq-dZW7barL5Zknmmg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/a7/a7QVH4vJDdReMyJZQlTeWHSnN1ebgNv7yYo9SFmz2Ws.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/aI/aI-pwpVduvbZnIDoZozWq2FjbWF9aKfMkX92k-KBFzA.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/aT/aTMLT63xWDAtej-RkV3-1Hfj0GVQll5sPI6a32gVXbQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bV/bVNyFwEVhVCs2j92-7uNzsItQC1uQoirg-dUCbBD86Y.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bo/bo-5EqLnedZZVyL4O5L2-2wVvQxageShYJlaD389fmk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cw/cwKiskAvKdyIAnphhcR76jympE7nq2nCkDmhNXc7sq4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dE/dE92zRWfWZM7GM_tRX2uz1vgXvH9ypUU5mYpq85Krbs.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dM/dMxpyeeVHGNwa5_fkMZtG06ALwiLXZjSgL90a9tubds.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ez/ezwpbWpEZp8yzIHi1R_PGQhx7o_LL2g1cOk2C_hCWXE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/f0/f0PHIYqWlfobuBGuR81kqFEA6_y2dPV3C4DjRRSbmmc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/f1/F1z5Q2qEBeEWVQhYIHZdrdZqw10Te0zrQYb1ZJ8vt7g.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fB/fBypBap2YI5i-5tfJGA9VA5ENj6Z3Eo_xxY8PZol__U.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fJ/FjXKsCtXF0Flg0gTsc-t_ijhnRofpDXm2wjLXCiPLeA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gQ/gQ5arm9fAn1c3dDI7fTwmJKlONCeOAT9SY5K9VwYe5E.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gm/gmqUlHjHyH4cdIVkOf1LgQr32LjIbwSKserZPG68Jxc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/h1/h14p7xKbgMg4oqYsqEWcZtCXjyOdzFSYuWIAMpCL_XI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/h3/H3vpW_R34zC9tiYDdxAvfRIalORwK1fzclmHpVtyuas.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/h8/h8UDAz9rZPc5RWDvANx6qO06q8kwEHOYy_GsbR_5LlU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hX/hXaYiGmhCsMJvVcbq9fL2JIkvCgcPRRPslqnqOOdrr4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/he/hePaQ-bNurFgpMqL94nKNiPmtFiYrOac7qVsfGYehaE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hp/hpq6l25IAOm-1pCB4VzAii-sUSRXN_k2YMUnrBIsVdU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iK/iKqqwfRne46--SCWDhjfpIh81M57EvEKk_SusDozJC4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jB/Jbd4yIHCoo4YcDipE4SBYr1chsse5SsHiOgoX_FFqJs.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jO/JoaTIYztvMBDo-52WV6FpByFjZ95X2iak9cVSs2gCDs.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jY/jYH4TfuQNIW4_e4mkDZZez2kWHzx2_1DFFDzWrrL5LQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jf/jfNiIeMqJV2Da1o-dDDmhtI_PC8jO4QiSUe86KsFv10.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kD/kDDhVcwnbmuJTQqGTMOpDetyAw_y2rS94UqlKvm8nPI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/l3/l3oHA25y1HRHvYXJD9Qa4YN4L9ukd7966POKnU4zOII.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/l6/l6R2UaWanwV8TLPIus9rAsz5giFhN9YooEqEkATbwfo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lS/lStvx9Beg2l4s8L-QdTSKuc5_qQPQAZPnIcRI7JkpPE.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lV/LVG4TP2eHnmZUTQ4MapERX5EpdkSN23PEfOlCtkxhgI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lX/lXobljUdyKvSCQFBkWsg0HqNN13K1KK6Phu7R6zXnfc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lX/lXuTDiiLhYx549EiG8VaTztJL99Kn0b3wzXzxU8l-bg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lZ/LZsYy-IJEKyv1nTkheOZFRXF2gJdcqeHqQs-Cf4br28.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lm/lm_GASxLrvnbcQig3PG9pckUDYwTmp2pXpgMlEhaY0M.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/md/mDTuU6cjv5pbP7ktdHbyI_C7Pgr-T_keshIiZC9lF3k.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/md/mdIglFm_MzxL3T_krilZkuPt3KxaObEtQa5dMPkap5c.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mf/mfTz86G82BhzXNafz1dOYueTZ-26jwzhe1ru-FBoFI4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mj/mjCpqS2i9mcS_TVE7XUuKUfw45erKNA-N8JCwxwt2ZY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mr/MRl7hFVnlcLPoGXlWHTyamyR4zteOsoYP6-5ywvgB24.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mr/mrunwIcu_UWEF9tGLjeJf-o-7AhdFNYD2EVk9DYJtPs.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mt/mth9Zth9IC1MA3HpdVpn1abuarlrbELBqEnoSVmpVPI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/n5/N5WJIrYQOLDWZtKM6xVOMZNWI31j8Y8JvspHQ0HnYvg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/n_/n_xYqQYhwEMQknb3jFQnjlxxBE9TzMNHCdJ-bEyZFIw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nn/nn-GFyLDFDfh5fTtlzd80qUZ_fC8bnNPQ0ATfhgYJoI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nx/nxTv3sKVUQZADJyM3dPaVmUA78MIsMLD_K279yN_GsI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oG/OGp1HLzJUvRXOPvxFtBXi159SvIQSOnxKbPM-QI_kMs.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oH/oH8hZuBcabqmmBKN7K4ZXD0C_RBgnpcLVd-qYOzkHtk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/o_/o_updb8j2R7alRH5xqFqCOhu0NTi7s_TB9oGI2LwjdY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oq/OQxewUCjiAzkB_XVxqI7PMweczG-4269kN2gECTb7g4.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pD/pdIaOd2GrAZm9iH3NwhSjVmiTeiUadOdyZ67PqsAxl4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pD/pdcAoYttYLH9Ytx2HpDc0oykQXSwcWUv-jYiADRpPLI.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pR/PrmKhf1EgyJ0dB54-jQJMVX1OAbEVVyNjxH01pXKORI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pn/pn92PluSw2sBs_xY_eVNqze30vjvT8-vlKtKIwyatQE.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ru/ru8C9lwCwd5P580s3UzYpzzCuFUwK4nvEzO2eN5WSBk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sL/sL1Wbjgdwzedv8DLnC_jcjoex2VP8lOXOPmTSKVO6Yc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sW/Swv1AgTWwNGQ3ufZvC0O-Dve_GxZ1dwX6FndhT5GUbY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sW/sWrq8Ez3eBuUERekFfm2dswP4Dqc9suWsS0FW_Zw53c.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uG/uGvQ4KO33vMprvgq8QCqaSfGMaRr-MGPnaSx5utJQ2E.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uJ/uJGiAOHiB-gWWh5E8Fzes_PeN6_Fo9N8nig2doZuym8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uR/uRcccU9h7MarNKZtHrVppJdGLIqZQSBTGy5t_TF85MM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uY/Uy7SOKocTxdGQLmDj2EJ6aMeYmuEyIo0Ku-qBUl4C4Q.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uZ/UzmOni_z0UgZF7cq3LY3MMtgg_JYFLc9mNNPqmwqpk8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/v6/v6bbSLGLStc9RBGhtWK3e0wrL9RHwVzFqLHM6m95g1g.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/v9/v9TaEIxU84P63ZdrnLjVhqPLcHHAN8Cs5EBPa14BM6I.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vq/vqJHJ4uAvnk2fIQ4yx46UC2otLEcKJ-OaT_tHtsNHSM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/w4/w4ixYiCZ2aA_eI42mGcl3edOU0ck9FZLsMCtLTRss9A.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wh/whb90Kc7rs06I8wgE4IjKh3jdCV7SXszZoD-kEKD1AA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wi/win_v0ZNu-l7AoRx8w3ls1xcy0mUExLBVMCSr5oaJFc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/x1/X1XET6WWshO5-8RFuTK6NKUvbAx7WFxCbQlSw4qAEOc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xW/xWiYvQWsq7HdKpbj5B0h7clRICkyLFvgcm1y60h5eMo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xa/xAKg9YCt4VDiDN51kXIyIbyGhWSzyhQQPqRnkpJyNVs.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xl/xlTdB6VSfCTlDnXPfEAMSxibWDXdmp9O9CFAviFl2JQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/y5/y5cHf4KuUwoeBb4LupHm6J0shxN4nS4I0q_sA-0GMrg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yS/YsfaJuW2OobGLIgilo9TbCueeXfzSY1n4Fk7uDHIlwM.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yS/yS_JjkODUpvC2p-_pGS5zYTcv5E1eF776rlwOrHmFx8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zo/zosgkqrG3B3VVb8DZflJGaujiqnINs7W1wmqWna5RYI.cache +2 -0
- data/spec/factories/stenographer/authentication_factory.rb +2 -2
- data/spec/factories/stenographer/change_factory.rb +6 -6
- data/spec/factories/stenographer/link_factory.rb +8 -0
- data/spec/factories/stenographer/output_factory.rb +1 -1
- data/spec/lib/stenographer/inputs/github_input_spec.rb +3 -3
- data/spec/lib/stenographer/outputs/slack_output_spec.rb +3 -3
- data/spec/models/stenographer/authentication_spec.rb +2 -2
- data/spec/models/stenographer/change_spec.rb +33 -33
- data/spec/models/stenographer/link_spec.rb +13 -0
- data/spec/models/stenographer/output_spec.rb +4 -4
- metadata +342 -13
- data/spec/controllers/stenographer/application_controller_spec.rb +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1bc2c77c61de8c6c527defa8dd115feca280188b5930506fa4ca7a1efd357b6
|
4
|
+
data.tar.gz: 66610d82bfc775102e211715a9437ab8fb691a16d0d79afa96276e2746197fd3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 940704eada9b65c4fa5b3b7c6f05f658c98d208630ffa541d7000a9d76fb0d8a8771a3125b392721fe1e829836c59feef13611d831afbd49b5315521d1b18ff3
|
7
|
+
data.tar.gz: cb05f2bf0fbd31facc83019ca9d075317fd197b67b9c4668169a817543fdb68cff5dff44ad23db59f41eeedc4e299cd471a5080894c08c32ef9d5699f6f6e88d
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_dependency 'stenographer/application_controller'
|
4
|
+
|
5
|
+
module Stenographer
|
6
|
+
class Admin::LinksController < ApplicationController
|
7
|
+
before_action :assign_link, only: %i[show edit update destroy]
|
8
|
+
|
9
|
+
def new
|
10
|
+
@link = Link.new
|
11
|
+
end
|
12
|
+
|
13
|
+
def create
|
14
|
+
@link = Link.new(link_params)
|
15
|
+
|
16
|
+
if @link.save
|
17
|
+
redirect_to admin_link_path(@link), notice: 'Link Created'
|
18
|
+
else
|
19
|
+
flash.now[:alert] = @link.errors.full_messages.to_sentence
|
20
|
+
render :new
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def index
|
25
|
+
page = params[:page] || 1
|
26
|
+
@links = Link.order(created_at: :desc).paginate(page: page, per_page: Stenographer.per_page)
|
27
|
+
end
|
28
|
+
|
29
|
+
def show; end
|
30
|
+
|
31
|
+
def edit; end
|
32
|
+
|
33
|
+
def update
|
34
|
+
message = {}
|
35
|
+
|
36
|
+
if @link.update(link_params)
|
37
|
+
message[:notice] = 'Link Updated'
|
38
|
+
|
39
|
+
redirect_to admin_link_path(@link), message
|
40
|
+
else
|
41
|
+
flash.now[:alert] = @link.errors.full_messages.to_sentence
|
42
|
+
render :edit
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def destroy
|
47
|
+
if @link.destroy
|
48
|
+
redirect_to admin_links_path, notice: 'Link Destroyed'
|
49
|
+
else
|
50
|
+
redirect_to admin_link_path(@link), alert: @link.errors.full_messages.to_sentence
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def link_params
|
57
|
+
params.require(:link).permit(:url, :description)
|
58
|
+
end
|
59
|
+
|
60
|
+
def assign_link
|
61
|
+
@link = Link.find(params[:id])
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -22,6 +22,13 @@
|
|
22
22
|
<%= link_to 'Manage Outputs', admin_outputs_path, class: 'button' %>
|
23
23
|
</div>
|
24
24
|
</div>
|
25
|
+
<div class="tile is-parent">
|
26
|
+
<div class="tile is-child box notification is-warning">
|
27
|
+
<p class="title">Links</p>
|
28
|
+
<p class="subtitle"><%= pluralize(@link_count, 'Link') %></p>
|
29
|
+
<%= link_to 'Manage Links', admin_links_path, class: 'button' %>
|
30
|
+
</div>
|
31
|
+
</div>
|
25
32
|
</div>
|
26
33
|
</div>
|
27
34
|
</section>
|
@@ -0,0 +1,38 @@
|
|
1
|
+
<section class="section">
|
2
|
+
<div class="container">
|
3
|
+
<h1 class="title">
|
4
|
+
Edit Link #<%= @link.id %>
|
5
|
+
</h1>
|
6
|
+
|
7
|
+
<h2 class="subtitle">
|
8
|
+
<%= link_to 'Show', admin_link_path(@link.id) %>
|
9
|
+
|
|
10
|
+
<%= link_to 'Delete', admin_link_path(@link), :method => :delete, :data => { :confirm => 'Are you sure you want to delete this Link?' } %>
|
11
|
+
</h2>
|
12
|
+
|
13
|
+
<%= form_for @link, url: admin_link_path(@link), method: :patch do |f| %>
|
14
|
+
<div class="field">
|
15
|
+
<div class="control">
|
16
|
+
<%= f.label :url, class: 'label' %>
|
17
|
+
<%= f.text_field :url, class: 'input' %>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<div class="field">
|
22
|
+
<div class="control">
|
23
|
+
<%= f.label :description, class: 'label' %>
|
24
|
+
<%= f.text_field :description, class: 'input' %>
|
25
|
+
</div>
|
26
|
+
</div>
|
27
|
+
|
28
|
+
<div class="field is-grouped">
|
29
|
+
<div class="control">
|
30
|
+
<%= f.submit 'Update Link', class: 'button is-link' %>
|
31
|
+
</div>
|
32
|
+
<div class="control">
|
33
|
+
<%= link_to('Back', admin_link_path(@link.id), class: 'button is-text') %>
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
<% end %>
|
37
|
+
</div>
|
38
|
+
</section>
|
@@ -0,0 +1,38 @@
|
|
1
|
+
<section class="section">
|
2
|
+
<div class="container">
|
3
|
+
<h1 class="title">
|
4
|
+
Link Admin
|
5
|
+
</h1>
|
6
|
+
|
7
|
+
<h2 class="subtitle">
|
8
|
+
<%= link_to 'New Link', new_admin_link_path %>
|
9
|
+
</h2>
|
10
|
+
|
11
|
+
<table class="table is-fullwidth is-striped">
|
12
|
+
<thead>
|
13
|
+
<tr>
|
14
|
+
<th>ID</th>
|
15
|
+
<th>URL</th>
|
16
|
+
<th>Description</th>
|
17
|
+
</tr>
|
18
|
+
</thead>
|
19
|
+
<tbody>
|
20
|
+
<% @links.each do |link| %>
|
21
|
+
<tr>
|
22
|
+
<td><%= link_to(link.id, admin_link_path(link.id)) %></td>
|
23
|
+
<td><%= link.url %></td>
|
24
|
+
<td>
|
25
|
+
<%= link_to 'View', admin_link_path(link.id), class: 'button is-small' %>
|
26
|
+
<%= link_to 'Edit', edit_admin_link_path(link.id), class: 'button is-small' %>
|
27
|
+
<%= link_to 'Delete', admin_link_path(link.id), class: 'button is-small is-danger', :method => :delete, :data => {:confirm => 'Are you sure you want to delete this Change?'} %>
|
28
|
+
</td>
|
29
|
+
</tr>
|
30
|
+
<% end %>
|
31
|
+
</tbody>
|
32
|
+
</table>
|
33
|
+
|
34
|
+
<div class="changes-pagination">
|
35
|
+
<%= will_paginate @links, renderer: BulmaPagination::Rails %>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
</section>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<section class="section">
|
2
|
+
<div class="container">
|
3
|
+
<h1 class="title">
|
4
|
+
Admin New Link
|
5
|
+
</h1>
|
6
|
+
|
7
|
+
<%= form_for @link, url: admin_links_path(@link), method: :post do |f| %>
|
8
|
+
<div class="field">
|
9
|
+
<div class="control">
|
10
|
+
<%= f.label :url, class: 'label' %>
|
11
|
+
<%= f.text_field :url, class: 'input' %>
|
12
|
+
</div>
|
13
|
+
</div>
|
14
|
+
|
15
|
+
<div class="field">
|
16
|
+
<div class="control">
|
17
|
+
<%= f.label :description, class: 'label' %>
|
18
|
+
<%= f.text_field :description, class: 'input' %>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<div class="field is-grouped">
|
23
|
+
<div class="control">
|
24
|
+
<%= f.submit 'Create Link', class: 'button is-link' %>
|
25
|
+
</div>
|
26
|
+
<div class="control">
|
27
|
+
<%= link_to('Back', admin_links_path, class: 'button is-text') %>
|
28
|
+
</div>
|
29
|
+
</div>
|
30
|
+
<% end %>
|
31
|
+
</div>
|
32
|
+
</section>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<section class="section">
|
2
|
+
<div class="container">
|
3
|
+
<h1 class="title">
|
4
|
+
Link #<%= @link.id %>
|
5
|
+
</h1>
|
6
|
+
|
7
|
+
<h2 class="subtitle">
|
8
|
+
<%= link_to 'Edit', edit_admin_link_path(@link.id) %>
|
9
|
+
|
|
10
|
+
<%= link_to 'Delete', admin_link_path(@link), :method => :delete, :data => { :confirm => 'Are you sure you want to delete this Link?' } %>
|
11
|
+
</h2>
|
12
|
+
|
13
|
+
<div class="field">
|
14
|
+
<label class="label">Date</label>
|
15
|
+
<div><%= @link.created_at.strftime('%m/%d/%Y') %></div>
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<div class="field">
|
19
|
+
<label class="label">URL</label>
|
20
|
+
<div><%= @link.url %></div>
|
21
|
+
</div>
|
22
|
+
|
23
|
+
<div class="field">
|
24
|
+
<label class="label">Description</label>
|
25
|
+
<div><%= @link.description %></div>
|
26
|
+
</div>
|
27
|
+
|
28
|
+
<div class="field">
|
29
|
+
<%= link_to('Back', admin_links_path, class: 'button is-link') %>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
</section>
|
@@ -1,6 +1,18 @@
|
|
1
1
|
<section class="section">
|
2
2
|
<div class="container">
|
3
|
-
<
|
3
|
+
<nav class="panel">
|
4
|
+
<p class="panel-heading"><%= Stenographer.link_section_name %></p>
|
5
|
+
|
6
|
+
<div class="columns is-gapless is-multiline is-mobile">
|
7
|
+
<% Stenographer::Link.all.each do |link| %>
|
8
|
+
<div class="column is-one-third">
|
9
|
+
<span class="panel-block">
|
10
|
+
<%= link_to(link.description, link.url) %>
|
11
|
+
</span>
|
12
|
+
</div>
|
13
|
+
<% end %>
|
14
|
+
</div>
|
15
|
+
</nav>
|
4
16
|
|
5
17
|
<% if @change_count.positive? %>
|
6
18
|
<% date_groups = @changes.group_by_week { |change| change.created_at } %>
|
@@ -8,9 +20,10 @@
|
|
8
20
|
<% date_groups.sort { |group1, group2| group2[0] <=> group1[0] }.each do |date_group| %>
|
9
21
|
<article>
|
10
22
|
<% date_group_date = date_group[0] %>
|
23
|
+
<% readable_group_date = date_group_date.strftime('%B %e, %Y') %>
|
11
24
|
<% date_group_results = date_group[1] %>
|
12
25
|
|
13
|
-
<p class="title is-4 has-text-centered">Week of <%=
|
26
|
+
<p class="title is-4 has-text-centered">Week of <%= readable_group_date %></p>
|
14
27
|
<div>
|
15
28
|
<% change_type_groups = date_group_results.group_by(&:change_type) %>
|
16
29
|
|
data/config/routes.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
Stenographer::Engine.routes.draw do
|
4
|
+
resources :links
|
4
5
|
resources :changes, only: %i[index show], constraints: Stenographer::RoutingConstraints::ViewerOnly.new
|
5
6
|
resources :changes, only: %i[create] # Created separately because we don't want it behind the routing constraints
|
6
7
|
|
@@ -12,6 +13,7 @@ Stenographer::Engine.routes.draw do
|
|
12
13
|
resources :authentications, only: %i[index show destroy], constraints: Stenographer::RoutingConstraints::ManagerOnly.new
|
13
14
|
resources :changes, constraints: Stenographer::RoutingConstraints::ManagerOnly.new
|
14
15
|
resources :outputs, constraints: Stenographer::RoutingConstraints::ManagerOnly.new
|
16
|
+
resources :links, constraints: Stenographer::RoutingConstraints::ManagerOnly.new
|
15
17
|
end
|
16
18
|
|
17
19
|
get '/auth/:provider', to: 'authentications#create', as: :authentication # Used so we can access authentication_path('provider')
|
@@ -53,6 +53,12 @@ Stenographer.configure do |config|
|
|
53
53
|
# config.parser = 'Stenographer::Inputs::GithubInput'
|
54
54
|
config.parser = 'Stenographer::Inputs::GithubInput'
|
55
55
|
|
56
|
+
# Display name for the links section on the index
|
57
|
+
#
|
58
|
+
# Example:
|
59
|
+
# config.link_section_name = 'Useful Links'
|
60
|
+
config.link_section_name = 'Useful Links'
|
61
|
+
|
56
62
|
# ====================================================================================================================
|
57
63
|
#
|
58
64
|
# GitHub Parser Configuration
|
data/lib/stenographer-rails.rb
CHANGED
@@ -31,6 +31,7 @@ module Stenographer
|
|
31
31
|
mattr_accessor :parser
|
32
32
|
mattr_accessor :tracked_branches
|
33
33
|
mattr_accessor :branch_mapping
|
34
|
+
mattr_accessor :link_section_name
|
34
35
|
|
35
36
|
self.app_name = 'Stenographer'
|
36
37
|
self.app_icon = nil
|
@@ -49,6 +50,7 @@ module Stenographer
|
|
49
50
|
self.parser = 'Stenographer::Inputs::GithubInput'
|
50
51
|
self.tracked_branches = %w[master work]
|
51
52
|
self.branch_mapping = { master: 'production', work: 'staging' }
|
53
|
+
self.link_section_name = 'Useful Links'
|
52
54
|
end
|
53
55
|
|
54
56
|
def self.configure(&block)
|
data/lib/stenographer/version.rb
CHANGED
@@ -12,7 +12,7 @@ describe Stenographer::Admin::AuthenticationsController, type: :controller do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
describe 'individual behaviors' do
|
15
|
-
before
|
15
|
+
before do
|
16
16
|
index_action
|
17
17
|
end
|
18
18
|
|
@@ -44,7 +44,7 @@ describe Stenographer::Admin::AuthenticationsController, type: :controller do
|
|
44
44
|
end
|
45
45
|
|
46
46
|
describe 'individual behaviors' do
|
47
|
-
before
|
47
|
+
before do
|
48
48
|
show_action
|
49
49
|
end
|
50
50
|
|
@@ -13,7 +13,7 @@ describe Stenographer::Admin::ChangesController, type: :controller do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
describe 'individual behaviors' do
|
16
|
-
before
|
16
|
+
before do
|
17
17
|
new_action
|
18
18
|
end
|
19
19
|
|
@@ -75,7 +75,7 @@ describe Stenographer::Admin::ChangesController, type: :controller do
|
|
75
75
|
end
|
76
76
|
|
77
77
|
describe 'individual behaviors' do
|
78
|
-
before
|
78
|
+
before do
|
79
79
|
index_action
|
80
80
|
end
|
81
81
|
|
@@ -104,7 +104,7 @@ describe Stenographer::Admin::ChangesController, type: :controller do
|
|
104
104
|
end
|
105
105
|
|
106
106
|
describe 'individual behaviors' do
|
107
|
-
before
|
107
|
+
before do
|
108
108
|
show_action
|
109
109
|
end
|
110
110
|
|
@@ -124,7 +124,7 @@ describe Stenographer::Admin::ChangesController, type: :controller do
|
|
124
124
|
end
|
125
125
|
|
126
126
|
describe 'individual behaviors' do
|
127
|
-
before
|
127
|
+
before do
|
128
128
|
edit_action
|
129
129
|
end
|
130
130
|
|
@@ -144,7 +144,7 @@ describe Stenographer::Admin::ChangesController, type: :controller do
|
|
144
144
|
end
|
145
145
|
|
146
146
|
describe 'individual behaviors' do
|
147
|
-
before
|
147
|
+
before do
|
148
148
|
update_action
|
149
149
|
end
|
150
150
|
|
@@ -0,0 +1,173 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
describe Stenographer::Admin::LinksController, type: :controller do
|
4
|
+
routes { Stenographer::Engine.routes }
|
5
|
+
|
6
|
+
let!(:first_link) { create(:link, created_at: 2.weeks.ago) }
|
7
|
+
let!(:newer_link) { create(:link, created_at: 1.week.ago) }
|
8
|
+
|
9
|
+
describe '#new' do
|
10
|
+
def new_action(opts = {})
|
11
|
+
get :new, params: { }.merge(opts)
|
12
|
+
end
|
13
|
+
|
14
|
+
describe 'individual behaviors' do
|
15
|
+
before do
|
16
|
+
new_action
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'assigns @link' do
|
20
|
+
expect(assigns(:link)).not_to be_nil
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'renders the new page' do
|
24
|
+
expect(response).to render_template(:new)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '#create' do
|
30
|
+
def create_action(opts = {})
|
31
|
+
post :create, params: { link: { url: 'https://catchandrelease.com', description: 'Clearances and Licensing' } }.merge(opts)
|
32
|
+
end
|
33
|
+
|
34
|
+
describe 'individual behaviors' do
|
35
|
+
describe 'success' do
|
36
|
+
it 'creates the record' do
|
37
|
+
expect do
|
38
|
+
create_action
|
39
|
+
end.to change(Stenographer::Link, :count).by(1)
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'redirects to the admin path' do
|
43
|
+
create_action
|
44
|
+
|
45
|
+
expect(response).to redirect_to(admin_link_path(Stenographer::Link.last))
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe 'failure' do
|
50
|
+
it 'does not create the record' do
|
51
|
+
expect do
|
52
|
+
create_action(link: { url: nil })
|
53
|
+
end.not_to change(Stenographer::Link, :count)
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'redirects to the admin path' do
|
57
|
+
create_action(link: { url: nil })
|
58
|
+
|
59
|
+
expect(response).to render_template(:new)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe '#index' do
|
66
|
+
def index_action(opts = {})
|
67
|
+
get :index, params: {}.merge(opts)
|
68
|
+
end
|
69
|
+
|
70
|
+
describe 'individual behaviors' do
|
71
|
+
before do
|
72
|
+
index_action
|
73
|
+
end
|
74
|
+
|
75
|
+
describe 'links' do
|
76
|
+
it 'assigns @links' do
|
77
|
+
expect(assigns(:links)).not_to be_nil
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'includes all links' do
|
81
|
+
expect(assigns(:links)).to include(first_link)
|
82
|
+
expect(assigns(:links)).to include(newer_link)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
describe 'order' do
|
87
|
+
it 'created at desc' do
|
88
|
+
expect(assigns(:links)).to match_array([newer_link, first_link])
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe '#show' do
|
95
|
+
def show_action(opts = {})
|
96
|
+
get :show, params: { id: first_link.id }.merge(opts)
|
97
|
+
end
|
98
|
+
|
99
|
+
describe 'individual behaviors' do
|
100
|
+
before do
|
101
|
+
show_action
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'assigns @change' do
|
105
|
+
expect(assigns(:link)).to eq(first_link)
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'renders the show page' do
|
109
|
+
expect(response).to render_template(:show)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe '#edit' do
|
115
|
+
def edit_action(opts = {})
|
116
|
+
get :edit, params: { id: first_link.id }.merge(opts)
|
117
|
+
end
|
118
|
+
|
119
|
+
describe 'individual behaviors' do
|
120
|
+
before do
|
121
|
+
edit_action
|
122
|
+
end
|
123
|
+
|
124
|
+
it 'assigns @link' do
|
125
|
+
expect(assigns(:link)).to eq(first_link)
|
126
|
+
end
|
127
|
+
|
128
|
+
it 'renders the edit page' do
|
129
|
+
expect(response).to render_template(:edit)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
describe '#update' do
|
135
|
+
def update_action(opts = {})
|
136
|
+
patch :update, params: { id: first_link.id, link: { description: 'GitHub' } }.merge(opts)
|
137
|
+
end
|
138
|
+
|
139
|
+
describe 'individual behaviors' do
|
140
|
+
before do
|
141
|
+
update_action
|
142
|
+
end
|
143
|
+
|
144
|
+
it 'updates the record' do
|
145
|
+
expect(first_link.reload.description).to eq('GitHub')
|
146
|
+
end
|
147
|
+
|
148
|
+
it 'redirects to the admin change path' do
|
149
|
+
expect(response).to redirect_to(admin_link_path(first_link))
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
describe '#destroy' do
|
155
|
+
def destroy_action(opts = {})
|
156
|
+
delete :destroy, params: { id: first_link.id }.merge(opts)
|
157
|
+
end
|
158
|
+
|
159
|
+
describe 'individual behaviors' do
|
160
|
+
it 'destroys the record' do
|
161
|
+
expect do
|
162
|
+
destroy_action
|
163
|
+
end.to change(Stenographer::Link, :count).by(-1)
|
164
|
+
end
|
165
|
+
|
166
|
+
it 'redirects to the admin path' do
|
167
|
+
destroy_action
|
168
|
+
|
169
|
+
expect(response).to redirect_to(admin_links_path)
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|