droom 0.4.3 → 0.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) hide show
  1. checksums.yaml +7 -0
  2. data/app/assets/images/droom/admin_menu.png +0 -0
  3. data/app/assets/images/droom/applications_menu.png +0 -0
  4. data/app/assets/images/droom/arrows_small.png +0 -0
  5. data/app/assets/images/droom/config_menu.png +0 -0
  6. data/app/assets/images/droom/dropdown.png +0 -0
  7. data/app/assets/images/droom/menu/asterisk.png +0 -0
  8. data/app/assets/images/droom/{smalladd.png → menu/smalladd.png} +0 -0
  9. data/app/assets/images/droom/{small_asterisk.png → menu/smallasterisk.png} +0 -0
  10. data/app/assets/images/droom/{smalldelete.png → menu/smalldelete.png} +0 -0
  11. data/app/assets/images/droom/{smalldownload.png → menu/smalldownload.png} +0 -0
  12. data/app/assets/images/droom/{smalledit.png → menu/smalledit.png} +0 -0
  13. data/app/assets/images/droom/message.png +0 -0
  14. data/app/assets/images/droom/missing/scrap.jpg +0 -0
  15. data/app/assets/images/droom/missing/scrap.png +0 -0
  16. data/app/assets/images/droom/missing/thumb.png +0 -0
  17. data/app/assets/images/droom/missing/user.png +0 -0
  18. data/app/assets/images/droom/object_icons.png +0 -0
  19. data/app/assets/images/droom/panel/add.png +0 -0
  20. data/app/assets/images/droom/panel/edit.png +0 -0
  21. data/app/assets/images/droom/panel/manage.png +0 -0
  22. data/app/assets/images/droom/pointer_upwards.png +0 -0
  23. data/app/assets/images/droom/search_menu.png +0 -0
  24. data/app/assets/images/droom/setter.png +0 -0
  25. data/app/assets/images/droom/small_icons.png +0 -0
  26. data/app/assets/images/droom/stream/closer.png +0 -0
  27. data/app/assets/images/droom/stream/next.png +0 -0
  28. data/app/assets/images/droom/stream/prev.png +0 -0
  29. data/app/assets/images/droom/stream/previous.png +0 -0
  30. data/app/assets/images/droom/subscribe.png +0 -0
  31. data/app/assets/javascripts/droom.js.coffee +23 -13
  32. data/app/assets/javascripts/droom/actions.js.coffee +104 -10
  33. data/app/assets/javascripts/droom/ajax.js.coffee +36 -24
  34. data/app/assets/javascripts/droom/extensions.js.coffee +13 -0
  35. data/app/assets/javascripts/droom/lib/jquery.datepicker.js +1026 -0
  36. data/app/assets/javascripts/droom/lib/jquery.deserialize.js +142 -0
  37. data/app/assets/javascripts/droom/lib/jquery_ujs.js +416 -0
  38. data/app/assets/javascripts/droom/lib/swipe.js +568 -0
  39. data/app/assets/javascripts/droom/lib/underscore.js +1276 -0
  40. data/app/assets/javascripts/droom/popups.js.coffee +98 -37
  41. data/app/assets/javascripts/droom/stream.js.coffee +119 -77
  42. data/app/assets/javascripts/droom/utilities.js.coffee +25 -3
  43. data/app/assets/javascripts/droom/widgets.js.coffee +318 -253
  44. data/app/assets/stylesheets/droom.css.sass +482 -955
  45. data/app/assets/stylesheets/droom/_mixins.css.sass +12 -42
  46. data/app/assets/stylesheets/droom/_popups.css.sass +28 -11
  47. data/app/assets/stylesheets/droom/_stream.css.sass +375 -0
  48. data/app/assets/stylesheets/droom/_toolbar.css.sass +0 -6
  49. data/app/assets/stylesheets/droom/_variables.css.sass +4 -2
  50. data/app/controllers/droom/agenda_categories_controller.rb +6 -14
  51. data/app/controllers/droom/api/api_controller.rb +56 -0
  52. data/app/controllers/droom/api/events_controller.rb +74 -0
  53. data/app/controllers/droom/api/users_controller.rb +92 -0
  54. data/app/controllers/droom/api/venues_controller.rb +71 -0
  55. data/app/controllers/droom/calendars_controller.rb +4 -10
  56. data/app/controllers/droom/{user_confirmations_controller.rb → confirmations_controller.rb} +8 -7
  57. data/app/controllers/droom/dashboard_controller.rb +2 -19
  58. data/app/controllers/droom/documents_controller.rb +12 -60
  59. data/app/controllers/droom/dropbox_tokens_controller.rb +3 -4
  60. data/app/controllers/droom/engine_controller.rb +39 -11
  61. data/app/controllers/droom/events_controller.rb +62 -84
  62. data/app/controllers/droom/folders_controller.rb +30 -40
  63. data/app/controllers/droom/group_invitations_controller.rb +6 -23
  64. data/app/controllers/droom/group_permissions_controller.rb +26 -0
  65. data/app/controllers/droom/groups_controller.rb +10 -14
  66. data/app/controllers/droom/invitations_controller.rb +7 -25
  67. data/app/controllers/droom/memberships_controller.rb +13 -18
  68. data/app/controllers/droom/organisations_controller.rb +6 -25
  69. data/app/controllers/droom/permissions_controller.rb +50 -0
  70. data/app/controllers/droom/preferences_controller.rb +9 -10
  71. data/app/controllers/droom/scraps_controller.rb +23 -26
  72. data/app/controllers/droom/services_controller.rb +50 -0
  73. data/app/controllers/droom/suggestions_controller.rb +6 -4
  74. data/app/controllers/droom/users/confirmations_controller.rb +24 -0
  75. data/app/controllers/droom/users/passwords_controller.rb +39 -0
  76. data/app/controllers/droom/users/sessions_controller.rb +7 -0
  77. data/app/controllers/droom/users_controller.rb +60 -38
  78. data/app/controllers/droom/venues_controller.rb +8 -15
  79. data/app/controllers/droom/youtube_controller.rb +1 -1
  80. data/app/helpers/droom/droom_helper.rb +22 -17
  81. data/app/models/droom/ability.rb +81 -0
  82. data/app/models/droom/agenda_category.rb +0 -1
  83. data/app/models/droom/calendar.rb +12 -7
  84. data/app/models/droom/category.rb +4 -10
  85. data/app/models/droom/concerns/slugged.rb +21 -0
  86. data/app/models/droom/document.rb +15 -17
  87. data/app/models/droom/dropbox_document.rb +3 -6
  88. data/app/models/droom/dropbox_token.rb +2 -3
  89. data/app/models/droom/event.rb +117 -163
  90. data/app/models/droom/event_type.rb +25 -0
  91. data/app/models/droom/folder.rb +36 -48
  92. data/app/models/droom/group.rb +35 -27
  93. data/app/models/droom/group_invitation.rb +7 -10
  94. data/app/models/droom/group_permission.rb +29 -0
  95. data/app/models/droom/invitation.rb +14 -23
  96. data/app/models/droom/mailing_list_membership.rb +0 -1
  97. data/app/models/droom/membership.rb +32 -31
  98. data/app/models/droom/organisation.rb +6 -3
  99. data/app/models/droom/permission.rb +19 -0
  100. data/app/models/droom/personal_folder.rb +9 -21
  101. data/app/models/droom/preference.rb +1 -2
  102. data/app/models/droom/scrap.rb +31 -26
  103. data/app/models/droom/service.rb +31 -0
  104. data/app/models/droom/tag.rb +10 -9
  105. data/app/models/droom/tagging.rb +1 -1
  106. data/app/models/droom/user.rb +453 -130
  107. data/app/models/droom/user_permission.rb +8 -0
  108. data/app/models/droom/venue.rb +21 -32
  109. data/app/serializers/droom/user_serializer.rb +45 -0
  110. data/app/serializers/droom/venue_serializer.rb +5 -0
  111. data/app/views/droom/dashboard/_documents.html.haml +1 -1
  112. data/app/views/droom/dashboard/_folders.html.haml +1 -1
  113. data/app/views/droom/dashboard/_future_events.html.haml +10 -8
  114. data/app/views/droom/dashboard/_groups.html.haml +1 -1
  115. data/app/views/droom/dashboard/_past_events.haml +19 -12
  116. data/app/views/droom/dashboard/_stream.html.haml +2 -2
  117. data/app/views/droom/{users/_extra_columns.html.haml → dashboard/_welcome.html.haml} +0 -0
  118. data/app/views/droom/dashboard/index.html.haml +3 -0
  119. data/app/views/droom/documents/_document.html.haml +0 -2
  120. data/app/views/droom/documents/_documents.html.haml +1 -1
  121. data/app/views/droom/documents/_documents_list.html.haml +1 -1
  122. data/app/views/droom/documents/_documents_table.html.haml +1 -1
  123. data/app/views/droom/documents/_form.html.haml +8 -5
  124. data/app/views/droom/documents/_listing.html.haml +4 -2
  125. data/app/views/droom/documents/index.html.haml +13 -7
  126. data/app/views/droom/documents/new.html.haml +1 -4
  127. data/app/views/droom/events/_action_menu.html.haml +2 -2
  128. data/app/views/droom/events/_attachments.html.haml +8 -0
  129. data/app/views/droom/events/_calendar.html.haml +4 -8
  130. data/app/views/droom/events/_event.html.haml +44 -63
  131. data/app/views/droom/events/_event_line.html.haml +1 -1
  132. data/app/views/droom/events/_events.html.haml +18 -2
  133. data/app/views/droom/events/_form.html.haml +26 -19
  134. data/app/views/droom/events/_invitations.html.haml +7 -3
  135. data/app/views/droom/events/_scrap_events.html.haml +8 -0
  136. data/app/views/droom/events/_suggested.html.haml +4 -1
  137. data/app/views/droom/events/calendar.html.haml +8 -0
  138. data/app/views/droom/events/index.html.haml +24 -26
  139. data/app/views/droom/events/show.html.haml +6 -6
  140. data/app/views/droom/folders/_contents.html.haml +34 -4
  141. data/app/views/droom/folders/_folder.html.haml +7 -2
  142. data/app/views/droom/folders/_form.html.haml +11 -8
  143. data/app/views/droom/folders/index.html.haml +19 -22
  144. data/app/views/droom/group_invitations/_attending_groups.html.haml +1 -1
  145. data/app/views/droom/group_permissions/_toggle.html.haml +18 -0
  146. data/app/views/droom/groups/_action_menu.haml +0 -2
  147. data/app/views/droom/groups/_created.html.haml +0 -1
  148. data/app/views/droom/groups/_form.html.haml +3 -0
  149. data/app/views/droom/groups/_group.html.haml +10 -8
  150. data/app/views/droom/groups/_groups.html.haml +1 -1
  151. data/app/views/droom/groups/_search_result.html.haml +1 -1
  152. data/app/views/droom/groups/_suggested.html.haml +1 -1
  153. data/app/views/droom/groups/index.html.haml +15 -16
  154. data/app/views/droom/invitations/_form.html.haml +1 -1
  155. data/app/views/droom/invitations/_invitation.html.haml +1 -1
  156. data/app/views/droom/invitations/_invitations.html.haml +4 -4
  157. data/app/views/droom/memberships/_button.html.haml +5 -5
  158. data/app/views/droom/memberships/_form.html.haml +26 -7
  159. data/app/views/droom/memberships/_member.html.haml +1 -1
  160. data/app/views/droom/memberships/{_membership_toggle.html.haml → _toggle.html.haml} +4 -4
  161. data/app/views/droom/memberships/index.html.haml +9 -0
  162. data/app/views/droom/organisations/_action_menu.html.haml +1 -1
  163. data/app/views/droom/organisations/_organisation.html.haml +2 -2
  164. data/app/views/droom/organisations/_suggested.html.haml +1 -1
  165. data/app/views/droom/organisations/index.html.haml +11 -11
  166. data/app/views/droom/panels/_admin.html.haml +2 -2
  167. data/app/views/droom/panels/_configuration.html.haml +28 -0
  168. data/app/views/droom/panels/_devices.html.haml +2 -4
  169. data/app/views/droom/panels/_search.html.haml +9 -0
  170. data/app/views/droom/permissions/_action_menu.html.haml +10 -0
  171. data/app/views/droom/permissions/_created.html.haml +3 -0
  172. data/app/views/droom/permissions/_form.html.haml +17 -0
  173. data/app/views/droom/permissions/edit.html.haml +7 -0
  174. data/app/views/droom/permissions/new.html.haml +8 -0
  175. data/app/views/droom/permissions/show.html.haml +4 -0
  176. data/app/views/droom/preferences/_checkbox.html.haml +4 -2
  177. data/app/views/droom/scraps/_caption.html.haml +0 -2
  178. data/app/views/droom/scraps/_credit.html.haml +1 -1
  179. data/app/views/droom/scraps/_form.html.haml +68 -69
  180. data/app/views/droom/scraps/_preload.html.haml +4 -0
  181. data/app/views/droom/scraps/_stream.html.haml +11 -3
  182. data/app/views/droom/scraps/_thumb.html.haml +33 -1
  183. data/app/views/droom/scraps/edit.html.haml +6 -1
  184. data/app/views/droom/scraps/full/_document.html.haml +4 -3
  185. data/app/views/droom/scraps/full/_event.html.haml +17 -16
  186. data/app/views/droom/scraps/full/_image.html.haml +1 -2
  187. data/app/views/droom/scraps/full/_link.html.haml +4 -3
  188. data/app/views/droom/scraps/full/_quote.html.haml +4 -7
  189. data/app/views/droom/scraps/full/_text.html.haml +3 -2
  190. data/app/views/droom/scraps/full/_video.html.haml +2 -2
  191. data/app/views/droom/scraps/new.html.haml +6 -1
  192. data/app/views/droom/scraps/show.html.haml +4 -3
  193. data/app/views/droom/services/_action_menu.html.haml +12 -0
  194. data/app/views/droom/services/_created.html.haml +3 -0
  195. data/app/views/droom/services/_form.html.haml +18 -0
  196. data/app/views/droom/services/_services.html.haml +44 -0
  197. data/app/views/droom/services/edit.html.haml +7 -0
  198. data/app/views/droom/services/index.html.haml +5 -0
  199. data/app/views/droom/{people → services}/new.html.haml +4 -3
  200. data/app/views/droom/services/show.html.haml +4 -0
  201. data/app/views/droom/shared/_controls.html.haml +2 -2
  202. data/app/views/droom/shared/_navigation.html.haml +2 -2
  203. data/app/views/droom/shared/_toolbar.html.haml +1 -1
  204. data/app/views/droom/suggestions/index.html.haml +1 -0
  205. data/app/views/droom/users/_action_menu.html.haml +21 -0
  206. data/app/views/droom/users/_suggested.html.haml +14 -0
  207. data/app/views/droom/users/_user.html.haml +2 -2
  208. data/app/views/droom/users/_users.html.haml +7 -0
  209. data/app/views/droom/users/_users_table.html.haml +21 -22
  210. data/app/views/droom/users/admin.html.haml +10 -0
  211. data/app/views/droom/users/confirmations/_after_confirmation.html.haml +2 -0
  212. data/app/views/droom/users/confirmations/_password_required.html.haml +30 -0
  213. data/app/views/droom/users/confirmations/failure.en.html.haml +22 -0
  214. data/app/views/droom/users/confirmations/show.html.haml +13 -0
  215. data/app/views/droom/users/edit.html.haml +2 -10
  216. data/app/views/droom/users/edit/_details.html.haml +13 -0
  217. data/app/views/droom/users/edit/_memberships.html.haml +13 -0
  218. data/app/views/droom/users/edit/_password_fields.html.haml +16 -0
  219. data/app/views/droom/users/edit/_preferences.html.haml +37 -0
  220. data/app/views/droom/users/edit/_profile.html.haml +26 -0
  221. data/app/views/droom/users/edit/_user_fields.html.haml +66 -0
  222. data/app/views/droom/users/index.html.haml +6 -32
  223. data/app/views/droom/users/new.html.haml +3 -0
  224. data/app/views/droom/users/passwords/completed.html.haml +13 -0
  225. data/app/views/{devise → droom/users}/passwords/edit.html.haml +10 -4
  226. data/app/views/{devise → droom/users}/passwords/new.html.haml +4 -3
  227. data/app/views/droom/users/passwords/show.html.haml +6 -0
  228. data/app/views/droom/users/show.html.haml +2 -0
  229. data/app/views/droom/users/show/_listed.html.haml +46 -0
  230. data/app/views/droom/users/show/_profile.html.haml +33 -0
  231. data/app/views/droom/users/show/_tabled.html.haml +28 -0
  232. data/config/initializers/chronic.rb +2 -0
  233. data/config/initializers/devise.rb +35 -2
  234. data/config/initializers/paperclip.rb +11 -6
  235. data/config/locales/devise.en.yml +1 -1
  236. data/config/locales/en.yml +198 -103
  237. data/config/routes.rb +37 -45
  238. data/db/migrate/20130207123614_stream.rb +5 -1
  239. data/db/migrate/20130225095328_create_droom_calendars.rb +0 -1
  240. data/db/migrate/20130627065459_permissions.rb +34 -0
  241. data/db/migrate/20130627071938_users_take_over.rb +38 -0
  242. data/db/migrate/20130627073759_user_properties.rb +34 -0
  243. data/db/migrate/20130627080021_no_more_people.rb +11 -0
  244. data/db/migrate/20130701122935_directory_groups.rb +8 -0
  245. data/db/migrate/20130701123152_remove_old_access_control.rb +16 -0
  246. data/db/migrate/20130729102857_more_scrap_data.rb +12 -0
  247. data/db/migrate/20130904080340_international_names.rb +17 -0
  248. data/db/migrate/20130904080341_honours.rb +5 -0
  249. data/db/migrate/20131124082222_simple_addresses.rb +25 -0
  250. data/db/migrate/20131201093351_event_time_zone.rb +5 -0
  251. data/db/migrate/20131217060311_session_revocable.rb +5 -0
  252. data/db/migrate/20131219180311_event_types.rb +15 -0
  253. data/lib/devise/strategies/cookie_authenticatable.rb +46 -0
  254. data/lib/droom.rb +48 -33
  255. data/lib/droom/auth_cookie.rb +82 -0
  256. data/lib/droom/cropper.rb +24 -0
  257. data/lib/droom/engine.rb +20 -2
  258. data/lib/droom/folders.rb +6 -6
  259. data/lib/droom/lazy_hash.rb +11 -1
  260. data/lib/droom/monkeys.rb +6 -6
  261. data/lib/droom/taggability.rb +1 -1
  262. data/lib/droom/validators.rb +1 -1
  263. data/lib/droom/version.rb +1 -1
  264. data/lib/generators/droom/install/templates/droom_initializer.rb +10 -2
  265. data/lib/paperclip/geometry_transformation.rb +80 -0
  266. data/lib/paperclip/validators/attachment_height_validator.rb +89 -0
  267. data/lib/paperclip/validators/attachment_width_validator.rb +89 -0
  268. data/lib/paperclip_processors/offset_thumbnail.rb +85 -0
  269. data/spec/dummy/config/application.rb +0 -7
  270. data/spec/dummy/config/environments/development.rb +1 -10
  271. data/spec/dummy/config/environments/production.rb +1 -0
  272. data/spec/dummy/config/environments/test.rb +2 -7
  273. data/spec/dummy/db/migrate/20130130120631_folder_ancestry_to_parents.droom.rb +1 -1
  274. data/spec/dummy/db/migrate/20130724124758_dropbox_tokens.droom.rb +10 -0
  275. data/spec/dummy/db/migrate/20130724124759_preference_uuids.droom.rb +6 -0
  276. data/spec/dummy/db/migrate/20130724124760_stream.droom.rb +14 -0
  277. data/spec/dummy/db/migrate/20130724124761_access_token_secret.droom.rb +6 -0
  278. data/spec/dummy/db/migrate/20130724124762_person_image.droom.rb +10 -0
  279. data/spec/dummy/db/migrate/20130724124763_devise_confirmable.droom.rb +14 -0
  280. data/spec/dummy/db/migrate/20130724124764_create_droom_calendars.droom.rb +20 -0
  281. data/spec/dummy/db/migrate/20130724124765_give_scraps_document.droom.rb +6 -0
  282. data/spec/dummy/db/migrate/20130724124766_privateness.droom.rb +10 -0
  283. data/spec/dummy/db/migrate/20130724124767_store_metadata.droom.rb +6 -0
  284. data/spec/dummy/db/migrate/20130724124768_folders_nicely.droom.rb +7 -0
  285. data/spec/dummy/db/migrate/20130724124769_niceties.droom.rb +8 -0
  286. data/spec/dummy/db/migrate/20130724124770_create_droom_dropbox_documents.droom.rb +12 -0
  287. data/spec/dummy/db/migrate/20130724124771_dropbox_documents_changed.droom.rb +6 -0
  288. data/spec/dummy/db/migrate/20130724124772_user_titles.droom.rb +6 -0
  289. data/spec/dummy/db/migrate/20130724124773_permissions.droom.rb +35 -0
  290. data/spec/dummy/db/migrate/20130724124774_users_take_over.droom.rb +39 -0
  291. data/spec/dummy/db/migrate/20130724124775_user_properties.droom.rb +35 -0
  292. data/spec/dummy/db/migrate/20130724124776_no_more_people.droom.rb +12 -0
  293. data/spec/dummy/db/migrate/20130724124777_directory_groups.droom.rb +9 -0
  294. data/spec/dummy/db/migrate/20130724124778_remove_old_access_control.droom.rb +17 -0
  295. data/spec/dummy/db/schema.rb +217 -140
  296. data/spec/factories/documents.rb +0 -5
  297. data/spec/factories/events.rb +0 -9
  298. data/spec/factories/user.rb +4 -2
  299. data/spec/lib/droom/folders_spec.rb +8 -8
  300. data/spec/models/droom/document_spec.rb +6 -43
  301. data/spec/models/droom/event_spec.rb +0 -34
  302. data/spec/models/droom/mailing_list_membership_spec.rb +4 -4
  303. data/spec/models/droom/membership_spec.rb +2 -2
  304. data/spec/spec_helper.rb +1 -10
  305. metadata +322 -282
  306. data/app/assets/images/droom/Untitled-1.png +0 -0
  307. data/app/assets/images/droom/asterisk.png +0 -0
  308. data/app/assets/images/droom/smallmanage.png +0 -0
  309. data/app/assets/javascripts/droom/lib/kalendae.js +0 -1692
  310. data/app/assets/stylesheets/lib/_kalendae.css.sass +0 -139
  311. data/app/controllers/droom/pages_controller.rb +0 -61
  312. data/app/controllers/droom/people_controller.rb +0 -111
  313. data/app/models/droom/document_attachment.rb +0 -37
  314. data/app/models/droom/page.rb +0 -26
  315. data/app/models/droom/person.rb +0 -309
  316. data/app/models/droom/recurrence_rule.rb +0 -82
  317. data/app/models/droom/user_action_observer.rb +0 -12
  318. data/app/views/devise/confirmations/failure.en.html.haml +0 -20
  319. data/app/views/devise/confirmations/show.html.haml +0 -19
  320. data/app/views/droom/confirmations/show.html.haml +0 -40
  321. data/app/views/droom/documents/_document_line.html.haml +0 -2
  322. data/app/views/droom/events/_created.html.haml +0 -2
  323. data/app/views/droom/folders/_attachments.html.haml +0 -3
  324. data/app/views/droom/pages/_contents.html.haml +0 -10
  325. data/app/views/droom/pages/_form.html.haml +0 -36
  326. data/app/views/droom/pages/_full_page.html.haml +0 -17
  327. data/app/views/droom/pages/_page.html.haml +0 -5
  328. data/app/views/droom/pages/_pages.html.haml +0 -2
  329. data/app/views/droom/pages/admin.html.haml +0 -24
  330. data/app/views/droom/pages/edit.html.haml +0 -1
  331. data/app/views/droom/pages/index.html.haml +0 -10
  332. data/app/views/droom/pages/new.html.haml +0 -4
  333. data/app/views/droom/pages/show.html.haml +0 -5
  334. data/app/views/droom/panels/_account.html.haml +0 -16
  335. data/app/views/droom/panels/_readers.html.haml +0 -18
  336. data/app/views/droom/panels/_suggestions.html.haml +0 -15
  337. data/app/views/droom/people/_action_menu.html.haml +0 -22
  338. data/app/views/droom/people/_created.html.haml +0 -6
  339. data/app/views/droom/people/_form.html.haml +0 -66
  340. data/app/views/droom/people/_listing.html.haml +0 -19
  341. data/app/views/droom/people/_memberships.html.haml +0 -24
  342. data/app/views/droom/people/_people.html.haml +0 -5
  343. data/app/views/droom/people/_person.html.haml +0 -32
  344. data/app/views/droom/people/_search_result.html.haml +0 -14
  345. data/app/views/droom/people/_suggested.html.haml +0 -14
  346. data/app/views/droom/people/edit.html.haml +0 -9
  347. data/app/views/droom/people/index.html.haml +0 -8
  348. data/app/views/droom/people/show.html.haml +0 -31
  349. data/app/views/droom/scraps/_heading.html.haml +0 -16
  350. data/app/views/droom/scraps/thumbs/_document.html.haml +0 -9
  351. data/app/views/droom/scraps/thumbs/_event.html.haml +0 -17
  352. data/app/views/droom/scraps/thumbs/_image.html.haml +0 -6
  353. data/app/views/droom/scraps/thumbs/_link.html.haml +0 -10
  354. data/app/views/droom/scraps/thumbs/_quote.html.haml +0 -8
  355. data/app/views/droom/scraps/thumbs/_text.html.haml +0 -8
  356. data/app/views/droom/scraps/thumbs/_video.html.haml +0 -6
  357. data/app/views/droom/users/_extra_columns_header.html.haml +0 -0
  358. data/app/views/droom/users/_extra_columns_note.html.haml +0 -0
  359. data/app/views/droom/users/_form.html.haml +0 -14
  360. data/app/views/droom/users/_password_fields.html.haml +0 -15
  361. data/app/views/droom/users/_user_or_person.html.haml +0 -72
  362. data/app/views/kaminari/_paginator.html.haml +0 -16
  363. data/lib/droom/dav_resource.rb +0 -36
  364. data/lib/droom/model_helpers.rb +0 -25
  365. data/lib/droom/routing.rb +0 -13
  366. data/spec/datasets/calendar_events_dataset.rb +0 -44
  367. data/spec/datasets/calendar_pages_dataset.rb +0 -8
  368. data/spec/datasets/calendar_sites_dataset.rb +0 -6
  369. data/spec/datasets/calendars_dataset.rb +0 -34
  370. data/spec/datasets/documents_dataset.rb +0 -28
  371. data/spec/datasets/recurrence_dataset.rb +0 -7
  372. data/spec/dummy/config/sunspot.yml +0 -17
  373. data/spec/dummy/log/dav.log +0 -1
  374. data/spec/dummy/log/development.log +0 -2
  375. data/spec/dummy/log/test.log +0 -1
  376. data/spec/dummy/solr/conf/admin-extra.html +0 -31
  377. data/spec/dummy/solr/conf/elevate.xml +0 -36
  378. data/spec/dummy/solr/conf/mapping-ISOLatin1Accent.txt +0 -246
  379. data/spec/dummy/solr/conf/protwords.txt +0 -21
  380. data/spec/dummy/solr/conf/schema.xml +0 -238
  381. data/spec/dummy/solr/conf/scripts.conf +0 -24
  382. data/spec/dummy/solr/conf/solrconfig.xml +0 -934
  383. data/spec/dummy/solr/conf/spellings.txt +0 -2
  384. data/spec/dummy/solr/conf/stopwords.txt +0 -58
  385. data/spec/dummy/solr/conf/synonyms.txt +0 -31
  386. data/spec/dummy/solr/data/development/index/segments.gen +0 -0
  387. data/spec/dummy/solr/data/development/index/segments_1 +0 -0
  388. data/spec/dummy/solr/data/development/spellchecker/segments.gen +0 -0
  389. data/spec/dummy/solr/data/development/spellchecker/segments_1 +0 -0
  390. data/spec/dummy/solr/data/test/index/segments.gen +0 -0
  391. data/spec/dummy/solr/data/test/index/segments_3nu +0 -0
  392. data/spec/dummy/solr/data/test/spellchecker/segments.gen +0 -0
  393. data/spec/dummy/solr/data/test/spellchecker/segments_1 +0 -0
  394. data/spec/factories/recurrence_rules.rb +0 -25
  395. data/spec/models/droom/person_spec.rb +0 -72
  396. data/spec/models/droom/recurrence_rule_spec.rb +0 -81
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ab8c3b83c6c232deae0ed212165e12a1b6045c17
4
+ data.tar.gz: 7bae079f2bbbdddf60255ca2a5662bfd1393598b
5
+ SHA512:
6
+ metadata.gz: b826b37d88e760021fa63381293353accc25414fe69bd1dd0519aba893280720b0e888eaab2cd68c2a0108e17b5dc05c2eef49df52c5629c2097d715574e4e0e
7
+ data.tar.gz: c002819dadb74bfbe2d31e9b327bc732175295ab7aff97fdd22b4574de89c66265aac271b2cba67778037dc96c6522c137f9a2c02ba1f8ea39b9565215d814c9
@@ -1,11 +1,14 @@
1
1
  #= require droom/lib/modernizr
