lentil 0.0.1.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (563) hide show
  1. checksums.yaml +15 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +199 -0
  4. data/Rakefile +43 -0
  5. data/app/assets/images/lentil/icons/MHL-touch-icon-114.png +0 -0
  6. data/app/assets/images/lentil/icons/MHL-touch-icon-144.png +0 -0
  7. data/app/assets/images/lentil/icons/MHL-touch-icon-57.png +0 -0
  8. data/app/assets/images/lentil/icons/MHL-touch-icon-72.png +0 -0
  9. data/app/assets/images/lentil/icons/f_logo.png +0 -0
  10. data/app/assets/images/lentil/icons/twitter-bird-light-bgs.png +0 -0
  11. data/app/assets/images/lentil/loadingsquares.gif +0 -0
  12. data/app/assets/javascripts/active_admin.js +7 -0
  13. data/app/assets/javascripts/lentil.js +3 -0
  14. data/app/assets/javascripts/lentil/addanimatedimages.js +44 -0
  15. data/app/assets/javascripts/lentil/addfancybox.js +152 -0
  16. data/app/assets/javascripts/lentil/addinfinitescroll.js.erb +50 -0
  17. data/app/assets/javascripts/lentil/buttonhandler.js +25 -0
  18. data/app/assets/javascripts/lentil/event_tracking.js.erb +80 -0
  19. data/app/assets/javascripts/lentil/imageerrors.js +8 -0
  20. data/app/assets/javascripts/lentil/images.js +55 -0
  21. data/app/assets/javascripts/lentil/thisorthat.js.erb +129 -0
  22. data/app/assets/stylesheets/active_admin.css.scss +31 -0
  23. data/app/assets/stylesheets/admin/moderation.css.scss +65 -0
  24. data/app/assets/stylesheets/lentil.css.scss +8 -0
  25. data/app/assets/stylesheets/lentil/breakpoint/sass/_components.scss +315 -0
  26. data/app/assets/stylesheets/lentil/breakpoint/sass/_config.scss +37 -0
  27. data/app/assets/stylesheets/lentil/breakpoint/sass/_framework.scss +6 -0
  28. data/app/assets/stylesheets/lentil/breakpoint/sass/_structure.scss +222 -0
  29. data/app/assets/stylesheets/lentil/breakpoint/sass/config.rb +17 -0
  30. data/app/assets/stylesheets/lentil/breakpoint/sass/framework/_grid-core.scss +83 -0
  31. data/app/assets/stylesheets/lentil/breakpoint/sass/framework/_grid-helpers.scss +136 -0
  32. data/app/assets/stylesheets/lentil/breakpoint/sass/framework/_mixins.scss +19 -0
  33. data/app/assets/stylesheets/lentil/breakpoint/sass/framework/_normalize.scss +524 -0
  34. data/app/assets/stylesheets/lentil/breakpoint/sass/framework/_print.scss +19 -0
  35. data/app/assets/stylesheets/lentil/breakpoint/sass/style.scss +12 -0
  36. data/app/assets/stylesheets/lentil/image_animation.css.scss +23 -0
  37. data/app/assets/stylesheets/lentil/images.css.scss +6 -0
  38. data/app/assets/stylesheets/lentil/thisorthat.css.scss +91 -0
  39. data/app/controllers/lentil/application_controller.rb +6 -0
  40. data/app/controllers/lentil/flags_controller.rb +13 -0
  41. data/app/controllers/lentil/images_controller.rb +61 -0
  42. data/app/controllers/lentil/like_votes_controller.rb +13 -0
  43. data/app/controllers/lentil/pages_controller.rb +7 -0
  44. data/app/controllers/lentil/photographers_controller.rb +20 -0
  45. data/app/controllers/lentil/thisorthat_controller.rb +117 -0
  46. data/app/helpers/lentil/application_helper.rb +58 -0
  47. data/app/helpers/lentil/images_helper.rb +23 -0
  48. data/app/helpers/lentil/thisorthat_helper.rb +19 -0
  49. data/app/models/lentil/admin_user.rb +32 -0
  50. data/app/models/lentil/battle.rb +33 -0
  51. data/app/models/lentil/flag.rb +14 -0
  52. data/app/models/lentil/image.rb +174 -0
  53. data/app/models/lentil/license.rb +21 -0
  54. data/app/models/lentil/licensing.rb +16 -0
  55. data/app/models/lentil/like_vote.rb +14 -0
  56. data/app/models/lentil/service.rb +17 -0
  57. data/app/models/lentil/tag.rb +23 -0
  58. data/app/models/lentil/tagging.rb +20 -0
  59. data/app/models/lentil/tagset.rb +24 -0
  60. data/app/models/lentil/tagset_assignment.rb +17 -0
  61. data/app/models/lentil/user.rb +27 -0
  62. data/app/views/admin/lentil_images/_moderation_form_body.html.erb +47 -0
  63. data/app/views/admin/lentil_images/flagging_history.html.erb +33 -0
  64. data/app/views/admin/lentil_images/manual_input.html.erb +6 -0
  65. data/app/views/admin/lentil_images/moderate.html.erb +9 -0
  66. data/app/views/layouts/lentil/_apple_touch_icons.html.erb +1 -0
  67. data/app/views/layouts/lentil/_error.html.erb +9 -0
  68. data/app/views/layouts/lentil/_flag_button.html.erb +10 -0
  69. data/app/views/layouts/lentil/_image_popup.html.erb +34 -0
  70. data/app/views/layouts/lentil/_like_button.html.erb +18 -0
  71. data/app/views/layouts/lentil/_secondary_navigation.html.erb +5 -0
  72. data/app/views/layouts/lentil/_top_navigation.html.erb +26 -0
  73. data/app/views/layouts/lentil/application.html.erb +28 -0
  74. data/app/views/lentil/images/_flagging_modal.html.erb +18 -0
  75. data/app/views/lentil/images/_image_tiles.erb +14 -0
  76. data/app/views/lentil/images/animate.html.erb +19 -0
  77. data/app/views/lentil/images/index.atom.builder +16 -0
  78. data/app/views/lentil/images/index.html.erb +30 -0
  79. data/app/views/lentil/images/index.rss.builder +19 -0
  80. data/app/views/lentil/images/show.html.erb +24 -0
  81. data/app/views/lentil/pages/about.html.erb +9 -0
  82. data/app/views/lentil/photographers/index.html.erb +13 -0
  83. data/app/views/lentil/photographers/show.html.erb +15 -0
  84. data/app/views/lentil/thisorthat/_battle_form.html.erb +44 -0
  85. data/app/views/lentil/thisorthat/battle.html.erb +13 -0
  86. data/app/views/lentil/thisorthat/battle_error.html.erb +3 -0
  87. data/config/locales/en.yml +39 -0
  88. data/config/routes.rb +17 -0
  89. data/db/migrate/20121028023144_create_images.rb +10 -0
  90. data/db/migrate/20121028042738_create_like_votes.rb +10 -0
  91. data/db/migrate/20121028052935_add_like_votes_counter_to_images.rb +5 -0
  92. data/db/migrate/20121028164239_add_sessions_table.rb +12 -0
  93. data/db/migrate/20121030170509_add_url_column_to_images.rb +5 -0
  94. data/db/migrate/20121030170542_add_username_column_to_images.rb +5 -0
  95. data/db/migrate/20121112162243_create_users.rb +11 -0
  96. data/db/migrate/20121112163008_create_services.rb +10 -0
  97. data/db/migrate/20121112163635_remove_username_from_images.rb +9 -0
  98. data/db/migrate/20121112163857_remove_title_from_images.rb +9 -0
  99. data/db/migrate/20121112165849_add_user_id_to_images.rb +5 -0
  100. data/db/migrate/20121112200340_add_service_id_to_users.rb +5 -0
  101. data/db/migrate/20121119210407_create_tags.rb +9 -0
  102. data/db/migrate/20121119210450_create_tagsets.rb +10 -0
  103. data/db/migrate/20121119210538_create_tagset_assignments.rb +12 -0
  104. data/db/migrate/20121119211236_create_taggings.rb +12 -0
  105. data/db/migrate/20121120172450_create_licenses.rb +11 -0
  106. data/db/migrate/20121120172712_create_licensings.rb +12 -0
  107. data/db/migrate/20121120191524_devise_create_admin_users.rb +52 -0
  108. data/db/migrate/20121120191530_create_admin_notes.rb +17 -0
  109. data/db/migrate/20121120191531_move_admin_notes_to_comments.rb +25 -0
  110. data/db/migrate/20121121204450_add_state_to_images.rb +5 -0
  111. data/db/migrate/20121126170008_add_external_identifier_to_images.rb +6 -0
  112. data/db/migrate/20121126192652_add_short_name_to_licenses.rb +6 -0
  113. data/db/migrate/20121126205839_add_long_url_to_images.rb +5 -0
  114. data/db/migrate/20121127154531_create_flags.rb +10 -0
  115. data/db/migrate/20121127160158_add_original_metadata_to_images.rb +5 -0
  116. data/db/migrate/20121127193932_add_index_to_users.rb +5 -0
  117. data/db/migrate/20121127194027_add_index_to_services.rb +5 -0
  118. data/db/migrate/20121127194428_add_index_to_tags.rb +5 -0
  119. data/db/migrate/20121127195059_add_original_datetime_to_images.rb +5 -0
  120. data/db/migrate/20121127210507_add_bio_to_users.rb +5 -0
  121. data/db/migrate/20121127211257_add_staff_like_to_images.rb +5 -0
  122. data/db/migrate/20121128190207_add_moderator_to_images.rb +7 -0
  123. data/db/migrate/20121128213305_add_second_moderation_boolean_to_images.rb +5 -0
  124. data/db/migrate/20121130202753_add_default_for_staff_like.rb +5 -0
  125. data/db/migrate/20121130212917_add_default_for_image_state.rb +5 -0
  126. data/db/migrate/20121206145832_add_staff_tag_to_taggings.rb +5 -0
  127. data/db/migrate/20121213142215_add_images_count_to_users.rb +14 -0
  128. data/db/migrate/20121220151517_create_battles.rb +10 -0
  129. data/db/migrate/20121220155108_add_wins_counter_to_images.rb +5 -0
  130. data/db/migrate/20121220182845_add_losses_counter_to_images.rb +5 -0
  131. data/db/migrate/20130107192518_add_win_pct_to_images.rb +5 -0
  132. data/db/migrate/20130108195949_add_popular_score_to_images.rb +5 -0
  133. data/db/migrate/20130116145103_add_harvest_to_tagsets.rb +5 -0
  134. data/db/migrate/20130130194955_add_file_harvested_date_field_to_images.rb +6 -0
  135. data/db/migrate/20130306144752_add_donor_agreement_submitted_to_images.rb +5 -0
  136. data/db/migrate/20130306145013_add_donor_agreement_failed_to_images.rb +5 -0
  137. data/db/migrate/20130403135640_add_failed_file_checks_to_images.rb +6 -0
  138. data/db/migrate/20130412195348_namespace_tables.rb +16 -0
  139. data/db/migrate/20130413005943_namespace_licensings.rb +5 -0
  140. data/db/migrate/20130506204728_add_donor_agreement_rejected_to_images.rb +5 -0
  141. data/db/migrate/20130506205348_add_do_not_request_donation_to_lentil_images.rb +5 -0
  142. data/db/seeds.rb +5 -0
  143. data/lib/generators/lentil/USAGE +8 -0
  144. data/lib/generators/lentil/install_generator.rb +85 -0
  145. data/lib/generators/lentil/templates/README.md +19 -0
  146. data/lib/generators/lentil/templates/active_admin.rb +150 -0
  147. data/lib/generators/lentil/templates/devise.rb +232 -0
  148. data/lib/generators/lentil/templates/kaminari.rb +3 -0
  149. data/lib/generators/lentil/templates/lentil_config.yml +33 -0
  150. data/lib/lentil.rb +24 -0
  151. data/lib/lentil/admin/admin_user.rb +24 -0
  152. data/lib/lentil/admin/dashboard.rb +116 -0
  153. data/lib/lentil/admin/flags.rb +17 -0
  154. data/lib/lentil/admin/images.rb +209 -0
  155. data/lib/lentil/admin/tags.rb +18 -0
  156. data/lib/lentil/admin/tagsets.rb +51 -0
  157. data/lib/lentil/admin/user.rb +20 -0
  158. data/lib/lentil/admin/view_helpers.rb +11 -0
  159. data/lib/lentil/engine.rb +22 -0
  160. data/lib/lentil/instagram_harvester.rb +249 -0
  161. data/lib/lentil/popularity_calculator.rb +63 -0
  162. data/lib/lentil/version.rb +3 -0
  163. data/lib/tasks/auto_annotate_models.rake +20 -0
  164. data/lib/tasks/image_services.rake +129 -0
  165. data/lib/tasks/lentil_tasks.rake +10 -0
  166. data/lib/tasks/popularity.rake +16 -0
  167. data/test/dummy/README.rdoc +261 -0
  168. data/test/dummy/Rakefile +7 -0
  169. data/test/dummy/app/assets/javascripts/application.js +15 -0
  170. data/test/dummy/app/assets/stylesheets/application.css.scss +1 -0
  171. data/test/dummy/app/controllers/application_controller.rb +3 -0
  172. data/test/dummy/app/helpers/application_helper.rb +2 -0
  173. data/test/dummy/config.ru +4 -0
  174. data/test/dummy/config/application.rb +59 -0
  175. data/test/dummy/config/boot.rb +10 -0
  176. data/test/dummy/config/database.yml +25 -0
  177. data/test/dummy/config/environment.rb +5 -0
  178. data/test/dummy/config/environments/development.rb +37 -0
  179. data/test/dummy/config/environments/production.rb +67 -0
  180. data/test/dummy/config/environments/test.rb +37 -0
  181. data/test/dummy/config/initializers/active_admin.rb +150 -0
  182. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  183. data/test/dummy/config/initializers/devise.rb +232 -0
  184. data/test/dummy/config/initializers/inflections.rb +15 -0
  185. data/test/dummy/config/initializers/kaminari.rb +3 -0
  186. data/test/dummy/config/initializers/mime_types.rb +5 -0
  187. data/test/dummy/config/initializers/secret_token.rb +7 -0
  188. data/test/dummy/config/initializers/session_store.rb +8 -0
  189. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  190. data/test/dummy/config/lentil_config.yml +30 -0
  191. data/test/dummy/config/locales/en.yml +5 -0
  192. data/test/dummy/config/routes.rb +9 -0
  193. data/test/dummy/db/schema.rb +195 -0
  194. data/test/dummy/db/seeds.rb +1 -0
  195. data/test/dummy/db/test.sqlite3 +0 -0
  196. data/test/dummy/log/test.log +10235 -0
  197. data/test/dummy/public/404.html +26 -0
  198. data/test/dummy/public/422.html +26 -0
  199. data/test/dummy/public/500.html +25 -0
  200. data/test/dummy/public/favicon.ico +0 -0
  201. data/test/dummy/script/rails +6 -0
  202. data/test/dummy/tmp/cache/assets/C42/6B0/sprockets%2Ff9428783b785862eb53346b864f94428 +0 -0
  203. data/test/dummy/tmp/cache/assets/C48/E70/sprockets%2Fa7be1700e70899163027f63a25844c02 +0 -0
  204. data/test/dummy/tmp/cache/assets/C57/560/sprockets%2F1f547a440537aec8d738c93894407105 +0 -0
  205. data/test/dummy/tmp/cache/assets/C64/FE0/sprockets%2F64416e104b07dc260675009a5aa802c1 +0 -0
  206. data/test/dummy/tmp/cache/assets/C6C/080/sprockets%2F2116707a968e8208e090b121181afc0a +0 -0
  207. data/test/dummy/tmp/cache/assets/C6F/5C0/sprockets%2Fddc2132bb0b628079c5065081c817551 +0 -0
  208. data/test/dummy/tmp/cache/assets/C7B/090/sprockets%2F96c14f0b10f122605c2c48b5277865e6 +0 -0
  209. data/test/dummy/tmp/cache/assets/C83/600/sprockets%2F68b2320f62db97898602c88ab351b154 +0 -0
  210. data/test/dummy/tmp/cache/assets/C8D/0B0/sprockets%2F4086552147c1d9af9c66e72943d63b82 +0 -0
  211. data/test/dummy/tmp/cache/assets/C92/100/sprockets%2F36490a1ee805e37f098a7817e6c95526 +0 -0
  212. data/test/dummy/tmp/cache/assets/C96/970/sprockets%2F0829123a4f1a0c4102c81c9a35c02c98 +0 -0
  213. data/test/dummy/tmp/cache/assets/C99/8E0/sprockets%2Fe953726264248e339078be7cc7926e4f +0 -0
  214. data/test/dummy/tmp/cache/assets/CA6/380/sprockets%2F0db015389c4847b44149da5432ee600e +0 -0
  215. data/test/dummy/tmp/cache/assets/CAC/100/sprockets%2F9399d899650c546f87d34e233caf9977 +0 -0
  216. data/test/dummy/tmp/cache/assets/CB2/410/sprockets%2F95d0566e48bb62f4bf44364504421e9a +0 -0
  217. data/test/dummy/tmp/cache/assets/CB5/320/sprockets%2Fcc2889b817f6b8603540cd71e6616b50 +0 -0
  218. data/test/dummy/tmp/cache/assets/CB9/990/sprockets%2Faf8ad756710f9583563033dd94c728c0 +0 -0
  219. data/test/dummy/tmp/cache/assets/CC6/F80/sprockets%2Fd5e909a571443a22cf0dc0c113a94114 +0 -0
  220. data/test/dummy/tmp/cache/assets/CC8/C20/sprockets%2F6354de7687421eeda9c430397894f8f0 +0 -0
  221. data/test/dummy/tmp/cache/assets/CC9/7B0/sprockets%2Ffaa30a33ae1698f27018d11e3f072233 +0 -0
  222. data/test/dummy/tmp/cache/assets/CCF/5F0/sprockets%2F5d62451bc086a25070b4ea73c387d1a5 +0 -0
  223. data/test/dummy/tmp/cache/assets/CD5/A00/sprockets%2F9c4914e228af6400d302b6cd283f900e +0 -0
  224. data/test/dummy/tmp/cache/assets/CD6/170/sprockets%2F3554b0cf72c07f591dcb54630607d0a9 +0 -0
  225. data/test/dummy/tmp/cache/assets/CD6/F30/sprockets%2F23191ae5e95d7e0e0771b7033a1097af +0 -0
  226. data/test/dummy/tmp/cache/assets/CE5/210/sprockets%2Fdb0122cf42e7810fe0799874be09644e +0 -0
  227. data/test/dummy/tmp/cache/assets/CE5/650/sprockets%2F8ab512c9b33ac90e699b73469d71f061 +0 -0
  228. data/test/dummy/tmp/cache/assets/CE6/FE0/sprockets%2F73ec02022749e817b83909f60cce7a5f +0 -0
  229. data/test/dummy/tmp/cache/assets/CE7/610/sprockets%2F08cbe5246a49c4599797a0224fd246ea +0 -0
  230. data/test/dummy/tmp/cache/assets/CE7/F00/sprockets%2Fa74a53552b73e97b67ad19ce7660055f +0 -0
  231. data/test/dummy/tmp/cache/assets/CEA/A40/sprockets%2Fdfdd64331199cfc265779fd03241377c +0 -0
  232. data/test/dummy/tmp/cache/assets/CEA/D30/sprockets%2F45a3a8537165a7657e4ed46f8bdb0593 +0 -0
  233. data/test/dummy/tmp/cache/assets/CEC/830/sprockets%2F77ad86593cd9332af1407493e5c39c5b +0 -0
  234. data/test/dummy/tmp/cache/assets/CEC/C10/sprockets%2Fc193f41bd81159ae9ef7b0385250e789 +0 -0
  235. data/test/dummy/tmp/cache/assets/CED/250/sprockets%2F28b6d357c282e6867362ed05881dfe2b +0 -0
  236. data/test/dummy/tmp/cache/assets/CED/460/sprockets%2Fd37d356a7d06d0609ea3f7628496d29d +0 -0
  237. data/test/dummy/tmp/cache/assets/CF9/DA0/sprockets%2Fedb69283f09967db46c74b72ae179494 +0 -0
  238. data/test/dummy/tmp/cache/assets/CFB/160/sprockets%2F98a9093839b570dcc8997d274dbbc465 +0 -0
  239. data/test/dummy/tmp/cache/assets/D03/CD0/sprockets%2F2cd0353d32bc3c4284ef8537a3b47f22 +0 -0
  240. data/test/dummy/tmp/cache/assets/D04/360/sprockets%2Fddeca47fb0c8741454b26453d41c8015 +0 -0
  241. data/test/dummy/tmp/cache/assets/D04/C00/sprockets%2Fca82ed20399235d2c48dbb6d1620732d +0 -0
  242. data/test/dummy/tmp/cache/assets/D04/F50/sprockets%2F1dada65d112db8475da0768b01971a94 +0 -0
  243. data/test/dummy/tmp/cache/assets/D0D/B10/sprockets%2F3de9d42f71f1bc23221b69171e90ed67 +0 -0
  244. data/test/dummy/tmp/cache/assets/D1B/590/sprockets%2Fbe6ac6f9a700610d5ba87966e577077d +0 -0
  245. data/test/dummy/tmp/cache/assets/D1E/680/sprockets%2F509a2e8767cd429ea59a1b689d4ab484 +0 -0
  246. data/test/dummy/tmp/cache/assets/D27/B70/sprockets%2F5780a94fb908448ed3e800e63fd877de +0 -0
  247. data/test/dummy/tmp/cache/assets/D2E/B70/sprockets%2Fb05c50d8309cf7e7c006b344fbed0107 +0 -0
  248. data/test/dummy/tmp/cache/assets/D32/340/sprockets%2Fbfd4a939f123425ff33a40a76032ded2 +0 -0
  249. data/test/dummy/tmp/cache/assets/D34/C30/sprockets%2F715a4379b39f2577210c15affca3bdc1 +0 -0
  250. data/test/dummy/tmp/cache/assets/D38/440/sprockets%2Fc906c171e7aa8ba93ec3219ce4f04705 +0 -0
  251. data/test/dummy/tmp/cache/assets/D38/B20/sprockets%2F2b1c2ef9ddf068ab0174d4568091ea62 +0 -0
  252. data/test/dummy/tmp/cache/assets/D3B/EC0/sprockets%2Fc3ef1b053f9f177d9141cc375bf61c50 +0 -0
  253. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  254. data/test/dummy/tmp/cache/assets/D56/BE0/sprockets%2F7777b5cfe624ec519525fe82da08f7e6 +0 -0
  255. data/test/dummy/tmp/cache/assets/D61/290/sprockets%2Fdf8e43ab35b1467495b10ad40c97bb1b +0 -0
  256. data/test/dummy/tmp/cache/assets/D66/AD0/sprockets%2F630aed9dbe5fb89243b0c040af3670e7 +0 -0
  257. data/test/dummy/tmp/cache/assets/D69/E10/sprockets%2F48900c1edbfe227d110f8050fbdd97f4 +0 -0
  258. data/test/dummy/tmp/cache/assets/D6D/AB0/sprockets%2F7138214dfee4490b54377eecc4cbfe11 +0 -0
  259. data/test/dummy/tmp/cache/assets/D6F/EF0/sprockets%2F0466d0a8ac4be2e9114ff4e82af38d84 +0 -0
  260. data/test/dummy/tmp/cache/assets/D73/040/sprockets%2Fcab4ce19553a2852a2ecec47f1e87568 +0 -0
  261. data/test/dummy/tmp/cache/assets/D74/490/sprockets%2Fa17a51fbc23c1a3648e9f6fec8f62943 +0 -0
  262. data/test/dummy/tmp/cache/assets/D74/680/sprockets%2F3dd8cd62caf32217aa89f897b0eb2818 +0 -0
  263. data/test/dummy/tmp/cache/assets/D7A/930/sprockets%2F6be8ba37ee48b21a9ab604565dfd9775 +0 -0
  264. data/test/dummy/tmp/cache/assets/D7A/A90/sprockets%2Ffec462cdc03e47621953fc8eb9e6547a +0 -0
  265. data/test/dummy/tmp/cache/assets/D8B/ED0/sprockets%2Fcc585faf0bcbb142f7125444e4fa6a02 +0 -0
  266. data/test/dummy/tmp/cache/assets/D90/440/sprockets%2Fb2aa1e118ce5bd06dee76be633562d42 +0 -0
  267. data/test/dummy/tmp/cache/assets/D91/080/sprockets%2Fbcca522c6302f184f12fe0e8a7d7e71a +0 -0
  268. data/test/dummy/tmp/cache/assets/D94/FD0/sprockets%2F2b120edc1ebea9c0f72d9be11d778390 +0 -0
  269. data/test/dummy/tmp/cache/assets/D95/2B0/sprockets%2F89dbd7378a1d1062e45dcc3df7a3a11c +0 -0
  270. data/test/dummy/tmp/cache/assets/D9C/1C0/sprockets%2F6d2b0db50dd2acf27667a48159c9f6ab +0 -0
  271. data/test/dummy/tmp/cache/assets/D9C/8A0/sprockets%2Fc76d2440ebeb87ab52dfe9d80bf10086 +0 -0
  272. data/test/dummy/tmp/cache/assets/D9D/380/sprockets%2Fb04c1714897d76abeca81fa0a37f8e6b +0 -0
  273. data/test/dummy/tmp/cache/assets/D9D/5B0/sprockets%2Fddcba2ec2b3037ef281e781a486de980 +0 -0
  274. data/test/dummy/tmp/cache/assets/D9F/300/sprockets%2Fc13fc73ceafa45876a901b3e775b83ae +0 -0
  275. data/test/dummy/tmp/cache/assets/DB0/FD0/sprockets%2F996ad98b7351ad4d9bd4b485a7ae9fa3 +0 -0
  276. data/test/dummy/tmp/cache/assets/DB1/8D0/sprockets%2F6cf903e8ff571c4d957e479cac1bc19d +0 -0
  277. data/test/dummy/tmp/cache/assets/DB3/1D0/sprockets%2F22cba3622ce0621f3eba0dd7e1aa089f +0 -0
  278. data/test/dummy/tmp/cache/assets/DB4/0B0/sprockets%2Fe8f58b1269ee313ff8b892bca727ede6 +0 -0
  279. data/test/dummy/tmp/cache/assets/DB6/F30/sprockets%2Fb6999585996e0f4bff328ba3addd17fb +0 -0
  280. data/test/dummy/tmp/cache/assets/DC1/020/sprockets%2Fbf6419ab7cf802a47da9ec4d1040cd4b +0 -0
  281. data/test/dummy/tmp/cache/assets/DC4/040/sprockets%2F0c65ff4bf893dd905d30aa129f4abca2 +0 -0
  282. data/test/dummy/tmp/cache/assets/DCA/030/sprockets%2F0bc7d1ffb47f42b36bc9abec83b58442 +0 -0
  283. data/test/dummy/tmp/cache/assets/DCB/D90/sprockets%2Fcfca0c746a29e28e6507eb312e7ec5bd +0 -0
  284. data/test/dummy/tmp/cache/assets/DCC/EA0/sprockets%2F3c7d9707a1daca88216a8ffc0fa8e4a3 +0 -0
  285. data/test/dummy/tmp/cache/assets/DCE/E00/sprockets%2F5f20b88da0ea9a18a05ee2f4d03f97ff +0 -0
  286. data/test/dummy/tmp/cache/assets/DCE/EC0/sprockets%2Ff2ec34a23c62dd857e1cf1df5966bc3b +0 -0
  287. data/test/dummy/tmp/cache/assets/DD3/E70/sprockets%2F6570fc1bef16b28caa54448c9deffa29 +0 -0
  288. data/test/dummy/tmp/cache/assets/DD7/F60/sprockets%2Fba89e9841faeba02ba74a8ed492f287e +0 -0
  289. data/test/dummy/tmp/cache/assets/DDA/900/sprockets%2F24705bef559fbf6f8738b7ab9b3f0faa +0 -0
  290. data/test/dummy/tmp/cache/assets/DDA/DD0/sprockets%2F74f3d35d3bacb479b95d56d17bafe75f +0 -0
  291. data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  292. data/test/dummy/tmp/cache/assets/DDC/9A0/sprockets%2F6b6d65eb6c891e5d6b5c1af73ae98ca6 +0 -0
  293. data/test/dummy/tmp/cache/assets/DDE/9B0/sprockets%2F890f41b9acdd3f93bd6ef7ae908ce472 +0 -0
  294. data/test/dummy/tmp/cache/assets/DE6/210/sprockets%2Fa2d10a00bca3a1e477d6dc95effc35c1 +0 -0
  295. data/test/dummy/tmp/cache/assets/DEE/C90/sprockets%2Ffca14d24400af9ec6deca6ec402953cb +0 -0
  296. data/test/dummy/tmp/cache/assets/DFB/980/sprockets%2F73cd2a8ad913ea8aece63bb39e3b72c6 +0 -0
  297. data/test/dummy/tmp/cache/assets/E03/CF0/sprockets%2Ffd9ccc8eca5b28ea8c175587a1c37cb3 +0 -0
  298. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  299. data/test/dummy/tmp/cache/assets/E07/0F0/sprockets%2F96ac3cc2bdaae9cde264974ef77d2c81 +0 -0
  300. data/test/dummy/tmp/cache/assets/E0F/E90/sprockets%2F8e7db2bac32a0e9cac06b43ab5d242ab +0 -0
  301. data/test/dummy/tmp/cache/assets/E25/820/sprockets%2Fd3b6a937cfa7e45cffc316bae06db5b0 +0 -0
  302. data/test/dummy/tmp/cache/assets/E2D/020/sprockets%2Fcbafddc9ed34b5bb8d1e300c55b488e9 +0 -0
  303. data/test/dummy/tmp/cache/assets/E33/300/sprockets%2Fb751f7e95e5efaedb23aef5b5069bd2c +0 -0
  304. data/test/dummy/tmp/cache/assets/E39/490/sprockets%2Ff0d1f807d9aeda4a98600cb9fe9df7cc +0 -0
  305. data/test/dummy/tmp/cache/assets/E68/D50/sprockets%2Fbb4b566ad8ba5fa7cf5e547cedfe0f95 +0 -0
  306. data/test/dummy/tmp/cache/sass/09ef2509826c8e6328e00a46ab2d431530905427/_base.scssc +0 -0
  307. data/test/dummy/tmp/cache/sass/09ef2509826c8e6328e00a46ab2d431530905427/_sprite-img.scssc +0 -0
  308. data/test/dummy/tmp/cache/sass/18aae862c6b8d844ecb0d28099e3c6dc22a78390/_components.scssc +0 -0
  309. data/test/dummy/tmp/cache/sass/18aae862c6b8d844ecb0d28099e3c6dc22a78390/_config.scssc +0 -0
  310. data/test/dummy/tmp/cache/sass/18aae862c6b8d844ecb0d28099e3c6dc22a78390/_framework.scssc +0 -0
  311. data/test/dummy/tmp/cache/sass/18aae862c6b8d844ecb0d28099e3c6dc22a78390/_structure.scssc +0 -0
  312. data/test/dummy/tmp/cache/sass/18aae862c6b8d844ecb0d28099e3c6dc22a78390/style.scssc +0 -0
  313. data/test/dummy/tmp/cache/sass/230bfc8f182635ad4b3a335d489af9a06274afb8/application.css.scssc +0 -0
  314. data/test/dummy/tmp/cache/sass/2a4cafc997677a5e0158c4d4a79d2ab3f4ff6997/_grid-core.scssc +0 -0
  315. data/test/dummy/tmp/cache/sass/2a4cafc997677a5e0158c4d4a79d2ab3f4ff6997/_grid-helpers.scssc +0 -0
  316. data/test/dummy/tmp/cache/sass/2a4cafc997677a5e0158c4d4a79d2ab3f4ff6997/_mixins.scssc +0 -0
  317. data/test/dummy/tmp/cache/sass/2a4cafc997677a5e0158c4d4a79d2ab3f4ff6997/_normalize.scssc +0 -0
  318. data/test/dummy/tmp/cache/sass/2a4cafc997677a5e0158c4d4a79d2ab3f4ff6997/_print.scssc +0 -0
  319. data/test/dummy/tmp/cache/sass/2fc48581832b599e78863798b316800e2f081db8/_css3.scssc +0 -0
  320. data/test/dummy/tmp/cache/sass/2fc48581832b599e78863798b316800e2f081db8/_support.scssc +0 -0
  321. data/test/dummy/tmp/cache/sass/2fc48581832b599e78863798b316800e2f081db8/_typography.scssc +0 -0
  322. data/test/dummy/tmp/cache/sass/2fc48581832b599e78863798b316800e2f081db8/_utilities.scssc +0 -0
  323. data/test/dummy/tmp/cache/sass/3a054fa2dd9c968492f5a0cb990ea7fe73be8836/_appearance.scssc +0 -0
  324. data/test/dummy/tmp/cache/sass/3a054fa2dd9c968492f5a0cb990ea7fe73be8836/_background-clip.scssc +0 -0
  325. data/test/dummy/tmp/cache/sass/3a054fa2dd9c968492f5a0cb990ea7fe73be8836/_background-origin.scssc +0 -0
  326. data/test/dummy/tmp/cache/sass/3a054fa2dd9c968492f5a0cb990ea7fe73be8836/_background-size.scssc +0 -0
  327. data/test/dummy/tmp/cache/sass/3a054fa2dd9c968492f5a0cb990ea7fe73be8836/_border-radius.scssc +0 -0
  328. data/test/dummy/tmp/cache/sass/3a054fa2dd9c968492f5a0cb990ea7fe73be8836/_box-shadow.scssc +0 -0
  329. data/test/dummy/tmp/cache/sass/3a054fa2dd9c968492f5a0cb990ea7fe73be8836/_box-sizing.scssc +0 -0
  330. data/test/dummy/tmp/cache/sass/3a054fa2dd9c968492f5a0cb990ea7fe73be8836/_box.scssc +0 -0
  331. data/test/dummy/tmp/cache/sass/3a054fa2dd9c968492f5a0cb990ea7fe73be8836/_columns.scssc +0 -0
  332. data/test/dummy/tmp/cache/sass/3a054fa2dd9c968492f5a0cb990ea7fe73be8836/_filter.scssc +0 -0
  333. data/test/dummy/tmp/cache/sass/3a054fa2dd9c968492f5a0cb990ea7fe73be8836/_font-face.scssc +0 -0
  334. data/test/dummy/tmp/cache/sass/3a054fa2dd9c968492f5a0cb990ea7fe73be8836/_hyphenation.scssc +0 -0
  335. data/test/dummy/tmp/cache/sass/3a054fa2dd9c968492f5a0cb990ea7fe73be8836/_images.scssc +0 -0
  336. data/test/dummy/tmp/cache/sass/3a054fa2dd9c968492f5a0cb990ea7fe73be8836/_inline-block.scssc +0 -0
  337. data/test/dummy/tmp/cache/sass/3a054fa2dd9c968492f5a0cb990ea7fe73be8836/_opacity.scssc +0 -0
  338. data/test/dummy/tmp/cache/sass/3a054fa2dd9c968492f5a0cb990ea7fe73be8836/_regions.scssc +0 -0
  339. data/test/dummy/tmp/cache/sass/3a054fa2dd9c968492f5a0cb990ea7fe73be8836/_shared.scssc +0 -0
  340. data/test/dummy/tmp/cache/sass/3a054fa2dd9c968492f5a0cb990ea7fe73be8836/_text-shadow.scssc +0 -0
  341. data/test/dummy/tmp/cache/sass/3a054fa2dd9c968492f5a0cb990ea7fe73be8836/_transform.scssc +0 -0
  342. data/test/dummy/tmp/cache/sass/3a054fa2dd9c968492f5a0cb990ea7fe73be8836/_transition.scssc +0 -0
  343. data/test/dummy/tmp/cache/sass/3b11a8de81207d23d358103aa6b295021cc4f559/_contrast.scssc +0 -0
  344. data/test/dummy/tmp/cache/sass/4fafd6ccd5f325d6297db249d1acfce25c894abe/_compass.scssc +0 -0
  345. data/test/dummy/tmp/cache/sass/619a076775683b6e082ab3e83ee70dd4025b71ce/fancybox.cssc +0 -0
  346. data/test/dummy/tmp/cache/sass/6a181fabeabb4ad8135cf2bd3fa15f5039ab85a9/_utilities.scssc +0 -0
  347. data/test/dummy/tmp/cache/sass/6f4451653f8c03db4c183f13952595ad7fc9a7a5/_alternating-rows-and-columns.scssc +0 -0
  348. data/test/dummy/tmp/cache/sass/6f4451653f8c03db4c183f13952595ad7fc9a7a5/_borders.scssc +0 -0
  349. data/test/dummy/tmp/cache/sass/6f4451653f8c03db4c183f13952595ad7fc9a7a5/_scaffolding.scssc +0 -0
  350. data/test/dummy/tmp/cache/sass/6f8312e52a18e9753d5d08c869f5c3bec77f12b3/chosen.css.sassc +0 -0
  351. data/test/dummy/tmp/cache/sass/703c74442f96736be7a09968192044436254f4e2/bootstrap-responsive.scssc +0 -0
  352. data/test/dummy/tmp/cache/sass/703c74442f96736be7a09968192044436254f4e2/bootstrap.scssc +0 -0
  353. data/test/dummy/tmp/cache/sass/731447a6308f18f1769d254075093bb72c24f347/image_animation.css.scssc +0 -0
  354. data/test/dummy/tmp/cache/sass/731447a6308f18f1769d254075093bb72c24f347/images.css.scssc +0 -0
  355. data/test/dummy/tmp/cache/sass/731447a6308f18f1769d254075093bb72c24f347/thisorthat.css.scssc +0 -0
  356. data/test/dummy/tmp/cache/sass/81b75274929b072edf6f16f0144d09b81c0ec6cb/_color.scssc +0 -0
  357. data/test/dummy/tmp/cache/sass/81b75274929b072edf6f16f0144d09b81c0ec6cb/_general.scssc +0 -0
  358. data/test/dummy/tmp/cache/sass/81b75274929b072edf6f16f0144d09b81c0ec6cb/_sprites.scssc +0 -0
  359. data/test/dummy/tmp/cache/sass/81b75274929b072edf6f16f0144d09b81c0ec6cb/_tables.scssc +0 -0
  360. data/test/dummy/tmp/cache/sass/a9ceb8ca2f3605f188194e487b24c01a1853c7e8/_grid-background.scssc +0 -0
  361. data/test/dummy/tmp/cache/sass/d53eea4db5c445904dd2d1926d6eea4bbca119f9/_bullets.scssc +0 -0
  362. data/test/dummy/tmp/cache/sass/d53eea4db5c445904dd2d1926d6eea4bbca119f9/_horizontal-list.scssc +0 -0
  363. data/test/dummy/tmp/cache/sass/d53eea4db5c445904dd2d1926d6eea4bbca119f9/_inline-block-list.scssc +0 -0
  364. data/test/dummy/tmp/cache/sass/d53eea4db5c445904dd2d1926d6eea4bbca119f9/_inline-list.scssc +0 -0
  365. data/test/dummy/tmp/cache/sass/d8b9a6cd27d9e74c47290b0b43e75f4003d5e84b/lentil.css.scssc +0 -0
  366. data/test/dummy/tmp/cache/sass/e8cb3fe0dc661de96e682e25b9bbeaf97d6a8698/_links.scssc +0 -0
  367. data/test/dummy/tmp/cache/sass/e8cb3fe0dc661de96e682e25b9bbeaf97d6a8698/_lists.scssc +0 -0
  368. data/test/dummy/tmp/cache/sass/e8cb3fe0dc661de96e682e25b9bbeaf97d6a8698/_text.scssc +0 -0
  369. data/test/dummy/tmp/cache/sass/e8cb3fe0dc661de96e682e25b9bbeaf97d6a8698/_vertical_rhythm.scssc +0 -0
  370. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_accordion.scssc +0 -0
  371. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_alerts.scssc +0 -0
  372. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_breadcrumbs.scssc +0 -0
  373. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_button-groups.scssc +0 -0
  374. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_buttons.scssc +0 -0
  375. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_carousel.scssc +0 -0
  376. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_close.scssc +0 -0
  377. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_code.scssc +0 -0
  378. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_component-animations.scssc +0 -0
  379. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_dropdowns.scssc +0 -0
  380. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_forms.scssc +0 -0
  381. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_grid.scssc +0 -0
  382. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_hero-unit.scssc +0 -0
  383. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_labels-badges.scssc +0 -0
  384. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_layouts.scssc +0 -0
  385. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_media.scssc +0 -0
  386. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_mixins.scssc +0 -0
  387. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_modals.scssc +0 -0
  388. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_navbar.scssc +0 -0
  389. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_navs.scssc +0 -0
  390. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_pager.scssc +0 -0
  391. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_pagination.scssc +0 -0
  392. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_popovers.scssc +0 -0
  393. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_progress-bars.scssc +0 -0
  394. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_reset.scssc +0 -0
  395. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_responsive-1200px-min.scssc +0 -0
  396. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_responsive-767px-max.scssc +0 -0
  397. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_responsive-768px-979px.scssc +0 -0
  398. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_responsive-navbar.scssc +0 -0
  399. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_responsive-utilities.scssc +0 -0
  400. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_scaffolding.scssc +0 -0
  401. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_sprites.scssc +0 -0
  402. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_tables.scssc +0 -0
  403. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_thumbnails.scssc +0 -0
  404. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_tooltip.scssc +0 -0
  405. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_type.scssc +0 -0
  406. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_utilities.scssc +0 -0
  407. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_variables.scssc +0 -0
  408. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/_wells.scssc +0 -0
  409. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/bootstrap.scssc +0 -0
  410. data/test/dummy/tmp/cache/sass/effeda9621a1f8587c33f3f59e511b0a59ff7bb4/responsive.scssc +0 -0
  411. data/test/dummy/tmp/cache/sass/f785cff4f2efc02e3a7a52ccf822a563c511b793/_clearfix.scssc +0 -0
  412. data/test/dummy/tmp/cache/sass/f785cff4f2efc02e3a7a52ccf822a563c511b793/_float.scssc +0 -0
  413. data/test/dummy/tmp/cache/sass/f785cff4f2efc02e3a7a52ccf822a563c511b793/_hacks.scssc +0 -0
  414. data/test/dummy/tmp/cache/sass/f785cff4f2efc02e3a7a52ccf822a563c511b793/_min.scssc +0 -0
  415. data/test/dummy/tmp/cache/sass/f785cff4f2efc02e3a7a52ccf822a563c511b793/_reset.scssc +0 -0
  416. data/test/dummy/tmp/cache/sass/f785cff4f2efc02e3a7a52ccf822a563c511b793/_tag-cloud.scssc +0 -0
  417. data/test/dummy/tmp/cache/sass/fbf85d5608ca3ac95eb64dfaa76546b623980b5f/_hover-link.scssc +0 -0
  418. data/test/dummy/tmp/cache/sass/fbf85d5608ca3ac95eb64dfaa76546b623980b5f/_link-colors.scssc +0 -0
  419. data/test/dummy/tmp/cache/sass/fbf85d5608ca3ac95eb64dfaa76546b623980b5f/_unstyled-link.scssc +0 -0
  420. data/test/dummy/tmp/cache/sass/fcfbf62c4a5c26b3ae30accefa73ef6191bb4aab/_ellipsis.scssc +0 -0
  421. data/test/dummy/tmp/cache/sass/fcfbf62c4a5c26b3ae30accefa73ef6191bb4aab/_force-wrap.scssc +0 -0
  422. data/test/dummy/tmp/cache/sass/fcfbf62c4a5c26b3ae30accefa73ef6191bb4aab/_nowrap.scssc +0 -0
  423. data/test/dummy/tmp/cache/sass/fcfbf62c4a5c26b3ae30accefa73ef6191bb4aab/_replacement.scssc +0 -0
  424. data/test/fixtures/lentil/admin_users.yml +35 -0
  425. data/test/fixtures/lentil/battles.yml +20 -0
  426. data/test/fixtures/lentil/flags.yml +17 -0
  427. data/test/fixtures/lentil/images.yml +284 -0
  428. data/test/fixtures/lentil/licenses.yml +25 -0
  429. data/test/fixtures/lentil/licensings.yml +20 -0
  430. data/test/fixtures/lentil/like_votes.yml +19 -0
  431. data/test/fixtures/lentil/services.yml +20 -0
  432. data/test/fixtures/lentil/taggings.yml +29 -0
  433. data/test/fixtures/lentil/tags.yml +29 -0
  434. data/test/fixtures/lentil/tagset_assignments.yml +28 -0
  435. data/test/fixtures/lentil/tagsets.yml +27 -0
  436. data/test/fixtures/lentil/users.yml +40 -0
  437. data/test/functional/admin/flags_controller_test.rb +16 -0
  438. data/test/functional/admin/images_controller_test.rb +46 -0
  439. data/test/functional/admin/tags_controller_test.rb +16 -0
  440. data/test/functional/admin/tagsets_controller_test.rb +21 -0
  441. data/test/functional/admin/users_controller_test.rb +16 -0
  442. data/test/functional/lentil/flags_controller_test.rb +19 -0
  443. data/test/functional/lentil/images_controller_test.rb +51 -0
  444. data/test/functional/lentil/like_votes_controller_test.rb +19 -0
  445. data/test/functional/lentil/photographers_controller_test.rb +14 -0
  446. data/test/functional/lentil/thisorthat_controller_test.rb +9 -0
  447. data/test/integration/lentil/admin_dashboard_test.rb +31 -0
  448. data/test/integration/lentil/admin_moderation_test.rb +9 -0
  449. data/test/integration/lentil/admin_tagset_test.rb +14 -0
  450. data/test/integration/lentil/images_feed_test.rb +14 -0
  451. data/test/integration/lentil/images_index_test.rb +46 -0
  452. data/test/integration/lentil/images_show_test.rb +14 -0
  453. data/test/integration/lentil/javascript/event_tracking_battle_test.rb +18 -0
  454. data/test/integration/lentil/javascript/event_tracking_test.rb +67 -0
  455. data/test/integration/lentil/javascript/image_modal_test.rb +20 -0
  456. data/test/integration/lentil/navigation_test.rb +10 -0
  457. data/test/integration/lentil/pages_test.rb +11 -0
  458. data/test/integration/lentil/thisorthat_test.rb +33 -0
  459. data/test/lentil_test.rb +7 -0
  460. data/test/test_helper.rb +79 -0
  461. data/test/unit/lentil/admin_user_test.rb +26 -0
  462. data/test/unit/lentil/battle_test.rb +18 -0
  463. data/test/unit/lentil/flag_test.rb +17 -0
  464. data/test/unit/lentil/helpers/images_helper_test.rb +4 -0
  465. data/test/unit/lentil/helpers/photographers_helper_test.rb +4 -0
  466. data/test/unit/lentil/helpers/thisorthat_helper_test.rb +4 -0
  467. data/test/unit/lentil/image_test.rb +52 -0
  468. data/test/unit/lentil/instagram_test.rb +57 -0
  469. data/test/unit/lentil/license_test.rb +20 -0
  470. data/test/unit/lentil/licensing_test.rb +18 -0
  471. data/test/unit/lentil/like_vote_test.rb +17 -0
  472. data/test/unit/lentil/popularity_test.rb +19 -0
  473. data/test/unit/lentil/service_test.rb +18 -0
  474. data/test/unit/lentil/tag_test.rb +21 -0
  475. data/test/unit/lentil/tagging_test.rb +19 -0
  476. data/test/unit/lentil/tagset_assignment_test.rb +18 -0
  477. data/test/unit/lentil/tagset_test.rb +22 -0
  478. data/test/unit/lentil/user_test.rb +37 -0
  479. data/test/vcr_cassettes/battle_images.yml +245 -0
  480. data/test/vcr_cassettes/battle_images_events.yml +206 -0
  481. data/test/vcr_cassettes/instagram_bad_image_check.yml +40 -0
  482. data/test/vcr_cassettes/instagram_by_tag.yml +318 -0
  483. data/test/vcr_cassettes/instagram_good_image_check.yml +42 -0
  484. data/test/vcr_cassettes/instagram_image_harvest.yml +1992 -0
  485. data/test/vcr_cassettes/instagram_image_id.yml +97 -0
  486. data/test/vcr_cassettes/instagram_oembed.yml +43 -0
  487. data/vendor/assets/javascripts/animatedimages/css/demo.css +178 -0
  488. data/vendor/assets/javascripts/animatedimages/css/fallback.css +12 -0
  489. data/vendor/assets/javascripts/animatedimages/css/style.css +132 -0
  490. data/vendor/assets/javascripts/animatedimages/images/Thumbs.db +0 -0
  491. data/vendor/assets/javascripts/animatedimages/images/bg.jpg +0 -0
  492. data/vendor/assets/javascripts/animatedimages/images/light.png +0 -0
  493. data/vendor/assets/javascripts/animatedimages/images/loading.gif +0 -0
  494. data/vendor/assets/javascripts/animatedimages/js/jquery.gridrotator.js +760 -0
  495. data/vendor/assets/javascripts/animatedimages/js/modernizr.custom.26633.js +4 -0
  496. data/vendor/assets/javascripts/expanding/expanding.js +118 -0
  497. data/vendor/assets/javascripts/html5historyapi/README.md +338 -0
  498. data/vendor/assets/javascripts/html5historyapi/component.json +8 -0
  499. data/vendor/assets/javascripts/html5historyapi/history.iegte8.js +721 -0
  500. data/vendor/assets/javascripts/html5historyapi/history.iegte8.min.js +30 -0
  501. data/vendor/assets/javascripts/html5historyapi/history.js +890 -0
  502. data/vendor/assets/javascripts/html5historyapi/history.min.js +33 -0
  503. data/vendor/assets/javascripts/html5historyapi/readme.en.txt +161 -0
  504. data/vendor/assets/javascripts/html5historyapi/readme.ru.txt +161 -0
  505. data/vendor/assets/javascripts/imagesloaded/jquery.imagesloaded.min.js +3 -0
  506. data/vendor/assets/javascripts/infinitescroll/Readme.md +59 -0
  507. data/vendor/assets/javascripts/infinitescroll/ajax-loader.gif +0 -0
  508. data/vendor/assets/javascripts/infinitescroll/behaviors/cufon.js +21 -0
  509. data/vendor/assets/javascripts/infinitescroll/behaviors/local.js +26 -0
  510. data/vendor/assets/javascripts/infinitescroll/behaviors/manual-trigger.js +59 -0
  511. data/vendor/assets/javascripts/infinitescroll/behaviors/masonry-isotope.js +21 -0
  512. data/vendor/assets/javascripts/infinitescroll/behaviors/sausage.js +19 -0
  513. data/vendor/assets/javascripts/infinitescroll/jquery.infinitescroll.js +802 -0
  514. data/vendor/assets/javascripts/infinitescroll/package.json +7 -0
  515. data/vendor/assets/javascripts/infinitescroll/site/assets/anivers_regular.otf +0 -0
  516. data/vendor/assets/javascripts/infinitescroll/site/assets/buttons.psd +0 -0
  517. data/vendor/assets/javascripts/infinitescroll/site/assets/logo.psd +0 -0
  518. data/vendor/assets/javascripts/infinitescroll/site/assets/mobius-strip2.ai +2266 -15
  519. data/vendor/assets/javascripts/infinitescroll/site/assets/pattern.psd +0 -0
  520. data/vendor/assets/javascripts/infinitescroll/site/assets/selector spots.psd +0 -0
  521. data/vendor/assets/javascripts/infinitescroll/site/assets/sites.psd +0 -0
  522. data/vendor/assets/javascripts/infinitescroll/site/buttons.png +0 -0
  523. data/vendor/assets/javascripts/infinitescroll/site/infinite-scroll-pattern.gif +0 -0
  524. data/vendor/assets/javascripts/infinitescroll/site/logo.jpg +0 -0
  525. data/vendor/assets/javascripts/infinitescroll/site/screens.jpg +0 -0
  526. data/vendor/assets/javascripts/infinitescroll/site/selectors.jpg +0 -0
  527. data/vendor/assets/javascripts/infinitescroll/test/debug.js +24 -0
  528. data/vendor/assets/javascripts/infinitescroll/test/index.html +105 -0
  529. data/vendor/assets/javascripts/infinitescroll/test/index2.html +41 -0
  530. data/vendor/assets/javascripts/infinitescroll/test/index3.html +48 -0
  531. data/vendor/assets/javascripts/infinitescroll/test/jquery-1.6.1.js +8936 -0
  532. data/vendor/assets/javascripts/infinitescroll/test/mobile.html +108 -0
  533. data/vendor/assets/javascripts/infinitescroll/test/mobile2.json +1 -0
  534. data/vendor/assets/javascripts/infinitescroll/test/mobile3.json +1 -0
  535. data/vendor/assets/javascripts/infinitescroll/test/mobile4.json +1 -0
  536. data/vendor/assets/javascripts/infinitescroll/test/style.css +319 -0
  537. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/img/ajax-loader.gif +0 -0
  538. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/includes/admin.php +126 -0
  539. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/includes/options.php +188 -0
  540. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/includes/presets.php +737 -0
  541. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/includes/submit.php +67 -0
  542. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/infinite-scroll.php +261 -0
  543. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/js/admin/infinite-scoll.js +5 -0
  544. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/js/admin/infinite-scroll.dev.js +128 -0
  545. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/js/front-end/jquery.infinitescroll.dev.js +747 -0
  546. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/js/front-end/jquery.infinitescroll.js +31 -0
  547. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/languages/infinite-scroll.pot +157 -0
  548. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/license.html +694 -0
  549. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/readme.md +246 -0
  550. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/readme.txt +241 -0
  551. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/screenshot-1.png +0 -0
  552. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/screenshot-2.png +0 -0
  553. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/screenshot-3.png +0 -0
  554. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/templates/footer.php +7 -0
  555. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/templates/manage-presets.php +21 -0
  556. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/templates/options.php +97 -0
  557. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/templates/preset-prompt.php +7 -0
  558. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/templates/submit-prompt.php +23 -0
  559. data/vendor/assets/javascripts/infinitescroll/wordpress-plugin/templates/submit.php +31 -0
  560. data/vendor/assets/javascripts/spin/spin.js +2 -0
  561. data/vendor/assets/javascripts/touchswipe/README.md +84 -0
  562. data/vendor/assets/javascripts/touchswipe/jquery.touchSwipe.js +1555 -0
  563. metadata +1397 -0
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MTg5YTU4MDUzOWFiZGE5OTVkYThiNGVmYTIwNDZlNWM2N2NiNWVmMg==
5
+ data.tar.gz: !binary |-
6
+ ZTM2OTk5ODI2Yzc0YzYyMWQxMjMxOTZhMTI1NGI0NmMxZTllZjc2Mw==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ ZGFkMmQ0MGRhZGQ2NjNlNDg1ZjZlNWFhNTM1ZDM5YTIzYjZhYzg2OGQ3NGE1
10
+ ZDAwMDRkMjk1NzMzYjlmMDMwOWE1ODJlNDNlZmRhMzY3MGY2ZTg3Yjc2YjIy
11
+ NGU2MjQxMWVlNDAxMzZjNTYzODhmMGQ3MTRhMDFmNjVkMGI2OWY=
12
+ data.tar.gz: !binary |-
13
+ YzU2ZDFiMTYxMWYxNGNlZjRmNDlhZGQ1YWRhM2M0MmE4MDg2ZDBjZDBkYTYy
14
+ NjU3NjE2OGM4ZTVjYWUxNzdkY2E5NWUyMjA3MWRiNWU0ZTQ1YTc0NjVkZTdi
15
+ ZjYyMGVjNTQzMjhjZTRmZGFiNDgxYTk5MmU1ZDgyMTkyMzY0Nzc=
@@ -0,0 +1,20 @@
1
+ Copyright 2013 North Carolina State University
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,199 @@
1
+ # Lentil
2
+
3
+ lentil is a Ruby on Rails Engine that supports the harvesting of images from Instagram and provides several browsing views, mechanisms for sharing, tools for users to select their favorite images, an administrative interface for moderating images, and a system for harvesting images and submitting donor agreements in preparation of ingest into external repositories. Built according to the principles of “responsive design,” lentil is designed for use on mobile devices, tablets, desktops, and larger screens.
4
+
5
+ ## History
6
+
7
+ lentil is extracted from the [My #HuntLibrary project](http://www.lib.ncsu.edu/dli/projects/MHL) at [NCSU Libraries](http://www.lib.ncsu.edu/). My #HuntLibrary was created as a platform to foster student and community engagement with the new building via social media imagery and to preserve and archive these images as part of the record of the [Hunt Library](http://www.lib.ncsu.edu/huntlibrary) launch. Images from this crowdsourced documentation effort will be selected to become part of our permanent digital collections, allowing the NCSU community to contribute to the historical record of the Hunt Library through image submissions as well as the use of voting tools.
8
+
9
+ ## Project Maturity
10
+
11
+ Although a version of this code is being used in production, **this gem should be considered a pre-release**. We are still in the process of moving over to using this gem.
12
+
13
+ ## Installation
14
+
15
+ > **Note:** lentil has not been tested with Ruby 2.x.
16
+
17
+ ### Add lentil and therubyracer (or another ExecJS runtime) to your Gemfile and `bundle`
18
+
19
+ ```ruby
20
+ gem 'lentil'
21
+ gem 'therubyracer'
22
+ ```
23
+
24
+ > If you would like to work directly from the master branch, use `gem 'git://github.com/NCSU-Libraries/lentil.git'` instead.
25
+
26
+ ### Run the generator
27
+
28
+ ```sh
29
+ bundle exec rails generate lentil:install
30
+ ```
31
+
32
+ ### Start the server
33
+
34
+ ```sh
35
+ bundle exec rails server
36
+ ```
37
+
38
+ Visit <http://localhost:3000>
39
+
40
+ ## Harvest Images
41
+
42
+ - You will need to define your `instagram_client_id` and `instagram_client_secret` in `config/lentil_config.yml`. You can generate these strings by creating an [Instagram API](http://instagram.com/developer) client for your application.
43
+
44
+ - If you haven't already, add an administrative user in development.
45
+
46
+ ```sh
47
+ bundle exec rake lentil:dummy_admin_user
48
+ ```
49
+
50
+ You will then have an administrative user with the following credentials:
51
+ - Username: admin@example.com
52
+ - Password: password
53
+
54
+ - Login to the administrative console. Go to <http://localhost:3000/admin>
55
+
56
+ - Go to <http://localhost:3000/admin/lentil_tags/> and create a new tag.
57
+ - Go to <http://localhost:3000/admin/lentil_tagsets> and create a new tagset, selecting the tag you just created. Make sure to mark this tagset as `harvestable`.
58
+
59
+ - Harvest some images by opening up another terminal and running:
60
+
61
+ ```sh
62
+ bundle exec rake lentil:image_services:instagram:fetch_by_tag
63
+ ```
64
+
65
+ You ought to see a message like: "15 new images added"
66
+
67
+ > **Note:** The harvesting task currently does not utilize Instagram's result paging. It is important at this point to harvest images frequently in order to avoid missed content.
68
+
69
+ - Go to <http://localhost:3000/admin/lentil_images> and click on "Moderate New." Approve or reject some images. Once you've approved some, go to <http://localhost:3000> to see your approved images.
70
+ - Congratulations! You're now up and running!
71
+
72
+ ## Scheduling tasks
73
+
74
+ There are several rake tasks that you should schedule to run on a recurring basis:
75
+
76
+ - `rake lentil:image_services:instagram:fetch_by_tag` harvests image metadata for all tags within "harvestable" tagsets.
77
+ - `rake lentil:image_services:test_image_files[number_of_images,image_service]` checks that the image content for approved images is still available. After 3 failures, Lentil will stop displaying the images. After 10 failures, Lentil will stop checking. Defaults to checking 10 Instagram images. Images will not be checked more than once per day.
78
+ - `rake lentil:popularity:update_score` recalculates the popularity score based on "likes" and "battles."
79
+
80
+ Additionally, there are two optional rake tasks that support image file harvesting for longer-term retention:
81
+
82
+ - `rake lentil:image_services:save_image_files[number_of_images,image_service,base_directory]` Lentil normally only stores image metadata, but this task will save the image file to a specified directory. This file will still not be used by Lentil, but the file retrieval will be noted in the Image model. Defaults to 50 Instagram images, saving to the path specified by the `base_image_file_dir` option from `config/lentil_config.yml`.
83
+ - `rake lentil:image_services:submit_donor_agreements[number_of_images,image_service]` will submit a donor agreement (using the `donor_agreement_text` option from `config/lentil_config.yml`) as a comment on approved Instagram images that have been in the system for at least a week. Currently defaults to one image.
84
+
85
+ > In order to submit comments, you will need to generate an access token for the user that will submit the comments. See the [Instagram documentation](http://instagram.com/developer/authentication/) and a [discussion of access token expiration](https://groups.google.com/forum/?fromgroups=#!searchin/instagram-api-developers/access$20token%7Csort:date/instagram-api-developers/OBOTwIh3FSw/9hTccUX1Jq4J).
86
+
87
+ An example of a background task schedule using the [whenever](https://github.com/javan/whenever) gem:
88
+
89
+ ```ruby
90
+ case @environment
91
+ when 'production'
92
+ every 5.minutes do
93
+ rake "image_services:instagram:fetch_by_tag", :output => {:standard => nil}
94
+ end
95
+
96
+ every 30.minutes do
97
+ rake "image_services:test_image_files", :output => {:standard => nil}
98
+ end
99
+ end
100
+
101
+ # All environments
102
+ every :hour do
103
+ rake "popularity:update_score", :output => {:standard => nil}
104
+ end
105
+ ```
106
+
107
+ ## Customization
108
+
109
+ - A simple first customization to do is to override the about page by putting your own about page at app/views/lentil/pages/about.html.erb.
110
+ - If you haven't already you'll have update your `config/lentil_config.yml` file with your application name.
111
+ - You can change the look of your site by including some variables in your application.css.scss before importing the lentil CSS:
112
+
113
+ ```sass
114
+ $gray_text: #34282C;
115
+ $lentil_yellow: #DAB416;
116
+ $lentil_blue: #08C;
117
+ @import "lentil";
118
+ ```
119
+
120
+ - In order to set image backgrounds in [My #HuntLibrary](http://d.lib.ncsu.edu/myhuntlibrary), the following CSS is included in a file that is imported after `lentil`:
121
+
122
+ ```css
123
+ body {
124
+ background: image-url("background/fins3.jpg") fixed;
125
+ }
126
+
127
+ .navbar-inner {
128
+ background: #121212 image-url("nav/top_background.png") repeat-x;
129
+ }
130
+
131
+ div.header {
132
+ background: #0C1021 image-url("nav/example_08.jpg");
133
+ }
134
+ ```
135
+
136
+ ## Testing
137
+
138
+ - Install all of the dependencies:
139
+
140
+ ```sh
141
+ bundle install
142
+ ```
143
+
144
+ - Prepare the test database
145
+
146
+ ```sh
147
+ RAILS_ENV=test bundle exec rake app:db:migrate
148
+ RAILS_ENV=test bundle exec rake app:db:test:prepare
149
+ ```
150
+
151
+ - Run the tests
152
+
153
+ ```sh
154
+ bundle exec rake test
155
+ ```
156
+
157
+ ## Running the Test/Dummy Instance
158
+
159
+ Sometimes you just might want to see what the dummy instance actually looks like. You can do the following:
160
+
161
+ ```sh
162
+ bundle exec rake app:db:schema:load
163
+ cd test/dummy
164
+ bundle exec rake db:fixtures:load FIXTURES_PATH=../fixtures
165
+ bundle exec rails s
166
+ ```
167
+
168
+ Once you load the fixtures you'll be able to harvest anything that has the tag "#hunttesting"
169
+
170
+ ```sh
171
+ cd test/dummy
172
+ ```
173
+
174
+ Edit `config/lentil_config.yml` and set `instagram_client_id` to the client ID associated with your Instagram API client.
175
+
176
+ ```sh
177
+ bundle exec rake image_services:instagram:fetch_by_tag
178
+ ```
179
+
180
+ ## License
181
+
182
+ See MIT-LICENSE
183
+
184
+ ## Contact
185
+
186
+ Submit a GitHub issue or contact lentil@lists.ncsu.edu.
187
+
188
+ ## Authors (in alphabetical order)
189
+
190
+ * Jason Casden
191
+ * Bret Davidson
192
+ * Cory Lown
193
+ * Jason Ronallo
194
+
195
+ ## Additional project team members
196
+
197
+ * Brian Dietz
198
+ * Jennifer Garrett
199
+ * Mike Nutt (Product Lead for My #HuntLibrary project)
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env rake
2
+ begin
3
+ require 'bundler/setup'
4
+ rescue LoadError
5
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ end
7
+ begin
8
+ require 'rdoc/task'
9
+ rescue LoadError
10
+ require 'rdoc/rdoc'
11
+ require 'rake/rdoctask'
12
+ RDoc::Task = Rake::RDocTask
13
+ end
14
+
15
+ RDoc::Task.new(:rdoc) do |rdoc|
16
+ rdoc.rdoc_dir = 'rdoc'
17
+ rdoc.title = 'Lentil'
18
+ rdoc.options << '--line-numbers'
19
+ rdoc.rdoc_files.include('README.rdoc')
20
+ rdoc.rdoc_files.include('lib/**/*.rb')
21
+ end
22
+
23
+ APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
24
+ load 'rails/tasks/engine.rake'
25
+
26
+
27
+
28
+ Bundler::GemHelper.install_tasks
29
+
30
+ require 'rake/testtask'
31
+
32
+ Rake::TestTask.new(:test) do |t|
33
+ t.libs << 'lib'
34
+ t.libs << 'test'
35
+ t.pattern = 'test/**/*_test.rb'
36
+ t.verbose = false
37
+ end
38
+
39
+
40
+ task :default => :test
41
+
42
+ require 'single_test'
43
+ SingleTest.load_tasks
@@ -0,0 +1,7 @@
1
+ //= require active_admin/base
2
+ //= require chosen-jquery
3
+ //= require expanding/expanding
4
+
5
+ $(document).ready(function() {
6
+ $(".chzn-select").chosen();
7
+ });
@@ -0,0 +1,3 @@
1
+ //= require lentil/images
2
+ //= require lentil/thisorthat
3
+ //= require lentil/event_tracking
@@ -0,0 +1,44 @@
1
+ //= require animatedimages/js/modernizr.custom.26633.js
2
+ //= require animatedimages/js/jquery.gridrotator.js
3
+ function addanimatedimages() {
4
+
5
+ $(function() {
6
+ $( '#ri-grid' ).gridrotator( {
7
+ rows : 3,
8
+ columns : 8,
9
+ maxStep : 2,
10
+ interval : 4500,
11
+ animType : 'rotateRight',
12
+ animSpeed: 1000,
13
+ w2000 : {
14
+ rows : 3,
15
+ columns: 6
16
+ },
17
+ w1750 : {
18
+ rows : 4,
19
+ columns : 6
20
+ },
21
+ w1024 : {
22
+ rows : 6,
23
+ columns : 3
24
+ },
25
+ w768 : {
26
+ rows : 5,
27
+ columns : 3
28
+ },
29
+ w480 : {
30
+ rows : 8,
31
+ columns : 4
32
+ },
33
+ w320 : {
34
+ rows : 4,
35
+ columns : 3
36
+ },
37
+ w240 : {
38
+ rows : 4,
39
+ columns : 3
40
+ }
41
+ });
42
+
43
+ });
44
+ }
@@ -0,0 +1,152 @@
1
+ var FancyBoxCloseFunctionState = {
2
+
3
+ // object literal for tracking important
4
+ // state information so we know
5
+ // how to change the url in response
6
+ // to user actions such as
7
+ // dismissing fancybox from clicking or using back button
8
+ popcalled: false,
9
+ fancyboxvisible: false,
10
+ pathname: window.location.pathname.replace(/\/?$/, '/')
11
+ };
12
+
13
+ // listen for popstate (back/forward, etc.)
14
+ function listenforpopstate() {
15
+ window.onpopstate = function(){
16
+ if ($('body').is(".lentil-images_show")) {
17
+ // if we're on the images page
18
+ // and this doesn't look like an image url
19
+ // switch to page that matches the url
20
+ if (!/images\/[0-9]/.test(window.location.pathname)) {
21
+ window.location.href = window.location.pathname;
22
+ }
23
+ } else {
24
+
25
+ // if we're on any other page (not an image)
26
+ // but the url looks like an image url
27
+ // switch to the image page that matches the url
28
+ if (/images\/[0-9]/.test(window.location.pathname)) {
29
+ window.location.href = window.location.pathname;
30
+ }
31
+ }
32
+ };
33
+ }
34
+
35
+ function pushimageurl() {
36
+
37
+ // extract application root url
38
+ var approot = FancyBoxCloseFunctionState.pathname.replace(/(photographers\/\d+|images|thisorthat\/battle|thisorthat\/battle_leaders)\/\D*\/?/, "");
39
+
40
+ // construct an image show url with the right image id
41
+ replacementUrl = approot + "images/" + imageId.replace("image_","");
42
+
43
+ // get rid of any double slashes (TO DO: remove this?)
44
+ if (/\/\//.test(replacementUrl)) {
45
+ replacementUrl = replacementUrl.replace("//","/");
46
+ }
47
+
48
+ // push the url for the displayed image to the browser
49
+ window.history.pushState(null, null, replacementUrl);
50
+
51
+ if (typeof _gaq !== "undefined") {
52
+ _gaq.push(['_trackPageview', replacementUrl]);
53
+ }
54
+
55
+ // listen for popstate (back/forward button)
56
+ window.onpopstate = function(){
57
+ if (/images\/[0-9]/.test(window.location.pathname)) {
58
+ // if this url looks like an image show url then switch
59
+ // the browser to the displayed url
60
+ window.location.href = window.location.pathname;
61
+ } else {
62
+ // otherwise switch the popcalled state to true
63
+ // and close the fancybox
64
+ FancyBoxCloseFunctionState.popcalled = true;
65
+ $.fancybox.close();
66
+ // switch the popcalled flag to false
67
+ // and the fancybox visible flag to false
68
+ FancyBoxCloseFunctionState.popcalled = false;
69
+ FancyBoxCloseFunctionState.fancyboxvisible = false;
70
+ }
71
+ };
72
+ }
73
+
74
+ function addfancybox() {
75
+
76
+ $(".fancybox").fancybox({
77
+ openEffect : 'none',
78
+ closeEffect : 'none',
79
+ nextEffect : 'none',
80
+ prevEffect : 'none',
81
+ loop : false,
82
+ minWidth : '250px',
83
+ helpers : {
84
+ title : { type : 'inside' }
85
+ },
86
+ afterLoad: function(current, previous) {
87
+
88
+ // pushing base url so that back/close returns to image gallery
89
+ // instead of image show
90
+ window.history.pushState(null,null,FancyBoxCloseFunctionState.pathname);
91
+ },
92
+ beforeShow : function() {
93
+ this.title = $(this.element).next(".text-overlay").html();
94
+ imageId = $(this.element).parents("div").attr("id");
95
+ $(".fancybox-overlay, .fancybox-mobile").attr('id', imageId);
96
+ pushimageurl(imageId);
97
+ },
98
+ afterShow : function() {
99
+
100
+ // checks whether browser understands touch events
101
+ // if so the next/prev buttons are disabled
102
+ // and swipe down/right is added to advance slides
103
+ if ('ontouchstart' in document.documentElement){
104
+ $('.fancybox-nav').css('display','none');
105
+ $('.fancybox-wrap').swipe({
106
+ swipe : function(event, direction) {
107
+ if (direction === 'right' || direction === 'down') {
108
+ $.fancybox.prev( direction );
109
+ } else {
110
+ $.fancybox.next( direction );
111
+ }
112
+ }
113
+ });
114
+ }
115
+
116
+ // adds button handling script to displayed fancybox buttons
117
+ buttonhandler();
118
+
119
+ // this is to check that the fancybox is really visible
120
+ // afterClose is fired off on fancybox open -- a bug
121
+ FancyBoxCloseFunctionState.fancyboxvisible = true;
122
+ imageId = $(this.element).parents("div").attr("id");
123
+
124
+ // check whether we're on the last image in the gallery
125
+ // and whether there's more than one page of images
126
+ // if so, launch the spinner, fetch the next set of images
127
+ // and scroll to the current image
128
+ // (callback on addininfintescroll() does the work of reloading fancybox)
129
+ if (this.index == this.group.length - 1 && $("div#paging a").length > 0) {
130
+ $('#spinner-overlay').show();
131
+ $('#spinner-overlay').css("z-index", 10000000);
132
+ target = document.getElementById('spinner-overlay');
133
+ FANCYBOX_SPINNER = new Spinner(opts).spin(target);
134
+ //$("body").animate({scrollTop: $("div#" + imageId).offset().top }, 1500);
135
+ $('div.images').infinitescroll('retrieve');
136
+ }
137
+ },
138
+ afterClose : function() {
139
+ if (FancyBoxCloseFunctionState.popcalled === false && FancyBoxCloseFunctionState.fancyboxvisible === true) {
140
+
141
+ // if after closing the fancybox there is no pop event
142
+ // and the fancybox is visible
143
+ // (this afterClose event also fires when fancybox opens
144
+ // -- a bug we're getting around with this hack)
145
+ // switch the flags and point the url at the previous page
146
+ // should be an image tile view (recent, popular, staff picks, etc.)
147
+ FancyBoxCloseFunctionState.fancyboxvisible = false;
148
+ window.history.back();
149
+ }
150
+ }
151
+ });
152
+ }