artfully_ose 1.2.0 → 1.3.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/app/assets/images/actions/open.png +0 -0
- data/app/assets/images/actions/pledge.png +0 -0
- data/app/assets/images/actions/pledge.psd +0 -0
- data/app/assets/images/glyphish/gray/cancel.png +0 -0
- data/app/assets/images/loading_gray.gif +0 -0
- data/app/assets/javascripts/application.js +30 -4
- data/app/assets/javascripts/baseball_card.js.coffee +235 -0
- data/app/assets/javascripts/boxoffice.js +12 -49
- data/app/assets/javascripts/contributions.js +264 -0
- data/app/assets/javascripts/custom/advanced_searches.js +142 -0
- data/app/assets/javascripts/custom/endless-scroll.js +1 -1
- data/app/assets/javascripts/custom/job-monitor.js +73 -0
- data/app/assets/javascripts/custom/kits-config.js +0 -2
- data/app/assets/javascripts/custom/mailchimp.js +14 -0
- data/app/assets/javascripts/custom/people.js +31 -2
- data/app/assets/javascripts/custom/person-finder.js +34 -0
- data/app/assets/javascripts/custom/searches.js +12 -0
- data/app/assets/javascripts/custom/user-finder.js +111 -0
- data/app/assets/javascripts/households.js +12 -5
- data/app/assets/javascripts/ical.js +138 -0
- data/app/assets/javascripts/jquery-lib/jquery.timeago.js +221 -0
- data/app/assets/javascripts/locationselector.js +1 -1
- data/app/assets/javascripts/memberships.js +24 -0
- data/app/assets/javascripts/relationships.js +10 -0
- data/app/assets/javascripts/search.js +22 -0
- data/app/assets/javascripts/store/sliding-wizard.js +2 -2
- data/app/assets/javascripts/store/store.js +51 -6
- data/app/assets/javascripts/tags.js +44 -0
- data/app/assets/stylesheets/application.sass +331 -32
- data/app/assets/stylesheets/bootstrap-overrides.css +24 -9
- data/app/assets/stylesheets/boxoffice.css.scss +0 -4
- data/app/assets/stylesheets/sass/_campaigns.sass +43 -0
- data/app/assets/stylesheets/sass/_tags.sass +10 -1
- data/app/assets/stylesheets/sass/fa-color.css.scss +13 -0
- data/app/assets/stylesheets/sass/store.sass +7 -7
- data/app/concerns/cart_finder.rb +10 -0
- data/app/concerns/oh_noes.rb +1 -1
- data/app/controllers/actions_controller.rb +5 -5
- data/app/controllers/addresses_controller.rb +1 -1
- data/app/controllers/advanced_search_segments_controller.rb +97 -0
- data/app/controllers/advanced_searches_controller.rb +118 -0
- data/app/controllers/appeals_controller.rb +63 -0
- data/app/controllers/artfully_ose_controller.rb +20 -2
- data/app/controllers/campaigns_controller.rb +90 -0
- data/app/controllers/charts_controller.rb +8 -2
- data/app/controllers/console_sales_controller.rb +21 -23
- data/app/controllers/contributions_controller.rb +74 -43
- data/app/controllers/converts_controller.rb +21 -0
- data/app/controllers/delete_ticket_types_controller.rb +35 -0
- data/app/controllers/events_pass_types_controller.rb +10 -2
- data/app/controllers/export_controller.rb +4 -4
- data/app/controllers/households_controller.rb +63 -15
- data/app/controllers/imports_controller.rb +13 -10
- data/app/controllers/job_monitors_controller.rb +9 -0
- data/app/controllers/members/people_controller.rb +7 -5
- data/app/controllers/members/sessions_controller.rb +1 -0
- data/app/controllers/membership_comps_controller.rb +5 -20
- data/app/controllers/memberships_controller.rb +2 -2
- data/app/controllers/merges_controller.rb +7 -6
- data/app/controllers/mobile/users_controller.rb +18 -6
- data/app/controllers/notes_controller.rb +5 -1
- data/app/controllers/orders_controller.rb +30 -13
- data/app/controllers/organizations_controller.rb +8 -0
- data/app/controllers/passes_kits_controller.rb +2 -4
- data/app/controllers/people_controller.rb +105 -17
- data/app/controllers/pledges_controller.rb +64 -0
- data/app/controllers/preview_rows_controller.rb +29 -0
- data/app/controllers/regular_donation_kits_controller.rb +11 -6
- data/app/controllers/sales_controller.rb +72 -40
- data/app/controllers/searches_controller.rb +37 -6
- data/app/controllers/segments_controller.rb +33 -2
- data/app/controllers/settlements_controller.rb +13 -7
- data/app/controllers/shows_controller.rb +58 -24
- data/app/controllers/statements_controller.rb +2 -2
- data/app/controllers/store/checkouts_controller.rb +43 -26
- data/app/controllers/store/donations_controller.rb +27 -11
- data/app/controllers/store/memberships_controller.rb +37 -4
- data/app/controllers/store/orders_controller.rb +26 -10
- data/app/controllers/store/passes_controller.rb +30 -3
- data/app/controllers/tags_controller.rb +42 -0
- data/app/controllers/ticket_types_controller.rb +9 -2
- data/app/controllers/tickets_controller.rb +6 -4
- data/app/controllers/unacknowledged_gifts_controller.rb +45 -0
- data/app/controllers/user_memberships_controller.rb +47 -8
- data/app/helpers/advanced_searches_helper.rb +252 -0
- data/app/helpers/artfully_ose_helper.rb +33 -4
- data/app/helpers/checkouts_helper.rb +16 -0
- data/app/helpers/mailchimp_lists_for_search_helper.rb +21 -0
- data/app/helpers/orders_helper.rb +11 -0
- data/app/helpers/people_helper.rb +28 -1
- data/app/helpers/relationships_helper.rb +6 -0
- data/app/helpers/sales_helper.rb +3 -1
- data/app/helpers/searches_helper.rb +3 -1
- data/app/helpers/segments_helper.rb +3 -0
- data/app/mailers/order_mailer.rb +8 -1
- data/app/mailers/producer_mailer.rb +39 -0
- data/app/mailers/reports_mailer.rb +6 -1
- data/app/models/ability.rb +15 -8
- data/app/models/action.rb +33 -4
- data/app/models/actions/change_action.rb +3 -1
- data/app/models/actions/comp_action.rb +3 -1
- data/app/models/actions/convert_action.rb +19 -0
- data/app/models/actions/do_action.rb +3 -1
- data/app/models/actions/exchange_action.rb +3 -1
- data/app/models/actions/get_action.rb +3 -1
- data/app/models/actions/give_action.rb +8 -2
- data/app/models/actions/go_action.rb +3 -1
- data/app/models/actions/hear_action.rb +15 -1
- data/app/models/actions/join_action.rb +3 -1
- data/app/models/actions/mailchimp_hear_action.rb +17 -0
- data/app/models/actions/pledge_action.rb +19 -0
- data/app/models/actions/refund_action.rb +3 -1
- data/app/models/actions/say_action.rb +3 -1
- data/app/models/actions/system_action.rb +17 -0
- data/app/models/address.rb +76 -31
- data/app/models/advanced_search.rb +434 -0
- data/app/models/advanced_search_segment.rb +12 -0
- data/app/models/appeal.rb +106 -0
- data/app/models/box_office.rb +1 -1
- data/app/models/budget_restriction.rb +9 -0
- data/app/models/campaign.rb +141 -0
- data/app/models/cart.rb +39 -4
- data/app/models/chart.rb +2 -2
- data/app/models/checkout.rb +54 -10
- data/app/models/comp.rb +7 -5
- data/app/models/company.rb +2 -0
- data/app/models/console_sale.rb +26 -0
- data/app/models/contribution.rb +327 -62
- data/app/models/convert.rb +62 -0
- data/app/models/daily_membership_report.rb +1 -1
- data/app/models/database_views/item_view.rb +91 -49
- data/app/models/discount.rb +1 -1
- data/app/models/discounts/discount_type.rb +2 -1
- data/app/models/donation.rb +27 -2
- data/app/models/donation_search.rb +188 -10
- data/app/models/door_list.rb +39 -2
- data/app/models/event.rb +31 -15
- data/app/models/ext.rb +3 -3
- data/app/models/ext/delayed_indexing.rb +41 -1
- data/app/models/ext/integrations.rb +6 -0
- data/app/models/forwarding_job_monitor.rb +2 -0
- data/app/models/household.rb +1 -1
- data/app/models/import.rb +39 -8
- data/app/models/imports/donations_import.rb +110 -19
- data/app/models/imports/events_import.rb +3 -2
- data/app/models/imports/mappings.rb +991 -0
- data/app/models/imports/memberships_import.rb +218 -20
- data/app/models/imports/people_import.rb +9 -1
- data/app/models/imports/rollback.rb +9 -0
- data/app/models/imports/validations.rb +7 -0
- data/app/models/individual.rb +3 -1
- data/app/models/item.rb +55 -17
- data/app/models/job/acknowledge_job.rb +23 -0
- data/app/models/job/checkout_processor.rb +1 -1
- data/app/models/job/convert_order_processor.rb +14 -0
- data/app/models/job/daily_email_report_job.rb +1 -12
- data/app/models/job/destroy_show_job.rb +1 -6
- data/app/models/job/destroy_tag_job.rb +18 -0
- data/app/models/job/door_list_generator_job.rb +33 -0
- data/app/models/job/door_list_mailer_job.rb +15 -0
- data/app/models/job/email_organization_sales_report_job.rb +32 -0
- data/app/models/job/expire_ticket_job.rb +19 -2
- data/app/models/job/export_people_job.rb +47 -0
- data/app/models/job/export_settlements_job.rb +24 -0
- data/app/models/job/geocode_address_job.rb +2 -7
- data/app/models/job/mailchimp_sync_job.rb +61 -3
- data/app/models/job/merge_job.rb +19 -0
- data/app/models/job/order_export_job.rb +36 -0
- data/app/models/job/order_mailer_job.rb +1 -2
- data/app/models/job/order_processor.rb +17 -6
- data/app/models/job/person_lifetime_value_job.rb +1 -0
- data/app/models/job/search_export_job.rb +33 -0
- data/app/models/job/suggest_households_by_address_job.rb +29 -0
- data/app/models/job/suggest_households_by_spouse_job.rb +22 -0
- data/app/models/job_monitor.rb +14 -0
- data/app/models/kit.rb +35 -8
- data/app/models/kits/campaigns_kit.rb +27 -0
- data/app/models/kits/mailchimp_kit.rb +548 -124
- data/app/models/kits/membership_kit.rb +14 -6
- data/app/models/kits/passes_kit.rb +14 -6
- data/app/models/kits/regular_donation_kit.rb +29 -2
- data/app/models/{relationships_kit.rb → kits/relationships_kit.rb} +3 -7
- data/app/models/kits/scannable_tickets_kit.rb +0 -5
- data/app/models/kits/sponsored_donation_kit.rb +2 -12
- data/app/models/kits/ticketing_kit.rb +9 -1
- data/app/models/linking_job_monitor.rb +2 -0
- data/app/models/list_grouping.rb +10 -0
- data/app/models/member.rb +35 -23
- data/app/models/member_number_generator.rb +2 -0
- data/app/models/membership.rb +23 -14
- data/app/models/membership_change.rb +17 -1
- data/app/models/membership_comp.rb +48 -23
- data/app/models/membership_comp_job.rb +7 -0
- data/app/models/membership_type.rb +13 -7
- data/app/models/monitorable.rb +19 -0
- data/app/models/note.rb +10 -1
- data/app/models/order.rb +170 -21
- data/app/models/order_handler.rb +13 -2
- data/app/models/orders/convert_order.rb +11 -0
- data/app/models/organization.rb +87 -9
- data/app/models/parsed_row.rb +142 -67
- data/app/models/pass.rb +13 -7
- data/app/models/pass_type.rb +17 -4
- data/app/models/passes_report.rb +6 -3
- data/app/models/payment.rb +16 -6
- data/app/models/payments/cash_payment.rb +1 -0
- data/app/models/payments/check_payment.rb +1 -5
- data/app/models/payments/comp_payment.rb +0 -1
- data/app/models/payments/credit_card_payment.rb +2 -7
- data/app/models/permission.rb +28 -0
- data/app/models/person.rb +503 -94
- data/app/models/phone.rb +3 -0
- data/app/models/redis_manager.rb +39 -0
- data/app/models/relationship.rb +31 -4
- data/app/models/relationship_builder.rb +0 -3
- data/app/models/rolling_membership_type.rb +5 -1
- data/app/models/s3_coordinator.rb +21 -0
- data/app/models/sale.rb +7 -4
- data/app/models/scheduled_pledge_payment.rb +69 -0
- data/app/models/search.rb +236 -24
- data/app/models/section.rb +6 -4
- data/app/models/show.rb +21 -12
- data/app/models/show_validator.rb +45 -0
- data/app/models/soft_credit.rb +126 -0
- data/app/models/subscribed_list.rb +52 -0
- data/app/models/suggested_household.rb +8 -2
- data/app/models/ticket.rb +35 -10
- data/app/models/ticket/locker.rb +25 -0
- data/app/models/ticket_summary.rb +1 -1
- data/app/models/ticket_type.rb +14 -2
- data/app/models/user.rb +42 -3
- data/app/models/user_membership.rb +57 -3
- data/app/models/valuation/lifetime_donations.rb +2 -2
- data/app/models/valuation/lifetime_pledges.rb +35 -0
- data/app/models/valuation/lifetime_value.rb +5 -1
- data/app/models/valuation_query.rb +109 -0
- data/app/models/venue.rb +8 -0
- data/app/views/actions/_action.html.haml +1 -1
- data/app/views/actions/_form.html.haml +2 -2
- data/app/views/actions/give/_show.html.haml +1 -1
- data/app/views/actions/pledge/_show.html.haml +8 -0
- data/app/views/actions/shared/_show.html.haml +1 -1
- data/app/views/addresses/_address.html.haml +3 -1
- data/app/views/advanced_search_segments/_advanced_searches_results.html.haml +15 -0
- data/app/views/advanced_search_segments/index.html.haml +18 -0
- data/app/views/advanced_search_segments/show.html.haml +46 -0
- data/app/views/advanced_searches/_form.html.haml +61 -0
- data/app/views/advanced_searches/_hit.html.haml +10 -0
- data/app/views/advanced_searches/_household.html.haml +7 -0
- data/app/views/advanced_searches/_new_condition.html.haml +3 -0
- data/app/views/advanced_searches/_people_count.html.erb +3 -0
- data/app/views/advanced_searches/_people_list.html.haml +5 -0
- data/app/views/advanced_searches/filters/_action.html.haml +12 -0
- data/app/views/advanced_searches/filters/_birthday.html.haml +9 -0
- data/app/views/advanced_searches/filters/_discount_code.html.haml +7 -0
- data/app/views/advanced_searches/filters/_donated.html.haml +17 -0
- data/app/views/advanced_searches/filters/_email.html.haml +7 -0
- data/app/views/advanced_searches/filters/_has_purchased_for.html.haml +9 -0
- data/app/views/advanced_searches/filters/_keyword.html.haml +9 -0
- data/app/views/advanced_searches/filters/_lifetime_value.html.haml +13 -0
- data/app/views/advanced_searches/filters/_limit_results.html.haml +7 -0
- data/app/views/advanced_searches/filters/_location.html.haml +11 -0
- data/app/views/advanced_searches/filters/_mailchimp_group.html.haml +8 -0
- data/app/views/advanced_searches/filters/_mailchimp_list.html.haml +8 -0
- data/app/views/advanced_searches/filters/_membership_ended.html.haml +9 -0
- data/app/views/advanced_searches/filters/_membership_started.html.haml +9 -0
- data/app/views/advanced_searches/filters/_membership_status.html.haml +8 -0
- data/app/views/advanced_searches/filters/_membership_type.html.haml +8 -0
- data/app/views/advanced_searches/filters/_orders.html.haml +10 -0
- data/app/views/advanced_searches/filters/_pass_type.html.haml +9 -0
- data/app/views/advanced_searches/filters/_relationships.html.haml +8 -0
- data/app/views/advanced_searches/filters/_segment.html.haml +8 -0
- data/app/views/advanced_searches/filters/_tagging.html.haml +9 -0
- data/app/views/advanced_searches/new.html.haml +12 -0
- data/app/views/advanced_searches/show.html.haml +107 -0
- data/app/views/advanced_searches/shows_for_org.html.haml +1 -0
- data/app/views/advanced_searches/ticket_types_for_org.html.haml +1 -0
- data/app/views/advanced_searches/update.js.erb +9 -0
- data/app/views/appeals/_form.html.haml +113 -0
- data/app/views/appeals/_header.html.haml +6 -0
- data/app/views/appeals/_heard_action.html.haml +16 -0
- data/app/views/appeals/edit.html.haml +8 -0
- data/app/views/appeals/new.html.haml +6 -0
- data/app/views/campaigns/_campaign_donations.html.haml +19 -0
- data/app/views/campaigns/_campaign_stats.html.haml +28 -0
- data/app/views/campaigns/_form.html.haml +48 -0
- data/app/views/campaigns/_header.html.haml +6 -0
- data/app/views/campaigns/edit.html.haml +6 -0
- data/app/views/campaigns/index.html.haml +33 -0
- data/app/views/campaigns/new.html.haml +6 -0
- data/app/views/campaigns/show.html.haml +132 -0
- data/app/views/console_sales/_cart.html.haml +3 -2
- data/app/views/console_sales/_payment.html.haml +14 -1
- data/app/views/console_sales/new.html.haml +11 -6
- data/app/views/contributions/_form.html.haml +139 -37
- data/app/views/contributions/_header.html.haml +5 -0
- data/app/views/contributions/_match_eligible.html.haml +24 -0
- data/app/views/contributions/_pledge_payment.html.haml +22 -0
- data/app/views/contributions/_search.html.haml +30 -0
- data/app/views/contributions/_soft_credit.html.haml +25 -0
- data/app/views/contributions/edit.html.haml +5 -8
- data/app/views/contributions/find_person.html.haml +16 -15
- data/app/views/contributions/index.html.haml +61 -24
- data/app/views/contributions/new.html.haml +5 -5
- data/app/views/converts/_grouped_form.html.haml +11 -0
- data/app/views/converts/new.html.haml +35 -0
- data/app/views/delete_ticket_types/_cannot_destroy_modal.html.haml +11 -0
- data/app/views/delete_ticket_types/_cannot_destroy_modal.rb +0 -0
- data/app/views/delete_ticket_types/_confirm_destroy_modal.html.haml +13 -0
- data/app/views/delete_ticket_types/show.html.haml +4 -0
- data/app/views/discounts/_form.html.haml +1 -1
- data/app/views/events/_day_date_show.html.haml +4 -2
- data/app/views/events/_glance.html.haml +12 -12
- data/app/views/events/_header.html.haml +1 -1
- data/app/views/events/_list.html.haml +1 -1
- data/app/views/events/_menu.html.haml +26 -21
- data/app/views/events/_section_fields.html.haml +1 -1
- data/app/views/events/_tax_deductible_message.html.haml +3 -0
- data/app/views/events/_ticket_type_fields.html.haml +13 -3
- data/app/views/events/index.html.haml +2 -1
- data/app/views/events/messages.html.haml +12 -10
- data/app/views/events/show.html.haml +6 -6
- data/app/views/events/temp_discount_form.html.haml +1 -1
- data/app/views/events_pass_types/_form.html.haml +1 -1
- data/app/views/events_pass_types/new.html.haml +1 -2
- data/app/views/households/_edit_modal.html.haml +9 -4
- data/app/views/households/_form.html.haml +6 -1
- data/app/views/households/_header.html.haml +9 -18
- data/app/views/households/confirm.html.haml +43 -0
- data/app/views/households/new.html.haml +3 -1
- data/app/views/households/show.html.haml +2 -1
- data/app/views/households/suggested.html.haml +10 -27
- data/app/views/imports/_export_links.html.haml +2 -2
- data/app/views/imports/donations/_new.html.haml +49 -6
- data/app/views/imports/donations/_pending.html.haml +69 -22
- data/app/views/imports/donations/_preview.html.haml +23 -0
- data/app/views/imports/events/_new.html.haml +8 -8
- data/app/views/imports/index.html.haml +26 -21
- data/app/views/imports/memberships/_approved.html.haml +16 -0
- data/app/views/imports/memberships/_caching.html.haml +17 -0
- data/app/views/imports/memberships/_failed.html.haml +5 -0
- data/app/views/imports/memberships/_imported.html.haml +45 -0
- data/app/views/imports/memberships/_importing.html.haml +20 -0
- data/app/views/imports/memberships/_invalid.html.haml +5 -0
- data/app/views/imports/memberships/_new.html.haml +155 -0
- data/app/views/imports/memberships/_pending.html.haml +85 -0
- data/app/views/imports/memberships/_preview_rows.html.haml +38 -0
- data/app/views/imports/people/_new.html.haml +81 -15
- data/app/views/imports/shared/_inspect_modal.html.haml +10 -1
- data/app/views/imports/shared/_new_sidebar.html.haml +12 -0
- data/app/views/imports/show.html.haml +0 -3
- data/app/views/index/_action.html.haml +4 -3
- data/app/views/index/_recent_activity.html.haml +14 -7
- data/app/views/index/dashboard.html.haml +27 -14
- data/app/views/job_monitors/_job_monitor_show.html.haml +34 -0
- data/app/views/job_monitors/_linking_job_monitor_show.html.haml +31 -0
- data/app/views/job_monitors/show.html.haml +1 -0
- data/app/views/layouts/_google_analytics.html.haml +9 -11
- data/app/views/layouts/_menu.html.haml +5 -3
- data/app/views/layouts/application.html.haml +12 -4
- data/app/views/layouts/devise_layout.html.haml +1 -1
- data/app/views/layouts/storefront.html.haml +7 -10
- data/app/views/members/index/index.html.haml +82 -4
- data/app/views/members/mailer/_invitation_body.html.haml +2 -2
- data/app/views/members/passwords/new.html.haml +13 -0
- data/app/views/members/sessions/new.html.haml +1 -1
- data/app/views/membership_comps/confirm.html.haml +10 -8
- data/app/views/membership_comps/create.html.haml +1 -3
- data/app/views/membership_kits/edit.html.haml +6 -0
- data/app/views/membership_types/_form.html.haml +1 -1
- data/app/views/membership_types/index.html.haml +11 -3
- data/app/views/memberships/index.html.haml +122 -109
- data/app/views/merges/find_person.html.haml +5 -3
- data/app/views/merges/new.html.haml +13 -4
- data/app/views/notes/_note.html.haml +3 -3
- data/app/views/order_mailer/confirmation_for.html.haml +1 -0
- data/app/views/order_mailer/confirmation_for.text.haml +1 -0
- data/app/views/orders/_assignable_donations.html.haml +25 -0
- data/app/views/orders/_assignable_pledges.html.haml +26 -0
- data/app/views/orders/_item_table.haml +20 -8
- data/app/views/orders/_order_sidebar.html.haml +37 -7
- data/app/views/orders/membership.html.haml +2 -2
- data/app/views/orders/passes.html.haml +4 -4
- data/app/views/orders/sales.html.haml +5 -5
- data/app/views/orders/show.html.haml +26 -7
- data/app/views/organizations/_form.html.haml +0 -5
- data/app/views/pass_types/index.html.haml +13 -5
- data/app/views/passes/index.html.haml +50 -39
- data/app/views/passes_kits/edit.html.haml +6 -0
- data/app/views/passes_reports/index.html.haml +1 -1
- data/app/views/pdfs/member.html.haml +1 -1
- data/app/views/pdfs/member_card_generator/blanks_usa_idc6.html.haml +1 -1
- data/app/views/pdfs/order.html.haml +5 -3
- data/app/views/people/_address_fields.html.haml +40 -0
- data/app/views/people/_convert_to_company_modal.html.haml +3 -0
- data/app/views/people/_edit_modal.html.haml +121 -38
- data/app/views/people/_form.html.haml +8 -14
- data/app/views/people/_header.html.haml +11 -16
- data/app/views/people/_list.html.haml +3 -9
- data/app/views/people/_mailchimp_group.html.haml +3 -0
- data/app/views/people/_phone_fields.html.haml +1 -1
- data/app/views/people/_relationship_fields.html.haml +10 -5
- data/app/views/people/_work_with_menu.html.haml +14 -8
- data/app/views/people/index.html.haml +10 -9
- data/app/views/people/new.html.haml +18 -4
- data/app/views/people/pledges.html.haml +13 -0
- data/app/views/people/show.html.haml +96 -45
- data/app/views/pledges/_none_scheduled_payment_table.html.haml +17 -0
- data/app/views/pledges/_receive_pledge.html.haml +87 -0
- data/app/views/pledges/_scheduled_payments_table.html.haml +18 -0
- data/app/views/pledges/index.html.haml +47 -0
- data/app/views/preview_rows/index.html.haml +1 -0
- data/app/views/producer_mailer/donation_notification.html.haml +9 -0
- data/app/views/producer_mailer/donation_notification.text.erb +8 -0
- data/app/views/producer_mailer/door_list_notification.html.haml +10 -0
- data/app/views/producer_mailer/door_list_notification.text.erb +6 -0
- data/app/views/producer_mailer/mailchimp_kit_initial_sync_notification.html.haml +2 -2
- data/app/views/regular_donation_kits/edit.html.haml +29 -1
- data/app/views/relationships/index.html.haml +1 -1
- data/app/views/sales/_boxoffice.html.haml +15 -5
- data/app/views/sales/_doorlist.html.haml +2 -2
- data/app/views/sales/new.html.haml +2 -2
- data/app/views/searches/_company.html.haml +7 -0
- data/app/views/searches/_form.html.haml +75 -8
- data/app/views/searches/_household.html.haml +2 -2
- data/app/views/searches/_individual.html.haml +7 -0
- data/app/views/searches/show.html.haml +59 -23
- data/app/views/segments/index.html.haml +1 -1
- data/app/views/segments/show.html.haml +36 -1
- data/app/views/shared/_baseball_card.html.haml +40 -0
- data/app/views/shared/_tags.html.haml +10 -8
- data/app/views/shows/_empty_ticket_table.html.haml +12 -0
- data/app/views/shows/_sections_table.html.haml +78 -69
- data/app/views/shows/_ticket_table.html.haml +10 -7
- data/app/views/shows/index.html.haml +95 -85
- data/app/views/statements/_shows.html.haml +1 -1
- data/app/views/store/checkouts/_event_information.html.haml +89 -0
- data/app/views/store/checkouts/_shopping_cart_display.haml +8 -0
- data/app/views/store/checkouts/_thanks.html.haml +40 -0
- data/app/views/store/checkouts/create.html.haml +1 -0
- data/app/views/store/checkouts/shopping_cart_display/_discounts.haml +8 -0
- data/app/views/store/checkouts/shopping_cart_display/_donations.haml +15 -0
- data/app/views/store/checkouts/{_membership_info.html.haml → shopping_cart_display/_membership_info.html.haml} +0 -0
- data/app/views/store/checkouts/shopping_cart_display/_memberships.haml +8 -0
- data/app/views/store/checkouts/shopping_cart_display/_passes.haml +9 -0
- data/app/views/store/checkouts/shopping_cart_display/_tickets.haml +10 -0
- data/app/views/store/checkouts/shopping_cart_display/_total.haml +10 -0
- data/app/views/store/donations/index.html.haml +4 -0
- data/app/views/store/events/_contact_info.html.haml +8 -0
- data/app/views/store/events/_venue.html.haml +14 -7
- data/app/views/store/events/calendar.html.haml +2 -9
- data/app/views/store/events/show.html.haml +2 -9
- data/app/views/store/events/single_show.html.haml +3 -3
- data/app/views/store/memberships/index.html.haml +3 -3
- data/app/views/store/orders/blank.html.erb +34 -0
- data/app/views/store/orders/show.html.haml +15 -6
- data/app/views/store/passes/index.html.haml +3 -3
- data/app/views/store/shared/_small_donate_form.html.haml +21 -18
- data/app/views/tags/_edit_modal.html.haml +16 -0
- data/app/views/tags/index.html.haml +23 -0
- data/app/views/unacknowledged_gifts/_heard_action.html.haml +10 -0
- data/app/views/unacknowledged_gifts/index.html.haml +76 -0
- data/app/views/user_memberships/_list.html.haml +147 -24
- data/config/initializers/delayed_job_config.rb +10 -1
- data/config/routes.rb +85 -9
- data/db/migrate/20140422193345_add_email_copy_to_pass_type.rb +1 -1
- data/db/migrate/20140616045851_add_birthdate_to_search.rb +7 -0
- data/db/migrate/20140623131025_create_campaigns.rb +27 -0
- data/db/migrate/20140627120214_create_appeals.rb +28 -0
- data/db/migrate/20140630151406_add_deleted_at_to_campaigns.rb +9 -0
- data/db/migrate/20140701124100_add_segment_id_and_notes_to_appeals.rb +12 -0
- data/db/migrate/20140702115815_add_campaign_id_and_appeal_id_to_donations.rb +14 -0
- data/db/migrate/20140702121928_add_materials_to_appeals.rb +11 -0
- data/db/migrate/20140702150521_add_deleted_at_to_appeals.rb +9 -0
- data/db/migrate/20140709151816_add_campaign_id_and_appeal_id_to_orders.rb +14 -0
- data/db/migrate/20140723133850_remove_campaign_id_and_apeal_id_from_orders.rb +11 -0
- data/db/migrate/20140723134923_add_commitment_date_to_donations.rb +6 -0
- data/db/migrate/20140730141515_add_match_eligible_to_donations.rb +15 -0
- data/db/migrate/20140818141140_create_soft_credits.rb +12 -0
- data/db/migrate/20140903140113_add_pledge_to_donations.rb +9 -0
- data/db/migrate/20140904183953_add_destroyed_at_to_relationships.rb +7 -0
- data/db/migrate/20140905080503_create_scheduled_pledge_payments.rb +16 -0
- data/db/migrate/20140909150251_add_org_to_suggested_household.rb +7 -0
- data/db/migrate/20141007114614_add_order_id_to_donations.rb +15 -0
- data/db/migrate/20141021134013_add_lifetime_pledges_to_people.rb +5 -0
- data/db/migrate/20141027191307_default_overwrite_member_addresses_to_false.rb +5 -0
- data/db/migrate/20141031193839_update_relations.rb +9 -0
- data/db/migrate/20141126183258_add_mailchimp_status_fields_to_people.rb +6 -0
- data/db/migrate/20141126184811_add_processing_at_to_ticket.rb +5 -0
- data/db/migrate/20141127135743_add_import_to_campaigns.rb +6 -0
- data/db/migrate/20141128143944_add_fiscal_year_to_donations.rb +5 -0
- data/db/migrate/20141128151407_remove_fiscal_year_from_scheduled_pledge_payments.rb +3 -0
- data/db/migrate/20141204164400_add_more_indexes_to_actions.rb +7 -0
- data/db/migrate/20141204171612_add_indexes_to_charts.rb +12 -0
- data/db/migrate/20141204172658_add_hide_on_recent_activity_to_actions.rb +5 -0
- data/db/migrate/20141204173004_add_indexes_to_ept.rb +9 -0
- data/db/migrate/20141204211933_remove_membership_counts_from_members.rb +13 -0
- data/db/migrate/20141205202030_create_subscribed_lists.rb +19 -0
- data/db/migrate/20141208225228_add_mailchimp_lists_to_searches.rb +5 -0
- data/db/migrate/20141210162329_add_bounced_to_subscribed_lists.rb +5 -0
- data/db/migrate/20141211165307_add_external_reference_to_actions.rb +5 -0
- data/db/migrate/20141212172119_add_not_mailchimp_lists_to_searches.rb +5 -0
- data/db/migrate/20141229204605_normalize_states_in_addresses.rb +11 -0
- data/db/migrate/20150113091344_add_fiscal_to_organizations.rb +11 -0
- data/db/migrate/20150113091434_create_budget_restrictions.rb +14 -0
- data/db/migrate/20150113091503_add_budget_restriction_to_campaigns.rb +14 -0
- data/db/migrate/20150129091354_add_campaign_to_searches.rb +13 -0
- data/db/migrate/20150203174456_create_list_groupings.rb +12 -0
- data/db/migrate/20150203222451_add_groupings_to_searches.rb +6 -0
- data/db/migrate/20150219153827_add_roles_to_user_memberships.rb +13 -0
- data/db/migrate/20150223145657_add_daily_sales_to_user_membership.rb +13 -0
- data/db/migrate/20150318171857_create_advanced_searches.rb +16 -0
- data/db/migrate/20150319185940_add_org_id_index_to_orders.rb +5 -0
- data/db/migrate/20150325085516_add_received_amount_to_donations.rb +16 -0
- data/db/migrate/20150325173053_add_pass_index_to_tickets.rb +5 -0
- data/db/migrate/20150331084817_add_creator_id_to_orders.rb +11 -0
- data/db/migrate/20150406162656_index_tickets_on_action_id.rb +5 -0
- data/db/migrate/20150408123349_add_donor_instructions_to_orders.rb +9 -0
- data/db/migrate/20150408125600_add_index_to_imports.rb +5 -0
- data/db/migrate/20150414193419_add_index_to_phone.rb +5 -0
- data/db/migrate/20150414193646_add_index_to_taggings.rb +5 -0
- data/db/migrate/20150415113013_add_nickname_to_people.rb +11 -0
- data/db/migrate/20150420143707_add_indexes_to_donations.rb +7 -0
- data/db/migrate/20150421092302_add_kind_to_addresses.rb +11 -0
- data/db/migrate/20150513154513_add_name_to_advanced_search.rb +5 -0
- data/db/migrate/20150518131946_add_receive_donation_notification_to_user_memberships.rb +9 -0
- data/db/migrate/20150520182350_remove_name_from_advanced_search.rb +9 -0
- data/db/migrate/20150520202900_create_advanced_search_segments.rb +9 -0
- data/db/migrate/20150520210658_add_advanced_search_id_to_advanced_search_segment.rb +5 -0
- data/db/migrate/20150521183507_add_organization_id_to_advanced_search_segment.rb +5 -0
- data/db/migrate/20150602204548_add_index_on_deleted_at.rb +5 -0
- data/db/migrate/20150711143014_add_receive_door_list_to_user_memberships.rb +10 -0
- data/db/migrate/20150716000301_create_job_monitors_table.rb +12 -0
- data/db/migrate/20150807005404_re_refresh_show_stats.rb +8 -0
- data/db/migrate/20150810133417_convert_business_to_work.rb +5 -0
- data/db/migrate/20150812135205_update_notes_nulls.rb +9 -0
- data/db/migrate/20150813202745_index_household_id.rb +6 -0
- data/db/migrate/20150814075653_add_maiden_name_to_people.rb +9 -0
- data/db/migrate/20150911203530_normalize_countries_in_addresses.rb +11 -0
- data/db/migrate/20150922155253_add_advanced_search_segment_id_to_membership_types.rb +5 -0
- data/db/migrate/20150922155308_add_advanced_search_segment_id_to_pass_types.rb +5 -0
- data/db/migrate/20151006180702_add_deleted_at_to_ticket_types.rb +5 -0
- data/db/migrate/20151009175206_add_receipt_details_to_ticket_types.rb +5 -0
- data/db/migrate/20151112174723_index_list_groupings.rb +5 -0
- data/lib/artfully_ose/common_abilities.rb +80 -57
- data/lib/artfully_ose/version.rb +1 -1
- data/lib/tasks/artfully_ose.rake +46 -4
- data/spec/factories/action_factories.rb +2 -0
- data/spec/factories/address_factories.rb +2 -2
- data/spec/factories/advanced_search_factories.rb +45 -0
- data/spec/factories/advanced_search_segment_factories.rb +6 -0
- data/spec/factories/advanced_segment_factories.rb +6 -0
- data/spec/factories/campaign_factories.rb +20 -0
- data/spec/factories/cart_factories.rb +24 -0
- data/spec/factories/chart_factories.rb +4 -0
- data/spec/factories/event_factories.rb +6 -0
- data/spec/factories/item_factories.rb +23 -1
- data/spec/factories/kit_factories.rb +27 -3
- data/spec/factories/member_factories.rb +8 -1
- data/spec/factories/membership_factories.rb +12 -0
- data/spec/factories/membership_type_factories.rb +18 -0
- data/spec/factories/note_factories.rb +7 -0
- data/spec/factories/order_factories.rb +7 -0
- data/spec/factories/pass_factories.rb +6 -0
- data/spec/factories/payments_factories.rb +1 -1
- data/spec/factories/person_factories.rb +46 -4
- data/spec/factories/scheduled_pledge_payment_factories.rb +10 -0
- data/spec/factories/show_factories.rb +8 -3
- data/spec/factories/soft_credit_factories.rb +8 -0
- data/spec/factories/ticket_factories.rb +22 -9
- data/spec/factories/user_factories.rb +16 -8
- metadata +342 -59
- data/app/controllers/comps_controller.rb +0 -47
- data/app/models/household_suggester.rb +0 -58
- data/app/views/searches/_person.html.haml +0 -10
- data/app/views/store/checkouts/thanks.html.haml +0 -134
@@ -13,6 +13,13 @@ module ArtfullyOseHelper
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
+
def permission_link_to(cancan_permission, *link_to_args)
|
17
|
+
@ability ||= Ability.new(current_user)
|
18
|
+
if @ability.can? cancan_permission[0], cancan_permission[1]
|
19
|
+
link_to *link_to_args
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
16
23
|
def with_kit(kit, organization = nil)
|
17
24
|
organization = organization || current_user.try(:current_organization) || @store_organization
|
18
25
|
if organization.has_kit? kit
|
@@ -20,6 +27,10 @@ module ArtfullyOseHelper
|
|
20
27
|
end
|
21
28
|
end
|
22
29
|
|
30
|
+
def current_role
|
31
|
+
current_user.permission_in(current_user.current_organization)
|
32
|
+
end
|
33
|
+
|
23
34
|
def thanks_message(person)
|
24
35
|
message = "Thanks"
|
25
36
|
message += ", #{person.first_name}" unless person.first_name.blank?
|
@@ -31,7 +42,14 @@ module ArtfullyOseHelper
|
|
31
42
|
end
|
32
43
|
|
33
44
|
def channel_checkbox(channel)
|
34
|
-
|
45
|
+
case channel.to_s
|
46
|
+
when "storefront"
|
47
|
+
"Storefront & Widgets"
|
48
|
+
when "box_office"
|
49
|
+
"Box Office & Sales Console"
|
50
|
+
else
|
51
|
+
channel.to_s.humanize
|
52
|
+
end
|
35
53
|
end
|
36
54
|
|
37
55
|
def channel_text(channel)
|
@@ -40,6 +58,8 @@ module ArtfullyOseHelper
|
|
40
58
|
"to your members in your Storefront"
|
41
59
|
when "storefront"
|
42
60
|
"online Storefront and installed widgets"
|
61
|
+
when "box_office"
|
62
|
+
"box office and sales console"
|
43
63
|
else
|
44
64
|
channel.to_s.humanize
|
45
65
|
end
|
@@ -50,6 +70,11 @@ module ArtfullyOseHelper
|
|
50
70
|
"#{target.class.name.downcase}_#{action_path_name}_path"
|
51
71
|
end
|
52
72
|
|
73
|
+
def last_login(t)
|
74
|
+
return "Never logged in" if t.nil?
|
75
|
+
"Last login #{time_ago_in_words(t)} ago"
|
76
|
+
end
|
77
|
+
|
53
78
|
def time_ago_sentence(t)
|
54
79
|
qualifier = t > Time.now ? "from now" : "ago"
|
55
80
|
"#{time_ago_in_words(t)} #{qualifier}"
|
@@ -148,6 +173,10 @@ module ArtfullyOseHelper
|
|
148
173
|
@sorted_us_state_names ||= us_states.keys.sort{|a, b| a <=> b}
|
149
174
|
end
|
150
175
|
|
176
|
+
def sorted_us_state_names_with_select_any
|
177
|
+
@sorted_us_state_names ||= us_states.keys.sort{|a, b| a <=> b}.insert(0, ["Any state", ""])
|
178
|
+
end
|
179
|
+
|
151
180
|
def sorted_us_state_abbreviations
|
152
181
|
@sorted_us_states ||= us_states.invert.keys.sort{|a, b| a <=> b}
|
153
182
|
end
|
@@ -275,8 +304,8 @@ module ArtfullyOseHelper
|
|
275
304
|
end
|
276
305
|
end
|
277
306
|
|
278
|
-
def link_to_remove_fields(name, f)
|
279
|
-
f.hidden_field(:_destroy) + link_to(name, "#", :onclick => "remove_fields(this); return false;")
|
307
|
+
def link_to_remove_fields(name, f, additional_javascript=nil)
|
308
|
+
f.hidden_field(:_destroy) + link_to(name, "#", :onclick => "remove_fields(this); #{additional_javascript}; return false;")
|
280
309
|
end
|
281
310
|
|
282
311
|
def link_to_add_fields(name, f, association, view_path = '', additional_javascript=nil)
|
@@ -286,7 +315,7 @@ module ArtfullyOseHelper
|
|
286
315
|
template_path = view_path + association.to_s.singularize + "_fields"
|
287
316
|
render(template_path, :f => builder)
|
288
317
|
end
|
289
|
-
link_to name, "#", :onclick => "add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\"); #{additional_javascript} return false;"
|
318
|
+
link_to name, "#", :onclick => "add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\"); #{additional_javascript}; return false;"
|
290
319
|
end
|
291
320
|
|
292
321
|
def ticket_seller_name(ticket)
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module CheckoutsHelper
|
2
|
+
def ical_object(event, ticket, count)
|
3
|
+
new_cal = 'new-cal-' + event.id.to_s + '-' + count.to_s
|
4
|
+
show = ticket.product.show.show_time
|
5
|
+
address = ticket.product.event.venue.name_and_address_as_string || 'No Venue'
|
6
|
+
event_url = request.base_url + url_for(store_event_path(event.organization.cached_slug, event))
|
7
|
+
|
8
|
+
event_description = "\r" + truncate(ticket.product.event.description, :length => 400).to_s unless !(truncate(ticket.product.event.description, :length => 400).to_s).present?
|
9
|
+
|
10
|
+
description = "Order: " + ticket.order.id.to_s + "\r" + "Event Details: " + event_url
|
11
|
+
description = description + event_description if event_description.present?
|
12
|
+
start = (ticket.show.datetime_local_to_event.to_datetime.to_f * 1000)
|
13
|
+
|
14
|
+
content_tag(:div, '', :class => new_cal, id: 'data', data: {title: ticket.product.event.name, address: address, description: description , start: start, show: show})
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module MailchimpListsForSearchHelper
|
2
|
+
def mailchimp_lists_for_search(search)
|
3
|
+
mailchimp = search.organization.kits.mailchimp
|
4
|
+
mailchimp.attached_lists.map do |list|
|
5
|
+
[list[:list_name], list[:list_id]]
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
def mailchimp_groups_for_search(search)
|
10
|
+
mailchimp = search.organization.kits.mailchimp
|
11
|
+
mailchimp.attached_lists.inject({}) do |hash, list|
|
12
|
+
list.fetch(:groups, []).map do |grouping|
|
13
|
+
key = "#{list[:list_name]} - #{grouping["name"]}"
|
14
|
+
hash[key] = grouping["groups"].map do |group|
|
15
|
+
[group["name"], "#{grouping["id"]}|#{group["name"]}"]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
hash
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module OrdersHelper
|
2
|
+
|
3
|
+
def tax_deductible_message
|
4
|
+
if current_cart.tickets? && current_cart.ticket_cart_total > 0 && @store_organization.sponsored_project?
|
5
|
+
content_tag :p do
|
6
|
+
"*Tickets for #{@store_organization.name} are not tax-deductible."
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
@@ -26,6 +26,10 @@ module PeopleHelper
|
|
26
26
|
|
27
27
|
end
|
28
28
|
|
29
|
+
def tab_class(this_tab, active_tab)
|
30
|
+
this_tab == active_tab ? "tab-pane active" : "tab-pane"
|
31
|
+
end
|
32
|
+
|
29
33
|
def full_url(address, protocol='http://')
|
30
34
|
if address.include?(protocol)
|
31
35
|
address
|
@@ -56,4 +60,27 @@ module PeopleHelper
|
|
56
60
|
{:class => classes.join(' '), :type => 'button', 'data-action-type' => type, 'data-details-placeholder' => placeholder, 'data-subtypes' => Action.subtypes_by_type[type].to_json}
|
57
61
|
)
|
58
62
|
end
|
59
|
-
|
63
|
+
|
64
|
+
def mailchimp_list_disabled_for?(person, list_id)
|
65
|
+
person.do_not_email || person.opted_out_of_list?(list_id) ||
|
66
|
+
person.bounced_on_list?(list_id)
|
67
|
+
end
|
68
|
+
|
69
|
+
def mailchimp_active_groups(list, grouping, person)
|
70
|
+
grouping["groups"].select do |group|
|
71
|
+
person.in_group?(list[:list_id], grouping["id"], group["name"])
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def mailchimp_inactive_groups(list, grouping, person)
|
76
|
+
grouping["groups"].reject do |group|
|
77
|
+
person.in_group?(list[:list_id], grouping["id"], group["name"])
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def mailchimp_show_groupings?(person, list)
|
82
|
+
@person.subscribed_to_list?(list[:list_id]) &&
|
83
|
+
@person.confirmed_on_list?(list[:list_id]) &&
|
84
|
+
list[:groups].present?
|
85
|
+
end
|
86
|
+
end
|
@@ -19,6 +19,12 @@ module RelationshipsHelper
|
|
19
19
|
}
|
20
20
|
end
|
21
21
|
|
22
|
+
def no_relationships_in?(relationships_struct)
|
23
|
+
relationships_struct[:starred].empty? &&
|
24
|
+
relationships_struct[:single].empty? &&
|
25
|
+
relationships_struct[:grouped].empty?
|
26
|
+
end
|
27
|
+
|
22
28
|
def relationship_counts_for(person)
|
23
29
|
person.relationships.includes(:relation).group(:relation).count
|
24
30
|
end
|
data/app/helpers/sales_helper.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
module SearchesHelper
|
2
|
+
include MailchimpListsForSearchHelper
|
3
|
+
|
2
4
|
def search_membership_type_options(membership_types, selected=nil)
|
3
5
|
options = [
|
4
6
|
['All Membership Types', -1]
|
@@ -10,4 +12,4 @@ module SearchesHelper
|
|
10
12
|
|
11
13
|
options_for_select(options, selected)
|
12
14
|
end
|
13
|
-
end
|
15
|
+
end
|
data/app/mailers/order_mailer.rb
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
class OrderMailer < ActionMailer::Base
|
11
11
|
layout "mail"
|
12
|
-
|
12
|
+
|
13
13
|
def confirmation_for(order)
|
14
14
|
@order = order
|
15
15
|
@person = order.person
|
@@ -30,6 +30,13 @@ class OrderMailer < ActionMailer::Base
|
|
30
30
|
mail(options)
|
31
31
|
end
|
32
32
|
|
33
|
+
def convert_confirmation_for(order)
|
34
|
+
@order = order
|
35
|
+
@person = order.person
|
36
|
+
@organization = order.organization
|
37
|
+
mail :to => @person.email, :from => from(@order), :subject => "Thank you for your donation"
|
38
|
+
end
|
39
|
+
|
33
40
|
private
|
34
41
|
|
35
42
|
def template_name_for(order)
|
@@ -1,4 +1,9 @@
|
|
1
1
|
class ProducerMailer < ActionMailer::Base
|
2
|
+
|
3
|
+
# Wisepdf::Render wasn't mean for ActionMailer, so we "adapt" it
|
4
|
+
def self.after_filter(*); end
|
5
|
+
include Wisepdf::Render
|
6
|
+
|
2
7
|
default :from => ARTFULLY_CONFIG[:contact_email]
|
3
8
|
layout "mail"
|
4
9
|
|
@@ -44,4 +49,38 @@ class ProducerMailer < ActionMailer::Base
|
|
44
49
|
|
45
50
|
mail :to => producer.email, :subject => "Artful.ly: MailChimp kit synced"
|
46
51
|
end
|
52
|
+
|
53
|
+
def donation_notification(order, to)
|
54
|
+
@order = order
|
55
|
+
@organization = order.organization
|
56
|
+
@donor = order.person
|
57
|
+
mail :to => to, :subject => "#{@donor} made a donation to #{@organization}"
|
58
|
+
end
|
59
|
+
|
60
|
+
def door_list_notification(show, to_array)
|
61
|
+
@door_list = DoorList.new(show)
|
62
|
+
@show = show
|
63
|
+
@event = show.event
|
64
|
+
@organization = show.organization
|
65
|
+
|
66
|
+
filename = [ @show.event.name, (I18n.l @show.datetime_local_to_event, :format => :date_for_input), "door-list" ].join("-")
|
67
|
+
# Attach CSV door lsit
|
68
|
+
attachments["#{filename}.csv"] = {
|
69
|
+
:mime_type => 'text/csv',
|
70
|
+
:content => @door_list.items.to_comma,
|
71
|
+
}
|
72
|
+
# Attach PDF door list
|
73
|
+
attachments["#{filename}.pdf"] = {
|
74
|
+
:mime_type => 'application/pdf',
|
75
|
+
:content => render_to_string(:template => 'shows/door_list.pdf', :pdf => true)
|
76
|
+
}
|
77
|
+
# Clean-up WisePDF temps
|
78
|
+
clean_temp_files
|
79
|
+
|
80
|
+
mail :to => to_array, :subject => "Here's the door list for your show today" do |format|
|
81
|
+
format.text
|
82
|
+
format.html
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
47
86
|
end
|
@@ -8,6 +8,11 @@ class ReportsMailer < ActionMailer::Base
|
|
8
8
|
@donations = donations
|
9
9
|
@memberships = memberships
|
10
10
|
@passes = passes
|
11
|
-
|
11
|
+
|
12
|
+
unless @tix.organization.daily_sales_report_recipients.empty?
|
13
|
+
@recipients = @tix.organization.daily_sales_report_recipients.collect(&:email)
|
14
|
+
Rails.logger.info("Recipients of daily email: #{@recipients}")
|
15
|
+
mail to: @recipients, bcc: "developers@fracturedatlas.org", subject: "Daily Report for #{@tix.start_date.strftime("%b %d, %Y")}"
|
16
|
+
end
|
12
17
|
end
|
13
18
|
end
|
data/app/models/ability.rb
CHANGED
@@ -3,13 +3,20 @@ class Ability
|
|
3
3
|
include ArtfullyOse::CommonAbilities
|
4
4
|
|
5
5
|
def initialize(user)
|
6
|
-
user
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
6
|
+
@user = user
|
7
|
+
|
8
|
+
#
|
9
|
+
# This calls the method for a given permission
|
10
|
+
# For example, is this user is a manager in this org, then this calls
|
11
|
+
# the :manager method in CommonAbilities
|
12
|
+
#
|
13
|
+
permission = @user.permission_in(@user.current_organization)
|
14
|
+
|
15
|
+
unless permission.blank?
|
16
|
+
self.send(Permission.database_column_for(permission))
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def settlements
|
14
21
|
end
|
15
22
|
end
|
data/app/models/action.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
class Action < ActiveRecord::Base
|
2
2
|
include OhNoes::Destroy
|
3
|
-
|
3
|
+
|
4
4
|
belongs_to :person, touch: true
|
5
5
|
belongs_to :creator, :class_name => "User", :foreign_key => "creator_id"
|
6
6
|
belongs_to :organization
|
@@ -8,12 +8,24 @@ class Action < ActiveRecord::Base
|
|
8
8
|
belongs_to :import
|
9
9
|
|
10
10
|
validates_presence_of :occurred_at
|
11
|
-
validates_presence_of :person_id
|
12
11
|
|
13
12
|
before_save :default_starred_to_false
|
13
|
+
after_create :add_to_feed
|
14
|
+
after_update :rebuild_feed
|
15
|
+
after_destroy :rebuild_feed
|
14
16
|
|
15
17
|
set_watch_for :occurred_at, :local_to => :organization
|
16
18
|
|
19
|
+
searchable do
|
20
|
+
text :details
|
21
|
+
text :verb
|
22
|
+
integer :person_id, stored: true
|
23
|
+
string :organization_id
|
24
|
+
string :type
|
25
|
+
date :created_at
|
26
|
+
end
|
27
|
+
include Ext::DelayedIndexing
|
28
|
+
|
17
29
|
def self.for_organization(organization)
|
18
30
|
#Skipping whitelisting because we're playing on our home field
|
19
31
|
Kernel.const_get(self.name.camelize).new({:occurred_at => DateTime.now.in_time_zone(organization.time_zone),
|
@@ -21,6 +33,14 @@ class Action < ActiveRecord::Base
|
|
21
33
|
:without_protection => true)
|
22
34
|
end
|
23
35
|
|
36
|
+
def add_to_feed
|
37
|
+
ActionFeed.for(self.organization_id).add(self)
|
38
|
+
end
|
39
|
+
|
40
|
+
def rebuild_feed
|
41
|
+
ActionFeed.for(self.organization_id).rebuild_if_necessary(self, true)
|
42
|
+
end
|
43
|
+
|
24
44
|
#
|
25
45
|
# Action types: give, go, do, get, join, hear
|
26
46
|
#
|
@@ -31,6 +51,7 @@ class Action < ActiveRecord::Base
|
|
31
51
|
when "go" then GoAction.new
|
32
52
|
when "give" then GiveAction.new
|
33
53
|
when "do" then DoAction.new
|
54
|
+
when "pledge" then PledgeAction.new
|
34
55
|
end
|
35
56
|
end
|
36
57
|
|
@@ -41,7 +62,8 @@ class Action < ActiveRecord::Base
|
|
41
62
|
"go" => GoAction.subtypes,
|
42
63
|
"give" => GiveAction.subtypes,
|
43
64
|
"do" => DoAction.subtypes,
|
44
|
-
"get" => GetAction.subtypes
|
65
|
+
"get" => GetAction.subtypes,
|
66
|
+
"pledge" => PledgeAction.subtypes,
|
45
67
|
}
|
46
68
|
end
|
47
69
|
|
@@ -91,7 +113,10 @@ class Action < ActiveRecord::Base
|
|
91
113
|
|
92
114
|
#This returnes an ARel, so you can chain
|
93
115
|
def self.recent(organization)
|
94
|
-
Action.includes(:person, :subject).
|
116
|
+
Action.includes(:person, :subject).
|
117
|
+
where(:organization_id => organization).
|
118
|
+
where(:hide_on_recent_activity => false).
|
119
|
+
order('occurred_at DESC')
|
95
120
|
end
|
96
121
|
|
97
122
|
def self.subtypes
|
@@ -103,6 +128,10 @@ class Action < ActiveRecord::Base
|
|
103
128
|
true
|
104
129
|
end
|
105
130
|
|
131
|
+
def can_wait?
|
132
|
+
import_id.present?
|
133
|
+
end
|
134
|
+
|
106
135
|
#
|
107
136
|
# This exists solely so that DJ can serialize an unsaved action so that ActionJob can run
|
108
137
|
# There's nothing inherent to Action in this method so it looks like a good candidate to
|