2
2
  #= require jquery
3
- #= require jquery_ujs
3
+ #= require droom/lib/underscore
4
+ #= require droom/lib/jquery_ujs
4
5
  #= require droom/lib/ZeroClipboard
6
+ #= require droom/lib/swipe
5
7
  #= require droom/lib/jquery.animate-colors
8
+ #= require droom/lib/jquery.deserialize
6
9
  #= require droom/lib/jquery.sortable
7
10
  #= require droom/lib/jquery.cookie
8
- #= require droom/lib/kalendae
11
+ #= require droom/lib/jquery.datepicker
9
12
  #= require droom/lib/wysihtml5
10
13
  #= require droom/lib/parser_rules/advanced
11
14
  #= require droom/extensions
@@ -16,12 +19,10 @@
16
19
  #= require droom/widgets
17
20
  #= require droom/stream
18
21
  #= require droom/map
19
- #= require cropper
20
22
  #= require_self
21
23
 
22
24
  jQuery ($) ->
23
25
  $.activate_with () ->
24
- # console.log "activate", @
25
26
 
26
27
  @find_including_self('#flashes p:parent').flash()
27
28
  @find_including_self('[data-refreshable]').refresher()
@@ -35,8 +36,10 @@ jQuery ($) ->
35
36
  @find_including_self('[data-action="affect"]').affects()
