droom 0.0.1 → 0.2.1

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 (459) hide show
  1. data/README.md +2 -2
  2. data/app/assets/images/droom/Untitled-1.png +0 -0
  3. data/app/assets/images/droom/acceptance.png +0 -0
  4. data/app/assets/images/droom/add.png +0 -0
  5. data/app/assets/images/droom/asterisk.png +0 -0
  6. data/app/assets/images/droom/asterisk_up.png +0 -0
  7. data/app/assets/images/droom/checkboxes.png +0 -0
  8. data/app/assets/images/droom/clear.png +0 -0
  9. data/app/assets/images/droom/cog.png +0 -0
  10. data/app/assets/images/droom/copy.png +0 -0
  11. data/app/assets/images/droom/copy_to_dropbox.png +0 -0
  12. data/app/assets/images/droom/crosses.png +0 -0
  13. data/app/assets/images/droom/dark_scrap_icons.png +0 -0
  14. data/app/assets/images/droom/defilter.png +0 -0
  15. data/app/assets/images/droom/delete.png +0 -0
  16. data/app/assets/images/droom/dropbox.png +0 -0
  17. data/app/assets/images/droom/dropbox_button.png +0 -0
  18. data/app/assets/images/droom/dropbox_button_small.png +0 -0
  19. data/app/assets/images/droom/edit.png +0 -0
  20. data/app/assets/images/droom/expand.png +0 -0
  21. data/app/assets/images/droom/expander.png +0 -0
  22. data/app/assets/images/droom/folder.png +0 -0
  23. data/app/assets/images/droom/image_box.png +0 -0
  24. data/app/assets/images/droom/in_dropbox.png +0 -0
  25. data/app/assets/images/droom/integration_buttons.png +0 -0
  26. data/app/assets/images/droom/leftright.png +0 -0
  27. data/app/assets/images/droom/manage.png +0 -0
  28. data/app/assets/images/droom/medium_object_icons.png +0 -0
  29. data/app/assets/images/droom/object_icons.png +0 -0
  30. data/app/assets/images/droom/playable.png +0 -0
  31. data/app/assets/images/droom/revoke.png +0 -0
  32. data/app/assets/images/droom/scrap_icons.png +0 -0
  33. data/app/assets/images/droom/search.png +0 -0
  34. data/app/assets/images/droom/small_asterisk.png +0 -0
  35. data/app/assets/images/droom/small_cog.png +0 -0
  36. data/app/assets/images/droom/small_download.png +0 -0
  37. data/app/assets/images/droom/small_image_box.png +0 -0
  38. data/app/assets/images/droom/smalladd.png +0 -0
  39. data/app/assets/images/droom/smallarrows.png +0 -0
  40. data/app/assets/images/droom/smallcopy.png +0 -0
  41. data/app/assets/images/droom/smalldelete.png +0 -0
  42. data/app/assets/images/droom/smalldownload.png +0 -0
  43. data/app/assets/images/droom/smalledit.png +0 -0
  44. data/app/assets/images/droom/smallmanage.png +0 -0
  45. data/app/assets/images/droom/star.png +0 -0
  46. data/app/assets/images/droom/symbols.png +0 -0
  47. data/app/assets/images/droom/tinyarrows.png +0 -0
  48. data/app/assets/images/droom/to_dropbox.png +0 -0
  49. data/app/assets/images/droom/twisty.png +0 -0
  50. data/app/assets/images/droom/youtube_icon.png +0 -0
  51. data/app/assets/javascripts/droom.js.coffee +62 -65
  52. data/app/assets/javascripts/droom/actions.js.coffee +492 -0
  53. data/app/assets/javascripts/droom/ajax.js.coffee +84 -0
  54. data/app/assets/javascripts/droom/{lib/extensions.js.coffee → extensions.js.coffee} +22 -15
  55. data/app/assets/javascripts/droom/lib/ZeroClipboard.js +334 -0
  56. data/app/assets/javascripts/droom/lib/ZeroClipboard.swf +0 -0
  57. data/app/assets/javascripts/droom/lib/ZeroClipboard10.swf +0 -0
  58. data/app/assets/javascripts/droom/map.js.coffee +124 -86
  59. data/app/assets/javascripts/droom/popups.js.coffee +252 -0
  60. data/app/assets/javascripts/droom/stream.js.coffee +92 -0
  61. data/app/assets/javascripts/droom/utilities.js.coffee +120 -0
  62. data/app/assets/javascripts/droom/widgets.js.coffee +1209 -0
  63. data/app/assets/stylesheets/_definitions.css.sass +189 -0
  64. data/app/assets/stylesheets/droom.css.sass +1429 -376
  65. data/app/assets/stylesheets/lib/_kalendae.css.sass +2 -5
  66. data/app/assets/stylesheets/lib/_popups.css.sass +86 -0
  67. data/app/assets/stylesheets/lib/_toolbar.css.sass +17 -11
  68. data/app/controllers/droom/agenda_categories_controller.rb +24 -0
  69. data/app/controllers/droom/calendars_controller.rb +29 -0
  70. data/app/controllers/droom/confirmations_controller.rb +38 -0
  71. data/app/controllers/droom/dashboard_controller.rb +2 -0
  72. data/app/controllers/droom/documents_controller.rb +42 -51
  73. data/app/controllers/droom/dropbox_tokens_controller.rb +61 -0
  74. data/app/controllers/droom/engine_controller.rb +8 -23
  75. data/app/controllers/droom/events_controller.rb +39 -27
  76. data/app/controllers/droom/folders_controller.rb +106 -0
  77. data/app/controllers/droom/group_invitations_controller.rb +15 -7
  78. data/app/controllers/droom/groups_controller.rb +4 -4
  79. data/app/controllers/droom/invitations_controller.rb +37 -9
  80. data/app/controllers/droom/memberships_controller.rb +5 -3
  81. data/app/controllers/droom/organisations_controller.rb +53 -0
  82. data/app/controllers/droom/people_controller.rb +46 -27
  83. data/app/controllers/droom/preferences_controller.rb +34 -0
  84. data/app/controllers/droom/scraps_controller.rb +77 -0
  85. data/app/controllers/droom/search_controller.rb +66 -0
  86. data/app/controllers/droom/suggestions_controller.rb +22 -35
  87. data/app/controllers/droom/users_controller.rb +69 -0
  88. data/app/controllers/droom/venues_controller.rb +1 -2
  89. data/app/controllers/droom/youtube_controller.rb +22 -0
  90. data/app/helpers/droom/droom_helper.rb +93 -5
  91. data/app/models/droom/agenda_category.rb +8 -1
  92. data/app/models/droom/calendar.rb +19 -0
  93. data/app/models/droom/category.rb +4 -6
  94. data/app/models/droom/document.rb +103 -64
  95. data/app/models/droom/document_attachment.rb +13 -47
  96. data/app/models/droom/dropbox_document.rb +41 -0
  97. data/app/models/droom/dropbox_token.rb +29 -0
  98. data/app/models/droom/event.rb +125 -90
  99. data/app/models/droom/folder.rb +134 -0
  100. data/app/models/droom/group.rb +68 -27
  101. data/app/models/droom/group_invitation.rb +12 -3
  102. data/app/models/droom/invitation.rb +50 -8
  103. data/app/models/droom/mailing_list_membership.rb +128 -0
  104. data/app/models/droom/membership.rb +71 -9
  105. data/app/models/droom/organisation.rb +22 -0
  106. data/app/models/droom/page.rb +3 -3
  107. data/app/models/droom/person.rb +180 -166
  108. data/app/models/droom/personal_folder.rb +31 -0
  109. data/app/models/droom/preference.rb +35 -0
  110. data/app/models/droom/recurrence_rule.rb +1 -1
  111. data/app/models/droom/scrap.rb +110 -0
  112. data/app/models/droom/tag.rb +120 -0
  113. data/app/models/droom/tagging.rb +13 -0
  114. data/app/models/droom/user.rb +211 -0
  115. data/app/models/droom/user_action_observer.rb +12 -0
  116. data/app/models/droom/venue.rb +56 -39
  117. data/app/views/cropper/uploads/_crop.html.haml +46 -0
  118. data/app/views/devise/mailer/confirmation_instructions.en.html.haml +24 -0
  119. data/app/views/devise/mailer/reset_password_instructions.en.html.haml +21 -0
  120. data/app/views/devise/passwords/edit.html.haml +31 -0
  121. data/app/views/devise/passwords/new.html.haml +21 -0
  122. data/app/views/devise/sessions/new.html.haml +33 -0
  123. data/app/views/droom/agenda_categories/_form.html.haml +22 -0
  124. data/app/views/droom/agenda_categories/new.html.haml +6 -0
  125. data/app/views/droom/calendars/_action_menu.html.haml +6 -0
  126. data/app/views/droom/calendars/index.html.haml +12 -0
  127. data/app/views/droom/calendars/show.rss.builder +0 -0
  128. data/app/views/droom/confirmations/show.html.haml +40 -0
  129. data/app/views/droom/dashboard/_calendar.html.haml +1 -0
  130. data/app/views/droom/dashboard/_folders.html.haml +5 -0
  131. data/app/views/droom/dashboard/_future_events.html.haml +18 -0
  132. data/app/views/droom/dashboard/_invitations.html.haml +1 -0
  133. data/app/views/droom/dashboard/_past_events.haml +14 -0
  134. data/app/views/droom/dashboard/_quicksearch.html.haml +6 -0
  135. data/app/views/droom/dashboard/_stream.html.haml +9 -0
  136. data/app/views/droom/dashboard/index.html.haml +5 -3
  137. data/app/views/droom/documents/_action_menu.html.haml +7 -0
  138. data/app/views/droom/documents/_documents.html.haml +5 -0
  139. data/app/views/droom/documents/_documents_list.html.haml +6 -6
  140. data/app/views/droom/documents/_documents_table.html.haml +29 -10
  141. data/app/views/droom/documents/_form.html.haml +3 -7
  142. data/app/views/droom/documents/_listing.html.haml +5 -6
  143. data/app/views/droom/documents/_pagination.html.haml +8 -0
  144. data/app/views/droom/documents/_search_result.html.haml +14 -0
  145. data/app/views/droom/documents/_suggested.html.haml +0 -5
  146. data/app/views/droom/documents/_table_document.html.haml +2 -8
  147. data/app/views/droom/documents/edit.html.haml +7 -1
  148. data/app/views/droom/documents/index.html.haml +10 -27
  149. data/app/views/droom/documents/new.html.haml +10 -1
  150. data/app/views/droom/dropbox_tokens/new.html.haml +6 -0
  151. data/app/views/droom/events/_action_menu.html.haml +15 -0
  152. data/app/views/droom/events/_event.html.haml +67 -57
  153. data/app/views/droom/events/_form.html.haml +15 -4
  154. data/app/views/droom/events/_invitations.html.haml +4 -19
  155. data/app/views/droom/events/_search_result.html.haml +19 -0
  156. data/app/views/droom/events/_views.html.haml +2 -2
  157. data/app/views/droom/events/edit.html.haml +7 -1
  158. data/app/views/droom/events/index.html.haml +27 -10
  159. data/app/views/droom/events/index.rss.builder +1 -1
  160. data/app/views/droom/events/new.html.haml +6 -1
  161. data/app/views/droom/events/show.html.haml +5 -1
  162. data/app/views/droom/folders/_action_menu.html.haml +14 -0
  163. data/app/views/droom/folders/_attachments.html.haml +3 -0
  164. data/app/views/droom/folders/_contents.html.haml +6 -0
  165. data/app/views/droom/folders/_folder.html.haml +20 -0
  166. data/app/views/droom/folders/_folders.html.haml +2 -0
  167. data/app/views/droom/folders/_form.html.haml +18 -0
  168. data/app/views/droom/folders/edit.html.haml +6 -0
  169. data/app/views/droom/folders/index.html.haml +32 -0
  170. data/app/views/droom/folders/new.html.haml +6 -0
  171. data/app/views/droom/folders/show.html.haml +1 -0
  172. data/app/views/droom/group_invitations/_form.html.haml +15 -4
  173. data/app/views/droom/group_invitations/new.html.haml +6 -1
  174. data/app/views/droom/groups/_action_menu.haml +11 -0
  175. data/app/views/droom/groups/_form.html.haml +10 -11
  176. data/app/views/droom/groups/_group.html.haml +9 -10
  177. data/app/views/droom/groups/_groups.html.haml +2 -3
  178. data/app/views/droom/groups/_search_result.html.haml +16 -0
  179. data/app/views/droom/groups/_suggested.html.haml +7 -0
  180. data/app/views/droom/groups/edit.html.haml +7 -1
  181. data/app/views/droom/groups/index.html.haml +6 -3
  182. data/app/views/droom/groups/new.html.haml +7 -0
  183. data/app/views/droom/groups/show.html.haml +1 -1
  184. data/app/views/droom/invitations/_created.html.haml +1 -1
  185. data/app/views/droom/invitations/_form.html.haml +9 -5
  186. data/app/views/droom/invitations/_invitation.html.haml +9 -0
  187. data/app/views/droom/invitations/_invitations.html.haml +8 -0
  188. data/app/views/droom/invitations/new.html.haml +6 -1
  189. data/app/views/droom/memberships/_member.html.haml +1 -1
  190. data/app/views/droom/memberships/_membership_toggle.html.haml +10 -0
  191. data/app/views/droom/memberships/new.html.haml +10 -0
  192. data/app/views/droom/organisations/_action_menu.html.haml +7 -0
  193. data/app/views/droom/organisations/_form.html.haml +25 -0
  194. data/app/views/droom/organisations/_organisation.html.haml +23 -0
  195. data/app/views/droom/organisations/_organisations.html.haml +2 -0
  196. data/app/views/droom/organisations/_suggested.html.haml +7 -0
  197. data/app/views/droom/organisations/edit.html.haml +6 -0
  198. data/app/views/droom/organisations/index.html.haml +20 -0
  199. data/app/views/droom/organisations/new.html.haml +6 -0
  200. data/app/views/droom/organisations/show.html.haml +1 -0
  201. data/app/views/droom/pages/_full_page.html.haml +1 -1
  202. data/app/views/droom/pages/index.html.haml +1 -1
  203. data/app/views/droom/panels/_account.html.haml +16 -0
  204. data/app/views/droom/panels/_admin.html.haml +23 -0
  205. data/app/views/droom/panels/_devices.html.haml +19 -0
  206. data/app/views/droom/panels/_dropbox.html.haml +17 -0
  207. data/app/views/droom/panels/_email.html.haml +16 -0
  208. data/app/views/droom/panels/_keywords.html.haml +3 -0
  209. data/app/views/droom/panels/_networks.html.haml +3 -0
  210. data/app/views/droom/panels/_readers.html.haml +18 -0
  211. data/app/views/droom/panels/_rss.html.haml +10 -0
  212. data/app/views/droom/panels/_search.html.haml +16 -0
  213. data/app/views/droom/panels/_vcal.html.haml +3 -0
  214. data/app/views/droom/people/_action_menu.html.haml +22 -0
  215. data/app/views/droom/people/_form.html.haml +69 -39
  216. data/app/views/droom/people/_listing.html.haml +19 -0
  217. data/app/views/droom/people/_memberships.html.haml +24 -0
  218. data/app/views/droom/people/_people.html.haml +5 -29
  219. data/app/views/droom/people/_person.html.haml +30 -32
  220. data/app/views/droom/people/_search_result.html.haml +14 -0
  221. data/app/views/droom/people/_suggested.html.haml +10 -5
  222. data/app/views/droom/people/edit.html.haml +9 -1
  223. data/app/views/droom/people/index.html.haml +6 -9
  224. data/app/views/droom/people/new.html.haml +6 -1
  225. data/app/views/droom/people/show.html.haml +1 -1
  226. data/app/views/droom/preferences/_checkbox.html.haml +7 -0
  227. data/app/views/droom/preferences/_radio_set.html.haml +9 -0
  228. data/app/views/droom/scraps/_action_menu.html.haml +9 -0
  229. data/app/views/droom/scraps/_caption.html.haml +9 -0
  230. data/app/views/droom/scraps/_credit.html.haml +10 -0
  231. data/app/views/droom/scraps/_form.html.haml +77 -0
  232. data/app/views/droom/scraps/_heading.html.haml +16 -0
  233. data/app/views/droom/scraps/_scrap.html.haml +17 -0
  234. data/app/views/droom/scraps/_search_result.html.haml +5 -0
  235. data/app/views/droom/scraps/_stream.html.haml +4 -0
  236. data/app/views/droom/scraps/_suggested.html.haml +5 -0
  237. data/app/views/droom/scraps/_thumb.html.haml +5 -0
  238. data/app/views/droom/scraps/edit.html.haml +2 -0
  239. data/app/views/droom/scraps/full/_document.html.haml +6 -0
  240. data/app/views/droom/scraps/full/_event.html.haml +20 -0
  241. data/app/views/droom/scraps/full/_image.html.haml +4 -0
  242. data/app/views/droom/scraps/full/_link.html.haml +5 -0
  243. data/app/views/droom/scraps/full/_quote.html.haml +8 -0
  244. data/app/views/droom/scraps/full/_text.html.haml +4 -0
  245. data/app/views/droom/scraps/full/_video.html.haml +4 -0
  246. data/app/views/droom/scraps/index.atom.builder +26 -0
  247. data/app/views/droom/scraps/index.html.haml +15 -0
  248. data/app/views/droom/scraps/new.html.haml +2 -0
  249. data/app/views/droom/scraps/show.html.haml +4 -0
  250. data/app/views/droom/scraps/thumbs/_document.html.haml +9 -0
  251. data/app/views/droom/scraps/thumbs/_event.html.haml +17 -0
  252. data/app/views/droom/scraps/thumbs/_image.html.haml +6 -0
  253. data/app/views/droom/scraps/thumbs/_link.html.haml +10 -0
  254. data/app/views/droom/scraps/thumbs/_quote.html.haml +8 -0
  255. data/app/views/droom/scraps/thumbs/_text.html.haml +8 -0
  256. data/app/views/droom/scraps/thumbs/_video.html.haml +6 -0
  257. data/app/views/droom/shared/_controls.html.haml +5 -3
  258. data/app/views/droom/shared/_excerpt.html.haml +2 -0
  259. data/app/views/droom/shared/_navigation.html.haml +4 -4
  260. data/app/views/droom/shared/_panels.html.haml +4 -0
  261. data/app/views/droom/shared/_quicklinks.html.haml +5 -0
  262. data/app/views/droom/shared/_search_form.html.haml +2 -1
  263. data/app/views/droom/shared/_search_results.html.haml +9 -0
  264. data/app/views/droom/shared/_suggestions.html.haml +13 -9
  265. data/app/views/droom/shared/_title_excerpt.haml +2 -0
  266. data/app/views/droom/shared/search.html.haml +18 -0
  267. data/app/views/droom/users/_confirmation.html.haml +2 -0
  268. data/app/views/droom/users/_dropbox_status.html.haml +2 -0
  269. data/app/views/droom/users/_form.html.haml +34 -0
  270. data/app/views/droom/users/_user.html.haml +2 -0
  271. data/app/views/droom/users/_user_or_person.html.haml +63 -0
  272. data/app/views/droom/users/_users_table.html.haml +17 -0
  273. data/app/views/droom/users/edit.html.haml +10 -0
  274. data/app/views/droom/users/index.html.haml +42 -0
  275. data/app/views/droom/users/unwelcome.en.html.haml +17 -0
  276. data/app/views/droom/venues/_search_result.html.haml +17 -0
  277. data/app/views/droom/youtube/show.html.haml +12 -0
  278. data/app/views/kaminari/_paginator.html.haml +16 -0
  279. data/app/views/layouts/droom/application.html.haml +17 -17
  280. data/app/views/layouts/droom/email.html.haml +59 -0
  281. data/config/cucumber.yml +8 -0
  282. data/config/initializers/devise.rb +240 -0
  283. data/config/locales/devise.en.yml +58 -0
  284. data/config/locales/en.yml +203 -32
  285. data/config/routes.rb +55 -16
  286. data/config/sunspot.yml +17 -0
  287. data/db/migrate/20121120115447_tags.rb +18 -0
  288. data/db/migrate/20130116155331_dropbox_tokens.rb +9 -0
  289. data/db/migrate/20130118103540_folders.rb +47 -0
  290. data/db/migrate/20130124113715_preferences.rb +10 -0
  291. data/db/migrate/20130125132427_users_in_droom.rb +58 -0
  292. data/db/migrate/20130129142307_mobile_phones.rb +7 -0
  293. data/db/migrate/20130130120124_folder_ancestry_to_parents.rb +7 -0
  294. data/db/migrate/20130131161430_mailing_lists.rb +37 -0
  295. data/db/migrate/20130207091903_preference_uuids.rb +5 -0
  296. data/db/migrate/20130207123614_stream.rb +13 -0
  297. data/db/migrate/20130208035113_access_token_secret.rb +5 -0
  298. data/db/migrate/20130214145014_person_image.rb +9 -0
  299. data/db/migrate/20130217152644_devise_confirmable.rb +13 -0
  300. data/db/migrate/20130225095328_create_droom_calendars.rb +20 -0
  301. data/db/migrate/20130226092944_give_scraps_document.rb +5 -0
  302. data/db/migrate/20130228083509_privateness.rb +9 -0
  303. data/db/migrate/20130228134143_store_metadata.rb +5 -0
  304. data/db/migrate/20130305150648_folders_nicely.rb +6 -0
  305. data/db/migrate/20130305151936_niceties.rb +7 -0
  306. data/db/migrate/20130308103807_create_droom_dropbox_documents.rb +11 -0
  307. data/db/migrate/20130308154552_dropbox_documents_changed.rb +5 -0
  308. data/db/migrate/20130326135738_user_titles.rb +5 -0
  309. data/lib/droom.rb +189 -22
  310. data/lib/droom/engine.rb +6 -1
  311. data/lib/droom/folders.rb +106 -0
  312. data/lib/droom/lazy_hash.rb +73 -0
  313. data/lib/droom/{helpers.rb → model_helpers.rb} +1 -1
  314. data/lib/droom/monkeys.rb +21 -2
  315. data/lib/droom/routing.rb +13 -0
  316. data/lib/droom/searchability.rb +25 -0
  317. data/lib/droom/taggability.rb +60 -0
  318. data/lib/droom/title_case.rb +101 -0
  319. data/lib/droom/user_config.rb +67 -0
  320. data/lib/droom/validators.rb +6 -0
  321. data/lib/droom/version.rb +1 -1
  322. data/lib/generators/droom/install/templates/droom_initializer.rb +0 -1
  323. data/lib/tasks/cucumber.rake +65 -0
  324. data/spec/datasets/calendar_events_dataset.rb +44 -0
  325. data/spec/datasets/calendar_pages_dataset.rb +8 -0
  326. data/spec/datasets/calendar_sites_dataset.rb +6 -0
  327. data/spec/datasets/calendars_dataset.rb +34 -0
  328. data/spec/datasets/documents_dataset.rb +28 -0
  329. data/spec/datasets/recurrence_dataset.rb +7 -0
  330. data/spec/dummy/README.rdoc +261 -0
  331. data/spec/dummy/Rakefile +7 -0
  332. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  333. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  334. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  335. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  336. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  337. data/spec/dummy/config.ru +4 -0
  338. data/spec/dummy/config/application.rb +65 -0
  339. data/spec/dummy/config/boot.rb +10 -0
  340. data/spec/dummy/config/database.yml +21 -0
  341. data/spec/dummy/config/environment.rb +5 -0
  342. data/spec/dummy/config/environments/development.rb +38 -0
  343. data/spec/dummy/config/environments/production.rb +67 -0
  344. data/spec/dummy/config/environments/test.rb +38 -0
  345. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  346. data/spec/dummy/config/initializers/inflections.rb +15 -0
  347. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  348. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  349. data/spec/dummy/config/initializers/session_store.rb +8 -0
  350. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  351. data/spec/dummy/config/locales/en.yml +7 -0
  352. data/spec/dummy/config/routes.rb +3 -0
  353. data/spec/dummy/config/sunspot.yml +17 -0
  354. data/spec/dummy/db/migrate/20120911070124_create_droom_data.droom.rb +135 -0
  355. data/spec/dummy/db/migrate/20120921094604_agenda_sections.droom.rb +14 -0
  356. data/spec/dummy/db/migrate/20120921094605_add_postal_address_to_people.droom.rb +11 -0
  357. data/spec/dummy/db/migrate/20121102064845_give_groups_descriptions.droom.rb +6 -0
  358. data/spec/dummy/db/migrate/20121102064846_more_names.droom.rb +6 -0
  359. data/spec/dummy/db/migrate/20121102064847_event_agenda_sections.droom.rb +14 -0
  360. data/spec/dummy/db/migrate/20121102064848_create_group_invitations.droom.rb +11 -0
  361. data/spec/dummy/db/migrate/20121102064849_give_people_positions.droom.rb +6 -0
  362. data/spec/dummy/db/migrate/20121102064850_help_pages.droom.rb +14 -0
  363. data/spec/dummy/db/migrate/20121102064851_category_slugs.droom.rb +6 -0
  364. data/spec/dummy/db/migrate/20121102064852_document_links.droom.rb +15 -0
  365. data/spec/dummy/db/migrate/20121102064853_people_visibility.droom.rb +8 -0
  366. data/spec/dummy/db/migrate/20121102094820_shy_people.droom.rb +6 -0
  367. data/spec/dummy/db/migrate/20121102095927_visibility_defaults.droom.rb +10 -0
  368. data/spec/dummy/db/migrate/20130121122352_tags.droom.rb +19 -0
  369. data/spec/dummy/db/migrate/20130121122353_dropbox.droom.rb +10 -0
  370. data/spec/dummy/db/migrate/20130121122354_folders.droom.rb +48 -0
  371. data/spec/dummy/db/migrate/20130128142902_memberships_expire.droom.rb +6 -0
  372. data/spec/dummy/db/migrate/20130128142903_give_documents_extracted_text.droom.rb +6 -0
  373. data/spec/dummy/db/migrate/20130128142904_preferences.droom.rb +11 -0
  374. data/spec/dummy/db/migrate/20130128142905_users_in_droom.droom.rb +59 -0
  375. data/spec/dummy/db/migrate/20130130120631_folder_ancestry_to_parents.droom.rb +8 -0
  376. data/spec/dummy/db/migrate/20130201103737_mobile_phones.droom.rb +8 -0
  377. data/spec/dummy/db/migrate/20130201103738_mailing_lists.droom.rb +38 -0
  378. data/spec/dummy/db/schema.rb +327 -0
  379. data/spec/dummy/log/sunspot-solr-test.log.1 +222 -0
  380. data/spec/dummy/public/404.html +26 -0
  381. data/spec/dummy/public/422.html +26 -0
  382. data/spec/dummy/public/500.html +25 -0
  383. data/spec/dummy/public/favicon.ico +0 -0
  384. data/spec/dummy/public/system/droom/documents/files/000/000/001/original/frog.png +0 -0
  385. data/spec/dummy/public/system/droom/documents/files/000/000/001/original/rat.png +0 -0
  386. data/spec/dummy/script/rails +6 -0
  387. data/spec/dummy/solr/conf/admin-extra.html +31 -0
  388. data/spec/dummy/solr/conf/elevate.xml +36 -0
  389. data/spec/dummy/solr/conf/mapping-ISOLatin1Accent.txt +246 -0
  390. data/spec/dummy/solr/conf/protwords.txt +21 -0
  391. data/spec/dummy/solr/conf/schema.xml +238 -0
  392. data/spec/dummy/solr/conf/scripts.conf +24 -0
  393. data/spec/dummy/solr/conf/solrconfig.xml +934 -0
  394. data/spec/dummy/solr/conf/spellings.txt +2 -0
  395. data/spec/dummy/solr/conf/stopwords.txt +58 -0
  396. data/spec/dummy/solr/conf/synonyms.txt +31 -0
  397. data/spec/dummy/solr/data/development/index/segments.gen +0 -0
  398. data/spec/dummy/solr/data/development/index/segments_1 +0 -0
  399. data/spec/dummy/solr/data/development/spellchecker/segments.gen +0 -0
  400. data/spec/dummy/solr/data/development/spellchecker/segments_1 +0 -0
  401. data/spec/dummy/solr/data/test/index/segments.gen +0 -0
  402. data/spec/dummy/solr/data/test/index/segments_3nu +0 -0
  403. data/spec/dummy/solr/data/test/spellchecker/segments.gen +0 -0
  404. data/spec/dummy/solr/data/test/spellchecker/segments_1 +0 -0
  405. data/spec/dummy/webdav/1/group/rat.png +0 -0
  406. data/spec/dummy/webdav/1/unattached/rat.png +0 -0
  407. data/spec/dummy/webdav/group/rat.png +0 -0
  408. data/spec/dummy/webdav/unattached/rat.png +0 -0
  409. data/spec/dummy/webdav/unattached/rat_v1.png +0 -0
  410. data/spec/factories/agenda_categories.rb +5 -0
  411. data/spec/factories/categories.rb +5 -0
  412. data/spec/factories/documents.rb +16 -0
  413. data/spec/factories/events.rb +41 -0
  414. data/spec/factories/folders.rb +5 -0
  415. data/spec/factories/groups.rb +6 -0
  416. data/spec/factories/memberships.rb +5 -0
  417. data/spec/factories/people.rb +16 -0
  418. data/spec/factories/recurrence_rules.rb +25 -0
  419. data/spec/factories/user.rb +6 -0
  420. data/spec/fixtures/dummy.ics +59 -0
  421. data/spec/fixtures/images/frog.png +0 -0
  422. data/spec/fixtures/images/rat.png +0 -0
  423. data/spec/fixtures/ny.ics +36 -0
  424. data/spec/lib/droom/folders_spec.rb +46 -0
  425. data/spec/lib/droom/lazy_hash_spec.rb +33 -0
  426. data/spec/models/droom/agenda_category_spec.rb +15 -0
  427. data/spec/models/droom/document_spec.rb +76 -0
  428. data/spec/models/droom/event_spec.rb +154 -0
  429. data/spec/models/droom/folder_spec.rb +5 -0
  430. data/spec/models/droom/ical_spec.rb +62 -0
  431. data/spec/models/droom/mailing_list_membership_spec.rb +81 -0
  432. data/spec/models/droom/membership_spec.rb +22 -0
  433. data/spec/models/droom/person_spec.rb +72 -0
  434. data/spec/models/droom/recurrence_rule_spec.rb +81 -0
  435. data/spec/models/droom/user_spec.rb +27 -0
  436. data/spec/models/droom/visibility_spec.rb +6 -0
  437. data/spec/spec_helper.rb +119 -0
  438. data/spec/support/matchers/content_type_matcher.rb +17 -0
  439. metadata +591 -36
  440. data/app/assets/javascripts/droom/calendar.js.coffee +0 -121
  441. data/app/assets/javascripts/droom/drag_sort.js.coffee +0 -22
  442. data/app/assets/javascripts/droom/forms.js.coffee +0 -746
  443. data/app/assets/javascripts/droom/sort.js.coffee +0 -126
  444. data/app/assets/javascripts/droom/suggester.js.coffee +0 -230
  445. data/app/controllers/droom/document_attachments_controller.rb +0 -19
  446. data/app/models/droom/document_link.rb +0 -31
  447. data/app/models/droom/personal_document.rb +0 -98
  448. data/app/views/droom/dashboard/_marginalia.html.haml +0 -3
  449. data/app/views/droom/dashboard/_my_future_events.html.haml +0 -9
  450. data/app/views/droom/dashboard/_my_group_documents.html.haml +0 -6
  451. data/app/views/droom/dashboard/_my_past_events.haml +0 -6
  452. data/app/views/droom/documents/_event_document_form.html.haml +0 -15
  453. data/app/views/droom/errors/bang.html.haml +0 -12
  454. data/app/views/droom/errors/not_allowed.html.haml +0 -12
  455. data/app/views/droom/errors/not_found.html.haml +0 -12
  456. data/app/views/droom/events/_attachment.html.haml +0 -1
  457. data/app/views/droom/events/_attachment_list.html.haml +0 -4
  458. data/app/views/droom/invitations/_attending_people.html.haml +0 -8
  459. data/config/initializers/dav.rb +0 -2
