flms 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (516) hide show
  1. checksums.yaml +15 -0
  2. data/README.md +102 -2
  3. data/app/assets/javascripts/flms/admin.js +1 -1
  4. data/app/assets/javascripts/flms/{bootstrap.js → admin/bootstrap.js} +0 -0
  5. data/app/assets/javascripts/flms/{layout.coffee → admin/layout.coffee} +2 -2
  6. data/app/assets/javascripts/flms/{blocks/index → admin/pages/edit}/block.coffee +0 -0
  7. data/app/assets/javascripts/flms/{blocks/index → admin/pages/edit}/block_list.coffee +1 -1
  8. data/app/assets/javascripts/flms/{blocks/index/index.coffee → admin/pages/edit/edit.coffee} +2 -2
  9. data/app/assets/javascripts/flms/public.js +17 -0
  10. data/app/assets/stylesheets/flms/admin.css +1 -1
  11. data/app/assets/stylesheets/flms/{blocks → admin/blocks}/show.sass +0 -0
  12. data/app/assets/stylesheets/flms/{home.sass → admin/home.sass} +0 -1
  13. data/app/assets/stylesheets/flms/admin/layers/form.sass +4 -0
  14. data/app/assets/stylesheets/flms/{layout.sass → admin/layout.sass} +0 -0
  15. data/app/assets/stylesheets/flms/{login.sass → admin/login.sass} +0 -0
  16. data/app/assets/stylesheets/flms/{blocks/index.sass → admin/pages/edit.sass} +1 -1
  17. data/app/assets/stylesheets/flms/public.css +8 -0
  18. data/app/assets/stylesheets/flms/public/public.sass +52 -0
  19. data/app/controllers/flms/abstract_layer_controller.rb +45 -0
  20. data/app/controllers/flms/animation_layers_controller.rb +26 -0
  21. data/app/controllers/flms/application_controller.rb +13 -0
  22. data/app/controllers/flms/blocks_controller.rb +20 -22
  23. data/app/controllers/flms/embed_layers_controller.rb +24 -0
  24. data/app/controllers/flms/image_layers_controller.rb +6 -54
  25. data/app/controllers/flms/layers_controller.rb +3 -10
  26. data/app/controllers/flms/pages_controller.rb +44 -5
  27. data/app/controllers/flms/paragraph_layers_controller.rb +24 -0
  28. data/app/controllers/flms/text_layers_controller.rb +24 -0
  29. data/app/helpers/flms/application_helper.rb +13 -0
  30. data/app/models/flms/animation_layer.rb +33 -0
  31. data/app/models/flms/block.rb +17 -1
  32. data/app/models/flms/blocks_page.rb +3 -0
  33. data/app/models/flms/embed_layer.rb +12 -0
  34. data/app/models/flms/end_state_keyframe.rb +17 -0
  35. data/app/models/flms/image_layer.rb +23 -1
  36. data/app/models/flms/keyframe.rb +130 -0
  37. data/app/models/flms/layer.rb +91 -2
  38. data/app/models/flms/page.rb +14 -2
  39. data/app/models/flms/paragraph_layer.rb +21 -0
  40. data/app/models/flms/start_state_keyframe.rb +17 -0
  41. data/app/models/flms/target_state_keyframe.rb +17 -0
  42. data/app/models/flms/text_layer.rb +20 -0
  43. data/app/uploaders/image_uploader.rb +21 -34
  44. data/app/uploaders/thumbnail_image_uploader.rb +36 -0
  45. data/app/view_objects/flms/animation_layer_view_object.rb +45 -0
  46. data/app/view_objects/flms/embed_layer_view_object.rb +15 -0
  47. data/app/view_objects/flms/image_layer_view_object.rb +22 -0
  48. data/app/view_objects/flms/keyframe_view_object.rb +92 -0
  49. data/app/view_objects/flms/layer_view_object.rb +72 -0
  50. data/app/view_objects/flms/paragraph_layer_view_object.rb +19 -0
  51. data/app/view_objects/flms/text_layer_view_object.rb +30 -0
  52. data/app/views/flms/animation_layers/_form.html.haml +56 -0
  53. data/app/views/flms/animation_layers/edit.html.haml +1 -0
  54. data/app/views/flms/animation_layers/new.html.haml +1 -0
  55. data/app/views/flms/blocks/_form.html.haml +32 -18
  56. data/app/views/flms/blocks/edit.html.haml +61 -2
  57. data/app/views/flms/blocks/index.html.haml +13 -22
  58. data/app/views/flms/blocks/show.html.haml +12 -35
  59. data/app/views/flms/elements/_animation_layer.html.haml +2 -0
  60. data/app/views/flms/elements/_block.html.haml +3 -0
  61. data/app/views/flms/elements/_embed_layer.html.haml +2 -0
  62. data/app/views/flms/elements/_image_layer.html.haml +2 -0
  63. data/app/views/flms/elements/_page.html.haml +11 -0
  64. data/app/views/flms/elements/_paragraph_layer.html.haml +4 -0
  65. data/app/views/flms/elements/_text_layer.html.haml +2 -0
  66. data/app/views/flms/embed_layers/_form.html.haml +29 -0
  67. data/app/views/flms/embed_layers/edit.html.haml +2 -0
  68. data/app/views/flms/embed_layers/new.html.haml +2 -0
  69. data/app/views/flms/image_layers/_form.html.haml +31 -17
  70. data/app/views/flms/image_layers/new.html.haml +1 -2
  71. data/app/views/flms/layers/_common_fields.html.haml +41 -0
  72. data/app/views/flms/layers/_keyframe_fields.html.haml +127 -0
  73. data/app/views/flms/pages/_add_block.html.haml +8 -0
  74. data/app/views/flms/pages/_block_list.html.haml +44 -0
  75. data/app/views/flms/pages/_form.html.haml +22 -23
  76. data/app/views/flms/pages/edit.html.haml +4 -3
  77. data/app/views/flms/pages/index.html.haml +4 -3
  78. data/app/views/flms/pages/show.html.haml +8 -6
  79. data/app/views/flms/paragraph_layers/_form.html.haml +41 -0
  80. data/app/views/flms/paragraph_layers/edit.html.haml +2 -0
  81. data/app/views/flms/paragraph_layers/new.html.haml +2 -0
  82. data/app/views/flms/text_layers/_form.html.haml +43 -0
  83. data/app/views/flms/text_layers/edit.html.haml +2 -0
  84. data/app/views/flms/text_layers/new.html.haml +2 -0
  85. data/app/views/layouts/flms/_plain_styling.html.haml +1 -0
  86. data/app/views/layouts/flms/admin.html.haml +8 -3
  87. data/app/views/layouts/flms/public.html.haml +13 -0
  88. data/config/initializers/carrierwave.rb +62 -6
  89. data/config/initializers/mime_types.rb +3 -0
  90. data/config/initializers/validators.rb +1 -0
  91. data/config/routes.rb +13 -5
  92. data/config/s3.yml.example +14 -0
  93. data/db/migrate/{20130302011705_create_flms_blocks.rb → 20130302011705_flms_create_blocks.rb} +3 -1
  94. data/db/migrate/{20130302015459_create_flms_blocks_pages.rb → 20130302015459_flms_create_blocks_pages.rb} +1 -1
  95. data/db/migrate/20130312220011_flms_create_layers.rb +40 -0
  96. data/db/migrate/20130327183815_flms_create_keyframes.rb +24 -0
  97. data/lib/flms/css_name_validator.rb +9 -0
  98. data/lib/flms/version.rb +1 -1
  99. data/lib/tasks/flms_tasks.rake +46 -6
  100. data/spec/controllers/animation_layers_controller_spec.rb +38 -0
  101. data/spec/controllers/blocks_controller_spec.rb +18 -44
  102. data/spec/controllers/embed_layers_controller_spec.rb +52 -0
  103. data/spec/controllers/image_layers_controller_spec.rb +73 -0
  104. data/spec/controllers/layers_controller_spec.rb +4 -5
  105. data/spec/controllers/pages_controller_spec.rb +66 -1
  106. data/spec/controllers/paragraph_layers_controller_spec.rb +53 -0
  107. data/spec/controllers/text_layers_controller_spec.rb +73 -0
  108. data/spec/dummy/app/views/home/index.html.haml +1 -1
  109. data/spec/dummy/config/environments/development.rb +1 -0
  110. data/spec/dummy/config/environments/production.rb +1 -0
  111. data/spec/dummy/config/environments/test.rb +1 -0
  112. data/spec/dummy/config/initializers/flms.rb +1 -0
  113. data/spec/dummy/config/s3.yml +12 -0
  114. data/spec/dummy/config/s3.yml.example +12 -0
  115. data/spec/dummy/db/development.sqlite3 +0 -0
  116. data/spec/dummy/db/schema.rb +40 -5
  117. data/spec/dummy/db/test.sqlite3 +0 -0
  118. data/spec/dummy/log/development.log +4376 -0
  119. data/spec/dummy/log/test.log +131766 -0
  120. data/spec/dummy/public/uploads/flms/animation_layer/image/1/normal_placeholder.png +0 -0
  121. data/spec/dummy/public/uploads/flms/animation_layer/image/1/placeholder.png +0 -0
  122. data/spec/dummy/public/uploads/flms/animation_layer/image/1/small_placeholder.png +0 -0
  123. data/spec/dummy/public/uploads/flms/animation_layer/image/1/thumb_placeholder.png +0 -0
  124. data/spec/dummy/public/uploads/flms/animation_layer/image/7/normal_placeholder.png +0 -0
  125. data/spec/dummy/public/uploads/flms/animation_layer/image/7/placeholder.png +0 -0
  126. data/spec/dummy/public/uploads/flms/animation_layer/image/7/small_placeholder.png +0 -0
  127. data/spec/dummy/public/uploads/flms/animation_layer/image/7/thumb_placeholder.png +0 -0
  128. data/spec/dummy/public/uploads/flms/block/thumbnail/1/placeholder.png +0 -0
  129. data/spec/dummy/public/uploads/flms/block/thumbnail/1/small_placeholder.png +0 -0
  130. data/spec/dummy/public/uploads/flms/block/thumbnail/1/thumb_placeholder.png +0 -0
  131. data/spec/dummy/public/uploads/flms/image_layer/image/1/normal_placeholder.png +0 -0
  132. data/spec/dummy/public/uploads/flms/image_layer/image/1/placeholder.png +0 -0
  133. data/spec/dummy/public/uploads/flms/image_layer/image/1/small_placeholder.png +0 -0
  134. data/spec/dummy/public/uploads/flms/image_layer/image/1/thumb_placeholder.png +0 -0
  135. data/spec/dummy/public/uploads/flms/image_layer/image/2/normal_placeholder.png +0 -0
  136. data/spec/dummy/public/uploads/flms/image_layer/image/2/placeholder.png +0 -0
  137. data/spec/dummy/public/uploads/flms/image_layer/image/2/small_placeholder.png +0 -0
  138. data/spec/dummy/public/uploads/flms/image_layer/image/2/thumb_placeholder.png +0 -0
  139. data/spec/dummy/public/uploads/flms/image_layer/image/3/normal_placeholder.png +0 -0
  140. data/spec/dummy/public/uploads/flms/image_layer/image/3/placeholder.png +0 -0
  141. data/spec/dummy/public/uploads/flms/image_layer/image/3/small_placeholder.png +0 -0
  142. data/spec/dummy/public/uploads/flms/image_layer/image/3/thumb_placeholder.png +0 -0
  143. data/spec/dummy/tmp/cache/assets/C4C/010/sprockets%2F74558ebf3d0666286090250c04b945a1 +0 -0
  144. data/spec/dummy/tmp/cache/assets/C4C/7C0/sprockets%2F829fa8a51f2e2266774e2007d7141414 +0 -0
  145. data/spec/dummy/tmp/cache/assets/C57/C80/sprockets%2F74f66b30036f872b250553c91f2981d8 +0 -0
  146. data/spec/dummy/tmp/cache/assets/C59/520/sprockets%2Ff2296184148079d68a35d80635c702fc +0 -0
  147. data/spec/dummy/tmp/cache/assets/C62/B80/sprockets%2Fe2573350e6996f3f19f06c03687339d2 +0 -0
  148. data/spec/dummy/tmp/cache/assets/C84/200/sprockets%2F6d5671bc22b630f45761e90488b3a909 +0 -0
  149. data/spec/dummy/tmp/cache/assets/C86/490/sprockets%2F196ee25088eb975920380e3b5fd22325 +0 -0
  150. data/spec/dummy/tmp/cache/assets/C86/F40/sprockets%2Fb9924512ef3de6aa72460258706865e2 +0 -0
  151. data/spec/dummy/tmp/cache/assets/CA7/AB0/sprockets%2F88f069985c1ffca86f6394209656964c +0 -0
  152. data/spec/dummy/tmp/cache/assets/CA9/AC0/sprockets%2F2f3e0ad16e81532007e094c081594f7e +0 -0
  153. data/spec/dummy/tmp/cache/assets/CA9/F00/sprockets%2F289543b9c4d5ea08789000ce30a95c00 +0 -0
  154. data/spec/dummy/tmp/cache/assets/CAB/C80/sprockets%2Fc4e739111d82c7189113aeb228816ba8 +0 -0
  155. data/spec/dummy/tmp/cache/assets/CB0/330/sprockets%2F228e5f742b01972dc6ce664713264d3c +0 -0
  156. data/spec/dummy/tmp/cache/assets/CB3/E00/sprockets%2F97a8391a80361fb1870669c06a27ae5c +0 -0
  157. data/spec/dummy/tmp/cache/assets/CC9/C00/sprockets%2F454c58b0a3b0a0a64fd60bb217197580 +0 -0
  158. data/spec/dummy/tmp/cache/assets/CD1/8F0/sprockets%2F4032f7a5b2133a8b8f963e12fd6120c5 +0 -0
  159. data/spec/dummy/tmp/cache/assets/CD7/000/sprockets%2Ff6534fbac7e738c013414d148211bd95 +0 -0
  160. data/spec/dummy/tmp/cache/assets/CD9/AA0/sprockets%2F80c500e462b3e91b00f48609b56ff91b +0 -0
  161. data/spec/dummy/tmp/cache/assets/CDB/510/sprockets%2Fd61745a24c4636f8813fa14038bac69a +0 -0
  162. data/spec/dummy/tmp/cache/assets/CDD/640/sprockets%2F557bde539a95020fd557e11f813242fa +0 -0
  163. data/spec/dummy/tmp/cache/assets/CDF/200/sprockets%2F9b251cfabb019f79e706200499d623c6 +0 -0
  164. data/spec/dummy/tmp/cache/assets/CE0/420/sprockets%2F5b3f22c66d8a269533a5689c1be5c800 +0 -0
  165. data/spec/dummy/tmp/cache/assets/CEE/C10/sprockets%2F39310232adc120c16210bdc84184fdaf +0 -0
  166. data/spec/dummy/tmp/cache/assets/D02/F10/sprockets%2Fd10499187b5f8d8d85769775d1ecb7c7 +0 -0
  167. data/spec/dummy/tmp/cache/assets/D07/A50/sprockets%2Fdda362e83c229c06b2bb63686e273d13 +0 -0
  168. data/spec/dummy/tmp/cache/assets/D09/5C0/sprockets%2F7cd3521c63623eb6f02dbb514991a6f6 +0 -0
  169. data/spec/dummy/tmp/cache/assets/D09/7C0/sprockets%2F892c677abcf22a046a610427fa29d4b7 +0 -0
  170. data/spec/dummy/tmp/cache/assets/D0B/0C0/sprockets%2Fb2722b54d89845b9619cadda1a04158c +0 -0
  171. data/spec/dummy/tmp/cache/assets/D11/9D0/sprockets%2F87436354c263adb7b069d7b3d19ace18 +0 -0
  172. data/spec/dummy/tmp/cache/assets/D15/6F0/sprockets%2F32e2b26b766ac7fb86d0c7062c976c29 +0 -0
  173. data/spec/dummy/tmp/cache/assets/D18/9C0/sprockets%2Ff92d239ff629c160ee015e3845a6c9c3 +0 -0
  174. data/spec/dummy/tmp/cache/assets/D18/DF0/sprockets%2F8d53dfef1f06c56f73026d82f29322a9 +0 -0
  175. data/spec/dummy/tmp/cache/assets/D19/060/sprockets%2F4be3ef7d038e55cffc27166271638f60 +0 -0
  176. data/spec/dummy/tmp/cache/assets/D1C/E30/sprockets%2F605ce82d89dce653d672485b9c1c52f1 +0 -0
  177. data/spec/dummy/tmp/cache/assets/D1E/1D0/sprockets%2Ffeec495723d877b92c74db2055516bc9 +0 -0
  178. data/spec/dummy/tmp/cache/assets/D22/660/sprockets%2F43f26c23b8ddf974767ca6f67b6530f6 +0 -0
  179. data/spec/dummy/tmp/cache/assets/D24/E10/sprockets%2Fd9032b251e778acab41d4639b003a1ca +0 -0
  180. data/spec/dummy/tmp/cache/assets/D25/A70/sprockets%2Fb7d53812242f41eafe2dc223317db30a +0 -0
  181. data/spec/dummy/tmp/cache/assets/D2D/190/sprockets%2Fcea5d014c171b7a836113bb9b0f9f712 +0 -0
  182. data/spec/dummy/tmp/cache/assets/D2E/130/sprockets%2F5ebb788f274dd034257c0bc0400fae50 +0 -0
  183. data/spec/dummy/tmp/cache/assets/D3B/440/sprockets%2Fabe31f236167ba051f6ff849d0a7282f +0 -0
  184. data/spec/dummy/tmp/cache/assets/D3B/550/sprockets%2Fb61caf9834ac8c31691851ac024f26ef +0 -0
  185. data/spec/dummy/tmp/cache/assets/D3B/980/sprockets%2Ff0e607eb6489ed61f27a5233cae0172e +0 -0
  186. data/spec/dummy/tmp/cache/assets/D3B/A90/sprockets%2F3a9f74af10313e521d21dc4d78b4f9b9 +0 -0
  187. data/spec/dummy/tmp/cache/assets/D46/210/sprockets%2F45a8d49c8edbaf91f38ab1495430384c +0 -0
  188. data/spec/dummy/tmp/cache/assets/D48/DD0/sprockets%2F75d43fac4136d1bbabf481f977b78637 +0 -0
  189. data/spec/dummy/tmp/cache/assets/D4A/B40/sprockets%2F509d2dc1350975d781c50dffc58ef53f +0 -0
  190. data/spec/dummy/tmp/cache/assets/D4B/D10/sprockets%2F76e4e1fa5d891fe2261834cf322f38ef +0 -0
  191. data/spec/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  192. data/spec/dummy/tmp/cache/assets/D50/0B0/sprockets%2F6c3a019b7442761786cc7bef8e8e7c6c +0 -0
  193. data/spec/dummy/tmp/cache/assets/D53/F80/sprockets%2F11d791b713f9b9cf2bb85bd7f6589b84 +0 -0
  194. data/spec/dummy/tmp/cache/assets/D54/BA0/sprockets%2F89de5abea3b3002f6e73210bb7a3c330 +0 -0
  195. data/spec/dummy/tmp/cache/assets/D54/DE0/sprockets%2F77af3e306bb966f71f83e90e2a8868db +0 -0
  196. data/spec/dummy/tmp/cache/assets/D5B/1F0/sprockets%2F4d98e747aa4bb9fc8859f49a45159e1c +0 -0
  197. data/spec/dummy/tmp/cache/assets/D64/D10/sprockets%2F9857068018fbac51ecd0a7510bcca55e +0 -0
  198. data/spec/dummy/tmp/cache/assets/D66/8E0/sprockets%2F0cbda18dbb9e414ed0bf1199358e1742 +0 -0
  199. data/spec/dummy/tmp/cache/assets/D6D/150/sprockets%2Fe84b6e0602e1c5218c9da9d46da4d74b +0 -0
  200. data/spec/dummy/tmp/cache/assets/D6E/870/sprockets%2F3f77e0b5396013fd145a6fdd21bc9b7f +0 -0
  201. data/spec/dummy/tmp/cache/assets/D71/2D0/sprockets%2F958685af3478f12a33ffaa5cfa26e0d1 +0 -0
  202. data/spec/dummy/tmp/cache/assets/D77/D80/sprockets%2F7ad794c63274a9812dfbabc1dae69692 +0 -0
  203. data/spec/dummy/tmp/cache/assets/D79/DE0/sprockets%2F9e7131d002f39be972e9918bdfbbcc66 +0 -0
  204. data/spec/dummy/tmp/cache/assets/D7C/3A0/sprockets%2Fec63717067efd6b2daf3423edf70f689 +0 -0
  205. data/spec/dummy/tmp/cache/assets/D7D/BB0/sprockets%2Fe66f1c4ba6885a4d1de08c3d81f991d9 +0 -0
  206. data/spec/dummy/tmp/cache/assets/D81/1D0/sprockets%2F9f446f7e8b3c18c6f7b636b71a8ba8d4 +0 -0
  207. data/spec/dummy/tmp/cache/assets/D81/400/sprockets%2F566656e2cc9e698b1dbbd56d6e2e6b36 +0 -0
  208. data/spec/dummy/tmp/cache/assets/D8C/DE0/sprockets%2Fb95e7d75de89e1285d0e6ef8d85cb508 +0 -0
  209. data/spec/dummy/tmp/cache/assets/D91/320/sprockets%2F322e2344c1fc1234ffd9b3142eecaf6f +0 -0
  210. data/spec/dummy/tmp/cache/assets/D92/9B0/sprockets%2F96f73ad8237fa0a4bb3aa8cbe083551a +0 -0
  211. data/spec/dummy/tmp/cache/assets/D93/0C0/sprockets%2Fab900c084c9c51c312ee3457cee8cdc2 +0 -0
  212. data/spec/dummy/tmp/cache/assets/D93/3F0/sprockets%2Fb6aecc2fe36010208fc8c4cc9e04672c +0 -0
  213. data/spec/dummy/tmp/cache/assets/D97/1B0/sprockets%2Fe0ae6a22a963d0e0819ce6436eb57cae +0 -0
  214. data/spec/dummy/tmp/cache/assets/D98/FD0/sprockets%2F6f253bd2bf824ac38c69bfe1418a04be +0 -0
  215. data/spec/dummy/tmp/cache/assets/D99/CF0/sprockets%2F015b5a48fa7906d045fc23db8a60feef +0 -0
  216. data/spec/dummy/tmp/cache/assets/D9A/820/sprockets%2F594caa19e550457af23ae9fba500a9fe +0 -0
  217. data/spec/dummy/tmp/cache/assets/D9E/220/sprockets%2Fd129fcf804e89814c2f4abbe0336cba9 +0 -0
  218. data/spec/dummy/tmp/cache/assets/D9E/8D0/sprockets%2F2ae41880ba1dbb6f570fe0e790678dbf +0 -0
  219. data/spec/dummy/tmp/cache/assets/D9E/A30/sprockets%2Fc82d9ee0ea1a5360faa296957c2bf17e +0 -0
  220. data/spec/dummy/tmp/cache/assets/DA0/C20/sprockets%2Fe1a590abeca61529529de36efa97b43e +0 -0
  221. data/spec/dummy/tmp/cache/assets/DA2/330/sprockets%2F27697dddd23a0913339ccb95dabd7ae7 +0 -0
  222. data/spec/dummy/tmp/cache/assets/DA3/920/sprockets%2F6c45b9f8e0152c78b3c9be1c2e8be53c +0 -0
  223. data/spec/dummy/tmp/cache/assets/DA5/3A0/sprockets%2Fa02e5a4a95bb7c92ec5b63f908eff870 +0 -0
  224. data/spec/dummy/tmp/cache/assets/DA5/BC0/sprockets%2F5b86068a872e5bd841750d6cbd2dfdbf +0 -0
  225. data/spec/dummy/tmp/cache/assets/DA6/360/sprockets%2F1d7b3df8a061fd27e6a956bfd84a93f1 +0 -0
  226. data/spec/dummy/tmp/cache/assets/DA6/A10/sprockets%2Fd226de7dc43ae36657be35fb6e31db89 +0 -0
  227. data/spec/dummy/tmp/cache/assets/DA8/4A0/sprockets%2Ff8ba39d58ace11df624bf7e24c7b5882 +0 -0
  228. data/spec/dummy/tmp/cache/assets/DA8/C30/sprockets%2Fb7d14d588a70a56d7ddac542eef557d6 +0 -0
  229. data/spec/dummy/tmp/cache/assets/DAE/680/sprockets%2Fcd28d437e7fc959fe1e328bca40f5e74 +0 -0
  230. data/spec/dummy/tmp/cache/assets/DB2/1F0/sprockets%2F9fe57997f92efbee3b03df4510a2df57 +0 -0
  231. data/spec/dummy/tmp/cache/assets/DB8/C30/sprockets%2Fca860af2d10e0c745b6e38b12dabe05f +0 -0
  232. data/spec/dummy/tmp/cache/assets/DBF/630/sprockets%2F8423ad7ae72b0bc6baeac10405389fdf +0 -0
  233. data/spec/dummy/tmp/cache/assets/DC1/530/sprockets%2F4db0b289eee7dad03453a5924c20dcfa +0 -0
  234. data/spec/dummy/tmp/cache/assets/DC2/BA0/sprockets%2Feb1b52f8e6baba5409e0e09c3cc70e45 +0 -0
  235. data/spec/dummy/tmp/cache/assets/DCF/0B0/sprockets%2F23db7ab96a5549546bbdd0bc2e6ea86f +0 -0
  236. data/spec/dummy/tmp/cache/assets/DD0/EE0/sprockets%2F4b34c7c215efccbeaf495ee4715734fb +0 -0
  237. data/spec/dummy/tmp/cache/assets/DD4/990/sprockets%2F8dc6b77dc74dfdf830aa8f19b92c130d +0 -0
  238. data/spec/dummy/tmp/cache/assets/DD7/FC0/sprockets%2Fdee985ae48773ae9b4fc4dd0b85ce201 +0 -0
  239. data/spec/dummy/tmp/cache/assets/DD8/DC0/sprockets%2Fcc82f3b4753fc2d729ebbcfec94e3077 +0 -0
  240. data/spec/dummy/tmp/cache/assets/DD9/170/sprockets%2Fccaea8553317199dc77c526fefdfbb27 +0 -0
  241. data/spec/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  242. data/spec/dummy/tmp/cache/assets/DEA/350/sprockets%2Ffc836da09a20cdbc0b7b49b2525e1bbe +0 -0
  243. data/spec/dummy/tmp/cache/assets/DF1/A10/sprockets%2Fa925a815ca0bff4d6f42fbdf0d323a4f +0 -0
  244. data/spec/dummy/tmp/cache/assets/DF3/820/sprockets%2Fede955e751bbec440cbbfc00473c34ec +0 -0
  245. data/spec/dummy/tmp/cache/assets/DFC/4B0/sprockets%2F30bac9bffe7e6a5ae42a675f55d1c29a +0 -0
  246. data/spec/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  247. data/spec/dummy/tmp/cache/assets/E09/1A0/sprockets%2Fc76bb4e6dbb4f2afc0f09c79a41e988f +0 -0
  248. data/spec/dummy/tmp/cache/assets/E2D/E20/sprockets%2Fec8c39aa4e1ce3059eeab8f265ead07d +0 -0
  249. data/spec/dummy/tmp/cache/assets/E2E/010/sprockets%2Fab7b35e5d27eba9893aaef6f2bde1b72 +0 -0
  250. data/spec/dummy/tmp/cache/assets/E2E/A50/sprockets%2Fc7e5c2d6c06cfc59aabd0f814de69c3c +0 -0
  251. data/spec/dummy/tmp/cache/assets/E4B/EE0/sprockets%2F06c4dea4fc3cb561b87bd078aab0facc +0 -0
  252. data/spec/dummy/tmp/cache/assets/E5E/A60/sprockets%2Ff83d84dceff86c25a7bab27cbff33ac0 +0 -0
  253. data/spec/dummy/tmp/cache/assets/E6D/8B0/sprockets%2F9edfdf7e85cdd1a69b0eb14c6ce8ed19 +0 -0
  254. data/spec/dummy/tmp/cache/assets/E94/6D0/sprockets%2F3bdb0f5d3a20cbd18bafaaea4ba2a7b2 +0 -0
  255. data/spec/dummy/tmp/uploads/20130503-1614-5904-3619/normal_placeholder.png +0 -0
  256. data/spec/dummy/tmp/uploads/20130503-1614-5904-3619/placeholder.png +0 -0
  257. data/spec/dummy/tmp/uploads/20130503-1614-5904-3619/small_placeholder.png +0 -0
  258. data/spec/dummy/tmp/uploads/20130503-1614-5904-3619/thumb_placeholder.png +0 -0
  259. data/spec/dummy/tmp/uploads/20130503-1614-5904-6961/normal_placeholder.png +0 -0
  260. data/spec/dummy/tmp/uploads/20130503-1614-5904-6961/placeholder.png +0 -0
  261. data/spec/dummy/tmp/uploads/20130503-1614-5904-6961/small_placeholder.png +0 -0
  262. data/spec/dummy/tmp/uploads/20130503-1614-5904-6961/thumb_placeholder.png +0 -0
  263. data/spec/dummy/tmp/uploads/20130503-1614-5904-8166/normal_placeholder.png +0 -0
  264. data/spec/dummy/tmp/uploads/20130503-1614-5904-8166/placeholder.png +0 -0
  265. data/spec/dummy/tmp/uploads/20130503-1614-5904-8166/small_placeholder.png +0 -0
  266. data/spec/dummy/tmp/uploads/20130503-1614-5904-8166/thumb_placeholder.png +0 -0
  267. data/spec/dummy/tmp/uploads/20130503-1630-6161-2793/normal_placeholder.png +0 -0
  268. data/spec/dummy/tmp/uploads/20130503-1630-6161-2793/placeholder.png +0 -0
  269. data/spec/dummy/tmp/uploads/20130503-1630-6161-2793/small_placeholder.png +0 -0
  270. data/spec/dummy/tmp/uploads/20130503-1630-6161-2793/thumb_placeholder.png +0 -0
  271. data/spec/dummy/tmp/uploads/20130503-1630-6161-4124/normal_placeholder.png +0 -0
  272. data/spec/dummy/tmp/uploads/20130503-1630-6161-4124/placeholder.png +0 -0
  273. data/spec/dummy/tmp/uploads/20130503-1630-6161-4124/small_placeholder.png +0 -0
  274. data/spec/dummy/tmp/uploads/20130503-1630-6161-4124/thumb_placeholder.png +0 -0
  275. data/spec/dummy/tmp/uploads/20130503-1630-6161-5065/normal_placeholder.png +0 -0
  276. data/spec/dummy/tmp/uploads/20130503-1630-6161-5065/placeholder.png +0 -0
  277. data/spec/dummy/tmp/uploads/20130503-1630-6161-5065/small_placeholder.png +0 -0
  278. data/spec/dummy/tmp/uploads/20130503-1630-6161-5065/thumb_placeholder.png +0 -0
  279. data/spec/dummy/tmp/uploads/20130506-1009-4529-0167/normal_placeholder.png +0 -0
  280. data/spec/dummy/tmp/uploads/20130506-1009-4529-0167/placeholder.png +0 -0
  281. data/spec/dummy/tmp/uploads/20130506-1009-4529-0167/small_placeholder.png +0 -0
  282. data/spec/dummy/tmp/uploads/20130506-1009-4529-0167/thumb_placeholder.png +0 -0
  283. data/spec/dummy/tmp/uploads/20130506-1009-4529-1078/normal_placeholder.png +0 -0
  284. data/spec/dummy/tmp/uploads/20130506-1009-4529-1078/placeholder.png +0 -0
  285. data/spec/dummy/tmp/uploads/20130506-1009-4529-1078/small_placeholder.png +0 -0
  286. data/spec/dummy/tmp/uploads/20130506-1009-4529-1078/thumb_placeholder.png +0 -0
  287. data/spec/dummy/tmp/uploads/20130506-1009-4529-8277/normal_placeholder.png +0 -0
  288. data/spec/dummy/tmp/uploads/20130506-1009-4529-8277/placeholder.png +0 -0
  289. data/spec/dummy/tmp/uploads/20130506-1009-4529-8277/small_placeholder.png +0 -0
  290. data/spec/dummy/tmp/uploads/20130506-1009-4529-8277/thumb_placeholder.png +0 -0
  291. data/spec/dummy/tmp/uploads/20130506-1015-4718-5926/normal_placeholder.png +0 -0
  292. data/spec/dummy/tmp/uploads/20130506-1015-4718-5926/placeholder.png +0 -0
  293. data/spec/dummy/tmp/uploads/20130506-1015-4718-5926/small_placeholder.png +0 -0
  294. data/spec/dummy/tmp/uploads/20130506-1015-4718-5926/thumb_placeholder.png +0 -0
  295. data/spec/dummy/tmp/uploads/20130506-1015-4718-8555/normal_placeholder.png +0 -0
  296. data/spec/dummy/tmp/uploads/20130506-1015-4718-8555/placeholder.png +0 -0
  297. data/spec/dummy/tmp/uploads/20130506-1015-4718-8555/small_placeholder.png +0 -0
  298. data/spec/dummy/tmp/uploads/20130506-1015-4718-8555/thumb_placeholder.png +0 -0
  299. data/spec/dummy/tmp/uploads/20130506-1015-4718-8970/normal_placeholder.png +0 -0
  300. data/spec/dummy/tmp/uploads/20130506-1015-4718-8970/placeholder.png +0 -0
  301. data/spec/dummy/tmp/uploads/20130506-1015-4718-8970/small_placeholder.png +0 -0
  302. data/spec/dummy/tmp/uploads/20130506-1015-4718-8970/thumb_placeholder.png +0 -0
  303. data/spec/dummy/tmp/uploads/20130506-1016-4827-2822/normal_placeholder.png +0 -0
  304. data/spec/dummy/tmp/uploads/20130506-1016-4827-2822/placeholder.png +0 -0
  305. data/spec/dummy/tmp/uploads/20130506-1016-4827-2822/small_placeholder.png +0 -0
  306. data/spec/dummy/tmp/uploads/20130506-1016-4827-2822/thumb_placeholder.png +0 -0
  307. data/spec/dummy/tmp/uploads/20130506-1016-4827-5903/normal_placeholder.png +0 -0
  308. data/spec/dummy/tmp/uploads/20130506-1016-4827-5903/placeholder.png +0 -0
  309. data/spec/dummy/tmp/uploads/20130506-1016-4827-5903/small_placeholder.png +0 -0
  310. data/spec/dummy/tmp/uploads/20130506-1016-4827-5903/thumb_placeholder.png +0 -0
  311. data/spec/dummy/tmp/uploads/20130506-1016-4827-7236/normal_placeholder.png +0 -0
  312. data/spec/dummy/tmp/uploads/20130506-1016-4827-7236/placeholder.png +0 -0
  313. data/spec/dummy/tmp/uploads/20130506-1016-4827-7236/small_placeholder.png +0 -0
  314. data/spec/dummy/tmp/uploads/20130506-1016-4827-7236/thumb_placeholder.png +0 -0
  315. data/spec/dummy/tmp/uploads/20130514-1348-12420-1171/normal_placeholder.png +0 -0
  316. data/spec/dummy/tmp/uploads/20130514-1348-12420-1171/placeholder.png +0 -0
  317. data/spec/dummy/tmp/uploads/20130514-1348-12420-1171/small_placeholder.png +0 -0
  318. data/spec/dummy/tmp/uploads/20130514-1348-12420-1171/thumb_placeholder.png +0 -0
  319. data/spec/dummy/tmp/uploads/20130514-1348-12420-1953/normal_placeholder.png +0 -0
  320. data/spec/dummy/tmp/uploads/20130514-1348-12420-1953/placeholder.png +0 -0
  321. data/spec/dummy/tmp/uploads/20130514-1348-12420-1953/small_placeholder.png +0 -0
  322. data/spec/dummy/tmp/uploads/20130514-1348-12420-1953/thumb_placeholder.png +0 -0
  323. data/spec/dummy/tmp/uploads/20130514-1348-12420-2097/normal_placeholder.png +0 -0
  324. data/spec/dummy/tmp/uploads/20130514-1348-12420-2097/placeholder.png +0 -0
  325. data/spec/dummy/tmp/uploads/20130514-1348-12420-2097/small_placeholder.png +0 -0
  326. data/spec/dummy/tmp/uploads/20130514-1348-12420-2097/thumb_placeholder.png +0 -0
  327. data/spec/dummy/tmp/uploads/20130514-1348-12420-2484/normal_placeholder.png +0 -0
  328. data/spec/dummy/tmp/uploads/20130514-1348-12420-2484/placeholder.png +0 -0
  329. data/spec/dummy/tmp/uploads/20130514-1348-12420-2484/small_placeholder.png +0 -0
  330. data/spec/dummy/tmp/uploads/20130514-1348-12420-2484/thumb_placeholder.png +0 -0
  331. data/spec/dummy/tmp/uploads/20130514-1348-12420-2606/normal_placeholder.png +0 -0
  332. data/spec/dummy/tmp/uploads/20130514-1348-12420-2606/placeholder.png +0 -0
  333. data/spec/dummy/tmp/uploads/20130514-1348-12420-2606/small_placeholder.png +0 -0
  334. data/spec/dummy/tmp/uploads/20130514-1348-12420-2606/thumb_placeholder.png +0 -0
  335. data/spec/dummy/tmp/uploads/20130514-1348-12420-2640/normal_placeholder.png +0 -0
  336. data/spec/dummy/tmp/uploads/20130514-1348-12420-2640/placeholder.png +0 -0
  337. data/spec/dummy/tmp/uploads/20130514-1348-12420-2640/small_placeholder.png +0 -0
  338. data/spec/dummy/tmp/uploads/20130514-1348-12420-2640/thumb_placeholder.png +0 -0
  339. data/spec/dummy/tmp/uploads/20130514-1348-12420-3942/normal_placeholder.png +0 -0
  340. data/spec/dummy/tmp/uploads/20130514-1348-12420-3942/placeholder.png +0 -0
  341. data/spec/dummy/tmp/uploads/20130514-1348-12420-3942/small_placeholder.png +0 -0
  342. data/spec/dummy/tmp/uploads/20130514-1348-12420-3942/thumb_placeholder.png +0 -0
  343. data/spec/dummy/tmp/uploads/20130514-1348-12420-3995/normal_placeholder.png +0 -0
  344. data/spec/dummy/tmp/uploads/20130514-1348-12420-3995/placeholder.png +0 -0
  345. data/spec/dummy/tmp/uploads/20130514-1348-12420-3995/small_placeholder.png +0 -0
  346. data/spec/dummy/tmp/uploads/20130514-1348-12420-3995/thumb_placeholder.png +0 -0
  347. data/spec/dummy/tmp/uploads/20130514-1348-12420-4465/normal_placeholder.png +0 -0
  348. data/spec/dummy/tmp/uploads/20130514-1348-12420-4465/placeholder.png +0 -0
  349. data/spec/dummy/tmp/uploads/20130514-1348-12420-4465/small_placeholder.png +0 -0
  350. data/spec/dummy/tmp/uploads/20130514-1348-12420-4465/thumb_placeholder.png +0 -0
  351. data/spec/dummy/tmp/uploads/20130514-1348-12420-4513/normal_placeholder.png +0 -0
  352. data/spec/dummy/tmp/uploads/20130514-1348-12420-4513/placeholder.png +0 -0
  353. data/spec/dummy/tmp/uploads/20130514-1348-12420-4513/small_placeholder.png +0 -0
  354. data/spec/dummy/tmp/uploads/20130514-1348-12420-4513/thumb_placeholder.png +0 -0
  355. data/spec/dummy/tmp/uploads/20130514-1348-12420-4527/normal_placeholder.png +0 -0
  356. data/spec/dummy/tmp/uploads/20130514-1348-12420-4527/placeholder.png +0 -0
  357. data/spec/dummy/tmp/uploads/20130514-1348-12420-4527/small_placeholder.png +0 -0
  358. data/spec/dummy/tmp/uploads/20130514-1348-12420-4527/thumb_placeholder.png +0 -0
  359. data/spec/dummy/tmp/uploads/20130514-1348-12420-4926/normal_placeholder.png +0 -0
  360. data/spec/dummy/tmp/uploads/20130514-1348-12420-4926/placeholder.png +0 -0
  361. data/spec/dummy/tmp/uploads/20130514-1348-12420-4926/small_placeholder.png +0 -0
  362. data/spec/dummy/tmp/uploads/20130514-1348-12420-4926/thumb_placeholder.png +0 -0
  363. data/spec/dummy/tmp/uploads/20130514-1348-12420-5213/normal_placeholder.png +0 -0
  364. data/spec/dummy/tmp/uploads/20130514-1348-12420-5213/placeholder.png +0 -0
  365. data/spec/dummy/tmp/uploads/20130514-1348-12420-5213/small_placeholder.png +0 -0
  366. data/spec/dummy/tmp/uploads/20130514-1348-12420-5213/thumb_placeholder.png +0 -0
  367. data/spec/dummy/tmp/uploads/20130514-1348-12420-5546/normal_placeholder.png +0 -0
  368. data/spec/dummy/tmp/uploads/20130514-1348-12420-5546/placeholder.png +0 -0
  369. data/spec/dummy/tmp/uploads/20130514-1348-12420-5546/small_placeholder.png +0 -0
  370. data/spec/dummy/tmp/uploads/20130514-1348-12420-5546/thumb_placeholder.png +0 -0
  371. data/spec/dummy/tmp/uploads/20130514-1348-12420-5678/normal_placeholder.png +0 -0
  372. data/spec/dummy/tmp/uploads/20130514-1348-12420-5678/placeholder.png +0 -0
  373. data/spec/dummy/tmp/uploads/20130514-1348-12420-5678/small_placeholder.png +0 -0
  374. data/spec/dummy/tmp/uploads/20130514-1348-12420-5678/thumb_placeholder.png +0 -0
  375. data/spec/dummy/tmp/uploads/20130514-1348-12420-5947/normal_placeholder.png +0 -0
  376. data/spec/dummy/tmp/uploads/20130514-1348-12420-5947/placeholder.png +0 -0
  377. data/spec/dummy/tmp/uploads/20130514-1348-12420-5947/small_placeholder.png +0 -0
  378. data/spec/dummy/tmp/uploads/20130514-1348-12420-5947/thumb_placeholder.png +0 -0
  379. data/spec/dummy/tmp/uploads/20130514-1348-12420-6549/normal_placeholder.png +0 -0
  380. data/spec/dummy/tmp/uploads/20130514-1348-12420-6549/placeholder.png +0 -0
  381. data/spec/dummy/tmp/uploads/20130514-1348-12420-6549/small_placeholder.png +0 -0
  382. data/spec/dummy/tmp/uploads/20130514-1348-12420-6549/thumb_placeholder.png +0 -0
  383. data/spec/dummy/tmp/uploads/20130514-1348-12420-6797/normal_placeholder.png +0 -0
  384. data/spec/dummy/tmp/uploads/20130514-1348-12420-6797/placeholder.png +0 -0
  385. data/spec/dummy/tmp/uploads/20130514-1348-12420-6797/small_placeholder.png +0 -0
  386. data/spec/dummy/tmp/uploads/20130514-1348-12420-6797/thumb_placeholder.png +0 -0
  387. data/spec/dummy/tmp/uploads/20130514-1348-12420-6962/normal_placeholder.png +0 -0
  388. data/spec/dummy/tmp/uploads/20130514-1348-12420-6962/placeholder.png +0 -0
  389. data/spec/dummy/tmp/uploads/20130514-1348-12420-6962/small_placeholder.png +0 -0
  390. data/spec/dummy/tmp/uploads/20130514-1348-12420-6962/thumb_placeholder.png +0 -0
  391. data/spec/dummy/tmp/uploads/20130514-1348-12420-6970/normal_placeholder.png +0 -0
  392. data/spec/dummy/tmp/uploads/20130514-1348-12420-6970/placeholder.png +0 -0
  393. data/spec/dummy/tmp/uploads/20130514-1348-12420-6970/small_placeholder.png +0 -0
  394. data/spec/dummy/tmp/uploads/20130514-1348-12420-6970/thumb_placeholder.png +0 -0
  395. data/spec/dummy/tmp/uploads/20130514-1348-12420-8091/normal_placeholder.png +0 -0
  396. data/spec/dummy/tmp/uploads/20130514-1348-12420-8091/placeholder.png +0 -0
  397. data/spec/dummy/tmp/uploads/20130514-1348-12420-8091/small_placeholder.png +0 -0
  398. data/spec/dummy/tmp/uploads/20130514-1348-12420-8091/thumb_placeholder.png +0 -0
  399. data/spec/dummy/tmp/uploads/20130514-1348-12420-8800/normal_placeholder.png +0 -0
  400. data/spec/dummy/tmp/uploads/20130514-1348-12420-8800/placeholder.png +0 -0
  401. data/spec/dummy/tmp/uploads/20130514-1348-12420-8800/small_placeholder.png +0 -0
  402. data/spec/dummy/tmp/uploads/20130514-1348-12420-8800/thumb_placeholder.png +0 -0
  403. data/spec/dummy/tmp/uploads/20130514-1348-12420-8918/normal_placeholder.png +0 -0
  404. data/spec/dummy/tmp/uploads/20130514-1348-12420-8918/placeholder.png +0 -0
  405. data/spec/dummy/tmp/uploads/20130514-1348-12420-8918/small_placeholder.png +0 -0
  406. data/spec/dummy/tmp/uploads/20130514-1348-12420-8918/thumb_placeholder.png +0 -0
  407. data/spec/dummy/tmp/uploads/20130514-1348-12420-9407/normal_placeholder.png +0 -0
  408. data/spec/dummy/tmp/uploads/20130514-1348-12420-9407/placeholder.png +0 -0
  409. data/spec/dummy/tmp/uploads/20130514-1348-12420-9407/small_placeholder.png +0 -0
  410. data/spec/dummy/tmp/uploads/20130514-1348-12420-9407/thumb_placeholder.png +0 -0
  411. data/spec/dummy/tmp/uploads/20130514-1348-12420-9499/normal_placeholder.png +0 -0
  412. data/spec/dummy/tmp/uploads/20130514-1348-12420-9499/placeholder.png +0 -0
  413. data/spec/dummy/tmp/uploads/20130514-1348-12420-9499/small_placeholder.png +0 -0
  414. data/spec/dummy/tmp/uploads/20130514-1348-12420-9499/thumb_placeholder.png +0 -0
  415. data/spec/dummy/tmp/uploads/20130514-1348-12420-9908/normal_placeholder.png +0 -0
  416. data/spec/dummy/tmp/uploads/20130514-1348-12420-9908/placeholder.png +0 -0
  417. data/spec/dummy/tmp/uploads/20130514-1348-12420-9908/small_placeholder.png +0 -0
  418. data/spec/dummy/tmp/uploads/20130514-1348-12420-9908/thumb_placeholder.png +0 -0
  419. data/spec/dummy/tmp/uploads/20130514-1348-12420-9932/normal_placeholder.png +0 -0
  420. data/spec/dummy/tmp/uploads/20130514-1348-12420-9932/placeholder.png +0 -0
  421. data/spec/dummy/tmp/uploads/20130514-1348-12420-9932/small_placeholder.png +0 -0
  422. data/spec/dummy/tmp/uploads/20130514-1348-12420-9932/thumb_placeholder.png +0 -0
  423. data/spec/dummy/tmp/uploads/20130514-1349-12420-0034/normal_placeholder.png +0 -0
  424. data/spec/dummy/tmp/uploads/20130514-1349-12420-0034/placeholder.png +0 -0
  425. data/spec/dummy/tmp/uploads/20130514-1349-12420-0034/small_placeholder.png +0 -0
  426. data/spec/dummy/tmp/uploads/20130514-1349-12420-0034/thumb_placeholder.png +0 -0
  427. data/spec/dummy/tmp/uploads/20130514-1349-12420-2633/normal_placeholder.png +0 -0
  428. data/spec/dummy/tmp/uploads/20130514-1349-12420-2633/placeholder.png +0 -0
  429. data/spec/dummy/tmp/uploads/20130514-1349-12420-2633/small_placeholder.png +0 -0
  430. data/spec/dummy/tmp/uploads/20130514-1349-12420-2633/thumb_placeholder.png +0 -0
  431. data/spec/dummy/tmp/uploads/20130514-1349-12420-3840/normal_placeholder.png +0 -0
  432. data/spec/dummy/tmp/uploads/20130514-1349-12420-3840/placeholder.png +0 -0
  433. data/spec/dummy/tmp/uploads/20130514-1349-12420-3840/small_placeholder.png +0 -0
  434. data/spec/dummy/tmp/uploads/20130514-1349-12420-3840/thumb_placeholder.png +0 -0
  435. data/spec/dummy/tmp/uploads/20130514-1349-12420-4800/normal_placeholder.png +0 -0
  436. data/spec/dummy/tmp/uploads/20130514-1349-12420-4800/placeholder.png +0 -0
  437. data/spec/dummy/tmp/uploads/20130514-1349-12420-4800/small_placeholder.png +0 -0
  438. data/spec/dummy/tmp/uploads/20130514-1349-12420-4800/thumb_placeholder.png +0 -0
  439. data/spec/dummy/tmp/uploads/20130514-1349-12420-6878/normal_placeholder.png +0 -0
  440. data/spec/dummy/tmp/uploads/20130514-1349-12420-6878/placeholder.png +0 -0
  441. data/spec/dummy/tmp/uploads/20130514-1349-12420-6878/small_placeholder.png +0 -0
  442. data/spec/dummy/tmp/uploads/20130514-1349-12420-6878/thumb_placeholder.png +0 -0
  443. data/spec/dummy/tmp/uploads/20130514-1349-12420-7145/normal_placeholder.png +0 -0
  444. data/spec/dummy/tmp/uploads/20130514-1349-12420-7145/placeholder.png +0 -0
  445. data/spec/dummy/tmp/uploads/20130514-1349-12420-7145/small_placeholder.png +0 -0
  446. data/spec/dummy/tmp/uploads/20130514-1349-12420-7145/thumb_placeholder.png +0 -0
  447. data/spec/dummy/tmp/uploads/20130514-1349-12420-7187/normal_placeholder.png +0 -0
  448. data/spec/dummy/tmp/uploads/20130514-1349-12420-7187/placeholder.png +0 -0
  449. data/spec/dummy/tmp/uploads/20130514-1349-12420-7187/small_placeholder.png +0 -0
  450. data/spec/dummy/tmp/uploads/20130514-1349-12420-7187/thumb_placeholder.png +0 -0
  451. data/spec/dummy/tmp/uploads/20130514-1349-12420-7499/normal_placeholder.png +0 -0
  452. data/spec/dummy/tmp/uploads/20130514-1349-12420-7499/placeholder.png +0 -0
  453. data/spec/dummy/tmp/uploads/20130514-1349-12420-7499/small_placeholder.png +0 -0
  454. data/spec/dummy/tmp/uploads/20130514-1349-12420-7499/thumb_placeholder.png +0 -0
  455. data/spec/dummy/tmp/uploads/20130515-1904-24025-2789/normal_placeholder.png +0 -0
  456. data/spec/dummy/tmp/uploads/20130515-1904-24025-2789/placeholder.png +0 -0
  457. data/spec/dummy/tmp/uploads/20130515-1904-24025-2789/small_placeholder.png +0 -0
  458. data/spec/dummy/tmp/uploads/20130515-1904-24025-2789/thumb_placeholder.png +0 -0
  459. data/spec/factories/blocks.rb +1 -0
  460. data/spec/factories/keyframes.rb +8 -0
  461. data/spec/factories/layer.rb +33 -0
  462. data/spec/features/blocks/create_spec.rb +8 -5
  463. data/spec/features/blocks/delete_spec.rb +2 -2
  464. data/spec/features/blocks/edit_spec.rb +29 -7
  465. data/spec/features/blocks/index_spec.rb +15 -0
  466. data/spec/features/blocks/show_spec.rb +19 -5
  467. data/spec/features/layers/animation_layers/create_spec.rb +27 -0
  468. data/spec/features/layers/animation_layers/edit_spec.rb +27 -0
  469. data/spec/features/layers/embed_layers/create_spec.rb +25 -0
  470. data/spec/features/layers/embed_layers/edit_spec.rb +28 -0
  471. data/spec/features/layers/image_layers/create_spec.rb +8 -5
  472. data/spec/features/layers/image_layers/delete_spec.rb +3 -4
  473. data/spec/features/layers/image_layers/edit_spec.rb +34 -6
  474. data/spec/features/layers/paragraph_layers/create_spec.rb +27 -0
  475. data/spec/features/layers/paragraph_layers/edit_spec.rb +31 -0
  476. data/spec/features/layers/text_layers/create_spec.rb +29 -0
  477. data/spec/features/layers/text_layers/edit_spec.rb +29 -0
  478. data/spec/features/logout_spec.rb +12 -0
  479. data/spec/features/pages/edit_spec.rb +74 -0
  480. data/spec/features/pages/show_spec.rb +32 -0
  481. data/spec/models/animation_layer_spec.rb +46 -0
  482. data/spec/models/block_spec.rb +18 -0
  483. data/spec/models/embed_layer_spec.rb +21 -0
  484. data/spec/models/end_state_keyframe_spec.rb +18 -0
  485. data/spec/models/image_layer_spec.rb +19 -0
  486. data/spec/models/keyframe_spec.rb +185 -0
  487. data/spec/models/layer_spec.rb +147 -0
  488. data/spec/models/page_spec.rb +57 -7
  489. data/spec/models/paragraph_layer_spec.rb +44 -0
  490. data/spec/models/start_state_keyframe_spec.rb +18 -0
  491. data/spec/models/target_state_keyframe_spec.rb +18 -0
  492. data/spec/models/text_layer_spec.rb +56 -0
  493. data/spec/placeholder.png +0 -0
  494. data/spec/spec_helper.rb +4 -1
  495. data/spec/support/lets.rb +17 -6
  496. data/spec/validators/css_name_validator_spec.rb +34 -0
  497. data/spec/view_objects/animation_layer_view_object_spec.rb +77 -0
  498. data/spec/view_objects/image_layer_view_object_spec.rb +13 -0
  499. data/spec/view_objects/keyframe_view_object_spec.rb +119 -0
  500. data/spec/view_objects/layer_view_object_spec.rb +57 -0
  501. data/spec/view_objects/paragraph_layer_view_object_spec.rb +23 -0
  502. data/spec/view_objects/text_layer_view_object_spec.rb +33 -0
  503. data/vendor/assets/javascripts/jquery-1.8.3.min.js +2 -0
  504. data/vendor/assets/javascripts/jquery.easing.1.3.js +205 -0
  505. data/vendor/assets/javascripts/jquery.quicksand.js +443 -0
  506. data/vendor/assets/javascripts/scroll-startstop.events.jquery.js +69 -0
  507. data/vendor/assets/javascripts/skrollr.ie.min.js +2 -0
  508. data/vendor/assets/javascripts/skrollr.min.js +2 -0
  509. data/vendor/assets/javascripts/skrollr.mobile.min.js +2 -0
  510. metadata +816 -101
  511. data/app/views/layouts/flms/application.html.erb +0 -14
  512. data/db/migrate/20130312220011_create_flms_layers.rb +0 -13
  513. data/db/migrate/20130313002421_add_image_to_layers.rb +0 -5
  514. data/spec/dummy/tmp/pids/server.pid +0 -1
  515. data/spec/factories/image_layer.rb +0 -6
  516. data/spec/features/blocks/activating_blocks_spec.rb +0 -18
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YTI5N2E2Zjc2YzRkNGNjYWQyYThkM2E0MzJmNDk5M2YxN2FiYzVkZg==
5
+ data.tar.gz: !binary |-
6
+ YzhlNDFlOTY4M2RkNjU2ZjQ3MzU2NTE0YjAzYjkzY2NkOGY3ZDdhMw==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ ZWI5NDZiODI1NzAxOGNlNGYxYjNlMzFmNTk5NThkZWZhMzVhMDM5YzNmOTJl
10
+ Y2M5OWRhNzQyNDM3YjFkZGZkNjUwMDAxNTg3NWIzNjRjYTNlODRhMWNjMzg4
11
+ NDJhN2NlOTNiMzRhNDRkZjc3MzgwMGNjNmYwODc1ZGFjMjkyOTA=
12
+ data.tar.gz: !binary |-
13
+ ODdhYTQzMWI5NjllZjE5OTg3MWFiY2EwYjYwZGU4NTkxNmExODJjNDZjMGM4
14
+ NzRhNTc3YTAzZjFkOTBmNjYxOGJlOTllZjMxMDUyYTQzMGRkMWY4NTMwYzYw
15
+ MDg5MTQ0YjkwNjU1OTFkMjJlNmRiYzY2MzJiYWVlNGQwNWIxMWI=
data/README.md CHANGED
@@ -1,3 +1,103 @@
1
- = Flms [![Build Status](https://travis-ci.org/Originate-Inc/flms.png?branch=travis)](https://travis-ci.org/Originate-Inc/flms) [![Code Climate](https://codeclimate.com/github/Originate-Inc/flms.png)](https://codeclimate.com/github/Originate-Inc/flms)
1
+ = Flms [![Build Status](https://travis-ci.org/Originate-Inc/flms.png?branch=travis)](https://travis-ci.org/Originate-Inc/flms) [![Code Climate](https://codeclimate.com/github/Originate-Inc/flms.png)](https://codeclimate.com/github/Originate-Inc/flms) [![Coverage Status](https://coveralls.io/repos/Originate/flms/badge.png?branch=master)](https://coveralls.io/r/Originate/flms) [![Dependency Status](https://gemnasium.com/Originate/flms.png)](https://gemnasium.com/Originate/flms)
2
2
 
3
- This project rocks and uses MIT-LICENSE.
3
+ FLMS: the Floating Layer Management System
4
+ ==========================================
5
+
6
+ FLMS is a CMS for web pages that use interactive layers to present animated content. Essentially, it is an easy way to leverage the excellent [skrollr.js library](https://github.com/Prinzhorn/skrollr), included in this plugin. Creating the numerous data-xxxx styling tags to animate skrollr content gets tedious quickly, so FLMS automates the task.
7
+
8
+ Via the CMS, users can create 'layers' containing various types of rich content:
9
+ * Basic images (uploader included)
10
+ * Text banners
11
+ * Paragraphs with headings
12
+ * Embedded HTML (useful for things like YouTube videos and the like)
13
+ * Animated images (sprited animations that progress as the viewer scrolls)
14
+
15
+ The end result: create animated, parallax-scrolling sites via a CMS without needing to write a line of code. So sweet.
16
+
17
+ Setup
18
+ -----
19
+
20
+ Install the engine in your Rails app:
21
+
22
+ gem install flms
23
+
24
+ Install FLMS-related migrations to the host app and run them:
25
+
26
+ rake flms:install:migrations
27
+ rake db:migrate
28
+
29
+ Create a user:
30
+
31
+ rake flms:create_user[YourEmailAddressHere@example.com]
32
+
33
+ ...start your rails server, and you can log in at 0.0.0.0:3000/flms/login.
34
+
35
+ Basic Concepts
36
+ ==============
37
+
38
+ FLMS includes a built-in user authentication built via Devise, and the FLMS CMS pages all require login (with a few exceptions as noted below). The intent is to allow users to get up and running quickly with a usable CMS in a minimum of fuss.
39
+
40
+ FLMS includes the Carrierwave gem for handling file uploads.
41
+
42
+ Content in FLMS is built around the following core models: Layers, Blocks, and Pages.
43
+
44
+ Layers
45
+ ------
46
+
47
+ The primary content model is the layer. A layer in the most basic sense is a HTML DIV element that is animated via a series of keyframes (i.e., snapshots of CSS properties). The DIV can contain any content desired, although FLMS provides some basic layer types that provide an easy shortcut for creating basic animations.
48
+
49
+ The following 'simplified' layer types are provided by FLMS:
50
+ * Image: a simple div containing an uploaded image as the background-image.
51
+ * Text: a textual string, with controls for text size and color.
52
+ * Paragraph: a 'descriptive' block of text, with a header and body copy.
53
+ * Embed: allows users to embed arbitrary HTML, very useful for things like video elements from YouTube.
54
+ * Animation: users can upload an image containing animation frames vertically stiched together as a sprite, and specify how 'playback' of the animation frames is performed as the user scrolls.
55
+
56
+ These layer types simplify the process of creating animations by placing some constraints on how the animations are constructed. Specifically, the layers contain only three keyframes, to specify the beginning ('start'), middle ('target'), and final ('end') state of the layer. The keyframes allow for animation of a small set of common CSS attributes. Even with these constraints, a wide variety of animations can be created.
57
+
58
+ In addition to these types, FLMS provides an 'advanced' layer type that allows for an arbitrary number of keyframes and much greater power in CSS animation.
59
+
60
+ Blocks
61
+ ------
62
+
63
+ A block is a collection of layers. By definition parallax scrolling requires the differing movement of several layers simultaneously, so FLMS collects a set of layers within a block. Blocks are identified by both a CSS name and human-friendly name, and can be given a thumbnail identifier image.
64
+
65
+ Pages
66
+ -----
67
+
68
+ A page is given a name and a URL, and houses a collection of blocks, which are shown to the user in sequence as they scroll down the body of the page.
69
+
70
+ Pages provide a convenient endpoint for populating content into the host Rails app - simply add the following catch-all line to your routes.rb file in the host app to show FLMS pages as if they were full-fledged elements of your site:
71
+
72
+ match '*id' => 'flms/pages#show'
73
+
74
+ Customization
75
+ ==============
76
+
77
+ You can customize the views and or assets of FLMS in your app with either of the following rake commands:
78
+
79
+ rake flms:generate:views
80
+
81
+ or
82
+
83
+ rake flms:generate:assets
84
+
85
+ These commands allow you to edit the styles and or views in your app. Views will appear in 'app/views/flms', assets in 'app/assets/flms'. When using assets remember to require the stylesheets in application.css with the following line:
86
+
87
+ *= require_directory ./flms
88
+
89
+ To undo the generators use the respective commands as listed below:
90
+
91
+ rake flms:destroy:views
92
+
93
+ or
94
+
95
+ rake flms:destroy:assets
96
+
97
+ to remove the added views or assets from you application.
98
+
99
+ Credits
100
+ =======
101
+
102
+ FLMS is brought to you by the fine folks at [Originate](http://www.originate.com), and is distributed under the MIT-LICENSE.
103
+ Thanks of course due to Alexander Prinzhorn and the team behind the Skrollr library, on top of which this project is built.
@@ -14,5 +14,5 @@
14
14
  //= require jquery_ujs
15
15
  //= require jquery-ui
16
16
  //= require modularity/modularity
17
- //= require_tree .
17
+ //= require_tree ./admin/
18
18
  //= require bootstrapSwitch
@@ -1,8 +1,8 @@
1
1
  $ ->
2
- setTimeout remove_flash, 3000
2
+ setTimeout remove_flash, 1500
3
3
 
4
4
 
5
5
  # Fades out the flash messages.
6
6
  remove_flash = ->
7
- $('.flash').fadeOut 1500, ->
7
+ $('.flash').fadeOut 1000, ->
8
8
  $('.flash').remove()
@@ -17,4 +17,4 @@ class @BlockList extends modularity.Module
17
17
 
18
18
  # Called when the sorting is done.
19
19
  sorting_finished: =>
20
- @fire 'sorting_finished'
20
+ @trigger 'sorting_finished'
@@ -1,5 +1,5 @@
1
- # Page controller for the 'index' page for blocks.
2
- class @BlocksIndexPage extends modularity.Module
1
+ # Page controller for the 'edit' screen for pages.
2
+ class @PageEditPage extends modularity.Module
3
3
 
4
4
  constructor: ->
5
5
  super 'body'
@@ -0,0 +1,17 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // the compiled file.
9
+ //
10
+ // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
11
+ // GO AFTER THE REQUIRES BELOW.
12
+ //
13
+ //= require jquery
14
+ //= require jquery.easing.1.3
15
+ //= require skrollr.min
16
+ //= require jquery.quicksand.js
17
+ //= require_self
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  * CSS for the flms pages.
3
3
  *
4
- *= require_tree .
4
+ *= require_tree ./admin/.
5
5
  *= require jquery-ui
6
6
  *= require bootstrap
7
7
  *= require bootstrapSwitch
@@ -27,4 +27,3 @@ h4
27
27
  color: #333333
28
28
  border: 0
29
29
  border-bottom: 1px solid #e5e5e5
30
-
@@ -0,0 +1,4 @@
1
+ form
2
+ textarea
3
+ max-height: 150px
4
+ resize: none
@@ -1,7 +1,7 @@
1
1
  $drag-color: rgba(255, 255, 200, 0.6)
2
2
 
3
3
 
4
- body.blocks.index
4
+ body.pages.edit
5
5
 
6
6
  td
7
7
  vertical-align: middle
@@ -0,0 +1,8 @@
1
+ /*
2
+ * CSS for public facing flms pages.
3
+ *
4
+ *= require_tree ./public/.
5
+ *= require jquery-ui
6
+ *= require bootstrap
7
+ *= require bootstrapSwitch
8
+ */
@@ -0,0 +1,52 @@
1
+ body
2
+ padding-top: 20px
3
+ padding-bottom: 40px
4
+
5
+ .container-narrow
6
+ margin: 0 auto
7
+ max-width: 700px
8
+
9
+ #skrollr-body
10
+ #page
11
+ width: 100%
12
+ height: 100%
13
+ position: fixed
14
+ top: 0
15
+ left: 0
16
+ background-color: #000
17
+
18
+ .block
19
+ .image-layer
20
+ position: absolute
21
+ background-attachment: fixed
22
+
23
+ .image-div
24
+ background-repeat: no-repeat
25
+ background-position: center center
26
+ width: 100%
27
+ height: 100%
28
+
29
+ .text-layer
30
+ position: absolute
31
+ text-align: center
32
+ white-space: nowrap
33
+
34
+ .paragraph-layer
35
+ position: absolute
36
+ .box
37
+ padding: 10px 10px
38
+
39
+ .embed-layer
40
+ position: absolute
41
+ iframe
42
+ width: 100%
43
+ height: 100%
44
+
45
+ .animation-layer
46
+ position: absolute
47
+ .animation-frames
48
+ background-repeat: no-repeat
49
+
50
+ .scroll
51
+ left: 50%
52
+ margin-left: -25px
@@ -0,0 +1,45 @@
1
+ require_dependency "flms/application_controller"
2
+
3
+ module Flms
4
+ class AbstractLayerController < ApplicationController
5
+ layout 'flms/admin'
6
+ before_filter :authenticate_user!
7
+ before_filter :load_block
8
+ before_filter :load_layer, only: [:show, :edit, :update, :delete]
9
+
10
+ # All layer controllers utilize the same edit action
11
+ def edit
12
+ end
13
+
14
+ protected
15
+
16
+ # Call from create action in derived controller to complete create action
17
+ def do_create
18
+ @layer.block = @block
19
+ if @layer.save
20
+ redirect_to edit_block_path(@block), notice: 'Layer created'
21
+ else
22
+ render action: "new"
23
+ end
24
+ end
25
+
26
+ # Call with result of update_attributes call from update action in
27
+ # derived controller
28
+ def do_update status
29
+ if status
30
+ redirect_to edit_block_path(@block), notice: 'Layer updated'
31
+ else
32
+ render action: "edit"
33
+ end
34
+ end
35
+
36
+ def load_block
37
+ @block = Block.find params[:block_id]
38
+ end
39
+
40
+ def load_layer
41
+ raise 'I should be overridden in a derived class to load the proper layer type!'
42
+ end
43
+ end
44
+ end
45
+
@@ -0,0 +1,26 @@
1
+ module Flms
2
+ class AnimationLayersController < AbstractLayerController
3
+
4
+ def new
5
+ @layer = AnimationLayer.new.build_default_keyframes
6
+ end
7
+
8
+ def create
9
+ @layer = AnimationLayer.new params[:animation_layer]
10
+ @layer.image = params[:animation_layer][:image]
11
+ do_create
12
+ end
13
+
14
+ def update
15
+ do_update @layer.update_attributes(params[:animation_layer])
16
+ end
17
+
18
+ protected
19
+
20
+ def load_layer
21
+ @layer = AnimationLayer.find params[:id]
22
+ end
23
+
24
+ end
25
+ end
26
+
@@ -1,4 +1,17 @@
1
1
  module Flms
2
2
  class ApplicationController < ActionController::Base
3
+
4
+ # When we want to render a partial as HTML, but specify the plain_html custom
5
+ # format to a view, we need this method to swap the format to html so that
6
+ # Rails can properly resolve the partials (since we use *.html.haml for both
7
+ # :html and :plain_html formats)
8
+ def with_format format
9
+ old_formats = formats
10
+ self.formats = [format]
11
+ yield
12
+ self.formats = old_formats
13
+ nil
14
+ end
15
+
3
16
  end
4
17
  end
@@ -3,14 +3,22 @@ require_dependency "flms/application_controller"
3
3
  module Flms
4
4
  class BlocksController < ApplicationController
5
5
  layout 'flms/admin'
6
- before_filter :authenticate_user!
7
- before_filter :load_page
6
+ before_filter :authenticate_user!, except: [ :show ]
8
7
  before_filter :load_block, only: [:show, :edit, :update, :destroy]
8
+ layout :resolve_layout
9
9
 
10
10
  def index
11
+ @blocks = Block.all
11
12
  end
12
13
 
13
14
  def show
15
+ respond_to do |format|
16
+ format.plain_html { with_format('html') { render partial: 'flms/elements/block',
17
+ layout: 'flms/plain_styling',
18
+ locals: { block: @block, scroll_offset: 0 } } }
19
+ format.html
20
+ format.json { render json: @page }
21
+ end
14
22
  end
15
23
 
16
24
  def new
@@ -22,9 +30,9 @@ module Flms
22
30
 
23
31
  def create
24
32
  @block = Block.new(params[:block])
33
+
25
34
  if @block.save
26
- @block.pages << @page
27
- redirect_to page_blocks_path(@page), notice: 'Block created.'
35
+ redirect_to blocks_path, notice: 'Block created.'
28
36
  else
29
37
  render action: "new"
30
38
  end
@@ -32,36 +40,26 @@ module Flms
32
40
 
33
41
  def update
34
42
  if @block.update_attributes(params[:block])
35
- redirect_to [@page, :blocks], notice: 'Block was successfully updated.'
43
+ redirect_to blocks_path, notice: 'Block was successfully updated.'
36
44
  else
37
45
  render action: "edit"
38
46
  end
39
47
  end
40
48
 
41
- def update_all
42
- params[:block_data].each_with_index do |block_data, pos|
43
- position = @page.position_for_block block_data[:id].to_i
44
- position.active = block_data[:active]
45
- position.ordering = pos
46
- position.save!
47
- end
48
- render text: ''
49
- end
50
-
51
49
  def destroy
52
50
  @block.destroy
53
- redirect_to page_blocks_path(@page), notice: 'Block deleted'
51
+ redirect_to blocks_path, notice: 'Block deleted'
54
52
  end
55
53
 
56
-
57
- private
58
-
59
- def load_page
60
- @page = Page.find_by_url params[:page_id]
61
- end
54
+ private
62
55
 
63
56
  def load_block
64
57
  @block = Block.find params[:id]
65
58
  end
59
+
60
+ def resolve_layout
61
+ action_name == 'show' ? 'flms/public' : 'flms/admin'
62
+ end
63
+
66
64
  end
67
65
  end