36
37
  @find_including_self('[data-action="reveal"]').reveals()
37
38
  @find_including_self('[data-action="remove"]').removes()
39
+ @find_including_self('[data-action="remove_all"]').removes_all()
38
40
  @find_including_self('[data-action="copy"]').copier()
39
41
  @find_including_self('[data-action="column_toggle"]').column_expander()
42
+ @find_including_self('[data-action="setter"]').setter()
40
43
  @find_including_self('[data-action="toggle"]').toggle()
41
44
  @find_including_self('[data-action="twister"]').twister()
42
45
  @find_including_self('[data-action="alternate"]').alternator()
@@ -45,33 +48,36 @@ jQuery ($) ->
45
48
  @find_including_self('[data-action="slide"]').sliding_link()
46
49
  @find_including_self('[data-action="fit"]').self_sizes()
47
50
  @find_including_self('form[data-action="filter"]').filter_form()
51
+ @find_including_self('form[data-action="table_filter"]').table_filter_form()
52
+ @find_including_self('div[data-panel]').panel()
48
53
  @find_including_self('[data-menu]').action_menu()
49
- @find_including_self('td[data-hoverable]').hover_column()
54
+ @find_including_self('table[data-hoverable]').hover_table()
50
55
 
51
56
  # it's not very easy to add data attributes to kaminari pagination links
