your_platform 0.0.1 → 0.0.2
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.
- checksums.yaml +7 -0
- data/README.md +39 -11
- data/Rakefile +15 -1
- data/app/assets/images/file.png +0 -0
- data/app/assets/images/img/excel2013_file_128.png +0 -0
- data/app/assets/images/img/excel2013_file_bw_107.png +0 -0
- data/app/assets/images/img/excel2013_file_bw_semitransparent_107.png +0 -0
- data/app/assets/images/img/glyphicons-halflings-white.png +0 -0
- data/app/assets/images/img/glyphicons-halflings.png +0 -0
- data/app/assets/images/img/gmaps_yellow_marker.png +0 -0
- data/app/assets/images/img/gmaps_yellow_marker_38.png +0 -0
- data/app/assets/images/markdown_help.png +0 -0
- data/app/assets/images/your_platform/breadcrumb-sep.png +0 -0
- data/app/assets/javascripts/app-ng.js.coffee +5 -0
- data/app/assets/javascripts/attachments.js +2 -0
- data/app/assets/javascripts/controllers-ng/bookmark_list_controller.js.coffee +30 -0
- data/app/assets/javascripts/controllers-ng/box_controller.js.coffee +37 -0
- data/app/assets/javascripts/controllers-ng/profile_angular.js.coffee +151 -0
- data/app/assets/javascripts/directives-ng/box_directive.js.coffee +91 -0
- data/app/assets/javascripts/directives-ng/star_tool_directive.js.coffee +111 -0
- data/app/assets/javascripts/filters-ng/some_filter.js.coffee +0 -0
- data/app/assets/javascripts/jquery.appear-1.1.1.js +138 -0
- data/app/assets/javascripts/make-js-more-like-ruby.js.coffee +32 -0
- data/app/assets/javascripts/mercury.js +456 -0
- data/app/assets/javascripts/models-ng/bookmark.js.coffee +28 -0
- data/app/assets/javascripts/services-ng/current_user_bookmarks.js.coffee +39 -0
- data/app/assets/javascripts/your_platform.js +27 -0
- data/app/assets/javascripts/your_platform/address_labels.js.coffee +40 -0
- data/app/assets/javascripts/your_platform/attachments.js.coffee +61 -0
- data/app/assets/javascripts/your_platform/auto-completion.js.coffee +90 -0
- data/app/assets/javascripts/your_platform/best_in_place.js.coffee +8 -0
- data/app/assets/javascripts/your_platform/best_in_place_hyperlinks.js.coffee +25 -0
- data/app/assets/javascripts/your_platform/best_in_place_tab_key.js.coffee +28 -0
- data/app/assets/javascripts/your_platform/boxes.js.coffee +11 -0
- data/app/assets/javascripts/your_platform/change_password.js.coffee +22 -0
- data/app/assets/javascripts/your_platform/close_dropdowns.js.coffee +18 -0
- data/app/assets/javascripts/your_platform/copy_to_clipboard.js.coffee +6 -0
- data/app/assets/javascripts/your_platform/datatables.coffee +112 -0
- data/app/assets/javascripts/your_platform/datepicker_settings.js.coffee +16 -0
- data/app/assets/javascripts/your_platform/edit_tools.js.coffee +19 -0
- data/app/assets/javascripts/your_platform/editable_dbl_click.js.coffee +42 -0
- data/app/assets/javascripts/your_platform/events.js.coffee +126 -0
- data/app/assets/javascripts/your_platform/fix_textarea.js.coffee +11 -0
- data/app/assets/javascripts/your_platform/galleria.js.coffee +112 -0
- data/app/assets/javascripts/your_platform/groups.js.coffee +36 -0
- data/app/assets/javascripts/your_platform/hidden.js.coffee +5 -0
- data/app/assets/javascripts/your_platform/links_to_external_sites.js.coffee +12 -0
- data/app/assets/javascripts/your_platform/maps.js.coffee +13 -0
- data/app/assets/javascripts/your_platform/may_need_review.js.coffee +10 -0
- data/app/assets/javascripts/your_platform/navable_title_rename.js.coffee +17 -0
- data/app/assets/javascripts/your_platform/officers.js.coffee +35 -0
- data/app/assets/javascripts/your_platform/popovers.js.coffee +38 -0
- data/app/assets/javascripts/your_platform/posts.js.coffee +58 -0
- data/app/assets/javascripts/your_platform/profile_fields.js.coffee +61 -0
- data/app/assets/javascripts/your_platform/search.js.coffee +26 -0
- data/app/assets/javascripts/your_platform/tooltips.js.coffee +10 -0
- data/app/assets/javascripts/your_platform/turbolinks_loading_spinner.js.coffee +83 -0
- data/app/assets/javascripts/your_platform/user_avatars.js.coffee +33 -0
- data/app/assets/javascripts/your_platform/user_group_memberships.js.coffee +11 -0
- data/app/assets/javascripts/your_platform/user_settings.js.coffee +18 -0
- data/app/assets/javascripts/your_platform/users_new.js.coffee +54 -0
- data/app/assets/stylesheets/bootstrap_layout.css.sass +3 -0
- data/app/assets/stylesheets/bootstrap_layout/attachments.css.sass +3 -0
- data/app/assets/stylesheets/bootstrap_layout/boxes.css.sass +11 -0
- data/app/assets/stylesheets/bootstrap_layout/breadcrumb.css.sass +25 -0
- data/app/assets/stylesheets/bootstrap_layout/category_indicator.css.sass +5 -0
- data/app/assets/stylesheets/bootstrap_layout/footer.css.sass +14 -0
- data/app/assets/stylesheets/bootstrap_layout/galleria.css.sass +8 -0
- data/app/assets/stylesheets/bootstrap_layout/header_bar.css.sass +11 -0
- data/app/assets/stylesheets/bootstrap_layout/headings.css.sass +10 -0
- data/app/assets/stylesheets/bootstrap_layout/logged_in_bar.css.sass +40 -0
- data/app/assets/stylesheets/bootstrap_layout/logo.css.sass +2 -0
- data/app/assets/stylesheets/bootstrap_layout/modal_fix.css.sass +8 -0
- data/app/assets/stylesheets/bootstrap_layout/profiles.css.sass +10 -0
- data/app/assets/stylesheets/bootstrap_layout/session_bar.css.sass +60 -0
- data/app/assets/stylesheets/bootstrap_layout/stars.css.sass +4 -0
- data/app/assets/stylesheets/bootstrap_layout/turbolinks_progress_bar.css.sass +3 -0
- data/app/assets/stylesheets/bootstrap_layout/vertical_menu.css.sass +15 -0
- data/app/assets/stylesheets/bootstrap_setup.css.sass +4 -0
- data/app/assets/stylesheets/your_platform.css.sass +11 -0
- data/app/assets/stylesheets/your_platform/address_labels_modal.css.sass +8 -0
- data/app/assets/stylesheets/your_platform/attachments.css.sass +75 -0
- data/app/assets/stylesheets/your_platform/authorization_info.css.sass +16 -0
- data/app/assets/stylesheets/your_platform/auto-completion.css.sass +3 -0
- data/app/assets/stylesheets/your_platform/center.css.sass +14 -0
- data/app/assets/stylesheets/your_platform/change_password.css.sass +13 -0
- data/app/assets/stylesheets/your_platform/corporate_vita.css.sass +2 -0
- data/app/assets/stylesheets/your_platform/datatables.css.sass +23 -0
- data/app/assets/stylesheets/your_platform/datepicker.css.sass +2 -0
- data/app/assets/stylesheets/your_platform/dropdowns.css.sass +8 -0
- data/app/assets/stylesheets/your_platform/events.css.sass +68 -0
- data/app/assets/stylesheets/your_platform/forms.css.sass +25 -0
- data/app/assets/stylesheets/your_platform/galleria.css.sass +12 -0
- data/app/assets/stylesheets/your_platform/groups.css.sass +8 -0
- data/app/assets/stylesheets/your_platform/groups_table.css.sass +8 -0
- data/app/assets/stylesheets/your_platform/hidden.css.sass +3 -0
- data/app/assets/stylesheets/your_platform/images.css.sass +50 -0
- data/app/assets/stylesheets/your_platform/last_activities.css.sass +17 -0
- data/app/assets/stylesheets/your_platform/latest_members.css.sass +7 -0
- data/app/assets/stylesheets/your_platform/login.css.sass +4 -0
- data/app/assets/stylesheets/your_platform/maps.css.sass +22 -0
- data/app/assets/stylesheets/your_platform/markdown_help.css.sass +5 -0
- data/app/assets/stylesheets/your_platform/may_need_review.css.sass +3 -0
- data/app/assets/stylesheets/your_platform/pages.css.sass +12 -0
- data/app/assets/stylesheets/your_platform/password_strength.css.sass +73 -0
- data/app/assets/stylesheets/your_platform/picture_attachments.css.sass +7 -0
- data/app/assets/stylesheets/your_platform/popovers.css.sass +13 -0
- data/app/assets/stylesheets/your_platform/posts.css.sass +32 -0
- data/app/assets/stylesheets/your_platform/profiles.css.sass +153 -0
- data/app/assets/stylesheets/your_platform/search_preview.css.sass +4 -0
- data/app/assets/stylesheets/your_platform/star_tool.css.sass +2 -0
- data/app/assets/stylesheets/your_platform/tooltips.css.sass +7 -0
- data/app/assets/stylesheets/your_platform/turbolinks_loading_spinner.css.sass +3 -0
- data/app/assets/stylesheets/your_platform/user_avatars.css.sass +8 -0
- data/app/assets/stylesheets/your_platform/user_group_memberships.css.sass +4 -0
- data/app/assets/stylesheets/your_platform/vertical_nav.css.sass +7 -0
- data/app/controllers/activities_controller.rb +6 -0
- data/app/controllers/application_controller.rb +236 -0
- data/app/controllers/attachments_controller.rb +97 -0
- data/app/controllers/blog_posts_controller.rb +50 -0
- data/app/controllers/bookmarks_controller.rb +33 -0
- data/app/controllers/corporations_controller.rb +22 -0
- data/app/controllers/errors_controller.rb +27 -0
- data/app/controllers/events_controller.rb +262 -0
- data/app/controllers/groups_controller.rb +257 -0
- data/app/controllers/officers_controller.rb +28 -0
- data/app/controllers/pages_controller.rb +67 -0
- data/app/controllers/posts_controller.rb +81 -0
- data/app/controllers/profile_fields_controller.rb +132 -0
- data/app/controllers/root_controller.rb +35 -0
- data/app/controllers/search_controller.rb +149 -0
- data/app/controllers/sessions_controller.rb +21 -0
- data/app/controllers/setup_controller.rb +80 -0
- data/app/controllers/statistics_controller.rb +38 -0
- data/app/controllers/status_group_memberships_controller.rb +28 -0
- data/app/controllers/terms_of_use_controller.rb +35 -0
- data/app/controllers/user_accounts_controller.rb +55 -0
- data/app/controllers/user_group_memberships_controller.rb +75 -0
- data/app/controllers/user_settings_controller.rb +57 -0
- data/app/controllers/users_controller.rb +125 -0
- data/app/controllers/workflows_controller.rb +19 -0
- data/app/helpers/application_helper.rb +25 -0
- data/app/helpers/attachments_helper.rb +2 -0
- data/app/helpers/auto_completion_helper.rb +33 -0
- data/app/helpers/avatar_helper.rb +70 -0
- data/app/helpers/bookmarks_helper.rb +22 -0
- data/app/helpers/box_helper.rb +56 -0
- data/app/helpers/breadcrumbs_helper.rb +62 -0
- data/app/helpers/corporate_vita_helper.rb +34 -0
- data/app/helpers/events_helper.rb +28 -0
- data/app/helpers/flash_helper.rb +60 -0
- data/app/helpers/footer_helper.rb +13 -0
- data/app/helpers/galleria_helper.rb +13 -0
- data/app/helpers/groups_helper.rb +66 -0
- data/app/helpers/horizontal_nav_helper.rb +11 -0
- data/app/helpers/i18n_helper.rb +10 -0
- data/app/helpers/icon_helper.rb +35 -0
- data/app/helpers/mailer_helper.rb +7 -0
- data/app/helpers/map_helper.rb +26 -0
- data/app/helpers/markdown_helper.rb +22 -0
- data/app/helpers/markup_helper.rb +25 -0
- data/app/helpers/officers_helper.rb +13 -0
- data/app/helpers/password_helper.rb +23 -0
- data/app/helpers/profile_field_helper.rb +40 -0
- data/app/helpers/profile_helper.rb +69 -0
- data/app/helpers/quick_link_helper.rb +53 -0
- data/app/helpers/special_pages_helper.rb +9 -0
- data/app/helpers/structureable_helper.rb +11 -0
- data/app/helpers/sublime_helper.rb +16 -0
- data/app/helpers/title_helper.rb +52 -0
- data/app/helpers/tool_buttons_helper.rb +74 -0
- data/app/helpers/unicode_helper.rb +9 -0
- data/app/helpers/users_helper.rb +13 -0
- data/app/helpers/vertical_nav_helper.rb +84 -0
- data/app/helpers/workflows_helper.rb +37 -0
- data/app/mailers/event_mailer.rb +13 -0
- data/app/mailers/post_mailer.rb +11 -0
- data/app/mailers/user_account_mailer.rb +17 -0
- data/app/models/ability.rb +321 -0
- data/app/models/active_record_associations_patches.rb +26 -0
- data/app/models/active_record_cache_extension.rb +152 -0
- data/app/models/active_record_find_by_extension.rb +20 -0
- data/app/models/active_record_json_url_extension.rb +51 -0
- data/app/models/active_record_metric_events_extension.rb +22 -0
- data/app/models/active_record_read_only_extension.rb +35 -0
- data/app/models/active_record_update_attributes_bip_extension.rb +24 -0
- data/app/models/address_label.rb +50 -0
- data/app/models/app_version.rb +49 -0
- data/app/models/array.rb +15 -0
- data/app/models/attachment.rb +76 -0
- data/app/models/bashpass_password.rb +32 -0
- data/app/models/blog_post.rb +2 -0
- data/app/models/bookmark.rb +67 -0
- data/app/models/cache_additions.rb +15 -0
- data/app/models/cache_store_extension.rb +78 -0
- data/app/models/concerns/user_avatar.rb +16 -0
- data/app/models/concerns/user_corporations.rb +44 -0
- data/app/models/concerns/user_date_of_birth.rb +74 -0
- data/app/models/concerns/user_profile.rb +102 -0
- data/app/models/corporation.rb +80 -0
- data/app/models/dag_link.rb +29 -0
- data/app/models/event.rb +235 -0
- data/app/models/flag.rb +18 -0
- data/app/models/flagable.rb +62 -0
- data/app/models/geo_location.rb +92 -0
- data/app/models/group.rb +224 -0
- data/app/models/group_mixins/corporations.rb +141 -0
- data/app/models/group_mixins/developers.rb +41 -0
- data/app/models/group_mixins/everyone.rb +72 -0
- data/app/models/group_mixins/guests.rb +61 -0
- data/app/models/group_mixins/hidden_users.rb +43 -0
- data/app/models/group_mixins/import.rb +321 -0
- data/app/models/group_mixins/memberships.rb +207 -0
- data/app/models/group_mixins/officers.rb +47 -0
- data/app/models/group_mixins/roles.rb +41 -0
- data/app/models/horizontal_nav.rb +32 -0
- data/app/models/last_seen_activity.rb +10 -0
- data/app/models/list_export.rb +359 -0
- data/app/models/may_need_review.rb +54 -0
- data/app/models/metric_logger.rb +83 -0
- data/app/models/nav_node.rb +169 -0
- data/app/models/navable.rb +46 -0
- data/app/models/object_to_b_extension.rb +12 -0
- data/app/models/page.rb +212 -0
- data/app/models/password.rb +28 -0
- data/app/models/post.rb +199 -0
- data/app/models/profile.rb +36 -0
- data/app/models/profile_field.rb +196 -0
- data/app/models/profile_field_mixins/has_child_profile_fields.rb +114 -0
- data/app/models/profile_field_types/about.rb +9 -0
- data/app/models/profile_field_types/academic_degree.rb +10 -0
- data/app/models/profile_field_types/address.rb +88 -0
- data/app/models/profile_field_types/bank_account.rb +12 -0
- data/app/models/profile_field_types/competence.rb +7 -0
- data/app/models/profile_field_types/custom.rb +12 -0
- data/app/models/profile_field_types/date.rb +14 -0
- data/app/models/profile_field_types/description.rb +15 -0
- data/app/models/profile_field_types/email.rb +20 -0
- data/app/models/profile_field_types/employment.rb +24 -0
- data/app/models/profile_field_types/general.rb +9 -0
- data/app/models/profile_field_types/homepage.rb +19 -0
- data/app/models/profile_field_types/name_surrounding.rb +11 -0
- data/app/models/profile_field_types/organization.rb +24 -0
- data/app/models/profile_field_types/phone.rb +37 -0
- data/app/models/profile_field_types/professional_category.rb +8 -0
- data/app/models/profile_field_types/study.rb +18 -0
- data/app/models/profile_section.rb +49 -0
- data/app/models/profileable.rb +58 -0
- data/app/models/profileable_mixins/address.rb +118 -0
- data/app/models/relationship.rb +78 -0
- data/app/models/role.rb +164 -0
- data/app/models/setting.rb +9 -0
- data/app/models/status_group.rb +28 -0
- data/app/models/status_group_membership.rb +189 -0
- data/app/models/status_group_membership_info.rb +54 -0
- data/app/models/structureable.rb +164 -0
- data/app/models/structureable_mixins/has_special_groups.rb +127 -0
- data/app/models/structureable_mixins/roles.rb +275 -0
- data/app/models/user.rb +878 -0
- data/app/models/user_account.rb +162 -0
- data/app/models/user_alias.rb +112 -0
- data/app/models/user_group_membership.rb +300 -0
- data/app/models/user_group_membership_mixins/validity_range.rb +206 -0
- data/app/models/user_group_membership_mixins/validity_range_for_indirect_memberships.rb +160 -0
- data/app/models/user_mixins/identification.rb +36 -0
- data/app/models/user_mixins/memberships.rb +75 -0
- data/app/models/workflow.rb +40 -0
- data/app/models/workflow_kit/add_to_group_brick.rb +21 -0
- data/app/models/workflow_kit/destroy_account_and_end_memberships_if_needed_brick.rb +19 -0
- data/app/models/workflow_kit/last_membership_needs_review_brick.rb +19 -0
- data/app/models/workflow_kit/mark_as_deceased_brick.rb +17 -0
- data/app/models/workflow_kit/remove_from_group_brick.rb +27 -0
- data/app/models/workflow_kit/test_brick.rb +13 -0
- data/app/pdfs/address_labels_pdf.rb +157 -0
- data/app/presenters/base_presenter.rb +52 -0
- data/app/presenters/horizontal_nav_presenter.rb +106 -0
- data/app/uploaders/attachment_uploader.rb +148 -0
- data/app/views/activities/index.html.haml +25 -0
- data/app/views/attachments/_attachment.html.haml +20 -0
- data/app/views/attachments/_description.html.haml +11 -0
- data/app/views/attachments/_documents.html.haml +17 -0
- data/app/views/attachments/_drop_field.html.haml +46 -0
- data/app/views/attachments/_picture.html.haml +2 -0
- data/app/views/attachments/_pictures.html.haml +10 -0
- data/app/views/attachments/_video.html.haml +8 -0
- data/app/views/attachments/create.js.erb +1 -0
- data/app/views/attachments/destroy.js.erb +1 -0
- data/app/views/blog_posts/create.js.erb +17 -0
- data/app/views/bookmarks/_list.html.haml +7 -0
- data/app/views/bookmarks/update.js.erb +4 -0
- data/app/views/devise/mailer/reset_password_instructions.html.haml +8 -0
- data/app/views/devise/passwords/edit.html.haml +1 -0
- data/app/views/devise/passwords/new.html.haml +12 -0
- data/app/views/devise/registrations/edit.html.haml +1 -0
- data/app/views/devise/sessions/new.html.haml +14 -0
- data/app/views/devise/shared/_links.haml +26 -0
- data/app/views/errors/show.html.haml +5 -0
- data/app/views/errors/unauthorized.html.haml +7 -0
- data/app/views/event_mailer/invitation_email.html.erb +63 -0
- data/app/views/events/_event_details.html.haml +54 -0
- data/app/views/events/_events_lis.html.haml +29 -0
- data/app/views/events/_invitation_text.html.erb +8 -0
- data/app/views/events/_pictures.html.haml +5 -0
- data/app/views/events/_public_index.html.haml +16 -0
- data/app/views/events/index.html.haml +24 -0
- data/app/views/events/show.html.haml +50 -0
- data/app/views/groups/_address_labels_modal.html.haml +27 -0
- data/app/views/groups/_export_button.html.haml +66 -0
- data/app/views/groups/_group_list.html.haml +25 -0
- data/app/views/groups/_member_avatars.html.haml +4 -0
- data/app/views/groups/_member_list.html.haml +15 -0
- data/app/views/groups/index.html.erb +11 -0
- data/app/views/groups/index_mine.html.haml +7 -0
- data/app/views/groups/show.html.haml +79 -0
- data/app/views/last_seen_activities/_index.html.haml +19 -0
- data/app/views/layouts/_add_structureable_additions.html.haml +15 -0
- data/app/views/layouts/_box.html.haml +16 -0
- data/app/views/layouts/_help_button.html.haml +1 -0
- data/app/views/layouts/_role_preview_switcher.html.haml +20 -0
- data/app/views/layouts/_session_bar_avatar.html.haml +1 -0
- data/app/views/layouts/_vertical_nav.html.haml +5 -0
- data/app/views/layouts/bootstrap.html.haml +146 -0
- data/app/views/layouts/mercury.html.erb +23 -0
- data/app/views/officers/_history_notice.html.haml +4 -0
- data/app/views/officers/_officers_box.html.haml +33 -0
- data/app/views/officers/_officers_group_entry.html.haml +45 -0
- data/app/views/pages/_attachments.html.haml +21 -0
- data/app/views/pages/_page.html.haml +28 -0
- data/app/views/pages/_pictures.html.haml +2 -0
- data/app/views/pages/_videos.html.erb +8 -0
- data/app/views/pages/show.html.haml +39 -0
- data/app/views/post_mailer/post_email.html.erb +17 -0
- data/app/views/posts/_new_post_template_text.html.haml +6 -0
- data/app/views/posts/_post.html.haml +13 -0
- data/app/views/posts/_post_quote.html.haml +18 -0
- data/app/views/posts/_posts.html.haml +6 -0
- data/app/views/posts/index.html.haml +9 -0
- data/app/views/posts/new.html.haml +42 -0
- data/app/views/posts/show.html.haml +8 -0
- data/app/views/profile_fields/_postal_address_flag_switch.html.haml +21 -0
- data/app/views/profile_fields/_profile_field.html.haml +41 -0
- data/app/views/profile_fields/create.js.erb +26 -0
- data/app/views/profile_fields/destroy.js.erb +3 -0
- data/app/views/profiles/_add_profile_field_button.html.haml +15 -0
- data/app/views/profiles/_profile_section_ul.html.haml +8 -0
- data/app/views/profiles/_section.html.haml +28 -0
- data/app/views/profiles/_send_group_message_button.html.haml +4 -0
- data/app/views/root/_latest_members_box.html.haml +19 -0
- data/app/views/root/_start_page_elements.html.haml +0 -0
- data/app/views/root/_what_is_new.html.haml +21 -0
- data/app/views/search/_preview_blog_post.html.haml +1 -0
- data/app/views/search/_preview_corporation.html.haml +5 -0
- data/app/views/search/_preview_group.html.haml +4 -0
- data/app/views/search/_preview_page.html.haml +11 -0
- data/app/views/search/_preview_user.html.haml +14 -0
- data/app/views/search/index.html.haml +42 -0
- data/app/views/setup/index.html.haml +56 -0
- data/app/views/shared/_add_structureable.html.haml +22 -0
- data/app/views/shared/_authorization_info.html.haml +22 -0
- data/app/views/shared/_flags.html.haml +5 -0
- data/app/views/shared/_markdown_help.html.haml +4 -0
- data/app/views/shared/_search_box.html.haml +2 -0
- data/app/views/shared/_upcoming_events.html.haml +33 -0
- data/app/views/statistics/index.html.haml +16 -0
- data/app/views/statistics/show.html.haml +13 -0
- data/app/views/terms_of_use/_checkbox.html.haml +1 -0
- data/app/views/terms_of_use/_terms.html.haml +1 -0
- data/app/views/terms_of_use/index.html.haml +19 -0
- data/app/views/user_account_mailer/welcome_email.html.erb +32 -0
- data/app/views/user_accounts/_change_password.html.haml +149 -0
- data/app/views/user_accounts/_user_account.html.haml +39 -0
- data/app/views/user_group_memberships/_list_item.html.haml +9 -0
- data/app/views/user_group_memberships/_memberships_table.html.haml +56 -0
- data/app/views/user_group_memberships/_new.html.haml +18 -0
- data/app/views/user_group_memberships/create.js.erb +9 -0
- data/app/views/user_group_memberships/index.html.haml +5 -0
- data/app/views/user_settings/show.html.haml +36 -0
- data/app/views/users/_avatar.html.haml +16 -0
- data/app/views/users/_communication_box.html.haml +8 -0
- data/app/views/users/_corporate_vita.html.haml +23 -0
- data/app/views/users/_dead_badge.html.haml +3 -0
- data/app/views/users/_deceased_modal.html.haml +24 -0
- data/app/views/users/_hidden_badge.html.haml +4 -0
- data/app/views/users/_hidden_flag_switch.html.haml +20 -0
- data/app/views/users/_special_general_info_fields.html.haml +10 -0
- data/app/views/users/_user_corporation_attribute.html.haml +6 -0
- data/app/views/users/_user_name_attribute.html.haml +4 -0
- data/app/views/users/_user_title.html.haml +5 -0
- data/app/views/users/_workflow_triggers.html.haml +23 -0
- data/app/views/users/new.html.haml +55 -0
- data/app/views/users/show.html.haml +79 -0
- data/config/environment.rb +5 -0
- data/config/initializers/active_record_cache_extension.rb +1 -0
- data/config/initializers/active_record_find_by_extension.rb +1 -0
- data/config/initializers/active_record_flagable_extension.rb +2 -0
- data/config/initializers/active_record_json_url_extension.rb +1 -0
- data/config/initializers/active_record_may_need_review_extension.rb +2 -0
- data/config/initializers/active_record_metric_events_extension.rb +1 -0
- data/config/initializers/active_record_navable_extension.rb +6 -0
- data/config/initializers/active_record_profileable_extension.rb +4 -0
- data/config/initializers/active_record_read_only_extension.rb +1 -0
- data/config/initializers/active_record_structureable_extension.rb +3 -0
- data/config/initializers/active_record_update_attributes_bip_extension.rb +1 -0
- data/config/initializers/array_extension.rb +1 -0
- data/config/initializers/best_in_place_display_definitions.rb +31 -0
- data/config/initializers/cache_store_extension.rb +1 -0
- data/config/initializers/devise.rb +240 -0
- data/config/initializers/fnordmetric.rb +14 -0
- data/config/initializers/formtastic.rb +76 -0
- data/config/initializers/group_type_column_patches.rb +11 -0
- data/config/initializers/mime_types.rb +1 -0
- data/config/initializers/mini_profiler.rb +32 -0
- data/config/initializers/object_to_b_extension.rb +1 -0
- data/config/initializers/refile.rb +22 -0
- data/config/initializers/sidekiq.rb +12 -0
- data/config/locales/attachments/de.yml +33 -0
- data/config/locales/bookmarks/de.yml +3 -0
- data/config/locales/bookmarks/en.yml +3 -0
- data/config/locales/common_expressions/de.yml +5 -0
- data/config/locales/common_expressions/en.yml +5 -0
- data/config/locales/companies/de.yml +4 -0
- data/config/locales/companies/en.yml +4 -0
- data/config/locales/de.yml +30 -0
- data/config/locales/devise/de.yml +60 -0
- data/config/locales/devise/en.yml +62 -0
- data/config/locales/en.yml +25 -0
- data/config/locales/events/de.yml +34 -0
- data/config/locales/events/en.yml +34 -0
- data/config/locales/forms/de.yml +3 -0
- data/config/locales/groups/de.yml +56 -0
- data/config/locales/groups/en.yml +47 -0
- data/config/locales/officers/de.yml +10 -0
- data/config/locales/pages/de.yml +15 -0
- data/config/locales/pages/en.yml +14 -0
- data/config/locales/pagination/de.yml +6 -0
- data/config/locales/pagination/en.yml +5 -0
- data/config/locales/password_strength/de.yml +9 -0
- data/config/locales/password_strength/en.yml +9 -0
- data/config/locales/posts/de.yml +9 -0
- data/config/locales/profile_fields/de.yml +78 -0
- data/config/locales/profile_fields/en.yml +22 -0
- data/config/locales/profiles/de.yml +47 -0
- data/config/locales/profiles/en.yml +44 -0
- data/config/locales/roles/de.yml +9 -0
- data/config/locales/root/de.yml +3 -0
- data/config/locales/root/en.yml +3 -0
- data/config/locales/search/de.yml +11 -0
- data/config/locales/search/en.yml +11 -0
- data/config/locales/sessions/de.yml +37 -0
- data/config/locales/sessions/en.yml +37 -0
- data/config/locales/setup/de.yml +26 -0
- data/config/locales/setup/en.yml +26 -0
- data/config/locales/statistics/de.yml +6 -0
- data/config/locales/terms_of_use/de.yml +6 -0
- data/config/locales/tools/de.yml +9 -0
- data/config/locales/tools/en.yml +9 -0
- data/config/locales/user_accounts/de.yml +16 -0
- data/config/locales/user_accounts/en.yml +13 -0
- data/config/locales/user_settings/de.yml +9 -0
- data/config/locales/users/de.yml +82 -0
- data/config/locales/users/en.yml +51 -0
- data/config/locales/workflows/de.yml +4 -0
- data/config/locales/workflows/en.yml +4 -0
- data/config/routes.rb +104 -0
- data/db/migrate/20120403002734_create_users.rb +12 -0
- data/db/migrate/20120403011601_create_profile_fields.rb +11 -0
- data/db/migrate/20120403161549_remove_user_email_column.rb +5 -0
- data/db/migrate/20120405222050_encrypt_password.rb +8 -0
- data/db/migrate/20120425161138_create_dag_links.rb +14 -0
- data/db/migrate/20120425162644_create_pages.rb +10 -0
- data/db/migrate/20120426023322_create_groups.rb +9 -0
- data/db/migrate/20120426090436_create_nav_nodes.rb +18 -0
- data/db/migrate/20120427021934_create_user_accounts.rb +12 -0
- data/db/migrate/20120427044338_add_foreign_key_to_user_accounts.rb +7 -0
- data/db/migrate/20120427150156_add_group_token.rb +8 -0
- data/db/migrate/20120507165551_make_profile_fields_polymorphic.rb +11 -0
- data/db/migrate/20120508130729_add_profile_field_acts_as_tree.rb +9 -0
- data/db/migrate/20120508152233_change_profile_field_value_to_text.rb +9 -0
- data/db/migrate/20120508201550_add_group_internal_token.rb +11 -0
- data/db/migrate/20120511090234_create_workflows.rb +9 -0
- data/db/migrate/20120701115059_add_password_digest_to_user_accounts.rb +5 -0
- data/db/migrate/20120710193308_remove_salt_from_user_accounts.rb +5 -0
- data/db/migrate/20120713102445_add_deleted_at_to_dag_links.rb +5 -0
- data/db/migrate/20120722005022_create_workflow_kit_workflows.workflow_kit.rb +11 -0
- data/db/migrate/20120722005023_create_workflow_kit_steps.workflow_kit.rb +12 -0
- data/db/migrate/20120722005024_create_workflow_kit_parameters.workflow_kit.rb +12 -0
- data/db/migrate/20120723165226_add_female_to_users.rb +5 -0
- data/db/migrate/20120811140509_create_flags.rb +11 -0
- data/db/migrate/20120814100529_create_attachments.rb +13 -0
- data/db/migrate/20120815205610_add_content_type_and_file_size_to_attachments.rb +6 -0
- data/db/migrate/20130118220014_add_relationships_table_without_dag.rb +10 -0
- data/db/migrate/20130207214331_create_events.rb +12 -0
- data/db/migrate/20130208215253_create_status_group_membership_infos.rb +11 -0
- data/db/migrate/20130220184943_create_stars.rb +11 -0
- data/db/migrate/20130309193623_add_devise_to_user_accounts.rb +72 -0
- data/db/migrate/20130310003840_rename_stars_to_bookmarks.rb +9 -0
- data/db/migrate/20130310004622_fix_column_names_for_bookmarks.rb +6 -0
- data/db/migrate/20130313211414_create_geo_infos.rb +13 -0
- data/db/migrate/20130313234131_create_geo_locations.rb +16 -0
- data/db/migrate/20130314011638_drop_geo_infos.rb +5 -0
- data/db/migrate/20130315072759_add_invalid_to_geo_location.rb +5 -0
- data/db/migrate/20130315073149_exchange_invalid_for_queried_at_in_geo_location.rb +8 -0
- data/db/migrate/20130320003051_add_redirect_to_to_page.rb +5 -0
- data/db/migrate/20130329231657_create_posts.rb +15 -0
- data/db/migrate/20130404223735_add_entire_message_to_posts.rb +5 -0
- data/db/migrate/20130409192959_add_author_to_page.rb +5 -0
- data/db/migrate/20130908011215_add_type_to_pages.rb +5 -0
- data/db/migrate/20131115114715_validity_range_for_dag_links.rb +16 -0
- data/db/migrate/20140611170430_create_activities.rb +23 -0
- data/db/migrate/20140808223512_create_last_seen_activities.rb +12 -0
- data/db/migrate/20141008101744_add_location_to_events.rb +5 -0
- data/db/migrate/20141010130344_add_publish_on_website_to_events.rb +6 -0
- data/db/migrate/20141010134227_add_auth_token_to_user_accounts.rb +5 -0
- data/db/migrate/20141018143323_add_accepted_terms_to_users.rb +6 -0
- data/db/migrate/20141018221659_add_author_to_attachments.rb +5 -0
- data/db/migrate/20141102223954_add_body_to_groups.rb +5 -0
- data/db/migrate/20141110193830_create_settings.rb +17 -0
- data/db/migrate/20141202140522_add_indices.rb +6 -0
- data/db/migrate/20141209161946_add_keys.rb +20 -0
- data/db/migrate/20150127013809_add_incognito_to_users.rb +5 -0
- data/db/migrate/20150129194501_add_indices_for_polymorphic_references.rb +13 -0
- data/db/migrate/20150304192448_add_type_to_groups.rb +5 -0
- data/db/migrate/20150313221004_add_avatar_id_to_users.rb +5 -0
- data/lib/best_in_place/controller_extensions.rb +25 -0
- data/lib/best_in_place/helper.rb +127 -0
- data/lib/tasks/db_bootstrap.rake +37 -0
- data/lib/tasks/your_platform_tasks.rake +4 -0
- data/lib/templates/erb/scaffold/_form.html.erb +11 -0
- data/lib/your_platform.rb +6 -2
- data/lib/your_platform/engine.rb +127 -0
- data/lib/your_platform/version.rb +1 -1
- data/spec/factories/attachment.rb +12 -0
- data/spec/factories/blog_post.rb +10 -0
- data/spec/factories/company.rb +7 -0
- data/spec/factories/corporation.rb +20 -0
- data/spec/factories/event.rb +13 -0
- data/spec/factories/group.rb +36 -0
- data/spec/factories/html_email.eml +1059 -0
- data/spec/factories/mail_message.rb +30 -0
- data/spec/factories/page.rb +10 -0
- data/spec/factories/relationship.rb +13 -0
- data/spec/factories/status_group_membership.rb +21 -0
- data/spec/factories/user.rb +97 -0
- data/spec/factories/workflow.rb +44 -0
- data/spec/features/blog_post_spec.rb +46 -0
- data/spec/features/corporate_vita_events_spec.rb +114 -0
- data/spec/features/corporate_vita_spec.rb +258 -0
- data/spec/features/edit_mode_after_clicking_a_link_spec.rb +20 -0
- data/spec/features/events_spec.rb +356 -0
- data/spec/features/group_export_spec.rb +19 -0
- data/spec/features/group_post_spec.rb +89 -0
- data/spec/features/groups_of_groups_page_spec.rb +67 -0
- data/spec/features/groups_page_spec.rb +66 -0
- data/spec/features/groups_table_spec.rb +32 -0
- data/spec/features/help_page_spec.rb +22 -0
- data/spec/features/intranet_root_page_spec.rb +18 -0
- data/spec/features/locales_spec.rb +36 -0
- data/spec/features/maps_spec.rb +53 -0
- data/spec/features/mini_profiler_spec.rb +37 -0
- data/spec/features/officers_spec.rb +61 -0
- data/spec/features/page_redirects_spec.rb +23 -0
- data/spec/features/page_spec.rb +20 -0
- data/spec/features/postal_address_flag_spec.rb +46 -0
- data/spec/features/relationships_on_user_page_spec.rb +78 -0
- data/spec/features/review_membership_spec.rb +44 -0
- data/spec/features/search_field_spec.rb +121 -0
- data/spec/features/setup_spec.rb +63 -0
- data/spec/features/user_change_date_of_birth_spec.rb +26 -0
- data/spec/features/vertical_nav_spec.rb +27 -0
- data/spec/features/what_is_new_box_spec.rb +33 -0
- data/spec/helpers/attachments_helper_spec.rb +15 -0
- data/spec/models/ability_spec.rb +93 -0
- data/spec/models/active_record_cache_extension_spec.rb +177 -0
- data/spec/models/active_record_find_by_extension_spec.rb +26 -0
- data/spec/models/active_record_json_url_extension_spec.rb +79 -0
- data/spec/models/address_label_spec.rb +144 -0
- data/spec/models/app_version_spec.rb +38 -0
- data/spec/models/attachment_spec.rb +5 -0
- data/spec/models/bookmark_spec.rb +70 -0
- data/spec/models/concerns/user_corporations_spec.rb +71 -0
- data/spec/models/corporation_spec.rb +128 -0
- data/spec/models/dag_link_spec.rb +48 -0
- data/spec/models/event_spec.rb +267 -0
- data/spec/models/flag_spec.rb +20 -0
- data/spec/models/flagable_spec.rb +55 -0
- data/spec/models/geo_location_spec.rb +126 -0
- data/spec/models/group_mixins/corporations_spec.rb +95 -0
- data/spec/models/group_mixins/everyone_spec.rb +64 -0
- data/spec/models/group_mixins/guests_spec.rb +75 -0
- data/spec/models/group_mixins/hidden_users_spec.rb +21 -0
- data/spec/models/group_mixins/import_spec.rb +93 -0
- data/spec/models/group_mixins/memberships_spec.rb +303 -0
- data/spec/models/group_mixins/officers_spec.rb +63 -0
- data/spec/models/group_mixins/roles_spec.rb +46 -0
- data/spec/models/group_spec.rb +341 -0
- data/spec/models/list_export_spec.rb +155 -0
- data/spec/models/may_need_review_spec.rb +114 -0
- data/spec/models/nav_node_spec.rb +277 -0
- data/spec/models/navable_spec.rb +54 -0
- data/spec/models/page_spec.rb +185 -0
- data/spec/models/post_spec.rb +271 -0
- data/spec/models/profile_field_mixins/has_child_profile_fields_spec.rb +73 -0
- data/spec/models/profile_field_spec.rb +482 -0
- data/spec/models/profile_section_spec.rb +89 -0
- data/spec/models/profile_spec.rb +74 -0
- data/spec/models/profileable_mixins/adress_spec.rb +93 -0
- data/spec/models/profileable_spec.rb +152 -0
- data/spec/models/relationship_spec.rb +113 -0
- data/spec/models/status_group_membership_spec.rb +350 -0
- data/spec/models/status_group_spec.rb +103 -0
- data/spec/models/structureable_mixins/has_special_groups_spec.rb +479 -0
- data/spec/models/structureable_mixins/roles_spec.rb +517 -0
- data/spec/models/structureable_spec.rb +128 -0
- data/spec/models/user_account_spec.rb +142 -0
- data/spec/models/user_alias_spec.rb +57 -0
- data/spec/models/user_group_membership_mixins/validity_range_for_indirect_memberships_spec.rb +291 -0
- data/spec/models/user_group_membership_mixins/validity_range_spec.rb +293 -0
- data/spec/models/user_group_membership_spec.rb +428 -0
- data/spec/models/user_mixins/identification_spec.rb +27 -0
- data/spec/models/user_mixins/memberships_spec.rb +138 -0
- data/spec/models/user_spec.rb +1794 -0
- data/spec/old_yp_spec_helper.rb +46 -0
- data/spec/spec_helper.rb +350 -0
- data/spec/support/auto_complete.rb +22 -0
- data/spec/support/capybara/flash_helpers.rb +37 -0
- data/spec/support/capybara/profile_steps.rb +73 -0
- data/spec/support/capybara/session_steps.rb +53 -0
- data/spec/support/capybara/user_account_helpers.rb +15 -0
- data/spec/support/debug.rb +8 -0
- data/spec/support/devise-controller_macros.rb +15 -0
- data/spec/support/geocoder/stubs.rb +60 -0
- data/spec/support/press_enter.rb +15 -0
- data/spec/support/time_travel.rb +9 -0
- data/spec/support/uploads/image-upload.png +0 -0
- data/spec/support/uploads/pdf-upload.pdf +0 -0
- data/spec/support/wait_for_ajax.rb +39 -0
- data/spec/support/wait_for_cache.rb +7 -0
- data/spec/uploaders/attachment_uploader_spec.rb +47 -0
- data/vendor/assets/images/flags.png +0 -0
- data/vendor/assets/images/galleria/classic-loader.gif +0 -0
- data/vendor/assets/images/galleria/classic-map.png +0 -0
- data/vendor/assets/javascripts/best_in_place_datetime.js.coffee +45 -0
- data/vendor/assets/javascripts/galleria-classic.js +100 -0
- data/vendor/assets/javascripts/galleria.js +6919 -0
- data/vendor/assets/javascripts/gmaps4rails.js +2 -0
- data/vendor/assets/javascripts/gmaps4rails/all.js +1 -0
- data/vendor/assets/javascripts/gmaps4rails/base.coffee +1 -0
- data/vendor/assets/javascripts/gmaps4rails/base/common.coffee +43 -0
- data/vendor/assets/javascripts/gmaps4rails/base/configuration.coffee +7 -0
- data/vendor/assets/javascripts/gmaps4rails/base/gmaps.coffee +13 -0
- data/vendor/assets/javascripts/gmaps4rails/base/interfaces/basic_interface.coffee +15 -0
- data/vendor/assets/javascripts/gmaps4rails/base/interfaces/controller_interface.coffee +15 -0
- data/vendor/assets/javascripts/gmaps4rails/base/interfaces/map_interface.coffee +27 -0
- data/vendor/assets/javascripts/gmaps4rails/base/interfaces/marker_interface.coffee +15 -0
- data/vendor/assets/javascripts/gmaps4rails/base/main.coffee +124 -0
- data/vendor/assets/javascripts/gmaps4rails/base/main_controller_extensions/circle_controller.coffee +29 -0
- data/vendor/assets/javascripts/gmaps4rails/base/main_controller_extensions/kml_controller.coffee +5 -0
- data/vendor/assets/javascripts/gmaps4rails/base/main_controller_extensions/marker_controller.coffee +76 -0
- data/vendor/assets/javascripts/gmaps4rails/base/main_controller_extensions/polygon_controller.coffee +29 -0
- data/vendor/assets/javascripts/gmaps4rails/base/main_controller_extensions/polyline_controller.coffee +29 -0
- data/vendor/assets/javascripts/gmaps4rails/base/objects/circle.coffee +12 -0
- data/vendor/assets/javascripts/gmaps4rails/base/objects/kml.coffee +8 -0
- data/vendor/assets/javascripts/gmaps4rails/base/objects/map.coffee +62 -0
- data/vendor/assets/javascripts/gmaps4rails/base/objects/marker.coffee +24 -0
- data/vendor/assets/javascripts/gmaps4rails/base/objects/polygon.coffee +11 -0
- data/vendor/assets/javascripts/gmaps4rails/base/objects/polyline.coffee +11 -0
- data/vendor/assets/javascripts/gmaps4rails/bing.coffee +1 -0
- data/vendor/assets/javascripts/gmaps4rails/bing/main.coffee +29 -0
- data/vendor/assets/javascripts/gmaps4rails/bing/objects/map.coffee +63 -0
- data/vendor/assets/javascripts/gmaps4rails/bing/objects/marker.coffee +78 -0
- data/vendor/assets/javascripts/gmaps4rails/bing/shared.coffee +20 -0
- data/vendor/assets/javascripts/gmaps4rails/google.coffee +1 -0
- data/vendor/assets/javascripts/gmaps4rails/google/main.coffee +47 -0
- data/vendor/assets/javascripts/gmaps4rails/google/objects/circle.coffee +38 -0
- data/vendor/assets/javascripts/gmaps4rails/google/objects/kml.coffee +16 -0
- data/vendor/assets/javascripts/gmaps4rails/google/objects/map.coffee +71 -0
- data/vendor/assets/javascripts/gmaps4rails/google/objects/marker.coffee +114 -0
- data/vendor/assets/javascripts/gmaps4rails/google/objects/polygon.coffee +38 -0
- data/vendor/assets/javascripts/gmaps4rails/google/objects/polyline.coffee +49 -0
- data/vendor/assets/javascripts/gmaps4rails/google/shared.coffee +27 -0
- data/vendor/assets/javascripts/gmaps4rails/openlayers.coffee +1 -0
- data/vendor/assets/javascripts/gmaps4rails/openlayers/main.coffee +138 -0
- data/vendor/assets/javascripts/gmaps4rails/openlayers/objects/map.coffee +49 -0
- data/vendor/assets/javascripts/gmaps4rails/openlayers/objects/marker.coffee +68 -0
- data/vendor/assets/javascripts/gmaps4rails/openlayers/objects/polyline.coffee +39 -0
- data/vendor/assets/javascripts/gmaps4rails/openlayers/shared.coffee +19 -0
- data/vendor/assets/javascripts/jquery-ui-timepicker-addon.js +2223 -0
- data/vendor/assets/javascripts/jquery-ui-timepicker-de.js +26 -0
- data/vendor/assets/javascripts/jquery.ui.datepicker-de.js +23 -0
- data/vendor/assets/javascripts/password_strength.js +149 -0
- data/vendor/assets/javascripts/zxcvbn.js +43 -0
- data/vendor/assets/stylesheets/flags.css.scss +259 -0
- data/vendor/assets/stylesheets/galleria-classic.css.scss +239 -0
- data/vendor/assets/stylesheets/gmaps4rails.css +24 -0
- data/vendor/assets/stylesheets/mercury.css +24 -0
- data/vendor/scripts/bashpass/README.md +29 -0
- data/vendor/scripts/bashpass/bashpass +124 -0
- data/vendor/scripts/bashpass/bashpass-APACHE-LICENSE +201 -0
- data/vendor/scripts/bashpass/german.dic +40794 -0
- metadata +1540 -16
- data/.gitignore +0 -17
- data/Gemfile +0 -4
- data/LICENSE.txt +0 -4
- data/your_platform.gemspec +0 -19
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
feature "edit mode after clicking a link" do
|
|
4
|
+
include SessionSteps
|
|
5
|
+
|
|
6
|
+
scenario "switch to edit mode after clicking a link (turbolinks support)" do
|
|
7
|
+
login(:admin)
|
|
8
|
+
visit root_path
|
|
9
|
+
|
|
10
|
+
# switch to another page (turbolinks)
|
|
11
|
+
first(:link, I18n.t(:my_profile)).click
|
|
12
|
+
|
|
13
|
+
# edit mode should still work
|
|
14
|
+
within(".box.section.contact_information") do
|
|
15
|
+
click_on I18n.t(:edit)
|
|
16
|
+
page.should have_content I18n.t(:add)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
feature "Events" do
|
|
4
|
+
include SessionSteps
|
|
5
|
+
|
|
6
|
+
before do
|
|
7
|
+
@user = create(:user_with_account)
|
|
8
|
+
@group = create(:group)
|
|
9
|
+
@event = @group.child_events.create name: "Graduation Celebration", start_at: 1.day.from_now
|
|
10
|
+
|
|
11
|
+
@other_group = create(:group)
|
|
12
|
+
@other_event = @other_group.child_events.create name: "Other Event", start_at: 2.days.from_now
|
|
13
|
+
|
|
14
|
+
# Apparently, the callbacks need time. If we don't sleep here, `ActiveRecord::RecordNotFound`
|
|
15
|
+
# is raised. In practice, we use an error handler in the EventsController due to this inconvenience.
|
|
16
|
+
#
|
|
17
|
+
# TODO: Check if this problem still exists when migrating to Rails 4.
|
|
18
|
+
#
|
|
19
|
+
@event.wait_for_me_to_exist
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
context "for the public internet" do
|
|
23
|
+
before do
|
|
24
|
+
@event.update_attribute :publish_on_local_website, true
|
|
25
|
+
@other_event.update_attribute :publish_on_global_website, true
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
scenario "looking at the global public events html feed" do
|
|
29
|
+
visit public_events_path
|
|
30
|
+
page.should have_text @other_event.name
|
|
31
|
+
page.should have_no_text @event.name
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
specify "the public feed should allow to limit the number of events" do
|
|
35
|
+
Event.destroy_all
|
|
36
|
+
@event1 = @group.child_events.create name: 'event 1', publish_on_global_website: true, start_at: 1.day.from_now
|
|
37
|
+
@event2 = @group.child_events.create name: 'event 2', publish_on_global_website: true, start_at: 2.day.from_now
|
|
38
|
+
@event3 = @group.child_events.create name: 'event 3', publish_on_global_website: true, start_at: 3.day.from_now
|
|
39
|
+
@event4 = @group.child_events.create name: 'event 4', publish_on_global_website: true, start_at: 4.day.from_now
|
|
40
|
+
|
|
41
|
+
visit public_events_path(limit: 3)
|
|
42
|
+
page.should have_text @event1.name
|
|
43
|
+
page.should have_text @event2.name
|
|
44
|
+
page.should have_text @event3.name
|
|
45
|
+
page.should have_no_text @event4.name
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
specify "the public feed should display the events ordered by the start time" do
|
|
49
|
+
Event.destroy_all
|
|
50
|
+
@event4 = @group.child_events.create name: 'event 4', publish_on_global_website: true, start_at: 4.day.from_now
|
|
51
|
+
@event2 = @group.child_events.create name: 'event 2', publish_on_global_website: true, start_at: 2.day.from_now
|
|
52
|
+
@event3 = @group.child_events.create name: 'event 3', publish_on_global_website: true, start_at: 3.day.from_now
|
|
53
|
+
@event1 = @group.child_events.create name: 'event 1', publish_on_global_website: true, start_at: 1.day.from_now
|
|
54
|
+
|
|
55
|
+
visit public_events_path(limit: 3)
|
|
56
|
+
page.body.should =~ /#{@event1.name}.*#{@event2.name}.*#{@event3.name}/m # `/m` allowes newlines.
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
scenario "looking at the local public events html feed" do
|
|
60
|
+
visit group_events_public_path(@group)
|
|
61
|
+
page.should have_no_text @other_event.name
|
|
62
|
+
page.should have_text @event.name
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
specify "the local feed should allow to limit the number of events" do
|
|
66
|
+
Event.destroy_all
|
|
67
|
+
@event1 = @group.child_events.create name: 'event 1', publish_on_local_website: true, start_at: 1.day.from_now
|
|
68
|
+
@event2 = @group.child_events.create name: 'event 2', publish_on_local_website: true, start_at: 2.day.from_now
|
|
69
|
+
@event3 = @group.child_events.create name: 'event 3', publish_on_local_website: true, start_at: 3.day.from_now
|
|
70
|
+
@event4 = @group.child_events.create name: 'event 4', publish_on_local_website: true, start_at: 4.day.from_now
|
|
71
|
+
|
|
72
|
+
visit group_events_public_path(@group, limit: 3)
|
|
73
|
+
page.should have_text @event1.name
|
|
74
|
+
page.should have_text @event2.name
|
|
75
|
+
page.should have_text @event3.name
|
|
76
|
+
page.should have_no_text @event4.name
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
scenario "loading the global public event ics feed" do
|
|
80
|
+
visit public_events_path format: 'ics'
|
|
81
|
+
page.should have_text 'BEGIN:VCALENDAR'
|
|
82
|
+
page.should have_text @other_event.name
|
|
83
|
+
page.should have_no_text @event.name
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
scenario "loading the local public event ics feed" do
|
|
87
|
+
visit group_events_public_path @group, format: 'ics'
|
|
88
|
+
page.should have_text 'BEGIN:VCALENDAR'
|
|
89
|
+
page.should have_no_text @other_event.name
|
|
90
|
+
page.should have_text @event.name
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
context "for users" do
|
|
95
|
+
background { login @user }
|
|
96
|
+
context "being no member of the group the event belongs to" do
|
|
97
|
+
|
|
98
|
+
scenario "visiting the start page" do
|
|
99
|
+
visit root_path
|
|
100
|
+
page.should have_no_text I18n.t(:events)
|
|
101
|
+
page.should have_no_selector '.upcoming_events'
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
end
|
|
105
|
+
context "being member of the group the event belongs to" do
|
|
106
|
+
background { @group.assign_user @user, at: 1.year.ago }
|
|
107
|
+
|
|
108
|
+
scenario "visiting the start page" do
|
|
109
|
+
visit root_path
|
|
110
|
+
page.should have_text I18n.t(:events)
|
|
111
|
+
page.should have_selector '.upcoming_events'
|
|
112
|
+
within '.box.upcoming_events' do
|
|
113
|
+
page.should have_text @event.name
|
|
114
|
+
page.should have_text I18n.localize(@event.start_at.to_date, format: :long)
|
|
115
|
+
page.should have_text @event.group.name
|
|
116
|
+
page.should have_no_text @other_event.name
|
|
117
|
+
page.should have_text I18n.t(:show_all)
|
|
118
|
+
page.should have_selector '#ics_abo'
|
|
119
|
+
page.should have_no_selector '#create_event'
|
|
120
|
+
page.should have_no_text I18n.t('date.to')
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
scenario "visiting the start page with several-day events" do
|
|
125
|
+
@event.start_at = 1.day.ago
|
|
126
|
+
@event.end_at = @event.start_at + 3.days
|
|
127
|
+
@event.save
|
|
128
|
+
|
|
129
|
+
visit root_path
|
|
130
|
+
page.should have_text I18n.t(:events)
|
|
131
|
+
page.should have_selector '.upcoming_events'
|
|
132
|
+
within '.box.upcoming_events' do
|
|
133
|
+
page.should have_text @event.name
|
|
134
|
+
page.should have_text I18n.t('date.to')
|
|
135
|
+
page.should have_text @event.start_at.day.to_s
|
|
136
|
+
page.should have_text I18n.localize(@event.end_at.to_date, format: :long)
|
|
137
|
+
page.should have_text @event.group.name
|
|
138
|
+
page.should have_no_text @other_event.name
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
scenario "showing event details" do
|
|
143
|
+
visit root_path
|
|
144
|
+
within('.box.upcoming_events') { click_on @event.name }
|
|
145
|
+
page.should have_text I18n.t :description
|
|
146
|
+
page.should have_text I18n.t :start_at
|
|
147
|
+
page.should have_text I18n.t :end_at
|
|
148
|
+
page.should have_no_text I18n.t :optional
|
|
149
|
+
page.should have_text I18n.t :contact_people
|
|
150
|
+
page.should have_text I18n.t :attendees
|
|
151
|
+
page.should have_no_text I18n.t :publish
|
|
152
|
+
page.should have_no_selector '.best_in_place'
|
|
153
|
+
page.should have_selector '#join_event'
|
|
154
|
+
page.should have_no_selector '#toggle_invite'
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
scenario "joining an event", js: true do
|
|
158
|
+
visit root_path
|
|
159
|
+
within('.box.upcoming_events') { click_on @event.name }
|
|
160
|
+
page.should have_no_selector '.member_avatar'
|
|
161
|
+
page.should have_selector '#join_event', visible: true
|
|
162
|
+
page.should have_no_selector '#leave_event', visible: true
|
|
163
|
+
find('#join_event').click
|
|
164
|
+
page.should have_selector '.member_avatar'
|
|
165
|
+
page.should have_no_selector '#join_event', visible: true
|
|
166
|
+
page.should have_selector '#leave_event', visible: true
|
|
167
|
+
find('#leave_event').click
|
|
168
|
+
page.should have_selector '#join_event', visible: true
|
|
169
|
+
page.should have_no_selector '#leave_event', visible: true
|
|
170
|
+
page.should have_no_selector '.member_avatar'
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
scenario "joining an event via get", :js do
|
|
174
|
+
visit event_join_via_get_path(@event, email_confirm: true)
|
|
175
|
+
page.should have_no_text 'Unauthorisierter Zugang'
|
|
176
|
+
page.should have_selector '.member_avatar'
|
|
177
|
+
page.should have_no_selector '#join_event', visible: true
|
|
178
|
+
page.should have_selector '#leave_event', visible: true
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
scenario "exporting an event" do
|
|
182
|
+
visit root_path
|
|
183
|
+
within('.box.upcoming_events') { click_on @event.name }
|
|
184
|
+
find('#ics_export').click
|
|
185
|
+
page.should have_text 'BEGIN:VCALENDAR'
|
|
186
|
+
page.should have_text @event.name
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
scenario "listing all events" do
|
|
190
|
+
visit root_path
|
|
191
|
+
within('.box.upcoming_events') { click_on I18n.t(:show_all) }
|
|
192
|
+
page.should have_text I18n.t :my_events
|
|
193
|
+
page.should have_text @event.name
|
|
194
|
+
page.should have_no_text @other_event.name
|
|
195
|
+
|
|
196
|
+
click_on @event.name
|
|
197
|
+
page.should have_text I18n.t :description
|
|
198
|
+
page.should have_text I18n.t :start_at
|
|
199
|
+
page.should have_text I18n.t :end_at
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
scenario "exporting personal calendar" do
|
|
203
|
+
visit root_path
|
|
204
|
+
within('.box.upcoming_events') { find('#ics_abo').click }
|
|
205
|
+
page.should have_text 'BEGIN:VCALENDAR'
|
|
206
|
+
page.should have_text @event.name
|
|
207
|
+
page.should have_no_text @other_event.name
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
scenario "looking at upcoming group events" do
|
|
211
|
+
visit group_path(@group)
|
|
212
|
+
within('.box.upcoming_events') do
|
|
213
|
+
page.should have_text @event.name
|
|
214
|
+
page.should have_no_text @other_event.name
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
scenario "exporting group events" do
|
|
219
|
+
visit group_path(@group)
|
|
220
|
+
within('.box.upcoming_events') { find('#ics_abo').click }
|
|
221
|
+
page.should have_text 'BEGIN:VCALENDAR'
|
|
222
|
+
page.should have_text @event.name
|
|
223
|
+
page.should have_no_text @other_event.name
|
|
224
|
+
end
|
|
225
|
+
end
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
context "for officers", js: true do
|
|
229
|
+
background do
|
|
230
|
+
@group.officers_parent.child_groups.create(name: 'President').assign_user @user, at: 1.hour.ago
|
|
231
|
+
login @user
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
scenario "creating an event from the root page" do
|
|
235
|
+
visit root_path
|
|
236
|
+
find('#create_event').click
|
|
237
|
+
page.should have_text 'Bezeichnung der Veranstaltung hier eingeben'
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
scenario "creating an event from a group page" do
|
|
241
|
+
visit group_path(@group)
|
|
242
|
+
find('#create_event').click
|
|
243
|
+
page.should have_text 'Bezeichnung der Veranstaltung hier eingeben'
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
if ENV['CI'] != 'travis' # this keeps failing on travis
|
|
247
|
+
scenario "editing an event" do
|
|
248
|
+
sleep 3 # to give the database some time after creating the event.
|
|
249
|
+
visit event_path(@event)
|
|
250
|
+
within('.box.first h1') do
|
|
251
|
+
find('.best_in_place').click
|
|
252
|
+
find('input').set "My cool new event\n"
|
|
253
|
+
page.should have_no_selector 'input'
|
|
254
|
+
page.should have_text "My cool new event"
|
|
255
|
+
|
|
256
|
+
# # This works in practice, but not in the test. :(
|
|
257
|
+
# # TODO: Fix this test:
|
|
258
|
+
# within('.vertical_menu') { page.should have_text "My cool new event" }
|
|
259
|
+
# within('#breadcrumb') { page.should have_text "My cool new event" }
|
|
260
|
+
end
|
|
261
|
+
end
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
scenario "editing an event, pt. 2" do
|
|
265
|
+
visit event_path(@event)
|
|
266
|
+
within 'tr.description' do
|
|
267
|
+
find('.best_in_place').click
|
|
268
|
+
find('textarea').set "My new event description."
|
|
269
|
+
# tab \t switches to the next input field. But the event handlers are not triggered as expected.
|
|
270
|
+
# TODO: Fix this feature.
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
within('tr.start_at') { find('.best_in_place').click }
|
|
274
|
+
page.should have_selector '#ui-datepicker-div', visible: true
|
|
275
|
+
click_on 'Fertig' # closes datepicker
|
|
276
|
+
page.should have_no_selector '#ui-datepicker-div', visible: true
|
|
277
|
+
|
|
278
|
+
within 'tr.contact_people' do
|
|
279
|
+
find('.best_in_place').click
|
|
280
|
+
|
|
281
|
+
@other_user = create(:user)
|
|
282
|
+
page.execute_script "$('tr.contact_people * .best_in_place').trigger('edit')" # to keep it open
|
|
283
|
+
page.execute_script "$('tr.contact_people * .best_in_place input').val('#{@other_user.last_name}')"
|
|
284
|
+
page.execute_script "$('tr.contact_people * .best_in_place input').trigger('focus')"
|
|
285
|
+
page.execute_script "$('tr.contact_people * .best_in_place input').trigger('keydown')"
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
# # TODO: Fix this spec.
|
|
289
|
+
# # When I break at this point and open this state in a browser, the auto-complete menu will open.
|
|
290
|
+
# # But I fail to simulate this in this test.
|
|
291
|
+
# #
|
|
292
|
+
# selector = %Q{ul.ui-autocomplete li.ui-menu-item a:contains("#{@other_user.title}")}
|
|
293
|
+
# page.should have_selector('ul.ui-autocomplete li.ui-menu-item a')
|
|
294
|
+
# page.execute_script %Q{ $('#{selector}').trigger('mouseenter').click() }
|
|
295
|
+
#
|
|
296
|
+
# page.should have_text @other_user.name # auto completion menu
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
scenario "editing an event, pt. 3" do
|
|
300
|
+
visit event_path(@event)
|
|
301
|
+
within('tr.publish_on_local_website') { find('select').click }
|
|
302
|
+
within('tr.publish_on_global_website') { find('select').click }
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
scenario "inviting group members" do
|
|
306
|
+
visit event_path(@event)
|
|
307
|
+
find('#toggle_invite').click
|
|
308
|
+
page.should have_selector '#invitation_text', visible: true
|
|
309
|
+
find('#test_invite').click
|
|
310
|
+
find('#confirm_invite').click
|
|
311
|
+
page.should have_no_selector '#invitation_text', visible: true
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
end
|
|
315
|
+
|
|
316
|
+
describe "creating an event as officer of a local corporation (bug fix)", :js do
|
|
317
|
+
# We had this issue:
|
|
318
|
+
#
|
|
319
|
+
# Started POST "/events.json?group_id=12" for 2.242.197.85 at 2014-10-23 16:54:47 +0200
|
|
320
|
+
# Processing by EventsController#create as JSON
|
|
321
|
+
# Parameters: {"group_id"=>"12"}
|
|
322
|
+
# Rendered terms_of_use/_terms.html.haml (0.2ms)
|
|
323
|
+
# Completed 422 Unprocessable Entity in 9932.8ms
|
|
324
|
+
#
|
|
325
|
+
# ActiveRecord::RecordInvalid (Validation failed: Ancestor has already been taken).
|
|
326
|
+
#
|
|
327
|
+
# As it turned out, this has been caused by mysql locking issues, when callbacks
|
|
328
|
+
# locked the event while adding attendees and contact_people groups.
|
|
329
|
+
#
|
|
330
|
+
background do
|
|
331
|
+
@corporation = create :corporation_with_status_groups
|
|
332
|
+
@corporation.status_groups.first.assign_user @user, at: 1.month.ago
|
|
333
|
+
@president = @corporation.officers_parent.child_groups.create name: 'President'
|
|
334
|
+
@president.assign_user @user, at: 5.days.ago
|
|
335
|
+
@other_event = create :event
|
|
336
|
+
@other_event.parent_groups << @corporation
|
|
337
|
+
end
|
|
338
|
+
scenario "creating an event as officer of a local corporation (bug fix)" do
|
|
339
|
+
login @user
|
|
340
|
+
visit root_path
|
|
341
|
+
within('#create_event') { page.should have_text @corporation.name }
|
|
342
|
+
|
|
343
|
+
find('#create_event').click
|
|
344
|
+
page.should have_text 'Bezeichnung der Veranstaltung hier eingeben'
|
|
345
|
+
within '.contact_people' do
|
|
346
|
+
page.should have_text @user.title
|
|
347
|
+
end
|
|
348
|
+
|
|
349
|
+
@event = Event.last
|
|
350
|
+
@event.id.should_not == @other_event.id
|
|
351
|
+
@event.group.id.should == @corporation.id
|
|
352
|
+
@event.contact_people.should include @user
|
|
353
|
+
end
|
|
354
|
+
end
|
|
355
|
+
|
|
356
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
# For the moment, this file is a double-check. For the main tests, see the controller
|
|
4
|
+
# specs of the groups controller.
|
|
5
|
+
#
|
|
6
|
+
feature 'Group Member List Export' do
|
|
7
|
+
include SessionSteps
|
|
8
|
+
|
|
9
|
+
before do
|
|
10
|
+
@group = create :group, :with_members
|
|
11
|
+
|
|
12
|
+
login :admin
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
scenario 'exporting a birthday list as csv', :focus do
|
|
16
|
+
visit group_path @group, list: 'birthday_list', format: 'csv'
|
|
17
|
+
page.should have_text @group.members.first.last_name
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
feature "Group Posts" do
|
|
4
|
+
include SessionSteps
|
|
5
|
+
|
|
6
|
+
background do
|
|
7
|
+
#
|
|
8
|
+
# @super_group
|
|
9
|
+
# |-------- @group ------ @other_user
|
|
10
|
+
# |
|
|
11
|
+
# @officers ----- @user
|
|
12
|
+
#
|
|
13
|
+
@user = create :user_with_account
|
|
14
|
+
@other_user = create :user_with_account
|
|
15
|
+
@group = create :group
|
|
16
|
+
@group << @other_user
|
|
17
|
+
@parent_group = create :group
|
|
18
|
+
@parent_group << @group
|
|
19
|
+
@officers = @group.officers_parent.child_groups.create name: 'Officers'
|
|
20
|
+
@officers << @user
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe "as officer:", :js do
|
|
24
|
+
background { login(@user) }
|
|
25
|
+
|
|
26
|
+
scenario 'Selecting conditions on recipients' do
|
|
27
|
+
visit group_path(@group)
|
|
28
|
+
find('#new_post').click
|
|
29
|
+
page.should have_text 'Anzahl der Empfänger: 2'
|
|
30
|
+
|
|
31
|
+
find('label.constrain_validity_range').click
|
|
32
|
+
# page.should have_text 'Anzahl der Empfänger: …' # test is too fast.
|
|
33
|
+
page.should have_text 'Anzahl der Empfänger: 2'
|
|
34
|
+
|
|
35
|
+
fill_in :valid_from, with: I18n.localize('2015-12-01'.to_date)
|
|
36
|
+
# page.should have_text 'Anzahl der Empfänger: …' # test is too fast.
|
|
37
|
+
page.should have_text 'Anzahl der Empfänger: 0'
|
|
38
|
+
end
|
|
39
|
+
scenario 'Sending a test message' do
|
|
40
|
+
visit group_path(@group)
|
|
41
|
+
find('#new_post').click
|
|
42
|
+
|
|
43
|
+
fill_in :message_text, with: 'This is a test message.'
|
|
44
|
+
find('#test_message').click
|
|
45
|
+
|
|
46
|
+
page.should have_text 'Test-Nachricht wurde versandt.'
|
|
47
|
+
page.should have_text 'Erneut zum Testen an meine eigene Adresse senden.'
|
|
48
|
+
|
|
49
|
+
email_text = ''
|
|
50
|
+
Timeout::timeout(15) do
|
|
51
|
+
loop do
|
|
52
|
+
email_text = ActionMailer::Base.deliveries.last.to_s
|
|
53
|
+
break if email_text.include?('This is a test message.')
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
email_text.should include 'This is a test message.'
|
|
57
|
+
email_text.should include @user.email
|
|
58
|
+
end
|
|
59
|
+
scenario 'Sending a group message' do
|
|
60
|
+
visit group_path(@group)
|
|
61
|
+
find('#new_post').click
|
|
62
|
+
|
|
63
|
+
fill_in :message_text, with: 'This is a real message.'
|
|
64
|
+
find('#confirm_message').click
|
|
65
|
+
|
|
66
|
+
email_text = ''
|
|
67
|
+
Timeout::timeout(15) do
|
|
68
|
+
loop do
|
|
69
|
+
# Take the last two emails, since we don't know to which user
|
|
70
|
+
# the mail is sent first.
|
|
71
|
+
email_text = ActionMailer::Base.deliveries.last.to_s + ActionMailer::Base.deliveries[-1].to_s
|
|
72
|
+
break if email_text.include?('This is a real message.') and email_text.include?(@other_user.email)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
email_text.should include 'This is a real message.'
|
|
76
|
+
email_text.should include @user.email
|
|
77
|
+
email_text.should include @other_user.email
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
describe "as user:" do
|
|
82
|
+
background { login(@other_user) }
|
|
83
|
+
|
|
84
|
+
specify 'There should be no button to send a message.' do
|
|
85
|
+
visit group_path(@group)
|
|
86
|
+
page.should have_no_selector '#new_post'
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|