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.
Files changed (326) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +661 -0
  3. data/app/assets/fonts/FontAwesome.otf +0 -0
  4. data/app/assets/fonts/fontawesome-webfont.eot +0 -0
  5. data/app/assets/fonts/fontawesome-webfont.svg +284 -0
  6. data/app/assets/fonts/fontawesome-webfont.ttf +0 -0
  7. data/app/assets/fonts/fontawesome-webfont.woff +0 -0
  8. data/app/assets/images/chosen-sprite.png +0 -0
  9. data/app/assets/javascripts/application.js +88 -44
  10. data/app/assets/javascripts/box-office.js +7 -3
  11. data/app/assets/javascripts/custom/grouped-form.js +1 -1
  12. data/app/assets/javascripts/custom/modernizr.custom.12828.js +4 -0
  13. data/app/assets/javascripts/custom/people.js +30 -1
  14. data/app/assets/javascripts/jquery-lib/chosen.jquery.js +1026 -0
  15. data/app/assets/javascripts/jquery-lib/jquery.jeditable.js +1 -1
  16. data/app/assets/javascripts/jquery-lib/jquery.mask-money.js +90 -60
  17. data/app/assets/javascripts/store/store.js +112 -67
  18. data/app/assets/stylesheets/application.sass +174 -1
  19. data/app/assets/stylesheets/bootstrap-overrides.css +51 -13
  20. data/app/assets/stylesheets/bootstrap.css +4 -379
  21. data/app/assets/stylesheets/font-awesome.sass +759 -0
  22. data/app/assets/stylesheets/jquery/chosen.scss +397 -0
  23. data/app/assets/stylesheets/printing.css +5 -1
  24. data/app/assets/stylesheets/sass/store.sass +18 -3
  25. data/app/concerns/itemable.rb +11 -0
  26. data/app/concerns/oh_noes.rb +24 -0
  27. data/app/controllers/actions_controller.rb +39 -20
  28. data/app/controllers/addresses_controller.rb +2 -2
  29. data/app/controllers/artfully_ose_controller.rb +15 -1
  30. data/app/controllers/charts_controller.rb +6 -2
  31. data/app/controllers/contributions_controller.rb +28 -1
  32. data/app/controllers/discounts_controller.rb +65 -0
  33. data/app/controllers/discounts_reports_controller.rb +22 -0
  34. data/app/controllers/events_controller.rb +48 -45
  35. data/app/controllers/exchanges_controller.rb +10 -10
  36. data/app/controllers/imports_controller.rb +38 -20
  37. data/app/controllers/index_controller.rb +1 -1
  38. data/app/controllers/memberships_controller.rb +1 -0
  39. data/app/controllers/merges_controller.rb +1 -1
  40. data/app/controllers/orders_controller.rb +6 -12
  41. data/app/controllers/organizations_controller.rb +0 -1
  42. data/app/controllers/people_controller.rb +10 -12
  43. data/app/controllers/refunds_controller.rb +2 -2
  44. data/app/controllers/returns_controller.rb +0 -1
  45. data/app/controllers/sales_controller.rb +9 -6
  46. data/app/controllers/searches_controller.rb +53 -0
  47. data/app/controllers/sections_controller.rb +12 -1
  48. data/app/controllers/segments_controller.rb +23 -10
  49. data/app/controllers/shows_controller.rb +37 -28
  50. data/app/controllers/slices_controller.rb +37 -0
  51. data/app/controllers/statements_controller.rb +4 -4
  52. data/app/controllers/store/checkouts_controller.rb +14 -12
  53. data/app/controllers/store/events_controller.rb +1 -1
  54. data/app/controllers/store/orders_controller.rb +32 -5
  55. data/app/controllers/store/store_controller.rb +4 -0
  56. data/app/controllers/venues_controller.rb +6 -2
  57. data/app/helpers/artfully_ose_helper.rb +31 -5
  58. data/app/helpers/discounts_helper.rb +3 -0
  59. data/app/helpers/people_helper.rb +2 -19
  60. data/app/mailers/order_mailer.rb +21 -3
  61. data/app/mailers/producer_mailer.rb +9 -1
  62. data/app/mailers/reports_mailer.rb +12 -0
  63. data/app/models/action.rb +29 -3
  64. data/app/models/actions/get_action.rb +4 -0
  65. data/app/models/actions/go_action.rb +18 -0
  66. data/app/models/actions/refund_action.rb +14 -0
  67. data/app/models/address.rb +6 -16
  68. data/app/models/adjustments.rb +10 -0
  69. data/app/models/box_office.rb +1 -1
  70. data/app/models/carts/cart.rb +35 -24
  71. data/app/models/chart.rb +16 -8
  72. data/app/models/checkout.rb +32 -9
  73. data/app/models/comp.rb +2 -8
  74. data/app/models/contribution.rb +111 -25
  75. data/app/models/daily_donation_report.rb +45 -0
  76. data/app/models/daily_ticket_report.rb +51 -0
  77. data/app/models/discount.rb +137 -0
  78. data/app/models/discounts/buy_one_get_one_free_discount_type.rb +20 -0
  79. data/app/models/discounts/discount_type.rb +66 -0
  80. data/app/models/discounts/dollars_off_tickets_discount_type.rb +32 -0
  81. data/app/models/discounts/percentage_off_tickets_discount_type.rb +25 -0
  82. data/app/models/discounts_report.rb +87 -0
  83. data/app/models/donation.rb +2 -0
  84. data/app/models/door_list.rb +5 -4
  85. data/app/models/event.rb +45 -16
  86. data/app/models/exchange.rb +26 -15
  87. data/app/models/ext/delayed_indexing.rb +24 -0
  88. data/app/models/ext/due.rb +7 -0
  89. data/app/models/ext/ext.rb +37 -0
  90. data/app/models/ext/integrations.rb +30 -0
  91. data/app/models/ext/resellable.rb +8 -1
  92. data/app/models/gateway_transaction.rb +47 -0
  93. data/app/models/import.rb +83 -101
  94. data/app/models/import_error.rb +1 -1
  95. data/app/models/import_row.rb +1 -1
  96. data/app/models/imports/donations_import.rb +103 -0
  97. data/app/models/imports/events_import.rb +207 -0
  98. data/app/models/imports/people_import.rb +41 -0
  99. data/app/models/imports/processing.rb +53 -0
  100. data/app/models/imports/rollback.rb +11 -0
  101. data/app/models/imports/status.rb +48 -0
  102. data/app/models/imports/validations.rb +31 -0
  103. data/app/models/item.rb +112 -29
  104. data/app/models/job/action_job.rb +29 -0
  105. data/app/models/job/daily_email_report_job.rb +11 -0
  106. data/app/models/job/tag_job.rb +15 -0
  107. data/app/models/kit.rb +14 -6
  108. data/app/models/kits/mailchimp_kit.rb +448 -0
  109. data/app/models/kits/reseller_kit.rb +2 -2
  110. data/app/models/kits/sponsored_donation_kit.rb +2 -2
  111. data/app/models/orders/application_order.rb +3 -1
  112. data/app/models/orders/comp_order.rb +15 -2
  113. data/app/models/orders/exchange_order.rb +8 -0
  114. data/app/models/orders/imported_order.rb +7 -0
  115. data/app/models/orders/order.rb +164 -51
  116. data/app/models/orders/refund_order.rb +14 -1
  117. data/app/models/orders/unrefundable.rb +5 -0
  118. data/app/models/orders/web_order.rb +1 -1
  119. data/app/models/organization.rb +38 -7
  120. data/app/models/parsed_row.rb +167 -0
  121. data/app/models/payments/comp_payment.rb +10 -1
  122. data/app/models/payments/credit_card_payment.rb +63 -10
  123. data/app/models/payments/payment.rb +28 -0
  124. data/app/models/person.rb +115 -43
  125. data/app/models/refund.rb +28 -28
  126. data/app/models/return.rb +2 -0
  127. data/app/models/sale.rb +8 -5
  128. data/app/models/search.rb +117 -0
  129. data/app/models/section.rb +18 -0
  130. data/app/models/segment.rb +14 -4
  131. data/app/models/show.rb +14 -4
  132. data/app/models/slices.rb +82 -0
  133. data/app/models/statement.rb +170 -3
  134. data/app/models/temp_discount.rb +14 -0
  135. data/app/models/ticket.rb +42 -134
  136. data/app/models/ticket/pricing.rb +45 -0
  137. data/app/models/ticket/reports.rb +10 -7
  138. data/app/models/ticket/sale_transitions.rb +44 -0
  139. data/app/models/ticket/transfers.rb +50 -0
  140. data/app/models/user.rb +10 -2
  141. data/app/models/valuation/lifetime_donations.rb +35 -0
  142. data/app/models/venue.rb +12 -1
  143. data/app/presenters/event_presenter.rb +41 -0
  144. data/app/views/actions/_list.html.haml +1 -2
  145. data/app/views/actions/new.html.haml +1 -1
  146. data/app/views/contributions/_form.html.haml +40 -0
  147. data/app/views/contributions/_sidebar.html.haml +12 -0
  148. data/app/views/contributions/edit.html.haml +11 -0
  149. data/app/views/contributions/index.html.haml +2 -2
  150. data/app/views/contributions/new.html.haml +5 -35
  151. data/app/views/discounts/_discount_section_fields.html.haml +25 -0
  152. data/app/views/discounts/_form.html.haml +95 -0
  153. data/app/views/discounts/edit.html.haml +16 -0
  154. data/app/views/discounts/index.html.haml +33 -0
  155. data/app/views/discounts/new.html.haml +16 -0
  156. data/app/views/discounts_reports/index.html.haml +76 -0
  157. data/app/views/events/_discount_section_fields.html.haml +25 -0
  158. data/app/views/events/_glance.html.haml +4 -1
  159. data/app/views/events/_list.html.haml +2 -4
  160. data/app/views/events/_menu.html.haml +3 -3
  161. data/app/views/events/_section_fields.html.haml +32 -15
  162. data/app/views/events/_share_and_sell.haml +2 -1
  163. data/app/views/events/edit.html.haml +7 -6
  164. data/app/views/events/image.html.haml +1 -0
  165. data/app/views/events/index.html.haml +3 -1
  166. data/app/views/events/messages.html.haml +1 -0
  167. data/app/views/events/prices.html.haml +2 -1
  168. data/app/views/events/resell.html.haml +1 -1
  169. data/app/views/events/show.html.haml +25 -1
  170. data/app/views/events/storefront_link.html.haml +1 -1
  171. data/app/views/events/temp_discount_form.html.haml +108 -0
  172. data/app/views/events/temp_discounts_index.html.haml +38 -0
  173. data/app/views/events/widget.html.haml +14 -1
  174. data/app/views/exchanges/new.html.haml +50 -73
  175. data/app/views/imports/{_imported.html.haml → donations/_approved.html.haml} +2 -5
  176. data/app/views/imports/donations/_caching.html.haml +17 -0
  177. data/app/views/imports/donations/_failed.html.haml +5 -0
  178. data/app/views/imports/donations/_imported.html.haml +9 -0
  179. data/app/views/imports/donations/_importing.html.haml +12 -0
  180. data/app/views/imports/donations/_invalid.html.haml +5 -0
  181. data/app/views/imports/donations/_new.html.haml +99 -0
  182. data/app/views/imports/donations/_pending.html.haml +41 -0
  183. data/app/views/imports/events/_approved.html.haml +10 -0
  184. data/app/views/imports/events/_caching.html.haml +17 -0
  185. data/app/views/imports/events/_failed.html.haml +5 -0
  186. data/app/views/imports/events/_imported.html.haml +9 -0
  187. data/app/views/imports/events/_importing.html.haml +12 -0
  188. data/app/views/imports/events/_invalid.html.haml +5 -0
  189. data/app/views/imports/events/_new.html.haml +95 -0
  190. data/app/views/imports/events/_pending.html.haml +35 -0
  191. data/app/views/imports/index.html.haml +41 -18
  192. data/app/views/imports/new.html.haml +1 -93
  193. data/app/views/imports/{_approved.html.haml → people/_approved.html.haml} +0 -1
  194. data/app/views/imports/{_caching.html.haml → people/_caching.html.haml} +0 -0
  195. data/app/views/imports/people/_failed.html.haml +5 -0
  196. data/app/views/imports/people/_imported.html.haml +25 -0
  197. data/app/views/imports/{_importing.html.haml → people/_importing.html.haml} +1 -2
  198. data/app/views/imports/people/_invalid.html.haml +5 -0
  199. data/app/views/imports/people/_new.html.haml +120 -0
  200. data/app/views/imports/people/_pending.html.haml +39 -0
  201. data/app/views/imports/shared/_date_format.html.haml +14 -0
  202. data/app/views/imports/shared/_failed.html.haml +18 -0
  203. data/app/views/imports/shared/_inspect_modal.html.haml +11 -0
  204. data/app/views/imports/shared/_invalid.html.haml +18 -0
  205. data/app/views/imports/shared/_knowledge_base.haml +2 -0
  206. data/app/views/imports/shared/_sidebar.html.haml +5 -0
  207. data/app/views/imports/show.html.haml +2 -2
  208. data/app/views/index/dashboard.html.haml +4 -2
  209. data/app/views/layouts/_custom_css_includes.haml +0 -0
  210. data/app/views/layouts/_custom_js_includes.haml +0 -0
  211. data/app/views/layouts/_google_analytics.html.haml +3 -3
  212. data/app/views/layouts/_menu.html.haml +6 -2
  213. data/app/views/layouts/application.html.haml +4 -0
  214. data/app/views/layouts/{devise.html.haml → devise_layout.html.haml} +0 -0
  215. data/app/views/order_mailer/confirmation_for.html.haml +3 -2
  216. data/app/views/order_mailer/confirmation_for.text.haml +3 -2
  217. data/app/views/orders/_grouped_form_help.haml +4 -0
  218. data/app/views/orders/_item_table.haml +15 -4
  219. data/app/views/orders/_order_sidebar.html.haml +27 -6
  220. data/app/views/orders/index.html.haml +1 -12
  221. data/app/views/orders/show.html.haml +1 -1
  222. data/app/views/organizations/_form.html.haml +20 -6
  223. data/app/views/organizations/edit.html.haml +2 -1
  224. data/app/views/organizations/new.html.haml +1 -0
  225. data/app/views/organizations/show.html.haml +7 -1
  226. data/app/views/people/_form.html.haml +5 -2
  227. data/app/views/people/_key_relationships.html.haml +1 -1
  228. data/app/views/people/_list.html.haml +1 -12
  229. data/app/views/people/_person_summary_sidebar.html.haml +82 -50
  230. data/app/views/people/_relationship_table_row.html.haml +1 -1
  231. data/app/views/people/edit.html.haml +3 -1
  232. data/app/views/people/index.html.haml +7 -1
  233. data/app/views/people/new.html.haml +2 -0
  234. data/app/views/people/show.html.haml +2 -0
  235. data/app/views/refunds/new.html.haml +4 -6
  236. data/app/views/reports_mailer/daily.html.haml +67 -0
  237. data/app/views/reports_mailer/daily.text.erb +16 -0
  238. data/app/views/sales/new.html.haml +5 -20
  239. data/app/views/searches/_form.html.haml +43 -0
  240. data/app/views/searches/_person.html.haml +7 -0
  241. data/app/views/searches/new.html.haml +10 -0
  242. data/app/views/searches/show.html.haml +64 -0
  243. data/app/views/sections/edit.html.haml +12 -0
  244. data/app/views/segments/index.html.haml +8 -4
  245. data/app/views/segments/show.html.haml +39 -5
  246. data/app/views/shared/_door_list_table.haml +24 -0
  247. data/app/views/shared/_event_image_icon.html.haml +1 -1
  248. data/app/views/shared/_preload_assets.html.haml +2 -0
  249. data/app/views/shared/_tags.html.haml +3 -2
  250. data/app/views/shows/_glance.html.haml +8 -2
  251. data/app/views/shows/_ticket_table.html.haml +17 -10
  252. data/app/views/shows/_upcoming.html.haml +1 -1
  253. data/app/views/shows/door_list.html.haml +2 -24
  254. data/app/views/shows/index.html.haml +3 -3
  255. data/app/views/shows/new.html.haml +2 -2
  256. data/app/views/shows/show.html.haml +1 -1
  257. data/app/views/slices/_data.json +50 -0
  258. data/app/views/slices/index.html.haml +58 -0
  259. data/app/views/statements/_discounts_table.html.haml +26 -0
  260. data/app/views/statements/_order_location_table.html.haml +20 -0
  261. data/app/views/statements/_payment_method_table.haml +20 -0
  262. data/app/views/statements/{_played_shows.html.haml → _shows.html.haml} +3 -3
  263. data/app/views/statements/_ticket_type_table.haml +20 -0
  264. data/app/views/statements/_top_stats.haml +12 -0
  265. data/app/views/statements/show.html.haml +24 -32
  266. data/app/views/store/events/_show.html.haml +11 -5
  267. data/app/views/store/events/show.html.haml +24 -5
  268. data/app/views/users/registrations/edit.html.erb +1 -1
  269. data/app/views/venues/edit.html.haml +1 -0
  270. data/config/artfully.yml.sample +3 -0
  271. data/config/initializers/active_model_serializer.rb +3 -0
  272. data/config/initializers/braintree_error_mapping.rb +5 -0
  273. data/config/initializers/devise.rb +1 -1
  274. data/config/locales/en.yml +1 -0
  275. data/config/routes.rb +31 -8
  276. data/db/migrate/0000_set_up_artfully.rb +9 -11
  277. data/db/migrate/20120809212802_add_do_not_email_to_people.rb +5 -0
  278. data/db/migrate/20120831200120_create_advanced_search.rb +30 -0
  279. data/db/migrate/20120926201927_add_email_to_organization.rb +5 -0
  280. data/db/migrate/20121001143351_add_import_id_orders_events.rb +6 -0
  281. data/db/migrate/20121006024736_add_import_to_actions.rb +5 -0
  282. data/db/migrate/20121011180654_add_type_to_imports.rb +14 -0
  283. data/db/migrate/20121024143846_create_discounts.rb +15 -0
  284. data/db/migrate/20121026131454_deleted_at_to_orders_items_actions.rb +7 -0
  285. data/db/migrate/20121026203948_add_initial_price_to_tickets.rb +5 -0
  286. data/db/migrate/20121029183949_change_initial_price_to_cart_price.rb +5 -0
  287. data/db/migrate/20121113144826_migrate_donation_types.rb +41 -0
  288. data/db/migrate/20121115020441_add_salutation_to_people.rb +5 -0
  289. data/db/migrate/20121130004314_add_visibility_to_sections.rb +6 -0
  290. data/db/migrate/20121205184343_add_discount_to_ticket.rb +6 -0
  291. data/db/migrate/20121206212835_add_discount_to_carts_and_items.rb +7 -0
  292. data/db/migrate/20121211193728_add_deleted_at_to_discounts.rb +5 -0
  293. data/db/migrate/20121212022026_add_uuid_to_show_and_event.rb +9 -0
  294. data/db/migrate/20121212023203_set_uuids.rb +11 -0
  295. data/db/migrate/20121217201422_add_minimum_ticket_count_to_discounts.rb +5 -0
  296. data/db/migrate/20121221154152_add_shows_and_sections_to_discounts.rb +5 -0
  297. data/db/migrate/20130103153946_make_shows_and_sections_habtm.rb +19 -0
  298. data/db/migrate/20130108213102_add_original_price_to_items.rb +10 -0
  299. data/db/migrate/20130111211929_convert_discounts_sections_to_array_of_strings.rb +14 -0
  300. data/db/migrate/20130114200128_add_discount_code_to_search.rb +5 -0
  301. data/db/migrate/20130114212408_add_limit_to_discounts.rb +5 -0
  302. data/db/migrate/20130116203331_add_title_to_person.rb +5 -0
  303. data/db/migrate/20130122143845_install_audited.rb +28 -0
  304. data/db/migrate/20130131024955_add_gateway_transactions.rb +13 -0
  305. data/db/migrate/20130301144159_add_receive_daily_sales_report_boolean_to_organizations.rb +5 -0
  306. data/db/migrate/20130306213416_add_subscribed_lists_to_people.rb +5 -0
  307. data/db/migrate/20130308193328_people_arent_dummies.rb +6 -0
  308. data/db/migrate/20130312173340_add_categories_to_events.rb +6 -0
  309. data/db/migrate/20130319110520_add_transaction_id_index.rb +6 -0
  310. data/db/migrate/20130320192827_add_index_to_notes.rb +8 -0
  311. data/db/migrate/20130324173939_add_index_to_import_rows.rb +5 -0
  312. data/db/migrate/20130325190110_add_indexes_to_actions.rb +9 -0
  313. data/db/migrate/20130326173653_add_lifetime_donations_to_people_and_searches.rb +9 -0
  314. data/lib/artfully_ose.rb +5 -1
  315. data/lib/artfully_ose/common_abilities.rb +6 -9
  316. data/lib/artfully_ose/engine.rb +19 -5
  317. data/lib/artfully_ose/version.rb +1 -1
  318. data/lib/email_validator.rb +6 -0
  319. metadata +442 -138
  320. data/MIT-LICENSE +0 -20
  321. data/app/controllers/pages_controller.rb +0 -29
  322. data/app/models/import_person.rb +0 -78
  323. data/app/views/imports/_failed.html.haml +0 -20
  324. data/app/views/imports/_pending.html.haml +0 -35
  325. data/app/views/index/splash.html.erb +0 -160
  326. data/app/views/segments/new.html.haml +0 -20
