peoplefinder 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1009) hide show
  1. checksums.yaml +7 -0
  2. data/LICENCE.txt +19 -0
  3. data/README.md +234 -0
  4. data/Rakefile +14 -0
  5. data/app/assets/images/icon_delete.png +0 -0
  6. data/app/assets/images/icon_delete_retina.png +0 -0
  7. data/app/assets/images/icon_plus.png +0 -0
  8. data/app/assets/images/icon_plus_retina.png +0 -0
  9. data/app/assets/images/icon_search.png +0 -0
  10. data/app/assets/images/icon_search_retina.png +0 -0
  11. data/app/assets/images/medium_no_photo.png +0 -0
  12. data/app/assets/javascripts/application.js +1 -0
  13. data/app/assets/javascripts/peoplefinder/application.js +17 -0
  14. data/app/assets/javascripts/peoplefinder/form_input_mapper.js +15 -0
  15. data/app/assets/javascripts/peoplefinder/image_crop.js +18 -0
  16. data/app/assets/javascripts/peoplefinder/org_browser_controller.js +58 -0
  17. data/app/assets/javascripts/peoplefinder/org_tree.js +37 -0
  18. data/app/assets/javascripts/peoplefinder/peoplefinder.js +37 -0
  19. data/app/assets/javascripts/peoplefinder/peoplefinder_app.js +12 -0
  20. data/app/assets/stylesheets/application.scss +2 -0
  21. data/app/assets/stylesheets/peoplefinder/application.scss +252 -0
  22. data/app/assets/stylesheets/peoplefinder/groups.css.scss +72 -0
  23. data/app/assets/stylesheets/peoplefinder/home.css.scss +16 -0
  24. data/app/assets/stylesheets/peoplefinder/org_browser.scss +134 -0
  25. data/app/assets/stylesheets/peoplefinder/people.css.scss +138 -0
  26. data/app/assets/stylesheets/peoplefinder/retinal_images.css.scss +21 -0
  27. data/app/assets/stylesheets/peoplefinder/search_box.css.scss +23 -0
  28. data/app/controllers/peoplefinder/application_controller.rb +70 -0
  29. data/app/controllers/peoplefinder/errors_controller.rb +14 -0
  30. data/app/controllers/peoplefinder/groups_controller.rb +97 -0
  31. data/app/controllers/peoplefinder/home_controller.rb +11 -0
  32. data/app/controllers/peoplefinder/information_requests_controller.rb +40 -0
  33. data/app/controllers/peoplefinder/memberships_controller.rb +10 -0
  34. data/app/controllers/peoplefinder/org_controller.rb +7 -0
  35. data/app/controllers/peoplefinder/people_controller.rb +130 -0
  36. data/app/controllers/peoplefinder/person_image_controller.rb +35 -0
  37. data/app/controllers/peoplefinder/reported_profiles_controller.rb +40 -0
  38. data/app/controllers/peoplefinder/search_controller.rb +7 -0
  39. data/app/controllers/peoplefinder/sessions_controller.rb +29 -0
  40. data/app/controllers/peoplefinder/tokens_controller.rb +37 -0
  41. data/app/controllers/peoplefinder/versions_controller.rb +14 -0
  42. data/app/helpers/peoplefinder/application_helper.rb +54 -0
  43. data/app/helpers/peoplefinder/people_helper.rb +19 -0
  44. data/app/helpers/peoplefinder/versions_helper.rb +13 -0
  45. data/app/mailers/peoplefinder/reminder_mailer.rb +26 -0
  46. data/app/mailers/peoplefinder/token_mailer.rb +8 -0
  47. data/app/mailers/peoplefinder/user_update_mailer.rb +46 -0
  48. data/app/models/peoplefinder/concerns/authentication.rb +36 -0
  49. data/app/models/peoplefinder/concerns/completion.rb +47 -0
  50. data/app/models/peoplefinder/concerns/notifications.rb +59 -0
  51. data/app/models/peoplefinder/concerns/searchable.rb +35 -0
  52. data/app/models/peoplefinder/concerns/work_days.rb +25 -0
  53. data/app/models/peoplefinder/email_address.rb +46 -0
  54. data/app/models/peoplefinder/group.rb +99 -0
  55. data/app/models/peoplefinder/group_hierarchy.rb +43 -0
  56. data/app/models/peoplefinder/home.rb +16 -0
  57. data/app/models/peoplefinder/information_request.rb +10 -0
  58. data/app/models/peoplefinder/membership.rb +17 -0
  59. data/app/models/peoplefinder/person.rb +82 -0
  60. data/app/models/peoplefinder/reported_profile.rb +19 -0
  61. data/app/models/peoplefinder/token.rb +31 -0
  62. data/app/models/peoplefinder/version.rb +38 -0
  63. data/app/uploaders/peoplefinder/image_uploader.rb +54 -0
  64. data/app/views/layouts/peoplefinder/_ga.html.haml +9 -0
  65. data/app/views/layouts/peoplefinder/_shared.html.haml +5 -0
  66. data/app/views/layouts/peoplefinder/application.html.haml +24 -0
  67. data/app/views/layouts/peoplefinder/home.html.haml +11 -0
  68. data/app/views/peoplefinder/errors/file_not_found.html.haml +4 -0
  69. data/app/views/peoplefinder/errors/internal_server_error.html.haml +4 -0
  70. data/app/views/peoplefinder/errors/unprocessable.html.haml +5 -0
  71. data/app/views/peoplefinder/groups/_breadcrumbs.html.haml +2 -0
  72. data/app/views/peoplefinder/groups/_detail.html.haml +26 -0
  73. data/app/views/peoplefinder/groups/_form.html.haml +46 -0
  74. data/app/views/peoplefinder/groups/_leadership.html.haml +4 -0
  75. data/app/views/peoplefinder/groups/_subgroup.html.haml +5 -0
  76. data/app/views/peoplefinder/groups/all_people.html.haml +6 -0
  77. data/app/views/peoplefinder/groups/edit.html.haml +16 -0
  78. data/app/views/peoplefinder/groups/new.html.haml +3 -0
  79. data/app/views/peoplefinder/groups/people.html.haml +6 -0
  80. data/app/views/peoplefinder/groups/show.html.haml +23 -0
  81. data/app/views/peoplefinder/home/show.html.haml +15 -0
  82. data/app/views/peoplefinder/information_requests/new.html.haml +13 -0
  83. data/app/views/peoplefinder/memberships/_summary.html.haml +9 -0
  84. data/app/views/peoplefinder/people/_breadcrumbs.html.haml +2 -0
  85. data/app/views/peoplefinder/people/_day.html.haml +2 -0
  86. data/app/views/peoplefinder/people/_form.html.haml +61 -0
  87. data/app/views/peoplefinder/people/_membership_fields.html.haml +42 -0
  88. data/app/views/peoplefinder/people/_person.html.haml +24 -0
  89. data/app/views/peoplefinder/people/_summary.html.haml +9 -0
  90. data/app/views/peoplefinder/people/_working_days.html.haml +4 -0
  91. data/app/views/peoplefinder/people/add_membership.html.haml +6 -0
  92. data/app/views/peoplefinder/people/confirm.html.haml +35 -0
  93. data/app/views/peoplefinder/people/edit.html.haml +12 -0
  94. data/app/views/peoplefinder/people/new.html.haml +3 -0
  95. data/app/views/peoplefinder/people/show.html.haml +49 -0
  96. data/app/views/peoplefinder/person_image/edit.html.haml +18 -0
  97. data/app/views/peoplefinder/reminder_mailer/inadequate_profile.text.erb +7 -0
  98. data/app/views/peoplefinder/reminder_mailer/information_request.text.erb +4 -0
  99. data/app/views/peoplefinder/reminder_mailer/reported_profile.text.erb +10 -0
  100. data/app/views/peoplefinder/reported_profiles/new.html.haml +14 -0
  101. data/app/views/peoplefinder/search/index.html.haml +13 -0
  102. data/app/views/peoplefinder/sessions/_login_page.html.haml +25 -0
  103. data/app/views/peoplefinder/sessions/failed.html.haml +2 -0
  104. data/app/views/peoplefinder/sessions/new.html.haml +1 -0
  105. data/app/views/peoplefinder/shared/_breadcrumb.html.haml +4 -0
  106. data/app/views/peoplefinder/shared/_breadcrumb_spacer.html.haml +1 -0
  107. data/app/views/peoplefinder/shared/_breadcrumbs.html.haml +1 -0
  108. data/app/views/peoplefinder/shared/_editing_alert.html.haml +6 -0
  109. data/app/views/peoplefinder/shared/_loginout.html.haml +5 -0
  110. data/app/views/peoplefinder/shared/_org_browser.html.erb +42 -0
  111. data/app/views/peoplefinder/shared/_search.html.haml +3 -0
  112. data/app/views/peoplefinder/token_mailer/new_token_email.text.erb +7 -0
  113. data/app/views/peoplefinder/tokens/create.html.haml +2 -0
  114. data/app/views/peoplefinder/tokens/failed.html.haml +1 -0
  115. data/app/views/peoplefinder/tokens/new.html.haml +1 -0
  116. data/app/views/peoplefinder/user_update_mailer/deleted_profile_email.erb +3 -0
  117. data/app/views/peoplefinder/user_update_mailer/new_profile_email.erb +5 -0
  118. data/app/views/peoplefinder/user_update_mailer/updated_address_from_email.erb +7 -0
  119. data/app/views/peoplefinder/user_update_mailer/updated_address_to_email.erb +5 -0
  120. data/app/views/peoplefinder/user_update_mailer/updated_profile_email.erb +5 -0
  121. data/app/views/peoplefinder/versions/_general.html.haml +19 -0
  122. data/app/views/peoplefinder/versions/_membership.html.haml +13 -0
  123. data/app/views/peoplefinder/versions/index.html.haml +26 -0
  124. data/config/initializers/assets.rb +28 -0
  125. data/config/initializers/backtrace_silencers.rb +9 -0
  126. data/config/initializers/carrierwave.rb +45 -0
  127. data/config/initializers/cookies_serializer.rb +3 -0
  128. data/config/initializers/elasticsearch.rb +4 -0
  129. data/config/initializers/filter_parameter_logging.rb +4 -0
  130. data/config/initializers/inflections.rb +16 -0
  131. data/config/initializers/mime_types.rb +4 -0
  132. data/config/initializers/omniauth.rb +4 -0
  133. data/config/initializers/session_store.rb +5 -0
  134. data/config/initializers/simple_form.rb +161 -0
  135. data/config/initializers/wrap_parameters.rb +15 -0
  136. data/config/locales/en.yml +131 -0
  137. data/config/routes.rb +34 -0
  138. data/config/secrets.yml +22 -0
  139. data/config/unicorn.rb +24 -0
  140. data/db/migrate/20141010090623_initial_schema.rb +91 -0
  141. data/db/migrate/20141010090624_migrate_item_types_in_versions.rb +17 -0
  142. data/db/seeds.rb +7 -0
  143. data/lib/peoplefinder.rb +4 -0
  144. data/lib/peoplefinder/engine.rb +27 -0
  145. data/lib/peoplefinder/version.rb +3 -0
  146. data/lib/tasks/brakeman.rake +10 -0
  147. data/lib/tasks/elasticsearch.rake +1 -0
  148. data/lib/tasks/jshint.rake +3 -0
  149. data/lib/tasks/peoplefinder.rake +44 -0
  150. data/lib/tasks/peoplefinder_tasks.rake +4 -0
  151. data/lib/tasks/quiet.rake +8 -0
  152. data/lib/tasks/rubocop.rake +6 -0
  153. data/lib/tasks/teaspoon.rake +9 -0
  154. data/lib/templates/haml/scaffold/_form.html.haml +10 -0
  155. data/spec/controllers/peoplefinder/errors_controller_spec.rb +30 -0
  156. data/spec/controllers/peoplefinder/groups_controller_spec.rb +195 -0
  157. data/spec/controllers/peoplefinder/home_controller_spec.rb +37 -0
  158. data/spec/controllers/peoplefinder/information_requests_controller_spec.rb +65 -0
  159. data/spec/controllers/peoplefinder/memberships_controller_spec.rb +25 -0
  160. data/spec/controllers/peoplefinder/org_controller_spec.rb +24 -0
  161. data/spec/controllers/peoplefinder/people_controller_spec.rb +270 -0
  162. data/spec/controllers/peoplefinder/person_image_controller_spec.rb +56 -0
  163. data/spec/controllers/peoplefinder/reported_profiles_controller_spec.rb +79 -0
  164. data/spec/controllers/peoplefinder/versions_controller_spec.rb +55 -0
  165. data/spec/dummy/README.rdoc +28 -0
  166. data/spec/dummy/Rakefile +6 -0
  167. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  168. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  169. data/spec/dummy/bin/bundle +3 -0
  170. data/spec/dummy/bin/rails +4 -0
  171. data/spec/dummy/bin/rake +4 -0
  172. data/spec/dummy/config.ru +4 -0
  173. data/spec/dummy/config/application.rb +49 -0
  174. data/spec/dummy/config/boot.rb +5 -0
  175. data/spec/dummy/config/database.yml +84 -0
  176. data/spec/dummy/config/environment.rb +5 -0
  177. data/spec/dummy/config/environments/development.rb +37 -0
  178. data/spec/dummy/config/environments/production.rb +82 -0
  179. data/spec/dummy/config/environments/test.rb +39 -0
  180. data/spec/dummy/config/initializers/assets.rb +8 -0
  181. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  182. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  183. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  184. data/spec/dummy/config/initializers/inflections.rb +16 -0
  185. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  186. data/spec/dummy/config/initializers/session_store.rb +3 -0
  187. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  188. data/spec/dummy/config/jshint.yml +19 -0
  189. data/spec/dummy/config/locales/en.yml +23 -0
  190. data/spec/dummy/config/routes.rb +4 -0
  191. data/spec/dummy/config/secrets.yml +22 -0
  192. data/spec/dummy/db/schema.rb +107 -0
  193. data/spec/dummy/log/development.log +44 -0
  194. data/spec/dummy/log/test.log +131081 -0
  195. data/spec/dummy/public/404.html +67 -0
  196. data/spec/dummy/public/422.html +67 -0
  197. data/spec/dummy/public/500.html +66 -0
  198. data/spec/dummy/public/favicon.ico +0 -0
  199. data/spec/dummy/public/uploads/peoplefinder/person/image/1084/croppable_placeholder.png +0 -0
  200. data/spec/dummy/public/uploads/peoplefinder/person/image/1084/medium_placeholder.png +0 -0
  201. data/spec/dummy/public/uploads/peoplefinder/person/image/1084/placeholder.png +0 -0
  202. data/spec/dummy/public/uploads/peoplefinder/person/image/1085/croppable_placeholder.png +0 -0
  203. data/spec/dummy/public/uploads/peoplefinder/person/image/1085/medium_placeholder.png +0 -0
  204. data/spec/dummy/public/uploads/peoplefinder/person/image/1085/placeholder.png +0 -0
  205. data/spec/dummy/public/uploads/peoplefinder/person/image/1204/croppable_placeholder.png +0 -0
  206. data/spec/dummy/public/uploads/peoplefinder/person/image/1204/medium_placeholder.png +0 -0
  207. data/spec/dummy/public/uploads/peoplefinder/person/image/1204/placeholder.png +0 -0
  208. data/spec/dummy/public/uploads/peoplefinder/person/image/1458/croppable_placeholder.png +0 -0
  209. data/spec/dummy/public/uploads/peoplefinder/person/image/1458/medium_placeholder.png +0 -0
  210. data/spec/dummy/public/uploads/peoplefinder/person/image/1458/placeholder.png +0 -0
  211. data/spec/dummy/public/uploads/peoplefinder/person/image/1459/croppable_placeholder.png +0 -0
  212. data/spec/dummy/public/uploads/peoplefinder/person/image/1459/medium_placeholder.png +0 -0
  213. data/spec/dummy/public/uploads/peoplefinder/person/image/1459/placeholder.png +0 -0
  214. data/spec/dummy/public/uploads/peoplefinder/person/image/1460/croppable_placeholder.png +0 -0
  215. data/spec/dummy/public/uploads/peoplefinder/person/image/1460/medium_placeholder.png +0 -0
  216. data/spec/dummy/public/uploads/peoplefinder/person/image/1460/placeholder.png +0 -0
  217. data/spec/dummy/public/uploads/peoplefinder/person/image/1461/croppable_placeholder.png +0 -0
  218. data/spec/dummy/public/uploads/peoplefinder/person/image/1461/medium_placeholder.png +0 -0
  219. data/spec/dummy/public/uploads/peoplefinder/person/image/1461/placeholder.png +0 -0
  220. data/spec/dummy/public/uploads/peoplefinder/person/image/1462/croppable_placeholder.png +0 -0
  221. data/spec/dummy/public/uploads/peoplefinder/person/image/1462/medium_placeholder.png +0 -0
  222. data/spec/dummy/public/uploads/peoplefinder/person/image/1462/placeholder.png +0 -0
  223. data/spec/dummy/public/uploads/peoplefinder/person/image/1463/croppable_placeholder.png +0 -0
  224. data/spec/dummy/public/uploads/peoplefinder/person/image/1463/medium_placeholder.png +0 -0
  225. data/spec/dummy/public/uploads/peoplefinder/person/image/1463/placeholder.png +0 -0
  226. data/spec/dummy/public/uploads/peoplefinder/person/image/1464/croppable_placeholder.png +0 -0
  227. data/spec/dummy/public/uploads/peoplefinder/person/image/1464/medium_placeholder.png +0 -0
  228. data/spec/dummy/public/uploads/peoplefinder/person/image/1464/placeholder.png +0 -0
  229. data/spec/dummy/public/uploads/peoplefinder/person/image/1472/croppable_placeholder.png +0 -0
  230. data/spec/dummy/public/uploads/peoplefinder/person/image/1472/medium_placeholder.png +0 -0
  231. data/spec/dummy/public/uploads/peoplefinder/person/image/1472/placeholder.png +0 -0
  232. data/spec/dummy/public/uploads/peoplefinder/person/image/1478/croppable_placeholder.png +0 -0
  233. data/spec/dummy/public/uploads/peoplefinder/person/image/1478/medium_placeholder.png +0 -0
  234. data/spec/dummy/public/uploads/peoplefinder/person/image/1478/placeholder.png +0 -0
  235. data/spec/dummy/public/uploads/peoplefinder/person/image/1480/croppable_placeholder.png +0 -0
  236. data/spec/dummy/public/uploads/peoplefinder/person/image/1480/medium_placeholder.png +0 -0
  237. data/spec/dummy/public/uploads/peoplefinder/person/image/1480/placeholder.png +0 -0
  238. data/spec/dummy/public/uploads/peoplefinder/person/image/1493/croppable_placeholder.png +0 -0
  239. data/spec/dummy/public/uploads/peoplefinder/person/image/1493/medium_placeholder.png +0 -0
  240. data/spec/dummy/public/uploads/peoplefinder/person/image/1493/placeholder.png +0 -0
  241. data/spec/dummy/public/uploads/peoplefinder/person/image/1495/croppable_placeholder.png +0 -0
  242. data/spec/dummy/public/uploads/peoplefinder/person/image/1495/medium_placeholder.png +0 -0
  243. data/spec/dummy/public/uploads/peoplefinder/person/image/1495/placeholder.png +0 -0
  244. data/spec/dummy/public/uploads/peoplefinder/person/image/1502/croppable_placeholder.png +0 -0
  245. data/spec/dummy/public/uploads/peoplefinder/person/image/1502/medium_placeholder.png +0 -0
  246. data/spec/dummy/public/uploads/peoplefinder/person/image/1502/placeholder.png +0 -0
  247. data/spec/dummy/public/uploads/peoplefinder/person/image/1506/croppable_placeholder.png +0 -0
  248. data/spec/dummy/public/uploads/peoplefinder/person/image/1506/medium_placeholder.png +0 -0
  249. data/spec/dummy/public/uploads/peoplefinder/person/image/1506/placeholder.png +0 -0
  250. data/spec/dummy/public/uploads/peoplefinder/person/image/1569/croppable_placeholder.png +0 -0
  251. data/spec/dummy/public/uploads/peoplefinder/person/image/1569/medium_placeholder.png +0 -0
  252. data/spec/dummy/public/uploads/peoplefinder/person/image/1569/placeholder.png +0 -0
  253. data/spec/dummy/public/uploads/peoplefinder/person/image/1677/croppable_placeholder.png +0 -0
  254. data/spec/dummy/public/uploads/peoplefinder/person/image/1677/medium_placeholder.png +0 -0
  255. data/spec/dummy/public/uploads/peoplefinder/person/image/1677/placeholder.png +0 -0
  256. data/spec/dummy/public/uploads/peoplefinder/person/image/1678/croppable_placeholder.png +0 -0
  257. data/spec/dummy/public/uploads/peoplefinder/person/image/1678/medium_placeholder.png +0 -0
  258. data/spec/dummy/public/uploads/peoplefinder/person/image/1678/placeholder.png +0 -0
  259. data/spec/dummy/public/uploads/peoplefinder/person/image/1706/croppable_placeholder.png +0 -0
  260. data/spec/dummy/public/uploads/peoplefinder/person/image/1706/medium_placeholder.png +0 -0
  261. data/spec/dummy/public/uploads/peoplefinder/person/image/1706/placeholder.png +0 -0
  262. data/spec/dummy/public/uploads/peoplefinder/person/image/1707/croppable_placeholder.png +0 -0
  263. data/spec/dummy/public/uploads/peoplefinder/person/image/1707/medium_placeholder.png +0 -0
  264. data/spec/dummy/public/uploads/peoplefinder/person/image/1707/placeholder.png +0 -0
  265. data/spec/dummy/public/uploads/peoplefinder/person/image/1708/croppable_placeholder.png +0 -0
  266. data/spec/dummy/public/uploads/peoplefinder/person/image/1708/medium_placeholder.png +0 -0
  267. data/spec/dummy/public/uploads/peoplefinder/person/image/1708/placeholder.png +0 -0
  268. data/spec/dummy/public/uploads/peoplefinder/person/image/1709/croppable_placeholder.png +0 -0
  269. data/spec/dummy/public/uploads/peoplefinder/person/image/1709/medium_placeholder.png +0 -0
  270. data/spec/dummy/public/uploads/peoplefinder/person/image/1709/placeholder.png +0 -0
  271. data/spec/dummy/public/uploads/peoplefinder/person/image/1710/croppable_placeholder.png +0 -0
  272. data/spec/dummy/public/uploads/peoplefinder/person/image/1710/medium_placeholder.png +0 -0
  273. data/spec/dummy/public/uploads/peoplefinder/person/image/1710/placeholder.png +0 -0
  274. data/spec/dummy/public/uploads/peoplefinder/person/image/183/croppable_placeholder.png +0 -0
  275. data/spec/dummy/public/uploads/peoplefinder/person/image/183/medium_placeholder.png +0 -0
  276. data/spec/dummy/public/uploads/peoplefinder/person/image/183/placeholder.png +0 -0
  277. data/spec/dummy/public/uploads/peoplefinder/person/image/184/croppable_placeholder.png +0 -0
  278. data/spec/dummy/public/uploads/peoplefinder/person/image/184/medium_placeholder.png +0 -0
  279. data/spec/dummy/public/uploads/peoplefinder/person/image/184/placeholder.png +0 -0
  280. data/spec/dummy/public/uploads/peoplefinder/person/image/1855/croppable_placeholder.png +0 -0
  281. data/spec/dummy/public/uploads/peoplefinder/person/image/1855/medium_placeholder.png +0 -0
  282. data/spec/dummy/public/uploads/peoplefinder/person/image/1855/placeholder.png +0 -0
  283. data/spec/dummy/public/uploads/peoplefinder/person/image/1857/croppable_placeholder.png +0 -0
  284. data/spec/dummy/public/uploads/peoplefinder/person/image/1857/medium_placeholder.png +0 -0
  285. data/spec/dummy/public/uploads/peoplefinder/person/image/1857/placeholder.png +0 -0
  286. data/spec/dummy/public/uploads/peoplefinder/person/image/1863/croppable_placeholder.png +0 -0
  287. data/spec/dummy/public/uploads/peoplefinder/person/image/1863/medium_placeholder.png +0 -0
  288. data/spec/dummy/public/uploads/peoplefinder/person/image/1863/placeholder.png +0 -0
  289. data/spec/dummy/public/uploads/peoplefinder/person/image/1865/croppable_placeholder.png +0 -0
  290. data/spec/dummy/public/uploads/peoplefinder/person/image/1865/medium_placeholder.png +0 -0
  291. data/spec/dummy/public/uploads/peoplefinder/person/image/1865/placeholder.png +0 -0
  292. data/spec/dummy/public/uploads/peoplefinder/person/image/1875/croppable_placeholder.png +0 -0
  293. data/spec/dummy/public/uploads/peoplefinder/person/image/1875/medium_placeholder.png +0 -0
  294. data/spec/dummy/public/uploads/peoplefinder/person/image/1875/placeholder.png +0 -0
  295. data/spec/dummy/public/uploads/peoplefinder/person/image/1880/croppable_placeholder.png +0 -0
  296. data/spec/dummy/public/uploads/peoplefinder/person/image/1880/medium_placeholder.png +0 -0
  297. data/spec/dummy/public/uploads/peoplefinder/person/image/1880/placeholder.png +0 -0
  298. data/spec/dummy/public/uploads/peoplefinder/person/image/1886/croppable_placeholder.png +0 -0
  299. data/spec/dummy/public/uploads/peoplefinder/person/image/1886/medium_placeholder.png +0 -0
  300. data/spec/dummy/public/uploads/peoplefinder/person/image/1886/placeholder.png +0 -0
  301. data/spec/dummy/public/uploads/peoplefinder/person/image/195/croppable_placeholder.png +0 -0
  302. data/spec/dummy/public/uploads/peoplefinder/person/image/195/medium_placeholder.png +0 -0
  303. data/spec/dummy/public/uploads/peoplefinder/person/image/195/placeholder.png +0 -0
  304. data/spec/dummy/public/uploads/peoplefinder/person/image/1987/croppable_placeholder.png +0 -0
  305. data/spec/dummy/public/uploads/peoplefinder/person/image/1987/medium_placeholder.png +0 -0
  306. data/spec/dummy/public/uploads/peoplefinder/person/image/1987/placeholder.png +0 -0
  307. data/spec/dummy/public/uploads/peoplefinder/person/image/2030/croppable_placeholder.png +0 -0
  308. data/spec/dummy/public/uploads/peoplefinder/person/image/2030/medium_placeholder.png +0 -0
  309. data/spec/dummy/public/uploads/peoplefinder/person/image/2030/placeholder.png +0 -0
  310. data/spec/dummy/public/uploads/peoplefinder/person/image/2031/croppable_placeholder.png +0 -0
  311. data/spec/dummy/public/uploads/peoplefinder/person/image/2031/medium_placeholder.png +0 -0
  312. data/spec/dummy/public/uploads/peoplefinder/person/image/2031/placeholder.png +0 -0
  313. data/spec/dummy/public/uploads/peoplefinder/person/image/2032/croppable_placeholder.png +0 -0
  314. data/spec/dummy/public/uploads/peoplefinder/person/image/2032/medium_placeholder.png +0 -0
  315. data/spec/dummy/public/uploads/peoplefinder/person/image/2032/placeholder.png +0 -0
  316. data/spec/dummy/public/uploads/peoplefinder/person/image/2033/croppable_placeholder.png +0 -0
  317. data/spec/dummy/public/uploads/peoplefinder/person/image/2033/medium_placeholder.png +0 -0
  318. data/spec/dummy/public/uploads/peoplefinder/person/image/2033/placeholder.png +0 -0
  319. data/spec/dummy/public/uploads/peoplefinder/person/image/2034/croppable_placeholder.png +0 -0
  320. data/spec/dummy/public/uploads/peoplefinder/person/image/2034/medium_placeholder.png +0 -0
  321. data/spec/dummy/public/uploads/peoplefinder/person/image/2034/placeholder.png +0 -0
  322. data/spec/dummy/public/uploads/peoplefinder/person/image/205/croppable_placeholder.png +0 -0
  323. data/spec/dummy/public/uploads/peoplefinder/person/image/205/medium_placeholder.png +0 -0
  324. data/spec/dummy/public/uploads/peoplefinder/person/image/205/placeholder.png +0 -0
  325. data/spec/dummy/public/uploads/peoplefinder/person/image/2053/croppable_placeholder.png +0 -0
  326. data/spec/dummy/public/uploads/peoplefinder/person/image/2053/medium_placeholder.png +0 -0
  327. data/spec/dummy/public/uploads/peoplefinder/person/image/2053/placeholder.png +0 -0
  328. data/spec/dummy/public/uploads/peoplefinder/person/image/2056/croppable_placeholder.png +0 -0
  329. data/spec/dummy/public/uploads/peoplefinder/person/image/2056/medium_placeholder.png +0 -0
  330. data/spec/dummy/public/uploads/peoplefinder/person/image/2056/placeholder.png +0 -0
  331. data/spec/dummy/public/uploads/peoplefinder/person/image/2060/croppable_placeholder.png +0 -0
  332. data/spec/dummy/public/uploads/peoplefinder/person/image/2060/medium_placeholder.png +0 -0
  333. data/spec/dummy/public/uploads/peoplefinder/person/image/2060/placeholder.png +0 -0
  334. data/spec/dummy/public/uploads/peoplefinder/person/image/2062/croppable_placeholder.png +0 -0
  335. data/spec/dummy/public/uploads/peoplefinder/person/image/2062/medium_placeholder.png +0 -0
  336. data/spec/dummy/public/uploads/peoplefinder/person/image/2062/placeholder.png +0 -0
  337. data/spec/dummy/public/uploads/peoplefinder/person/image/2071/croppable_placeholder.png +0 -0
  338. data/spec/dummy/public/uploads/peoplefinder/person/image/2071/medium_placeholder.png +0 -0
  339. data/spec/dummy/public/uploads/peoplefinder/person/image/2071/placeholder.png +0 -0
  340. data/spec/dummy/public/uploads/peoplefinder/person/image/2075/croppable_placeholder.png +0 -0
  341. data/spec/dummy/public/uploads/peoplefinder/person/image/2075/medium_placeholder.png +0 -0
  342. data/spec/dummy/public/uploads/peoplefinder/person/image/2075/placeholder.png +0 -0
  343. data/spec/dummy/public/uploads/peoplefinder/person/image/2081/croppable_placeholder.png +0 -0
  344. data/spec/dummy/public/uploads/peoplefinder/person/image/2081/medium_placeholder.png +0 -0
  345. data/spec/dummy/public/uploads/peoplefinder/person/image/2081/placeholder.png +0 -0
  346. data/spec/dummy/public/uploads/peoplefinder/person/image/210/croppable_placeholder.png +0 -0
  347. data/spec/dummy/public/uploads/peoplefinder/person/image/210/medium_placeholder.png +0 -0
  348. data/spec/dummy/public/uploads/peoplefinder/person/image/210/placeholder.png +0 -0
  349. data/spec/dummy/public/uploads/peoplefinder/person/image/214/croppable_placeholder.png +0 -0
  350. data/spec/dummy/public/uploads/peoplefinder/person/image/214/medium_placeholder.png +0 -0
  351. data/spec/dummy/public/uploads/peoplefinder/person/image/214/placeholder.png +0 -0
  352. data/spec/dummy/public/uploads/peoplefinder/person/image/219/croppable_placeholder.png +0 -0
  353. data/spec/dummy/public/uploads/peoplefinder/person/image/219/medium_placeholder.png +0 -0
  354. data/spec/dummy/public/uploads/peoplefinder/person/image/219/placeholder.png +0 -0
  355. data/spec/dummy/public/uploads/peoplefinder/person/image/2213/croppable_placeholder.png +0 -0
  356. data/spec/dummy/public/uploads/peoplefinder/person/image/2213/medium_placeholder.png +0 -0
  357. data/spec/dummy/public/uploads/peoplefinder/person/image/2213/placeholder.png +0 -0
  358. data/spec/dummy/public/uploads/peoplefinder/person/image/2214/croppable_placeholder.png +0 -0
  359. data/spec/dummy/public/uploads/peoplefinder/person/image/2214/medium_placeholder.png +0 -0
  360. data/spec/dummy/public/uploads/peoplefinder/person/image/2214/placeholder.png +0 -0
  361. data/spec/dummy/public/uploads/peoplefinder/person/image/223/croppable_placeholder.png +0 -0
  362. data/spec/dummy/public/uploads/peoplefinder/person/image/223/medium_placeholder.png +0 -0
  363. data/spec/dummy/public/uploads/peoplefinder/person/image/223/placeholder.png +0 -0
  364. data/spec/dummy/public/uploads/peoplefinder/person/image/229/croppable_placeholder.png +0 -0
  365. data/spec/dummy/public/uploads/peoplefinder/person/image/229/medium_placeholder.png +0 -0
  366. data/spec/dummy/public/uploads/peoplefinder/person/image/229/placeholder.png +0 -0
  367. data/spec/dummy/public/uploads/peoplefinder/person/image/2358/croppable_placeholder.png +0 -0
  368. data/spec/dummy/public/uploads/peoplefinder/person/image/2358/medium_placeholder.png +0 -0
  369. data/spec/dummy/public/uploads/peoplefinder/person/image/2358/placeholder.png +0 -0
  370. data/spec/dummy/public/uploads/peoplefinder/person/image/2359/croppable_placeholder.png +0 -0
  371. data/spec/dummy/public/uploads/peoplefinder/person/image/2359/medium_placeholder.png +0 -0
  372. data/spec/dummy/public/uploads/peoplefinder/person/image/2359/placeholder.png +0 -0
  373. data/spec/dummy/public/uploads/peoplefinder/person/image/2360/croppable_placeholder.png +0 -0
  374. data/spec/dummy/public/uploads/peoplefinder/person/image/2360/medium_placeholder.png +0 -0
  375. data/spec/dummy/public/uploads/peoplefinder/person/image/2360/placeholder.png +0 -0
  376. data/spec/dummy/public/uploads/peoplefinder/person/image/2361/croppable_placeholder.png +0 -0
  377. data/spec/dummy/public/uploads/peoplefinder/person/image/2361/medium_placeholder.png +0 -0
  378. data/spec/dummy/public/uploads/peoplefinder/person/image/2361/placeholder.png +0 -0
  379. data/spec/dummy/public/uploads/peoplefinder/person/image/2362/croppable_placeholder.png +0 -0
  380. data/spec/dummy/public/uploads/peoplefinder/person/image/2362/medium_placeholder.png +0 -0
  381. data/spec/dummy/public/uploads/peoplefinder/person/image/2362/placeholder.png +0 -0
  382. data/spec/dummy/public/uploads/peoplefinder/person/image/2416/croppable_placeholder.png +0 -0
  383. data/spec/dummy/public/uploads/peoplefinder/person/image/2416/medium_placeholder.png +0 -0
  384. data/spec/dummy/public/uploads/peoplefinder/person/image/2416/placeholder.png +0 -0
  385. data/spec/dummy/public/uploads/peoplefinder/person/image/2417/croppable_placeholder.png +0 -0
  386. data/spec/dummy/public/uploads/peoplefinder/person/image/2417/medium_placeholder.png +0 -0
  387. data/spec/dummy/public/uploads/peoplefinder/person/image/2417/placeholder.png +0 -0
  388. data/spec/dummy/public/uploads/peoplefinder/person/image/2424/croppable_placeholder.png +0 -0
  389. data/spec/dummy/public/uploads/peoplefinder/person/image/2424/medium_placeholder.png +0 -0
  390. data/spec/dummy/public/uploads/peoplefinder/person/image/2424/placeholder.png +0 -0
  391. data/spec/dummy/public/uploads/peoplefinder/person/image/2435/croppable_placeholder.png +0 -0
  392. data/spec/dummy/public/uploads/peoplefinder/person/image/2435/medium_placeholder.png +0 -0
  393. data/spec/dummy/public/uploads/peoplefinder/person/image/2435/placeholder.png +0 -0
  394. data/spec/dummy/public/uploads/peoplefinder/person/image/2440/croppable_placeholder.png +0 -0
  395. data/spec/dummy/public/uploads/peoplefinder/person/image/2440/medium_placeholder.png +0 -0
  396. data/spec/dummy/public/uploads/peoplefinder/person/image/2440/placeholder.png +0 -0
  397. data/spec/dummy/public/uploads/peoplefinder/person/image/2444/croppable_placeholder.png +0 -0
  398. data/spec/dummy/public/uploads/peoplefinder/person/image/2444/medium_placeholder.png +0 -0
  399. data/spec/dummy/public/uploads/peoplefinder/person/image/2444/placeholder.png +0 -0
  400. data/spec/dummy/public/uploads/peoplefinder/person/image/2450/croppable_placeholder.png +0 -0
  401. data/spec/dummy/public/uploads/peoplefinder/person/image/2450/medium_placeholder.png +0 -0
  402. data/spec/dummy/public/uploads/peoplefinder/person/image/2450/placeholder.png +0 -0
  403. data/spec/dummy/public/uploads/peoplefinder/person/image/2454/croppable_placeholder.png +0 -0
  404. data/spec/dummy/public/uploads/peoplefinder/person/image/2454/medium_placeholder.png +0 -0
  405. data/spec/dummy/public/uploads/peoplefinder/person/image/2454/placeholder.png +0 -0
  406. data/spec/dummy/public/uploads/peoplefinder/person/image/2460/croppable_placeholder.png +0 -0
  407. data/spec/dummy/public/uploads/peoplefinder/person/image/2460/medium_placeholder.png +0 -0
  408. data/spec/dummy/public/uploads/peoplefinder/person/image/2460/placeholder.png +0 -0
  409. data/spec/dummy/public/uploads/peoplefinder/person/image/2473/croppable_placeholder.png +0 -0
  410. data/spec/dummy/public/uploads/peoplefinder/person/image/2473/medium_placeholder.png +0 -0
  411. data/spec/dummy/public/uploads/peoplefinder/person/image/2473/placeholder.png +0 -0
  412. data/spec/dummy/public/uploads/peoplefinder/person/image/2650/croppable_placeholder.png +0 -0
  413. data/spec/dummy/public/uploads/peoplefinder/person/image/2650/medium_placeholder.png +0 -0
  414. data/spec/dummy/public/uploads/peoplefinder/person/image/2650/placeholder.png +0 -0
  415. data/spec/dummy/public/uploads/peoplefinder/person/image/2657/croppable_placeholder.png +0 -0
  416. data/spec/dummy/public/uploads/peoplefinder/person/image/2657/medium_placeholder.png +0 -0
  417. data/spec/dummy/public/uploads/peoplefinder/person/image/2657/placeholder.png +0 -0
  418. data/spec/dummy/public/uploads/peoplefinder/person/image/2658/croppable_placeholder.png +0 -0
  419. data/spec/dummy/public/uploads/peoplefinder/person/image/2658/medium_placeholder.png +0 -0
  420. data/spec/dummy/public/uploads/peoplefinder/person/image/2658/placeholder.png +0 -0
  421. data/spec/dummy/public/uploads/peoplefinder/person/image/2669/croppable_placeholder.png +0 -0
  422. data/spec/dummy/public/uploads/peoplefinder/person/image/2669/medium_placeholder.png +0 -0
  423. data/spec/dummy/public/uploads/peoplefinder/person/image/2669/placeholder.png +0 -0
  424. data/spec/dummy/public/uploads/peoplefinder/person/image/2674/croppable_placeholder.png +0 -0
  425. data/spec/dummy/public/uploads/peoplefinder/person/image/2674/medium_placeholder.png +0 -0
  426. data/spec/dummy/public/uploads/peoplefinder/person/image/2674/placeholder.png +0 -0
  427. data/spec/dummy/public/uploads/peoplefinder/person/image/2684/croppable_placeholder.png +0 -0
  428. data/spec/dummy/public/uploads/peoplefinder/person/image/2684/medium_placeholder.png +0 -0
  429. data/spec/dummy/public/uploads/peoplefinder/person/image/2684/placeholder.png +0 -0
  430. data/spec/dummy/public/uploads/peoplefinder/person/image/2690/croppable_placeholder.png +0 -0
  431. data/spec/dummy/public/uploads/peoplefinder/person/image/2690/medium_placeholder.png +0 -0
  432. data/spec/dummy/public/uploads/peoplefinder/person/image/2690/placeholder.png +0 -0
  433. data/spec/dummy/public/uploads/peoplefinder/person/image/2695/croppable_placeholder.png +0 -0
  434. data/spec/dummy/public/uploads/peoplefinder/person/image/2695/medium_placeholder.png +0 -0
  435. data/spec/dummy/public/uploads/peoplefinder/person/image/2695/placeholder.png +0 -0
  436. data/spec/dummy/public/uploads/peoplefinder/person/image/2697/croppable_placeholder.png +0 -0
  437. data/spec/dummy/public/uploads/peoplefinder/person/image/2697/medium_placeholder.png +0 -0
  438. data/spec/dummy/public/uploads/peoplefinder/person/image/2697/placeholder.png +0 -0
  439. data/spec/dummy/public/uploads/peoplefinder/person/image/2705/croppable_placeholder.png +0 -0
  440. data/spec/dummy/public/uploads/peoplefinder/person/image/2705/medium_placeholder.png +0 -0
  441. data/spec/dummy/public/uploads/peoplefinder/person/image/2705/placeholder.png +0 -0
  442. data/spec/dummy/public/uploads/peoplefinder/person/image/2772/croppable_placeholder.png +0 -0
  443. data/spec/dummy/public/uploads/peoplefinder/person/image/2772/medium_placeholder.png +0 -0
  444. data/spec/dummy/public/uploads/peoplefinder/person/image/2772/placeholder.png +0 -0
  445. data/spec/dummy/public/uploads/peoplefinder/person/image/2773/croppable_placeholder.png +0 -0
  446. data/spec/dummy/public/uploads/peoplefinder/person/image/2773/medium_placeholder.png +0 -0
  447. data/spec/dummy/public/uploads/peoplefinder/person/image/2773/placeholder.png +0 -0
  448. data/spec/dummy/public/uploads/peoplefinder/person/image/2774/croppable_placeholder.png +0 -0
  449. data/spec/dummy/public/uploads/peoplefinder/person/image/2774/medium_placeholder.png +0 -0
  450. data/spec/dummy/public/uploads/peoplefinder/person/image/2774/placeholder.png +0 -0
  451. data/spec/dummy/public/uploads/peoplefinder/person/image/2775/croppable_placeholder.png +0 -0
  452. data/spec/dummy/public/uploads/peoplefinder/person/image/2775/medium_placeholder.png +0 -0
  453. data/spec/dummy/public/uploads/peoplefinder/person/image/2775/placeholder.png +0 -0
  454. data/spec/dummy/public/uploads/peoplefinder/person/image/2776/croppable_placeholder.png +0 -0
  455. data/spec/dummy/public/uploads/peoplefinder/person/image/2776/medium_placeholder.png +0 -0
  456. data/spec/dummy/public/uploads/peoplefinder/person/image/2776/placeholder.png +0 -0
  457. data/spec/dummy/public/uploads/peoplefinder/person/image/288/croppable_placeholder.png +0 -0
  458. data/spec/dummy/public/uploads/peoplefinder/person/image/288/medium_placeholder.png +0 -0
  459. data/spec/dummy/public/uploads/peoplefinder/person/image/288/placeholder.png +0 -0
  460. data/spec/dummy/public/uploads/peoplefinder/person/image/296/croppable_placeholder.png +0 -0
  461. data/spec/dummy/public/uploads/peoplefinder/person/image/296/medium_placeholder.png +0 -0
  462. data/spec/dummy/public/uploads/peoplefinder/person/image/296/placeholder.png +0 -0
  463. data/spec/dummy/public/uploads/peoplefinder/person/image/297/croppable_placeholder.png +0 -0
  464. data/spec/dummy/public/uploads/peoplefinder/person/image/297/medium_placeholder.png +0 -0
  465. data/spec/dummy/public/uploads/peoplefinder/person/image/297/placeholder.png +0 -0
  466. data/spec/dummy/public/uploads/peoplefinder/person/image/298/croppable_placeholder.png +0 -0
  467. data/spec/dummy/public/uploads/peoplefinder/person/image/298/medium_placeholder.png +0 -0
  468. data/spec/dummy/public/uploads/peoplefinder/person/image/298/placeholder.png +0 -0
  469. data/spec/dummy/public/uploads/peoplefinder/person/image/299/croppable_placeholder.png +0 -0
  470. data/spec/dummy/public/uploads/peoplefinder/person/image/299/medium_placeholder.png +0 -0
  471. data/spec/dummy/public/uploads/peoplefinder/person/image/299/placeholder.png +0 -0
  472. data/spec/dummy/public/uploads/peoplefinder/person/image/300/croppable_placeholder.png +0 -0
  473. data/spec/dummy/public/uploads/peoplefinder/person/image/300/medium_placeholder.png +0 -0
  474. data/spec/dummy/public/uploads/peoplefinder/person/image/300/placeholder.png +0 -0
  475. data/spec/dummy/public/uploads/peoplefinder/person/image/3022/croppable_placeholder.png +0 -0
  476. data/spec/dummy/public/uploads/peoplefinder/person/image/3022/medium_placeholder.png +0 -0
  477. data/spec/dummy/public/uploads/peoplefinder/person/image/3022/placeholder.png +0 -0
  478. data/spec/dummy/public/uploads/peoplefinder/person/image/3023/croppable_placeholder.png +0 -0
  479. data/spec/dummy/public/uploads/peoplefinder/person/image/3023/medium_placeholder.png +0 -0
  480. data/spec/dummy/public/uploads/peoplefinder/person/image/3023/placeholder.png +0 -0
  481. data/spec/dummy/public/uploads/peoplefinder/person/image/3028/croppable_placeholder.png +0 -0
  482. data/spec/dummy/public/uploads/peoplefinder/person/image/3028/medium_placeholder.png +0 -0
  483. data/spec/dummy/public/uploads/peoplefinder/person/image/3028/placeholder.png +0 -0
  484. data/spec/dummy/public/uploads/peoplefinder/person/image/3029/croppable_placeholder.png +0 -0
  485. data/spec/dummy/public/uploads/peoplefinder/person/image/3029/medium_placeholder.png +0 -0
  486. data/spec/dummy/public/uploads/peoplefinder/person/image/3029/placeholder.png +0 -0
  487. data/spec/dummy/public/uploads/peoplefinder/person/image/3030/croppable_placeholder.png +0 -0
  488. data/spec/dummy/public/uploads/peoplefinder/person/image/3030/medium_placeholder.png +0 -0
  489. data/spec/dummy/public/uploads/peoplefinder/person/image/3030/placeholder.png +0 -0
  490. data/spec/dummy/public/uploads/peoplefinder/person/image/3031/croppable_placeholder.png +0 -0
  491. data/spec/dummy/public/uploads/peoplefinder/person/image/3031/medium_placeholder.png +0 -0
  492. data/spec/dummy/public/uploads/peoplefinder/person/image/3031/placeholder.png +0 -0
  493. data/spec/dummy/public/uploads/peoplefinder/person/image/3032/croppable_placeholder.png +0 -0
  494. data/spec/dummy/public/uploads/peoplefinder/person/image/3032/medium_placeholder.png +0 -0
  495. data/spec/dummy/public/uploads/peoplefinder/person/image/3032/placeholder.png +0 -0
  496. data/spec/dummy/public/uploads/peoplefinder/person/image/3072/croppable_placeholder.png +0 -0
  497. data/spec/dummy/public/uploads/peoplefinder/person/image/3072/medium_placeholder.png +0 -0
  498. data/spec/dummy/public/uploads/peoplefinder/person/image/3072/placeholder.png +0 -0
  499. data/spec/dummy/public/uploads/peoplefinder/person/image/3160/croppable_placeholder.png +0 -0
  500. data/spec/dummy/public/uploads/peoplefinder/person/image/3160/medium_placeholder.png +0 -0
  501. data/spec/dummy/public/uploads/peoplefinder/person/image/3160/placeholder.png +0 -0
  502. data/spec/dummy/public/uploads/peoplefinder/person/image/3167/croppable_placeholder.png +0 -0
  503. data/spec/dummy/public/uploads/peoplefinder/person/image/3167/medium_placeholder.png +0 -0
  504. data/spec/dummy/public/uploads/peoplefinder/person/image/3167/placeholder.png +0 -0
  505. data/spec/dummy/public/uploads/peoplefinder/person/image/3169/croppable_placeholder.png +0 -0
  506. data/spec/dummy/public/uploads/peoplefinder/person/image/3169/medium_placeholder.png +0 -0
  507. data/spec/dummy/public/uploads/peoplefinder/person/image/3169/placeholder.png +0 -0
  508. data/spec/dummy/public/uploads/peoplefinder/person/image/3174/croppable_placeholder.png +0 -0
  509. data/spec/dummy/public/uploads/peoplefinder/person/image/3174/medium_placeholder.png +0 -0
  510. data/spec/dummy/public/uploads/peoplefinder/person/image/3174/placeholder.png +0 -0
  511. data/spec/dummy/public/uploads/peoplefinder/person/image/3183/croppable_placeholder.png +0 -0
  512. data/spec/dummy/public/uploads/peoplefinder/person/image/3183/medium_placeholder.png +0 -0
  513. data/spec/dummy/public/uploads/peoplefinder/person/image/3183/placeholder.png +0 -0
  514. data/spec/dummy/public/uploads/peoplefinder/person/image/3185/croppable_placeholder.png +0 -0
  515. data/spec/dummy/public/uploads/peoplefinder/person/image/3185/medium_placeholder.png +0 -0
  516. data/spec/dummy/public/uploads/peoplefinder/person/image/3185/placeholder.png +0 -0
  517. data/spec/dummy/public/uploads/peoplefinder/person/image/3189/croppable_placeholder.png +0 -0
  518. data/spec/dummy/public/uploads/peoplefinder/person/image/3189/medium_placeholder.png +0 -0
  519. data/spec/dummy/public/uploads/peoplefinder/person/image/3189/placeholder.png +0 -0
  520. data/spec/dummy/public/uploads/peoplefinder/person/image/3239/croppable_placeholder.png +0 -0
  521. data/spec/dummy/public/uploads/peoplefinder/person/image/3239/medium_placeholder.png +0 -0
  522. data/spec/dummy/public/uploads/peoplefinder/person/image/3239/placeholder.png +0 -0
  523. data/spec/dummy/public/uploads/peoplefinder/person/image/3240/croppable_placeholder.png +0 -0
  524. data/spec/dummy/public/uploads/peoplefinder/person/image/3240/medium_placeholder.png +0 -0
  525. data/spec/dummy/public/uploads/peoplefinder/person/image/3240/placeholder.png +0 -0
  526. data/spec/dummy/public/uploads/peoplefinder/person/image/3243/croppable_placeholder.png +0 -0
  527. data/spec/dummy/public/uploads/peoplefinder/person/image/3243/medium_placeholder.png +0 -0
  528. data/spec/dummy/public/uploads/peoplefinder/person/image/3243/placeholder.png +0 -0
  529. data/spec/dummy/public/uploads/peoplefinder/person/image/3251/croppable_placeholder.png +0 -0
  530. data/spec/dummy/public/uploads/peoplefinder/person/image/3251/medium_placeholder.png +0 -0
  531. data/spec/dummy/public/uploads/peoplefinder/person/image/3251/placeholder.png +0 -0
  532. data/spec/dummy/public/uploads/peoplefinder/person/image/3253/croppable_placeholder.png +0 -0
  533. data/spec/dummy/public/uploads/peoplefinder/person/image/3253/medium_placeholder.png +0 -0
  534. data/spec/dummy/public/uploads/peoplefinder/person/image/3253/placeholder.png +0 -0
  535. data/spec/dummy/public/uploads/peoplefinder/person/image/3259/croppable_placeholder.png +0 -0
  536. data/spec/dummy/public/uploads/peoplefinder/person/image/3259/medium_placeholder.png +0 -0
  537. data/spec/dummy/public/uploads/peoplefinder/person/image/3259/placeholder.png +0 -0
  538. data/spec/dummy/public/uploads/peoplefinder/person/image/3268/croppable_placeholder.png +0 -0
  539. data/spec/dummy/public/uploads/peoplefinder/person/image/3268/medium_placeholder.png +0 -0
  540. data/spec/dummy/public/uploads/peoplefinder/person/image/3268/placeholder.png +0 -0
  541. data/spec/dummy/public/uploads/peoplefinder/person/image/3274/croppable_placeholder.png +0 -0
  542. data/spec/dummy/public/uploads/peoplefinder/person/image/3274/medium_placeholder.png +0 -0
  543. data/spec/dummy/public/uploads/peoplefinder/person/image/3274/placeholder.png +0 -0
  544. data/spec/dummy/public/uploads/peoplefinder/person/image/3280/croppable_placeholder.png +0 -0
  545. data/spec/dummy/public/uploads/peoplefinder/person/image/3280/medium_placeholder.png +0 -0
  546. data/spec/dummy/public/uploads/peoplefinder/person/image/3280/placeholder.png +0 -0
  547. data/spec/dummy/public/uploads/peoplefinder/person/image/3325/croppable_placeholder.png +0 -0
  548. data/spec/dummy/public/uploads/peoplefinder/person/image/3325/medium_placeholder.png +0 -0
  549. data/spec/dummy/public/uploads/peoplefinder/person/image/3325/placeholder.png +0 -0
  550. data/spec/dummy/public/uploads/peoplefinder/person/image/3326/croppable_placeholder.png +0 -0
  551. data/spec/dummy/public/uploads/peoplefinder/person/image/3326/medium_placeholder.png +0 -0
  552. data/spec/dummy/public/uploads/peoplefinder/person/image/3326/placeholder.png +0 -0
  553. data/spec/dummy/public/uploads/peoplefinder/person/image/3327/croppable_placeholder.png +0 -0
  554. data/spec/dummy/public/uploads/peoplefinder/person/image/3327/medium_placeholder.png +0 -0
  555. data/spec/dummy/public/uploads/peoplefinder/person/image/3327/placeholder.png +0 -0
  556. data/spec/dummy/public/uploads/peoplefinder/person/image/3328/croppable_placeholder.png +0 -0
  557. data/spec/dummy/public/uploads/peoplefinder/person/image/3328/medium_placeholder.png +0 -0
  558. data/spec/dummy/public/uploads/peoplefinder/person/image/3328/placeholder.png +0 -0
  559. data/spec/dummy/public/uploads/peoplefinder/person/image/3329/croppable_placeholder.png +0 -0
  560. data/spec/dummy/public/uploads/peoplefinder/person/image/3329/medium_placeholder.png +0 -0
  561. data/spec/dummy/public/uploads/peoplefinder/person/image/3329/placeholder.png +0 -0
  562. data/spec/dummy/public/uploads/peoplefinder/person/image/3339/croppable_placeholder.png +0 -0
  563. data/spec/dummy/public/uploads/peoplefinder/person/image/3339/medium_placeholder.png +0 -0
  564. data/spec/dummy/public/uploads/peoplefinder/person/image/3339/placeholder.png +0 -0
  565. data/spec/dummy/public/uploads/peoplefinder/person/image/501/croppable_placeholder.png +0 -0
  566. data/spec/dummy/public/uploads/peoplefinder/person/image/501/medium_placeholder.png +0 -0
  567. data/spec/dummy/public/uploads/peoplefinder/person/image/501/placeholder.png +0 -0
  568. data/spec/dummy/public/uploads/peoplefinder/person/image/502/croppable_placeholder.png +0 -0
  569. data/spec/dummy/public/uploads/peoplefinder/person/image/502/medium_placeholder.png +0 -0
  570. data/spec/dummy/public/uploads/peoplefinder/person/image/502/placeholder.png +0 -0
  571. data/spec/dummy/public/uploads/peoplefinder/person/image/645/croppable_placeholder.png +0 -0
  572. data/spec/dummy/public/uploads/peoplefinder/person/image/645/medium_placeholder.png +0 -0
  573. data/spec/dummy/public/uploads/peoplefinder/person/image/645/placeholder.png +0 -0
  574. data/spec/dummy/public/uploads/peoplefinder/person/image/646/croppable_placeholder.png +0 -0
  575. data/spec/dummy/public/uploads/peoplefinder/person/image/646/medium_placeholder.png +0 -0
  576. data/spec/dummy/public/uploads/peoplefinder/person/image/646/placeholder.png +0 -0
  577. data/spec/dummy/public/uploads/peoplefinder/person/image/647/croppable_placeholder.png +0 -0
  578. data/spec/dummy/public/uploads/peoplefinder/person/image/647/medium_placeholder.png +0 -0
  579. data/spec/dummy/public/uploads/peoplefinder/person/image/647/placeholder.png +0 -0
  580. data/spec/dummy/public/uploads/peoplefinder/person/image/648/croppable_placeholder.png +0 -0
  581. data/spec/dummy/public/uploads/peoplefinder/person/image/648/medium_placeholder.png +0 -0
  582. data/spec/dummy/public/uploads/peoplefinder/person/image/648/placeholder.png +0 -0
  583. data/spec/dummy/public/uploads/peoplefinder/person/image/649/croppable_placeholder.png +0 -0
  584. data/spec/dummy/public/uploads/peoplefinder/person/image/649/medium_placeholder.png +0 -0
  585. data/spec/dummy/public/uploads/peoplefinder/person/image/649/placeholder.png +0 -0
  586. data/spec/dummy/public/uploads/peoplefinder/person/image/73/croppable_placeholder.png +0 -0
  587. data/spec/dummy/public/uploads/peoplefinder/person/image/73/medium_placeholder.png +0 -0
  588. data/spec/dummy/public/uploads/peoplefinder/person/image/73/placeholder.png +0 -0
  589. data/spec/dummy/public/uploads/peoplefinder/person/image/74/croppable_placeholder.png +0 -0
  590. data/spec/dummy/public/uploads/peoplefinder/person/image/74/medium_placeholder.png +0 -0
  591. data/spec/dummy/public/uploads/peoplefinder/person/image/74/placeholder.png +0 -0
  592. data/spec/dummy/public/uploads/peoplefinder/person/image/777/croppable_placeholder.png +0 -0
  593. data/spec/dummy/public/uploads/peoplefinder/person/image/777/medium_placeholder.png +0 -0
  594. data/spec/dummy/public/uploads/peoplefinder/person/image/777/placeholder.png +0 -0
  595. data/spec/dummy/public/uploads/peoplefinder/person/image/782/croppable_placeholder.png +0 -0
  596. data/spec/dummy/public/uploads/peoplefinder/person/image/782/medium_placeholder.png +0 -0
  597. data/spec/dummy/public/uploads/peoplefinder/person/image/782/placeholder.png +0 -0
  598. data/spec/dummy/public/uploads/peoplefinder/person/image/795/croppable_placeholder.png +0 -0
  599. data/spec/dummy/public/uploads/peoplefinder/person/image/795/medium_placeholder.png +0 -0
  600. data/spec/dummy/public/uploads/peoplefinder/person/image/795/placeholder.png +0 -0
  601. data/spec/dummy/public/uploads/peoplefinder/person/image/799/croppable_placeholder.png +0 -0
  602. data/spec/dummy/public/uploads/peoplefinder/person/image/799/medium_placeholder.png +0 -0
  603. data/spec/dummy/public/uploads/peoplefinder/person/image/799/placeholder.png +0 -0
  604. data/spec/dummy/public/uploads/peoplefinder/person/image/801/croppable_placeholder.png +0 -0
  605. data/spec/dummy/public/uploads/peoplefinder/person/image/801/medium_placeholder.png +0 -0
  606. data/spec/dummy/public/uploads/peoplefinder/person/image/801/placeholder.png +0 -0
  607. data/spec/dummy/public/uploads/peoplefinder/person/image/805/croppable_placeholder.png +0 -0
  608. data/spec/dummy/public/uploads/peoplefinder/person/image/805/medium_placeholder.png +0 -0
  609. data/spec/dummy/public/uploads/peoplefinder/person/image/805/placeholder.png +0 -0
  610. data/spec/dummy/public/uploads/peoplefinder/person/image/813/croppable_placeholder.png +0 -0
  611. data/spec/dummy/public/uploads/peoplefinder/person/image/813/medium_placeholder.png +0 -0
  612. data/spec/dummy/public/uploads/peoplefinder/person/image/813/placeholder.png +0 -0
  613. data/spec/dummy/public/uploads/peoplefinder/person/image/828/croppable_placeholder.png +0 -0
  614. data/spec/dummy/public/uploads/peoplefinder/person/image/828/medium_placeholder.png +0 -0
  615. data/spec/dummy/public/uploads/peoplefinder/person/image/828/placeholder.png +0 -0
  616. data/spec/dummy/public/uploads/peoplefinder/person/image/868/croppable_placeholder.png +0 -0
  617. data/spec/dummy/public/uploads/peoplefinder/person/image/868/medium_placeholder.png +0 -0
  618. data/spec/dummy/public/uploads/peoplefinder/person/image/868/placeholder.png +0 -0
  619. data/spec/dummy/public/uploads/peoplefinder/person/image/875/croppable_placeholder.png +0 -0
  620. data/spec/dummy/public/uploads/peoplefinder/person/image/875/medium_placeholder.png +0 -0
  621. data/spec/dummy/public/uploads/peoplefinder/person/image/875/placeholder.png +0 -0
  622. data/spec/dummy/public/uploads/peoplefinder/person/image/879/croppable_placeholder.png +0 -0
  623. data/spec/dummy/public/uploads/peoplefinder/person/image/879/medium_placeholder.png +0 -0
  624. data/spec/dummy/public/uploads/peoplefinder/person/image/879/placeholder.png +0 -0
  625. data/spec/dummy/public/uploads/peoplefinder/person/image/881/croppable_placeholder.png +0 -0
  626. data/spec/dummy/public/uploads/peoplefinder/person/image/881/medium_placeholder.png +0 -0
  627. data/spec/dummy/public/uploads/peoplefinder/person/image/881/placeholder.png +0 -0
  628. data/spec/dummy/public/uploads/peoplefinder/person/image/887/croppable_placeholder.png +0 -0
  629. data/spec/dummy/public/uploads/peoplefinder/person/image/887/medium_placeholder.png +0 -0
  630. data/spec/dummy/public/uploads/peoplefinder/person/image/887/placeholder.png +0 -0
  631. data/spec/dummy/public/uploads/peoplefinder/person/image/893/croppable_placeholder.png +0 -0
  632. data/spec/dummy/public/uploads/peoplefinder/person/image/893/medium_placeholder.png +0 -0
  633. data/spec/dummy/public/uploads/peoplefinder/person/image/893/placeholder.png +0 -0
  634. data/spec/dummy/public/uploads/peoplefinder/person/image/899/croppable_placeholder.png +0 -0
  635. data/spec/dummy/public/uploads/peoplefinder/person/image/899/medium_placeholder.png +0 -0
  636. data/spec/dummy/public/uploads/peoplefinder/person/image/899/placeholder.png +0 -0
  637. data/spec/dummy/public/uploads/peoplefinder/person/image/947/croppable_placeholder.png +0 -0
  638. data/spec/dummy/public/uploads/peoplefinder/person/image/947/medium_placeholder.png +0 -0
  639. data/spec/dummy/public/uploads/peoplefinder/person/image/947/placeholder.png +0 -0
  640. data/spec/dummy/public/uploads/peoplefinder/person/image/974/croppable_placeholder.png +0 -0
  641. data/spec/dummy/public/uploads/peoplefinder/person/image/974/medium_placeholder.png +0 -0
  642. data/spec/dummy/public/uploads/peoplefinder/person/image/974/placeholder.png +0 -0
  643. data/spec/dummy/public/uploads/peoplefinder/person/image/975/croppable_placeholder.png +0 -0
  644. data/spec/dummy/public/uploads/peoplefinder/person/image/975/medium_placeholder.png +0 -0
  645. data/spec/dummy/public/uploads/peoplefinder/person/image/975/placeholder.png +0 -0
  646. data/spec/dummy/public/uploads/peoplefinder/person/image/976/croppable_placeholder.png +0 -0
  647. data/spec/dummy/public/uploads/peoplefinder/person/image/976/medium_placeholder.png +0 -0
  648. data/spec/dummy/public/uploads/peoplefinder/person/image/976/placeholder.png +0 -0
  649. data/spec/dummy/public/uploads/peoplefinder/person/image/977/croppable_placeholder.png +0 -0
  650. data/spec/dummy/public/uploads/peoplefinder/person/image/977/medium_placeholder.png +0 -0
  651. data/spec/dummy/public/uploads/peoplefinder/person/image/977/placeholder.png +0 -0
  652. data/spec/dummy/public/uploads/peoplefinder/person/image/978/croppable_placeholder.png +0 -0
  653. data/spec/dummy/public/uploads/peoplefinder/person/image/978/medium_placeholder.png +0 -0
  654. data/spec/dummy/public/uploads/peoplefinder/person/image/978/placeholder.png +0 -0
  655. data/spec/dummy/public/uploads/tmp/1413193224-59379-1206/croppable_placeholder.png +0 -0
  656. data/spec/dummy/public/uploads/tmp/1413193224-59379-1206/medium_placeholder.png +0 -0
  657. data/spec/dummy/public/uploads/tmp/1413193224-59379-1206/placeholder.png +0 -0
  658. data/spec/dummy/public/uploads/tmp/1413193224-59379-2237/croppable_placeholder.png +0 -0
  659. data/spec/dummy/public/uploads/tmp/1413193224-59379-2237/medium_placeholder.png +0 -0
  660. data/spec/dummy/public/uploads/tmp/1413193224-59379-2237/placeholder.png +0 -0
  661. data/spec/dummy/public/uploads/tmp/1413194224-60090-8466/croppable_placeholder.png +0 -0
  662. data/spec/dummy/public/uploads/tmp/1413194224-60090-8466/medium_placeholder.png +0 -0
  663. data/spec/dummy/public/uploads/tmp/1413194224-60090-8466/placeholder.png +0 -0
  664. data/spec/dummy/public/uploads/tmp/1413194224-60090-9282/croppable_placeholder.png +0 -0
  665. data/spec/dummy/public/uploads/tmp/1413194224-60090-9282/medium_placeholder.png +0 -0
  666. data/spec/dummy/public/uploads/tmp/1413194224-60090-9282/placeholder.png +0 -0
  667. data/spec/dummy/public/uploads/tmp/1413197274-62400-1326/croppable_placeholder.png +0 -0
  668. data/spec/dummy/public/uploads/tmp/1413197274-62400-1326/medium_placeholder.png +0 -0
  669. data/spec/dummy/public/uploads/tmp/1413197274-62400-1326/placeholder.png +0 -0
  670. data/spec/dummy/public/uploads/tmp/1413197274-62400-8535/croppable_placeholder.png +0 -0
  671. data/spec/dummy/public/uploads/tmp/1413197274-62400-8535/medium_placeholder.png +0 -0
  672. data/spec/dummy/public/uploads/tmp/1413197274-62400-8535/placeholder.png +0 -0
  673. data/spec/dummy/public/uploads/tmp/1413203970-64211-4076/croppable_placeholder.png +0 -0
  674. data/spec/dummy/public/uploads/tmp/1413203970-64211-4076/medium_placeholder.png +0 -0
  675. data/spec/dummy/public/uploads/tmp/1413203970-64211-4076/placeholder.png +0 -0
  676. data/spec/dummy/public/uploads/tmp/1413203970-64211-4188/croppable_placeholder.png +0 -0
  677. data/spec/dummy/public/uploads/tmp/1413203970-64211-4188/medium_placeholder.png +0 -0
  678. data/spec/dummy/public/uploads/tmp/1413203970-64211-4188/placeholder.png +0 -0
  679. data/spec/dummy/public/uploads/tmp/1413206404-64431-3363/croppable_placeholder.png +0 -0
  680. data/spec/dummy/public/uploads/tmp/1413206404-64431-3363/medium_placeholder.png +0 -0
  681. data/spec/dummy/public/uploads/tmp/1413206404-64431-3363/placeholder.png +0 -0
  682. data/spec/dummy/public/uploads/tmp/1413206405-64431-2732/croppable_placeholder.png +0 -0
  683. data/spec/dummy/public/uploads/tmp/1413206405-64431-2732/medium_placeholder.png +0 -0
  684. data/spec/dummy/public/uploads/tmp/1413206405-64431-2732/placeholder.png +0 -0
  685. data/spec/dummy/public/uploads/tmp/1413206654-64587-5492/croppable_placeholder.png +0 -0
  686. data/spec/dummy/public/uploads/tmp/1413206654-64587-5492/medium_placeholder.png +0 -0
  687. data/spec/dummy/public/uploads/tmp/1413206654-64587-5492/placeholder.png +0 -0
  688. data/spec/dummy/public/uploads/tmp/1413206654-64587-9195/croppable_placeholder.png +0 -0
  689. data/spec/dummy/public/uploads/tmp/1413206654-64587-9195/medium_placeholder.png +0 -0
  690. data/spec/dummy/public/uploads/tmp/1413206654-64587-9195/placeholder.png +0 -0
  691. data/spec/dummy/public/uploads/tmp/1413206921-64738-3431/croppable_placeholder.png +0 -0
  692. data/spec/dummy/public/uploads/tmp/1413206921-64738-3431/medium_placeholder.png +0 -0
  693. data/spec/dummy/public/uploads/tmp/1413206921-64738-3431/placeholder.png +0 -0
  694. data/spec/dummy/public/uploads/tmp/1413206921-64738-5311/croppable_placeholder.png +0 -0
  695. data/spec/dummy/public/uploads/tmp/1413206921-64738-5311/medium_placeholder.png +0 -0
  696. data/spec/dummy/public/uploads/tmp/1413206921-64738-5311/placeholder.png +0 -0
  697. data/spec/dummy/public/uploads/tmp/1413209922-67151-6671/croppable_placeholder.png +0 -0
  698. data/spec/dummy/public/uploads/tmp/1413209922-67151-6671/medium_placeholder.png +0 -0
  699. data/spec/dummy/public/uploads/tmp/1413209922-67151-6671/placeholder.png +0 -0
  700. data/spec/dummy/public/uploads/tmp/1413209922-67151-7625/croppable_placeholder.png +0 -0
  701. data/spec/dummy/public/uploads/tmp/1413209922-67151-7625/medium_placeholder.png +0 -0
  702. data/spec/dummy/public/uploads/tmp/1413209922-67151-7625/placeholder.png +0 -0
  703. data/spec/dummy/public/uploads/tmp/1413210053-67310-4728/croppable_placeholder.png +0 -0
  704. data/spec/dummy/public/uploads/tmp/1413210053-67310-4728/medium_placeholder.png +0 -0
  705. data/spec/dummy/public/uploads/tmp/1413210053-67310-4728/placeholder.png +0 -0
  706. data/spec/dummy/public/uploads/tmp/1413210053-67310-9420/croppable_placeholder.png +0 -0
  707. data/spec/dummy/public/uploads/tmp/1413210053-67310-9420/medium_placeholder.png +0 -0
  708. data/spec/dummy/public/uploads/tmp/1413210053-67310-9420/placeholder.png +0 -0
  709. data/spec/dummy/public/uploads/tmp/1413210096-67437-0333/croppable_placeholder.png +0 -0
  710. data/spec/dummy/public/uploads/tmp/1413210096-67437-0333/medium_placeholder.png +0 -0
  711. data/spec/dummy/public/uploads/tmp/1413210096-67437-0333/placeholder.png +0 -0
  712. data/spec/dummy/public/uploads/tmp/1413210096-67437-1492/croppable_placeholder.png +0 -0
  713. data/spec/dummy/public/uploads/tmp/1413210096-67437-1492/medium_placeholder.png +0 -0
  714. data/spec/dummy/public/uploads/tmp/1413210096-67437-1492/placeholder.png +0 -0
  715. data/spec/dummy/tmp/cache/assets/test/sass/08b4118a25e6975f8fc9339cced5c9befa62cbd2/_fonts.scssc +0 -0
  716. data/spec/dummy/tmp/cache/assets/test/sass/08b4118a25e6975f8fc9339cced5c9befa62cbd2/_header.scssc +0 -0
  717. data/spec/dummy/tmp/cache/assets/test/sass/08b4118a25e6975f8fc9339cced5c9befa62cbd2/_typography.scssc +0 -0
  718. data/spec/dummy/tmp/cache/assets/test/sass/1a04bf0ccfd9568a42a325467c2edfa00a764e33/application.scssc +0 -0
  719. data/spec/dummy/tmp/cache/assets/test/sass/1a04bf0ccfd9568a42a325467c2edfa00a764e33/groups.css.scssc +0 -0
  720. data/spec/dummy/tmp/cache/assets/test/sass/1a04bf0ccfd9568a42a325467c2edfa00a764e33/home.css.scssc +0 -0
  721. data/spec/dummy/tmp/cache/assets/test/sass/1a04bf0ccfd9568a42a325467c2edfa00a764e33/org_browser.scssc +0 -0
  722. data/spec/dummy/tmp/cache/assets/test/sass/1a04bf0ccfd9568a42a325467c2edfa00a764e33/people.css.scssc +0 -0
  723. data/spec/dummy/tmp/cache/assets/test/sass/1a04bf0ccfd9568a42a325467c2edfa00a764e33/retinal_images.css.scssc +0 -0
  724. data/spec/dummy/tmp/cache/assets/test/sass/1a04bf0ccfd9568a42a325467c2edfa00a764e33/search_box.css.scssc +0 -0
  725. data/spec/dummy/tmp/cache/assets/test/sass/3aac9ef867cb362250c843e498f25987be2018b4/moj-internal-ie6.scssc +0 -0
  726. data/spec/dummy/tmp/cache/assets/test/sass/3aac9ef867cb362250c843e498f25987be2018b4/moj-internal-ie7.scssc +0 -0
  727. data/spec/dummy/tmp/cache/assets/test/sass/3aac9ef867cb362250c843e498f25987be2018b4/moj-internal-ie8.scssc +0 -0
  728. data/spec/dummy/tmp/cache/assets/test/sass/3aac9ef867cb362250c843e498f25987be2018b4/moj-internal.scssc +0 -0
  729. data/spec/dummy/tmp/cache/assets/test/sass/573fd3a56299fe1a7cd72e27d78617c19d2cfae8/application.scssc +0 -0
  730. data/spec/dummy/tmp/cache/assets/test/sass/573fd3a56299fe1a7cd72e27d78617c19d2cfae8/groups.css.scssc +0 -0
  731. data/spec/dummy/tmp/cache/assets/test/sass/573fd3a56299fe1a7cd72e27d78617c19d2cfae8/home.css.scssc +0 -0
  732. data/spec/dummy/tmp/cache/assets/test/sass/573fd3a56299fe1a7cd72e27d78617c19d2cfae8/org_browser.scssc +0 -0
  733. data/spec/dummy/tmp/cache/assets/test/sass/573fd3a56299fe1a7cd72e27d78617c19d2cfae8/people.css.scssc +0 -0
  734. data/spec/dummy/tmp/cache/assets/test/sass/573fd3a56299fe1a7cd72e27d78617c19d2cfae8/retinal_images.css.scssc +0 -0
  735. data/spec/dummy/tmp/cache/assets/test/sass/573fd3a56299fe1a7cd72e27d78617c19d2cfae8/search_box.css.scssc +0 -0
  736. data/spec/dummy/tmp/cache/assets/test/sass/64f71e5fc00a3721697abab5633e00949c98368c/_colours.scssc +0 -0
  737. data/spec/dummy/tmp/cache/assets/test/sass/64f71e5fc00a3721697abab5633e00949c98368c/_conditionals.scssc +0 -0
  738. data/spec/dummy/tmp/cache/assets/test/sass/64f71e5fc00a3721697abab5633e00949c98368c/_css3.scssc +0 -0
  739. data/spec/dummy/tmp/cache/assets/test/sass/64f71e5fc00a3721697abab5633e00949c98368c/_device-pixels.scssc +0 -0
  740. data/spec/dummy/tmp/cache/assets/test/sass/64f71e5fc00a3721697abab5633e00949c98368c/_font_stack.scssc +0 -0
  741. data/spec/dummy/tmp/cache/assets/test/sass/64f71e5fc00a3721697abab5633e00949c98368c/_grid_layout.scssc +0 -0
  742. data/spec/dummy/tmp/cache/assets/test/sass/64f71e5fc00a3721697abab5633e00949c98368c/_measurements.scssc +0 -0
  743. data/spec/dummy/tmp/cache/assets/test/sass/64f71e5fc00a3721697abab5633e00949c98368c/_shims.scssc +0 -0
  744. data/spec/dummy/tmp/cache/assets/test/sass/64f71e5fc00a3721697abab5633e00949c98368c/_typography.scssc +0 -0
  745. data/spec/dummy/tmp/cache/assets/test/sass/64f71e5fc00a3721697abab5633e00949c98368c/_url-helpers.scssc +0 -0
  746. data/spec/dummy/tmp/cache/assets/test/sass/7893a0e536023ebf230e8dd339ccbdc4d676c7f8/govuk-template.css.erbc +0 -0
  747. data/spec/dummy/tmp/cache/assets/test/sass/91736ae26e9b34fca93d54378b156562506060ff/_form-chunky-labels.scssc +0 -0
  748. data/spec/dummy/tmp/cache/assets/test/sass/91736ae26e9b34fca93d54378b156562506060ff/_form-date-of-birth.scssc +0 -0
  749. data/spec/dummy/tmp/cache/assets/test/sass/91736ae26e9b34fca93d54378b156562506060ff/_form-validation.scssc +0 -0
  750. data/spec/dummy/tmp/cache/assets/test/sass/9228d55cc5b94ecc40c0fa0e38f89c57d1b283db/_form-chunky-labels.scssc +0 -0
  751. data/spec/dummy/tmp/cache/assets/test/sass/9228d55cc5b94ecc40c0fa0e38f89c57d1b283db/_form-date-of-birth.scssc +0 -0
  752. data/spec/dummy/tmp/cache/assets/test/sass/9228d55cc5b94ecc40c0fa0e38f89c57d1b283db/_form-validation.scssc +0 -0
  753. data/spec/dummy/tmp/cache/assets/test/sass/e53078d80f06c87161cb4e26c2c47df8a17b5f71/_buttons.scssc +0 -0
  754. data/spec/dummy/tmp/cache/assets/test/sass/e53078d80f06c87161cb4e26c2c47df8a17b5f71/_colours.scssc +0 -0
  755. data/spec/dummy/tmp/cache/assets/test/sass/e53078d80f06c87161cb4e26c2c47df8a17b5f71/_forms.scssc +0 -0
  756. data/spec/dummy/tmp/cache/assets/test/sass/e53078d80f06c87161cb4e26c2c47df8a17b5f71/_helpers.scssc +0 -0
  757. data/spec/dummy/tmp/cache/assets/test/sass/e53078d80f06c87161cb4e26c2c47df8a17b5f71/_icons.scssc +0 -0
  758. data/spec/dummy/tmp/cache/assets/test/sass/e53078d80f06c87161cb4e26c2c47df8a17b5f71/_layout.scssc +0 -0
  759. data/spec/dummy/tmp/cache/assets/test/sass/e53078d80f06c87161cb4e26c2c47df8a17b5f71/_lists.scssc +0 -0
  760. data/spec/dummy/tmp/cache/assets/test/sass/e53078d80f06c87161cb4e26c2c47df8a17b5f71/_panels.scssc +0 -0
  761. data/spec/dummy/tmp/cache/assets/test/sass/e53078d80f06c87161cb4e26c2c47df8a17b5f71/_reset.scssc +0 -0
  762. data/spec/dummy/tmp/cache/assets/test/sass/e53078d80f06c87161cb4e26c2c47df8a17b5f71/_shame.scssc +0 -0
  763. data/spec/dummy/tmp/cache/assets/test/sass/e53078d80f06c87161cb4e26c2c47df8a17b5f71/_tables.scssc +0 -0
  764. data/spec/dummy/tmp/cache/assets/test/sass/ebd5a84b3b0fdaa860385ac276a86b0910509e3e/_alpha-beta.scssc +0 -0
  765. data/spec/dummy/tmp/cache/assets/test/sass/ebd5a84b3b0fdaa860385ac276a86b0910509e3e/_buttons.scssc +0 -0
  766. data/spec/dummy/tmp/cache/assets/test/sass/f2ef44020035e15a1391b9df3bdac46c10f2f10a/moj-internal-ie6.scssc +0 -0
  767. data/spec/dummy/tmp/cache/assets/test/sass/f2ef44020035e15a1391b9df3bdac46c10f2f10a/moj-internal-ie7.scssc +0 -0
  768. data/spec/dummy/tmp/cache/assets/test/sass/f2ef44020035e15a1391b9df3bdac46c10f2f10a/moj-internal-ie8.scssc +0 -0
  769. data/spec/dummy/tmp/cache/assets/test/sass/f2ef44020035e15a1391b9df3bdac46c10f2f10a/moj-internal.scssc +0 -0
  770. data/spec/dummy/tmp/cache/assets/test/sass/f449073c6ac2fbc4e5aeed6ce42681366235449c/_fonts.scssc +0 -0
  771. data/spec/dummy/tmp/cache/assets/test/sass/f449073c6ac2fbc4e5aeed6ce42681366235449c/_header.scssc +0 -0
  772. data/spec/dummy/tmp/cache/assets/test/sass/f449073c6ac2fbc4e5aeed6ce42681366235449c/_typography.scssc +0 -0
  773. data/spec/dummy/tmp/cache/assets/test/sass/fd246bce079c53dd04cad8f8da6e1a17facda19f/_buttons.scssc +0 -0
  774. data/spec/dummy/tmp/cache/assets/test/sass/fd246bce079c53dd04cad8f8da6e1a17facda19f/_colours.scssc +0 -0
  775. data/spec/dummy/tmp/cache/assets/test/sass/fd246bce079c53dd04cad8f8da6e1a17facda19f/_forms.scssc +0 -0
  776. data/spec/dummy/tmp/cache/assets/test/sass/fd246bce079c53dd04cad8f8da6e1a17facda19f/_helpers.scssc +0 -0
  777. data/spec/dummy/tmp/cache/assets/test/sass/fd246bce079c53dd04cad8f8da6e1a17facda19f/_icons.scssc +0 -0
  778. data/spec/dummy/tmp/cache/assets/test/sass/fd246bce079c53dd04cad8f8da6e1a17facda19f/_layout.scssc +0 -0
  779. data/spec/dummy/tmp/cache/assets/test/sass/fd246bce079c53dd04cad8f8da6e1a17facda19f/_lists.scssc +0 -0
  780. data/spec/dummy/tmp/cache/assets/test/sass/fd246bce079c53dd04cad8f8da6e1a17facda19f/_panels.scssc +0 -0
  781. data/spec/dummy/tmp/cache/assets/test/sass/fd246bce079c53dd04cad8f8da6e1a17facda19f/_reset.scssc +0 -0
  782. data/spec/dummy/tmp/cache/assets/test/sass/fd246bce079c53dd04cad8f8da6e1a17facda19f/_shame.scssc +0 -0
  783. data/spec/dummy/tmp/cache/assets/test/sass/fd246bce079c53dd04cad8f8da6e1a17facda19f/_tables.scssc +0 -0
  784. data/spec/dummy/tmp/cache/assets/test/sprockets/00d7e39ffde4c85f30fc9293578ebf3e +0 -0
  785. data/spec/dummy/tmp/cache/assets/test/sprockets/018745c7c5b00d3e4e5f24380792c0b6 +0 -0
  786. data/spec/dummy/tmp/cache/assets/test/sprockets/0201100c5b2be28793c903396f26194c +0 -0
  787. data/spec/dummy/tmp/cache/assets/test/sprockets/0695929b4b263645ff54e679d4a09f65 +0 -0
  788. data/spec/dummy/tmp/cache/assets/test/sprockets/0726603694ea77ba64086ada9c4e9401 +0 -0
  789. data/spec/dummy/tmp/cache/assets/test/sprockets/088b7b6647d27eb119ebf7edaaec96ba +0 -0
  790. data/spec/dummy/tmp/cache/assets/test/sprockets/08ed9700c497230e7f99a63a3e25ff83 +0 -0
  791. data/spec/dummy/tmp/cache/assets/test/sprockets/0ab4a289b6792eef65504e2b4b4dbd85 +0 -0
  792. data/spec/dummy/tmp/cache/assets/test/sprockets/11c00cf84de2fa3556f9d1e4f4d2a395 +0 -0
  793. data/spec/dummy/tmp/cache/assets/test/sprockets/149554f46873efcc2280a1e838f42e04 +0 -0
  794. data/spec/dummy/tmp/cache/assets/test/sprockets/159a7cc83930f7e4be44df3c3fb3a6e8 +0 -0
  795. data/spec/dummy/tmp/cache/assets/test/sprockets/16a3e70b07b5576e09476970edcf76b1 +0 -0
  796. data/spec/dummy/tmp/cache/assets/test/sprockets/1d2924bba7e2b69886f8435f614bcb5f +0 -0
  797. data/spec/dummy/tmp/cache/assets/test/sprockets/20161b4b3f1b59348daf66e780c64936 +0 -0
  798. data/spec/dummy/tmp/cache/assets/test/sprockets/218083466d375d70ca3411fc412180e0 +0 -0
  799. data/spec/dummy/tmp/cache/assets/test/sprockets/21b71c72cc85c211f2efff408ba1f107 +0 -0
  800. data/spec/dummy/tmp/cache/assets/test/sprockets/233f443859d8277e22c4c1685e2fc9e5 +0 -0
  801. data/spec/dummy/tmp/cache/assets/test/sprockets/236356c44ca2c3f84f126f0ec07b6f8e +0 -0
  802. data/spec/dummy/tmp/cache/assets/test/sprockets/276a87f3e560e622c1cb5d28586c6147 +0 -0
  803. data/spec/dummy/tmp/cache/assets/test/sprockets/2d985bcc133caf9d414cfbac4a4d1481 +0 -0
  804. data/spec/dummy/tmp/cache/assets/test/sprockets/2dc3b8d50280d2e3e40f9d2d14e86f98 +0 -0
  805. data/spec/dummy/tmp/cache/assets/test/sprockets/2eff5197f1af940ea1463046f7827d6c +0 -0
  806. data/spec/dummy/tmp/cache/assets/test/sprockets/3038e4418179803f0cbd31b88a1c3e5e +0 -0
  807. data/spec/dummy/tmp/cache/assets/test/sprockets/32140510484878a779629339084f5efa +0 -0
  808. data/spec/dummy/tmp/cache/assets/test/sprockets/32956a54936dbd91eae94577bf188bc6 +0 -0
  809. data/spec/dummy/tmp/cache/assets/test/sprockets/32af796bc4243428b00d0b0dd06a86b7 +0 -0
  810. data/spec/dummy/tmp/cache/assets/test/sprockets/35aad21061e0ac8319955b2884cf9b56 +0 -0
  811. data/spec/dummy/tmp/cache/assets/test/sprockets/37153627c22e2ba6e0e3ec246b3f6f3f +0 -0
  812. data/spec/dummy/tmp/cache/assets/test/sprockets/39b04e5aa2921689880f876c18809a0f +0 -0
  813. data/spec/dummy/tmp/cache/assets/test/sprockets/3a2144b4cbd236ed3eb974efe0d69c44 +0 -0
  814. data/spec/dummy/tmp/cache/assets/test/sprockets/3da3597c5b28eea069abac761762d110 +0 -0
  815. data/spec/dummy/tmp/cache/assets/test/sprockets/3fd9a2212fedb465f38b54136db969db +0 -0
  816. data/spec/dummy/tmp/cache/assets/test/sprockets/415ddf448463b284a957a6e4ab5b512c +0 -0
  817. data/spec/dummy/tmp/cache/assets/test/sprockets/424ed3ec568392c7e189d347a1c35a04 +0 -0
  818. data/spec/dummy/tmp/cache/assets/test/sprockets/4311c213d2994b4492afad26f3d8a922 +0 -0
  819. data/spec/dummy/tmp/cache/assets/test/sprockets/44a45bbdccc9065d6a055dfecc3f1086 +0 -0
  820. data/spec/dummy/tmp/cache/assets/test/sprockets/46b977eb6e25e14a48e5eff34e96274f +0 -0
  821. data/spec/dummy/tmp/cache/assets/test/sprockets/473013edfecc09b7810e813c3aa6d943 +0 -0
  822. data/spec/dummy/tmp/cache/assets/test/sprockets/487eb02b567f24f50156d2c54c3f388d +0 -0
  823. data/spec/dummy/tmp/cache/assets/test/sprockets/4a22e1b7cd2cdb05b33aba9f74d48cd8 +0 -0
  824. data/spec/dummy/tmp/cache/assets/test/sprockets/4be6eaa0578ea7b644821d44dc4b0906 +0 -0
  825. data/spec/dummy/tmp/cache/assets/test/sprockets/4bf161a0efecd0f14091619a0197b9c4 +0 -0
  826. data/spec/dummy/tmp/cache/assets/test/sprockets/51e14fdda36dd4251af7e4ede803a24e +0 -0
  827. data/spec/dummy/tmp/cache/assets/test/sprockets/547cd92fdbdc7af2927de329e878a887 +0 -0
  828. data/spec/dummy/tmp/cache/assets/test/sprockets/555050c5d873443f775911ec453d5323 +0 -0
  829. data/spec/dummy/tmp/cache/assets/test/sprockets/55aab9d282fe58d613b2f27be7ee3d89 +0 -0
  830. data/spec/dummy/tmp/cache/assets/test/sprockets/567153b218176c95ccb33f2599db1700 +0 -0
  831. data/spec/dummy/tmp/cache/assets/test/sprockets/5afdd9a43d645e6f5187cd42198068a5 +0 -0
  832. data/spec/dummy/tmp/cache/assets/test/sprockets/5d56aa9b6575efa1dc5372e4f34677ee +0 -0
  833. data/spec/dummy/tmp/cache/assets/test/sprockets/614bd04411e8598dfe059b671d5d76ab +0 -0
  834. data/spec/dummy/tmp/cache/assets/test/sprockets/61e0bdef78a444a0ca3bbdd4196d623e +0 -0
  835. data/spec/dummy/tmp/cache/assets/test/sprockets/628cc9fd8949ce4ec5fdbb29098d3999 +0 -0
  836. data/spec/dummy/tmp/cache/assets/test/sprockets/65e453fef17f982a87b7ca90830b231b +0 -0
  837. data/spec/dummy/tmp/cache/assets/test/sprockets/67d274ccd80a3a02306e324a41fad6b2 +0 -0
  838. data/spec/dummy/tmp/cache/assets/test/sprockets/686cc225463313b106b3b529ebcc7d8f +0 -0
  839. data/spec/dummy/tmp/cache/assets/test/sprockets/6918740b48c7340bf9a7cbeed5a92bf6 +0 -0
  840. data/spec/dummy/tmp/cache/assets/test/sprockets/6ae4daecfbe972e68d4d4d900e0bae2e +0 -0
  841. data/spec/dummy/tmp/cache/assets/test/sprockets/6bc3fd931f11afb51fce9182f07febe6 +0 -0
  842. data/spec/dummy/tmp/cache/assets/test/sprockets/7012144b92081cfd9895d90624a98a3b +0 -0
  843. data/spec/dummy/tmp/cache/assets/test/sprockets/71d80a4f52e62af70b1fbedd48eac07c +0 -0
  844. data/spec/dummy/tmp/cache/assets/test/sprockets/750bc2bc52390dbbb9ad8d0b7764b67e +0 -0
  845. data/spec/dummy/tmp/cache/assets/test/sprockets/75156dc7683a86da6296efaa87a81725 +0 -0
  846. data/spec/dummy/tmp/cache/assets/test/sprockets/76947b1e2e61246f44f019dd12ae07f4 +0 -0
  847. data/spec/dummy/tmp/cache/assets/test/sprockets/779d6021677114642d3865bc5dc505ac +0 -0
  848. data/spec/dummy/tmp/cache/assets/test/sprockets/78ed6b1222170ea75f3e479c405dcdd2 +0 -0
  849. data/spec/dummy/tmp/cache/assets/test/sprockets/7b0d7f08018e8d5699748f5bcb1dbd8f +0 -0
  850. data/spec/dummy/tmp/cache/assets/test/sprockets/7bd907a96b0cfe128dac367bed07c7f1 +0 -0
  851. data/spec/dummy/tmp/cache/assets/test/sprockets/7ec24a38c7b5a5b984cae10340102f98 +0 -0
  852. data/spec/dummy/tmp/cache/assets/test/sprockets/7ec354a976af0cf6cc23bb495bf24e00 +0 -0
  853. data/spec/dummy/tmp/cache/assets/test/sprockets/8073186e0d3457d2167be20947258e25 +0 -0
  854. data/spec/dummy/tmp/cache/assets/test/sprockets/8429ffa8f5ddca8bfe355c9636e92fcb +0 -0
  855. data/spec/dummy/tmp/cache/assets/test/sprockets/846ccfea78778290be8af0d3c364ea27 +0 -0
  856. data/spec/dummy/tmp/cache/assets/test/sprockets/86094080bfebffe9a08292f6984618bf +0 -0
  857. data/spec/dummy/tmp/cache/assets/test/sprockets/87265c75be54e62e95ed1ef9e83a9bab +0 -0
  858. data/spec/dummy/tmp/cache/assets/test/sprockets/87e45e8066c5d51f85c12c7842177c36 +0 -0
  859. data/spec/dummy/tmp/cache/assets/test/sprockets/88600a149824e71a3822f72bef16f5eb +0 -0
  860. data/spec/dummy/tmp/cache/assets/test/sprockets/8ac8033e4cf908aa13b87d439bf79777 +0 -0
  861. data/spec/dummy/tmp/cache/assets/test/sprockets/9169fa50d693672a124ed4fa0727591f +0 -0
  862. data/spec/dummy/tmp/cache/assets/test/sprockets/92c74fa0bfb83a7c1c0c8d776ceefc7a +0 -0
  863. data/spec/dummy/tmp/cache/assets/test/sprockets/9413085b56f73ebb643ba7665cec2363 +0 -0
  864. data/spec/dummy/tmp/cache/assets/test/sprockets/9629c6e01d5915fabee176c4e7e6b3f7 +0 -0
  865. data/spec/dummy/tmp/cache/assets/test/sprockets/966ded038e10005a1b708cb4bfc3a1b6 +0 -0
  866. data/spec/dummy/tmp/cache/assets/test/sprockets/96b49089d04939e0662d377aff5cf75b +0 -0
  867. data/spec/dummy/tmp/cache/assets/test/sprockets/96bccfeee92240f3464d7c4628bb2453 +0 -0
  868. data/spec/dummy/tmp/cache/assets/test/sprockets/9a12eb29cb69414de5d4534c97c4d7e4 +0 -0
  869. data/spec/dummy/tmp/cache/assets/test/sprockets/9ee157aaa2c2f06f7f2790caf4b5b116 +0 -0
  870. data/spec/dummy/tmp/cache/assets/test/sprockets/9f47b08ab9d9a44c2ac31e23ba087b12 +0 -0
  871. data/spec/dummy/tmp/cache/assets/test/sprockets/9f88e7721781d6d7f10850b1ffe64d93 +0 -0
  872. data/spec/dummy/tmp/cache/assets/test/sprockets/a50ba530db1c4e421336c353b6cf3e4c +0 -0
  873. data/spec/dummy/tmp/cache/assets/test/sprockets/a71c89d1f8969099ece3e97f570fd6b5 +0 -0
  874. data/spec/dummy/tmp/cache/assets/test/sprockets/a9abb527b4316046dad5dd76adfc52cf +0 -0
  875. data/spec/dummy/tmp/cache/assets/test/sprockets/aada4e1ea7e436947cf8721cbc221e7e +0 -0
  876. data/spec/dummy/tmp/cache/assets/test/sprockets/ab081a1203b966dffb7469060cb55592 +0 -0
  877. data/spec/dummy/tmp/cache/assets/test/sprockets/af3badba5fc2991974d9b7a0e8016396 +0 -0
  878. data/spec/dummy/tmp/cache/assets/test/sprockets/b0fbb8ccd136de5ee5fac94871bde9cf +0 -0
  879. data/spec/dummy/tmp/cache/assets/test/sprockets/b2ac09742b270b2245ba27591aff8710 +0 -0
  880. data/spec/dummy/tmp/cache/assets/test/sprockets/b2c385d54050f8119ce6049a4e6e1dd4 +0 -0
  881. data/spec/dummy/tmp/cache/assets/test/sprockets/b30759218af069022b33f4b15b13a2fe +0 -0
  882. data/spec/dummy/tmp/cache/assets/test/sprockets/b34f531f020d8c5d6820ebbe7f5aec3c +0 -0
  883. data/spec/dummy/tmp/cache/assets/test/sprockets/b644fb3f1d934594edb7c2271be70d14 +0 -0
  884. data/spec/dummy/tmp/cache/assets/test/sprockets/b9604d88f02cef77e4cb5a84686db644 +0 -0
  885. data/spec/dummy/tmp/cache/assets/test/sprockets/ba5500bab1f1943adc52289b6e934606 +0 -0
  886. data/spec/dummy/tmp/cache/assets/test/sprockets/ba59a9476970611160884d9728dd238b +0 -0
  887. data/spec/dummy/tmp/cache/assets/test/sprockets/bbf932c9d723718c5d06e359ce569598 +0 -0
  888. data/spec/dummy/tmp/cache/assets/test/sprockets/bc5c05efbe4b359f613f56ea6aa6d2dc +0 -0
  889. data/spec/dummy/tmp/cache/assets/test/sprockets/bc9407b9bd505544c49fd21fd859dbc1 +0 -0
  890. data/spec/dummy/tmp/cache/assets/test/sprockets/bd9c12ce42e134e64678673835411215 +0 -0
  891. data/spec/dummy/tmp/cache/assets/test/sprockets/bf3c11a85c260471786c4662a5d76451 +0 -0
  892. data/spec/dummy/tmp/cache/assets/test/sprockets/c1191d8df4a01c98401800dba137f363 +0 -0
  893. data/spec/dummy/tmp/cache/assets/test/sprockets/c2216e1eca68a225b5952a0e82642fa2 +0 -0
  894. data/spec/dummy/tmp/cache/assets/test/sprockets/c54181ae85e0fd80eddf3fa2c06379a1 +0 -0
  895. data/spec/dummy/tmp/cache/assets/test/sprockets/c67450bc47d9924215a66bb1d411a442 +0 -0
  896. data/spec/dummy/tmp/cache/assets/test/sprockets/c709463f728a33722ee26328524fdc7a +0 -0
  897. data/spec/dummy/tmp/cache/assets/test/sprockets/ca900f7c39b531b5f4989d68d536902a +0 -0
  898. data/spec/dummy/tmp/cache/assets/test/sprockets/cbd1c235e8669c2b9c4afeb46b9de9f0 +0 -0
  899. data/spec/dummy/tmp/cache/assets/test/sprockets/cc20e49b6d91aa97f34ceea7182e90a1 +0 -0
  900. data/spec/dummy/tmp/cache/assets/test/sprockets/cd12108297b82e506fc5a47fbd22f5c1 +0 -0
  901. data/spec/dummy/tmp/cache/assets/test/sprockets/ce24e04a11c3fe71fbb55c559e125e33 +0 -0
  902. data/spec/dummy/tmp/cache/assets/test/sprockets/cebf02de4411effbc21665b00e9c5c47 +0 -0
  903. data/spec/dummy/tmp/cache/assets/test/sprockets/cf9004a25cd78ab08e2db97366915574 +0 -0
  904. data/spec/dummy/tmp/cache/assets/test/sprockets/d546d9adc5b09cb220687228b2462ba2 +0 -0
  905. data/spec/dummy/tmp/cache/assets/test/sprockets/d6d3e32c1b849a0f626cf784d3e98db2 +0 -0
  906. data/spec/dummy/tmp/cache/assets/test/sprockets/d6db5e4f6ba66daaccc028d0e17a1d81 +0 -0
  907. data/spec/dummy/tmp/cache/assets/test/sprockets/d734711596a5f99bd7dcdc909d875484 +0 -0
  908. data/spec/dummy/tmp/cache/assets/test/sprockets/d7c54150387172d3770ed962df6d90c4 +0 -0
  909. data/spec/dummy/tmp/cache/assets/test/sprockets/d909a2f81d6679270e2f03bf0127bd42 +0 -0
  910. data/spec/dummy/tmp/cache/assets/test/sprockets/da89c65e2337bfd54e22665361135b80 +0 -0
  911. data/spec/dummy/tmp/cache/assets/test/sprockets/dab77afea33859601aceb919e3993d65 +0 -0
  912. data/spec/dummy/tmp/cache/assets/test/sprockets/dc990ab5fc72ad7505501e2ad732a4ca +0 -0
  913. data/spec/dummy/tmp/cache/assets/test/sprockets/e47a2254d8cd70d26b4df63bca9458cf +0 -0
  914. data/spec/dummy/tmp/cache/assets/test/sprockets/e9d09e544e82ac3fb94b39b10202807e +0 -0
  915. data/spec/dummy/tmp/cache/assets/test/sprockets/ea9be8e68964381d1e863972e383726e +0 -0
  916. data/spec/dummy/tmp/cache/assets/test/sprockets/eb3112f8ef183607c504cd1edf1c1213 +0 -0
  917. data/spec/dummy/tmp/cache/assets/test/sprockets/ed65a02b89d49d6b1d33fea72e1097d6 +0 -0
  918. data/spec/dummy/tmp/cache/assets/test/sprockets/eedc311e1bd812fd7c4066087a286301 +0 -0
  919. data/spec/dummy/tmp/cache/assets/test/sprockets/ef73b0d4ea9329020b34858695ce3900 +0 -0
  920. data/spec/dummy/tmp/cache/assets/test/sprockets/f05a23a4cfb850852ac9c6a1a8366a0c +0 -0
  921. data/spec/dummy/tmp/cache/assets/test/sprockets/f1243ac39913862f632fd9f12a51369f +0 -0
  922. data/spec/dummy/tmp/cache/assets/test/sprockets/f73231b021f1ce12aca762c00921ca23 +0 -0
  923. data/spec/dummy/tmp/cache/assets/test/sprockets/f8159e64ac98a671b65ffa2d63f57d7c +0 -0
  924. data/spec/dummy/tmp/cache/assets/test/sprockets/f818d36dc3cadf632527ae9387a4c8ca +0 -0
  925. data/spec/dummy/tmp/cache/assets/test/sprockets/fa400befce2f9154111bccf924e66248 +0 -0
  926. data/spec/dummy/tmp/cache/assets/test/sprockets/fa98d7d0880128444e5fe402794ee5b7 +0 -0
  927. data/spec/dummy/tmp/cache/assets/test/sprockets/fb65772220e27426e2aa0940fae74626 +0 -0
  928. data/spec/dummy/tmp/cache/assets/test/sprockets/fb96c50daa657b0ecb946304fe995be7 +0 -0
  929. data/spec/dummy/tmp/cache/assets/test/sprockets/ff6137f4bf4e05260b5bcd4b06221227 +0 -0
  930. data/spec/factories.rb +35 -0
  931. data/spec/features/audit_trail_spec.rb +161 -0
  932. data/spec/features/group_browsing_spec.rb +131 -0
  933. data/spec/features/group_maintenance_spec.rb +187 -0
  934. data/spec/features/home_spec.rb +17 -0
  935. data/spec/features/omni_auth_authentication_spec.rb +69 -0
  936. data/spec/features/person_browsing_spec.rb +53 -0
  937. data/spec/features/person_edit_notifications_spec.rb +193 -0
  938. data/spec/features/person_maintenance_spec.rb +251 -0
  939. data/spec/features/person_membership_spec.rb +91 -0
  940. data/spec/features/regression_spec.rb +13 -0
  941. data/spec/features/search_spec.rb +28 -0
  942. data/spec/features/token_authentication_spec.rb +65 -0
  943. data/spec/fixtures/placeholder.png +0 -0
  944. data/spec/helpers/peoplefinder/application_helper_spec.rb +46 -0
  945. data/spec/helpers/peoplefinder/people_helper_spec.rb +23 -0
  946. data/spec/javascripts/fixtures/data.html.haml +1 -0
  947. data/spec/javascripts/fixtures/ga.html.haml +11 -0
  948. data/spec/javascripts/org_tree_spec.js +59 -0
  949. data/spec/javascripts/spec_helper.js +42 -0
  950. data/spec/mailers/peoplefinder/reminder_mailer_spec.rb +66 -0
  951. data/spec/models/peoplefinder/concerns/authentication_spec.rb +63 -0
  952. data/spec/models/peoplefinder/concerns/completion_spec.rb +85 -0
  953. data/spec/models/peoplefinder/concerns/searchable_spec.rb +53 -0
  954. data/spec/models/peoplefinder/concerns/work_days_spec.rb +28 -0
  955. data/spec/models/peoplefinder/email_address_spec.rb +78 -0
  956. data/spec/models/peoplefinder/group_hierarchy_spec.rb +75 -0
  957. data/spec/models/peoplefinder/group_spec.rb +197 -0
  958. data/spec/models/peoplefinder/information_request_spec.rb +8 -0
  959. data/spec/models/peoplefinder/membership_spec.rb +12 -0
  960. data/spec/models/peoplefinder/person_spec.rb +153 -0
  961. data/spec/models/peoplefinder/reported_profile_spec.rb +11 -0
  962. data/spec/models/peoplefinder/tokens_spec.rb +40 -0
  963. data/spec/rails_helper.rb +62 -0
  964. data/spec/spec_helper.rb +102 -0
  965. data/spec/support/carrierwave.rb +13 -0
  966. data/spec/support/email.rb +19 -0
  967. data/spec/support/login.rb +38 -0
  968. data/spec/support/org_browser.rb +7 -0
  969. data/spec/support/profile.rb +60 -0
  970. data/spec/support/search.rb +15 -0
  971. data/spec/teaspoon_env.rb +155 -0
  972. data/spec/uploaders/peoplefinder/image_uploader_spec.rb +27 -0
  973. data/vendor/assets/components/Jcrop/MIT-LICENSE.txt +22 -0
  974. data/vendor/assets/components/Jcrop/README.md +66 -0
  975. data/vendor/assets/components/Jcrop/css/Jcrop.gif +0 -0
  976. data/vendor/assets/components/Jcrop/css/jquery.Jcrop.css +165 -0
  977. data/vendor/assets/components/Jcrop/css/jquery.Jcrop.min.css +29 -0
  978. data/vendor/assets/components/Jcrop/demos/crop.php +123 -0
  979. data/vendor/assets/components/Jcrop/demos/demo_files/demos.css +149 -0
  980. data/vendor/assets/components/Jcrop/demos/demo_files/main.css +4996 -0
  981. data/vendor/assets/components/Jcrop/demos/demo_files/pool.jpg +0 -0
  982. data/vendor/assets/components/Jcrop/demos/demo_files/sago.jpg +0 -0
  983. data/vendor/assets/components/Jcrop/demos/demo_files/sagomod.jpg +0 -0
  984. data/vendor/assets/components/Jcrop/demos/demo_files/sagomod.png +0 -0
  985. data/vendor/assets/components/Jcrop/demos/non-image.html +86 -0
  986. data/vendor/assets/components/Jcrop/demos/styling.html +118 -0
  987. data/vendor/assets/components/Jcrop/demos/tutorial1.html +65 -0
  988. data/vendor/assets/components/Jcrop/demos/tutorial2.html +123 -0
  989. data/vendor/assets/components/Jcrop/demos/tutorial3.html +151 -0
  990. data/vendor/assets/components/Jcrop/demos/tutorial4.html +227 -0
  991. data/vendor/assets/components/Jcrop/demos/tutorial5.html +268 -0
  992. data/vendor/assets/components/Jcrop/index.html +84 -0
  993. data/vendor/assets/components/Jcrop/js/jquery.Jcrop.js +1694 -0
  994. data/vendor/assets/components/Jcrop/js/jquery.Jcrop.min.js +22 -0
  995. data/vendor/assets/components/Jcrop/js/jquery.color.js +661 -0
  996. data/vendor/assets/components/Jcrop/js/jquery.min.js +4 -0
  997. data/vendor/assets/components/angular-animate/README.md +54 -0
  998. data/vendor/assets/components/angular-animate/angular-animate.js +1689 -0
  999. data/vendor/assets/components/angular-animate/angular-animate.min.js +28 -0
  1000. data/vendor/assets/components/angular-animate/angular-animate.min.js.map +8 -0
  1001. data/vendor/assets/components/angular-animate/bower.json +8 -0
  1002. data/vendor/assets/components/angular/README.md +48 -0
  1003. data/vendor/assets/components/angular/angular-csp.css +24 -0
  1004. data/vendor/assets/components/angular/angular.js +21883 -0
  1005. data/vendor/assets/components/angular/angular.min.js +214 -0
  1006. data/vendor/assets/components/angular/angular.min.js.gzip +0 -0
  1007. data/vendor/assets/components/angular/angular.min.js.map +8 -0
  1008. data/vendor/assets/components/angular/bower.json +7 -0
  1009. metadata +2489 -0