52
57
 
53
- @find_including_self('.pagination a').page_turner()
58
+ @find_including_self('.pagination.sliding a').page_turner()
54
59
 
55
60
  # and some shortcuts for compatibility
56
61
 
57
62
  @find_including_self('a.inline, a.fetch').replace_with_remote_content()
58
63
 
59
- # form widgets and input modification. These might move to [data-widget] markup.
64
+ # form widgets and input modification. These are moving to [data-role] markup.
60
65
 
61
66
  @find_including_self('.wysihtml').html_editable()
62
- @find_including_self('.venuepicker').venue_picker()
63
- @find_including_self('.datepicker').date_picker()
67
+ @find_including_self('[data-role="datepicker"]').date_picker()
64
68
  @find_including_self('.timepicker').time_picker()
65
- @find_including_self('.filepicker').file_picker()
66
69
  @find_including_self('.person_selector').person_selector()
67
70
  @find_including_self('.person_picker').person_picker()
68
71
  @find_including_self('.group_picker').group_picker()
69
72
  @find_including_self('.drag_sort').drag_sort()
70
- # @find_including_self('input.password').password_field()
71
73
  @find_including_self('form.password').password_form()
72
74
  @find_including_self('input[type="submit"]').submitter()
73
- @find_including_self('form.preferences').preferences_form()
74
75
  @find_including_self('form.scrap').scrap_form()
