rich 0.0.8 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (382) hide show
  1. data/README.rdoc +85 -17
  2. data/app/assets/images/rich/document-thumb.png +0 -0
  3. data/app/assets/images/rich/files.png +0 -0
  4. data/app/assets/images/rich/images.png +0 -0
  5. data/app/assets/images/rich/rich.png +0 -0
  6. data/app/assets/images/rich/view-grid.png +0 -0
  7. data/app/assets/images/rich/view-list.png +0 -0
  8. data/app/assets/javascripts/rich/base.js +1 -1
  9. data/app/assets/javascripts/rich/browser/filebrowser.js +43 -7
  10. data/app/assets/javascripts/rich/browser/uploader.js +14 -4
  11. data/app/assets/javascripts/rich/editor/rich_editor.js.erb +14 -0
  12. data/app/assets/javascripts/rich/editor/rich_picker.js +37 -0
  13. data/app/assets/stylesheets/rich/application.css.scss +79 -8
  14. data/app/controllers/rich/files_controller.rb +29 -9
  15. data/app/helpers/rich/files_helper.rb +9 -0
  16. data/app/inputs/rich_input.rb +3 -1
  17. data/app/inputs/rich_picker_input.rb +28 -0
  18. data/app/models/rich/rich_file.rb +75 -0
  19. data/app/views/rails_admin/main/_form_rich_picker.html.haml +9 -0
  20. data/app/views/rails_admin/main/_form_rich_text.html.haml +1 -1
  21. data/app/views/rich/files/_file.html.erb +11 -0
  22. data/app/views/rich/files/destroy.js.erb +1 -1
  23. data/app/views/rich/files/index.html.erb +11 -6
  24. data/app/views/rich/files/index.js.erb +1 -1
  25. data/app/views/rich/files/show.html.erb +1 -1
  26. data/config/locales/en.yml +14 -0
  27. data/config/locales/nl.yml +14 -0
  28. data/db/migrate/20111201095829_refactor_image_to_file.rb +12 -0
  29. data/lib/generators/rich/install/install_generator.rb +1 -1
  30. data/lib/generators/rich/install/templates/rich.rb.erb +24 -1
  31. data/lib/rich.rb +72 -9
  32. data/lib/rich/integrations/legacy_formtastic.rb +30 -1
  33. data/lib/rich/rails_admin/config/fields/types/rich_editor.rb +24 -0
  34. data/lib/rich/rails_admin/config/fields/types/rich_picker.rb +24 -0
  35. data/lib/rich/version.rb +1 -1
  36. data/lib/tasks/rich_tasks.rake +8 -2
  37. data/test/dummy/app/admin/posts.rb +1 -1
  38. data/test/dummy/app/assets/stylesheets/active_admin.css.scss +1 -1
  39. data/test/dummy/app/views/posts/_formtastic_form.html.erb +1 -1
  40. data/test/dummy/db/migrate/20111201102914_refactor_image_to_file.rb +12 -0
  41. data/test/dummy/db/schema.rb +7 -6
  42. data/test/dummy/log/development.log +20754 -0
  43. data/test/dummy/log/production.log +85 -0
  44. data/test/dummy/tmp/cache/assets/BDC/DF0/sprockets%2F556859632756792340573f0b7d7937d4 +0 -0
  45. data/test/dummy/tmp/cache/assets/C1F/C60/sprockets%2F7b73e1441b6f7263843099067b02b373 +9268 -0
  46. data/test/dummy/tmp/cache/assets/C30/5E0/sprockets%2Fd046349704d63c4f7853d970b1457397 +0 -0
  47. data/test/dummy/tmp/cache/assets/C49/500/sprockets%2F72473c15cf2e294b25b1823e82954031 +0 -0
  48. data/test/dummy/tmp/cache/assets/C4C/210/sprockets%2Fd5b6577c132f039977bb7f2561202250 +0 -0
  49. data/test/dummy/tmp/cache/assets/C52/310/sprockets%2Ff762b28ba923692a96b2f13464470741 +0 -0
  50. data/test/dummy/tmp/cache/assets/C59/540/sprockets%2F52900d0447866f0a89713df578bb9314 +0 -0
  51. data/test/dummy/tmp/cache/assets/C7D/C40/sprockets%2Fc99034ce618e1228e662c007671f2a53 +0 -0
  52. data/test/dummy/tmp/cache/assets/C7F/FF0/sprockets%2F82f2b657d820136e754f0803a44a078f +0 -0
  53. data/test/dummy/tmp/cache/assets/C85/380/sprockets%2F53a7b57361807c68e79e068a40273c0e +0 -0
  54. data/test/dummy/tmp/cache/assets/C86/890/sprockets%2F02721682e0d48a5588bd271564d6af95 +0 -0
  55. data/test/dummy/tmp/cache/assets/C8A/CB0/sprockets%2F40f88a2196119159fe653124ef537c5e +0 -0
  56. data/test/dummy/tmp/cache/assets/C8C/9D0/sprockets%2F8b92e270ee72a59828b93834f64403b3 +0 -0
  57. data/test/dummy/tmp/cache/assets/C8C/B80/sprockets%2F371bf96e99717688ed7313a0c53f4212 +0 -0
  58. data/test/dummy/tmp/cache/assets/C8E/810/sprockets%2F4d893143373812f4f7ec8a566575b42d +11769 -0
  59. data/test/dummy/tmp/cache/assets/C9D/900/sprockets%2Fc14438207a3237290e68a48b23adbb24 +0 -0
  60. data/test/dummy/tmp/cache/assets/C9D/AD0/sprockets%2F9534922958d0e57f02ca7a68bb887878 +0 -0
  61. data/test/dummy/tmp/cache/assets/C9E/C60/sprockets%2F2533ccfb67e257141e36362e252da032 +0 -0
  62. data/test/dummy/tmp/cache/assets/CA3/A50/sprockets%2F1138d3a48560705a7e596ab7bd02253b +0 -0
  63. data/test/dummy/tmp/cache/assets/CA8/010/sprockets%2F3822fe6ee82705342f2d141f13e5018d +0 -0
  64. data/test/dummy/tmp/cache/assets/CAA/210/sprockets%2F4b2006e8a7b0be91f6825c455218552e +0 -0
  65. data/test/dummy/tmp/cache/assets/CAA/4C0/sprockets%2F5b64d12f9a13a72a8495fc5154c72720 +0 -0
  66. data/test/dummy/tmp/cache/assets/CAE/440/sprockets%2F31dc3464893dd5a7734a257022bf9a37 +0 -0
  67. data/test/dummy/tmp/cache/assets/CAF/F40/sprockets%2F120428867690edf2aacb690455b7941b +0 -0
  68. data/test/dummy/tmp/cache/assets/CB0/600/sprockets%2F721bd25e8fdb60735b9076b6004d8672 +0 -0
  69. data/test/dummy/tmp/cache/assets/CB0/9C0/sprockets%2F70533e8bf04740f964137b3a7d1ef580 +0 -0
  70. data/test/dummy/tmp/cache/assets/CB0/F40/sprockets%2F539d1dd471483a311391ef9c03474cf6 +0 -0
  71. data/test/dummy/tmp/cache/assets/CBE/A80/sprockets%2F60bb9087aed9745744925f6ce01525d9 +0 -0
  72. data/test/dummy/tmp/cache/assets/CC0/EE0/sprockets%2Fcf58860c06a91287b88fec141c768661 +0 -0
  73. data/test/dummy/tmp/cache/assets/CC2/680/sprockets%2F246dc8445ce003f6b944c6c1796769d7 +0 -0
  74. data/test/dummy/tmp/cache/assets/CC6/910/sprockets%2Fdf1992311ede6a7259c057589a7b6984 +0 -0
  75. data/test/dummy/tmp/cache/assets/CC7/220/sprockets%2Fd066c004d1fd26ae76a61303a7a18145 +0 -0
  76. data/test/dummy/tmp/cache/assets/CC9/FB0/sprockets%2Fb265a0c8713c462a3dab42a043592c84 +307 -0
  77. data/test/dummy/tmp/cache/assets/CCC/800/sprockets%2F655e3dff9911f7527f1787fd951c4471 +0 -0
  78. data/test/dummy/tmp/cache/assets/CCE/3D0/sprockets%2F7c053a0e37e4109846266a0a686acb0a +0 -0
  79. data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  80. data/test/dummy/tmp/cache/assets/CDB/040/sprockets%2Fc732474e67003a4eb840eb44c5ca9385 +0 -0
  81. data/test/dummy/tmp/cache/assets/CDC/C20/sprockets%2F3371b9d597c9e502ffda24060240ac87 +0 -0
  82. data/test/dummy/tmp/cache/assets/CDE/720/sprockets%2Fc5b9143c5e46515e7453e0592b0fa57c +0 -0
  83. data/test/dummy/tmp/cache/assets/CDF/090/sprockets%2F548c7b3eb20c97746a1e776b10923bd4 +0 -0
  84. data/test/dummy/tmp/cache/assets/CE0/F70/sprockets%2F5f626eb3d0e9861907861afe5612a00f +0 -0
  85. data/test/dummy/tmp/cache/assets/CE1/450/sprockets%2Fadebe57961c73b59a91430d19030686d +0 -0
  86. data/test/dummy/tmp/cache/assets/CE3/4D0/sprockets%2F19e11e8ad7217476a1e8b184ee290f09 +0 -0
  87. data/test/dummy/tmp/cache/assets/CE4/D20/sprockets%2F7a924cdc374439e3f1f48d1d527b3219 +0 -0
  88. data/test/dummy/tmp/cache/assets/CE5/5B0/sprockets%2F9ba69a933006592e5570cf6e60a86b2e +0 -0
  89. data/test/dummy/tmp/cache/assets/CE8/6E0/sprockets%2F8923777ce0d4b72fb555e68172a2cb64 +0 -0
  90. data/test/dummy/tmp/cache/assets/CE9/260/sprockets%2F20e1d59afc58e2ba50296184927fd568 +0 -0
  91. data/test/dummy/tmp/cache/assets/CE9/B80/sprockets%2F5b2c5115ef4f940777455ffec4f26073 +0 -0
  92. data/test/dummy/tmp/cache/assets/CEA/440/sprockets%2F8b65d70b39a1927cb624378db39f08f3 +0 -0
  93. data/test/dummy/tmp/cache/assets/CEC/1A0/sprockets%2F87fdead6014b961bb870b5931890d677 +0 -0
  94. data/test/dummy/tmp/cache/assets/CEE/110/sprockets%2F9c44152dd57a39d850579fabc8692f40 +0 -0
  95. data/test/dummy/tmp/cache/assets/CF0/1D0/sprockets%2F6fc757c2c8329244ca95d6909865bbc2 +0 -0
  96. data/test/dummy/tmp/cache/assets/CF4/B80/sprockets%2F79b2eff4a92bc95d9490229d2737176d +0 -0
  97. data/test/dummy/tmp/cache/assets/CF5/FF0/sprockets%2F32d199874dd68096ea89a599ab51f20e +0 -0
  98. data/test/dummy/tmp/cache/assets/CF6/9E0/sprockets%2Ff3c0e6e191993ce3d97cb35929d18197 +0 -0
  99. data/test/dummy/tmp/cache/assets/CFA/FF0/sprockets%2Fa6545f61c7de6879eb67484098a462cf +0 -0
  100. data/test/dummy/tmp/cache/assets/CFF/D50/sprockets%2F5550c747d02b158061172ceb65bc6dbb +0 -0
  101. data/test/dummy/tmp/cache/assets/D01/100/sprockets%2Fc75ebeede3097141291c1070d9d8100b +0 -0
  102. data/test/dummy/tmp/cache/assets/D01/560/sprockets%2F04a744ea7118f43a7a27c24bcd642e71 +0 -0
  103. data/test/dummy/tmp/cache/assets/D01/980/sprockets%2F47c7e52f43c37ea9a1731f0400c393aa +0 -0
  104. data/test/dummy/tmp/cache/assets/D03/830/sprockets%2Fa883e61c251d3594df4b1124ed4390aa +0 -0
  105. data/test/dummy/tmp/cache/assets/D09/620/sprockets%2Fa6d2b19ed539a48b468f02d4f2102e45 +0 -0
  106. data/test/dummy/tmp/cache/assets/D0C/C50/sprockets%2F3625e72a23ca59eb4f502a18a854fb86 +0 -0
  107. data/test/dummy/tmp/cache/assets/D0E/970/sprockets%2Ff4346553df4bcb0293ec44436ceb7445 +0 -0
  108. data/test/dummy/tmp/cache/assets/D0F/670/sprockets%2F2ca830c5963fe95210485673db1ede1e +0 -0
  109. data/test/dummy/tmp/cache/assets/D0F/990/sprockets%2Ff5faa1c930c6257f1866de553d1309c4 +0 -0
  110. data/test/dummy/tmp/cache/assets/D11/D20/sprockets%2Fcac21eac42152981882bf9e489316af4 +0 -0
  111. data/test/dummy/tmp/cache/assets/D14/100/sprockets%2F7e25f5a9675206617b385bcacee2c428 +0 -0
  112. data/test/dummy/tmp/cache/assets/D14/B10/sprockets%2Ff38863f0920a58989fac3b39b01a8ae0 +0 -0
  113. data/test/dummy/tmp/cache/assets/D15/F40/sprockets%2F83d1a8006e470e79f75592d63bdedc04 +0 -0
  114. data/test/dummy/tmp/cache/assets/D16/2E0/sprockets%2F8d4a269edb493c2533fc8900fce71670 +377 -0
  115. data/test/dummy/tmp/cache/assets/D19/CB0/sprockets%2Fcac38332595f72fe9156b55d1f55c92b +0 -0
  116. data/test/dummy/tmp/cache/assets/D19/E50/sprockets%2F76c630d6dbc0fdb45dc92c6919912585 +0 -0
  117. data/test/dummy/tmp/cache/assets/D1F/840/sprockets%2F3f6d2f8168b95fd5064838cfb05c5d54 +151 -0
  118. data/test/dummy/tmp/cache/assets/D2B/F50/sprockets%2Fe26eda13a54cd6200413fd8245a5e36b +0 -0
  119. data/test/dummy/tmp/cache/assets/D2D/C50/sprockets%2Fb754067a20e1232dd039ba2a7bb79b6e +0 -0
  120. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  121. data/test/dummy/tmp/cache/assets/D34/5C0/sprockets%2F904c9b8fddca30f8ac0061367513f2d2 +0 -0
  122. data/test/dummy/tmp/cache/assets/D37/480/sprockets%2F101629fc7aaf58f0f21aa7f976d2b313 +0 -0
  123. data/test/dummy/tmp/cache/assets/D38/540/sprockets%2F86e1ad844bc9df4491a2a52b870421db +0 -0
  124. data/test/dummy/tmp/cache/assets/D38/680/sprockets%2F60a41a53a3c2d1b9fecd7564d1b58576 +0 -0
  125. data/test/dummy/tmp/cache/assets/D3B/9D0/sprockets%2Fbe23efc42b103a6190e6b77e0aa86888 +0 -0
  126. data/test/dummy/tmp/cache/assets/D3B/C70/sprockets%2Ff704fd927eb4b431ebbb078964ad1082 +0 -0
  127. data/test/dummy/tmp/cache/assets/D3C/B00/sprockets%2Fd53dbcc52e2c652b4497a294950a7a5d +374 -0
  128. data/test/dummy/tmp/cache/assets/D3D/050/sprockets%2Fb7e69babfa0dff58209608f29b552030 +0 -0
  129. data/test/dummy/tmp/cache/assets/D3D/E80/sprockets%2Fa0d6f8e7278aef19b2336504eca13c93 +0 -0
  130. data/test/dummy/tmp/cache/assets/D40/7E0/sprockets%2Fb6a18ca76fb24ff0c70582a662279ec5 +0 -0
  131. data/test/dummy/tmp/cache/assets/D40/890/sprockets%2Fb5f7db789c0a7be80044024f44b9b9a5 +0 -0
  132. data/test/dummy/tmp/cache/assets/D41/F40/sprockets%2F796e91edd36a9a6525ddf19120e0a92a +0 -0
  133. data/test/dummy/tmp/cache/assets/D43/3D0/sprockets%2F8ada471f7421754fee5fbf924129fc02 +0 -0
  134. data/test/dummy/tmp/cache/assets/D44/910/sprockets%2F996b6126fafeeda6ada2b06912997071 +0 -0
  135. data/test/dummy/tmp/cache/assets/D45/740/sprockets%2F8c6505fad3328da88838a2038f1cee7b +0 -0
  136. data/test/dummy/tmp/cache/assets/D48/640/sprockets%2F9f4f18d910b678b1d0777e04cdaf6f24 +0 -0
  137. data/test/dummy/tmp/cache/assets/D48/C10/sprockets%2Fec51b108f6592519a995dbe35e933eac +0 -0
  138. data/test/dummy/tmp/cache/assets/D4D/C00/sprockets%2Fe86d496cf8d0e8428d8b31932f61cd2a +0 -0
  139. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  140. data/test/dummy/tmp/cache/assets/D50/D70/sprockets%2F13297c9f3a654ebe511fc93c9c7d974c +0 -0
  141. data/test/dummy/tmp/cache/assets/D50/F20/sprockets%2Fcf6ca517cd1745586b9190ffd974d53d +0 -0
  142. data/test/dummy/tmp/cache/assets/D51/0E0/sprockets%2F7c2fe2f837656b4be38c13cc949de744 +0 -0
  143. data/test/dummy/tmp/cache/assets/D53/AD0/sprockets%2Fd2a61d9e43bef9b3da304613b31151aa +0 -0
  144. data/test/dummy/tmp/cache/assets/D54/C50/sprockets%2F011c250cecb491f0716c2d35db11d5ef +0 -0
  145. data/test/dummy/tmp/cache/assets/D54/ED0/sprockets%2F71c9fa01091d432b131da3bb73faf3d4 +2892 -0
  146. data/test/dummy/tmp/cache/assets/D56/060/sprockets%2F3cc85144bd659faafd4ba12514a04a41 +0 -0
  147. data/test/dummy/tmp/cache/assets/D58/3E0/sprockets%2Fc24b0c6ca152dc28e8d957a036d10bc1 +0 -0
  148. data/test/dummy/tmp/cache/assets/D58/8C0/sprockets%2Fd09d3bf86be5ae1a3d698a89d5937765 +11772 -0
  149. data/test/dummy/tmp/cache/assets/D59/D70/sprockets%2Fed9f0de1b65ae8d7ef89087c83728461 +0 -0
  150. data/test/dummy/tmp/cache/assets/D59/FD0/sprockets%2Ff3ed2c82c99fe2e39994837f0aa8346d +0 -0
  151. data/test/dummy/tmp/cache/assets/D5A/DA0/sprockets%2Fd1c25b1bd44d0def57ce592c912100f1 +0 -0
  152. data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  153. data/test/dummy/tmp/cache/assets/D68/3B0/sprockets%2Fe0ac076b844e6c350abc027feb685e91 +0 -0
  154. data/test/dummy/tmp/cache/assets/D69/3A0/sprockets%2Fc2e8be30894dbf2c5ae343b31d4581a9 +573 -0
  155. data/test/dummy/tmp/cache/assets/D6B/1F0/sprockets%2F00c187e6cd48781decdecbd7852441a0 +0 -0
  156. data/test/dummy/tmp/cache/assets/D6D/950/sprockets%2Fb9497be057cbca0f3561346f1b9e3c6a +0 -0
  157. data/test/dummy/tmp/cache/assets/D6E/210/sprockets%2F359f7abf641c19fbd07d5b1574f1db43 +21419 -0
  158. data/test/dummy/tmp/cache/assets/D6F/5B0/sprockets%2Fc0a3a580c584caaa292d939c2d999b2f +0 -0
  159. data/test/dummy/tmp/cache/assets/D70/1D0/sprockets%2F1920e0a4ad06e9d71d89f3cecd56084e +0 -0
  160. data/test/dummy/tmp/cache/assets/D70/620/sprockets%2Fb7a0b3fec35d697aaa981766c325d9b1 +0 -0
  161. data/test/dummy/tmp/cache/assets/D76/CF0/sprockets%2F7ec2368edb7eb22a3fd702a4272e9e89 +0 -0
  162. data/test/dummy/tmp/cache/assets/D77/020/sprockets%2Fad98cede2e30585e158452e7cd60ab86 +1248 -0
  163. data/test/dummy/tmp/cache/assets/D77/1C0/sprockets%2F1bf243b62a7f5d6ac4869d168f8f12fc +0 -0
  164. data/test/dummy/tmp/cache/assets/D77/720/sprockets%2F290ce7610778fe1fcd773c5a0f15dce9 +0 -0
  165. data/test/dummy/tmp/cache/assets/D78/5E0/sprockets%2Fd8e4db6d4b7de69d0d28f4a627124f81 +0 -0
  166. data/test/dummy/tmp/cache/assets/D7A/110/sprockets%2F9bb282830e134ce5eff5c3f880be48f5 +0 -0
  167. data/test/dummy/tmp/cache/assets/D7C/B80/sprockets%2Fe00c543f5cfb7825e52c7bf6d299cf38 +0 -0
  168. data/test/dummy/tmp/cache/assets/D80/150/sprockets%2F7afe167cbf94db99ac6b348b7119666b +0 -0
  169. data/test/dummy/tmp/cache/assets/D80/6E0/sprockets%2F69e017aaae756eafe9df386c5048a587 +0 -0
  170. data/test/dummy/tmp/cache/assets/D80/CD0/sprockets%2Fe77d6be07ff62e4fc47e35d4c04d8853 +0 -0
  171. data/test/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384 +9856 -0
  172. data/test/dummy/tmp/cache/assets/D89/1E0/sprockets%2F7ff9a89d965da98dae31182c3776ec3c +0 -0
  173. data/{app/assets/javascripts/rich/editor/rich_finder.js → test/dummy/tmp/cache/assets/D89/D60/sprockets%2F3f311ef8cee787d7b7c3816c8be3e877} +0 -0
  174. data/test/dummy/tmp/cache/assets/D93/4C0/sprockets%2F857ecd2092cee11f740b3cf2e373ad2a +0 -0
  175. data/test/dummy/tmp/cache/assets/D93/890/sprockets%2F033c6ea07a61dbd408ba2bf8e99b518a +8 -0
  176. data/test/dummy/tmp/cache/assets/D99/8B0/sprockets%2F751a6a4f71b2d265b1a2ba69fe74da9e +0 -0
  177. data/test/dummy/tmp/cache/assets/D99/D70/sprockets%2Ff9bd12f1c79a65cab71c8864b2bb7c02 +0 -0
  178. data/test/dummy/tmp/cache/assets/D9C/A50/sprockets%2Fcbb2164ecd3fee434313cf6a874c71e8 +0 -0
  179. data/test/dummy/tmp/cache/assets/D9C/CD0/sprockets%2Fc85016e7bbd4f3adbb7635d01f85d39b +0 -0
  180. data/test/dummy/tmp/cache/assets/D9E/8A0/sprockets%2F0a7eeed4a8f1f8254832ab05ebc45f84 +0 -0
  181. data/test/dummy/tmp/cache/assets/DA2/F30/sprockets%2F44366f00cea4ca9d9aec7871db971c2f +0 -0
  182. data/test/dummy/tmp/cache/assets/DA5/970/sprockets%2F4f833dc8b08deda7bb67ec9c3252539a +0 -0
  183. data/test/dummy/tmp/cache/assets/DAC/680/sprockets%2F97a78e23ce5e82b751cd7cc583dfa55b +0 -0
  184. data/test/dummy/tmp/cache/assets/DBF/180/sprockets%2F19427ba0edb6b1c15eaaf43afd73e617 +15 -0
  185. data/test/dummy/tmp/cache/assets/DC1/330/sprockets%2F0ca5e4ab25ba6b584b50c681b2e2f8ef +0 -0
  186. data/test/dummy/tmp/cache/assets/DCD/050/sprockets%2F96e3d58bfbeb0b900f3b37cd320a9fc9 +0 -0
  187. data/test/dummy/tmp/cache/assets/DD6/330/sprockets%2F7ca77285ccddf7fdab491480fde7c151 +0 -0
  188. data/test/dummy/tmp/cache/assets/DD7/B50/sprockets%2F7effa89c4b23ab60109f969a9a66ccbc +0 -0
  189. data/test/dummy/tmp/cache/assets/DD8/2D0/sprockets%2Fc7f10cddd3a3cdccc64580ca85795f99 +0 -0
  190. data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  191. data/test/dummy/tmp/cache/assets/DDE/420/sprockets%2Ffb8b186d5bf0307f86f65fc787d2adeb +0 -0
  192. data/test/dummy/tmp/cache/assets/DDE/960/sprockets%2Ff3399fed917fb2a6f8ff71d4d1ae21b9 +0 -0
  193. data/test/dummy/tmp/cache/assets/DDE/C10/sprockets%2Fccddf7e521c7c7579f81ce8bcdf24616 +0 -0
  194. data/test/dummy/tmp/cache/assets/DEE/140/sprockets%2F9e7b9f2cc1e4af0aac3a2c630a6823bf +0 -0
  195. data/test/dummy/tmp/cache/assets/DF7/EE0/sprockets%2F661abfd8ab8ddb966ccded48ca100623 +0 -0
  196. data/test/dummy/tmp/cache/assets/DFA/FD0/sprockets%2Fae353fbfac66799b1b2b673cd0ee2dd2 +0 -0
  197. data/test/dummy/tmp/cache/assets/DFD/D40/sprockets%2Fe7a99039c5f62b2b81b1e2acdbfea79a +0 -0
  198. data/test/dummy/tmp/cache/assets/DFF/4D0/sprockets%2F0d7eae306cc4e83ae549e96b1b6da8db +0 -0
  199. data/test/dummy/tmp/cache/assets/E01/310/sprockets%2F2d73ac8ade85dac6e5a4cb8fe134e394 +9271 -0
  200. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  201. data/test/dummy/tmp/cache/assets/E06/920/sprockets%2F6baa37d1c26468aef4fe5fe4bf982fa3 +0 -0
  202. data/test/dummy/tmp/cache/assets/E07/B90/sprockets%2Faa8bbd5ec66e8551cb8f02e6f91ccf66 +0 -0
  203. data/test/dummy/tmp/cache/assets/E14/000/sprockets%2F22de1e18f579a2be86d077ff4f9eefec +0 -0
  204. data/test/dummy/tmp/cache/assets/E27/CE0/sprockets%2Fc6c0de9a6e495bc2d4cbaca6ce7f4331 +0 -0
  205. data/test/dummy/tmp/cache/assets/E2F/E90/sprockets%2Ff4b19e42c92a93dcaaec9fe6eae4081d +0 -0
  206. data/test/dummy/tmp/cache/assets/E32/900/sprockets%2F6b0ca247dcd97ca99e7c26becfcc08a6 +0 -0
  207. data/test/dummy/tmp/cache/assets/E96/8E0/sprockets%2Ff79a30eddcef5bc36a0f9b173fcdeee9 +0 -0
  208. data/test/dummy/tmp/cache/sass/0e3c39d5b08eff892689c4479cf5186a9f2f0f7c/_button.scssc +638 -0
  209. data/test/dummy/tmp/cache/sass/0e3c39d5b08eff892689c4479cf5186a9f2f0f7c/_font-family.scssc +0 -0
  210. data/test/dummy/tmp/cache/sass/0e3c39d5b08eff892689c4479cf5186a9f2f0f7c/_html5-input-types.scssc +0 -0
  211. data/test/dummy/tmp/cache/sass/0e3c39d5b08eff892689c4479cf5186a9f2f0f7c/_position.scssc +0 -0
  212. data/test/dummy/tmp/cache/sass/0e3c39d5b08eff892689c4479cf5186a9f2f0f7c/_timing-functions.scssc +0 -0
  213. data/test/dummy/tmp/cache/sass/10a2955f213af1d8238dbb23fd738e9a4b6227d9/_bourbon.scssc +0 -0
  214. data/test/dummy/tmp/cache/sass/1695f59014a98620e6303adfb5b409c258c2b87a/_dashboard.scssc +0 -0
  215. data/test/dummy/tmp/cache/sass/1695f59014a98620e6303adfb5b409c258c2b87a/_logged_out.scssc +0 -0
  216. data/test/dummy/tmp/cache/sass/2052157e4566f95baa2b8c7fde16b94c779312ff/_animation.scssc +0 -0
  217. data/test/dummy/tmp/cache/sass/2052157e4566f95baa2b8c7fde16b94c779312ff/_appearance.scssc +0 -0
  218. data/test/dummy/tmp/cache/sass/2052157e4566f95baa2b8c7fde16b94c779312ff/_background-image.scssc +0 -0
  219. data/test/dummy/tmp/cache/sass/2052157e4566f95baa2b8c7fde16b94c779312ff/_background-size.scssc +0 -0
  220. data/test/dummy/tmp/cache/sass/2052157e4566f95baa2b8c7fde16b94c779312ff/_border-image.scssc +0 -0
  221. data/test/dummy/tmp/cache/sass/2052157e4566f95baa2b8c7fde16b94c779312ff/_border-radius.scssc +0 -0
  222. data/test/dummy/tmp/cache/sass/2052157e4566f95baa2b8c7fde16b94c779312ff/_box-shadow.scssc +0 -0
  223. data/test/dummy/tmp/cache/sass/2052157e4566f95baa2b8c7fde16b94c779312ff/_box-sizing.scssc +0 -0
  224. data/test/dummy/tmp/cache/sass/2052157e4566f95baa2b8c7fde16b94c779312ff/_columns.scssc +0 -0
  225. data/test/dummy/tmp/cache/sass/2052157e4566f95baa2b8c7fde16b94c779312ff/_flex-box.scssc +0 -0
  226. data/test/dummy/tmp/cache/sass/2052157e4566f95baa2b8c7fde16b94c779312ff/_inline-block.scssc +0 -0
  227. data/test/dummy/tmp/cache/sass/2052157e4566f95baa2b8c7fde16b94c779312ff/_linear-gradient.scssc +0 -0
  228. data/test/dummy/tmp/cache/sass/2052157e4566f95baa2b8c7fde16b94c779312ff/_radial-gradient.scssc +0 -0
  229. data/test/dummy/tmp/cache/sass/2052157e4566f95baa2b8c7fde16b94c779312ff/_transform.scssc +0 -0
  230. data/test/dummy/tmp/cache/sass/2052157e4566f95baa2b8c7fde16b94c779312ff/_transition.scssc +0 -0
  231. data/test/dummy/tmp/cache/sass/22e569f5f9a6a46172ce6b667e520ff898b354e6/_footer.scssc +0 -0
  232. data/test/dummy/tmp/cache/sass/22e569f5f9a6a46172ce6b667e520ff898b354e6/_main_structure.scssc +0 -0
  233. data/test/dummy/tmp/cache/sass/22e569f5f9a6a46172ce6b667e520ff898b354e6/_title_bar.scssc +0 -0
  234. data/test/dummy/tmp/cache/sass/3dd666eb272786a803aea8ddaa457a8eb0afd8f8/_base.css.scssc +0 -0
  235. data/test/dummy/tmp/cache/sass/3dd666eb272786a803aea8ddaa457a8eb0afd8f8/_forms.css.scssc +0 -0
  236. data/test/dummy/tmp/cache/sass/3dd666eb272786a803aea8ddaa457a8eb0afd8f8/_header.css.scssc +0 -0
  237. data/test/dummy/tmp/cache/sass/3dd666eb272786a803aea8ddaa457a8eb0afd8f8/_mixins.css.scssc +0 -0
  238. data/test/dummy/tmp/cache/sass/3dd666eb272786a803aea8ddaa457a8eb0afd8f8/_typography.css.scssc +0 -0
  239. data/test/dummy/tmp/cache/sass/463698979fe84b26be7fc6c518f754b41fb9510f/_dashboard.scssc +0 -0
  240. data/test/dummy/tmp/cache/sass/463698979fe84b26be7fc6c518f754b41fb9510f/_logged_out.scssc +0 -0
  241. data/test/dummy/tmp/cache/sass/48ab97917cfe839fea6deb0ddbb38dd815e0a960/_deprecated-webkit-gradient.scssc +0 -0
  242. data/test/dummy/tmp/cache/sass/48ab97917cfe839fea6deb0ddbb38dd815e0a960/_grid-width.scssc +0 -0
  243. data/test/dummy/tmp/cache/sass/48ab97917cfe839fea6deb0ddbb38dd815e0a960/_linear-gradient.scssc +0 -0
  244. data/test/dummy/tmp/cache/sass/48ab97917cfe839fea6deb0ddbb38dd815e0a960/_modular-scale.scssc +0 -0
  245. data/test/dummy/tmp/cache/sass/48ab97917cfe839fea6deb0ddbb38dd815e0a960/_radial-gradient.scssc +0 -0
  246. data/test/dummy/tmp/cache/sass/48ab97917cfe839fea6deb0ddbb38dd815e0a960/_tint-shade.scssc +0 -0
  247. data/test/dummy/tmp/cache/sass/49b692ec63c6b33a530aef3af5b8060898046589/_base.css.scssc +0 -0
  248. data/test/dummy/tmp/cache/sass/49b692ec63c6b33a530aef3af5b8060898046589/_forms.css.scssc +0 -0
  249. data/test/dummy/tmp/cache/sass/49b692ec63c6b33a530aef3af5b8060898046589/_header.css.scssc +0 -0
  250. data/test/dummy/tmp/cache/sass/49b692ec63c6b33a530aef3af5b8060898046589/_mixins.css.scssc +0 -0
  251. data/test/dummy/tmp/cache/sass/49b692ec63c6b33a530aef3af5b8060898046589/_typography.css.scssc +0 -0
  252. data/test/dummy/tmp/cache/sass/4cb736fd6bac26f99664803c8f4f333a6e0de9cf/_dashboard.scssc +0 -0
  253. data/test/dummy/tmp/cache/sass/4cb736fd6bac26f99664803c8f4f333a6e0de9cf/_logged_out.scssc +0 -0
  254. data/test/dummy/tmp/cache/sass/51bc76c03527c3455c1815476436728e492a5a2b/_all.css.scssc +0 -0
  255. data/test/dummy/tmp/cache/sass/51bc76c03527c3455c1815476436728e492a5a2b/_buttons.css.scssc +0 -0
  256. data/test/dummy/tmp/cache/sass/51bc76c03527c3455c1815476436728e492a5a2b/_gradients.css.scssc +0 -0
  257. data/test/dummy/tmp/cache/sass/51bc76c03527c3455c1815476436728e492a5a2b/_icons.css.scssc +0 -0
  258. data/test/dummy/tmp/cache/sass/51bc76c03527c3455c1815476436728e492a5a2b/_reset.css.scssc +0 -0
  259. data/test/dummy/tmp/cache/sass/51bc76c03527c3455c1815476436728e492a5a2b/_rounded.css.scssc +0 -0
  260. data/test/dummy/tmp/cache/sass/51bc76c03527c3455c1815476436728e492a5a2b/_sections.css.scssc +0 -0
  261. data/test/dummy/tmp/cache/sass/51bc76c03527c3455c1815476436728e492a5a2b/_shadows.css.scssc +0 -0
  262. data/test/dummy/tmp/cache/sass/51bc76c03527c3455c1815476436728e492a5a2b/_typography.scssc +0 -0
  263. data/test/dummy/tmp/cache/sass/51bc76c03527c3455c1815476436728e492a5a2b/_utilities.scssc +0 -0
  264. data/test/dummy/tmp/cache/sass/51bc76c03527c3455c1815476436728e492a5a2b/_variables.css.scssc +0 -0
  265. data/test/dummy/tmp/cache/sass/5e81f95379950dbb011f401338a8ee3d990fc77f/_blank_slates.scssc +0 -0
  266. data/test/dummy/tmp/cache/sass/5e81f95379950dbb011f401338a8ee3d990fc77f/_breadcrumbs.scssc +0 -0
  267. data/test/dummy/tmp/cache/sass/5e81f95379950dbb011f401338a8ee3d990fc77f/_buttons.scssc +0 -0
  268. data/test/dummy/tmp/cache/sass/5e81f95379950dbb011f401338a8ee3d990fc77f/_columns.scssc +0 -0
  269. data/test/dummy/tmp/cache/sass/5e81f95379950dbb011f401338a8ee3d990fc77f/_comments.css.scssc +0 -0
  270. data/test/dummy/tmp/cache/sass/5e81f95379950dbb011f401338a8ee3d990fc77f/_date_picker.css.scssc +0 -0
  271. data/test/dummy/tmp/cache/sass/5e81f95379950dbb011f401338a8ee3d990fc77f/_flash_messages.css.scssc +0 -0
  272. data/test/dummy/tmp/cache/sass/5e81f95379950dbb011f401338a8ee3d990fc77f/_grid.scssc +0 -0
  273. data/test/dummy/tmp/cache/sass/5e81f95379950dbb011f401338a8ee3d990fc77f/_links.scssc +0 -0
  274. data/test/dummy/tmp/cache/sass/5e81f95379950dbb011f401338a8ee3d990fc77f/_pagination.scssc +0 -0
  275. data/test/dummy/tmp/cache/sass/5e81f95379950dbb011f401338a8ee3d990fc77f/_panels.scssc +0 -0
  276. data/test/dummy/tmp/cache/sass/5e81f95379950dbb011f401338a8ee3d990fc77f/_scopes.scssc +0 -0
  277. data/test/dummy/tmp/cache/sass/5e81f95379950dbb011f401338a8ee3d990fc77f/_status_tags.scssc +0 -0
  278. data/test/dummy/tmp/cache/sass/5e81f95379950dbb011f401338a8ee3d990fc77f/_table_tools.css.scssc +0 -0
  279. data/test/dummy/tmp/cache/sass/5e81f95379950dbb011f401338a8ee3d990fc77f/_tables.css.scssc +0 -0
  280. data/test/dummy/tmp/cache/sass/5fd23df437e14f32fee2c52fb09015cdd110836c/_footer.scssc +0 -0
  281. data/test/dummy/tmp/cache/sass/5fd23df437e14f32fee2c52fb09015cdd110836c/_main_structure.scssc +0 -0
  282. data/test/dummy/tmp/cache/sass/5fd23df437e14f32fee2c52fb09015cdd110836c/_title_bar.scssc +0 -0
  283. data/test/dummy/tmp/cache/sass/703f15c9c6546cca07f487d1186fb5d02de8b6c5/_deprecated-webkit-gradient.scssc +0 -0
  284. data/test/dummy/tmp/cache/sass/703f15c9c6546cca07f487d1186fb5d02de8b6c5/_golden-ratio.scssc +0 -0
  285. data/test/dummy/tmp/cache/sass/703f15c9c6546cca07f487d1186fb5d02de8b6c5/_grid-width.scssc +0 -0
  286. data/test/dummy/tmp/cache/sass/703f15c9c6546cca07f487d1186fb5d02de8b6c5/_linear-gradient.scssc +0 -0
  287. data/test/dummy/tmp/cache/sass/703f15c9c6546cca07f487d1186fb5d02de8b6c5/_radial-gradient.scssc +0 -0
  288. data/test/dummy/tmp/cache/sass/703f15c9c6546cca07f487d1186fb5d02de8b6c5/_tint-shade.scssc +0 -0
  289. data/test/dummy/tmp/cache/sass/78328cc8e9854f9821a766ecd76f095329f1749b/_blank_slates.scssc +0 -0
  290. data/test/dummy/tmp/cache/sass/78328cc8e9854f9821a766ecd76f095329f1749b/_breadcrumbs.scssc +0 -0
  291. data/test/dummy/tmp/cache/sass/78328cc8e9854f9821a766ecd76f095329f1749b/_buttons.scssc +0 -0
  292. data/test/dummy/tmp/cache/sass/78328cc8e9854f9821a766ecd76f095329f1749b/_comments.css.scssc +0 -0
  293. data/test/dummy/tmp/cache/sass/78328cc8e9854f9821a766ecd76f095329f1749b/_date_picker.css.scssc +0 -0
  294. data/test/dummy/tmp/cache/sass/78328cc8e9854f9821a766ecd76f095329f1749b/_flash_messages.css.scssc +0 -0
  295. data/test/dummy/tmp/cache/sass/78328cc8e9854f9821a766ecd76f095329f1749b/_grid.scssc +0 -0
  296. data/test/dummy/tmp/cache/sass/78328cc8e9854f9821a766ecd76f095329f1749b/_links.scssc +0 -0
  297. data/test/dummy/tmp/cache/sass/78328cc8e9854f9821a766ecd76f095329f1749b/_pagination.scssc +0 -0
  298. data/test/dummy/tmp/cache/sass/78328cc8e9854f9821a766ecd76f095329f1749b/_panels.scssc +0 -0
  299. data/test/dummy/tmp/cache/sass/78328cc8e9854f9821a766ecd76f095329f1749b/_scopes.scssc +0 -0
  300. data/test/dummy/tmp/cache/sass/78328cc8e9854f9821a766ecd76f095329f1749b/_status_tags.scssc +0 -0
  301. data/test/dummy/tmp/cache/sass/78328cc8e9854f9821a766ecd76f095329f1749b/_table_tools.css.scssc +0 -0
  302. data/test/dummy/tmp/cache/sass/78328cc8e9854f9821a766ecd76f095329f1749b/_tables.css.scssc +0 -0
  303. data/test/dummy/tmp/cache/sass/8f51fabb78df2b702c75ea6594ee1099c7dc8da0/_all.css.scssc +0 -0
  304. data/test/dummy/tmp/cache/sass/8f51fabb78df2b702c75ea6594ee1099c7dc8da0/_buttons.css.scssc +0 -0
  305. data/test/dummy/tmp/cache/sass/8f51fabb78df2b702c75ea6594ee1099c7dc8da0/_gradients.css.scssc +0 -0
  306. data/test/dummy/tmp/cache/sass/8f51fabb78df2b702c75ea6594ee1099c7dc8da0/_icons.css.scssc +0 -0
  307. data/test/dummy/tmp/cache/sass/8f51fabb78df2b702c75ea6594ee1099c7dc8da0/_reset.css.scssc +0 -0
  308. data/test/dummy/tmp/cache/sass/8f51fabb78df2b702c75ea6594ee1099c7dc8da0/_rounded.css.scssc +0 -0
  309. data/test/dummy/tmp/cache/sass/8f51fabb78df2b702c75ea6594ee1099c7dc8da0/_sections.css.scssc +0 -0
  310. data/test/dummy/tmp/cache/sass/8f51fabb78df2b702c75ea6594ee1099c7dc8da0/_shadows.css.scssc +0 -0
  311. data/test/dummy/tmp/cache/sass/8f51fabb78df2b702c75ea6594ee1099c7dc8da0/_typography.scssc +0 -0
  312. data/test/dummy/tmp/cache/sass/8f51fabb78df2b702c75ea6594ee1099c7dc8da0/_utilities.scssc +0 -0
  313. data/test/dummy/tmp/cache/sass/8f51fabb78df2b702c75ea6594ee1099c7dc8da0/_variables.css.scssc +0 -0
  314. data/test/dummy/tmp/cache/sass/900283fe42de098688469c0764ce87c913cf0386/_all.css.scssc +0 -0
  315. data/test/dummy/tmp/cache/sass/900283fe42de098688469c0764ce87c913cf0386/_buttons.css.scssc +0 -0
  316. data/test/dummy/tmp/cache/sass/900283fe42de098688469c0764ce87c913cf0386/_gradients.css.scssc +0 -0
  317. data/test/dummy/tmp/cache/sass/900283fe42de098688469c0764ce87c913cf0386/_icons.css.scssc +0 -0
  318. data/test/dummy/tmp/cache/sass/900283fe42de098688469c0764ce87c913cf0386/_reset.css.scssc +0 -0
  319. data/test/dummy/tmp/cache/sass/900283fe42de098688469c0764ce87c913cf0386/_rounded.css.scssc +0 -0
  320. data/test/dummy/tmp/cache/sass/900283fe42de098688469c0764ce87c913cf0386/_sections.css.scssc +0 -0
  321. data/test/dummy/tmp/cache/sass/900283fe42de098688469c0764ce87c913cf0386/_shadows.css.scssc +0 -0
  322. data/test/dummy/tmp/cache/sass/900283fe42de098688469c0764ce87c913cf0386/_typography.scssc +0 -0
  323. data/test/dummy/tmp/cache/sass/900283fe42de098688469c0764ce87c913cf0386/_utilities.scssc +0 -0
  324. data/test/dummy/tmp/cache/sass/900283fe42de098688469c0764ce87c913cf0386/_variables.css.scssc +0 -0
  325. data/test/dummy/tmp/cache/sass/9ca9a22eff91c4261249b7b40e957b81799629ba/application.css.scssc +0 -0
  326. data/test/dummy/tmp/cache/sass/9fa1a2d9195a64ca73dc2fbf42b5468fc9babf48/active_admin.css.scssc +0 -0
  327. data/test/dummy/tmp/cache/sass/af81c0a06ae64eac58d6fabd339317f7c443c9c4/_base.css.scssc +0 -0
  328. data/test/dummy/tmp/cache/sass/af81c0a06ae64eac58d6fabd339317f7c443c9c4/_forms.css.scssc +0 -0
  329. data/test/dummy/tmp/cache/sass/af81c0a06ae64eac58d6fabd339317f7c443c9c4/_header.css.scssc +0 -0
  330. data/test/dummy/tmp/cache/sass/af81c0a06ae64eac58d6fabd339317f7c443c9c4/_mixins.css.scssc +0 -0
  331. data/test/dummy/tmp/cache/sass/af81c0a06ae64eac58d6fabd339317f7c443c9c4/_typography.css.scssc +0 -0
  332. data/test/dummy/tmp/cache/sass/be977c0269905fe534e0bb091dc0901510980c8d/_footer.scssc +0 -0
  333. data/test/dummy/tmp/cache/sass/be977c0269905fe534e0bb091dc0901510980c8d/_main_structure.scssc +0 -0
  334. data/test/dummy/tmp/cache/sass/be977c0269905fe534e0bb091dc0901510980c8d/_title_bar.scssc +0 -0
  335. data/test/dummy/tmp/cache/sass/c467ab1ac00bb4b33ddebfbc4207f8cc0f9e61bc/reset.css.scssc +0 -0
  336. data/test/dummy/tmp/cache/sass/d0ba40e1941e7614af17ce773f6a0c6f4d48d4a4/_button.scssc +0 -0
  337. data/test/dummy/tmp/cache/sass/d0ba40e1941e7614af17ce773f6a0c6f4d48d4a4/_font-family.scssc +0 -0
  338. data/test/dummy/tmp/cache/sass/d0ba40e1941e7614af17ce773f6a0c6f4d48d4a4/_html5-input-types.scssc +0 -0
  339. data/test/dummy/tmp/cache/sass/d0ba40e1941e7614af17ce773f6a0c6f4d48d4a4/_position.scssc +0 -0
  340. data/test/dummy/tmp/cache/sass/d0ba40e1941e7614af17ce773f6a0c6f4d48d4a4/_timing-functions.scssc +0 -0
  341. data/test/dummy/tmp/cache/sass/d158931e7bf4cc8eaac25646a5f3a4e59f963996/_bourbon.scssc +0 -0
  342. data/test/dummy/tmp/cache/sass/e1b301b6cd0417fb99354322dcb906c476d8da91/_blank_slates.scssc +0 -0
  343. data/test/dummy/tmp/cache/sass/e1b301b6cd0417fb99354322dcb906c476d8da91/_breadcrumbs.scssc +0 -0
  344. data/test/dummy/tmp/cache/sass/e1b301b6cd0417fb99354322dcb906c476d8da91/_buttons.scssc +0 -0
  345. data/test/dummy/tmp/cache/sass/e1b301b6cd0417fb99354322dcb906c476d8da91/_comments.css.scssc +0 -0
  346. data/test/dummy/tmp/cache/sass/e1b301b6cd0417fb99354322dcb906c476d8da91/_date_picker.css.scssc +0 -0
  347. data/test/dummy/tmp/cache/sass/e1b301b6cd0417fb99354322dcb906c476d8da91/_flash_messages.css.scssc +0 -0
  348. data/test/dummy/tmp/cache/sass/e1b301b6cd0417fb99354322dcb906c476d8da91/_grid.scssc +0 -0
  349. data/test/dummy/tmp/cache/sass/e1b301b6cd0417fb99354322dcb906c476d8da91/_links.scssc +0 -0
  350. data/test/dummy/tmp/cache/sass/e1b301b6cd0417fb99354322dcb906c476d8da91/_pagination.scssc +0 -0
  351. data/test/dummy/tmp/cache/sass/e1b301b6cd0417fb99354322dcb906c476d8da91/_panels.scssc +0 -0
  352. data/test/dummy/tmp/cache/sass/e1b301b6cd0417fb99354322dcb906c476d8da91/_scopes.scssc +0 -0
  353. data/test/dummy/tmp/cache/sass/e1b301b6cd0417fb99354322dcb906c476d8da91/_status_tags.scssc +0 -0
  354. data/test/dummy/tmp/cache/sass/e1b301b6cd0417fb99354322dcb906c476d8da91/_table_tools.css.scssc +0 -0
  355. data/test/dummy/tmp/cache/sass/e1b301b6cd0417fb99354322dcb906c476d8da91/_tables.css.scssc +0 -0
  356. data/test/dummy/tmp/cache/sass/eba3ca22a8b076d7d501c6d0d064b5f19be8656d/_animation.scssc +0 -0
  357. data/test/dummy/tmp/cache/sass/eba3ca22a8b076d7d501c6d0d064b5f19be8656d/_appearance.scssc +0 -0
  358. data/test/dummy/tmp/cache/sass/eba3ca22a8b076d7d501c6d0d064b5f19be8656d/_background-image.scssc +0 -0
  359. data/test/dummy/tmp/cache/sass/eba3ca22a8b076d7d501c6d0d064b5f19be8656d/_background-size.scssc +0 -0
  360. data/test/dummy/tmp/cache/sass/eba3ca22a8b076d7d501c6d0d064b5f19be8656d/_border-image.scssc +0 -0
  361. data/test/dummy/tmp/cache/sass/eba3ca22a8b076d7d501c6d0d064b5f19be8656d/_border-radius.scssc +0 -0
  362. data/test/dummy/tmp/cache/sass/eba3ca22a8b076d7d501c6d0d064b5f19be8656d/_box-shadow.scssc +0 -0
  363. data/test/dummy/tmp/cache/sass/eba3ca22a8b076d7d501c6d0d064b5f19be8656d/_box-sizing.scssc +0 -0
  364. data/test/dummy/tmp/cache/sass/eba3ca22a8b076d7d501c6d0d064b5f19be8656d/_columns.scssc +0 -0
  365. data/test/dummy/tmp/cache/sass/eba3ca22a8b076d7d501c6d0d064b5f19be8656d/_flex-box.scssc +0 -0
  366. data/test/dummy/tmp/cache/sass/eba3ca22a8b076d7d501c6d0d064b5f19be8656d/_inline-block.scssc +0 -0
  367. data/test/dummy/tmp/cache/sass/eba3ca22a8b076d7d501c6d0d064b5f19be8656d/_linear-gradient.scssc +0 -0
  368. data/test/dummy/tmp/cache/sass/eba3ca22a8b076d7d501c6d0d064b5f19be8656d/_radial-gradient.scssc +0 -0
  369. data/test/dummy/tmp/cache/sass/eba3ca22a8b076d7d501c6d0d064b5f19be8656d/_transform.scssc +0 -0
  370. data/test/dummy/tmp/cache/sass/eba3ca22a8b076d7d501c6d0d064b5f19be8656d/_transition.scssc +0 -0
  371. data/vendor/assets/ckeditor/ckeditor-contrib/plugins/MediaEmbed/dialogs/mediaembed.html +14 -0
  372. data/vendor/assets/ckeditor/ckeditor-contrib/plugins/MediaEmbed/images/icon.gif +0 -0
  373. data/vendor/assets/ckeditor/ckeditor-contrib/plugins/MediaEmbed/plugin.js +61 -0
  374. data/vendor/assets/ckeditor/ckeditor-contrib/plugins/richfile/plugin.js +84 -0
  375. metadata +680 -28
  376. data/app/assets/javascripts/rich/editor/rich_editor.js +0 -52
  377. data/app/inputs/rich_asset_input.rb +0 -17
  378. data/app/models/rich/rich_image.rb +0 -68
  379. data/app/views/rich/files/_image.html.erb +0 -10
  380. data/lib/rich/integrations/rails_admin_editor.rb +0 -20
  381. data/test/dummy/db/development.sqlite3 +0 -0
  382. data/test/dummy/db/production.sqlite3 +0 -0
