how_to 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (398) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +56 -0
  3. data/Rakefile +40 -0
  4. data/app/assets/javascripts/how_to/application.js +21 -0
  5. data/app/assets/javascripts/how_to/chosen.jquery.min.js +10 -0
  6. data/app/assets/javascripts/how_to/jquery.localScroll.min.js +7 -0
  7. data/app/assets/javascripts/how_to/jquery.scrollTo.min.js +7 -0
  8. data/app/assets/javascripts/how_to/jquery.treeview.js +256 -0
  9. data/app/assets/stylesheets/how_to/application.css.scss +28 -0
  10. data/app/assets/stylesheets/how_to/bootstrap_and_overrides.css.scss +3 -0
  11. data/app/assets/stylesheets/how_to/chosen-sprite.png +0 -0
  12. data/app/assets/stylesheets/how_to/chosen-sprite@2x.png +0 -0
  13. data/app/assets/stylesheets/how_to/chosen.css +440 -0
  14. data/app/assets/stylesheets/how_to/images/ajax-loader.gif +0 -0
  15. data/app/assets/stylesheets/how_to/images/file.gif +0 -0
  16. data/app/assets/stylesheets/how_to/images/folder-closed.gif +0 -0
  17. data/app/assets/stylesheets/how_to/images/folder.gif +0 -0
  18. data/app/assets/stylesheets/how_to/images/minus.gif +0 -0
  19. data/app/assets/stylesheets/how_to/images/plus.gif +0 -0
  20. data/app/assets/stylesheets/how_to/images/treeview-black-line.gif +0 -0
  21. data/app/assets/stylesheets/how_to/images/treeview-black.gif +0 -0
  22. data/app/assets/stylesheets/how_to/images/treeview-default-line.gif +0 -0
  23. data/app/assets/stylesheets/how_to/images/treeview-default.gif +0 -0
  24. data/app/assets/stylesheets/how_to/images/treeview-famfamfam-line.gif +0 -0
  25. data/app/assets/stylesheets/how_to/images/treeview-famfamfam.gif +0 -0
  26. data/app/assets/stylesheets/how_to/images/treeview-gray-line.gif +0 -0
  27. data/app/assets/stylesheets/how_to/images/treeview-gray.gif +0 -0
  28. data/app/assets/stylesheets/how_to/images/treeview-red-line.gif +0 -0
  29. data/app/assets/stylesheets/how_to/images/treeview-red.gif +0 -0
  30. data/app/assets/stylesheets/how_to/jquery.treeview.css +74 -0
  31. data/app/controllers/how_to/application_controller.rb +18 -0
  32. data/app/controllers/how_to/contents_controller.rb +67 -0
  33. data/app/controllers/how_to/faq_controller.rb +12 -0
  34. data/app/controllers/how_to/sections_controller.rb +69 -0
  35. data/app/helpers/how_to/application_helper.rb +4 -0
  36. data/app/helpers/how_to/faq_helper.rb +73 -0
  37. data/app/models/how_to/admin_user.rb +13 -0
  38. data/app/models/how_to/content.rb +32 -0
  39. data/app/models/how_to/section.rb +29 -0
  40. data/app/models/how_to/translation_util.rb +70 -0
  41. data/app/views/how_to/contents/_form.html.erb +84 -0
  42. data/app/views/how_to/contents/edit.html.erb +1 -0
  43. data/app/views/how_to/contents/index.html.erb +24 -0
  44. data/app/views/how_to/contents/new.html.erb +1 -0
  45. data/app/views/how_to/contents/show.html.erb +22 -0
  46. data/app/views/how_to/faq/show.html.erb +294 -0
  47. data/app/views/how_to/sections/_form.html.erb +33 -0
  48. data/app/views/how_to/sections/edit.html.erb +1 -0
  49. data/app/views/how_to/sections/index.html.erb +24 -0
  50. data/app/views/how_to/sections/new.html.erb +1 -0
  51. data/app/views/how_to/sections/show.html.erb +18 -0
  52. data/app/views/layouts/how_to/_messages.html.erb +8 -0
  53. data/app/views/layouts/how_to/_navigation.html.erb +13 -0
  54. data/app/views/layouts/how_to/application.html.erb +37 -0
  55. data/config/routes.rb +6 -0
  56. data/db/migrate/20130602053453_create_how_to_sections.rb +24 -0
  57. data/db/migrate/20130602054608_create_how_to_contents.rb +19 -0
  58. data/lib/generators/how_to/config_generator.rb +16 -0
  59. data/lib/generators/how_to/layout_generator.rb +18 -0
  60. data/lib/generators/how_to/templates/how_to_config.rb +22 -0
  61. data/lib/generators/how_to/view_generator.rb +18 -0
  62. data/lib/how_to/config.rb +28 -0
  63. data/lib/how_to/engine.rb +6 -0
  64. data/lib/how_to/version.rb +3 -0
  65. data/lib/how_to.rb +5 -0
  66. data/lib/tasks/how_to_tasks.rake +4 -0
  67. data/test/dummy/Gemfile +10 -0
  68. data/test/dummy/Gemfile.lock +99 -0
  69. data/test/dummy/README.rdoc +261 -0
  70. data/test/dummy/Rakefile +7 -0
  71. data/test/dummy/app/assets/javascripts/application.js +15 -0
  72. data/test/dummy/app/assets/javascripts/mercury.js +452 -0
  73. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  74. data/test/dummy/app/controllers/application_controller.rb +11 -0
  75. data/test/dummy/app/controllers/mercury/images_controller.rb +19 -0
  76. data/test/dummy/app/helpers/application_helper.rb +2 -0
  77. data/test/dummy/app/models/mercury/image.rb +20 -0
  78. data/test/dummy/app/views/layouts/application.html.erb +24 -0
  79. data/test/dummy/config/application.rb +59 -0
  80. data/test/dummy/config/boot.rb +10 -0
  81. data/test/dummy/config/database.yml +25 -0
  82. data/test/dummy/config/environment.rb +5 -0
  83. data/test/dummy/config/environments/development.rb +37 -0
  84. data/test/dummy/config/environments/production.rb +67 -0
  85. data/test/dummy/config/environments/test.rb +37 -0
  86. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  87. data/test/dummy/config/initializers/how_to_config.rb +24 -0
  88. data/test/dummy/config/initializers/inflections.rb +15 -0
  89. data/test/dummy/config/initializers/mime_types.rb +5 -0
  90. data/test/dummy/config/initializers/secret_token.rb +7 -0
  91. data/test/dummy/config/initializers/session_store.rb +8 -0
  92. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  93. data/test/dummy/config/locales/en.yml +5 -0
  94. data/test/dummy/config/routes.rb +10 -0
  95. data/test/dummy/config.ru +4 -0
  96. data/test/dummy/db/development.sqlite3 +0 -0
  97. data/test/dummy/db/migrate/20130603072752_create_mercury_images.rb +11 -0
  98. data/test/dummy/db/schema.rb +72 -0
  99. data/test/dummy/log/development.log +106646 -0
  100. data/test/dummy/public/404.html +26 -0
  101. data/test/dummy/public/422.html +26 -0
  102. data/test/dummy/public/500.html +25 -0
  103. data/test/dummy/public/favicon.ico +0 -0
  104. data/test/dummy/public/system/images/1/medium/Screen_Shot_2013-05-06_at_6.29.38_PM.png +0 -0
  105. data/test/dummy/public/system/images/1/original/Screen_Shot_2013-05-06_at_6.29.38_PM.png +0 -0
  106. data/test/dummy/public/system/images/1/thumb/Screen_Shot_2013-05-06_at_6.29.38_PM.png +0 -0
  107. data/test/dummy/script/rails +6 -0
  108. data/test/dummy/tmp/cache/assets/C19/4E0/sprockets%2F219d43b8396c33bb4240973157007f24 +0 -0
  109. data/test/dummy/tmp/cache/assets/C19/D70/sprockets%2F95f2176b2b35403940711067337fbc45 +0 -0
  110. data/test/dummy/tmp/cache/assets/C1C/A50/sprockets%2Fb27680619545e2251675251c81add803 +0 -0
  111. data/test/dummy/tmp/cache/assets/C1C/DC0/sprockets%2F31508f01060b491632f88871b8e623b5 +0 -0
  112. data/test/dummy/tmp/cache/assets/C26/080/sprockets%2F1f84666985c2e58230720b6a0816690c +0 -0
  113. data/test/dummy/tmp/cache/assets/C40/E80/sprockets%2F2af83092b21ef2934135b7a236125337 +0 -0
  114. data/test/dummy/tmp/cache/assets/C5E/2B0/sprockets%2Fd9466820c7fe7b5560267047c99d3043 +0 -0
  115. data/test/dummy/tmp/cache/assets/C5F/100/sprockets%2F3d006c41992dfd6b18734767a3996373 +0 -0
  116. data/test/dummy/tmp/cache/assets/C65/E00/sprockets%2F59263637894c92e6b5984a836a070a7d +0 -0
  117. data/test/dummy/tmp/cache/assets/C73/F80/sprockets%2F4a349df390e3102cd0541f5134691f16 +0 -0
  118. data/test/dummy/tmp/cache/assets/C77/6C0/sprockets%2F60816c23d175e00efa553a243858e443 +0 -0
  119. data/test/dummy/tmp/cache/assets/C78/EB0/sprockets%2Fc40031016afbe9392d5f83a338784531 +0 -0
  120. data/test/dummy/tmp/cache/assets/C7D/5D0/sprockets%2F4f93b9638caa8a81d618613101425c74 +0 -0
  121. data/test/dummy/tmp/cache/assets/C80/F10/sprockets%2F9811065040254626554af8fec7ea457a +0 -0
  122. data/test/dummy/tmp/cache/assets/C82/830/sprockets%2F0395cf08d0467ef31121a7979af25436 +0 -0
  123. data/test/dummy/tmp/cache/assets/C86/3B0/sprockets%2Ff15dd1dd27696f7053014106759d668a +0 -0
  124. data/test/dummy/tmp/cache/assets/C87/D80/sprockets%2Ff5bda9c45df08608635772529b415154 +0 -0
  125. data/test/dummy/tmp/cache/assets/C89/7F0/sprockets%2Fc583d687e94a56de8691613ed0351150 +0 -0
  126. data/test/dummy/tmp/cache/assets/C8A/220/sprockets%2Fa8cb84f1d3139717fbf4320472268895 +0 -0
  127. data/test/dummy/tmp/cache/assets/C8E/8A0/sprockets%2F2859bc809b0094247ec3cd482e689390 +0 -0
  128. data/test/dummy/tmp/cache/assets/C8F/7A0/sprockets%2Fcc8c34273d89b401cff4990772633729 +0 -0
  129. data/test/dummy/tmp/cache/assets/C91/2F0/sprockets%2F75f0576480e07f18eed6c6671711c946 +0 -0
  130. data/test/dummy/tmp/cache/assets/C92/F30/sprockets%2F8f6219673767447080fc0efd6837ec21 +0 -0
  131. data/test/dummy/tmp/cache/assets/C93/790/sprockets%2F73e658930537ca3695f247d1796cda90 +0 -0
  132. data/test/dummy/tmp/cache/assets/C9A/F20/sprockets%2F47d314d4a124d8df321042640ae162e7 +0 -0
  133. data/test/dummy/tmp/cache/assets/C9C/A10/sprockets%2F3d157be7033780a2681b47a0c0a216f6 +0 -0
  134. data/test/dummy/tmp/cache/assets/CA3/7B0/sprockets%2Fc06c2308ed51865841aac2562e1183b7 +0 -0
  135. data/test/dummy/tmp/cache/assets/CA7/9D0/sprockets%2F346d658742432c01098b017cdead8e13 +0 -0
  136. data/test/dummy/tmp/cache/assets/CAA/530/sprockets%2F02678dc075a24de22c644a2f5c513885 +0 -0
  137. data/test/dummy/tmp/cache/assets/CAA/780/sprockets%2F6418dd350766c5327a5538ba29cf2d01 +0 -0
  138. data/test/dummy/tmp/cache/assets/CAC/510/sprockets%2Fee216f5da81567402757fa740f85102a +0 -0
  139. data/test/dummy/tmp/cache/assets/CAC/9F0/sprockets%2Fc74a3cab8e935c54233d8122e0673646 +0 -0
  140. data/test/dummy/tmp/cache/assets/CAD/580/sprockets%2Fca67d461bd7507f34290b3e262b12977 +0 -0
  141. data/test/dummy/tmp/cache/assets/CAE/F60/sprockets%2Fb84b1272be65b7016604b945bd8283f5 +0 -0
  142. data/test/dummy/tmp/cache/assets/CB0/040/sprockets%2F6f1a127a70682749ea6d65135cf043e7 +0 -0
  143. data/test/dummy/tmp/cache/assets/CB0/530/sprockets%2F629149bb093bf3b14d197a1849d25d17 +0 -0
  144. data/test/dummy/tmp/cache/assets/CB0/E90/sprockets%2F28229c2b33d707cb5084cd17074299df +0 -0
  145. data/test/dummy/tmp/cache/assets/CB1/8C0/sprockets%2F20ba4b3d3899d258dc04e616385380c8 +0 -0
  146. data/test/dummy/tmp/cache/assets/CB2/A60/sprockets%2F9225dcc755785a254297f337cbe70a11 +0 -0
  147. data/test/dummy/tmp/cache/assets/CB2/C50/sprockets%2Faf6f5310506c59177b8c0ca4c7366917 +0 -0
  148. data/test/dummy/tmp/cache/assets/CB4/DF0/sprockets%2Fc0c187e7658863ae3e056d931350a4f5 +0 -0
  149. data/test/dummy/tmp/cache/assets/CB6/310/sprockets%2F3f74fb22bf27e70821446f15c055f777 +0 -0
  150. data/test/dummy/tmp/cache/assets/CB6/FC0/sprockets%2F16d4a7a322b8c356d4e97292d63692b6 +0 -0
  151. data/test/dummy/tmp/cache/assets/CB9/F40/sprockets%2F8c62e211ca115ece7bc6424897578719 +0 -0
  152. data/test/dummy/tmp/cache/assets/CBA/210/sprockets%2F1288fd75a2b7b5e9943d246071c09e65 +0 -0
  153. data/test/dummy/tmp/cache/assets/CBA/C80/sprockets%2F738b5f665b7408415da744199ae39a2c +0 -0
  154. data/test/dummy/tmp/cache/assets/CBE/030/sprockets%2Fde3c5979a7711c289575916e06be090b +0 -0
  155. data/test/dummy/tmp/cache/assets/CBE/6C0/sprockets%2F57c012343b1cc841a231b47ea61f20f1 +0 -0
  156. data/test/dummy/tmp/cache/assets/CBE/D20/sprockets%2F84482670bf9dc49d3982a749a72b2d32 +0 -0
  157. data/test/dummy/tmp/cache/assets/CBF/560/sprockets%2F47e4b9569d894e6a160679ca12d26e24 +0 -0
  158. data/test/dummy/tmp/cache/assets/CC9/5A0/sprockets%2Febdbd594563090002d0b6d21a80812d6 +0 -0
  159. data/test/dummy/tmp/cache/assets/CC9/F00/sprockets%2F09011a5a5890132ed38a61728cec30ac +0 -0
  160. data/test/dummy/tmp/cache/assets/CD2/7D0/sprockets%2F1c4d4beb82ca5d2211896f45242a1853 +0 -0
  161. data/test/dummy/tmp/cache/assets/CD4/FB0/sprockets%2F22b1c3474a0c4fbc10fd2865d7134949 +0 -0
  162. data/test/dummy/tmp/cache/assets/CD9/950/sprockets%2Fa024d6a654485447e12890bb3dc26ef2 +0 -0
  163. data/test/dummy/tmp/cache/assets/CDA/910/sprockets%2F2e8a211d7650278fdb6504966da3dc22 +0 -0
  164. data/test/dummy/tmp/cache/assets/CDC/B80/sprockets%2F31864fd74a2c488ce17be25d681410a4 +0 -0
  165. data/test/dummy/tmp/cache/assets/CDF/400/sprockets%2Fc72a9c317b7870b1d4a01fd67381c839 +0 -0
  166. data/test/dummy/tmp/cache/assets/CE1/650/sprockets%2Faa5aa69a0201992aff34899149ad2927 +0 -0
  167. data/test/dummy/tmp/cache/assets/CE1/9D0/sprockets%2F08e626399f6a85ef9f4a2a2521b3025c +0 -0
  168. data/test/dummy/tmp/cache/assets/CE3/360/sprockets%2F19b4fe2a24fb82254d2934f529a6d528 +0 -0
  169. data/test/dummy/tmp/cache/assets/CE3/AA0/sprockets%2Fef572aa9492f27c67f25161b8c70a263 +0 -0
  170. data/test/dummy/tmp/cache/assets/CE6/C80/sprockets%2Ff54768d25a1ce9035375563fb5f055bd +0 -0
  171. data/test/dummy/tmp/cache/assets/CE8/C70/sprockets%2F04f07c880491b5881494de2eb7c1f3d7 +0 -0
  172. data/test/dummy/tmp/cache/assets/CE9/8D0/sprockets%2Ffc05468c91598ab083f7860d7008bac8 +0 -0
  173. data/test/dummy/tmp/cache/assets/CEF/880/sprockets%2F5329c6bd6b3986d35f6934c036a6f39b +0 -0
  174. data/test/dummy/tmp/cache/assets/CF2/1F0/sprockets%2F21189c17343cf9583a89e75c9bdf815a +0 -0
  175. data/test/dummy/tmp/cache/assets/CF3/7F0/sprockets%2F779e5c8015f96f42cfe5ba6137168f44 +0 -0
  176. data/test/dummy/tmp/cache/assets/CF4/C70/sprockets%2F7d363a475fecc464e416948ce68178d2 +0 -0
  177. data/test/dummy/tmp/cache/assets/CF5/060/sprockets%2F03bb9f125e33948ee6b8e69429d8c708 +0 -0
  178. data/test/dummy/tmp/cache/assets/CF6/860/sprockets%2F2799c7b491e5a0149a39b765fe45f8b7 +0 -0
  179. data/test/dummy/tmp/cache/assets/CF6/DE0/sprockets%2F7eaf598cda47949602e7f7c287054a36 +0 -0
  180. data/test/dummy/tmp/cache/assets/CF9/740/sprockets%2Fb5b5f5309bfe151c2a28a435af126070 +0 -0
  181. data/test/dummy/tmp/cache/assets/CF9/930/sprockets%2F2210dd6a1511207bb4e61f3ce1bf9377 +0 -0
  182. data/test/dummy/tmp/cache/assets/CFB/4F0/sprockets%2F13616d2836c5aec01d6260bc49c32aa7 +0 -0
  183. data/test/dummy/tmp/cache/assets/CFE/5D0/sprockets%2F63226a4062fd6fdc4319bb3a6401b73e +0 -0
  184. data/test/dummy/tmp/cache/assets/CFF/240/sprockets%2F889fc9f46e9cb651766ab26b893f9060 +0 -0
  185. data/test/dummy/tmp/cache/assets/D00/250/sprockets%2F12356cfd31282724abc0cc493a1eb857 +0 -0
  186. data/test/dummy/tmp/cache/assets/D02/C80/sprockets%2F4b3b22c952d1de0ad7110f5e5722f666 +0 -0
  187. data/test/dummy/tmp/cache/assets/D04/B20/sprockets%2F7d319bae1ba417a95081b73bc097f081 +0 -0
  188. data/test/dummy/tmp/cache/assets/D06/3D0/sprockets%2Fe47dc30626d282db3c850409c21ac68d +0 -0
  189. data/test/dummy/tmp/cache/assets/D07/AD0/sprockets%2F6174c7254e03cd00ac4aade79b036878 +0 -0
  190. data/test/dummy/tmp/cache/assets/D08/6A0/sprockets%2F538321dc4ffa82fd62efb84120417e14 +0 -0
  191. data/test/dummy/tmp/cache/assets/D08/9E0/sprockets%2Fa035aeb2b9038f49f151a55903385ebe +0 -0
  192. data/test/dummy/tmp/cache/assets/D08/A60/sprockets%2F07a473b660322e92b5ceb7413cc738de +0 -0
  193. data/test/dummy/tmp/cache/assets/D0A/710/sprockets%2F70e0cf21aa4e94d8bdd8021858775d01 +0 -0
  194. data/test/dummy/tmp/cache/assets/D0C/640/sprockets%2F962c22956d6be2f4eba2156a3221c6f9 +0 -0
  195. data/test/dummy/tmp/cache/assets/D0C/7B0/sprockets%2F768bf4d31279b53e73a7822aa1fd412d +0 -0
  196. data/test/dummy/tmp/cache/assets/D0E/D90/sprockets%2F5197654422a76f8ef2312e82acccd4e0 +0 -0
  197. data/test/dummy/tmp/cache/assets/D10/500/sprockets%2Fd119ef73f5d6356b01352d55d3d6c9c2 +0 -0
  198. data/test/dummy/tmp/cache/assets/D13/B20/sprockets%2F8b44b16dd9005d5195ae17b5c65f5c94 +0 -0
  199. data/test/dummy/tmp/cache/assets/D14/010/sprockets%2Fe6f6d530f81136b68a256d92561ddeb4 +0 -0
  200. data/test/dummy/tmp/cache/assets/D14/F80/sprockets%2Fe9729d268ac7fd290cbe273d13b71831 +0 -0
  201. data/test/dummy/tmp/cache/assets/D15/BC0/sprockets%2F62ed7a4437b3e4e130fbb2d98865087d +0 -0
  202. data/test/dummy/tmp/cache/assets/D1A/760/sprockets%2F421df6566f30e58c9ec27f299a253a7a +0 -0
  203. data/test/dummy/tmp/cache/assets/D1B/490/sprockets%2F146ae9c91901216fdf695e6f43b9f2e1 +0 -0
  204. data/test/dummy/tmp/cache/assets/D1C/E70/sprockets%2Fab3e336cb533413d7f9485ed7b7a2998 +0 -0
  205. data/test/dummy/tmp/cache/assets/D1D/980/sprockets%2Fc88999219c9bc03d27ebe274eac64163 +0 -0
  206. data/test/dummy/tmp/cache/assets/D1D/9C0/sprockets%2F7579376387c4322f20ac8ffeed428bf1 +0 -0
  207. data/test/dummy/tmp/cache/assets/D20/570/sprockets%2Fe099d4a84148fb36663d4fc8f30fa945 +0 -0
  208. data/test/dummy/tmp/cache/assets/D20/F30/sprockets%2F8565cdd915ebadb92064a616c48958e7 +0 -0
  209. data/test/dummy/tmp/cache/assets/D2A/1D0/sprockets%2Ff5cd64f262a3110b37e34f1f3b43d04c +0 -0
  210. data/test/dummy/tmp/cache/assets/D2C/8F0/sprockets%2F1208ed6391ad3bc37bdf31615bdd2208 +0 -0
  211. data/test/dummy/tmp/cache/assets/D2C/F10/sprockets%2Ff36c41fa2eda291c9b33a432626b206d +0 -0
  212. data/test/dummy/tmp/cache/assets/D2E/040/sprockets%2F6cb9add4c9f3641326f694779de627e9 +0 -0
  213. data/test/dummy/tmp/cache/assets/D2E/650/sprockets%2F0d67cb76087efa67994fffd9793071f1 +0 -0
  214. data/test/dummy/tmp/cache/assets/D2F/2F0/sprockets%2Fd07408b77ae5c2231b2141be7ebc46d6 +0 -0
  215. data/test/dummy/tmp/cache/assets/D2F/C10/sprockets%2F178727baa262704eac250ef151daef80 +0 -0
  216. data/test/dummy/tmp/cache/assets/D2F/D80/sprockets%2F61235e4d441fa4da47b21fc662a2a7f4 +0 -0
  217. data/test/dummy/tmp/cache/assets/D30/1E0/sprockets%2Fc4e01ba5e33d851a9b7bc41091047f9a +0 -0
  218. data/test/dummy/tmp/cache/assets/D30/DB0/sprockets%2F535542facc4af3c31124f0509f5f1cd6 +0 -0
  219. data/test/dummy/tmp/cache/assets/D30/E00/sprockets%2Ffe7a64b00672333d2b01b9a1ee9df514 +0 -0
  220. data/test/dummy/tmp/cache/assets/D31/4B0/sprockets%2Fd022f4cf49e041cea91006350728bdfe +0 -0
  221. data/test/dummy/tmp/cache/assets/D31/E00/sprockets%2F23f1eaa83e9b40d52a3377e21fa3830f +0 -0
  222. data/test/dummy/tmp/cache/assets/D33/E50/sprockets%2F9a359b1d99b79e9d7952f795bd5e5b06 +0 -0
  223. data/test/dummy/tmp/cache/assets/D35/360/sprockets%2Faf10ebca1f8b40ce10246f28963581f6 +0 -0
  224. data/test/dummy/tmp/cache/assets/D38/440/sprockets%2F3ac356e5e9cd5373bbd3bf243091c274 +0 -0
  225. data/test/dummy/tmp/cache/assets/D39/D10/sprockets%2Ffd85d145bb32d7f8a0b73100d7a5e477 +0 -0
  226. data/test/dummy/tmp/cache/assets/D3D/280/sprockets%2Faf336a0b0473f04edbc123f8699836ce +0 -0
  227. data/test/dummy/tmp/cache/assets/D3D/AA0/sprockets%2Fb825a60ecf93219bbfa59426e1b0e674 +0 -0
  228. data/test/dummy/tmp/cache/assets/D3D/C50/sprockets%2F6f6bb68a571ad0ed0875a3f345650ae6 +0 -0
  229. data/test/dummy/tmp/cache/assets/D3D/F00/sprockets%2Ffa77735b526e77cb3e1a145df3b4b517 +0 -0
  230. data/test/dummy/tmp/cache/assets/D3F/B00/sprockets%2Fd64ddc718febf7a96600502e0740b6e6 +0 -0
  231. data/test/dummy/tmp/cache/assets/D41/CC0/sprockets%2F4b494edf3456a1266d4c5e9abb1853b7 +0 -0
  232. data/test/dummy/tmp/cache/assets/D41/CD0/sprockets%2F7a5d516096ee20b5ff6c9c0f57111d9c +0 -0
  233. data/test/dummy/tmp/cache/assets/D42/310/sprockets%2F5f7f69d60191bd603a22d8f35e8d71ab +0 -0
  234. data/test/dummy/tmp/cache/assets/D44/B60/sprockets%2F50bf1119f3805ad80a9669a8d7b93eea +0 -0
  235. data/test/dummy/tmp/cache/assets/D46/950/sprockets%2F5034fd78ad2bf870e6921b13e57cf74e +0 -0
  236. data/test/dummy/tmp/cache/assets/D4A/150/sprockets%2F58302ee8b45e99ec96257f37da3b3b2b +0 -0
  237. data/test/dummy/tmp/cache/assets/D4A/FD0/sprockets%2F7697ec3a4ad7f6c93a24b7c83b82c580 +0 -0
  238. data/test/dummy/tmp/cache/assets/D4B/500/sprockets%2F8d48b5392af0d5f62f68bdb4179073ed +0 -0
  239. data/test/dummy/tmp/cache/assets/D4B/940/sprockets%2F45f9087a16a889bd5c27b4c4dda587a4 +0 -0
  240. data/test/dummy/tmp/cache/assets/D4B/C90/sprockets%2Fd2dd2dcb1021a01638e42a7ae704f10d +0 -0
  241. data/test/dummy/tmp/cache/assets/D4E/6C0/sprockets%2F95e5bebb058da8680eaf07f6d7918434 +0 -0
  242. data/test/dummy/tmp/cache/assets/D53/360/sprockets%2F68fbda37095347e98c362f714aa6edf9 +0 -0
  243. data/test/dummy/tmp/cache/assets/D55/240/sprockets%2F9fd8685c40d809fab9102fe5f719c57d +0 -0
  244. data/test/dummy/tmp/cache/assets/D58/6B0/sprockets%2Fb4fa1b036a2ad06a7096ce6f34bc3155 +0 -0
  245. data/test/dummy/tmp/cache/assets/D5E/F10/sprockets%2F2493e3c20ccf117a2bc238f4265e4cdb +0 -0
  246. data/test/dummy/tmp/cache/assets/D5E/F70/sprockets%2Fd7f0775ce102b67c00f6cabd460c414e +0 -0
  247. data/test/dummy/tmp/cache/assets/D5F/360/sprockets%2F52a905ac9d5d2c285bbda75a18602cd1 +0 -0
  248. data/test/dummy/tmp/cache/assets/D63/D50/sprockets%2F6fe911e989a26eba56e87885c7e671fd +0 -0
  249. data/test/dummy/tmp/cache/assets/D66/3A0/sprockets%2F5290b688cc391fe427bddd150d3ba0e4 +0 -0
  250. data/test/dummy/tmp/cache/assets/D6F/BD0/sprockets%2F8d42e5b5aae95a6a71065729db319cbf +0 -0
  251. data/test/dummy/tmp/cache/assets/D6F/C70/sprockets%2F45b57c525f8b6cb60d972c337afab1d7 +0 -0
  252. data/test/dummy/tmp/cache/assets/D72/F00/sprockets%2F567d23ca5a48504bef5d9d3275fd8c2a +0 -0
  253. data/test/dummy/tmp/cache/assets/D75/1E0/sprockets%2Fb0426b4c9b3b35e89c6f8c1a117fe9b9 +0 -0
  254. data/test/dummy/tmp/cache/assets/D75/6B0/sprockets%2Fd5677267caad996b0c5910cacb78d8a3 +0 -0
  255. data/test/dummy/tmp/cache/assets/D75/D10/sprockets%2F998b7cb098c93b0f5cfa24b7a72bc705 +0 -0
  256. data/test/dummy/tmp/cache/assets/D76/380/sprockets%2F3dba07871e3815c9dbd014fcfec07989 +0 -0
  257. data/test/dummy/tmp/cache/assets/D76/F20/sprockets%2F544c1d52dbde4cea686745fea23966d4 +0 -0
  258. data/test/dummy/tmp/cache/assets/D79/320/sprockets%2F3eb7bbd968328afa2598bdf60be92273 +0 -0
  259. data/test/dummy/tmp/cache/assets/D7A/2B0/sprockets%2Fb1811d164159d4b8943ffed88a83febc +0 -0
  260. data/test/dummy/tmp/cache/assets/D7A/590/sprockets%2F488fda9ec61cc67cd66a40d4db686901 +0 -0
  261. data/test/dummy/tmp/cache/assets/D7B/250/sprockets%2Fab742f73049dce9be4a83bdd88e92363 +0 -0
  262. data/test/dummy/tmp/cache/assets/D7C/0D0/sprockets%2F1f8acfbfd2566fe79d2e03963b7e7125 +0 -0
  263. data/test/dummy/tmp/cache/assets/D7D/3D0/sprockets%2Ff43fd77613099ab4944e3beac67fd63e +0 -0
  264. data/test/dummy/tmp/cache/assets/D7F/4B0/sprockets%2Fc8b034851786e1dce4f89cfad8f03a78 +0 -0
  265. data/test/dummy/tmp/cache/assets/D80/D40/sprockets%2F7f47a88d4fc00badb7c392566a6ef994 +0 -0
  266. data/test/dummy/tmp/cache/assets/D82/C50/sprockets%2Ffc86c95bb48e4ecc57191b530ec66e79 +0 -0
  267. data/test/dummy/tmp/cache/assets/D8F/270/sprockets%2Face0ae5e25b4442c51c79146cbd4f3d2 +0 -0
  268. data/test/dummy/tmp/cache/assets/D90/A50/sprockets%2F0b141b5a5dafb84ddad1a55d068675e4 +0 -0
  269. data/test/dummy/tmp/cache/assets/D91/930/sprockets%2Ffd1b885c1b51d472cce3a18ac16b790a +0 -0
  270. data/test/dummy/tmp/cache/assets/D91/D80/sprockets%2F2efaa6861f042ee4e7040c0afb7175af +0 -0
  271. data/test/dummy/tmp/cache/assets/D93/2B0/sprockets%2Feab7ab6d37ca58dd8ab709041182b4d3 +0 -0
  272. data/test/dummy/tmp/cache/assets/D93/950/sprockets%2Fb1100cf24e57d3af1e37fd3cf5e6245d +0 -0
  273. data/test/dummy/tmp/cache/assets/D96/2F0/sprockets%2F41d318f17fd0bcb940cd0c5af8ad6862 +0 -0
  274. data/test/dummy/tmp/cache/assets/D96/610/sprockets%2Fc41fbdb656d4ba12e71643fb85f2cc62 +0 -0
  275. data/test/dummy/tmp/cache/assets/D99/F70/sprockets%2Fa0faa921b67c3185b3fdd384ffec3048 +0 -0
  276. data/test/dummy/tmp/cache/assets/D9A/8B0/sprockets%2F63d2a2dafb03dbe806f4941d2197d8fb +0 -0
  277. data/test/dummy/tmp/cache/assets/D9B/EA0/sprockets%2F585c1d3a2eb19360c66ba2aa786cede9 +0 -0
  278. data/test/dummy/tmp/cache/assets/D9D/0C0/sprockets%2F48defbce081e0e0d6b5800b8408ea89c +0 -0
  279. data/test/dummy/tmp/cache/assets/D9D/ED0/sprockets%2Ff6aeb0532c9f84c2d95b9c0ce22c285b +0 -0
  280. data/test/dummy/tmp/cache/assets/D9E/EB0/sprockets%2F2d2454a997d027c2ab4caea88beb728f +0 -0
  281. data/test/dummy/tmp/cache/assets/DA0/2E0/sprockets%2F51b8a2fec0b5f837f33fdd753047ecd4 +0 -0
  282. data/test/dummy/tmp/cache/assets/DA0/B70/sprockets%2Fa1ca1dfb58231884f75ad7fc7bfd1096 +0 -0
  283. data/test/dummy/tmp/cache/assets/DA1/D00/sprockets%2F3199bbdf805ad7e168f063b4c7d64bbc +0 -0
  284. data/test/dummy/tmp/cache/assets/DA1/EE0/sprockets%2F6ae1f85194f8f27c543edb3d6ca2ac27 +0 -0
  285. data/test/dummy/tmp/cache/assets/DA6/9D0/sprockets%2F537cb5de3f5a28db9b7d70f43f5146fc +0 -0
  286. data/test/dummy/tmp/cache/assets/DA7/9F0/sprockets%2Fc8e9d843fc40c2fbc9c634872cb4fc42 +0 -0
  287. data/test/dummy/tmp/cache/assets/DAA/290/sprockets%2F2b6eeff463c1c6c858d0e25a99cd571e +0 -0
  288. data/test/dummy/tmp/cache/assets/DAF/D30/sprockets%2F68639fcdb72c88ba936171cc8c7edd2c +0 -0
  289. data/test/dummy/tmp/cache/assets/DB0/890/sprockets%2F22ee8c94ae2f1f7c1dd864613e96be9f +0 -0
  290. data/test/dummy/tmp/cache/assets/DB1/1F0/sprockets%2F7bc0ae4c8f2cff29bc5665c497ce3966 +0 -0
  291. data/test/dummy/tmp/cache/assets/DB1/770/sprockets%2F4c6cdd1f99fd63d4381f8f6d914cb8a3 +0 -0
  292. data/test/dummy/tmp/cache/assets/DB2/190/sprockets%2Ffa0a00fbc0566cc15efb1e4b550c7b43 +0 -0
  293. data/test/dummy/tmp/cache/assets/DB5/670/sprockets%2Fbbe79f5c6b52ff7b5999439f9e10d2ba +0 -0
  294. data/test/dummy/tmp/cache/assets/DBB/310/sprockets%2F8801a53aae3a5cfbbf6afb4911b6e250 +0 -0
  295. data/test/dummy/tmp/cache/assets/DBF/090/sprockets%2Fa1d06161a5549a5beb04c1ecf1ee7b8f +0 -0
  296. data/test/dummy/tmp/cache/assets/DC1/2E0/sprockets%2F1aced1e5c45bedc05f7f356b7c04c333 +0 -0
  297. data/test/dummy/tmp/cache/assets/DC6/E80/sprockets%2Fa26bc43d806fbe14e3c98d1aaac7c187 +0 -0
  298. data/test/dummy/tmp/cache/assets/DC7/160/sprockets%2Ffabb219b45f7a15ecdfe00e9b72e1717 +0 -0
  299. data/test/dummy/tmp/cache/assets/DC9/1E0/sprockets%2F0cac86d268bd53b4fd345523eff0fd2c +0 -0
  300. data/test/dummy/tmp/cache/assets/DCB/D50/sprockets%2F6f9bf42abcffccbf79934c153a03f303 +0 -0
  301. data/test/dummy/tmp/cache/assets/DCC/CC0/sprockets%2F0bda2b37991f01ed84bb1f92dfc4b8e6 +0 -0
  302. data/test/dummy/tmp/cache/assets/DCD/2C0/sprockets%2F17cc84d7a4feca214ba059e862d72efc +0 -0
  303. data/test/dummy/tmp/cache/assets/DCF/B30/sprockets%2F4c59ef59af3722cc5fcab32c62cd3f27 +0 -0
  304. data/test/dummy/tmp/cache/assets/DD0/3A0/sprockets%2F4d4a71b06bdee794a208f465bde37cfe +0 -0
  305. data/test/dummy/tmp/cache/assets/DD4/690/sprockets%2Fec8e6f146d1f849cfd14d332d6abb36f +0 -0
  306. data/test/dummy/tmp/cache/assets/DD4/BE0/sprockets%2F4f8c298525c055dbf1dfaa6ecd5a786a +0 -0
  307. data/test/dummy/tmp/cache/assets/DD5/850/sprockets%2F684493b4fc6bb5cea1ed78cdc17169da +0 -0
  308. data/test/dummy/tmp/cache/assets/DD9/4B0/sprockets%2Ff5cced904e06e098959fd6ebb40ca47b +0 -0
  309. data/test/dummy/tmp/cache/assets/DD9/8B0/sprockets%2Fbf4630cdd5ef3bf43759f28c2a8fa9e3 +0 -0
  310. data/test/dummy/tmp/cache/assets/DDF/0A0/sprockets%2F35947cd516192ee5cedee8d2edb99ca4 +0 -0
  311. data/test/dummy/tmp/cache/assets/DE6/8B0/sprockets%2F22934a7eedd3cc615d252a41dbcbab0f +0 -0
  312. data/test/dummy/tmp/cache/assets/DEC/C40/sprockets%2Ffed907f747c5ddcc7ed1b5d9e7457b97 +0 -0
  313. data/test/dummy/tmp/cache/assets/DEF/5C0/sprockets%2F817fa2addeaef84032a5ae5f1a3c417d +0 -0
  314. data/test/dummy/tmp/cache/assets/DEF/D00/sprockets%2Fad3dc3d3f115e20c7ed4fc227bdc719a +0 -0
  315. data/test/dummy/tmp/cache/assets/DF1/580/sprockets%2F67e2edad1baaad15747d50b8e0960ceb +0 -0
  316. data/test/dummy/tmp/cache/assets/DF3/1B0/sprockets%2F2f8ca9ace0f2870bce4a5a265ffea330 +0 -0
  317. data/test/dummy/tmp/cache/assets/DF4/B60/sprockets%2F1c2e39610dab9505becde018fdade8e3 +0 -0
  318. data/test/dummy/tmp/cache/assets/DF6/9F0/sprockets%2F95ab91d0f1ec24fcd2ec65d81ece53a1 +0 -0
  319. data/test/dummy/tmp/cache/assets/DF8/550/sprockets%2F2af2ff76b6cd2da28d970cda7b1e64a2 +0 -0
  320. data/test/dummy/tmp/cache/assets/DF9/070/sprockets%2Fe9ac9b1acfd404246d5c1b99c82acfd1 +0 -0
  321. data/test/dummy/tmp/cache/assets/DF9/1B0/sprockets%2Fb9ead2a8c07c3aebd9d378536344bbda +0 -0
  322. data/test/dummy/tmp/cache/assets/DFA/C20/sprockets%2F25cf85f1a6ba24ee7d7ab1e4562aee4e +0 -0
  323. data/test/dummy/tmp/cache/assets/DFA/D60/sprockets%2F3f2d96bcba0351e5a51dfca709bce98e +0 -0
  324. data/test/dummy/tmp/cache/assets/DFB/380/sprockets%2Fcaa936ba0a3b34d83f9cd1798e1efed0 +0 -0
  325. data/test/dummy/tmp/cache/assets/DFB/620/sprockets%2Fae2a55e9dc2dbc0c06a8ac9b9559f4a4 +0 -0
  326. data/test/dummy/tmp/cache/assets/DFB/CB0/sprockets%2Fcec172552ae2ee5d3ea9f01db4359cff +0 -0
  327. data/test/dummy/tmp/cache/assets/DFE/230/sprockets%2F6b16bd95c7aea403dccc2cbd8a4889c6 +0 -0
  328. data/test/dummy/tmp/cache/assets/DFE/7A0/sprockets%2F471d58fbea73f2bb45fc9a5cbbf5622d +0 -0
  329. data/test/dummy/tmp/cache/assets/DFE/FD0/sprockets%2F9c107bd8a32fdea8dde8ea4f616313cf +0 -0
  330. data/test/dummy/tmp/cache/assets/E00/EE0/sprockets%2Fb2a8dc4198d7b8a7856ae6fca2b3a4dd +0 -0
  331. data/test/dummy/tmp/cache/assets/E0B/150/sprockets%2Feabd48d3cde859438fdfb4bd5c470c76 +0 -0
  332. data/test/dummy/tmp/cache/assets/E0C/010/sprockets%2Fcfc8c66eac1dc87e162327f9ba9e53ef +0 -0
  333. data/test/dummy/tmp/cache/assets/E0C/5B0/sprockets%2Fff82de3396c9e151ebc5bcc7cec49e27 +0 -0
  334. data/test/dummy/tmp/cache/assets/E0C/760/sprockets%2Fbc38ff5ba7465efe72f62cfff08e912a +0 -0
  335. data/test/dummy/tmp/cache/assets/E0D/EB0/sprockets%2Fd1dfbec7746948ef547ec405cfc61ccf +0 -0
  336. data/test/dummy/tmp/cache/assets/E18/550/sprockets%2Ffb1e05fd387cb16eeda010d001ded7ce +0 -0
  337. data/test/dummy/tmp/cache/assets/E24/520/sprockets%2Fbd16acd2525dbd537dfceb3dc3606f5d +0 -0
  338. data/test/dummy/tmp/cache/assets/E27/5D0/sprockets%2Fa74dfa521b6fc1b408446efbfde1b8eb +0 -0
  339. data/test/dummy/tmp/cache/assets/E2D/520/sprockets%2Fedded9a73a49058ddaac0feb501a876f +0 -0
  340. data/test/dummy/tmp/cache/assets/E7A/ED0/sprockets%2F06aed41ad28cf0c1dc8efdeecdc01f22 +0 -0
  341. data/test/dummy/tmp/cache/assets/E7E/C20/sprockets%2F2aedb288b2bcdce1bd9a982aff00ae5a +0 -0
  342. data/test/dummy/tmp/cache/sass/3fdb360d4d93587da931a45430309bf6099edb9d/bootstrap-responsive.scssc +0 -0
  343. data/test/dummy/tmp/cache/sass/3fdb360d4d93587da931a45430309bf6099edb9d/bootstrap.scssc +0 -0
  344. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_accordion.scssc +0 -0
  345. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_alerts.scssc +0 -0
  346. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_breadcrumbs.scssc +0 -0
  347. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_button-groups.scssc +0 -0
  348. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_buttons.scssc +0 -0
  349. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_carousel.scssc +0 -0
  350. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_close.scssc +0 -0
  351. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_code.scssc +0 -0
  352. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_component-animations.scssc +0 -0
  353. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_dropdowns.scssc +0 -0
  354. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_forms.scssc +0 -0
  355. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_grid.scssc +0 -0
  356. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_hero-unit.scssc +0 -0
  357. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_labels-badges.scssc +0 -0
  358. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_layouts.scssc +0 -0
  359. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_media.scssc +0 -0
  360. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_mixins.scssc +0 -0
  361. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_modals.scssc +0 -0
  362. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_navbar.scssc +0 -0
  363. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_navs.scssc +0 -0
  364. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_pager.scssc +0 -0
  365. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_pagination.scssc +0 -0
  366. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_popovers.scssc +0 -0
  367. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_progress-bars.scssc +0 -0
  368. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_reset.scssc +0 -0
  369. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_responsive-1200px-min.scssc +0 -0
  370. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_responsive-767px-max.scssc +0 -0
  371. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_responsive-768px-979px.scssc +0 -0
  372. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_responsive-navbar.scssc +0 -0
  373. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_responsive-utilities.scssc +0 -0
  374. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_scaffolding.scssc +0 -0
  375. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_sprites.scssc +0 -0
  376. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_tables.scssc +0 -0
  377. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_thumbnails.scssc +0 -0
  378. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_tooltip.scssc +0 -0
  379. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_type.scssc +0 -0
  380. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_utilities.scssc +0 -0
  381. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_variables.scssc +0 -0
  382. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/_wells.scssc +0 -0
  383. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/bootstrap.scssc +0 -0
  384. data/test/dummy/tmp/cache/sass/9b321e8af54768180e20e746ee5d44bf1cd3b0f9/responsive.scssc +0 -0
  385. data/test/dummy/tmp/cache/sass/a1ca19fc2b3afb4a167a105e195117650bf09684/application.css.scssc +0 -0
  386. data/test/dummy/tmp/cache/sass/a1ca19fc2b3afb4a167a105e195117650bf09684/bootstrap_and_overrides.css.scssc +0 -0
  387. data/test/fixtures/how_to/admin_users.yml +11 -0
  388. data/test/fixtures/how_to/contents.yml +11 -0
  389. data/test/fixtures/how_to/sections.yml +11 -0
  390. data/test/functional/how_to/faq_controller_test.rb +11 -0
  391. data/test/how_to_test.rb +7 -0
  392. data/test/integration/navigation_test.rb +10 -0
  393. data/test/test_helper.rb +15 -0
  394. data/test/unit/helpers/how_to/faq_helper_test.rb +6 -0
  395. data/test/unit/how_to/admin_user_test.rb +9 -0
  396. data/test/unit/how_to/content_test.rb +9 -0
  397. data/test/unit/how_to/section_test.rb +9 -0
  398. metadata +805 -0