76
+ @find_including_self('[data-role="filepicker"]').file_picker()
77
+ @find_including_self('[data-role="imagepicker"]').image_picker()
78
+ @find_including_self('[data-role="youtubepicker"]').youtube_suggester()
79
+ @find_including_self('[data-role="venuepicker"]').venue_picker()
80
+ @find_including_self('[data-role="slug"]').slug_field()
75
81
 
76
82
  # page widgets
77
83
 
@@ -81,5 +87,9 @@ jQuery ($) ->
81
87
  @find_including_self('form.fancy').captive()
82
88
  @find_including_self('li.folder').folder()
83
89
  @find_including_self('form#suggestions').suggestion_form()
84
- @find_including_self('.panel').panel()
90
+
91
+ # stream slides
92
+
93
+ @find_including_self('.scrap.preload').add_to_stream()
94
+
85
95
  @
@@ -19,7 +19,7 @@
19
19
  # will replace the original event container and the small calendar display will be refreshed to show the possibly revised
20
20
  # date of the event.
21
21
  #
22
- # It is our hope that this simple non-architecture will make it easy to support a future pub-sub update.
22
+ # With any luck this simple non-architecture will make it easy to support a future pub-sub update.
23
23
 
24
24
  jQuery ($) ->
25
25
 
@@ -27,10 +27,13 @@ jQuery ($) ->
27
27
  #