@@ -1,12 +1,27 @@
1
1
  module Rich
2
2
  class FilesController < ApplicationController
3
3
 
4
+ layout "rich/application"
5
+
4
6
  def index
5
- # list all files
6
- @items = RichImage.order("created_at DESC").page params[:page]
7
+ @type = params[:type]
8
+
9
+ if(params[:scoped] == 'true')
10
+ if(@type == "image")
11
+ @items = RichFile.images.order("created_at DESC").where("owner_type = ? AND owner_id = ?", params[:scope_type], params[:scope_id]).page params[:page]
12
+ else
13
+ @items = RichFile.files.order("created_at DESC").where("owner_type = ? AND owner_id = ?", params[:scope_type], params[:scope_id]).page params[:page]
14
+ end
15
+ else
16
+ if(@type == "image")
17
+ @items = RichFile.images.order("created_at DESC").page params[:page]
18
+ else
19
+ @items = RichFile.files.order("created_at DESC").page params[:page]
20
+ end
21
+ end
7
22
 
8
23
  # stub for new file
9
- @rich_asset = RichImage.new
24
+ @rich_asset = RichFile.new
10
25
 
11
26
  respond_to do |format|
12
27
  format.js
@@ -16,24 +31,29 @@ module Rich
16
31
  end
17
32
 