@@ -0,0 +1,69 @@
1
+ require_dependency "how_to/application_controller"
2
+
3
+ module HowTo
4
+ class SectionsController < ApplicationController
5
+ before_filter :authorise_how_to_manage!
6
+
7
+ def index
8
+ @sections = Section.all
9
+
10
+ respond_to do |format|
11
+ format.html # index.html.erb
12
+ end
13
+ end
14
+
15
+ def show
16
+ @section = Section.find(params[:id])
17
+
18
+ respond_to do |format|
19
+ format.html # show.html.erb
20
+ end
21
+ end
22
+
23
+ def new
24
+ @section = Section.new
25
+ respond_to do |format|
26
+ format.html # new.html.erb
27
+ end
28
+ end
29
+
30
+ def edit
31
+ @section = Section.find(params[:id])
32
+ end
33
+
34
+ def create
35
+ @section = Section.new(params[:section])
36
+
37
+ respond_to do |format|
38
+ if @section.save
39
+ format.html { redirect_to @section, notice: 'Section was successfully created.' }
40
+ else
41
+ format.html { render action: "new" }
42
+ end
43
+ end
44
+ end
45
+
46
+ def update
47
+ @section = Section.find(params[:id])
48
+
49
+ respond_to do |format|
50
+ if @section.update_attributes(params[:section])
51
+ format.html { redirect_to @section, notice: 'Section was successfully updated.' }
52
+ else
53
+ format.html { render action: "edit" }
54
+ end
55
+ end
56
+ end
57
+
58
+ def destroy
59
+ @section = Section.find(params[:id])
60
+ @section.destroy
61
+
62
+ respond_to do |format|
63
+ format.html { redirect_to sections_url }
64
+ end
65
+ end
66
+
67
+
68
+ end
69
+ end
@@ -0,0 +1,4 @@
1
+ module HowTo
2
+ module ApplicationHelper
3
+ end
4
+ end
@@ -0,0 +1,73 @@
1
+ module HowTo
2
+ module FaqHelper
3
+ def nested_li(objects, wrapper_attributes = '', &block)
4
+ objects = objects.order(:lft) if objects.is_a? Class
5
+
6
+ return '' if objects.size == 0
7
+
8
+ output = "<ul #{wrapper_attributes}><li>"
9
+ path = [nil]
10
+
11
+ objects.each_with_index do |o, i|
12
+ if o.parent_id != path.last
13
+ # We are on a new level, did we decend or ascend?
14
+ if path.include?(o.parent_id)
15
+ # Remove wrong wrong tailing paths elements
16
+ while path.last != o.parent_id
17
+ path.pop
18
+ output << '</li></ul>'
19
+ end
20
+ output << '</li><li>'
21
+ else
22
+ path << o.parent_id
23
+ output << '<ul><li>'
24
+ end
25
+ elsif i != 0
26
+ output << '</li><li>'
27
+ end
28
+ output << capture(o, path.size - 1, &block)
29
+ end
30
+
31
+ output << '</li></ul>' * path.length
32
+ output.html_safe
33
+ end
34
+
35
+ def sorted_nested_li(objects, order, wrapper_attributes = '', &block)
36
+ nested_li sort_list(objects, order), wrapper_attributes, &block
37
+ end
38
+
39
+ private
40
+
41
+ def sort_list(objects, order)
42
+ objects = objects.order(:lft) if objects.is_a? Class
43
+
44
+ # Partition the results
45
+ children_of = {}
46
+ objects.each do |o|
47
+ children_of[o.parent_id] ||= []
48
+ children_of[o.parent_id] << o
49
+ end
50
+
51
+ # Sort each sub-list individually
52
+ children_of.each_value do |children|
53
+ children.sort_by! &order
54
+ end
55
+
56
+ # Re-join them into a single list
57
+ results = []
58
+ recombine_lists(results, children_of, nil)
59
+
60
+ results
61
+ end
62
+
63
+ def recombine_lists(results, children_of, parent_id)
64
+ if children_of[parent_id]
65
+ children_of[parent_id].each do |o|
66
+ results << o
67
+ recombine_lists(results, children_of, o.id)
68
+ end
69
+ end
70
+ end
71
+
72
+ end
73
+ end
@@ -0,0 +1,13 @@
1
+ module HowTo
2
+ class AdminUser < ActiveRecord::Base
3
+ # Include default devise modules. Others available are:
4
+ # :token_authenticatable, :confirmable,
5
+ # :lockable, :timeoutable and :omniauthable
6
+ devise :database_authenticatable,
7
+ :recoverable, :rememberable, :trackable, :validatable
8
+
9
+ # Setup accessible (or protected) attributes for your model
10
+ attr_accessible :email, :password, :password_confirmation, :remember_me
11
+ # attr_accessible :title, :body
12
+ end
13
+ end
@@ -0,0 +1,32 @@
1
+ module HowTo
2
+ class Content < ActiveRecord::Base
3
+ validates :title, :presence => true
4
+ validates :section, :presence => true
5
+ validates :description, :presence => true
6
+
7
+ translates :title, :description
8
+ belongs_to :section, :counter_cache => true
9
+ scope :active, where(active: true)
10
+
11
+ before_save :fix_counter_cache, :if => ->(c) { !c.new_record? && c.section_id_changed? }
12
+
13
+
14
+ include TranslationUtil
15
+ allow_multi_locales_edit(*I18n.available_locales)
16
+
17
+ class Translation
18
+ attr_accessible :locale, :title, :description
19
+ end
20
+
21
+ private
22
+
23
+ def fix_counter_cache
24
+ Section.decrement_counter(:contents_count, self.section_id_was)
25
+ Section.increment_counter(:contents_count, self.section_id)
26
+ end
27
+
28
+ def mass_assignment_authorizer(role = :default)
29
+ self.class.protected_attributes
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,29 @@
1
+ module HowTo
2
+ class Section < ActiveRecord::Base
3
+ validates :name, :presence => true
4
+
5
+ translates :name
6
+ acts_as_nested_set
7
+
8
+ has_many :contents, :dependent => :destroy
9
+
10
+ include HowTo::TranslationUtil
11
+ allow_multi_locales_edit(*I18n.available_locales)
12
+
13
+ scope :active, where(active: true)
14
+ scope :roots_only, where(:parent_id => nil)
15
+ scope :without, ->(id) { where("id <> ? ", id) if id.present?}
16
+ scope :with_content, where("contents_count > 0")
17
+ scope :ordered, order("`order` ASC")
18
+
19
+ class Translation
20
+ attr_accessible :locale, :name
21
+ end
22
+
23
+ private
24
+
25
+ def mass_assignment_authorizer(role = :default)
26
+ self.class.protected_attributes
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,70 @@
1
+ module HowTo
2
+ module TranslationUtil
3
+
4
+ def self.included(base)
5
+ base.extend ClassMethods
6
+ end
7
+
8
+ module ClassMethods
9
+
10
+ def allow_multi_locales_edit(*locales)
11
+ if defined?(self.translated_attribute_names)
12
+
13
+ # Find globalize translatable fields
14
+ fields = self.translated_attribute_names || []
15
+
16
+ # Specially format them with i18n_LOCALE_FIELD_NAME
17
+ i18n_fields = fields.collect { |f| locales.collect { |l| "i18n_#{l.to_s}_#{f}".to_sym } }.flatten
18
+
19
+ # Store global configuration
20
+ @@i18n_multi_edit_options ||= {}
21
+
22
+ include InstanceMethods
23
+
24
+ i18n_fields.each do |field|
25
+ @@i18n_multi_edit_options[field] ||= field.to_s.split('_').collect(&:to_sym)
26
+
27
+ self.__send__ :define_method, field do
28
+ get_i18nize_value(@@i18n_multi_edit_options[field])
29
+ end
30
+
31
+ self.__send__ :define_method, "#{field.to_s}=".to_sym do |value|
32
+ set_i18nize_value(@@i18n_multi_edit_options[field], value)
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+ end
39
+
40
+ module InstanceMethods
41
+ # Set method for I18nize call, so it will automatically store current
42
+ # locale and set the desire locale then rollback to the active one.
43
+ def i18nize_call(locale, &block)
44
+ active_locale = I18n.locale.to_s
45
+ I18n.locale = locale
46
+
47
+ result = block.call()
48
+
49
+ I18n.locale = active_locale
50
+ result
51
+ end
52
+
53
+ # Execute in the field accessor
54
+ def get_i18nize_value(field_parts)
55
+ i18nize_call(field_parts[1]) do
56
+ field_name = field_parts.to_a.join('_')
57
+ self.__send__ field_name[8..-1].to_sym
58
+ end
59
+ end
60
+
61
+ # Set the field value
62
+ def set_i18nize_value(field_parts, value)
63
+ i18nize_call(field_parts[1]) do
64
+ field_name = field_parts.to_a.join('_')
65
+ self.__send__ "#{field_name[8..-1].to_s}=", value
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,84 @@
1
+ <script type="text/javascript">
2
+ <% if HowTo.config.rich_text_enabled && params[:rich_text_enabled].nil? %>
3
+ location.href = "<%= "/editor" + request.path + "?rich_text_enabled=1"%>"
4
+ <% end %>
5
+
6
+ jQuery(window).on('mercury:ready', function () {
7
+
8
+ $('#how_to_content_submit').on('click', function () {
9
+ $.each($('[contenteditable=true]'), function () {
10
+ if ($(this).attr('target_id')) {
11
+ $('#' + $(this).attr('target_id')).val($(this).html())
12
+ }
13
+ });
14
+ Mercury.changes = false;
15
+ });
16
+
17
+ Mercury.PageEditor.prototype.save = function () {
18
+ Mercury.changes = false;
19
+ $('#how_to_content_submit').trigger('click');
20
+ }
21
+
22
+ });
23
+
24
+ </script>
25
+
26
+ <%= form_for @content, :html => {:class => 'form-horizontal'} do |f| %>
27
+ <fieldset>
28
+ <legend><%= controller.action_name.capitalize %> Content</legend>
29
+
30
+ <div class="control-group">
31
+ <%= f.label :section, :class => 'control-label' %>
32
+ <div class="controls">
33
+ <%= f.select :section_id, HowTo::Section.leaves.active.collect { |c| [c.name, c.id] }, {:prompt => 'select'}, :'chosen-enabled' => true %>
34
+ </div>
35
+ </div>
36
+
37
+ <% I18n.available_locales.each do |locale| %>
38
+ <div class="control-group">
39
+ <%= f.label :title, "Title for #{locale}", :class => 'control-label' %>
40
+ <div class="controls">
41
+ <% if HowTo.config.rich_text_enabled %>
42
+ <div target_id="<%= "content_i18n_#{locale.to_s}_title" %>" contenteditable="true" data-mercury="full">
43
+ <%= raw f.object.send("i18n_#{locale.to_s}_title".to_sym) %>
44
+ </div>
45
+ <%= f.hidden_field "i18n_#{locale.to_s}_title", :class => 'text_field' %>
46
+ <% else %>
47
+ <%= f.text_field "i18n_#{locale.to_s}_title", :class => 'text_field' %>
48
+ <% end %>
49
+ </div>
50
+ </div>
51
+ <% end %>
52
+
53
+ <% I18n.available_locales.each do |locale| %>
54
+ <div class="control-group">
55
+ <%= f.label :description, "Description for #{locale}", :class => 'control-label' %>
56
+ <div class="controls">
57
+ <% if HowTo.config.rich_text_enabled %>
58
+ <div target_id="<%= "content_i18n_#{locale.to_s}_description" %>" contenteditable="true" data-mercury="full">
59
+ <%= raw f.object.send("i18n_#{locale.to_s}_description".to_sym) %>
60
+ </div>
61
+
62
+ <%= f.hidden_field "i18n_#{locale.to_s}_description", :class => 'text_field' %>
63
+ <% else %>
64
+ <%= f.text_area "i18n_#{locale.to_s}_description", :class => 'text_field' %>
65
+ <% end %>
66
+ </div>
67
+ </div>
68
+ <% end %>
69
+
70
+
71
+ <div class="control-group">
72
+ <%= f.label :order, :class => 'control-label' %>
73
+ <div class="controls">
74
+ <%= f.text_field :order, :class => 'text_field' %>
75
+ </div>
76
+ </div>
77
+ <div class="form-actions">
78
+ <%= f.submit nil, :class => 'btn btn-primary', id: 'how_to_content_submit' %>
79
+ <%= link_to 'Cancel', contents_path, :class => 'btn' %>
80
+ </div>
81
+ </fieldset>
82
+ <% end %>
83
+
84
+
@@ -0,0 +1 @@
1
+ <%= render :partial => 'form' %>
@@ -0,0 +1,24 @@
1
+ <h1>Contents</h1>
2
+ <table class="table table-striped">
3
+ <thead>
4
+ <tr>
5
+ <th>Title</th>
6
+ <th>Section</th>
7
+ <th>Actions</th>
8
+ </tr>
9
+ </thead>
10
+ <tbody>
11
+ <% @contents.each do |content| %>
12
+ <tr>
13
+ <td><%= link_to content.title, content_path(content) %></td>
14
+ <td><%= content.section.name %></td>
15
+ <td>
16
+ <%= link_to 'Edit', edit_content_path(content), :class => 'btn btn-mini' %>
17
+ <%= link_to 'Destroy', content_path(content), :method => :delete, :confirm => 'Are you sure?', :class => 'btn btn-mini btn-danger' %>
18
+ </td>
19
+ </tr>
20
+ <% end %>
21
+ </tbody>
22
+ </table>
23
+
24
+ <%= link_to 'New', new_content_path, :class => 'btn btn-primary' %>
@@ -0,0 +1 @@
1
+ <%= render :partial => 'form' %>
@@ -0,0 +1,22 @@
1
+ <h1>Content</h1>
2
+
3
+ <p>
4
+ <b>Title</b><br>
5
+ <%= @content.title %>
6
+ </p>
7
+
8
+ <p>
9
+ <b>Description</b><br>
10
+ <%= @content.description.html_safe %>
11
+ </p>
12
+
13
+ <p>
14
+ <b>Active</b><br>
15
+ <%= @content.active %>
16
+ </p>
17
+
18
+ <div class="form-actions">
19
+ <%= link_to 'Back', contents_path, :class => 'btn' %>
20
+ <%= link_to 'Edit', edit_content_path(@content), :class => 'btn' %>
21
+ <%= link_to 'Delete', content_path(@content), :method => 'delete', :confirm => 'Are you sure?', :class => 'btn btn-danger' %>
22
+ </div>