forgeos_commerce 1.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/COPYING +339 -0
- data/COPYING.LESSER +165 -0
- data/Gemfile +2 -0
- data/LICENSE +2 -0
- data/MIT-LICENSE +20 -0
- data/README.textile +27 -0
- data/app/assets/images/forgeos/admin/favicon.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/association_product/bubble-quantity-products.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/association_product/check-checked.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/association_product/check-unchecked.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/association_product/context.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/association_product/create.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/association_product/dark-blue-minus.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/association_product/dark-blue-plus.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/association_product/dot.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/association_product/f.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/association_product/fminus.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/association_product/fminus_rtl.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/association_product/folder.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/association_product/fplus.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/association_product/fplus_rtl.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/association_product/lastli.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/association_product/lastli_rtl.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/association_product/li.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/association_product/remove.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/association_product/rename.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/association_product/throbber.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/bubble-quantity-products.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/check-checked.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/check-unchecked.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/context.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/create.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/dark-blue-minus.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/dark-blue-plus.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/dot.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/drag-drop.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/f.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/fminus.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/fminus_rtl.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/folder.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/fplus.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/fplus_rtl.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/grey-drag-drop.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/lastli.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/lastli_rtl.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/li.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/remove.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/rename.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/product-types/throbber.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/product_category/brown-minus.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/product_category/brown-plus.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/product_category/bubble-quantity-products.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/product_category/context.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/product_category/create.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/product_category/dot.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/product_category/f.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/product_category/fminus.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/product_category/fminus_rtl.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/product_category/fplus.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/product_category/fplus_rtl.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/product_category/lastli.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/product_category/lastli_rtl.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/product_category/li.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/product_category/remove.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/product_category/rename.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/product_category/throbber.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/zone-tree/bubble-quantity-products.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/zone-tree/check-checked.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/zone-tree/check-unchecked.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/zone-tree/context.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/zone-tree/create.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/zone-tree/dark-blue-minus.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/zone-tree/dark-blue-plus.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/zone-tree/dot.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/zone-tree/f.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/zone-tree/fminus.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/zone-tree/fminus_rtl.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/zone-tree/folder.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/zone-tree/fplus.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/zone-tree/fplus_rtl.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/zone-tree/lastli.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/zone-tree/lastli_rtl.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/zone-tree/li.gif +0 -0
- data/app/assets/images/forgeos/jstree/themes/zone-tree/remove.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/zone-tree/rename.png +0 -0
- data/app/assets/images/forgeos/jstree/themes/zone-tree/throbber.gif +0 -0
- data/app/assets/javascripts/forgeos/admin/functions.js +3 -0
- data/app/assets/javascripts/forgeos/admin/functions/forgeos_commerce/all.js +1 -0
- data/app/assets/javascripts/forgeos/admin/functions/forgeos_commerce/attributes.js +18 -0
- data/app/assets/javascripts/forgeos/admin/functions/forgeos_commerce/cross-sellings.js +18 -0
- data/app/assets/javascripts/forgeos/admin/functions/forgeos_commerce/orders.js +88 -0
- data/app/assets/javascripts/forgeos/admin/functions/forgeos_commerce/products.js +46 -0
- data/app/assets/javascripts/forgeos/admin/functions/forgeos_commerce/rules.js +98 -0
- data/app/assets/javascripts/forgeos/admin/functions/forgeos_commerce/transporters.js +60 -0
- data/app/assets/javascripts/forgeos/admin/functions/forgeos_commerce/trees.js +35 -0
- data/app/assets/javascripts/forgeos/admin/functions/forgeos_commerce/uploads.js +10 -0
- data/app/assets/javascripts/forgeos/admin/inits.js +3 -0
- data/app/assets/javascripts/forgeos/admin/inits/forgeos_commerce/all.js +1 -0
- data/app/assets/javascripts/forgeos/admin/inits/forgeos_commerce/clicks.js +25 -0
- data/app/assets/javascripts/forgeos/admin/inits/forgeos_commerce/cross-sellings.js +69 -0
- data/app/assets/javascripts/forgeos/admin/inits/forgeos_commerce/customer.js +64 -0
- data/app/assets/javascripts/forgeos/admin/inits/forgeos_commerce/orders.js +83 -0
- data/app/assets/javascripts/forgeos/admin/inits/forgeos_commerce/overlays.js +45 -0
- data/app/assets/javascripts/forgeos/admin/inits/forgeos_commerce/products.js +103 -0
- data/app/assets/javascripts/forgeos/admin/inits/forgeos_commerce/settings.js +15 -0
- data/app/assets/javascripts/forgeos/admin/inits/forgeos_commerce/special-offers.js +23 -0
- data/app/assets/javascripts/forgeos/admin/inits/forgeos_commerce/trees.js +71 -0
- data/app/assets/stylesheets/forgeos/admin/base.css.sass +3 -0
- data/app/assets/stylesheets/forgeos/admin/forgeos_commerce/_all.css.sass +9 -0
- data/app/assets/stylesheets/forgeos/admin/forgeos_commerce/_attributes.css.sass +59 -0
- data/app/assets/stylesheets/forgeos/admin/forgeos_commerce/_customer.css.sass +84 -0
- data/app/assets/stylesheets/forgeos/admin/forgeos_commerce/_delivery.css.sass +81 -0
- data/app/assets/stylesheets/forgeos/admin/forgeos_commerce/_dropdowns.css.sass +171 -0
- data/app/assets/stylesheets/forgeos/admin/forgeos_commerce/_order.css.sass +208 -0
- data/app/assets/stylesheets/forgeos/admin/forgeos_commerce/_payment.css.sass +34 -0
- data/app/assets/stylesheets/forgeos/admin/forgeos_commerce/_products.css.sass +341 -0
- data/app/assets/stylesheets/forgeos/admin/forgeos_commerce/_special_offers.css.sass +198 -0
- data/app/assets/stylesheets/forgeos/admin/forgeos_commerce/_transporters.css.sass +5 -0
- data/app/assets/stylesheets/forgeos/jstree/themes/association_product/style.css.sass +50 -0
- data/app/assets/stylesheets/forgeos/jstree/themes/product-types/style.css.sass +129 -0
- data/app/assets/stylesheets/forgeos/jstree/themes/product_category/style.css.sass +109 -0
- data/app/assets/stylesheets/forgeos/jstree/themes/zone-tree/style.css.sass +103 -0
- data/app/controllers/addresses_controller.rb +51 -0
- data/app/controllers/admin/attributes_controller.rb +161 -0
- data/app/controllers/admin/base_controller.rb +5 -0
- data/app/controllers/admin/brands_controller.rb +119 -0
- data/app/controllers/admin/forms_controller.rb +66 -0
- data/app/controllers/admin/geo_zones_controller.rb +74 -0
- data/app/controllers/admin/import_controller.rb +50 -0
- data/app/controllers/admin/orders_controller.rb +248 -0
- data/app/controllers/admin/product_types_controller.rb +122 -0
- data/app/controllers/admin/products_controller.rb +204 -0
- data/app/controllers/admin/special_offers_controller.rb +236 -0
- data/app/controllers/admin/statistics_controller.rb +64 -0
- data/app/controllers/admin/transporter_rules_controller.rb +307 -0
- data/app/controllers/admin/users_controller.rb +100 -0
- data/app/controllers/admin/vouchers_controller.rb +207 -0
- data/app/controllers/application_controller.rb +75 -0
- data/app/controllers/order_controller.rb +229 -0
- data/app/helpers/admin/payment_fields_helper.rb +31 -0
- data/app/helpers/application_helper.rb +7 -0
- data/app/helpers/cart_helper.rb +40 -0
- data/app/helpers/category_helper.rb +36 -0
- data/app/helpers/product_helper.rb +118 -0
- data/app/helpers/routes_helper.rb +60 -0
- data/app/helpers/wishlist_helper.rb +142 -0
- data/app/models/address_delivery.rb +2 -0
- data/app/models/address_invoice.rb +2 -0
- data/app/models/attribute.rb +38 -0
- data/app/models/attribute_category.rb +3 -0
- data/app/models/attribute_value.rb +10 -0
- data/app/models/brand.rb +22 -0
- data/app/models/brand_category.rb +3 -0
- data/app/models/cart.rb +190 -0
- data/app/models/cart_item.rb +21 -0
- data/app/models/checkbox_attribute.rb +2 -0
- data/app/models/country.rb +4 -0
- data/app/models/cross_sellings_product.rb +4 -0
- data/app/models/currencies_exchanges_rate.rb +2 -0
- data/app/models/currency.rb +13 -0
- data/app/models/date_attribute.rb +2 -0
- data/app/models/dynamic_attribute.rb +6 -0
- data/app/models/dynamic_attribute_value.rb +5 -0
- data/app/models/form.rb +7 -0
- data/app/models/form_attribute.rb +3 -0
- data/app/models/geo_zone.rb +6 -0
- data/app/models/longtext_attribute.rb +2 -0
- data/app/models/number_attribute.rb +2 -0
- data/app/models/order.rb +483 -0
- data/app/models/order_detail.rb +129 -0
- data/app/models/order_shipping.rb +25 -0
- data/app/models/pack.rb +9 -0
- data/app/models/picklist_attribute.rb +2 -0
- data/app/models/product.rb +294 -0
- data/app/models/product_attribute.rb +4 -0
- data/app/models/product_category.rb +9 -0
- data/app/models/product_link.rb +9 -0
- data/app/models/product_price_variation.rb +3 -0
- data/app/models/product_sold_counter.rb +2 -0
- data/app/models/product_sweeper.rb +30 -0
- data/app/models/product_type.rb +27 -0
- data/app/models/product_type_category.rb +3 -0
- data/app/models/product_viewed_counter.rb +2 -0
- data/app/models/products_wishlist.rb +25 -0
- data/app/models/radio_attribute.rb +2 -0
- data/app/models/radiobutton_attribute.rb +2 -0
- data/app/models/setting.rb +46 -0
- data/app/models/size.rb +5 -0
- data/app/models/special_offer_category.rb +3 -0
- data/app/models/special_offer_rule.rb +21 -0
- data/app/models/text_attribute.rb +2 -0
- data/app/models/text_field_attribute.rb +2 -0
- data/app/models/transporter_category.rb +3 -0
- data/app/models/transporter_rule.rb +3 -0
- data/app/models/url_attribute.rb +2 -0
- data/app/models/user.rb +45 -0
- data/app/models/user_address.rb +6 -0
- data/app/models/voucher_category.rb +3 -0
- data/app/models/voucher_rule.rb +3 -0
- data/app/models/wishlist.rb +134 -0
- data/app/views/admin/addresses/_form.html.haml +42 -0
- data/app/views/admin/attributes/_categories.html.haml +7 -0
- data/app/views/admin/attributes/_choice.html.haml +24 -0
- data/app/views/admin/attributes/_date.html.haml +5 -0
- data/app/views/admin/attributes/_form.html.haml +36 -0
- data/app/views/admin/attributes/_longtext.html.haml +5 -0
- data/app/views/admin/attributes/_number.html.haml +5 -0
- data/app/views/admin/attributes/_tabs.html.haml +6 -0
- data/app/views/admin/attributes/_text.html.haml +5 -0
- data/app/views/admin/attributes/_url.html.haml +5 -0
- data/app/views/admin/attributes/destroy.js.erb +1 -0
- data/app/views/admin/attributes/edit.html.haml +2 -0
- data/app/views/admin/attributes/index.html.haml +33 -0
- data/app/views/admin/attributes/index.json.erb +24 -0
- data/app/views/admin/attributes/new.html.haml +2 -0
- data/app/views/admin/attributes/show.html.haml +51 -0
- data/app/views/admin/brands/_form.html.haml +29 -0
- data/app/views/admin/brands/_tabs.html.haml +6 -0
- data/app/views/admin/brands/destroy.js.erb +1 -0
- data/app/views/admin/brands/edit.html.haml +2 -0
- data/app/views/admin/brands/index.html.haml +15 -0
- data/app/views/admin/brands/index.json.erb +23 -0
- data/app/views/admin/brands/new.html.haml +2 -0
- data/app/views/admin/dashboard/index.html.haml +230 -0
- data/app/views/admin/forms/_form.html.haml +38 -0
- data/app/views/admin/forms/_tabs.html.haml +6 -0
- data/app/views/admin/forms/destroy.js.erb +1 -0
- data/app/views/admin/forms/edit.html.haml +2 -0
- data/app/views/admin/forms/index.html.haml +11 -0
- data/app/views/admin/forms/index.json.erb +20 -0
- data/app/views/admin/forms/new.html.haml +2 -0
- data/app/views/admin/geo_zones/_form.html.haml +20 -0
- data/app/views/admin/geo_zones/_list.html.haml +9 -0
- data/app/views/admin/geo_zones/edit.html.haml +3 -0
- data/app/views/admin/geo_zones/index.html.haml +49 -0
- data/app/views/admin/geo_zones/new.html.haml +3 -0
- data/app/views/admin/geo_zones/show.html.haml +4 -0
- data/app/views/admin/import/create_product.html.haml +2 -0
- data/app/views/admin/menus/_types_popups.html.haml +22 -0
- data/app/views/admin/orders/_address_form.html.haml +29 -0
- data/app/views/admin/orders/_form.html.haml +198 -0
- data/app/views/admin/orders/_list.html.haml +29 -0
- data/app/views/admin/orders/_products_popup.html.haml +15 -0
- data/app/views/admin/orders/create.html.haml +1 -0
- data/app/views/admin/orders/destroy.js.erb +1 -0
- data/app/views/admin/orders/edit.html.haml +1 -0
- data/app/views/admin/orders/index.html.haml +24 -0
- data/app/views/admin/orders/index.json.erb +48 -0
- data/app/views/admin/orders/show.html.haml +130 -0
- data/app/views/admin/product_types/_form.html.haml +46 -0
- data/app/views/admin/product_types/_list.html.haml +6 -0
- data/app/views/admin/product_types/_options_categories.html.haml +19 -0
- data/app/views/admin/product_types/_tabs.html.haml +6 -0
- data/app/views/admin/product_types/destroy.js.erb +1 -0
- data/app/views/admin/product_types/edit.html.haml +3 -0
- data/app/views/admin/product_types/index.html.haml +14 -0
- data/app/views/admin/product_types/index.json.erb +24 -0
- data/app/views/admin/product_types/new.html.haml +3 -0
- data/app/views/admin/product_types/show.html.haml +23 -0
- data/app/views/admin/products/_attributes.html.haml +37 -0
- data/app/views/admin/products/_cross_popup.html.haml +56 -0
- data/app/views/admin/products/_cross_sell_tr.html.haml +13 -0
- data/app/views/admin/products/_cross_sells.html.haml +1 -0
- data/app/views/admin/products/_form.html.haml +26 -0
- data/app/views/admin/products/_general.html.haml +153 -0
- data/app/views/admin/products/_list.html.haml +18 -0
- data/app/views/admin/products/_prices.html.haml +17 -0
- data/app/views/admin/products/_products_popup.html.haml +41 -0
- data/app/views/admin/products/_seo.html.haml +75 -0
- data/app/views/admin/products/_shippings.html.haml +0 -0
- data/app/views/admin/products/_sizes.html.haml +23 -0
- data/app/views/admin/products/_tabs.html.haml +2 -0
- data/app/views/admin/products/activate.js.erb +1 -0
- data/app/views/admin/products/destroy.js.erb +1 -0
- data/app/views/admin/products/edit.html.haml +1 -0
- data/app/views/admin/products/index.html.haml +20 -0
- data/app/views/admin/products/index.json.erb +65 -0
- data/app/views/admin/products/new.html.haml +1 -0
- data/app/views/admin/products/show.html.haml +158 -0
- data/app/views/admin/settings/_colissimo.html.haml +7 -0
- data/app/views/admin/settings/_godfather.html.haml +11 -0
- data/app/views/admin/settings/_google_shopping.html.haml +5 -0
- data/app/views/admin/settings/_payment.html.haml +63 -0
- data/app/views/admin/settings/_tabs.html.haml +5 -0
- data/app/views/admin/settings/edit.html.haml +33 -0
- data/app/views/admin/special_offers/_form.html.haml +88 -0
- data/app/views/admin/special_offers/_patterns.html.haml +151 -0
- data/app/views/admin/special_offers/_tabs.html.haml +5 -0
- data/app/views/admin/special_offers/_top_links.html.haml +6 -0
- data/app/views/admin/special_offers/activate.js.erb +1 -0
- data/app/views/admin/special_offers/destroy.js.erb +1 -0
- data/app/views/admin/special_offers/edit.html.haml +4 -0
- data/app/views/admin/special_offers/index.html.haml +15 -0
- data/app/views/admin/special_offers/index.json.erb +28 -0
- data/app/views/admin/special_offers/new.html.haml +2 -0
- data/app/views/admin/special_offers/show.html.haml +28 -0
- data/app/views/admin/special_offers/special_offer.html.haml +166 -0
- data/app/views/admin/statistics/index.html.haml +158 -0
- data/app/views/admin/transporter_rules/_delivery_rules.html.haml +83 -0
- data/app/views/admin/transporter_rules/_form.html.haml +90 -0
- data/app/views/admin/transporter_rules/_left_sidebar.html.haml +9 -0
- data/app/views/admin/transporter_rules/_sidebar.html.haml +10 -0
- data/app/views/admin/transporter_rules/_tabs.html.haml +8 -0
- data/app/views/admin/transporter_rules/activate.js.erb +1 -0
- data/app/views/admin/transporter_rules/destroy.js.erb +1 -0
- data/app/views/admin/transporter_rules/edit.html.haml +1 -0
- data/app/views/admin/transporter_rules/index.html.haml +13 -0
- data/app/views/admin/transporter_rules/index.json.erb +30 -0
- data/app/views/admin/transporter_rules/new.html.haml +1 -0
- data/app/views/admin/transporter_rules/show.html.haml +30 -0
- data/app/views/admin/users/_fields_for_addresses_deliveries.html.haml +38 -0
- data/app/views/admin/users/_fields_for_addresses_invoices.html.haml +34 -0
- data/app/views/admin/users/_form.html.haml +88 -0
- data/app/views/admin/users/edit.json.erb +35 -0
- data/app/views/admin/users/index.html.haml +12 -0
- data/app/views/admin/users/index.json.erb +32 -0
- data/app/views/admin/users/index2.html.haml +33 -0
- data/app/views/admin/users/show.html.haml +72 -0
- data/app/views/admin/vouchers/_form.html.haml +92 -0
- data/app/views/admin/vouchers/_tabs.html.haml +3 -0
- data/app/views/admin/vouchers/activate.js.erb +1 -0
- data/app/views/admin/vouchers/destroy.js.erb +1 -0
- data/app/views/admin/vouchers/index.html.haml +15 -0
- data/app/views/admin/vouchers/index.json.erb +28 -0
- data/app/views/admin/vouchers/new.html.haml +2 -0
- data/config/locales/activerecord/en.yml +6 -0
- data/config/locales/activerecord/fr.yml +18 -0
- data/config/locales/admin/address/en.yml +3 -0
- data/config/locales/admin/address/fr.yml +3 -0
- data/config/locales/admin/attribute/en.yml +76 -0
- data/config/locales/admin/attribute/fr.yml +75 -0
- data/config/locales/admin/brands/en.yml +24 -0
- data/config/locales/admin/brands/fr.yml +27 -0
- data/config/locales/admin/dashboard/en.yml +6 -0
- data/config/locales/admin/dashboard/fr.yml +6 -0
- data/config/locales/admin/order/en.yml +54 -0
- data/config/locales/admin/order/fr.yml +54 -0
- data/config/locales/admin/product/en.yml +105 -0
- data/config/locales/admin/product/fr.yml +106 -0
- data/config/locales/admin/settings/en.yml +90 -0
- data/config/locales/admin/settings/fr.yml +87 -0
- data/config/locales/admin/special_offer/en.yml +59 -0
- data/config/locales/admin/special_offer/fr.yml +60 -0
- data/config/locales/admin/transporter/en.yml +36 -0
- data/config/locales/admin/transporter/fr.yml +36 -0
- data/config/locales/admin/voucher/en.yml +3 -0
- data/config/locales/admin/voucher/fr.yml +3 -0
- data/config/locales/admin/wishlist/en.yml +89 -0
- data/config/locales/admin/wishlist/fr.yml +89 -0
- data/config/locales/common/en.yml +424 -0
- data/config/locales/common/fr.yml +422 -0
- data/config/routes.rb +109 -0
- data/config/search.example.yml +8 -0
- data/db/fixtures/currencies.yml +10 -0
- data/db/fixtures/currencies_exchanges_rates.yml +9 -0
- data/db/fixtures/page_translations.yml +11 -0
- data/db/fixtures/pages.yml +5 -0
- data/db/fixtures/people.yml +11 -0
- data/db/fixtures/product_type_translations.yml +11 -0
- data/db/fixtures/product_types.yml +2 -0
- data/db/migrate/20091009134433_create_attribute_values.rb +15 -0
- data/db/migrate/20091009134440_create_attribute_values_products.rb +14 -0
- data/db/migrate/20091009134448_create_attributes.rb +17 -0
- data/db/migrate/20091009134455_create_attributes_product_types.rb +14 -0
- data/db/migrate/20091009134525_create_carts.rb +15 -0
- data/db/migrate/20091009134532_create_cart_items.rb +14 -0
- data/db/migrate/20091009134609_create_cross_sellings_products.rb +11 -0
- data/db/migrate/20091009134616_create_currencies.rb +15 -0
- data/db/migrate/20091009134624_create_currencies_exchanges_rates.rb +13 -0
- data/db/migrate/20091009134631_create_dynamic_attribute_values.rb +17 -0
- data/db/migrate/20091009134659_create_order_details.rb +24 -0
- data/db/migrate/20091009134706_create_order_shippings.rb +16 -0
- data/db/migrate/20091009134714_create_orders.rb +21 -0
- data/db/migrate/20091009134721_create_packs_products.rb +13 -0
- data/db/migrate/20091009134805_create_product_types.rb +11 -0
- data/db/migrate/20091009134813_create_products.rb +37 -0
- data/db/migrate/20091009134821_create_products_wishlists.rb +13 -0
- data/db/migrate/20091009134947_create_wishlists.rb +12 -0
- data/db/migrate/20100323143123_create_geo_zones_transporter_rules.rb +12 -0
- data/db/migrate/20100414090950_create_brands.rb +15 -0
- data/db/migrate/20100414091706_create_sizes.rb +15 -0
- data/db/migrate/20100928123009_add_patronage_to_people.rb +20 -0
- data/db/migrate/20101007074306_create_product_price_variations.rb +13 -0
- data/db/migrate/20110311111210_create_forms.rb +13 -0
- data/db/migrate/20110311112646_attributes_forms.rb +13 -0
- data/db/migrate/20110322165950_add_payment_methods_to_settings.rb +13 -0
- data/db/migrate/20110405084454_add_colissimo_methods_to_settings.rb +13 -0
- data/db/migrate/20110516075553_add_google_infos_to_settings.rb +11 -0
- data/db/migrate/20110831164213_add_order_fields_to_addresses.rb +9 -0
- data/lib/CMCIC_Config.rb +16 -0
- data/lib/CMCIC_Tpe.rb +227 -0
- data/lib/forgeos/commerce.rb +9 -0
- data/lib/forgeos/commerce/admin_menu.rb +28 -0
- data/lib/forgeos/commerce/engine.rb +11 -0
- data/lib/forgeos/commerce/float.rb +10 -0
- data/lib/forgeos/commerce/statistics.rb +62 -0
- data/lib/forgeos/commerce/version.rb +5 -0
- data/lib/forgeos_commerce.rb +1 -0
- data/lib/special_offer.rb +61 -0
- data/lib/tasks/install.rake +9 -0
- data/lib/transporter.rb +26 -0
- data/lib/voucher.rb +41 -0
- data/recipes/deploy.rb +15 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +9 -0
- data/test/dummy/app/assets/stylesheets/application.css +7 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +42 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +27 -0
- data/test/dummy/config/environments/production.rb +51 -0
- data/test/dummy/config/environments/test.rb +39 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +10 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +58 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +26 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/forgeos_commerce_test.rb +7 -0
- data/test/test_helper.rb +10 -0
- metadata +539 -0
@@ -0,0 +1,151 @@
|
|
1
|
+
%div.end-conditions{ :style => 'display : none'}
|
2
|
+
%p.end-condition.pattern
|
3
|
+
%span= select_tag 'end[targets][]', options_for_select(@end)
|
4
|
+
%span= select_tag 'end[conds][]', options_for_select(@conditions)
|
5
|
+
= text_field_tag 'end[values][]'
|
6
|
+
= link_to_function '', "add_rule('end-condition')", :class => 'small-icons green-add-icon'
|
7
|
+
= link_to_function '', "remove_rule(this,'end-condition')", :class => 'small-icons red-delete-icon'
|
8
|
+
.clear
|
9
|
+
|
10
|
+
%div.action-conditions{ :style => 'display: none' }
|
11
|
+
- @actions = [[t(:discount,:scope=>[:special_offer,:action]),0],[t(:product,:scope=>[:special_offer,:action]),1],[t(:shipping,:scope=>[:special_offer,:action]),2]]
|
12
|
+
- @product_options = options_from_collection_for_select(@products, :id, :name)
|
13
|
+
|
14
|
+
%p.action-1-cart.pattern
|
15
|
+
%span= select_tag 'act[targets][]', options_for_select([[t(:product,:scope=>[:special_offer,:action]),1],[t(:shipping,:scope=>[:special_offer,:action]),2],[t(:cart,:scope=>[:special_offer,:action]),3]],1), {:onchange => "change_action(this,'action-condition','cart')"}
|
16
|
+
%span= select_tag 'act[values][]', @product_options
|
17
|
+
= link_to_function '', "add_action('action-1-cart')", :class => 'small-icons green-add-icon'
|
18
|
+
= link_to_function '', "remove_rule(this,'action-condition')", :class => 'small-icons red-delete-icon'
|
19
|
+
%br
|
20
|
+
.clear
|
21
|
+
|
22
|
+
%p.action-2-cart.pattern
|
23
|
+
%span= select_tag 'act[targets][]', options_for_select([[t(:product,:scope=>[:special_offer,:action]),1],[t(:shipping,:scope=>[:special_offer,:action]),2],[t(:cart,:scope=>[:special_offer,:action]),3]],2), {:onchange => "change_action(this,'action-condition','cart')"}
|
24
|
+
%span= hidden_field_tag 'act[values][]'
|
25
|
+
= link_to_function '', "add_action('action-2-cart')", :class => 'small-icons green-add-icon'
|
26
|
+
= link_to_function '', "remove_rule(this,'action-condition')", :class => 'small-icons red-delete-icon'
|
27
|
+
%br
|
28
|
+
.clear
|
29
|
+
|
30
|
+
%p.action-3-cart.pattern
|
31
|
+
%span= select_tag 'act[targets][]', options_for_select([[t(:product,:scope=>[:special_offer,:action]),1],[t(:shipping,:scope=>[:special_offer,:action]),2],[t(:cart,:scope=>[:special_offer,:action]),3]],3), {:onchange => "change_action(this,'action-condition','cart')"}
|
32
|
+
%span= select_tag 'act[conds][]', options_for_select(@discount_type)
|
33
|
+
= text_field_tag 'act[values][]'
|
34
|
+
= link_to_function '', "add_action('action-1-cart')", :class => 'small-icons green-add-icon'
|
35
|
+
= link_to_function '', "remove_rule(this,'action-condition')", :class => 'small-icons red-delete-icon'
|
36
|
+
%br
|
37
|
+
.clear
|
38
|
+
|
39
|
+
|
40
|
+
%p.action-1-productincart.pattern
|
41
|
+
%span= select_tag 'act[targets][]', options_for_select(@actions, 1), {:onchange => "change_action(this,'action-condition','productincart')"}
|
42
|
+
%span= select_tag 'act[values][]', @product_options
|
43
|
+
= link_to_function '', "add_action('action-1-productincart')", :class => 'small-icons green-add-icon'
|
44
|
+
= link_to_function '', "remove_rule(this,'action-condition')", :class => 'small-icons red-delete-icon'
|
45
|
+
%br
|
46
|
+
.clear
|
47
|
+
|
48
|
+
%p.action-2-productincart.pattern
|
49
|
+
%span= select_tag 'act[targets][]', options_for_select(@actions, 2), {:onchange => "change_action(this,'action-condition','productincart')"}
|
50
|
+
= link_to_function '', "add_action('action-2-productincart')", :class => 'small-icons green-add-icon'
|
51
|
+
= link_to_function '', "remove_rule(this,'action-condition')", :class => 'small-icons red-delete-icon'
|
52
|
+
%br
|
53
|
+
.clear
|
54
|
+
|
55
|
+
%p.action-0-productincart.pattern
|
56
|
+
%span= select_tag 'act[targets][]', options_for_select(@actions, 0), {:onchange => "change_action(this,'action-condition','productincart')"}
|
57
|
+
%span= select_tag 'act[conds][]', options_for_select(@discount_type)
|
58
|
+
= text_field_tag 'act[values][]'
|
59
|
+
= link_to_function '', "add_action('action-2-productincart')", :class => 'small-icons green-add-icon'
|
60
|
+
= link_to_function '', "remove_rule(this,'action-condition')", :class => 'small-icons red-delete-icon'
|
61
|
+
.clear
|
62
|
+
|
63
|
+
%p.action-0-productinshop.pattern
|
64
|
+
%span= select_tag 'act[targets][]', options_for_select([[t(:discount,:scope=>[:special_offer,:action]),0]], 0)
|
65
|
+
%span= select_tag 'act[conds][]', options_for_select(@discount_type)
|
66
|
+
= text_field_tag 'act[values][]'
|
67
|
+
.clear
|
68
|
+
|
69
|
+
%p.action-0-category.pattern
|
70
|
+
%span= select_tag 'act[targets][]', options_for_select([[t(:discount,:scope=>[:special_offer,:action]),0]], 0)
|
71
|
+
%span= select_tag 'act[conds][]', options_for_select(@discount_type)
|
72
|
+
= text_field_tag 'act[values][]'
|
73
|
+
.clear
|
74
|
+
|
75
|
+
|
76
|
+
%div.rule-conditions{ :style => 'display: none'}
|
77
|
+
|
78
|
+
%p.rule-condition.pattern
|
79
|
+
%span= select_tag 'rule[targets][]', options_for_select(@product_attributes,{:disabled => @disable_attributes}),{ :onchange => "change_rule(this,'rule-condition')" }
|
80
|
+
%span= select_tag 'rule[conds][]', options_for_select(@conditions)
|
81
|
+
= text_field_tag 'rule[values][]'
|
82
|
+
= link_to_function '', "add_rule('rule-condition')", :class => 'small-icons green-add-icon'
|
83
|
+
= link_to_function '', "remove_rule(this,'rule-condition')", :class => 'small-icons red-delete-icon'
|
84
|
+
.clear
|
85
|
+
|
86
|
+
%p.rule-Title.pattern
|
87
|
+
%span= select_tag 'rule[targets][]', options_for_select(@product_attributes,{:disabled => @disable_attributes, :selected => 'Title'}),{ :onchange => "change_rule(this,'rule-condition')" }
|
88
|
+
%span= select_tag 'rule[conds][]', options_for_select(@conditions)
|
89
|
+
%span= select_tag 'rule[values][]', options_from_collection_for_select(@products, :name, :name)
|
90
|
+
= link_to_function '', "add_rule('rule-condition')", :class => 'small-icons green-add-icon'
|
91
|
+
= link_to_function '', "remove_rule(this,'rule-condition')", :class => 'small-icons red-delete-icon'
|
92
|
+
%br
|
93
|
+
.clear
|
94
|
+
|
95
|
+
%p.rule-product_type_id.pattern
|
96
|
+
%span= select_tag 'rule[targets][]', options_for_select(@product_attributes,{:disabled => @disable_attributes, :selected => 'product_type_id'}),{ :onchange => "change_rule(this,'rule-condition')" }
|
97
|
+
%span= select_tag 'rule[conds][]', options_for_select(@conditions)
|
98
|
+
%span= select_tag 'rule[values][]', options_from_collection_for_select(ProductType.all(:select => 'product_types.id,name', :group => 'product_type_id',:joins => :translations, :order => 'name' ),:id,:name)
|
99
|
+
= link_to_function '', "add_rule('rule-condition')", :class => 'small-icons green-add-icon'
|
100
|
+
= link_to_function '', "remove_rule(this,'rule-condition')", :class => 'small-icons red-delete-icon'
|
101
|
+
%br
|
102
|
+
.clear
|
103
|
+
|
104
|
+
%p.rule-brand_id.pattern
|
105
|
+
%span= select_tag 'rule[targets][]', options_for_select(@product_attributes,{:disabled => @disable_attributes, :selected => 'brand_id'}),{ :onchange => "change_rule(this,'rule-condition')" }
|
106
|
+
%span= select_tag 'rule[conds][]', options_for_select(@conditions)
|
107
|
+
%span= select_tag 'rule[values][]', options_from_collection_for_select(Brand.all(:select => 'brands.id,name', :order => 'name' ),:id,:name)
|
108
|
+
= link_to_function '', "add_rule('rule-condition')", :class => 'small-icons green-add-icon'
|
109
|
+
= link_to_function '', "remove_rule(this,'rule-condition')", :class => 'small-icons red-delete-icon'
|
110
|
+
%br
|
111
|
+
.clear
|
112
|
+
|
113
|
+
- @default_attributes.each do |name,attribute|
|
114
|
+
- next if %(brand_id product_type_id).include?(attribute)
|
115
|
+
%p{:class => "rule-#{attribute} pattern"}
|
116
|
+
%span= select_tag 'rule[targets][]', options_for_select(@product_attributes,{:disabled => @disable_attributes, :selected => attribute}),{ :onchange => "change_rule(this,'rule-condition')" }
|
117
|
+
%span= select_tag 'rule[conds][]', options_for_select(@conditions)
|
118
|
+
= text_field_tag 'rule[values][]'
|
119
|
+
= link_to_function '', "add_rule('rule-condition')", :class => 'small-icons green-add-icon'
|
120
|
+
= link_to_function '', "remove_rule(this,'rule-condition')", :class => 'small-icons red-delete-icon'
|
121
|
+
.clear
|
122
|
+
|
123
|
+
|
124
|
+
-@attributes.each do |name, access_method|
|
125
|
+
%p{:class => "rule-#{access_method.delete(' ')} pattern"}
|
126
|
+
%span= select_tag 'rule[targets][]', options_for_select(@product_attributes,{:disabled => @disable_attributes, :selected => access_method}),{ :onchange => "change_rule(this,'rule-condition')" }
|
127
|
+
%span= select_tag 'rule[conds][]', options_for_select(@conditions)
|
128
|
+
- current_attribute = Attribute.find_by_access_method(access_method)
|
129
|
+
-if current_attribute && current_attribute.dynamic
|
130
|
+
= text_field_tag 'rule[values][]'
|
131
|
+
-else
|
132
|
+
%span= select_tag 'rule[values][]', options_for_select(current_attribute.attribute_values(:joins=>[:translations],:select => 'name').collect(&:name))
|
133
|
+
= link_to_function '', "add_rule('rule-condition')", :class => 'small-icons green-add-icon'
|
134
|
+
= link_to_function '', "remove_rule(this,'rule-condition')", :class => 'small-icons red-delete-icon'
|
135
|
+
-if !current_attribute.dynamic
|
136
|
+
%br
|
137
|
+
.clear
|
138
|
+
|
139
|
+
-@cart_attributes.each do |name,attribute|
|
140
|
+
%p{:class => "rule-#{attribute.delete " "} pattern"}
|
141
|
+
%span= select_tag 'rule[targets][]', options_for_select(@cart_attributes, attribute),{ :onchange => "change_rule(this,'rule-condition')" }
|
142
|
+
%span= select_tag 'rule[conds][]', options_for_select(@conditions)
|
143
|
+
- if attribute == 'Shipping method'
|
144
|
+
%span= select_tag 'rule[values][]', options_from_collection_for_select(TransporterRule.all( :select => 'id, name', :order => 'name', :conditions => { :parent_id => nil } ), :id, :name)
|
145
|
+
- else
|
146
|
+
= text_field_tag 'rule[values][]'
|
147
|
+
= link_to_function '', "add_cart_rule()", :class => 'small-icons green-add-icon'
|
148
|
+
= link_to_function '', "remove_rule(this,'rule-condition')", :class => 'small-icons red-delete-icon'
|
149
|
+
- if attribute == 'Shipping method'
|
150
|
+
%br
|
151
|
+
.clear
|
@@ -0,0 +1,5 @@
|
|
1
|
+
%ul.ui-tabs-nav.ui-helper-reset.ui-helper-clearfix.ui-widget-header.ui-corner-all
|
2
|
+
%li.ui-state-default.ui-corner-top.ui-tabs-selected.ui-state-active= link_to I18n.t('special_offer', :count => 2).capitalize, '#content'
|
3
|
+
%li.ui-state-default.ui-corner-top= link_to I18n.t('voucher', :count => 2).capitalize, [forgeos_commerce, :admin, :vouchers]
|
4
|
+
|
5
|
+
|
@@ -0,0 +1,6 @@
|
|
1
|
+
- content_for :tools, link_to(I18n.t('list').capitalize, url_for(:action => :index), :class => 'house' )
|
2
|
+
- if price_cut && !(price_cut.new_record?)
|
3
|
+
- content_for :tools do
|
4
|
+
= link_to(I18n.t('show').capitalize, [forgeos_commerce, :admin, price_cut])
|
5
|
+
= link_to(I18n.t('edit').capitalize, [forgeos_commerce, :edit, :admin, price_cut])
|
6
|
+
= link_to(I18n.t('destroy').capitalize, [forgeos_commerce, :admin, price_cut], :confirm => I18n.t('price_cut.destroy.confirm').capitalize, :method => :delete)
|
@@ -0,0 +1 @@
|
|
1
|
+
toggleActivate('#<%= polymorphic_html_id @special_offer, 'show' -%>');
|
@@ -0,0 +1 @@
|
|
1
|
+
removedataTablesRow('#<%= polymorphic_html_id @special_offer, 'destroy' -%>');
|
@@ -0,0 +1,15 @@
|
|
1
|
+
= render :partial => 'tabs'
|
2
|
+
= render :partial => 'admin/sidebars/left_sidebar', :locals => { :icon_class => 'offers', :sidebar_title => 'special_offer.all', :tree_id => 'special-offer-tree' }
|
3
|
+
|
4
|
+
#content.grid_12.alpha.omega
|
5
|
+
.backgrounds.header
|
6
|
+
= link_to content_tag(:span,I18n.t('special_offer.create.action').capitalize, :class=>'big-icons create-product'), [forgeos_commerce, :new, :admin, :special_offer], :class=>'backgrounds action-button'
|
7
|
+
#search.right
|
8
|
+
= link_to content_tag(:span, I18n.t('search').capitalize, :class => 'small-icons search-span'), '#', :class => 'small-icons left search-link'
|
9
|
+
.backgrounds.search-form
|
10
|
+
.content-background
|
11
|
+
%table#table.datatable.draggable_rows
|
12
|
+
|
13
|
+
|
14
|
+
= dataTables_tag :url => forgeos_commerce.admin_special_offers_path(:format => :json), :columns => ["{'sClass': 'image_product_td', 'bSearchable':false}","{'sTitle':'#{I18n.t :name}'}","{'sTitle':'Status'}","{'sTitle':'Used'}","{'sClass':'actions-td','bSearchable':false}"]
|
15
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<%
|
2
|
+
output = {
|
3
|
+
:sEcho => params[:sEcho],
|
4
|
+
:iTotalRecords => @special_offers.total_entries || 0,
|
5
|
+
:iTotalDisplayRecords => @special_offers.size,
|
6
|
+
:aaData => @special_offers.collect do |special_offer|
|
7
|
+
klass = special_offer.active? ? 'see-on' : 'see-off'
|
8
|
+
[
|
9
|
+
content_tag(:div, content_tag(:div, '', :class => 'handler') + content_tag(:div, '', :class => 'small-icons offers'), :id => polymorphic_html_id(special_offer), :class => 'handler_container'),
|
10
|
+
link_to(special_offer.name, [forgeos_commerce, :admin, special_offer]),
|
11
|
+
link_to('', [forgeos_commerce, :activate, :admin, special_offer],
|
12
|
+
:remote => true,
|
13
|
+
:class => "small-icons #{klass}",
|
14
|
+
:id => polymorphic_html_id(special_offer, 'show')
|
15
|
+
),
|
16
|
+
special_offer.use,
|
17
|
+
link_to('', [forgeos_commerce, :admin, special_offer],
|
18
|
+
:remote => true,
|
19
|
+
:method => :delete,
|
20
|
+
:confirm => I18n.t('special_offer.destroy.confirm').capitalize,
|
21
|
+
:class => 'small-icons destroy-link',
|
22
|
+
:id => polymorphic_html_id(special_offer, 'destroy')
|
23
|
+
)
|
24
|
+
]
|
25
|
+
end
|
26
|
+
}
|
27
|
+
-%>
|
28
|
+
<%= raw output.to_json -%>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
.backgrounds.big-header
|
2
|
+
%h1= @special_offer.name
|
3
|
+
.interact-links
|
4
|
+
= link_to I18n.t('back_to_special_offer').capitalize, [forgeos_commerce, :admin, :special_offers], :class => 'backgrounds interact-button'
|
5
|
+
/= I18n.t('or')
|
6
|
+
/= link_to I18n.t('back_to_special_offer').capitalize,admin_special_offers_path, :class => 'back-link'
|
7
|
+
|
8
|
+
#content.grid_16.alpha.omega
|
9
|
+
.special_offers.grid_12.alpha.omega
|
10
|
+
.grid_8.omega
|
11
|
+
.description= @special_offer.description
|
12
|
+
.description= "#{I18n.t('offer_used', :count => @special_offer.use).capitalize}"
|
13
|
+
.inner-content
|
14
|
+
|
15
|
+
.specialOffers_products
|
16
|
+
.specialOffers_products_header
|
17
|
+
= "#{I18n.t('apply', :count => @selected_products.size).capitalize}"
|
18
|
+
#specialOffers_products_table
|
19
|
+
.thead
|
20
|
+
.tr
|
21
|
+
.th
|
22
|
+
.tbody
|
23
|
+
-@selected_products.each do |product|
|
24
|
+
-product = Product.find_by_id(product, :joins => :translations, :select => 'name, products.id')
|
25
|
+
.tr
|
26
|
+
.td
|
27
|
+
=image_tag(product.pictures.first.public_filename(:thumb)) unless product.pictures.empty?
|
28
|
+
=link_to product.name, [forgeos_commerce, :admin, product]
|
@@ -0,0 +1,166 @@
|
|
1
|
+
- @default_attributes = ['Price','Title','Description', 'Weight', 'SKU', 'Stock']
|
2
|
+
- @attributes = Attribute.all.collect(&:name)
|
3
|
+
- @cart_attributes = ['Total items quantity', 'Total weight', 'Total amount', 'Shipping method']
|
4
|
+
- @disable_attributes = ['MAIN SETTINGS','ATTRIBUTES']
|
5
|
+
|
6
|
+
- @for = Hash["Product in Shop", "Product", "Product in Cart", "Product", "Cart", "Cart"]
|
7
|
+
|
8
|
+
- @condition_is = Hash["Is", "=="]
|
9
|
+
- @conditions = Hash["Is not", "not==","Equals or greater than",">=","Equals or less than","<=", "Greater than", ">", "Less than","<"]
|
10
|
+
|
11
|
+
|
12
|
+
%h1 Create a special offer
|
13
|
+
- form_tag [forgeos_commerce, :admin, :special_offers] do
|
14
|
+
%p
|
15
|
+
= label 'rule_builder', 'name'
|
16
|
+
= text_field 'rule_builder', 'name'
|
17
|
+
%p
|
18
|
+
= label 'rule_builder', 'description'
|
19
|
+
= text_area 'rule_builder', 'description', :rows => 2
|
20
|
+
%div{:style => 'margin : 1em; padding: 3em; border : 1px solid #000000', :class => 'ui-corner-all'}
|
21
|
+
%h3 For
|
22
|
+
= select_tag 'rule_builder[for]', options_for_select(Hash['Category', "Category"].collect{|c| [c[0], c[1]]}+@for.collect{|c| [c[0], c[1]] }), {:onchange => "change_select_for(this)"}
|
23
|
+
= select 'rule_builder', 'target', Category.all.collect(&:name)
|
24
|
+
%div{:style => 'margin : 1em; padding: 3em; border : 1px solid #000000', :class => 'ui-corner-all'}
|
25
|
+
%h3 If
|
26
|
+
= select 'rule_builder', 'if', %w(All Any)
|
27
|
+
of these conditions are true
|
28
|
+
#rule-conditions
|
29
|
+
%p.rule-condition
|
30
|
+
= select_tag 'rule[targets][]', options_for_select(['MAIN SETTINGS']+@default_attributes+['ATTRIBUTES']+@attributes,{:disabled => @disable_attributes}),{ :onchange => "change_rule(this,'rule-condition')" }
|
31
|
+
= select_tag 'rule[conds][]', options_for_select(@condition_is.collect{|c| [c[0], c[1]] }+ @conditions.collect{|c| [c[0], c[1]] })
|
32
|
+
= text_field_tag 'rule[values][]'
|
33
|
+
= link_to_function ' ', "remove_rule(this,'rule-condition')", :class => 'icon1 moins disabled'
|
34
|
+
= link_to_function ' ', "add_rule('rule-condition')", :class => 'icon1 plus'
|
35
|
+
|
36
|
+
%div{:style => 'margin : 1em; padding: 3em; border : 1px solid #000000', :class => 'ui-corner-all'}
|
37
|
+
%h3 Then
|
38
|
+
#action-conditions
|
39
|
+
%p.action-condition
|
40
|
+
= select_tag 'act[targets][]', options_for_select(['Discount price this product'], 'Discount price this product')
|
41
|
+
= select_tag 'act[conds][]', options_for_select(['By percent','By fixed amount'])
|
42
|
+
= text_field_tag 'act[values][]'
|
43
|
+
|
44
|
+
%div{:style => 'margin : 1em; padding: 3em; border : 1px solid #000000', :class => 'ui-corner-all'}
|
45
|
+
= check_box_tag 'end_offer'
|
46
|
+
End offer if
|
47
|
+
= select_tag 'end_offer_if', options_for_select(%w(Any All))
|
48
|
+
of these conditions are true
|
49
|
+
#end-conditions
|
50
|
+
%p.end-condition
|
51
|
+
= select_tag 'end[targets][]', options_for_select(['Date','Total number of offer use','Customer number of offer use'])
|
52
|
+
= select_tag 'end[conds][]', options_for_select(@condition_is.collect{|c| [c[0], c[1]] }+ @conditions.collect{|c| [c[0], c[1]] })
|
53
|
+
= text_field_tag 'end[values][]'
|
54
|
+
= link_to_function ' ', "remove_rule(this,'end-condition')", :class => 'icon1 moins disabled'
|
55
|
+
= link_to_function ' ', "add_rule('end-condition')", :class => 'icon1 plus'
|
56
|
+
|
57
|
+
%p
|
58
|
+
= check_box 'rule_builder', 'stop'
|
59
|
+
Stop futher rules processing
|
60
|
+
%p
|
61
|
+
= submit_tag I18n.t(:save).capitalize
|
62
|
+
= I18n.t(:or)
|
63
|
+
= link_to I18n.t(:cancel).capitalize, :back
|
64
|
+
|
65
|
+
|
66
|
+
%div.end-conditions{ :style => 'display : none'}
|
67
|
+
%p.end-condition.pattern
|
68
|
+
= select_tag 'end[targets][]', options_for_select(['Date','Total number of offer use','Customer number of offer use'])
|
69
|
+
= select_tag 'end[conds][]', options_for_select(@condition_is.collect{|c| [c[0], c[1]] }+ @conditions.collect{|c| [c[0], c[1]] })
|
70
|
+
= text_field_tag 'end[values][]'
|
71
|
+
= link_to_function ' ', "remove_rule(this,'end-condition')", :class => 'icon1 moins'
|
72
|
+
= link_to_function ' ', "add_rule('end-condition')", :class => 'icon1 plus'
|
73
|
+
|
74
|
+
%div.action-conditions{ :style => 'display: none' }
|
75
|
+
- @actions = ['Discount price this product','Offer a product','Offer free delivery']
|
76
|
+
|
77
|
+
%p.action-Offeraproduct-cart.pattern
|
78
|
+
= select_tag 'act[targets][]', options_for_select(['Offer a product', 'Offer free delivery'], 'Offer a product'), {:onchange => "change_action(this,'action-condition','cart')"}
|
79
|
+
= select_tag 'act[values][]', options_from_collection_for_select(Product.all, :id, :name)
|
80
|
+
= link_to_function ' ', "remove_rule(this,'action-condition')", :class => 'icon1 moins'
|
81
|
+
= link_to_function ' ', "add_action('action-Offeraproduct-cart')", :class => 'icon1 plus'
|
82
|
+
|
83
|
+
%p.action-Offerfreedelivery-cart.pattern
|
84
|
+
= select_tag 'act[targets][]', options_for_select(['Offer a product', 'Offer free delivery'],'Offer free delivery'), {:onchange => "change_action(this,'action-condition','cart')"}
|
85
|
+
= link_to_function ' ', "remove_rule(this,'action-condition')", :class => 'icon1 moins'
|
86
|
+
= link_to_function ' ', "add_action('action-Offeraproduct-cart')", :class => 'icon1 plus'
|
87
|
+
|
88
|
+
|
89
|
+
%p.action-Offeraproduct-productincart.pattern
|
90
|
+
= select_tag 'act[targets][]', options_for_select(['Discount price this product','Offer a product', 'Offer free delivery'], 'Offer a product'), {:onchange => "change_action(this,'action-condition','productincart')"}
|
91
|
+
= select_tag 'act[values][]', options_from_collection_for_select(Product.all, :id, :name)
|
92
|
+
= link_to_function ' ', "remove_rule(this,'action-condition')", :class => 'icon1 moins'
|
93
|
+
= link_to_function ' ', "add_action('action-Offeraproduct-productincart')", :class => 'icon1 plus'
|
94
|
+
|
95
|
+
%p.action-Offerfreedelivery-productincart.pattern
|
96
|
+
= select_tag 'act[targets][]', options_for_select(['Discount price this product','Offer a product', 'Offer free delivery'], 'Offer free delivery'), {:onchange => "change_action(this,'action-condition','productincart')"}
|
97
|
+
= link_to_function ' ', "remove_rule(this,'action-condition')", :class => 'icon1 moins'
|
98
|
+
= link_to_function ' ', "add_action('action-Offerfreedelivery-productincart')", :class => 'icon1 plus'
|
99
|
+
|
100
|
+
%p.action-Discountpricethisproduct-productincart.pattern
|
101
|
+
= select_tag 'act[targets][]', options_for_select(['Discount price this product','Offer a product', 'Offer free delivery'], 'Discount price this product'), {:onchange => "change_action(this,'action-condition','productincart')"}
|
102
|
+
= select_tag 'act[conds][]', options_for_select(['By percent','By fixed amount'])
|
103
|
+
= text_field_tag 'act[values][]'
|
104
|
+
= link_to_function ' ', "remove_rule(this,'action-condition')", :class => 'icon1 moins'
|
105
|
+
= link_to_function ' ', "add_action('action-Offerfreedelivery-productincart')", :class => 'icon1 plus'
|
106
|
+
|
107
|
+
%p.action-Discountpricethisproduct-productinshop.pattern
|
108
|
+
= select_tag 'act[targets][]', options_for_select(['Discount price this product'], 'Discount price this product')
|
109
|
+
= select_tag 'act[conds][]', options_for_select(['By percent','By fixed amount'])
|
110
|
+
= text_field_tag 'act[values][]'
|
111
|
+
|
112
|
+
%p.action-Discountpricethisproduct-category.pattern
|
113
|
+
= select_tag 'act[targets][]', options_for_select(['Discount price this product'], 'Discount price this product')
|
114
|
+
= select_tag 'act[conds][]', options_for_select(['By percent','By fixed amount'])
|
115
|
+
= text_field_tag 'act[values][]'
|
116
|
+
|
117
|
+
|
118
|
+
%div.rule-conditions{ :style => 'display: none'}
|
119
|
+
|
120
|
+
%p.rule-condition.pattern
|
121
|
+
= select_tag 'rule[targets][]', options_for_select(['MAIN SETTINGS']+@default_attributes+['ATTRIBUTES']+@attributes,{:disabled => @disable_attributes}),{ :onchange => "change_rule(this,'rule-condition')" }
|
122
|
+
= select_tag 'rule[conds][]', options_for_select(@condition_is.collect{|c| [c[0], c[1]] }+ @conditions.collect{|c| [c[0], c[1]] })
|
123
|
+
= text_field_tag 'rule[values][]'
|
124
|
+
= link_to_function ' ', "remove_rule(this,'rule-condition')", :class => 'icon1 moins'
|
125
|
+
= link_to_function ' ', "add_rule('rule-condition')", :class => 'icon1 plus'
|
126
|
+
|
127
|
+
- ['Price','Description', 'Weight', 'SKU', 'Stock'].each do |attribute|
|
128
|
+
%p{:class => "rule-#{attribute} pattern"}
|
129
|
+
= select_tag 'rule[targets][]', options_for_select(['MAIN SETTINGS']+@default_attributes+['ATTRIBUTES']+@attributes,{:disabled => @disable_attributes, :selected => attribute}),{ :onchange => "change_rule(this,'rule-condition')" }
|
130
|
+
= select_tag 'rule[conds][]', options_for_select(@condition_is.collect{|c| [c[0], c[1]] }+ @conditions.collect{|c| [c[0], c[1]] })
|
131
|
+
= text_field_tag 'rule[values][]'
|
132
|
+
= link_to_function ' ', "remove_rule(this,'rule-condition')", :class => 'icon1 moins'
|
133
|
+
= link_to_function ' ', "add_rule('rule-condition')", :class => 'icon1 plus'
|
134
|
+
|
135
|
+
%p.rule-Title.pattern
|
136
|
+
= select_tag 'rule[targets][]', options_for_select(['MAIN SETTINGS']+@default_attributes+['ATTRIBUTES']+@attributes,{:disabled => @disable_attributes, :selected => 'Title'}),{ :onchange => "change_rule(this,'rule-condition')" }
|
137
|
+
= select_tag 'rule[conds][]', options_for_select(@condition_is.collect{|c| [c[0], c[1]] }+ @conditions.collect{|c| [c[0], c[1]] })
|
138
|
+
= select_tag 'rule[values][]', options_for_select(Product.all.collect {|p| [p.name, p.name]})
|
139
|
+
= link_to_function ' ', "remove_rule(this,'rule-condition')", :class => 'icon1 moins'
|
140
|
+
= link_to_function ' ', "add_rule('rule-condition')", :class => 'icon1 plus'
|
141
|
+
|
142
|
+
-@attributes.each do |attribute|
|
143
|
+
%p{:class => "rule-#{attribute.delete " "} pattern"}
|
144
|
+
= select_tag 'rule[targets][]', options_for_select(['MAIN SETTINGS']+@default_attributes+['ATTRIBUTES']+@attributes,{:disabled => @disable_attributes, :selected => attribute}),{ :onchange => "change_rule(this,'rule-condition')" }
|
145
|
+
= select_tag 'rule[conds][]', options_for_select(@condition_is.collect{|c| [c[0], c[1]] }+ @conditions.collect{|c| [c[0], c[1]] })
|
146
|
+
-if Attribute.find_by_name(attribute).dynamic
|
147
|
+
= text_field_tag 'rule[values][]'
|
148
|
+
-else
|
149
|
+
= select_tag 'rule[values][]', options_for_select(Attribute.find_by_name(attribute).attribute_values.collect(&:name))
|
150
|
+
= link_to_function ' ', "remove_rule(this,'rule-condition')", :class => 'icon1 moins'
|
151
|
+
= link_to_function ' ', "add_rule('rule-condition')", :class => 'icon1 plus'
|
152
|
+
|
153
|
+
-@cart_attributes.each do |attribute|
|
154
|
+
%p{:class => "rule-#{attribute.delete " "} pattern"}
|
155
|
+
= select_tag 'rule[targets][]', options_for_select(@cart_attributes, attribute),{ :onchange => "change_rule(this,'rule-condition')" }
|
156
|
+
= select_tag 'rule[conds][]', options_for_select(@condition_is.collect{|c| [c[0], c[1]] }+ @conditions.collect{|c| [c[0], c[1]] })
|
157
|
+
- if attribute == 'Shipping method'
|
158
|
+
= select_tag 'rule[values][]', options_for_select(ShippingMethodDetail.all.collect(&:name))
|
159
|
+
- else
|
160
|
+
= text_field_tag 'rule[values][]'
|
161
|
+
= link_to_function ' ', "remove_rule(this,'rule-condition')", :class => 'icon1 moins'
|
162
|
+
= link_to_function ' ', "add_cart_rule()", :class => 'icon1 plus'
|
163
|
+
|
164
|
+
|
165
|
+
= javascript_include_tag 'special_offer'
|
166
|
+
|
@@ -0,0 +1,158 @@
|
|
1
|
+
= javascript_include_tag 'swfobject'
|
2
|
+
|
3
|
+
#dashboard.statistics.grtid_12.alpha.omega
|
4
|
+
.left-dashboard.grid_12.omega.alpha
|
5
|
+
.padding-wrap
|
6
|
+
%h2.small-icons.see-stats= t('statistic.trends').capitalize
|
7
|
+
.trend_filter
|
8
|
+
- form_tag [forgeos_core, :admin, :statistics], :id => 'form_stats' do |f|
|
9
|
+
%label
|
10
|
+
= "#{t('statistic.show.for').capitalize} :"
|
11
|
+
= select_tag :timestamp, options_for_select([[t('please_select'), nil], [t('statistic.last.month'), 'month'], [t('statistic.last.week'), 'week']], params[:timestamp]), :onchange => "$('#form_stats').submit()"
|
12
|
+
.chart
|
13
|
+
= @graph
|
14
|
+
.clear
|
15
|
+
|
16
|
+
%h2.small-icons.products= t('product', :count => 2).capitalize
|
17
|
+
.to-tab.ui-tabs.ui-widget.ui-widget-content.ui-corner-all
|
18
|
+
%ul.ui-tabs-nav.ui-helper-reset.ui-helper-clearfix.ui-widget-header.ui-corner-all
|
19
|
+
%li.ui-state-default.ui-corner-top.ui-tabs-selected.ui-state-active= link_to t('product.best_seller', :count => @products_most_sold.size), '#best-sellers'
|
20
|
+
%li.ui-state-default.ui-corner-top= link_to t('product.most_viewed', :count => @products_most_viewed.size), '#most-viewed'
|
21
|
+
#best-sellers.ui-tabs-panel.ui-widget-content.ui-corner-bottom
|
22
|
+
- @products_most_sold.each do |product_id, counter|
|
23
|
+
- if product = Product.find_by_id(product_id)
|
24
|
+
.stat-product-container
|
25
|
+
- if picture = product.pictures.first
|
26
|
+
= image_tag(picture.public_filename(:thumb))
|
27
|
+
- else
|
28
|
+
= image_tag('forgeos/admin/no-image.png')
|
29
|
+
%span.stat-product-sells
|
30
|
+
= t('product.sold', :count => counter)
|
31
|
+
= link_to product.name, [forgeos_commerce, :admin, product], :class => 'product-name truncate', :title => product.name
|
32
|
+
%span.stat-prodcut-title
|
33
|
+
= price_with_currency product.price
|
34
|
+
.clear
|
35
|
+
%a.see-all-orders{ :href => "#" }
|
36
|
+
= t('product.show.all').capitalize
|
37
|
+
#most-viewed.ui-tabs-panel.ui-widget-content.ui-corner-bottom.ui-tabs-hide
|
38
|
+
- @products_most_viewed.each do |product_id,counter|
|
39
|
+
- if product = Product.find_by_id(product_id)
|
40
|
+
.stat-product-container
|
41
|
+
- if picture = product.pictures.first
|
42
|
+
= image_tag(picture.public_filename(:thumb))
|
43
|
+
- else
|
44
|
+
= image_tag('forgeos/admin/no-image.png')
|
45
|
+
%span.stat-product-sells
|
46
|
+
= t('product.viewed', :count => counter)
|
47
|
+
= link_to product.name, [forgeos_commerce, :admin, product], :class => 'product-name truncate', :title => product.name
|
48
|
+
%span.stat-product-title
|
49
|
+
= price_with_currency product.price
|
50
|
+
.clear
|
51
|
+
%a.see-all-orders{ :href => "#" }
|
52
|
+
= t('product.show.all').capitalize
|
53
|
+
%h2.small-icons.page= t('page', :count => 2).capitalize
|
54
|
+
.to-tab.ui-tabs.ui-widget.ui-widget-content.ui-corner-all
|
55
|
+
%ul.ui-tabs-nav.ui-helper-reset.ui-helper-clearfix.ui-widget-header.ui-corner-all
|
56
|
+
%li.ui-state-default.ui-corner-top.ui-tabs-selected.ui-state-active= link_to t('page.most_viewed', :count => 2), '#most-viewed-pages'
|
57
|
+
/%li.ui-state-default.ui-corner-top= link_to t('page.most_commented', :count => 2), '#most-commented'
|
58
|
+
#most-viewed-pages.ui-tabs-panel.ui-widget-content.ui-corner-bottom
|
59
|
+
%table
|
60
|
+
%tbody
|
61
|
+
- @pages_most_viewed.each do |page_id, counter|
|
62
|
+
- if page = Page.find_by_id(page_id)
|
63
|
+
%tr{ :class => cycle('odd','even') }
|
64
|
+
%td.table-product= link_to page.title, [forgeos_cms, :admin, page]
|
65
|
+
%td= t('page.viewed', :count => counter)
|
66
|
+
.clear
|
67
|
+
%a.see-all-orders{ :href => "#" }
|
68
|
+
= t('page.show.all').capitalize
|
69
|
+
#most-commented.ui-tabs-panel.ui-widget-content.ui-corner-bottom.ui-tabs-hide
|
70
|
+
%table
|
71
|
+
%tbody
|
72
|
+
%tr
|
73
|
+
%td.table-product
|
74
|
+
Page "About us" created
|
75
|
+
%td
|
76
|
+
by Quentin Tousart
|
77
|
+
%tr.even
|
78
|
+
%td.table-product
|
79
|
+
Page "About us" created
|
80
|
+
%td
|
81
|
+
by Quentin Tousart
|
82
|
+
.clear
|
83
|
+
%a.see-all-orders{ :href => "#" }
|
84
|
+
= t('page.show.all').capitalize
|
85
|
+
%h2.small-icons.customer= t('customer', :count => 2).capitalize
|
86
|
+
.to-tab.ui-tabs.ui-widget.ui-widget-content.ui-corner-all
|
87
|
+
%ul.ui-tabs-nav.ui-helper-reset.ui-helper-clearfix.ui-widget-header.ui-corner-all
|
88
|
+
%li.ui-state-default.ui-corner-top.ui-tabs-selected.ui-state-active= link_to t('user.best_customer', :count => 2).capitalize, '#best-customers'
|
89
|
+
%li.ui-state-default.ui-corner-top= link_to t('user.new_customer', :count => 2).capitalize, '#new-customers'
|
90
|
+
#best-customers.ui-tabs-panel.ui-widget-content.ui-corner-bottom
|
91
|
+
%table
|
92
|
+
%tbody
|
93
|
+
- @best_buyers.each do |user_id, total|
|
94
|
+
- if user = User.find_by_id(user_id)
|
95
|
+
%tr{:class => cycle('odd','even')}
|
96
|
+
%td.customer-bought-amount= price_with_currency total
|
97
|
+
%td= user ? link_to(h(user.fullname), [forgeos_core, :admin, user]) : ''
|
98
|
+
.clear
|
99
|
+
= link_to t('user.show.all').capitalize, [forgeos_core, :admin, :users], :class => 'see-all-orders'
|
100
|
+
|
101
|
+
#new-customers.ui-tabs-panel.ui-widget-content.ui-corner-bottom.ui-tabs-hide
|
102
|
+
%table
|
103
|
+
%tbody
|
104
|
+
- @customers_new.each do |customer|
|
105
|
+
%tr{ :class => cycle('odd','even') }
|
106
|
+
%td
|
107
|
+
= link_to h(customer.fullname), [forgeos_core, :admin, customer]
|
108
|
+
%td
|
109
|
+
= t('user.joined_on').capitalize
|
110
|
+
= customer.created_at.to_s(:short)
|
111
|
+
%td.email
|
112
|
+
= mail_to h(customer.email), customer.email
|
113
|
+
|
114
|
+
.clear
|
115
|
+
= link_to t('user.show.all').capitalize, [forgeos_core, :admin, :users], :class => 'see-all-orders'
|
116
|
+
|
117
|
+
%h2.small-icons.search= t('search').capitalize
|
118
|
+
.to-tab.ui-tabs.ui-widget.ui-widget-content.ui-corner-all
|
119
|
+
%ul.ui-tabs-nav.ui-helper-reset.ui-helper-clearfix.ui-widget-header.ui-corner-all
|
120
|
+
%li.ui-state-default.ui-corner-top.ui-tabs-selected.ui-state-active= link_to t('top_5_items').capitalize, '#top-search'
|
121
|
+
#top-search.ui-tabs-panel.ui-widget-content.ui-corner-bottom
|
122
|
+
%table
|
123
|
+
%tbody
|
124
|
+
- @keywords.each do |keyword_id, count|
|
125
|
+
- if search_keyword = SearchKeyword.find_by_id(keyword_id)
|
126
|
+
%tr{ :class => cycle('odd','even')}
|
127
|
+
%td= search_keyword.keyword
|
128
|
+
%td= t('seen', :count => count, :scope => :search_keyword)
|
129
|
+
|
130
|
+
.right-dahsboard.grid_4.alpha
|
131
|
+
%h2.small-icons.see-stats= t('statistic.keyfacts').capitalize
|
132
|
+
.live-stats-content
|
133
|
+
%span
|
134
|
+
%span.keyfacts-name= t('visitor', :count => 2).capitalize
|
135
|
+
%span.keyfacts-value= Forgeos::Statistics.total_of_visitors(@date)
|
136
|
+
%span.clear
|
137
|
+
%span.disabled
|
138
|
+
%span.keyfacts-name= t('statistic.average_order').capitalize
|
139
|
+
%span.keyfacts-value
|
140
|
+
%span.clear
|
141
|
+
%span.disabled
|
142
|
+
%span.keyfacts-name= t('statistic.products_sold').capitalize
|
143
|
+
%span.keyfacts-value
|
144
|
+
%span.clear
|
145
|
+
%span.disabled
|
146
|
+
%span.keyfacts-name= t('statistic.revenue').capitalize
|
147
|
+
%span.keyfacts-value
|
148
|
+
%span.clear
|
149
|
+
%span.disabled
|
150
|
+
%span.keyfacts-name= t('statistic.conversion_rate').capitalize
|
151
|
+
%span.keyfacts-value
|
152
|
+
%span.clear
|
153
|
+
%span.disabled
|
154
|
+
%span.keyfacts-name= t('statistic.average_customer').capitalize
|
155
|
+
%span.keyfacts-value
|
156
|
+
%span.clear
|
157
|
+
.clear
|
158
|
+
|