solidus_core 1.0.0.pre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +26 -0
- data/app/assets/images/logo/solidus.png +0 -0
- data/app/assets/images/logo/solidus_logo.png +0 -0
- data/app/assets/images/noimage/large.png +0 -0
- data/app/assets/images/noimage/mini.png +0 -0
- data/app/assets/images/noimage/product.png +0 -0
- data/app/assets/images/noimage/small.png +0 -0
- data/app/assets/javascripts/spree.js.coffee.erb +61 -0
- data/app/controllers/spree/base_controller.rb +15 -0
- data/app/helpers/spree/base_helper.rb +210 -0
- data/app/helpers/spree/checkout_helper.rb +31 -0
- data/app/helpers/spree/orders_helper.rb +17 -0
- data/app/helpers/spree/products_helper.rb +82 -0
- data/app/helpers/spree/store_helper.rb +16 -0
- data/app/helpers/spree/taxons_helper.rb +19 -0
- data/app/mailers/spree/base_mailer.rb +23 -0
- data/app/mailers/spree/carton_mailer.rb +12 -0
- data/app/mailers/spree/order_mailer.rb +35 -0
- data/app/mailers/spree/reimbursement_mailer.rb +10 -0
- data/app/mailers/spree/test_mailer.rb +8 -0
- data/app/models/concerns/spree/adjustment_source.rb +24 -0
- data/app/models/concerns/spree/calculated_adjustments.rb +33 -0
- data/app/models/concerns/spree/default_price.rb +34 -0
- data/app/models/concerns/spree/display_money.rb +32 -0
- data/app/models/concerns/spree/named_type.rb +12 -0
- data/app/models/concerns/spree/user_address.rb +30 -0
- data/app/models/concerns/spree/user_api_authentication.rb +13 -0
- data/app/models/concerns/spree/user_payment_source.rb +19 -0
- data/app/models/concerns/spree/user_reporting.rb +22 -0
- data/app/models/spree/ability.rb +74 -0
- data/app/models/spree/address.rb +157 -0
- data/app/models/spree/adjustment.rb +143 -0
- data/app/models/spree/app_configuration.rb +253 -0
- data/app/models/spree/asset.rb +6 -0
- data/app/models/spree/base.rb +15 -0
- data/app/models/spree/billing_integration.rb +21 -0
- data/app/models/spree/calculator.rb +47 -0
- data/app/models/spree/calculator/default_tax.rb +67 -0
- data/app/models/spree/calculator/flat_percent_item_total.rb +22 -0
- data/app/models/spree/calculator/flat_rate.rb +20 -0
- data/app/models/spree/calculator/flexi_rate.rb +33 -0
- data/app/models/spree/calculator/free_shipping.rb +21 -0
- data/app/models/spree/calculator/percent_on_line_item.rb +15 -0
- data/app/models/spree/calculator/percent_per_item.rb +50 -0
- data/app/models/spree/calculator/price_sack.rb +29 -0
- data/app/models/spree/calculator/returns/default_refund_amount.rb +36 -0
- data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +22 -0
- data/app/models/spree/calculator/shipping/flat_rate.rb +18 -0
- data/app/models/spree/calculator/shipping/flexi_rate.rb +35 -0
- data/app/models/spree/calculator/shipping/per_item.rb +22 -0
- data/app/models/spree/calculator/shipping/price_sack.rb +28 -0
- data/app/models/spree/calculator/tiered_flat_rate.rb +37 -0
- data/app/models/spree/calculator/tiered_percent.rb +44 -0
- data/app/models/spree/carton.rb +57 -0
- data/app/models/spree/classification.rb +11 -0
- data/app/models/spree/country.rb +23 -0
- data/app/models/spree/credit_card.rb +197 -0
- data/app/models/spree/customer_return.rb +73 -0
- data/app/models/spree/exchange.rb +46 -0
- data/app/models/spree/gateway.rb +79 -0
- data/app/models/spree/gateway/bogus.rb +91 -0
- data/app/models/spree/gateway/bogus_simple.rb +26 -0
- data/app/models/spree/image.rb +44 -0
- data/app/models/spree/inventory_unit.rb +154 -0
- data/app/models/spree/item_adjustments.rb +85 -0
- data/app/models/spree/item_adjustments.rb.orig +93 -0
- data/app/models/spree/legacy_user.rb +38 -0
- data/app/models/spree/line_item.rb +183 -0
- data/app/models/spree/line_item_action.rb +6 -0
- data/app/models/spree/log_entry.rb +20 -0
- data/app/models/spree/option_type.rb +30 -0
- data/app/models/spree/option_value.rb +26 -0
- data/app/models/spree/option_values_variant.rb +6 -0
- data/app/models/spree/order.rb +811 -0
- data/app/models/spree/order/checkout.rb +351 -0
- data/app/models/spree/order/currency_updater.rb +40 -0
- data/app/models/spree/order/payments.rb +66 -0
- data/app/models/spree/order_cancellations.rb +72 -0
- data/app/models/spree/order_capturing.rb +49 -0
- data/app/models/spree/order_contents.rb +125 -0
- data/app/models/spree/order_inventory.rb +108 -0
- data/app/models/spree/order_mutex.rb +35 -0
- data/app/models/spree/order_promotion.rb +23 -0
- data/app/models/spree/order_shipping.rb +99 -0
- data/app/models/spree/order_stock_location.rb +15 -0
- data/app/models/spree/order_updater.rb +178 -0
- data/app/models/spree/payment.rb +292 -0
- data/app/models/spree/payment/processing.rb +210 -0
- data/app/models/spree/payment_capture_event.rb +9 -0
- data/app/models/spree/payment_method.rb +79 -0
- data/app/models/spree/payment_method/check.rb +31 -0
- data/app/models/spree/payment_method/store_credit.rb +127 -0
- data/app/models/spree/preference.rb +5 -0
- data/app/models/spree/preferences/configuration.rb +78 -0
- data/app/models/spree/preferences/preferable.rb +128 -0
- data/app/models/spree/preferences/preferable_class_methods.rb +64 -0
- data/app/models/spree/preferences/scoped_store.rb +33 -0
- data/app/models/spree/preferences/store.rb +93 -0
- data/app/models/spree/price.rb +62 -0
- data/app/models/spree/product.rb +347 -0
- data/app/models/spree/product/scopes.rb +262 -0
- data/app/models/spree/product_option_type.rb +7 -0
- data/app/models/spree/product_property.rb +25 -0
- data/app/models/spree/product_scope/scopes.rb +47 -0
- data/app/models/spree/promotion.rb +229 -0
- data/app/models/spree/promotion/actions/create_adjustment.rb +63 -0
- data/app/models/spree/promotion/actions/create_item_adjustments.rb +80 -0
- data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +129 -0
- data/app/models/spree/promotion/actions/free_shipping.rb +41 -0
- data/app/models/spree/promotion/rules/first_order.rb +37 -0
- data/app/models/spree/promotion/rules/item_total.rb +61 -0
- data/app/models/spree/promotion/rules/one_use_per_user.rb +24 -0
- data/app/models/spree/promotion/rules/option_value.rb +50 -0
- data/app/models/spree/promotion/rules/product.rb +64 -0
- data/app/models/spree/promotion/rules/taxon.rb +69 -0
- data/app/models/spree/promotion/rules/user.rb +30 -0
- data/app/models/spree/promotion/rules/user_logged_in.rb +18 -0
- data/app/models/spree/promotion_action.rb +23 -0
- data/app/models/spree/promotion_builder.rb +55 -0
- data/app/models/spree/promotion_category.rb +6 -0
- data/app/models/spree/promotion_chooser.rb +30 -0
- data/app/models/spree/promotion_code.rb +39 -0
- data/app/models/spree/promotion_code/code_builder.rb +62 -0
- data/app/models/spree/promotion_handler/cart.rb +65 -0
- data/app/models/spree/promotion_handler/coupon.rb +119 -0
- data/app/models/spree/promotion_handler/free_shipping.rb +43 -0
- data/app/models/spree/promotion_handler/page.rb +24 -0
- data/app/models/spree/promotion_rule.rb +44 -0
- data/app/models/spree/property.rb +20 -0
- data/app/models/spree/prototype.rb +9 -0
- data/app/models/spree/refund.rb +96 -0
- data/app/models/spree/refund_reason.rb +13 -0
- data/app/models/spree/reimbursement.rb +188 -0
- data/app/models/spree/reimbursement/credit.rb +25 -0
- data/app/models/spree/reimbursement/reimbursement_type_engine.rb +56 -0
- data/app/models/spree/reimbursement/reimbursement_type_validator.rb +15 -0
- data/app/models/spree/reimbursement_performer.rb +43 -0
- data/app/models/spree/reimbursement_tax_calculator.rb +38 -0
- data/app/models/spree/reimbursement_type.rb +16 -0
- data/app/models/spree/reimbursement_type/credit.rb +13 -0
- data/app/models/spree/reimbursement_type/exchange.rb +9 -0
- data/app/models/spree/reimbursement_type/original_payment.rb +13 -0
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +70 -0
- data/app/models/spree/reimbursement_type/store_credit.rb +27 -0
- data/app/models/spree/return_authorization.rb +108 -0
- data/app/models/spree/return_authorization_reason.rb +7 -0
- data/app/models/spree/return_item.rb +311 -0
- data/app/models/spree/return_item/eligibility_validator/base_validator.rb +24 -0
- data/app/models/spree/return_item/eligibility_validator/default.rb +30 -0
- data/app/models/spree/return_item/eligibility_validator/inventory_shipped.rb +16 -0
- data/app/models/spree/return_item/eligibility_validator/no_reimbursements.rb +17 -0
- data/app/models/spree/return_item/eligibility_validator/order_completed.rb +16 -0
- data/app/models/spree/return_item/eligibility_validator/rma_required.rb +17 -0
- data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +16 -0
- data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +34 -0
- data/app/models/spree/return_item/exchange_variant_eligibility/same_product.rb +9 -0
- data/app/models/spree/returns_calculator.rb +8 -0
- data/app/models/spree/role.rb +10 -0
- data/app/models/spree/role_user.rb +17 -0
- data/app/models/spree/shipment.rb +427 -0
- data/app/models/spree/shipping_calculator.rb +22 -0
- data/app/models/spree/shipping_category.rb +8 -0
- data/app/models/spree/shipping_manifest.rb +23 -0
- data/app/models/spree/shipping_method.rb +69 -0
- data/app/models/spree/shipping_method_category.rb +6 -0
- data/app/models/spree/shipping_rate.rb +57 -0
- data/app/models/spree/state.rb +30 -0
- data/app/models/spree/state_change.rb +15 -0
- data/app/models/spree/static_model_preferences.rb +32 -0
- data/app/models/spree/stock/adjuster.rb +28 -0
- data/app/models/spree/stock/availability_validator.rb +35 -0
- data/app/models/spree/stock/content_item.rb +48 -0
- data/app/models/spree/stock/coordinator.rb +96 -0
- data/app/models/spree/stock/differentiator.rb +44 -0
- data/app/models/spree/stock/estimator.rb +70 -0
- data/app/models/spree/stock/inventory_unit_builder.rb +22 -0
- data/app/models/spree/stock/inventory_validator.rb +14 -0
- data/app/models/spree/stock/package.rb +131 -0
- data/app/models/spree/stock/packer.rb +49 -0
- data/app/models/spree/stock/prioritizer.rb +47 -0
- data/app/models/spree/stock/quantifier.rb +47 -0
- data/app/models/spree/stock/splitter/backordered.rb +23 -0
- data/app/models/spree/stock/splitter/base.rb +28 -0
- data/app/models/spree/stock/splitter/shipping_category.rb +32 -0
- data/app/models/spree/stock/splitter/weight.rb +32 -0
- data/app/models/spree/stock_item.rb +107 -0
- data/app/models/spree/stock_location.rb +128 -0
- data/app/models/spree/stock_movement.rb +26 -0
- data/app/models/spree/stock_transfer.rb +108 -0
- data/app/models/spree/store.rb +38 -0
- data/app/models/spree/store_credit.rb +267 -0
- data/app/models/spree/store_credit_category.rb +17 -0
- data/app/models/spree/store_credit_event.rb +52 -0
- data/app/models/spree/store_credit_type.rb +6 -0
- data/app/models/spree/tax_category.rb +19 -0
- data/app/models/spree/tax_rate.rb +199 -0
- data/app/models/spree/taxon.rb +103 -0
- data/app/models/spree/taxonomy.rb +27 -0
- data/app/models/spree/tracker.rb +8 -0
- data/app/models/spree/transfer_item.rb +58 -0
- data/app/models/spree/unit_cancel.rb +32 -0
- data/app/models/spree/user_stock_location.rb +6 -0
- data/app/models/spree/validations/db_maximum_length_validator.rb +22 -0
- data/app/models/spree/variant.rb +356 -0
- data/app/models/spree/variant/scopes.rb +40 -0
- data/app/models/spree/zone.rb +138 -0
- data/app/models/spree/zone_member.rb +11 -0
- data/app/views/layouts/spree/base_mailer.html.erb +784 -0
- data/app/views/spree/admin/orders/customer_details/_autocomplete.js.erb +19 -0
- data/app/views/spree/carton_mailer/shipped_email.text.erb +16 -0
- data/app/views/spree/order_mailer/cancel_email.html.erb +45 -0
- data/app/views/spree/order_mailer/cancel_email.text.erb +16 -0
- data/app/views/spree/order_mailer/confirm_email.html.erb +84 -0
- data/app/views/spree/order_mailer/confirm_email.text.erb +38 -0
- data/app/views/spree/order_mailer/inventory_cancellation_email.text.erb +10 -0
- data/app/views/spree/reimbursement_mailer/reimbursement_email.text.erb +22 -0
- data/app/views/spree/shared/_base_mailer_footer.html.erb +20 -0
- data/app/views/spree/shared/_base_mailer_header.html.erb +31 -0
- data/app/views/spree/shared/_error_messages.html.erb +11 -0
- data/app/views/spree/shipment_mailer/shipped_email.html.erb +34 -0
- data/app/views/spree/test_mailer/test_email.html.erb +40 -0
- data/app/views/spree/test_mailer/test_email.text.erb +4 -0
- data/config/initializers/friendly_id.rb +88 -0
- data/config/initializers/premailer_assets.rb +1 -0
- data/config/initializers/user_class_extensions.rb +42 -0
- data/config/locales/en.yml +1534 -0
- data/config/routes.rb +1 -0
- data/db/default/spree/countries.rb +19 -0
- data/db/default/spree/roles.rb +2 -0
- data/db/default/spree/states.rb +16 -0
- data/db/default/spree/store_credit.rb +16 -0
- data/db/default/spree/stores.rb +9 -0
- data/db/default/spree/zones.rb +17 -0
- data/db/migrate/20120831092320_spree_one_two.rb +481 -0
- data/db/migrate/20120831092359_spree_promo_one_two.rb +45 -0
- data/db/migrate/20120905145253_add_tax_rate_label.rb +5 -0
- data/db/migrate/20120905151823_add_toggle_tax_rate_display.rb +5 -0
- data/db/migrate/20120929093553_remove_unused_preference_columns.rb +8 -0
- data/db/migrate/20121009142519_add_lock_version_to_variant.rb +5 -0
- data/db/migrate/20121010142909_add_states_required_to_countries.rb +5 -0
- data/db/migrate/20121012071449_add_on_demand_to_product_and_variant.rb +6 -0
- data/db/migrate/20121017010007_remove_not_null_constraint_from_products_on_hand.rb +11 -0
- data/db/migrate/20121031162139_split_prices_from_variants.rb +31 -0
- data/db/migrate/20121107003422_remove_not_null_from_spree_prices_amount.rb +9 -0
- data/db/migrate/20121107184631_add_currency_to_line_items.rb +5 -0
- data/db/migrate/20121107194006_add_currency_to_orders.rb +5 -0
- data/db/migrate/20121109173623_add_cost_currency_to_variants.rb +5 -0
- data/db/migrate/20121111231553_remove_display_on_from_payment_methods.rb +5 -0
- data/db/migrate/20121124203911_add_position_to_taxonomies.rb +5 -0
- data/db/migrate/20121126040517_add_last_ip_to_spree_orders.rb +5 -0
- data/db/migrate/20121213162028_add_state_to_spree_adjustments.rb +6 -0
- data/db/migrate/20130114053446_add_display_on_to_spree_payment_methods.rb +9 -0
- data/db/migrate/20130120201805_add_position_to_product_properties.spree.rb +6 -0
- data/db/migrate/20130203232234_add_identifier_to_spree_payments.rb +5 -0
- data/db/migrate/20130207155350_add_order_id_index_to_payments.rb +9 -0
- data/db/migrate/20130208032954_add_primary_to_spree_products_taxons.rb +5 -0
- data/db/migrate/20130211190146_create_spree_stock_items.rb +14 -0
- data/db/migrate/20130211191120_create_spree_stock_locations.rb +11 -0
- data/db/migrate/20130213191427_create_default_stock.rb +34 -0
- data/db/migrate/20130222032153_add_order_id_index_to_shipments.rb +5 -0
- data/db/migrate/20130226032817_change_meta_description_on_spree_products_to_text.rb +5 -0
- data/db/migrate/20130226191231_add_stock_location_id_to_spree_shipments.rb +5 -0
- data/db/migrate/20130227143905_add_pending_to_inventory_unit.rb +6 -0
- data/db/migrate/20130228164411_remove_on_demand_from_product_and_variant.rb +6 -0
- data/db/migrate/20130228210442_create_shipping_method_zone.rb +21 -0
- data/db/migrate/20130301162745_remove_shipping_category_id_from_shipping_method.rb +5 -0
- data/db/migrate/20130301162924_create_shipping_method_categories.rb +13 -0
- data/db/migrate/20130301205200_add_tracking_url_to_spree_shipping_methods.rb +5 -0
- data/db/migrate/20130304162240_create_spree_shipping_rates.rb +24 -0
- data/db/migrate/20130304192936_remove_category_match_attributes_from_shipping_method.rb +7 -0
- data/db/migrate/20130305143310_create_stock_movements.rb +12 -0
- data/db/migrate/20130306181701_add_address_fields_to_stock_location.rb +22 -0
- data/db/migrate/20130306191917_add_active_field_to_stock_locations.rb +5 -0
- data/db/migrate/20130306195650_add_backorderable_to_stock_item.rb +5 -0
- data/db/migrate/20130307161754_add_default_quantity_to_stock_movement.rb +5 -0
- data/db/migrate/20130318151756_add_source_and_destination_to_stock_movements.rb +8 -0
- data/db/migrate/20130319062004_change_orders_total_precision.rb +8 -0
- data/db/migrate/20130319063911_change_spree_payments_amount_precision.rb +7 -0
- data/db/migrate/20130319064308_change_spree_return_authorization_amount_precision.rb +7 -0
- data/db/migrate/20130319082943_change_adjustments_amount_precision.rb +7 -0
- data/db/migrate/20130319183250_add_originator_to_stock_movement.rb +7 -0
- data/db/migrate/20130319190507_drop_source_and_destination_from_stock_movement.rb +15 -0
- data/db/migrate/20130325163316_migrate_inventory_unit_sold_to_on_hand.rb +9 -0
- data/db/migrate/20130326175857_add_stock_location_to_rma.rb +5 -0
- data/db/migrate/20130328130308_update_shipment_state_for_canceled_orders.rb +15 -0
- data/db/migrate/20130328195253_add_seo_metas_to_taxons.rb +9 -0
- data/db/migrate/20130329134939_remove_stock_item_and_variant_lock.rb +14 -0
- data/db/migrate/20130413230529_add_name_to_spree_credit_cards.rb +5 -0
- data/db/migrate/20130414000512_update_name_fields_on_spree_credit_cards.rb +13 -0
- data/db/migrate/20130417120034_add_index_to_source_columns_on_adjustments.rb +5 -0
- data/db/migrate/20130417120035_update_adjustment_states.rb +16 -0
- data/db/migrate/20130417123427_add_shipping_rates_to_shipments.rb +15 -0
- data/db/migrate/20130418125341_create_spree_stock_transfers.rb +14 -0
- data/db/migrate/20130423110707_drop_products_count_on_hand.rb +5 -0
- data/db/migrate/20130423223847_set_default_shipping_rate_cost.rb +5 -0
- data/db/migrate/20130509115210_add_number_to_stock_transfer.rb +23 -0
- data/db/migrate/20130514151929_add_sku_index_to_spree_variants.rb +5 -0
- data/db/migrate/20130515180736_add_backorderable_default_to_spree_stock_location.rb +5 -0
- data/db/migrate/20130516151222_add_propage_all_variants_to_spree_stock_location.rb +5 -0
- data/db/migrate/20130611054351_rename_shipping_methods_zones_to_spree_shipping_methods_zones.rb +5 -0
- data/db/migrate/20130611185927_add_user_id_index_to_spree_orders.rb +5 -0
- data/db/migrate/20130618041418_add_updated_at_to_spree_countries.rb +9 -0
- data/db/migrate/20130619012236_add_updated_at_to_spree_states.rb +9 -0
- data/db/migrate/20130626232741_add_cvv_result_code_and_cvv_result_message_to_spree_payments.rb +6 -0
- data/db/migrate/20130628021056_add_unique_index_to_permalink_on_spree_products.rb +5 -0
- data/db/migrate/20130628022817_add_unique_index_to_orders_shipments_and_stock_transfers.rb +7 -0
- data/db/migrate/20130708052307_add_deleted_at_to_spree_tax_rates.rb +5 -0
- data/db/migrate/20130711200933_remove_lock_version_from_inventory_units.rb +6 -0
- data/db/migrate/20130718042445_add_cost_price_to_line_item.rb +5 -0
- data/db/migrate/20130718233855_set_backorderable_to_default_to_false.rb +6 -0
- data/db/migrate/20130725031716_add_created_by_id_to_spree_orders.rb +5 -0
- data/db/migrate/20130729214043_index_completed_at_on_spree_orders.rb +5 -0
- data/db/migrate/20130802014537_add_tax_category_id_to_spree_line_items.rb +5 -0
- data/db/migrate/20130802022321_migrate_tax_categories_to_line_items.rb +10 -0
- data/db/migrate/20130806022521_drop_spree_mail_methods.rb +12 -0
- data/db/migrate/20130806145853_set_default_stock_location_on_shipments.rb +8 -0
- data/db/migrate/20130807024301_upgrade_adjustments.rb +40 -0
- data/db/migrate/20130807024302_rename_adjustment_fields.rb +14 -0
- data/db/migrate/20130809164245_add_admin_name_column_to_spree_shipping_methods.rb +5 -0
- data/db/migrate/20130809164330_add_admin_name_column_to_spree_stock_locations.rb +5 -0
- data/db/migrate/20130813004002_add_shipment_total_to_spree_orders.rb +5 -0
- data/db/migrate/20130813140619_expand_order_number_size.rb +9 -0
- data/db/migrate/20130813232134_rename_activators_to_promotions.rb +5 -0
- data/db/migrate/20130815000406_add_adjustment_total_to_line_items.rb +5 -0
- data/db/migrate/20130815024413_add_adjustment_total_to_shipments.rb +5 -0
- data/db/migrate/20130826062534_add_depth_to_spree_taxons.rb +16 -0
- data/db/migrate/20130828234942_add_tax_total_to_line_items_shipments_and_orders.rb +8 -0
- data/db/migrate/20130830001033_add_shipping_category_to_shipping_methods_and_products.rb +15 -0
- data/db/migrate/20130830001159_migrate_old_shipping_calculators.rb +19 -0
- data/db/migrate/20130903183026_add_code_to_spree_promotion_rules.rb +5 -0
- data/db/migrate/20130909115621_change_states_required_for_countries.rb +9 -0
- data/db/migrate/20130915032339_add_deleted_at_to_spree_stock_items.rb +5 -0
- data/db/migrate/20130917024658_remove_promotions_event_name_field.rb +5 -0
- data/db/migrate/20130924040529_add_promo_total_to_line_items_and_shipments_and_orders.rb +7 -0
- data/db/migrate/20131001013410_remove_unused_credit_card_fields.rb +16 -0
- data/db/migrate/20131026154747_add_track_inventory_to_variant.rb +5 -0
- data/db/migrate/20131107132123_add_tax_category_to_variants.rb +6 -0
- data/db/migrate/20131113035136_add_channel_to_spree_orders.rb +5 -0
- data/db/migrate/20131118043959_add_included_to_adjustments.rb +5 -0
- data/db/migrate/20131118050234_rename_tax_total_fields.rb +11 -0
- data/db/migrate/20131118183431_add_line_item_id_to_spree_inventory_units.rb +21 -0
- data/db/migrate/20131120234456_add_updated_at_to_variants.rb +5 -0
- data/db/migrate/20131127001002_add_position_to_classifications.rb +5 -0
- data/db/migrate/20131211112807_create_spree_orders_promotions.rb +8 -0
- data/db/migrate/20131211192741_unique_shipping_method_categories.rb +24 -0
- data/db/migrate/20131218054603_add_item_count_to_spree_orders.rb +5 -0
- data/db/migrate/20140106065820_remove_value_type_from_spree_preferences.rb +8 -0
- data/db/migrate/20140106224208_rename_permalink_to_slug_for_products.rb +5 -0
- data/db/migrate/20140120160805_add_index_to_variant_id_and_currency_on_prices.rb +5 -0
- data/db/migrate/20140124023232_rename_activator_id_in_rules_and_actions_to_promotion_id.rb +6 -0
- data/db/migrate/20140129024326_add_deleted_at_to_spree_prices.rb +5 -0
- data/db/migrate/20140203161722_add_approver_id_and_approved_at_to_orders.rb +6 -0
- data/db/migrate/20140204115338_add_confirmation_delivered_to_spree_orders.rb +5 -0
- data/db/migrate/20140204192230_add_auto_capture_to_payment_methods.rb +5 -0
- data/db/migrate/20140205120320_create_spree_payment_capture_events.rb +12 -0
- data/db/migrate/20140205144710_add_uncaptured_amount_to_payments.rb +5 -0
- data/db/migrate/20140205181631_default_variant_weight_to_zero.rb +11 -0
- data/db/migrate/20140207085910_add_tax_category_id_to_shipping_methods.rb +5 -0
- data/db/migrate/20140207093021_add_tax_rate_id_to_shipping_rates.rb +5 -0
- data/db/migrate/20140211040159_add_pre_tax_amount_to_line_items_and_shipments.rb +6 -0
- data/db/migrate/20140213184916_add_more_indexes.rb +13 -0
- data/db/migrate/20140219060952_add_considered_risky_to_orders.rb +5 -0
- data/db/migrate/20140227112348_add_preference_store_to_everything.rb +8 -0
- data/db/migrate/20140307235515_add_user_id_to_spree_credit_cards.rb +13 -0
- data/db/migrate/20140309023735_migrate_old_preferences.rb +23 -0
- data/db/migrate/20140309024355_create_spree_stores.rb +25 -0
- data/db/migrate/20140309033438_create_store_from_preferences.rb +30 -0
- data/db/migrate/20140315053743_add_timestamps_to_spree_assets.rb +6 -0
- data/db/migrate/20140318191500_create_spree_taxons_promotion_rules.rb +8 -0
- data/db/migrate/20140331100557_add_additional_store_fields.rb +8 -0
- data/db/migrate/20140410141842_add_many_missing_indexes.rb +17 -0
- data/db/migrate/20140410150358_correct_some_polymorphic_index_and_add_more_missing.rb +66 -0
- data/db/migrate/20140415041315_add_user_id_created_by_id_index_to_order.rb +5 -0
- data/db/migrate/20140508151342_change_spree_price_amount_precision.rb +8 -0
- data/db/migrate/20140518174634_add_token_to_spree_orders.rb +5 -0
- data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +29 -0
- data/db/migrate/20140601011216_set_shipment_total_for_users_upgrading.rb +10 -0
- data/db/migrate/20140604135309_drop_credit_card_first_name_and_last_name.rb +6 -0
- data/db/migrate/20140609201656_add_deleted_at_to_spree_promotion_actions.rb +6 -0
- data/db/migrate/20140616202624_remove_uncaptured_amount_from_spree_payments.rb +5 -0
- data/db/migrate/20140625214618_create_spree_refunds.rb +12 -0
- data/db/migrate/20140702140656_create_spree_return_authorization_inventory_unit.rb +12 -0
- data/db/migrate/20140707125621_rename_return_authorization_inventory_unit_to_return_items.rb +5 -0
- data/db/migrate/20140708132019_create_order_mutex.rb +11 -0
- data/db/migrate/20140709160534_backfill_line_item_pre_tax_amount.rb +10 -0
- data/db/migrate/20140710041921_recreate_spree_return_authorizations.rb +55 -0
- data/db/migrate/20140710181204_add_amount_fields_to_return_items.rb +7 -0
- data/db/migrate/20140710190048_drop_return_authorization_amount.rb +5 -0
- data/db/migrate/20140713140455_create_spree_return_authorization_reasons.rb +28 -0
- data/db/migrate/20140713140527_create_spree_refund_reasons.rb +14 -0
- data/db/migrate/20140713142214_rename_return_authorization_reason.rb +5 -0
- data/db/migrate/20140715182625_create_spree_promotion_categories.rb +11 -0
- data/db/migrate/20140716204111_drop_received_at_on_return_items.rb +9 -0
- data/db/migrate/20140716212330_add_reception_and_acceptance_status_to_return_items.rb +6 -0
- data/db/migrate/20140717155155_create_default_refund_reason.rb +9 -0
- data/db/migrate/20140717185932_add_default_to_spree_stock_locations.rb +7 -0
- data/db/migrate/20140718133010_create_spree_customer_returns.rb +9 -0
- data/db/migrate/20140718133349_add_customer_return_id_to_return_item.rb +6 -0
- data/db/migrate/20140718195325_create_friendly_id_slugs.rb +15 -0
- data/db/migrate/20140723004419_rename_spree_refund_return_authorization_id.rb +5 -0
- data/db/migrate/20140723152808_increase_return_item_pre_tax_amount_precision.rb +13 -0
- data/db/migrate/20140723214541_copy_product_slugs_to_slug_history.rb +15 -0
- data/db/migrate/20140725131539_create_spree_reimbursements.rb +21 -0
- data/db/migrate/20140728225422_add_promotionable_to_spree_products.rb +5 -0
- data/db/migrate/20140729133613_add_exchange_inventory_unit_foreign_keys.rb +7 -0
- data/db/migrate/20140730155938_add_acceptance_status_errors_to_return_item.rb +5 -0
- data/db/migrate/20140731150017_create_spree_reimbursement_types.rb +20 -0
- data/db/migrate/20140804185157_add_default_to_shipment_cost.rb +10 -0
- data/db/migrate/20140805171035_add_default_to_spree_credit_cards.rb +5 -0
- data/db/migrate/20140805171219_make_existing_credit_cards_default.rb +10 -0
- data/db/migrate/20140806144901_add_type_to_reimbursement_type.rb +9 -0
- data/db/migrate/20140808184039_create_spree_reimbursement_credits.rb +10 -0
- data/db/migrate/20140827170513_add_meta_title_to_spree_products.rb +7 -0
- data/db/migrate/20140924164824_add_code_to_spree_tax_categories.rb +5 -0
- data/db/migrate/20140927193717_default_pre_tax_amount_should_be_zero.rb +6 -0
- data/db/migrate/20141002191113_add_code_to_spree_shipping_methods.rb +5 -0
- data/db/migrate/20141007230328_add_cancel_audit_fields_to_spree_orders.rb +6 -0
- data/db/migrate/20141009204607_add_store_id_to_orders.rb +8 -0
- data/db/migrate/20141012083513_create_spree_taxons_prototypes.rb +8 -0
- data/db/migrate/20141021194502_add_state_lock_version_to_order.rb +5 -0
- data/db/migrate/20141023005240_add_counter_cache_from_spree_variants_to_spree_stock_items.rb +8 -0
- data/db/migrate/20141101231208_fix_adjustment_order_presence.rb +13 -0
- data/db/migrate/20141105213646_update_classifications_positions.rb +9 -0
- data/db/migrate/20141120135441_add_guest_token_index_to_spree_orders.rb +5 -0
- data/db/migrate/20141231151320_add_default_column_to_price.rb +5 -0
- data/db/migrate/20150112194216_add_position_to_stock_location.rb +5 -0
- data/db/migrate/20150113002122_create_spree_promotion_codes.rb +13 -0
- data/db/migrate/20150113002123_create_adjustment_promotion_code_association.rb +6 -0
- data/db/migrate/20150121202544_add_restock_inventory_to_stock_location.rb +5 -0
- data/db/migrate/20150122202432_add_code_to_spree_promotion_categories.rb +5 -0
- data/db/migrate/20150127161843_create_order_stock_locations.rb +12 -0
- data/db/migrate/20150203151219_add_fulfillable_to_stock_location.rb +5 -0
- data/db/migrate/20150205210527_add_code_to_refund_reason.rb +5 -0
- data/db/migrate/20150213160148_add_promotion_code_id_to_orders_promotions.rb +7 -0
- data/db/migrate/20150213163612_add_approver_name_to_spree_orders.rb +5 -0
- data/db/migrate/20150225205344_move_promotion_code_to_promotion_code_value.rb +65 -0
- data/db/migrate/20150226195213_downcase_promotion_codes_values.rb +11 -0
- data/db/migrate/20150227161934_add_order_ids_to_adjustments_where_missing.rb +9 -0
- data/db/migrate/20150303212749_add_per_code_usage_limit_to_promotions.rb +5 -0
- data/db/migrate/20150303212826_remove_usage_limit_from_promotion_codes.rb +5 -0
- data/db/migrate/20150304211616_add_timestamps_to_order_promotions.rb +6 -0
- data/db/migrate/20150305043021_create_spree_cartons.rb +24 -0
- data/db/migrate/20150305210403_add_timestamps_to_spree_roles_users.rb +7 -0
- data/db/migrate/20150313140507_remove_considered_risky_from_spree_orders.rb +5 -0
- data/db/migrate/20150313192827_add_index_to_inventory_units_carton_id.rb +5 -0
- data/db/migrate/20150313201235_add_imported_from_shipment_id_to_cartons.rb +8 -0
- data/db/migrate/20150313201503_copy_shipped_shipments_to_cartons.rb +13 -0
- data/db/migrate/20150330144639_create_spree_user_stock_locations.rb +10 -0
- data/db/migrate/20150331134544_add_stock_location_code.rb +5 -0
- data/db/migrate/20150402210430_create_unit_cancels.rb +10 -0
- data/db/migrate/20150407173305_add_fields_to_stock_transfer.rb +12 -0
- data/db/migrate/20150407173531_create_transfer_items.rb +14 -0
- data/db/migrate/20150424143547_drop_stock_transfer_type.rb +10 -0
- data/db/migrate/20150424161102_add_stock_transfer_finalized_at.rb +8 -0
- data/db/migrate/20150429125822_rename_stock_transfer_reference.rb +5 -0
- data/db/migrate/20150430233803_create_line_item_actions.rb +10 -0
- data/db/migrate/20150506181159_create_spree_store_credit_categories.rb +10 -0
- data/db/migrate/20150506181244_create_spree_store_credits.rb +19 -0
- data/db/migrate/20150506181539_create_spree_store_credit_events.rb +17 -0
- data/db/migrate/20150506181611_create_spree_store_credit_payment_method.rb +13 -0
- data/db/migrate/20150506181715_create_store_credit_types.rb +17 -0
- data/db/migrate/20150506182045_create_store_credit_reimbursement_type.rb +5 -0
- data/db/migrate/20150508044622_add_resellable_to_return_items.rb +5 -0
- data/db/migrate/20150514185559_add_invalidated_at_to_spree_store_credits.rb +5 -0
- data/db/migrate/20150514201836_migrate_deleted_store_credits_to_invalidated.rb +13 -0
- data/db/migrate/20150515170322_add_check_stock_on_transfer.rb +5 -0
- data/db/migrate/20150528125647_delete_inventory_units_without_shipment.rb +25 -0
- data/db/migrate/20150601191251_add_deleted_at_to_stock_transfers.rb +5 -0
- data/db/migrate/20150601204148_add_deleted_at_to_transfer_items.rb +5 -0
- data/db/migrate/20150609193231_add_preferences_to_promotion_actions.rb +5 -0
- data/db/migrate/20150610182638_add_id_to_spree_option_values_variants.rb +5 -0
- data/db/migrate/20150611200247_add_frontend_viewable_to_spree_orders.rb +5 -0
- data/db/migrate/20150612205731_remove_spree_configurations.rb +15 -0
- data/db/migrate/20150618191713_remove_credit_card_address_id.rb +7 -0
- data/db/migrate/20150626214817_remove_counter_cache_from_spree_variants_to_spree_stock_items.rb +10 -0
- data/db/seeds.rb +5 -0
- data/lib/generators/spree/custom_user/custom_user_generator.rb +56 -0
- data/lib/generators/spree/custom_user/templates/authentication_helpers.rb.tt +36 -0
- data/lib/generators/spree/custom_user/templates/initializer.rb.tt +1 -0
- data/lib/generators/spree/custom_user/templates/migration.rb.tt +7 -0
- data/lib/generators/spree/dummy/dummy_generator.rb +140 -0
- data/lib/generators/spree/dummy/templates/initializers/custom_user.rb +1 -0
- data/lib/generators/spree/dummy/templates/initializers/devise.rb +3 -0
- data/lib/generators/spree/dummy/templates/rails/application.rb +10 -0
- data/lib/generators/spree/dummy/templates/rails/boot.rb +6 -0
- data/lib/generators/spree/dummy/templates/rails/database.yml +65 -0
- data/lib/generators/spree/dummy/templates/rails/routes.rb +2 -0
- data/lib/generators/spree/dummy/templates/rails/script/rails +6 -0
- data/lib/generators/spree/dummy/templates/rails/test.rb +34 -0
- data/lib/generators/spree/install/install_generator.rb +191 -0
- data/lib/generators/spree/install/templates/config/initializers/spree.rb +41 -0
- data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/backend/all.js +13 -0
- data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/frontend/all.js +13 -0
- data/lib/generators/spree/install/templates/vendor/assets/stylesheets/spree/backend/all.css +12 -0
- data/lib/generators/spree/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +12 -0
- data/lib/solidus_core.rb +1 -0
- data/lib/spree/core.rb +95 -0
- data/lib/spree/core/controller_helpers/auth.rb +83 -0
- data/lib/spree/core/controller_helpers/common.rb +74 -0
- data/lib/spree/core/controller_helpers/order.rb +106 -0
- data/lib/spree/core/controller_helpers/respond_with.rb +65 -0
- data/lib/spree/core/controller_helpers/search.rb +14 -0
- data/lib/spree/core/controller_helpers/store.rb +19 -0
- data/lib/spree/core/controller_helpers/strong_parameters.rb +42 -0
- data/lib/spree/core/delegate_belongs_to.rb +95 -0
- data/lib/spree/core/engine.rb +114 -0
- data/lib/spree/core/environment.rb +15 -0
- data/lib/spree/core/environment/calculators.rb +12 -0
- data/lib/spree/core/environment_extension.rb +25 -0
- data/lib/spree/core/importer.rb +9 -0
- data/lib/spree/core/importer/order.rb +202 -0
- data/lib/spree/core/importer/product.rb +62 -0
- data/lib/spree/core/permalinks.rb +71 -0
- data/lib/spree/core/product_duplicator.rb +74 -0
- data/lib/spree/core/product_filters.rb +194 -0
- data/lib/spree/core/routes.rb +46 -0
- data/lib/spree/core/search/base.rb +97 -0
- data/lib/spree/core/search/variant.rb +46 -0
- data/lib/spree/core/unreturned_item_charger.rb +102 -0
- data/lib/spree/core/validators/email.rb +7 -0
- data/lib/spree/core/version.rb +5 -0
- data/lib/spree/i18n.rb +37 -0
- data/lib/spree/i18n/base.rb +17 -0
- data/lib/spree/i18n/initializer.rb +1 -0
- data/lib/spree/localized_number.rb +24 -0
- data/lib/spree/migrations.rb +76 -0
- data/lib/spree/money.rb +72 -0
- data/lib/spree/permitted_attributes.rb +114 -0
- data/lib/spree/promo/environment.rb +9 -0
- data/lib/spree/responder.rb +45 -0
- data/lib/spree/testing_support/ability_helpers.rb +105 -0
- data/lib/spree/testing_support/authorization_helpers.rb +63 -0
- data/lib/spree/testing_support/bar_ability.rb +14 -0
- data/lib/spree/testing_support/caching.rb +47 -0
- data/lib/spree/testing_support/capybara_ext.rb +163 -0
- data/lib/spree/testing_support/common_rake.rb +40 -0
- data/lib/spree/testing_support/controller_requests.rb +83 -0
- data/lib/spree/testing_support/extension_rake.rb +10 -0
- data/lib/spree/testing_support/factories.rb +20 -0
- data/lib/spree/testing_support/factories/address_factory.rb +22 -0
- data/lib/spree/testing_support/factories/adjustment_factory.rb +26 -0
- data/lib/spree/testing_support/factories/calculator_factory.rb +24 -0
- data/lib/spree/testing_support/factories/carton_factory.rb +21 -0
- data/lib/spree/testing_support/factories/country_factory.rb +9 -0
- data/lib/spree/testing_support/factories/credit_card_factory.rb +10 -0
- data/lib/spree/testing_support/factories/customer_return_factory.rb +31 -0
- data/lib/spree/testing_support/factories/inventory_unit_factory.rb +10 -0
- data/lib/spree/testing_support/factories/line_item_factory.rb +14 -0
- data/lib/spree/testing_support/factories/options_factory.rb +13 -0
- data/lib/spree/testing_support/factories/order_factory.rb +100 -0
- data/lib/spree/testing_support/factories/order_promotion_factory.rb +6 -0
- data/lib/spree/testing_support/factories/payment_factory.rb +28 -0
- data/lib/spree/testing_support/factories/payment_method_factory.rb +27 -0
- data/lib/spree/testing_support/factories/price_factory.rb +7 -0
- data/lib/spree/testing_support/factories/product_factory.rb +36 -0
- data/lib/spree/testing_support/factories/product_option_type_factory.rb +6 -0
- data/lib/spree/testing_support/factories/product_property_factory.rb +6 -0
- data/lib/spree/testing_support/factories/promotion_category_factory.rb +6 -0
- data/lib/spree/testing_support/factories/promotion_code_factory.rb +6 -0
- data/lib/spree/testing_support/factories/promotion_factory.rb +62 -0
- data/lib/spree/testing_support/factories/property_factory.rb +6 -0
- data/lib/spree/testing_support/factories/prototype_factory.rb +6 -0
- data/lib/spree/testing_support/factories/refund_factory.rb +14 -0
- data/lib/spree/testing_support/factories/reimbursement_factory.rb +16 -0
- data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +7 -0
- data/lib/spree/testing_support/factories/return_authorization_factory.rb +18 -0
- data/lib/spree/testing_support/factories/return_item_factory.rb +16 -0
- data/lib/spree/testing_support/factories/role_factory.rb +9 -0
- data/lib/spree/testing_support/factories/shipment_factory.rb +28 -0
- data/lib/spree/testing_support/factories/shipping_category_factory.rb +5 -0
- data/lib/spree/testing_support/factories/shipping_method_factory.rb +25 -0
- data/lib/spree/testing_support/factories/state_factory.rb +13 -0
- data/lib/spree/testing_support/factories/stock_factory.rb +31 -0
- data/lib/spree/testing_support/factories/stock_item_factory.rb +9 -0
- data/lib/spree/testing_support/factories/stock_location_factory.rb +28 -0
- data/lib/spree/testing_support/factories/stock_movement_factory.rb +11 -0
- data/lib/spree/testing_support/factories/stock_transfer_factory.rb +28 -0
- data/lib/spree/testing_support/factories/store_credit_category_factory.rb +6 -0
- data/lib/spree/testing_support/factories/store_credit_event_factory.rb +15 -0
- data/lib/spree/testing_support/factories/store_credit_factory.rb +10 -0
- data/lib/spree/testing_support/factories/store_credit_type_factory.rb +13 -0
- data/lib/spree/testing_support/factories/store_factory.rb +8 -0
- data/lib/spree/testing_support/factories/tax_category_factory.rb +7 -0
- data/lib/spree/testing_support/factories/tax_rate_factory.rb +8 -0
- data/lib/spree/testing_support/factories/taxon_factory.rb +7 -0
- data/lib/spree/testing_support/factories/taxonomy_factory.rb +5 -0
- data/lib/spree/testing_support/factories/tracker_factory.rb +7 -0
- data/lib/spree/testing_support/factories/user_factory.rb +22 -0
- data/lib/spree/testing_support/factories/variant_factory.rb +39 -0
- data/lib/spree/testing_support/factories/zone_factory.rb +17 -0
- data/lib/spree/testing_support/flash.rb +27 -0
- data/lib/spree/testing_support/i18n.rb +98 -0
- data/lib/spree/testing_support/mail.rb +20 -0
- data/lib/spree/testing_support/order_walkthrough.rb +78 -0
- data/lib/spree/testing_support/preferences.rb +29 -0
- data/lib/spree/testing_support/rspec-activemodel-mocks_patch.rb +8 -0
- data/lib/spree/testing_support/url_helpers.rb +9 -0
- data/lib/spree_core.rb +1 -0
- data/lib/tasks/core.rake +101 -0
- data/lib/tasks/email.rake +7 -0
- data/lib/tasks/exchanges.rake +48 -0
- data/lib/tasks/migrations/copy_shipped_shipments_to_cartons.rake +180 -0
- data/lib/tasks/order_capturing.rake +23 -0
- data/vendor/assets/javascripts/jquery-migrate-1.0.0.js +498 -0
- data/vendor/assets/javascripts/jquery.payment.js +497 -0
- data/vendor/assets/javascripts/jsuri.js +2 -0
- data/vendor/assets/stylesheets/normalize.css +375 -0
- data/vendor/assets/stylesheets/skeleton.css +242 -0
- metadata +993 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module TestingSupport
|
|
3
|
+
module Preferences
|
|
4
|
+
# Resets all preferences to default values, you can
|
|
5
|
+
# pass a block to override the defaults with a block
|
|
6
|
+
#
|
|
7
|
+
# reset_spree_preferences do |config|
|
|
8
|
+
# config.track_inventory_levels = false
|
|
9
|
+
# end
|
|
10
|
+
#
|
|
11
|
+
def reset_spree_preferences(&config_block)
|
|
12
|
+
Spree::Config.preference_store = Spree::Config.default_preferences
|
|
13
|
+
|
|
14
|
+
configure_spree_preferences(&config_block) if block_given?
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def configure_spree_preferences
|
|
18
|
+
config = Rails.application.config.spree.preferences
|
|
19
|
+
yield(config) if block_given?
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def assert_preference_unset(preference)
|
|
23
|
+
find("#preferences_#{preference}")['checked'].should be false
|
|
24
|
+
Spree::Config[preference].should be false
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Manually applied the patch from https://github.com/jdelStrother/rspec-activemodel-mocks/commit/1211c347c5a574739616ccadf4b3b54686f9051f
|
|
2
|
+
if Gem.loaded_specs['rspec-activemodel-mocks'].version.to_s != "1.0.1"
|
|
3
|
+
raise "RSpec-ActiveModel-Mocks version has changed, please check if the behaviour has already been fixed: https://github.com/rspec/rspec-activemodel-mocks/pull/10
|
|
4
|
+
If so, this patch might be obsolete-"
|
|
5
|
+
end
|
|
6
|
+
RSpec::ActiveModel::Mocks::Mocks::ActiveRecordInstanceMethods.class_eval do
|
|
7
|
+
alias_method :_read_attribute, :[]
|
|
8
|
+
end
|
data/lib/spree_core.rb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'spree/core'
|
data/lib/tasks/core.rake
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
require 'active_record'
|
|
2
|
+
|
|
3
|
+
namespace :db do
|
|
4
|
+
desc %q{Loads a specified fixture file:
|
|
5
|
+
use rake db:load_file[/absolute/path/to/sample/filename.rb]}
|
|
6
|
+
|
|
7
|
+
task :load_file , [:file, :dir] => :environment do |t, args|
|
|
8
|
+
file = Pathname.new(args.file)
|
|
9
|
+
|
|
10
|
+
puts "loading ruby #{file}"
|
|
11
|
+
require file
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
desc "Loads fixtures from the the dir you specify using rake db:load_dir[loadfrom]"
|
|
15
|
+
task :load_dir , [:dir] => :environment do |t, args|
|
|
16
|
+
dir = args.dir
|
|
17
|
+
dir = File.join(Rails.root, "db", dir) if Pathname.new(dir).relative?
|
|
18
|
+
|
|
19
|
+
ruby_files = {}
|
|
20
|
+
Dir.glob(File.join(dir , '**/*.{rb}')).each do |fixture_file|
|
|
21
|
+
ext = File.extname fixture_file
|
|
22
|
+
ruby_files[File.basename(fixture_file, '.*')] = fixture_file
|
|
23
|
+
end
|
|
24
|
+
ruby_files.sort.each do |fixture , ruby_file|
|
|
25
|
+
# If file is exists within application it takes precendence.
|
|
26
|
+
if File.exists?(File.join(Rails.root, "db/default/spree", "#{fixture}.rb"))
|
|
27
|
+
ruby_file = File.expand_path(File.join(Rails.root, "db/default/spree", "#{fixture}.rb"))
|
|
28
|
+
end
|
|
29
|
+
# an invoke will only execute the task once
|
|
30
|
+
Rake::Task["db:load_file"].execute( Rake::TaskArguments.new([:file], [ruby_file]) )
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
desc "Migrate schema to version 0 and back up again. WARNING: Destroys all data in tables!!"
|
|
35
|
+
task :remigrate => :environment do
|
|
36
|
+
require 'highline/import'
|
|
37
|
+
|
|
38
|
+
if ENV['SKIP_NAG'] or ENV['OVERWRITE'].to_s.downcase == 'true' or agree("This task will destroy any data in the database. Are you sure you want to \ncontinue? [y/n] ")
|
|
39
|
+
|
|
40
|
+
# Drop all tables
|
|
41
|
+
ActiveRecord::Base.connection.tables.each { |t| ActiveRecord::Base.connection.drop_table t }
|
|
42
|
+
|
|
43
|
+
# Migrate upward
|
|
44
|
+
Rake::Task["db:migrate"].invoke
|
|
45
|
+
|
|
46
|
+
# Dump the schema
|
|
47
|
+
Rake::Task["db:schema:dump"].invoke
|
|
48
|
+
else
|
|
49
|
+
say "Task cancelled."
|
|
50
|
+
exit
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
desc "Bootstrap is: migrating, loading defaults, sample data and seeding (for all extensions) and load_products tasks"
|
|
55
|
+
task :bootstrap do
|
|
56
|
+
require 'highline/import'
|
|
57
|
+
|
|
58
|
+
# remigrate unless production mode (as saftey check)
|
|
59
|
+
if %w[demo development test].include? Rails.env
|
|
60
|
+
if ENV['AUTO_ACCEPT'] or agree("This task will destroy any data in the database. Are you sure you want to \ncontinue? [y/n] ")
|
|
61
|
+
ENV['SKIP_NAG'] = 'yes'
|
|
62
|
+
Rake::Task["db:create"].invoke
|
|
63
|
+
Rake::Task["db:remigrate"].invoke
|
|
64
|
+
else
|
|
65
|
+
say "Task cancelled, exiting."
|
|
66
|
+
exit
|
|
67
|
+
end
|
|
68
|
+
else
|
|
69
|
+
say "NOTE: Bootstrap in production mode will not drop database before migration"
|
|
70
|
+
Rake::Task["db:migrate"].invoke
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
ActiveRecord::Base.send(:subclasses).each do |model|
|
|
74
|
+
model.reset_column_information
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
load_defaults = Spree::Country.count == 0
|
|
78
|
+
unless load_defaults # ask if there are already Countries => default data hass been loaded
|
|
79
|
+
load_defaults = agree('Countries present, load sample data anyways? [y/n]: ')
|
|
80
|
+
end
|
|
81
|
+
if load_defaults
|
|
82
|
+
Rake::Task["db:seed"].invoke
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
if Rails.env.production? and Spree::Product.count > 0
|
|
86
|
+
load_sample = agree("WARNING: In Production and products exist in database, load sample data anyways? [y/n]:" )
|
|
87
|
+
else
|
|
88
|
+
load_sample = true if ENV['AUTO_ACCEPT']
|
|
89
|
+
load_sample = agree('Load Sample Data? [y/n]: ') unless load_sample
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
if load_sample
|
|
93
|
+
# Reload models' attributes in case they were loaded in old migrations with wrong attributes
|
|
94
|
+
ActiveRecord::Base.descendants.each(&:reset_column_information)
|
|
95
|
+
Rake::Task["spree_sample:load"].invoke
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
puts "Bootstrap Complete.\n\n"
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
end
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
namespace :email do
|
|
2
|
+
desc 'Sends test email to specified address - Example: EMAIL=spree@example.com bundle exec rake test:email'
|
|
3
|
+
task :test => :environment do
|
|
4
|
+
raise ArgumentError, "Must pass EMAIL environment variable. Example: EMAIL=spree@example.com bundle exec rake test:email" unless ENV['EMAIL'].present?
|
|
5
|
+
Spree::TestMailer.test_email(ENV['EMAIL']).deliver!
|
|
6
|
+
end
|
|
7
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
namespace :exchanges do
|
|
2
|
+
desc %q{Takes unreturned exchanged items and creates a new order to charge
|
|
3
|
+
the customer for not returning them}
|
|
4
|
+
task charge_unreturned_items: :environment do
|
|
5
|
+
|
|
6
|
+
unreturned_return_items = Spree::ReturnItem.expecting_return.exchange_processed.includes(:exchange_inventory_unit).where([
|
|
7
|
+
"spree_inventory_units.created_at < :days_ago AND spree_inventory_units.state = :iu_state",
|
|
8
|
+
days_ago: Spree::Config[:expedited_exchanges_days_window].days.ago, iu_state: "shipped"
|
|
9
|
+
]).references(:exchange_inventory_units).to_a
|
|
10
|
+
|
|
11
|
+
# Determine that a return item has already been deemed unreturned and therefore charged
|
|
12
|
+
# by the fact that its exchange inventory unit has popped off to a different order
|
|
13
|
+
unreturned_return_items.select! { |ri| ri.inventory_unit.order_id == ri.exchange_inventory_unit.order_id }
|
|
14
|
+
|
|
15
|
+
failures = []
|
|
16
|
+
|
|
17
|
+
unreturned_return_items.group_by(&:exchange_shipment).each do |shipment, return_items|
|
|
18
|
+
item_charger = Spree::UnreturnedItemCharger.new(shipment, return_items)
|
|
19
|
+
|
|
20
|
+
begin
|
|
21
|
+
item_charger.charge_for_items
|
|
22
|
+
rescue Spree::UnreturnedItemCharger::ChargeFailure => e
|
|
23
|
+
failure = {message: e.message, new_order: e.new_order.try(:number)}
|
|
24
|
+
rescue Exception => e
|
|
25
|
+
failure = {message: "#{e.class}: #{e.message}"}
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
if failure
|
|
29
|
+
failures << failure.merge({
|
|
30
|
+
order: item_charger.original_order.number,
|
|
31
|
+
shipment: shipment.number,
|
|
32
|
+
return_items: return_items.map(&:id),
|
|
33
|
+
order_errors: item_charger.original_order.errors.full_messages,
|
|
34
|
+
})
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
if failures.any?
|
|
39
|
+
if Spree::UnreturnedItemCharger.failure_handler
|
|
40
|
+
Spree::UnreturnedItemCharger.failure_handler.call(failures)
|
|
41
|
+
else
|
|
42
|
+
raise Spree::ChargeUnreturnedItemsFailures.new(failures.to_json)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
class Spree::ChargeUnreturnedItemsFailures < StandardError; end
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
namespace 'spree:migrations:copy_shipped_shipments_to_cartons' do
|
|
2
|
+
# This copies data from shipments into cartons from previous versions of
|
|
3
|
+
# Spree.
|
|
4
|
+
|
|
5
|
+
# Used in the migration CopyShippedShipmentsToCartons and made available as a
|
|
6
|
+
# rake task to allow running it a second time after deploying the new code, in
|
|
7
|
+
# case some shipment->carton data was missed between the time that the
|
|
8
|
+
# migration was run and the application servers were restarted with the new
|
|
9
|
+
# code.
|
|
10
|
+
|
|
11
|
+
# This task should be safe to run multiple times.
|
|
12
|
+
|
|
13
|
+
# We're doing these via SQL because for large stores with lots of shipments
|
|
14
|
+
# and lots of inventory units this would take excessively long to do via
|
|
15
|
+
# ActiveRecord one at a time. Also, these queries can take a long time for
|
|
16
|
+
# large stores so we do them in batches.
|
|
17
|
+
|
|
18
|
+
task up: :environment do
|
|
19
|
+
bad_shipping_rate = Spree::ShippingRate.
|
|
20
|
+
select(:shipment_id).
|
|
21
|
+
where(selected: true).
|
|
22
|
+
group(:shipment_id).
|
|
23
|
+
having("count(0) > 1").
|
|
24
|
+
limit(1).to_a.first
|
|
25
|
+
|
|
26
|
+
if bad_shipping_rate
|
|
27
|
+
# This would end up generating multiple cartons for a single shipment
|
|
28
|
+
raise(<<-TEXT.squish)
|
|
29
|
+
Error: You have shipments with more than one 'selected' shipping rate,
|
|
30
|
+
such as shipment #{bad_shipping_rate.shipment_id}. This code will not
|
|
31
|
+
work correctly.
|
|
32
|
+
TEXT
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
say_with_time 'generating cartons' do
|
|
36
|
+
|
|
37
|
+
last_id = Spree::Shipment.last.try!(:id) || 0
|
|
38
|
+
|
|
39
|
+
in_batches(last_id: last_id) do |start_id, end_id|
|
|
40
|
+
|
|
41
|
+
say_with_time "processing shipment #{start_id} to #{end_id}" do
|
|
42
|
+
Spree::Carton.connection.execute(<<-SQL.strip_heredoc)
|
|
43
|
+
insert into spree_cartons
|
|
44
|
+
(
|
|
45
|
+
number, imported_from_shipment_id, stock_location_id,
|
|
46
|
+
address_id, shipping_method_id, tracking, shipped_at,
|
|
47
|
+
created_at, updated_at
|
|
48
|
+
)
|
|
49
|
+
select
|
|
50
|
+
-- create the carton number as 'C'+shipment number:
|
|
51
|
+
#{db_concat("'C'", "spree_shipments.number")}, -- number
|
|
52
|
+
spree_shipments.id, -- imported_from_shipment_id
|
|
53
|
+
spree_shipments.stock_location_id,
|
|
54
|
+
spree_shipments.address_id,
|
|
55
|
+
spree_shipping_rates.shipping_method_id,
|
|
56
|
+
spree_shipments.tracking,
|
|
57
|
+
spree_shipments.shipped_at,
|
|
58
|
+
'#{Time.now.to_s(:db)}', -- created_at
|
|
59
|
+
'#{Time.now.to_s(:db)}' -- updated_at
|
|
60
|
+
from spree_shipments
|
|
61
|
+
left join spree_shipping_rates
|
|
62
|
+
on spree_shipping_rates.shipment_id = spree_shipments.id
|
|
63
|
+
and spree_shipping_rates.selected = #{Spree::Carton.connection.quoted_true}
|
|
64
|
+
left join spree_inventory_units
|
|
65
|
+
on spree_inventory_units.shipment_id = spree_shipments.id
|
|
66
|
+
and spree_inventory_units.carton_id is not null
|
|
67
|
+
where spree_shipments.shipped_at is not null
|
|
68
|
+
-- must have at least one inventory unit
|
|
69
|
+
and exists (
|
|
70
|
+
select 1
|
|
71
|
+
from spree_inventory_units iu
|
|
72
|
+
where iu.shipment_id = spree_shipments.id
|
|
73
|
+
)
|
|
74
|
+
-- if *any* inventory units are connected to cartons then we assume
|
|
75
|
+
-- the entire shipment has been either already migrated or handled
|
|
76
|
+
-- by the new code
|
|
77
|
+
and spree_inventory_units.id is null
|
|
78
|
+
and spree_shipments.id >= #{start_id}
|
|
79
|
+
and spree_shipments.id <= #{end_id}
|
|
80
|
+
SQL
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
say_with_time 'linking inventory units to cartons' do
|
|
87
|
+
|
|
88
|
+
last_id = Spree::InventoryUnit.last.try!(:id) || 0
|
|
89
|
+
|
|
90
|
+
in_batches(last_id: last_id) do |start_id, end_id|
|
|
91
|
+
|
|
92
|
+
say_with_time "processing inventory units #{start_id} to #{end_id}" do
|
|
93
|
+
Spree::InventoryUnit.connection.execute(<<-SQL.strip_heredoc)
|
|
94
|
+
update spree_inventory_units
|
|
95
|
+
set carton_id = (
|
|
96
|
+
select spree_cartons.id
|
|
97
|
+
from spree_shipments
|
|
98
|
+
inner join spree_cartons
|
|
99
|
+
on spree_cartons.imported_from_shipment_id = spree_shipments.id
|
|
100
|
+
where spree_shipments.id = spree_inventory_units.shipment_id
|
|
101
|
+
)
|
|
102
|
+
where spree_inventory_units.carton_id is null
|
|
103
|
+
and spree_inventory_units.shipment_id is not null
|
|
104
|
+
and spree_inventory_units.id >= #{start_id}
|
|
105
|
+
and spree_inventory_units.id <= #{end_id}
|
|
106
|
+
SQL
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
task down: :environment do
|
|
115
|
+
last_id = Spree::InventoryUnit.last.try!(:id) || 0
|
|
116
|
+
|
|
117
|
+
say_with_time 'unlinking inventory units from cartons' do
|
|
118
|
+
|
|
119
|
+
in_batches(last_id: last_id) do |start_id, end_id|
|
|
120
|
+
say_with_time "processing inventory units #{start_id} to #{end_id}" do
|
|
121
|
+
Spree::InventoryUnit.connection.execute(<<-SQL.strip_heredoc)
|
|
122
|
+
update spree_inventory_units
|
|
123
|
+
set carton_id = null
|
|
124
|
+
where carton_id is not null
|
|
125
|
+
and exists (
|
|
126
|
+
select 1
|
|
127
|
+
from spree_cartons
|
|
128
|
+
where spree_cartons.id = spree_inventory_units.carton_id
|
|
129
|
+
and spree_cartons.imported_from_shipment_id is not null
|
|
130
|
+
)
|
|
131
|
+
and spree_inventory_units.id >= #{start_id}
|
|
132
|
+
and spree_inventory_units.id <= #{end_id}
|
|
133
|
+
SQL
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
say_with_time "clearing carton imported_from_shipment_ids" do
|
|
140
|
+
Spree::Carton.where.not(imported_from_shipment_id: nil).delete_all
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def db_concat(*args)
|
|
145
|
+
case Spree::Shipment.connection.adapter_name
|
|
146
|
+
when /mysql/i
|
|
147
|
+
"concat(#{args.join(', ')})"
|
|
148
|
+
else
|
|
149
|
+
args.join(' || ')
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def say_with_time(message)
|
|
154
|
+
say message
|
|
155
|
+
ms = Benchmark.ms { yield }
|
|
156
|
+
say "(#{ms.round}ms)"
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def say(message)
|
|
160
|
+
if Rails.env.test?
|
|
161
|
+
Rails.logger.info message
|
|
162
|
+
else
|
|
163
|
+
puts message
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def in_batches(last_id:)
|
|
168
|
+
start_id = 1
|
|
169
|
+
batch_size = 10_000
|
|
170
|
+
|
|
171
|
+
while start_id <= last_id
|
|
172
|
+
end_id = start_id + batch_size - 1
|
|
173
|
+
|
|
174
|
+
yield start_id, end_id
|
|
175
|
+
|
|
176
|
+
start_id += batch_size
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
namespace :order_capturing do
|
|
2
|
+
desc "Looks for orders with inventory that is fully shipped/short-shipped, and captures money for it"
|
|
3
|
+
task capture_payments: :environment do
|
|
4
|
+
failures = []
|
|
5
|
+
orders = Spree::Order.complete.where(payment_state: 'balance_due').where('completed_at > ?', Spree::Config[:order_capturing_time_window].days.ago)
|
|
6
|
+
|
|
7
|
+
orders.find_each do |order|
|
|
8
|
+
if order.inventory_units.all? {|iu| iu.canceled? || iu.shipped? }
|
|
9
|
+
if Spree::OrderCapturing.failure_handler
|
|
10
|
+
begin
|
|
11
|
+
Spree::OrderCapturing.new(order).capture_payments
|
|
12
|
+
rescue Exception => e
|
|
13
|
+
failures << { message: "Order #{order.number} unable to capture. #{e.class}: #{e.message}" }
|
|
14
|
+
end
|
|
15
|
+
else
|
|
16
|
+
Spree::OrderCapturing.new(order).capture_payments
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
Spree::OrderCapturing.failure_handler.call(failures) if failures.any?
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,498 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* jQuery Migrate - v1.0.0 - 2013-01-14
|
|
3
|
+
* https://github.com/jquery/jquery-migrate
|
|
4
|
+
* Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors; Licensed MIT
|
|
5
|
+
*/
|
|
6
|
+
(function( jQuery, window, undefined ) {
|
|
7
|
+
"use strict";
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
var warnedAbout = {};
|
|
11
|
+
|
|
12
|
+
// List of warnings already given; public read only
|
|
13
|
+
jQuery.migrateWarnings = [];
|
|
14
|
+
|
|
15
|
+
// Set to true to prevent console output; migrateWarnings still maintained
|
|
16
|
+
// jQuery.migrateMute = false;
|
|
17
|
+
|
|
18
|
+
// Forget any warnings we've already given; public
|
|
19
|
+
jQuery.migrateReset = function() {
|
|
20
|
+
warnedAbout = {};
|
|
21
|
+
jQuery.migrateWarnings.length = 0;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
function migrateWarn( msg) {
|
|
25
|
+
if ( !warnedAbout[ msg ] ) {
|
|
26
|
+
warnedAbout[ msg ] = true;
|
|
27
|
+
jQuery.migrateWarnings.push( msg );
|
|
28
|
+
if ( window.console && console.warn && !jQuery.migrateMute ) {
|
|
29
|
+
console.warn( "JQMIGRATE: " + msg );
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function migrateWarnProp( obj, prop, value, msg ) {
|
|
35
|
+
if ( Object.defineProperty ) {
|
|
36
|
+
// On ES5 browsers (non-oldIE), warn if the code tries to get prop;
|
|
37
|
+
// allow property to be overwritten in case some other plugin wants it
|
|
38
|
+
try {
|
|
39
|
+
Object.defineProperty( obj, prop, {
|
|
40
|
+
configurable: true,
|
|
41
|
+
enumerable: true,
|
|
42
|
+
get: function() {
|
|
43
|
+
migrateWarn( msg );
|
|
44
|
+
return value;
|
|
45
|
+
},
|
|
46
|
+
set: function( newValue ) {
|
|
47
|
+
migrateWarn( msg );
|
|
48
|
+
value = newValue;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
return;
|
|
52
|
+
} catch( err ) {
|
|
53
|
+
// IE8 is a dope about Object.defineProperty, can't warn there
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Non-ES5 (or broken) browser; just set the property
|
|
58
|
+
jQuery._definePropertyBroken = true;
|
|
59
|
+
obj[ prop ] = value;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if ( document.compatMode === "BackCompat" ) {
|
|
63
|
+
// jQuery has never supported or tested Quirks Mode
|
|
64
|
+
migrateWarn( "jQuery is not compatible with Quirks Mode" );
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
var attrFn = {},
|
|
69
|
+
attr = jQuery.attr,
|
|
70
|
+
valueAttrGet = jQuery.attrHooks.value && jQuery.attrHooks.value.get ||
|
|
71
|
+
function() { return null; },
|
|
72
|
+
valueAttrSet = jQuery.attrHooks.value && jQuery.attrHooks.value.set ||
|
|
73
|
+
function() { return undefined; },
|
|
74
|
+
rnoType = /^(?:input|button)$/i,
|
|
75
|
+
rnoAttrNodeType = /^[238]$/,
|
|
76
|
+
rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
|
|
77
|
+
ruseDefault = /^(?:checked|selected)$/i;
|
|
78
|
+
|
|
79
|
+
// jQuery.attrFn
|
|
80
|
+
migrateWarnProp( jQuery, "attrFn", attrFn, "jQuery.attrFn is deprecated" );
|
|
81
|
+
|
|
82
|
+
jQuery.attr = function( elem, name, value, pass ) {
|
|
83
|
+
var lowerName = name.toLowerCase(),
|
|
84
|
+
nType = elem && elem.nodeType;
|
|
85
|
+
|
|
86
|
+
if ( pass ) {
|
|
87
|
+
migrateWarn("jQuery.fn.attr( props, pass ) is deprecated");
|
|
88
|
+
if ( elem && !rnoAttrNodeType.test( nType ) && jQuery.isFunction( jQuery.fn[ name ] ) ) {
|
|
89
|
+
return jQuery( elem )[ name ]( value );
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Warn if user tries to set `type` since it breaks on IE 6/7/8
|
|
94
|
+
if ( name === "type" && value !== undefined && rnoType.test( elem.nodeName ) ) {
|
|
95
|
+
migrateWarn("Can't change the 'type' of an input or button in IE 6/7/8");
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Restore boolHook for boolean property/attribute synchronization
|
|
99
|
+
if ( !jQuery.attrHooks[ lowerName ] && rboolean.test( lowerName ) ) {
|
|
100
|
+
jQuery.attrHooks[ lowerName ] = {
|
|
101
|
+
get: function( elem, name ) {
|
|
102
|
+
// Align boolean attributes with corresponding properties
|
|
103
|
+
// Fall back to attribute presence where some booleans are not supported
|
|
104
|
+
var attrNode,
|
|
105
|
+
property = jQuery.prop( elem, name );
|
|
106
|
+
return property === true || typeof property !== "boolean" &&
|
|
107
|
+
( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
|
|
108
|
+
|
|
109
|
+
name.toLowerCase() :
|
|
110
|
+
undefined;
|
|
111
|
+
},
|
|
112
|
+
set: function( elem, value, name ) {
|
|
113
|
+
var propName;
|
|
114
|
+
if ( value === false ) {
|
|
115
|
+
// Remove boolean attributes when set to false
|
|
116
|
+
jQuery.removeAttr( elem, name );
|
|
117
|
+
} else {
|
|
118
|
+
// value is true since we know at this point it's type boolean and not false
|
|
119
|
+
// Set boolean attributes to the same name and set the DOM property
|
|
120
|
+
propName = jQuery.propFix[ name ] || name;
|
|
121
|
+
if ( propName in elem ) {
|
|
122
|
+
// Only set the IDL specifically if it already exists on the element
|
|
123
|
+
elem[ propName ] = true;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
elem.setAttribute( name, name.toLowerCase() );
|
|
127
|
+
}
|
|
128
|
+
return name;
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
// Warn only for attributes that can remain distinct from their properties post-1.9
|
|
133
|
+
if ( ruseDefault.test( lowerName ) ) {
|
|
134
|
+
migrateWarn( "jQuery.fn.attr(" + lowerName + ") may use property instead of attribute" );
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return attr.call( jQuery, elem, name, value );
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
// attrHooks: value
|
|
142
|
+
jQuery.attrHooks.value = {
|
|
143
|
+
get: function( elem, name ) {
|
|
144
|
+
var nodeName = ( elem.nodeName || "" ).toLowerCase();
|
|
145
|
+
if ( nodeName === "button" ) {
|
|
146
|
+
return valueAttrGet.apply( this, arguments );
|
|
147
|
+
}
|
|
148
|
+
if ( nodeName !== "input" && nodeName !== "option" ) {
|
|
149
|
+
migrateWarn("property-based jQuery.fn.attr('value') is deprecated");
|
|
150
|
+
}
|
|
151
|
+
return name in elem ?
|
|
152
|
+
elem.value :
|
|
153
|
+
null;
|
|
154
|
+
},
|
|
155
|
+
set: function( elem, value ) {
|
|
156
|
+
var nodeName = ( elem.nodeName || "" ).toLowerCase();
|
|
157
|
+
if ( nodeName === "button" ) {
|
|
158
|
+
return valueAttrSet.apply( this, arguments );
|
|
159
|
+
}
|
|
160
|
+
if ( nodeName !== "input" && nodeName !== "option" ) {
|
|
161
|
+
migrateWarn("property-based jQuery.fn.attr('value', val) is deprecated");
|
|
162
|
+
}
|
|
163
|
+
// Does not return so that setAttribute is also used
|
|
164
|
+
elem.value = value;
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
var matched, browser,
|
|
170
|
+
oldInit = jQuery.fn.init,
|
|
171
|
+
// Note this does NOT include the # XSS fix from 1.7!
|
|
172
|
+
rquickExpr = /^(?:.*(<[\w\W]+>)[^>]*|#([\w\-]*))$/;
|
|
173
|
+
|
|
174
|
+
// $(html) "looks like html" rule change
|
|
175
|
+
jQuery.fn.init = function( selector, context, rootjQuery ) {
|
|
176
|
+
var match;
|
|
177
|
+
|
|
178
|
+
if ( selector && typeof selector === "string" && !jQuery.isPlainObject( context ) &&
|
|
179
|
+
(match = rquickExpr.exec( selector )) && match[1] ) {
|
|
180
|
+
// This is an HTML string according to the "old" rules; is it still?
|
|
181
|
+
if ( selector.charAt( 0 ) !== "<" ) {
|
|
182
|
+
migrateWarn("$(html) HTML strings must start with '<' character");
|
|
183
|
+
}
|
|
184
|
+
// Now process using loose rules; let pre-1.8 play too
|
|
185
|
+
if ( context && context.context ) {
|
|
186
|
+
// jQuery object as context; parseHTML expects a DOM object
|
|
187
|
+
context = context.context;
|
|
188
|
+
}
|
|
189
|
+
if ( jQuery.parseHTML ) {
|
|
190
|
+
return oldInit.call( this, jQuery.parseHTML( jQuery.trim(selector), context, true ),
|
|
191
|
+
context, rootjQuery );
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return oldInit.apply( this, arguments );
|
|
195
|
+
};
|
|
196
|
+
jQuery.fn.init.prototype = jQuery.fn;
|
|
197
|
+
|
|
198
|
+
jQuery.uaMatch = function( ua ) {
|
|
199
|
+
ua = ua.toLowerCase();
|
|
200
|
+
|
|
201
|
+
var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
|
|
202
|
+
/(webkit)[ \/]([\w.]+)/.exec( ua ) ||
|
|
203
|
+
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
|
|
204
|
+
/(msie) ([\w.]+)/.exec( ua ) ||
|
|
205
|
+
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
|
|
206
|
+
[];
|
|
207
|
+
|
|
208
|
+
return {
|
|
209
|
+
browser: match[ 1 ] || "",
|
|
210
|
+
version: match[ 2 ] || "0"
|
|
211
|
+
};
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
matched = jQuery.uaMatch( navigator.userAgent );
|
|
215
|
+
browser = {};
|
|
216
|
+
|
|
217
|
+
if ( matched.browser ) {
|
|
218
|
+
browser[ matched.browser ] = true;
|
|
219
|
+
browser.version = matched.version;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// Chrome is Webkit, but Webkit is also Safari.
|
|
223
|
+
if ( browser.chrome ) {
|
|
224
|
+
browser.webkit = true;
|
|
225
|
+
} else if ( browser.webkit ) {
|
|
226
|
+
browser.safari = true;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
jQuery.browser = browser;
|
|
230
|
+
|
|
231
|
+
// Warn if the code tries to get jQuery.browser
|
|
232
|
+
migrateWarnProp( jQuery, "browser", browser, "jQuery.browser is deprecated" );
|
|
233
|
+
|
|
234
|
+
jQuery.sub = function() {
|
|
235
|
+
function jQuerySub( selector, context ) {
|
|
236
|
+
return new jQuerySub.fn.init( selector, context );
|
|
237
|
+
}
|
|
238
|
+
jQuery.extend( true, jQuerySub, this );
|
|
239
|
+
jQuerySub.superclass = this;
|
|
240
|
+
jQuerySub.fn = jQuerySub.prototype = this();
|
|
241
|
+
jQuerySub.fn.constructor = jQuerySub;
|
|
242
|
+
jQuerySub.sub = this.sub;
|
|
243
|
+
jQuerySub.fn.init = function init( selector, context ) {
|
|
244
|
+
if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
|
|
245
|
+
context = jQuerySub( context );
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
|
|
249
|
+
};
|
|
250
|
+
jQuerySub.fn.init.prototype = jQuerySub.fn;
|
|
251
|
+
var rootjQuerySub = jQuerySub(document);
|
|
252
|
+
migrateWarn( "jQuery.sub() is deprecated" );
|
|
253
|
+
return jQuerySub;
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
var oldFnData = jQuery.fn.data;
|
|
258
|
+
|
|
259
|
+
jQuery.fn.data = function( name ) {
|
|
260
|
+
var ret, evt,
|
|
261
|
+
elem = this[0];
|
|
262
|
+
|
|
263
|
+
// Handles 1.7 which has this behavior and 1.8 which doesn't
|
|
264
|
+
if ( elem && name === "events" && arguments.length === 1 ) {
|
|
265
|
+
ret = jQuery.data( elem, name );
|
|
266
|
+
evt = jQuery._data( elem, name );
|
|
267
|
+
if ( ( ret === undefined || ret === evt ) && evt !== undefined ) {
|
|
268
|
+
migrateWarn("Use of jQuery.fn.data('events') is deprecated");
|
|
269
|
+
return evt;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return oldFnData.apply( this, arguments );
|
|
273
|
+
};
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
var rscriptType = /\/(java|ecma)script/i,
|
|
277
|
+
oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack,
|
|
278
|
+
oldFragment = jQuery.buildFragment;
|
|
279
|
+
|
|
280
|
+
jQuery.fn.andSelf = function() {
|
|
281
|
+
migrateWarn("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()");
|
|
282
|
+
return oldSelf.apply( this, arguments );
|
|
283
|
+
};
|
|
284
|
+
|
|
285
|
+
// Since jQuery.clean is used internally on older versions, we only shim if it's missing
|
|
286
|
+
if ( !jQuery.clean ) {
|
|
287
|
+
jQuery.clean = function( elems, context, fragment, scripts ) {
|
|
288
|
+
// Set context per 1.8 logic
|
|
289
|
+
context = context || document;
|
|
290
|
+
context = !context.nodeType && context[0] || context;
|
|
291
|
+
context = context.ownerDocument || context;
|
|
292
|
+
|
|
293
|
+
migrateWarn("jQuery.clean() is deprecated");
|
|
294
|
+
|
|
295
|
+
var i, elem, handleScript, jsTags,
|
|
296
|
+
ret = [];
|
|
297
|
+
|
|
298
|
+
jQuery.merge( ret, jQuery.buildFragment( elems, context ).childNodes );
|
|
299
|
+
|
|
300
|
+
// Complex logic lifted directly from jQuery 1.8
|
|
301
|
+
if ( fragment ) {
|
|
302
|
+
// Special handling of each script element
|
|
303
|
+
handleScript = function( elem ) {
|
|
304
|
+
// Check if we consider it executable
|
|
305
|
+
if ( !elem.type || rscriptType.test( elem.type ) ) {
|
|
306
|
+
// Detach the script and store it in the scripts array (if provided) or the fragment
|
|
307
|
+
// Return truthy to indicate that it has been handled
|
|
308
|
+
return scripts ?
|
|
309
|
+
scripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :
|
|
310
|
+
fragment.appendChild( elem );
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
|
|
314
|
+
for ( i = 0; (elem = ret[i]) != null; i++ ) {
|
|
315
|
+
// Check if we're done after handling an executable script
|
|
316
|
+
if ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) {
|
|
317
|
+
// Append to fragment and handle embedded scripts
|
|
318
|
+
fragment.appendChild( elem );
|
|
319
|
+
if ( typeof elem.getElementsByTagName !== "undefined" ) {
|
|
320
|
+
// handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration
|
|
321
|
+
jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript );
|
|
322
|
+
|
|
323
|
+
// Splice the scripts into ret after their former ancestor and advance our index beyond them
|
|
324
|
+
ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
|
|
325
|
+
i += jsTags.length;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
return ret;
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
jQuery.buildFragment = function( elems, context, scripts, selection ) {
|
|
336
|
+
var ret,
|
|
337
|
+
warning = "jQuery.buildFragment() is deprecated";
|
|
338
|
+
|
|
339
|
+
// Set context per 1.8 logic
|
|
340
|
+
context = context || document;
|
|
341
|
+
context = !context.nodeType && context[0] || context;
|
|
342
|
+
context = context.ownerDocument || context;
|
|
343
|
+
|
|
344
|
+
try {
|
|
345
|
+
ret = oldFragment.call( jQuery, elems, context, scripts, selection );
|
|
346
|
+
|
|
347
|
+
// jQuery < 1.8 required arrayish context; jQuery 1.9 fails on it
|
|
348
|
+
} catch( x ) {
|
|
349
|
+
ret = oldFragment.call( jQuery, elems, context.nodeType ? [ context ] : context[ 0 ], scripts, selection );
|
|
350
|
+
|
|
351
|
+
// Success from tweaking context means buildFragment was called by the user
|
|
352
|
+
migrateWarn( warning );
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
// jQuery < 1.9 returned an object instead of the fragment itself
|
|
356
|
+
if ( !ret.fragment ) {
|
|
357
|
+
migrateWarnProp( ret, "fragment", ret, warning );
|
|
358
|
+
migrateWarnProp( ret, "cacheable", false, warning );
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
return ret;
|
|
362
|
+
};
|
|
363
|
+
|
|
364
|
+
var eventAdd = jQuery.event.add,
|
|
365
|
+
eventRemove = jQuery.event.remove,
|
|
366
|
+
eventTrigger = jQuery.event.trigger,
|
|
367
|
+
oldToggle = jQuery.fn.toggle,
|
|
368
|
+
oldLive = jQuery.fn.live,
|
|
369
|
+
oldDie = jQuery.fn.die,
|
|
370
|
+
ajaxEvents = "ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",
|
|
371
|
+
rajaxEvent = new RegExp( "\\b(?:" + ajaxEvents + ")\\b" ),
|
|
372
|
+
rhoverHack = /(?:^|\s)hover(\.\S+|)\b/,
|
|
373
|
+
hoverHack = function( events ) {
|
|
374
|
+
if ( typeof( events ) != "string" || jQuery.event.special.hover ) {
|
|
375
|
+
return events;
|
|
376
|
+
}
|
|
377
|
+
if ( rhoverHack.test( events ) ) {
|
|
378
|
+
migrateWarn("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'");
|
|
379
|
+
}
|
|
380
|
+
return events && events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
|
|
381
|
+
};
|
|
382
|
+
|
|
383
|
+
// Event props removed in 1.9, put them back if needed; no practical way to warn them
|
|
384
|
+
if ( jQuery.event.props && jQuery.event.props[ 0 ] !== "attrChange" ) {
|
|
385
|
+
jQuery.event.props.unshift( "attrChange", "attrName", "relatedNode", "srcElement" );
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
// Undocumented jQuery.event.handle was "deprecated" in jQuery 1.7
|
|
389
|
+
migrateWarnProp( jQuery.event, "handle", jQuery.event.dispatch, "jQuery.event.handle is undocumented and deprecated" );
|
|
390
|
+
|
|
391
|
+
// Support for 'hover' pseudo-event and ajax event warnings
|
|
392
|
+
jQuery.event.add = function( elem, types, handler, data, selector ){
|
|
393
|
+
if ( elem !== document && rajaxEvent.test( types ) ) {
|
|
394
|
+
migrateWarn( "AJAX events should be attached to document: " + types );
|
|
395
|
+
}
|
|
396
|
+
eventAdd.call( this, elem, hoverHack( types || "" ), handler, data, selector );
|
|
397
|
+
};
|
|
398
|
+
jQuery.event.remove = function( elem, types, handler, selector, mappedTypes ){
|
|
399
|
+
eventRemove.call( this, elem, hoverHack( types ) || "", handler, selector, mappedTypes );
|
|
400
|
+
};
|
|
401
|
+
|
|
402
|
+
jQuery.fn.error = function() {
|
|
403
|
+
var args = Array.prototype.slice.call( arguments, 0);
|
|
404
|
+
migrateWarn("jQuery.fn.error() is deprecated");
|
|
405
|
+
args.splice( 0, 0, "error" );
|
|
406
|
+
if ( arguments.length ) {
|
|
407
|
+
return this.bind.apply( this, args );
|
|
408
|
+
}
|
|
409
|
+
// error event should not bubble to window, although it does pre-1.7
|
|
410
|
+
this.triggerHandler.apply( this, args );
|
|
411
|
+
return this;
|
|
412
|
+
};
|
|
413
|
+
|
|
414
|
+
jQuery.fn.toggle = function( fn, fn2 ) {
|
|
415
|
+
|
|
416
|
+
// Don't mess with animation or css toggles
|
|
417
|
+
if ( !jQuery.isFunction( fn ) || !jQuery.isFunction( fn2 ) ) {
|
|
418
|
+
return oldToggle.apply( this, arguments );
|
|
419
|
+
}
|
|
420
|
+
migrateWarn("jQuery.fn.toggle(handler, handler...) is deprecated");
|
|
421
|
+
|
|
422
|
+
// Save reference to arguments for access in closure
|
|
423
|
+
var args = arguments,
|
|
424
|
+
guid = fn.guid || jQuery.guid++,
|
|
425
|
+
i = 0,
|
|
426
|
+
toggler = function( event ) {
|
|
427
|
+
// Figure out which function to execute
|
|
428
|
+
var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
|
|
429
|
+
jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
|
|
430
|
+
|
|
431
|
+
// Make sure that clicks stop
|
|
432
|
+
event.preventDefault();
|
|
433
|
+
|
|
434
|
+
// and execute the function
|
|
435
|
+
return args[ lastToggle ].apply( this, arguments ) || false;
|
|
436
|
+
};
|
|
437
|
+
|
|
438
|
+
// link all the functions, so any of them can unbind this click handler
|
|
439
|
+
toggler.guid = guid;
|
|
440
|
+
while ( i < args.length ) {
|
|
441
|
+
args[ i++ ].guid = guid;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
return this.click( toggler );
|
|
445
|
+
};
|
|
446
|
+
|
|
447
|
+
jQuery.fn.live = function( types, data, fn ) {
|
|
448
|
+
migrateWarn("jQuery.fn.live() is deprecated");
|
|
449
|
+
if ( oldLive ) {
|
|
450
|
+
return oldLive.apply( this, arguments );
|
|
451
|
+
}
|
|
452
|
+
jQuery( this.context ).on( types, this.selector, data, fn );
|
|
453
|
+
return this;
|
|
454
|
+
};
|
|
455
|
+
|
|
456
|
+
jQuery.fn.die = function( types, fn ) {
|
|
457
|
+
migrateWarn("jQuery.fn.die() is deprecated");
|
|
458
|
+
if ( oldDie ) {
|
|
459
|
+
return oldDie.apply( this, arguments );
|
|
460
|
+
}
|
|
461
|
+
jQuery( this.context ).off( types, this.selector || "**", fn );
|
|
462
|
+
return this;
|
|
463
|
+
};
|
|
464
|
+
|
|
465
|
+
// Turn global events into document-triggered events
|
|
466
|
+
jQuery.event.trigger = function( event, data, elem, onlyHandlers ){
|
|
467
|
+
if ( !elem & !rajaxEvent.test( event ) ) {
|
|
468
|
+
migrateWarn( "Global events are undocumented and deprecated" );
|
|
469
|
+
}
|
|
470
|
+
return eventTrigger.call( this, event, data, elem || document, onlyHandlers );
|
|
471
|
+
};
|
|
472
|
+
jQuery.each( ajaxEvents.split("|"),
|
|
473
|
+
function( _, name ) {
|
|
474
|
+
jQuery.event.special[ name ] = {
|
|
475
|
+
setup: function() {
|
|
476
|
+
var elem = this;
|
|
477
|
+
|
|
478
|
+
// The document needs no shimming; must be !== for oldIE
|
|
479
|
+
if ( elem !== document ) {
|
|
480
|
+
jQuery.event.add( document, name + "." + jQuery.guid, function() {
|
|
481
|
+
jQuery.event.trigger( name, null, elem, true );
|
|
482
|
+
});
|
|
483
|
+
jQuery._data( this, name, jQuery.guid++ );
|
|
484
|
+
}
|
|
485
|
+
return false;
|
|
486
|
+
},
|
|
487
|
+
teardown: function() {
|
|
488
|
+
if ( this !== document ) {
|
|
489
|
+
jQuery.event.remove( document, name + "." + jQuery._data( this, name ) );
|
|
490
|
+
}
|
|
491
|
+
return false;
|
|
492
|
+
}
|
|
493
|
+
};
|
|
494
|
+
}
|
|
495
|
+
);
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
})( jQuery, window );
|