artfully_ose 1.0.0.rc4 → 1.1.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE.txt +661 -0
- data/app/assets/fonts/FontAwesome.otf +0 -0
- data/app/assets/fonts/fontawesome-webfont.eot +0 -0
- data/app/assets/fonts/fontawesome-webfont.svg +284 -0
- data/app/assets/fonts/fontawesome-webfont.ttf +0 -0
- data/app/assets/fonts/fontawesome-webfont.woff +0 -0
- data/app/assets/images/chosen-sprite.png +0 -0
- data/app/assets/javascripts/application.js +88 -44
- data/app/assets/javascripts/box-office.js +7 -3
- data/app/assets/javascripts/custom/grouped-form.js +1 -1
- data/app/assets/javascripts/custom/modernizr.custom.12828.js +4 -0
- data/app/assets/javascripts/custom/people.js +30 -1
- data/app/assets/javascripts/jquery-lib/chosen.jquery.js +1026 -0
- data/app/assets/javascripts/jquery-lib/jquery.jeditable.js +1 -1
- data/app/assets/javascripts/jquery-lib/jquery.mask-money.js +90 -60
- data/app/assets/javascripts/store/store.js +112 -67
- data/app/assets/stylesheets/application.sass +174 -1
- data/app/assets/stylesheets/bootstrap-overrides.css +51 -13
- data/app/assets/stylesheets/bootstrap.css +4 -379
- data/app/assets/stylesheets/font-awesome.sass +759 -0
- data/app/assets/stylesheets/jquery/chosen.scss +397 -0
- data/app/assets/stylesheets/printing.css +5 -1
- data/app/assets/stylesheets/sass/store.sass +18 -3
- data/app/concerns/itemable.rb +11 -0
- data/app/concerns/oh_noes.rb +24 -0
- data/app/controllers/actions_controller.rb +39 -20
- data/app/controllers/addresses_controller.rb +2 -2
- data/app/controllers/artfully_ose_controller.rb +15 -1
- data/app/controllers/charts_controller.rb +6 -2
- data/app/controllers/contributions_controller.rb +28 -1
- data/app/controllers/discounts_controller.rb +65 -0
- data/app/controllers/discounts_reports_controller.rb +22 -0
- data/app/controllers/events_controller.rb +48 -45
- data/app/controllers/exchanges_controller.rb +10 -10
- data/app/controllers/imports_controller.rb +38 -20
- data/app/controllers/index_controller.rb +1 -1
- data/app/controllers/memberships_controller.rb +1 -0
- data/app/controllers/merges_controller.rb +1 -1
- data/app/controllers/orders_controller.rb +6 -12
- data/app/controllers/organizations_controller.rb +0 -1
- data/app/controllers/people_controller.rb +10 -12
- data/app/controllers/refunds_controller.rb +2 -2
- data/app/controllers/returns_controller.rb +0 -1
- data/app/controllers/sales_controller.rb +9 -6
- data/app/controllers/searches_controller.rb +53 -0
- data/app/controllers/sections_controller.rb +12 -1
- data/app/controllers/segments_controller.rb +23 -10
- data/app/controllers/shows_controller.rb +37 -28
- data/app/controllers/slices_controller.rb +37 -0
- data/app/controllers/statements_controller.rb +4 -4
- data/app/controllers/store/checkouts_controller.rb +14 -12
- data/app/controllers/store/events_controller.rb +1 -1
- data/app/controllers/store/orders_controller.rb +32 -5
- data/app/controllers/store/store_controller.rb +4 -0
- data/app/controllers/venues_controller.rb +6 -2
- data/app/helpers/artfully_ose_helper.rb +31 -5
- data/app/helpers/discounts_helper.rb +3 -0
- data/app/helpers/people_helper.rb +2 -19
- data/app/mailers/order_mailer.rb +21 -3
- data/app/mailers/producer_mailer.rb +9 -1
- data/app/mailers/reports_mailer.rb +12 -0
- data/app/models/action.rb +29 -3
- data/app/models/actions/get_action.rb +4 -0
- data/app/models/actions/go_action.rb +18 -0
- data/app/models/actions/refund_action.rb +14 -0
- data/app/models/address.rb +6 -16
- data/app/models/adjustments.rb +10 -0
- data/app/models/box_office.rb +1 -1
- data/app/models/carts/cart.rb +35 -24
- data/app/models/chart.rb +16 -8
- data/app/models/checkout.rb +32 -9
- data/app/models/comp.rb +2 -8
- data/app/models/contribution.rb +111 -25
- data/app/models/daily_donation_report.rb +45 -0
- data/app/models/daily_ticket_report.rb +51 -0
- data/app/models/discount.rb +137 -0
- data/app/models/discounts/buy_one_get_one_free_discount_type.rb +20 -0
- data/app/models/discounts/discount_type.rb +66 -0
- data/app/models/discounts/dollars_off_tickets_discount_type.rb +32 -0
- data/app/models/discounts/percentage_off_tickets_discount_type.rb +25 -0
- data/app/models/discounts_report.rb +87 -0
- data/app/models/donation.rb +2 -0
- data/app/models/door_list.rb +5 -4
- data/app/models/event.rb +45 -16
- data/app/models/exchange.rb +26 -15
- data/app/models/ext/delayed_indexing.rb +24 -0
- data/app/models/ext/due.rb +7 -0
- data/app/models/ext/ext.rb +37 -0
- data/app/models/ext/integrations.rb +30 -0
- data/app/models/ext/resellable.rb +8 -1
- data/app/models/gateway_transaction.rb +47 -0
- data/app/models/import.rb +83 -101
- data/app/models/import_error.rb +1 -1
- data/app/models/import_row.rb +1 -1
- data/app/models/imports/donations_import.rb +103 -0
- data/app/models/imports/events_import.rb +207 -0
- data/app/models/imports/people_import.rb +41 -0
- data/app/models/imports/processing.rb +53 -0
- data/app/models/imports/rollback.rb +11 -0
- data/app/models/imports/status.rb +48 -0
- data/app/models/imports/validations.rb +31 -0
- data/app/models/item.rb +112 -29
- data/app/models/job/action_job.rb +29 -0
- data/app/models/job/daily_email_report_job.rb +11 -0
- data/app/models/job/tag_job.rb +15 -0
- data/app/models/kit.rb +14 -6
- data/app/models/kits/mailchimp_kit.rb +448 -0
- data/app/models/kits/reseller_kit.rb +2 -2
- data/app/models/kits/sponsored_donation_kit.rb +2 -2
- data/app/models/orders/application_order.rb +3 -1
- data/app/models/orders/comp_order.rb +15 -2
- data/app/models/orders/exchange_order.rb +8 -0
- data/app/models/orders/imported_order.rb +7 -0
- data/app/models/orders/order.rb +164 -51
- data/app/models/orders/refund_order.rb +14 -1
- data/app/models/orders/unrefundable.rb +5 -0
- data/app/models/orders/web_order.rb +1 -1
- data/app/models/organization.rb +38 -7
- data/app/models/parsed_row.rb +167 -0
- data/app/models/payments/comp_payment.rb +10 -1
- data/app/models/payments/credit_card_payment.rb +63 -10
- data/app/models/payments/payment.rb +28 -0
- data/app/models/person.rb +115 -43
- data/app/models/refund.rb +28 -28
- data/app/models/return.rb +2 -0
- data/app/models/sale.rb +8 -5
- data/app/models/search.rb +117 -0
- data/app/models/section.rb +18 -0
- data/app/models/segment.rb +14 -4
- data/app/models/show.rb +14 -4
- data/app/models/slices.rb +82 -0
- data/app/models/statement.rb +170 -3
- data/app/models/temp_discount.rb +14 -0
- data/app/models/ticket.rb +42 -134
- data/app/models/ticket/pricing.rb +45 -0
- data/app/models/ticket/reports.rb +10 -7
- data/app/models/ticket/sale_transitions.rb +44 -0
- data/app/models/ticket/transfers.rb +50 -0
- data/app/models/user.rb +10 -2
- data/app/models/valuation/lifetime_donations.rb +35 -0
- data/app/models/venue.rb +12 -1
- data/app/presenters/event_presenter.rb +41 -0
- data/app/views/actions/_list.html.haml +1 -2
- data/app/views/actions/new.html.haml +1 -1
- data/app/views/contributions/_form.html.haml +40 -0
- data/app/views/contributions/_sidebar.html.haml +12 -0
- data/app/views/contributions/edit.html.haml +11 -0
- data/app/views/contributions/index.html.haml +2 -2
- data/app/views/contributions/new.html.haml +5 -35
- data/app/views/discounts/_discount_section_fields.html.haml +25 -0
- data/app/views/discounts/_form.html.haml +95 -0
- data/app/views/discounts/edit.html.haml +16 -0
- data/app/views/discounts/index.html.haml +33 -0
- data/app/views/discounts/new.html.haml +16 -0
- data/app/views/discounts_reports/index.html.haml +76 -0
- data/app/views/events/_discount_section_fields.html.haml +25 -0
- data/app/views/events/_glance.html.haml +4 -1
- data/app/views/events/_list.html.haml +2 -4
- data/app/views/events/_menu.html.haml +3 -3
- data/app/views/events/_section_fields.html.haml +32 -15
- data/app/views/events/_share_and_sell.haml +2 -1
- data/app/views/events/edit.html.haml +7 -6
- data/app/views/events/image.html.haml +1 -0
- data/app/views/events/index.html.haml +3 -1
- data/app/views/events/messages.html.haml +1 -0
- data/app/views/events/prices.html.haml +2 -1
- data/app/views/events/resell.html.haml +1 -1
- data/app/views/events/show.html.haml +25 -1
- data/app/views/events/storefront_link.html.haml +1 -1
- data/app/views/events/temp_discount_form.html.haml +108 -0
- data/app/views/events/temp_discounts_index.html.haml +38 -0
- data/app/views/events/widget.html.haml +14 -1
- data/app/views/exchanges/new.html.haml +50 -73
- data/app/views/imports/{_imported.html.haml → donations/_approved.html.haml} +2 -5
- data/app/views/imports/donations/_caching.html.haml +17 -0
- data/app/views/imports/donations/_failed.html.haml +5 -0
- data/app/views/imports/donations/_imported.html.haml +9 -0
- data/app/views/imports/donations/_importing.html.haml +12 -0
- data/app/views/imports/donations/_invalid.html.haml +5 -0
- data/app/views/imports/donations/_new.html.haml +99 -0
- data/app/views/imports/donations/_pending.html.haml +41 -0
- data/app/views/imports/events/_approved.html.haml +10 -0
- data/app/views/imports/events/_caching.html.haml +17 -0
- data/app/views/imports/events/_failed.html.haml +5 -0
- data/app/views/imports/events/_imported.html.haml +9 -0
- data/app/views/imports/events/_importing.html.haml +12 -0
- data/app/views/imports/events/_invalid.html.haml +5 -0
- data/app/views/imports/events/_new.html.haml +95 -0
- data/app/views/imports/events/_pending.html.haml +35 -0
- data/app/views/imports/index.html.haml +41 -18
- data/app/views/imports/new.html.haml +1 -93
- data/app/views/imports/{_approved.html.haml → people/_approved.html.haml} +0 -1
- data/app/views/imports/{_caching.html.haml → people/_caching.html.haml} +0 -0
- data/app/views/imports/people/_failed.html.haml +5 -0
- data/app/views/imports/people/_imported.html.haml +25 -0
- data/app/views/imports/{_importing.html.haml → people/_importing.html.haml} +1 -2
- data/app/views/imports/people/_invalid.html.haml +5 -0
- data/app/views/imports/people/_new.html.haml +120 -0
- data/app/views/imports/people/_pending.html.haml +39 -0
- data/app/views/imports/shared/_date_format.html.haml +14 -0
- data/app/views/imports/shared/_failed.html.haml +18 -0
- data/app/views/imports/shared/_inspect_modal.html.haml +11 -0
- data/app/views/imports/shared/_invalid.html.haml +18 -0
- data/app/views/imports/shared/_knowledge_base.haml +2 -0
- data/app/views/imports/shared/_sidebar.html.haml +5 -0
- data/app/views/imports/show.html.haml +2 -2
- data/app/views/index/dashboard.html.haml +4 -2
- data/app/views/layouts/_custom_css_includes.haml +0 -0
- data/app/views/layouts/_custom_js_includes.haml +0 -0
- data/app/views/layouts/_google_analytics.html.haml +3 -3
- data/app/views/layouts/_menu.html.haml +6 -2
- data/app/views/layouts/application.html.haml +4 -0
- data/app/views/layouts/{devise.html.haml → devise_layout.html.haml} +0 -0
- data/app/views/order_mailer/confirmation_for.html.haml +3 -2
- data/app/views/order_mailer/confirmation_for.text.haml +3 -2
- data/app/views/orders/_grouped_form_help.haml +4 -0
- data/app/views/orders/_item_table.haml +15 -4
- data/app/views/orders/_order_sidebar.html.haml +27 -6
- data/app/views/orders/index.html.haml +1 -12
- data/app/views/orders/show.html.haml +1 -1
- data/app/views/organizations/_form.html.haml +20 -6
- data/app/views/organizations/edit.html.haml +2 -1
- data/app/views/organizations/new.html.haml +1 -0
- data/app/views/organizations/show.html.haml +7 -1
- data/app/views/people/_form.html.haml +5 -2
- data/app/views/people/_key_relationships.html.haml +1 -1
- data/app/views/people/_list.html.haml +1 -12
- data/app/views/people/_person_summary_sidebar.html.haml +82 -50
- data/app/views/people/_relationship_table_row.html.haml +1 -1
- data/app/views/people/edit.html.haml +3 -1
- data/app/views/people/index.html.haml +7 -1
- data/app/views/people/new.html.haml +2 -0
- data/app/views/people/show.html.haml +2 -0
- data/app/views/refunds/new.html.haml +4 -6
- data/app/views/reports_mailer/daily.html.haml +67 -0
- data/app/views/reports_mailer/daily.text.erb +16 -0
- data/app/views/sales/new.html.haml +5 -20
- data/app/views/searches/_form.html.haml +43 -0
- data/app/views/searches/_person.html.haml +7 -0
- data/app/views/searches/new.html.haml +10 -0
- data/app/views/searches/show.html.haml +64 -0
- data/app/views/sections/edit.html.haml +12 -0
- data/app/views/segments/index.html.haml +8 -4
- data/app/views/segments/show.html.haml +39 -5
- data/app/views/shared/_door_list_table.haml +24 -0
- data/app/views/shared/_event_image_icon.html.haml +1 -1
- data/app/views/shared/_preload_assets.html.haml +2 -0
- data/app/views/shared/_tags.html.haml +3 -2
- data/app/views/shows/_glance.html.haml +8 -2
- data/app/views/shows/_ticket_table.html.haml +17 -10
- data/app/views/shows/_upcoming.html.haml +1 -1
- data/app/views/shows/door_list.html.haml +2 -24
- data/app/views/shows/index.html.haml +3 -3
- data/app/views/shows/new.html.haml +2 -2
- data/app/views/shows/show.html.haml +1 -1
- data/app/views/slices/_data.json +50 -0
- data/app/views/slices/index.html.haml +58 -0
- data/app/views/statements/_discounts_table.html.haml +26 -0
- data/app/views/statements/_order_location_table.html.haml +20 -0
- data/app/views/statements/_payment_method_table.haml +20 -0
- data/app/views/statements/{_played_shows.html.haml → _shows.html.haml} +3 -3
- data/app/views/statements/_ticket_type_table.haml +20 -0
- data/app/views/statements/_top_stats.haml +12 -0
- data/app/views/statements/show.html.haml +24 -32
- data/app/views/store/events/_show.html.haml +11 -5
- data/app/views/store/events/show.html.haml +24 -5
- data/app/views/users/registrations/edit.html.erb +1 -1
- data/app/views/venues/edit.html.haml +1 -0
- data/config/artfully.yml.sample +3 -0
- data/config/initializers/active_model_serializer.rb +3 -0
- data/config/initializers/braintree_error_mapping.rb +5 -0
- data/config/initializers/devise.rb +1 -1
- data/config/locales/en.yml +1 -0
- data/config/routes.rb +31 -8
- data/db/migrate/0000_set_up_artfully.rb +9 -11
- data/db/migrate/20120809212802_add_do_not_email_to_people.rb +5 -0
- data/db/migrate/20120831200120_create_advanced_search.rb +30 -0
- data/db/migrate/20120926201927_add_email_to_organization.rb +5 -0
- data/db/migrate/20121001143351_add_import_id_orders_events.rb +6 -0
- data/db/migrate/20121006024736_add_import_to_actions.rb +5 -0
- data/db/migrate/20121011180654_add_type_to_imports.rb +14 -0
- data/db/migrate/20121024143846_create_discounts.rb +15 -0
- data/db/migrate/20121026131454_deleted_at_to_orders_items_actions.rb +7 -0
- data/db/migrate/20121026203948_add_initial_price_to_tickets.rb +5 -0
- data/db/migrate/20121029183949_change_initial_price_to_cart_price.rb +5 -0
- data/db/migrate/20121113144826_migrate_donation_types.rb +41 -0
- data/db/migrate/20121115020441_add_salutation_to_people.rb +5 -0
- data/db/migrate/20121130004314_add_visibility_to_sections.rb +6 -0
- data/db/migrate/20121205184343_add_discount_to_ticket.rb +6 -0
- data/db/migrate/20121206212835_add_discount_to_carts_and_items.rb +7 -0
- data/db/migrate/20121211193728_add_deleted_at_to_discounts.rb +5 -0
- data/db/migrate/20121212022026_add_uuid_to_show_and_event.rb +9 -0
- data/db/migrate/20121212023203_set_uuids.rb +11 -0
- data/db/migrate/20121217201422_add_minimum_ticket_count_to_discounts.rb +5 -0
- data/db/migrate/20121221154152_add_shows_and_sections_to_discounts.rb +5 -0
- data/db/migrate/20130103153946_make_shows_and_sections_habtm.rb +19 -0
- data/db/migrate/20130108213102_add_original_price_to_items.rb +10 -0
- data/db/migrate/20130111211929_convert_discounts_sections_to_array_of_strings.rb +14 -0
- data/db/migrate/20130114200128_add_discount_code_to_search.rb +5 -0
- data/db/migrate/20130114212408_add_limit_to_discounts.rb +5 -0
- data/db/migrate/20130116203331_add_title_to_person.rb +5 -0
- data/db/migrate/20130122143845_install_audited.rb +28 -0
- data/db/migrate/20130131024955_add_gateway_transactions.rb +13 -0
- data/db/migrate/20130301144159_add_receive_daily_sales_report_boolean_to_organizations.rb +5 -0
- data/db/migrate/20130306213416_add_subscribed_lists_to_people.rb +5 -0
- data/db/migrate/20130308193328_people_arent_dummies.rb +6 -0
- data/db/migrate/20130312173340_add_categories_to_events.rb +6 -0
- data/db/migrate/20130319110520_add_transaction_id_index.rb +6 -0
- data/db/migrate/20130320192827_add_index_to_notes.rb +8 -0
- data/db/migrate/20130324173939_add_index_to_import_rows.rb +5 -0
- data/db/migrate/20130325190110_add_indexes_to_actions.rb +9 -0
- data/db/migrate/20130326173653_add_lifetime_donations_to_people_and_searches.rb +9 -0
- data/lib/artfully_ose.rb +5 -1
- data/lib/artfully_ose/common_abilities.rb +6 -9
- data/lib/artfully_ose/engine.rb +19 -5
- data/lib/artfully_ose/version.rb +1 -1
- data/lib/email_validator.rb +6 -0
- metadata +442 -138
- data/MIT-LICENSE +0 -20
- data/app/controllers/pages_controller.rb +0 -29
- data/app/models/import_person.rb +0 -78
- data/app/views/imports/_failed.html.haml +0 -20
- data/app/views/imports/_pending.html.haml +0 -35
- data/app/views/index/splash.html.erb +0 -160
- data/app/views/segments/new.html.haml +0 -20
data/MIT-LICENSE
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
Copyright 2012 YOURNAME
|
2
|
-
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
-
a copy of this software and associated documentation files (the
|
5
|
-
"Software"), to deal in the Software without restriction, including
|
6
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
-
permit persons to whom the Software is furnished to do so, subject to
|
9
|
-
the following conditions:
|
10
|
-
|
11
|
-
The above copyright notice and this permission notice shall be
|
12
|
-
included in all copies or substantial portions of the Software.
|
13
|
-
|
14
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -1,29 +0,0 @@
|
|
1
|
-
class PagesController < ActionController::Base
|
2
|
-
skip_before_filter :authenticate_user!
|
3
|
-
|
4
|
-
def updates
|
5
|
-
require 'open-uri'
|
6
|
-
require 'nokogiri'
|
7
|
-
|
8
|
-
@posts = []
|
9
|
-
doc = Nokogiri::HTML(open('http://www.fracturedatlas.org/site/blog/tag/artfully/'))
|
10
|
-
|
11
|
-
begin
|
12
|
-
doc.css('.post').each do |post|
|
13
|
-
content = {}
|
14
|
-
content[:title] = post.css('h2').first.content
|
15
|
-
content[:link] = post.css('h2 a').first['href']
|
16
|
-
content[:byline] = post.css('.byline').first.content
|
17
|
-
content[:entry] = post.css('.entry').first.content
|
18
|
-
@posts << content
|
19
|
-
end
|
20
|
-
rescue
|
21
|
-
logger.info "Pulling in updates from the FA blog on index#updates failed."
|
22
|
-
# todo: send to airbrake or exceptional
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def sign_up_form
|
27
|
-
render :sign_up_form, :layout => false
|
28
|
-
end
|
29
|
-
end
|
data/app/models/import_person.rb
DELETED
@@ -1,78 +0,0 @@
|
|
1
|
-
class ImportPerson
|
2
|
-
|
3
|
-
# Define the list of fields known about a person and the various column names
|
4
|
-
# that might be used for that field.
|
5
|
-
FIELDS = {
|
6
|
-
:email => [ "Email", "Email address" ],
|
7
|
-
:first => [ "First name", "First" ],
|
8
|
-
:last => [ "Last name", "Last" ],
|
9
|
-
:company => [ "Company name", "Company" ],
|
10
|
-
:address1 => [ "Address 1", "Address1" ],
|
11
|
-
:address2 => [ "Address 2", "Address2" ],
|
12
|
-
:city => [ "City" ],
|
13
|
-
:state => [ "State" ],
|
14
|
-
:zip => [ "Zip", "Zip code" ],
|
15
|
-
:country => [ "Country" ],
|
16
|
-
:phone1_type => [ "Phone1 type", "Phone 1 type" ],
|
17
|
-
:phone1_number => [ "Phone1 number", "Phone 1", "Phone 1 number", "Phone1" ],
|
18
|
-
:phone2_type => [ "Phone2 type", "Phone 2 type" ],
|
19
|
-
:phone2_number => [ "Phone2 number", "Phone 2", "Phone 2 number", "Phone2" ],
|
20
|
-
:phone3_type => [ "Phone3 type", "Phone 3 type" ],
|
21
|
-
:phone3_number => [ "Phone3 number", "Phone 3", "Phone 3 number", "Phone3" ],
|
22
|
-
:website => [ "Website" ],
|
23
|
-
:twitter_username => [ "Twitter handle", "Twitter", "Twitter username" ],
|
24
|
-
:facebook_page => [ "Facebook url", "Facebook", "Facebook address", "Facebook page" ],
|
25
|
-
:linkedin_page => [ "Linked in url", "LinkedIn url", "LinkedIn", "LinkedIn address", "LinkedIn page" ],
|
26
|
-
:tags => [ "Tags" ],
|
27
|
-
:person_type => [ "Person Type" ]
|
28
|
-
}
|
29
|
-
|
30
|
-
# Enumerated columns default to the last value if the data value is not valid.
|
31
|
-
#
|
32
|
-
# With the way the current code is using instance_variable_get, columns that use an enumeration
|
33
|
-
# cannot accept multiple column names. We can only have one column name map to person_type
|
34
|
-
ENUMERATIONS = {
|
35
|
-
:person_type => [ "Individual", "Corporation", "Foundation", "Government", "Other" ]
|
36
|
-
}
|
37
|
-
|
38
|
-
def initialize(headers, row)
|
39
|
-
@headers = headers
|
40
|
-
@row = row
|
41
|
-
|
42
|
-
FIELDS.each do |field, columns|
|
43
|
-
columns.each do |column|
|
44
|
-
load_value field, column
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
def load_value(field, column)
|
50
|
-
index = @headers.index { |h| h.to_s.downcase.strip == column.downcase }
|
51
|
-
value = @row[index] if index
|
52
|
-
exist = self.instance_variable_get("@#{field}")
|
53
|
-
|
54
|
-
if exist.blank?
|
55
|
-
value = check_enumeration(field, value)
|
56
|
-
|
57
|
-
self.instance_variable_set("@#{field}", value)
|
58
|
-
self.class.class_eval { attr_reader field }
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
def tags_list
|
63
|
-
@tags.to_s.strip.gsub(/\s+/, "-").split(/[,|]+/)
|
64
|
-
end
|
65
|
-
|
66
|
-
def check_enumeration(field, value)
|
67
|
-
if enum = ENUMERATIONS[field]
|
68
|
-
if index = enum.map(&:downcase).index(value.to_s.downcase)
|
69
|
-
enum[index]
|
70
|
-
else
|
71
|
-
enum.last
|
72
|
-
end
|
73
|
-
else
|
74
|
-
value
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
.row
|
2
|
-
|
3
|
-
.span4
|
4
|
-
%h3 Import Failed
|
5
|
-
|
6
|
-
%p This import was created at: <br> #{l import.created_at}
|
7
|
-
|
8
|
-
%p= link_to "Delete this import", import_path(import), :data => {:confirm => "Are you sure you want to delete this import?"}, :method => :delete, :class => "btn"
|
9
|
-
%p= link_to "Back to imports/exports", imports_path, :class => "btn"
|
10
|
-
|
11
|
-
.span8
|
12
|
-
|
13
|
-
%h3 There was an error during import
|
14
|
-
|
15
|
-
%ul
|
16
|
-
- @import.import_errors.each do |error|
|
17
|
-
%li
|
18
|
-
%h4= error.error_message
|
19
|
-
- if error.row_data
|
20
|
-
%p= error.row_data.inspect
|
@@ -1,35 +0,0 @@
|
|
1
|
-
.row
|
2
|
-
|
3
|
-
.span3
|
4
|
-
%h3 Validate Contacts
|
5
|
-
|
6
|
-
%p This import was created at: <br> #{l import.created_at}
|
7
|
-
%p #{pluralize @import.rows.count, "contact"} found in this import file
|
8
|
-
|
9
|
-
.btn-group
|
10
|
-
= link_to "Approve", approve_import_path(import), :data => {:confirm => "Are you sure you want to approve this import?"}, :class => "btn"
|
11
|
-
= link_to "Delete", import_path(import), :data => {:confirm => "Are you sure you want to delete this import?"}, :method => :delete, :class => "btn"
|
12
|
-
= link_to "Back", imports_path, :class => "btn"
|
13
|
-
|
14
|
-
.span9
|
15
|
-
%h3 Viewing contacts #{@offset + 1} through #{[ import.rows.count, @offset + @length ].min}
|
16
|
-
|
17
|
-
.page-controller= import_page_controller import, @offset, @length
|
18
|
-
|
19
|
-
%table.example-contact.table
|
20
|
-
|
21
|
-
%thead
|
22
|
-
|
23
|
-
%th
|
24
|
-
- @length.times do |i|
|
25
|
-
- if import.rows[@offset + i]
|
26
|
-
%th= @offset + i + 1
|
27
|
-
|
28
|
-
- import.headers.each_with_index do |field, index|
|
29
|
-
|
30
|
-
%tr
|
31
|
-
|
32
|
-
%td.field= field.capitalize
|
33
|
-
|
34
|
-
- import.rows[@offset, @length].each do |row|
|
35
|
-
%td.value= row[index]
|
@@ -1,160 +0,0 @@
|
|
1
|
-
<!doctype html>
|
2
|
-
<!--[if lt IE 7 ]> <html class="no-js ie6 ie" lang="en"> <![endif]-->
|
3
|
-
<!--[if IE 7 ]> <html class="no-js ie7 ie" lang="en"> <![endif]-->
|
4
|
-
<!--[if IE 8 ]> <html class="no-js ie8 ie" lang="en"> <![endif]-->
|
5
|
-
<head>
|
6
|
-
<meta charset="utf-8">
|
7
|
-
<!--[if lt IE 9]>
|
8
|
-
<script src="https://html5shim.googlecode.com/svn/trunk/html5.js"></script>
|
9
|
-
<![endif]-->
|
10
|
-
<title>Artfully</title>
|
11
|
-
<meta name="description" content="Artfully is cloud-based business software built for individual artists and arts organizations.">
|
12
|
-
<meta name="author" content="Fractured Atlas">
|
13
|
-
|
14
|
-
<!-- Mobile viewport optimized: j.mp/bplateviewport -->
|
15
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
16
|
-
|
17
|
-
<!-- Place favicon.ico & apple-touch-icon.png in the root of your domain and delete these references -->
|
18
|
-
<link rel="shortcut icon" href="/favicon.ico">
|
19
|
-
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
20
|
-
|
21
|
-
<!-- CSS: implied media="all" -->
|
22
|
-
<%= stylesheet_link_tag :splash %>
|
23
|
-
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway:100" type="text/css" />
|
24
|
-
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Arimo:regular,italic,bold" type="text/css" />
|
25
|
-
|
26
|
-
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
|
27
|
-
</head>
|
28
|
-
|
29
|
-
<body>
|
30
|
-
|
31
|
-
<header>
|
32
|
-
<div class="container_12">
|
33
|
-
<div class="title grid_6">
|
34
|
-
<h1>
|
35
|
-
<span class="logo">Artfully</span>
|
36
|
-
</h1>
|
37
|
-
</div>
|
38
|
-
<div class="grid_6">
|
39
|
-
<nav>
|
40
|
-
<p>Already a member?</p>
|
41
|
-
<a href="<%= new_user_session_path %>" title="Log in to Artfully"> <i></i>Log In</a>
|
42
|
-
</nav>
|
43
|
-
</div>
|
44
|
-
</div>
|
45
|
-
</header>
|
46
|
-
|
47
|
-
<div class="content">
|
48
|
-
|
49
|
-
<div class="introduction container_12">
|
50
|
-
<section class="grid_6">
|
51
|
-
<h2>Ready to Work Artful.ly?</h2>
|
52
|
-
<p>Artful.ly is an online system to manage your tickets, donations, and contacts. It’s a simple way to keep track of events, people, and your everyday work.</p>
|
53
|
-
<p>Artful.ly is a project of <a href="http://www.fracturedatlas.org">Fractured Atlas</a>, an organization serving over 18,000 artists across the nation. We’ve used your insights to create a ticketing and contact management system tailored to your needs. Manage the essentials of your arts business in one place!</p>
|
54
|
-
<ul class="features-list">
|
55
|
-
<li class="features-tickets grid_3 alpha">Sell tickets</li>
|
56
|
-
<li class="features-sales grid_3 omega">Keep track of your sales</li>
|
57
|
-
<li class="features-donations grid_3 alpha">Take donations</li>
|
58
|
-
<li class="features-patrons grid_3 omega">Manage patron records</li>
|
59
|
-
</ul>
|
60
|
-
</section>
|
61
|
-
<section class="grid_6">
|
62
|
-
<div class="monitor"></div>
|
63
|
-
</section>
|
64
|
-
</div>
|
65
|
-
|
66
|
-
<div class="box container_12">
|
67
|
-
<div class="box-top"></div>
|
68
|
-
<section class="grid_12">
|
69
|
-
<h2>Take a Peek</h2>
|
70
|
-
<ul class="screenshots">
|
71
|
-
<li class="grid_3 alpha">
|
72
|
-
<a href="<%= image_path("screenshot-events2.png") %>" title="Create events, shows and seating charts" class="thumbnail modal">
|
73
|
-
<%= image_tag("thumbnail-events.png") %>Create Events + Seating Charts
|
74
|
-
</a>
|
75
|
-
</li>
|
76
|
-
<li class="grid_3">
|
77
|
-
<a href="<%= image_path("screenshot-people.png") %>" title="Your patron records have never been more organized" class="thumbnail modal">
|
78
|
-
<%= image_tag("thumbnail-crm.png") %>Built in CRM for patrons
|
79
|
-
</a>
|
80
|
-
</li>
|
81
|
-
<li class="grid_3">
|
82
|
-
<a href="<%= image_path("screenshot-navigation.png") %>" title="Intuitive navigation and design" class="thumbnail modal">
|
83
|
-
<%= image_tag("thumbnail-intuitive.png") %>Intuitive navigation and design
|
84
|
-
</a>
|
85
|
-
</li>
|
86
|
-
<li class="grid_3 omega">
|
87
|
-
<a href="<%= image_path("screenshot-orders.png") %>" title="View ticket sales" class="thumbnail modal">
|
88
|
-
<%= image_tag("thumbnail-sales.png") %>View ticket sales
|
89
|
-
</a>
|
90
|
-
</li>
|
91
|
-
</ul>
|
92
|
-
</section>
|
93
|
-
<form action="http://fracturedatlas.us1.list-manage.com/subscribe/post?u=0454e774224b3cc25494dab27&id=3ba751346f" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank">
|
94
|
-
<section class="form">
|
95
|
-
<h2>Get Notified</h2>
|
96
|
-
<div class="grid_6">
|
97
|
-
<label for="mce-EMAIL">Email Address <strong class="note-required">*</strong></label>
|
98
|
-
<input type="text" value="" name="EMAIL" class="required email" id="mce-EMAIL">
|
99
|
-
</div>
|
100
|
-
<div class="grid_3">
|
101
|
-
<label for="mce-FNAME">First Name </label>
|
102
|
-
<input type="text" value="" name="FNAME" class="" id="mce-FNAME">
|
103
|
-
</div>
|
104
|
-
<div class="grid_3">
|
105
|
-
<label for="mce-LNAME">Last Name </label>
|
106
|
-
<input type="text" value="" name="LNAME" class="" id="mce-LNAME">
|
107
|
-
</div>
|
108
|
-
<div class="grid_3">
|
109
|
-
<label for="mce-MMERGE3">State </label>
|
110
|
-
<input type="text" value="" name="MMERGE3" class="" id="mce-MMERGE3">
|
111
|
-
</div>
|
112
|
-
<div class="grid_3">
|
113
|
-
<label for="mce-MMERGE5">Country </label>
|
114
|
-
<input type="text" value="" name="MMERGE5" class="" id="mce-MMERGE5">
|
115
|
-
</div>
|
116
|
-
<div class="grid_6">
|
117
|
-
<label class="input-group-label">I have a ticketed event happening before Dec 2011 </label>
|
118
|
-
<div class="input-group">
|
119
|
-
<ul>
|
120
|
-
<li style="float: left; margin-right: 10px">
|
121
|
-
<input type="radio" value="yes" name="MMERGE4" id="mce-MMERGE4-0" style="display: inline"/>
|
122
|
-
<label for="mce-MMERGE4-0" style="display: inline">yes</label>
|
123
|
-
</li>
|
124
|
-
<li style="float: left">
|
125
|
-
<input type="radio" value="no" name="MMERGE4" id="mce-MMERGE4-1" style="display: inline"/>
|
126
|
-
<label for="mce-MMERGE4-1" style="display: inline">no</label>
|
127
|
-
</li>
|
128
|
-
</ul>
|
129
|
-
</div>
|
130
|
-
</div>
|
131
|
-
</section>
|
132
|
-
<section class="drawer grid_12">
|
133
|
-
<div id="show-form">
|
134
|
-
<a class="button-sign-up button"><i></i>Sign up for an account invitation!</a>
|
135
|
-
</div>
|
136
|
-
<div id="hide-form">
|
137
|
-
<input type="submit" class="button-submit button btn" value="Sign up for notifications" />
|
138
|
-
<span class="button-hide-form">
|
139
|
-
<a class="button"><i></i>No Thanks</a>
|
140
|
-
</span>
|
141
|
-
</div>
|
142
|
-
<div id="mce-success-response">
|
143
|
-
<p>Subscribing...</p>
|
144
|
-
</div>
|
145
|
-
</section>
|
146
|
-
</form>
|
147
|
-
</div>
|
148
|
-
|
149
|
-
</div>
|
150
|
-
|
151
|
-
<footer class="container_12">
|
152
|
-
<div class="grid_12">
|
153
|
-
<p> </p>
|
154
|
-
</div>
|
155
|
-
<div class="ticket"></div>
|
156
|
-
</footer>
|
157
|
-
|
158
|
-
<%= javascript_include_tag :splash %>
|
159
|
-
</body>
|
160
|
-
</html>
|
@@ -1,20 +0,0 @@
|
|
1
|
-
- in_section :people
|
2
|
-
- content_for :header do
|
3
|
-
%h1 New List Segment
|
4
|
-
|
5
|
-
= render "shared/error_messages", :target => @segment
|
6
|
-
.row
|
7
|
-
.span4
|
8
|
-
= form_for(@segment) do |form|
|
9
|
-
= form.hidden_field :terms
|
10
|
-
= form.text_field :name, :placeholder => "Name your list segment..."
|
11
|
-
%br
|
12
|
-
= form.submit "Create", :class => "btn"
|
13
|
-
.span8
|
14
|
-
#list-segment
|
15
|
-
%ul.people-list
|
16
|
-
- @segment.people.each do |person|
|
17
|
-
%li
|
18
|
-
= hidden_field_tag "people[]", person.id, :id => nil
|
19
|
-
.name= link_to "#{person.first_name} #{person.last_name}", person_url(person)
|
20
|
-
.email= person.email
|