@@ -0,0 +1,18 @@
1
+ class Tags < ActiveRecord::Migration
2
+ def change
3
+ create_table :droom_tags do |t|
4
+ t.column :name, :string
5
+ t.column :parent_id, :integer
6
+ t.column :created_by_id, :integer
7
+ t.timestamps
8
+ end
9
+
10
+ create_table :droom_taggings do |t|
11
+ t.column :tag_id, :integer
12
+ t.column :taggee_id, :integer
13
+ t.column :taggee_type, :string
14
+ t.column :created_by_id, :integer
15
+ t.timestamps
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,9 @@
1
+ class DropboxTokens < ActiveRecord::Migration
2
+ def change
3
+ create_table :droom_dropbox_tokens do |t|
4
+ t.column :created_by_id, :integer
5
+ t.column :access_token, :string
6
+ t.timestamps
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,47 @@
1
+ class Folders < ActiveRecord::Migration
2
+ def change
3
+ create_table :droom_folders do |t|
4
+ t.string :slug
5
+ t.string :holder_type
6
+ t.string :holder_id
7
+ t.string :ancestry
8
+ t.boolean :public, :default => 0
9
+ t.integer :created_by_id
10
+ t.timestamps
11
+ end
12
+ add_index :droom_folders, :ancestry
13
+
14
+ create_table :droom_personal_folders do |t|
15
+ t.integer :folder_id
16
+ t.integer :person_id
17
+ t.timestamps
18
+ end
19
+
20
+ add_column :droom_documents, :folder_id, :integer
21
+ add_index :droom_documents, :folder_id
22
+
23
+ add_column :droom_personal_documents, :personal_folder_id, :integer
24
+ add_index :droom_personal_documents, :personal_folder_id
25
+
26
+ # folders will be lazy-loaded when they are needed, so:
27
+ # transmute document-attachments into document->folder->holder associations
28
+ # taking care to create agenda_category buckets as required.
29
+
30
+ Droom::DocumentAttachment.all.each do |da|
31
+ if da.category
32
+ da.attachee.find_or_create_agenda_category(da.category).receive_document(da.document)
33
+ else
34
+ da.attachee.receive_document da.document
35
+ end
36
+ end
37
+
38
+ # trigger the creation of personal folders from invitations and memberships
39
+
40
+ Droom::Invitation.all.map(&:link_folder)
41
+ Droom::Membership.all.map(&:link_folder)
42
+
43
+ # drop_table :document_links
44
+ # drop_table :document_attachments
45
+ end
46
+
47
+ end
@@ -0,0 +1,10 @@
1
+ class Preferences < ActiveRecord::Migration
2
+ def change
3
+ create_table :droom_preferences do |t|
4
+ t.integer :created_by_id
5
+ t.string :key
6
+ t.string :value
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,58 @@
1
+ class UsersInDroom < ActiveRecord::Migration
2
+ def change
3
+ if ActiveRecord::Base.connection.table_exists? 'users'
4
+ rename_table :users, :droom_users
5
+
6
+ else
7
+ create_table(:droom_users) do |t|
8
+ t.string :name
9
+ t.string :forename
10
+ t.boolean :admin, :default => false
11
+ t.datetime :activated_at
12
+ t.datetime :invited_at
13
+ t.datetime :invited_by_id
14
+ t.datetime :reminded_at
15
+
16
+ ## Database authenticatable
17
+ t.string :email, :null => false, :default => ""
18
+ t.string :encrypted_password, :null => false, :default => ""
19
+
20
+ ## Recoverable
21
+ t.string :reset_password_token
22
+ t.datetime :reset_password_sent_at
23
+
24
+ ## Rememberable
25
+ t.datetime :remember_created_at
26
+
27
+ ## Trackable
28
+ t.integer :sign_in_count, :default => 0
29
+ t.datetime :current_sign_in_at
30
+ t.datetime :last_sign_in_at
31
+ t.string :current_sign_in_ip
32
+ t.string :last_sign_in_ip
33
+
34
+ ## Confirmable
35
+ # t.string :confirmation_token
36
+ # t.datetime :confirmed_at
37
+ # t.datetime :confirmation_sent_at
38
+ # t.string :unconfirmed_email # Only if using reconfirmable
39
+
40
+ ## Lockable
41
+ # t.integer :failed_attempts, :default => 0 # Only if lock strategy is :failed_attempts
42
+ # t.string :unlock_token # Only if unlock strategy is :email or :both
43
+ # t.datetime :locked_at
44
+
45
+ ## Token authenticatable
46
+ t.string :authentication_token
47
+
48
+ ## Encryptable
49
+ t.string :password_salt
50
+
51
+ t.timestamps
52
+ end
53
+ add_index :droom_users, :email, :unique => true
54
+ add_index :droom_users, :reset_password_token, :unique => true
55
+
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,7 @@
1
+ class MobilePhones < ActiveRecord::Migration
2
+ def change
3
+ add_column :droom_people, :mobile, :string
4
+ add_column :droom_people, :dob, :datetime
5
+ add_column :droom_people, :female, :boolean
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ class FolderAncestryToParents < ActiveRecord::Migration
2
+ def change
3
+ change_column :droom_folders, :ancestry, :integer
4
+ rename_column :droom_folders, :ancestry, :parent_id
5
+ remove_index :droom_folders, :ancestry
6
+ end
7
+ end
@@ -0,0 +1,37 @@
1
+ class MailingLists < ActiveRecord::Migration
2
+ def change
3
+ # One option for mailing list configuration is to point mailman at this table.
4
+ # The other, much more likely, is to define a mailman_production environment
5
+ # and point it at your existing mailman database.
6
+ #
7
+ create_table :droom_mailing_list_memberships do |t|
8
+ t.integer :membership_id
9
+ t.string :address
10
+ t.string :listname
11
+ t.string :hide # These should all be enum(Y,N) really
12
+ t.string :nomail # since we're mimicking a cranky old
13
+ t.string :ack # mailman table, but this should work.
14
+ t.string :not_metoo #
15
+ t.string :digest #
16
+ t.string :plain #
17
+ t.string :one_last_digest #
18
+ t.string :password
19
+ t.string :lang
20
+ t.string :name
21
+ t.integer :user_options
22
+ t.integer :delivery_status
23
+ t.string :topics_userinterest
24
+ t.string :topics_userinterest
25
+ t.datetime :delivery_status_timestamp
26
+ t.string :bi_cookie
27
+ t.string :bi_score
28
+ t.string :bi_noticesleft
29
+ t.date :bi_lastnotice
30
+ t.date :bi_date
31
+ end
32
+ add_index :droom_mailing_list_memberships, :membership_id
33
+ add_index :droom_mailing_list_memberships, [:address, :listname]
34
+
35
+ add_column :droom_groups, :mailing_list_name, :string
36
+ end
37
+ end
@@ -0,0 +1,5 @@
1
+ class PreferenceUuids < ActiveRecord::Migration
2
+ def change
3
+ add_column :droom_preferences, :uuid, :string
4
+ end
5
+ end
@@ -0,0 +1,13 @@
1
+ class Stream < ActiveRecord::Migration
2
+ def change
3
+ create_table :droom_scraps do |t|
4
+ t.string :name
5
+ t.text :body
6
+ t.cropped_attachment :image
7
+ t.integer :created_by_id
8
+ t.string :scraptype
9
+ t.string :note
10
+ t.timestamps
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ class AccessTokenSecret < ActiveRecord::Migration
2
+ def change
3
+ add_column :droom_dropbox_tokens, :access_token_secret, :string
4
+ end
5
+ end
@@ -0,0 +1,9 @@
1
+ class PersonImage < ActiveRecord::Migration
2
+ def up
3
+ add_upload :droom_people, :image
4
+ end
5
+
6
+ def down
7
+ remove_upload :droom_people, :image
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ class DeviseConfirmable < ActiveRecord::Migration
2
+ def change
3
+ add_column :droom_users, :confirmation_token, :string
4
+ add_column :droom_users, :confirmed_at, :datetime
5
+ add_column :droom_users, :confirmation_sent_at, :datetime
6
+ add_column :droom_users, :unconfirmed_email, :string
7
+ add_index :droom_users, :confirmation_token, :unique => true
8
+
9
+ remove_column :droom_users, :invited_at
10
+ remove_column :droom_users, :invited_by_id
11
+ remove_column :droom_users, :activated_at
12
+ end
13
+ end
@@ -0,0 +1,20 @@
1
+ class CreateDroomCalendars < ActiveRecord::Migration
2
+ def change
3
+ create_table :droom_calendars do |t|
4
+ t.integer :id
5
+ t.string :name
6
+ t.string :slug
7
+ t.boolean :events_private, :default => false
8
+ t.boolean :documents_private, :default => false
9
+ t.integer :created_by_id
10
+ t.timestamps
11
+ end
12
+ add_index :droom_calendars, :slug
13
+
14
+ add_column :droom_events, :calendar_id, :integer
15
+ add_index :droom_events, :calendar_id
16
+
17
+ add_column :droom_scraps, :event_id, :integer
18
+ add_index :droom_scraps, :event_id
19
+ end
20
+ end
@@ -0,0 +1,5 @@
1
+ class GiveScrapsDocument < ActiveRecord::Migration
2
+ def up
3
+ add_column :droom_scraps, :document_id, :integer
4
+ end
5
+ end
@@ -0,0 +1,9 @@
1
+ class Privateness < ActiveRecord::Migration
2
+ def change
3
+ add_column :droom_folders, :private, :boolean
4
+ rename_column :droom_documents, :secret, :private
5
+ rename_column :droom_people, :shy, :private
6
+ add_column :droom_groups, :private, :boolean
7
+ add_column :droom_groups, :public, :boolean
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ class StoreMetadata < ActiveRecord::Migration
2
+ def change
3
+ add_column :droom_documents, :extracted_metadata, :text
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ class FoldersNicely < ActiveRecord::Migration
2
+ def change
3
+ add_column :droom_folders, :name, :string
4
+ Droom::Folder.all.map(&:get_name_from_holder)
5
+ end
6
+ end
@@ -0,0 +1,7 @@
1
+ class Niceties < ActiveRecord::Migration
2
+ def change
3
+ add_column :droom_invitations, :response, :integer, :default => 1
4
+ add_column :droom_groups, :privileged, :boolean, :default => false
5
+ add_column :droom_people, :privileged, :boolean, :default => false
6
+ end
7
+ end
@@ -0,0 +1,11 @@
1
+ class CreateDroomDropboxDocuments < ActiveRecord::Migration
2
+ def change
3
+ create_table :droom_dropbox_documents do |t|
4
+ t.integer :person_id
5
+ t.string :path
6
+ t.integer :document_id
7
+ t.boolean :deleted
8
+ t.timestamps
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ class DropboxDocumentsChanged < ActiveRecord::Migration
2
+ def change
3
+ rename_column :droom_dropbox_documents, :deleted, :modified
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class UserTitles < ActiveRecord::Migration
2
+ def change
3
+ add_column :droom_users, :title, :string
4
+ end
5
+ end
@@ -1,34 +1,85 @@
1
1
  require 'dav4rack'