18
33
  def show
19
- # show is used to retrieve single images through XHR requests after an image has been uploaded
34
+ # show is used to retrieve single files through XHR requests after a file has been uploaded
20
35
 
21
36
  if(params[:id])
22
37
  # list all files
23
- @file = RichImage.find(params[:id])
38
+ @file = RichFile.find(params[:id])
24
39
  render :layout => false
25
40
  else
26
- render :text => "Image not found"
41
+ render :text => "File not found"
27
42
  end
28
43
 
29
44
  end
30
45
 
31
46
  def create
32
- @file = RichImage.new
47
+ @file = RichFile.new(:simplified_type => params[:simplified_type]) #make sure the type is set
48
+
49
+ if(params[:scoped] == 'true')
50
+ @file.owner_type = params[:scope_type]
51
+ @file.owner_id = params[:scope_id].to_i
52
+ end
33
53
 
34
54
  # use the file from Rack Raw Upload
35
55
  if(params[:file])
36
- @file.image = params[:file]
56
+ @file.rich_file = params[:file]
37
57
  end
38
58
 
39
59
  if @file.save
@@ -47,7 +67,7 @@ module Rich
47
67
 
48
68
  def destroy
49
69
  if(params[:id])
50
- image = RichImage.delete(params[:id])
70
+ rich_file = RichFile.delete(params[:id])
51
71
  @fileid = params[:id]
