goca-spree-backend 3.1.14.rails.5.0
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/Gemfile +6 -0
- data/Rakefile +15 -0
- data/app/assets/images/admin/payment_banner.png +0 -0
- data/app/assets/images/admin/progress.gif +0 -0
- data/app/assets/images/credit_cards/credit_card.gif +0 -0
- data/app/assets/javascripts/spree/backend/address_states.js +33 -0
- data/app/assets/javascripts/spree/backend/adjustments.js.coffee +17 -0
- data/app/assets/javascripts/spree/backend/admin.js +402 -0
- data/app/assets/javascripts/spree/backend/calculator.js +16 -0
- data/app/assets/javascripts/spree/backend/checkouts/edit.js +89 -0
- data/app/assets/javascripts/spree/backend/gateway.js +13 -0
- data/app/assets/javascripts/spree/backend/general_settings.js.coffee +13 -0
- data/app/assets/javascripts/spree/backend/handlebar_extensions.js +7 -0
- data/app/assets/javascripts/spree/backend/line_items.js.coffee +64 -0
- data/app/assets/javascripts/spree/backend/line_items_on_order_edit.js +49 -0
- data/app/assets/javascripts/spree/backend/nested-attribute.js +27 -0
- data/app/assets/javascripts/spree/backend/option_type_autocomplete.js +43 -0
- data/app/assets/javascripts/spree/backend/option_value_picker.js +45 -0
- data/app/assets/javascripts/spree/backend/orders/edit.js +5 -0
- data/app/assets/javascripts/spree/backend/orders/edit_form.js +21 -0
- data/app/assets/javascripts/spree/backend/payments/edit.js.coffee +145 -0
- data/app/assets/javascripts/spree/backend/payments/new.js +50 -0
- data/app/assets/javascripts/spree/backend/product_picker.js +49 -0
- data/app/assets/javascripts/spree/backend/progress.js.coffee +6 -0
- data/app/assets/javascripts/spree/backend/promotions.js +170 -0
- data/app/assets/javascripts/spree/backend/returns/expedited_exchanges_warning.coffee +4 -0
- data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +35 -0
- data/app/assets/javascripts/spree/backend/shipments.js.erb +334 -0
- data/app/assets/javascripts/spree/backend/spree-select2.js +7 -0
- data/app/assets/javascripts/spree/backend/states.js +11 -0
- data/app/assets/javascripts/spree/backend/stock_management.js.coffee +9 -0
- data/app/assets/javascripts/spree/backend/stock_movement.js.coffee +19 -0
- data/app/assets/javascripts/spree/backend/stock_transfer.js.coffee +198 -0
- data/app/assets/javascripts/spree/backend/taxon_autocomplete.js +52 -0
- data/app/assets/javascripts/spree/backend/taxon_tree_menu.js.coffee +22 -0
- data/app/assets/javascripts/spree/backend/taxonomy.js.coffee +149 -0
- data/app/assets/javascripts/spree/backend/taxons.js.coffee +87 -0
- data/app/assets/javascripts/spree/backend/user_picker.js +40 -0
- data/app/assets/javascripts/spree/backend/variant_autocomplete.js.coffee +38 -0
- data/app/assets/javascripts/spree/backend/variant_management.js.coffee +10 -0
- data/app/assets/javascripts/spree/backend/zone.js.coffee +43 -0
- data/app/assets/javascripts/spree/backend.js +79 -0
- data/app/assets/javascripts/spree/frontend/backend.js +1 -0
- data/app/assets/stylesheets/spree/backend/components/_buttons.scss +37 -0
- data/app/assets/stylesheets/spree/backend/components/_filters.scss +26 -0
- data/app/assets/stylesheets/spree/backend/components/_icons.scss +257 -0
- data/app/assets/stylesheets/spree/backend/components/_labels.scss +53 -0
- data/app/assets/stylesheets/spree/backend/components/_main.scss +11 -0
- data/app/assets/stylesheets/spree/backend/components/_navigation.scss +14 -0
- data/app/assets/stylesheets/spree/backend/components/_page_header.scss +32 -0
- data/app/assets/stylesheets/spree/backend/components/_panels.scss +3 -0
- data/app/assets/stylesheets/spree/backend/components/_progress.scss +22 -0
- data/app/assets/stylesheets/spree/backend/components/_sidebar.scss +122 -0
- data/app/assets/stylesheets/spree/backend/components/_spinner.scss +95 -0
- data/app/assets/stylesheets/spree/backend/components/_tables.scss +56 -0
- data/app/assets/stylesheets/spree/backend/components/_taxon_products_view.scss +70 -0
- data/app/assets/stylesheets/spree/backend/components/_variables.scss +12 -0
- data/app/assets/stylesheets/spree/backend/components/_wells.scss +3 -0
- data/app/assets/stylesheets/spree/backend/global/_variables.scss +37 -0
- data/app/assets/stylesheets/spree/backend/plugins/_jquery_ui.scss +109 -0
- data/app/assets/stylesheets/spree/backend/plugins/_js_tree.scss +0 -0
- data/app/assets/stylesheets/spree/backend/plugins/_select2.scss +127 -0
- data/app/assets/stylesheets/spree/backend/sections/_account.scss +16 -0
- data/app/assets/stylesheets/spree/backend/shared/_base.scss +25 -0
- data/app/assets/stylesheets/spree/backend/shared/_forms.scss +59 -0
- data/app/assets/stylesheets/spree/backend/shared/_typography.scss +5 -0
- data/app/assets/stylesheets/spree/backend/spree_admin.css.scss +28 -0
- data/app/assets/stylesheets/spree/backend.css +11 -0
- data/app/assets/stylesheets/spree/frontend/backend.css +1 -0
- data/app/controllers/spree/admin/adjustments_controller.rb +38 -0
- data/app/controllers/spree/admin/base_controller.rb +67 -0
- data/app/controllers/spree/admin/countries_controller.rb +11 -0
- data/app/controllers/spree/admin/customer_returns_controller.rb +68 -0
- data/app/controllers/spree/admin/general_settings_controller.rb +40 -0
- data/app/controllers/spree/admin/images_controller.rb +50 -0
- data/app/controllers/spree/admin/log_entries_controller.rb +19 -0
- data/app/controllers/spree/admin/option_types_controller.rb +48 -0
- data/app/controllers/spree/admin/option_values_controller.rb +11 -0
- data/app/controllers/spree/admin/orders/customer_details_controller.rb +74 -0
- data/app/controllers/spree/admin/orders_controller.rb +147 -0
- data/app/controllers/spree/admin/payment_methods_controller.rb +72 -0
- data/app/controllers/spree/admin/payments_controller.rb +103 -0
- data/app/controllers/spree/admin/product_properties_controller.rb +18 -0
- data/app/controllers/spree/admin/products_controller.rb +156 -0
- data/app/controllers/spree/admin/promotion_actions_controller.rb +45 -0
- data/app/controllers/spree/admin/promotion_categories_controller.rb +6 -0
- data/app/controllers/spree/admin/promotion_rules_controller.rb +50 -0
- data/app/controllers/spree/admin/promotions_controller.rb +36 -0
- data/app/controllers/spree/admin/properties_controller.rb +23 -0
- data/app/controllers/spree/admin/prototypes_controller.rb +27 -0
- data/app/controllers/spree/admin/refund_reasons_controller.rb +6 -0
- data/app/controllers/spree/admin/refunds_controller.rb +38 -0
- data/app/controllers/spree/admin/reimbursement_types_controller.rb +6 -0
- data/app/controllers/spree/admin/reimbursements_controller.rb +45 -0
- data/app/controllers/spree/admin/reports_controller.rb +65 -0
- data/app/controllers/spree/admin/resource_controller.rb +260 -0
- data/app/controllers/spree/admin/return_authorization_reasons_controller.rb +6 -0
- data/app/controllers/spree/admin/return_authorizations_controller.rb +51 -0
- data/app/controllers/spree/admin/return_index_controller.rb +28 -0
- data/app/controllers/spree/admin/return_items_controller.rb +9 -0
- data/app/controllers/spree/admin/roles_controller.rb +6 -0
- data/app/controllers/spree/admin/root_controller.rb +18 -0
- data/app/controllers/spree/admin/search_controller.rb +41 -0
- data/app/controllers/spree/admin/shipping_categories_controller.rb +6 -0
- data/app/controllers/spree/admin/shipping_methods_controller.rb +46 -0
- data/app/controllers/spree/admin/state_changes_controller.rb +18 -0
- data/app/controllers/spree/admin/states_controller.rb +29 -0
- data/app/controllers/spree/admin/stock_items_controller.rb +51 -0
- data/app/controllers/spree/admin/stock_locations_controller.rb +16 -0
- data/app/controllers/spree/admin/stock_movements_controller.rb +39 -0
- data/app/controllers/spree/admin/stock_transfers_controller.rb +51 -0
- data/app/controllers/spree/admin/store_credit_categories_controller.rb +6 -0
- data/app/controllers/spree/admin/store_credits_controller.rb +94 -0
- data/app/controllers/spree/admin/tax_categories_controller.rb +6 -0
- data/app/controllers/spree/admin/tax_rates_controller.rb +15 -0
- data/app/controllers/spree/admin/taxonomies_controller.rb +15 -0
- data/app/controllers/spree/admin/taxons_controller.rb +126 -0
- data/app/controllers/spree/admin/trackers_controller.rb +6 -0
- data/app/controllers/spree/admin/users_controller.rb +145 -0
- data/app/controllers/spree/admin/variants_controller.rb +57 -0
- data/app/controllers/spree/admin/variants_including_master_controller.rb +16 -0
- data/app/controllers/spree/admin/zones_controller.rb +26 -0
- data/app/helpers/spree/admin/adjustments_helper.rb +37 -0
- data/app/helpers/spree/admin/base_helper.rb +157 -0
- data/app/helpers/spree/admin/customer_returns_helper.rb +9 -0
- data/app/helpers/spree/admin/general_settings_helper.rb +13 -0
- data/app/helpers/spree/admin/images_helper.rb +18 -0
- data/app/helpers/spree/admin/inventory_settings_helper.rb +9 -0
- data/app/helpers/spree/admin/navigation_helper.rb +248 -0
- data/app/helpers/spree/admin/orders_helper.rb +69 -0
- data/app/helpers/spree/admin/payments_helper.rb +11 -0
- data/app/helpers/spree/admin/products_helper.rb +29 -0
- data/app/helpers/spree/admin/reimbursement_type_helper.rb +9 -0
- data/app/helpers/spree/admin/reimbursements_helper.rb +14 -0
- data/app/helpers/spree/admin/stock_locations_helper.rb +15 -0
- data/app/helpers/spree/admin/stock_movements_helper.rb +24 -0
- data/app/helpers/spree/admin/tables_helper.rb +15 -0
- data/app/helpers/spree/admin/taxons_helper.rb +9 -0
- data/app/helpers/spree/promotion_rules_helper.rb +13 -0
- data/app/models/spree/admin/resource.rb +35 -0
- data/app/models/spree/backend_configuration.rb +21 -0
- data/app/views/kaminari/_first_page.html.erb +11 -0
- data/app/views/kaminari/_gap.html.erb +8 -0
- data/app/views/kaminari/_last_page.html.erb +11 -0
- data/app/views/kaminari/_next_page.html.erb +15 -0
- data/app/views/kaminari/_page.html.erb +12 -0
- data/app/views/kaminari/_paginator.html.erb +23 -0
- data/app/views/kaminari/_prev_page.html.erb +15 -0
- data/app/views/spree/admin/adjustments/_adjustment.html.erb +17 -0
- data/app/views/spree/admin/adjustments/_adjustments_table.html.erb +31 -0
- data/app/views/spree/admin/adjustments/_form.html.erb +12 -0
- data/app/views/spree/admin/adjustments/edit.html.erb +19 -0
- data/app/views/spree/admin/adjustments/index.html.erb +34 -0
- data/app/views/spree/admin/adjustments/new.html.erb +19 -0
- data/app/views/spree/admin/countries/_form.html.erb +20 -0
- data/app/views/spree/admin/countries/edit.html.erb +14 -0
- data/app/views/spree/admin/countries/index.html.erb +31 -0
- data/app/views/spree/admin/countries/new.html.erb +13 -0
- data/app/views/spree/admin/customer_returns/_reimbursements_table.html.erb +36 -0
- data/app/views/spree/admin/customer_returns/_return_item_decision.html.erb +50 -0
- data/app/views/spree/admin/customer_returns/_return_item_selection.html.erb +45 -0
- data/app/views/spree/admin/customer_returns/edit.html.erb +61 -0
- data/app/views/spree/admin/customer_returns/index.html.erb +56 -0
- data/app/views/spree/admin/customer_returns/new.html.erb +47 -0
- data/app/views/spree/admin/general_settings/edit.html.erb +143 -0
- data/app/views/spree/admin/images/_form.html.erb +18 -0
- data/app/views/spree/admin/images/edit.html.erb +30 -0
- data/app/views/spree/admin/images/index.html.erb +55 -0
- data/app/views/spree/admin/images/new.html.erb +19 -0
- data/app/views/spree/admin/inventory_units/adjust.html.erb +29 -0
- data/app/views/spree/admin/log_entries/index.html.erb +33 -0
- data/app/views/spree/admin/option_types/_form.html.erb +17 -0
- data/app/views/spree/admin/option_types/_option_value_fields.html.erb +9 -0
- data/app/views/spree/admin/option_types/edit.html.erb +49 -0
- data/app/views/spree/admin/option_types/index.html.erb +44 -0
- data/app/views/spree/admin/option_types/new.html.erb +13 -0
- data/app/views/spree/admin/orders/_add_line_item.html.erb +17 -0
- data/app/views/spree/admin/orders/_add_product.html.erb +18 -0
- data/app/views/spree/admin/orders/_adjustments.html.erb +33 -0
- data/app/views/spree/admin/orders/_form.html.erb +56 -0
- data/app/views/spree/admin/orders/_line_item.html.erb +21 -0
- data/app/views/spree/admin/orders/_line_items.html.erb +46 -0
- data/app/views/spree/admin/orders/_line_items_edit_form.html.erb +39 -0
- data/app/views/spree/admin/orders/_order_actions.html.erb +12 -0
- data/app/views/spree/admin/orders/_risk_analysis.html.erb +47 -0
- data/app/views/spree/admin/orders/_shipment.html.erb +108 -0
- data/app/views/spree/admin/orders/_shipment_manifest.html.erb +42 -0
- data/app/views/spree/admin/orders/cart.html.erb +31 -0
- data/app/views/spree/admin/orders/customer_details/_form.html.erb +106 -0
- data/app/views/spree/admin/orders/customer_details/edit.html.erb +29 -0
- data/app/views/spree/admin/orders/edit.html.erb +35 -0
- data/app/views/spree/admin/orders/index.html.erb +226 -0
- data/app/views/spree/admin/payment_methods/_form.html.erb +56 -0
- data/app/views/spree/admin/payment_methods/edit.html.erb +13 -0
- data/app/views/spree/admin/payment_methods/index.html.erb +46 -0
- data/app/views/spree/admin/payment_methods/new.html.erb +13 -0
- data/app/views/spree/admin/payments/_capture_events.html.erb +19 -0
- data/app/views/spree/admin/payments/_form.html.erb +33 -0
- data/app/views/spree/admin/payments/_list.html.erb +38 -0
- data/app/views/spree/admin/payments/credit.html.erb +18 -0
- data/app/views/spree/admin/payments/index.html.erb +38 -0
- data/app/views/spree/admin/payments/new.html.erb +25 -0
- data/app/views/spree/admin/payments/show.html.erb +28 -0
- data/app/views/spree/admin/payments/source_forms/_gateway.html.erb +56 -0
- data/app/views/spree/admin/payments/source_forms/_storecredit.html.erb +9 -0
- data/app/views/spree/admin/payments/source_views/_check.html.erb +0 -0
- data/app/views/spree/admin/payments/source_views/_gateway.html.erb +21 -0
- data/app/views/spree/admin/payments/source_views/_storecredit.html.erb +29 -0
- data/app/views/spree/admin/product_properties/_product_property_fields.html.erb +19 -0
- data/app/views/spree/admin/product_properties/index.html.erb +43 -0
- data/app/views/spree/admin/products/_add_stock_form.html.erb +42 -0
- data/app/views/spree/admin/products/_autocomplete.js.erb +25 -0
- data/app/views/spree/admin/products/_form.html.erb +224 -0
- data/app/views/spree/admin/products/_properties_form.erb +10 -0
- data/app/views/spree/admin/products/edit.html.erb +15 -0
- data/app/views/spree/admin/products/index.html.erb +91 -0
- data/app/views/spree/admin/products/new.html.erb +89 -0
- data/app/views/spree/admin/products/stock.html.erb +78 -0
- data/app/views/spree/admin/promotion_actions/create.js.erb +12 -0
- data/app/views/spree/admin/promotion_actions/destroy.js.erb +1 -0
- data/app/views/spree/admin/promotion_categories/_form.html.erb +11 -0
- data/app/views/spree/admin/promotion_categories/edit.html.erb +11 -0
- data/app/views/spree/admin/promotion_categories/index.html.erb +34 -0
- data/app/views/spree/admin/promotion_categories/new.html.erb +11 -0
- data/app/views/spree/admin/promotion_rules/create.js.erb +10 -0
- data/app/views/spree/admin/promotion_rules/destroy.js.erb +3 -0
- data/app/views/spree/admin/promotions/_actions.html.erb +35 -0
- data/app/views/spree/admin/promotions/_form.html.erb +60 -0
- data/app/views/spree/admin/promotions/_promotion_action.html.erb +12 -0
- data/app/views/spree/admin/promotions/_promotion_rule.html.erb +11 -0
- data/app/views/spree/admin/promotions/_rules.html.erb +46 -0
- data/app/views/spree/admin/promotions/actions/_create_adjustment.html.erb +30 -0
- data/app/views/spree/admin/promotions/actions/_create_item_adjustments.html.erb +28 -0
- data/app/views/spree/admin/promotions/actions/_create_line_items.html.erb +25 -0
- data/app/views/spree/admin/promotions/calculators/_default_fields.html.erb +10 -0
- data/app/views/spree/admin/promotions/calculators/tiered_flat_rate/_fields.html.erb +42 -0
- data/app/views/spree/admin/promotions/calculators/tiered_percent/_fields.html.erb +42 -0
- data/app/views/spree/admin/promotions/edit.html.erb +30 -0
- data/app/views/spree/admin/promotions/index.html.erb +82 -0
- data/app/views/spree/admin/promotions/new.html.erb +11 -0
- data/app/views/spree/admin/promotions/rules/_item_total.html.erb +12 -0
- data/app/views/spree/admin/promotions/rules/_landing_page.html.erb +9 -0
- data/app/views/spree/admin/promotions/rules/_option_value.html.erb +42 -0
- data/app/views/spree/admin/promotions/rules/_product.html.erb +10 -0
- data/app/views/spree/admin/promotions/rules/_taxon.html.erb +10 -0
- data/app/views/spree/admin/promotions/rules/_user.html.erb +6 -0
- data/app/views/spree/admin/properties/_form.html.erb +16 -0
- data/app/views/spree/admin/properties/edit.html.erb +13 -0
- data/app/views/spree/admin/properties/index.html.erb +68 -0
- data/app/views/spree/admin/properties/new.html.erb +15 -0
- data/app/views/spree/admin/prototypes/_form.html.erb +28 -0
- data/app/views/spree/admin/prototypes/_prototypes.html.erb +21 -0
- data/app/views/spree/admin/prototypes/available.js.erb +2 -0
- data/app/views/spree/admin/prototypes/edit.html.erb +13 -0
- data/app/views/spree/admin/prototypes/index.html.erb +34 -0
- data/app/views/spree/admin/prototypes/new.html.erb +13 -0
- data/app/views/spree/admin/prototypes/select.js.erb +4 -0
- data/app/views/spree/admin/prototypes/show.html.erb +39 -0
- data/app/views/spree/admin/refund_reasons/destroy.js.erb +1 -0
- data/app/views/spree/admin/refund_reasons/edit.html.erb +3 -0
- data/app/views/spree/admin/refund_reasons/index.html.erb +6 -0
- data/app/views/spree/admin/refund_reasons/new.html.erb +4 -0
- data/app/views/spree/admin/refunds/edit.html.erb +27 -0
- data/app/views/spree/admin/refunds/new.html.erb +35 -0
- data/app/views/spree/admin/reimbursement_types/index.html.erb +30 -0
- data/app/views/spree/admin/reimbursements/edit.html.erb +102 -0
- data/app/views/spree/admin/reimbursements/index.html.erb +28 -0
- data/app/views/spree/admin/reimbursements/show.html.erb +90 -0
- data/app/views/spree/admin/reports/index.html.erb +20 -0
- data/app/views/spree/admin/reports/sales_total.html.erb +29 -0
- data/app/views/spree/admin/return_authorization_reasons/destroy.js.erb +1 -0
- data/app/views/spree/admin/return_authorization_reasons/edit.html.erb +3 -0
- data/app/views/spree/admin/return_authorization_reasons/index.html.erb +6 -0
- data/app/views/spree/admin/return_authorization_reasons/new.html.erb +4 -0
- data/app/views/spree/admin/return_authorizations/_form.html.erb +91 -0
- data/app/views/spree/admin/return_authorizations/edit.html.erb +26 -0
- data/app/views/spree/admin/return_authorizations/index.html.erb +53 -0
- data/app/views/spree/admin/return_authorizations/new.html.erb +18 -0
- data/app/views/spree/admin/return_index/customer_returns.html.erb +64 -0
- data/app/views/spree/admin/return_index/return_authorizations.html.erb +76 -0
- data/app/views/spree/admin/roles/_form.html.erb +9 -0
- data/app/views/spree/admin/roles/edit.html.erb +13 -0
- data/app/views/spree/admin/roles/index.html.erb +34 -0
- data/app/views/spree/admin/roles/new.html.erb +13 -0
- data/app/views/spree/admin/search/products.rabl +9 -0
- data/app/views/spree/admin/search/users.rabl +30 -0
- data/app/views/spree/admin/shared/_address.html.erb +38 -0
- data/app/views/spree/admin/shared/_address_form.html.erb +78 -0
- data/app/views/spree/admin/shared/_calculator_fields.html.erb +27 -0
- data/app/views/spree/admin/shared/_content_header.html.erb +26 -0
- data/app/views/spree/admin/shared/_destroy.js.erb +9 -0
- data/app/views/spree/admin/shared/_edit_resource_links.html.erb +5 -0
- data/app/views/spree/admin/shared/_error_messages.html.erb +12 -0
- data/app/views/spree/admin/shared/_head.html.erb +26 -0
- data/app/views/spree/admin/shared/_header.html.erb +32 -0
- data/app/views/spree/admin/shared/_index_table_options.html.erb +19 -0
- data/app/views/spree/admin/shared/_main_menu.html.erb +41 -0
- data/app/views/spree/admin/shared/_new_resource_links.html.erb +5 -0
- data/app/views/spree/admin/shared/_order_summary.html.erb +121 -0
- data/app/views/spree/admin/shared/_order_tabs.html.erb +60 -0
- data/app/views/spree/admin/shared/_product_tabs.html.erb +24 -0
- data/app/views/spree/admin/shared/_refunds.html.erb +32 -0
- data/app/views/spree/admin/shared/_report_order_criteria.html.erb +17 -0
- data/app/views/spree/admin/shared/_sidebar.html.erb +5 -0
- data/app/views/spree/admin/shared/_table_filter.html.erb +24 -0
- data/app/views/spree/admin/shared/_translations.html.erb +48 -0
- data/app/views/spree/admin/shared/_update_order_state.js +7 -0
- data/app/views/spree/admin/shared/named_types/_edit.html.erb +13 -0
- data/app/views/spree/admin/shared/named_types/_form.html.erb +13 -0
- data/app/views/spree/admin/shared/named_types/_index.html.erb +42 -0
- data/app/views/spree/admin/shared/named_types/_new.html.erb +13 -0
- data/app/views/spree/admin/shared/sub_menu/_configuration.html.erb +23 -0
- data/app/views/spree/admin/shared/sub_menu/_product.html.erb +8 -0
- data/app/views/spree/admin/shared/sub_menu/_promotion.html.erb +4 -0
- data/app/views/spree/admin/shared/sub_menu/_returns.html.erb +4 -0
- data/app/views/spree/admin/shipping_categories/_form.html.erb +9 -0
- data/app/views/spree/admin/shipping_categories/edit.html.erb +11 -0
- data/app/views/spree/admin/shipping_categories/index.html.erb +34 -0
- data/app/views/spree/admin/shipping_categories/new.html.erb +13 -0
- data/app/views/spree/admin/shipping_methods/_form.html.erb +119 -0
- data/app/views/spree/admin/shipping_methods/edit.html.erb +17 -0
- data/app/views/spree/admin/shipping_methods/index.html.erb +40 -0
- data/app/views/spree/admin/shipping_methods/new.html.erb +20 -0
- data/app/views/spree/admin/state_changes/index.html.erb +42 -0
- data/app/views/spree/admin/states/_form.html.erb +15 -0
- data/app/views/spree/admin/states/_state_list.html.erb +26 -0
- data/app/views/spree/admin/states/edit.html.erb +13 -0
- data/app/views/spree/admin/states/index.html.erb +18 -0
- data/app/views/spree/admin/states/new.html.erb +13 -0
- data/app/views/spree/admin/states/new.js.erb +2 -0
- data/app/views/spree/admin/stock_items/destroy.js.erb +1 -0
- data/app/views/spree/admin/stock_locations/_form.html.erb +95 -0
- data/app/views/spree/admin/stock_locations/_transfer_stock_form.html.erb +39 -0
- data/app/views/spree/admin/stock_locations/edit.html.erb +13 -0
- data/app/views/spree/admin/stock_locations/index.html.erb +41 -0
- data/app/views/spree/admin/stock_locations/new.html.erb +13 -0
- data/app/views/spree/admin/stock_movements/_form.html.erb +12 -0
- data/app/views/spree/admin/stock_movements/edit.html.erb +17 -0
- data/app/views/spree/admin/stock_movements/index.html.erb +43 -0
- data/app/views/spree/admin/stock_movements/new.html.erb +14 -0
- data/app/views/spree/admin/stock_transfers/_stock_movements.html.erb +22 -0
- data/app/views/spree/admin/stock_transfers/index.html.erb +82 -0
- data/app/views/spree/admin/stock_transfers/new.html.erb +107 -0
- data/app/views/spree/admin/stock_transfers/show.html.erb +44 -0
- data/app/views/spree/admin/store_credit_categories/_form.html.erb +9 -0
- data/app/views/spree/admin/store_credit_categories/edit.html.erb +13 -0
- data/app/views/spree/admin/store_credit_categories/index.html.erb +34 -0
- data/app/views/spree/admin/store_credit_categories/new.html.erb +13 -0
- data/app/views/spree/admin/store_credits/_form.html.erb +18 -0
- data/app/views/spree/admin/store_credits/edit.html.erb +14 -0
- data/app/views/spree/admin/store_credits/index.html.erb +46 -0
- data/app/views/spree/admin/store_credits/new.html.erb +14 -0
- data/app/views/spree/admin/tax_categories/_form.html.erb +24 -0
- data/app/views/spree/admin/tax_categories/edit.html.erb +13 -0
- data/app/views/spree/admin/tax_categories/index.html.erb +42 -0
- data/app/views/spree/admin/tax_categories/new.html.erb +13 -0
- data/app/views/spree/admin/tax_categories/show.html.erb +1 -0
- data/app/views/spree/admin/tax_rates/_form.html.erb +54 -0
- data/app/views/spree/admin/tax_rates/edit.html.erb +11 -0
- data/app/views/spree/admin/tax_rates/index.html.erb +46 -0
- data/app/views/spree/admin/tax_rates/new.html.erb +14 -0
- data/app/views/spree/admin/taxonomies/_form.html.erb +7 -0
- data/app/views/spree/admin/taxonomies/_js_head.html.erb +13 -0
- data/app/views/spree/admin/taxonomies/_list.html.erb +23 -0
- data/app/views/spree/admin/taxonomies/edit.erb +37 -0
- data/app/views/spree/admin/taxonomies/index.html.erb +18 -0
- data/app/views/spree/admin/taxonomies/new.html.erb +12 -0
- data/app/views/spree/admin/taxons/_form.html.erb +46 -0
- data/app/views/spree/admin/taxons/_taxon_table.html.erb +23 -0
- data/app/views/spree/admin/taxons/edit.html.erb +32 -0
- data/app/views/spree/admin/taxons/index.html.erb +13 -0
- data/app/views/spree/admin/trackers/_form.html.erb +29 -0
- data/app/views/spree/admin/trackers/edit.html.erb +13 -0
- data/app/views/spree/admin/trackers/index.html.erb +42 -0
- data/app/views/spree/admin/trackers/new.html.erb +13 -0
- data/app/views/spree/admin/users/_addresses_form.html.erb +35 -0
- data/app/views/spree/admin/users/_form.html.erb +36 -0
- data/app/views/spree/admin/users/_lifetime_stats.html.erb +30 -0
- data/app/views/spree/admin/users/_sidebar.html.erb +23 -0
- data/app/views/spree/admin/users/_user_page_actions.html.erb +3 -0
- data/app/views/spree/admin/users/addresses.html.erb +26 -0
- data/app/views/spree/admin/users/edit.html.erb +72 -0
- data/app/views/spree/admin/users/index.html.erb +67 -0
- data/app/views/spree/admin/users/items.html.erb +64 -0
- data/app/views/spree/admin/users/new.html.erb +18 -0
- data/app/views/spree/admin/users/orders.html.erb +52 -0
- data/app/views/spree/admin/variants/_autocomplete.js.erb +21 -0
- data/app/views/spree/admin/variants/_autocomplete_line_items_stock.js.erb +46 -0
- data/app/views/spree/admin/variants/_autocomplete_stock.js.erb +48 -0
- data/app/views/spree/admin/variants/_form.html.erb +49 -0
- data/app/views/spree/admin/variants/_split.js.erb +33 -0
- data/app/views/spree/admin/variants/edit.html.erb +13 -0
- data/app/views/spree/admin/variants/index.html.erb +65 -0
- data/app/views/spree/admin/variants/new.html.erb +11 -0
- data/app/views/spree/admin/variants/new.js.erb +3 -0
- data/app/views/spree/admin/variants/update.js.erb +1 -0
- data/app/views/spree/admin/zones/_country_members.html.erb +16 -0
- data/app/views/spree/admin/zones/_form.html.erb +49 -0
- data/app/views/spree/admin/zones/_state_members.html.erb +16 -0
- data/app/views/spree/admin/zones/edit.html.erb +12 -0
- data/app/views/spree/admin/zones/index.html.erb +44 -0
- data/app/views/spree/admin/zones/new.html.erb +11 -0
- data/app/views/spree/layouts/admin.html.erb +81 -0
- data/config/initializers/assets.rb +1 -0
- data/config/initializers/form_builder.rb +15 -0
- data/config/routes.rb +185 -0
- data/lib/spree/backend/action_callbacks.rb +26 -0
- data/lib/spree/backend/callbacks.rb +48 -0
- data/lib/spree/backend/engine.rb +34 -0
- data/lib/spree/backend.rb +13 -0
- data/lib/spree_backend.rb +3 -0
- data/script/rails +9 -0
- data/spree_backend.gemspec +28 -0
- data/vendor/assets/images/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_flat_0_eeeeee_40x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_flat_55_ffffff_40x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_100_f6f6f6_1x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_25_0073ea_1x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_50_dddddd_1x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-icons_0073ea_256x240.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-icons_454545_256x240.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-icons_666666_256x240.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-icons_ff0084_256x240.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-icons_ffffff_256x240.png +0 -0
- data/vendor/assets/javascripts/handlebars.js +2746 -0
- data/vendor/assets/javascripts/jquery.cookie.js +117 -0
- data/vendor/assets/javascripts/jquery.jstree/jquery.jstree.js +4564 -0
- data/vendor/assets/javascripts/modernizr.js +4 -0
- data/vendor/assets/javascripts/underscore-min.js +6 -0
- data/vendor/assets/javascripts/underscore-min.map +1 -0
- data/vendor/assets/javascripts/velocity.js +3831 -0
- data/vendor/assets/stylesheets/animate.css +3158 -0
- data/vendor/assets/stylesheets/jquery-ui.datepicker.css.erb +357 -0
- data/vendor/assets/stylesheets/jquery.jstree/themes/spree/style.scss +216 -0
- data/vendor/assets/stylesheets/jquery.jstree/themes/spree/throbber.gif +0 -0
- metadata +565 -0
@@ -0,0 +1,157 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
module BaseHelper
|
4
|
+
def flash_alert flash
|
5
|
+
if flash.present?
|
6
|
+
close_button = button_tag(class: 'close', 'data-dismiss' => 'alert', 'aria-label' => Spree.t(:close)) do
|
7
|
+
content_tag('span', '×'.html_safe, 'aria-hidden' => true)
|
8
|
+
end
|
9
|
+
message = flash[:error] || flash[:notice] || flash[:success]
|
10
|
+
flash_class = "danger" if flash[:error]
|
11
|
+
flash_class = "info" if flash[:notice]
|
12
|
+
flash_class = "success" if flash[:success]
|
13
|
+
flash_div = content_tag(:div, (close_button + message), class: "alert alert-#{flash_class} alert-auto-disappear")
|
14
|
+
content_tag(:div, flash_div, class: 'col-md-12')
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def field_container(model, method, options = {}, &block)
|
19
|
+
css_classes = options[:class].to_a
|
20
|
+
css_classes << 'field'
|
21
|
+
if error_message_on(model, method).present?
|
22
|
+
css_classes << 'withError'
|
23
|
+
end
|
24
|
+
content_tag(:div, capture(&block), class: css_classes.join(' '), id: "#{model}_#{method}_field")
|
25
|
+
end
|
26
|
+
|
27
|
+
def error_message_on(object, method, options = {})
|
28
|
+
object = convert_to_model(object)
|
29
|
+
obj = object.respond_to?(:errors) ? object : instance_variable_get("@#{object}")
|
30
|
+
|
31
|
+
if obj && obj.errors[method].present?
|
32
|
+
errors = safe_join(obj.errors[method], '<br />'.html_safe)
|
33
|
+
content_tag(:span, errors, class: 'formError')
|
34
|
+
else
|
35
|
+
''
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def datepicker_field_value(date)
|
40
|
+
unless date.blank?
|
41
|
+
l(date, format: Spree.t('date_picker.format', default: '%Y/%m/%d'))
|
42
|
+
else
|
43
|
+
nil
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def preference_field_tag(name, value, options)
|
48
|
+
case options[:type]
|
49
|
+
when :integer
|
50
|
+
text_field_tag(name, value, preference_field_options(options))
|
51
|
+
when :boolean
|
52
|
+
hidden_field_tag(name, 0, id: "#{name}_hidden") +
|
53
|
+
check_box_tag(name, 1, value, preference_field_options(options))
|
54
|
+
when :string
|
55
|
+
text_field_tag(name, value, preference_field_options(options))
|
56
|
+
when :password
|
57
|
+
password_field_tag(name, value, preference_field_options(options))
|
58
|
+
when :text
|
59
|
+
text_area_tag(name, value, preference_field_options(options))
|
60
|
+
else
|
61
|
+
text_field_tag(name, value, preference_field_options(options))
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def preference_field_for(form, field, options)
|
66
|
+
case options[:type]
|
67
|
+
when :integer
|
68
|
+
form.text_field(field, preference_field_options(options))
|
69
|
+
when :boolean
|
70
|
+
form.check_box(field, preference_field_options(options))
|
71
|
+
when :string
|
72
|
+
form.text_field(field, preference_field_options(options))
|
73
|
+
when :password
|
74
|
+
form.password_field(field, preference_field_options(options))
|
75
|
+
when :text
|
76
|
+
form.text_area(field, preference_field_options(options))
|
77
|
+
else
|
78
|
+
form.text_field(field, preference_field_options(options))
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def preference_field_options(options)
|
83
|
+
field_options = case options[:type]
|
84
|
+
when :integer
|
85
|
+
{
|
86
|
+
size: 10,
|
87
|
+
class: 'input_integer form-control'
|
88
|
+
}
|
89
|
+
when :boolean
|
90
|
+
{}
|
91
|
+
when :string
|
92
|
+
{
|
93
|
+
size: 10,
|
94
|
+
class: 'input_string form-control'
|
95
|
+
}
|
96
|
+
when :password
|
97
|
+
{
|
98
|
+
size: 10,
|
99
|
+
class: 'password_string form-control'
|
100
|
+
}
|
101
|
+
when :text
|
102
|
+
{
|
103
|
+
rows: 15,
|
104
|
+
cols: 85,
|
105
|
+
class: 'form-control'
|
106
|
+
}
|
107
|
+
else
|
108
|
+
{
|
109
|
+
size: 10,
|
110
|
+
class: 'input_string form-control'
|
111
|
+
}
|
112
|
+
end
|
113
|
+
|
114
|
+
field_options.merge!({
|
115
|
+
readonly: options[:readonly],
|
116
|
+
disabled: options[:disabled],
|
117
|
+
size: options[:size]
|
118
|
+
})
|
119
|
+
end
|
120
|
+
|
121
|
+
def preference_fields(object, form)
|
122
|
+
return unless object.respond_to?(:preferences)
|
123
|
+
fields = object.preferences.keys.map { |key|
|
124
|
+
if object.has_preference?(key)
|
125
|
+
form.label("preferred_#{key}", Spree.t(key) + ": ") +
|
126
|
+
preference_field_for(form, "preferred_#{key}", type: object.preference_type(key))
|
127
|
+
end
|
128
|
+
}
|
129
|
+
safe_join(fields, '<br />'.html_safe)
|
130
|
+
end
|
131
|
+
|
132
|
+
# renders hidden field and link to remove record using nested_attributes
|
133
|
+
def link_to_icon_remove_fields(f)
|
134
|
+
url = f.object.persisted? ? [:admin, f.object] : '#'
|
135
|
+
link_to_with_icon('delete', '', url, class: "spree_remove_fields btn btn-sm btn-danger", data: {action: 'remove'}, title: Spree.t(:remove)) + f.hidden_field(:_destroy)
|
136
|
+
end
|
137
|
+
|
138
|
+
def spree_dom_id(record)
|
139
|
+
dom_id(record, 'spree')
|
140
|
+
end
|
141
|
+
|
142
|
+
I18N_PLURAL_MANY_COUNT = 2.1
|
143
|
+
def plural_resource_name(resource_class)
|
144
|
+
resource_class.model_name.human(count: I18N_PLURAL_MANY_COUNT)
|
145
|
+
end
|
146
|
+
|
147
|
+
def order_time(time)
|
148
|
+
[I18n.l(time.to_date), time.strftime("%l:%M %p")].join('')
|
149
|
+
end
|
150
|
+
|
151
|
+
private
|
152
|
+
def attribute_name_for(field_name)
|
153
|
+
field_name.gsub(' ', '_').downcase
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
module GeneralSettingsHelper
|
4
|
+
def currency_options
|
5
|
+
currencies = ::Money::Currency.table.map do |code, details|
|
6
|
+
iso = details[:iso_code]
|
7
|
+
[iso, "#{details[:name]} (#{iso})"]
|
8
|
+
end
|
9
|
+
options_from_collection_for_select(currencies, :first, :last, Spree::Config[:currency])
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
module ImagesHelper
|
4
|
+
def options_text_for(image)
|
5
|
+
if image.viewable.is_a?(Spree::Variant)
|
6
|
+
if image.viewable.is_master?
|
7
|
+
Spree.t(:all)
|
8
|
+
else
|
9
|
+
image.viewable.sku_and_options_text
|
10
|
+
end
|
11
|
+
else
|
12
|
+
Spree.t(:all)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
@@ -0,0 +1,248 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
module NavigationHelper
|
4
|
+
# Makes an admin navigation tab (<li> tag) that links to a routing resource under /admin.
|
5
|
+
# The arguments should be a list of symbolized controller names that will cause this tab to
|
6
|
+
# be highlighted, with the first being the name of the resouce to link (uses URL helpers).
|
7
|
+
#
|
8
|
+
# Option hash may follow. Valid options are
|
9
|
+
# * :label to override link text, otherwise based on the first resource name (translated)
|
10
|
+
# * :route to override automatically determining the default route
|
11
|
+
# * :match_path as an alternative way to control when the tab is active, /products would
|
12
|
+
# match /admin/products, /admin/products/5/variants etc. Can be a String or a Regexp.
|
13
|
+
# Controller names are ignored if :match_path is provided.
|
14
|
+
#
|
15
|
+
# Example:
|
16
|
+
# # Link to /admin/orders, also highlight tab for ProductsController and ShipmentsController
|
17
|
+
# tab :orders, :products, :shipments
|
18
|
+
def tab(*args)
|
19
|
+
options = { label: args.first.to_s }
|
20
|
+
|
21
|
+
# Return if resource is found and user is not allowed to :admin
|
22
|
+
return '' if klass = klass_for(options[:label]) and cannot?(:admin, klass)
|
23
|
+
|
24
|
+
if args.last.is_a?(Hash)
|
25
|
+
options = options.merge(args.pop)
|
26
|
+
end
|
27
|
+
options[:route] ||= "admin_#{args.first}"
|
28
|
+
|
29
|
+
destination_url = options[:url] || spree.send("#{options[:route]}_path")
|
30
|
+
titleized_label = Spree.t(options[:label], default: options[:label], scope: [:admin, :tab]).titleize
|
31
|
+
|
32
|
+
css_classes = ['sidebar-menu-item']
|
33
|
+
|
34
|
+
if options[:icon]
|
35
|
+
link = link_to_with_icon(options[:icon], titleized_label, destination_url)
|
36
|
+
else
|
37
|
+
link = link_to(titleized_label, destination_url)
|
38
|
+
end
|
39
|
+
|
40
|
+
selected = if options[:match_path].is_a? Regexp
|
41
|
+
request.fullpath =~ options[:match_path]
|
42
|
+
elsif options[:match_path]
|
43
|
+
request.fullpath.starts_with?("#{spree.admin_path}#{options[:match_path]}")
|
44
|
+
else
|
45
|
+
args.include?(controller.controller_name.to_sym)
|
46
|
+
end
|
47
|
+
css_classes << 'selected' if selected
|
48
|
+
|
49
|
+
if options[:css_class]
|
50
|
+
css_classes << options[:css_class]
|
51
|
+
end
|
52
|
+
content_tag('li', link, class: css_classes.join(' '))
|
53
|
+
end
|
54
|
+
|
55
|
+
# Single main menu item
|
56
|
+
def main_menu_item text, url: nil, icon: nil
|
57
|
+
link_to url, :'data-toggle' => "collapse", :'data-parent' => '#sidebar' do
|
58
|
+
content_tag(:span, nil, class: "icon icon-#{icon}") +
|
59
|
+
content_tag(:span, " #{text}", class: 'text') +
|
60
|
+
content_tag(:span, nil, class: "icon icon-chevron-left pull-right")
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# Main menu tree menu
|
65
|
+
def main_menu_tree text, icon: nil, sub_menu: nil, url: '#'
|
66
|
+
content_tag :li, class: 'sidebar-menu-item' do
|
67
|
+
main_menu_item(text, url: url, icon: icon) +
|
68
|
+
render(partial: "spree/admin/shared/sub_menu/#{sub_menu}")
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# sidebar are used on order edit, product edit, user overview etc.
|
73
|
+
# this link is shown so a user can collapse the sidebar
|
74
|
+
def collapse_sidebar_link
|
75
|
+
content_tag :div, class: "collapse-sidebar" do
|
76
|
+
link_to "javascript:;", class: "js-collapse-sidebar" do
|
77
|
+
content_tag(:span, nil, class: "icon icon-chevron-right") +
|
78
|
+
content_tag(:span, "Collapse sidebar", class: "text")
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
# the per_page_dropdown is used on index pages like orders, products, promotions etc.
|
84
|
+
# this method generates the select_tag
|
85
|
+
def per_page_dropdown
|
86
|
+
# there is a config setting for admin_products_per_page, only for the orders page
|
87
|
+
if @products && per_page_default = Spree::Config.admin_products_per_page
|
88
|
+
per_page_options = []
|
89
|
+
5.times do |amount|
|
90
|
+
per_page_options << (amount + 1) * Spree::Config.admin_products_per_page
|
91
|
+
end
|
92
|
+
else
|
93
|
+
per_page_default = 15
|
94
|
+
per_page_options = %w{5 15 30 45 60}
|
95
|
+
end
|
96
|
+
|
97
|
+
select_tag(:per_page,
|
98
|
+
options_for_select(per_page_options, params['per_page'] || per_page_default),
|
99
|
+
{ class: "form-control pull-right js-per-page-select" })
|
100
|
+
end
|
101
|
+
|
102
|
+
# helper method to create proper url to apply per page filtering
|
103
|
+
# fixes https://github.com/spree/spree/issues/6888
|
104
|
+
def per_page_dropdown_params(args = nil)
|
105
|
+
args ||= params.clone
|
106
|
+
args.delete(:page)
|
107
|
+
args.delete(:per_page)
|
108
|
+
args
|
109
|
+
end
|
110
|
+
|
111
|
+
# finds class for a given symbol / string
|
112
|
+
#
|
113
|
+
# Example :
|
114
|
+
# :products returns Spree::Product
|
115
|
+
# :my_products returns MyProduct if MyProduct is defined
|
116
|
+
# :my_products returns My::Product if My::Product is defined
|
117
|
+
# if cannot constantize it returns nil
|
118
|
+
# This will allow us to use cancan abilities on tab
|
119
|
+
def klass_for(name)
|
120
|
+
model_name = name.to_s
|
121
|
+
|
122
|
+
["Spree::#{model_name.classify}", model_name.classify, model_name.gsub('_', '/').classify].find do |t|
|
123
|
+
t.safe_constantize
|
124
|
+
end.try(:safe_constantize)
|
125
|
+
end
|
126
|
+
|
127
|
+
def link_to_clone(resource, options={})
|
128
|
+
options[:data] = { action: 'clone', :'original-title' => Spree.t(:clone) }
|
129
|
+
options[:class] = "btn btn-primary btn-sm with-tip"
|
130
|
+
options[:method] = :post
|
131
|
+
options[:icon] = :clone
|
132
|
+
button_link_to '', clone_object_url(resource), options
|
133
|
+
end
|
134
|
+
|
135
|
+
def link_to_new(resource)
|
136
|
+
options[:data] = { action: 'new' }
|
137
|
+
options[:class] = "btn btn-success btn-sm"
|
138
|
+
link_to_with_icon('plus', Spree.t(:new), edit_object_url(resource))
|
139
|
+
end
|
140
|
+
|
141
|
+
def link_to_edit(resource, options={})
|
142
|
+
url = options[:url] || edit_object_url(resource)
|
143
|
+
options[:data] = { action: 'edit' }
|
144
|
+
options[:class] = "btn btn-primary btn-sm"
|
145
|
+
link_to_with_icon('edit', Spree.t(:edit), url, options)
|
146
|
+
end
|
147
|
+
|
148
|
+
def link_to_edit_url(url, options={})
|
149
|
+
options[:data] = { action: 'edit' }
|
150
|
+
options[:class] = "btn btn-primary btn-sm"
|
151
|
+
link_to_with_icon('edit', Spree.t(:edit), url, options)
|
152
|
+
end
|
153
|
+
|
154
|
+
def link_to_delete(resource, options={})
|
155
|
+
url = options[:url] || object_url(resource)
|
156
|
+
name = options[:name] || Spree.t(:delete)
|
157
|
+
options[:class] = "btn btn-danger btn-sm delete-resource"
|
158
|
+
options[:data] = { confirm: Spree.t(:are_you_sure), action: 'remove' }
|
159
|
+
link_to_with_icon 'delete', name, url, options
|
160
|
+
end
|
161
|
+
|
162
|
+
def link_to_with_icon(icon_name, text, url, options = {})
|
163
|
+
options[:class] = (options[:class].to_s + " icon-link with-tip action-#{icon_name}").strip
|
164
|
+
options[:class] += ' no-text' if options[:no_text]
|
165
|
+
options[:title] = text if options[:no_text]
|
166
|
+
text = options[:no_text] ? '' : content_tag(:span, text, class: 'text')
|
167
|
+
options.delete(:no_text)
|
168
|
+
if icon_name
|
169
|
+
icon = content_tag(:span, '', class: "icon icon-#{icon_name}")
|
170
|
+
text.insert(0, icon + ' ')
|
171
|
+
end
|
172
|
+
link_to(text.html_safe, url, options)
|
173
|
+
end
|
174
|
+
|
175
|
+
def icon(icon_name)
|
176
|
+
icon_name ? content_tag(:i, '', class: icon_name) : ''
|
177
|
+
end
|
178
|
+
|
179
|
+
def button(text, icon_name = nil, button_type = 'submit', options={})
|
180
|
+
if icon_name
|
181
|
+
icon = content_tag(:span, '', class: "icon icon-#{icon_name}")
|
182
|
+
text.insert(0, icon + ' ')
|
183
|
+
end
|
184
|
+
button_tag(text.html_safe, options.merge(type: button_type, class: "btn btn-primary #{options[:class]}"))
|
185
|
+
end
|
186
|
+
|
187
|
+
def button_link_to(text, url, html_options = {})
|
188
|
+
if (html_options[:method] &&
|
189
|
+
html_options[:method].to_s.downcase != 'get' &&
|
190
|
+
!html_options[:remote])
|
191
|
+
form_tag(url, method: html_options.delete(:method), class: 'display-inline') do
|
192
|
+
button(text, html_options.delete(:icon), nil, html_options)
|
193
|
+
end
|
194
|
+
else
|
195
|
+
if html_options['data-update'].nil? && html_options[:remote]
|
196
|
+
object_name, action = url.split('/')[-2..-1]
|
197
|
+
html_options['data-update'] = [action, object_name.singularize].join('_')
|
198
|
+
end
|
199
|
+
|
200
|
+
html_options.delete('data-update') unless html_options['data-update']
|
201
|
+
|
202
|
+
html_options[:class] = html_options[:class] ? "btn #{html_options[:class]}" : "btn btn-default"
|
203
|
+
|
204
|
+
if html_options[:icon]
|
205
|
+
icon = content_tag(:span, '', class: "icon icon-#{html_options[:icon]}")
|
206
|
+
text.insert(0, icon + ' ')
|
207
|
+
end
|
208
|
+
|
209
|
+
link_to(text.html_safe, url, html_options)
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
213
|
+
def configurations_menu_item(link_text, url, description = '')
|
214
|
+
%(<tr>
|
215
|
+
<td>#{link_to(link_text, url)}</td>
|
216
|
+
<td>#{description}</td>
|
217
|
+
</tr>
|
218
|
+
).html_safe
|
219
|
+
end
|
220
|
+
|
221
|
+
def configurations_sidebar_menu_item(link_text, url, options = {})
|
222
|
+
is_selected = url.ends_with?(controller.controller_name) ||
|
223
|
+
url.ends_with?("#{controller.controller_name}/edit") ||
|
224
|
+
url.ends_with?("#{controller.controller_name.singularize}/edit")
|
225
|
+
|
226
|
+
options[:class] = 'sidebar-menu-item'
|
227
|
+
options[:class] << ' selected' if is_selected
|
228
|
+
content_tag(:li, options) do
|
229
|
+
link_to(link_text, url)
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
def main_part_classes
|
234
|
+
if cookies['sidebar-minimized'] == 'true'
|
235
|
+
return 'col-sm-12 col-md-12 sidebar-collapsed'
|
236
|
+
else
|
237
|
+
return 'col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2'
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
def wrapper_classes
|
242
|
+
if cookies['sidebar-minimized'] == 'true'
|
243
|
+
return 'sidebar-minimized'
|
244
|
+
end
|
245
|
+
end
|
246
|
+
end
|
247
|
+
end
|
248
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
module OrdersHelper
|
4
|
+
# Renders all the extension partials that may have been specified in the extensions
|
5
|
+
def event_links(order, events)
|
6
|
+
links = []
|
7
|
+
events.sort.each do |event|
|
8
|
+
if order.send("can_#{event}?")
|
9
|
+
label = Spree.t(event, scope: 'admin.order.events', default: Spree.t(event))
|
10
|
+
links << button_link_to(
|
11
|
+
label.capitalize,
|
12
|
+
[event, :admin, order],
|
13
|
+
method: :put,
|
14
|
+
icon: "#{event}",
|
15
|
+
data: { confirm: Spree.t(:order_sure_want_to, event: label) }
|
16
|
+
)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
safe_join(links, ' '.html_safe)
|
20
|
+
end
|
21
|
+
|
22
|
+
def line_item_shipment_price(line_item, quantity)
|
23
|
+
Spree::Money.new(line_item.price * quantity, { currency: line_item.currency })
|
24
|
+
end
|
25
|
+
|
26
|
+
def avs_response_code
|
27
|
+
{
|
28
|
+
"A" => "Street address matches, but 5-digit and 9-digit postal code do not match.",
|
29
|
+
"B" => "Street address matches, but postal code not verified.",
|
30
|
+
"C" => "Street address and postal code do not match.",
|
31
|
+
"D" => "Street address and postal code match. ",
|
32
|
+
"E" => "AVS data is invalid or AVS is not allowed for this card type.",
|
33
|
+
"F" => "Card member's name does not match, but billing postal code matches.",
|
34
|
+
"G" => "Non-U.S. issuing bank does not support AVS.",
|
35
|
+
"H" => "Card member's name does not match. Street address and postal code match.",
|
36
|
+
"I" => "Address not verified.",
|
37
|
+
"J" => "Card member's name, billing address, and postal code match.",
|
38
|
+
"K" => "Card member's name matches but billing address and billing postal code do not match.",
|
39
|
+
"L" => "Card member's name and billing postal code match, but billing address does not match.",
|
40
|
+
"M" => "Street address and postal code match. ",
|
41
|
+
"N" => "Street address and postal code do not match.",
|
42
|
+
"O" => "Card member's name and billing address match, but billing postal code does not match.",
|
43
|
+
"P" => "Postal code matches, but street address not verified.",
|
44
|
+
"Q" => "Card member's name, billing address, and postal code match.",
|
45
|
+
"R" => "System unavailable.",
|
46
|
+
"S" => "Bank does not support AVS.",
|
47
|
+
"T" => "Card member's name does not match, but street address matches.",
|
48
|
+
"U" => "Address information unavailable. Returned if the U.S. bank does not support non-U.S. AVS or if the AVS in a U.S. bank is not functioning properly.",
|
49
|
+
"V" => "Card member's name, billing address, and billing postal code match.",
|
50
|
+
"W" => "Street address does not match, but 9-digit postal code matches.",
|
51
|
+
"X" => "Street address and 9-digit postal code match.",
|
52
|
+
"Y" => "Street address and 5-digit postal code match.",
|
53
|
+
"Z" => "Street address does not match, but 5-digit postal code matches."
|
54
|
+
}
|
55
|
+
end
|
56
|
+
|
57
|
+
def cvv_response_code
|
58
|
+
{
|
59
|
+
"M" => "CVV2 Match",
|
60
|
+
"N" => "CVV2 No Match",
|
61
|
+
"P" => "Not Processed",
|
62
|
+
"S" => "Issuer indicates that CVV2 data should be present on the card, but the merchant has indicated data is not present on the card",
|
63
|
+
"U" => "Issuer has not certified for CVV2 or Issuer has not provided Visa with the CVV2 encryption keys",
|
64
|
+
"" => "Transaction failed because wrong CVV2 number was entered or no CVV2 number was entered"
|
65
|
+
}
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
module PaymentsHelper
|
4
|
+
def payment_method_name(payment)
|
5
|
+
# hack to allow us to retrieve the name of a "deleted" payment method
|
6
|
+
id = payment.payment_method_id
|
7
|
+
Spree::PaymentMethod.find_with_destroyed(id).name
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
module ProductsHelper
|
4
|
+
def taxon_options_for(product)
|
5
|
+
options = @taxons.map do |taxon|
|
6
|
+
selected = product.taxons.include?(taxon)
|
7
|
+
content_tag(:option,
|
8
|
+
:value => taxon.id,
|
9
|
+
:selected => ('selected' if selected)) do
|
10
|
+
(taxon.ancestors.pluck(:name) + [taxon.name]).join(" -> ")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
safe_join(options)
|
14
|
+
end
|
15
|
+
|
16
|
+
def option_types_options_for(product)
|
17
|
+
options = @option_types.map do |option_type|
|
18
|
+
selected = product.option_types.include?(option_type)
|
19
|
+
content_tag(:option,
|
20
|
+
:value => option_type.id,
|
21
|
+
:selected => ('selected' if selected)) do
|
22
|
+
option_type.name
|
23
|
+
end
|
24
|
+
end
|
25
|
+
safe_join(options)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
module ReimbursementsHelper
|
4
|
+
def reimbursement_status_color(reimbursement)
|
5
|
+
case reimbursement.reimbursement_status
|
6
|
+
when 'reimbursed' then 'success'
|
7
|
+
when 'pending' then 'notice'
|
8
|
+
when 'errored' then 'error'
|
9
|
+
else raise "unknown reimbursement status: #{reimbursement.reimbursement_status}"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
module StockLocationsHelper
|
4
|
+
def display_name(stock_location)
|
5
|
+
name_parts = [stock_location.admin_name, stock_location.name]
|
6
|
+
name_parts.delete_if(&:blank?)
|
7
|
+
name_parts.join(' / ')
|
8
|
+
end
|
9
|
+
|
10
|
+
def state(stock_location)
|
11
|
+
stock_location.active? ? 'active' : 'inactive'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
module StockMovementsHelper
|
4
|
+
def pretty_originator(stock_movement)
|
5
|
+
if stock_movement.originator.respond_to?(:number)
|
6
|
+
if stock_movement.originator.respond_to?(:order)
|
7
|
+
link_to stock_movement.originator.number, [:edit, :admin, stock_movement.originator.order]
|
8
|
+
else
|
9
|
+
stock_movement.originator.number
|
10
|
+
end
|
11
|
+
else
|
12
|
+
""
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def display_variant(stock_movement)
|
17
|
+
variant = stock_movement.stock_item.variant
|
18
|
+
output = [variant.name]
|
19
|
+
output << variant.options_text unless variant.options_text.blank?
|
20
|
+
safe_join(output, '<br />'.html_safe)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
module TablesHelper
|
4
|
+
|
5
|
+
# Adds class 'active' to <th> & <td> tags
|
6
|
+
# for better tables styling
|
7
|
+
def sort_by_active_class(row)
|
8
|
+
if params[:q][:s] && params[:q][:s].include?(row)
|
9
|
+
return "sort-active"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Spree
|
2
|
+
module PromotionRulesHelper
|
3
|
+
|
4
|
+
def options_for_promotion_rule_types(promotion)
|
5
|
+
existing = promotion.rules.map { |rule| rule.class.name }
|
6
|
+
rule_names = Rails.application.config.spree.promotions.rules.map(&:name).reject{ |r| existing.include? r }
|
7
|
+
options = rule_names.map { |name| [ Spree.t("promotion_rule_types.#{name.demodulize.underscore}.name"), name] }
|
8
|
+
options_for_select(options)
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|