@@ -3,7 +3,6 @@
3
3
  %h3 Pending Contacts
4
4
 
5
5
  %p This import was created at: <br> #{l import.created_at}
6
- %p #{pluralize @import.rows.count, "contact"} found in this import file
7
6
 
8
7
  %p= link_to "Back to imports/exports", imports_path, :class => "btn"
9
8
 
@@ -0,0 +1,5 @@
1
+ .row
2
+ .span4
3
+ =render :partial => 'imports/shared/sidebar', :locals => {:import => import}
4
+ .span8
5
+ =render :partial => 'imports/shared/failed', :locals => {:import => import}
@@ -0,0 +1,25 @@
1
+ .row
2
+ .span4
3
+ %p This import was created at: <br> #{l import.created_at}
4
+ %p= link_to "Back to imports/exports", imports_path, :class => "btn"
5
+
6
+ .span8
7
+ .well
8
+ %h3 This file has been imported into Artful.ly.
9
+ %p #{pluralize @import.rows.count, "people"} were imported.
10
+
11
+ - unless @people.empty?
12
+ %table.table.table-bordered.table-striped
13
+ %tr
14
+ %th Email
15
+ %th First
16
+ %th Last
17
+ %th
18
+ - @people.each_with_index do |row, index|
19
+ %tr
20
+ %td=row.email
21
+ %td=row.first_name
22
+ %td=row.last_name
23
+ %td=icon_link_to "", person_path(row), 'icon-share-alt', '', ''
24
+
25
+ = will_paginate @people
@@ -4,10 +4,9 @@
4
4
  %h3 Importing Contacts