52
72
  end
53
73
  end
@@ -1,4 +1,13 @@
1
1
  module Rich
2
2
  module FilesHelper
3
+
4
+ def thumb_for_file(file)
5
+ if file.simplified_type == "image"
6
+ file.rich_file.url(:thumb)
7
+ else
8
+ asset_path "rich/document-thumb.png"
9
+ end
10
+ end
11
+
3
12
  end
4
13
  end
@@ -3,7 +3,9 @@ if (Object.const_defined?("Formtastic") && Gem.loaded_specs["formtastic"].versio
3
3
  class RichInput < ::Formtastic::Inputs::TextInput
4
4
  def to_html
5
5
 
6
- editor_options = Rich.options(options[:config])
6
+ scope_type = object_name
7
+ scope_id = object.id
8
+ editor_options = Rich.options(options[:config], scope_type, scope_id)
7
9
 
8
10
  input_wrapping do
9
11
  label_html <<
@@ -0,0 +1,28 @@
1
+ if (Object.const_defined?("Formtastic") && Gem.loaded_specs["formtastic"].version.version[0,1] == "2")
2
+
3
+ class RichPickerInput < ::Formtastic::Inputs::StringInput
4
+
5
+ def to_html
6
+ scope_type = object_name
7
+ scope_id = object.id
8
+ editor_options = Rich.options(options[:config], scope_type, scope_id)
9
+
10
+ local_input_options = {
11
+ :class => 'rich-picker',
12
+ :style => editor_options[:style]
13
+ }
14
+
15
+ input_wrapping do
16
+
17
+ label_html <<
18
+ builder.text_field(method, local_input_options.merge(input_html_options)) <<
19
+ " <a href='#{Rich.editor[:richBrowserUrl]}' class='button'>#{I18n.t('picker_browse')}</a>".html_safe <<
20
+ "</br></br><img class='rich-image-preview' src='#{@object.send(method)}' style='height: 100px' />".html_safe <<
21
+ "<script>$(function(){$('##{input_html_options[:id]}_input a').click(function(e){ e.preventDefault(); assetPicker.showFinder('##{input_html_options[:id]}', #{editor_options.to_json.html_safe})})})</script>".html_safe
22
+
23
+ end
24
+ end
25
+
26
+ end
27
+
28
+ end
@@ -0,0 +1,75 @@
1
+ require 'cgi'
2
+ require 'mime/types'
3
+ require 'kaminari'
4
+
5
+ module Rich
6
+ class RichFile < ActiveRecord::Base
7
+
8
+ scope :images, where("rich_rich_files.simplified_type = 'image'")
9
+ scope :files, where("rich_rich_files.simplified_type = 'file'")
10
+
11
+ paginates_per 34
12
+
13
+ has_attached_file :rich_file, :styles => Proc.new {|a| a.instance.set_styles }
14
+
15
+ validates_attachment_presence :rich_file
16
+ validate :check_content_type
17
+ validates_attachment_size :rich_file, :less_than=>15.megabyte, :message => "must be smaller than 15MB"
18
+
19
+ before_create :clean_file_name
20
+
21
+ after_create :cache_style_uris_and_save
22
+ before_update :cache_style_uris
23
+
24
+
25
+ def set_styles
26
+ if self.simplified_type=="image"
27
+ Rich.image_styles
28
+ else
29
+ {}
30
+ end
31
+ end
32
+
33
+ private
34
+
35
+ def cache_style_uris_and_save
36
+ cache_style_uris
37
+ self.save!
38
+ end
39
+
40
+ def cache_style_uris
41
+ uris = {}
42
+
43
+ rich_file.styles.each do |style|
44
+ uris[style[0]] = rich_file.url(style[0].to_sym, false)
45
+ end
46
+
47
+ # manualy add the original size
48
+ uris["original"] = rich_file.url(:original, false)
49
+
50
+ self.uri_cache = uris.to_json
51
+ end
52
+
53
+ def clean_file_name
54
+ extension = File.extname(rich_file_file_name).gsub(/^\.+/, '')
55
+ filename = rich_file_file_name.gsub(/\.#{extension}$/, '')
56
+
57
+ filename = CGI::unescape(filename)
58
+ filename = CGI::unescape(filename)
59
+
60
+ extension = extension.downcase
61
+ filename = filename.downcase.gsub(/[^a-z0-9]+/i, '-')
62
+
63
+ self.rich_file.instance_write(:file_name, "#{filename}.#{extension}")
64
+ end
65
+
66
+ def check_content_type
67
+ self.rich_file.instance_write(:content_type, MIME::Types.type_for(rich_file_file_name)[0].content_type)
68
+
69
+ unless Rich.validate_mime_type(self.rich_file_content_type, self.simplified_type)
70
+ self.errors[:base] << "'#{self.rich_file_file_name}' is not the right type."
71
+ end
72
+ end
73
+
74
+ end
75
+ end
@@ -0,0 +1,9 @@
1
+ = javascript_include_tag "rich/base.js"
2
+ = form.send field.view_helper, field.method_name, field.html_attributes
3
+ = link_to t('picker_browse').capitalize, Rich.editor[:richBrowserUrl], :class => "btn create"
4
+ - unless field.value.to_s.html_safe == ''
5
+ %br
6
+ %br
7
+ %img{:src => field.value.html_safe, :style => 'height: 100px', :class => 'rich-image-preview'}
8
+ = javascript_tag do
9
+ $(function(){$('##{form.dom_id(field)}_field a').click(function(e){ e.preventDefault(); assetPicker.showFinder('##{form.dom_id(field)}', #{Rich.options(field.config, field.scope_type, field.scope_id).to_json.html_safe})})})
@@ -2,4 +2,4 @@
2
2
 
3
3
  = javascript_include_tag "rich/base.js"
4
4
  = javascript_tag do
5
- $(function(){ $('##{form.dom_id(field)}').ckeditor(function() { }, #{Rich.options(field.config).to_json.html_safe} ); });
5
+ $(function(){ CKEDITOR.replace('#{form.dom_id(field)}', #{Rich.options(field.config, field.scope_type, field.scope_id).to_json.html_safe}); });
@@ -0,0 +1,11 @@
1
+ <li class="clickable">
2
+ <img id="file<%= file.id %>"
3
+ src="<%= thumb_for_file(file) %>"
4
+ data-uris="<%= file.uri_cache %>"
5
+ data-rich-asset-id="<%= file.id %>"
6
+ data-rich-asset-type="<%= file.simplified_type %>"
7
+ data-rich-asset-name="<%= file.rich_file_file_name %>"
8
+ />
9
+ <p><%= file.rich_file_file_name %></p>
10
+ <%= link_to "delete", "/rich/files/"+file.id.to_s, :method => :delete, :remote => true, :confirm => t(:delete_confirm), :class => "delete", :title => t(:delete) %>
11
+ </li>
@@ -1 +1 @@
1
- $("#image<%= @fileid %>").parent().remove();
1
+ $("#file<%= @fileid %>").parent().remove();
@@ -2,19 +2,24 @@
2
2
 
3
3
  <div id="loading" style="display:none;"></div>
4
4
 
5
+ <div id="view-toggle">
6
+ <a href="#" id="view-grid" title="<%= t(:view_grid_tip) %>"><%= t(:view_grid) %></a>
7
+ <a href="#" id="view-list" title="<%= t(:view_list_tip) %>"><%= t(:view_list) %></a>
8
+ </div>
9
+
5
10
  <div id="insert-toggle">
6
- <a href="#" id="insert-many" title="Insert many images (keep browser open)">Insert many</a>
7
- <a href="#" id="insert-one" title="Insert one image">Insert one</a>
11
+ <a href="#" id="insert-many" title="<%= t(:insert_many_tip) %>"><%= t(:insert_many) %></a>
12
+ <a href="#" id="insert-one" title="<%= t(:insert_one_tip) %>"><%= t(:insert_one) %></a>
8
13
  </div>
9
14
 
10
15
  <ul id="styles" class="scopes">
11
- <li class="label">Style</li>
16
+ <li class="label"><%= t(:available_styles) %></li>
12
17
  </ul>
13
18
 
14
19
  </header>
15
20
 
16
21
  <div id="legacy-form"><%= form_for(@rich_asset, :url => files_path) do |f| %>
17
- <p><%= f.file_field :image%></p>
22
+ <p><%= f.file_field :rich_file%></p>
18
23
  <%= f.submit("Upload") %>
19
24
  <% end %>
20
25
  </div>
@@ -25,9 +30,9 @@
25
30
  <div id="upload" class="qq-upload-button placeholder">
26
31
  <div class="spinner"></div>
27
32
  </div>
28
- <p>Upload an image</p>
33
+ <p><%= t(:upload_a_file) %></p>
29
34
  </li>
30
35
 
31
- <%= render :partial => "image", :collection => @items, :as => :file %>
36
+ <%= render :partial => "file", :collection => @items, :as => :file %>
32
37
 
33
38
  </ul>
@@ -1 +1 @@
1
- <% if @items.count > 0 %>$("#items").append("<%= escape_javascript(render :partial => "image", :collection => @items, :as => :file) %>");<% end %>
1
+ <% if @items.count > 0 %>$("#items").append("<%= escape_javascript(render :partial => "file", :collection => @items, :as => :file) %>");<% end %>
@@ -1 +1 @@
1
- <%= render :partial => 'image', :locals => {:file => @file} %>
1
+ <%= render :partial => 'file', :locals => {:file => @file} %>
@@ -0,0 +1,14 @@
1
+ en:
2
+ available_styles: "Styles"
3
+ upload_a_file: "Upload a file"
4
+ insert_one: "Insert one"
5
+ insert_one_tip: "Insert one"
6
+ insert_many: "Insert many"
7
+ insert_many_tip: "Insert many (keep browser open)"
8
+ view_grid: "View as grid"
9
+ view_grid_tip: "View as grid"
10
+ view_list: "View as list"
11
+ view_list_tip: "View as list"
12
+ delete: "Delete this file"
13
+ delete_confirm: "Are you sure you want to delete this file?"
14
+ picker_browse: "Select or upload"
@@ -0,0 +1,14 @@
1
+ nl:
2
+ available_styles: "Stijlen"
3
+ upload_a_file: "Uploaden"
4
+ insert_one: "Enkele invoegen"
5
+ insert_one_tip: "Enkele invoegen"
6
+ insert_many: "Meerdere invoegen"
7
+ insert_many_tip: "Meerdere invoegen (houd venster open)"
8
+ view_grid: "Bekijken als grid"
9
+ view_grid_tip: "Bekijken als grid"
10
+ view_list: "Bekijken als lijst"
11
+ view_list_tip: "Bekijken als lijst"
12
+ delete: "Verwijder dit bestand"
13
+ delete_confirm: "Dit bestand echt verwijderen?"
14
+ picker_browse: "Selecteer of upload"
@@ -0,0 +1,12 @@
1
+ class RefactorImageToFile < ActiveRecord::Migration
2
+ def change
3
+ rename_table :rich_rich_images, :rich_rich_files
4
+
5
+ rename_column :rich_rich_files, :image_file_name, :rich_file_file_name
6
+ rename_column :rich_rich_files, :image_content_type, :rich_file_content_type
7
+ rename_column :rich_rich_files, :image_file_size, :rich_file_file_size
8
+ rename_column :rich_rich_files, :image_updated_at, :rich_file_updated_at
9
+
10
+ add_column :rich_rich_files, :simplified_type, :string, :default => "file"
11
+ end
12
+ end
@@ -14,7 +14,7 @@ module Rich
14
14
  end
15
15
 
16
16
  def setup_route
17
- route "mount Rich::Engine => '/rich'"
17
+ route "mount Rich::Engine => '/rich', :as => 'rich'"
18
18
  end
19
19
 
20
20
  def install_editor_styles
@@ -26,7 +26,7 @@ if Object.const_defined?("Rich")
26
26
  #
27
27
  # When you change these after uploading some files,
28
28
  # remember to do let Paperclip re-generate these by running
29
- # rake paperclip:refresh CLASS=Rich::RichImage
29
+ # rake paperclip:refresh CLASS=Rich::RichFile
30
30
  config.image_styles = {
31
31
  :thumb => "100x100#"
32
32
  }
@@ -49,6 +49,29 @@ if Object.const_defined?("Rich")
49
49
  # the unprocessed file. Make sure this style exists.
50
50
  config.default_style = :thumb
51
51
 
52
+ # == Upload non-image files
53
+ #
54
+ # Setting this option to true will add a second Rich filebrowser icon to
55
+ # the editor toolbar. In this filebrowser you can upload non-image files.
56
+ # Inserting these files into your editor will result in a direct (A) link.
57
+ #
58
+ # Default:
59
+ # config.allow_document_uploads = false
60
+
61
+ # == Set allowed filetypes for non-image files
62
+ #
63
+ # If you want, you can restrict the types of documents that users can upload.
64
+ # Default behavior is to allow any kind of file to be uploaded. You can set
65
+ # the accepted types by providing an array of mimetypes to check against.
66
+ # Note that for this to have any effect, you first need to enable document
67
+ # uploads using the setting above.
68
+ #
69
+ # Default, allow any file to be uploaded:
70
+ # config.allowed_document_types = :all
71
+ #
72
+ # Example, only allow PDF uploads:
73
+ # config.allowed_document_types = ['application/pdf']
74
+
52
75
  # == Asset insertion
53
76
  #
54
77
  # Set this to true to keep the filebrowser open after inserting an asset.
data/lib/rich.rb CHANGED
@@ -1,3 +1,8 @@
1
+ if Object.const_defined?("RailsAdmin")
2
+ require "rich/rails_admin/config/fields/types/rich_picker"
3
+ require "rich/rails_admin/config/fields/types/rich_editor"
4
+ end
5
+
1
6
  require "rich/engine"
2
7
 
3
8
  module Rich
@@ -6,7 +11,7 @@ module Rich
6
11
  mattr_accessor :image_styles
7
12
  @@image_styles = {
8
13
  :thumb => "100x100#"
9
- }
14
+ }
10
15
 
11
16
  mattr_accessor :allowed_styles
12
17
  @@allowed_styles = :all
@@ -20,26 +25,38 @@ module Rich
20
25
  mattr_accessor :insert_many
21
26
  @@insert_many = false
22
27
 
28
+ mattr_accessor :allow_document_uploads
29
+ @@allow_document_uploads = false
30
+
31
+ mattr_accessor :allow_embeds
32
+ @@allow_embeds = false
33
+
34
+ mattr_accessor :allowed_image_types
35
+ @@allowed_image_types = ['image/jpeg', 'image/png', 'image/gif', 'image/jpg']
36
+
37
+ mattr_accessor :allowed_document_types
38
+ @@allowed_document_types = :all
39
+
23
40
  # Configuration defaults (these map directly to ckeditor settings)
24
41
  mattr_accessor :editor
25
42
  @@editor = {
43
+ :height => 400,
26
44
  :stylesSet => [],
27
- :extraPlugins => 'stylesheetparser,richimage',
45
+ :extraPlugins => 'stylesheetparser,richfile,MediaEmbed',
28
46
  :removePlugins => 'scayt,menubutton,contextmenu,image,forms',
29
47
  :contentsCss => '/assets/rich/editor.css',
30
48
  :removeDialogTabs => 'link:advanced;link:target',
31
49
  :startupOutlineBlocks => true,
32
50
  :forcePasteAsPlainText => true,
33
51
  :format_tags => 'h3;p;pre',
34
- :toolbar => [['Format','Styles'],['Bold', 'Italic', '-','NumberedList', 'BulletedList', 'Blockquote', '-', 'richImage', '-', 'Link', 'Unlink'],['Source', 'ShowBlocks']],
35
-
52
+ :toolbar => [['Format','Styles'],['Bold', 'Italic', '-','NumberedList', 'BulletedList', 'Blockquote', '-', 'richImage', 'richFile','MediaEmbed', '-', 'Link', 'Unlink'],['Source', 'ShowBlocks']],
53
+ :language => I18n.default_locale,
36
54
  :richBrowserUrl => '/rich/files/',
37
-
38
55
  :uiColor => '#f4f4f4'
39
56
  }
40
57
  # End configuration defaults
41
58
 
42
- def self.options(overrides={})
59
+ def self.options(overrides={}, scope_type=nil, scope_id=nil)
43
60
  # merge in editor settings configured elsewhere
44
61
 
45
62
  if(self.allowed_styles == :all)
@@ -52,24 +69,70 @@ module Rich
52
69
  base = {
53
70
  :allowed_styles => self.allowed_styles,
54
71
  :default_style => self.default_style,
55
- :insert_many => self.insert_many
72
+ :insert_many => self.insert_many,
73
+ :allow_document_uploads => self.allow_document_uploads,
74
+ :allow_embeds => self.allow_embeds
56
75
  }
57
76
  editor_options = self.editor.merge(base)
58
-
77
+
59
78
  # merge in local overrides
60
79
  editor_options.merge!(overrides) if overrides
61
80
 
62
- puts editor_options.inspect
81
+ # update the language to the currently selected locale
82
+ editor_options[:language] = I18n.locale
83
+
84
+ # remove the filebrowser if allow_document_uploads is false (the default)
85
+ unless editor_options[:allow_document_uploads]
86
+ editor_options[:toolbar][1].delete("richFile")
87
+ end
88
+
89
+ unless editor_options[:allow_embeds]
90
+ editor_options[:toolbar][1].delete("MediaEmbed")
91
+ end
92
+
93
+ # object scoping
94
+ if(editor_options[:scoped] == true)
95
+ if(scope_type != nil && scope_id != nil)
96
+ editor_options[:scope_type] = scope_type
97
+ editor_options[:scope_id] = scope_id
98
+ else
99
+ # cannot scope new objects
100
+ editor_options[:scoped] = false
101
+ end
102
+ end
63
103
 
64
104
  editor_options
65
105
 
66
106
  end
67
107
 
108
+ def self.validate_mime_type(mime, simplified_type)
109
+ # does the mimetype match the given simplified type?
110
+ puts "matching:" + mime + " TO " + simplified_type
111
+
112
+ false # assume the worst
113
+
114
+ if simplified_type == "image"
115
+ if allowed_image_types.include?(mime)
116
+ true
117
+ end
118
+ elsif simplified_type == "file"
119
+ if allowed_document_types == :all || allowed_document_types.include?(mime)
120
+ true
121
+ end
122
+ end
123
+
124
+ end
125
+
68
126
  def self.setup
69
127
  yield self
70
128
  end
71
129
 
72
130
  def self.insert
131
+
132
+
133
+
134
+
135
+
73
136
  # manually inject into Formtastic 1. V2 is extended autmatically.
74
137
  if Object.const_defined?("Formtastic")
75
138
  if(Gem.loaded_specs["formtastic"].version.version[0,1] == "1")