28
28
  # refreshable, affected rules, etc.
29
29
 
30
- $.fn.refresher = () ->
30
+ $.fn.refresher = ->
31
31
  @each ->
32
32
  new Refresher @
33
33
 
34
+ $.fn.refresh = ->
35
+ @trigger('refresh')
36
+
34
37
  class Refresher
35
38
  constructor: (element) ->
36
39
  @_container = $(element)
@@ -42,15 +45,22 @@ jQuery ($) ->
42
45
  e.preventDefault()
43
46
  $.ajax @_url,
44
47
  dataType: "html"
48
+ beforeSend: @prep
45
49
  success: @replace
46
50
 
51
+ prep: (xhr, settings) =>
52
+ xhr.setRequestHeader('X-PJAX', 'true')
53
+ @_container.addClass('waiting')
54
+ true
55
+
47
56
  replace: (data, textStatus, jqXHR) =>
48
57
  replacement = $(data)
49
58
  @_container.fadeOut 'fast', () =>
50
59
  replacement.hide().insertAfter(@_container)
51
60
  @_container.remove()
52
61
  @_container = replacement
53
- @_container.activate().fadeIn('fast')
62
+ @_container.activate().fadeIn 'fast', () =>
63
+ @_container.signal_confirmation()
54
64
 
55
65
 