2
- require 'dav4rack/file_resource'
2
+ require 'dav4rack/resources/file_resource'
3
3
  require "droom/monkeys"
4
- require "droom/helpers"
4
+ require "droom/lazy_hash"
5
+ require "droom/model_helpers"
5
6
  require "droom/renderers"
6
7
  require "droom/engine"
7
8
  require "droom/validators"
8
9
  require "droom/dav_resource"
10
+ require "droom/searchability"
11
+ require "droom/taggability"
12
+ require "droom/folders"
9
13
  require "snail"
10
14
 
11
15
  module Droom
12
- mattr_accessor :user_class, :layout, :sign_in_path, :sign_out_path, :user_class, :root_path, :active_dashboard_modules, :dav_root, :dav_subdomain, :use_forenames, :show_venue_map, :people_sort
16
+ # Droom configuration is handled by accessors on the Droom base module.
17
+ # Boolean items also offer the interrogative form.
18
+
19
+ mattr_accessor :root_path,
20
+ :suggestible_classes,
21
+ :searchable_classes,
22
+ :yt_client,
23
+ :layout,
24
+ :email_layout,
25
+ :email_host,
26
+ :email_from,
27
+ :email_from_name,
28
+ :email_return_path,
29
+ :main_dashboard_modules,
30
+ :margin_dashboard_modules,
31
+ :panels,
32
+ :scrap_types,
33
+ :dav_root,
34
+ :dav_subdomain,
35
+ :use_forenames,
36
+ :use_separate_mobile_number,
37
+ :use_titles,
38
+ :enable_mailing_lists,
39
+ :mailman_table_name,
40
+ :mailing_lists_active_by_default,
41
+ :mailing_lists_digest_by_default,
42
+ :show_venue_map,
43
+ :default_document_private,
44
+ :default_event_private,
45
+ :dropbox_app_key,
46
+ :dropbox_app_secret,
47
+ :user_defaults,
48
+ :people_sort,
49
+ :required_calendar_names,
50
+ :stream_shared,
51
+ :aws_bucket_name
13
52
 