5
5
 
6
6
  %p This import was created at #{@import.created_at}
7
- %p #{pluralize @import.rows.count, "contact"} found in this import file
8
7
 
9
8
  %p= link_to "Back to imports/exports", imports_path, :class => "btn"
10
9
 
11
10
  .span8
12
11
 
13
- %h3 This file is currently being imported into Artful.ly.
12
+ %h3 This file is being imported into Artful.ly.
@@ -0,0 +1,5 @@
1
+ .row
2
+ .span4
3
+ =render :partial => 'imports/shared/sidebar', :locals => {:import => import}
4
+ .span8
5
+ =render :partial => 'imports/shared/invalid', :locals => {:import => import}
@@ -0,0 +1,120 @@
1
+ - in_section :imports
2
+ - content_for :header do
3
+ %h1 Import People
4
+
5
+ .row
6
+ .span3
7
+ %h2
8
+ %span.badge.badge-big.badge-info 1
9
+ Template
10
+ #{link_to 'Download an empty CSV file', template_imports_path(:type => "people")} with these headers already filled in.
11
+
12
+ .span6
13
+ %h2
14
+ %span.badge.badge-big.badge-info 2
15
+ Format
16
+ %h3 Please include one of the following
17
+ .bottom-room= render :partial => "imports/shared/knowledge_base"
18
+ %table.table.table-bordered.table-striped.docs
19
+ %tr
20
+ %td.field-slim First
21
+ %td The first name of the person
22
+ %tr
23
+ %td.field-slim Last
24
+ %td The last name of the person
25
+ %tr
26
+ %td.field-slim Email
27
+ %td The email address of the person
28
+
29
+ %h3 Optional Fields
30
+ %table.table.table-bordered.table-striped.docs
31
+ %tr
32
+ %td.field-slim Salutation
33
+ %td The person's salutation (Mr., Mrs., etc...)
34
+ %tr
35
+ %td.field-slim Title
36
+ %td The person's title
37
+ %tr
38
+ %td.field-slim Company
39
+ %td The person's company name
40
+ %tr
41
+ %td.field-slim Address1
42
+ %td First line of the person's address
43
+ %tr
44
+ %td.field-slim Address2
45
+ %td Second line of the person's address
46
+ %tr
47
+ %td.field-slim City
48
+ %td The person's city
49
+ %tr
50
+ %td.field-slim State
51
+ %td The person's state
52
+ %tr
53
+ %td.field-slim Zip
54
+ %td The person's zip code
55
+ %tr
56
+ %td.field-slim Country
57
+ %td The person's country
58
+ %tr
59
+ %td.field-slim Phone 1 type
60
+ %td Work, Home, Cell or Fax
61
+ %tr
62
+ %td.field-slim Phone 1
63
+ %td The person's first phone number
64
+ %tr
65
+ %td.field-slim Phone 2 type
66
+ %td Work, Home, Cell or Fax
67
+ %tr
68
+ %td.field-slim Phone 2
69
+ %td The person's second phone number
70
+ %tr
71
+ %td.field-slim Phone 3 type
72
+ %td Work, Home, Cell or Fax
73
+ %tr
74
+ %td.field-slim Phone 3
75
+ %td The person's third phone number
76
+ %tr
77
+ %td.field-slim Website
78
+ %td The person's website
79
+ %tr
80
+ %td.field-slim Twitter
81
+ %td The person's handle on Twitter
82
+ %tr
83
+ %td.field-slim Facebook
84
+ %td The person's web address on Facebook
85
+ %tr
86
+ %td.field-slim LinkedIn
87
+ %td The person's web address on LinkedIn
88
+ %tr
89
+ %td.field-slim Do Not Email
90
+ %td Indicate that this person is not to receive email communication from your organization. This is for your organization's internal use only. The person will still receive purchase and donation receipts from Artful.ly.
91
+ %tr
92
+ %td.field-slim Tags
93
+ %td
94
+ %span.label.label-success
95
+ Important!
96
+ &nbsp Tags you'd like to associate with this person, separated by vertical bars (e.g., "vip|board").
97
+ %tr
98
+ %td.field-slim Type
99
+ %td Individual, Corporation, Foundation, Government or Other
100
+
101
+ .span3
102
+ %h2
103
+ %span.badge.badge-big.badge-info 3
104
+ Upload
105
+ %p
106
+ Please only upload
107
+ %b Comma Separated Values (CSV)
108
+ files. We cannot process
109
+ %b XLS
110
+ or
111
+ %b XLSX
112
+ files.
113
+ %p
114
+ = render :partial => "shared/error_messages", :locals => { :target => @import }
115
+ = raw s3_http_upload_tag :key => "imports/#{UUID.new.generate}",
116
+ :content_type => "text/csv",
117
+ :redirect => new_import_url,
118
+ :acl => "public-read",
119
+ :max_filesize => 50.megabytes,
120
+ :submit_button => '<input type="hidden" value="people"/><div class="cancel-submit"><input id="import_submit" class="btn" name="commit" type="submit" value="Import"></div>'
@@ -0,0 +1,39 @@
1
+ .row
2
+ .span3
3
+ %p="#{pluralize(@import.import_rows.length, 'person')} in this import file."
4
+ %p This import was created at: <br> #{l import.created_at}
5
+ %p To discard this import and start over, click "Delete"
6
+ %p To pause this import and come back later, click "Back"
7
+
8
+ .btn-group
9
+ = icon_link_to "Back", new_import_path(:type => import.kind), 'icon-share-alt', 'btn', ''
10
+ = link_to "Delete", import_path(import), :data => {:confirm => "Are you sure you want to delete this import?"}, :method => :delete, :class => "btn btn-danger"
11
+
12
+ .span9
13
+ .well
14
+ .row-fluid
15
+ .span9
16
+ %h3 This import is pending your approval
17
+ Click "Approve" to import this data into Artful.ly
18
+ .span3
19
+ = link_to "Approve", approve_import_path(import), :data => {:confirm => "Are you sure you want to approve this import?"}, :class => "btn btn-success btn-large"
20
+
21
+ %table.table.table-bordered.table-striped
22
+ %tr
23
+ %th Email
24
+ %th First
25
+ %th Last
26
+ %th Company
27
+ %th Website
28
+ %th
29
+ - @parsed_rows.each_with_index do |row, index|
30
+ %tr
31
+ %td=row.email
32
+ %td=row.first
33
+ %td=row.last
34
+ %td=row.company
35
+ %td=row.website
36
+ %td
37
+ =icon_link_to("", "#row#{index}", ' icon-zoom-in', '', '', {'data-toggle' => 'modal'})
38
+ =render :partial => "imports/shared/inspect_modal", :locals => {:row => row, :index => index, :keys => ParsedRow::PEOPLE_FIELDS.keys}
39
+ = will_paginate @parsed_rows
@@ -0,0 +1,14 @@
1
+ %br
2
+ %br
3
+ %b DD-MMM-YY HH:MMpm
4
+ %br
5
+ (Example: 18-Apr-2012 10:59pm)
6
+ %br
7
+ This is the format you should use if you're building the file in Excel.
8
+ %br
9
+ %br
10
+ %b YYYY/MM/DD HH:MMpm
11
+ %br
12
+ (Example: 2012/04/18 5:30pm)
13
+ %br
14
+ %br
@@ -0,0 +1,18 @@
1
+ .well
2
+ .row-fluid
3
+ .span2
4
+ =icon_tag('184-warning@2x', {:alt => "Import error"})
5
+ .span10
6
+ %h3 The was an error during the import
7
+
8
+ %ul
9
+ %p
10
+ We had to stop the import because we found the following errors. No records have been imported. Please correct the errors and
11
+ =link_to "try your import", imports_path
12
+ again.
13
+
14
+ - import.import_errors.each do |error|
15
+ %li
16
+ %h4= error.error_message
17
+ - if error.row_data
18
+ %p= error.row_data.inspect
@@ -0,0 +1,11 @@
1
+ .modal{:id => "row#{index}"}
2
+ .modal-header
3
+ .close{'data-dismiss'=>'modal'} x
4
+ &nbsp;
5
+
6
+ .modal-body
7
+ %table.table.table-condensed
8
+ - keys.each do |field|
9
+ %tr
10
+ %td=field.to_s.humanize
11
+ %td=row.preview(field)
@@ -0,0 +1,18 @@
1
+ .well
2
+ .row-fluid
3
+ .span2
4
+ =icon_tag('184-warning@2x', {:alt => "Import error"})
5
+ .span10
6
+ %h3 We could not validate your file
7
+
8
+ %ul
9
+ %p
10
+ No records were imported because we found the following errors. Please correct them and
11
+ =link_to "try your import", imports_path
12
+ again.
13
+
14
+ - import.import_errors.each do |error|
15
+ %li
16
+ %h4= error.error_message
17
+ - if error.row_data
18
+ %p= error.row_data.inspect
@@ -0,0 +1,2 @@
1
+ Your CSV file must include all of the following required fields and use only the valid data options described below. For more help with importing please consult the
2
+ =link_to "Knowledge Base", "https://artfully.zendesk.com/entries/22368622-importing-and-exporting-data"
@@ -0,0 +1,5 @@
1
+ %p This import was created at: <br> #{l import.created_at_local_to_organization}
2
+
3
+ .btn-group
4
+ = icon_link_to "Back", new_import_path(:type => import.kind), 'icon-share-alt', 'btn', ''
5
+ = link_to "Delete", import_path(import), :data => {:confirm => "Are you sure you want to delete this import?"}, :method => :delete, :class => "btn btn-danger"
@@ -1,6 +1,6 @@
1
1
  - in_section :imports