56
66
  # ## Actions
@@ -76,6 +86,23 @@ jQuery ($) ->
76
86
  $(@).remove()
77
87
  $(affected).trigger "refresh"
78
88
 
89
+ # The 'remove_all' action takes out on success anything matching the given selector:
90
+ #
91
+ # link_to t(:remove), service_url(service), :method => 'delete', :data => { :removes => "s_#{service.id}" }
92
+ #
93
+ # ...on success takes out every DOM element with the class "s_1".
94
+ #
95
+ $.fn.removes_all = () ->
96
+ @each ->
97
+ removed = $(@).attr('data-removed')
98
+ affected = $(@).attr('data-affected')
99
+
100
+ $(@).remote
101
+ on_success: (response) =>
102
+ $(removed).fadeOut 'fast', () ->
103
+ $(@).remove()
104
+ $(affected).trigger "refresh"
105
+
79
106
 
80
107
  $.fn.affects = () ->
81
108
  @each ->
@@ -104,14 +131,15 @@ jQuery ($) ->
104
131
  @each ->
105
132
  container = $(@).attr('data-replaced') || selector
106
133
  affected = $(@).attr('data-affected')
134
+ autoload = options['force'] || ($(@).attr('data-autoload')? && $(@).attr('data-autoload') isnt 'false')
107
135
  $(@).remote
108
- on_success: (r) =>
136
+ on_success: (e, r) =>
109
137
  replaced = $(@).self_or_ancestor(container).last()
110
138
  replacement = $(r).insertAfter(replaced)
111
139
  replaced?.remove()
112
140
  replacement.activate()
113
141
  $(affected).trigger('refresh')
114
- $(@).click() if options['force']
142
+ $(@).click() if autoload
115
143
 
116
144
 
117
145
 
@@ -126,6 +154,68 @@ jQuery ($) ->
126
154
  e.preventDefault() if e
127
155
 
128
156
 
157
+
158
+
159
+
160
+ # The setter action sets a single boolean object property by putting a single parameter to the link href.
161
+ # :property and :url data- attributes are required. True/false state is signalled by yes/no css class that
162
+ # presumably also affects apperance.
163
+ #
164
+ # As usual success can trigger the refreshment of other elements selected by the data-affected attribute.
165
+ #
166
+ # %a{:data => {:action => 'setter', :property => 'featured', url: "/api/threads/27/posts/32"}}
167
+ #
168
+ # will toggle on and off the 'featured' property of the resource at that address.
169
+ #
170
+ $.fn.setter = () ->
171
+ @each ->
172
+ new Setter(@)
173
+
174
+ class Setter
175
+ constructor: (element, @_root, @_property) ->
176
+ @_link = $(element)
177
+ @_root ?= @_link.attr('data-object')
178
+ @_property ?= @_link.attr('data-property')
179
+ @_positive = @_link.attr('data-positive') ? true
180
+ @_negative = @_link.attr('data-negative') ? false
181
+ @_affected = @_link.attr('data-affected')
182
+ @_link.bind "click", @toggle
183
+
184
+ data: (e) =>
185
+ data = {}
186
+ value = if @_link.hasClass('yes') then @_negative else @_positive
187
+ data[@_root] = {}
188
+ data[@_root][@_property] = value
189
+ data['_method'] = "PUT"
190
+ data
191
+
192
+ toggle: (e) =>
193
+ e.preventDefault() if e
194
+ value = !@_link.hasClass('yes')
195
+ data = {}
196
+ @_link.addClass('waiting')
197
+ $.ajax
198
+ url: @_link.attr('href')
199
+ type: "POST"
200
+ data: @data()
201
+ success: @update
202
+ error: @error
203
+
204
+ error: (xhr, status, error) =>
205
+ @_link.removeClass('waiting').signal_error()
206
+
207
+ update: (response) =>
208
+ @_link.removeClass('waiting')
209
+ if response[@_property]
210
+ @_link.addClass('yes').removeClass('no')
211
+ else
212
+ @_link.addClass('no').removeClass('yes')
213
+ $(@_affected).refresh()
214
+
215
+
216
+
217
+
218
+
129
219
  # The toggle action shows or hides the affected elements with cookie-based persistence across page
130
220
  # views. A link like this:
131
221
  #
@@ -193,7 +283,7 @@ jQuery ($) ->
193
283
  path: '/'
194
284
 
195
285
 
196
- # The collapser is a self-expanding unit. Basically a toggle. #todo: amalgamate!
286
+ # The collapser is a self-expanding unit. Basically, a toggle. #todo: amalgamate!
197
287
 
198
288
  $.fn.collapser = (options) ->
199
289
  @each ->
@@ -341,13 +431,17 @@ jQuery ($) ->
341
431
 
342
432
 