@@ -0,0 +1,84 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <title>Jcrop: the jQuery Image Cropping Plugin</title>
5
+ <link rel="stylesheet" href="demos/demo_files/main.css" type="text/css" />
6
+ <link rel="stylesheet" href="demos/demo_files/demos.css" type="text/css" />
7
+ <script src="js/jquery.min.js"></script>
8
+ <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
9
+ </head>
10
+ <body>
11
+
12
+ <div class="container">
13
+ <div class="row">
14
+ <div class="span12">
15
+ <div class="jc-demo-box">
16
+
17
+ <div class="page-header">
18
+ <ul class="breadcrumb first">
19
+ <li><a href="http://tapmodo.com/">Tapmodo</a> <span class="divider">/</span></li>
20
+ <li class="active">Jcrop Plugin</li>
21
+ </ul>
22
+ <h1>Jcrop Image Cropping Plugin</h1>
23
+ </div>
24
+
25
+
26
+ <big>
27
+ <a href="http://deepliquid.com/content/Jcrop.html"><b>Jcrop</b></a>
28
+ is the image cropping plugin for
29
+ <a href="http://jquery.com/">jQuery</a>.<br />
30
+ You've successfully unpacked Jcrop.
31
+ </big>
32
+
33
+ <h3>Static Demos</h3>
34
+
35
+ <ul>
36
+ <li><a href="demos/tutorial1.html">Hello World</a>
37
+ &mdash; default behavior</li>
38
+ <li><a href="demos/tutorial2.html">Basic Handler</a>
39
+ &mdash; basic form integration</li>
40
+ <li><a href="demos/tutorial3.html">Aspect Ratio w/ Preview Pane</a>
41
+ &mdash; nice visual example</li>
42
+ <li><a href="demos/tutorial4.html">Animation/Transitions</a>
43
+ &mdash; animation/fading demo</li>
44
+ <li><a href="demos/tutorial5.html">API Interface</a>
45
+ &mdash; real-time API example</li>
46
+ <li><a href="demos/styling.html">Styling Example</a>
47
+ &mdash; style Jcrop dynamically with CSS
48
+ <small>New in 0.9.10</small>
49
+ </li>
50
+ <li><a href="demos/non-image.html">Non-Image Elements</a>
51
+ &mdash; attach to other DOM block elements
52
+ <small>New in 0.9.10</small>
53
+ </li>
54
+ </ul>
55
+
56
+ <h3>Live Demo</h3>
57
+
58
+ <ul>
59
+ <li><a href="demos/crop.php">PHP Cropping Demo</a>
60
+ &mdash; requires PHP/gd support</li>
61
+ </ul>
62
+
63
+ <h3>Jcrop Links</h3>
64
+
65
+ <ul>
66
+ <li><a href="http://deepliquid.com/content/Jcrop.html">Jcrop Home</a></li>
67
+ <li><a href="http://deepliquid.com/content/Jcrop_Manual.html">Jcrop Manual</a></li>
68
+ </ul>
69
+
70
+ <div class="tapmodo-footer">
71
+ <a href="http://tapmodo.com" class="tapmodo-logo segment">tapmodo.com</a>
72
+ <div class="segment"><b>&copy; 2008-2013 Tapmodo Interactive LLC</b><br />
73
+ Jcrop is free software released under <a href="MIT-LICENSE.txt">MIT License</a>
74
+ </div>
75
+ </div>
76
+ <div class="clearfix"></div>
77
+
78
+ </div>
79
+ </div>
80
+ </div>
81
+ </div>
82
+
83
+ </body>
84
+ </html>
@@ -0,0 +1,1694 @@
1
+ /**
2
+ * jquery.Jcrop.js v0.9.12
3
+ * jQuery Image Cropping Plugin - released under MIT License
4
+ * Author: Kelly Hallman <khallman@gmail.com>
5
+ * http://github.com/tapmodo/Jcrop
6
+ * Copyright (c) 2008-2013 Tapmodo Interactive LLC {{{
7
+ *
8
+ * Permission is hereby granted, free of charge, to any person
9
+ * obtaining a copy of this software and associated documentation
10
+ * files (the "Software"), to deal in the Software without
11
+ * restriction, including without limitation the rights to use,
12
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ * copies of the Software, and to permit persons to whom the
14
+ * Software is furnished to do so, subject to the following
15
+ * conditions:
16
+ *
17
+ * The above copyright notice and this permission notice shall be
18
+ * included in all copies or substantial portions of the Software.
19
+ *
20
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
22
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
24
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
25
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27
+ * OTHER DEALINGS IN THE SOFTWARE.
28
+ *
29
+ * }}}
30
+ */
31
+
32
+ (function ($) {
33
+
34
+ $.Jcrop = function (obj, opt) {
35
+ var options = $.extend({}, $.Jcrop.defaults),
36
+ docOffset,
37
+ _ua = navigator.userAgent.toLowerCase(),
38
+ is_msie = /msie/.test(_ua),
39
+ ie6mode = /msie [1-6]\./.test(_ua);
40
+
41
+ // Internal Methods {{{
42
+ function px(n) {
43
+ return Math.round(n) + 'px';
44
+ }
45
+ function cssClass(cl) {
46
+ return options.baseClass + '-' + cl;
47
+ }
48
+ function supportsColorFade() {
49
+ return $.fx.step.hasOwnProperty('backgroundColor');
50
+ }
51
+ function getPos(obj) //{{{
52
+ {
53
+ var pos = $(obj).offset();
54
+ return [pos.left, pos.top];
55
+ }
56
+ //}}}
57
+ function mouseAbs(e) //{{{
58
+ {
59
+ return [(e.pageX - docOffset[0]), (e.pageY - docOffset[1])];
60
+ }
61
+ //}}}
62
+ function setOptions(opt) //{{{
63
+ {
64
+ if (typeof(opt) !== 'object') opt = {};
65
+ options = $.extend(options, opt);
66
+
67
+ $.each(['onChange','onSelect','onRelease','onDblClick'],function(i,e) {
68
+ if (typeof(options[e]) !== 'function') options[e] = function () {};
69
+ });
70
+ }
71
+ //}}}
72
+ function startDragMode(mode, pos, touch) //{{{
73
+ {
74
+ docOffset = getPos($img);
75
+ Tracker.setCursor(mode === 'move' ? mode : mode + '-resize');
76
+
77
+ if (mode === 'move') {
78
+ return Tracker.activateHandlers(createMover(pos), doneSelect, touch);
79
+ }
80
+
81
+ var fc = Coords.getFixed();
82
+ var opp = oppLockCorner(mode);
83
+ var opc = Coords.getCorner(oppLockCorner(opp));
84
+
85
+ Coords.setPressed(Coords.getCorner(opp));
86
+ Coords.setCurrent(opc);
87
+
88
+ Tracker.activateHandlers(dragmodeHandler(mode, fc), doneSelect, touch);
89
+ }
90
+ //}}}
91
+ function dragmodeHandler(mode, f) //{{{
92
+ {
93
+ return function (pos) {
94
+ if (!options.aspectRatio) {
95
+ switch (mode) {
96
+ case 'e':
97
+ pos[1] = f.y2;
98
+ break;
99
+ case 'w':
100
+ pos[1] = f.y2;
101
+ break;
102
+ case 'n':
103
+ pos[0] = f.x2;
104
+ break;
105
+ case 's':
106
+ pos[0] = f.x2;
107
+ break;
108
+ }
109
+ } else {
110
+ switch (mode) {
111
+ case 'e':
112
+ pos[1] = f.y + 1;
113
+ break;
114
+ case 'w':
115
+ pos[1] = f.y + 1;
116
+ break;
117
+ case 'n':
118
+ pos[0] = f.x + 1;
119
+ break;
120
+ case 's':
121
+ pos[0] = f.x + 1;
122
+ break;
123
+ }
124
+ }
125
+ Coords.setCurrent(pos);
126
+ Selection.update();
127
+ };
128
+ }
129
+ //}}}
130
+ function createMover(pos) //{{{
131
+ {
132
+ var lloc = pos;
133
+ KeyManager.watchKeys();
134
+
135
+ return function (pos) {
136
+ Coords.moveOffset([pos[0] - lloc[0], pos[1] - lloc[1]]);
137
+ lloc = pos;
138
+
139
+ Selection.update();
140
+ };
141
+ }
142
+ //}}}
143
+ function oppLockCorner(ord) //{{{
144
+ {
145
+ switch (ord) {
146
+ case 'n':
147
+ return 'sw';
148
+ case 's':
149
+ return 'nw';
150
+ case 'e':
151
+ return 'nw';
152
+ case 'w':
153
+ return 'ne';
154
+ case 'ne':
155
+ return 'sw';
156
+ case 'nw':
157
+ return 'se';
158
+ case 'se':
159
+ return 'nw';
160
+ case 'sw':
161
+ return 'ne';
162
+ }
163
+ }
164
+ //}}}
165
+ function createDragger(ord) //{{{
166
+ {
167
+ return function (e) {
168
+ if (options.disabled) {
169
+ return false;
170
+ }
171
+ if ((ord === 'move') && !options.allowMove) {
172
+ return false;
173
+ }
174
+
175
+ // Fix position of crop area when dragged the very first time.
176
+ // Necessary when crop image is in a hidden element when page is loaded.
177
+ docOffset = getPos($img);
178
+
179
+ btndown = true;
180
+ startDragMode(ord, mouseAbs(e));
181
+ e.stopPropagation();
182
+ e.preventDefault();
183
+ return false;
184
+ };
185
+ }
186
+ //}}}
187
+ function presize($obj, w, h) //{{{
188
+ {
189
+ var nw = $obj.width(),
190
+ nh = $obj.height();
191
+ if ((nw > w) && w > 0) {
192
+ nw = w;
193
+ nh = (w / $obj.width()) * $obj.height();
194
+ }
195
+ if ((nh > h) && h > 0) {
196
+ nh = h;
197
+ nw = (h / $obj.height()) * $obj.width();
198
+ }
199
+ xscale = $obj.width() / nw;
200
+ yscale = $obj.height() / nh;
201
+ $obj.width(nw).height(nh);
202
+ }
203
+ //}}}
204
+ function unscale(c) //{{{
205
+ {
206
+ return {
207
+ x: c.x * xscale,
208
+ y: c.y * yscale,
209
+ x2: c.x2 * xscale,
210
+ y2: c.y2 * yscale,
211
+ w: c.w * xscale,
212
+ h: c.h * yscale
213
+ };
214
+ }
215
+ //}}}
216
+ function doneSelect(pos) //{{{
217
+ {
218
+ var c = Coords.getFixed();
219
+ if ((c.w > options.minSelect[0]) && (c.h > options.minSelect[1])) {
220
+ Selection.enableHandles();
221
+ Selection.done();
222
+ } else {
223
+ Selection.release();
224
+ }
225
+ Tracker.setCursor(options.allowSelect ? 'crosshair' : 'default');
226
+ }
227
+ //}}}
228
+ function newSelection(e) //{{{
229
+ {
230
+ if (options.disabled) {
231
+ return false;
232
+ }
233
+ if (!options.allowSelect) {
234
+ return false;
235
+ }
236
+ btndown = true;
237
+ docOffset = getPos($img);
238
+ Selection.disableHandles();
239
+ Tracker.setCursor('crosshair');
240
+ var pos = mouseAbs(e);
241
+ Coords.setPressed(pos);
242
+ Selection.update();
243
+ Tracker.activateHandlers(selectDrag, doneSelect, e.type.substring(0,5)==='touch');
244
+ KeyManager.watchKeys();
245
+
246
+ e.stopPropagation();
247
+ e.preventDefault();
248
+ return false;
249
+ }
250
+ //}}}
251
+ function selectDrag(pos) //{{{
252
+ {
253
+ Coords.setCurrent(pos);
254
+ Selection.update();
255
+ }
256
+ //}}}
257
+ function newTracker() //{{{
258
+ {
259
+ var trk = $('<div></div>').addClass(cssClass('tracker'));
260
+ if (is_msie) {
261
+ trk.css({
262
+ opacity: 0,
263
+ backgroundColor: 'white'
264
+ });
265
+ }
266
+ return trk;
267
+ }
268
+ //}}}
269
+
270
+ // }}}
271
+ // Initialization {{{
272
+ // Sanitize some options {{{
273
+ if (typeof(obj) !== 'object') {
274
+ obj = $(obj)[0];
275
+ }
276
+ if (typeof(opt) !== 'object') {
277
+ opt = {};
278
+ }
279
+ // }}}
280
+ setOptions(opt);
281
+ // Initialize some jQuery objects {{{
282
+ // The values are SET on the image(s) for the interface
283
+ // If the original image has any of these set, they will be reset
284
+ // However, if you destroy() the Jcrop instance the original image's
285
+ // character in the DOM will be as you left it.
286
+ var img_css = {
287
+ border: 'none',
288
+ visibility: 'visible',
289
+ margin: 0,
290
+ padding: 0,
291
+ position: 'absolute',
292
+ top: 0,
293
+ left: 0
294
+ };
295
+
296
+ var $origimg = $(obj),
297
+ img_mode = true;
298
+
299
+ if (obj.tagName == 'IMG') {
300
+ // Fix size of crop image.
301
+ // Necessary when crop image is within a hidden element when page is loaded.
302
+ if ($origimg[0].width != 0 && $origimg[0].height != 0) {
303
+ // Obtain dimensions from contained img element.
304
+ $origimg.width($origimg[0].width);
305
+ $origimg.height($origimg[0].height);
306
+ } else {
307
+ // Obtain dimensions from temporary image in case the original is not loaded yet (e.g. IE 7.0).
308
+ var tempImage = new Image();
309
+ tempImage.src = $origimg[0].src;
310
+ $origimg.width(tempImage.width);
311
+ $origimg.height(tempImage.height);
312
+ }
313
+
314
+ var $img = $origimg.clone().removeAttr('id').css(img_css).show();
315
+
316
+ $img.width($origimg.width());
317
+ $img.height($origimg.height());
318
+ $origimg.after($img).hide();
319
+
320
+ } else {
321
+ $img = $origimg.css(img_css).show();
322
+ img_mode = false;
323
+ if (options.shade === null) { options.shade = true; }
324
+ }
325
+
326
+ presize($img, options.boxWidth, options.boxHeight);
327
+
328
+ var boundx = $img.width(),
329
+ boundy = $img.height(),
330
+
331
+
332
+ $div = $('<div />').width(boundx).height(boundy).addClass(cssClass('holder')).css({
333
+ position: 'relative',
334
+ backgroundColor: options.bgColor
335
+ }).insertAfter($origimg).append($img);
336
+
337
+ if (options.addClass) {
338
+ $div.addClass(options.addClass);
339
+ }
340
+
341
+ var $img2 = $('<div />'),
342
+
343
+ $img_holder = $('<div />')
344
+ .width('100%').height('100%').css({
345
+ zIndex: 310,
346
+ position: 'absolute',
347
+ overflow: 'hidden'
348
+ }),
349
+
350
+ $hdl_holder = $('<div />')
351
+ .width('100%').height('100%').css('zIndex', 320),
352
+
353
+ $sel = $('<div />')
354
+ .css({
355
+ position: 'absolute',
356
+ zIndex: 600
357
+ }).dblclick(function(){
358
+ var c = Coords.getFixed();
359
+ options.onDblClick.call(api,c);
360
+ }).insertBefore($img).append($img_holder, $hdl_holder);
361
+
362
+ if (img_mode) {
363
+
364
+ $img2 = $('<img />')
365
+ .attr('src', $img.attr('src')).css(img_css).width(boundx).height(boundy),
366
+
367
+ $img_holder.append($img2);
368
+
369
+ }
370
+
371
+ if (ie6mode) {
372
+ $sel.css({
373
+ overflowY: 'hidden'
374
+ });
375
+ }
376
+
377
+ var bound = options.boundary;
378
+ var $trk = newTracker().width(boundx + (bound * 2)).height(boundy + (bound * 2)).css({
379
+ position: 'absolute',
380
+ top: px(-bound),
381
+ left: px(-bound),
382
+ zIndex: 290
383
+ }).mousedown(newSelection);
384
+
385
+ /* }}} */
386
+ // Set more variables {{{
387
+ var bgcolor = options.bgColor,
388
+ bgopacity = options.bgOpacity,
389
+ xlimit, ylimit, xmin, ymin, xscale, yscale, enabled = true,
390
+ btndown, animating, shift_down;
391
+
392
+ docOffset = getPos($img);
393
+ // }}}
394
+ // }}}
395
+ // Internal Modules {{{
396
+ // Touch Module {{{
397
+ var Touch = (function () {
398
+ // Touch support detection function adapted (under MIT License)
399
+ // from code by Jeffrey Sambells - http://github.com/iamamused/
400
+ function hasTouchSupport() {
401
+ var support = {}, events = ['touchstart', 'touchmove', 'touchend'],
402
+ el = document.createElement('div'), i;
403
+
404
+ try {
405
+ for(i=0; i<events.length; i++) {
406
+ var eventName = events[i];
407
+ eventName = 'on' + eventName;
408
+ var isSupported = (eventName in el);
409
+ if (!isSupported) {
410
+ el.setAttribute(eventName, 'return;');
411
+ isSupported = typeof el[eventName] == 'function';
412
+ }
413
+ support[events[i]] = isSupported;
414
+ }
415
+ return support.touchstart && support.touchend && support.touchmove;
416
+ }
417
+ catch(err) {
418
+ return false;
419
+ }
420
+ }
421
+
422
+ function detectSupport() {
423
+ if ((options.touchSupport === true) || (options.touchSupport === false)) return options.touchSupport;
424
+ else return hasTouchSupport();
425
+ }
426
+ return {
427
+ createDragger: function (ord) {
428
+ return function (e) {
429
+ if (options.disabled) {
430
+ return false;
431
+ }
432
+ if ((ord === 'move') && !options.allowMove) {
433
+ return false;
434
+ }
435
+ docOffset = getPos($img);
436
+ btndown = true;
437
+ startDragMode(ord, mouseAbs(Touch.cfilter(e)), true);
438
+ e.stopPropagation();
439
+ e.preventDefault();
440
+ return false;
441
+ };
442
+ },
443
+ newSelection: function (e) {
444
+ return newSelection(Touch.cfilter(e));
445
+ },
446
+ cfilter: function (e){
447
+ e.pageX = e.originalEvent.changedTouches[0].pageX;
448
+ e.pageY = e.originalEvent.changedTouches[0].pageY;
449
+ return e;
450
+ },
451
+ isSupported: hasTouchSupport,
452
+ support: detectSupport()
453
+ };
454
+ }());
455
+ // }}}
456
+ // Coords Module {{{
457
+ var Coords = (function () {
458
+ var x1 = 0,
459
+ y1 = 0,
460
+ x2 = 0,
461
+ y2 = 0,
462
+ ox, oy;
463
+
464
+ function setPressed(pos) //{{{
465
+ {
466
+ pos = rebound(pos);
467
+ x2 = x1 = pos[0];
468
+ y2 = y1 = pos[1];
469
+ }
470
+ //}}}
471
+ function setCurrent(pos) //{{{
472
+ {
473
+ pos = rebound(pos);
474
+ ox = pos[0] - x2;
475
+ oy = pos[1] - y2;
476
+ x2 = pos[0];
477
+ y2 = pos[1];
478
+ }
479
+ //}}}
480
+ function getOffset() //{{{
481
+ {
482
+ return [ox, oy];
483
+ }
484
+ //}}}
485
+ function moveOffset(offset) //{{{
486
+ {
487
+ var ox = offset[0],
488
+ oy = offset[1];
489
+
490
+ if (0 > x1 + ox) {
491
+ ox -= ox + x1;
492
+ }
493
+ if (0 > y1 + oy) {
494
+ oy -= oy + y1;
495
+ }
496
+
497
+ if (boundy < y2 + oy) {
498
+ oy += boundy - (y2 + oy);
499
+ }
500
+ if (boundx < x2 + ox) {
501
+ ox += boundx - (x2 + ox);
502
+ }
503
+
504
+ x1 += ox;
505
+ x2 += ox;
506
+ y1 += oy;
507
+ y2 += oy;
508
+ }
509
+ //}}}
510
+ function getCorner(ord) //{{{
511
+ {
512
+ var c = getFixed();
513
+ switch (ord) {
514
+ case 'ne':
515
+ return [c.x2, c.y];
516
+ case 'nw':
517
+ return [c.x, c.y];
518
+ case 'se':
519
+ return [c.x2, c.y2];
520
+ case 'sw':
521
+ return [c.x, c.y2];
522
+ }
523
+ }
524
+ //}}}
525
+ function getFixed() //{{{
526
+ {
527
+ if (!options.aspectRatio) {
528
+ return getRect();
529
+ }
530
+ // This function could use some optimization I think...
531
+ var aspect = options.aspectRatio,
532
+ min_x = options.minSize[0] / xscale,
533
+
534
+
535
+ //min_y = options.minSize[1]/yscale,
536
+ max_x = options.maxSize[0] / xscale,
537
+ max_y = options.maxSize[1] / yscale,
538
+ rw = x2 - x1,
539
+ rh = y2 - y1,
540
+ rwa = Math.abs(rw),
541
+ rha = Math.abs(rh),
542
+ real_ratio = rwa / rha,
543
+ xx, yy, w, h;
544
+
545
+ if (max_x === 0) {
546
+ max_x = boundx * 10;
547
+ }
548
+ if (max_y === 0) {
549
+ max_y = boundy * 10;
550
+ }
551
+ if (real_ratio < aspect) {
552
+ yy = y2;
553
+ w = rha * aspect;
554
+ xx = rw < 0 ? x1 - w : w + x1;
555
+
556
+ if (xx < 0) {
557
+ xx = 0;
558
+ h = Math.abs((xx - x1) / aspect);
559
+ yy = rh < 0 ? y1 - h : h + y1;
560
+ } else if (xx > boundx) {
561
+ xx = boundx;
562
+ h = Math.abs((xx - x1) / aspect);
563
+ yy = rh < 0 ? y1 - h : h + y1;
564
+ }
565
+ } else {
566
+ xx = x2;
567
+ h = rwa / aspect;
568
+ yy = rh < 0 ? y1 - h : y1 + h;
569
+ if (yy < 0) {
570
+ yy = 0;
571
+ w = Math.abs((yy - y1) * aspect);
572
+ xx = rw < 0 ? x1 - w : w + x1;
573
+ } else if (yy > boundy) {
574
+ yy = boundy;
575
+ w = Math.abs(yy - y1) * aspect;
576
+ xx = rw < 0 ? x1 - w : w + x1;
577
+ }
578
+ }
579
+
580
+ // Magic %-)
581
+ if (xx > x1) { // right side
582
+ if (xx - x1 < min_x) {
583
+ xx = x1 + min_x;
584
+ } else if (xx - x1 > max_x) {
585
+ xx = x1 + max_x;
586
+ }
587
+ if (yy > y1) {
588
+ yy = y1 + (xx - x1) / aspect;
589
+ } else {
590
+ yy = y1 - (xx - x1) / aspect;
591
+ }
592
+ } else if (xx < x1) { // left side
593
+ if (x1 - xx < min_x) {
594
+ xx = x1 - min_x;
595
+ } else if (x1 - xx > max_x) {
596
+ xx = x1 - max_x;
597
+ }
598
+ if (yy > y1) {
599
+ yy = y1 + (x1 - xx) / aspect;
600
+ } else {
601
+ yy = y1 - (x1 - xx) / aspect;
602
+ }
603
+ }
604
+
605
+ if (xx < 0) {
606
+ x1 -= xx;
607
+ xx = 0;
608
+ } else if (xx > boundx) {
609
+ x1 -= xx - boundx;
610
+ xx = boundx;
611
+ }
612
+
613
+ if (yy < 0) {
614
+ y1 -= yy;
615
+ yy = 0;
616
+ } else if (yy > boundy) {
617
+ y1 -= yy - boundy;
618
+ yy = boundy;
619
+ }
620
+
621
+ return makeObj(flipCoords(x1, y1, xx, yy));
622
+ }
623
+ //}}}
624
+ function rebound(p) //{{{
625
+ {
626
+ if (p[0] < 0) p[0] = 0;
627
+ if (p[1] < 0) p[1] = 0;
628
+
629
+ if (p[0] > boundx) p[0] = boundx;
630
+ if (p[1] > boundy) p[1] = boundy;
631
+
632
+ return [Math.round(p[0]), Math.round(p[1])];
633
+ }
634
+ //}}}
635
+ function flipCoords(x1, y1, x2, y2) //{{{
636
+ {
637
+ var xa = x1,
638
+ xb = x2,
639
+ ya = y1,
640
+ yb = y2;
641
+ if (x2 < x1) {
642
+ xa = x2;
643
+ xb = x1;
644
+ }
645
+ if (y2 < y1) {
646
+ ya = y2;
647
+ yb = y1;
648
+ }
649
+ return [xa, ya, xb, yb];
650
+ }
651
+ //}}}
652
+ function getRect() //{{{
653
+ {
654
+ var xsize = x2 - x1,
655
+ ysize = y2 - y1,
656
+ delta;
657
+
658
+ if (xlimit && (Math.abs(xsize) > xlimit)) {
659
+ x2 = (xsize > 0) ? (x1 + xlimit) : (x1 - xlimit);
660
+ }
661
+ if (ylimit && (Math.abs(ysize) > ylimit)) {
662
+ y2 = (ysize > 0) ? (y1 + ylimit) : (y1 - ylimit);
663
+ }
664
+
665
+ if (ymin / yscale && (Math.abs(ysize) < ymin / yscale)) {
666
+ y2 = (ysize > 0) ? (y1 + ymin / yscale) : (y1 - ymin / yscale);
667
+ }
668
+ if (xmin / xscale && (Math.abs(xsize) < xmin / xscale)) {
669
+ x2 = (xsize > 0) ? (x1 + xmin / xscale) : (x1 - xmin / xscale);
670
+ }
671
+
672
+ if (x1 < 0) {
673
+ x2 -= x1;
674
+ x1 -= x1;
675
+ }
676
+ if (y1 < 0) {
677
+ y2 -= y1;
678
+ y1 -= y1;
679
+ }
680
+ if (x2 < 0) {
681
+ x1 -= x2;
682
+ x2 -= x2;
683
+ }
684
+ if (y2 < 0) {
685
+ y1 -= y2;
686
+ y2 -= y2;
687
+ }
688
+ if (x2 > boundx) {
689
+ delta = x2 - boundx;
690
+ x1 -= delta;
691
+ x2 -= delta;
692
+ }
693
+ if (y2 > boundy) {
694
+ delta = y2 - boundy;
695
+ y1 -= delta;
696
+ y2 -= delta;
697
+ }
698
+ if (x1 > boundx) {
699
+ delta = x1 - boundy;
700
+ y2 -= delta;
701
+ y1 -= delta;
702
+ }
703
+ if (y1 > boundy) {
704
+ delta = y1 - boundy;
705
+ y2 -= delta;
706
+ y1 -= delta;
707
+ }
708
+
709
+ return makeObj(flipCoords(x1, y1, x2, y2));
710
+ }
711
+ //}}}
712
+ function makeObj(a) //{{{
713
+ {
714
+ return {
715
+ x: a[0],
716
+ y: a[1],
717
+ x2: a[2],
718
+ y2: a[3],
719
+ w: a[2] - a[0],
720
+ h: a[3] - a[1]
721
+ };
722
+ }
723
+ //}}}
724
+
725
+ return {
726
+ flipCoords: flipCoords,
727
+ setPressed: setPressed,
728
+ setCurrent: setCurrent,
729
+ getOffset: getOffset,
730
+ moveOffset: moveOffset,
731
+ getCorner: getCorner,
732
+ getFixed: getFixed
733
+ };
734
+ }());
735
+
736
+ //}}}
737
+ // Shade Module {{{
738
+ var Shade = (function() {
739
+ var enabled = false,
740
+ holder = $('<div />').css({
741
+ position: 'absolute',
742
+ zIndex: 240,
743
+ opacity: 0
744
+ }),
745
+ shades = {
746
+ top: createShade(),
747
+ left: createShade().height(boundy),
748
+ right: createShade().height(boundy),
749
+ bottom: createShade()
750
+ };
751
+
752
+ function resizeShades(w,h) {
753
+ shades.left.css({ height: px(h) });
754
+ shades.right.css({ height: px(h) });
755
+ }
756
+ function updateAuto()
757
+ {
758
+ return updateShade(Coords.getFixed());
759
+ }
760
+ function updateShade(c)
761
+ {
762
+ shades.top.css({
763
+ left: px(c.x),
764
+ width: px(c.w),
765
+ height: px(c.y)
766
+ });
767
+ shades.bottom.css({
768
+ top: px(c.y2),
769
+ left: px(c.x),
770
+ width: px(c.w),
771
+ height: px(boundy-c.y2)
772
+ });
773
+ shades.right.css({
774
+ left: px(c.x2),
775
+ width: px(boundx-c.x2)
776
+ });
777
+ shades.left.css({
778
+ width: px(c.x)
779
+ });
780
+ }
781
+ function createShade() {
782
+ return $('<div />').css({
783
+ position: 'absolute',
784
+ backgroundColor: options.shadeColor||options.bgColor
785
+ }).appendTo(holder);
786
+ }
787
+ function enableShade() {
788
+ if (!enabled) {
789
+ enabled = true;
790
+ holder.insertBefore($img);
791
+ updateAuto();
792
+ Selection.setBgOpacity(1,0,1);
793
+ $img2.hide();
794
+
795
+ setBgColor(options.shadeColor||options.bgColor,1);
796
+ if (Selection.isAwake())
797
+ {
798
+ setOpacity(options.bgOpacity,1);
799
+ }
800
+ else setOpacity(1,1);
801
+ }
802
+ }
803
+ function setBgColor(color,now) {
804
+ colorChangeMacro(getShades(),color,now);
805
+ }
806
+ function disableShade() {
807
+ if (enabled) {
808
+ holder.remove();
809
+ $img2.show();
810
+ enabled = false;
811
+ if (Selection.isAwake()) {
812
+ Selection.setBgOpacity(options.bgOpacity,1,1);
813
+ } else {
814
+ Selection.setBgOpacity(1,1,1);
815
+ Selection.disableHandles();
816
+ }
817
+ colorChangeMacro($div,0,1);
818
+ }
819
+ }
820
+ function setOpacity(opacity,now) {
821
+ if (enabled) {
822
+ if (options.bgFade && !now) {
823
+ holder.animate({
824
+ opacity: 1-opacity
825
+ },{
826
+ queue: false,
827
+ duration: options.fadeTime
828
+ });
829
+ }
830
+ else holder.css({opacity:1-opacity});
831
+ }
832
+ }
833
+ function refreshAll() {
834
+ options.shade ? enableShade() : disableShade();
835
+ if (Selection.isAwake()) setOpacity(options.bgOpacity);
836
+ }
837
+ function getShades() {
838
+ return holder.children();
839
+ }
840
+
841
+ return {
842
+ update: updateAuto,
843
+ updateRaw: updateShade,
844
+ getShades: getShades,
845
+ setBgColor: setBgColor,
846
+ enable: enableShade,
847
+ disable: disableShade,
848
+ resize: resizeShades,
849
+ refresh: refreshAll,
850
+ opacity: setOpacity
851
+ };
852
+ }());
853
+ // }}}
854
+ // Selection Module {{{
855
+ var Selection = (function () {
856
+ var awake,
857
+ hdep = 370,
858
+ borders = {},
859
+ handle = {},
860
+ dragbar = {},
861
+ seehandles = false;
862
+
863
+ // Private Methods
864
+ function insertBorder(type) //{{{
865
+ {
866
+ var jq = $('<div />').css({
867
+ position: 'absolute',
868
+ opacity: options.borderOpacity
869
+ }).addClass(cssClass(type));
870
+ $img_holder.append(jq);
871
+ return jq;
872
+ }
873
+ //}}}
874
+ function dragDiv(ord, zi) //{{{
875
+ {
876
+ var jq = $('<div />').mousedown(createDragger(ord)).css({
877
+ cursor: ord + '-resize',
878
+ position: 'absolute',
879
+ zIndex: zi
880
+ }).addClass('ord-'+ord);
881
+
882
+ if (Touch.support) {
883
+ jq.bind('touchstart.jcrop', Touch.createDragger(ord));
884
+ }
885
+
886
+ $hdl_holder.append(jq);
887
+ return jq;
888
+ }
889
+ //}}}
890
+ function insertHandle(ord) //{{{
891
+ {
892
+ var hs = options.handleSize,
893
+
894
+ div = dragDiv(ord, hdep++).css({
895
+ opacity: options.handleOpacity
896
+ }).addClass(cssClass('handle'));
897
+
898
+ if (hs) { div.width(hs).height(hs); }
899
+
900
+ return div;
901
+ }
902
+ //}}}
903
+ function insertDragbar(ord) //{{{
904
+ {
905
+ return dragDiv(ord, hdep++).addClass('jcrop-dragbar');
906
+ }
907
+ //}}}
908
+ function createDragbars(li) //{{{
909
+ {
910
+ var i;
911
+ for (i = 0; i < li.length; i++) {
912
+ dragbar[li[i]] = insertDragbar(li[i]);
913
+ }
914
+ }
915
+ //}}}
916
+ function createBorders(li) //{{{
917
+ {
918
+ var cl,i;
919
+ for (i = 0; i < li.length; i++) {
920
+ switch(li[i]){
921
+ case'n': cl='hline'; break;
922
+ case's': cl='hline bottom'; break;
923
+ case'e': cl='vline right'; break;
924
+ case'w': cl='vline'; break;
925
+ }
926
+ borders[li[i]] = insertBorder(cl);
927
+ }
928
+ }
929
+ //}}}
930
+ function createHandles(li) //{{{
931
+ {
932
+ var i;
933
+ for (i = 0; i < li.length; i++) {
934
+ handle[li[i]] = insertHandle(li[i]);
935
+ }
936
+ }
937
+ //}}}
938
+ function moveto(x, y) //{{{
939
+ {
940
+ if (!options.shade) {
941
+ $img2.css({
942
+ top: px(-y),
943
+ left: px(-x)
944
+ });
945
+ }
946
+ $sel.css({
947
+ top: px(y),
948
+ left: px(x)
949
+ });
950
+ }
951
+ //}}}
952
+ function resize(w, h) //{{{
953
+ {
954
+ $sel.width(Math.round(w)).height(Math.round(h));
955
+ }
956
+ //}}}
957
+ function refresh() //{{{
958
+ {
959
+ var c = Coords.getFixed();
960
+
961
+ Coords.setPressed([c.x, c.y]);
962
+ Coords.setCurrent([c.x2, c.y2]);
963
+
964
+ updateVisible();
965
+ }
966
+ //}}}
967
+
968
+ // Internal Methods
969
+ function updateVisible(select) //{{{
970
+ {
971
+ if (awake) {
972
+ return update(select);
973
+ }
974
+ }
975
+ //}}}
976
+ function update(select) //{{{
977
+ {
978
+ var c = Coords.getFixed();
979
+
980
+ resize(c.w, c.h);
981
+ moveto(c.x, c.y);
982
+ if (options.shade) Shade.updateRaw(c);
983
+
984
+ awake || show();
985
+
986
+ if (select) {
987
+ options.onSelect.call(api, unscale(c));
988
+ } else {
989
+ options.onChange.call(api, unscale(c));
990
+ }
991
+ }
992
+ //}}}
993
+ function setBgOpacity(opacity,force,now) //{{{
994
+ {
995
+ if (!awake && !force) return;
996
+ if (options.bgFade && !now) {
997
+ $img.animate({
998
+ opacity: opacity
999
+ },{
1000
+ queue: false,
1001
+ duration: options.fadeTime
1002
+ });
1003
+ } else {
1004
+ $img.css('opacity', opacity);
1005
+ }
1006
+ }
1007
+ //}}}
1008
+ function show() //{{{
1009
+ {
1010
+ $sel.show();
1011
+
1012
+ if (options.shade) Shade.opacity(bgopacity);
1013
+ else setBgOpacity(bgopacity,true);
1014
+
1015
+ awake = true;
1016
+ }
1017
+ //}}}
1018
+ function release() //{{{
1019
+ {
1020
+ disableHandles();
1021
+ $sel.hide();
1022
+
1023
+ if (options.shade) Shade.opacity(1);
1024
+ else setBgOpacity(1);
1025
+
1026
+ awake = false;
1027
+ options.onRelease.call(api);
1028
+ }
1029
+ //}}}
1030
+ function showHandles() //{{{
1031
+ {
1032
+ if (seehandles) {
1033
+ $hdl_holder.show();
1034
+ }
1035
+ }
1036
+ //}}}
1037
+ function enableHandles() //{{{
1038
+ {
1039
+ seehandles = true;
1040
+ if (options.allowResize) {
1041
+ $hdl_holder.show();
1042
+ return true;
1043
+ }
1044
+ }
1045
+ //}}}
1046
+ function disableHandles() //{{{
1047
+ {
1048
+ seehandles = false;
1049
+ $hdl_holder.hide();
1050
+ }
1051
+ //}}}
1052
+ function animMode(v) //{{{
1053
+ {
1054
+ if (v) {
1055
+ animating = true;
1056
+ disableHandles();
1057
+ } else {
1058
+ animating = false;
1059
+ enableHandles();
1060
+ }
1061
+ }
1062
+ //}}}
1063
+ function done() //{{{
1064
+ {
1065
+ animMode(false);
1066
+ refresh();
1067
+ }
1068
+ //}}}
1069
+ // Insert draggable elements {{{
1070
+ // Insert border divs for outline
1071
+
1072
+ if (options.dragEdges && $.isArray(options.createDragbars))
1073
+ createDragbars(options.createDragbars);
1074
+
1075
+ if ($.isArray(options.createHandles))
1076
+ createHandles(options.createHandles);
1077
+
1078
+ if (options.drawBorders && $.isArray(options.createBorders))
1079
+ createBorders(options.createBorders);
1080
+
1081
+ //}}}
1082
+
1083
+ // This is a hack for iOS5 to support drag/move touch functionality
1084
+ $(document).bind('touchstart.jcrop-ios',function(e) {
1085
+ if ($(e.currentTarget).hasClass('jcrop-tracker')) e.stopPropagation();
1086
+ });
1087
+
1088
+ var $track = newTracker().mousedown(createDragger('move')).css({
1089
+ cursor: 'move',
1090
+ position: 'absolute',
1091
+ zIndex: 360
1092
+ });
1093
+
1094
+ if (Touch.support) {
1095
+ $track.bind('touchstart.jcrop', Touch.createDragger('move'));
1096
+ }
1097
+
1098
+ $img_holder.append($track);
1099
+ disableHandles();
1100
+
1101
+ return {
1102
+ updateVisible: updateVisible,
1103
+ update: update,
1104
+ release: release,
1105
+ refresh: refresh,
1106
+ isAwake: function () {
1107
+ return awake;
1108
+ },
1109
+ setCursor: function (cursor) {
1110
+ $track.css('cursor', cursor);
1111
+ },
1112
+ enableHandles: enableHandles,
1113
+ enableOnly: function () {
1114
+ seehandles = true;
1115
+ },
1116
+ showHandles: showHandles,
1117
+ disableHandles: disableHandles,
1118
+ animMode: animMode,
1119
+ setBgOpacity: setBgOpacity,
1120
+ done: done
1121
+ };
1122
+ }());
1123
+
1124
+ //}}}
1125
+ // Tracker Module {{{
1126
+ var Tracker = (function () {
1127
+ var onMove = function () {},
1128
+ onDone = function () {},
1129
+ trackDoc = options.trackDocument;
1130
+
1131
+ function toFront(touch) //{{{
1132
+ {
1133
+ $trk.css({
1134
+ zIndex: 450
1135
+ });
1136
+
1137
+ if (touch)
1138
+ $(document)
1139
+ .bind('touchmove.jcrop', trackTouchMove)
1140
+ .bind('touchend.jcrop', trackTouchEnd);
1141
+
1142
+ else if (trackDoc)
1143
+ $(document)
1144
+ .bind('mousemove.jcrop',trackMove)
1145
+ .bind('mouseup.jcrop',trackUp);
1146
+ }
1147
+ //}}}
1148
+ function toBack() //{{{
1149
+ {
1150
+ $trk.css({
1151
+ zIndex: 290
1152
+ });
1153
+ $(document).unbind('.jcrop');
1154
+ }
1155
+ //}}}
1156
+ function trackMove(e) //{{{
1157
+ {
1158
+ onMove(mouseAbs(e));
1159
+ return false;
1160
+ }
1161
+ //}}}
1162
+ function trackUp(e) //{{{
1163
+ {
1164
+ e.preventDefault();
1165
+ e.stopPropagation();
1166
+
1167
+ if (btndown) {
1168
+ btndown = false;
1169
+
1170
+ onDone(mouseAbs(e));
1171
+
1172
+ if (Selection.isAwake()) {
1173
+ options.onSelect.call(api, unscale(Coords.getFixed()));
1174
+ }
1175
+
1176
+ toBack();
1177
+ onMove = function () {};
1178
+ onDone = function () {};
1179
+ }
1180
+
1181
+ return false;
1182
+ }
1183
+ //}}}
1184
+ function activateHandlers(move, done, touch) //{{{
1185
+ {
1186
+ btndown = true;
1187
+ onMove = move;
1188
+ onDone = done;
1189
+ toFront(touch);
1190
+ return false;
1191
+ }
1192
+ //}}}
1193
+ function trackTouchMove(e) //{{{
1194
+ {
1195
+ onMove(mouseAbs(Touch.cfilter(e)));
1196
+ return false;
1197
+ }
1198
+ //}}}
1199
+ function trackTouchEnd(e) //{{{
1200
+ {
1201
+ return trackUp(Touch.cfilter(e));
1202
+ }
1203
+ //}}}
1204
+ function setCursor(t) //{{{
1205
+ {
1206
+ $trk.css('cursor', t);
1207
+ }
1208
+ //}}}
1209
+
1210
+ if (!trackDoc) {
1211
+ $trk.mousemove(trackMove).mouseup(trackUp).mouseout(trackUp);
1212
+ }
1213
+
1214
+ $img.before($trk);
1215
+ return {
1216
+ activateHandlers: activateHandlers,
1217
+ setCursor: setCursor
1218
+ };
1219
+ }());
1220
+ //}}}
1221
+ // KeyManager Module {{{
1222
+ var KeyManager = (function () {
1223
+ var $keymgr = $('<input type="radio" />').css({
1224
+ position: 'fixed',
1225
+ left: '-120px',
1226
+ width: '12px'
1227
+ }).addClass('jcrop-keymgr'),
1228
+
1229
+ $keywrap = $('<div />').css({
1230
+ position: 'absolute',
1231
+ overflow: 'hidden'
1232
+ }).append($keymgr);
1233
+
1234
+ function watchKeys() //{{{
1235
+ {
1236
+ if (options.keySupport) {
1237
+ $keymgr.show();
1238
+ $keymgr.focus();
1239
+ }
1240
+ }
1241
+ //}}}
1242
+ function onBlur(e) //{{{
1243
+ {
1244
+ $keymgr.hide();
1245
+ }
1246
+ //}}}
1247
+ function doNudge(e, x, y) //{{{
1248
+ {
1249
+ if (options.allowMove) {
1250
+ Coords.moveOffset([x, y]);
1251
+ Selection.updateVisible(true);
1252
+ }
1253
+ e.preventDefault();
1254
+ e.stopPropagation();
1255
+ }
1256
+ //}}}
1257
+ function parseKey(e) //{{{
1258
+ {
1259
+ if (e.ctrlKey || e.metaKey) {
1260
+ return true;
1261
+ }
1262
+ shift_down = e.shiftKey ? true : false;
1263
+ var nudge = shift_down ? 10 : 1;
1264
+
1265
+ switch (e.keyCode) {
1266
+ case 37:
1267
+ doNudge(e, -nudge, 0);
1268
+ break;
1269
+ case 39:
1270
+ doNudge(e, nudge, 0);
1271
+ break;
1272
+ case 38:
1273
+ doNudge(e, 0, -nudge);
1274
+ break;
1275
+ case 40:
1276
+ doNudge(e, 0, nudge);
1277
+ break;
1278
+ case 27:
1279
+ if (options.allowSelect) Selection.release();
1280
+ break;
1281
+ case 9:
1282
+ return true;
1283
+ }
1284
+
1285
+ return false;
1286
+ }
1287
+ //}}}
1288
+
1289
+ if (options.keySupport) {
1290
+ $keymgr.keydown(parseKey).blur(onBlur);
1291
+ if (ie6mode || !options.fixedSupport) {
1292
+ $keymgr.css({
1293
+ position: 'absolute',
1294
+ left: '-20px'
1295
+ });
1296
+ $keywrap.append($keymgr).insertBefore($img);
1297
+ } else {
1298
+ $keymgr.insertBefore($img);
1299
+ }
1300
+ }
1301
+
1302
+
1303
+ return {
1304
+ watchKeys: watchKeys
1305
+ };
1306
+ }());
1307
+ //}}}
1308
+ // }}}
1309
+ // API methods {{{
1310
+ function setClass(cname) //{{{
1311
+ {
1312
+ $div.removeClass().addClass(cssClass('holder')).addClass(cname);
1313
+ }
1314
+ //}}}
1315
+ function animateTo(a, callback) //{{{
1316
+ {
1317
+ var x1 = a[0] / xscale,
1318
+ y1 = a[1] / yscale,
1319
+ x2 = a[2] / xscale,
1320
+ y2 = a[3] / yscale;
1321
+
1322
+ if (animating) {
1323
+ return;
1324
+ }
1325
+
1326
+ var animto = Coords.flipCoords(x1, y1, x2, y2),
1327
+ c = Coords.getFixed(),
1328
+ initcr = [c.x, c.y, c.x2, c.y2],
1329
+ animat = initcr,
1330
+ interv = options.animationDelay,
1331
+ ix1 = animto[0] - initcr[0],
1332
+ iy1 = animto[1] - initcr[1],
1333
+ ix2 = animto[2] - initcr[2],
1334
+ iy2 = animto[3] - initcr[3],
1335
+ pcent = 0,
1336
+ velocity = options.swingSpeed;
1337
+
1338
+ x1 = animat[0];
1339
+ y1 = animat[1];
1340
+ x2 = animat[2];
1341
+ y2 = animat[3];
1342
+
1343
+ Selection.animMode(true);
1344
+ var anim_timer;
1345
+
1346
+ function queueAnimator() {
1347
+ window.setTimeout(animator, interv);
1348
+ }
1349
+ var animator = (function () {
1350
+ return function () {
1351
+ pcent += (100 - pcent) / velocity;
1352
+
1353
+ animat[0] = Math.round(x1 + ((pcent / 100) * ix1));
1354
+ animat[1] = Math.round(y1 + ((pcent / 100) * iy1));
1355
+ animat[2] = Math.round(x2 + ((pcent / 100) * ix2));
1356
+ animat[3] = Math.round(y2 + ((pcent / 100) * iy2));
1357
+
1358
+ if (pcent >= 99.8) {
1359
+ pcent = 100;
1360
+ }
1361
+ if (pcent < 100) {
1362
+ setSelectRaw(animat);
1363
+ queueAnimator();
1364
+ } else {
1365
+ Selection.done();
1366
+ Selection.animMode(false);
1367
+ if (typeof(callback) === 'function') {
1368
+ callback.call(api);
1369
+ }
1370
+ }
1371
+ };
1372
+ }());
1373
+ queueAnimator();
1374
+ }
1375
+ //}}}
1376
+ function setSelect(rect) //{{{
1377
+ {
1378
+ setSelectRaw([rect[0] / xscale, rect[1] / yscale, rect[2] / xscale, rect[3] / yscale]);
1379
+ options.onSelect.call(api, unscale(Coords.getFixed()));
1380
+ Selection.enableHandles();
1381
+ }
1382
+ //}}}
1383
+ function setSelectRaw(l) //{{{
1384
+ {
1385
+ Coords.setPressed([l[0], l[1]]);
1386
+ Coords.setCurrent([l[2], l[3]]);
1387
+ Selection.update();
1388
+ }
1389
+ //}}}
1390
+ function tellSelect() //{{{
1391
+ {
1392
+ return unscale(Coords.getFixed());
1393
+ }
1394
+ //}}}
1395
+ function tellScaled() //{{{
1396
+ {
1397
+ return Coords.getFixed();
1398
+ }
1399
+ //}}}
1400
+ function setOptionsNew(opt) //{{{
1401
+ {
1402
+ setOptions(opt);
1403
+ interfaceUpdate();
1404
+ }
1405
+ //}}}
1406
+ function disableCrop() //{{{
1407
+ {
1408
+ options.disabled = true;
1409
+ Selection.disableHandles();
1410
+ Selection.setCursor('default');
1411
+ Tracker.setCursor('default');
1412
+ }
1413
+ //}}}
1414
+ function enableCrop() //{{{
1415
+ {
1416
+ options.disabled = false;
1417
+ interfaceUpdate();
1418
+ }
1419
+ //}}}
1420
+ function cancelCrop() //{{{
1421
+ {
1422
+ Selection.done();
1423
+ Tracker.activateHandlers(null, null);
1424
+ }
1425
+ //}}}
1426
+ function destroy() //{{{
1427
+ {
1428
+ $div.remove();
1429
+ $origimg.show();
1430
+ $origimg.css('visibility','visible');
1431
+ $(obj).removeData('Jcrop');
1432
+ }
1433
+ //}}}
1434
+ function setImage(src, callback) //{{{
1435
+ {
1436
+ Selection.release();
1437
+ disableCrop();
1438
+ var img = new Image();
1439
+ img.onload = function () {
1440
+ var iw = img.width;
1441
+ var ih = img.height;
1442
+ var bw = options.boxWidth;
1443
+ var bh = options.boxHeight;
1444
+ $img.width(iw).height(ih);
1445
+ $img.attr('src', src);
1446
+ $img2.attr('src', src);
1447
+ presize($img, bw, bh);
1448
+ boundx = $img.width();
1449
+ boundy = $img.height();
1450
+ $img2.width(boundx).height(boundy);
1451
+ $trk.width(boundx + (bound * 2)).height(boundy + (bound * 2));
1452
+ $div.width(boundx).height(boundy);
1453
+ Shade.resize(boundx,boundy);
1454
+ enableCrop();
1455
+
1456
+ if (typeof(callback) === 'function') {
1457
+ callback.call(api);
1458
+ }
1459
+ };
1460
+ img.src = src;
1461
+ }
1462
+ //}}}
1463
+ function colorChangeMacro($obj,color,now) {
1464
+ var mycolor = color || options.bgColor;
1465
+ if (options.bgFade && supportsColorFade() && options.fadeTime && !now) {
1466
+ $obj.animate({
1467
+ backgroundColor: mycolor
1468
+ }, {
1469
+ queue: false,
1470
+ duration: options.fadeTime
1471
+ });
1472
+ } else {
1473
+ $obj.css('backgroundColor', mycolor);
1474
+ }
1475
+ }
1476
+ function interfaceUpdate(alt) //{{{
1477
+ // This method tweaks the interface based on options object.
1478
+ // Called when options are changed and at end of initialization.
1479
+ {
1480
+ if (options.allowResize) {
1481
+ if (alt) {
1482
+ Selection.enableOnly();
1483
+ } else {
1484
+ Selection.enableHandles();
1485
+ }
1486
+ } else {
1487
+ Selection.disableHandles();
1488
+ }
1489
+
1490
+ Tracker.setCursor(options.allowSelect ? 'crosshair' : 'default');
1491
+ Selection.setCursor(options.allowMove ? 'move' : 'default');
1492
+
1493
+ if (options.hasOwnProperty('trueSize')) {
1494
+ xscale = options.trueSize[0] / boundx;
1495
+ yscale = options.trueSize[1] / boundy;
1496
+ }
1497
+
1498
+ if (options.hasOwnProperty('setSelect')) {
1499
+ setSelect(options.setSelect);
1500
+ Selection.done();
1501
+ delete(options.setSelect);
1502
+ }
1503
+
1504
+ Shade.refresh();
1505
+
1506
+ if (options.bgColor != bgcolor) {
1507
+ colorChangeMacro(
1508
+ options.shade? Shade.getShades(): $div,
1509
+ options.shade?
1510
+ (options.shadeColor || options.bgColor):
1511
+ options.bgColor
1512
+ );
1513
+ bgcolor = options.bgColor;
1514
+ }
1515
+
1516
+ if (bgopacity != options.bgOpacity) {
1517
+ bgopacity = options.bgOpacity;
1518
+ if (options.shade) Shade.refresh();
1519
+ else Selection.setBgOpacity(bgopacity);
1520
+ }
1521
+
1522
+ xlimit = options.maxSize[0] || 0;
1523
+ ylimit = options.maxSize[1] || 0;
1524
+ xmin = options.minSize[0] || 0;
1525
+ ymin = options.minSize[1] || 0;
1526
+
1527
+ if (options.hasOwnProperty('outerImage')) {
1528
+ $img.attr('src', options.outerImage);
1529
+ delete(options.outerImage);
1530
+ }
1531
+
1532
+ Selection.refresh();
1533
+ }
1534
+ //}}}
1535
+ //}}}
1536
+
1537
+ if (Touch.support) $trk.bind('touchstart.jcrop', Touch.newSelection);
1538
+
1539
+ $hdl_holder.hide();
1540
+ interfaceUpdate(true);
1541
+
1542
+ var api = {
1543
+ setImage: setImage,
1544
+ animateTo: animateTo,
1545
+ setSelect: setSelect,
1546
+ setOptions: setOptionsNew,
1547
+ tellSelect: tellSelect,
1548
+ tellScaled: tellScaled,
1549
+ setClass: setClass,
1550
+
1551
+ disable: disableCrop,
1552
+ enable: enableCrop,
1553
+ cancel: cancelCrop,
1554
+ release: Selection.release,
1555
+ destroy: destroy,
1556
+
1557
+ focus: KeyManager.watchKeys,
1558
+
1559
+ getBounds: function () {
1560
+ return [boundx * xscale, boundy * yscale];
1561
+ },
1562
+ getWidgetSize: function () {
1563
+ return [boundx, boundy];
1564
+ },
1565
+ getScaleFactor: function () {
1566
+ return [xscale, yscale];
1567
+ },
1568
+ getOptions: function() {
1569
+ // careful: internal values are returned
1570
+ return options;
1571
+ },
1572
+
1573
+ ui: {
1574
+ holder: $div,
1575
+ selection: $sel
1576
+ }
1577
+ };
1578
+
1579
+ if (is_msie) $div.bind('selectstart', function () { return false; });
1580
+
1581
+ $origimg.data('Jcrop', api);
1582
+ return api;
1583
+ };
1584
+ $.fn.Jcrop = function (options, callback) //{{{
1585
+ {
1586
+ var api;
1587
+ // Iterate over each object, attach Jcrop
1588
+ this.each(function () {
1589
+ // If we've already attached to this object
1590
+ if ($(this).data('Jcrop')) {
1591
+ // The API can be requested this way (undocumented)
1592
+ if (options === 'api') return $(this).data('Jcrop');
1593
+ // Otherwise, we just reset the options...
1594
+ else $(this).data('Jcrop').setOptions(options);
1595
+ }
1596
+ // If we haven't been attached, preload and attach
1597
+ else {
1598
+ if (this.tagName == 'IMG')
1599
+ $.Jcrop.Loader(this,function(){
1600
+ $(this).css({display:'block',visibility:'hidden'});
1601
+ api = $.Jcrop(this, options);
1602
+ if ($.isFunction(callback)) callback.call(api);
1603
+ });
1604
+ else {
1605
+ $(this).css({display:'block',visibility:'hidden'});
1606
+ api = $.Jcrop(this, options);
1607
+ if ($.isFunction(callback)) callback.call(api);
1608
+ }
1609
+ }
1610
+ });
1611
+
1612
+ // Return "this" so the object is chainable (jQuery-style)
1613
+ return this;
1614
+ };
1615
+ //}}}
1616
+ // $.Jcrop.Loader - basic image loader {{{
1617
+
1618
+ $.Jcrop.Loader = function(imgobj,success,error){
1619
+ var $img = $(imgobj), img = $img[0];
1620
+
1621
+ function completeCheck(){
1622
+ if (img.complete) {
1623
+ $img.unbind('.jcloader');
1624
+ if ($.isFunction(success)) success.call(img);
1625
+ }
1626
+ else window.setTimeout(completeCheck,50);
1627
+ }
1628
+
1629
+ $img
1630
+ .bind('load.jcloader',completeCheck)
1631
+ .bind('error.jcloader',function(e){
1632
+ $img.unbind('.jcloader');
1633
+ if ($.isFunction(error)) error.call(img);
1634
+ });
1635
+
1636
+ if (img.complete && $.isFunction(success)){
1637
+ $img.unbind('.jcloader');
1638
+ success.call(img);
1639
+ }
1640
+ };
1641
+
1642
+ //}}}
1643
+ // Global Defaults {{{
1644
+ $.Jcrop.defaults = {
1645
+
1646
+ // Basic Settings
1647
+ allowSelect: true,
1648
+ allowMove: true,
1649
+ allowResize: true,
1650
+
1651
+ trackDocument: true,
1652
+
1653
+ // Styling Options
1654
+ baseClass: 'jcrop',
1655
+ addClass: null,
1656
+ bgColor: 'black',
1657
+ bgOpacity: 0.6,
1658
+ bgFade: false,
1659
+ borderOpacity: 0.4,
1660
+ handleOpacity: 0.5,
1661
+ handleSize: null,
1662
+
1663
+ aspectRatio: 0,
1664
+ keySupport: true,
1665
+ createHandles: ['n','s','e','w','nw','ne','se','sw'],
1666
+ createDragbars: ['n','s','e','w'],
1667
+ createBorders: ['n','s','e','w'],
1668
+ drawBorders: true,
1669
+ dragEdges: true,
1670
+ fixedSupport: true,
1671
+ touchSupport: null,
1672
+
1673
+ shade: null,
1674
+
1675
+ boxWidth: 0,
1676
+ boxHeight: 0,
1677
+ boundary: 2,
1678
+ fadeTime: 400,
1679
+ animationDelay: 20,
1680
+ swingSpeed: 3,
1681
+
1682
+ minSelect: [0, 0],
1683
+ maxSize: [0, 0],
1684
+ minSize: [0, 0],
1685
+
1686
+ // Callbacks / Event Handlers
1687
+ onChange: function () {},
1688
+ onSelect: function () {},
1689
+ onDblClick: function () {},
1690
+ onRelease: function () {}
1691
+ };
1692
+
1693
+ // }}}
1694
+ }(jQuery));