2
2
 
3
3
  - content_for :header do
4
- %h1= t(".heading", :default => "Contact Import")
4
+ %h1= t(".heading", :default => "Imports")
5
5
 
6
- = render @import.status, :import => @import
6
+ = render :partial => "imports/#{@import.kind}/#{@import.status}", :locals => {:import => @import}
@@ -30,6 +30,7 @@
30
30
  .span10
31
31
  =link_to_person (action.person)
32
32
  =action.sentence
33
+ .muted="#{time_ago_in_words(action.occurred_at)} ago"
33
34
 
34
35
  .span8
35
36
  %section
@@ -39,6 +40,7 @@
39
40
 
40
41
  %h3 Events
41
42
  = render :partial => 'events/list', :locals => { :events => @events }
42
- - unless @events.blank?
43
- .pull-right
43
+ = link_to "Create New Event", new_event_path, :class => "btn btn-primary"
44
+ .pull-right
45
+ - unless @events.blank?
44
46
  =icon_link_to("View All Events", events_path, 'icon-arrow-right', 'btn', '')
File without changes
File without changes
@@ -1,8 +1,8 @@
1
- - if Rails.env.development? && !ArtfullyOse::Engine.config.google_analytics.account.blank?
1
+ - if Rails.env.production? && !Rails.application.config.google_analytics.account.blank?
2
2
  :javascript