14
53
  class DroomError < StandardError; end
15
54
  class PermissionDenied < DroomError; end
16
-
55
+
17
56
  class << self
18
- def user_class=(klass)
19
- @@user_class = klass.to_s
57
+ def layout
58
+ @@layout ||= "droom/application"
20
59
  end
21
-
22
- def user_class
23
- (@@user_class ||= "User").constantize
60
+
61
+ def email_host
62
+ @@email_host ||= "please-change-email-host-in-droom-initializer.example.com"
24
63
  end
25
64
 
26
- def layout
27
- @@layout ||= "application"
65
+ def email_layout
66
+ @@email_layout ||= "droom/email"
28
67
  end
29
68
 
30
- def sign_in_path
31
- @@sign_in_path ||= "/users/sign_in"
69
+ def email_from
70
+ @@email_from ||= "please-change-email_from-in-droom-initializer@example.com"
71
+ end
72
+
73
+ def email_from_name
74
+ @@email_from ||= "Please Set Email-From Name In Droom Initializer"
75
+ end
76
+
77
+ def email_return_path
78
+ @@email_return_path ||= email_from
79
+ end
80
+
81
+ def people_sort
82
+ @@people_sort ||= "position ASC"
32
83
  end
33
84
 
34
85
  def sign_out_path