343
433
 
344
- $.fn.hover_column = ->
434
+ $.fn.hover_table = ->
435
+ @each ->
436
+ $(@).find('td').hover_cell()
437
+
438
+ $.fn.hover_cell = ->
345
439
  @each ->
346
440
  classes = @className.split(' ').join('.')
347
441
  $(@).bind "mouseenter", (e) ->
348
- $("td.#{classes}").addClass('hover')
442
+ $(".#{classes}").addClass('hover')
349
443
  $(@).bind "mouseleave", (e) ->
350
- $("td.#{classes}").removeClass('hover')
444
+ $(".#{classes}").removeClass('hover')
351
445
 
352
446
 
353
447
 
@@ -429,7 +523,7 @@ jQuery ($) ->
429
523
  index = child.index() + offset
430
524
  id = parseInt(child.attr('id').split("person_")[1], 10)
431
525
  $.ajax
432
- url: "/people/#{id}"
526
+ url: "/users/#{id}"
433
527
  type: "PUT"
434
528
  dataType: "JSON"
435
529
  data:
@@ -1,21 +1,12 @@
1
1
  ## Ajax transport
2
2
  #
3
- # We extend the standard rails jquery-ujs method with a standard response and failure handler. All our
4
- # remote operations are channelled through this class and use callbacks to affect the page during and
5
- # after the request.
3
+ # This is a wrapper around the standard jquer ujs ajax machinery. it gives us a more fine-grained set of callbacks
4
+ # and a central place to do some universal work like setting pjax headers and telling elements to wait.
6
5
  #
7
- # This isn't very clever or complicated but it gives us a standard channel that handles requests in a
8
- # consistent way. It applies a PJAX header and defines a simple callback interface that makes the rest
9
- # of our code more readable. In most cases it also allows us to omit the [data-remote] and [data-type]
10
- # attributes from links.
6
+ # The value of the remote: calls becomes more clear when we need to add more callbacks, eg from a widget like the
7
+ # filepicker, but perhaps they can disappear now that we've hacked up the ujs a bit.
11
8
  #
12
- # ### Callbacks
13
- #
14
- # * *on_prepare* is called when the remote control is first created. No arguments.
15
- # * *on_request* is called before the remote call. Arguments: [xhr]
16
- # * *on_error* is called if the server returns an error. Arguments: [xhr]
17
- # * *on_success* is called if the request is successful. Arguments: [response]
18
- # * *on_complete* is called after the request, whether successful or not. Arguments: [status]
9
+
19
10
  #
20
11
  jQuery ($) ->
21
12
 
@@ -34,47 +25,68 @@ jQuery ($) ->
34
25
  @_options = $.extend {}, opts
35
26
  @_control.attr('data-remote', true)
36
27
  @_control.attr('data-type', 'html')
28
+ @_fily = false
29
+
30
+ # catch the standard jquery_ujs events and route them to our status handlers,
37
31
  @_control.on 'ajax:beforeSend', @pend
38
32
  @_control.on 'ajax:error', @fail
39
33
  @_control.on 'ajax:success', @receive
34
+ @_control.on 'ajax:filedata', @gotFiles
35
+ @_control.on 'ajax:progress', @progress
36
+
37
+ # which trigger our own more fine-grained remote:* events
38
+ @_control.on 'remote:prepare', @_options.on_prepare
39
+ @_control.on 'remote:begin', @_options.on_request
40
+ @_control.on 'remote:progress', @_options.on_progress
41
+ @_control.on 'remote:error', @_options.on_error
42
+ @_control.on 'remote:success', @_options.on_success
43
+ @_control.on 'remote:complete', @_options.on_complete
44
+ @_control.on 'remote:cancel', @_options.on_cancel
40
45
  @activate()
41
46
 
42
47
  activate: () =>
43
48
  @_control.find('a.cancel').click @cancel
44
- @_options.on_prepare?()
49
+ @_control.trigger 'remote:prepare'
45
50
 
46
51
  pend: (event, xhr, settings) =>
47
52
  event.stopPropagation()
48
53
  event.preventDefault()
49
54
  xhr.setRequestHeader('X-PJAX', 'true')
50
55
  @_control.addClass('waiting')
51
- @_options.on_request?(xhr)
56
+ @_control.trigger 'remote:begin', xhr, settings
57
+ true
52
58
 
59
+ gotFiles: (event, elements) =>
60
+ @_control.trigger 'remote:upload'
61
+ true
62
+
63
+ progress: (e, prog) =>
64
+ @_control.trigger "remote:progress", prog
65
+
53
66
  fail: (event, xhr, status) =>
54
67
  event.stopPropagation()
55
68
  @_control.removeClass('waiting').addClass('erratic')
56
- @_options.on_error?(xhr)
57
- @_options.on_complete?(status)
58
-
69
+ @_control.trigger 'remote:error', xhr
70
+ @_control.trigger 'remote:complete', status
71
+
59
72
  # Note that there is no special provision here for a server side failure that results in a success response:
60
73
  # eg if validation fails and we get the form back again, this Remote will be considered successful and disappear.
61
74
  # In that case the function which triggered the remote operation is expected to do the right thing with the
62
75
  # returned html. Usually in that kind of situation you'd be using a popup, which checks for a returned form and
63
76
  # treats it as another iteration within the same window.
64
77
  #
65
- receive: (event, response, status) =>
78
+ receive: (event, data, status, xhr) =>
66
79
  event.stopPropagation()
67
80
  @_control.removeClass('waiting')
68
- @_options.on_success?(response)
69
- @_options.on_complete?(status)
81
+ @_control.trigger 'remote:success', data
82
+ @_control.trigger 'remote:complete', status
70
83
 
71
84
  cancel: (e) =>
72
85
  e.preventDefault() if e
73
- @_options.on_cancel?()
86
+ @_control.trigger 'remote:cancel'
74
87
  @_form?.remove()
75
88
 
76
89
 
77
-
78
90
 
79
91
 
80
92