3
3
  var _gaq = _gaq || [];
4
- _gaq.push(['_setAccount', '#{h ArtfullyOse::Engine.config.google_analytics.account}']);
5
- _gaq.push(['_setDomainName', '#{h ArtfullyOse::Engine.config.google_analytics.domain}']);
4
+ _gaq.push(['_setAccount', '#{h Rails.application.config.google_analytics.account}']);
5
+ _gaq.push(['_setDomainName', '#{h Rails.application.config.google_analytics.domain}']);
6
6
  _gaq.push(['_setAllowHash', false]);
7
7
  _gaq.push(['_setAllowLinker', true]);
8
8
  _gaq.push(['_trackPageview']);
@@ -1,7 +1,7 @@
1
1
  .navbar.navbar-fixed-top
2
2
  .navbar-inner
3
3
  .container
4
- .brand Artfully
4
+ .brand Artful.ly
5
5
  %ul.nav
6
6
  %li{ :class => "dropdown #{active?(:events)}" }
7
7
  = nav_dropdown "Events"
@@ -14,12 +14,16 @@
14
14
  %ul.dropdown-menu
15
15
  %li= link_to "New Contact", new_person_path
16
16
  %li= link_to "Search", people_path
17
+ %li= link_to "Advanced Search", new_search_path
17
18
  %li= link_to "List Segments", segments_path