@@ -39,35 +90,151 @@ module Droom
39
90
  @@root_path ||= "dashboard#index"
40
91
  end
41
92
 
42
- def people_sort
43
- @@people_sort ||= "position ASC"
44
- end
45
-
46
93
  def home_country
47
94
  Snail.home_country = @@home_country ||= 'gb'
48
95
  end
49
96
 
50
- def active_dashboard_modules
51
- @@active_dashboard_modules ||= %w{my_future_events my_past_events my_group_documents}
97
+ def main_dashboard_modules
98
+ @@main_dashboard_modules ||= %w{my_future_events my_folders}
99
+ end
100
+
101
+ def margin_dashboard_modules
102
+ @@margin_dashboard_modules ||= %w{quicksearch stream}
103
+ end
104
+
105
+ def panels
106
+ @@panels ||= %w{dropbox email rss devices readers account search admin}
52
107
  end
53
108
 
109
+ def scrap_types
110
+ @@scrap_types ||= %w{image video text quote link event document}
111
+ end
112
+
54
113
  # base path of DAV directory tree, relative to rails root.
55
114
  def dav_root
56
115
  @@dav_root ||= "webdav"
57
116
  end
58
-
117
+
59
118
  # subdomain constraint applied when routing to dav.
60
119
  def dav_subdomain
