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
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
NmIzYzg4MmIzY2E2N2RmZmJhNDg2MTg4YWJkMjk3MGNiNzJlYmY5ZQ==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9a91236e58df6a58752ee849ab10fdc434042889
|
4
|
+
data.tar.gz: a23a35e3e9a3509d51aab0b2649d89b144fb57e9
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
NTM0ZWNlNjA4MDU2NGJhYzNkMzNhNDhkNDA3NDYxNDQ5MDIzNDAwZTNmNjA1
|
11
|
-
YTcyNjZkN2MyN2MxZTRlN2JiY2FhZjQxYTk2ZTcyZjU2ZWM3M2M=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MjRlZDM3N2VkZjEzZGViMDMwNGE1Y2NmZDM3ZDE5NjIzMDM0MDU2MGRhZTUx
|
14
|
-
NjFhYTA2MWE3YTg4MzkxNDA4NDYzZjBjYzkzN2IxZTIyNjExYTMxNjE0M2Zl
|
15
|
-
NTBlNzM5OTk1OWI3OWM4MjJlYzg2NjMyMmE1YTVjYTk3NmFiMDc=
|
6
|
+
metadata.gz: dd3aa2d49a76d635a0da70475c5f6ae428eec357c42ce38e49cfbf9105423749122c9f20cbee3a1301e0c83c88ce9732fc09b8f53344d79a46605c449a1b0af0
|
7
|
+
data.tar.gz: 33d68fe5b36584e757a141047835fe03fa0becb90efed842ae601ac206ed57fd98e9ddfd264ebdd5b7a15c50b7d25d6e365718d626c64b0a11fec1ef0572f377
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -194,6 +194,8 @@ function bindMemberTickets() {
|
|
194
194
|
|
195
195
|
$(document).ready(function() {
|
196
196
|
|
197
|
+
$(".timeago").timeago();
|
198
|
+
|
197
199
|
/*********** NEW BOOTSTRAP JS ***********/
|
198
200
|
$(".alert").alert();
|
199
201
|
|
@@ -214,7 +216,9 @@ $(document).ready(function() {
|
|
214
216
|
e.preventDefault();
|
215
217
|
});
|
216
218
|
|
217
|
-
$('.wysihtml5').wysihtml5(
|
219
|
+
$('.wysihtml5').wysihtml5({
|
220
|
+
"image": false
|
221
|
+
})
|
218
222
|
|
219
223
|
/*********** NEW ARTFULLY JS ************/
|
220
224
|
|
@@ -341,6 +345,12 @@ $(document).ready(function() {
|
|
341
345
|
return false;
|
342
346
|
});
|
343
347
|
|
348
|
+
$(".delete-ticket-type-link").bind("ajax:complete", function(et, e){
|
349
|
+
$("#deleteTicketTypeModal").html(e.responseText);
|
350
|
+
$("#deleteTicketTypeModal").modal( "show" );
|
351
|
+
return false;
|
352
|
+
});
|
353
|
+
|
344
354
|
$("#bulk-action-link").bind("ajax:complete", function(et, e){
|
345
355
|
$("#bulk-action-modal").html(e.responseText);
|
346
356
|
$("#bulk-action-modal").modal( "show" );
|
@@ -546,7 +556,7 @@ validTagText = function(tagText) {
|
|
546
556
|
};
|
547
557
|
|
548
558
|
createControlsForTag = function(tagEl) {
|
549
|
-
var tagText = tagEl.
|
559
|
+
var tagText = tagEl.text().trim();
|
550
560
|
var subjectName = tagEl.parent("ul").attr('id').split("-")[0];
|
551
561
|
var subjectId = tagEl.parent("ul").attr('id').split("-")[1];
|
552
562
|
|
@@ -564,7 +574,7 @@ function touchCurrency() {
|
|
564
574
|
$(".currency").each(function(index, element){
|
565
575
|
$(this).focus()
|
566
576
|
$(this).maskMoney('mask')
|
567
|
-
|
577
|
+
});
|
568
578
|
}
|
569
579
|
|
570
580
|
function activateControls() {
|
@@ -579,7 +589,7 @@ function activateControls() {
|
|
579
589
|
hiddenCurrency.attr({'name': name, 'type': 'hidden'}).appendTo(form);
|
580
590
|
|
581
591
|
form.submit(function(){
|
582
|
-
hiddenCurrency.val(Math.round( parseFloat(input.val().substr(1).replace(
|
592
|
+
hiddenCurrency.val(Math.round( parseFloat(input.val().substr(1).replace(/,/g,"")) * 100 ));
|
583
593
|
});
|
584
594
|
});
|
585
595
|
|
@@ -668,3 +678,19 @@ $( '#widget_type_both' ).click(function() {
|
|
668
678
|
$("#preset-amount").show();
|
669
679
|
$("#widget-event").show();
|
670
680
|
});
|
681
|
+
|
682
|
+
$( '#organization_fiscal_month' ).bind('change keydown', function() {
|
683
|
+
var daysInMonth = $(this).val() > 0 ? new Date(new Date().getFullYear(), $(this).val(), 0).getDate() : 0;
|
684
|
+
$('#organization_fiscal_day').empty().append(new Option("Day", ''));
|
685
|
+
for(var $i = 1; $i <= daysInMonth; $i++) {
|
686
|
+
$('#organization_fiscal_day').append(new Option($i, $i));
|
687
|
+
}
|
688
|
+
});
|
689
|
+
|
690
|
+
function cleanJsonPerson(jsonPerson) {
|
691
|
+
jsonPerson.first_name = ( jsonPerson.first_name == null ? "" : jsonPerson.first_name );
|
692
|
+
jsonPerson.last_name = ( jsonPerson.last_name == null ? "" : jsonPerson.last_name );
|
693
|
+
jsonPerson.email = ( jsonPerson.email == null ? "" : jsonPerson.email );
|
694
|
+
jsonPerson.company_name = ( jsonPerson.company_name == null ? "" : jsonPerson.company_name );
|
695
|
+
return jsonPerson
|
696
|
+
};
|
@@ -0,0 +1,235 @@
|
|
1
|
+
//= require jquery-lib/jquery.formatCurrency-1.4.0.min
|
2
|
+
//= require d3.v3.min.js
|
3
|
+
|
4
|
+
data_source = null
|
5
|
+
sticky_category = 'total'
|
6
|
+
active_category = 'total'
|
7
|
+
active_timespan = 'lifetime'
|
8
|
+
|
9
|
+
update_data_source = ->
|
10
|
+
$('.baseball-card').addClass 'loading'
|
11
|
+
$('.baseball-card').removeClass 'invalid'
|
12
|
+
$('.number .amount').hide()
|
13
|
+
$('.baseball-card .dropdown-toggle').addClass 'disabled'
|
14
|
+
$.get(
|
15
|
+
$('.baseball-card').data('stats-url'),
|
16
|
+
{
|
17
|
+
timespan: active_timespan
|
18
|
+
}
|
19
|
+
(data) ->
|
20
|
+
data_source = data
|
21
|
+
build_category_dropdown()
|
22
|
+
set_category active_category
|
23
|
+
, "json"
|
24
|
+
)
|
25
|
+
.always ->
|
26
|
+
$('.number .amount').show()
|
27
|
+
$('.baseball-card').removeClass 'loading'
|
28
|
+
$('.baseball-card .dropdown-toggle').removeClass 'disabled'
|
29
|
+
.fail ->
|
30
|
+
$('.baseball-card').addClass 'invalid'
|
31
|
+
$('.number .amount').text '!'
|
32
|
+
$('.dropdown.time .dropdown-toggle').html 'Try again' + '<b class="caret"></b>'
|
33
|
+
|
34
|
+
build_category_dropdown = ->
|
35
|
+
$('ul.dropdown-menu.categories').html ''
|
36
|
+
result = "<li><a href='#' data-category='total' data-pretty-name='Total'>Total</a></li>"
|
37
|
+
for k,v of data_source when k not in ['total', 'starts_at', 'stops_at']
|
38
|
+
result += "<li><a href='#' data-category='" + k + "' data-pretty-name='" + v.pretty_name + "'>" + v.pretty_name
|
39
|
+
if v.individual_count > 0
|
40
|
+
result += " <span>" + v.individual_count + "</span"
|
41
|
+
result += "</a></li>"
|
42
|
+
$('ul.dropdown-menu.categories').html result
|
43
|
+
|
44
|
+
set_amount = ->
|
45
|
+
amount = data_source[active_category].individual_total
|
46
|
+
$('.number .amount').text formatBigCurrency(amount)
|
47
|
+
|
48
|
+
valid_timespan = (starts_at, stops_at) ->
|
49
|
+
date_regex = /^\d{1,2}\/\d{1,2}\/\d{2,4}$/
|
50
|
+
return false unless date_regex.test(starts_at)
|
51
|
+
return false unless date_regex.test(stops_at)
|
52
|
+
return false unless Date.parse(starts_at) <= Date.parse(stops_at)
|
53
|
+
return true
|
54
|
+
|
55
|
+
set_timespan = (timespan) ->
|
56
|
+
$('.baseball-card').removeClass 'invalid'
|
57
|
+
selected_dropdown = $('.dropdown-menu [data-timespan="'+timespan+'"]')
|
58
|
+
$('.dropdown.time li').removeClass 'active'
|
59
|
+
selected_dropdown.parents('li').addClass 'active'
|
60
|
+
pretty_timespan = selected_dropdown.data('pretty-name')
|
61
|
+
unless pretty_timespan
|
62
|
+
starts_at = timespan.split('-')[0]
|
63
|
+
stops_at = timespan.split('-')[1]
|
64
|
+
if valid_timespan(starts_at,stops_at)
|
65
|
+
pretty_timespan = starts_at
|
66
|
+
pretty_timespan += '…' if starts_at != stops_at
|
67
|
+
|
68
|
+
$('.baseball-card .custom-time input#starts_at').val(starts_at)
|
69
|
+
$('.baseball-card .custom-time input#stops_at').val(stops_at)
|
70
|
+
else
|
71
|
+
pretty_timespan = 'Invalid dates'
|
72
|
+
$('.baseball-card').addClass 'invalid'
|
73
|
+
$('.number .amount').text('!')
|
74
|
+
|
75
|
+
$('.dropdown.time .dropdown-toggle').html pretty_timespan + '<b class="caret"></b>'
|
76
|
+
unless $('.baseball-card').hasClass 'invalid'
|
77
|
+
active_timespan = timespan
|
78
|
+
update_data_source()
|
79
|
+
|
80
|
+
set_category = (category) ->
|
81
|
+
active_category = category
|
82
|
+
set_amount()
|
83
|
+
|
84
|
+
nice_category_name = $('.category [data-category='+category+']').data('pretty-name')
|
85
|
+
$('.category .dropdown-toggle').html nice_category_name + '<b class="caret"></b>'
|
86
|
+
$('.category li').removeClass 'active'
|
87
|
+
$('.dropdown-menu [data-category='+category+']').parents('li').addClass 'active'
|
88
|
+
set_people_viz()
|
89
|
+
set_pie_viz()
|
90
|
+
|
91
|
+
set_sticky_category = (category) ->
|
92
|
+
sticky_category = category
|
93
|
+
set_category(category)
|
94
|
+
|
95
|
+
set_people_viz = ->
|
96
|
+
# update viz detail text
|
97
|
+
average = data_source[active_category].org_average_total
|
98
|
+
individual = data_source[active_category].individual_total
|
99
|
+
percentage = (individual/2/average) * 100
|
100
|
+
# console.log 'average='+average+' individual='+individual+' percentage='+percentage
|
101
|
+
percentage = 99 if percentage > 99
|
102
|
+
percentage = 99 if average == 0 && individual > 0
|
103
|
+
percentage = 0 if average == 0 && individual == 0
|
104
|
+
percentage = Math.round(percentage)
|
105
|
+
|
106
|
+
m = "more than " + percentage + "% of people"
|
107
|
+
# if percentage < 40
|
108
|
+
# m = "bottom " + percentage + "% of patrons"
|
109
|
+
# else if percentage < 60
|
110
|
+
# m = "about average for patrons"
|
111
|
+
# else
|
112
|
+
# m = "top " + (100-percentage) + "% of patrons"
|
113
|
+
|
114
|
+
|
115
|
+
$('.description .percentage').text m
|
116
|
+
$('.description .amount').text formatBigCurrency(average)
|
117
|
+
|
118
|
+
# update people viz
|
119
|
+
$('.people-viz .people').removeClass 'active'
|
120
|
+
highest_person_viz = Math.round (percentage / 10)
|
121
|
+
for x in [1..highest_person_viz]
|
122
|
+
$('.people-' + x).addClass 'active' unless highest_person_viz == 0
|
123
|
+
|
124
|
+
set_pie_viz = ->
|
125
|
+
keys = []
|
126
|
+
data = []
|
127
|
+
for k,v of data_source when k not in ['total', 'starts_at', 'stops_at']
|
128
|
+
if v['individual_total'] > 0
|
129
|
+
data.push(v['individual_total'])
|
130
|
+
else
|
131
|
+
# zero total, but we need some value to draw circle
|
132
|
+
data.push(0.001)
|
133
|
+
keys.push(k)
|
134
|
+
|
135
|
+
# console.log data
|
136
|
+
# console.log keys
|
137
|
+
|
138
|
+
if active_category == 'total'
|
139
|
+
index = null
|
140
|
+
else
|
141
|
+
index = keys.indexOf(active_category)
|
142
|
+
|
143
|
+
width = 69
|
144
|
+
height = 69
|
145
|
+
radius = Math.min(width, height) / 2
|
146
|
+
|
147
|
+
color = d3.scale.category20()
|
148
|
+
|
149
|
+
pie = d3.layout.pie()
|
150
|
+
.sort(null)
|
151
|
+
|
152
|
+
arc = d3.svg.arc()
|
153
|
+
.innerRadius(radius - 68)
|
154
|
+
.outerRadius(radius - 63)
|
155
|
+
# .outerRadius(radius - 68)
|
156
|
+
|
157
|
+
# .startAngle (d) ->
|
158
|
+
# d.startAngle + Math.PI
|
159
|
+
# .endAngle (d) ->
|
160
|
+
# d.endAngle + Math.PI
|
161
|
+
|
162
|
+
$(".baseball-card svg g").html('')
|
163
|
+
svg = d3.select(".baseball-card svg g")
|
164
|
+
|
165
|
+
path = svg.selectAll("path")
|
166
|
+
.data(pie(data))
|
167
|
+
.enter().append("path")
|
168
|
+
.attr "fill", (d, i) ->
|
169
|
+
if data[i] > .001 && (index == null || i == index)
|
170
|
+
d3.rgb('#7EA3AE')
|
171
|
+
else
|
172
|
+
d3.rgb('#c0d2d7')
|
173
|
+
.attr("d", arc)
|
174
|
+
|
175
|
+
formatBigCurrency = (amount) ->
|
176
|
+
amount = amount / 100.0
|
177
|
+
# $5.1M
|
178
|
+
if amount >= 1000000
|
179
|
+
amount = amount / 1000000.0
|
180
|
+
amount = Math.round( amount * 10 ) / 10
|
181
|
+
return '$' + amount + 'M'
|
182
|
+
# $425k
|
183
|
+
else if amount >= 100000
|
184
|
+
amount = parseInt(amount / 1000)
|
185
|
+
return '$' + amount + 'k'
|
186
|
+
# $67.4k
|
187
|
+
else if amount >= 10000
|
188
|
+
amount = amount / 1000.0
|
189
|
+
amount = Math.round( amount * 10 ) / 10
|
190
|
+
return '$' + amount + 'k'
|
191
|
+
# $1,234
|
192
|
+
else
|
193
|
+
$('#currency_formatter_placeholder').val(amount)
|
194
|
+
return $('#currency_formatter_placeholder').formatCurrency({ roundToDecimalPlace:-2 }).val()
|
195
|
+
|
196
|
+
|
197
|
+
$(document).ready ->
|
198
|
+
# initial data load
|
199
|
+
set_timespan $('.baseball-card').data('timespan')
|
200
|
+
|
201
|
+
$('.category .dropdown-menu').on 'click', 'a', ->
|
202
|
+
set_sticky_category $(this).data('category')
|
203
|
+
|
204
|
+
$('.time .dropdown-menu a').click ->
|
205
|
+
timespan = $(this).data('timespan')
|
206
|
+
if timespan == 'Lifetime'
|
207
|
+
timespan = 'lifetime'
|
208
|
+
set_timespan timespan
|
209
|
+
set_category sticky_category
|
210
|
+
|
211
|
+
$('.baseball-card .viz').on {
|
212
|
+
mouseenter: ->
|
213
|
+
unless $('.baseball-card').hasClass('loading') || $('.baseball-card').hasClass('invalid')
|
214
|
+
$('.viz .description').show()
|
215
|
+
click: ->
|
216
|
+
unless $('.baseball-card').hasClass('loading') || $('.baseball-card').hasClass('invalid')
|
217
|
+
$('.viz .description').toggle()
|
218
|
+
mouseleave: ->
|
219
|
+
$('.viz .description').hide()
|
220
|
+
}
|
221
|
+
|
222
|
+
# prevent autoclose of dropdown when entering custom timespan
|
223
|
+
$('.dropdown-menu input').click (e) ->
|
224
|
+
e.stopPropagation()
|
225
|
+
|
226
|
+
$('.baseball-card .custom-time input').keypress (e) ->
|
227
|
+
keycode = (e.keyCode || e.which) + ''
|
228
|
+
if keycode == '13'
|
229
|
+
# close dropdown
|
230
|
+
$("body").trigger("click")
|
231
|
+
|
232
|
+
timespan = $('.baseball-card .custom-time input#starts_at').val()
|
233
|
+
timespan += '-'
|
234
|
+
timespan += $('.baseball-card .custom-time input#stops_at').val()
|
235
|
+
set_timespan timespan
|
@@ -206,38 +206,8 @@ $(function() {
|
|
206
206
|
// $('input:focus').blur();
|
207
207
|
}
|
208
208
|
});
|
209
|
-
|
210
|
-
|
211
|
-
minLength: 1,
|
212
|
-
source: function(request, response) {
|
213
|
-
$.getJSON("/people?utf8=%E2%9C%93&commit=Search", { search: request.term }, function(people) {
|
214
|
-
$('#person_first_name').popover('destroy');
|
215
|
-
var responsePeople = new Array();
|
216
|
-
|
217
|
-
$.each(people, function (i, person) {
|
218
|
-
person = cleanJsonPerson(person)
|
219
|
-
responsePeople[i] = "<li data-person-id='"+person.id+"' data-person-email='"+person.email+"'>";
|
220
|
-
responsePeople[i] += "<h4><span class='first-name'>"+person.first_name+"</span> <span class='last-name'>"+person.last_name+"</span></h4>";
|
221
|
-
if(person.company_name) { responsePeople[i] += "<span class='company-name'>"+person.company_name+"</span>" }
|
222
|
-
responsePeople[i] += "</li>";
|
223
|
-
});
|
224
|
-
|
225
|
-
if(responsePeople.length) {
|
226
|
-
$('#person_first_name').popover({
|
227
|
-
content: responsePeople,
|
228
|
-
html: true,
|
229
|
-
title: 'Existing people',
|
230
|
-
position: 'left',
|
231
|
-
trigger: 'manual',
|
232
|
-
container:'#existing-user-popover'
|
233
|
-
});
|
234
|
-
$('#person_first_name').popover('show');
|
235
|
-
}
|
236
|
-
|
237
|
-
response(null)
|
238
|
-
});
|
239
|
-
}
|
240
|
-
});
|
209
|
+
|
210
|
+
new PersonFinder('#user-info #person_first_name', '#existing-user-popover');
|
241
211
|
|
242
212
|
$('#existing-user-popover').on('click', 'li', function() {
|
243
213
|
person = $(this);
|
@@ -404,7 +374,7 @@ function processForm(form) {
|
|
404
374
|
} else {
|
405
375
|
modalHeader.text('Error');
|
406
376
|
}
|
407
|
-
modalBody.
|
377
|
+
modalBody.html(message);
|
408
378
|
})
|
409
379
|
.fail(function() {
|
410
380
|
modalHeader.text('An error has occured.');
|
@@ -438,14 +408,6 @@ function updateRemainingTickets(ticket_types) {
|
|
438
408
|
};
|
439
409
|
|
440
410
|
// utility
|
441
|
-
function cleanJsonPerson(jsonPerson) {
|
442
|
-
jsonPerson.first_name = ( jsonPerson.first_name == null ? "" : jsonPerson.first_name );
|
443
|
-
jsonPerson.last_name = ( jsonPerson.last_name == null ? "" : jsonPerson.last_name );
|
444
|
-
jsonPerson.email = ( jsonPerson.email == null ? "" : jsonPerson.email );
|
445
|
-
jsonPerson.company_name = ( jsonPerson.company_name == null ? "" : jsonPerson.company_name );
|
446
|
-
return jsonPerson
|
447
|
-
};
|
448
|
-
|
449
411
|
function updateSelectedPerson(personId, personFirstName, personLastName, personEmail) {
|
450
412
|
$("input#person_id").val(personId);
|
451
413
|
$("input#person_first_name").val(personFirstName);
|
@@ -474,22 +436,23 @@ function updateTotal(response) {
|
|
474
436
|
updateRemainingTickets(response['ticket_types']);
|
475
437
|
|
476
438
|
// handle discount
|
477
|
-
handleDiscount(response)
|
439
|
+
handleDiscount(response, response['tickets'].length)
|
478
440
|
};
|
479
441
|
|
480
|
-
function handleDiscount(response) {
|
442
|
+
function handleDiscount(response, num_tickets) {
|
481
443
|
var discountMessage = $('.discount .message');
|
482
444
|
discountMessage.show();
|
483
|
-
|
484
|
-
|
485
|
-
discountMessage.text(response['discount_error']);
|
486
|
-
} else if(response['discount_amount'] > 0) {
|
445
|
+
|
446
|
+
if(response['discount_amount'] > 0) {
|
487
447
|
// success, discount greater than 0
|
488
448
|
discountMessage.text(response['discount_amount']*-0.01);
|
489
449
|
discountMessage.formatCurrency({symbol:'$'});
|
490
450
|
discountMessage.text(discountMessage.text() + ' discount');
|
491
|
-
} else if(
|
492
|
-
//
|
451
|
+
} else if(response['discount_error']) {
|
452
|
+
// something incorrect with discount code
|
453
|
+
discountMessage.text(response['discount_error']);
|
454
|
+
} else if(($.trim($('#order-discount').val()).length) && (num_tickets > 0)) {
|
455
|
+
// success but tickets > 0 and discount < 0 and something in discount input
|
493
456
|
discountMessage.text('No valid discount found.');
|
494
457
|
} else {
|
495
458
|
discountMessage.hide();
|
@@ -0,0 +1,264 @@
|
|
1
|
+
//= require_self
|
2
|
+
|
3
|
+
$(document).ready(function() {
|
4
|
+
touchCurrency();
|
5
|
+
$('#accordion1 #collapseOne.accordion-body').addClass( $('#contribution_match_eligible').val() == 'true' ? 'in' : 'collapse' );
|
6
|
+
$('#accordion2 #collapseTwo.accordion-body').addClass( $('#have_soft_credits').val() == 'true' ? 'in' : 'collapse' );
|
7
|
+
$('#accordion3 #collapseThree.accordion-body').addClass( $('#contribution_pledge').val() == 'true' ? 'in' : 'collapse' );
|
8
|
+
})
|
9
|
+
|
10
|
+
|
11
|
+
$('#contribution_payment_method').bind('change keydown', function() {
|
12
|
+
if(this.options[this.selectedIndex].value == 'Check') {
|
13
|
+
$('#check_number').show();
|
14
|
+
} else {
|
15
|
+
$('#check_number').hide();
|
16
|
+
}
|
17
|
+
});
|
18
|
+
|
19
|
+
$('#contribution_pledge').bind('change keydown', function() {
|
20
|
+
if(this.options[this.selectedIndex].value == 'true') {
|
21
|
+
$('#donation_date, #donation_type, #payment_method').hide();
|
22
|
+
$('#commitment_date, #pledge_payments_schedule').show();
|
23
|
+
} else {
|
24
|
+
$('#donation_date, #donation_type, #payment_method').show();
|
25
|
+
$('#commitment_date, #pledge_payments_schedule').hide();
|
26
|
+
}
|
27
|
+
});
|
28
|
+
|
29
|
+
$('#match-eligible a').click(function(e) {
|
30
|
+
var matchEligible = $('#contribution_match_eligible')
|
31
|
+
matchEligible.val(matchEligible.val() == 'false' ? 'true' : 'false');
|
32
|
+
return;
|
33
|
+
});
|
34
|
+
|
35
|
+
$("input", '#contribution-donor').autocomplete({
|
36
|
+
html: true,
|
37
|
+
minLength: 3,
|
38
|
+
focus: function(event, person) {
|
39
|
+
event.preventDefault()
|
40
|
+
},
|
41
|
+
source: function(request, response) {
|
42
|
+
searchPerson(request, response);
|
43
|
+
},
|
44
|
+
select: function(event, person) {
|
45
|
+
event.preventDefault()
|
46
|
+
var personId = $(person.item.value).filter("#search-result-id").html()
|
47
|
+
var personFirstName = $("#search-result-first-name", person.item.value).html()
|
48
|
+
var personLastName = $("#search-result-last-name", person.item.value).html()
|
49
|
+
var personEmail = $(person.item.value).filter("#search-result-email").html()
|
50
|
+
var personCompany = $(person.item.value).filter("#search-result-company-name").html()
|
51
|
+
|
52
|
+
loadPersonWithTags(personId, personFirstName, personLastName, personEmail, personCompany);
|
53
|
+
$('#contribution_first_name').val('').prop('disabled', true);
|
54
|
+
$('#contribution_last_name').val('').prop('disabled', true);
|
55
|
+
$('#contribution_email').val('').prop('disabled', true);
|
56
|
+
$('#contribution_company_name').val('').prop('disabled', true);
|
57
|
+
|
58
|
+
}
|
59
|
+
});
|
60
|
+
|
61
|
+
$("input:text[id^='contribution_soft_credit_'][id$='_person'], #contribution_matcher_name").live("focus.autocomplete", null, function () {
|
62
|
+
$(this).autocomplete({
|
63
|
+
html: true,
|
64
|
+
minLength: 3,
|
65
|
+
focus: function (event, person) {
|
66
|
+
event.preventDefault()
|
67
|
+
},
|
68
|
+
source: function (request, response) {
|
69
|
+
searchPerson(request, response);
|
70
|
+
},
|
71
|
+
select: function (event, person) {
|
72
|
+
event.preventDefault()
|
73
|
+
var personId = $(person.item.value).filter("#search-result-id").html()
|
74
|
+
var personFirstName = $("#search-result-first-name", person.item.value).html()
|
75
|
+
var personLastName = $("#search-result-last-name", person.item.value).html()
|
76
|
+
var personEmail = $(person.item.value).filter("#search-result-email").html()
|
77
|
+
var personCompany = $(person.item.value).filter("#search-result-company-name").html()
|
78
|
+
|
79
|
+
var personName = "No Name"
|
80
|
+
if (personFirstName || personLastName) {
|
81
|
+
personName = personFirstName + " " + personLastName
|
82
|
+
} else if (personCompany) {
|
83
|
+
personName = personCompany
|
84
|
+
} else if (personEmail) {
|
85
|
+
personName = personEmail
|
86
|
+
}
|
87
|
+
$(this).val(personName);
|
88
|
+
$(this).siblings('input').val(personId);
|
89
|
+
$(this).prop('disabled', true);
|
90
|
+
}
|
91
|
+
});
|
92
|
+
});
|
93
|
+
|
94
|
+
|
95
|
+
function searchPerson(request, response) {
|
96
|
+
$.getJSON("/people?utf8=%E2%9C%93&commit=Search", { search: request.term }, function(people) {
|
97
|
+
responsePeople = new Array();
|
98
|
+
|
99
|
+
$.each(people, function (i, person) {
|
100
|
+
person = cleanJsonPerson(person)
|
101
|
+
responsePeople[i] = "<div id='search-result-full-name'><span id='search-result-first-name'>"+ person.first_name +"</span> <span id='search-result-last-name'>"+ person.last_name +"</span></div>"
|
102
|
+
responsePeople[i] += "<div id='search-result-email' class='search-result-details'>"+ person.email +"</div>"
|
103
|
+
responsePeople[i] += "<div class='clear'></div>"
|
104
|
+
if(person.first_name && person.last_name) {
|
105
|
+
responsePeople[i] += "<div id='search-result-company-name' class='search-result-details'>" + person.company_name + "</div>"
|
106
|
+
} else {
|
107
|
+
responsePeople[i] += "<div id='search-result-company-name'>" + person.company_name + "</div>"
|
108
|
+
}
|
109
|
+
responsePeople[i] += "<div id='search-result-id'>"+person.id+"</div>"
|
110
|
+
});
|
111
|
+
response(responsePeople)
|
112
|
+
});
|
113
|
+
}
|
114
|
+
|
115
|
+
function loadPersonWithTags(personId, personFirstName, personLastName, personEmail, personCompany) {
|
116
|
+
$.getJSON("/people/" + personId + "/tags", function(tags){
|
117
|
+
$("ul.detailed-list").empty();
|
118
|
+
$.each(tags, function (i, tag) {
|
119
|
+
$("ul.detailed-list").append("<li class=\"tag rounder\">" + tag + "</li> ");
|
120
|
+
});
|
121
|
+
|
122
|
+
var personName = "No Name"
|
123
|
+
if(personFirstName || personLastName) {
|
124
|
+
personName = personFirstName + " " + personLastName
|
125
|
+
} else if(personCompany) {
|
126
|
+
personName = personCompany
|
127
|
+
}
|
128
|
+
|
129
|
+
$('#selected-name').html(personName)
|
130
|
+
$('#selected-email').html(personEmail)
|
131
|
+
$('#selected-company').html(personCompany)
|
132
|
+
$('#contribution_person_id').attr("value",personId)
|
133
|
+
});
|
134
|
+
}
|
135
|
+
|
136
|
+
|
137
|
+
$('.add-sc-link').live('click', function() {
|
138
|
+
var $klone = $("#softCreditRow").clone();
|
139
|
+
var newRecordId = -(new Date().getTime()); //we need a unique negative id when updating
|
140
|
+
var id_prefix = 'contribution_soft_credit_';
|
141
|
+
var name_prefix = 'contribution[soft_credit][';
|
142
|
+
|
143
|
+
$klone.find('input:text[id^=' + id_prefix + '][id$=person]')
|
144
|
+
.prop('id', id_prefix + newRecordId + '_person')
|
145
|
+
.prop('name', name_prefix + newRecordId + '][person]')
|
146
|
+
.prop('value', '')
|
147
|
+
.prop('disabled', false);
|
148
|
+
$klone.find('input:hidden[id^=' + id_prefix + '][id$=person_id]')
|
149
|
+
.prop('id', id_prefix + newRecordId + '_person_id')
|
150
|
+
.prop('name', name_prefix + newRecordId + '][person_id]')
|
151
|
+
.prop('value', '');
|
152
|
+
$klone.find('input:text[id^=' + id_prefix + '][id$=amount]')
|
153
|
+
.prop('id', id_prefix + newRecordId + '_amount')
|
154
|
+
.prop('name', name_prefix + newRecordId + '][amount]')
|
155
|
+
.prop('value', '');
|
156
|
+
|
157
|
+
$klone.appendTo($('#softCredits'));
|
158
|
+
return false;
|
159
|
+
});
|
160
|
+
|
161
|
+
$('.remove-sc-link').live('click', function() {
|
162
|
+
if( $('#softCredits #softCreditRow').size() > 1 ) {
|
163
|
+
$(this).parents('#softCreditRow').remove();
|
164
|
+
}
|
165
|
+
return false;
|
166
|
+
});
|
167
|
+
|
168
|
+
$('.add-pp-link').live('click', function() {
|
169
|
+
var $klone = $("#pledgePaymentRow").clone();
|
170
|
+
var newRecordId = -(new Date().getTime()); //we need a unique negative id when updating
|
171
|
+
var id_prefix = 'contribution_scheduled_pledge_payment_';
|
172
|
+
var name_prefix = 'contribution[scheduled_pledge_payment][';
|
173
|
+
|
174
|
+
$klone.find('input:text[id^=' + id_prefix + '][id$=date]')
|
175
|
+
.prop('id', id_prefix + newRecordId + '_date')
|
176
|
+
.prop('name', name_prefix + newRecordId + '][date]')
|
177
|
+
.prop('value', '')
|
178
|
+
.removeClass('hasDatepicker')
|
179
|
+
.datepicker({dateFormat: 'yy-mm-dd'});
|
180
|
+
|
181
|
+
$klone.find('input:text[id^=' + id_prefix + '][id$=amount]')
|
182
|
+
.prop('id', id_prefix + newRecordId + '_amount')
|
183
|
+
.prop('name', name_prefix + newRecordId + '][amount]')
|
184
|
+
.prop('value', '');
|
185
|
+
|
186
|
+
$klone.appendTo($('#pledgePayments'));
|
187
|
+
return false;
|
188
|
+
});
|
189
|
+
|
190
|
+
$('.remove-pp-link').live('click', function() {
|
191
|
+
if( $('#pledgePayments #pledgePaymentRow').size() > 1 ) {
|
192
|
+
$(this).parents('#pledgePaymentRow').remove();
|
193
|
+
}
|
194
|
+
return false;
|
195
|
+
});
|
196
|
+
|
197
|
+
|
198
|
+
$(function(){
|
199
|
+
var curr_val = $('#old_contribution\\[eligible_amount\\]').val();
|
200
|
+
|
201
|
+
$('#contribution_ratio').keyup(function() {
|
202
|
+
var ratio = $(this).val();
|
203
|
+
if(!$.isNumeric(ratio)) {
|
204
|
+
ratio = 0;
|
205
|
+
}
|
206
|
+
|
207
|
+
ratio = parseFloat(ratio);
|
208
|
+
var total_gift_amount = $('#old_contribution\\[amount\\]').val();
|
209
|
+
total_gift_amount = parseFloat(total_gift_amount.replace(/[^0-9\.]+/g,"")); //Remove all non dot / digits:
|
210
|
+
var eligible_amount = (ratio * total_gift_amount).toFixed(2);
|
211
|
+
|
212
|
+
$('#old_contribution\\[eligible_amount\\]').val(eligible_amount);
|
213
|
+
|
214
|
+
touchCurrency();
|
215
|
+
$(this).focus();
|
216
|
+
|
217
|
+
curr_val = $('#old_contribution\\[eligible_amount\\]').val();
|
218
|
+
});
|
219
|
+
|
220
|
+
$('input[id="old_contribution[eligible_amount]"]').keyup(function() {
|
221
|
+
if(curr_val != $(this).val()) {
|
222
|
+
$('#contribution_ratio').val("");
|
223
|
+
curr_val = $(this).val();
|
224
|
+
}
|
225
|
+
});
|
226
|
+
|
227
|
+
|
228
|
+
$('input[id="old_contribution[amount]"]').keyup(function() {
|
229
|
+
// enable match amount & ratio when gift amount is entered
|
230
|
+
$('#contribution_ratio').prop('disabled', $(this).val() == '$0.00');
|
231
|
+
$('#old_contribution\\[eligible_amount\\]').prop('disabled', $(this).val() == '$0.00');
|
232
|
+
|
233
|
+
// pre-populate soft credit amount with total gift amount only if there isn't selected soft credit person
|
234
|
+
var total_gift_amount = parseInt($(this).val().replace(/[^0-9\.]+/g,""));
|
235
|
+
$("input:text[id^='contribution_soft_credit_'][id$='_amount']").each(function() {
|
236
|
+
var recordId = $(this).attr("id").match("contribution_soft_credit_(.*)_amount")[1]
|
237
|
+
var personId = $("#contribution_soft_credit_" + recordId + "_person_id").val();
|
238
|
+
if(personId == '') {
|
239
|
+
$("#contribution_soft_credit_" + recordId + "_amount").val(total_gift_amount);
|
240
|
+
}
|
241
|
+
});
|
242
|
+
});
|
243
|
+
|
244
|
+
});
|
245
|
+
|
246
|
+
function loadAppeals(campaign_select_id, appeal_select_id, campaign_appeals) {
|
247
|
+
var value = $( "#" + campaign_select_id).val(),
|
248
|
+
$appeal_id_sel = $('#' + appeal_select_id),
|
249
|
+
appeal_id_sel = $appeal_id_sel[0];
|
250
|
+
|
251
|
+
while (appeal_id_sel.options.length) {
|
252
|
+
appeal_id_sel.options.remove(0);
|
253
|
+
}
|
254
|
+
|
255
|
+
appeal_id_sel.options.add(new Option());
|
256
|
+
if (campaign_appeals[value]) {
|
257
|
+
for (var key in campaign_appeals[value]) {
|
258
|
+
if (campaign_appeals[value].hasOwnProperty(key)) {
|
259
|
+
var option = new Option(campaign_appeals[value][key], key);
|
260
|
+
appeal_id_sel.options.add(option);
|
261
|
+
}
|
262
|
+
}
|
263
|
+
}
|
264
|
+
}
|