19
+ %li= link_to "Import", new_import_path(:type => :people)
20
+ %li= link_to "Export", imports_path
18
21
 
19
22
  %li{ :class => "dropdown #{active?(:reports)}" }
20
23
  = nav_dropdown "Reports"
21
24
  %ul.dropdown-menu
22
25
  %li= link_to "Statements", statements_path
26
+ %li= link_to "Discounts", discounts_reports_path
23
27
  %li= link_to "Imports / Exports", imports_path
24
28
 
25
29
  %li{ :class => "dropdown #{active?(:transactions)}"}
@@ -36,5 +40,5 @@
36
40
  = nav_dropdown current_user.email
37
41
  %ul.dropdown-menu
38
42
  -if current_user.is_in_organization?
39
- %li= link_to "My Organization", organization_path(current_user.current_organization)
43
+ %li= link_to "Account Administration", organization_path(current_user.current_organization)
40
44
  %li= link_to "Sign Out", destroy_user_session_path
@@ -6,6 +6,7 @@
6
6
  = stylesheet_link_tag "bootstrap", :media => :all
7
7
  = stylesheet_link_tag "application"
8
8
  = stylesheet_link_tag :printing, :media => :print
9
+ = render 'layouts/custom_css_includes'
9
10
  = csrf_meta_tag
