droom 0.4.3 → 0.5.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/app/assets/images/droom/admin_menu.png +0 -0
- data/app/assets/images/droom/applications_menu.png +0 -0
- data/app/assets/images/droom/arrows_small.png +0 -0
- data/app/assets/images/droom/config_menu.png +0 -0
- data/app/assets/images/droom/dropdown.png +0 -0
- data/app/assets/images/droom/menu/asterisk.png +0 -0
- data/app/assets/images/droom/{smalladd.png → menu/smalladd.png} +0 -0
- data/app/assets/images/droom/{small_asterisk.png → menu/smallasterisk.png} +0 -0
- data/app/assets/images/droom/{smalldelete.png → menu/smalldelete.png} +0 -0
- data/app/assets/images/droom/{smalldownload.png → menu/smalldownload.png} +0 -0
- data/app/assets/images/droom/{smalledit.png → menu/smalledit.png} +0 -0
- data/app/assets/images/droom/message.png +0 -0
- data/app/assets/images/droom/missing/scrap.jpg +0 -0
- data/app/assets/images/droom/missing/scrap.png +0 -0
- data/app/assets/images/droom/missing/thumb.png +0 -0
- data/app/assets/images/droom/missing/user.png +0 -0
- data/app/assets/images/droom/object_icons.png +0 -0
- data/app/assets/images/droom/panel/add.png +0 -0
- data/app/assets/images/droom/panel/edit.png +0 -0
- data/app/assets/images/droom/panel/manage.png +0 -0
- data/app/assets/images/droom/pointer_upwards.png +0 -0
- data/app/assets/images/droom/search_menu.png +0 -0
- data/app/assets/images/droom/setter.png +0 -0
- data/app/assets/images/droom/small_icons.png +0 -0
- data/app/assets/images/droom/stream/closer.png +0 -0
- data/app/assets/images/droom/stream/next.png +0 -0
- data/app/assets/images/droom/stream/prev.png +0 -0
- data/app/assets/images/droom/stream/previous.png +0 -0
- data/app/assets/images/droom/subscribe.png +0 -0
- data/app/assets/javascripts/droom.js.coffee +23 -13
- data/app/assets/javascripts/droom/actions.js.coffee +104 -10
- data/app/assets/javascripts/droom/ajax.js.coffee +36 -24
- data/app/assets/javascripts/droom/extensions.js.coffee +13 -0
- data/app/assets/javascripts/droom/lib/jquery.datepicker.js +1026 -0
- data/app/assets/javascripts/droom/lib/jquery.deserialize.js +142 -0
- data/app/assets/javascripts/droom/lib/jquery_ujs.js +416 -0
- data/app/assets/javascripts/droom/lib/swipe.js +568 -0
- data/app/assets/javascripts/droom/lib/underscore.js +1276 -0
- data/app/assets/javascripts/droom/popups.js.coffee +98 -37
- data/app/assets/javascripts/droom/stream.js.coffee +119 -77
- data/app/assets/javascripts/droom/utilities.js.coffee +25 -3
- data/app/assets/javascripts/droom/widgets.js.coffee +318 -253
- data/app/assets/stylesheets/droom.css.sass +482 -955
- data/app/assets/stylesheets/droom/_mixins.css.sass +12 -42
- data/app/assets/stylesheets/droom/_popups.css.sass +28 -11
- data/app/assets/stylesheets/droom/_stream.css.sass +375 -0
- data/app/assets/stylesheets/droom/_toolbar.css.sass +0 -6
- data/app/assets/stylesheets/droom/_variables.css.sass +4 -2
- data/app/controllers/droom/agenda_categories_controller.rb +6 -14
- data/app/controllers/droom/api/api_controller.rb +56 -0
- data/app/controllers/droom/api/events_controller.rb +74 -0
- data/app/controllers/droom/api/users_controller.rb +92 -0
- data/app/controllers/droom/api/venues_controller.rb +71 -0
- data/app/controllers/droom/calendars_controller.rb +4 -10
- data/app/controllers/droom/{user_confirmations_controller.rb → confirmations_controller.rb} +8 -7
- data/app/controllers/droom/dashboard_controller.rb +2 -19
- data/app/controllers/droom/documents_controller.rb +12 -60
- data/app/controllers/droom/dropbox_tokens_controller.rb +3 -4
- data/app/controllers/droom/engine_controller.rb +39 -11
- data/app/controllers/droom/events_controller.rb +62 -84
- data/app/controllers/droom/folders_controller.rb +30 -40
- data/app/controllers/droom/group_invitations_controller.rb +6 -23
- data/app/controllers/droom/group_permissions_controller.rb +26 -0
- data/app/controllers/droom/groups_controller.rb +10 -14
- data/app/controllers/droom/invitations_controller.rb +7 -25
- data/app/controllers/droom/memberships_controller.rb +13 -18
- data/app/controllers/droom/organisations_controller.rb +6 -25
- data/app/controllers/droom/permissions_controller.rb +50 -0
- data/app/controllers/droom/preferences_controller.rb +9 -10
- data/app/controllers/droom/scraps_controller.rb +23 -26
- data/app/controllers/droom/services_controller.rb +50 -0
- data/app/controllers/droom/suggestions_controller.rb +6 -4
- data/app/controllers/droom/users/confirmations_controller.rb +24 -0
- data/app/controllers/droom/users/passwords_controller.rb +39 -0
- data/app/controllers/droom/users/sessions_controller.rb +7 -0
- data/app/controllers/droom/users_controller.rb +60 -38
- data/app/controllers/droom/venues_controller.rb +8 -15
- data/app/controllers/droom/youtube_controller.rb +1 -1
- data/app/helpers/droom/droom_helper.rb +22 -17
- data/app/models/droom/ability.rb +81 -0
- data/app/models/droom/agenda_category.rb +0 -1
- data/app/models/droom/calendar.rb +12 -7
- data/app/models/droom/category.rb +4 -10
- data/app/models/droom/concerns/slugged.rb +21 -0
- data/app/models/droom/document.rb +15 -17
- data/app/models/droom/dropbox_document.rb +3 -6
- data/app/models/droom/dropbox_token.rb +2 -3
- data/app/models/droom/event.rb +117 -163
- data/app/models/droom/event_type.rb +25 -0
- data/app/models/droom/folder.rb +36 -48
- data/app/models/droom/group.rb +35 -27
- data/app/models/droom/group_invitation.rb +7 -10
- data/app/models/droom/group_permission.rb +29 -0
- data/app/models/droom/invitation.rb +14 -23
- data/app/models/droom/mailing_list_membership.rb +0 -1
- data/app/models/droom/membership.rb +32 -31
- data/app/models/droom/organisation.rb +6 -3
- data/app/models/droom/permission.rb +19 -0
- data/app/models/droom/personal_folder.rb +9 -21
- data/app/models/droom/preference.rb +1 -2
- data/app/models/droom/scrap.rb +31 -26
- data/app/models/droom/service.rb +31 -0
- data/app/models/droom/tag.rb +10 -9
- data/app/models/droom/tagging.rb +1 -1
- data/app/models/droom/user.rb +453 -130
- data/app/models/droom/user_permission.rb +8 -0
- data/app/models/droom/venue.rb +21 -32
- data/app/serializers/droom/user_serializer.rb +45 -0
- data/app/serializers/droom/venue_serializer.rb +5 -0
- data/app/views/droom/dashboard/_documents.html.haml +1 -1
- data/app/views/droom/dashboard/_folders.html.haml +1 -1
- data/app/views/droom/dashboard/_future_events.html.haml +10 -8
- data/app/views/droom/dashboard/_groups.html.haml +1 -1
- data/app/views/droom/dashboard/_past_events.haml +19 -12
- data/app/views/droom/dashboard/_stream.html.haml +2 -2
- data/app/views/droom/{users/_extra_columns.html.haml → dashboard/_welcome.html.haml} +0 -0
- data/app/views/droom/dashboard/index.html.haml +3 -0
- data/app/views/droom/documents/_document.html.haml +0 -2
- data/app/views/droom/documents/_documents.html.haml +1 -1
- data/app/views/droom/documents/_documents_list.html.haml +1 -1
- data/app/views/droom/documents/_documents_table.html.haml +1 -1
- data/app/views/droom/documents/_form.html.haml +8 -5
- data/app/views/droom/documents/_listing.html.haml +4 -2
- data/app/views/droom/documents/index.html.haml +13 -7
- data/app/views/droom/documents/new.html.haml +1 -4
- data/app/views/droom/events/_action_menu.html.haml +2 -2
- data/app/views/droom/events/_attachments.html.haml +8 -0
- data/app/views/droom/events/_calendar.html.haml +4 -8
- data/app/views/droom/events/_event.html.haml +44 -63
- data/app/views/droom/events/_event_line.html.haml +1 -1
- data/app/views/droom/events/_events.html.haml +18 -2
- data/app/views/droom/events/_form.html.haml +26 -19
- data/app/views/droom/events/_invitations.html.haml +7 -3
- data/app/views/droom/events/_scrap_events.html.haml +8 -0
- data/app/views/droom/events/_suggested.html.haml +4 -1
- data/app/views/droom/events/calendar.html.haml +8 -0
- data/app/views/droom/events/index.html.haml +24 -26
- data/app/views/droom/events/show.html.haml +6 -6
- data/app/views/droom/folders/_contents.html.haml +34 -4
- data/app/views/droom/folders/_folder.html.haml +7 -2
- data/app/views/droom/folders/_form.html.haml +11 -8
- data/app/views/droom/folders/index.html.haml +19 -22
- data/app/views/droom/group_invitations/_attending_groups.html.haml +1 -1
- data/app/views/droom/group_permissions/_toggle.html.haml +18 -0
- data/app/views/droom/groups/_action_menu.haml +0 -2
- data/app/views/droom/groups/_created.html.haml +0 -1
- data/app/views/droom/groups/_form.html.haml +3 -0
- data/app/views/droom/groups/_group.html.haml +10 -8
- data/app/views/droom/groups/_groups.html.haml +1 -1
- data/app/views/droom/groups/_search_result.html.haml +1 -1
- data/app/views/droom/groups/_suggested.html.haml +1 -1
- data/app/views/droom/groups/index.html.haml +15 -16
- data/app/views/droom/invitations/_form.html.haml +1 -1
- data/app/views/droom/invitations/_invitation.html.haml +1 -1
- data/app/views/droom/invitations/_invitations.html.haml +4 -4
- data/app/views/droom/memberships/_button.html.haml +5 -5
- data/app/views/droom/memberships/_form.html.haml +26 -7
- data/app/views/droom/memberships/_member.html.haml +1 -1
- data/app/views/droom/memberships/{_membership_toggle.html.haml → _toggle.html.haml} +4 -4
- data/app/views/droom/memberships/index.html.haml +9 -0
- data/app/views/droom/organisations/_action_menu.html.haml +1 -1
- data/app/views/droom/organisations/_organisation.html.haml +2 -2
- data/app/views/droom/organisations/_suggested.html.haml +1 -1
- data/app/views/droom/organisations/index.html.haml +11 -11
- data/app/views/droom/panels/_admin.html.haml +2 -2
- data/app/views/droom/panels/_configuration.html.haml +28 -0
- data/app/views/droom/panels/_devices.html.haml +2 -4
- data/app/views/droom/panels/_search.html.haml +9 -0
- data/app/views/droom/permissions/_action_menu.html.haml +10 -0
- data/app/views/droom/permissions/_created.html.haml +3 -0
- data/app/views/droom/permissions/_form.html.haml +17 -0
- data/app/views/droom/permissions/edit.html.haml +7 -0
- data/app/views/droom/permissions/new.html.haml +8 -0
- data/app/views/droom/permissions/show.html.haml +4 -0
- data/app/views/droom/preferences/_checkbox.html.haml +4 -2
- data/app/views/droom/scraps/_caption.html.haml +0 -2
- data/app/views/droom/scraps/_credit.html.haml +1 -1
- data/app/views/droom/scraps/_form.html.haml +68 -69
- data/app/views/droom/scraps/_preload.html.haml +4 -0
- data/app/views/droom/scraps/_stream.html.haml +11 -3
- data/app/views/droom/scraps/_thumb.html.haml +33 -1
- data/app/views/droom/scraps/edit.html.haml +6 -1
- data/app/views/droom/scraps/full/_document.html.haml +4 -3
- data/app/views/droom/scraps/full/_event.html.haml +17 -16
- data/app/views/droom/scraps/full/_image.html.haml +1 -2
- data/app/views/droom/scraps/full/_link.html.haml +4 -3
- data/app/views/droom/scraps/full/_quote.html.haml +4 -7
- data/app/views/droom/scraps/full/_text.html.haml +3 -2
- data/app/views/droom/scraps/full/_video.html.haml +2 -2
- data/app/views/droom/scraps/new.html.haml +6 -1
- data/app/views/droom/scraps/show.html.haml +4 -3
- data/app/views/droom/services/_action_menu.html.haml +12 -0
- data/app/views/droom/services/_created.html.haml +3 -0
- data/app/views/droom/services/_form.html.haml +18 -0
- data/app/views/droom/services/_services.html.haml +44 -0
- data/app/views/droom/services/edit.html.haml +7 -0
- data/app/views/droom/services/index.html.haml +5 -0
- data/app/views/droom/{people → services}/new.html.haml +4 -3
- data/app/views/droom/services/show.html.haml +4 -0
- data/app/views/droom/shared/_controls.html.haml +2 -2
- data/app/views/droom/shared/_navigation.html.haml +2 -2
- data/app/views/droom/shared/_toolbar.html.haml +1 -1
- data/app/views/droom/suggestions/index.html.haml +1 -0
- data/app/views/droom/users/_action_menu.html.haml +21 -0
- data/app/views/droom/users/_suggested.html.haml +14 -0
- data/app/views/droom/users/_user.html.haml +2 -2
- data/app/views/droom/users/_users.html.haml +7 -0
- data/app/views/droom/users/_users_table.html.haml +21 -22
- data/app/views/droom/users/admin.html.haml +10 -0
- data/app/views/droom/users/confirmations/_after_confirmation.html.haml +2 -0
- data/app/views/droom/users/confirmations/_password_required.html.haml +30 -0
- data/app/views/droom/users/confirmations/failure.en.html.haml +22 -0
- data/app/views/droom/users/confirmations/show.html.haml +13 -0
- data/app/views/droom/users/edit.html.haml +2 -10
- data/app/views/droom/users/edit/_details.html.haml +13 -0
- data/app/views/droom/users/edit/_memberships.html.haml +13 -0
- data/app/views/droom/users/edit/_password_fields.html.haml +16 -0
- data/app/views/droom/users/edit/_preferences.html.haml +37 -0
- data/app/views/droom/users/edit/_profile.html.haml +26 -0
- data/app/views/droom/users/edit/_user_fields.html.haml +66 -0
- data/app/views/droom/users/index.html.haml +6 -32
- data/app/views/droom/users/new.html.haml +3 -0
- data/app/views/droom/users/passwords/completed.html.haml +13 -0
- data/app/views/{devise → droom/users}/passwords/edit.html.haml +10 -4
- data/app/views/{devise → droom/users}/passwords/new.html.haml +4 -3
- data/app/views/droom/users/passwords/show.html.haml +6 -0
- data/app/views/droom/users/show.html.haml +2 -0
- data/app/views/droom/users/show/_listed.html.haml +46 -0
- data/app/views/droom/users/show/_profile.html.haml +33 -0
- data/app/views/droom/users/show/_tabled.html.haml +28 -0
- data/config/initializers/chronic.rb +2 -0
- data/config/initializers/devise.rb +35 -2
- data/config/initializers/paperclip.rb +11 -6
- data/config/locales/devise.en.yml +1 -1
- data/config/locales/en.yml +198 -103
- data/config/routes.rb +37 -45
- data/db/migrate/20130207123614_stream.rb +5 -1
- data/db/migrate/20130225095328_create_droom_calendars.rb +0 -1
- data/db/migrate/20130627065459_permissions.rb +34 -0
- data/db/migrate/20130627071938_users_take_over.rb +38 -0
- data/db/migrate/20130627073759_user_properties.rb +34 -0
- data/db/migrate/20130627080021_no_more_people.rb +11 -0
- data/db/migrate/20130701122935_directory_groups.rb +8 -0
- data/db/migrate/20130701123152_remove_old_access_control.rb +16 -0
- data/db/migrate/20130729102857_more_scrap_data.rb +12 -0
- data/db/migrate/20130904080340_international_names.rb +17 -0
- data/db/migrate/20130904080341_honours.rb +5 -0
- data/db/migrate/20131124082222_simple_addresses.rb +25 -0
- data/db/migrate/20131201093351_event_time_zone.rb +5 -0
- data/db/migrate/20131217060311_session_revocable.rb +5 -0
- data/db/migrate/20131219180311_event_types.rb +15 -0
- data/lib/devise/strategies/cookie_authenticatable.rb +46 -0
- data/lib/droom.rb +48 -33
- data/lib/droom/auth_cookie.rb +82 -0
- data/lib/droom/cropper.rb +24 -0
- data/lib/droom/engine.rb +20 -2
- data/lib/droom/folders.rb +6 -6
- data/lib/droom/lazy_hash.rb +11 -1
- data/lib/droom/monkeys.rb +6 -6
- data/lib/droom/taggability.rb +1 -1
- data/lib/droom/validators.rb +1 -1
- data/lib/droom/version.rb +1 -1
- data/lib/generators/droom/install/templates/droom_initializer.rb +10 -2
- data/lib/paperclip/geometry_transformation.rb +80 -0
- data/lib/paperclip/validators/attachment_height_validator.rb +89 -0
- data/lib/paperclip/validators/attachment_width_validator.rb +89 -0
- data/lib/paperclip_processors/offset_thumbnail.rb +85 -0
- data/spec/dummy/config/application.rb +0 -7
- data/spec/dummy/config/environments/development.rb +1 -10
- data/spec/dummy/config/environments/production.rb +1 -0
- data/spec/dummy/config/environments/test.rb +2 -7
- data/spec/dummy/db/migrate/20130130120631_folder_ancestry_to_parents.droom.rb +1 -1
- data/spec/dummy/db/migrate/20130724124758_dropbox_tokens.droom.rb +10 -0
- data/spec/dummy/db/migrate/20130724124759_preference_uuids.droom.rb +6 -0
- data/spec/dummy/db/migrate/20130724124760_stream.droom.rb +14 -0
- data/spec/dummy/db/migrate/20130724124761_access_token_secret.droom.rb +6 -0
- data/spec/dummy/db/migrate/20130724124762_person_image.droom.rb +10 -0
- data/spec/dummy/db/migrate/20130724124763_devise_confirmable.droom.rb +14 -0
- data/spec/dummy/db/migrate/20130724124764_create_droom_calendars.droom.rb +20 -0
- data/spec/dummy/db/migrate/20130724124765_give_scraps_document.droom.rb +6 -0
- data/spec/dummy/db/migrate/20130724124766_privateness.droom.rb +10 -0
- data/spec/dummy/db/migrate/20130724124767_store_metadata.droom.rb +6 -0
- data/spec/dummy/db/migrate/20130724124768_folders_nicely.droom.rb +7 -0
- data/spec/dummy/db/migrate/20130724124769_niceties.droom.rb +8 -0
- data/spec/dummy/db/migrate/20130724124770_create_droom_dropbox_documents.droom.rb +12 -0
- data/spec/dummy/db/migrate/20130724124771_dropbox_documents_changed.droom.rb +6 -0
- data/spec/dummy/db/migrate/20130724124772_user_titles.droom.rb +6 -0
- data/spec/dummy/db/migrate/20130724124773_permissions.droom.rb +35 -0
- data/spec/dummy/db/migrate/20130724124774_users_take_over.droom.rb +39 -0
- data/spec/dummy/db/migrate/20130724124775_user_properties.droom.rb +35 -0
- data/spec/dummy/db/migrate/20130724124776_no_more_people.droom.rb +12 -0
- data/spec/dummy/db/migrate/20130724124777_directory_groups.droom.rb +9 -0
- data/spec/dummy/db/migrate/20130724124778_remove_old_access_control.droom.rb +17 -0
- data/spec/dummy/db/schema.rb +217 -140
- data/spec/factories/documents.rb +0 -5
- data/spec/factories/events.rb +0 -9
- data/spec/factories/user.rb +4 -2
- data/spec/lib/droom/folders_spec.rb +8 -8
- data/spec/models/droom/document_spec.rb +6 -43
- data/spec/models/droom/event_spec.rb +0 -34
- data/spec/models/droom/mailing_list_membership_spec.rb +4 -4
- data/spec/models/droom/membership_spec.rb +2 -2
- data/spec/spec_helper.rb +1 -10
- metadata +322 -282
- data/app/assets/images/droom/Untitled-1.png +0 -0
- data/app/assets/images/droom/asterisk.png +0 -0
- data/app/assets/images/droom/smallmanage.png +0 -0
- data/app/assets/javascripts/droom/lib/kalendae.js +0 -1692
- data/app/assets/stylesheets/lib/_kalendae.css.sass +0 -139
- data/app/controllers/droom/pages_controller.rb +0 -61
- data/app/controllers/droom/people_controller.rb +0 -111
- data/app/models/droom/document_attachment.rb +0 -37
- data/app/models/droom/page.rb +0 -26
- data/app/models/droom/person.rb +0 -309
- data/app/models/droom/recurrence_rule.rb +0 -82
- data/app/models/droom/user_action_observer.rb +0 -12
- data/app/views/devise/confirmations/failure.en.html.haml +0 -20
- data/app/views/devise/confirmations/show.html.haml +0 -19
- data/app/views/droom/confirmations/show.html.haml +0 -40
- data/app/views/droom/documents/_document_line.html.haml +0 -2
- data/app/views/droom/events/_created.html.haml +0 -2
- data/app/views/droom/folders/_attachments.html.haml +0 -3
- data/app/views/droom/pages/_contents.html.haml +0 -10
- data/app/views/droom/pages/_form.html.haml +0 -36
- data/app/views/droom/pages/_full_page.html.haml +0 -17
- data/app/views/droom/pages/_page.html.haml +0 -5
- data/app/views/droom/pages/_pages.html.haml +0 -2
- data/app/views/droom/pages/admin.html.haml +0 -24
- data/app/views/droom/pages/edit.html.haml +0 -1
- data/app/views/droom/pages/index.html.haml +0 -10
- data/app/views/droom/pages/new.html.haml +0 -4
- data/app/views/droom/pages/show.html.haml +0 -5
- data/app/views/droom/panels/_account.html.haml +0 -16
- data/app/views/droom/panels/_readers.html.haml +0 -18
- data/app/views/droom/panels/_suggestions.html.haml +0 -15
- data/app/views/droom/people/_action_menu.html.haml +0 -22
- data/app/views/droom/people/_created.html.haml +0 -6
- data/app/views/droom/people/_form.html.haml +0 -66
- data/app/views/droom/people/_listing.html.haml +0 -19
- data/app/views/droom/people/_memberships.html.haml +0 -24
- data/app/views/droom/people/_people.html.haml +0 -5
- data/app/views/droom/people/_person.html.haml +0 -32
- data/app/views/droom/people/_search_result.html.haml +0 -14
- data/app/views/droom/people/_suggested.html.haml +0 -14
- data/app/views/droom/people/edit.html.haml +0 -9
- data/app/views/droom/people/index.html.haml +0 -8
- data/app/views/droom/people/show.html.haml +0 -31
- data/app/views/droom/scraps/_heading.html.haml +0 -16
- data/app/views/droom/scraps/thumbs/_document.html.haml +0 -9
- data/app/views/droom/scraps/thumbs/_event.html.haml +0 -17
- data/app/views/droom/scraps/thumbs/_image.html.haml +0 -6
- data/app/views/droom/scraps/thumbs/_link.html.haml +0 -10
- data/app/views/droom/scraps/thumbs/_quote.html.haml +0 -8
- data/app/views/droom/scraps/thumbs/_text.html.haml +0 -8
- data/app/views/droom/scraps/thumbs/_video.html.haml +0 -6
- data/app/views/droom/users/_extra_columns_header.html.haml +0 -0
- data/app/views/droom/users/_extra_columns_note.html.haml +0 -0
- data/app/views/droom/users/_form.html.haml +0 -14
- data/app/views/droom/users/_password_fields.html.haml +0 -15
- data/app/views/droom/users/_user_or_person.html.haml +0 -72
- data/app/views/kaminari/_paginator.html.haml +0 -16
- data/lib/droom/dav_resource.rb +0 -36
- data/lib/droom/model_helpers.rb +0 -25
- data/lib/droom/routing.rb +0 -13
- data/spec/datasets/calendar_events_dataset.rb +0 -44
- data/spec/datasets/calendar_pages_dataset.rb +0 -8
- data/spec/datasets/calendar_sites_dataset.rb +0 -6
- data/spec/datasets/calendars_dataset.rb +0 -34
- data/spec/datasets/documents_dataset.rb +0 -28
- data/spec/datasets/recurrence_dataset.rb +0 -7
- data/spec/dummy/config/sunspot.yml +0 -17
- data/spec/dummy/log/dav.log +0 -1
- data/spec/dummy/log/development.log +0 -2
- data/spec/dummy/log/test.log +0 -1
- data/spec/dummy/solr/conf/admin-extra.html +0 -31
- data/spec/dummy/solr/conf/elevate.xml +0 -36
- data/spec/dummy/solr/conf/mapping-ISOLatin1Accent.txt +0 -246
- data/spec/dummy/solr/conf/protwords.txt +0 -21
- data/spec/dummy/solr/conf/schema.xml +0 -238
- data/spec/dummy/solr/conf/scripts.conf +0 -24
- data/spec/dummy/solr/conf/solrconfig.xml +0 -934
- data/spec/dummy/solr/conf/spellings.txt +0 -2
- data/spec/dummy/solr/conf/stopwords.txt +0 -58
- data/spec/dummy/solr/conf/synonyms.txt +0 -31
- data/spec/dummy/solr/data/development/index/segments.gen +0 -0
- data/spec/dummy/solr/data/development/index/segments_1 +0 -0
- data/spec/dummy/solr/data/development/spellchecker/segments.gen +0 -0
- data/spec/dummy/solr/data/development/spellchecker/segments_1 +0 -0
- data/spec/dummy/solr/data/test/index/segments.gen +0 -0
- data/spec/dummy/solr/data/test/index/segments_3nu +0 -0
- data/spec/dummy/solr/data/test/spellchecker/segments.gen +0 -0
- data/spec/dummy/solr/data/test/spellchecker/segments_1 +0 -0
- data/spec/factories/recurrence_rules.rb +0 -25
- data/spec/models/droom/person_spec.rb +0 -72
- data/spec/models/droom/recurrence_rule_spec.rb +0 -81
@@ -2,32 +2,20 @@ module Droom
|
|
2
2
|
class DocumentsController < Droom::EngineController
|
3
3
|
respond_to :html, :js, :json
|
4
4
|
layout :no_layout_if_pjax
|
5
|
-
|
6
|
-
before_filter :
|
7
|
-
|
8
|
-
before_filter :get_folder
|
9
|
-
before_filter :find_documents, :only => [:index]
|
10
|
-
before_filter :get_document, :only => [:show, :edit, :update, :destroy]
|
11
|
-
before_filter :build_document, :only => [:new, :create]
|
5
|
+
|
6
|
+
before_filter :get_folder, :except => [:index]
|
7
|
+
load_and_authorize_resource :document, :class => Droom::Document, :through => :folder, :shallow => true
|
12
8
|
|
13
9
|
def index
|
10
|
+
@documents = @documents.matching(params[:q]) unless params[:q].blank?
|
11
|
+
@documents = paginated(@documents)
|
14
12
|
respond_with @documents do |format|
|
15
13
|
format.js { render :partial => 'droom/documents/documents' }
|
16
14
|
end
|
17
15
|
end
|
18
|
-
|
16
|
+
|
19
17
|
def show
|
20
18
|
if @document.file
|
21
|
-
# master documents are stored in private S3 buckets
|
22
|
-
# To keep the documents secure, we:
|
23
|
-
# * publish them only through this controller (so no S3 links appear on the page)
|
24
|
-
# * deliver them only to authenticated users
|
25
|
-
# * delivery by redirecting to a URL that expires in ten minutes
|
26
|
-
#
|
27
|
-
# We could channel all file delivery through this controller and may do so in future but it
|
28
|
-
# creates a nasty performance bottleneck. For now the redirect approach seems more robust
|
29
|
-
# and the expiring URLs sufficiently obscure.
|
30
|
-
#
|
31
19
|
redirect_to @document.file.expiring_url(Time.now + 600)
|
32
20
|
else
|
33
21
|
raise ActiveRecord::RecordNotFound
|
@@ -39,7 +27,6 @@ module Droom
|
|
39
27
|
end
|
40
28
|
|
41
29
|
def create
|
42
|
-
@document.update_attributes(params[:document])
|
43
30
|
@document.save!
|
44
31
|
render :partial => 'created'
|
45
32
|
end
|
@@ -49,7 +36,6 @@ module Droom
|
|
49
36
|
end
|
50
37
|
|
51
38
|
def update
|
52
|
-
@document.update_attributes(params[:document])
|
53
39
|
@document.save!
|
54
40
|
render :partial => 'listing', :object => @document.with_event
|
55
41
|
end
|
@@ -58,50 +44,16 @@ module Droom
|
|
58
44
|
@document.destroy
|
59
45
|
head :ok
|
60
46
|
end
|
47
|
+
|
48
|
+
protected
|
61
49
|
|
50
|
+
def document_params
|
51
|
+
params.require(:document).permit(:name, :file, :description, :folder_id)
|
52
|
+
end
|
62
53
|
|
63
|
-
protected
|
64
54
|
def get_folder
|
65
|
-
@folder = Droom::Folder.
|
55
|
+
@folder = Droom::Folder.find(params[:folder_id])
|
66
56
|
end
|
67
57
|
|
68
|
-
def build_document
|
69
|
-
@document = @folder.documents.build(params[:document])
|
70
|
-
end
|
71
|
-
|
72
|
-
def get_document
|
73
|
-
@document = @folder.documents.find(params[:id])
|
74
|
-
end
|
75
|
-
|
76
|
-
def find_documents
|
77
|
-
sort_orders = {
|
78
|
-
'asc' => "ASC",
|
79
|
-
'desc' => "DESC"
|
80
|
-
}
|
81
|
-
@order = sort_orders[params[:order]] || "DESC"
|
82
|
-
|
83
|
-
sort_parameters = {
|
84
|
-
'name' => "droom_documents.name #{@order}",
|
85
|
-
'filename' => "droom_documents.file_file_name #{@order}",
|
86
|
-
'filesize' => "droom_documents.file_file_size #{@order}",
|
87
|
-
'created' => "droom_documents.created_at #{@order}",
|
88
|
-
'event' => "event_name #{@order}",
|
89
|
-
'category' => "case when category_name is null then 1 else 0 end #{@order}, category_name #{@order}"
|
90
|
-
}
|
91
|
-
params[:sort] = 'created' unless sort_parameters[params[:sort]]
|
92
|
-
@sort = params[:sort]
|
93
|
-
@show = params[:show] || 10
|
94
|
-
@page = params[:page] || 1
|
95
|
-
|
96
|
-
if current_user.admin?
|
97
|
-
@documents = Droom::Document.scoped({})
|
98
|
-
else
|
99
|
-
@documents = Droom::Document.visible_to(@current_person)
|
100
|
-
end
|
101
|
-
|
102
|
-
@documents = @documents.matching(params[:q]) unless params[:q].blank?
|
103
|
-
@documents = @documents.order(sort_parameters[@sort]).page(@page).per(@show)
|
104
|
-
end
|
105
|
-
|
106
58
|
end
|
107
59
|
end
|
@@ -1,4 +1,5 @@
|
|
1
|
-
# This is a RESTful dropbox authentication controller.
|
1
|
+
# This is a more or less RESTful dropbox authentication controller.
|
2
|
+
# The access_token is treated as a resource.
|
2
3
|
# Later it might be generalised to handle other oauth tokens.
|
3
4
|
|
4
5
|
require 'dropbox_sdk'
|
@@ -7,10 +8,9 @@ module Droom
|
|
7
8
|
class DropboxTokensController < Droom::EngineController
|
8
9
|
respond_to :html, :js, :json
|
9
10
|
layout :no_layout_if_pjax
|
10
|
-
before_filter :authenticate_user!
|
11
|
-
|
12
11
|
before_filter :get_token, :only => [:show, :destroy]
|
13
12
|
skip_before_filter :verify_authenticity_token, :only => :create
|
13
|
+
skip_authorization_check
|
14
14
|
|
15
15
|
def new
|
16
16
|
dbsession = DropboxSession.new(Droom.dropbox_app_key, Droom.dropbox_app_secret)
|
@@ -22,7 +22,6 @@ module Droom
|
|
22
22
|
if params[:oauth_token]
|
23
23
|
dbsession = DropboxSession.deserialize(session[:dropbox_session])
|
24
24
|
response = dbsession.get_access_token
|
25
|
-
Rails.logger.warn ">>> get_access_token: #{response.inspect}"
|
26
25
|
@dropbox_token = current_user.dropbox_tokens.create(:access_token => response.key, :access_token_secret => response.secret)
|
27
26
|
session[:dropbox_session] = dbsession.serialize
|
28
27
|
flash[:panel] = 'dropbox'
|
@@ -2,31 +2,59 @@ require 'dropbox_sdk'
|
|
2
2
|
|
3
3
|
module Droom
|
4
4
|
class EngineController < ::ApplicationController
|
5
|
+
helper Droom::DroomHelper
|
5
6
|
|
6
|
-
|
7
|
-
before_filter :note_current_user
|
7
|
+
rescue_from "CanCan::AccessDenied", :with => :not_allowed
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
def require_admin!
|
12
|
-
raise Droom::PermissionDenied unless current_user && current_user.admin?
|
9
|
+
def current_ability
|
10
|
+
@current_ability ||= Droom::Ability.new(current_user)
|
13
11
|
end
|
14
12
|
|
15
|
-
|
16
|
-
|
13
|
+
protected
|
14
|
+
|
15
|
+
def paginated(collection, default_show=10, default_page=1)
|
16
|
+
@show = (params[:show] || default_show).to_i
|
17
|
+
@page = (params[:page] || default_page).to_i
|
18
|
+
collection.page(@page).per(@show)
|
17
19
|
end
|
18
20
|
|
21
|
+
def not_allowed(exception)
|
22
|
+
respond_to do |format|
|
23
|
+
format.html { render :file => "#{Rails.root}/public/403.html", :status => 403, :layout => false }
|
24
|
+
format.js { head :forbidden }
|
25
|
+
format.json { head :forbidden }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
19
29
|
def no_layout_if_pjax
|
20
|
-
if
|
30
|
+
if pjax?
|
21
31
|
false
|
22
32
|
else
|
23
33
|
Droom.layout
|
24
34
|
end
|
25
35
|
end
|
26
36
|
|
27
|
-
def
|
28
|
-
|
37
|
+
def pjax?
|
38
|
+
request.headers['X-PJAX']
|
29
39
|
end
|
30
40
|
|
41
|
+
def set_access_control_headers
|
42
|
+
headers['Access-Control-Allow-Origin'] = '*'
|
43
|
+
headers["Access-Control-Allow-Headers"] = %w{Origin Accept Content-Type X-Requested-With X-CSRF-Token}.join(",")
|
44
|
+
headers["Access-Control-Allow-Methods"] = %{GET PATCH POST}
|
45
|
+
end
|
46
|
+
|
47
|
+
def set_pagination_headers
|
48
|
+
if results = instance_variable_get("@#{name_from_controller}")
|
49
|
+
if results.respond_to? :total_count
|
50
|
+
headers["X-Pagination"] = {
|
51
|
+
limit: results.limit_value,
|
52
|
+
offset: results.offset_value,
|
53
|
+
total_count: results.total_count
|
54
|
+
}.to_json
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
31
59
|
end
|
32
60
|
end
|
@@ -1,65 +1,49 @@
|
|
1
|
+
require 'tod'
|
2
|
+
|
1
3
|
module Droom
|
2
4
|
class EventsController < Droom::EngineController
|
3
5
|
require "uri"
|
4
|
-
require "
|
5
|
-
respond_to :html, :json, :
|
6
|
+
require "icalendar"
|
7
|
+
respond_to :html, :json, :ics, :js
|
6
8
|
layout :no_layout_if_pjax
|
7
|
-
|
8
|
-
before_filter :
|
9
|
-
before_filter :
|
10
|
-
before_filter :
|
11
|
-
|
12
|
-
before_filter :find_or_create_calendar, :only => :new
|
13
|
-
before_filter :build_event, :only => [:new, :create]
|
14
|
-
before_filter :get_calendar, :only => [:index, :calendar]
|
15
|
-
before_filter :find_events, :only => [:index, :calendar]
|
9
|
+
|
10
|
+
before_filter :get_events, :only => [:index]
|
11
|
+
before_filter :composite_dates, :only => [:update, :create]
|
12
|
+
before_filter :build_event, :only => [:create]
|
13
|
+
load_and_authorize_resource
|
16
14
|
|
17
15
|
def index
|
18
16
|
respond_with @events do |format|
|
19
|
-
format.js {
|
20
|
-
render :partial => 'droom/events/events'
|
21
|
-
}
|
17
|
+
format.js { render :partial => 'droom/events/events' }
|
22
18
|
end
|
23
19
|
end
|
24
20
|
|
25
21
|
def calendar
|
26
|
-
respond_with @events
|
27
|
-
format.js {
|
28
|
-
render :partial => 'droom/events/calendar'
|
29
|
-
}
|
30
|
-
end
|
22
|
+
respond_with @events
|
31
23
|
end
|
32
24
|
|
33
25
|
def show
|
34
26
|
respond_with @event do |format|
|
35
|
-
format.js {
|
36
|
-
|
37
|
-
}
|
38
|
-
format.zip {
|
39
|
-
send_file @event.documents_zipped.path, :type => 'application/zip', :disposition => 'attachment', :filename => "#{@event.slug}.zip"
|
40
|
-
}
|
27
|
+
format.js { render :partial => 'droom/events/event' }
|
28
|
+
format.zip { send_file @event.documents_zipped.path, :type => 'application/zip', :disposition => 'attachment', :filename => "#{@event.slug}.zip" }
|
41
29
|
end
|
42
30
|
end
|
43
31
|
|
44
32
|
def new
|
33
|
+
@event.start = Time.zone.now.change(hour: 10)
|
45
34
|
respond_with @event
|
46
35
|
end
|
47
36
|
|
48
37
|
def create
|
49
38
|
if @event.save
|
50
|
-
render :partial => "
|
39
|
+
render :partial => "event"
|
51
40
|
else
|
52
41
|
respond_with @event
|
53
42
|
end
|
54
43
|
end
|
55
44
|
|
56
|
-
def edit
|
57
|
-
|
58
|
-
end
|
59
|
-
|
60
45
|
def update
|
61
|
-
@event.update_attributes(
|
62
|
-
if @event.save
|
46
|
+
if @event.update_attributes(event_params)
|
63
47
|
render :partial => "event"
|
64
48
|
else
|
65
49
|
respond_with @event
|
@@ -72,64 +56,58 @@ module Droom
|
|
72
56
|
end
|
73
57
|
|
74
58
|
protected
|
75
|
-
|
76
|
-
def
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
end
|
81
|
-
|
82
|
-
def get_event
|
83
|
-
@event = Droom::Event.find(params[:id])
|
84
|
-
end
|
85
|
-
|
86
|
-
def find_events
|
87
|
-
if params[:direction] == 'past'
|
88
|
-
@events = @calendar.events.past.order('start DESC')
|
89
|
-
@direction = "past"
|
90
|
-
else
|
91
|
-
@events = @calendar.events.future_and_current.order('start ASC')
|
92
|
-
@direction = "future"
|
59
|
+
|
60
|
+
def get_events
|
61
|
+
events = Droom::Event.accessible_by(current_ability)
|
62
|
+
if Droom.separate_calendars?
|
63
|
+
events = events.in_calendar(Droom::Calendar.default_calendar)
|
93
64
|
end
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
65
|
+
if params[:year].present?
|
66
|
+
@year = params[:year].to_i
|
67
|
+
@events = paginated(events.in_year(@year).order('start ASC'))
|
68
|
+
elsif params[:direction] == 'past'
|
69
|
+
@direction = 'past'
|
70
|
+
@events = paginated(events.past.order('start DESC'))
|
71
|
+
else
|
72
|
+
@direction = 'future'
|
73
|
+
@events = paginated(events.future_and_current.order('start ASC'))
|
100
74
|
end
|
101
|
-
|
102
|
-
@show = params[:show] || 10
|
103
|
-
@page = params[:page] || 1
|
104
|
-
@events = @events.page(@page).per(@show)
|
105
|
-
end
|
106
|
-
|
107
|
-
def get_calendar
|
108
|
-
@calendar = Droom::Calendar.find_by_id(params[:calendar_id]) || find_or_create_calendar
|
109
|
-
end
|
110
|
-
|
111
|
-
def find_or_create_calendar
|
112
|
-
name = if Droom.required_calendar_names.include?(params[:calendar]) then params[:calendar] else "main" end
|
113
|
-
@calendar = Droom::Calendar.find_or_create_by_name(name)
|
114
75
|
end
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
def month_names
|
120
|
-
["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
|
76
|
+
|
77
|
+
def build_event
|
78
|
+
@event = Droom::Event.new(event_params)
|
79
|
+
@event.created_by = current_user
|
121
80
|
end
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
81
|
+
|
82
|
+
# NB. the stored timezone parameter is just an interface convenience: we use it to check boxes in the form.
|
83
|
+
# The event start and finish dates are stored as datetimes with zones.
|
84
|
+
#
|
85
|
+
def composite_dates
|
86
|
+
if params[:event]
|
87
|
+
if params[:event][:start_date].present?
|
88
|
+
# We adjust the given datetimes so that they are considered to happen in the given zone, if there is one.
|
89
|
+
# If none is given, everything happen within the configured time zone for the application.
|
90
|
+
date = Time.zone.parse(params[:event][:start_date])
|
91
|
+
timezone = ActiveSupport::TimeZone.new(params[:event][:timezone]) if params[:event][:timezone].present?
|
92
|
+
timezone ||= Time.zone
|
93
|
+
|
94
|
+
# This is done without changing the apparent time: it is already correct with the given zone and no translation is required.
|
95
|
+
date = date.change(offset: timezone) if timezone
|
96
|
+
if params[:event][:start_time].present?
|
97
|
+
start_time = TimeOfDay.parse(params[:event][:start_time])
|
98
|
+
params[:event][:start] = start_time.on(date, timezone)
|
99
|
+
end
|
100
|
+
if params[:event][:finish_time].present?
|
101
|
+
finish_time = TimeOfDay.parse(params[:event][:finish_time])
|
102
|
+
params[:event][:finish] = finish_time.on(date, timezone)
|
103
|
+
end
|
104
|
+
end
|
131
105
|
end
|
132
106
|
end
|
107
|
+
|
108
|
+
def event_params
|
109
|
+
params.require(:event).permit(:name, :description, :event_set_id, :event_type_id, :calendar_id, :all_day, :master_id, :url, :start, :finish, :timezone, :venue_id, :venue_name)
|
110
|
+
end
|
133
111
|
|
134
112
|
end
|
135
113
|
end
|
@@ -1,14 +1,14 @@
|
|
1
1
|
module Droom
|
2
2
|
class FoldersController < Droom::EngineController
|
3
|
-
respond_to :html, :json, :js
|
3
|
+
respond_to :html, :json, :js
|
4
4
|
layout :no_layout_if_pjax
|
5
5
|
|
6
|
-
before_filter :
|
7
|
-
before_filter :
|
8
|
-
|
9
|
-
before_filter :build_folder, :only => [:new, :create]
|
6
|
+
before_filter :get_root_folders, :only => [:index]
|
7
|
+
before_filter :get_parent_folder, :only => [:new, :create]
|
8
|
+
load_and_authorize_resource
|
10
9
|
|
11
10
|
def index
|
11
|
+
@folders = @folders.populated unless current_user.admin?
|
12
12
|
respond_with @folders do |format|
|
13
13
|
format.js {
|
14
14
|
render :partial => 'droom/folders/folders'
|
@@ -21,9 +21,6 @@ module Droom
|
|
21
21
|
format.js {
|
22
22
|
render :partial => 'droom/folders/folder'
|
23
23
|
}
|
24
|
-
format.zip {
|
25
|
-
send_file @folder.documents_zipped.path, :type => 'application/zip', :disposition => 'attachment', :filename => "#{@folder.slug}.zip"
|
26
|
-
}
|
27
24
|
end
|
28
25
|
end
|
29
26
|
|
@@ -32,7 +29,7 @@ module Droom
|
|
32
29
|
end
|
33
30
|
|
34
31
|
def create
|
35
|
-
@folder.update_attributes(
|
32
|
+
@folder.update_attributes(folder_params)
|
36
33
|
respond_with @folder do |format|
|
37
34
|
format.js { render :partial => "droom/folders/folder" }
|
38
35
|
end
|
@@ -43,7 +40,11 @@ module Droom
|
|
43
40
|
end
|
44
41
|
|
45
42
|
def update
|
46
|
-
@folder.update_attributes(
|
43
|
+
if @folder.update_attributes(folder_params)
|
44
|
+
Rails.logger.warn "√√ folder updated: #{@folder.inspect}"
|
45
|
+
else
|
46
|
+
Rails.logger.warn "xx folder save problems: #{@folder.errors.to_a.inspect}"
|
47
|
+
end
|
47
48
|
respond_with @folder do |format|
|
48
49
|
format.js { render :partial => "droom/folders/folder" }
|
49
50
|
end
|
@@ -59,48 +60,37 @@ module Droom
|
|
59
60
|
render :partial => "folder"
|
60
61
|
end
|
61
62
|
|
62
|
-
def dav
|
63
|
-
@folder.copy_to_dav
|
64
|
-
respond_with @folder
|
65
|
-
end
|
66
|
-
|
67
63
|
def with_parent
|
68
64
|
|
69
65
|
end
|
70
66
|
|
71
67
|
protected
|
72
|
-
|
73
|
-
def
|
74
|
-
|
75
|
-
@folder = @parent.children.build(params[:folder])
|
76
|
-
else
|
77
|
-
@folder = Droom::Folder.new(params[:folder])
|
78
|
-
end
|
68
|
+
|
69
|
+
def folder_params
|
70
|
+
params.require(:folder).permit(:name, :slug, :parent_id)
|
79
71
|
end
|
80
|
-
|
81
|
-
def
|
82
|
-
@
|
72
|
+
|
73
|
+
def get_root_folders
|
74
|
+
@folders = Droom::Folder.roots
|
83
75
|
end
|
84
|
-
|
85
|
-
def
|
86
|
-
if
|
87
|
-
@
|
76
|
+
|
77
|
+
def get_parent_folder
|
78
|
+
if @parent = Droom::Folder.find_by(id: params[:folder_id])
|
79
|
+
@folder = @parent.children.build
|
88
80
|
else
|
89
|
-
@
|
81
|
+
@folder = Droom::Folder.new
|
90
82
|
end
|
91
83
|
end
|
92
|
-
|
84
|
+
|
93
85
|
def get_folder_tree
|
94
|
-
@
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
86
|
+
@child_map = Droom::Folder.non_roots.each_with_object({}) do |f, children|
|
87
|
+
children[f.parent_id] ||= []
|
88
|
+
children[f.parent_id].push(f)
|
89
|
+
end
|
90
|
+
@document_map = Droom::Document.all.each_with_object({}) do |d, contents|
|
91
|
+
contents[d.folder_id] ||= []
|
92
|
+
contents[d.folder_id].push(d)
|
100
93
|
end
|
101
|
-
@roots = @children['root']
|
102
94
|
end
|
103
|
-
|
104
|
-
|
105
95
|
end
|
106
96
|
end
|