61
120
  @@dav_subdomain ||= /dav/
62
121
  end
63
122
 
64
- def use_forenamnes
123
+ def use_forenames?
65
124
  !!@@use_forenames
66
125
  end
67
126
 
68
- def show_venue_map
127
+ def use_titles?
128
+ !!@@use_titles
129
+ end
130
+
131
+ def stream_shared?
132
+ !!@@stream_shared
133
+ end
134
+
135
+ def use_separate_mobile_number?
136
+ !!@@use_separate_mobile_number
137
+ end
138
+
139
+ def enable_mailing_lists?
140
+ !!@@enable_mailing_lists
141
+ end
142
+
143
+ def mailman_table_name
144
+ @@mailman_table_name ||= 'mailman_mysql'
145
+ end
146
+
147
+ def mailing_lists_active_by_default?
148
+ !!@@mailing_lists_active_by_default
149
+ end
150
+
151
+ def mailing_lists_digest_by_default?
152
+ !!@@mailing_lists_digest_by_default
153
+ end
154
+
155
+ def show_venue_map?
69
156
  !!@@show_venue_map
70
157
  end
71
158
 
159
+ def suggestible_classes
160
+ @@suggestible_classes ||= {
161
+ "event" => "Droom::Event",
162
+ "person" => "Droom::Person",
163
+ "document" => "Droom::Document",
164
+ "group" => "Droom::Group",
165
+ "venue" => "Droom::Venue"
166
+ }
167
+ end
168
+
169
+ def searchable_classes
170
+ @@searchable_classes ||= {
171
+ "event" => "Droom::Event",
172
+ "document" => "Droom::Document",
173
+ "person" => "Droom::Person",
174
+ "group" => "Droom::Group",
175
+ "scrap" => "Droom::Scrap",
176
+ "venue" => "Droom::Venue"
177
+ }
178
+ end
179
+
180
+ def add_suggestible_class(label, klass=nil)
181
+ klass ||= label.titlecase
182
+ suggestible_classes[label] = klass.to_s
183
+ end
184
+
185
+ def yt_client
186
+ @@yt_client ||= YouTubeIt::Client.new(:dev_key => "AI39si473p0K4e6id0ZrM1vniyk8pdbqr67hH39hyFjW_JQoLg9xi6BecWFtraoPMCeYQmRgIc_XudGKVU8tmeQF8VHwjOUg8Q")
187
+ end
188
+
189
+ def aws_bucket_name
190
+ @@aws_bucket_name ||= nil
191
+ end
192
+
193
+ def aws_bucket
194
+ @@aws_bucket ||= Fog::Storage.new(Droom::Engine.config.paperclip_defaults[:fog_credentials]).directories.get(@@aws_bucket_name)
195
+ end
196
+
197
+ def required_calendar_names
198
+ @@required_calendar_names ||= %w{main stream}
199
+ end
200
+
201
+ # Droom's preferences are arbitrary and open-ended. You can ask for any preference key: if it
202
+ # doesn't exist you just get back the default value, or nil if there isn't one. This is where you
203
+ # set the defaults.
204
+ #
205
+ def user_defaults
206
+ @@user_defaults ||= Droom::LazyHash.new({
207
+ :email => {
208
+ :enabled? => true,
209
+ :mailing_lists? => true,
210
+ :event_invitations? => false,
211
+ :digest? => false
212
+ },
213
+ :dropbox => {
214
+ :strategy => "clicked",
215
+ :events? => true,
216
+ },
217
+ :dav => {
218
+ :enabled? => false,
219
+ :strategy => "clicked",
220
+ :everything? => false,
221
+ }
222
+ })
223
+ end
224
+
225
+ # Here we are overriding droom default settings in a host app initializer to create local default settings.
226
+ # key should be dot-separated and string-like:
227
+ #
228
+ # Droom.set_default('email.digest', true)
229
+ #
230
+ # LazyHash#deep_set is a setter that can take compound keys and set nested values. It's defined in lib/lazy_hash.rb.
231
+ #
232
+ def set_user_default(key, value)
233
+ user_defaults.set(key, value)
234
+ end
235
+
236
+ def user_default(key)
237
+ user_defaults.get(key)
238
+ end
72
239
  end
73
240
  end