10
11
  = render :partial => 'layouts/google_analytics'
11
12
  %body
@@ -18,4 +19,7 @@
18
19
  = render 'layouts/footer'
19
20
 
20
21
  = javascript_include_tag 'application'
22
+ = render 'layouts/custom_js_includes'
21
23
  = yield :custom_js
24
+ = render :partial => "shared/preload_assets"
25
+ #footnotes_holder
@@ -2,12 +2,13 @@
2
2
 
3
3
  %p="Thank you for your order, #{@person.first_name} #{@person.last_name}!"
4
4
 
5
- %p="This is not a ticket. Please use your order number to check in at the event."
5
+ - unless @order.tickets.empty?
6
+ %p="This is not a ticket. Please use your order number to check in at the event."
6
7
 
7
8
  %p
8
9
  = "Order number: #{@order.id}"
9
10
  %br
10
- = "Purchase Date: #{l(@order.created_at)}"
11
+ = "Purchase Date: #{l(@order.created_at_local_to_organization)}"
11
12
  %br
12
13
  = "Order total: $#{format("%.2f", (@order.total/100.0))}"
13
14
  %br
@@ -2,10 +2,11 @@ Order confirmation
2
2
 
3
3
  ="Thank you for your order, #{@person.first_name} #{@person.last_name}!"
4
4
 
5
- ="This is not a ticket. Please use your order number to check in at the event"
5
+ - unless @order.tickets.empty?
6
+ ="This is not a ticket. Please use your order number to check in at the event"
6
7
 
7
8
  = "Order number: #{@order.id}"
8
- = "Purchase Date: #{l(@order.created_at)}"
9
+ = "Purchase Date: #{l(@order.created_at_local_to_organization)}"
9
10
  = "Order total: $#{format("%.2f", (@order.total/100.0))}"
10
11
  = "Payment method: #{@order.payment_method}"
11
12
  = "Service fee: $#{format("%.2f", (@order.service_fee.to_i/100.0))}"
@@ -0,0 +1,4 @@
1
+ #help.grouped-form
2
+ SHITTTTT
3
+ %h3 Help
4
+ %span.help{'data-title' => 'Publishing', 'data-content' => "Publishing a show means that your show is displayed on your storefront and all on sale tickets are available for purchase".html_safe} ?