spree_core 0.30.0.beta1
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.
- data/LICENSE +26 -0
- data/README.md +19 -0
- data/app/controllers/admin/adjustments_controller.rb +25 -0
- data/app/controllers/admin/base_controller.rb +47 -0
- data/app/controllers/admin/checkouts_controller.rb +58 -0
- data/app/controllers/admin/configurations_controller.rb +26 -0
- data/app/controllers/admin/general_settings_controller.rb +13 -0
- data/app/controllers/admin/images_controller.rb +54 -0
- data/app/controllers/admin/inventory_settings_controller.rb +13 -0
- data/app/controllers/admin/inventory_units_controller.rb +2 -0
- data/app/controllers/admin/line_items_controller.rb +69 -0
- data/app/controllers/admin/mail_settings_controller.rb +14 -0
- data/app/controllers/admin/option_types_controller.rb +58 -0
- data/app/controllers/admin/orders_controller.rb +94 -0
- data/app/controllers/admin/overview_controller.rb +14 -0
- data/app/controllers/admin/payment_methods_controller.rb +31 -0
- data/app/controllers/admin/payments_controller.rb +105 -0
- data/app/controllers/admin/product_groups_controller.rb +45 -0
- data/app/controllers/admin/product_properties_controller.rb +14 -0
- data/app/controllers/admin/product_scopes_controller.rb +19 -0
- data/app/controllers/admin/products_controller.rb +115 -0
- data/app/controllers/admin/properties_controller.rb +27 -0
- data/app/controllers/admin/prototypes_controller.rb +52 -0
- data/app/controllers/admin/reports_controller.rb +44 -0
- data/app/controllers/admin/return_authorizations_controller.rb +36 -0
- data/app/controllers/admin/shipments_controller.rb +79 -0
- data/app/controllers/admin/shipping_categories_controller.rb +16 -0
- data/app/controllers/admin/shipping_methods_controller.rb +21 -0
- data/app/controllers/admin/states_controller.rb +30 -0
- data/app/controllers/admin/tax_categories_controller.rb +13 -0
- data/app/controllers/admin/tax_rates_controller.rb +32 -0
- data/app/controllers/admin/tax_settings_controller.rb +13 -0
- data/app/controllers/admin/taxonomies_controller.rb +17 -0
- data/app/controllers/admin/taxons_controller.rb +127 -0
- data/app/controllers/admin/trackers_controller.rb +7 -0
- data/app/controllers/admin/users_controller.rb +67 -0
- data/app/controllers/admin/variants_controller.rb +55 -0
- data/app/controllers/admin/zones_controller.rb +35 -0
- data/app/controllers/checkout_controller.rb +68 -0
- data/app/controllers/content_controller.rb +13 -0
- data/app/controllers/countries_controller.rb +11 -0
- data/app/controllers/locale_controller.rb +14 -0
- data/app/controllers/orders_controller.rb +49 -0
- data/app/controllers/password_resets_controller.rb +49 -0
- data/app/controllers/products_controller.rb +38 -0
- data/app/controllers/spree/base_controller.rb +111 -0
- data/app/controllers/states_controller.rb +16 -0
- data/app/controllers/taxons_controller.rb +23 -0
- data/app/helpers/account_helper.rb +2 -0
- data/app/helpers/admin/base_helper.rb +194 -0
- data/app/helpers/admin/inventory_settings_helper.rb +5 -0
- data/app/helpers/admin/navigation_helper.rb +140 -0
- data/app/helpers/admin/orders_helper.rb +22 -0
- data/app/helpers/admin/overview_helper.rb +12 -0
- data/app/helpers/admin/payments_helper.rb +7 -0
- data/app/helpers/admin/product_groups_helper.rb +11 -0
- data/app/helpers/admin/product_properties_helper.rb +21 -0
- data/app/helpers/admin/products_helper.rb +11 -0
- data/app/helpers/admin/taxons_helper.rb +5 -0
- data/app/helpers/admin/users_helper.rb +5 -0
- data/app/helpers/admin/zones_helper.rb +11 -0
- data/app/helpers/checkout_helper.rb +32 -0
- data/app/helpers/hook_helper.rb +20 -0
- data/app/helpers/orders_helper.rb +3 -0
- data/app/helpers/products_helper.rb +49 -0
- data/app/helpers/search_helper.rb +10 -0
- data/app/helpers/spree/base_helper.rb +91 -0
- data/app/helpers/taxons_helper.rb +32 -0
- data/app/helpers/trackers_helper.rb +2 -0
- data/app/helpers/users_helper.rb +13 -0
- data/app/models/address.rb +88 -0
- data/app/models/adjustment.rb +46 -0
- data/app/models/app_configuration.rb +54 -0
- data/app/models/asset.rb +4 -0
- data/app/models/billing_integration.rb +23 -0
- data/app/models/calculator/flat_percent_item_total.rb +18 -0
- data/app/models/calculator/flat_rate.rb +16 -0
- data/app/models/calculator/flexi_rate.rb +32 -0
- data/app/models/calculator/per_item.rb +16 -0
- data/app/models/calculator/price_bucket.rb +30 -0
- data/app/models/calculator/sales_tax.rb +48 -0
- data/app/models/calculator/vat.rb +63 -0
- data/app/models/calculator.rb +46 -0
- data/app/models/checkout.rb +141 -0
- data/app/models/configuration.rb +3 -0
- data/app/models/country.rb +17 -0
- data/app/models/creditcard.rb +240 -0
- data/app/models/gateway/authorize_net.rb +8 -0
- data/app/models/gateway/authorize_net_cim.rb +121 -0
- data/app/models/gateway/beanstream.rb +164 -0
- data/app/models/gateway/bogus.rb +80 -0
- data/app/models/gateway/eway.rb +11 -0
- data/app/models/gateway/linkpoint.rb +8 -0
- data/app/models/gateway/pay_pal.rb +11 -0
- data/app/models/gateway/sage_pay.rb +9 -0
- data/app/models/gateway.rb +48 -0
- data/app/models/image.rb +30 -0
- data/app/models/inventory_unit.rb +132 -0
- data/app/models/line_item.rb +67 -0
- data/app/models/option_type.rb +8 -0
- data/app/models/option_value.rb +5 -0
- data/app/models/order.rb +536 -0
- data/app/models/order_mailer.rb +24 -0
- data/app/models/payment.rb +136 -0
- data/app/models/payment_method/check.rb +2 -0
- data/app/models/payment_method.rb +54 -0
- data/app/models/preference.rb +51 -0
- data/app/models/product.rb +239 -0
- data/app/models/product_group.rb +208 -0
- data/app/models/product_option_type.rb +5 -0
- data/app/models/product_property.rb +15 -0
- data/app/models/product_scope.rb +58 -0
- data/app/models/property.rb +20 -0
- data/app/models/prototype.rb +5 -0
- data/app/models/return_authorization.rb +70 -0
- data/app/models/role.rb +3 -0
- data/app/models/shipment.rb +133 -0
- data/app/models/shipping_category.rb +3 -0
- data/app/models/shipping_method.rb +20 -0
- data/app/models/state.rb +17 -0
- data/app/models/state_event.rb +16 -0
- data/app/models/state_monitor.rb +25 -0
- data/app/models/tax_category.rb +14 -0
- data/app/models/tax_rate.rb +17 -0
- data/app/models/taxon.rb +51 -0
- data/app/models/taxonomy.rb +17 -0
- data/app/models/tracker.rb +5 -0
- data/app/models/user.rb +13 -0
- data/app/models/variant.rb +104 -0
- data/app/models/zone.rb +84 -0
- data/app/models/zone_member.rb +10 -0
- data/app/stylesheets/_buttons.less +80 -0
- data/app/stylesheets/_cart.less +24 -0
- data/app/stylesheets/_checkout.less +76 -0
- data/app/stylesheets/_checkout_progress.less +62 -0
- data/app/stylesheets/_colors.less +16 -0
- data/app/stylesheets/_forms.less +50 -0
- data/app/stylesheets/_layout.less +77 -0
- data/app/stylesheets/_messages.less +32 -0
- data/app/stylesheets/_mixins.less +71 -0
- data/app/stylesheets/_navigation.less +130 -0
- data/app/stylesheets/_prices.less +18 -0
- data/app/stylesheets/_product_details.less +56 -0
- data/app/stylesheets/_product_lists.less +66 -0
- data/app/stylesheets/_registration.less +24 -0
- data/app/stylesheets/_reset.less +69 -0
- data/app/stylesheets/_typography.less +158 -0
- data/app/stylesheets/screen.less +13 -0
- data/app/views/account/login.html.erb +4 -0
- data/app/views/admin/adjustments/_form.html.erb +12 -0
- data/app/views/admin/adjustments/edit.html.erb +13 -0
- data/app/views/admin/adjustments/index.html.erb +34 -0
- data/app/views/admin/adjustments/new.html.erb +13 -0
- data/app/views/admin/checkouts/_form.html.erb +42 -0
- data/app/views/admin/checkouts/edit.html.erb +21 -0
- data/app/views/admin/checkouts/show.html.erb +131 -0
- data/app/views/admin/configurations/index.html.erb +66 -0
- data/app/views/admin/configurations/new.html.erb +13 -0
- data/app/views/admin/extensions/index.html.erb +23 -0
- data/app/views/admin/general_settings/edit.html.erb +35 -0
- data/app/views/admin/general_settings/show.html.erb +28 -0
- data/app/views/admin/images/_form.html.erb +16 -0
- data/app/views/admin/images/edit.html.erb +19 -0
- data/app/views/admin/images/index.html.erb +66 -0
- data/app/views/admin/images/new.html.erb +22 -0
- data/app/views/admin/inventory_settings/edit.html.erb +27 -0
- data/app/views/admin/inventory_settings/show.html.erb +9 -0
- data/app/views/admin/inventory_units/adjust.html.erb +33 -0
- data/app/views/admin/mail_settings/edit.html.erb +114 -0
- data/app/views/admin/mail_settings/show.html.erb +59 -0
- data/app/views/admin/option_types/_available.html.erb +27 -0
- data/app/views/admin/option_types/_form.html.erb +11 -0
- data/app/views/admin/option_types/_option_value_fields.html.erb +5 -0
- data/app/views/admin/option_types/_selected.html.erb +26 -0
- data/app/views/admin/option_types/available.js.erb +2 -0
- data/app/views/admin/option_types/edit.html.erb +30 -0
- data/app/views/admin/option_types/index.html.erb +33 -0
- data/app/views/admin/option_types/new.html.erb +11 -0
- data/app/views/admin/option_types/select.js.erb +3 -0
- data/app/views/admin/option_types/selected.html.erb +6 -0
- data/app/views/admin/orders/_add_product.html.erb +20 -0
- data/app/views/admin/orders/_form.html.erb +66 -0
- data/app/views/admin/orders/_line_item.html.erb +16 -0
- data/app/views/admin/orders/edit.html.erb +30 -0
- data/app/views/admin/orders/history.html.erb +25 -0
- data/app/views/admin/orders/index.html.erb +96 -0
- data/app/views/admin/orders/new.html.erb +19 -0
- data/app/views/admin/orders/show.html.erb +32 -0
- data/app/views/admin/payment_methods/_form.html.erb +50 -0
- data/app/views/admin/payment_methods/edit.html.erb +10 -0
- data/app/views/admin/payment_methods/index.html.erb +47 -0
- data/app/views/admin/payment_methods/new.html.erb +11 -0
- data/app/views/admin/payments/_bill_address_form.html.erb +9 -0
- data/app/views/admin/payments/_card_form.html.erb +49 -0
- data/app/views/admin/payments/_form.html.erb +15 -0
- data/app/views/admin/payments/_list.html.erb +24 -0
- data/app/views/admin/payments/_transaction_list.html.erb +24 -0
- data/app/views/admin/payments/credit.html.erb +14 -0
- data/app/views/admin/payments/index.html.erb +27 -0
- data/app/views/admin/payments/new.html.erb +19 -0
- data/app/views/admin/payments/show.html.erb +10 -0
- data/app/views/admin/payments/source_forms/_check.html.erb +0 -0
- data/app/views/admin/payments/source_forms/_gateway.html.erb +43 -0
- data/app/views/admin/payments/source_views/_check.html.erb +0 -0
- data/app/views/admin/payments/source_views/_gateway.html.erb +35 -0
- data/app/views/admin/product_groups/_preview.html.erb +34 -0
- data/app/views/admin/product_groups/_product_scope.html.erb +24 -0
- data/app/views/admin/product_groups/edit.html.erb +56 -0
- data/app/views/admin/product_groups/index.html.erb +35 -0
- data/app/views/admin/product_groups/new.html.erb +12 -0
- data/app/views/admin/product_groups/show.html.erb +32 -0
- data/app/views/admin/product_groups/update.js.erb +7 -0
- data/app/views/admin/product_properties/_product_property_fields.html.erb +11 -0
- data/app/views/admin/product_properties/index.html.erb +50 -0
- data/app/views/admin/product_scopes/_form.html.erb +106 -0
- data/app/views/admin/product_scopes/create.js.erb +3 -0
- data/app/views/admin/product_scopes/destroy.js.erb +2 -0
- data/app/views/admin/product_scopes/new.html.erb +1 -0
- data/app/views/admin/products/_form.html.erb +106 -0
- data/app/views/admin/products/_option_types.html.erb +40 -0
- data/app/views/admin/products/_properties_form.erb +7 -0
- data/app/views/admin/products/edit.html.erb +10 -0
- data/app/views/admin/products/index.html.erb +81 -0
- data/app/views/admin/products/new.html.erb +53 -0
- data/app/views/admin/products/show.html.erb +4 -0
- data/app/views/admin/properties/_form.html.erb +12 -0
- data/app/views/admin/properties/edit.html.erb +10 -0
- data/app/views/admin/properties/filtered.html.erb +1 -0
- data/app/views/admin/properties/index.html.erb +40 -0
- data/app/views/admin/properties/new.html.erb +11 -0
- data/app/views/admin/prototypes/_form.html.erb +44 -0
- data/app/views/admin/prototypes/available.html.erb +22 -0
- data/app/views/admin/prototypes/edit.html.erb +9 -0
- data/app/views/admin/prototypes/index.html.erb +37 -0
- data/app/views/admin/prototypes/new.html.erb +11 -0
- data/app/views/admin/prototypes/select.js.erb +4 -0
- data/app/views/admin/reports/index.html.erb +19 -0
- data/app/views/admin/reports/sales_total.html.erb +27 -0
- data/app/views/admin/return_authorizations/_form.html.erb +64 -0
- data/app/views/admin/return_authorizations/edit.html.erb +27 -0
- data/app/views/admin/return_authorizations/index.html.erb +43 -0
- data/app/views/admin/return_authorizations/new.html.erb +13 -0
- data/app/views/admin/shared/_additional_field.html.erb +5 -0
- data/app/views/admin/shared/_address.html.erb +5 -0
- data/app/views/admin/shared/_address_form.html.erb +76 -0
- data/app/views/admin/shared/_calculator_fields.html.erb +19 -0
- data/app/views/admin/shared/_configuration_menu.html.erb +22 -0
- data/app/views/admin/shared/_edit_resource_links.html.erb +4 -0
- data/app/views/admin/shared/_group_from_products_form.html.erb +12 -0
- data/app/views/admin/shared/_new_resource_links.html.erb +4 -0
- data/app/views/admin/shared/_order_details.html.erb +3 -0
- data/app/views/admin/shared/_order_sub_menu.html.erb +0 -0
- data/app/views/admin/shared/_order_tabs.html.erb +60 -0
- data/app/views/admin/shared/_product_sub_menu.html.erb +11 -0
- data/app/views/admin/shared/_product_tabs.html.erb +34 -0
- data/app/views/admin/shared/_report_criteria.html.erb +15 -0
- data/app/views/admin/shared/_show_resource_links.html.erb +5 -0
- data/app/views/admin/shared/_tabs.html.erb +6 -0
- data/app/views/admin/shipments/_form.html.erb +79 -0
- data/app/views/admin/shipments/edit.html.erb +40 -0
- data/app/views/admin/shipments/index.html.erb +45 -0
- data/app/views/admin/shipments/new.html.erb +18 -0
- data/app/views/admin/shipping_categories/_form.html.erb +6 -0
- data/app/views/admin/shipping_categories/edit.html.erb +6 -0
- data/app/views/admin/shipping_categories/index.html.erb +29 -0
- data/app/views/admin/shipping_categories/new.html.erb +8 -0
- data/app/views/admin/shipping_methods/_form.html.erb +24 -0
- data/app/views/admin/shipping_methods/edit.html.erb +16 -0
- data/app/views/admin/shipping_methods/index.html.erb +48 -0
- data/app/views/admin/shipping_methods/new.html.erb +17 -0
- data/app/views/admin/states/_form.html.erb +9 -0
- data/app/views/admin/states/_state_list.html.erb +28 -0
- data/app/views/admin/states/edit.html.erb +10 -0
- data/app/views/admin/states/index.html.erb +16 -0
- data/app/views/admin/states/new.html.erb +8 -0
- data/app/views/admin/tax_categories/_form.html.erb +12 -0
- data/app/views/admin/tax_categories/edit.html.erb +10 -0
- data/app/views/admin/tax_categories/index.html.erb +39 -0
- data/app/views/admin/tax_categories/new.html.erb +10 -0
- data/app/views/admin/tax_categories/show.html.erb +1 -0
- data/app/views/admin/tax_rates/_form.html.erb +16 -0
- data/app/views/admin/tax_rates/edit.html.erb +6 -0
- data/app/views/admin/tax_rates/index.html.erb +34 -0
- data/app/views/admin/tax_rates/new.html.erb +8 -0
- data/app/views/admin/tax_settings/edit.html.erb +17 -0
- data/app/views/admin/tax_settings/show.html.erb +14 -0
- data/app/views/admin/taxonomies/_form.html.erb +7 -0
- data/app/views/admin/taxonomies/_js_head.html.erb +11 -0
- data/app/views/admin/taxonomies/_list.html.erb +17 -0
- data/app/views/admin/taxonomies/_taxon.html.erb +12 -0
- data/app/views/admin/taxonomies/edit.html.erb +49 -0
- data/app/views/admin/taxonomies/get_children.json.erb +9 -0
- data/app/views/admin/taxonomies/index.html.erb +16 -0
- data/app/views/admin/taxonomies/new.html.erb +12 -0
- data/app/views/admin/taxons/_form.html.erb +23 -0
- data/app/views/admin/taxons/_taxon_table.html.erb +28 -0
- data/app/views/admin/taxons/available.js.erb +36 -0
- data/app/views/admin/taxons/edit.html.erb +11 -0
- data/app/views/admin/taxons/remove.html.erb +1 -0
- data/app/views/admin/taxons/select.html.erb +1 -0
- data/app/views/admin/taxons/selected.html.erb +42 -0
- data/app/views/admin/trackers/_form.html.erb +26 -0
- data/app/views/admin/trackers/edit.html.erb +8 -0
- data/app/views/admin/trackers/index.html.erb +41 -0
- data/app/views/admin/trackers/new.html.erb +9 -0
- data/app/views/admin/users/_form.html.erb +36 -0
- data/app/views/admin/users/edit.html.erb +14 -0
- data/app/views/admin/users/index.html.erb +62 -0
- data/app/views/admin/users/new.html.erb +14 -0
- data/app/views/admin/users/show.html.erb +21 -0
- data/app/views/admin/variants/_form.html.erb +40 -0
- data/app/views/admin/variants/edit.html.erb +13 -0
- data/app/views/admin/variants/index.html.erb +51 -0
- data/app/views/admin/variants/new.html.erb +11 -0
- data/app/views/admin/zones/_country_member.html.erb +5 -0
- data/app/views/admin/zones/_form.html.erb +29 -0
- data/app/views/admin/zones/_member_type.html.erb +15 -0
- data/app/views/admin/zones/_state_member.html.erb +5 -0
- data/app/views/admin/zones/_zone_member.html.erb +5 -0
- data/app/views/admin/zones/edit.html.erb +10 -0
- data/app/views/admin/zones/index.html.erb +40 -0
- data/app/views/admin/zones/new.html.erb +10 -0
- data/app/views/checkout/_address.html.erb +161 -0
- data/app/views/checkout/_complete.html.erb +1 -0
- data/app/views/checkout/_confirm.html.erb +11 -0
- data/app/views/checkout/_delivery.html.erb +25 -0
- data/app/views/checkout/_payment.html.erb +28 -0
- data/app/views/checkout/_summary.html.erb +31 -0
- data/app/views/checkout/edit.html.erb +18 -0
- data/app/views/checkout/payment/_check.html.erb +0 -0
- data/app/views/checkout/payment/_gateway.html.erb +31 -0
- data/app/views/content/cvv.html.erb +13 -0
- data/app/views/countries/index.js.erb +1 -0
- data/app/views/layouts/admin.html.erb +79 -0
- data/app/views/layouts/spree_application.html.erb +52 -0
- data/app/views/order_mailer/cancel.html.erb +16 -0
- data/app/views/order_mailer/confirm.html.erb +19 -0
- data/app/views/orders/_form.html.erb +19 -0
- data/app/views/orders/_line_item.html.erb +43 -0
- data/app/views/orders/edit.html.erb +40 -0
- data/app/views/orders/new.html.erb +9 -0
- data/app/views/orders/show.html.erb +16 -0
- data/app/views/password_resets/edit.html.erb +12 -0
- data/app/views/password_resets/new.html.erb +12 -0
- data/app/views/products/_cart_form.html.erb +54 -0
- data/app/views/products/_image.html.erb +5 -0
- data/app/views/products/_properties.html.erb +8 -0
- data/app/views/products/_taxons.html.erb +16 -0
- data/app/views/products/_thumbnails.html.erb +40 -0
- data/app/views/products/index.html.erb +30 -0
- data/app/views/products/show.html.erb +31 -0
- data/app/views/shared/_additional_field.html.erb +7 -0
- data/app/views/shared/_admin_head.html.erb +34 -0
- data/app/views/shared/_edit_resource_links.html.erb +1 -0
- data/app/views/shared/_error_messages.html.erb +11 -0
- data/app/views/shared/_filters.html.erb +52 -0
- data/app/views/shared/_footer.html.erb +13 -0
- data/app/views/shared/_google_analytics.html.erb +39 -0
- data/app/views/shared/_head.html.erb +10 -0
- data/app/views/shared/_login.html.erb +21 -0
- data/app/views/shared/_method_error_message.html.erb +4 -0
- data/app/views/shared/_nav_bar.html.erb +5 -0
- data/app/views/shared/_new_resource_links.html.erb +1 -0
- data/app/views/shared/_order_details.html.erb +50 -0
- data/app/views/shared/_products.html.erb +35 -0
- data/app/views/shared/_search.html.erb +9 -0
- data/app/views/shared/_show_resource_links.html.erb +3 -0
- data/app/views/shared/_store_menu.html.erb +3 -0
- data/app/views/shared/_taxonomies.html.erb +10 -0
- data/app/views/shared/_test_hook.html.erb +1 -0
- data/app/views/shared/_user_form.html.erb +17 -0
- data/app/views/states/index.js.erb +1 -0
- data/app/views/taxons/_taxon.html.erb +4 -0
- data/app/views/taxons/show.html.erb +17 -0
- data/app/views/users/edit.html.erb +9 -0
- data/app/views/users/show.html.erb +46 -0
- data/config/initializers/form_builder.rb +23 -0
- data/config/initializers/load_unobtrusive_date_picker.rb +8 -0
- data/config/initializers/spree.rb +41 -0
- data/config/initializers/touch.rb +14 -0
- data/config/initializers/workarounds_for_ruby19.rb +72 -0
- data/config/locales/en_spree.yml +950 -0
- data/config/routes.rb +186 -0
- data/lib/active_merchant/billing/authorize_net_cim.rb +871 -0
- data/lib/custom_fixtures.rb +7 -0
- data/lib/generators/spree_core/extension_generator.rb +57 -0
- data/lib/generators/spree_core/install_generator.rb +59 -0
- data/lib/generators/templates/LICENSE +23 -0
- data/lib/generators/templates/README.md +13 -0
- data/lib/generators/templates/Rakefile +1 -0
- data/lib/generators/templates/application_controller.rb +4 -0
- data/lib/generators/templates/config/initializers/%file_name%.rb.tt +1 -0
- data/lib/generators/templates/config/locales/%current_locale%.yml.tt +2 -0
- data/lib/generators/templates/config/routes.rb +3 -0
- data/lib/generators/templates/db/default/countries.yml +1583 -0
- data/lib/generators/templates/db/default/roles.yml +7 -0
- data/lib/generators/templates/db/default/states.yml +256 -0
- data/lib/generators/templates/db/default/zone_members.yml +169 -0
- data/lib/generators/templates/db/default/zones.yml +13 -0
- data/lib/generators/templates/db/migrate/20090823005402_spree_zero_nine_zero.rb +442 -0
- data/lib/generators/templates/db/migrate/20090904192342_create_indexes_for_inventory_units.rb +12 -0
- data/lib/generators/templates/db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb +36 -0
- data/lib/generators/templates/db/migrate/20091007134354_change_taxons_to_nested_set.rb +40 -0
- data/lib/generators/templates/db/migrate/20091008091614_move_to_configurable_gateways.rb +55 -0
- data/lib/generators/templates/db/migrate/20091012120519_product_groups_and_scopes.rb +25 -0
- data/lib/generators/templates/db/migrate/20091015110842_add_open_id_authentication_tables.rb +20 -0
- data/lib/generators/templates/db/migrate/20091015153048_add_openid_field_to_users.rb +19 -0
- data/lib/generators/templates/db/migrate/20091016174634_change_preference_value_type.rb +9 -0
- data/lib/generators/templates/db/migrate/20091017175558_create_billing_integrations.rb +16 -0
- data/lib/generators/templates/db/migrate/20091021133257_charge_refactoring.rb +32 -0
- data/lib/generators/templates/db/migrate/20091104151730_add_some_indexes.rb +21 -0
- data/lib/generators/templates/db/migrate/20091126190904_checkout_state_machine.rb +13 -0
- data/lib/generators/templates/db/migrate/20091209153045_state_for_shipments.rb +9 -0
- data/lib/generators/templates/db/migrate/20091209202200_make_state_events_polymorphic.rb +12 -0
- data/lib/generators/templates/db/migrate/20091211203813_ship_address_id_for_checkouts.rb +9 -0
- data/lib/generators/templates/db/migrate/20091212161118_shipping_method_id_for_checkouts.rb +9 -0
- data/lib/generators/templates/db/migrate/20091213222815_creditcard_last_four_digits.rb +19 -0
- data/lib/generators/templates/db/migrate/20091214183826_populate_legacy_shipment_state.rb +19 -0
- data/lib/generators/templates/db/migrate/20100105090147_add_cost_price.rb +9 -0
- data/lib/generators/templates/db/migrate/20100105132138_shipment_id_for_inventory_units.rb +21 -0
- data/lib/generators/templates/db/migrate/20100111205525_cim_fields_for_creditcards.rb +11 -0
- data/lib/generators/templates/db/migrate/20100112151511_create_return_authorizations.rb +16 -0
- data/lib/generators/templates/db/migrate/20100113090919_add_return_authorization_to_inventory_units.rb +9 -0
- data/lib/generators/templates/db/migrate/20100113203104_create_trackers.rb +14 -0
- data/lib/generators/templates/db/migrate/20100121160010_creditcard_id_for_creditcard_txns.rb +9 -0
- data/lib/generators/templates/db/migrate/20100121183934_original_creditcard_txn_id_for_creditcard_txns.rb +9 -0
- data/lib/generators/templates/db/migrate/20100125145351_add_test_mode_to_billing_integration.rb +11 -0
- data/lib/generators/templates/db/migrate/20100126103714_create_products_product_groups.rb +12 -0
- data/lib/generators/templates/db/migrate/20100209025806_create_payment_methods.rb +20 -0
- data/lib/generators/templates/db/migrate/20100209144531_polymorphic_payments.rb +29 -0
- data/lib/generators/templates/db/migrate/20100213103131_change_payments_payment_method_to_belongs_to.rb +11 -0
- data/lib/generators/templates/db/migrate/20100214212536_assign_creditcard_txns_to_payment.rb +16 -0
- data/lib/generators/templates/db/migrate/20100223170312_sti_for_transactions.rb +14 -0
- data/lib/generators/templates/db/migrate/20100223183812_drop_billing_integrations.rb +16 -0
- data/lib/generators/templates/db/migrate/20100224153127_deleted_at_for_payment_methods.rb +13 -0
- data/lib/generators/templates/db/migrate/20100301163454_add_adjustments_index.rb +10 -0
- data/lib/generators/templates/db/migrate/20100306153445_fix_by_popularity.rb +8 -0
- data/lib/generators/templates/db/migrate/20100317120946_add_alt_text_to_images.rb +9 -0
- data/lib/generators/templates/db/migrate/20100427121301_add_display_to_payment_methods.rb +9 -0
- data/lib/generators/templates/db/migrate/20100504142133_add_addresses_checkouts_indexes.rb +16 -0
- data/lib/generators/templates/db/migrate/20100506180619_add_icon_to_taxons.rb +18 -0
- data/lib/generators/templates/db/migrate/20100506185838_add_description_to_taxons.rb +11 -0
- data/lib/generators/templates/db/migrate/20100528155333_index_for_shipments_number.rb +9 -0
- data/lib/generators/templates/db/migrate/20100528185820_add_index_on_users_persistence_token.rb +9 -0
- data/lib/generators/templates/db/migrate/20100605152042_add_default_to_tax_categories.rb +9 -0
- data/lib/generators/templates/db/migrate/20100624110730_add_display_to_shipping_methods.rb +9 -0
- data/lib/generators/templates/db/migrate/20100624123336_rename_payment_method_display.rb +9 -0
- data/lib/generators/templates/db/migrate/20100624175547_rename_preferences_field.rb +8 -0
- data/lib/generators/templates/db/migrate/20100811163637_add_guest_flag.rb +13 -0
- data/lib/generators/templates/db/migrate/20100811205836_drop_order_token.rb +11 -0
- data/lib/generators/templates/db/migrate/20100812162326_payments_state_and_assigned_to_order_only.rb +11 -0
- data/lib/generators/templates/db/migrate/20100813023502_create_address_keys_for_order.rb +15 -0
- data/lib/generators/templates/db/migrate/20100813185745_payment_total_for_orders.rb +9 -0
- data/lib/generators/templates/db/migrate/20100816212146_shipping_method_id_for_orders.rb +9 -0
- data/lib/generators/templates/db/migrate/20100817152723_add_shipment_and_payment_state.rb +15 -0
- data/lib/generators/templates/db/migrate/20100819170125_refactor_adjustments.rb +19 -0
- data/lib/generators/templates/db/migrate/20100820135707_response_code_and_avs_response_for_payments.rb +11 -0
- data/lib/generators/templates/db/migrate/20100901171814_change_guest_flag_to_anonymous.rb +13 -0
- data/lib/generators/templates/db/sample/users.rb +61 -0
- data/lib/generators/templates/extension/engine.rb.tt +14 -0
- data/lib/generators/templates/extension/extension.rb.tt +1 -0
- data/lib/generators/templates/extension.gemspec.tt +21 -0
- data/lib/generators/templates/lib/tasks/%file_name%.rake.tt +1 -0
- data/lib/generators/templates/public/images/add-to-cart.png +0 -0
- data/lib/generators/templates/public/images/admin/bg/active-tab.png +0 -0
- data/lib/generators/templates/public/images/admin/bg/admin_tab_back.png +0 -0
- data/lib/generators/templates/public/images/admin/bg/admin_tab_selected_back.png +0 -0
- data/lib/generators/templates/public/images/admin/bg/content-back-blue.png +0 -0
- data/lib/generators/templates/public/images/admin/bg/content-back-green.png +0 -0
- data/lib/generators/templates/public/images/admin/bg/content-back.png +0 -0
- data/lib/generators/templates/public/images/admin/bg/flash-error.png +0 -0
- data/lib/generators/templates/public/images/admin/bg/flash-notice.png +0 -0
- data/lib/generators/templates/public/images/admin/bg/green-stripes.gif +0 -0
- data/lib/generators/templates/public/images/admin/bg/green-stripes.png +0 -0
- data/lib/generators/templates/public/images/admin/bg/grid_header_back.png +0 -0
- data/lib/generators/templates/public/images/admin/bg/grid_header_back_green.png +0 -0
- data/lib/generators/templates/public/images/admin/bg/header-bg.png +0 -0
- data/lib/generators/templates/public/images/admin/bg/header.png +0 -0
- data/lib/generators/templates/public/images/admin/bg/header_bg.jpg +0 -0
- data/lib/generators/templates/public/images/admin/bg/menu-current.png +0 -0
- data/lib/generators/templates/public/images/admin/bg/red-stripes.gif +0 -0
- data/lib/generators/templates/public/images/admin/bg/red-stripes.png +0 -0
- data/lib/generators/templates/public/images/admin/bg/spree_50.png +0 -0
- data/lib/generators/templates/public/images/admin/bg/subnav-divider.png +0 -0
- data/lib/generators/templates/public/images/admin/bg/subnav.png +0 -0
- data/lib/generators/templates/public/images/admin/bg/tab-back.png +0 -0
- data/lib/generators/templates/public/images/admin/buttons/blue/left_01.png +0 -0
- data/lib/generators/templates/public/images/admin/buttons/blue/right_01.png +0 -0
- data/lib/generators/templates/public/images/admin/buttons/drag-handle-green.png +0 -0
- data/lib/generators/templates/public/images/admin/buttons/green/left_01.png +0 -0
- data/lib/generators/templates/public/images/admin/buttons/green/right_01.png +0 -0
- data/lib/generators/templates/public/images/admin/buttons/left_01.png +0 -0
- data/lib/generators/templates/public/images/admin/buttons/left_01_small.png +0 -0
- data/lib/generators/templates/public/images/admin/buttons/orange/left_03.png +0 -0
- data/lib/generators/templates/public/images/admin/buttons/orange/right_03.png +0 -0
- data/lib/generators/templates/public/images/admin/buttons/right_01.png +0 -0
- data/lib/generators/templates/public/images/admin/buttons/right_01_small.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/16x16/1.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/16x16/10.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/16x16/2.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/16x16/3.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/16x16/4.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/16x16/5.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/16x16/6.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/16x16/7.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/16x16/8.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/16x16/9.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/32x32/1.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/32x32/10.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/32x32/11.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/32x32/2.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/32x32/3.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/32x32/4.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/32x32/5.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/32x32/6.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/32x32/7.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/32x32/8.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/32x32/9.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/accept.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/add.gif +0 -0
- data/lib/generators/templates/public/images/admin/icons/add.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/arrow-down.gif +0 -0
- data/lib/generators/templates/public/images/admin/icons/cross.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/delete.gif +0 -0
- data/lib/generators/templates/public/images/admin/icons/delete.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/drag.gif +0 -0
- data/lib/generators/templates/public/images/admin/icons/edit.gif +0 -0
- data/lib/generators/templates/public/images/admin/icons/edit.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/email.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/error.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/exclamation.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/feed.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/pdf.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/reorder.gif +0 -0
- data/lib/generators/templates/public/images/admin/icons/search.gif +0 -0
- data/lib/generators/templates/public/images/admin/icons/send-email.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/stop.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/tick.png +0 -0
- data/lib/generators/templates/public/images/admin/icons/up.gif +0 -0
- data/lib/generators/templates/public/images/admin/icons/xls.png +0 -0
- data/lib/generators/templates/public/images/admin/tabs/off-left.png +0 -0
- data/lib/generators/templates/public/images/admin/tabs/off-right.png +0 -0
- data/lib/generators/templates/public/images/admin/tabs/on-left.png +0 -0
- data/lib/generators/templates/public/images/admin/tabs/on-right.png +0 -0
- data/lib/generators/templates/public/images/ajax_loader.gif +0 -0
- data/lib/generators/templates/public/images/amex_cid.gif +0 -0
- data/lib/generators/templates/public/images/bg-button-hover.png +0 -0
- data/lib/generators/templates/public/images/bg-button-pressed.png +0 -0
- data/lib/generators/templates/public/images/bg-button.gif +0 -0
- data/lib/generators/templates/public/images/bg-button.png +0 -0
- data/lib/generators/templates/public/images/blue/left_01.png +0 -0
- data/lib/generators/templates/public/images/blue/right_01.png +0 -0
- data/lib/generators/templates/public/images/body-back.png +0 -0
- data/lib/generators/templates/public/images/bottom_shine.png +0 -0
- data/lib/generators/templates/public/images/breadcrumb.gif +0 -0
- data/lib/generators/templates/public/images/button-dark-hover.png +0 -0
- data/lib/generators/templates/public/images/button-dark.png +0 -0
- data/lib/generators/templates/public/images/buttons/bg-button-hover.png +0 -0
- data/lib/generators/templates/public/images/buttons/bg-button-pressed.png +0 -0
- data/lib/generators/templates/public/images/buttons/bg-button.gif +0 -0
- data/lib/generators/templates/public/images/buttons/bg-button.png +0 -0
- data/lib/generators/templates/public/images/buttons/blue/left_01.png +0 -0
- data/lib/generators/templates/public/images/buttons/blue/right_01.png +0 -0
- data/lib/generators/templates/public/images/buttons/button-dark-hover.png +0 -0
- data/lib/generators/templates/public/images/buttons/button-dark.png +0 -0
- data/lib/generators/templates/public/images/buttons/drag-handle-green.png +0 -0
- data/lib/generators/templates/public/images/buttons/green/left_01.png +0 -0
- data/lib/generators/templates/public/images/buttons/green/right_01.png +0 -0
- data/lib/generators/templates/public/images/buttons/left_01.png +0 -0
- data/lib/generators/templates/public/images/buttons/left_01_small.png +0 -0
- data/lib/generators/templates/public/images/buttons/orange/left_03.png +0 -0
- data/lib/generators/templates/public/images/buttons/orange/right_03.png +0 -0
- data/lib/generators/templates/public/images/buttons/right_01.png +0 -0
- data/lib/generators/templates/public/images/buttons/right_01_small.png +0 -0
- data/lib/generators/templates/public/images/buttons/sxsw-ribbon-v1.png +0 -0
- data/lib/generators/templates/public/images/buttons/top-shine.png +0 -0
- data/lib/generators/templates/public/images/calendar_date_select/calendar.gif +0 -0
- data/lib/generators/templates/public/images/cart-empty.png +0 -0
- data/lib/generators/templates/public/images/cart-empty_x32.png +0 -0
- data/lib/generators/templates/public/images/cart-full.png +0 -0
- data/lib/generators/templates/public/images/cart-full_x32.png +0 -0
- data/lib/generators/templates/public/images/checkout.png +0 -0
- data/lib/generators/templates/public/images/creditcard.gif +0 -0
- data/lib/generators/templates/public/images/datepicker/backstripes.gif +0 -0
- data/lib/generators/templates/public/images/datepicker/bg_header.jpg +0 -0
- data/lib/generators/templates/public/images/datepicker/bullet1.gif +0 -0
- data/lib/generators/templates/public/images/datepicker/bullet2.gif +0 -0
- data/lib/generators/templates/public/images/datepicker/cal.gif +0 -0
- data/lib/generators/templates/public/images/datepicker/gradient-e5e5e5-ffffff.gif +0 -0
- data/lib/generators/templates/public/images/discover_cid.gif +0 -0
- data/lib/generators/templates/public/images/drag-handle-green.png +0 -0
- data/lib/generators/templates/public/images/favicon.ico +0 -0
- data/lib/generators/templates/public/images/green/left_01.png +0 -0
- data/lib/generators/templates/public/images/green/right_01.png +0 -0
- data/lib/generators/templates/public/images/grid.png +0 -0
- data/lib/generators/templates/public/images/left_01.png +0 -0
- data/lib/generators/templates/public/images/left_01_small.png +0 -0
- data/lib/generators/templates/public/images/master_cid.jpg +0 -0
- data/lib/generators/templates/public/images/menu-current.png +0 -0
- data/lib/generators/templates/public/images/menu-hover.png +0 -0
- data/lib/generators/templates/public/images/noimage/mini.jpg +0 -0
- data/lib/generators/templates/public/images/noimage/product.jpg +0 -0
- data/lib/generators/templates/public/images/noimage/small.jpg +0 -0
- data/lib/generators/templates/public/images/openid-inputicon.gif +0 -0
- data/lib/generators/templates/public/images/orange/left_03.png +0 -0
- data/lib/generators/templates/public/images/orange/right_03.png +0 -0
- data/lib/generators/templates/public/images/progress.gif +0 -0
- data/lib/generators/templates/public/images/right_01.png +0 -0
- data/lib/generators/templates/public/images/right_01_small.png +0 -0
- data/lib/generators/templates/public/images/separator.png +0 -0
- data/lib/generators/templates/public/images/shadow-top.png +0 -0
- data/lib/generators/templates/public/images/shadow_top.png +0 -0
- data/lib/generators/templates/public/images/spinner.gif +0 -0
- data/lib/generators/templates/public/images/spree/progress.gif +0 -0
- data/lib/generators/templates/public/images/spree/spinner.gif +0 -0
- data/lib/generators/templates/public/images/spree/spree.jpg +0 -0
- data/lib/generators/templates/public/images/spree.jpg +0 -0
- data/lib/generators/templates/public/images/step-progress/completed-completed.gif +0 -0
- data/lib/generators/templates/public/images/step-progress/completed-current.gif +0 -0
- data/lib/generators/templates/public/images/step-progress/completed-first.gif +0 -0
- data/lib/generators/templates/public/images/step-progress/current-first.gif +0 -0
- data/lib/generators/templates/public/images/step-progress/current-incomplete.gif +0 -0
- data/lib/generators/templates/public/images/step-progress/current-right.gif +0 -0
- data/lib/generators/templates/public/images/step-progress/incomplete-incomplete.gif +0 -0
- data/lib/generators/templates/public/images/step-progress/incomplete-right.gif +0 -0
- data/lib/generators/templates/public/images/steps/1.png +0 -0
- data/lib/generators/templates/public/images/steps/1_small.png +0 -0
- data/lib/generators/templates/public/images/steps/2.png +0 -0
- data/lib/generators/templates/public/images/steps/2_small.png +0 -0
- data/lib/generators/templates/public/images/steps/3.png +0 -0
- data/lib/generators/templates/public/images/steps/3_small.png +0 -0
- data/lib/generators/templates/public/images/steps/4.png +0 -0
- data/lib/generators/templates/public/images/steps/4_small.png +0 -0
- data/lib/generators/templates/public/images/steps/5.png +0 -0
- data/lib/generators/templates/public/images/steps/5_small.png +0 -0
- data/lib/generators/templates/public/images/steps/6.png +0 -0
- data/lib/generators/templates/public/images/steps/6_small.png +0 -0
- data/lib/generators/templates/public/images/sxsw-ribbon-v1.png +0 -0
- data/lib/generators/templates/public/images/tab_bottom.gif +0 -0
- data/lib/generators/templates/public/images/tile-header.png +0 -0
- data/lib/generators/templates/public/images/tile-slider.png +0 -0
- data/lib/generators/templates/public/images/top-shine.png +0 -0
- data/lib/generators/templates/public/images/tree-nav-icons/bullet.gif +0 -0
- data/lib/generators/templates/public/images/tree-nav-icons/minus.gif +0 -0
- data/lib/generators/templates/public/images/tree-nav-icons/plus.gif +0 -0
- data/lib/generators/templates/public/images/tree-nav-icons/treeview-loading.gif +0 -0
- data/lib/generators/templates/public/images/tree-nav-icons/treeview-sprite.gif +0 -0
- data/lib/generators/templates/public/images/update.png +0 -0
- data/lib/generators/templates/public/images/visa_cid.gif +0 -0
- data/lib/generators/templates/public/images/wrapper-back-2.png +0 -0
- data/lib/generators/templates/public/images/wrapper-back.png +0 -0
- data/lib/generators/templates/public/images/yui-menubaritem_submenuindicator.png +0 -0
- data/lib/generators/templates/public/images/yui-menubaritem_submenuindicator_disabled.png +0 -0
- data/lib/generators/templates/public/images/yui-menuitem_checkbox.png +0 -0
- data/lib/generators/templates/public/images/yui-menuitem_checkbox_disabled.png +0 -0
- data/lib/generators/templates/public/images/yui-menuitem_submenuindicator.png +0 -0
- data/lib/generators/templates/public/images/yui-menuitem_submenuindicator_disabled.png +0 -0
- data/lib/generators/templates/public/images/yui-sprite.png +0 -0
- data/lib/generators/templates/public/javascripts/additional-methods.js +236 -0
- data/lib/generators/templates/public/javascripts/admin/address_states.js +25 -0
- data/lib/generators/templates/public/javascripts/admin/checkouts/edit.js +129 -0
- data/lib/generators/templates/public/javascripts/admin/orders/edit.js +23 -0
- data/lib/generators/templates/public/javascripts/admin/orders/edit_form.js +15 -0
- data/lib/generators/templates/public/javascripts/admin/payments/new.js +9 -0
- data/lib/generators/templates/public/javascripts/admin/unobtrusive_handlers.js +15 -0
- data/lib/generators/templates/public/javascripts/admin.js +226 -0
- data/lib/generators/templates/public/javascripts/application.js +12 -0
- data/lib/generators/templates/public/javascripts/calculator.js +15 -0
- data/lib/generators/templates/public/javascripts/checkout.js +64 -0
- data/lib/generators/templates/public/javascripts/datepicker.js +1445 -0
- data/lib/generators/templates/public/javascripts/gateway.js +13 -0
- data/lib/generators/templates/public/javascripts/jquery-1.3.2.min.js +19 -0
- data/lib/generators/templates/public/javascripts/jquery-1.4.2.min.js +154 -0
- data/lib/generators/templates/public/javascripts/jquery-and-plugins.js +36 -0
- data/lib/generators/templates/public/javascripts/jquery-ui.js +188 -0
- data/lib/generators/templates/public/javascripts/jquery.alerts/images/help.gif +0 -0
- data/lib/generators/templates/public/javascripts/jquery.alerts/images/important.gif +0 -0
- data/lib/generators/templates/public/javascripts/jquery.alerts/images/info.gif +0 -0
- data/lib/generators/templates/public/javascripts/jquery.alerts/images/title.gif +0 -0
- data/lib/generators/templates/public/javascripts/jquery.alerts/jquery.alerts.css +57 -0
- data/lib/generators/templates/public/javascripts/jquery.alerts/jquery.alerts.js +235 -0
- data/lib/generators/templates/public/javascripts/jquery.alerts/jquery.alerts.spree.css +30 -0
- data/lib/generators/templates/public/javascripts/jquery.autocomplete.min.js +13 -0
- data/lib/generators/templates/public/javascripts/jquery.js +19 -0
- data/lib/generators/templates/public/javascripts/jquery.suggest.js +276 -0
- data/lib/generators/templates/public/javascripts/jquery.template.js +255 -0
- data/lib/generators/templates/public/javascripts/jquery.tokeninput.js +618 -0
- data/lib/generators/templates/public/javascripts/jquery.validate.min.js +16 -0
- data/lib/generators/templates/public/javascripts/jrails.autocomplete.js +274 -0
- data/lib/generators/templates/public/javascripts/jrails.js +1 -0
- data/lib/generators/templates/public/javascripts/jsTree/jquery.tree.js +2058 -0
- data/lib/generators/templates/public/javascripts/jsTree/plugins/jquery.tree.contextmenu.js +129 -0
- data/lib/generators/templates/public/javascripts/jsTree/themes/apple/bg.jpg +0 -0
- data/lib/generators/templates/public/javascripts/jsTree/themes/apple/dot_for_ie.gif +0 -0
- data/lib/generators/templates/public/javascripts/jsTree/themes/apple/icons.png +0 -0
- data/lib/generators/templates/public/javascripts/jsTree/themes/apple/style.css +34 -0
- data/lib/generators/templates/public/javascripts/jsTree/themes/apple/throbber.gif +0 -0
- data/lib/generators/templates/public/javascripts/lang/af.js +40 -0
- data/lib/generators/templates/public/javascripts/lang/ar.js +50 -0
- data/lib/generators/templates/public/javascripts/lang/de.js +40 -0
- data/lib/generators/templates/public/javascripts/lang/du.js +40 -0
- data/lib/generators/templates/public/javascripts/lang/en.js +42 -0
- data/lib/generators/templates/public/javascripts/lang/es.js +41 -0
- data/lib/generators/templates/public/javascripts/lang/fi.js +40 -0
- data/lib/generators/templates/public/javascripts/lang/fr.js +44 -0
- data/lib/generators/templates/public/javascripts/lang/gr.js +40 -0
- data/lib/generators/templates/public/javascripts/lang/he.js +49 -0
- data/lib/generators/templates/public/javascripts/lang/it.js +13 -0
- data/lib/generators/templates/public/javascripts/lang/nl.js +40 -0
- data/lib/generators/templates/public/javascripts/lang/no.js +40 -0
- data/lib/generators/templates/public/javascripts/lang/pt.js +50 -0
- data/lib/generators/templates/public/javascripts/lang/ro.js +40 -0
- data/lib/generators/templates/public/javascripts/lang/ru.js +40 -0
- data/lib/generators/templates/public/javascripts/lang/sp.js +40 -0
- data/lib/generators/templates/public/javascripts/lang/sv.js +41 -0
- data/lib/generators/templates/public/javascripts/lang/ua.js +40 -0
- data/lib/generators/templates/public/javascripts/localization/messages_cn.js +24 -0
- data/lib/generators/templates/public/javascripts/localization/messages_cs.js +23 -0
- data/lib/generators/templates/public/javascripts/localization/messages_da.js +21 -0
- data/lib/generators/templates/public/javascripts/localization/messages_de.js +21 -0
- data/lib/generators/templates/public/javascripts/localization/messages_es.js +24 -0
- data/lib/generators/templates/public/javascripts/localization/messages_fr.js +23 -0
- data/lib/generators/templates/public/javascripts/localization/messages_hu.js +21 -0
- data/lib/generators/templates/public/javascripts/localization/messages_it.js +26 -0
- data/lib/generators/templates/public/javascripts/localization/messages_kk.js +23 -0
- data/lib/generators/templates/public/javascripts/localization/messages_nl.js +23 -0
- data/lib/generators/templates/public/javascripts/localization/messages_no.js +23 -0
- data/lib/generators/templates/public/javascripts/localization/messages_pl.js +23 -0
- data/lib/generators/templates/public/javascripts/localization/messages_ptbr.js +30 -0
- data/lib/generators/templates/public/javascripts/localization/messages_ro.js +24 -0
- data/lib/generators/templates/public/javascripts/localization/messages_ru.js +23 -0
- data/lib/generators/templates/public/javascripts/localization/messages_se.js +23 -0
- data/lib/generators/templates/public/javascripts/localization/messages_sk.js +21 -0
- data/lib/generators/templates/public/javascripts/localization/messages_tr.js +24 -0
- data/lib/generators/templates/public/javascripts/localization/messages_tw.js +24 -0
- data/lib/generators/templates/public/javascripts/localization/messages_ua.js +24 -0
- data/lib/generators/templates/public/javascripts/nested-attribute.js +26 -0
- data/lib/generators/templates/public/javascripts/open_id.js +15 -0
- data/lib/generators/templates/public/javascripts/product.js +49 -0
- data/lib/generators/templates/public/javascripts/rails.js +127 -0
- data/lib/generators/templates/public/javascripts/taxonomy.js +196 -0
- data/lib/generators/templates/public/javascripts/zone.js +40 -0
- data/lib/generators/templates/public/stylesheets/admin/admin-forms.css +159 -0
- data/lib/generators/templates/public/stylesheets/admin/admin-reset.css +67 -0
- data/lib/generators/templates/public/stylesheets/admin/admin-tables.css +39 -0
- data/lib/generators/templates/public/stylesheets/admin/admin-typography.css +117 -0
- data/lib/generators/templates/public/stylesheets/admin/admin.css +576 -0
- data/lib/generators/templates/public/stylesheets/admin/autocomplete.css +74 -0
- data/lib/generators/templates/public/stylesheets/admin/dashboard.css +143 -0
- data/lib/generators/templates/public/stylesheets/admin/edit_checkouts.css +57 -0
- data/lib/generators/templates/public/stylesheets/admin/grids.css +314 -0
- data/lib/generators/templates/public/stylesheets/admin/reset-fonts-grids-2-6-0.css +7 -0
- data/lib/generators/templates/public/stylesheets/admin/token-input.css +109 -0
- data/lib/generators/templates/public/stylesheets/admin/yui-includes.css +14 -0
- data/lib/generators/templates/public/stylesheets/datepicker.css +263 -0
- data/lib/generators/templates/public/stylesheets/jquery.autocomplete.css +48 -0
- data/lib/generators/templates/public/stylesheets/scaffold.css +54 -0
- data/lib/generators/templates/public/stylesheets/screen.css +1195 -0
- data/lib/generators/templates/spree_site.rb +8 -0
- data/lib/product_filters.rb +174 -0
- data/lib/redirect_legacy_product_url.rb +13 -0
- data/lib/scopes/dynamic.rb +38 -0
- data/lib/scopes/product.rb +242 -0
- data/lib/scopes/variant.rb +17 -0
- data/lib/scopes.rb +69 -0
- data/lib/seo_assist.rb +38 -0
- data/lib/spree/calculated_adjustments.rb +66 -0
- data/lib/spree/config.rb +31 -0
- data/lib/spree/current_order.rb +14 -0
- data/lib/spree/file_utilz.rb +73 -0
- data/lib/spree/gateway_error.rb +3 -0
- data/lib/spree/preference_access.rb +27 -0
- data/lib/spree/search/base.rb +21 -0
- data/lib/spree/search.rb +47 -0
- data/lib/spree_core/delegate_belongs_to.rb +95 -0
- data/lib/spree_core/enumerable_constants.rb +209 -0
- data/lib/spree_core/ext/active_record.rb +13 -0
- data/lib/spree_core/ext/array.rb +14 -0
- data/lib/spree_core/ext/string.rb +10 -0
- data/lib/spree_core/find_by_param.rb +117 -0
- data/lib/spree_core/preferences/mail_settings.rb +57 -0
- data/lib/spree_core/preferences/model_hooks.rb +293 -0
- data/lib/spree_core/preferences/preference_definition.rb +53 -0
- data/lib/spree_core/ssl_requirement.rb +109 -0
- data/lib/spree_core/theme_support/hook.rb +51 -0
- data/lib/spree_core/theme_support/hook_listener.rb +68 -0
- data/lib/spree_core/theme_support/hook_modifier.rb +35 -0
- data/lib/spree_core/theme_support/more_patches.rb +118 -0
- data/lib/spree_core/theme_support.rb +4 -0
- data/lib/spree_core/validation_group.rb +143 -0
- data/lib/spree_core.rb +144 -0
- data/lib/store_helpers.rb +10 -0
- data/lib/tasks/core.rake +112 -0
- data/lib/tasks/themes.rake +34 -0
- metadata +1027 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Preferences
|
|
3
|
+
# This class handle mail settings using preferences feature available in spree core.
|
|
4
|
+
class MailSettings
|
|
5
|
+
|
|
6
|
+
class << self
|
|
7
|
+
|
|
8
|
+
# When loading from config/initializers/spree.rb the logger
|
|
9
|
+
# variable is not available yet, so defining it here.
|
|
10
|
+
def logger
|
|
11
|
+
Rails.logger
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def init
|
|
15
|
+
# Set mail server settings from preferences
|
|
16
|
+
begin
|
|
17
|
+
logger.info "INFO: Loading mail preferences"
|
|
18
|
+
|
|
19
|
+
if Spree::Config.instance.prefers_enable_mail_delivery?
|
|
20
|
+
mail_server_settings = {
|
|
21
|
+
:address => Spree::Config[:mail_host],
|
|
22
|
+
:domain => Spree::Config[:mail_domain],
|
|
23
|
+
:port => Spree::Config[:mail_port],
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if Spree::Config[:mail_auth_type] != 'none'
|
|
27
|
+
mail_server_settings[:authentication] = Spree::Config[:mail_auth_type]
|
|
28
|
+
mail_server_settings[:user_name] = Spree::Config[:smtp_username]
|
|
29
|
+
mail_server_settings[:password] = Spree::Config[:smtp_password]
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Enable TLS
|
|
33
|
+
if Spree::Config[:secure_connection_type] == 'TLS'
|
|
34
|
+
mail_server_settings[:enable_starttls_auto] = true
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
logger.info "INFO: Setting mails settings to #{mail_server_settings.inspect}"
|
|
38
|
+
ActionMailer::Base.smtp_settings = mail_server_settings
|
|
39
|
+
logger.info "INFO: Enabling mail delivery"
|
|
40
|
+
ActionMailer::Base.perform_deliveries = true
|
|
41
|
+
return true
|
|
42
|
+
else
|
|
43
|
+
logger.warn "NOTICE: Mail not enabled"
|
|
44
|
+
ActionMailer::Base.perform_deliveries = false
|
|
45
|
+
return false
|
|
46
|
+
end
|
|
47
|
+
rescue
|
|
48
|
+
logger.error "========================================================================="
|
|
49
|
+
logger.error "ERROR: Something went wrong while loading mail preferences"
|
|
50
|
+
logger.error " Verify you created a default configuration in admin/configurations"
|
|
51
|
+
logger.error "========================================================================="
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
# Most of this code is from the preferences plugin available at
|
|
2
|
+
# http://github.com/pluginaweek/preferences/tree/master
|
|
3
|
+
|
|
4
|
+
module Spree
|
|
5
|
+
module Preferences
|
|
6
|
+
# Adds support for defining preferences on ActiveRecord models.
|
|
7
|
+
#
|
|
8
|
+
# == Saving preferences
|
|
9
|
+
#
|
|
10
|
+
# Preferences are not automatically saved when they are set. You must save
|
|
11
|
+
# the record that the preferences were set on.
|
|
12
|
+
#
|
|
13
|
+
# For example,
|
|
14
|
+
#
|
|
15
|
+
# class User < ActiveRecord::Base
|
|
16
|
+
# preference :notifications
|
|
17
|
+
# end
|
|
18
|
+
#
|
|
19
|
+
# u = User.new(:login => 'admin', :prefers_notifications => false)
|
|
20
|
+
# u.save!
|
|
21
|
+
#
|
|
22
|
+
# u = User.find_by_login('admin')
|
|
23
|
+
# u.attributes = {:prefers_notifications => true}
|
|
24
|
+
# u.save!
|
|
25
|
+
module ModelHooks
|
|
26
|
+
def self.included(base) #:nodoc:
|
|
27
|
+
base.class_eval do
|
|
28
|
+
extend Spree::Preferences::ModelHooks::MacroMethods
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
module MacroMethods
|
|
33
|
+
# Defines a new preference for all records in the model. By default, preferences
|
|
34
|
+
# are assumed to have a boolean data type, so all values will be typecasted
|
|
35
|
+
# to true/false based on ActiveRecord rules.
|
|
36
|
+
#
|
|
37
|
+
# Configuration options:
|
|
38
|
+
# * +default+ - The default value for the preference. Default is nil.
|
|
39
|
+
#
|
|
40
|
+
# == Examples
|
|
41
|
+
#
|
|
42
|
+
# The example below shows the various ways to define a preference for a
|
|
43
|
+
# particular model.
|
|
44
|
+
#
|
|
45
|
+
# class User < ActiveRecord::Base
|
|
46
|
+
# preference :notifications, :default => false
|
|
47
|
+
# preference :color, :string, :default => 'red'
|
|
48
|
+
# preference :favorite_number, :integer
|
|
49
|
+
# preference :data, :any # Allows any data type to be stored
|
|
50
|
+
# end
|
|
51
|
+
#
|
|
52
|
+
# All preferences are also inherited by subclasses.
|
|
53
|
+
#
|
|
54
|
+
# == Associations
|
|
55
|
+
#
|
|
56
|
+
# After the first preference is defined, the following associations are
|
|
57
|
+
# created for the model:
|
|
58
|
+
# * +stored_preferences+ - A collection of all the custom preferences specified for a record
|
|
59
|
+
#
|
|
60
|
+
# == Generated shortcut methods
|
|
61
|
+
#
|
|
62
|
+
# In addition to calling <tt>prefers?</tt> and +preferred+ on a record, you
|
|
63
|
+
# can also use the shortcut methods that are generated when a preference is
|
|
64
|
+
# defined. For example,
|
|
65
|
+
#
|
|
66
|
+
# class User < ActiveRecord::Base
|
|
67
|
+
# preference :notifications
|
|
68
|
+
# end
|
|
69
|
+
#
|
|
70
|
+
# ...generates the following methods:
|
|
71
|
+
# * <tt>prefers_notifications?</tt> - The same as calling <tt>record.prefers?(:notifications)</tt>
|
|
72
|
+
# * <tt>prefers_notifications=(value)</tt> - The same as calling <tt>record.set_preference(:notifications, value)</tt>
|
|
73
|
+
# * <tt>preferred_notifications</tt> - The same as called <tt>record.preferred(:notifications)</tt>
|
|
74
|
+
# * <tt>preferred_notifications=(value)</tt> - The same as calling <tt>record.set_preference(:notifications, value)</tt>
|
|
75
|
+
#
|
|
76
|
+
# Notice that there are two tenses used depending on the context of the
|
|
77
|
+
# preference. Conventionally, <tt>prefers_notifications?</tt> is better
|
|
78
|
+
# for boolean preferences, while +preferred_color+ is better for non-boolean
|
|
79
|
+
# preferences.
|
|
80
|
+
#
|
|
81
|
+
# Example:
|
|
82
|
+
#
|
|
83
|
+
# user = User.find(:first)
|
|
84
|
+
# user.prefers_notifications? # => false
|
|
85
|
+
# user.prefers_color? # => true
|
|
86
|
+
# user.preferred_color # => 'red'
|
|
87
|
+
# user.preferred_color = 'blue' # => 'blue'
|
|
88
|
+
#
|
|
89
|
+
# user.prefers_notifications = true
|
|
90
|
+
#
|
|
91
|
+
# car = Car.find(:first)
|
|
92
|
+
# user.preferred_color = 'red', car # => 'red'
|
|
93
|
+
# user.preferred_color(car) # => 'red'
|
|
94
|
+
# user.prefers_color?(car) # => true
|
|
95
|
+
#
|
|
96
|
+
# user.save! # => true
|
|
97
|
+
def preference(name, *args)
|
|
98
|
+
unless included_modules.include?(InstanceMethods)
|
|
99
|
+
class_inheritable_hash :preference_definitions
|
|
100
|
+
self.preference_definitions = {}
|
|
101
|
+
|
|
102
|
+
class_inheritable_hash :default_preferences
|
|
103
|
+
self.default_preferences = {}
|
|
104
|
+
|
|
105
|
+
has_many :stored_preferences, :as => :owner, :class_name => 'Preference'
|
|
106
|
+
|
|
107
|
+
after_save :update_preferences
|
|
108
|
+
|
|
109
|
+
include Spree::Preferences::ModelHooks::InstanceMethods
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# Create the definition
|
|
113
|
+
name = name.to_s
|
|
114
|
+
definition = PreferenceDefinition.new(name, *args)
|
|
115
|
+
self.preference_definitions[name] = definition
|
|
116
|
+
self.default_preferences[name] = definition.default_value
|
|
117
|
+
|
|
118
|
+
# Create short-hand helper methods, making sure that the attribute
|
|
119
|
+
# is method-safe in terms of what characters are allowed
|
|
120
|
+
name = name.gsub(/[^A-Za-z0-9_-]/, '').underscore
|
|
121
|
+
|
|
122
|
+
# Query lookup
|
|
123
|
+
define_method("prefers_#{name}?") do |*group|
|
|
124
|
+
prefers?(name, group.first)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# Writer
|
|
128
|
+
define_method("prefers_#{name}=") do |*args|
|
|
129
|
+
set_preference(*([name] + [args].flatten))
|
|
130
|
+
end
|
|
131
|
+
alias_method "preferred_#{name}=", "prefers_#{name}="
|
|
132
|
+
|
|
133
|
+
# Reader
|
|
134
|
+
define_method("preferred_#{name}") do |*group|
|
|
135
|
+
preferred(name, group.first)
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
definition
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
module InstanceMethods
|
|
143
|
+
def self.included(base) #:nodoc:
|
|
144
|
+
base.class_eval do
|
|
145
|
+
alias_method :prefs, :preferences
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
# Finds all preferences, including defaults, for the current record. If
|
|
150
|
+
# any custom group preferences have been stored, then this will include
|
|
151
|
+
# all default preferences within that particular group.
|
|
152
|
+
#
|
|
153
|
+
# == Examples
|
|
154
|
+
#
|
|
155
|
+
# A user with no stored values:
|
|
156
|
+
# user = User.find(:first)
|
|
157
|
+
# user.preferences
|
|
158
|
+
# => {"language"=>"English", "color"=>nil}
|
|
159
|
+
#
|
|
160
|
+
# A user with stored values for a particular group:
|
|
161
|
+
# user.preferred_color = 'red', 'cars'
|
|
162
|
+
# user.preferences
|
|
163
|
+
# => {"language"=>"English", "color"=>nil, "cars"=>{"language=>"English", "color"=>"red"}}
|
|
164
|
+
#
|
|
165
|
+
# Getting preference values for the owning record:
|
|
166
|
+
# user.preferences(nil)
|
|
167
|
+
# => {"language"=>"English", "color"=>nil}
|
|
168
|
+
#
|
|
169
|
+
# Getting preference values for a particular group:
|
|
170
|
+
# user.preferences('cars')
|
|
171
|
+
# => {"language"=>"English", "color"=>"red"}
|
|
172
|
+
def preferences(*args)
|
|
173
|
+
if args.empty?
|
|
174
|
+
group = nil
|
|
175
|
+
conditions = {}
|
|
176
|
+
else
|
|
177
|
+
group = args.first
|
|
178
|
+
group_id, group_type = Preference.split_group(group)
|
|
179
|
+
conditions = {:group_id => group_id, :group_type => group_type}
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
# Find all of the stored preferences
|
|
183
|
+
stored_preferences = self.stored_preferences.find(:all, :conditions => conditions)
|
|
184
|
+
|
|
185
|
+
# Hashify attribute -> value or group -> attribute -> value
|
|
186
|
+
stored_preferences.inject(self.class.default_preferences.dup) do |all_preferences, preference|
|
|
187
|
+
if !group && (preference_group = preference.group)
|
|
188
|
+
preferences = all_preferences[preference_group] ||= self.class.default_preferences.dup
|
|
189
|
+
else
|
|
190
|
+
preferences = all_preferences
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
preferences[preference.name] = preference.value
|
|
194
|
+
all_preferences
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
# Queries whether or not a value has been specified for the given attribute.
|
|
199
|
+
# This is dependent on how the value is type-casted.
|
|
200
|
+
#
|
|
201
|
+
# == Examples
|
|
202
|
+
#
|
|
203
|
+
# user = User.find(:first)
|
|
204
|
+
# user.prefers?(:notifications) # => true
|
|
205
|
+
#
|
|
206
|
+
# user.prefers(:notifications, 'error') # => true
|
|
207
|
+
#
|
|
208
|
+
# newsgroup = Newsgroup.find(:first)
|
|
209
|
+
# user.prefers?(:notifications, newsgroup) # => false
|
|
210
|
+
def prefers?(name, group = nil)
|
|
211
|
+
name = name.to_s
|
|
212
|
+
|
|
213
|
+
value = preferred(name, group)
|
|
214
|
+
preference_definitions[name].query(value)
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
# Gets the preferred value for the given attribute.
|
|
218
|
+
#
|
|
219
|
+
# == Examples
|
|
220
|
+
#
|
|
221
|
+
# user = User.find(:first)
|
|
222
|
+
# user.preferred(:color) # => 'red'
|
|
223
|
+
#
|
|
224
|
+
# user.preferred(:color, 'cars') # => 'blue'
|
|
225
|
+
#
|
|
226
|
+
# car = Car.find(:first)
|
|
227
|
+
# user.preferred(:color, car) # => 'black'
|
|
228
|
+
def preferred(name, group = nil)
|
|
229
|
+
name = name.to_s
|
|
230
|
+
|
|
231
|
+
if @preference_values && @preference_values[name] && @preference_values[name].include?(group)
|
|
232
|
+
value = @preference_values[name][group]
|
|
233
|
+
else
|
|
234
|
+
group_id, group_type = Preference.split_group(group)
|
|
235
|
+
preference = stored_preferences.find(:first, :conditions => {:name => name, :group_id => group_id, :group_type => group_type})
|
|
236
|
+
value = preference ? preference.value : preference_definitions[name].default_value
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
value
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
# Sets a new value for the given attribute. The actual Preference record
|
|
243
|
+
# is *not* created until the actual record is saved.
|
|
244
|
+
#
|
|
245
|
+
# == Examples
|
|
246
|
+
#
|
|
247
|
+
# user = User.find(:first)
|
|
248
|
+
# user.set_preference(:notifications, false) # => false
|
|
249
|
+
# user.save!
|
|
250
|
+
#
|
|
251
|
+
# newsgroup = Newsgroup.find(:first)
|
|
252
|
+
# user.set_preference(:notifications, true, newsgroup) # => true
|
|
253
|
+
# user.save!
|
|
254
|
+
def set_preference(name, value, group = nil)
|
|
255
|
+
name = name.to_s
|
|
256
|
+
|
|
257
|
+
@preference_values ||= {}
|
|
258
|
+
@preference_values[name] ||= {}
|
|
259
|
+
@preference_values[name][group] = value
|
|
260
|
+
|
|
261
|
+
value
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
private
|
|
265
|
+
|
|
266
|
+
# Updates any preferences that have been changed/added since the record
|
|
267
|
+
# was last saved
|
|
268
|
+
def update_preferences
|
|
269
|
+
if @preference_values
|
|
270
|
+
@preference_values.each do |name, grouped_records|
|
|
271
|
+
grouped_records.each do |group, value|
|
|
272
|
+
group_id, group_type = Preference.split_group(group)
|
|
273
|
+
attributes = {:name => name, :group_id => group_id, :group_type => group_type}
|
|
274
|
+
|
|
275
|
+
# Find an existing preference or build a new one
|
|
276
|
+
preference = stored_preferences.find(:first, :conditions => attributes)
|
|
277
|
+
if preference.nil?
|
|
278
|
+
attribute = attributes.delete(:attribute)
|
|
279
|
+
preference = stored_preferences.build(attributes)
|
|
280
|
+
preference['attribute'] = attribute
|
|
281
|
+
end
|
|
282
|
+
preference.value = value
|
|
283
|
+
preference.save!
|
|
284
|
+
end
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
@preference_values = nil
|
|
288
|
+
end
|
|
289
|
+
end
|
|
290
|
+
end
|
|
291
|
+
end
|
|
292
|
+
end
|
|
293
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Most of this code is from the preferences plugin available at
|
|
2
|
+
# http://github.com/pluginaweek/preferences/tree/master
|
|
3
|
+
#
|
|
4
|
+
module Spree
|
|
5
|
+
# Adds support for defining preferences on ActiveRecord models.
|
|
6
|
+
module Preferences
|
|
7
|
+
# Represents the definition of a preference for a particular model
|
|
8
|
+
class PreferenceDefinition
|
|
9
|
+
def initialize(name, *args) #:nodoc:
|
|
10
|
+
options = args.extract_options!
|
|
11
|
+
options.assert_valid_keys(:default)
|
|
12
|
+
|
|
13
|
+
@type = args.first ? args.first.to_s : 'boolean'
|
|
14
|
+
|
|
15
|
+
# Create a column that will be responsible for typecasting
|
|
16
|
+
@column = ActiveRecord::ConnectionAdapters::Column.new(name.to_s, options[:default], @type == 'any' ? nil : @type)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# The attribute which is being preferenced
|
|
20
|
+
def name
|
|
21
|
+
@column.name
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# The default value to use for the preference in case none have been
|
|
25
|
+
# previously defined
|
|
26
|
+
def default_value
|
|
27
|
+
@column.default
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Typecasts the value based on the type of preference that was defined
|
|
31
|
+
def type_cast(value)
|
|
32
|
+
if @type == 'any'
|
|
33
|
+
value
|
|
34
|
+
else
|
|
35
|
+
@column.type_cast(value)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Typecasts the value to true/false depending on the type of preference
|
|
40
|
+
def query(value)
|
|
41
|
+
unless value = type_cast(value)
|
|
42
|
+
false
|
|
43
|
+
else
|
|
44
|
+
if @column.number?
|
|
45
|
+
!value.zero?
|
|
46
|
+
else
|
|
47
|
+
!value.blank?
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# ++
|
|
2
|
+
# Copyright (c) 2007-2010, Rails Dog LLC and other contributors
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
#
|
|
5
|
+
# Redistribution and use in source and binary forms, with or without modification,
|
|
6
|
+
# are permitted provided that the following conditions are met:
|
|
7
|
+
#
|
|
8
|
+
# * Redistributions of source code must retain the above copyright notice,
|
|
9
|
+
# this list of conditions and the following disclaimer.
|
|
10
|
+
# * Redistributions in binary form must reproduce the above copyright notice,
|
|
11
|
+
# this list of conditions and the following disclaimer in the documentation
|
|
12
|
+
# and/or other materials provided with the distribution.
|
|
13
|
+
# * Neither the name of the Rails Dog LLC nor the names of its
|
|
14
|
+
# contributors may be used to endorse or promote products derived from this
|
|
15
|
+
# software without specific prior written permission.
|
|
16
|
+
#
|
|
17
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
18
|
+
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
19
|
+
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
20
|
+
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
21
|
+
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
22
|
+
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
23
|
+
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
24
|
+
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
25
|
+
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
26
|
+
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
27
|
+
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
|
+
# --
|
|
29
|
+
|
|
30
|
+
# ++
|
|
31
|
+
# Copyright (c) 2005 David Heinemeier Hansson
|
|
32
|
+
#
|
|
33
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
|
34
|
+
# a copy of this software and associated documentation files (the
|
|
35
|
+
# "Software"), to deal in the Software without restriction, including
|
|
36
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
|
37
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
38
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
|
39
|
+
# the following conditions:
|
|
40
|
+
#
|
|
41
|
+
# The above copyright notice and this permission notice shall be
|
|
42
|
+
# included in all copies or substantial portions of the Software.
|
|
43
|
+
#
|
|
44
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
45
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
46
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
47
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
48
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
49
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
50
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
51
|
+
# --
|
|
52
|
+
|
|
53
|
+
# Modified version of the ssl_requirement plugin by DHH
|
|
54
|
+
module SslRequirement
|
|
55
|
+
def self.included(controller)
|
|
56
|
+
controller.extend(ClassMethods)
|
|
57
|
+
controller.before_filter(:ensure_proper_protocol)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
module ClassMethods
|
|
61
|
+
# Specifies that the named actions requires an SSL connection to be performed (which is enforced by ensure_proper_protocol).
|
|
62
|
+
def ssl_required(*actions)
|
|
63
|
+
write_inheritable_array(:ssl_required_actions, actions)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def ssl_allowed(*actions)
|
|
67
|
+
write_inheritable_array(:ssl_allowed_actions, actions)
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
protected
|
|
72
|
+
# Returns true if the current action is supposed to run as SSL
|
|
73
|
+
def ssl_required?
|
|
74
|
+
(self.class.read_inheritable_attribute(:ssl_required_actions) || []).include?(action_name.to_sym)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def ssl_allowed?
|
|
78
|
+
(self.class.read_inheritable_attribute(:ssl_allowed_actions) || []).include?(action_name.to_sym)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
private
|
|
82
|
+
def dvp_mode?
|
|
83
|
+
ENV['RAILS_ENV'] == 'development'
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def test_mode?
|
|
87
|
+
ENV['RAILS_ENV'] == 'test' || ENV['RAILS_ENV'] == 'cucumber'
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# don't require ssl in development or test mode
|
|
91
|
+
def ssl_supported?
|
|
92
|
+
((dvp_mode? || test_mode?) && Spree::Config[:allow_ssl_in_development_and_test]) ||
|
|
93
|
+
(!dvp_mode? && !test_mode? && Spree::Config[:allow_ssl_in_production]) ? true : false
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def ensure_proper_protocol
|
|
97
|
+
return true if ssl_allowed?
|
|
98
|
+
|
|
99
|
+
if ssl_required? && !request.ssl? && ssl_supported?
|
|
100
|
+
redirect_to "https://" + request.host + request.fullpath
|
|
101
|
+
flash.keep
|
|
102
|
+
return false
|
|
103
|
+
elsif request.ssl? && !ssl_required?
|
|
104
|
+
redirect_to "http://" + request.host + request.fullpath
|
|
105
|
+
flash.keep
|
|
106
|
+
return false
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module ThemeSupport
|
|
3
|
+
module Hook
|
|
4
|
+
|
|
5
|
+
@@listener_classes = []
|
|
6
|
+
@@listeners = nil
|
|
7
|
+
@@hook_modifiers = {}
|
|
8
|
+
|
|
9
|
+
class << self
|
|
10
|
+
# Adds a listener class.
|
|
11
|
+
# Automatically called when a class inherits from Spree::ThemeSupport::HookListener.
|
|
12
|
+
def add_listener(klass)
|
|
13
|
+
raise "Hooks must include Singleton module." unless klass.included_modules.include?(Singleton)
|
|
14
|
+
@@listener_classes << klass
|
|
15
|
+
clear_listeners_instances
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Returns all the listerners instances.
|
|
19
|
+
def listeners
|
|
20
|
+
@@listeners ||= @@listener_classes.uniq.collect {|listener| listener.instance}
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Clears all the listeners.
|
|
24
|
+
def clear_listeners
|
|
25
|
+
@@listener_classes = []
|
|
26
|
+
clear_listeners_instances
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Clears all the listeners instances.
|
|
30
|
+
def clear_listeners_instances
|
|
31
|
+
@@listeners = nil
|
|
32
|
+
@@hook_modifiers = {}
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Take the content captured with a hook helper and modify with each HookModifier
|
|
36
|
+
def render_hook(hook_name, content, context, locals = {})
|
|
37
|
+
modifiers_for_hook(hook_name).inject(content) { |result, modifier| modifier.apply_to(result, context, locals) }
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# All the HookModifier instances that are associated with this hook_name in extension load order and order they were defined
|
|
41
|
+
def modifiers_for_hook(hook_name)
|
|
42
|
+
@@hook_modifiers[hook_name] ||= listeners.map {|l| l.modifiers_for_hook(hook_name)}.flatten
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module ThemeSupport
|
|
3
|
+
|
|
4
|
+
# Listener class used for views hooks.
|
|
5
|
+
class HookListener
|
|
6
|
+
include Singleton
|
|
7
|
+
|
|
8
|
+
attr_accessor :hook_modifiers
|
|
9
|
+
|
|
10
|
+
def initialize
|
|
11
|
+
@hook_modifiers = []
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def modifiers_for_hook(hook_name)
|
|
15
|
+
hook_modifiers.select{|hm| hm.hook_name == hook_name}
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
# Replace contents of hook_name using supplied render args or string returned from block
|
|
20
|
+
def self.replace(hook_name, options = {}, &block)
|
|
21
|
+
add_hook_modifier(hook_name, :replace, options, &block)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Insert before existing contents of hook_name using supplied render args or string returned from block
|
|
25
|
+
def self.insert_before(hook_name, options = {}, &block)
|
|
26
|
+
add_hook_modifier(hook_name, :insert_before, options, &block)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Insert after existing contents of hook_name using supplied render args or string returned from block
|
|
30
|
+
def self.insert_after(hook_name, options = {}, &block)
|
|
31
|
+
add_hook_modifier(hook_name, :insert_after, options, &block)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Clear contents of hook_name
|
|
35
|
+
def self.remove(hook_name)
|
|
36
|
+
add_hook_modifier(hook_name, :replace)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
private
|
|
41
|
+
|
|
42
|
+
def self.add_hook_modifier(hook_name, action, options = {}, &block)
|
|
43
|
+
if block
|
|
44
|
+
renderer = lambda do |template, locals|
|
|
45
|
+
template.controller.render_to_string(:inline => yield, :locals => locals)
|
|
46
|
+
end
|
|
47
|
+
else
|
|
48
|
+
if options.empty?
|
|
49
|
+
renderer = nil
|
|
50
|
+
else
|
|
51
|
+
renderer = lambda do |template, locals|
|
|
52
|
+
render_args = [options]
|
|
53
|
+
if options.is_a?(Hash)
|
|
54
|
+
options[:locals] = locals
|
|
55
|
+
else
|
|
56
|
+
render_args << locals
|
|
57
|
+
end
|
|
58
|
+
template.render(*render_args)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
instance.hook_modifiers << HookModifier.new(hook_name, action, renderer)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
end
|
|
68
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module ThemeSupport
|
|
3
|
+
|
|
4
|
+
# A hook modifier is created for each usage of 'insert_before','replace' etc.
|
|
5
|
+
# This stores how the original contents of the hook should be modified
|
|
6
|
+
# and does the work of altering the hooks content appropriately
|
|
7
|
+
class HookModifier
|
|
8
|
+
attr_accessor :hook_name
|
|
9
|
+
attr_accessor :action
|
|
10
|
+
attr_accessor :renderer
|
|
11
|
+
|
|
12
|
+
def initialize(hook_name, action, renderer = nil)
|
|
13
|
+
@hook_name = hook_name
|
|
14
|
+
@action = action
|
|
15
|
+
@renderer = renderer
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def apply_to(content, context, locals = {})
|
|
19
|
+
return '' if renderer.nil?
|
|
20
|
+
case action
|
|
21
|
+
when :insert_before
|
|
22
|
+
"#{renderer.call(context, locals)}#{content}".html_safe
|
|
23
|
+
when :insert_after
|
|
24
|
+
"#{content}#{renderer.call(context, locals)}".html_safe
|
|
25
|
+
when :replace
|
|
26
|
+
renderer.call(context, locals).to_s.html_safe
|
|
27
|
+
else
|
|
28
|
+
''
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
35
|
+
end
|