From 097309a0c802d9ecb5d19079c5dfd46743909929 Mon Sep 17 00:00:00 2001 From: JeroenSormani Date: Tue, 21 Feb 2017 08:34:43 +0100 Subject: [PATCH 001/525] Add 'priority' support to product data tabs --- .../class-wc-meta-box-product-data.php | 65 ++++++++++++------- 1 file changed, 43 insertions(+), 22 deletions(-) diff --git a/includes/admin/meta-boxes/class-wc-meta-box-product-data.php b/includes/admin/meta-boxes/class-wc-meta-box-product-data.php index ec9980b549c..b24b6fbe1a7 100644 --- a/includes/admin/meta-boxes/class-wc-meta-box-product-data.php +++ b/includes/admin/meta-boxes/class-wc-meta-box-product-data.php @@ -75,43 +75,64 @@ class WC_Meta_Box_Product_Data { * @return array */ private static function get_product_data_tabs() { - return apply_filters( 'woocommerce_product_data_tabs', array( + $tabs = apply_filters( 'woocommerce_product_data_tabs', array( 'general' => array( - 'label' => __( 'General', 'woocommerce' ), - 'target' => 'general_product_data', - 'class' => array( 'hide_if_grouped' ), + 'label' => __( 'General', 'woocommerce' ), + 'target' => 'general_product_data', + 'class' => array( 'hide_if_grouped' ), + 'priority' => 10, ), 'inventory' => array( - 'label' => __( 'Inventory', 'woocommerce' ), - 'target' => 'inventory_product_data', - 'class' => array( 'show_if_simple', 'show_if_variable', 'show_if_grouped', 'show_if_external' ), + 'label' => __( 'Inventory', 'woocommerce' ), + 'target' => 'inventory_product_data', + 'class' => array( 'show_if_simple', 'show_if_variable', 'show_if_grouped', 'show_if_external' ), + 'priority' => 20, ), 'shipping' => array( - 'label' => __( 'Shipping', 'woocommerce' ), - 'target' => 'shipping_product_data', - 'class' => array( 'hide_if_virtual', 'hide_if_grouped', 'hide_if_external' ), + 'label' => __( 'Shipping', 'woocommerce' ), + 'target' => 'shipping_product_data', + 'class' => array( 'hide_if_virtual', 'hide_if_grouped', 'hide_if_external' ), + 'priority' => 30, ), 'linked_product' => array( - 'label' => __( 'Linked Products', 'woocommerce' ), - 'target' => 'linked_product_data', - 'class' => array(), + 'label' => __( 'Linked Products', 'woocommerce' ), + 'target' => 'linked_product_data', + 'class' => array(), + 'priority' => 40, ), 'attribute' => array( - 'label' => __( 'Attributes', 'woocommerce' ), - 'target' => 'product_attributes', - 'class' => array(), + 'label' => __( 'Attributes', 'woocommerce' ), + 'target' => 'product_attributes', + 'class' => array(), + 'priority' => 50, ), 'variations' => array( - 'label' => __( 'Variations', 'woocommerce' ), - 'target' => 'variable_product_options', - 'class' => array( 'variations_tab', 'show_if_variable' ), + 'label' => __( 'Variations', 'woocommerce' ), + 'target' => 'variable_product_options', + 'class' => array( 'variations_tab', 'show_if_variable' ), + 'priority' => 60, ), 'advanced' => array( - 'label' => __( 'Advanced', 'woocommerce' ), - 'target' => 'advanced_product_data', - 'class' => array(), + 'label' => __( 'Advanced', 'woocommerce' ), + 'target' => 'advanced_product_data', + 'class' => array(), + 'priority' => 70, ), ) ); + + // Sort tabs based on priority + uasort( $tabs, array( __CLASS__, 'product_data_tabs_sort' ) ); + + return $tabs; + } + + /** + * Callback to sort product data tabs on priority. + */ + private static function product_data_tabs_sort( $a, $b ) { + if ( ! isset( $a['priority'], $b['priority'] ) ) return -1; + if ( $a['priority'] == $b['priority'] ) return 0; + return $a['priority'] < $b['priority'] ? -1 : 1; } /** From 24fb4fd3b890f3e85e1b7f4ba0031d93df8c941f Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Tue, 28 Feb 2017 12:00:12 -0800 Subject: [PATCH 002/525] Initial easy test setup --- .babelrc | 9 + Gruntfile.js | 7 + package.json | 19 ++- tests/frontend-tests/README.md | 0 tests/frontend-tests/cart-page.js | 110 +++++++++++++ tests/frontend-tests/checkout-page.js | 155 ++++++++++++++++++ tests/frontend-tests/config/default.json | 15 ++ tests/frontend-tests/config/development.json | 9 + .../wp-admin/wp-admin-coupon-new.js | 51 ++++++ .../wp-admin/wp-admin-order-new.js | 52 ++++++ .../wp-admin/wp-admin-product-new.js | 127 ++++++++++++++ .../wp-admin/wp-admin-wc-settings-general.js | 70 ++++++++ ...admin-wc-settings-products-downloadable.js | 55 +++++++ 13 files changed, 678 insertions(+), 1 deletion(-) create mode 100644 .babelrc create mode 100644 tests/frontend-tests/README.md create mode 100644 tests/frontend-tests/cart-page.js create mode 100644 tests/frontend-tests/checkout-page.js create mode 100644 tests/frontend-tests/config/default.json create mode 100644 tests/frontend-tests/config/development.json create mode 100644 tests/frontend-tests/wp-admin/wp-admin-coupon-new.js create mode 100644 tests/frontend-tests/wp-admin/wp-admin-order-new.js create mode 100644 tests/frontend-tests/wp-admin/wp-admin-product-new.js create mode 100644 tests/frontend-tests/wp-admin/wp-admin-wc-settings-general.js create mode 100644 tests/frontend-tests/wp-admin/wp-admin-wc-settings-products-downloadable.js diff --git a/.babelrc b/.babelrc new file mode 100644 index 00000000000..47de40687da --- /dev/null +++ b/.babelrc @@ -0,0 +1,9 @@ +{ + "presets": [ + "es2015", + "stage-2" + ], + "plugins": [ + "add-module-exports" + ] +} diff --git a/Gruntfile.js b/Gruntfile.js index cc5c1859a22..c90a7dfda8d 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -249,6 +249,9 @@ module.exports = function( grunt ) { 'cd apigen', 'php hook-docs.php' ].join( '&&' ) + }, + frontend_tests: { + command: 'npm run test' } }, @@ -325,4 +328,8 @@ module.exports = function( grunt ) { 'default', 'makepot' ]); + + grunt.registerTask( 'frontend-tests', [ + 'shell:frontend_tests' + ]); }; diff --git a/package.json b/package.json index 89a9237a6d2..a1b9a5e06ef 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,10 @@ }, "license": "GPL-3.0+", "main": "Gruntfile.js", + "scripts": { + "test": "cross-env NODE_CONFIG_DIR='./tests/frontend-tests/config' BABEL_ENV=commonjs mocha \"tests/frontend-tests\" --compilers js:babel-register --recursive", + "test:single": "cross-env NODE_CONFIG_DIR='./tests/frontend-tests/config' BABEL_ENV=commonjs mocha --compilers js:babel-register" + }, "devDependencies": { "grunt": "~1.0.1", "grunt-checktextdomain": "~1.0.0", @@ -24,7 +28,20 @@ "grunt-wp-i18n": "~0.5.4", "grunt-rtlcss": "2.0.1", "grunt-contrib-concat": "1.0.1", - "node-bourbon": "~4.2.3" + "node-bourbon": "~4.2.3", + "config": "^1.24.0", + "babel": "^6.5.2", + "babel-cli": "^6.14.0", + "babel-eslint": "^7.0.0", + "babel-plugin-add-module-exports": "^0.2.1", + "babel-preset-es2015": "^6.14.0", + "babel-preset-stage-2": "^6.13.0", + "chai": "^3.5.0", + "chai-as-promised": "^6.0.0", + "cross-env": "^3.0.0", + "istanbul": "^1.0.0-alpha", + "mocha": "^3.0.2", + "wc-e2e-page-objects": "0.1.1" }, "engines": { "node": ">=0.8.0", diff --git a/tests/frontend-tests/README.md b/tests/frontend-tests/README.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/frontend-tests/cart-page.js b/tests/frontend-tests/cart-page.js new file mode 100644 index 00000000000..e3f5718ebec --- /dev/null +++ b/tests/frontend-tests/cart-page.js @@ -0,0 +1,110 @@ +import config from 'config'; +import chai from 'chai'; +import chaiAsPromised from 'chai-as-promised'; +import test from 'selenium-webdriver/testing'; +import { WebDriverManager, WebDriverHelper as helper } from 'wp-e2e-webdriver'; +import { ShopPage, CartPage } from 'wc-e2e-page-objects'; + +chai.use( chaiAsPromised ); +const assert = chai.assert; + +let manager; +let driver; + +test.describe( 'Cart page', function() { + test.before( 'open browser', function() { + this.timeout( config.get( 'startBrowserTimeoutMs' ) ); + + manager = new WebDriverManager( 'chrome', { baseUrl: config.get( 'url' ) } ); + driver = manager.getDriver(); + + helper.clearCookiesAndDeleteLocalStorage( driver ); + } ); + + this.timeout( config.get( 'mochaTimeoutMs' ) ); + + test.it( 'should displays no item in the cart', () => { + const cartPage = new CartPage( driver, { url: manager.getPageUrl( '/cart' ) } ); + assert.eventually.equal( cartPage.hasNoItem(), true ); + } ); + + test.it( 'should adds the product to the cart when "Add to cart" is clicked', () => { + const shopPage = new ShopPage( driver, { url: manager.getPageUrl( '/shop' ) } ); + assert.eventually.equal( shopPage.addProductToCart( 'Flying Ninja' ), true ); + assert.eventually.equal( shopPage.addProductToCart( 'Happy Ninja' ), true ); + + const cartPage = new CartPage( driver, { url: manager.getPageUrl( '/cart' ) } ); + assert.eventually.equal( cartPage.hasItem( 'Flying Ninja' ), true ); + assert.eventually.equal( cartPage.hasItem( 'Happy Ninja' ), true ); + } ); + + test.it( 'should increases item qty when "Add to cart" of the same product is clicked', () => { + const shopPage = new ShopPage( driver, { url: manager.getPageUrl( '/shop' ) } ); + assert.eventually.equal( shopPage.addProductToCart( 'Flying Ninja' ), true ); + + const cartPage = new CartPage( driver, { url: manager.getPageUrl( '/cart' ) } ); + assert.eventually.equal( cartPage.hasItem( 'Flying Ninja', { qty: 2 } ), true ); + assert.eventually.equal( cartPage.hasItem( 'Happy Ninja', { qty: 1 } ), true ); + } ); + + test.it( 'should updates qty when updated via qty input', () => { + const cartPage = new CartPage( driver, { url: manager.getPageUrl( '/cart' ) } ); + cartPage.getItem( 'Flying Ninja', { qty: 2 } ).setQty( 4 ); + cartPage.update(); + cartPage.getItem( 'Happy Ninja', { qty: 1 } ).setQty( 3 ); + cartPage.update(); + + assert.eventually.equal( cartPage.hasItem( 'Flying Ninja', { qty: 4 } ), true ); + assert.eventually.equal( cartPage.hasItem( 'Happy Ninja', { qty: 3 } ), true ); + } ); + + test.it( 'should remove the item from the cart when remove is clicked', () => { + const cartPage = new CartPage( driver, { url: manager.getPageUrl( '/cart' ) } ); + cartPage.getItem( 'Flying Ninja', { qty: 4 } ).remove(); + cartPage.getItem( 'Happy Ninja', { qty: 3 } ).remove(); + + assert.eventually.equal( cartPage.hasNoItem(), true ); + } ); + + test.it( 'should update subtotal in cart totals when adding product to the cart', () => { + const shopPage = new ShopPage( driver, { url: manager.getPageUrl( '/shop' ) } ); + assert.eventually.equal( shopPage.addProductToCart( 'Flying Ninja' ), true ); + + const cartPage = new CartPage( driver, { url: manager.getPageUrl( '/cart' ) } ); + assert.eventually.equal( + cartPage.hasItem( 'Flying Ninja', { qty: 1 } ), + true, + 'Cart item "Flying Ninja" with qty 1 is not displayed' + ); + + assert.eventually.equal( + cartPage.hasSubtotal( '12.00' ), + true, + 'Cart totals does not display subtotal of 12.00' + ); + + cartPage.getItem( 'Flying Ninja', { qty: 1 } ).setQty( 2 ); + cartPage.update(); + + assert.eventually.equal( + cartPage.hasSubtotal( '24.00' ), + true, + 'Cart totals does not display subtotal of 24.00' + ); + } ); + + test.it( 'should go to the checkout page when "Proceed to Chcekout" is clicked', () => { + const cartPage = new CartPage( driver, { url: manager.getPageUrl( '/cart' ) } ); + const checkoutPage = cartPage.checkout(); + + assert.eventually.equal( + checkoutPage.components.orderReview.displayed(), + true, + 'Order review in checkout page is not displayed' + ); + } ); + + test.after( 'quit browser', () => { + manager.quitBrowser(); + } ); +} ); diff --git a/tests/frontend-tests/checkout-page.js b/tests/frontend-tests/checkout-page.js new file mode 100644 index 00000000000..f2626f984ce --- /dev/null +++ b/tests/frontend-tests/checkout-page.js @@ -0,0 +1,155 @@ +import config from 'config'; +import chai from 'chai'; +import chaiAsPromised from 'chai-as-promised'; +import test from 'selenium-webdriver/testing'; +import { WebDriverManager, WebDriverHelper as helper } from 'wp-e2e-webdriver'; +import * as wcHelper from 'wc-e2e-page-objects'; +import { PageMap, CheckoutOrderReceivedPage, StoreOwnerFlow, GuestCustomerFlow } from 'wc-e2e-page-objects'; + +chai.use( chaiAsPromised ); + +const assert = chai.assert; +const PAGE = PageMap.PAGE; +const storeOwnerFlowArgs = { + baseUrl: config.get( 'url' ), + username: config.get( 'users.admin.username' ), + password: config.get( 'users.admin.password' ) +}; + +const assertOrderItem = ( orderReview, itemName, attrs ) => { + assert.eventually.ok( + orderReview.hasItem( itemName, attrs ), + `Could not find order item "${ itemName }" with qty ${ attrs.qty } and total ${ attrs.total }` + ); +}; + +let manager; +let driver; + +test.describe( 'Checkout Page', function() { + test.before( 'open browser', function() { + this.timeout( config.get( 'startBrowserTimeoutMs' ) ); + + manager = new WebDriverManager( 'chrome', { baseUrl: config.get( 'url' ) } ); + driver = manager.getDriver(); + + helper.clearCookiesAndDeleteLocalStorage( driver ); + + const storeOwner = new StoreOwnerFlow( driver, storeOwnerFlowArgs ); + + // General settings for this test. + storeOwner.setGeneralSettings( { + baseLocation: [ 'United States', 'United States (US) — California' ], + sellingLocation: 'Sell to all countries', + enableTaxes: true, + currency: [ 'United States', 'United States dollar ($)' ], + } ); + + // Make sure payment method is set in setting. + storeOwner.enableBACS(); + storeOwner.enableCOD(); + storeOwner.enablePayPal(); + + storeOwner.logout(); + } ); + + this.timeout( config.get( 'mochaTimeoutMs' ) ); + + test.it( 'should displays cart items in order review', () => { + const guest = new GuestCustomerFlow( driver, { baseUrl: config.get( 'url' ) } ); + guest.fromShopAddProductsToCart( 'Flying Ninja', 'Happy Ninja' ); + + const checkoutPage = guest.openCheckout(); + assert.eventually.ok( wcHelper.waitTillUIBlockNotPresent( driver ) ); + + const orderReview = checkoutPage.components.orderReview; + assertOrderItem( orderReview, 'Flying Ninja', { qty: '1', total: '$12.00' } ); + assertOrderItem( orderReview, 'Happy Ninja', { qty: '1', total: '$18.00' } ); + assert.eventually.ok( orderReview.hasSubtotal( '$30.00' ), 'Could not find subtotal $30.00' ); + } ); + + test.it( 'allows customer to choose available payment methods', () => { + const guest = new GuestCustomerFlow( driver, { baseUrl: config.get( 'url' ) } ); + guest.fromShopAddProductsToCart( 'Flying Ninja', 'Happy Ninja' ); + + const checkoutPage = guest.openCheckout(); + assert.eventually.ok( wcHelper.waitTillUIBlockNotPresent( driver ) ); + assert.eventually.ok( checkoutPage.selectPaymentMethod( 'PayPal' ) ); + assert.eventually.ok( checkoutPage.selectPaymentMethod( 'Direct bank transfer' ) ); + assert.eventually.ok( checkoutPage.selectPaymentMethod( 'Cash on delivery' ) ); + } ); + + test.it( 'allows customer to fill billing details', () => { + const guest = new GuestCustomerFlow( driver, { baseUrl: config.get( 'url' ) } ); + guest.fromShopAddProductsToCart( 'Flying Ninja', 'Happy Ninja' ); + + const checkoutPage = guest.open( PAGE.CHECKOUT ); + assert.eventually.ok( wcHelper.waitTillUIBlockNotPresent( driver ) ); + + const billingDetails = checkoutPage.components.billingDetails; + assert.eventually.ok( billingDetails.setFirstName( 'John' ) ); + assert.eventually.ok( billingDetails.setLastName( 'Doe' ) ); + assert.eventually.ok( billingDetails.setCompany( 'Automattic' ) ); + assert.eventually.ok( billingDetails.setEmail( 'john.doe@example.com' ) ); + assert.eventually.ok( billingDetails.setPhone( '123456789' ) ); + assert.eventually.ok( billingDetails.selectCountry( 'united states', 'United States (US)' ) ); + assert.eventually.ok( billingDetails.setAddress1( 'addr 1' ) ); + assert.eventually.ok( billingDetails.setAddress2( 'addr 2' ) ); + assert.eventually.ok( billingDetails.setCity( 'San Francisco' ) ); + assert.eventually.ok( billingDetails.selectState( 'cali', 'California' ) ); + assert.eventually.ok( billingDetails.setZip( '94107' ) ); + } ); + + test.it( 'allows customer to fill shipping details', () => { + const guest = new GuestCustomerFlow( driver, { baseUrl: config.get( 'url' ) } ); + guest.fromShopAddProductsToCart( 'Flying Ninja', 'Happy Ninja' ); + + const checkoutPage = guest.open( PAGE.CHECKOUT ); + assert.eventually.ok( wcHelper.waitTillUIBlockNotPresent( driver ) ); + assert.eventually.ok( checkoutPage.checkShipToDifferentAddress() ); + + const shippingDetails = checkoutPage.components.shippingDetails; + assert.eventually.ok( shippingDetails.setFirstName( 'John' ) ); + assert.eventually.ok( shippingDetails.setLastName( 'Doe' ) ); + assert.eventually.ok( shippingDetails.setCompany( 'Automattic' ) ); + assert.eventually.ok( shippingDetails.selectCountry( 'united states', 'United States (US)' ) ); + assert.eventually.ok( shippingDetails.setAddress1( 'addr 1' ) ); + assert.eventually.ok( shippingDetails.setAddress2( 'addr 2' ) ); + assert.eventually.ok( shippingDetails.setCity( 'San Francisco' ) ); + assert.eventually.ok( shippingDetails.selectState( 'cali', 'California' ) ); + assert.eventually.ok( shippingDetails.setZip( '94107' ) ); + } ); + + test.it( 'allows guest customer to place order', () => { + const guest = new GuestCustomerFlow( driver, { baseUrl: config.get( 'url' ) } ); + guest.fromShopAddProductsToCart( 'Flying Ninja', 'Happy Ninja' ); + + const checkoutPage = guest.open( PAGE.CHECKOUT ); + const billingDetails = checkoutPage.components.billingDetails; + wcHelper.waitTillUIBlockNotPresent( driver ); + billingDetails.setFirstName( 'John' ); + billingDetails.setLastName( 'Doe' ); + billingDetails.setCompany( 'Automattic' ); + billingDetails.setEmail( 'john.doe@example.com' ); + billingDetails.setPhone( '123456789' ); + billingDetails.selectCountry( 'united states', 'United States (US)' ); + billingDetails.setAddress1( 'addr 1' ); + billingDetails.setAddress2( 'addr 2' ); + billingDetails.setCity( 'San Francisco' ); + billingDetails.selectState( 'cali', 'California' ); + billingDetails.setZip( '94107' ); + checkoutPage.selectPaymentMethod( 'Cash on delivery' ); + checkoutPage.placeOrder(); + wcHelper.waitTillUIBlockNotPresent( driver ); + + const orderReceivedPage = new CheckoutOrderReceivedPage( driver, { visit: false } ); + + assert.eventually.ok( + orderReceivedPage.hasText( 'Order received' ) + ); + } ); + + test.after( 'quit browser', () => { + manager.quitBrowser(); + } ); +} ); diff --git a/tests/frontend-tests/config/default.json b/tests/frontend-tests/config/default.json new file mode 100644 index 00000000000..d646836665a --- /dev/null +++ b/tests/frontend-tests/config/default.json @@ -0,0 +1,15 @@ +{ + "url": "http://example.com", + "users": { + "admin": { + "username": "", + "password": "" + }, + "custtomer": { + "username": "", + "password": "" + } + }, + "startBrowserTimeoutMs": 30000, + "mochaTimeoutMs": 120000 +} diff --git a/tests/frontend-tests/config/development.json b/tests/frontend-tests/config/development.json new file mode 100644 index 00000000000..2c62cd998bf --- /dev/null +++ b/tests/frontend-tests/config/development.json @@ -0,0 +1,9 @@ +{ + "url": "http://local.wordpress.dev/", + "users": { + "admin": { + "username": "admin", + "password": "password" + } + } +} diff --git a/tests/frontend-tests/wp-admin/wp-admin-coupon-new.js b/tests/frontend-tests/wp-admin/wp-admin-coupon-new.js new file mode 100644 index 00000000000..672ea64d8ea --- /dev/null +++ b/tests/frontend-tests/wp-admin/wp-admin-coupon-new.js @@ -0,0 +1,51 @@ +import config from 'config'; +import chai from 'chai'; +import chaiAsPromised from 'chai-as-promised'; +import test from 'selenium-webdriver/testing'; +import { WebDriverManager, WebDriverHelper as helper } from 'wp-e2e-webdriver'; +import { StoreOwnerFlow } from 'wc-e2e-page-objects'; + +chai.use( chaiAsPromised ); +const assert = chai.assert; + +let manager; +let driver; + +test.describe( 'Add New Coupon Page', function() { + test.before( 'open browser', function() { + this.timeout( config.get( 'startBrowserTimeoutMs' ) ); + + manager = new WebDriverManager( 'chrome', { baseUrl: config.get( 'url' ) } ); + driver = manager.getDriver(); + + helper.clearCookiesAndDeleteLocalStorage( driver ); + } ); + + this.timeout( config.get( 'mochaTimeoutMs' ) ); + + test.it( 'can create new coupon', () => { + const flowArgs = { + baseUrl: config.get( 'url' ), + username: config.get( 'users.admin.username' ), + password: config.get( 'users.admin.password' ) + }; + const storeOwner = new StoreOwnerFlow( driver, flowArgs ); + + const couponPage = storeOwner.openNewCoupon(); + couponPage.setTitle( 'code-' + new Date().getTime().toString() ); + couponPage.setDescription( 'test coupon' ); + + const couponData = couponPage.components.metaBoxCouponData; + const generalPanel = couponData.clickTab( 'General' ); + generalPanel.selectDiscountType( 'Cart Discount' ); + generalPanel.setCouponAmount( '100' ); + + couponPage.publish(); + + assert.eventually.ok( couponPage.hasNotice( 'Coupon updated.' ) ); + } ); + + test.after( 'quit browser', () => { + manager.quitBrowser(); + } ); +} ); diff --git a/tests/frontend-tests/wp-admin/wp-admin-order-new.js b/tests/frontend-tests/wp-admin/wp-admin-order-new.js new file mode 100644 index 00000000000..462eaa870b2 --- /dev/null +++ b/tests/frontend-tests/wp-admin/wp-admin-order-new.js @@ -0,0 +1,52 @@ +import config from 'config'; +import chai from 'chai'; +import chaiAsPromised from 'chai-as-promised'; +import test from 'selenium-webdriver/testing'; +import { WebDriverManager, WebDriverHelper as helper } from 'wp-e2e-webdriver'; +import { StoreOwnerFlow } from 'wc-e2e-page-objects'; + +chai.use( chaiAsPromised ); +const assert = chai.assert; + +let manager; +let driver; + +test.describe( 'Add New Order Page', function() { + test.before( 'open browser', function() { + this.timeout( config.get( 'startBrowserTimeoutMs' ) ); + + manager = new WebDriverManager( 'chrome', { baseUrl: config.get( 'url' ) } ); + driver = manager.getDriver(); + + helper.clearCookiesAndDeleteLocalStorage( driver ); + } ); + + this.timeout( config.get( 'mochaTimeoutMs' ) ); + + test.it( 'can create new order', () => { + const flowArgs = { + baseUrl: config.get( 'url' ), + username: config.get( 'users.admin.username' ), + password: config.get( 'users.admin.password' ) + }; + const storeOwner = new StoreOwnerFlow( driver, flowArgs ); + + const orderPage = storeOwner.openNewOrder(); + const orderData = orderPage.components.metaBoxOrderData; + orderData.selectOrderStatus( 'Processing' ); + orderData.setOrderDate( '2016-12-13' ); + orderData.setOrderDateHour( '18' ); + orderData.setOrderDateMinute( '55' ); + + orderPage.components.metaBoxOrderActions.saveOrder(); + + assert.eventually.ok( orderData.hasOrderStatus( 'Processing' ) ); + + const orderNotes = orderPage.components.metaBoxOrderNotes; + assert.eventually.ok( orderNotes.hasNote( 'Order status changed from Pending payment to Processing.' ) ); + } ); + + test.after( 'quit browser', () => { + manager.quitBrowser(); + } ); +} ); diff --git a/tests/frontend-tests/wp-admin/wp-admin-product-new.js b/tests/frontend-tests/wp-admin/wp-admin-product-new.js new file mode 100644 index 00000000000..89d38616e32 --- /dev/null +++ b/tests/frontend-tests/wp-admin/wp-admin-product-new.js @@ -0,0 +1,127 @@ +import config from 'config'; +import chai from 'chai'; +import chaiAsPromised from 'chai-as-promised'; +import test from 'selenium-webdriver/testing'; +import { WebDriverManager, WebDriverHelper as helper } from 'wp-e2e-webdriver'; +import { WPLogin } from 'wp-e2e-page-objects'; +import { WPAdminProductNew } from 'wc-e2e-page-objects'; + +chai.use( chaiAsPromised ); +const assert = chai.assert; + +let manager; +let driver; + +test.describe( 'Add New Product Page', function() { + test.before( 'open browser', function() { + this.timeout( config.get( 'startBrowserTimeoutMs' ) ); + + manager = new WebDriverManager( 'chrome', { baseUrl: config.get( 'url' ) } ); + driver = manager.getDriver(); + + helper.clearCookiesAndDeleteLocalStorage( driver ); + } ); + + this.timeout( config.get( 'mochaTimeoutMs' ) ); + + test.before( 'login', () => { + const wpLogin = new WPLogin( driver, { url: manager.getPageUrl( '/wp-login.php' ) } ); + wpLogin.login( config.get( 'users.admin.username' ), config.get( 'users.admin.password' ) ); + } ); + + test.it( 'can create simple virtual product titled "Simple Product" with regular price $9.99', () => { + const product = new WPAdminProductNew( driver, { url: manager.getPageUrl( '/wp-admin/post-new.php?post_type=product' ) } ); + product.setTitle( 'Simple Product' ); + + const productData = product.components.metaBoxProductData; + productData.selectProductType( 'Simple product' ); + productData.checkVirtual(); + + const panelGeneral = productData.clickTab( 'General' ); + panelGeneral.setRegularPrice( '9.99' ); + + product.publish(); + assert.eventually.ok( product.hasNotice( 'Product published.' ) ); + + product.moveToTrash(); + assert.eventually.ok( product.hasNotice( '1 product moved to the Trash.' ) ); + } ); + + test.it( 'can create product with variations', () => { + const product = new WPAdminProductNew( driver, { url: manager.getPageUrl( '/wp-admin/post-new.php?post_type=product' ) } ); + product.setTitle( 'Variable Product with Two Variations' ); + + const productData = product.components.metaBoxProductData; + productData.selectProductType( 'Variable product' ); + + const panelAttributes = productData.clickTab( 'Attributes' ); + panelAttributes.selectAttribute( 'Custom product attribute' ); + + const attr1 = panelAttributes.add(); + assert.eventually.ok( attr1.displayed() ); + attr1.setName( 'attr #1' ); + attr1.checkVisibleOnTheProductPage(); + attr1.checkUsedForVariations(); + attr1.setValue( 'val1 | val2' ); + attr1.toggle(); + + const attr2 = panelAttributes.add(); + assert.eventually.ok( attr1.displayed() ); + attr2.setName( 'attr #2' ); + attr2.checkVisibleOnTheProductPage(); + attr2.checkUsedForVariations(); + attr2.setValue( 'val1 | val2' ); + + const attr3 = panelAttributes.add(); + assert.eventually.ok( attr1.displayed() ); + attr3.setName( 'attr #3' ); + attr3.checkVisibleOnTheProductPage(); + attr3.checkUsedForVariations(); + attr3.setValue( 'val1 | val2' ); + attr3.toggle(); attr2.toggle(); + + panelAttributes.saveAttributes(); + + const panelVaritions = productData.clickTab( 'Variations' ); + panelVaritions.selectAction( 'Create variations from all attributes' ); + panelVaritions.go(); + + const var1 = panelVaritions.getRow( 1 ); + var1.toggle(); + var1.checkEnabled(); + var1.checkVirtual(); + var1.setRegularPrice( '9.99' ); + + const var2 = panelVaritions.getRow( 2 ); + var2.toggle(); + var2.checkEnabled(); + var2.checkVirtual(); + var2.setRegularPrice( '11.99' ); + + const var3 = panelVaritions.getRow( 3 ); + var3.toggle(); + var3.checkEnabled(); + var3.checkManageStock(); + var3.setRegularPrice( '20' ); + var3.setWeight( '200' ); + var3.setDimensionLength( '10' ); + var3.setDimensionWidth( '20' ); + var3.setDimensionHeight( '15' ); + + panelVaritions.saveChanges(); + + helper.scrollUp( driver ); + helper.scrollUp( driver ); + helper.scrollUp( driver ); + + product.publish(); + assert.eventually.ok( product.hasNotice( 'Product published.' ) ); + + product.moveToTrash(); + assert.eventually.ok( product.hasNotice( '1 product moved to the Trash.' ) ); + } ); + + test.after( 'quit browser', () => { + manager.quitBrowser(); + } ); +} ); diff --git a/tests/frontend-tests/wp-admin/wp-admin-wc-settings-general.js b/tests/frontend-tests/wp-admin/wp-admin-wc-settings-general.js new file mode 100644 index 00000000000..15b9821ef79 --- /dev/null +++ b/tests/frontend-tests/wp-admin/wp-admin-wc-settings-general.js @@ -0,0 +1,70 @@ +import config from 'config'; +import chai from 'chai'; +import chaiAsPromised from 'chai-as-promised'; +import test from 'selenium-webdriver/testing'; +import { WebDriverManager, WebDriverHelper as helper } from 'wp-e2e-webdriver'; +import { WPLogin } from 'wp-e2e-page-objects'; +import { WPAdminWCSettingsGeneral } from 'wc-e2e-page-objects'; + +chai.use( chaiAsPromised ); +const assert = chai.assert; + +let manager; +let driver; + +test.describe( 'WooCommerce General Settings', function() { + test.before( 'open browser', function() { + this.timeout( config.get( 'startBrowserTimeoutMs' ) ); + + manager = new WebDriverManager( 'chrome', { baseUrl: config.get( 'url' ) } ); + driver = manager.getDriver(); + + helper.clearCookiesAndDeleteLocalStorage( driver ); + } ); + + this.timeout( config.get( 'mochaTimeoutMs' ) ); + + test.before( 'login', () => { + const wpLogin = new WPLogin( driver, { url: manager.getPageUrl( '/wp-login.php' ) } ); + wpLogin.login( config.get( 'users.admin.username' ), config.get( 'users.admin.password' ) ); + } ); + + test.it( 'can update settings', () => { + const settingsArgs = { url: manager.getPageUrl( '/wp-admin/admin.php?page=wc-settings&tab=general' ) }; + const settings = new WPAdminWCSettingsGeneral( driver, settingsArgs ); + + assert.eventually.ok( settings.hasActiveTab( 'General' ) ); + + // Set selling location to all countries first, so we can choose california + // as base location. + settings.selectSellingLocation( 'Sell to all countries' ); + settings.saveChanges(); + assert.eventually.ok( settings.hasNotice( 'Your settings have been saved.' ) ); + + // Set base location with state CA. + settings.selectBaseLocation( 'california', 'United States (US) — California' ); + settings.saveChanges(); + assert.eventually.ok( settings.hasNotice( 'Your settings have been saved.' ) ); + + // Set selling location to specific countries first, so we can choose + // U.S as base location (without state). This will makes specific + // countries option appears. + settings.selectSellingLocation( 'Sell to specific countries' ); + settings.removeChoiceInSellToSpecificCountries( 'United States (US)' ); + settings.setSellToSpecificCountries( 'united states', 'United States (US)' ); + settings.saveChanges(); + assert.eventually.ok( settings.hasNotice( 'Your settings have been saved.' ) ); + + // Set currency options. + settings.setThousandSeparator( ',' ); + settings.setDecimalSeparator( '.' ); + settings.setNumberOfDecimals( '2' ); + + settings.saveChanges(); + assert.eventually.ok( settings.hasNotice( 'Your settings have been saved.' ) ); + } ); + + test.after( 'quit browser', () => { + manager.quitBrowser(); + } ); +} ); diff --git a/tests/frontend-tests/wp-admin/wp-admin-wc-settings-products-downloadable.js b/tests/frontend-tests/wp-admin/wp-admin-wc-settings-products-downloadable.js new file mode 100644 index 00000000000..bb710b489ff --- /dev/null +++ b/tests/frontend-tests/wp-admin/wp-admin-wc-settings-products-downloadable.js @@ -0,0 +1,55 @@ +import config from 'config'; +import chai from 'chai'; +import chaiAsPromised from 'chai-as-promised'; +import test from 'selenium-webdriver/testing'; +import { WebDriverManager, WebDriverHelper as helper } from 'wp-e2e-webdriver'; +import { WPLogin } from 'wp-e2e-page-objects'; +import { WPAdminWCSettingsProductsDownloadable } from 'wc-e2e-page-objects'; + +chai.use( chaiAsPromised ); +const assert = chai.assert; + +let manager; +let driver; + +test.describe( 'WooCommerce Products > Downloadable Products Settings', function() { + test.before( 'open browser', function() { + this.timeout( config.get( 'startBrowserTimeoutMs' ) ); + + manager = new WebDriverManager( 'chrome', { baseUrl: config.get( 'url' ) } ); + driver = manager.getDriver(); + + helper.clearCookiesAndDeleteLocalStorage( driver ); + } ); + + this.timeout( config.get( 'mochaTimeoutMs' ) ); + + test.before( 'login', () => { + const wpLogin = new WPLogin( driver, { url: manager.getPageUrl( '/wp-login.php' ) } ); + wpLogin.login( config.get( 'users.admin.username' ), config.get( 'users.admin.password' ) ); + } ); + + test.it( 'can update settings', () => { + const settingsArgs = { url: manager.getPageUrl( '/wp-admin/admin.php?page=wc-settings&tab=products§ion=downloadable' ) }; + const settings = new WPAdminWCSettingsProductsDownloadable( driver, settingsArgs ); + + assert.eventually.ok( settings.hasActiveTab( 'Products' ) ); + assert.eventually.ok( settings.hasActiveSubTab( 'Downloadable products' ) ); + + settings.selectFileDownloadMethod( 'Redirect only' ); + settings.checkDownloadsRequireLogin(); + settings.checkGrantAccessAfterPayment(); + settings.saveChanges(); + assert.eventually.ok( settings.hasNotice( 'Your settings have been saved.' ) ); + + settings.selectFileDownloadMethod( 'Force downloads' ); + settings.uncheckDownloadsRequireLogin(); + settings.uncheckGrantAccessAfterPayment(); + settings.saveChanges(); + assert.eventually.ok( settings.hasNotice( 'Your settings have been saved.' ) ); + } ); + + test.after( 'quit browser', () => { + manager.quitBrowser(); + } ); +} ); From 58e6451d5019bbd998a103c6f96c96dcfc8351da Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Tue, 28 Feb 2017 12:17:06 -0800 Subject: [PATCH 003/525] Use latest version of wc-e2e-page-objects --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a1b9a5e06ef..1f063c5d830 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "cross-env": "^3.0.0", "istanbul": "^1.0.0-alpha", "mocha": "^3.0.2", - "wc-e2e-page-objects": "0.1.1" + "wc-e2e-page-objects": "0.2.0" }, "engines": { "node": ">=0.8.0", From b6beaa496191161ff0d53aeb5ece3f400b60769f Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Tue, 28 Feb 2017 15:27:34 -0800 Subject: [PATCH 004/525] Better importing --- tests/frontend-tests/checkout-page.js | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/tests/frontend-tests/checkout-page.js b/tests/frontend-tests/checkout-page.js index f2626f984ce..0b688dc0e77 100644 --- a/tests/frontend-tests/checkout-page.js +++ b/tests/frontend-tests/checkout-page.js @@ -3,8 +3,7 @@ import chai from 'chai'; import chaiAsPromised from 'chai-as-promised'; import test from 'selenium-webdriver/testing'; import { WebDriverManager, WebDriverHelper as helper } from 'wp-e2e-webdriver'; -import * as wcHelper from 'wc-e2e-page-objects'; -import { PageMap, CheckoutOrderReceivedPage, StoreOwnerFlow, GuestCustomerFlow } from 'wc-e2e-page-objects'; +import { Helper, PageMap, CheckoutOrderReceivedPage, StoreOwnerFlow, GuestCustomerFlow } from 'wc-e2e-page-objects'; chai.use( chaiAsPromised ); @@ -60,7 +59,7 @@ test.describe( 'Checkout Page', function() { guest.fromShopAddProductsToCart( 'Flying Ninja', 'Happy Ninja' ); const checkoutPage = guest.openCheckout(); - assert.eventually.ok( wcHelper.waitTillUIBlockNotPresent( driver ) ); + assert.eventually.ok( Helper.waitTillUIBlockNotPresent( driver ) ); const orderReview = checkoutPage.components.orderReview; assertOrderItem( orderReview, 'Flying Ninja', { qty: '1', total: '$12.00' } ); @@ -73,7 +72,7 @@ test.describe( 'Checkout Page', function() { guest.fromShopAddProductsToCart( 'Flying Ninja', 'Happy Ninja' ); const checkoutPage = guest.openCheckout(); - assert.eventually.ok( wcHelper.waitTillUIBlockNotPresent( driver ) ); + assert.eventually.ok( Helper.waitTillUIBlockNotPresent( driver ) ); assert.eventually.ok( checkoutPage.selectPaymentMethod( 'PayPal' ) ); assert.eventually.ok( checkoutPage.selectPaymentMethod( 'Direct bank transfer' ) ); assert.eventually.ok( checkoutPage.selectPaymentMethod( 'Cash on delivery' ) ); @@ -84,7 +83,7 @@ test.describe( 'Checkout Page', function() { guest.fromShopAddProductsToCart( 'Flying Ninja', 'Happy Ninja' ); const checkoutPage = guest.open( PAGE.CHECKOUT ); - assert.eventually.ok( wcHelper.waitTillUIBlockNotPresent( driver ) ); + assert.eventually.ok( Helper.waitTillUIBlockNotPresent( driver ) ); const billingDetails = checkoutPage.components.billingDetails; assert.eventually.ok( billingDetails.setFirstName( 'John' ) ); @@ -105,7 +104,7 @@ test.describe( 'Checkout Page', function() { guest.fromShopAddProductsToCart( 'Flying Ninja', 'Happy Ninja' ); const checkoutPage = guest.open( PAGE.CHECKOUT ); - assert.eventually.ok( wcHelper.waitTillUIBlockNotPresent( driver ) ); + assert.eventually.ok( Helper.waitTillUIBlockNotPresent( driver ) ); assert.eventually.ok( checkoutPage.checkShipToDifferentAddress() ); const shippingDetails = checkoutPage.components.shippingDetails; @@ -126,7 +125,7 @@ test.describe( 'Checkout Page', function() { const checkoutPage = guest.open( PAGE.CHECKOUT ); const billingDetails = checkoutPage.components.billingDetails; - wcHelper.waitTillUIBlockNotPresent( driver ); + Helper.waitTillUIBlockNotPresent( driver ); billingDetails.setFirstName( 'John' ); billingDetails.setLastName( 'Doe' ); billingDetails.setCompany( 'Automattic' ); @@ -140,7 +139,7 @@ test.describe( 'Checkout Page', function() { billingDetails.setZip( '94107' ); checkoutPage.selectPaymentMethod( 'Cash on delivery' ); checkoutPage.placeOrder(); - wcHelper.waitTillUIBlockNotPresent( driver ); + Helper.waitTillUIBlockNotPresent( driver ); const orderReceivedPage = new CheckoutOrderReceivedPage( driver, { visit: false } ); From 3f9bcc2a09cc0c30c3074044a03d9e6c38fb4a9e Mon Sep 17 00:00:00 2001 From: "Peter J. Herrel" Date: Wed, 1 Mar 2017 18:34:42 +0100 Subject: [PATCH 005/525] filter recent reviews dashboard widget query --- includes/admin/class-wc-admin-dashboard.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/includes/admin/class-wc-admin-dashboard.php b/includes/admin/class-wc-admin-dashboard.php index 8f6c584a1ae..24987d70b4c 100644 --- a/includes/admin/class-wc-admin-dashboard.php +++ b/includes/admin/class-wc-admin-dashboard.php @@ -246,10 +246,8 @@ class WC_Admin_Dashboard { */ public function recent_reviews() { global $wpdb; - $comments = $wpdb->get_results( " - SELECT posts.ID, posts.post_title, comments.comment_author, comments.comment_ID, SUBSTRING(comments.comment_content,1,100) AS comment_excerpt - FROM $wpdb->comments comments - LEFT JOIN $wpdb->posts posts ON (comments.comment_post_ID = posts.ID) + $query_from = apply_filters( 'woocommerce_report_recent_reviews_query_from', "FROM {$wpdb->comments} comments + LEFT JOIN {$wpdb->posts} posts ON (comments.comment_post_ID = posts.ID) WHERE comments.comment_approved = '1' AND comments.comment_type = '' AND posts.post_password = '' @@ -257,6 +255,10 @@ class WC_Admin_Dashboard { ORDER BY comments.comment_date_gmt DESC LIMIT 5 " ); + $comments = $wpdb->get_results( " + SELECT posts.ID, posts.post_title, comments.comment_author, comments.comment_ID, SUBSTRING(comments.comment_content,1,100) AS comment_excerpt + {$query_from}; + " ); if ( $comments ) { echo '
    '; From f8a661df9a87254e5c2b88aae886b7868e1a95da Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Thu, 9 Mar 2017 12:59:10 -0800 Subject: [PATCH 006/525] Add chromedriver to package.json --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 1f063c5d830..304661d25e0 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "cross-env": "^3.0.0", "istanbul": "^1.0.0-alpha", "mocha": "^3.0.2", + "chromedriver": "^2.27.3", "wc-e2e-page-objects": "0.2.0" }, "engines": { From 8564de4b82e8fdfc1cd1ee1ba1946985f254f2a5 Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Thu, 9 Mar 2017 13:24:36 -0800 Subject: [PATCH 007/525] Config loading tweaks --- package.json | 2 +- tests/frontend-tests/config/default.json | 2 +- tests/frontend-tests/config/development.json | 9 --------- tests/frontend-tests/config/local-development.json | 9 +++++++++ tests/frontend-tests/config/local-sample.json | 9 +++++++++ 5 files changed, 20 insertions(+), 11 deletions(-) delete mode 100644 tests/frontend-tests/config/development.json create mode 100644 tests/frontend-tests/config/local-development.json create mode 100644 tests/frontend-tests/config/local-sample.json diff --git a/package.json b/package.json index 304661d25e0..273bda91543 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "wc-e2e-page-objects": "0.2.0" }, "engines": { - "node": ">=0.8.0", + "node": ">=6.9.10", "npm": ">=1.1.0" } } diff --git a/tests/frontend-tests/config/default.json b/tests/frontend-tests/config/default.json index d646836665a..5478685bf17 100644 --- a/tests/frontend-tests/config/default.json +++ b/tests/frontend-tests/config/default.json @@ -5,7 +5,7 @@ "username": "", "password": "" }, - "custtomer": { + "customer": { "username": "", "password": "" } diff --git a/tests/frontend-tests/config/development.json b/tests/frontend-tests/config/development.json deleted file mode 100644 index 2c62cd998bf..00000000000 --- a/tests/frontend-tests/config/development.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "url": "http://local.wordpress.dev/", - "users": { - "admin": { - "username": "admin", - "password": "password" - } - } -} diff --git a/tests/frontend-tests/config/local-development.json b/tests/frontend-tests/config/local-development.json new file mode 100644 index 00000000000..ead94e6ac34 --- /dev/null +++ b/tests/frontend-tests/config/local-development.json @@ -0,0 +1,9 @@ +{ + "url": "http://local.wordpress.dev/", + "users": { + "admin": { + "username": "admin", + "password": "password" + } + } +} diff --git a/tests/frontend-tests/config/local-sample.json b/tests/frontend-tests/config/local-sample.json new file mode 100644 index 00000000000..ead94e6ac34 --- /dev/null +++ b/tests/frontend-tests/config/local-sample.json @@ -0,0 +1,9 @@ +{ + "url": "http://local.wordpress.dev/", + "users": { + "admin": { + "username": "admin", + "password": "password" + } + } +} From 0dcae9a01d2b16ad97b41021c8df6113f82394ee Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Thu, 9 Mar 2017 13:26:19 -0800 Subject: [PATCH 008/525] Remove accidentally committed file --- tests/frontend-tests/config/local-development.json | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 tests/frontend-tests/config/local-development.json diff --git a/tests/frontend-tests/config/local-development.json b/tests/frontend-tests/config/local-development.json deleted file mode 100644 index ead94e6ac34..00000000000 --- a/tests/frontend-tests/config/local-development.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "url": "http://local.wordpress.dev/", - "users": { - "admin": { - "username": "admin", - "password": "password" - } - } -} From 394a4715d7a8d85178afacdf0e68c47cc9743239 Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Thu, 9 Mar 2017 13:28:03 -0800 Subject: [PATCH 009/525] Hide local dev config in gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 19f0795adf9..84487621b1a 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,7 @@ tests/cli/vendor # Unit tests /tmp /tests/bin/tmp +/tests/frontend-tests/config/local-*.json # Logs /logs From 1cca13689c00d44f4e52296c13a07cdd1eede238 Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Thu, 9 Mar 2017 13:39:51 -0800 Subject: [PATCH 010/525] Increase min node version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 273bda91543..72237d6efdf 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "wc-e2e-page-objects": "0.2.0" }, "engines": { - "node": ">=6.9.10", + "node": ">=6.9.4", "npm": ">=1.1.0" } } From 1078c25971ce521fc6d4923d86cb926c3783a237 Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Fri, 10 Mar 2017 13:41:40 -0800 Subject: [PATCH 011/525] Add task for running single test --- Gruntfile.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Gruntfile.js b/Gruntfile.js index c90a7dfda8d..961cb962c0b 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -250,6 +250,9 @@ module.exports = function( grunt ) { 'php hook-docs.php' ].join( '&&' ) }, + frontend_test: { + command: 'npm run test:single tests/frontend-tests/' + grunt.option( 'file' ) + }, frontend_tests: { command: 'npm run test' } @@ -332,4 +335,8 @@ module.exports = function( grunt ) { grunt.registerTask( 'frontend-tests', [ 'shell:frontend_tests' ]); + + grunt.registerTask( 'frontend-test', [ + 'shell:frontend_test' + ]); }; From 2011c19b537ce13de0fc7cc7be2b7ed1c2f1a569 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 16 Mar 2017 17:03:12 +0000 Subject: [PATCH 012/525] Match language array in select2 Closes #13628 --- assets/js/admin/wc-enhanced-select.js | 76 +++++++++++------------ assets/js/admin/wc-enhanced-select.min.js | 2 +- 2 files changed, 38 insertions(+), 40 deletions(-) diff --git a/assets/js/admin/wc-enhanced-select.js b/assets/js/admin/wc-enhanced-select.js index 8b0c3c6b454..2843d014ea0 100644 --- a/assets/js/admin/wc-enhanced-select.js +++ b/assets/js/admin/wc-enhanced-select.js @@ -2,49 +2,47 @@ jQuery( function( $ ) { function getEnhancedSelectFormatString() { - var formatString = { - noResults: function() { - return wc_enhanced_select_params.i18n_no_matches; - }, - errorLoading: function() { - return wc_enhanced_select_params.i18n_ajax_error; - }, - inputTooShort: function( args ) { - var remainingChars = args.minimum - args.input.length; + return { + 'language': { + errorLoading: function() { + return wc_enhanced_select_params.i18n_ajax_error; + }, + inputTooLong: function( args ) { + var overChars = args.input.length - args.maximum; - if ( 1 === remainingChars ) { - return wc_enhanced_select_params.i18n_input_too_short_1; + if ( 1 === overChars ) { + return wc_enhanced_select_params.i18n_input_too_long_1; + } + + return wc_enhanced_select_params.i18n_input_too_long_n.replace( '%qty%', overChars ); + }, + inputTooShort: function( args ) { + var remainingChars = args.minimum - args.input.length; + + if ( 1 === remainingChars ) { + return wc_enhanced_select_params.i18n_input_too_short_1; + } + + return wc_enhanced_select_params.i18n_input_too_short_n.replace( '%qty%', remainingChars ); + }, + loadingMore: function() { + return wc_enhanced_select_params.i18n_load_more; + }, + maximumSelected: function( args ) { + if ( args.maximum === 1 ) { + return wc_enhanced_select_params.i18n_selection_too_long_1; + } + + return wc_enhanced_select_params.i18n_selection_too_long_n.replace( '%qty%', args.maximum ); + }, + noResults: function() { + return wc_enhanced_select_params.i18n_no_matches; + }, + searching: function() { + return wc_enhanced_select_params.i18n_searching; } - - return wc_enhanced_select_params.i18n_input_too_short_n.replace( '%qty%', remainingChars ); - }, - inputTooLong: function( args ) { - var overChars = args.input.length - args.maximum; - - if ( 1 === overChars ) { - return wc_enhanced_select_params.i18n_input_too_long_1; - } - - return wc_enhanced_select_params.i18n_input_too_long_n.replace( '%qty%', overChars ); - }, - maximumSelected: function( args ) { - if ( args.maximum === 1 ) { - return wc_enhanced_select_params.i18n_selection_too_long_1; - } - - return wc_enhanced_select_params.i18n_selection_too_long_n.replace( '%qty%', args.maximum ); - }, - loadingMore: function() { - return wc_enhanced_select_params.i18n_load_more; - }, - searching: function() { - return wc_enhanced_select_params.i18n_searching; } }; - - var language = { 'language' : formatString }; - - return language; } $( document.body ) diff --git a/assets/js/admin/wc-enhanced-select.min.js b/assets/js/admin/wc-enhanced-select.min.js index bb7c5f84008..31ea9ae4533 100644 --- a/assets/js/admin/wc-enhanced-select.min.js +++ b/assets/js/admin/wc-enhanced-select.min.js @@ -1 +1 @@ -jQuery(function(a){function b(){var a={noResults:function(){return wc_enhanced_select_params.i18n_no_matches},errorLoading:function(){return wc_enhanced_select_params.i18n_ajax_error},inputTooShort:function(a){var b=a.minimum-a.input.length;return 1===b?wc_enhanced_select_params.i18n_input_too_short_1:wc_enhanced_select_params.i18n_input_too_short_n.replace("%qty%",b)},inputTooLong:function(a){var b=a.input.length-a.maximum;return 1===b?wc_enhanced_select_params.i18n_input_too_long_1:wc_enhanced_select_params.i18n_input_too_long_n.replace("%qty%",b)},maximumSelected:function(a){return 1===a.maximum?wc_enhanced_select_params.i18n_selection_too_long_1:wc_enhanced_select_params.i18n_selection_too_long_n.replace("%qty%",a.maximum)},loadingMore:function(){return wc_enhanced_select_params.i18n_load_more},searching:function(){return wc_enhanced_select_params.i18n_searching}},b={language:a};return b}a(document.body).on("wc-enhanced-select-init",function(){a(":input.wc-enhanced-select, :input.chosen_select").filter(":not(.enhanced)").each(function(){var c=a.extend({minimumResultsForSearch:10,allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder")},b());a(this).select2(c).addClass("enhanced")}),a(":input.wc-enhanced-select-nostd, :input.chosen_select_nostd").filter(":not(.enhanced)").each(function(){var c=a.extend({minimumResultsForSearch:10,allowClear:!0,placeholder:a(this).data("placeholder")},b());a(this).select2(c).addClass("enhanced")}),a(":input.wc-product-search").filter(":not(.enhanced)").each(function(){var c={allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder"),minimumInputLength:a(this).data("minimum_input_length")?a(this).data("minimum_input_length"):"3",escapeMarkup:function(a){return a},ajax:{url:wc_enhanced_select_params.ajax_url,dataType:"json",quietMillis:250,data:function(b){return{term:b.term,action:a(this).data("action")||"woocommerce_json_search_products_and_variations",security:wc_enhanced_select_params.search_products_nonce,exclude:a(this).data("exclude"),include:a(this).data("include"),limit:a(this).data("limit")}},processResults:function(b){var c=[];return b&&a.each(b,function(a,b){c.push({id:a,text:b})}),{results:c}},cache:!0}};if(c=a.extend(c,b()),a(this).select2(c).addClass("enhanced"),a(this).data("sortable")){var d=a(this),e=a(this).next(".select2-container").find("ul.select2-selection__rendered");e.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){a(e.find(".select2-selection__choice").get().reverse()).each(function(){var b=a(this).data("data").id,c=d.find('option[value="'+b+'"]')[0];d.prepend(c)})}})}}),a(":input.wc-customer-search").filter(":not(.enhanced)").each(function(){var c={allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder"),minimumInputLength:a(this).data("minimum_input_length")?a(this).data("minimum_input_length"):"3",escapeMarkup:function(a){return a},ajax:{url:wc_enhanced_select_params.ajax_url,dataType:"json",quietMillis:250,data:function(b){return{term:b.term,action:"woocommerce_json_search_customers",security:wc_enhanced_select_params.search_customers_nonce,exclude:a(this).data("exclude")}},processResults:function(b){var c=[];return b&&a.each(b,function(a,b){c.push({id:a,text:b})}),{results:c}},cache:!0}};if(c=a.extend(c,b()),a(this).select2(c).addClass("enhanced"),a(this).data("sortable")){var d=a(this),e=a(this).next(".select2-container").find("ul.select2-selection__rendered");e.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){a(e.find(".select2-selection__choice").get().reverse()).each(function(){var b=a(this).data("data").id,c=d.find('option[value="'+b+'"]')[0];d.prepend(c)})}})}})}).on("wc_backbone_modal_before_remove",function(){a(".wc-enhanced-select, :input.wc-product-search, :input.wc-customer-search").filter(".select2-hidden-accessible").select2("close")}).trigger("wc-enhanced-select-init"),a("html").on("click",function(b){this===b.target&&a(".wc-enhanced-select, :input.wc-product-search, :input.wc-customer-search").filter(".select2-hidden-accessible").select2("close")})}); \ No newline at end of file +jQuery(function(a){function b(){return{language:{errorLoading:function(){return wc_enhanced_select_params.i18n_ajax_error},inputTooLong:function(a){var b=a.input.length-a.maximum;return 1===b?wc_enhanced_select_params.i18n_input_too_long_1:wc_enhanced_select_params.i18n_input_too_long_n.replace("%qty%",b)},inputTooShort:function(a){var b=a.minimum-a.input.length;return 1===b?wc_enhanced_select_params.i18n_input_too_short_1:wc_enhanced_select_params.i18n_input_too_short_n.replace("%qty%",b)},loadingMore:function(){return wc_enhanced_select_params.i18n_load_more},maximumSelected:function(a){return 1===a.maximum?wc_enhanced_select_params.i18n_selection_too_long_1:wc_enhanced_select_params.i18n_selection_too_long_n.replace("%qty%",a.maximum)},noResults:function(){return wc_enhanced_select_params.i18n_no_matches},searching:function(){return wc_enhanced_select_params.i18n_searching}}}}a(document.body).on("wc-enhanced-select-init",function(){a(":input.wc-enhanced-select, :input.chosen_select").filter(":not(.enhanced)").each(function(){var c=a.extend({minimumResultsForSearch:10,allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder")},b());a(this).select2(c).addClass("enhanced")}),a(":input.wc-enhanced-select-nostd, :input.chosen_select_nostd").filter(":not(.enhanced)").each(function(){var c=a.extend({minimumResultsForSearch:10,allowClear:!0,placeholder:a(this).data("placeholder")},b());a(this).select2(c).addClass("enhanced")}),a(":input.wc-product-search").filter(":not(.enhanced)").each(function(){var c={allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder"),minimumInputLength:a(this).data("minimum_input_length")?a(this).data("minimum_input_length"):"3",escapeMarkup:function(a){return a},ajax:{url:wc_enhanced_select_params.ajax_url,dataType:"json",quietMillis:250,data:function(b){return{term:b.term,action:a(this).data("action")||"woocommerce_json_search_products_and_variations",security:wc_enhanced_select_params.search_products_nonce,exclude:a(this).data("exclude"),include:a(this).data("include"),limit:a(this).data("limit")}},processResults:function(b){var c=[];return b&&a.each(b,function(a,b){c.push({id:a,text:b})}),{results:c}},cache:!0}};if(c=a.extend(c,b()),a(this).select2(c).addClass("enhanced"),a(this).data("sortable")){var d=a(this),e=a(this).next(".select2-container").find("ul.select2-selection__rendered");e.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){a(e.find(".select2-selection__choice").get().reverse()).each(function(){var b=a(this).data("data").id,c=d.find('option[value="'+b+'"]')[0];d.prepend(c)})}})}}),a(":input.wc-customer-search").filter(":not(.enhanced)").each(function(){var c={allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder"),minimumInputLength:a(this).data("minimum_input_length")?a(this).data("minimum_input_length"):"3",escapeMarkup:function(a){return a},ajax:{url:wc_enhanced_select_params.ajax_url,dataType:"json",quietMillis:250,data:function(b){return{term:b.term,action:"woocommerce_json_search_customers",security:wc_enhanced_select_params.search_customers_nonce,exclude:a(this).data("exclude")}},processResults:function(b){var c=[];return b&&a.each(b,function(a,b){c.push({id:a,text:b})}),{results:c}},cache:!0}};if(c=a.extend(c,b()),a(this).select2(c).addClass("enhanced"),a(this).data("sortable")){var d=a(this),e=a(this).next(".select2-container").find("ul.select2-selection__rendered");e.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){a(e.find(".select2-selection__choice").get().reverse()).each(function(){var b=a(this).data("data").id,c=d.find('option[value="'+b+'"]')[0];d.prepend(c)})}})}})}).on("wc_backbone_modal_before_remove",function(){a(".wc-enhanced-select, :input.wc-product-search, :input.wc-customer-search").filter(".select2-hidden-accessible").select2("close")}).trigger("wc-enhanced-select-init"),a("html").on("click",function(b){this===b.target&&a(".wc-enhanced-select, :input.wc-product-search, :input.wc-customer-search").filter(".select2-hidden-accessible").select2("close")})}); \ No newline at end of file From 980500c353ef813387dfb77968a2e4a6d4af71a3 Mon Sep 17 00:00:00 2001 From: Michael Pretty Date: Thu, 16 Mar 2017 17:23:06 -0400 Subject: [PATCH 013/525] Preventing the instance Data Store from being serialized with the containing WC_Data object --- includes/class-wc-data-store.php | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/includes/class-wc-data-store.php b/includes/class-wc-data-store.php index 4495453085b..cabf0745ee2 100644 --- a/includes/class-wc-data-store.php +++ b/includes/class-wc-data-store.php @@ -53,6 +53,13 @@ class WC_Data_Store { */ private $current_class_name = ''; + /** + * The object type this store works with. + * @var string + */ + private $object_type = ''; + + /** * Tells WC_Data_Store which object (coupon, product, order, etc) * store we want to work with. @@ -60,6 +67,7 @@ class WC_Data_Store { * @param string $object_type Name of object. */ public function __construct( $object_type ) { + $this->object_type = $object_type; $this->stores = apply_filters( 'woocommerce_data_stores', $this->stores ); // If this object type can't be found, check to see if we can load one @@ -89,6 +97,22 @@ class WC_Data_Store { } } + /** + * Only store the object type to avoid serializing the data store instance + * + * @return array + */ + public function __sleep() { + return [ 'object_type' ]; + } + + /** + * Re-run the constructor with the object type + */ + public function __wakeup() { + $this->__construct( $this->object_type ); + } + /** * Loads a data store. * From 1538eb9334e06b0edb04fc0f2733728324c9744d Mon Sep 17 00:00:00 2001 From: Michael Pretty Date: Thu, 16 Mar 2017 17:38:18 -0400 Subject: [PATCH 014/525] using old array constructor for older PHP support --- includes/class-wc-data-store.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/class-wc-data-store.php b/includes/class-wc-data-store.php index cabf0745ee2..4a1d0113126 100644 --- a/includes/class-wc-data-store.php +++ b/includes/class-wc-data-store.php @@ -103,7 +103,7 @@ class WC_Data_Store { * @return array */ public function __sleep() { - return [ 'object_type' ]; + return array( 'object_type' ); } /** From c1ce490956ef9c0afe6a48c31d5c01d9af15a263 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 17 Mar 2017 11:25:53 +0000 Subject: [PATCH 015/525] Country select --- assets/js/frontend/country-select.js | 75 ++++++++++++------------ assets/js/frontend/country-select.min.js | 2 +- 2 files changed, 38 insertions(+), 39 deletions(-) diff --git a/assets/js/frontend/country-select.js b/assets/js/frontend/country-select.js index 20e8af669e4..0d1f9b3e053 100644 --- a/assets/js/frontend/country-select.js +++ b/assets/js/frontend/country-select.js @@ -7,48 +7,47 @@ jQuery( function( $ ) { } function getEnhancedSelectFormatString() { - var formatString = { - noResults: function() { - return wc_country_select_params.i18n_no_matches; - }, - errorLoading: function() { - return wc_country_select_params.i18n_ajax_error; - }, - inputTooShort: function( args ) { - var remainingChars = args.minimum - args.input.length; + return { + 'language': { + errorLoading: function() { + return wc_country_select_params.i18n_ajax_error; + }, + inputTooLong: function( args ) { + var overChars = args.input.length - args.maximum; - if ( 1 === remainingChars ) { - return wc_country_select_params.i18n_input_too_short_1; + if ( 1 === overChars ) { + return wc_country_select_params.i18n_input_too_long_1; + } + + return wc_country_select_params.i18n_input_too_long_n.replace( '%qty%', overChars ); + }, + inputTooShort: function( args ) { + var remainingChars = args.minimum - args.input.length; + + if ( 1 === remainingChars ) { + return wc_country_select_params.i18n_input_too_short_1; + } + + return wc_country_select_params.i18n_input_too_short_n.replace( '%qty%', remainingChars ); + }, + loadingMore: function() { + return wc_country_select_params.i18n_load_more; + }, + maximumSelected: function( args ) { + if ( args.maximum === 1 ) { + return wc_country_select_params.i18n_selection_too_long_1; + } + + return wc_country_select_params.i18n_selection_too_long_n.replace( '%qty%', args.maximum ); + }, + noResults: function() { + return wc_country_select_params.i18n_no_matches; + }, + searching: function() { + return wc_country_select_params.i18n_searching; } - - return wc_country_select_params.i18n_input_too_short_n.replace( '%qty%', remainingChars ); - }, - inputTooLong: function( args ) { - var overChars = args.input.length - args.maximum; - - if ( 1 === overChars ) { - return wc_country_select_params.i18n_input_too_long_1; - } - - return wc_country_select_params.i18n_input_too_long_n.replace( '%qty%', overChars ); - }, - maximumSelected: function( args ) { - if ( 1 === args.maximum ) { - return wc_country_select_params.i18n_selection_too_long_1; - } - - return wc_country_select_params.i18n_selection_too_long_n.replace( '%qty%', args.maximum ); - }, - loadingMore: function() { - return wc_country_select_params.i18n_load_more; - }, - searching: function() { - return wc_country_select_params.i18n_searching; } }; - - var language = { 'language' : formatString }; - return language; } // Select2 Enhancement if it exists diff --git a/assets/js/frontend/country-select.min.js b/assets/js/frontend/country-select.min.js index 69f287e52b1..0d1808efd63 100644 --- a/assets/js/frontend/country-select.min.js +++ b/assets/js/frontend/country-select.min.js @@ -1 +1 @@ -jQuery(function(a){function b(){var a={noResults:function(){return wc_country_select_params.i18n_no_matches},errorLoading:function(){return wc_country_select_params.i18n_ajax_error},inputTooShort:function(a){var b=a.minimum-a.input.length;return 1===b?wc_country_select_params.i18n_input_too_short_1:wc_country_select_params.i18n_input_too_short_n.replace("%qty%",b)},inputTooLong:function(a){var b=a.input.length-a.maximum;return 1===b?wc_country_select_params.i18n_input_too_long_1:wc_country_select_params.i18n_input_too_long_n.replace("%qty%",b)},maximumSelected:function(a){return 1===a.maximum?wc_country_select_params.i18n_selection_too_long_1:wc_country_select_params.i18n_selection_too_long_n.replace("%qty%",a.maximum)},loadingMore:function(){return wc_country_select_params.i18n_load_more},searching:function(){return wc_country_select_params.i18n_searching}},b={language:a};return b}if("undefined"==typeof wc_country_select_params)return!1;if(a().select2){var c=function(){a("select.country_select:visible, select.state_select:visible").each(function(){var c=a.extend({placeholderOption:"first",width:"100%"},b());a(this).select2(c),a(this).on("select2:select",function(){a(this).focus()})})};c(),a(document.body).bind("country_to_state_changed",function(){c()})}var d=wc_country_select_params.countries.replace(/"/g,'"'),e=a.parseJSON(d);a(document.body).on("change","select.country_to_state, input.country_to_state",function(){var b=a(this).closest(".woocommerce-billing-fields, .woocommerce-shipping-fields, .woocommerce-shipping-calculator");b.length||(b=a(this).closest(".form-row").parent());var c=a(this).val(),d=b.find("#billing_state, #shipping_state, #calc_shipping_state"),f=d.parent(),g=d.attr("name"),h=d.attr("id"),i=d.val(),j=d.attr("placeholder")||d.attr("data-placeholder")||"";if(e[c])if(a.isEmptyObject(e[c]))d.parent().hide().find(".select2-container").remove(),d.replaceWith(''),a(document.body).trigger("country_to_state_changed",[c,b]);else{var k="",l=e[c];for(var m in l)l.hasOwnProperty(m)&&(k=k+'");d.parent().show(),d.is("input")&&(d.replaceWith(''),d=b.find("#billing_state, #shipping_state, #calc_shipping_state")),d.html('"+k),d.val(i).change(),a(document.body).trigger("country_to_state_changed",[c,b])}else d.is("select")?(f.show().find(".select2-container").remove(),d.replaceWith(''),a(document.body).trigger("country_to_state_changed",[c,b])):d.is('input[type="hidden"]')&&(f.show().find(".select2-container").remove(),d.replaceWith(''),a(document.body).trigger("country_to_state_changed",[c,b]));a(document.body).trigger("country_to_state_changing",[c,b])}),a(function(){a(":input.country_to_state").change()})}); \ No newline at end of file +jQuery(function(a){function b(){return{language:{errorLoading:function(){return wc_country_select_params.i18n_ajax_error},inputTooLong:function(a){var b=a.input.length-a.maximum;return 1===b?wc_country_select_params.i18n_input_too_long_1:wc_country_select_params.i18n_input_too_long_n.replace("%qty%",b)},inputTooShort:function(a){var b=a.minimum-a.input.length;return 1===b?wc_country_select_params.i18n_input_too_short_1:wc_country_select_params.i18n_input_too_short_n.replace("%qty%",b)},loadingMore:function(){return wc_country_select_params.i18n_load_more},maximumSelected:function(a){return 1===a.maximum?wc_country_select_params.i18n_selection_too_long_1:wc_country_select_params.i18n_selection_too_long_n.replace("%qty%",a.maximum)},noResults:function(){return wc_country_select_params.i18n_no_matches},searching:function(){return wc_country_select_params.i18n_searching}}}}if("undefined"==typeof wc_country_select_params)return!1;if(a().select2){var c=function(){a("select.country_select:visible, select.state_select:visible").each(function(){var c=a.extend({placeholderOption:"first",width:"100%"},b());a(this).select2(c),a(this).on("select2:select",function(){a(this).focus()})})};c(),a(document.body).bind("country_to_state_changed",function(){c()})}var d=wc_country_select_params.countries.replace(/"/g,'"'),e=a.parseJSON(d);a(document.body).on("change","select.country_to_state, input.country_to_state",function(){var b=a(this).closest(".woocommerce-billing-fields, .woocommerce-shipping-fields, .woocommerce-shipping-calculator");b.length||(b=a(this).closest(".form-row").parent());var c=a(this).val(),d=b.find("#billing_state, #shipping_state, #calc_shipping_state"),f=d.parent(),g=d.attr("name"),h=d.attr("id"),i=d.val(),j=d.attr("placeholder")||d.attr("data-placeholder")||"";if(e[c])if(a.isEmptyObject(e[c]))d.parent().hide().find(".select2-container").remove(),d.replaceWith(''),a(document.body).trigger("country_to_state_changed",[c,b]);else{var k="",l=e[c];for(var m in l)l.hasOwnProperty(m)&&(k=k+'");d.parent().show(),d.is("input")&&(d.replaceWith(''),d=b.find("#billing_state, #shipping_state, #calc_shipping_state")),d.html('"+k),d.val(i).change(),a(document.body).trigger("country_to_state_changed",[c,b])}else d.is("select")?(f.show().find(".select2-container").remove(),d.replaceWith(''),a(document.body).trigger("country_to_state_changed",[c,b])):d.is('input[type="hidden"]')&&(f.show().find(".select2-container").remove(),d.replaceWith(''),a(document.body).trigger("country_to_state_changed",[c,b]));a(document.body).trigger("country_to_state_changing",[c,b])}),a(function(){a(":input.country_to_state").change()})}); \ No newline at end of file From e7397f96e721de2c1fab95930ead8558c6ba85d1 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 17 Mar 2017 12:57:18 +0000 Subject: [PATCH 016/525] Force max to blank string when < 0 Fixes #13639 --- includes/wc-template-functions.php | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/includes/wc-template-functions.php b/includes/wc-template-functions.php index 0bfc3301d88..5cac73724de 100644 --- a/includes/wc-template-functions.php +++ b/includes/wc-template-functions.php @@ -1053,16 +1053,11 @@ if ( ! function_exists( 'woocommerce_quantity_input' ) ) { $args = apply_filters( 'woocommerce_quantity_input_args', wp_parse_args( $args, $defaults ), $product ); // Apply sanity to min/max args - min cannot be lower than 0. - if ( $args['min_value'] < 0 ) { - $args['min_value'] = 0; - } + $args['min_value'] = max( $args['min_value'], 0 ); + $args['max_value'] = 0 < $args['max_value'] ? $args['max_value'] : ''; - if ( '' === $args['max_value'] ) { - $args['max_value'] = -1; - } - - // Max cannot be lower than 0 or min - if ( 0 < $args['max_value'] && $args['max_value'] < $args['min_value'] ) { + // Max cannot be lower than min if defined. + if ( '' !== $args['max_value'] && $args['max_value'] < $args['min_value'] ) { $args['max_value'] = $args['min_value']; } From 8d0a4a3caff8e0f9835c9f9de4a592087880ef0e Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 17 Mar 2017 14:37:19 +0000 Subject: [PATCH 017/525] Use correct getter in legacy API for get_discount Fixes #13635 --- includes/api/legacy/v1/class-wc-api-orders.php | 2 +- includes/api/legacy/v2/class-wc-api-orders.php | 2 +- includes/api/legacy/v3/class-wc-api-orders.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/includes/api/legacy/v1/class-wc-api-orders.php b/includes/api/legacy/v1/class-wc-api-orders.php index 99cfdf47e89..7ed684b1cb9 100644 --- a/includes/api/legacy/v1/class-wc-api-orders.php +++ b/includes/api/legacy/v1/class-wc-api-orders.php @@ -224,7 +224,7 @@ class WC_API_Orders extends WC_API_Resource { $order_data['coupon_lines'][] = array( 'id' => $coupon_item_id, 'code' => $coupon_item->get_code(), - 'amount' => wc_format_decimal( $coupon_item->get_discount_total(), 2 ), + 'amount' => wc_format_decimal( $coupon_item->get_discount(), 2 ), ); } diff --git a/includes/api/legacy/v2/class-wc-api-orders.php b/includes/api/legacy/v2/class-wc-api-orders.php index 83142a82d6f..460fece0030 100644 --- a/includes/api/legacy/v2/class-wc-api-orders.php +++ b/includes/api/legacy/v2/class-wc-api-orders.php @@ -275,7 +275,7 @@ class WC_API_Orders extends WC_API_Resource { $order_data['coupon_lines'][] = array( 'id' => $coupon_item_id, 'code' => $coupon_item->get_code(), - 'amount' => wc_format_decimal( $coupon_item->get_discount_total(), $dp ), + 'amount' => wc_format_decimal( $coupon_item->get_discount(), $dp ), ); } diff --git a/includes/api/legacy/v3/class-wc-api-orders.php b/includes/api/legacy/v3/class-wc-api-orders.php index 424c06ab51d..d200a118d52 100644 --- a/includes/api/legacy/v3/class-wc-api-orders.php +++ b/includes/api/legacy/v3/class-wc-api-orders.php @@ -302,7 +302,7 @@ class WC_API_Orders extends WC_API_Resource { $coupon_line = array( 'id' => $coupon_item_id, 'code' => $coupon_item->get_code(), - 'amount' => wc_format_decimal( $coupon_item->get_discount_total(), $dp ), + 'amount' => wc_format_decimal( $coupon_item->get_discount(), $dp ), ); if ( in_array( 'coupons', $expand ) ) { From d457891bd8e757e8e61c7783e7a0dc13660a85ea Mon Sep 17 00:00:00 2001 From: Justin Shreve Date: Fri, 17 Mar 2017 08:52:02 -0700 Subject: [PATCH 018/525] Add punctuation to docblock comments. --- includes/class-wc-data-store.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/class-wc-data-store.php b/includes/class-wc-data-store.php index 4a1d0113126..ac6b51afde4 100644 --- a/includes/class-wc-data-store.php +++ b/includes/class-wc-data-store.php @@ -98,7 +98,7 @@ class WC_Data_Store { } /** - * Only store the object type to avoid serializing the data store instance + * Only store the object type to avoid serializing the data store instance. * * @return array */ @@ -107,7 +107,7 @@ class WC_Data_Store { } /** - * Re-run the constructor with the object type + * Re-run the constructor with the object type. */ public function __wakeup() { $this->__construct( $this->object_type ); From 196ba7b7702ed216883210c9019cfffa22cc7513 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 17 Mar 2017 16:26:26 +0000 Subject: [PATCH 019/525] Ensure we have a product before checking if it exists Fixes #13642 --- includes/api/legacy/v3/class-wc-api-products.php | 2 +- includes/class-wc-ajax.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/includes/api/legacy/v3/class-wc-api-products.php b/includes/api/legacy/v3/class-wc-api-products.php index 4575898f710..f3e150a6860 100644 --- a/includes/api/legacy/v3/class-wc-api-products.php +++ b/includes/api/legacy/v3/class-wc-api-products.php @@ -1285,7 +1285,7 @@ class WC_API_Products extends WC_API_Resource { foreach ( $product->get_children() as $child_id ) { $_product = wc_get_product( $child_id ); - if ( ! $_product->exists() ) { + if ( ! $_product || ! $_product->exists() ) { continue; } diff --git a/includes/class-wc-ajax.php b/includes/class-wc-ajax.php index 2d27d414fb6..ba2d0228220 100644 --- a/includes/class-wc-ajax.php +++ b/includes/class-wc-ajax.php @@ -940,7 +940,7 @@ class WC_AJAX { continue; } $_product = $order_item->get_product(); - if ( $_product->exists() && $_product->managing_stock() && isset( $order_item_qty[ $item_id ] ) && $order_item_qty[ $item_id ] > 0 ) { + if ( $_product && $_product->exists() && $_product->managing_stock() && isset( $order_item_qty[ $item_id ] ) && $order_item_qty[ $item_id ] > 0 ) { $stock_change = apply_filters( 'woocommerce_reduce_order_stock_quantity', $order_item_qty[ $item_id ], $item_id ); $new_stock = wc_update_product_stock( $_product, $stock_change, 'decrease' ); $item_name = $_product->get_sku() ? $_product->get_sku() : $_product->get_id(); @@ -979,7 +979,7 @@ class WC_AJAX { continue; } $_product = $order_item->get_product(); - if ( $_product->exists() && $_product->managing_stock() && isset( $order_item_qty[ $item_id ] ) && $order_item_qty[ $item_id ] > 0 ) { + if ( $_product && $_product->exists() && $_product->managing_stock() && isset( $order_item_qty[ $item_id ] ) && $order_item_qty[ $item_id ] > 0 ) { $old_stock = $_product->get_stock_quantity(); $stock_change = apply_filters( 'woocommerce_restore_order_stock_quantity', $order_item_qty[ $item_id ], $item_id ); $new_quantity = wc_update_product_stock( $_product, $stock_change, 'increase' ); From e3c2c79e0058c3ef3df66ffec2b41b1b735ed7cb Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Fri, 17 Mar 2017 17:25:38 -0300 Subject: [PATCH 020/525] [REST API] Return attribute names instead of slugs Closes #12804 --- ...-wc-rest-product-variations-controller.php | 2 - .../api/class-wc-rest-products-controller.php | 66 ++++++++++++------- 2 files changed, 42 insertions(+), 26 deletions(-) diff --git a/includes/api/class-wc-rest-product-variations-controller.php b/includes/api/class-wc-rest-product-variations-controller.php index f2a96406f8d..fa9adf45c98 100644 --- a/includes/api/class-wc-rest-product-variations-controller.php +++ b/includes/api/class-wc-rest-product-variations-controller.php @@ -217,8 +217,6 @@ class WC_REST_Product_Variations_Controller extends WC_REST_Products_Controller return apply_filters( "woocommerce_rest_prepare_{$this->post_type}_object", $response, $object, $request ); } - - /** * Prepare objects query. * diff --git a/includes/api/class-wc-rest-products-controller.php b/includes/api/class-wc-rest-products-controller.php index 416c95a4f24..e4c32dc5767 100644 --- a/includes/api/class-wc-rest-products-controller.php +++ b/includes/api/class-wc-rest-products-controller.php @@ -402,6 +402,8 @@ class WC_REST_Products_Controller extends WC_REST_Legacy_Products_Controller { /** * Get attribute taxonomy label. * + * @deprecated 3.0.0 + * * @param string $name Taxonomy name. * @return string */ @@ -412,6 +414,33 @@ class WC_REST_Products_Controller extends WC_REST_Legacy_Products_Controller { return $labels->singular_name; } + /** + * Get product attribute taxonomy name. + * + * @since 3.0.0 + * @param string $slug Taxonomy name. + * @param WC_Product $product Product data. + * @return string + */ + protected function get_attribute_taxonomy_name( $slug, $product ) { + $attributes = $product->get_attributes(); + + if ( ! isset( $attributes[ $slug ] ) ) { + return str_replace( 'pa_', '', $slug ); + } + + $attribute = $attributes[ $slug ]; + + // Taxonomy attribute name. + if ( $attribute->is_taxonomy() ) { + $taxonomy = $attribute->get_taxonomy_object(); + return $taxonomy->attribute_label; + } + + // Custom product attribute name. + return $attribute->get_name(); + } + /** * Get default attributes. * @@ -426,13 +455,13 @@ class WC_REST_Products_Controller extends WC_REST_Legacy_Products_Controller { if ( 0 === strpos( $key, 'pa_' ) ) { $default[] = array( 'id' => wc_attribute_taxonomy_id_by_name( $key ), - 'name' => $this->get_attribute_taxonomy_label( $key ), + 'name' => $this->get_attribute_taxonomy_name( $key, $product ), 'option' => $value, ); } else { $default[] = array( 'id' => 0, - 'name' => str_replace( 'pa_', '', $key ), + 'name' => $this->get_attribute_taxonomy_name( $key, $product ), 'option' => $value, ); } @@ -469,7 +498,7 @@ class WC_REST_Products_Controller extends WC_REST_Legacy_Products_Controller { $attributes = array(); if ( $product->is_type( 'variation' ) ) { - // Variation attributes. + $_product = wc_get_product( $product->get_parent_id() ); foreach ( $product->get_variation_attributes() as $attribute_name => $attribute ) { $name = str_replace( 'attribute_', '', $attribute_name ); @@ -482,38 +511,27 @@ class WC_REST_Products_Controller extends WC_REST_Legacy_Products_Controller { $option_term = get_term_by( 'slug', $attribute, $name ); $attributes[] = array( 'id' => wc_attribute_taxonomy_id_by_name( $name ), - 'name' => $this->get_attribute_taxonomy_label( $name ), + 'name' => $this->get_attribute_taxonomy_name( $name, $_product ), 'option' => $option_term && ! is_wp_error( $option_term ) ? $option_term->name : $attribute, ); } else { $attributes[] = array( 'id' => 0, - 'name' => $name, + 'name' => $this->get_attribute_taxonomy_name( $name, $_product ), 'option' => $attribute, ); } } } else { foreach ( $product->get_attributes() as $attribute ) { - if ( $attribute['is_taxonomy'] ) { - $attributes[] = array( - 'id' => wc_attribute_taxonomy_id_by_name( $attribute['name'] ), - 'name' => $this->get_attribute_taxonomy_label( $attribute['name'] ), - 'position' => (int) $attribute['position'], - 'visible' => (bool) $attribute['is_visible'], - 'variation' => (bool) $attribute['is_variation'], - 'options' => $this->get_attribute_options( $product->get_id(), $attribute ), - ); - } else { - $attributes[] = array( - 'id' => 0, - 'name' => $attribute['name'], - 'position' => (int) $attribute['position'], - 'visible' => (bool) $attribute['is_visible'], - 'variation' => (bool) $attribute['is_variation'], - 'options' => $this->get_attribute_options( $product->get_id(), $attribute ), - ); - } + $attributes[] = array( + 'id' => $attribute['is_taxonomy'] ? wc_attribute_taxonomy_id_by_name( $attribute['name'] ) : 0, + 'name' => $this->get_attribute_taxonomy_name( $attribute['name'], $product ), + 'position' => (int) $attribute['position'], + 'visible' => (bool) $attribute['is_visible'], + 'variation' => (bool) $attribute['is_variation'], + 'options' => $this->get_attribute_options( $product->get_id(), $attribute ), + ); } } From 1a877921092998480c7ae1e2736dc8b1d6e42c42 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Fri, 17 Mar 2017 17:30:38 -0300 Subject: [PATCH 021/525] Remove some product internal meta keys --- includes/data-stores/class-wc-product-data-store-cpt.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/includes/data-stores/class-wc-product-data-store-cpt.php b/includes/data-stores/class-wc-product-data-store-cpt.php index 78cdb6125e8..1b4ce4c3f7e 100644 --- a/includes/data-stores/class-wc-product-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-data-store-cpt.php @@ -51,6 +51,10 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da '_wc_average_rating', '_wc_review_count', '_variation_description', + '_thumbnail_id', + '_file_paths', + '_product_image_gallery', + '_product_version', ); /** From 2d400bffd220c41a157b0492e3a6b64cc3ebac8e Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Fri, 17 Mar 2017 17:37:38 -0300 Subject: [PATCH 022/525] Remove post related internal post keys froom products --- includes/data-stores/class-wc-product-data-store-cpt.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/includes/data-stores/class-wc-product-data-store-cpt.php b/includes/data-stores/class-wc-product-data-store-cpt.php index 78cdb6125e8..265f532201b 100644 --- a/includes/data-stores/class-wc-product-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-data-store-cpt.php @@ -51,6 +51,9 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da '_wc_average_rating', '_wc_review_count', '_variation_description', + '_wp_old_slug', + '_edit_last', + '_edit_lock', ); /** From 8452713225bae2fa5d92579703009c94381f47cc Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Fri, 17 Mar 2017 18:04:50 -0300 Subject: [PATCH 023/525] Fill $wc_product_attributes global in unit tests --- tests/framework/helpers/class-wc-helper-product.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/framework/helpers/class-wc-helper-product.php b/tests/framework/helpers/class-wc-helper-product.php index 063b059f6c6..0b2513cdbed 100644 --- a/tests/framework/helpers/class-wc-helper-product.php +++ b/tests/framework/helpers/class-wc-helper-product.php @@ -277,6 +277,15 @@ class WC_Helper_Product { ); register_taxonomy( 'pa_size', array( 'product' ), $taxonomy_data ); + // Set product attributes global. + global $wc_product_attributes; + $wc_product_attributes = array(); + foreach ( wc_get_attribute_taxonomies() as $tax ) { + if ( $name = wc_attribute_taxonomy_name( $tax->attribute_name ) ) { + $wc_product_attributes[ $name ] = $tax; + } + } + return $return; } From 6aed418b6f5b70c1693c14edcef2410b4fa1f1d1 Mon Sep 17 00:00:00 2001 From: refael iliaguyev Date: Sun, 19 Mar 2017 22:23:18 +0200 Subject: [PATCH 024/525] replace hard coded aligning with rtl conditions --- templates/emails/email-addresses.php | 4 ++-- templates/emails/email-order-details.php | 10 +++++----- templates/emails/email-order-items.php | 10 +++++----- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/templates/emails/email-addresses.php b/templates/emails/email-addresses.php index e6b06669af6..091964c2909 100644 --- a/templates/emails/email-addresses.php +++ b/templates/emails/email-addresses.php @@ -22,13 +22,13 @@ if ( ! defined( 'ABSPATH' ) ) { ?> - needs_shipping_address() && ( $shipping = $order->get_formatted_shipping_address() ) ) : ?> -
    +

    get_formatted_billing_address(); ?>

    +

    diff --git a/templates/emails/email-order-details.php b/templates/emails/email-order-details.php index 81552e5fdaf..0b099b33fb6 100644 --- a/templates/emails/email-order-details.php +++ b/templates/emails/email-order-details.php @@ -31,9 +31,9 @@ do_action( 'woocommerce_email_before_order_table', $order, $sent_to_admin, $plai - - - + + + @@ -52,8 +52,8 @@ do_action( 'woocommerce_email_before_order_table', $order, $sent_to_admin, $plai foreach ( $totals as $total ) { $i++; ?> - - + + $item ) : $product = $item->get_product(); ?> - - - + + get_purchase_note() ) ) : ?> - + From b302d80707092ebb454acf5c0be463ea5d9ca1c5 Mon Sep 17 00:00:00 2001 From: Krzysztof Grabania Date: Mon, 20 Mar 2017 09:28:38 +0100 Subject: [PATCH 025/525] Change default hidden shop_order columns Since WC requires at least WP 4.4 we can use `default_hidden_columns` filter rather than creating user meta for hidden by default columns in shop orders. This PR also adds some conditional for hiding shipping or billing column based on `woocommerce_ship_to_countries` option. --- includes/admin/class-wc-admin-post-types.php | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/includes/admin/class-wc-admin-post-types.php b/includes/admin/class-wc-admin-post-types.php index 2410d948ade..e6878f6aafe 100644 --- a/includes/admin/class-wc-admin-post-types.php +++ b/includes/admin/class-wc-admin-post-types.php @@ -95,8 +95,8 @@ class WC_Admin_Post_Types { // Disable post type view mode options add_filter( 'view_mode_post_types', array( $this, 'disable_view_mode_options' ) ); - // Update the screen options user meta. - add_action( 'admin_init', array( $this, 'adjust_shop_order_columns' ) ); + // Update the screen options. + add_filter( 'default_hidden_columns', array( $this, 'adjust_shop_order_columns' ), 10, 2 ); // Show blank state add_action( 'manage_posts_extra_tablenav', array( $this, 'maybe_render_blank_state' ) ); @@ -109,14 +109,16 @@ class WC_Admin_Post_Types { /** * Adjust shop order columns for the user on certain conditions. */ - public function adjust_shop_order_columns() { - $option_value = get_user_option( 'manageedit-shop_ordercolumnshidden' ); - - // If first time editing, disable columns by default. Likewise, CB should never be hidden. - if ( false === $option_value || ( is_array( $option_value ) && in_array( 'cb', $option_value ) ) ) { - $user = wp_get_current_user(); - update_user_option( get_current_user_id(), 'manageedit-shop_ordercolumnshidden', array( 0 => 'billing_address' ), true ); + public function adjust_shop_order_columns( $hidden, $screen ) { + if ( isset( $screen->id ) && $screen->id == 'edit-shop_order' ) { + if ( 'disabled' == get_option( 'woocommerce_ship_to_countries' ) ) { + $hidden[] = 'shipping_address'; + } else { + $hidden[] = 'billing_address'; + } } + + return $hidden; } /** From 373bdda4f8958a575951c64a6dd7556c93661dae Mon Sep 17 00:00:00 2001 From: JeroenSormani Date: Mon, 20 Mar 2017 10:37:06 +0100 Subject: [PATCH 026/525] Add required filters to allow custom order item types --- includes/abstracts/abstract-wc-order.php | 4 ++-- includes/class-wc-order-factory.php | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/includes/abstracts/abstract-wc-order.php b/includes/abstracts/abstract-wc-order.php index 6bd94d057b9..2379537cb09 100644 --- a/includes/abstracts/abstract-wc-order.php +++ b/includes/abstracts/abstract-wc-order.php @@ -652,13 +652,13 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { * @return string group */ protected function type_to_group( $type ) { - $type_to_group = array( + $type_to_group = apply_filters( 'woocommerce_order_type_to_group', array( 'line_item' => 'line_items', 'tax' => 'tax_lines', 'shipping' => 'shipping_lines', 'fee' => 'fee_lines', 'coupon' => 'coupon_lines', - ); + ) ); return isset( $type_to_group[ $type ] ) ? $type_to_group[ $type ] : ''; } diff --git a/includes/class-wc-order-factory.php b/includes/class-wc-order-factory.php index 48d94aec83f..4e38eba06a4 100644 --- a/includes/class-wc-order-factory.php +++ b/includes/class-wc-order-factory.php @@ -100,8 +100,12 @@ class WC_Order_Factory { case 'tax' : $classname = 'WC_Order_Item_Tax'; break; + default : + $classname = apply_filters( 'woocommerce_get_order_item_classname', $classname, $item_type, $item_id ); + break; } - if ( $classname ) { + + if ( class_exists( $classname ) ) { try { // Try to get from cache, otherwise create a new object, $item = wp_cache_get( 'object-' . $id, 'order-items' ); From a29ba23fab00ea43dbb65eca1203ce13ac40e99c Mon Sep 17 00:00:00 2001 From: JeroenSormani Date: Mon, 20 Mar 2017 11:03:14 +0100 Subject: [PATCH 027/525] Miscellaneous cleanup of typos + change some return types for IDE helpers --- .../data-stores/abstract-wc-order-data-store-cpt.php | 2 +- .../class-wc-customer-download-data-store.php | 2 +- includes/data-stores/class-wc-data-store-wp.php | 4 ++-- includes/data-stores/class-wc-order-data-store-cpt.php | 2 +- .../class-wc-order-item-coupon-data-store.php | 4 ++-- .../data-stores/class-wc-order-item-data-store.php | 4 ++-- .../data-stores/class-wc-order-item-fee-data-store.php | 5 +++-- .../data-stores/class-wc-order-item-product-store.php | 7 ++++--- .../class-wc-order-item-shipping-data-store.php | 5 +++-- .../data-stores/class-wc-order-item-tax-data-store.php | 5 +++-- .../class-wc-order-refund-data-store-cpt.php | 6 +++--- .../class-wc-order-item-data-store-interface.php | 5 +++-- includes/wc-order-item-functions.php | 10 ++++------ 13 files changed, 32 insertions(+), 29 deletions(-) diff --git a/includes/data-stores/abstract-wc-order-data-store-cpt.php b/includes/data-stores/abstract-wc-order-data-store-cpt.php index 9e0a738da4b..67cbebda782 100644 --- a/includes/data-stores/abstract-wc-order-data-store-cpt.php +++ b/includes/data-stores/abstract-wc-order-data-store-cpt.php @@ -220,7 +220,7 @@ abstract class Abstract_WC_Order_Data_Store_CPT extends WC_Data_Store_WP impleme /** * Helper method that updates all the post meta for an order based on it's settings in the WC_Order class. * - * @param WC_Order + * @param $order WC_Order * @since 3.0.0 */ protected function update_post_meta( &$order ) { diff --git a/includes/data-stores/class-wc-customer-download-data-store.php b/includes/data-stores/class-wc-customer-download-data-store.php index 192b0ad3b01..a4a28f512cc 100644 --- a/includes/data-stores/class-wc-customer-download-data-store.php +++ b/includes/data-stores/class-wc-customer-download-data-store.php @@ -13,7 +13,7 @@ if ( ! defined( 'ABSPATH' ) ) { class WC_Customer_Download_Data_Store implements WC_Customer_Download_Data_Store_Interface { /** - * Create dowload permission for a user. + * Create download permission for a user. * * @param WC_Customer_Download $download */ diff --git a/includes/data-stores/class-wc-data-store-wp.php b/includes/data-stores/class-wc-data-store-wp.php index 69fc5734be4..1ccc6e92f4a 100644 --- a/includes/data-stores/class-wc-data-store-wp.php +++ b/includes/data-stores/class-wc-data-store-wp.php @@ -17,7 +17,7 @@ class WC_Data_Store_WP { /** * Meta type. This should match up with - * the types avaiable at https://codex.wordpress.org/Function_Reference/add_metadata. + * the types available at https://codex.wordpress.org/Function_Reference/add_metadata. * WP defines 'post', 'user', 'comment', and 'term'. */ protected $meta_type = 'post'; @@ -97,7 +97,7 @@ class WC_Data_Store_WP { * @since 3.0.0 * @param WC_Data * @param stdClass (containing ->key and ->value) - * @return meta ID + * @return int meta ID */ public function add_meta( &$object, $meta ) { return add_metadata( $this->meta_type, $object->get_id(), $meta->key, $meta->value, false ); diff --git a/includes/data-stores/class-wc-order-data-store-cpt.php b/includes/data-stores/class-wc-order-data-store-cpt.php index 9ab701ac67d..14e1ffac7c4 100644 --- a/includes/data-stores/class-wc-order-data-store-cpt.php +++ b/includes/data-stores/class-wc-order-data-store-cpt.php @@ -240,7 +240,7 @@ class WC_Order_Data_Store_CPT extends Abstract_WC_Order_Data_Store_CPT implement parent::update_post_meta( $order ); - // If address changed, store concatinated version to make searches faster. + // If address changed, store concatenated version to make searches faster. if ( in_array( 'billing', $updated_props ) || ! metadata_exists( 'post', $id, '_billing_address_index' ) ) { update_post_meta( $id, '_billing_address_index', implode( ' ', $order->get_address( 'billing' ) ) ); } diff --git a/includes/data-stores/class-wc-order-item-coupon-data-store.php b/includes/data-stores/class-wc-order-item-coupon-data-store.php index c2daeb54a4b..ac2780d20ce 100644 --- a/includes/data-stores/class-wc-order-item-coupon-data-store.php +++ b/includes/data-stores/class-wc-order-item-coupon-data-store.php @@ -23,7 +23,7 @@ class WC_Order_Item_Coupon_Data_Store extends Abstract_WC_Order_Item_Type_Data_S * Read/populate data properties specific to this order item. * * @since 3.0.0 - * @param WC_Order_Item $item + * @param WC_Order_Item_Coupon $item */ public function read( &$item ) { parent::read( $item ); @@ -40,7 +40,7 @@ class WC_Order_Item_Coupon_Data_Store extends Abstract_WC_Order_Item_Type_Data_S * Ran after both create and update, so $item->get_id() will be set. * * @since 3.0.0 - * @param WC_Order_Item $item + * @param WC_Order_Item_Coupon $item */ public function save_item_data( &$item ) { $id = $item->get_id(); diff --git a/includes/data-stores/class-wc-order-item-data-store.php b/includes/data-stores/class-wc-order-item-data-store.php index 4ca80262a2c..36bbbaf647a 100644 --- a/includes/data-stores/class-wc-order-item-data-store.php +++ b/includes/data-stores/class-wc-order-item-data-store.php @@ -17,7 +17,7 @@ class WC_Order_Item_Data_Store implements WC_Order_Item_Data_Store_Interface { * * @since 3.0.0 * @param int $order_id - * @param array $item. order_item_name and order_item_type. + * @param array $item order_item_name and order_item_type. * @return int Order Item ID */ public function add_order_item( $order_id, $item ) { @@ -44,7 +44,7 @@ class WC_Order_Item_Data_Store implements WC_Order_Item_Data_Store_Interface { * * @since 3.0.0 * @param int $item_id - * @param array $item. order_item_name or order_item_type. + * @param array $item order_item_name or order_item_type. * @return boolean */ public function update_order_item( $item_id, $item ) { diff --git a/includes/data-stores/class-wc-order-item-fee-data-store.php b/includes/data-stores/class-wc-order-item-fee-data-store.php index 4826e1fb809..6f748dde876 100644 --- a/includes/data-stores/class-wc-order-item-fee-data-store.php +++ b/includes/data-stores/class-wc-order-item-fee-data-store.php @@ -11,6 +11,7 @@ if ( ! defined( 'ABSPATH' ) ) { * @author WooCommerce */ class WC_Order_Item_Fee_Data_Store extends Abstract_WC_Order_Item_Type_Data_Store implements WC_Object_Data_Store_Interface, WC_Order_Item_Type_Data_Store_Interface { + /** * Data stored in meta keys. * @since 3.0.0 @@ -22,7 +23,7 @@ class WC_Order_Item_Fee_Data_Store extends Abstract_WC_Order_Item_Type_Data_Stor * Read/populate data properties specific to this order item. * * @since 3.0.0 - * @param WC_Order_Item $item + * @param WC_Order_Item_Fee $item */ public function read( &$item ) { parent::read( $item ); @@ -41,7 +42,7 @@ class WC_Order_Item_Fee_Data_Store extends Abstract_WC_Order_Item_Type_Data_Stor * Ran after both create and update, so $id will be set. * * @since 3.0.0 - * @param WC_Order_Item $item + * @param WC_Order_Item_Fee $item */ public function save_item_data( &$item ) { $id = $item->get_id(); diff --git a/includes/data-stores/class-wc-order-item-product-store.php b/includes/data-stores/class-wc-order-item-product-store.php index db5a9c9228e..f7f8025b640 100644 --- a/includes/data-stores/class-wc-order-item-product-store.php +++ b/includes/data-stores/class-wc-order-item-product-store.php @@ -11,6 +11,7 @@ if ( ! defined( 'ABSPATH' ) ) { * @author WooCommerce */ class WC_Order_Item_Product_Data_Store extends Abstract_WC_Order_Item_Type_Data_Store implements WC_Object_Data_Store_Interface, WC_Order_Item_Type_Data_Store_Interface, WC_Order_Item_Product_Data_Store_Interface { + /** * Data stored in meta keys. * @since 3.0.0 @@ -22,7 +23,7 @@ class WC_Order_Item_Product_Data_Store extends Abstract_WC_Order_Item_Type_Data_ * Read/populate data properties specific to this order item. * * @since 3.0.0 - * @param WC_Order_Item $item + * @param WC_Order_Item_Product $item */ public function read( &$item ) { parent::read( $item ); @@ -44,7 +45,7 @@ class WC_Order_Item_Product_Data_Store extends Abstract_WC_Order_Item_Type_Data_ * Ran after both create and update, so $id will be set. * * @since 3.0.0 - * @param WC_Order_Item $item + * @param WC_Order_Item_Product $item */ public function save_item_data( &$item ) { $id = $item->get_id(); @@ -68,7 +69,7 @@ class WC_Order_Item_Product_Data_Store extends Abstract_WC_Order_Item_Type_Data_ * Get a list of download IDs for a specific item from an order. * * @since 3.0.0 - * @param WC_Order_Item $item + * @param WC_Order_Item_Product $item * @param WC_Order $order * @return array */ diff --git a/includes/data-stores/class-wc-order-item-shipping-data-store.php b/includes/data-stores/class-wc-order-item-shipping-data-store.php index 745b2f14d5d..48cd5b8c53d 100644 --- a/includes/data-stores/class-wc-order-item-shipping-data-store.php +++ b/includes/data-stores/class-wc-order-item-shipping-data-store.php @@ -11,6 +11,7 @@ if ( ! defined( 'ABSPATH' ) ) { * @author WooCommerce */ class WC_Order_Item_Shipping_Data_Store extends Abstract_WC_Order_Item_Type_Data_Store implements WC_Object_Data_Store_Interface, WC_Order_Item_Type_Data_Store_Interface { + /** * Data stored in meta keys. * @since 3.0.0 @@ -22,7 +23,7 @@ class WC_Order_Item_Shipping_Data_Store extends Abstract_WC_Order_Item_Type_Data * Read/populate data properties specific to this order item. * * @since 3.0.0 - * @param WC_Order_Item $item + * @param WC_Order_Item_Shipping $item */ public function read( &$item ) { parent::read( $item ); @@ -40,7 +41,7 @@ class WC_Order_Item_Shipping_Data_Store extends Abstract_WC_Order_Item_Type_Data * Ran after both create and update, so $id will be set. * * @since 3.0.0 - * @param WC_Order_Item $item + * @param WC_Order_Item_Shipping $item */ public function save_item_data( &$item ) { $id = $item->get_id(); diff --git a/includes/data-stores/class-wc-order-item-tax-data-store.php b/includes/data-stores/class-wc-order-item-tax-data-store.php index 17ef18441e9..5619143ddc5 100644 --- a/includes/data-stores/class-wc-order-item-tax-data-store.php +++ b/includes/data-stores/class-wc-order-item-tax-data-store.php @@ -11,6 +11,7 @@ if ( ! defined( 'ABSPATH' ) ) { * @author WooCommerce */ class WC_Order_Item_Tax_Data_Store extends Abstract_WC_Order_Item_Type_Data_Store implements WC_Object_Data_Store_Interface, WC_Order_Item_Type_Data_Store_Interface { + /** * Data stored in meta keys. * @since 3.0.0 @@ -22,7 +23,7 @@ class WC_Order_Item_Tax_Data_Store extends Abstract_WC_Order_Item_Type_Data_Stor * Read/populate data properties specific to this order item. * * @since 3.0.0 - * @param WC_Order_Item $item + * @param WC_Order_Item_Tax $item */ public function read( &$item ) { parent::read( $item ); @@ -42,7 +43,7 @@ class WC_Order_Item_Tax_Data_Store extends Abstract_WC_Order_Item_Type_Data_Stor * Ran after both create and update, so $id will be set. * * @since 3.0.0 - * @param WC_Order_Item $item + * @param WC_Order_Item_Tax $item */ public function save_item_data( &$item ) { $id = $item->get_id(); diff --git a/includes/data-stores/class-wc-order-refund-data-store-cpt.php b/includes/data-stores/class-wc-order-refund-data-store-cpt.php index 2c44bb15fed..2a299064124 100644 --- a/includes/data-stores/class-wc-order-refund-data-store-cpt.php +++ b/includes/data-stores/class-wc-order-refund-data-store-cpt.php @@ -35,7 +35,7 @@ class WC_Order_Refund_Data_Store_CPT extends Abstract_WC_Order_Data_Store_CPT im /** * Delete a refund - no trash is supported. - * @param WC_Order + * @param WC_Order $order * @param array $args Array of args to pass to the delete method. */ public function delete( &$order, $args = array() ) { @@ -49,7 +49,7 @@ class WC_Order_Refund_Data_Store_CPT extends Abstract_WC_Order_Data_Store_CPT im /** * Read refund data. Can be overridden by child classes to load other props. * - * @param WC_Order + * @param WC_Order $refund * @param object $post_object * @since 3.0.0 */ @@ -67,7 +67,7 @@ class WC_Order_Refund_Data_Store_CPT extends Abstract_WC_Order_Data_Store_CPT im * Helper method that updates all the post meta for an order based on it's settings in the WC_Order class. * * @param WC_Order - * @param bool $force Force all props to be written even if not changed. This is used during creation. + * @param WC_Order $refund * @since 3.0.0 */ protected function update_post_meta( &$refund ) { diff --git a/includes/interfaces/class-wc-order-item-data-store-interface.php b/includes/interfaces/class-wc-order-item-data-store-interface.php index 5e61798fd91..751bb5d1125 100644 --- a/includes/interfaces/class-wc-order-item-data-store-interface.php +++ b/includes/interfaces/class-wc-order-item-data-store-interface.php @@ -13,10 +13,11 @@ if ( ! defined( 'ABSPATH' ) ) { * @author WooCommerce */ interface WC_Order_Item_Data_Store_Interface { + /** * Add an order item to an order. * @param int $order_id - * @param array $item. order_item_name and order_item_type. + * @param array $item order_item_name and order_item_type. * @return int Order Item ID */ public function add_order_item( $order_id, $item ); @@ -24,7 +25,7 @@ interface WC_Order_Item_Data_Store_Interface { /** * Update an order item. * @param int $item_id - * @param array $item. order_item_name or order_item_type. + * @param array $item order_item_name or order_item_type. * @return boolean */ public function update_order_item( $item_id, $item ); diff --git a/includes/wc-order-item-functions.php b/includes/wc-order-item-functions.php index 368008ed1bb..a325c311d58 100644 --- a/includes/wc-order-item-functions.php +++ b/includes/wc-order-item-functions.php @@ -20,9 +20,7 @@ if ( ! defined( 'ABSPATH' ) ) { * @return mixed */ function wc_add_order_item( $order_id, $item ) { - $order_id = absint( $order_id ); - - if ( ! $order_id ) + if ( ! $order_id = absint( $order_id ) ) return false; $defaults = array( @@ -69,13 +67,13 @@ function wc_update_order_item( $item_id, $args ) { * @return bool */ function wc_delete_order_item( $item_id ) { - $item_id = absint( $item_id ); - $data_store = WC_Data_Store::load( 'order-item' ); - if ( ! $item_id ) { + if ( ! $item_id = absint( $item_id ) ) { return false; } + $data_store = WC_Data_Store::load( 'order-item' ); + do_action( 'woocommerce_before_delete_order_item', $item_id ); $data_store->delete_order_item( $item_id ); From dea59579bb3ee951948e1000542a55b187a9dd4e Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 20 Mar 2017 15:47:51 +0000 Subject: [PATCH 028/525] description changes, and usage of ID's instead of IDs --- .../api/class-wc-rest-coupons-controller.php | 20 +++++++++---------- .../v1/class-wc-rest-coupons-controller.php | 20 +++++++++---------- includes/class-wc-coupon.php | 2 +- includes/class-wc-install.php | 2 +- includes/class-wc-query.php | 2 +- 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/includes/api/class-wc-rest-coupons-controller.php b/includes/api/class-wc-rest-coupons-controller.php index 55c35ce8188..1864cebcdff 100644 --- a/includes/api/class-wc-rest-coupons-controller.php +++ b/includes/api/class-wc-rest-coupons-controller.php @@ -339,7 +339,7 @@ class WC_REST_Coupons_Controller extends WC_REST_Legacy_Coupons_Controller { 'context' => array( 'view', 'edit' ), ), 'amount' => array( - 'description' => __( 'The amount of discount.', 'woocommerce' ), + 'description' => __( 'The amount of discount. Should always be numeric, even if setting a percentage.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), ), @@ -396,13 +396,13 @@ class WC_REST_Coupons_Controller extends WC_REST_Legacy_Coupons_Controller { 'readonly' => true, ), 'individual_use' => array( - 'description' => __( 'Whether coupon can only be used individually.', 'woocommerce' ), + 'description' => __( 'If true, the coupon can only be used individually. Other applied coupons will be removed from the cart.', 'woocommerce' ), 'type' => 'boolean', 'default' => false, 'context' => array( 'view', 'edit' ), ), 'product_ids' => array( - 'description' => __( "List of product ID's the coupon can be used on.", 'woocommerce' ), + 'description' => __( "List of product IDs the coupon can be used on.", 'woocommerce' ), 'type' => 'array', 'items' => array( 'type' => 'integer', @@ -410,7 +410,7 @@ class WC_REST_Coupons_Controller extends WC_REST_Legacy_Coupons_Controller { 'context' => array( 'view', 'edit' ), ), 'excluded_product_ids' => array( - 'description' => __( "List of product ID's the coupon cannot be used on.", 'woocommerce' ), + 'description' => __( "List of product IDs the coupon cannot be used on.", 'woocommerce' ), 'type' => 'array', 'items' => array( 'type' => 'integer', @@ -418,7 +418,7 @@ class WC_REST_Coupons_Controller extends WC_REST_Legacy_Coupons_Controller { 'context' => array( 'view', 'edit' ), ), 'usage_limit' => array( - 'description' => __( 'How many times the coupon can be used.', 'woocommerce' ), + 'description' => __( 'How many times the coupon can be used in total.', 'woocommerce' ), 'type' => 'integer', 'context' => array( 'view', 'edit' ), ), @@ -433,13 +433,13 @@ class WC_REST_Coupons_Controller extends WC_REST_Legacy_Coupons_Controller { 'context' => array( 'view', 'edit' ), ), 'free_shipping' => array( - 'description' => __( 'Define if can be applied for free shipping.', 'woocommerce' ), + 'description' => __( 'If true and if the free shipping method requires a coupon, this coupon will enable free shipping.', 'woocommerce' ), 'type' => 'boolean', 'default' => false, 'context' => array( 'view', 'edit' ), ), 'product_categories' => array( - 'description' => __( "List of category ID's the coupon applies to.", 'woocommerce' ), + 'description' => __( "List of category IDs the coupon applies to.", 'woocommerce' ), 'type' => 'array', 'items' => array( 'type' => 'integer', @@ -447,7 +447,7 @@ class WC_REST_Coupons_Controller extends WC_REST_Legacy_Coupons_Controller { 'context' => array( 'view', 'edit' ), ), 'excluded_product_categories' => array( - 'description' => __( "List of category ID's the coupon does not apply to.", 'woocommerce' ), + 'description' => __( "List of category IDs the coupon does not apply to.", 'woocommerce' ), 'type' => 'array', 'items' => array( 'type' => 'integer', @@ -455,7 +455,7 @@ class WC_REST_Coupons_Controller extends WC_REST_Legacy_Coupons_Controller { 'context' => array( 'view', 'edit' ), ), 'exclude_sale_items' => array( - 'description' => __( 'Define if should not apply when have sale items.', 'woocommerce' ), + 'description' => __( 'If true, this coupon will not be applied to items that have sale prices.', 'woocommerce' ), 'type' => 'boolean', 'default' => false, 'context' => array( 'view', 'edit' ), @@ -479,7 +479,7 @@ class WC_REST_Coupons_Controller extends WC_REST_Legacy_Coupons_Controller { 'context' => array( 'view', 'edit' ), ), 'used_by' => array( - 'description' => __( 'List of user IDs who have used the coupon.', 'woocommerce' ), + 'description' => __( 'List of user IDs (or guest email addresses) who have used the coupon.', 'woocommerce' ), 'type' => 'array', 'items' => array( 'type' => 'integer', diff --git a/includes/api/v1/class-wc-rest-coupons-controller.php b/includes/api/v1/class-wc-rest-coupons-controller.php index 717de033655..7a92b98df03 100644 --- a/includes/api/v1/class-wc-rest-coupons-controller.php +++ b/includes/api/v1/class-wc-rest-coupons-controller.php @@ -447,7 +447,7 @@ class WC_REST_Coupons_V1_Controller extends WC_REST_Posts_Controller { 'context' => array( 'view', 'edit' ), ), 'amount' => array( - 'description' => __( 'The amount of discount.', 'woocommerce' ), + 'description' => __( 'The amount of discount. Should always be numeric, even if setting a percentage.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), ), @@ -463,13 +463,13 @@ class WC_REST_Coupons_V1_Controller extends WC_REST_Posts_Controller { 'readonly' => true, ), 'individual_use' => array( - 'description' => __( 'Whether coupon can only be used individually.', 'woocommerce' ), + 'description' => __( 'If true, the coupon can only be used individually. Other applied coupons will be removed from the cart.', 'woocommerce' ), 'type' => 'boolean', 'default' => false, 'context' => array( 'view', 'edit' ), ), 'product_ids' => array( - 'description' => __( "List of product ID's the coupon can be used on.", 'woocommerce' ), + 'description' => __( "List of product IDs the coupon can be used on.", 'woocommerce' ), 'type' => 'array', 'items' => array( 'type' => 'integer', @@ -477,7 +477,7 @@ class WC_REST_Coupons_V1_Controller extends WC_REST_Posts_Controller { 'context' => array( 'view', 'edit' ), ), 'exclude_product_ids' => array( - 'description' => __( "List of product ID's the coupon cannot be used on.", 'woocommerce' ), + 'description' => __( "List of product IDs the coupon cannot be used on.", 'woocommerce' ), 'type' => 'array', 'items' => array( 'type' => 'integer', @@ -485,7 +485,7 @@ class WC_REST_Coupons_V1_Controller extends WC_REST_Posts_Controller { 'context' => array( 'view', 'edit' ), ), 'usage_limit' => array( - 'description' => __( 'How many times the coupon can be used.', 'woocommerce' ), + 'description' => __( 'How many times the coupon can be used in total.', 'woocommerce' ), 'type' => 'integer', 'context' => array( 'view', 'edit' ), ), @@ -500,13 +500,13 @@ class WC_REST_Coupons_V1_Controller extends WC_REST_Posts_Controller { 'context' => array( 'view', 'edit' ), ), 'free_shipping' => array( - 'description' => __( 'Define if can be applied for free shipping.', 'woocommerce' ), + 'description' => __( 'If true and if the free shipping method requires a coupon, this coupon will enable free shipping.', 'woocommerce' ), 'type' => 'boolean', 'default' => false, 'context' => array( 'view', 'edit' ), ), 'product_categories' => array( - 'description' => __( "List of category ID's the coupon applies to.", 'woocommerce' ), + 'description' => __( "List of category IDs the coupon applies to.", 'woocommerce' ), 'type' => 'array', 'items' => array( 'type' => 'integer', @@ -514,7 +514,7 @@ class WC_REST_Coupons_V1_Controller extends WC_REST_Posts_Controller { 'context' => array( 'view', 'edit' ), ), 'excluded_product_categories' => array( - 'description' => __( "List of category ID's the coupon does not apply to.", 'woocommerce' ), + 'description' => __( "List of category IDs the coupon does not apply to.", 'woocommerce' ), 'type' => 'array', 'items' => array( 'type' => 'integer', @@ -522,7 +522,7 @@ class WC_REST_Coupons_V1_Controller extends WC_REST_Posts_Controller { 'context' => array( 'view', 'edit' ), ), 'exclude_sale_items' => array( - 'description' => __( 'Define if should not apply when have sale items.', 'woocommerce' ), + 'description' => __( 'If true, this coupon will not be applied to items that have sale prices.', 'woocommerce' ), 'type' => 'boolean', 'default' => false, 'context' => array( 'view', 'edit' ), @@ -546,7 +546,7 @@ class WC_REST_Coupons_V1_Controller extends WC_REST_Posts_Controller { 'context' => array( 'view', 'edit' ), ), 'used_by' => array( - 'description' => __( 'List of user IDs who have used the coupon.', 'woocommerce' ), + 'description' => __( 'List of user IDs (or guest email addresses) who have used the coupon.', 'woocommerce' ), 'type' => 'array', 'items' => array( 'type' => 'integer', diff --git a/includes/class-wc-coupon.php b/includes/class-wc-coupon.php index a761dca89c6..ef1a3abdfb6 100644 --- a/includes/class-wc-coupon.php +++ b/includes/class-wc-coupon.php @@ -1045,7 +1045,7 @@ class WC_Coupon extends WC_Legacy_Coupon { $valid = true; } - // Specific product ID's excluded from the discount + // Specific product IDs excluded from the discount if ( sizeof( $this->get_excluded_product_ids() ) && sizeof( array_intersect( $product_ids, $this->get_excluded_product_ids() ) ) ) { $valid = false; } diff --git a/includes/class-wc-install.php b/includes/class-wc-install.php index e8e2672412c..4d16feab2e3 100644 --- a/includes/class-wc-install.php +++ b/includes/class-wc-install.php @@ -309,7 +309,7 @@ class WC_Install { } /** - * Create pages that the plugin relies on, storing page id's in variables. + * Create pages that the plugin relies on, storing page IDs in variables. */ public static function create_pages() { include_once( dirname( __FILE__ ) . '/admin/wc-admin-functions.php' ); diff --git a/includes/class-wc-query.php b/includes/class-wc-query.php index 6ecb4b31992..ad05e3d6c0a 100644 --- a/includes/class-wc-query.php +++ b/includes/class-wc-query.php @@ -744,7 +744,7 @@ class WC_Query { } /** - * Get an unpaginated list all product ID's (both filtered and unfiltered). Makes use of transients. + * Get an unpaginated list all product IDs (both filtered and unfiltered). Makes use of transients. * @deprecated 2.6.0 due to performance concerns */ public function get_products_in_view() { From 94148cf5127921a1b2ad51c689a974962334b69c Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 20 Mar 2017 16:01:55 +0000 Subject: [PATCH 029/525] Text changes --- includes/api/class-wc-rest-coupons-controller.php | 2 +- .../api/class-wc-rest-customer-downloads-controller.php | 6 +++--- includes/api/class-wc-rest-customers-controller.php | 2 +- includes/api/class-wc-rest-orders-controller.php | 6 +++--- .../api/class-wc-rest-product-variations-controller.php | 4 ++-- includes/api/class-wc-rest-products-controller.php | 4 ++-- includes/api/v1/class-wc-rest-coupons-controller.php | 2 +- .../v1/class-wc-rest-customer-downloads-controller.php | 4 ++-- includes/api/v1/class-wc-rest-orders-controller.php | 4 ++-- includes/api/v1/class-wc-rest-products-controller.php | 8 ++++---- 10 files changed, 21 insertions(+), 21 deletions(-) diff --git a/includes/api/class-wc-rest-coupons-controller.php b/includes/api/class-wc-rest-coupons-controller.php index 1864cebcdff..796d0c02536 100644 --- a/includes/api/class-wc-rest-coupons-controller.php +++ b/includes/api/class-wc-rest-coupons-controller.php @@ -479,7 +479,7 @@ class WC_REST_Coupons_Controller extends WC_REST_Legacy_Coupons_Controller { 'context' => array( 'view', 'edit' ), ), 'used_by' => array( - 'description' => __( 'List of user IDs (or guest email addresses) who have used the coupon.', 'woocommerce' ), + 'description' => __( 'List of user IDs (or guest email addresses) that have used the coupon.', 'woocommerce' ), 'type' => 'array', 'items' => array( 'type' => 'integer', diff --git a/includes/api/class-wc-rest-customer-downloads-controller.php b/includes/api/class-wc-rest-customer-downloads-controller.php index b3160e6b2f4..9b39be99ea3 100644 --- a/includes/api/class-wc-rest-customer-downloads-controller.php +++ b/includes/api/class-wc-rest-customer-downloads-controller.php @@ -124,19 +124,19 @@ class WC_REST_Customer_Downloads_Controller extends WC_REST_Customer_Downloads_V 'readonly' => true, ), 'downloads_remaining' => array( - 'description' => __( 'Amount of downloads remaining.', 'woocommerce' ), + 'description' => __( 'Number of downloads remaining.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'access_expires' => array( - 'description' => __( "The date when the download access expires, in the site's timezone.", 'woocommerce' ), + 'description' => __( "The date when download access expires, in the site's timezone.", 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'access_expires_gmt' => array( - 'description' => __( "The date when the download access expires, as GMT.", 'woocommerce' ), + 'description' => __( "The date when download access expires, as GMT.", 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, diff --git a/includes/api/class-wc-rest-customers-controller.php b/includes/api/class-wc-rest-customers-controller.php index 2e87bc08f79..f3f493a1501 100644 --- a/includes/api/class-wc-rest-customers-controller.php +++ b/includes/api/class-wc-rest-customers-controller.php @@ -149,7 +149,7 @@ class WC_REST_Customers_Controller extends WC_REST_Customers_V1_Controller { 'readonly' => true, ), 'date_modified_gmt' => array( - 'description' => __( 'The date the order was last modified, as GMT.', 'woocommerce' ), + 'description' => __( 'The date the customer was last modified, as GMT.', 'woocommerce' ), 'type' => 'date-time', 'context' => array( 'view', 'edit' ), 'readonly' => true, diff --git a/includes/api/class-wc-rest-orders-controller.php b/includes/api/class-wc-rest-orders-controller.php index 1a1fd7ddd46..8144278f00e 100644 --- a/includes/api/class-wc-rest-orders-controller.php +++ b/includes/api/class-wc-rest-orders-controller.php @@ -819,7 +819,7 @@ class WC_REST_Orders_Controller extends WC_REST_Legacy_Orders_Controller { 'readonly' => true, ), 'version' => array( - 'description' => __( 'Version of WooCommerce when the order was made.', 'woocommerce' ), + 'description' => __( 'Version of WooCommerce which last updated the order.', 'woocommerce' ), 'type' => 'integer', 'context' => array( 'view', 'edit' ), 'readonly' => true, @@ -1064,13 +1064,13 @@ class WC_REST_Orders_Controller extends WC_REST_Legacy_Orders_Controller { 'context' => array( 'view', 'edit' ), ), 'date_paid' => array( - 'description' => __( "The date the order has been paid, in the site's timezone.", 'woocommerce' ), + 'description' => __( "The date the order was paid, in the site's timezone.", 'woocommerce' ), 'type' => 'date-time', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'date_paid_gmt' => array( - 'description' => __( "The date the order has been paid, as GMT.", 'woocommerce' ), + 'description' => __( "The date the order was paid, as GMT.", 'woocommerce' ), 'type' => 'date-time', 'context' => array( 'view', 'edit' ), 'readonly' => true, diff --git a/includes/api/class-wc-rest-product-variations-controller.php b/includes/api/class-wc-rest-product-variations-controller.php index f2a96406f8d..26ac1f04435 100644 --- a/includes/api/class-wc-rest-product-variations-controller.php +++ b/includes/api/class-wc-rest-product-variations-controller.php @@ -720,13 +720,13 @@ class WC_REST_Product_Variations_Controller extends WC_REST_Products_Controller ), ), 'download_limit' => array( - 'description' => __( 'Amount of times the variation can be downloaded.', 'woocommerce' ), + 'description' => __( 'Number of times downloadable files can be downloaded after purchase.', 'woocommerce' ), 'type' => 'integer', 'default' => -1, 'context' => array( 'view', 'edit' ), ), 'download_expiry' => array( - 'description' => __( 'Number of days that the customer has up to be able to download the variation.', 'woocommerce' ), + 'description' => __( 'Number of days until access to downloadable files expires.', 'woocommerce' ), 'type' => 'integer', 'default' => -1, 'context' => array( 'view', 'edit' ), diff --git a/includes/api/class-wc-rest-products-controller.php b/includes/api/class-wc-rest-products-controller.php index 416c95a4f24..a66ad760392 100644 --- a/includes/api/class-wc-rest-products-controller.php +++ b/includes/api/class-wc-rest-products-controller.php @@ -1529,13 +1529,13 @@ class WC_REST_Products_Controller extends WC_REST_Legacy_Products_Controller { ), ), 'download_limit' => array( - 'description' => __( 'Amount of times the product can be downloaded.', 'woocommerce' ), + 'description' => __( 'Number of times downloadable files can be downloaded after purchase.', 'woocommerce' ), 'type' => 'integer', 'default' => -1, 'context' => array( 'view', 'edit' ), ), 'download_expiry' => array( - 'description' => __( 'Number of days that the customer has up to be able to download the product.', 'woocommerce' ), + 'description' => __( 'Number of days until access to downloadable files expires.', 'woocommerce' ), 'type' => 'integer', 'default' => -1, 'context' => array( 'view', 'edit' ), diff --git a/includes/api/v1/class-wc-rest-coupons-controller.php b/includes/api/v1/class-wc-rest-coupons-controller.php index 7a92b98df03..5b38019fcdf 100644 --- a/includes/api/v1/class-wc-rest-coupons-controller.php +++ b/includes/api/v1/class-wc-rest-coupons-controller.php @@ -546,7 +546,7 @@ class WC_REST_Coupons_V1_Controller extends WC_REST_Posts_Controller { 'context' => array( 'view', 'edit' ), ), 'used_by' => array( - 'description' => __( 'List of user IDs (or guest email addresses) who have used the coupon.', 'woocommerce' ), + 'description' => __( 'List of user IDs (or guest email addresses) that have used the coupon.', 'woocommerce' ), 'type' => 'array', 'items' => array( 'type' => 'integer', diff --git a/includes/api/v1/class-wc-rest-customer-downloads-controller.php b/includes/api/v1/class-wc-rest-customer-downloads-controller.php index b18ab239794..7557161adef 100644 --- a/includes/api/v1/class-wc-rest-customer-downloads-controller.php +++ b/includes/api/v1/class-wc-rest-customer-downloads-controller.php @@ -202,13 +202,13 @@ class WC_REST_Customer_Downloads_V1_Controller extends WC_REST_Controller { 'readonly' => true, ), 'downloads_remaining' => array( - 'description' => __( 'Amount of downloads remaining.', 'woocommerce' ), + 'description' => __( 'Number of downloads remaining.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'access_expires' => array( - 'description' => __( "The date when the download access expires, in the site's timezone.", 'woocommerce' ), + 'description' => __( "The date when download access expires, in the site's timezone.", 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, diff --git a/includes/api/v1/class-wc-rest-orders-controller.php b/includes/api/v1/class-wc-rest-orders-controller.php index 1f31ade2baf..9d0e71a9e7c 100644 --- a/includes/api/v1/class-wc-rest-orders-controller.php +++ b/includes/api/v1/class-wc-rest-orders-controller.php @@ -941,7 +941,7 @@ class WC_REST_Orders_V1_Controller extends WC_REST_Posts_Controller { 'context' => array( 'view', 'edit' ), ), 'version' => array( - 'description' => __( 'Version of WooCommerce when the order was made.', 'woocommerce' ), + 'description' => __( 'Version of WooCommerce which last updated the order.', 'woocommerce' ), 'type' => 'integer', 'context' => array( 'view', 'edit' ), 'readonly' => true, @@ -1178,7 +1178,7 @@ class WC_REST_Orders_V1_Controller extends WC_REST_Posts_Controller { 'readonly' => true, ), 'date_paid' => array( - 'description' => __( "The date the order has been paid, in the site's timezone.", 'woocommerce' ), + 'description' => __( "The date the order was paid, in the site's timezone.", 'woocommerce' ), 'type' => 'date-time', 'context' => array( 'view', 'edit' ), 'readonly' => true, diff --git a/includes/api/v1/class-wc-rest-products-controller.php b/includes/api/v1/class-wc-rest-products-controller.php index 4a97c523e69..6a2c90cb528 100644 --- a/includes/api/v1/class-wc-rest-products-controller.php +++ b/includes/api/v1/class-wc-rest-products-controller.php @@ -1898,13 +1898,13 @@ class WC_REST_Products_V1_Controller extends WC_REST_Posts_Controller { ), ), 'download_limit' => array( - 'description' => __( 'Amount of times the product can be downloaded.', 'woocommerce' ), + 'description' => __( 'Number of times downloadable files can be downloaded after purchase.', 'woocommerce' ), 'type' => 'integer', 'default' => -1, 'context' => array( 'view', 'edit' ), ), 'download_expiry' => array( - 'description' => __( 'Number of days that the customer has up to be able to download the product.', 'woocommerce' ), + 'description' => __( 'Number of days until access to downloadable files expires.', 'woocommerce' ), 'type' => 'integer', 'default' => -1, 'context' => array( 'view', 'edit' ), @@ -2376,13 +2376,13 @@ class WC_REST_Products_V1_Controller extends WC_REST_Posts_Controller { ), ), 'download_limit' => array( - 'description' => __( 'Amount of times the variation can be downloaded.', 'woocommerce' ), + 'description' => __( 'Number of times downloadable files can be downloaded after purchase.', 'woocommerce' ), 'type' => 'integer', 'default' => null, 'context' => array( 'view', 'edit' ), ), 'download_expiry' => array( - 'description' => __( 'Number of days that the customer has up to be able to download the variation.', 'woocommerce' ), + 'description' => __( 'Number of days until access to downloadable files expires.', 'woocommerce' ), 'type' => 'integer', 'default' => null, 'context' => array( 'view', 'edit' ), From 12c0622302c447bfba3ea445f86c876fd9ca2112 Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Mon, 20 Mar 2017 09:05:16 -0700 Subject: [PATCH 030/525] Use supported chromedriver version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 72237d6efdf..f10edcd78d2 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "cross-env": "^3.0.0", "istanbul": "^1.0.0-alpha", "mocha": "^3.0.2", - "chromedriver": "^2.27.3", + "chromedriver": "^2.25.0", "wc-e2e-page-objects": "0.2.0" }, "engines": { From 47036f2f4862b141d2a1430232d1138b1948ee4d Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 20 Mar 2017 16:08:53 +0000 Subject: [PATCH 031/525] Update setting wording --- includes/admin/settings/class-wc-settings-products.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/includes/admin/settings/class-wc-settings-products.php b/includes/admin/settings/class-wc-settings-products.php index fe937651718..d781c872000 100644 --- a/includes/admin/settings/class-wc-settings-products.php +++ b/includes/admin/settings/class-wc-settings-products.php @@ -335,16 +335,16 @@ class WC_Settings_Products extends WC_Settings_Page { array( 'title' => __( 'Stock display format', 'woocommerce' ), - 'desc' => __( 'This controls how stock is displayed on the frontend.', 'woocommerce' ), + 'desc' => __( 'This controls how stock quantities are displayed on the frontend.', 'woocommerce' ), 'id' => 'woocommerce_stock_format', 'css' => 'min-width:150px;', 'class' => 'wc-enhanced-select', 'default' => '', 'type' => 'select', 'options' => array( - '' => __( 'Always show stock e.g. "12 in stock"', 'woocommerce' ), - 'low_amount' => __( 'Only show stock when low e.g. "Only 2 left in stock" vs. "In stock"', 'woocommerce' ), - 'no_amount' => __( 'Never show stock amount', 'woocommerce' ), + '' => __( 'Always show quantity remaining in stock e.g. "12 in stock"', 'woocommerce' ), + 'low_amount' => __( 'Only show quantity remaining in stock when low e.g. "Only 2 left in stock"', 'woocommerce' ), + 'no_amount' => __( 'Never show quantity remaining in stock', 'woocommerce' ), ), 'desc_tip' => true, ), From 357227f46afae398336f3260c9b20c0dea285ada Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 20 Mar 2017 16:25:30 +0000 Subject: [PATCH 032/525] Code style --- includes/admin/class-wc-admin-post-types.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/includes/admin/class-wc-admin-post-types.php b/includes/admin/class-wc-admin-post-types.php index e6878f6aafe..78aa0b846bc 100644 --- a/includes/admin/class-wc-admin-post-types.php +++ b/includes/admin/class-wc-admin-post-types.php @@ -110,14 +110,13 @@ class WC_Admin_Post_Types { * Adjust shop order columns for the user on certain conditions. */ public function adjust_shop_order_columns( $hidden, $screen ) { - if ( isset( $screen->id ) && $screen->id == 'edit-shop_order' ) { - if ( 'disabled' == get_option( 'woocommerce_ship_to_countries' ) ) { + if ( isset( $screen->id ) && 'edit-shop_order' === $screen->id ) { + if ( 'disabled' === get_option( 'woocommerce_ship_to_countries' ) ) { $hidden[] = 'shipping_address'; } else { $hidden[] = 'billing_address'; } } - return $hidden; } From 584cf16d026be65fe2288d98c8a508a1d89c61af Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 20 Mar 2017 16:49:25 +0000 Subject: [PATCH 033/525] Readme for #13658 Closes #13658 --- readme.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/readme.txt b/readme.txt index 12bf7c8aea1..7d1b8f1e58c 100644 --- a/readme.txt +++ b/readme.txt @@ -165,6 +165,7 @@ Yes you can! Join in on our [GitHub repository](http://github.com/woocommerce/wo * New gallery on single product pages with better mobile support, using PhotoSwipe and Zoom. Declare support with add_theme_support() - wc-product-gallery-zoom, wc-product-gallery-lightbox, wc-product-gallery-slider * Made the store notice dismissible on the frontend. * Variable products no longer show striked out prices in combination with ranges for clarity when on sale. +* Prices no longer display as 'free' instead of 0, to fix issues with ranges and localization and for consistency. * Improved structured product data by using JSON-LD instead of inline Microdata. * Improved downloads list layout (template file). * Respect stock status and prevent the "out of stock threshold" setting affecting existing in-stock products. From db7650d3a1865c8b4b5a24341722cf9357005296 Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Mon, 20 Mar 2017 10:00:11 -0700 Subject: [PATCH 034/525] Bump package.json version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 89a9237a6d2..58f87336b22 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "woocommerce", "title": "WooCommerce", - "version": "2.6.3", + "version": "3.0.0", "homepage": "https://woocommerce.com/", "repository": { "type": "git", From b363cd8c7f928f501874474c85583631164d2588 Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Mon, 20 Mar 2017 11:51:21 -0700 Subject: [PATCH 035/525] Switch to e2e-tests to match WCCOM --- Gruntfile.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 961cb962c0b..46b3809c13b 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -250,10 +250,10 @@ module.exports = function( grunt ) { 'php hook-docs.php' ].join( '&&' ) }, - frontend_test: { + e2e_test: { command: 'npm run test:single tests/frontend-tests/' + grunt.option( 'file' ) }, - frontend_tests: { + e2e_tests: { command: 'npm run test' } }, @@ -332,11 +332,11 @@ module.exports = function( grunt ) { 'makepot' ]); - grunt.registerTask( 'frontend-tests', [ - 'shell:frontend_tests' + grunt.registerTask( 'e2e-tests', [ + 'shell:e2e_tests' ]); - grunt.registerTask( 'frontend-test', [ - 'shell:frontend_test' + grunt.registerTask( 'e2e-test', [ + 'shell:e2e_test' ]); }; From a894e7b241f40edf19821daef3c6bd702d2ad645 Mon Sep 17 00:00:00 2001 From: refael iliaguyev Date: Mon, 20 Mar 2017 20:53:16 +0200 Subject: [PATCH 036/525] Drop repeated conditions for rtl aligning, use variable instead --- includes/class-wc-emails.php | 21 +++++++++++++++++++++ templates/emails/email-addresses.php | 6 ++++-- templates/emails/email-header.php | 6 ++++-- templates/emails/email-order-details.php | 10 +++++----- templates/emails/email-order-items.php | 12 +++++++----- templates/emails/email-styles.php | 10 ++++++---- 6 files changed, 47 insertions(+), 18 deletions(-) diff --git a/includes/class-wc-emails.php b/includes/class-wc-emails.php index 4ae82af42b2..b6a02d164d1 100644 --- a/includes/class-wc-emails.php +++ b/includes/class-wc-emails.php @@ -177,6 +177,27 @@ class WC_Emails { * Init email classes. */ public function init() { + // Global variable for aligning to be used in email templates + global $_align; + + if ( is_rtl() ) { + $_align = array( + 'left' => 'right', + 'right' => 'left', + 'rtl' => 'ltr', + 'ltr' => 'rtl', + ); + } else { + $_align = array( + 'left' => 'left', + 'right' => 'right', + 'rtl' => 'rtl', + 'ltr' => 'ltr', + ); + } + + $_align = apply_filters( 'woocommerce_email_aligning', $_align ); + // Include email classes include_once( dirname( __FILE__ ) . '/emails/class-wc-email.php' ); diff --git a/templates/emails/email-addresses.php b/templates/emails/email-addresses.php index 091964c2909..dc928a58251 100644 --- a/templates/emails/email-addresses.php +++ b/templates/emails/email-addresses.php @@ -20,15 +20,17 @@ if ( ! defined( 'ABSPATH' ) ) { exit; } +global $_align; + ?>
    ; vertical-align:middle; border: 1px solid #eee; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif; word-wrap:break-word;">' . esc_attr__( 'Product image', 'woocommerce' ) . '', $item ); + echo apply_filters( 'woocommerce_order_item_thumbnail', '
    ' . esc_attr__( 'Product image', 'woocommerce' ) . '
    ', $item ); } // Product name @@ -53,15 +53,15 @@ foreach ( $items as $item_id => $item ) : do_action( 'woocommerce_order_item_meta_end', $item_id, $item, $order, $plain_text ); ?>
    get_quantity(), $item ); ?>get_formatted_line_subtotal( $item ); ?>get_quantity(), $item ); ?>get_formatted_line_subtotal( $item ); ?>
    - needs_shipping_address() && ( $shipping = $order->get_formatted_shipping_address() ) ) : ?> -
    +

    get_formatted_billing_address(); ?>

    +

    diff --git a/templates/emails/email-header.php b/templates/emails/email-header.php index 78984b50b54..91cc521078c 100644 --- a/templates/emails/email-header.php +++ b/templates/emails/email-header.php @@ -20,6 +20,8 @@ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } +global $_align; + ?> > @@ -27,8 +29,8 @@ if ( ! defined( 'ABSPATH' ) ) { <?php echo get_bloginfo( 'name', 'display' ); ?> - ="0" marginwidth="0" topmargin="0" marginheight="0" offset="0"> -
    + margin="0" marginwidth="0" topmargin="0" marginheight="0" offset="0"> +
    > + + + Date: Tue, 4 Apr 2017 23:43:14 +0100 Subject: [PATCH 239/525] Fade gallery in if no images are set. Fixes #13910 --- assets/js/frontend/single-product.js | 1 + assets/js/frontend/single-product.min.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/assets/js/frontend/single-product.js b/assets/js/frontend/single-product.js index 9abd7ed9583..6ca1e59bbd4 100644 --- a/assets/js/frontend/single-product.js +++ b/assets/js/frontend/single-product.js @@ -79,6 +79,7 @@ jQuery( function( $ ) { // No images? Abort. if ( 0 === this.$images.length ) { + this.$target.css( 'opacity', 1 ); return; } diff --git a/assets/js/frontend/single-product.min.js b/assets/js/frontend/single-product.min.js index 9cf87ee1249..b7a7cb4e721 100644 --- a/assets/js/frontend/single-product.min.js +++ b/assets/js/frontend/single-product.min.js @@ -1 +1 @@ -jQuery(function(a){if("undefined"==typeof wc_single_product_params)return!1;a("body").on("init",".wc-tabs-wrapper, .woocommerce-tabs",function(){a(".wc-tab, .woocommerce-tabs .panel:not(.panel .panel)").hide();var b=window.location.hash,c=window.location.href,d=a(this).find(".wc-tabs, ul.tabs").first();b.toLowerCase().indexOf("comment-")>=0||"#reviews"===b||"#tab-reviews"===b?d.find("li.reviews_tab a").click():c.indexOf("comment-page-")>0||c.indexOf("cpage=")>0?d.find("li.reviews_tab a").click():d.find("li:first a").click()}).on("click",".wc-tabs li a, ul.tabs li a",function(b){b.preventDefault();var c=a(this),d=c.closest(".wc-tabs-wrapper, .woocommerce-tabs"),e=d.find(".wc-tabs, ul.tabs");e.find("li").removeClass("active"),d.find(".wc-tab, .panel:not(.panel .panel)").hide(),c.closest("li").addClass("active"),d.find(c.attr("href")).show()}).on("click","a.woocommerce-review-link",function(){return a(".reviews_tab a").click(),!0}).on("init","#rating",function(){a("#rating").hide().before('

    12345

    ')}).on("click","#respond p.stars a",function(){var b=a(this),c=a(this).closest("#respond").find("#rating"),d=a(this).closest(".stars");return c.val(b.text()),b.siblings("a").removeClass("active"),b.addClass("active"),d.addClass("selected"),!1}).on("click","#respond #submit",function(){var b=a(this).closest("#respond").find("#rating"),c=b.val();if(b.length>0&&!c&&"yes"===wc_single_product_params.review_rating_required)return window.alert(wc_single_product_params.i18n_required_rating_text),!1}),a(".wc-tabs-wrapper, .woocommerce-tabs, #rating").trigger("init");var b=function(b,c){this.$target=b,this.$images=a(".woocommerce-product-gallery__image",b),0!==this.$images.length&&(b.data("product_gallery",this),this.flexslider_enabled=a.isFunction(a.fn.flexslider)&&wc_single_product_params.flexslider_enabled,this.zoom_enabled=a.isFunction(a.fn.zoom)&&wc_single_product_params.zoom_enabled,this.photoswipe_enabled="undefined"!=typeof PhotoSwipe&&wc_single_product_params.photoswipe_enabled,c&&(this.flexslider_enabled=!1!==c.photoswipe_enabled&&this.flexslider_enabled,this.zoom_enabled=!1!==c.zoom_enabled&&this.zoom_enabled,this.photoswipe_enabled=!1!==c.photoswipe_enabled&&this.photoswipe_enabled),this.initFlexslider=this.initFlexslider.bind(this),this.initZoom=this.initZoom.bind(this),this.initPhotoswipe=this.initPhotoswipe.bind(this),this.onResetSlidePosition=this.onResetSlidePosition.bind(this),this.getGalleryItems=this.getGalleryItems.bind(this),this.openPhotoswipe=this.openPhotoswipe.bind(this),this.flexslider_enabled?(this.initFlexslider(),b.on("woocommerce_gallery_reset_slide_position",this.onResetSlidePosition)):this.$target.css("opacity",1),this.zoom_enabled&&(this.initZoom(),b.on("woocommerce_gallery_init_zoom",this.initZoom)),this.photoswipe_enabled&&this.initPhotoswipe())};b.prototype.initFlexslider=function(){var b=this.$images,c=this.$target;c.flexslider({selector:".woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image",animation:wc_single_product_params.flexslider.animation,smoothHeight:wc_single_product_params.flexslider.smoothHeight,directionNav:wc_single_product_params.flexslider.directionNav,controlNav:wc_single_product_params.flexslider.controlNav,slideshow:wc_single_product_params.flexslider.slideshow,animationSpeed:wc_single_product_params.flexslider.animationSpeed,animationLoop:wc_single_product_params.flexslider.animationLoop,start:function(){c.css("opacity",1);var d=0;b.each(function(){var b=a(this).height();b>d&&(d=b)}),b.each(function(){a(this).css("min-height",d)})}})},b.prototype.initZoom=function(){var b=this.$images,c=this.$target.width(),d=!1;if(this.flexslider_enabled||(b=b.first()),a(b).each(function(b,e){var f=a(e).find("img");if(f.data("large_image_width")>c)return d=!0,!1}),d){var e={touch:!1};"ontouchstart"in window&&(e.on="click"),b.trigger("zoom.destroy"),b.zoom(e)}},b.prototype.initPhotoswipe=function(){this.zoom_enabled&&this.$images.length>0&&(this.$target.prepend('🔍'),this.$target.on("click",".woocommerce-product-gallery__trigger",this.openPhotoswipe)),this.$target.on("click",".woocommerce-product-gallery__image a",this.openPhotoswipe)},b.prototype.onResetSlidePosition=function(){this.$target.flexslider(0)},b.prototype.getGalleryItems=function(){var b=this.$images,c=[];return b.length>0&&b.each(function(b,d){var e=a(d).find("img"),f=e.attr("data-large_image"),g=e.attr("data-large_image_width"),h=e.attr("data-large_image_height"),i={src:f,w:g,h:h,title:e.attr("title")};c.push(i)}),c},b.prototype.openPhotoswipe=function(b){b.preventDefault();var c,d=a(".pswp")[0],e=this.getGalleryItems(),f=a(b.target);c=f.is(".woocommerce-product-gallery__trigger")?this.$target.find(".flex-active-slide"):f.closest(".woocommerce-product-gallery__image");var g={index:a(c).index(),shareEl:!1,closeOnScroll:!1,history:!1,hideAnimationDuration:0,showAnimationDuration:0},h=new PhotoSwipe(d,PhotoSwipeUI_Default,e,g);h.init()},a.fn.wc_product_gallery=function(a){return new b(this,a),this},a(".woocommerce-product-gallery").each(function(){a(this).wc_product_gallery()})}); \ No newline at end of file +jQuery(function(a){if("undefined"==typeof wc_single_product_params)return!1;a("body").on("init",".wc-tabs-wrapper, .woocommerce-tabs",function(){a(".wc-tab, .woocommerce-tabs .panel:not(.panel .panel)").hide();var b=window.location.hash,c=window.location.href,d=a(this).find(".wc-tabs, ul.tabs").first();b.toLowerCase().indexOf("comment-")>=0||"#reviews"===b||"#tab-reviews"===b?d.find("li.reviews_tab a").click():c.indexOf("comment-page-")>0||c.indexOf("cpage=")>0?d.find("li.reviews_tab a").click():d.find("li:first a").click()}).on("click",".wc-tabs li a, ul.tabs li a",function(b){b.preventDefault();var c=a(this),d=c.closest(".wc-tabs-wrapper, .woocommerce-tabs"),e=d.find(".wc-tabs, ul.tabs");e.find("li").removeClass("active"),d.find(".wc-tab, .panel:not(.panel .panel)").hide(),c.closest("li").addClass("active"),d.find(c.attr("href")).show()}).on("click","a.woocommerce-review-link",function(){return a(".reviews_tab a").click(),!0}).on("init","#rating",function(){a("#rating").hide().before('

    12345

    ')}).on("click","#respond p.stars a",function(){var b=a(this),c=a(this).closest("#respond").find("#rating"),d=a(this).closest(".stars");return c.val(b.text()),b.siblings("a").removeClass("active"),b.addClass("active"),d.addClass("selected"),!1}).on("click","#respond #submit",function(){var b=a(this).closest("#respond").find("#rating"),c=b.val();if(b.length>0&&!c&&"yes"===wc_single_product_params.review_rating_required)return window.alert(wc_single_product_params.i18n_required_rating_text),!1}),a(".wc-tabs-wrapper, .woocommerce-tabs, #rating").trigger("init");var b=function(b,c){return this.$target=b,this.$images=a(".woocommerce-product-gallery__image",b),0===this.$images.length?void this.$target.css("opacity",1):(b.data("product_gallery",this),this.flexslider_enabled=a.isFunction(a.fn.flexslider)&&wc_single_product_params.flexslider_enabled,this.zoom_enabled=a.isFunction(a.fn.zoom)&&wc_single_product_params.zoom_enabled,this.photoswipe_enabled="undefined"!=typeof PhotoSwipe&&wc_single_product_params.photoswipe_enabled,c&&(this.flexslider_enabled=!1!==c.photoswipe_enabled&&this.flexslider_enabled,this.zoom_enabled=!1!==c.zoom_enabled&&this.zoom_enabled,this.photoswipe_enabled=!1!==c.photoswipe_enabled&&this.photoswipe_enabled),this.initFlexslider=this.initFlexslider.bind(this),this.initZoom=this.initZoom.bind(this),this.initPhotoswipe=this.initPhotoswipe.bind(this),this.onResetSlidePosition=this.onResetSlidePosition.bind(this),this.getGalleryItems=this.getGalleryItems.bind(this),this.openPhotoswipe=this.openPhotoswipe.bind(this),this.flexslider_enabled?(this.initFlexslider(),b.on("woocommerce_gallery_reset_slide_position",this.onResetSlidePosition)):this.$target.css("opacity",1),this.zoom_enabled&&(this.initZoom(),b.on("woocommerce_gallery_init_zoom",this.initZoom)),void(this.photoswipe_enabled&&this.initPhotoswipe()))};b.prototype.initFlexslider=function(){var b=this.$images,c=this.$target;c.flexslider({selector:".woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image",animation:wc_single_product_params.flexslider.animation,smoothHeight:wc_single_product_params.flexslider.smoothHeight,directionNav:wc_single_product_params.flexslider.directionNav,controlNav:wc_single_product_params.flexslider.controlNav,slideshow:wc_single_product_params.flexslider.slideshow,animationSpeed:wc_single_product_params.flexslider.animationSpeed,animationLoop:wc_single_product_params.flexslider.animationLoop,start:function(){c.css("opacity",1);var d=0;b.each(function(){var b=a(this).height();b>d&&(d=b)}),b.each(function(){a(this).css("min-height",d)})}})},b.prototype.initZoom=function(){var b=this.$images,c=this.$target.width(),d=!1;if(this.flexslider_enabled||(b=b.first()),a(b).each(function(b,e){var f=a(e).find("img");if(f.data("large_image_width")>c)return d=!0,!1}),d){var e={touch:!1};"ontouchstart"in window&&(e.on="click"),b.trigger("zoom.destroy"),b.zoom(e)}},b.prototype.initPhotoswipe=function(){this.zoom_enabled&&this.$images.length>0&&(this.$target.prepend('🔍'),this.$target.on("click",".woocommerce-product-gallery__trigger",this.openPhotoswipe)),this.$target.on("click",".woocommerce-product-gallery__image a",this.openPhotoswipe)},b.prototype.onResetSlidePosition=function(){this.$target.flexslider(0)},b.prototype.getGalleryItems=function(){var b=this.$images,c=[];return b.length>0&&b.each(function(b,d){var e=a(d).find("img"),f=e.attr("data-large_image"),g=e.attr("data-large_image_width"),h=e.attr("data-large_image_height"),i={src:f,w:g,h:h,title:e.attr("title")};c.push(i)}),c},b.prototype.openPhotoswipe=function(b){b.preventDefault();var c,d=a(".pswp")[0],e=this.getGalleryItems(),f=a(b.target);c=f.is(".woocommerce-product-gallery__trigger")?this.$target.find(".flex-active-slide"):f.closest(".woocommerce-product-gallery__image");var g={index:a(c).index(),shareEl:!1,closeOnScroll:!1,history:!1,hideAnimationDuration:0,showAnimationDuration:0},h=new PhotoSwipe(d,PhotoSwipeUI_Default,e,g);h.init()},a.fn.wc_product_gallery=function(a){return new b(this,a),this},a(".woocommerce-product-gallery").each(function(){a(this).wc_product_gallery()})}); \ No newline at end of file From 811d59feecd84def399eb9a55f6fce802fe9c74b Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 5 Apr 2017 10:03:41 +0100 Subject: [PATCH 240/525] Fallback to home URL if no shop page is set for system status security check. Fixes #13921 --- includes/api/class-wc-rest-system-status-controller.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/includes/api/class-wc-rest-system-status-controller.php b/includes/api/class-wc-rest-system-status-controller.php index 883429f4e2c..8e2212a9068 100644 --- a/includes/api/class-wc-rest-system-status-controller.php +++ b/includes/api/class-wc-rest-system-status-controller.php @@ -844,8 +844,9 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { * @return array */ public function get_security_info() { + $check_page = wc_get_page_id( 'shop' ) ? get_permalink( wc_get_page_id( 'shop' ) ) : get_home_url(); return array( - 'secure_connection' => 'https' === substr( get_permalink( wc_get_page_id( 'shop' ) ), 0, 5 ), + 'secure_connection' => 'https' === substr( $check_page, 0, 5 ), 'hide_errors' => ! ( defined( 'WP_DEBUG' ) && defined( 'WP_DEBUG_DISPLAY' ) && WP_DEBUG && WP_DEBUG_DISPLAY ) || 0 === intval( ini_get( 'display_errors' ) ), ); } From 178a4e31e22025b45320600e89d17635c828f55f Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 5 Apr 2017 10:28:33 +0100 Subject: [PATCH 241/525] details --- .github/ISSUE_TEMPLATE.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 26962a4c3c4..b6f4d94c9f5 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,16 +1,18 @@ -## EXPLANATION OF THE ISSUE +*EXPLANATION OF THE ISSUE* -## STEPS TO REPRODUCE THE ISSUE +*STEPS TO REPRODUCE THE ISSUE* -## SYSTEM STATUS REPORT +*SYSTEM STATUS* +
    ``` -Grab the system status report from WooCommerce > System Status and paste it here. +Grab the system status report from WooCommerce > System Status and paste it here between the `details` tags. ``` +
    -*STEPS TO REPRODUCE THE ISSUE* +### STEPS TO REPRODUCE THE ISSUE -*SYSTEM STATUS* +### SYSTEM STATUS
    ``` From 4aaabb07b77d622205c6736a54a62be8af267e37 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 5 Apr 2017 10:51:06 +0100 Subject: [PATCH 243/525] Readme should include minor version to show upgrade notice Closes #13919 @claudiosanches this needs to be updated with the patch releases to show e.g. 3.0.1 --- readme.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.txt b/readme.txt index f453893a028..df9f76de120 100644 --- a/readme.txt +++ b/readme.txt @@ -170,5 +170,5 @@ Yes you can! Join in on our [GitHub repository](http://github.com/woocommerce/wo == Upgrade Notice == -= 3.0 = += 3.0.0 = 3.0 is a major update. It is important that you make backups and ensure themes and extensions are 3.0 compatible before upgrading. From 5770fb132e835f1c622abbd9d5d383a2d827974f Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 5 Apr 2017 11:10:27 +0100 Subject: [PATCH 244/525] If The $object is not really an object, don't continue. It's invalid. --- includes/class-wc-register-wp-admin-settings.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/includes/class-wc-register-wp-admin-settings.php b/includes/class-wc-register-wp-admin-settings.php index 67e8c52fca7..4f197f9db98 100644 --- a/includes/class-wc-register-wp-admin-settings.php +++ b/includes/class-wc-register-wp-admin-settings.php @@ -24,7 +24,12 @@ class WC_Register_WP_Admin_Settings { * @param string $type Type of settings to register (email or page). */ public function __construct( $object, $type ) { + if ( ! is_object( $object ) ) { + return; + } + $this->object = $object; + if ( 'page' === $type ) { add_filter( 'woocommerce_settings_groups', array( $this, 'register_page_group' ) ); add_filter( 'woocommerce_settings-' . $this->object->get_id(), array( $this, 'register_page_settings' ) ); From 4ad05dfa83c02d5c8fcd46796d5217ac3337e0d0 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 5 Apr 2017 12:06:37 +0100 Subject: [PATCH 245/525] wc_get_object_terms should check it's not an error object Fixes #13920 --- includes/wc-term-functions.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/includes/wc-term-functions.php b/includes/wc-term-functions.php index fb38a51e2d8..5cd920851a8 100644 --- a/includes/wc-term-functions.php +++ b/includes/wc-term-functions.php @@ -26,9 +26,10 @@ if ( ! defined( 'ABSPATH' ) ) { * @return array */ function wc_get_object_terms( $object_id, $taxonomy, $field = null, $index_key = null ) { - // Test if terms exists. - // get_the_terms() return false when don't found terms. - if ( $terms = get_the_terms( $object_id, $taxonomy ) ) { + // Test if terms exists. get_the_terms() return false when it finds no terms. + $terms = get_the_terms( $object_id, $taxonomy ); + + if ( $terms && ! is_wp_error( $terms ) ) { if ( ! is_null( $field ) ) { $terms = wp_list_pluck( $terms, $field, $index_key ); } From e66efc1dccd8ebb9e87a97d5539f6fa1ca8126b7 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 5 Apr 2017 13:06:43 +0100 Subject: [PATCH 246/525] Use wc_deprecated_function so notices are not triggered on ajax requests --- includes/abstracts/abstract-wc-deprecated-hooks.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/abstracts/abstract-wc-deprecated-hooks.php b/includes/abstracts/abstract-wc-deprecated-hooks.php index b6d54767a31..a0f6df39177 100644 --- a/includes/abstracts/abstract-wc-deprecated-hooks.php +++ b/includes/abstracts/abstract-wc-deprecated-hooks.php @@ -78,7 +78,7 @@ abstract class WC_Deprecated_Hooks { * Display a deprecated notice for old hooks. */ protected function display_notice( $old_hook, $new_hook ) { - _deprecated_function( sprintf( 'The "%s" hook uses out of date data structures and', esc_html( $old_hook ) ), WC_VERSION, esc_html( $new_hook ) ); + wc_deprecated_function( sprintf( 'The "%s" hook uses out of date data structures and', esc_html( $old_hook ) ), WC_VERSION, esc_html( $new_hook ) ); } /** From 2bbf5ed42fda2ade3869883f0b467d95bfdd30ae Mon Sep 17 00:00:00 2001 From: "Md. Kowsar Hossain" Date: Wed, 5 Apr 2017 18:26:23 +0600 Subject: [PATCH 247/525] version number updated in up-sells template --- templates/single-product/up-sells.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/single-product/up-sells.php b/templates/single-product/up-sells.php index 0558bd6fecc..75ca4e40c22 100644 --- a/templates/single-product/up-sells.php +++ b/templates/single-product/up-sells.php @@ -13,7 +13,7 @@ * @see https://docs.woocommerce.com/document/template-structure/ * @author WooThemes * @package WooCommerce/Templates - * @version 1.6.4 + * @version 3.0.0 */ if ( ! defined( 'ABSPATH' ) ) { From b7dfc10dee4a46e65eb1667c372624018379d959 Mon Sep 17 00:00:00 2001 From: Ivo Santos Date: Wed, 5 Apr 2017 16:32:02 +0200 Subject: [PATCH 248/525] Update class-wc-coupon.php Updated get_amount() method description. --- includes/class-wc-coupon.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/class-wc-coupon.php b/includes/class-wc-coupon.php index ef1a3abdfb6..2b8dcaea823 100644 --- a/includes/class-wc-coupon.php +++ b/includes/class-wc-coupon.php @@ -159,7 +159,7 @@ class WC_Coupon extends WC_Legacy_Coupon { } /** - * Get coupon code. + * Get coupon amount. * @since 3.0.0 * @param string $context * @return float From 5a7af35d466ab74097700ba943d7b474288a6c93 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Wed, 5 Apr 2017 11:57:39 -0300 Subject: [PATCH 249/525] Removed extra clear parameter from addresses --- includes/class-wc-countries.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/includes/class-wc-countries.php b/includes/class-wc-countries.php index c01201fe0d6..0a6908750b9 100644 --- a/includes/class-wc-countries.php +++ b/includes/class-wc-countries.php @@ -559,7 +559,6 @@ class WC_Countries { 'label' => __( 'Last name', 'woocommerce' ), 'required' => true, 'class' => array( 'form-row-last' ), - 'clear' => true, 'autocomplete' => 'family-name', 'priority' => 20, ), @@ -612,7 +611,6 @@ class WC_Countries { 'label' => __( 'Postcode / ZIP', 'woocommerce' ), 'required' => true, 'class' => array( 'form-row-wide', 'address-field' ), - 'clear' => true, 'validate' => array( 'postcode' ), 'autocomplete' => 'postal-code', 'priority' => 90, @@ -1086,7 +1084,6 @@ class WC_Countries { $address_fields['billing_email'] = array( 'label' => __( 'Email address', 'woocommerce' ), 'required' => true, - 'clear' => true, 'type' => 'email', 'class' => array( 'form-row-last' ), 'validate' => array( 'email' ), From ab4c921bd1b2745250382da58b395dee5bb5f937 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 5 Apr 2017 16:36:28 +0100 Subject: [PATCH 250/525] Wrap in try catch so WC_Data_Exceptions are caught on bad email. --- .../class-wc-customer-data-store-session.php | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/includes/data-stores/class-wc-customer-data-store-session.php b/includes/data-stores/class-wc-customer-data-store-session.php index 4335bcae93c..51e537a4c4b 100644 --- a/includes/data-stores/class-wc-customer-data-store-session.php +++ b/includes/data-stores/class-wc-customer-data-store-session.php @@ -109,28 +109,30 @@ class WC_Customer_Data_Store_Session extends WC_Data_Store_WP implements WC_Cust * @param WC_Customer */ protected function set_defaults( &$customer ) { - $default = wc_get_customer_default_location(); + try { + $default = wc_get_customer_default_location(); - if ( ! $customer->get_billing_country() ) { - $customer->set_billing_country( $default['country'] ); - } + if ( ! $customer->get_billing_country() ) { + $customer->set_billing_country( $default['country'] ); + } - if ( ! $customer->get_shipping_country() ) { - $customer->set_shipping_country( $customer->get_billing_country() ); - } + if ( ! $customer->get_shipping_country() ) { + $customer->set_shipping_country( $customer->get_billing_country() ); + } - if ( ! $customer->get_billing_state() ) { - $customer->set_billing_state( $default['state'] ); - } + if ( ! $customer->get_billing_state() ) { + $customer->set_billing_state( $default['state'] ); + } - if ( ! $customer->get_shipping_state() ) { - $customer->set_shipping_state( $customer->get_billing_state() ); - } + if ( ! $customer->get_shipping_state() ) { + $customer->set_shipping_state( $customer->get_billing_state() ); + } - if ( ! $customer->get_billing_email() && is_user_logged_in() ) { - $current_user = wp_get_current_user(); - $customer->set_billing_email( $current_user->user_email ); - } + if ( ! $customer->get_billing_email() && is_user_logged_in() ) { + $current_user = wp_get_current_user(); + $customer->set_billing_email( $current_user->user_email ); + } + } catch ( WC_Data_Exception $e ) {} } /** From 6b6f48e7dc4cddeb2caff6f0557319f50c06e5dd Mon Sep 17 00:00:00 2001 From: Justin Shreve Date: Wed, 5 Apr 2017 09:13:20 -0700 Subject: [PATCH 251/525] Prior to 3.0 there was a woocommerce_debug_posting filter that could be used to add rows to the environment section of the system status page. It was removed. This PR adds it back as woocommerce_system_status_environment_rows and aliases/deprecates the old one. --- .../views/html-admin-page-status-report.php | 21 ++++++ includes/class-wc-deprecated-filter-hooks.php | 68 ++++++++++--------- 2 files changed, 56 insertions(+), 33 deletions(-) diff --git a/includes/admin/views/html-admin-page-status-report.php b/includes/admin/views/html-admin-page-status-report.php index eba8620ebc1..eb9fb4edc7e 100644 --- a/includes/admin/views/html-admin-page-status-report.php +++ b/includes/admin/views/html-admin-page-status-report.php @@ -273,6 +273,27 @@ $pages = $system_status->get_pages(); } ?> + '; + } else { + $css_class = 'error'; + $icon = ''; + } + ?> +
    + + + +
    diff --git a/templates/emails/email-order-details.php b/templates/emails/email-order-details.php index 0b099b33fb6..c292bdae348 100644 --- a/templates/emails/email-order-details.php +++ b/templates/emails/email-order-details.php @@ -31,9 +31,9 @@ do_action( 'woocommerce_email_before_order_table', $order, $sent_to_admin, $plai - - - + + + @@ -52,8 +52,8 @@ do_action( 'woocommerce_email_before_order_table', $order, $sent_to_admin, $plai foreach ( $totals as $total ) { $i++; ?> - - + + $item ) : if ( apply_filters( 'woocommerce_order_item_visible', true, $item ) ) { $product = $item->get_product(); ?> - - - + + get_purchase_note() ) ) : ?> - + diff --git a/templates/emails/email-styles.php b/templates/emails/email-styles.php index 1a8b3917aba..55f640304cd 100644 --- a/templates/emails/email-styles.php +++ b/templates/emails/email-styles.php @@ -18,6 +18,8 @@ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly +global $_align; + // Load colors $bg = get_option( 'woocommerce_email_background_color' ); $body = get_option( 'woocommerce_email_body_background_color' ); @@ -104,7 +106,7 @@ $text_lighter_20 = wc_hex_lighter( $text, 20 ); font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; font-size: 14px; line-height: 150%; - text-align: ; + text-align: ; } .td { @@ -133,7 +135,7 @@ h1 { font-weight: 300; line-height: 150%; margin: 0; - text-align: ; + text-align: ; text-shadow: 0 1px 0 ; -webkit-font-smoothing: antialiased; } @@ -146,7 +148,7 @@ h2 { font-weight: bold; line-height: 130%; margin: 16px 0 8px; - text-align: ; + text-align: ; } h3 { @@ -157,7 +159,7 @@ h3 { font-weight: bold; line-height: 130%; margin: 16px 0 8px; - text-align: ; + text-align: ; } a { From d07d32c3d2c156ec9a8606642833ed54a44382e4 Mon Sep 17 00:00:00 2001 From: Jeroen Sormani Date: Mon, 20 Mar 2017 20:17:49 +0100 Subject: [PATCH 037/525] Add empty/not-false Ref: https://github.com/woocommerce/woocommerce/pull/13665/files#r106967582 --- includes/class-wc-order-factory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/class-wc-order-factory.php b/includes/class-wc-order-factory.php index 4e38eba06a4..a6144f69ff4 100644 --- a/includes/class-wc-order-factory.php +++ b/includes/class-wc-order-factory.php @@ -105,7 +105,7 @@ class WC_Order_Factory { break; } - if ( class_exists( $classname ) ) { + if ( $classname && class_exists( $classname ) ) { try { // Try to get from cache, otherwise create a new object, $item = wp_cache_get( 'object-' . $id, 'order-items' ); From af55947f87c0081fe769ce5084a198e5ec427b7c Mon Sep 17 00:00:00 2001 From: refael iliaguyev Date: Mon, 20 Mar 2017 22:21:44 +0200 Subject: [PATCH 038/525] Revert "Drop repeated conditions for rtl aligning, use variable instead" This reverts commit a894e7b241f40edf19821daef3c6bd702d2ad645. --- includes/class-wc-emails.php | 21 --------------------- templates/emails/email-addresses.php | 6 ++---- templates/emails/email-header.php | 6 ++---- templates/emails/email-order-details.php | 10 +++++----- templates/emails/email-order-items.php | 12 +++++------- templates/emails/email-styles.php | 10 ++++------ 6 files changed, 18 insertions(+), 47 deletions(-) diff --git a/includes/class-wc-emails.php b/includes/class-wc-emails.php index b6a02d164d1..4ae82af42b2 100644 --- a/includes/class-wc-emails.php +++ b/includes/class-wc-emails.php @@ -177,27 +177,6 @@ class WC_Emails { * Init email classes. */ public function init() { - // Global variable for aligning to be used in email templates - global $_align; - - if ( is_rtl() ) { - $_align = array( - 'left' => 'right', - 'right' => 'left', - 'rtl' => 'ltr', - 'ltr' => 'rtl', - ); - } else { - $_align = array( - 'left' => 'left', - 'right' => 'right', - 'rtl' => 'rtl', - 'ltr' => 'ltr', - ); - } - - $_align = apply_filters( 'woocommerce_email_aligning', $_align ); - // Include email classes include_once( dirname( __FILE__ ) . '/emails/class-wc-email.php' ); diff --git a/templates/emails/email-addresses.php b/templates/emails/email-addresses.php index dc928a58251..091964c2909 100644 --- a/templates/emails/email-addresses.php +++ b/templates/emails/email-addresses.php @@ -20,17 +20,15 @@ if ( ! defined( 'ABSPATH' ) ) { exit; } -global $_align; - ?>
    ; vertical-align:middle; border: 1px solid #eee; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif; word-wrap:break-word;">' . esc_attr__( 'Product image', 'woocommerce' ) . '', $item ); + echo apply_filters( 'woocommerce_order_item_thumbnail', '
    ' . esc_attr__( 'Product image', 'woocommerce' ) . '
    ', $item ); } // Product name @@ -53,15 +55,15 @@ foreach ( $items as $item_id => $item ) : do_action( 'woocommerce_order_item_meta_end', $item_id, $item, $order, $plain_text ); ?>
    get_quantity(), $item ); ?>get_formatted_line_subtotal( $item ); ?>get_quantity(), $item ); ?>get_formatted_line_subtotal( $item ); ?>
    - needs_shipping_address() && ( $shipping = $order->get_formatted_shipping_address() ) ) : ?> -
    +

    get_formatted_billing_address(); ?>

    +

    diff --git a/templates/emails/email-header.php b/templates/emails/email-header.php index 91cc521078c..78984b50b54 100644 --- a/templates/emails/email-header.php +++ b/templates/emails/email-header.php @@ -20,8 +20,6 @@ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } -global $_align; - ?> > @@ -29,8 +27,8 @@ global $_align; <?php echo get_bloginfo( 'name', 'display' ); ?> - margin="0" marginwidth="0" topmargin="0" marginheight="0" offset="0"> -
    + ="0" marginwidth="0" topmargin="0" marginheight="0" offset="0"> +
    - +
    diff --git a/templates/emails/email-order-details.php b/templates/emails/email-order-details.php index c292bdae348..0b099b33fb6 100644 --- a/templates/emails/email-order-details.php +++ b/templates/emails/email-order-details.php @@ -31,9 +31,9 @@ do_action( 'woocommerce_email_before_order_table', $order, $sent_to_admin, $plai - - - + + + @@ -52,8 +52,8 @@ do_action( 'woocommerce_email_before_order_table', $order, $sent_to_admin, $plai foreach ( $totals as $total ) { $i++; ?> - - + + $item ) : if ( apply_filters( 'woocommerce_order_item_visible', true, $item ) ) { $product = $item->get_product(); ?> - - - + + get_purchase_note() ) ) : ?> - + diff --git a/templates/emails/email-styles.php b/templates/emails/email-styles.php index 55f640304cd..1a8b3917aba 100644 --- a/templates/emails/email-styles.php +++ b/templates/emails/email-styles.php @@ -18,8 +18,6 @@ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly -global $_align; - // Load colors $bg = get_option( 'woocommerce_email_background_color' ); $body = get_option( 'woocommerce_email_body_background_color' ); @@ -106,7 +104,7 @@ $text_lighter_20 = wc_hex_lighter( $text, 20 ); font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; font-size: 14px; line-height: 150%; - text-align: ; + text-align: ; } .td { @@ -135,7 +133,7 @@ h1 { font-weight: 300; line-height: 150%; margin: 0; - text-align: ; + text-align: ; text-shadow: 0 1px 0 ; -webkit-font-smoothing: antialiased; } @@ -148,7 +146,7 @@ h2 { font-weight: bold; line-height: 130%; margin: 16px 0 8px; - text-align: ; + text-align: ; } h3 { @@ -159,7 +157,7 @@ h3 { font-weight: bold; line-height: 130%; margin: 16px 0 8px; - text-align: ; + text-align: ; } a { From e13ba402548a1168e555f386ef3ff65b8cbb642a Mon Sep 17 00:00:00 2001 From: refael iliaguyev Date: Mon, 20 Mar 2017 22:26:20 +0200 Subject: [PATCH 039/525] use variable for aligning --- templates/emails/email-addresses.php | 6 ++++-- templates/emails/email-order-details.php | 12 +++++++----- templates/emails/email-order-items.php | 10 ++++++---- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/templates/emails/email-addresses.php b/templates/emails/email-addresses.php index 091964c2909..01d961d2671 100644 --- a/templates/emails/email-addresses.php +++ b/templates/emails/email-addresses.php @@ -20,15 +20,17 @@ if ( ! defined( 'ABSPATH' ) ) { exit; } +$text_align = is_rtl() ? 'right' : 'left'; + ?>
    ; vertical-align:middle; border: 1px solid #eee; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif; word-wrap:break-word;">' . esc_attr__( 'Product image', 'woocommerce' ) . '', $item ); + echo apply_filters( 'woocommerce_order_item_thumbnail', '
    ' . esc_attr__( 'Product image', 'woocommerce' ) . '
    ', $item ); } // Product name @@ -55,15 +53,15 @@ foreach ( $items as $item_id => $item ) : do_action( 'woocommerce_order_item_meta_end', $item_id, $item, $order, $plain_text ); ?>
    get_quantity(), $item ); ?>get_formatted_line_subtotal( $item ); ?>get_quantity(), $item ); ?>get_formatted_line_subtotal( $item ); ?>
    - needs_shipping_address() && ( $shipping = $order->get_formatted_shipping_address() ) ) : ?> -
    +

    get_formatted_billing_address(); ?>

    +

    diff --git a/templates/emails/email-order-details.php b/templates/emails/email-order-details.php index 0b099b33fb6..b586dff9fc4 100644 --- a/templates/emails/email-order-details.php +++ b/templates/emails/email-order-details.php @@ -20,6 +20,8 @@ if ( ! defined( 'ABSPATH' ) ) { exit; } +$text_align = is_rtl() ? 'right' : 'left'; + do_action( 'woocommerce_email_before_order_table', $order, $sent_to_admin, $plain_text, $email ); ?> @@ -31,9 +33,9 @@ do_action( 'woocommerce_email_before_order_table', $order, $sent_to_admin, $plai - - - + + + @@ -52,8 +54,8 @@ do_action( 'woocommerce_email_before_order_table', $order, $sent_to_admin, $plai foreach ( $totals as $total ) { $i++; ?> - - + + $item ) : if ( apply_filters( 'woocommerce_order_item_visible', true, $item ) ) { $product = $item->get_product(); ?> - - - + + get_purchase_note() ) ) : ?> - + From 9724bcd698808c83be2a43183f900faa9cf494f2 Mon Sep 17 00:00:00 2001 From: Jeroen Sormani Date: Mon, 20 Mar 2017 21:42:57 +0100 Subject: [PATCH 040/525] Change filter 'get_order_item_classname' to have $id --- includes/class-wc-order-factory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/class-wc-order-factory.php b/includes/class-wc-order-factory.php index a6144f69ff4..ba5edc75e35 100644 --- a/includes/class-wc-order-factory.php +++ b/includes/class-wc-order-factory.php @@ -101,7 +101,7 @@ class WC_Order_Factory { $classname = 'WC_Order_Item_Tax'; break; default : - $classname = apply_filters( 'woocommerce_get_order_item_classname', $classname, $item_type, $item_id ); + $classname = apply_filters( 'woocommerce_get_order_item_classname', $classname, $item_type, $id ); break; } From c0a01a1fe4dda565cb98f735d37999a0b14d2606 Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Mon, 20 Mar 2017 15:14:41 -0700 Subject: [PATCH 041/525] Dont set empty strings as tax totals --- includes/class-wc-order-item-tax.php | 4 +- .../unit-tests/order-items/order-item-tax.php | 49 +++++++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 tests/unit-tests/order-items/order-item-tax.php diff --git a/includes/class-wc-order-item-tax.php b/includes/class-wc-order-item-tax.php index 821c2e68edd..890a3cfea13 100644 --- a/includes/class-wc-order-item-tax.php +++ b/includes/class-wc-order-item-tax.php @@ -77,7 +77,7 @@ class WC_Order_Item_Tax extends WC_Order_Item { * @throws WC_Data_Exception */ public function set_tax_total( $value ) { - $this->set_prop( 'tax_total', wc_format_decimal( $value ) ); + $this->set_prop( 'tax_total', $value ? wc_format_decimal( $value ) : 0 ); } /** @@ -86,7 +86,7 @@ class WC_Order_Item_Tax extends WC_Order_Item { * @throws WC_Data_Exception */ public function set_shipping_tax_total( $value ) { - $this->set_prop( 'shipping_tax_total', wc_format_decimal( $value ) ); + $this->set_prop( 'shipping_tax_total', $value ? wc_format_decimal( $value ) : 0 ); } /** diff --git a/tests/unit-tests/order-items/order-item-tax.php b/tests/unit-tests/order-items/order-item-tax.php new file mode 100644 index 00000000000..273bd9d1499 --- /dev/null +++ b/tests/unit-tests/order-items/order-item-tax.php @@ -0,0 +1,49 @@ +assertEquals( 0, $item->get_tax_total() ); + + $item->set_tax_total( "1.50" ); + $this->assertEquals( "1.50", $item->get_tax_total() ); + + $item->set_tax_total( "" ); + $this->assertEquals( 0, $item->get_tax_total() ); + + $item->set_tax_total( 10.99 ); + $this->assertEquals( "10.99", $item->get_tax_total() ); + } + + /** + * Test set_tax_total/get_tax_total. + * + * @since 3.0.0 + */ + function test_set_get_shipping_tax_totals() { + + $item = new WC_Order_Item_Tax; + $this->assertEquals( 0, $item->get_shipping_tax_total() ); + + $item->set_shipping_tax_total( "1.50" ); + $this->assertEquals( "1.50", $item->get_shipping_tax_total() ); + + $item->set_shipping_tax_total( "" ); + $this->assertEquals( 0, $item->get_shipping_tax_total() ); + + $item->set_shipping_tax_total( 10.99 ); + $this->assertEquals( "10.99", $item->get_shipping_tax_total() ); + } +} From 3a2f3586ed449d453c45eb58d939c94d9c5705c7 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 21 Mar 2017 11:20:39 +0000 Subject: [PATCH 042/525] get_tax_refunded_for_item ignoring tax id Fixes #13681 --- includes/class-wc-order-item-product.php | 2 +- includes/class-wc-order.php | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/includes/class-wc-order-item-product.php b/includes/class-wc-order-item-product.php index f1c2e5d553b..be080cace2f 100644 --- a/includes/class-wc-order-item-product.php +++ b/includes/class-wc-order-item-product.php @@ -298,7 +298,7 @@ class WC_Order_Item_Product extends WC_Order_Item { } /** - * Get fee taxes. + * Get taxes. * * @param string $context * @return array diff --git a/includes/class-wc-order.php b/includes/class-wc-order.php index 28c58f1806f..2b684170987 100644 --- a/includes/class-wc-order.php +++ b/includes/class-wc-order.php @@ -1677,7 +1677,7 @@ class WC_Order extends WC_Abstract_Order { } /** - * Get the refunded amount for a line item. + * Get the refunded tax amount for a line item. * * @param int $item_id ID of the item we're checking * @param int $tax_id ID of the tax we're checking @@ -1688,8 +1688,11 @@ class WC_Order extends WC_Abstract_Order { $total = 0; foreach ( $this->get_refunds() as $refund ) { foreach ( $refund->get_items( $item_type ) as $refunded_item ) { - if ( absint( $refunded_item->get_meta( '_refunded_item_id' ) ) === $item_id ) { - $total += $refunded_item->get_total_tax(); + $refunded_item_id = (int) $refunded_item->get_meta( '_refunded_item_id' ); + if ( $refunded_item_id === $item_id ) { + $taxes = $refunded_item->get_taxes(); + $total += isset( $taxes['total'][ $tax_id ] ) ? $taxes['total'][ $tax_id ] : 0; + break; } } } From 317ca0965ee9acb758e76c133af53124969e005b Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 21 Mar 2017 11:30:57 +0000 Subject: [PATCH 043/525] Use display value when searching the title Fixes #13682 --- includes/class-wc-order-item.php | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/includes/class-wc-order-item.php b/includes/class-wc-order-item.php index 6c7c30a0355..1da9eefb1d8 100644 --- a/includes/class-wc-order-item.php +++ b/includes/class-wc-order-item.php @@ -194,14 +194,6 @@ class WC_Order_Item extends WC_Data implements ArrayAccess { $meta->key = rawurldecode( (string) $meta->key ); $meta->value = rawurldecode( (string) $meta->value ); - - // Skip items with values already in the product details area of the product name - $value_in_product_name_regex = "/–.*" . preg_quote( $meta->value, '/' ) . "/i"; - - if ( $product && preg_match( $value_in_product_name_regex, $product->get_name() ) ) { - continue; - } - $attribute_key = str_replace( 'attribute_', '', $meta->key ); $display_key = wc_attribute_label( $attribute_key, $product ); $display_value = $meta->value; @@ -213,6 +205,13 @@ class WC_Order_Item extends WC_Data implements ArrayAccess { } } + // Skip items with values already in the product details area of the product name + $value_in_product_name_regex = "/–.*" . preg_quote( $display_value, '/' ) . "/i"; + + if ( $product && preg_match( $value_in_product_name_regex, $product->get_name() ) ) { + continue; + } + $formatted_meta[ $meta->id ] = (object) array( 'key' => $meta->key, 'value' => $meta->value, From 7bea5db423c224ffb82f60e5c27fb56dd07343bd Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 21 Mar 2017 12:54:04 +0000 Subject: [PATCH 044/525] Use h2 Fixes #13660 --- includes/wc-template-functions.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/includes/wc-template-functions.php b/includes/wc-template-functions.php index 5cac73724de..3d13b869fe1 100644 --- a/includes/wc-template-functions.php +++ b/includes/wc-template-functions.php @@ -580,9 +580,7 @@ if ( ! function_exists( 'woocommerce_template_loop_product_title' ) ) { * Show the product title in the product loop. By default this is an H3. */ function woocommerce_template_loop_product_title() { - $tag = is_product_taxonomy() || is_shop() ? 'h2' : 'h3'; - - echo '<' . $tag . ' class="woocommerce-loop-product__title">' . get_the_title() . ''; + echo '

    ' . get_the_title() . '

    '; } } if ( ! function_exists( 'woocommerce_template_loop_category_title' ) ) { From 18c22a885d930a0c3289294b3688d9f287b6139c Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 21 Mar 2017 13:04:29 +0000 Subject: [PATCH 045/525] Cleanup of wc_cart_totals_coupon_html #13674 --- includes/wc-cart-functions.php | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/includes/wc-cart-functions.php b/includes/wc-cart-functions.php index 540baeabb5f..83f0838f643 100644 --- a/includes/wc-cart-functions.php +++ b/includes/wc-cart-functions.php @@ -259,9 +259,8 @@ function wc_cart_totals_coupon_label( $coupon, $echo = true ) { } /** - * Get a coupon value. + * Get coupon display HTML. * - * @access public * @param string $coupon */ function wc_cart_totals_coupon_html( $coupon ) { @@ -269,25 +268,16 @@ function wc_cart_totals_coupon_html( $coupon ) { $coupon = new WC_Coupon( $coupon ); } - $value = array(); - if ( $amount = WC()->cart->get_coupon_discount_amount( $coupon->get_code(), WC()->cart->display_cart_ex_tax ) ) { - $discount_html = '-' . wc_price( $amount ); - } else { - $discount_html = ''; + $discount_amount_html = '-' . wc_price( $amount ); + } elseif ( $coupon->get_free_shipping() ) { + $discount_amount_html = __( 'Free shipping coupon', 'woocommerce' ); } - $value[] = apply_filters( 'woocommerce_coupon_discount_amount_html', $discount_html, $coupon ); + $discount_amount_html = apply_filters( 'woocommerce_coupon_discount_amount_html', $discount_amount_html, $coupon ); + $coupon_html = $discount_amount_html . ' ' . __( '[Remove]', 'woocommerce' ) . ''; - if ( $coupon->get_free_shipping() ) { - $value[] = __( 'Free shipping coupon', 'woocommerce' ); - } - - // get rid of empty array elements - $value = array_filter( $value ); - $value = implode( ', ', $value ) . ' ' . __( '[Remove]', 'woocommerce' ) . ''; - - echo apply_filters( 'woocommerce_cart_totals_coupon_html', $value, $coupon ); + echo wp_kses_post( apply_filters( 'woocommerce_cart_totals_coupon_html', $coupon_html, $coupon, $discount_amount_html ) ); } /** From 83ca80d466952114287212ec0d381fc2b708941a Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 21 Mar 2017 13:14:51 +0000 Subject: [PATCH 046/525] Spacing and rules --- includes/api/v1/class-wc-rest-coupons-controller.php | 2 +- phpcs.ruleset.xml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/includes/api/v1/class-wc-rest-coupons-controller.php b/includes/api/v1/class-wc-rest-coupons-controller.php index 5b38019fcdf..2e7bc5c5602 100644 --- a/includes/api/v1/class-wc-rest-coupons-controller.php +++ b/includes/api/v1/class-wc-rest-coupons-controller.php @@ -164,7 +164,7 @@ class WC_REST_Coupons_V1_Controller extends WC_REST_Posts_Controller { foreach ( $format_date as $key ) { $_data[ $key ] = $_data[ $key ] ? wc_rest_prepare_date_response( $_data[ $key ], false ) : null; } - foreach( $format_date_utc as $key ) { + foreach ( $format_date_utc as $key ) { $_data[ $key ] = $_data[ $key ] ? wc_rest_prepare_date_response( $_data[ $key ] ) : null; } diff --git a/phpcs.ruleset.xml b/phpcs.ruleset.xml index 13e8412f1e7..ea69b6c3769 100644 --- a/phpcs.ruleset.xml +++ b/phpcs.ruleset.xml @@ -189,5 +189,6 @@ + From e2c73c227759794dea7196ac8547b91401aedebe Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 21 Mar 2017 13:23:35 +0000 Subject: [PATCH 047/525] Tweak labels for customer reg Closes #13676 --- includes/admin/settings/class-wc-settings-accounts.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/includes/admin/settings/class-wc-settings-accounts.php b/includes/admin/settings/class-wc-settings-accounts.php index 7af52dd3693..ea747d3d89e 100644 --- a/includes/admin/settings/class-wc-settings-accounts.php +++ b/includes/admin/settings/class-wc-settings-accounts.php @@ -58,8 +58,8 @@ class WC_Settings_Accounts extends WC_Settings_Page { array( 'title' => '', 'type' => 'title', 'id' => 'account_registration_options' ), array( - 'title' => __( 'Enable registration', 'woocommerce' ), - 'desc' => __( 'Enable registration on the "Checkout" page.', 'woocommerce' ), + 'title' => __( 'Customer registration', 'woocommerce' ), + 'desc' => __( 'Enable customer registration on the "Checkout" page.', 'woocommerce' ), 'id' => 'woocommerce_enable_signup_and_login_from_checkout', 'default' => 'yes', 'type' => 'checkbox', @@ -68,7 +68,7 @@ class WC_Settings_Accounts extends WC_Settings_Page { ), array( - 'desc' => __( 'Enable registration on the "My account" page.', 'woocommerce' ), + 'desc' => __( 'Enable customer registration on the "My account" page.', 'woocommerce' ), 'id' => 'woocommerce_enable_myaccount_registration', 'default' => 'no', 'type' => 'checkbox', From e57aa55894a38fc3cd963e6afcea2a9aad90d3de Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 21 Mar 2017 13:24:57 +0000 Subject: [PATCH 048/525] POT file update --- i18n/languages/woocommerce.pot | 808 ++++++++++++++++----------------- 1 file changed, 403 insertions(+), 405 deletions(-) diff --git a/i18n/languages/woocommerce.pot b/i18n/languages/woocommerce.pot index 3448895dc28..da94c2339a1 100644 --- a/i18n/languages/woocommerce.pot +++ b/i18n/languages/woocommerce.pot @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: WooCommerce 3.0.0-rc.1\n" "Report-Msgid-Bugs-To: https://github.com/woocommerce/woocommerce/issues\n" -"POT-Creation-Date: 2017-03-15 18:57:39+00:00\n" +"POT-Creation-Date: 2017-03-21 13:24:32+00:00\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -5218,7 +5218,7 @@ msgid "Read more" msgstr "" #: includes/abstracts/abstract-wc-product.php:1853 -#: includes/admin/class-wc-admin-post-types.php:432 +#: includes/admin/class-wc-admin-post-types.php:433 #: includes/admin/class-wc-admin-reports.php:100 #: includes/admin/reports/class-wc-report-stock.php:110 #: includes/wc-product-functions.php:803 @@ -5311,8 +5311,8 @@ msgstr "" #: includes/abstracts/abstract-wc-rest-crud-controller.php:225 #: includes/abstracts/abstract-wc-rest-crud-controller.php:385 #: includes/abstracts/abstract-wc-rest-posts-controller.php:148 -#: includes/api/class-wc-rest-product-variations-controller.php:461 -#: includes/api/class-wc-rest-products-controller.php:1246 +#: includes/api/class-wc-rest-product-variations-controller.php:459 +#: includes/api/class-wc-rest-products-controller.php:1264 msgid "Invalid ID." msgstr "" @@ -5330,8 +5330,8 @@ msgstr "" #: includes/abstracts/abstract-wc-rest-crud-controller.php:402 #: includes/abstracts/abstract-wc-rest-posts-controller.php:433 -#: includes/api/class-wc-rest-product-variations-controller.php:478 -#: includes/api/class-wc-rest-products-controller.php:1267 +#: includes/api/class-wc-rest-product-variations-controller.php:476 +#: includes/api/class-wc-rest-products-controller.php:1285 #: includes/api/v1/class-wc-rest-products-controller.php:1658 #. translators: %s: post type msgid "Sorry, you are not allowed to delete %s." @@ -5339,8 +5339,8 @@ msgstr "" #: includes/abstracts/abstract-wc-rest-crud-controller.php:416 #: includes/abstracts/abstract-wc-rest-posts-controller.php:446 -#: includes/api/class-wc-rest-product-variations-controller.php:492 -#: includes/api/class-wc-rest-products-controller.php:1294 +#: includes/api/class-wc-rest-product-variations-controller.php:490 +#: includes/api/class-wc-rest-products-controller.php:1312 #: includes/api/v1/class-wc-rest-products-controller.php:1685 #. translators: %s: post type msgid "The %s does not support trashing." @@ -5348,8 +5348,8 @@ msgstr "" #: includes/abstracts/abstract-wc-rest-crud-controller.php:423 #: includes/abstracts/abstract-wc-rest-posts-controller.php:452 -#: includes/api/class-wc-rest-product-variations-controller.php:499 -#: includes/api/class-wc-rest-products-controller.php:1301 +#: includes/api/class-wc-rest-product-variations-controller.php:497 +#: includes/api/class-wc-rest-products-controller.php:1319 #: includes/api/v1/class-wc-rest-products-controller.php:1691 #. translators: %s: post type msgid "The %s has already been deleted." @@ -5357,8 +5357,8 @@ msgstr "" #: includes/abstracts/abstract-wc-rest-crud-controller.php:433 #: includes/abstracts/abstract-wc-rest-posts-controller.php:462 -#: includes/api/class-wc-rest-product-variations-controller.php:509 -#: includes/api/class-wc-rest-products-controller.php:1311 +#: includes/api/class-wc-rest-product-variations-controller.php:507 +#: includes/api/class-wc-rest-products-controller.php:1329 #: includes/api/v1/class-wc-rest-order-notes-controller.php:313 #: includes/api/v1/class-wc-rest-products-controller.php:1702 #: includes/api/v1/class-wc-rest-webhooks-controller.php:332 @@ -5481,8 +5481,8 @@ msgstr "" #: includes/abstracts/abstract-wc-rest-posts-controller.php:146 #: includes/abstracts/abstract-wc-rest-posts-controller.php:253 -#: includes/api/class-wc-rest-products-controller.php:658 -#: includes/api/class-wc-rest-products-controller.php:1250 +#: includes/api/class-wc-rest-products-controller.php:676 +#: includes/api/class-wc-rest-products-controller.php:1268 #: includes/api/v1/class-wc-rest-products-controller.php:1639 msgid "" "To manipulate product variations you should use the " @@ -5541,9 +5541,9 @@ msgstr "" #: includes/api/class-wc-rest-orders-controller.php:82 #: includes/api/class-wc-rest-orders-controller.php:793 #: includes/api/class-wc-rest-payment-gateways-controller.php:53 -#: includes/api/class-wc-rest-product-variations-controller.php:596 +#: includes/api/class-wc-rest-product-variations-controller.php:594 #: includes/api/class-wc-rest-products-controller.php:83 -#: includes/api/class-wc-rest-products-controller.php:1345 +#: includes/api/class-wc-rest-products-controller.php:1363 #: includes/api/class-wc-rest-settings-options-controller.php:81 #: includes/api/class-wc-rest-shipping-methods-controller.php:53 #: includes/api/class-wc-rest-shipping-zones-controller.php:269 @@ -5689,7 +5689,7 @@ msgid "keys" msgstr "" #: includes/admin/class-wc-admin-api-keys-table-list.php:40 -#: includes/admin/class-wc-admin-post-types.php:285 +#: includes/admin/class-wc-admin-post-types.php:286 #: includes/admin/class-wc-admin-setup-wizard.php:225 #: includes/admin/meta-boxes/views/html-variation-admin.php:307 #: includes/admin/settings/class-wc-settings-shipping.php:339 @@ -5700,7 +5700,7 @@ msgstr "" #: includes/gateways/cod/class-wc-gateway-cod.php:82 #: includes/gateways/paypal/includes/settings-paypal.php:25 #: includes/gateways/simplify-commerce/class-wc-gateway-simplify-commerce.php:204 -#: includes/wc-template-functions.php:1129 +#: includes/wc-template-functions.php:1122 #: templates/single-product/tabs/description.php:25 msgid "Description" msgstr "" @@ -5953,7 +5953,7 @@ msgstr "" #: includes/admin/class-wc-admin-attributes.php:391 #: includes/admin/class-wc-admin-attributes.php:454 #: includes/admin/class-wc-admin-attributes.php:495 -#: includes/admin/class-wc-admin-post-types.php:253 +#: includes/admin/class-wc-admin-post-types.php:254 #: includes/admin/class-wc-admin-setup-wizard.php:465 #: includes/admin/class-wc-admin-webhooks-table-list.php:40 #: includes/admin/meta-boxes/views/html-product-attribute.php:12 @@ -6032,8 +6032,8 @@ msgid "" msgstr "" #: includes/admin/class-wc-admin-assets.php:260 -#: includes/admin/class-wc-admin-post-types.php:266 -#: includes/admin/class-wc-admin-post-types.php:1791 +#: includes/admin/class-wc-admin-post-types.php:267 +#: includes/admin/class-wc-admin-post-types.php:1792 #: includes/admin/views/html-bulk-edit-product.php:199 #: includes/admin/views/html-quick-edit-product.php:157 msgid "Featured" @@ -6141,7 +6141,7 @@ msgstr "" #: includes/admin/class-wc-admin-attributes.php:307 #: includes/admin/class-wc-admin-attributes.php:371 #: includes/admin/class-wc-admin-attributes.php:472 -#: includes/admin/class-wc-admin-post-types.php:267 +#: includes/admin/class-wc-admin-post-types.php:268 msgid "Type" msgstr "" @@ -6199,7 +6199,7 @@ msgid "Terms" msgstr "" #: includes/admin/class-wc-admin-attributes.php:384 -#: includes/admin/class-wc-admin-post-types.php:1795 +#: includes/admin/class-wc-admin-post-types.php:1796 #: includes/admin/class-wc-admin-webhooks-table-list.php:99 #: includes/admin/meta-boxes/class-wc-meta-box-order-data.php:274 #: includes/admin/meta-boxes/class-wc-meta-box-order-data.php:364 @@ -6849,7 +6849,7 @@ msgid "" msgstr "" #: includes/admin/class-wc-admin-pointers.php:60 -#: includes/admin/class-wc-admin-post-types.php:1734 +#: includes/admin/class-wc-admin-post-types.php:1735 msgid "Product name" msgstr "" @@ -6974,55 +6974,55 @@ msgid "" "publish your product to your store." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:132 -msgid "Product updated. View Product" -msgstr "" - #: includes/admin/class-wc-admin-post-types.php:133 -#: includes/admin/class-wc-admin-post-types.php:153 -#: includes/admin/class-wc-admin-post-types.php:171 -msgid "Custom field updated." +msgid "Product updated. View Product" msgstr "" #: includes/admin/class-wc-admin-post-types.php:134 #: includes/admin/class-wc-admin-post-types.php:154 #: includes/admin/class-wc-admin-post-types.php:172 -msgid "Custom field deleted." +msgid "Custom field updated." msgstr "" #: includes/admin/class-wc-admin-post-types.php:135 +#: includes/admin/class-wc-admin-post-types.php:155 +#: includes/admin/class-wc-admin-post-types.php:173 +msgid "Custom field deleted." +msgstr "" + +#: includes/admin/class-wc-admin-post-types.php:136 msgid "Product updated." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:137 +#: includes/admin/class-wc-admin-post-types.php:138 #. translators: %s: revision title msgid "Product restored to revision from %s" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:139 +#: includes/admin/class-wc-admin-post-types.php:140 #. translators: %s: product url msgid "Product published. View Product" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:140 +#: includes/admin/class-wc-admin-post-types.php:141 msgid "Product saved." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:142 +#: includes/admin/class-wc-admin-post-types.php:143 #. translators: %s: product url msgid "Product submitted. Preview product" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:144 +#: includes/admin/class-wc-admin-post-types.php:145 #. translators: 1: date 2: product url msgid "" "Product scheduled for: %1$s. Preview product" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:145 -#: includes/admin/class-wc-admin-post-types.php:163 -#: includes/admin/class-wc-admin-post-types.php:181 +#: includes/admin/class-wc-admin-post-types.php:146 +#: includes/admin/class-wc-admin-post-types.php:164 +#: includes/admin/class-wc-admin-post-types.php:182 #: includes/admin/settings/views/html-webhook-log.php:10 #: includes/admin/settings/views/html-webhooks-edit.php:142 #: includes/admin/settings/views/html-webhooks-edit.php:151 @@ -7030,189 +7030,189 @@ msgstr "" msgid "M j, Y @ G:i" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:147 +#: includes/admin/class-wc-admin-post-types.php:148 #. translators: %s: product url msgid "Product draft updated. Preview product" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:152 -#: includes/admin/class-wc-admin-post-types.php:155 -#: includes/admin/class-wc-admin-post-types.php:158 +#: includes/admin/class-wc-admin-post-types.php:153 +#: includes/admin/class-wc-admin-post-types.php:156 +#: includes/admin/class-wc-admin-post-types.php:159 msgid "Order updated." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:157 +#: includes/admin/class-wc-admin-post-types.php:158 #. translators: %s: revision title msgid "Order restored to revision from %s" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:159 +#: includes/admin/class-wc-admin-post-types.php:160 msgid "Order saved." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:160 +#: includes/admin/class-wc-admin-post-types.php:161 msgid "Order submitted." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:162 +#: includes/admin/class-wc-admin-post-types.php:163 #. translators: %s: date msgid "Order scheduled for: %1$s." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:164 +#: includes/admin/class-wc-admin-post-types.php:165 msgid "Order draft updated." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:165 +#: includes/admin/class-wc-admin-post-types.php:166 msgid "Order updated and email sent." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:170 -#: includes/admin/class-wc-admin-post-types.php:173 -#: includes/admin/class-wc-admin-post-types.php:176 +#: includes/admin/class-wc-admin-post-types.php:171 +#: includes/admin/class-wc-admin-post-types.php:174 +#: includes/admin/class-wc-admin-post-types.php:177 msgid "Coupon updated." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:175 +#: includes/admin/class-wc-admin-post-types.php:176 #. translators: %s: revision title msgid "Coupon restored to revision from %s" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:177 +#: includes/admin/class-wc-admin-post-types.php:178 msgid "Coupon saved." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:178 +#: includes/admin/class-wc-admin-post-types.php:179 msgid "Coupon submitted." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:180 +#: includes/admin/class-wc-admin-post-types.php:181 #. translators: %s: date msgid "Coupon scheduled for: %1$s." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:182 +#: includes/admin/class-wc-admin-post-types.php:183 msgid "Coupon draft updated." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:198 +#: includes/admin/class-wc-admin-post-types.php:199 #. translators: %s: product count msgid "%s product updated." msgid_plural "%s products updated." msgstr[0] "" msgstr[1] "" -#: includes/admin/class-wc-admin-post-types.php:200 +#: includes/admin/class-wc-admin-post-types.php:201 #. translators: %s: product count msgid "%s product not updated, somebody is editing it." msgid_plural "%s products not updated, somebody is editing them." msgstr[0] "" msgstr[1] "" -#: includes/admin/class-wc-admin-post-types.php:202 +#: includes/admin/class-wc-admin-post-types.php:203 #. translators: %s: product count msgid "%s product permanently deleted." msgid_plural "%s products permanently deleted." msgstr[0] "" msgstr[1] "" -#: includes/admin/class-wc-admin-post-types.php:204 +#: includes/admin/class-wc-admin-post-types.php:205 #. translators: %s: product count msgid "%s product moved to the Trash." msgid_plural "%s products moved to the Trash." msgstr[0] "" msgstr[1] "" -#: includes/admin/class-wc-admin-post-types.php:206 +#: includes/admin/class-wc-admin-post-types.php:207 #. translators: %s: product count msgid "%s product restored from the Trash." msgid_plural "%s products restored from the Trash." msgstr[0] "" msgstr[1] "" -#: includes/admin/class-wc-admin-post-types.php:211 +#: includes/admin/class-wc-admin-post-types.php:212 #. translators: %s: order count msgid "%s order updated." msgid_plural "%s orders updated." msgstr[0] "" msgstr[1] "" -#: includes/admin/class-wc-admin-post-types.php:213 +#: includes/admin/class-wc-admin-post-types.php:214 #. translators: %s: order count msgid "%s order not updated, somebody is editing it." msgid_plural "%s orders not updated, somebody is editing them." msgstr[0] "" msgstr[1] "" -#: includes/admin/class-wc-admin-post-types.php:215 +#: includes/admin/class-wc-admin-post-types.php:216 #. translators: %s: order count msgid "%s order permanently deleted." msgid_plural "%s orders permanently deleted." msgstr[0] "" msgstr[1] "" -#: includes/admin/class-wc-admin-post-types.php:217 +#: includes/admin/class-wc-admin-post-types.php:218 #. translators: %s: order count msgid "%s order moved to the Trash." msgid_plural "%s orders moved to the Trash." msgstr[0] "" msgstr[1] "" -#: includes/admin/class-wc-admin-post-types.php:219 +#: includes/admin/class-wc-admin-post-types.php:220 #. translators: %s: order count msgid "%s order restored from the Trash." msgid_plural "%s orders restored from the Trash." msgstr[0] "" msgstr[1] "" -#: includes/admin/class-wc-admin-post-types.php:224 +#: includes/admin/class-wc-admin-post-types.php:225 #. translators: %s: coupon count msgid "%s coupon updated." msgid_plural "%s coupons updated." msgstr[0] "" msgstr[1] "" -#: includes/admin/class-wc-admin-post-types.php:226 +#: includes/admin/class-wc-admin-post-types.php:227 #. translators: %s: coupon count msgid "%s coupon not updated, somebody is editing it." msgid_plural "%s coupons not updated, somebody is editing them." msgstr[0] "" msgstr[1] "" -#: includes/admin/class-wc-admin-post-types.php:228 +#: includes/admin/class-wc-admin-post-types.php:229 #. translators: %s: coupon count msgid "%s coupon permanently deleted." msgid_plural "%s coupons permanently deleted." msgstr[0] "" msgstr[1] "" -#: includes/admin/class-wc-admin-post-types.php:230 +#: includes/admin/class-wc-admin-post-types.php:231 #. translators: %s: coupon count msgid "%s coupon moved to the Trash." msgid_plural "%s coupons moved to the Trash." msgstr[0] "" msgstr[1] "" -#: includes/admin/class-wc-admin-post-types.php:232 +#: includes/admin/class-wc-admin-post-types.php:233 #. translators: %s: coupon count msgid "%s coupon restored from the Trash." msgid_plural "%s coupons restored from the Trash." msgstr[0] "" msgstr[1] "" -#: includes/admin/class-wc-admin-post-types.php:252 +#: includes/admin/class-wc-admin-post-types.php:253 #: includes/admin/class-wc-admin-taxonomies.php:319 msgid "Image" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:256 +#: includes/admin/class-wc-admin-post-types.php:257 #: includes/admin/meta-boxes/views/html-product-data-inventory.php:9 #: includes/admin/meta-boxes/views/html-variation-admin.php:64 #: includes/admin/views/html-quick-edit-product.php:22 msgid "SKU" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:260 +#: includes/admin/class-wc-admin-post-types.php:261 #: includes/admin/class-wc-admin-reports.php:91 #: includes/admin/meta-boxes/views/html-product-data-variations.php:60 #: includes/admin/reports/class-wc-report-stock.php:34 @@ -7220,26 +7220,26 @@ msgstr "" msgid "Stock" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:263 +#: includes/admin/class-wc-admin-post-types.php:264 #: includes/admin/views/html-bulk-edit-product.php:21 #: includes/admin/views/html-quick-edit-product.php:33 #: includes/widgets/class-wc-widget-products.php:56 templates/cart/cart.php:36 -#: templates/cart/cart.php:96 templates/emails/email-order-details.php:36 +#: templates/cart/cart.php:96 templates/emails/email-order-details.php:38 msgid "Price" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:264 +#: includes/admin/class-wc-admin-post-types.php:265 #: includes/admin/reports/class-wc-report-sales-by-category.php:193 #: includes/class-wc-post-types.php:81 msgid "Categories" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:265 +#: includes/admin/class-wc-admin-post-types.php:266 msgid "Tags" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:268 -#: includes/admin/class-wc-admin-post-types.php:307 +#: includes/admin/class-wc-admin-post-types.php:269 +#: includes/admin/class-wc-admin-post-types.php:308 #: includes/admin/reports/class-wc-report-coupon-usage.php:351 #: includes/admin/reports/class-wc-report-customers.php:227 #: includes/admin/reports/class-wc-report-sales-by-category.php:264 @@ -7253,33 +7253,33 @@ msgstr "" msgid "Date" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:282 +#: includes/admin/class-wc-admin-post-types.php:283 msgid "Code" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:283 +#: includes/admin/class-wc-admin-post-types.php:284 msgid "Coupon type" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:284 +#: includes/admin/class-wc-admin-post-types.php:285 #: includes/admin/meta-boxes/class-wc-meta-box-coupon-data.php:78 #: includes/admin/reports/class-wc-report-sales-by-date.php:636 msgid "Coupon amount" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:286 +#: includes/admin/class-wc-admin-post-types.php:287 msgid "Product IDs" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:287 +#: includes/admin/class-wc-admin-post-types.php:288 msgid "Usage / Limit" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:288 +#: includes/admin/class-wc-admin-post-types.php:289 msgid "Expiry date" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:301 +#: includes/admin/class-wc-admin-post-types.php:302 #: includes/admin/class-wc-admin-webhooks-table-list.php:41 #: includes/admin/meta-boxes/views/html-product-data-variations.php:44 #: includes/admin/settings/views/html-webhook-log.php:25 @@ -7288,31 +7288,31 @@ msgstr "" msgid "Status" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:302 +#: includes/admin/class-wc-admin-post-types.php:303 #: includes/admin/meta-boxes/class-wc-meta-box-order-data.php:165 #: includes/gateways/paypal/includes/class-wc-gateway-paypal-request.php:204 #: includes/wc-account-functions.php:178 templates/myaccount/my-orders.php:13 msgid "Order" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:303 +#: includes/admin/class-wc-admin-post-types.php:304 msgid "Billing" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:304 +#: includes/admin/class-wc-admin-post-types.php:305 msgid "Ship to" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:305 +#: includes/admin/class-wc-admin-post-types.php:306 msgid "Customer message" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:306 +#: includes/admin/class-wc-admin-post-types.php:307 #: includes/class-wc-checkout.php:194 msgid "Order notes" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:308 +#: includes/admin/class-wc-admin-post-types.php:309 #: includes/admin/meta-boxes/views/html-order-items.php:32 #: includes/admin/reports/class-wc-report-taxes-by-code.php:177 #: includes/wc-account-functions.php:181 templates/cart/cart-totals.php:92 @@ -7323,52 +7323,52 @@ msgstr "" msgid "Total" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:309 +#: includes/admin/class-wc-admin-post-types.php:310 #: includes/admin/meta-boxes/class-wc-meta-box-order-actions.php:43 #: includes/admin/reports/class-wc-report-customer-list.php:215 #: includes/admin/reports/class-wc-report-stock.php:168 msgid "Actions" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:382 +#: includes/admin/class-wc-admin-post-types.php:383 msgid "Grouped" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:384 +#: includes/admin/class-wc-admin-post-types.php:385 msgid "External/Affiliate" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:388 -#: includes/admin/class-wc-admin-post-types.php:1492 +#: includes/admin/class-wc-admin-post-types.php:389 +#: includes/admin/class-wc-admin-post-types.php:1493 #: includes/admin/meta-boxes/class-wc-meta-box-product-data.php:59 #: includes/admin/meta-boxes/views/html-variation-admin.php:81 msgid "Virtual" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:390 -#: includes/admin/class-wc-admin-post-types.php:1484 +#: includes/admin/class-wc-admin-post-types.php:391 +#: includes/admin/class-wc-admin-post-types.php:1485 #: includes/admin/meta-boxes/class-wc-meta-box-product-data.php:66 #: includes/admin/meta-boxes/views/html-variation-admin.php:77 msgid "Downloadable" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:392 +#: includes/admin/class-wc-admin-post-types.php:393 msgid "Simple" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:395 +#: includes/admin/class-wc-admin-post-types.php:396 msgid "Variable" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:419 +#: includes/admin/class-wc-admin-post-types.php:420 msgid "Toggle featured" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:421 -#: includes/admin/class-wc-admin-post-types.php:538 -#: includes/admin/class-wc-admin-post-types.php:586 -#: includes/admin/class-wc-admin-post-types.php:589 -#: includes/admin/class-wc-admin-post-types.php:592 +#: includes/admin/class-wc-admin-post-types.php:422 +#: includes/admin/class-wc-admin-post-types.php:539 +#: includes/admin/class-wc-admin-post-types.php:587 +#: includes/admin/class-wc-admin-post-types.php:590 +#: includes/admin/class-wc-admin-post-types.php:593 #: includes/admin/settings/class-wc-settings-checkout.php:328 #: includes/admin/settings/class-wc-settings-emails.php:274 #: includes/admin/settings/class-wc-settings-shipping.php:244 @@ -7378,7 +7378,7 @@ msgstr "" msgid "Yes" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:423 +#: includes/admin/class-wc-admin-post-types.php:424 #: includes/admin/settings/class-wc-settings-shipping.php:245 #: includes/admin/views/html-bulk-edit-product.php:206 #: includes/admin/views/html-bulk-edit-product.php:240 @@ -7386,131 +7386,131 @@ msgstr "" msgid "No" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:430 +#: includes/admin/class-wc-admin-post-types.php:431 #: includes/admin/reports/class-wc-report-stock.php:108 #: includes/wc-formatting-functions.php:933 #: includes/wc-product-functions.php:802 msgid "In stock" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:498 +#: includes/admin/class-wc-admin-post-types.php:499 #. translators: 1: count 2: limit msgid "%1$s / %2$s" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:534 +#: includes/admin/class-wc-admin-post-types.php:535 msgid "Y-m-d" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:553 +#: includes/admin/class-wc-admin-post-types.php:554 #: templates/order/order-details-customer.php:46 msgid "Phone:" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:566 -#: includes/admin/class-wc-admin-post-types.php:603 +#: includes/admin/class-wc-admin-post-types.php:567 +#: includes/admin/class-wc-admin-post-types.php:604 msgid "Via" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:589 +#: includes/admin/class-wc-admin-post-types.php:590 #. translators: %d: notes count msgid "plus %d other note" msgid_plural "plus %d other notes" msgstr[0] "" msgstr[1] "" -#: includes/admin/class-wc-admin-post-types.php:592 +#: includes/admin/class-wc-admin-post-types.php:593 #. translators: %d: notes count msgid "%d note" msgid_plural "%d notes" msgstr[0] "" msgstr[1] "" -#: includes/admin/class-wc-admin-post-types.php:619 +#: includes/admin/class-wc-admin-post-types.php:620 #: includes/admin/meta-boxes/class-wc-meta-box-order-data.php:265 msgid "Guest" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:624 +#: includes/admin/class-wc-admin-post-types.php:625 #. translators: 1: order and number (i.e. Order #13) 2: user name msgid "%1$s by %2$s" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:633 +#: includes/admin/class-wc-admin-post-types.php:634 msgid "Show more details" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:647 +#: includes/admin/class-wc-admin-post-types.php:648 msgid "Processing" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:655 +#: includes/admin/class-wc-admin-post-types.php:656 msgid "Complete" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:662 +#: includes/admin/class-wc-admin-post-types.php:663 #: includes/admin/reports/class-wc-report-stock.php:134 #: includes/admin/views/html-admin-page-status-logs.php:28 #: templates/myaccount/my-orders.php:79 templates/myaccount/orders.php:75 msgid "View" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:789 +#: includes/admin/class-wc-admin-post-types.php:790 msgid "Sort products" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1275 +#: includes/admin/class-wc-admin-post-types.php:1276 msgid "Mark processing" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1276 +#: includes/admin/class-wc-admin-post-types.php:1277 msgid "Mark on-hold" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1277 +#: includes/admin/class-wc-admin-post-types.php:1278 msgid "Mark complete" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1312 +#: includes/admin/class-wc-admin-post-types.php:1313 msgid "Order status changed by bulk edit:" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1347 +#: includes/admin/class-wc-admin-post-types.php:1348 #. translators: %s: orders count msgid "Order status changed." msgid_plural "%s order statuses changed." msgstr[0] "" msgstr[1] "" -#: includes/admin/class-wc-admin-post-types.php:1444 +#: includes/admin/class-wc-admin-post-types.php:1445 msgid "Show all product types" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1457 +#: includes/admin/class-wc-admin-post-types.php:1458 #: includes/wc-product-functions.php:523 msgid "Grouped product" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1460 +#: includes/admin/class-wc-admin-post-types.php:1461 #: includes/wc-product-functions.php:524 msgid "External/Affiliate product" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1463 +#: includes/admin/class-wc-admin-post-types.php:1464 #: includes/wc-product-functions.php:525 msgid "Variable product" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1466 +#: includes/admin/class-wc-admin-post-types.php:1467 #: includes/wc-product-functions.php:522 msgid "Simple product" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1507 +#: includes/admin/class-wc-admin-post-types.php:1508 msgid "Show all types" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1536 +#: includes/admin/class-wc-admin-post-types.php:1537 #: includes/admin/meta-boxes/class-wc-meta-box-order-data.php:258 #: includes/admin/settings/views/html-keys-edit.php:35 #: includes/class-wc-ajax.php:1244 @@ -7518,42 +7518,42 @@ msgstr "" msgid "%1$s (#%2$s – %3$s)" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1543 +#: includes/admin/class-wc-admin-post-types.php:1544 msgid "Search for a customer…" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1737 +#: includes/admin/class-wc-admin-post-types.php:1738 #: templates/cart/cart.php:137 templates/checkout/form-coupon.php:36 msgid "Coupon code" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1751 +#: includes/admin/class-wc-admin-post-types.php:1752 msgid "Description (optional)" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1787 +#: includes/admin/class-wc-admin-post-types.php:1788 msgid "Catalog visibility:" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1803 +#: includes/admin/class-wc-admin-post-types.php:1804 msgid "" "Choose where this product should be displayed in your catalog. The product " "will always be accessible directly." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1809 +#: includes/admin/class-wc-admin-post-types.php:1810 msgid "Enable this option to feature this product." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1811 +#: includes/admin/class-wc-admin-post-types.php:1812 msgid "Featured product" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1814 +#: includes/admin/class-wc-admin-post-types.php:1815 msgid "OK" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1815 +#: includes/admin/class-wc-admin-post-types.php:1816 #: includes/admin/meta-boxes/views/html-order-items.php:222 #: includes/admin/meta-boxes/views/html-order-items.php:268 #: includes/admin/meta-boxes/views/html-product-data-general.php:47 @@ -7562,34 +7562,34 @@ msgstr "" msgid "Cancel" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1914 +#: includes/admin/class-wc-admin-post-types.php:1915 msgid "When you receive a new order, it will appear here." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1915 +#: includes/admin/class-wc-admin-post-types.php:1916 msgid "Learn more about orders" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1920 +#: includes/admin/class-wc-admin-post-types.php:1921 msgid "" "Coupons are a great way to offer discounts and rewards to your customers. " "They will appear here once created." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1921 +#: includes/admin/class-wc-admin-post-types.php:1922 msgid "Learn more about coupons" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1926 +#: includes/admin/class-wc-admin-post-types.php:1927 msgid "Ready to start selling something awesome?" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1927 +#: includes/admin/class-wc-admin-post-types.php:1928 #: includes/admin/class-wc-admin-setup-wizard.php:765 msgid "Create your first product!" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1959 +#: includes/admin/class-wc-admin-post-types.php:1960 msgid "" "This is the WooCommerce shop page. The shop page is a special archive that " "lists your products. You can read more about this here." @@ -7683,7 +7683,7 @@ msgstr "" #: includes/admin/class-wc-admin-profile.php:129 #: includes/admin/meta-boxes/class-wc-meta-box-order-data.php:75 #: includes/admin/meta-boxes/class-wc-meta-box-order-data.php:124 -#: includes/wc-template-functions.php:1942 +#: includes/wc-template-functions.php:1935 #: templates/cart/shipping-calculator.php:39 msgid "Select a country…" msgstr "" @@ -9550,7 +9550,7 @@ msgstr "" #: includes/admin/meta-boxes/views/html-product-data-inventory.php:65 #: includes/admin/meta-boxes/views/html-variation-admin.php:207 -#: includes/api/class-wc-rest-products-controller.php:1585 +#: includes/api/class-wc-rest-products-controller.php:1603 #: includes/api/v1/class-wc-rest-products-controller.php:1954 msgid "" "Controls whether or not the product is listed as \"in stock\" or \"out of " @@ -10319,11 +10319,11 @@ msgstr "" #: includes/admin/reports/class-wc-report-stock.php:164 #: includes/class-wc-post-types.php:259 -#: includes/data-stores/class-wc-product-data-store-cpt.php:87 +#: includes/data-stores/class-wc-product-data-store-cpt.php:94 #: includes/wc-account-functions.php:197 templates/cart/cart.php:35 #: templates/cart/cart.php:78 templates/checkout/form-pay.php:29 #: templates/checkout/review-order.php:26 -#: templates/emails/email-order-details.php:34 +#: templates/emails/email-order-details.php:36 #: templates/order/order-details.php:37 msgid "Product" msgstr "" @@ -10429,15 +10429,15 @@ msgid "Page contents: [%s]" msgstr "" #: includes/admin/settings/class-wc-settings-accounts.php:61 -msgid "Enable registration" +msgid "Customer registration" msgstr "" #: includes/admin/settings/class-wc-settings-accounts.php:62 -msgid "Enable registration on the \"Checkout\" page." +msgid "Enable customer registration on the \"Checkout\" page." msgstr "" #: includes/admin/settings/class-wc-settings-accounts.php:71 -msgid "Enable registration on the \"My account\" page." +msgid "Enable customer registration on the \"My account\" page." msgstr "" #: includes/admin/settings/class-wc-settings-accounts.php:80 @@ -11217,19 +11217,19 @@ msgid "Stock display format" msgstr "" #: includes/admin/settings/class-wc-settings-products.php:338 -msgid "This controls how stock is displayed on the frontend." +msgid "This controls how stock quantities are displayed on the frontend." msgstr "" #: includes/admin/settings/class-wc-settings-products.php:345 -msgid "Always show stock e.g. \"12 in stock\"" +msgid "Always show quantity remaining in stock e.g. \"12 in stock\"" msgstr "" #: includes/admin/settings/class-wc-settings-products.php:346 -msgid "Only show stock when low e.g. \"Only 2 left in stock\" vs. \"In stock\"" +msgid "Only show quantity remaining in stock when low e.g. \"Only 2 left in stock\"" msgstr "" #: includes/admin/settings/class-wc-settings-products.php:347 -msgid "Never show stock amount" +msgid "Never show quantity remaining in stock" msgstr "" #: includes/admin/settings/class-wc-settings-products.php:368 @@ -13229,7 +13229,9 @@ msgstr "" #: includes/api/class-wc-rest-coupons-controller.php:342 #: includes/api/v1/class-wc-rest-coupons-controller.php:450 -msgid "The amount of discount." +msgid "" +"The amount of discount. Should always be numeric, even if setting a " +"percentage." msgstr "" #: includes/api/class-wc-rest-coupons-controller.php:347 @@ -13275,22 +13277,24 @@ msgstr "" #: includes/api/class-wc-rest-coupons-controller.php:399 #: includes/api/v1/class-wc-rest-coupons-controller.php:466 -msgid "Whether coupon can only be used individually." +msgid "" +"If true, the coupon can only be used individually. Other applied coupons " +"will be removed from the cart." msgstr "" #: includes/api/class-wc-rest-coupons-controller.php:405 #: includes/api/v1/class-wc-rest-coupons-controller.php:472 -msgid "List of product ID's the coupon can be used on." +msgid "List of product IDs the coupon can be used on." msgstr "" #: includes/api/class-wc-rest-coupons-controller.php:413 #: includes/api/v1/class-wc-rest-coupons-controller.php:480 -msgid "List of product ID's the coupon cannot be used on." +msgid "List of product IDs the coupon cannot be used on." msgstr "" #: includes/api/class-wc-rest-coupons-controller.php:421 #: includes/api/v1/class-wc-rest-coupons-controller.php:488 -msgid "How many times the coupon can be used." +msgid "How many times the coupon can be used in total." msgstr "" #: includes/api/class-wc-rest-coupons-controller.php:426 @@ -13305,22 +13309,24 @@ msgstr "" #: includes/api/class-wc-rest-coupons-controller.php:436 #: includes/api/v1/class-wc-rest-coupons-controller.php:503 -msgid "Define if can be applied for free shipping." +msgid "" +"If true and if the free shipping method requires a coupon, this coupon will " +"enable free shipping." msgstr "" #: includes/api/class-wc-rest-coupons-controller.php:442 #: includes/api/v1/class-wc-rest-coupons-controller.php:509 -msgid "List of category ID's the coupon applies to." +msgid "List of category IDs the coupon applies to." msgstr "" #: includes/api/class-wc-rest-coupons-controller.php:450 #: includes/api/v1/class-wc-rest-coupons-controller.php:517 -msgid "List of category ID's the coupon does not apply to." +msgid "List of category IDs the coupon does not apply to." msgstr "" #: includes/api/class-wc-rest-coupons-controller.php:458 #: includes/api/v1/class-wc-rest-coupons-controller.php:525 -msgid "Define if should not apply when have sale items." +msgid "If true, this coupon will not be applied to items that have sale prices." msgstr "" #: includes/api/class-wc-rest-coupons-controller.php:464 @@ -13340,7 +13346,7 @@ msgstr "" #: includes/api/class-wc-rest-coupons-controller.php:482 #: includes/api/v1/class-wc-rest-coupons-controller.php:549 -msgid "List of user IDs who have used the coupon." +msgid "List of user IDs (or guest email addresses) that have used the coupon." msgstr "" #: includes/api/class-wc-rest-coupons-controller.php:491 @@ -13353,8 +13359,8 @@ msgstr "" #: includes/api/class-wc-rest-orders-controller.php:1386 #: includes/api/class-wc-rest-orders-controller.php:1484 #: includes/api/class-wc-rest-orders-controller.php:1542 -#: includes/api/class-wc-rest-product-variations-controller.php:900 -#: includes/api/class-wc-rest-products-controller.php:1927 +#: includes/api/class-wc-rest-product-variations-controller.php:898 +#: includes/api/class-wc-rest-products-controller.php:1945 msgid "Meta data." msgstr "" @@ -13368,8 +13374,8 @@ msgstr "" #: includes/api/class-wc-rest-orders-controller.php:1393 #: includes/api/class-wc-rest-orders-controller.php:1491 #: includes/api/class-wc-rest-orders-controller.php:1549 -#: includes/api/class-wc-rest-product-variations-controller.php:907 -#: includes/api/class-wc-rest-products-controller.php:1934 +#: includes/api/class-wc-rest-product-variations-controller.php:905 +#: includes/api/class-wc-rest-products-controller.php:1952 msgid "Meta ID." msgstr "" @@ -13383,8 +13389,8 @@ msgstr "" #: includes/api/class-wc-rest-orders-controller.php:1399 #: includes/api/class-wc-rest-orders-controller.php:1497 #: includes/api/class-wc-rest-orders-controller.php:1555 -#: includes/api/class-wc-rest-product-variations-controller.php:913 -#: includes/api/class-wc-rest-products-controller.php:1940 +#: includes/api/class-wc-rest-product-variations-controller.php:911 +#: includes/api/class-wc-rest-products-controller.php:1958 #: includes/api/v1/class-wc-rest-order-refunds-controller.php:477 #: includes/api/v1/class-wc-rest-orders-controller.php:1302 msgid "Meta key." @@ -13400,8 +13406,8 @@ msgstr "" #: includes/api/class-wc-rest-orders-controller.php:1404 #: includes/api/class-wc-rest-orders-controller.php:1502 #: includes/api/class-wc-rest-orders-controller.php:1560 -#: includes/api/class-wc-rest-product-variations-controller.php:918 -#: includes/api/class-wc-rest-products-controller.php:1945 +#: includes/api/class-wc-rest-product-variations-controller.php:916 +#: includes/api/class-wc-rest-products-controller.php:1963 #: includes/api/v1/class-wc-rest-order-refunds-controller.php:489 #: includes/api/v1/class-wc-rest-orders-controller.php:1314 msgid "Meta value." @@ -13430,7 +13436,7 @@ msgstr "" #: includes/api/class-wc-rest-customer-downloads-controller.php:103 #: includes/api/class-wc-rest-order-refunds-controller.php:414 #: includes/api/class-wc-rest-orders-controller.php:1136 -#: includes/api/class-wc-rest-products-controller.php:1351 +#: includes/api/class-wc-rest-products-controller.php:1369 #: includes/api/v1/class-wc-rest-order-refunds-controller.php:381 #: includes/api/v1/class-wc-rest-orders-controller.php:1206 #: includes/api/v1/class-wc-rest-products-controller.php:1742 @@ -13458,16 +13464,16 @@ msgstr "" #: includes/api/class-wc-rest-customer-downloads-controller.php:127 #: includes/api/v1/class-wc-rest-customer-downloads-controller.php:205 -msgid "Amount of downloads remaining." +msgid "Number of downloads remaining." msgstr "" #: includes/api/class-wc-rest-customer-downloads-controller.php:133 #: includes/api/v1/class-wc-rest-customer-downloads-controller.php:211 -msgid "The date when the download access expires, in the site's timezone." +msgid "The date when download access expires, in the site's timezone." msgstr "" #: includes/api/class-wc-rest-customer-downloads-controller.php:139 -msgid "The date when the download access expires, as GMT." +msgid "The date when download access expires, as GMT." msgstr "" #: includes/api/class-wc-rest-customer-downloads-controller.php:145 @@ -13476,8 +13482,8 @@ msgid "File details." msgstr "" #: includes/api/class-wc-rest-customer-downloads-controller.php:151 -#: includes/api/class-wc-rest-product-variations-controller.php:710 -#: includes/api/class-wc-rest-products-controller.php:1519 +#: includes/api/class-wc-rest-product-variations-controller.php:708 +#: includes/api/class-wc-rest-products-controller.php:1537 #: includes/api/v1/class-wc-rest-customer-downloads-controller.php:223 #: includes/api/v1/class-wc-rest-products-controller.php:1888 #: includes/api/v1/class-wc-rest-products-controller.php:2366 @@ -13485,8 +13491,8 @@ msgid "File name." msgstr "" #: includes/api/class-wc-rest-customer-downloads-controller.php:157 -#: includes/api/class-wc-rest-product-variations-controller.php:715 -#: includes/api/class-wc-rest-products-controller.php:1524 +#: includes/api/class-wc-rest-product-variations-controller.php:713 +#: includes/api/class-wc-rest-products-controller.php:1542 #: includes/api/v1/class-wc-rest-customer-downloads-controller.php:229 #: includes/api/v1/class-wc-rest-products-controller.php:1893 #: includes/api/v1/class-wc-rest-products-controller.php:2371 @@ -13508,9 +13514,8 @@ msgid "The date the customer was last modified, in the site's timezone." msgstr "" #: includes/api/class-wc-rest-customers-controller.php:152 -#: includes/api/class-wc-rest-orders-controller.php:860 -#: includes/api/v1/class-wc-rest-orders-controller.php:962 -msgid "The date the order was last modified, as GMT." +#: includes/api/v1/class-wc-rest-customers-controller.php:642 +msgid "The date the customer was last modified, as GMT." msgstr "" #: includes/api/class-wc-rest-customers-controller.php:158 @@ -13934,7 +13939,7 @@ msgstr "" #: includes/api/class-wc-rest-orders-controller.php:822 #: includes/api/v1/class-wc-rest-orders-controller.php:944 -msgid "Version of WooCommerce when the order was made." +msgid "Version of WooCommerce which last updated the order." msgstr "" #: includes/api/class-wc-rest-orders-controller.php:828 @@ -13955,6 +13960,11 @@ msgstr "" msgid "The date the order was last modified, in the site's timezone." msgstr "" +#: includes/api/class-wc-rest-orders-controller.php:860 +#: includes/api/v1/class-wc-rest-orders-controller.php:962 +msgid "The date the order was last modified, as GMT." +msgstr "" + #: includes/api/class-wc-rest-orders-controller.php:866 #: includes/api/v1/class-wc-rest-orders-controller.php:974 msgid "Total discount amount for the order." @@ -14049,11 +14059,11 @@ msgstr "" #: includes/api/class-wc-rest-orders-controller.php:1067 #: includes/api/v1/class-wc-rest-orders-controller.php:1181 -msgid "The date the order has been paid, in the site's timezone." +msgid "The date the order was paid, in the site's timezone." msgstr "" #: includes/api/class-wc-rest-orders-controller.php:1073 -msgid "The date the order has been paid, as GMT." +msgid "The date the order was paid, as GMT." msgstr "" #: includes/api/class-wc-rest-orders-controller.php:1079 @@ -14245,284 +14255,286 @@ msgstr "" msgid "Unique identifier for the variation." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:602 +#: includes/api/class-wc-rest-product-variations-controller.php:600 #: includes/api/v1/class-wc-rest-products-controller.php:2274 msgid "The date the variation was created, in the site's timezone." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:608 +#: includes/api/class-wc-rest-product-variations-controller.php:606 #: includes/api/v1/class-wc-rest-products-controller.php:2280 msgid "The date the variation was last modified, in the site's timezone." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:614 +#: includes/api/class-wc-rest-product-variations-controller.php:612 msgid "Variation description." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:619 +#: includes/api/class-wc-rest-product-variations-controller.php:617 #: includes/api/v1/class-wc-rest-products-controller.php:2286 msgid "Variation URL." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:626 -#: includes/api/class-wc-rest-products-controller.php:1429 +#: includes/api/class-wc-rest-product-variations-controller.php:624 +#: includes/api/class-wc-rest-products-controller.php:1447 #: includes/api/v1/class-wc-rest-products-controller.php:1808 #: includes/api/v1/class-wc-rest-products-controller.php:2293 msgid "Unique identifier." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:631 +#: includes/api/class-wc-rest-product-variations-controller.php:629 #: includes/api/v1/class-wc-rest-products-controller.php:2298 msgid "Current variation price." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:637 +#: includes/api/class-wc-rest-product-variations-controller.php:635 #: includes/api/v1/class-wc-rest-products-controller.php:2304 msgid "Variation regular price." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:642 +#: includes/api/class-wc-rest-product-variations-controller.php:640 #: includes/api/v1/class-wc-rest-products-controller.php:2309 msgid "Variation sale price." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:647 -#: includes/api/class-wc-rest-products-controller.php:1450 +#: includes/api/class-wc-rest-product-variations-controller.php:645 +#: includes/api/class-wc-rest-products-controller.php:1468 msgid "Start date of sale price, in the site's timezone." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:652 -#: includes/api/class-wc-rest-products-controller.php:1455 +#: includes/api/class-wc-rest-product-variations-controller.php:650 +#: includes/api/class-wc-rest-products-controller.php:1473 msgid "Start date of sale price, as GMT." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:657 -#: includes/api/class-wc-rest-product-variations-controller.php:662 -#: includes/api/class-wc-rest-products-controller.php:1460 -#: includes/api/class-wc-rest-products-controller.php:1465 +#: includes/api/class-wc-rest-product-variations-controller.php:655 +#: includes/api/class-wc-rest-product-variations-controller.php:660 +#: includes/api/class-wc-rest-products-controller.php:1478 +#: includes/api/class-wc-rest-products-controller.php:1483 msgid "End date of sale price, in the site's timezone." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:667 +#: includes/api/class-wc-rest-product-variations-controller.php:665 #: includes/api/v1/class-wc-rest-products-controller.php:2324 msgid "Shows if the variation is on sale." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:673 -#: includes/api/class-wc-rest-products-controller.php:1859 +#: includes/api/class-wc-rest-product-variations-controller.php:671 +#: includes/api/class-wc-rest-products-controller.php:1877 #: includes/api/v1/class-wc-rest-products-controller.php:2216 msgid "" "Define if the attribute is visible on the \"Additional information\" tab in " "the product's page." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:679 +#: includes/api/class-wc-rest-product-variations-controller.php:677 #: includes/api/v1/class-wc-rest-products-controller.php:2330 msgid "Shows if the variation can be bought." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:685 +#: includes/api/class-wc-rest-product-variations-controller.php:683 #: includes/api/v1/class-wc-rest-products-controller.php:2341 msgid "If the variation is virtual." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:691 +#: includes/api/class-wc-rest-product-variations-controller.php:689 #: includes/api/v1/class-wc-rest-products-controller.php:2347 msgid "If the variation is downloadable." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:697 -#: includes/api/class-wc-rest-products-controller.php:1506 +#: includes/api/class-wc-rest-product-variations-controller.php:695 +#: includes/api/class-wc-rest-products-controller.php:1524 #: includes/api/v1/class-wc-rest-products-controller.php:1875 #: includes/api/v1/class-wc-rest-products-controller.php:2353 msgid "List of downloadable files." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:704 -#: includes/api/class-wc-rest-products-controller.php:1513 +#: includes/api/class-wc-rest-product-variations-controller.php:702 +#: includes/api/class-wc-rest-products-controller.php:1531 #: includes/api/v1/class-wc-rest-products-controller.php:1882 #: includes/api/v1/class-wc-rest-products-controller.php:2360 msgid "File MD5 hash." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:723 +#: includes/api/class-wc-rest-product-variations-controller.php:721 +#: includes/api/class-wc-rest-products-controller.php:1550 +#: includes/api/v1/class-wc-rest-products-controller.php:1901 #: includes/api/v1/class-wc-rest-products-controller.php:2379 -msgid "Amount of times the variation can be downloaded." +msgid "Number of times downloadable files can be downloaded after purchase." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:729 +#: includes/api/class-wc-rest-product-variations-controller.php:727 +#: includes/api/class-wc-rest-products-controller.php:1556 +#: includes/api/v1/class-wc-rest-products-controller.php:1907 #: includes/api/v1/class-wc-rest-products-controller.php:2385 -msgid "" -"Number of days that the customer has up to be able to download the " -"variation." +msgid "Number of days until access to downloadable files expires." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:735 -#: includes/api/class-wc-rest-products-controller.php:1562 +#: includes/api/class-wc-rest-product-variations-controller.php:733 +#: includes/api/class-wc-rest-products-controller.php:1580 #: includes/api/v1/class-wc-rest-products-controller.php:1931 #: includes/api/v1/class-wc-rest-products-controller.php:2391 msgid "Tax status." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:742 -#: includes/api/class-wc-rest-products-controller.php:1569 +#: includes/api/class-wc-rest-product-variations-controller.php:740 +#: includes/api/class-wc-rest-products-controller.php:1587 #: includes/api/v1/class-wc-rest-products-controller.php:1938 #: includes/api/v1/class-wc-rest-products-controller.php:2398 #: includes/api/v1/class-wc-rest-taxes-controller.php:633 msgid "Tax class." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:747 +#: includes/api/class-wc-rest-product-variations-controller.php:745 #: includes/api/v1/class-wc-rest-products-controller.php:2403 msgid "Stock management at variation level." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:753 -#: includes/api/class-wc-rest-products-controller.php:1580 +#: includes/api/class-wc-rest-product-variations-controller.php:751 +#: includes/api/class-wc-rest-products-controller.php:1598 #: includes/api/v1/class-wc-rest-products-controller.php:1949 #: includes/api/v1/class-wc-rest-products-controller.php:2409 msgid "Stock quantity." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:758 +#: includes/api/class-wc-rest-product-variations-controller.php:756 #: includes/api/v1/class-wc-rest-products-controller.php:2414 msgid "" "Controls whether or not the variation is listed as \"in stock\" or \"out of " "stock\" on the frontend." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:764 -#: includes/api/class-wc-rest-products-controller.php:1591 +#: includes/api/class-wc-rest-product-variations-controller.php:762 +#: includes/api/class-wc-rest-products-controller.php:1609 #: includes/api/v1/class-wc-rest-products-controller.php:1960 #: includes/api/v1/class-wc-rest-products-controller.php:2420 msgid "If managing stock, this controls if backorders are allowed." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:771 -#: includes/api/class-wc-rest-products-controller.php:1598 +#: includes/api/class-wc-rest-product-variations-controller.php:769 +#: includes/api/class-wc-rest-products-controller.php:1616 #: includes/api/v1/class-wc-rest-products-controller.php:1967 #: includes/api/v1/class-wc-rest-products-controller.php:2427 msgid "Shows if backorders are allowed." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:777 +#: includes/api/class-wc-rest-product-variations-controller.php:775 #: includes/api/v1/class-wc-rest-products-controller.php:2433 msgid "Shows if the variation is on backordered." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:784 +#: includes/api/class-wc-rest-product-variations-controller.php:782 #: includes/api/v1/class-wc-rest-products-controller.php:2440 #. translators: %s: weight unit msgid "Variation weight (%s)." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:789 +#: includes/api/class-wc-rest-product-variations-controller.php:787 #: includes/api/v1/class-wc-rest-products-controller.php:2445 msgid "Variation dimensions." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:795 +#: includes/api/class-wc-rest-product-variations-controller.php:793 #: includes/api/v1/class-wc-rest-products-controller.php:2451 #. translators: %s: dimension unit msgid "Variation length (%s)." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:801 +#: includes/api/class-wc-rest-product-variations-controller.php:799 #: includes/api/v1/class-wc-rest-products-controller.php:2457 #. translators: %s: dimension unit msgid "Variation width (%s)." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:807 +#: includes/api/class-wc-rest-product-variations-controller.php:805 #: includes/api/v1/class-wc-rest-products-controller.php:2463 #. translators: %s: dimension unit msgid "Variation height (%s)." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:814 -#: includes/api/class-wc-rest-products-controller.php:1659 +#: includes/api/class-wc-rest-product-variations-controller.php:812 +#: includes/api/class-wc-rest-products-controller.php:1677 #: includes/api/v1/class-wc-rest-products-controller.php:2028 #: includes/api/v1/class-wc-rest-products-controller.php:2470 msgid "Shipping class slug." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:819 -#: includes/api/class-wc-rest-products-controller.php:1664 +#: includes/api/class-wc-rest-product-variations-controller.php:817 +#: includes/api/class-wc-rest-products-controller.php:1682 #: includes/api/v1/class-wc-rest-products-controller.php:2033 #: includes/api/v1/class-wc-rest-products-controller.php:2475 msgid "Shipping class ID." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:825 +#: includes/api/class-wc-rest-product-variations-controller.php:823 #: includes/api/v1/class-wc-rest-products-controller.php:2481 msgid "Variation image data." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:830 -#: includes/api/class-wc-rest-products-controller.php:1784 +#: includes/api/class-wc-rest-product-variations-controller.php:828 +#: includes/api/class-wc-rest-products-controller.php:1802 #: includes/api/v1/class-wc-rest-product-categories-controller.php:217 #: includes/api/v1/class-wc-rest-products-controller.php:2153 #: includes/api/v1/class-wc-rest-products-controller.php:2486 msgid "Image ID." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:835 -#: includes/api/class-wc-rest-products-controller.php:1789 +#: includes/api/class-wc-rest-product-variations-controller.php:833 +#: includes/api/class-wc-rest-products-controller.php:1807 #: includes/api/v1/class-wc-rest-product-categories-controller.php:222 #: includes/api/v1/class-wc-rest-products-controller.php:2158 #: includes/api/v1/class-wc-rest-products-controller.php:2491 msgid "The date the image was created, in the site's timezone." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:841 -#: includes/api/class-wc-rest-products-controller.php:1801 +#: includes/api/class-wc-rest-product-variations-controller.php:839 +#: includes/api/class-wc-rest-products-controller.php:1819 #: includes/api/v1/class-wc-rest-product-categories-controller.php:228 #: includes/api/v1/class-wc-rest-products-controller.php:2164 #: includes/api/v1/class-wc-rest-products-controller.php:2497 msgid "The date the image was last modified, in the site's timezone." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:847 -#: includes/api/class-wc-rest-products-controller.php:1813 +#: includes/api/class-wc-rest-product-variations-controller.php:845 +#: includes/api/class-wc-rest-products-controller.php:1831 #: includes/api/v1/class-wc-rest-product-categories-controller.php:234 #: includes/api/v1/class-wc-rest-products-controller.php:2170 #: includes/api/v1/class-wc-rest-products-controller.php:2503 msgid "Image URL." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:853 -#: includes/api/class-wc-rest-products-controller.php:1819 +#: includes/api/class-wc-rest-product-variations-controller.php:851 +#: includes/api/class-wc-rest-products-controller.php:1837 #: includes/api/v1/class-wc-rest-product-categories-controller.php:240 #: includes/api/v1/class-wc-rest-products-controller.php:2176 #: includes/api/v1/class-wc-rest-products-controller.php:2509 msgid "Image name." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:858 -#: includes/api/class-wc-rest-products-controller.php:1824 +#: includes/api/class-wc-rest-product-variations-controller.php:856 +#: includes/api/class-wc-rest-products-controller.php:1842 #: includes/api/v1/class-wc-rest-product-categories-controller.php:245 #: includes/api/v1/class-wc-rest-products-controller.php:2181 #: includes/api/v1/class-wc-rest-products-controller.php:2514 msgid "Image alternative text." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:863 -#: includes/api/class-wc-rest-products-controller.php:1829 +#: includes/api/class-wc-rest-product-variations-controller.php:861 +#: includes/api/class-wc-rest-products-controller.php:1847 #: includes/api/v1/class-wc-rest-products-controller.php:2186 #: includes/api/v1/class-wc-rest-products-controller.php:2519 msgid "Image position. 0 means that the image is featured." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:870 -#: includes/api/class-wc-rest-products-controller.php:1837 +#: includes/api/class-wc-rest-product-variations-controller.php:868 +#: includes/api/class-wc-rest-products-controller.php:1855 #: includes/api/v1/class-wc-rest-products-controller.php:2194 #: includes/api/v1/class-wc-rest-products-controller.php:2526 msgid "List of attributes." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:877 -#: includes/api/class-wc-rest-products-controller.php:1844 -#: includes/api/class-wc-rest-products-controller.php:1886 +#: includes/api/class-wc-rest-product-variations-controller.php:875 +#: includes/api/class-wc-rest-products-controller.php:1862 +#: includes/api/class-wc-rest-products-controller.php:1904 #: includes/api/v1/class-wc-rest-products-controller.php:2201 #: includes/api/v1/class-wc-rest-products-controller.php:2243 #: includes/api/v1/class-wc-rest-products-controller.php:2533 @@ -14530,9 +14542,9 @@ msgstr "" msgid "Attribute ID." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:882 -#: includes/api/class-wc-rest-products-controller.php:1849 -#: includes/api/class-wc-rest-products-controller.php:1891 +#: includes/api/class-wc-rest-product-variations-controller.php:880 +#: includes/api/class-wc-rest-products-controller.php:1867 +#: includes/api/class-wc-rest-products-controller.php:1909 #: includes/api/v1/class-wc-rest-product-attributes-controller.php:542 #: includes/api/v1/class-wc-rest-products-controller.php:2206 #: includes/api/v1/class-wc-rest-products-controller.php:2248 @@ -14540,15 +14552,15 @@ msgstr "" msgid "Attribute name." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:887 -#: includes/api/class-wc-rest-products-controller.php:1896 +#: includes/api/class-wc-rest-product-variations-controller.php:885 +#: includes/api/class-wc-rest-products-controller.php:1914 #: includes/api/v1/class-wc-rest-products-controller.php:2253 #: includes/api/v1/class-wc-rest-products-controller.php:2543 msgid "Selected attribute term name." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:895 -#: includes/api/class-wc-rest-products-controller.php:1922 +#: includes/api/class-wc-rest-product-variations-controller.php:893 +#: includes/api/class-wc-rest-products-controller.php:1940 #: includes/api/v1/class-wc-rest-products-controller.php:2563 msgid "Menu order, used to custom sort products." msgstr "" @@ -14567,385 +14579,375 @@ msgstr "" msgid "Placeholder" msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1035 +#: includes/api/class-wc-rest-products-controller.php:1053 #: includes/api/v1/class-wc-rest-products-controller.php:867 msgid "#%s is an invalid image ID." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1356 +#: includes/api/class-wc-rest-products-controller.php:1374 #: includes/api/v1/class-wc-rest-products-controller.php:1747 msgid "Product slug." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1361 +#: includes/api/class-wc-rest-products-controller.php:1379 #: includes/api/v1/class-wc-rest-products-controller.php:1752 msgid "Product URL." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1368 +#: includes/api/class-wc-rest-products-controller.php:1386 #: includes/api/v1/class-wc-rest-products-controller.php:1759 msgid "The date the product was created, in the site's timezone." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1374 +#: includes/api/class-wc-rest-products-controller.php:1392 msgid "The date the product was created, as GMT." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1380 +#: includes/api/class-wc-rest-products-controller.php:1398 #: includes/api/v1/class-wc-rest-products-controller.php:1765 msgid "The date the product was last modified, in the site's timezone." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1386 +#: includes/api/class-wc-rest-products-controller.php:1404 msgid "The date the product was last modified, as GMT." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1392 +#: includes/api/class-wc-rest-products-controller.php:1410 #: includes/api/v1/class-wc-rest-products-controller.php:1771 msgid "Product type." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1399 +#: includes/api/class-wc-rest-products-controller.php:1417 #: includes/api/v1/class-wc-rest-products-controller.php:1778 msgid "Product status (post status)." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1406 +#: includes/api/class-wc-rest-products-controller.php:1424 #: includes/api/v1/class-wc-rest-products-controller.php:1785 msgid "Featured product." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1412 +#: includes/api/class-wc-rest-products-controller.php:1430 #: includes/api/v1/class-wc-rest-products-controller.php:1791 msgid "Catalog visibility." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1419 +#: includes/api/class-wc-rest-products-controller.php:1437 #: includes/api/v1/class-wc-rest-products-controller.php:1798 msgid "Product description." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1424 +#: includes/api/class-wc-rest-products-controller.php:1442 #: includes/api/v1/class-wc-rest-products-controller.php:1803 msgid "Product short description." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1434 +#: includes/api/class-wc-rest-products-controller.php:1452 #: includes/api/v1/class-wc-rest-products-controller.php:1813 msgid "Current product price." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1440 +#: includes/api/class-wc-rest-products-controller.php:1458 #: includes/api/v1/class-wc-rest-products-controller.php:1819 msgid "Product regular price." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1445 +#: includes/api/class-wc-rest-products-controller.php:1463 #: includes/api/v1/class-wc-rest-products-controller.php:1824 msgid "Product sale price." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1470 +#: includes/api/class-wc-rest-products-controller.php:1488 #: includes/api/v1/class-wc-rest-products-controller.php:1839 msgid "Price formatted in HTML." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1476 +#: includes/api/class-wc-rest-products-controller.php:1494 #: includes/api/v1/class-wc-rest-products-controller.php:1845 msgid "Shows if the product is on sale." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1482 +#: includes/api/class-wc-rest-products-controller.php:1500 #: includes/api/v1/class-wc-rest-products-controller.php:1851 msgid "Shows if the product can be bought." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1488 +#: includes/api/class-wc-rest-products-controller.php:1506 #: includes/api/v1/class-wc-rest-products-controller.php:1857 msgid "Amount of sales." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1494 +#: includes/api/class-wc-rest-products-controller.php:1512 #: includes/api/v1/class-wc-rest-products-controller.php:1863 msgid "If the product is virtual." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1500 +#: includes/api/class-wc-rest-products-controller.php:1518 #: includes/api/v1/class-wc-rest-products-controller.php:1869 msgid "If the product is downloadable." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1532 -#: includes/api/v1/class-wc-rest-products-controller.php:1901 -msgid "Amount of times the product can be downloaded." -msgstr "" - -#: includes/api/class-wc-rest-products-controller.php:1538 -#: includes/api/v1/class-wc-rest-products-controller.php:1907 -msgid "Number of days that the customer has up to be able to download the product." -msgstr "" - -#: includes/api/class-wc-rest-products-controller.php:1544 +#: includes/api/class-wc-rest-products-controller.php:1562 #: includes/api/v1/class-wc-rest-products-controller.php:1913 msgid "Download type, this controls the schema on the front-end." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1551 +#: includes/api/class-wc-rest-products-controller.php:1569 #: includes/api/v1/class-wc-rest-products-controller.php:1920 msgid "Product external URL. Only for external products." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1557 +#: includes/api/class-wc-rest-products-controller.php:1575 #: includes/api/v1/class-wc-rest-products-controller.php:1926 msgid "Product external button text. Only for external products." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1574 +#: includes/api/class-wc-rest-products-controller.php:1592 #: includes/api/v1/class-wc-rest-products-controller.php:1943 msgid "Stock management at product level." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1604 +#: includes/api/class-wc-rest-products-controller.php:1622 #: includes/api/v1/class-wc-rest-products-controller.php:1973 msgid "Shows if the product is on backordered." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1610 +#: includes/api/class-wc-rest-products-controller.php:1628 #: includes/api/v1/class-wc-rest-products-controller.php:1979 msgid "Allow one item to be bought in a single order." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1617 +#: includes/api/class-wc-rest-products-controller.php:1635 #: includes/api/v1/class-wc-rest-products-controller.php:1986 #. translators: %s: weight unit msgid "Product weight (%s)." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1622 +#: includes/api/class-wc-rest-products-controller.php:1640 #: includes/api/v1/class-wc-rest-products-controller.php:1991 msgid "Product dimensions." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1628 +#: includes/api/class-wc-rest-products-controller.php:1646 #: includes/api/v1/class-wc-rest-products-controller.php:1997 #. translators: %s: dimension unit msgid "Product length (%s)." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1634 +#: includes/api/class-wc-rest-products-controller.php:1652 #: includes/api/v1/class-wc-rest-products-controller.php:2003 #. translators: %s: dimension unit msgid "Product width (%s)." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1640 +#: includes/api/class-wc-rest-products-controller.php:1658 #: includes/api/v1/class-wc-rest-products-controller.php:2009 #. translators: %s: dimension unit msgid "Product height (%s)." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1647 +#: includes/api/class-wc-rest-products-controller.php:1665 #: includes/api/v1/class-wc-rest-products-controller.php:2016 msgid "Shows if the product need to be shipped." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1653 +#: includes/api/class-wc-rest-products-controller.php:1671 #: includes/api/v1/class-wc-rest-products-controller.php:2022 msgid "Shows whether or not the product shipping is taxable." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1670 +#: includes/api/class-wc-rest-products-controller.php:1688 #: includes/api/v1/class-wc-rest-products-controller.php:2039 msgid "Allow reviews." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1676 +#: includes/api/class-wc-rest-products-controller.php:1694 #: includes/api/v1/class-wc-rest-products-controller.php:2045 msgid "Reviews average rating." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1682 +#: includes/api/class-wc-rest-products-controller.php:1700 #: includes/api/v1/class-wc-rest-products-controller.php:2051 msgid "Amount of reviews that the product have." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1688 +#: includes/api/class-wc-rest-products-controller.php:1706 #: includes/api/v1/class-wc-rest-products-controller.php:2057 msgid "List of related products IDs." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1697 +#: includes/api/class-wc-rest-products-controller.php:1715 #: includes/api/v1/class-wc-rest-products-controller.php:2066 msgid "List of up-sell products IDs." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1705 +#: includes/api/class-wc-rest-products-controller.php:1723 #: includes/api/v1/class-wc-rest-products-controller.php:2074 msgid "List of cross-sell products IDs." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1713 +#: includes/api/class-wc-rest-products-controller.php:1731 #: includes/api/v1/class-wc-rest-products-controller.php:2082 msgid "Product parent ID." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1718 +#: includes/api/class-wc-rest-products-controller.php:1736 #: includes/api/v1/class-wc-rest-products-controller.php:2087 msgid "Optional note to send the customer after purchase." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1723 +#: includes/api/class-wc-rest-products-controller.php:1741 #: includes/api/v1/class-wc-rest-products-controller.php:2092 msgid "List of categories." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1730 +#: includes/api/class-wc-rest-products-controller.php:1748 #: includes/api/v1/class-wc-rest-products-controller.php:2099 msgid "Category ID." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1735 +#: includes/api/class-wc-rest-products-controller.php:1753 #: includes/api/v1/class-wc-rest-product-categories-controller.php:176 #: includes/api/v1/class-wc-rest-products-controller.php:2104 msgid "Category name." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1741 +#: includes/api/class-wc-rest-products-controller.php:1759 #: includes/api/v1/class-wc-rest-products-controller.php:2110 msgid "Category slug." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1750 +#: includes/api/class-wc-rest-products-controller.php:1768 #: includes/api/v1/class-wc-rest-products-controller.php:2119 msgid "List of tags." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1757 +#: includes/api/class-wc-rest-products-controller.php:1775 #: includes/api/v1/class-wc-rest-products-controller.php:2126 msgid "Tag ID." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1762 +#: includes/api/class-wc-rest-products-controller.php:1780 #: includes/api/v1/class-wc-rest-product-tags-controller.php:100 #: includes/api/v1/class-wc-rest-products-controller.php:2131 msgid "Tag name." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1768 +#: includes/api/class-wc-rest-products-controller.php:1786 #: includes/api/v1/class-wc-rest-products-controller.php:2137 msgid "Tag slug." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1777 +#: includes/api/class-wc-rest-products-controller.php:1795 #: includes/api/v1/class-wc-rest-products-controller.php:2146 msgid "List of images." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1795 +#: includes/api/class-wc-rest-products-controller.php:1813 msgid "The date the image was created, as GMT." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1807 +#: includes/api/class-wc-rest-products-controller.php:1825 msgid "The date the image was last modified, as GMT." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1854 +#: includes/api/class-wc-rest-products-controller.php:1872 #: includes/api/v1/class-wc-rest-products-controller.php:2211 msgid "Attribute position." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1865 +#: includes/api/class-wc-rest-products-controller.php:1883 #: includes/api/v1/class-wc-rest-products-controller.php:2222 msgid "Define if the attribute can be used as variation." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1871 +#: includes/api/class-wc-rest-products-controller.php:1889 #: includes/api/v1/class-wc-rest-products-controller.php:2228 msgid "List of available term names of the attribute." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1879 +#: includes/api/class-wc-rest-products-controller.php:1897 #: includes/api/v1/class-wc-rest-products-controller.php:2236 msgid "Defaults variation attributes." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1904 +#: includes/api/class-wc-rest-products-controller.php:1922 msgid "List of variations IDs." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1913 +#: includes/api/class-wc-rest-products-controller.php:1931 #: includes/api/v1/class-wc-rest-products-controller.php:2554 msgid "List of grouped products ID." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1967 +#: includes/api/class-wc-rest-products-controller.php:1985 #: includes/api/v1/class-wc-rest-products-controller.php:2582 msgid "Limit result set to products with a specific slug." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1973 +#: includes/api/class-wc-rest-products-controller.php:1991 #: includes/api/v1/class-wc-rest-products-controller.php:2588 msgid "Limit result set to products assigned a specific status." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1980 +#: includes/api/class-wc-rest-products-controller.php:1998 #: includes/api/v1/class-wc-rest-products-controller.php:2595 msgid "Limit result set to products assigned a specific type." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1987 +#: includes/api/class-wc-rest-products-controller.php:2005 #: includes/api/v1/class-wc-rest-products-controller.php:2632 msgid "Limit result set to products with a specific SKU." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1993 +#: includes/api/class-wc-rest-products-controller.php:2011 msgid "Limit result set to featured products." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1999 +#: includes/api/class-wc-rest-products-controller.php:2017 #: includes/api/v1/class-wc-rest-products-controller.php:2602 msgid "Limit result set to products assigned a specific category ID." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:2005 +#: includes/api/class-wc-rest-products-controller.php:2023 #: includes/api/v1/class-wc-rest-products-controller.php:2608 msgid "Limit result set to products assigned a specific tag ID." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:2011 +#: includes/api/class-wc-rest-products-controller.php:2029 #: includes/api/v1/class-wc-rest-products-controller.php:2614 msgid "Limit result set to products assigned a specific shipping class ID." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:2017 +#: includes/api/class-wc-rest-products-controller.php:2035 #: includes/api/v1/class-wc-rest-products-controller.php:2620 msgid "Limit result set to products with a specific attribute." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:2023 +#: includes/api/class-wc-rest-products-controller.php:2041 #: includes/api/v1/class-wc-rest-products-controller.php:2626 msgid "" "Limit result set to products with a specific attribute term ID (required an " "assigned attribute)." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:2031 +#: includes/api/class-wc-rest-products-controller.php:2049 msgid "Limit result set to products with a specific tax class." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:2040 +#: includes/api/class-wc-rest-products-controller.php:2058 msgid "Limit result set to products in stock or out of stock." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:2046 +#: includes/api/class-wc-rest-products-controller.php:2064 msgid "Limit result set to products on sale." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:2052 +#: includes/api/class-wc-rest-products-controller.php:2070 msgid "Limit result set to products based on a minimum price." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:2058 +#: includes/api/class-wc-rest-products-controller.php:2076 msgid "Limit result set to products based on a maximum price." msgstr "" @@ -16430,10 +16432,6 @@ msgstr "" msgid "The date the customer was created, as GMT." msgstr "" -#: includes/api/v1/class-wc-rest-customers-controller.php:642 -msgid "The date the customer was last modified, as GMT." -msgstr "" - #: includes/api/v1/class-wc-rest-customers-controller.php:683 msgid "Last order data." msgstr "" @@ -17167,7 +17165,7 @@ msgid "Get cart should not be called before the wp_loaded action." msgstr "" #: includes/class-wc-cart.php:912 includes/class-wc-frontend-scripts.php:523 -#: includes/wc-cart-functions.php:115 includes/wc-template-functions.php:1428 +#: includes/wc-cart-functions.php:115 includes/wc-template-functions.php:1421 #. translators: %s: product name msgid "View cart" msgstr "" @@ -17514,8 +17512,8 @@ msgstr "" msgid "Invalid billing email address" msgstr "" -#: includes/class-wc-data-store.php:76 includes/class-wc-data-store.php:82 -#: includes/class-wc-data-store.php:88 +#: includes/class-wc-data-store.php:84 includes/class-wc-data-store.php:90 +#: includes/class-wc-data-store.php:96 #: includes/data-stores/class-wc-shipping-zone-data-store.php:78 msgid "Invalid data store." msgstr "" @@ -17757,7 +17755,7 @@ msgid "Error processing checkout. Please try again." msgstr "" #: includes/class-wc-frontend-scripts.php:500 -#: includes/wc-template-functions.php:1883 +#: includes/wc-template-functions.php:1876 msgid "required" msgstr "" @@ -17866,7 +17864,7 @@ msgstr "" msgid "Refund – %s" msgstr "" -#: includes/class-wc-order.php:160 includes/wc-cart-functions.php:317 +#: includes/class-wc-order.php:160 includes/wc-cart-functions.php:307 msgid "(includes %s)" msgstr "" @@ -18077,7 +18075,7 @@ msgid "Parent product" msgstr "" #: includes/class-wc-post-types.php:272 -#: templates/emails/email-order-items.php:32 +#: templates/emails/email-order-items.php:34 msgid "Product image" msgstr "" @@ -18329,8 +18327,8 @@ msgstr "" #: includes/class-wc-query.php:107 #: includes/gateways/simplify-commerce/class-wc-gateway-simplify-commerce.php:615 -#: templates/emails/email-order-details.php:26 #: templates/emails/email-order-details.php:28 +#: templates/emails/email-order-details.php:30 #. translators: %s: order number msgid "Order #%s" msgstr "" @@ -18448,7 +18446,7 @@ msgstr "" msgid "Invalid payment token." msgstr "" -#: includes/data-stores/class-wc-product-data-store-cpt.php:125 +#: includes/data-stores/class-wc-product-data-store-cpt.php:132 msgid "Invalid product." msgstr "" @@ -19699,13 +19697,13 @@ msgid "Refund was declined." msgstr "" #: includes/legacy/abstract-wc-legacy-order.php:504 -#: includes/wc-template-functions.php:2451 +#: includes/wc-template-functions.php:2444 #. translators: 1: current item count msgid "Download %d" msgstr "" #: includes/legacy/abstract-wc-legacy-order.php:504 -#: includes/wc-template-functions.php:2451 templates/myaccount/downloads.php:76 +#: includes/wc-template-functions.php:2444 templates/myaccount/downloads.php:76 msgid "Download" msgstr "" @@ -20258,15 +20256,15 @@ msgstr "" msgid "Coupon: %s" msgstr "" -#: includes/wc-cart-functions.php:283 +#: includes/wc-cart-functions.php:274 msgid "Free shipping coupon" msgstr "" -#: includes/wc-cart-functions.php:288 +#: includes/wc-cart-functions.php:278 msgid "[Remove]" msgstr "" -#: includes/wc-cart-functions.php:315 +#: includes/wc-cart-functions.php:305 msgid "estimated for %s" msgstr "" @@ -21052,70 +21050,70 @@ msgstr "" msgid " – Page %s" msgstr "" -#: includes/wc-template-functions.php:799 +#: includes/wc-template-functions.php:797 msgid "Default sorting" msgstr "" -#: includes/wc-template-functions.php:800 +#: includes/wc-template-functions.php:798 msgid "Sort by popularity" msgstr "" -#: includes/wc-template-functions.php:801 +#: includes/wc-template-functions.php:799 msgid "Sort by average rating" msgstr "" -#: includes/wc-template-functions.php:802 +#: includes/wc-template-functions.php:800 msgid "Sort by newness" msgstr "" -#: includes/wc-template-functions.php:803 +#: includes/wc-template-functions.php:801 msgid "Sort by price: low to high" msgstr "" -#: includes/wc-template-functions.php:804 +#: includes/wc-template-functions.php:802 msgid "Sort by price: high to low" msgstr "" -#: includes/wc-template-functions.php:1138 +#: includes/wc-template-functions.php:1131 #: templates/checkout/form-shipping.php:56 #: templates/single-product/tabs/additional-information.php:25 msgid "Additional information" msgstr "" -#: includes/wc-template-functions.php:1147 +#: includes/wc-template-functions.php:1140 msgid "Reviews (%d)" msgstr "" -#: includes/wc-template-functions.php:1440 +#: includes/wc-template-functions.php:1433 msgid "Checkout" msgstr "" -#: includes/wc-template-functions.php:1565 +#: includes/wc-template-functions.php:1558 msgid "Place order" msgstr "" -#: includes/wc-template-functions.php:1950 +#: includes/wc-template-functions.php:1943 msgid "Update country" msgstr "" -#: includes/wc-template-functions.php:1971 +#: includes/wc-template-functions.php:1964 #: templates/cart/shipping-calculator.php:63 msgid "Select a state…" msgstr "" -#: includes/wc-template-functions.php:2016 -#: includes/wc-template-functions.php:2168 -#: includes/wc-template-functions.php:2178 +#: includes/wc-template-functions.php:2009 +#: includes/wc-template-functions.php:2161 +#: includes/wc-template-functions.php:2171 msgid "Choose an option" msgstr "" -#: includes/wc-template-functions.php:2537 +#: includes/wc-template-functions.php:2530 #: includes/widgets/class-wc-widget-layered-nav-filters.php:166 #: includes/widgets/class-wc-widget-rating-filter.php:188 msgid "Rated %s out of 5" msgstr "" -#: includes/wc-template-functions.php:2538 +#: includes/wc-template-functions.php:2531 msgid "out of 5" msgstr "" @@ -21476,7 +21474,7 @@ msgid "(estimated for %s)" msgstr "" #: templates/cart/cart.php:37 templates/cart/cart.php:102 -#: templates/emails/email-order-details.php:35 +#: templates/emails/email-order-details.php:37 msgid "Quantity" msgstr "" @@ -21716,7 +21714,7 @@ msgstr "" msgid "Click here to reset your password" msgstr "" -#: templates/emails/email-addresses.php:26 +#: templates/emails/email-addresses.php:28 #: templates/emails/plain/email-addresses.php:23 #: templates/myaccount/form-edit-address.php:23 #: templates/myaccount/my-address.php:27 templates/myaccount/my-address.php:32 @@ -21724,7 +21722,7 @@ msgstr "" msgid "Billing address" msgstr "" -#: templates/emails/email-addresses.php:32 +#: templates/emails/email-addresses.php:34 #: templates/emails/plain/email-addresses.php:27 #: templates/myaccount/form-edit-address.php:23 #: templates/myaccount/my-address.php:28 @@ -21732,7 +21730,7 @@ msgstr "" msgid "Shipping address" msgstr "" -#: templates/emails/email-customer-details.php:26 +#: templates/emails/email-customer-details.php:27 #: templates/emails/plain/email-customer-details.php:25 #: templates/order/order-details-customer.php:26 msgid "Customer details" @@ -22324,7 +22322,7 @@ msgctxt "default-slug" msgid "product" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:615 +#: includes/admin/class-wc-admin-post-types.php:616 #: includes/class-wc-order.php:779 includes/class-wc-order.php:789 #. translators: 1: first name 2: last name msgctxt "full name" @@ -22564,12 +22562,12 @@ msgid_plural "Shipping %d" msgstr[0] "" msgstr[1] "" -#: includes/wc-template-functions.php:1515 +#: includes/wc-template-functions.php:1508 msgctxt "breadcrumb" msgid "Home" msgstr "" -#: includes/wc-template-functions.php:2553 +#: includes/wc-template-functions.php:2546 msgctxt "min_price" msgid "From:" msgstr "" From f8466cf61bf4de00ecce0de571c41ee40f2dcc03 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 21 Mar 2017 14:32:15 +0000 Subject: [PATCH 049/525] Code standards 0.10.0 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 96e47e88cea..04a7e3d4223 100644 --- a/composer.json +++ b/composer.json @@ -9,7 +9,7 @@ }, "require-dev": { "squizlabs/php_codesniffer": "*", - "wp-coding-standards/wpcs": "*", + "wp-coding-standards/wpcs": "0.10.0", "wimg/php-compatibility": "*", "simplyadmire/composer-plugins" : "@dev" }, From fa472689d6a880b9b33dfbd2cdcb63bf9939729d Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 21 Mar 2017 12:02:53 -0300 Subject: [PATCH 050/525] Stop download phpcs from GitHub and use the composer copy --- tests/bin/travis.sh | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/tests/bin/travis.sh b/tests/bin/travis.sh index 4e45f6c8150..03fbd24c565 100755 --- a/tests/bin/travis.sh +++ b/tests/bin/travis.sh @@ -18,21 +18,6 @@ if [ $1 == 'before' ]; then composer self-update composer install --no-interaction - ## Only run on latest stable PHP box (defined in .travis.yml). - if [[ ${TRAVIS_PHP_VERSION} == ${PHP_LATEST_STABLE} ]]; then - # Install CodeSniffer for WordPress Coding Standards checks. Only check once. - git clone -b master --depth 1 https://github.com/squizlabs/PHP_CodeSniffer.git /tmp/phpcs - # Install WordPress Coding Standards. - git clone -b master --depth 1 https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git /tmp/sniffs - # Install PHP Compatibility sniffs. - git clone -b master --depth 1 https://github.com/wimg/PHPCompatibility.git /tmp/sniffs/PHPCompatibility - # Set install path for PHPCS sniffs. - # @link https://github.com/squizlabs/PHP_CodeSniffer/blob/4237c2fc98cc838730b76ee9cee316f99286a2a7/CodeSniffer.php#L1941 - /tmp/phpcs/scripts/phpcs --config-set installed_paths /tmp/sniffs - # After CodeSniffer install you should refresh your path. - phpenv rehash - fi - elif [ $1 == 'during' ]; then ## Only run on latest stable PHP box (defined in .travis.yml). @@ -46,11 +31,11 @@ elif [ $1 == 'during' ]; then # -n flag: Do not print warnings. (shortcut for --warning-severity=0) # --standard: Use WordPress as the standard. # --extensions: Only sniff PHP files. - /tmp/phpcs/scripts/phpcs -p -s -n ./*.php --standard=./phpcs.ruleset.xml --extensions=php - /tmp/phpcs/scripts/phpcs -p -s -n ./**/*.php --standard=./phpcs.ruleset.xml --extensions=php --ignore=./vendor/*.php --ignore=./tests/*.php - /tmp/phpcs/scripts/phpcs -p -s -n ./**/**/*.php --standard=./phpcs.ruleset.xml --extensions=php --ignore=./vendor/**/*.php --ignore=./tests/**/*.php - /tmp/phpcs/scripts/phpcs -p -s -n ./**/**/**/*.php --standard=./phpcs.ruleset.xml --extensions=php --ignore=./vendor/**/**/*.php --ignore=./tests/**/**/*.php - /tmp/phpcs/scripts/phpcs -p -s -n ./**/**/**/**/*.php --standard=./phpcs.ruleset.xml --extensions=php --ignore=./vendor/**/**/*.php --ignore=./tests/**/**/*.php + ./vendor/bin/phpcs -p -s -n ./*.php --standard=./phpcs.ruleset.xml --extensions=php + ./vendor/bin/phpcs -p -s -n ./**/*.php --standard=./phpcs.ruleset.xml --extensions=php --ignore=./vendor/*.php --ignore=./tests/*.php + ./vendor/bin/phpcs -p -s -n ./**/**/*.php --standard=./phpcs.ruleset.xml --extensions=php --ignore=./vendor/**/*.php --ignore=./tests/**/*.php + ./vendor/bin/phpcs -p -s -n ./**/**/**/*.php --standard=./phpcs.ruleset.xml --extensions=php --ignore=./vendor/**/**/*.php --ignore=./tests/**/**/*.php + ./vendor/bin/phpcs -p -s -n ./**/**/**/**/*.php --standard=./phpcs.ruleset.xml --extensions=php --ignore=./vendor/**/**/*.php --ignore=./tests/**/**/*.php fi elif [ $1 == 'after' ]; then From f1dab3fdce247a52f6452fe73a0259fd8d935030 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 21 Mar 2017 12:38:35 -0300 Subject: [PATCH 051/525] Fixed coding standards --- templates/emails/email-customer-details.php | 10 +++++----- tests/unit-tests/coupon/data-store.php | 2 +- tests/unit-tests/crud/data.php | 8 +++++++- tests/unit-tests/order-items/functions.php | 2 +- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/templates/emails/email-customer-details.php b/templates/emails/email-customer-details.php index 7d71736ee6c..548dc75ff0f 100644 --- a/templates/emails/email-customer-details.php +++ b/templates/emails/email-customer-details.php @@ -12,10 +12,10 @@ * happen. When this occurs the version of the template file will be bumped and * the readme will list any important changes. * - * @see https://docs.woocommerce.com/document/template-structure/ - * @author WooThemes - * @package WooCommerce/Templates/Emails - * @version 2.5.0 + * @see https://docs.woocommerce.com/document/template-structure/ + * @author WooThemes + * @package WooCommerce/Templates/Emails + * @version 2.5.0 */ if ( ! defined( 'ABSPATH' ) ) { @@ -23,7 +23,7 @@ if ( ! defined( 'ABSPATH' ) ) { } ?> - +

      diff --git a/tests/unit-tests/coupon/data-store.php b/tests/unit-tests/coupon/data-store.php index b955470478e..ce1c2881e95 100644 --- a/tests/unit-tests/coupon/data-store.php +++ b/tests/unit-tests/coupon/data-store.php @@ -106,7 +106,7 @@ class WC_Tests_Coupon_Data_Store extends WC_Unit_Test_Case { function test_coupon_date_saving() { $expiry_date = time() - 10; - $coupon = WC_Helper_Coupon::create_coupon( 'coupon-' . time()); + $coupon = WC_Helper_Coupon::create_coupon( 'coupon-' . time() ); $coupon->set_date_expires( $expiry_date ); $coupon->save(); diff --git a/tests/unit-tests/crud/data.php b/tests/unit-tests/crud/data.php index af6a060e014..bc256857e0a 100644 --- a/tests/unit-tests/crud/data.php +++ b/tests/unit-tests/crud/data.php @@ -384,17 +384,23 @@ class WC_Tests_CRUD_Data extends WC_Unit_Test_Case { */ function test_set_date_prop_server_timezone() { // Repeat all tests with different server timezone. + // @codingStandardsIgnoreStart date_default_timezone_set( 'Pacific/Fiji' ); + // @codingStandardsIgnoreEnd $this->test_set_date_prop_gmt_offset(); $this->test_set_date_prop_timezone_string(); // Repeat all tests with different server timezone. + // @codingStandardsIgnoreStart date_default_timezone_set( 'Pacific/Tahiti' ); + // @codingStandardsIgnoreEnd $this->test_set_date_prop_gmt_offset(); $this->test_set_date_prop_timezone_string(); // Restore to UTC. + // @codingStandardsIgnoreStart date_default_timezone_set( 'UTC' ); + // @codingStandardsIgnoreEnd } /** @@ -408,7 +414,7 @@ class WC_Tests_CRUD_Data extends WC_Unit_Test_Case { $changes = array( 'prop1' => 'new_value1', - 'prop3' => 'value3' + 'prop3' => 'value3', ); $object = new WC_Mock_WC_Data; diff --git a/tests/unit-tests/order-items/functions.php b/tests/unit-tests/order-items/functions.php index 40505e686e8..1a3ba32f70e 100644 --- a/tests/unit-tests/order-items/functions.php +++ b/tests/unit-tests/order-items/functions.php @@ -33,7 +33,7 @@ class WC_Tests_Order_Item_Functions extends WC_Unit_Test_Case { $item_id = $item->get_id(); // Test that the initial key doesn't exist. - $item = new WC_Order_Item_Product( $item_id );; + $item = new WC_Order_Item_Product( $item_id ); $this->assertEmpty( $item->get_meta( '_test_key' ) ); $this->assertEmpty( wc_get_order_item_meta( $item_id, '_test_key' ) ); From 7dc539e43b6326e5efcce9d01fea776d6718fc04 Mon Sep 17 00:00:00 2001 From: alarocca130 Date: Tue, 21 Mar 2017 17:41:00 +0100 Subject: [PATCH 052/525] Fix: post_meta function for payment token meta --- includes/data-stores/class-wc-payment-token-data-store.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/data-stores/class-wc-payment-token-data-store.php b/includes/data-stores/class-wc-payment-token-data-store.php index cc68cc98521..651911ed898 100644 --- a/includes/data-stores/class-wc-payment-token-data-store.php +++ b/includes/data-stores/class-wc-payment-token-data-store.php @@ -159,7 +159,7 @@ class WC_Payment_Token_Data_Store extends WC_Data_Store_WP implements WC_Payment foreach ( $token->get_extra_data_keys() as $key ) { $function = 'set_' . $key; if ( is_callable( array( $token, $function ) ) ) { - $token->{$function}( get_post_meta( $token->get_id(), $key, true ) ); + $token->{$function}( get_metadata( 'payment_token', $token->get_id(), $key, true ) ); } } } @@ -188,7 +188,7 @@ class WC_Payment_Token_Data_Store extends WC_Data_Store_WP implements WC_Payment } $function = 'get_' . $key; if ( is_callable( array( $token, $function ) ) ) { - if ( update_post_meta( $token->get_id(), $key, $token->{$function}( 'edit' ) ) ) { + if ( update_metadata( 'payment_token', $token->get_id(), $key, $token->{$function}( 'edit' ) ) ) { $updated_props[] = $key; } } From de4757e40289c21d49513813398b31b8aef4de4c Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Tue, 21 Mar 2017 10:03:06 -0700 Subject: [PATCH 053/525] Change folder name and suppress npm error swarm --- .gitignore | 2 +- Gruntfile.js | 4 ++-- package.json | 4 ++-- tests/{frontend-tests => e2e-tests}/README.md | 0 tests/{frontend-tests => e2e-tests}/cart-page.js | 0 tests/{frontend-tests => e2e-tests}/checkout-page.js | 0 tests/{frontend-tests => e2e-tests}/config/default.json | 0 tests/{frontend-tests => e2e-tests}/config/local-sample.json | 0 .../wp-admin/wp-admin-coupon-new.js | 0 .../wp-admin/wp-admin-order-new.js | 0 .../wp-admin/wp-admin-product-new.js | 0 .../wp-admin/wp-admin-wc-settings-general.js | 0 .../wp-admin/wp-admin-wc-settings-products-downloadable.js | 0 13 files changed, 5 insertions(+), 5 deletions(-) rename tests/{frontend-tests => e2e-tests}/README.md (100%) rename tests/{frontend-tests => e2e-tests}/cart-page.js (100%) rename tests/{frontend-tests => e2e-tests}/checkout-page.js (100%) rename tests/{frontend-tests => e2e-tests}/config/default.json (100%) rename tests/{frontend-tests => e2e-tests}/config/local-sample.json (100%) rename tests/{frontend-tests => e2e-tests}/wp-admin/wp-admin-coupon-new.js (100%) rename tests/{frontend-tests => e2e-tests}/wp-admin/wp-admin-order-new.js (100%) rename tests/{frontend-tests => e2e-tests}/wp-admin/wp-admin-product-new.js (100%) rename tests/{frontend-tests => e2e-tests}/wp-admin/wp-admin-wc-settings-general.js (100%) rename tests/{frontend-tests => e2e-tests}/wp-admin/wp-admin-wc-settings-products-downloadable.js (100%) diff --git a/.gitignore b/.gitignore index 84487621b1a..0612a52c0cf 100644 --- a/.gitignore +++ b/.gitignore @@ -32,7 +32,7 @@ tests/cli/vendor # Unit tests /tmp /tests/bin/tmp -/tests/frontend-tests/config/local-*.json +/tests/e2e-tests/config/local-*.json # Logs /logs diff --git a/Gruntfile.js b/Gruntfile.js index 46b3809c13b..3aab4d79348 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -251,10 +251,10 @@ module.exports = function( grunt ) { ].join( '&&' ) }, e2e_test: { - command: 'npm run test:single tests/frontend-tests/' + grunt.option( 'file' ) + command: 'npm run --silent test:single tests/e2e-tests/' + grunt.option( 'file' ) }, e2e_tests: { - command: 'npm run test' + command: 'npm run --silent test' } }, diff --git a/package.json b/package.json index f10edcd78d2..7a9a1eed94f 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,8 @@ "license": "GPL-3.0+", "main": "Gruntfile.js", "scripts": { - "test": "cross-env NODE_CONFIG_DIR='./tests/frontend-tests/config' BABEL_ENV=commonjs mocha \"tests/frontend-tests\" --compilers js:babel-register --recursive", - "test:single": "cross-env NODE_CONFIG_DIR='./tests/frontend-tests/config' BABEL_ENV=commonjs mocha --compilers js:babel-register" + "test": "cross-env NODE_CONFIG_DIR='./tests/e2e-tests/config' BABEL_ENV=commonjs mocha \"tests/e2e-tests\" --compilers js:babel-register --recursive", + "test:single": "cross-env NODE_CONFIG_DIR='./tests/e2e-tests/config' BABEL_ENV=commonjs mocha --compilers js:babel-register" }, "devDependencies": { "grunt": "~1.0.1", diff --git a/tests/frontend-tests/README.md b/tests/e2e-tests/README.md similarity index 100% rename from tests/frontend-tests/README.md rename to tests/e2e-tests/README.md diff --git a/tests/frontend-tests/cart-page.js b/tests/e2e-tests/cart-page.js similarity index 100% rename from tests/frontend-tests/cart-page.js rename to tests/e2e-tests/cart-page.js diff --git a/tests/frontend-tests/checkout-page.js b/tests/e2e-tests/checkout-page.js similarity index 100% rename from tests/frontend-tests/checkout-page.js rename to tests/e2e-tests/checkout-page.js diff --git a/tests/frontend-tests/config/default.json b/tests/e2e-tests/config/default.json similarity index 100% rename from tests/frontend-tests/config/default.json rename to tests/e2e-tests/config/default.json diff --git a/tests/frontend-tests/config/local-sample.json b/tests/e2e-tests/config/local-sample.json similarity index 100% rename from tests/frontend-tests/config/local-sample.json rename to tests/e2e-tests/config/local-sample.json diff --git a/tests/frontend-tests/wp-admin/wp-admin-coupon-new.js b/tests/e2e-tests/wp-admin/wp-admin-coupon-new.js similarity index 100% rename from tests/frontend-tests/wp-admin/wp-admin-coupon-new.js rename to tests/e2e-tests/wp-admin/wp-admin-coupon-new.js diff --git a/tests/frontend-tests/wp-admin/wp-admin-order-new.js b/tests/e2e-tests/wp-admin/wp-admin-order-new.js similarity index 100% rename from tests/frontend-tests/wp-admin/wp-admin-order-new.js rename to tests/e2e-tests/wp-admin/wp-admin-order-new.js diff --git a/tests/frontend-tests/wp-admin/wp-admin-product-new.js b/tests/e2e-tests/wp-admin/wp-admin-product-new.js similarity index 100% rename from tests/frontend-tests/wp-admin/wp-admin-product-new.js rename to tests/e2e-tests/wp-admin/wp-admin-product-new.js diff --git a/tests/frontend-tests/wp-admin/wp-admin-wc-settings-general.js b/tests/e2e-tests/wp-admin/wp-admin-wc-settings-general.js similarity index 100% rename from tests/frontend-tests/wp-admin/wp-admin-wc-settings-general.js rename to tests/e2e-tests/wp-admin/wp-admin-wc-settings-general.js diff --git a/tests/frontend-tests/wp-admin/wp-admin-wc-settings-products-downloadable.js b/tests/e2e-tests/wp-admin/wp-admin-wc-settings-products-downloadable.js similarity index 100% rename from tests/frontend-tests/wp-admin/wp-admin-wc-settings-products-downloadable.js rename to tests/e2e-tests/wp-admin/wp-admin-wc-settings-products-downloadable.js From 2006ae69a1a8751e085bc1df4b6d6fab9e674e56 Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Tue, 21 Mar 2017 10:16:30 -0700 Subject: [PATCH 054/525] Remove readme.md in favor of wiki --- tests/e2e-tests/README.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 tests/e2e-tests/README.md diff --git a/tests/e2e-tests/README.md b/tests/e2e-tests/README.md deleted file mode 100644 index e69de29bb2d..00000000000 From 9d5aee2c73d50ed80983435de71cf9ef0e9202ff Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 21 Mar 2017 17:36:46 +0000 Subject: [PATCH 055/525] Remove code which expands/changes objects in emails --- includes/class-wc-emails.php | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/includes/class-wc-emails.php b/includes/class-wc-emails.php index 4ae82af42b2..294533233fd 100644 --- a/includes/class-wc-emails.php +++ b/includes/class-wc-emails.php @@ -92,17 +92,8 @@ class WC_Emails { * Queue transactional email via cron so it's not sent in current request. */ public static function queue_transactional_email() { - $filter = current_filter(); - $args = func_get_args(); - - // Remove objects and store IDs. - if ( 0 === strpos( $filter, 'woocommerce_order_status_' ) ) { - $args[1] = $args[1]->get_id(); - } elseif ( 'woocommerce_low_stock' === $filter || 'woocommerce_no_stock' === $filter ) { - $args[0] = $args[0]->get_id(); - } elseif ( 'woocommerce_product_on_backorder' === $filter ) { - $args[0]['product'] = $args[0]['product']->get_id(); - } + $filter = current_filter(); + $args = func_get_args(); wp_schedule_single_event( time() + 5, 'woocommerce_send_queued_transactional_email', array( 'filter' => $filter, @@ -121,16 +112,6 @@ class WC_Emails { public static function send_queued_transactional_email( $filter = '', $args = array() ) { if ( apply_filters( 'woocommerce_allow_send_queued_transactional_email', true, $filter, $args ) ) { self::instance(); // Init self so emails exist. - - // Expand objects from IDs. - if ( 0 === strpos( $filter, 'woocommerce_order_status_' ) ) { - $args[1] = wc_get_order( $args[1] ); - } elseif ( 'woocommerce_low_stock' === $filter || 'woocommerce_no_stock' === $filter ) { - $args[0] = wc_get_product( $args[0] ); - } elseif ( 'woocommerce_product_on_backorder' === $filter ) { - $args[0]['product'] = wc_get_product( $args[0]['product'] ); - } - do_action_ref_array( $filter . '_notification', $args ); } } From 991927c2d8493d46d09321e886746ab4cc0f2295 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 21 Mar 2017 17:42:34 +0000 Subject: [PATCH 056/525] Handle sleep and wakeup in WC_Data class --- includes/abstracts/abstract-wc-data.php | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/includes/abstracts/abstract-wc-data.php b/includes/abstracts/abstract-wc-data.php index dcb734648cd..53c5d1dab47 100644 --- a/includes/abstracts/abstract-wc-data.php +++ b/includes/abstracts/abstract-wc-data.php @@ -104,12 +104,26 @@ abstract class WC_Data { * @param int|object|array $read ID to load from the DB (optional) or already queried data. */ public function __construct( $read = 0 ) { - - $this->data = array_merge( $this->data, $this->extra_data ); - + $this->data = array_merge( $this->data, $this->extra_data ); $this->default_data = $this->data; } + /** + * Only store the object ID to avoid serializing the data object instance. + * + * @return array + */ + public function __sleep() { + return array( 'id' ); + } + + /** + * Re-run the constructor with the object ID. + */ + public function __wakeup() { + $this->__construct( $this->id ); + } + /** * Get the data store. * From 98f5ba44e8367a5a2cb3478dc48858dfdad76a82 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 21 Mar 2017 18:31:38 +0000 Subject: [PATCH 057/525] Protection against removed objects. --- includes/abstracts/abstract-wc-data.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/includes/abstracts/abstract-wc-data.php b/includes/abstracts/abstract-wc-data.php index 53c5d1dab47..ea447f7396a 100644 --- a/includes/abstracts/abstract-wc-data.php +++ b/includes/abstracts/abstract-wc-data.php @@ -119,9 +119,16 @@ abstract class WC_Data { /** * Re-run the constructor with the object ID. + * + * If the object no longer exists, remove the ID. */ public function __wakeup() { - $this->__construct( $this->id ); + try { + $this->__construct( absint( $this->id ) ); + } catch ( Exception $e ) { + $this->set_id( 0 ); + $this->set_object_read( true ); + } } /** From b528e257590fafe7943f4246283c76dbda6a7d76 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 21 Mar 2017 15:54:23 -0300 Subject: [PATCH 058/525] Improve address labels to help translations --- includes/admin/class-wc-admin-profile.php | 8 ++++---- .../admin/meta-boxes/class-wc-meta-box-order-data.php | 8 ++++---- includes/api/class-wc-rest-customers-controller.php | 8 ++++---- includes/api/class-wc-rest-orders-controller.php | 8 ++++---- includes/api/v1/class-wc-rest-orders-controller.php | 8 ++++---- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/includes/admin/class-wc-admin-profile.php b/includes/admin/class-wc-admin-profile.php index 63c5b2481a0..04f4ed6856f 100644 --- a/includes/admin/class-wc-admin-profile.php +++ b/includes/admin/class-wc-admin-profile.php @@ -53,11 +53,11 @@ class WC_Admin_Profile { 'description' => '', ), 'billing_address_1' => array( - 'label' => __( 'Address 1', 'woocommerce' ), + 'label' => __( 'Address line 1', 'woocommerce' ), 'description' => '', ), 'billing_address_2' => array( - 'label' => __( 'Address 2', 'woocommerce' ), + 'label' => __( 'Address line 2', 'woocommerce' ), 'description' => '', ), 'billing_city' => array( @@ -106,11 +106,11 @@ class WC_Admin_Profile { 'description' => '', ), 'shipping_address_1' => array( - 'label' => __( 'Address 1', 'woocommerce' ), + 'label' => __( 'Address line 1', 'woocommerce' ), 'description' => '', ), 'shipping_address_2' => array( - 'label' => __( 'Address 2', 'woocommerce' ), + 'label' => __( 'Address line 2', 'woocommerce' ), 'description' => '', ), 'shipping_city' => array( diff --git a/includes/admin/meta-boxes/class-wc-meta-box-order-data.php b/includes/admin/meta-boxes/class-wc-meta-box-order-data.php index aa9be46f48c..098e14636d7 100644 --- a/includes/admin/meta-boxes/class-wc-meta-box-order-data.php +++ b/includes/admin/meta-boxes/class-wc-meta-box-order-data.php @@ -52,11 +52,11 @@ class WC_Meta_Box_Order_Data { 'show' => false, ), 'address_1' => array( - 'label' => __( 'Address 1', 'woocommerce' ), + 'label' => __( 'Address line 1', 'woocommerce' ), 'show' => false, ), 'address_2' => array( - 'label' => __( 'Address 2', 'woocommerce' ), + 'label' => __( 'Address line 2', 'woocommerce' ), 'show' => false, ), 'city' => array( @@ -101,11 +101,11 @@ class WC_Meta_Box_Order_Data { 'show' => false, ), 'address_1' => array( - 'label' => __( 'Address 1', 'woocommerce' ), + 'label' => __( 'Address line 1', 'woocommerce' ), 'show' => false, ), 'address_2' => array( - 'label' => __( 'Address 2', 'woocommerce' ), + 'label' => __( 'Address line 2', 'woocommerce' ), 'show' => false, ), 'city' => array( diff --git a/includes/api/class-wc-rest-customers-controller.php b/includes/api/class-wc-rest-customers-controller.php index f3f493a1501..09bae50aaa6 100644 --- a/includes/api/class-wc-rest-customers-controller.php +++ b/includes/api/class-wc-rest-customers-controller.php @@ -216,12 +216,12 @@ class WC_REST_Customers_Controller extends WC_REST_Customers_V1_Controller { 'context' => array( 'view', 'edit' ), ), 'address_1' => array( - 'description' => __( 'Address 1', 'woocommerce' ), + 'description' => __( 'Address line 1', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), ), 'address_2' => array( - 'description' => __( 'Address 2', 'woocommerce' ), + 'description' => __( 'Address line 2', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), ), @@ -279,12 +279,12 @@ class WC_REST_Customers_Controller extends WC_REST_Customers_V1_Controller { 'context' => array( 'view', 'edit' ), ), 'address_1' => array( - 'description' => __( 'Address 1', 'woocommerce' ), + 'description' => __( 'Address line 1', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), ), 'address_2' => array( - 'description' => __( 'Address 2', 'woocommerce' ), + 'description' => __( 'Address line 2', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), ), diff --git a/includes/api/class-wc-rest-orders-controller.php b/includes/api/class-wc-rest-orders-controller.php index 8144278f00e..362b13d1dcd 100644 --- a/includes/api/class-wc-rest-orders-controller.php +++ b/includes/api/class-wc-rest-orders-controller.php @@ -954,12 +954,12 @@ class WC_REST_Orders_Controller extends WC_REST_Legacy_Orders_Controller { 'context' => array( 'view', 'edit' ), ), 'address_1' => array( - 'description' => __( 'Address 1', 'woocommerce' ), + 'description' => __( 'Address line 1', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), ), 'address_2' => array( - 'description' => __( 'Address 2', 'woocommerce' ), + 'description' => __( 'Address line 2', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), ), @@ -1017,12 +1017,12 @@ class WC_REST_Orders_Controller extends WC_REST_Legacy_Orders_Controller { 'context' => array( 'view', 'edit' ), ), 'address_1' => array( - 'description' => __( 'Address 1', 'woocommerce' ), + 'description' => __( 'Address line 1', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), ), 'address_2' => array( - 'description' => __( 'Address 2', 'woocommerce' ), + 'description' => __( 'Address line 2', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), ), diff --git a/includes/api/v1/class-wc-rest-orders-controller.php b/includes/api/v1/class-wc-rest-orders-controller.php index 9d0e71a9e7c..010005adb62 100644 --- a/includes/api/v1/class-wc-rest-orders-controller.php +++ b/includes/api/v1/class-wc-rest-orders-controller.php @@ -1033,12 +1033,12 @@ class WC_REST_Orders_V1_Controller extends WC_REST_Posts_Controller { 'context' => array( 'view', 'edit' ), ), 'address_1' => array( - 'description' => __( 'Address 1.', 'woocommerce' ), + 'description' => __( 'Address line 1.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), ), 'address_2' => array( - 'description' => __( 'Address 2.', 'woocommerce' ), + 'description' => __( 'Address line 2.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), ), @@ -1096,12 +1096,12 @@ class WC_REST_Orders_V1_Controller extends WC_REST_Posts_Controller { 'context' => array( 'view', 'edit' ), ), 'address_1' => array( - 'description' => __( 'Address 1.', 'woocommerce' ), + 'description' => __( 'Address line 1.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), ), 'address_2' => array( - 'description' => __( 'Address 2.', 'woocommerce' ), + 'description' => __( 'Address line 2.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), ), From ad1dab947e0d7cd7f7081a037c4a1a0034072537 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 21 Mar 2017 16:37:06 -0300 Subject: [PATCH 059/525] Include date_created_gmt in order notes endpoint --- .../class-wc-rest-order-notes-controller.php | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/includes/api/class-wc-rest-order-notes-controller.php b/includes/api/class-wc-rest-order-notes-controller.php index 831b9b23695..b2c61efa71a 100644 --- a/includes/api/class-wc-rest-order-notes-controller.php +++ b/includes/api/class-wc-rest-order-notes-controller.php @@ -82,6 +82,87 @@ class WC_REST_Order_Notes_Controller extends WC_REST_Order_Notes_V1_Controller { return rest_ensure_response( $data ); } + /** + * Prepare a single order note output for response. + * + * @param WP_Comment $note Order note object. + * @param WP_REST_Request $request Request object. + * @return WP_REST_Response $response Response data. + */ + public function prepare_item_for_response( $note, $request ) { + $data = array( + 'id' => (int) $note->comment_ID, + 'date_created' => wc_rest_prepare_date_response( $note->comment_date ), + 'date_created_gmt' => wc_rest_prepare_date_response( $note->comment_date_gmt ), + 'note' => $note->comment_content, + 'customer_note' => (bool) get_comment_meta( $note->comment_ID, 'is_customer_note', true ), + ); + + $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; + $data = $this->add_additional_fields_to_object( $data, $request ); + $data = $this->filter_response_by_context( $data, $context ); + + // Wrap the data in a response object. + $response = rest_ensure_response( $data ); + + $response->add_links( $this->prepare_links( $note ) ); + + /** + * Filter order note object returned from the REST API. + * + * @param WP_REST_Response $response The response object. + * @param WP_Comment $note Order note object used to create response. + * @param WP_REST_Request $request Request object. + */ + return apply_filters( 'woocommerce_rest_prepare_order_note', $response, $note, $request ); + } + + /** + * Get the Order Notes schema, conforming to JSON Schema. + * + * @return array + */ + public function get_item_schema() { + $schema = array( + '$schema' => 'http://json-schema.org/draft-04/schema#', + 'title' => 'order_note', + 'type' => 'object', + 'properties' => array( + 'id' => array( + 'description' => __( 'Unique identifier for the resource.', 'woocommerce' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'date_created' => array( + 'description' => __( "The date the order note was created, in the site's timezone.", 'woocommerce' ), + 'type' => 'date-time', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'date_created_gmt' => array( + 'description' => __( "The date the order note was created, as GMT.", 'woocommerce' ), + 'type' => 'date-time', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'note' => array( + 'description' => __( 'Order note.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'customer_note' => array( + 'description' => __( 'Shows/define if the note is only for reference or for the customer (the user will be notified).', 'woocommerce' ), + 'type' => 'boolean', + 'default' => false, + 'context' => array( 'view', 'edit' ), + ), + ), + ); + + return $this->add_additional_fields_schema( $schema ); + } + /** * Get the query params for collections. * From 461543fdbf8e97f6c3caab961d1f612c27da903c Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 21 Mar 2017 17:04:25 -0300 Subject: [PATCH 060/525] Include missing api_refund item to order refunds schema --- includes/api/class-wc-rest-order-refunds-controller.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/includes/api/class-wc-rest-order-refunds-controller.php b/includes/api/class-wc-rest-order-refunds-controller.php index 68fda340a47..a12973a217b 100644 --- a/includes/api/class-wc-rest-order-refunds-controller.php +++ b/includes/api/class-wc-rest-order-refunds-controller.php @@ -524,6 +524,12 @@ class WC_REST_Order_Refunds_Controller extends WC_REST_Orders_Controller { ), ), ), + 'api_refund' => array( + 'description' => __( 'When true uses the payment gateway API to generate the refund.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'edit' ), + 'default' => true, + ), ), ); From 3b1da48c8d3bdda22c02867db6a7ccad1e524cab Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 21 Mar 2017 17:07:01 -0300 Subject: [PATCH 061/525] Fixed type --- includes/api/class-wc-rest-order-refunds-controller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/api/class-wc-rest-order-refunds-controller.php b/includes/api/class-wc-rest-order-refunds-controller.php index a12973a217b..f94d7fa0657 100644 --- a/includes/api/class-wc-rest-order-refunds-controller.php +++ b/includes/api/class-wc-rest-order-refunds-controller.php @@ -526,7 +526,7 @@ class WC_REST_Order_Refunds_Controller extends WC_REST_Orders_Controller { ), 'api_refund' => array( 'description' => __( 'When true uses the payment gateway API to generate the refund.', 'woocommerce' ), - 'type' => 'string', + 'type' => 'boolean', 'context' => array( 'edit' ), 'default' => true, ), From d2e1565f97f39f77ec757577a85be7334db10173 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 21 Mar 2017 17:34:16 -0300 Subject: [PATCH 062/525] Fixed undefined variables in payment methods endpoint --- includes/api/class-wc-rest-payment-gateways-controller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/api/class-wc-rest-payment-gateways-controller.php b/includes/api/class-wc-rest-payment-gateways-controller.php index 42597e91421..264a7c197b8 100644 --- a/includes/api/class-wc-rest-payment-gateways-controller.php +++ b/includes/api/class-wc-rest-payment-gateways-controller.php @@ -296,7 +296,7 @@ class WC_REST_Payment_Gateways_Controller extends WC_REST_Controller { 'label' => empty( $field['label'] ) ? $field['title'] : $field['label'], 'description' => empty( $field['description'] ) ? '' : $field['description'], 'type' => $field['type'], - 'value' => $gateway->settings[ $id ], + 'value' => empty( $gateway->settings[ $id ] ) ? '' : $gateway->settings[ $id ], 'default' => empty( $field['default'] ) ? '' : $field['default'], 'tip' => empty( $field['description'] ) ? '' : $field['description'], 'placeholder' => empty( $field['placeholder'] ) ? '' : $field['placeholder'], From be8ec903b53b6b1bb292d90c29b90232384c6d66 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 21 Mar 2017 17:47:28 -0300 Subject: [PATCH 063/525] Include missing payment gateways and shippingmethods settings schema --- ...ss-wc-rest-payment-gateways-controller.php | 50 +++++++++++++++++++ ...ss-wc-rest-settings-options-controller.php | 3 +- ...-rest-shipping-zone-methods-controller.php | 50 +++++++++++++++++++ 3 files changed, 102 insertions(+), 1 deletion(-) diff --git a/includes/api/class-wc-rest-payment-gateways-controller.php b/includes/api/class-wc-rest-payment-gateways-controller.php index 42597e91421..a5e7044302f 100644 --- a/includes/api/class-wc-rest-payment-gateways-controller.php +++ b/includes/api/class-wc-rest-payment-gateways-controller.php @@ -385,6 +385,56 @@ class WC_REST_Payment_Gateways_Controller extends WC_REST_Controller { 'description' => __( 'Payment gateway settings.', 'woocommerce' ), 'type' => 'object', 'context' => array( 'view', 'edit' ), + 'properties' => array( + 'id' => array( + 'description' => __( 'A unique identifier for the setting.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'label' => array( + 'description' => __( 'A human readable translation wrapped label. Meant to be used in interfaces.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'description' => array( + 'description' => __( 'A human readable translation wrapped description. Meant to be used in interfaces.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'type' => array( + 'description' => __( 'Type of setting.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'enum' => array( 'text', 'email', 'number', 'color', 'password', 'textarea', 'select', 'multiselect', 'radio', 'image_width', 'checkbox' ), + 'readonly' => true, + ), + 'value' => array( + 'description' => __( 'Setting value.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'default' => array( + 'description' => __( 'Default value for the setting.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'tip' => array( + 'description' => __( 'Extra help text explaining the setting.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'placeholder' => array( + 'description' => __( 'Placeholder text to be displayed in text inputs.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + ), ), ), ); diff --git a/includes/api/class-wc-rest-settings-options-controller.php b/includes/api/class-wc-rest-settings-options-controller.php index f444bfde3d2..45ab7cd5f80 100644 --- a/includes/api/class-wc-rest-settings-options-controller.php +++ b/includes/api/class-wc-rest-settings-options-controller.php @@ -517,12 +517,13 @@ class WC_REST_Settings_Options_Controller extends WC_REST_Controller { 'readonly' => true, ), 'type' => array( - 'description' => __( 'Type of setting. Allowed values: text, email, number, color, password, textarea, select, multiselect, radio, image_width, checkbox.', 'woocommerce' ), + 'description' => __( 'Type of setting.', 'woocommerce' ), 'type' => 'string', 'arg_options' => array( 'sanitize_callback' => 'sanitize_text_field', ), 'context' => array( 'view', 'edit' ), + 'enum' => array( 'text', 'email', 'number', 'color', 'password', 'textarea', 'select', 'multiselect', 'radio', 'image_width', 'checkbox' ), 'readonly' => true, ), 'options' => array( diff --git a/includes/api/class-wc-rest-shipping-zone-methods-controller.php b/includes/api/class-wc-rest-shipping-zone-methods-controller.php index 93fca25e551..2098bb2638d 100644 --- a/includes/api/class-wc-rest-shipping-zone-methods-controller.php +++ b/includes/api/class-wc-rest-shipping-zone-methods-controller.php @@ -472,6 +472,56 @@ class WC_REST_Shipping_Zone_Methods_Controller extends WC_REST_Shipping_Zones_Co 'description' => __( 'Shipping method settings.', 'woocommerce' ), 'type' => 'object', 'context' => array( 'view', 'edit' ), + 'properties' => array( + 'id' => array( + 'description' => __( 'A unique identifier for the setting.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'label' => array( + 'description' => __( 'A human readable translation wrapped label. Meant to be used in interfaces.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'description' => array( + 'description' => __( 'A human readable translation wrapped description. Meant to be used in interfaces.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'type' => array( + 'description' => __( 'Type of setting.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'enum' => array( 'text', 'email', 'number', 'color', 'password', 'textarea', 'select', 'multiselect', 'radio', 'image_width', 'checkbox' ), + 'readonly' => true, + ), + 'value' => array( + 'description' => __( 'Setting value.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'default' => array( + 'description' => __( 'Default value for the setting.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'tip' => array( + 'description' => __( 'Extra help text explaining the setting.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'placeholder' => array( + 'description' => __( 'Placeholder text to be displayed in text inputs.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + ), ), ), ); From 2cb861b29820fd6ab061e9a417a76aaad8257c6b Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Tue, 21 Mar 2017 14:46:37 -0700 Subject: [PATCH 064/525] Use latest wc-e2e-page-objects version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7a9a1eed94f..3a38a62cb36 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "istanbul": "^1.0.0-alpha", "mocha": "^3.0.2", "chromedriver": "^2.25.0", - "wc-e2e-page-objects": "0.2.0" + "wc-e2e-page-objects": "0.2.2" }, "engines": { "node": ">=6.9.4", From 57ab34f13ea9cc922e3654df3b1e00ae7de4e6d1 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Tue, 21 Mar 2017 23:21:43 +0000 Subject: [PATCH 065/525] Remove redundant / awkward empty password check WooCommerce here checks that the password is not empty. This check is redundant, because it is already performed by wp_authenticate_email_password() (which is invoked, eventually, by the call in WC to wp_signon() ). Moreover, it is harmful, because it prevents extension of the login form. For example, in my use case, I have added a code to be scanned by a smartphone app as an alternative to the password. When the code is scanned, a password is required. This extra/redundant check for an empty password on the WooCommerce form prevents my already-working-on-the-standard-wp-login-form code from working here, and there's no way to work around it that isn't hacky/ugly (e.g. direct manipulation of $_POST). --- includes/class-wc-form-handler.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/includes/class-wc-form-handler.php b/includes/class-wc-form-handler.php index 9520ab2a1ba..ce7323896cf 100644 --- a/includes/class-wc-form-handler.php +++ b/includes/class-wc-form-handler.php @@ -879,10 +879,6 @@ class WC_Form_Handler { throw new Exception( '' . __( 'Error:', 'woocommerce' ) . ' ' . __( 'Username is required.', 'woocommerce' ) ); } - if ( empty( $_POST['password'] ) ) { - throw new Exception( '' . __( 'Error:', 'woocommerce' ) . ' ' . __( 'Password is required.', 'woocommerce' ) ); - } - if ( is_email( $username ) && apply_filters( 'woocommerce_get_username_from_email', true ) ) { $user = get_user_by( 'email', $username ); From c4c8edee5fad930604c7d6f018e77a2b39eb3a02 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 21 Mar 2017 23:37:38 +0000 Subject: [PATCH 066/525] Remove order and product factory cache --- includes/abstracts/abstract-wc-data.php | 1 - includes/class-wc-order-factory.php | 20 ++----------------- includes/class-wc-product-factory.php | 10 +--------- .../class-wc-product-data-store-cpt.php | 1 - 4 files changed, 3 insertions(+), 29 deletions(-) diff --git a/includes/abstracts/abstract-wc-data.php b/includes/abstracts/abstract-wc-data.php index ea447f7396a..13e532e6127 100644 --- a/includes/abstracts/abstract-wc-data.php +++ b/includes/abstracts/abstract-wc-data.php @@ -469,7 +469,6 @@ abstract class WC_Data { if ( ! empty( $this->cache_group ) ) { WC_Cache_Helper::incr_cache_prefix( $this->cache_group ); - wp_cache_delete( 'object-' . $this->get_id(), $this->cache_group ); } } diff --git a/includes/class-wc-order-factory.php b/includes/class-wc-order-factory.php index ba5edc75e35..f465ee8e800 100644 --- a/includes/class-wc-order-factory.php +++ b/includes/class-wc-order-factory.php @@ -44,15 +44,7 @@ class WC_Order_Factory { } try { - // Try to get from cache, otherwise create a new object, - $order = wp_cache_get( 'object-' . $order_id, 'orders' ); - - if ( ! is_a( $order, 'WC_Order' ) ) { - $order = new $classname( $order_id ); - wp_cache_set( 'object-' . $order_id, $order, 'orders' ); - } - - return $order; + return new $classname( $order_id ); } catch ( Exception $e ) { return false; } @@ -107,15 +99,7 @@ class WC_Order_Factory { if ( $classname && class_exists( $classname ) ) { try { - // Try to get from cache, otherwise create a new object, - $item = wp_cache_get( 'object-' . $id, 'order-items' ); - - if ( ! is_a( $item, 'WC_Order_Item' ) ) { - $item = new $classname( $id ); - wp_cache_set( 'object-' . $id, $item, 'order-items' ); - } - - return $item; + return new $classname( $id ); } catch ( Exception $e ) { return false; } diff --git a/includes/class-wc-product-factory.php b/includes/class-wc-product-factory.php index 9f1c1ae8c51..8626900b0f0 100644 --- a/includes/class-wc-product-factory.php +++ b/includes/class-wc-product-factory.php @@ -43,15 +43,7 @@ class WC_Product_Factory { $classname = $this->get_product_classname( $product_id, $product_type ); try { - // Try to get from cache, otherwise create a new object, - $product = wp_cache_get( 'product-' . $product_id, 'products' ); - - if ( ! is_a( $product, 'WC_Product' ) ) { - $product = new $classname( $product_id, $deprecated ); - wp_cache_set( 'product-' . $product_id, $product, 'products' ); - } - - return $product; + return new $classname( $product_id, $deprecated ); } catch ( Exception $e ) { return false; } diff --git a/includes/data-stores/class-wc-product-data-store-cpt.php b/includes/data-stores/class-wc-product-data-store-cpt.php index 053ab792daf..c2a828f4aac 100644 --- a/includes/data-stores/class-wc-product-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-data-store-cpt.php @@ -695,7 +695,6 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da */ protected function clear_caches( &$product ) { wc_delete_product_transients( $product->get_id() ); - wp_cache_delete( 'object-' . $product->get_id(), 'products' ); } /* From 2763abb6059316d600f5b5d71e9cc211c9e4551e Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 21 Mar 2017 23:37:47 +0000 Subject: [PATCH 067/525] Cache order items --- .../abstract-wc-order-data-store-cpt.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/includes/data-stores/abstract-wc-order-data-store-cpt.php b/includes/data-stores/abstract-wc-order-data-store-cpt.php index 67cbebda782..a5c4919a839 100644 --- a/includes/data-stores/abstract-wc-order-data-store-cpt.php +++ b/includes/data-stores/abstract-wc-order-data-store-cpt.php @@ -263,7 +263,7 @@ abstract class Abstract_WC_Order_Data_Store_CPT extends WC_Data_Store_WP impleme protected function clear_caches( &$order ) { clean_post_cache( $order->get_id() ); wc_delete_shop_order_transients( $order ); - wp_cache_delete( 'object-' . $order->get_id(), 'orders' ); + wp_cache_delete( 'items-' . $order->get_id(), 'orders' ); } /** @@ -276,8 +276,16 @@ abstract class Abstract_WC_Order_Data_Store_CPT extends WC_Data_Store_WP impleme public function read_items( $order, $type ) { global $wpdb; - $get_items_sql = $wpdb->prepare( "SELECT order_item_type, order_item_id, order_id, order_item_name FROM {$wpdb->prefix}woocommerce_order_items WHERE order_id = %d AND order_item_type = %s ORDER BY order_item_id;", $order->get_id(), $type ); - $items = $wpdb->get_results( $get_items_sql ); + // Get from cache if available. + $items = wp_cache_get( 'items-' . $order->get_id(), 'orders' ); + + if ( false === $items ) { + $get_items_sql = $wpdb->prepare( "SELECT order_item_type, order_item_id, order_id, order_item_name FROM {$wpdb->prefix}woocommerce_order_items WHERE order_id = %d ORDER BY order_item_id;", $order->get_id() ); + $items = $wpdb->get_results( $get_items_sql ); + wp_cache_set( 'items-' . $order->get_id(), $items, 'order-items' ); + } + + $items = wp_list_filter( $items, array( 'order_item_type' => $type ) ); if ( ! empty( $items ) ) { $items = array_map( array( 'WC_Order_Factory', 'get_order_item' ), array_combine( wp_list_pluck( $items, 'order_item_id' ), $items ) ); @@ -303,6 +311,7 @@ abstract class Abstract_WC_Order_Data_Store_CPT extends WC_Data_Store_WP impleme $wpdb->query( $wpdb->prepare( "DELETE FROM itemmeta USING {$wpdb->prefix}woocommerce_order_itemmeta itemmeta INNER JOIN {$wpdb->prefix}woocommerce_order_items items WHERE itemmeta.order_item_id = items.order_item_id and items.order_id = %d", $order->get_id() ) ); $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}woocommerce_order_items WHERE order_id = %d", $order->get_id() ) ); } + $this->clear_caches( $order ); } /** From 91f109c33d2cc727656f27f848f74509b5b5cbe8 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 21 Mar 2017 23:38:04 +0000 Subject: [PATCH 068/525] Cache order item data --- .../abstract-wc-order-item-type-data-store.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/includes/data-stores/abstract-wc-order-item-type-data-store.php b/includes/data-stores/abstract-wc-order-item-type-data-store.php index cd6ab5cb6d1..b9ea0c7594e 100644 --- a/includes/data-stores/abstract-wc-order-item-type-data-store.php +++ b/includes/data-stores/abstract-wc-order-item-type-data-store.php @@ -101,7 +101,13 @@ abstract class Abstract_WC_Order_Item_Type_Data_Store extends WC_Data_Store_WP i $item->set_defaults(); - $data = $wpdb->get_row( $wpdb->prepare( "SELECT order_id, order_item_name, order_item_type FROM {$wpdb->prefix}woocommerce_order_items WHERE order_item_id = %d LIMIT 1;", $item->get_id() ) ); + // Get from cache if available. + $data = wp_cache_get( 'data-' . $item->get_id(), 'order-items' ); + + if ( false === $data ) { + $data = $wpdb->get_row( $wpdb->prepare( "SELECT order_id, order_item_name, order_item_type FROM {$wpdb->prefix}woocommerce_order_items WHERE order_item_id = %d LIMIT 1;", $item->get_id() ) ); + wp_cache_set( 'data-' . $item->get_id(), $data, 'order-items' ); + } if ( ! $data ) { throw new Exception( __( 'Invalid order item.', 'woocommerce' ) ); @@ -128,6 +134,6 @@ abstract class Abstract_WC_Order_Item_Type_Data_Store extends WC_Data_Store_WP i * Clear meta cachce. */ public function clear_cache( &$item ) { - wp_cache_delete( 'object-' . $item->get_id(), 'order-items' ); + wp_cache_delete( 'data-' . $item->get_id(), 'order-items' ); } } From 414e2b9501cf5467d2043618275788a35b4d1696 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 21 Mar 2017 23:50:05 +0000 Subject: [PATCH 069/525] Shared cache for order items --- .../data-stores/abstract-wc-order-data-store-cpt.php | 9 ++++++--- .../abstract-wc-order-item-type-data-store.php | 9 ++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/includes/data-stores/abstract-wc-order-data-store-cpt.php b/includes/data-stores/abstract-wc-order-data-store-cpt.php index a5c4919a839..560be2b1247 100644 --- a/includes/data-stores/abstract-wc-order-data-store-cpt.php +++ b/includes/data-stores/abstract-wc-order-data-store-cpt.php @@ -263,7 +263,7 @@ abstract class Abstract_WC_Order_Data_Store_CPT extends WC_Data_Store_WP impleme protected function clear_caches( &$order ) { clean_post_cache( $order->get_id() ); wc_delete_shop_order_transients( $order ); - wp_cache_delete( 'items-' . $order->get_id(), 'orders' ); + wp_cache_delete( 'order-items-' . $order->get_id(), 'orders' ); } /** @@ -277,12 +277,15 @@ abstract class Abstract_WC_Order_Data_Store_CPT extends WC_Data_Store_WP impleme global $wpdb; // Get from cache if available. - $items = wp_cache_get( 'items-' . $order->get_id(), 'orders' ); + $items = wp_cache_get( 'order-items-' . $order->get_id(), 'orders' ); if ( false === $items ) { $get_items_sql = $wpdb->prepare( "SELECT order_item_type, order_item_id, order_id, order_item_name FROM {$wpdb->prefix}woocommerce_order_items WHERE order_id = %d ORDER BY order_item_id;", $order->get_id() ); $items = $wpdb->get_results( $get_items_sql ); - wp_cache_set( 'items-' . $order->get_id(), $items, 'order-items' ); + foreach ( $items as $item ) { + wp_cache_set( 'item-' . $item->order_item_id, $item, 'order-items' ); + } + wp_cache_set( 'order-items-' . $order->get_id(), $items, 'orders' ); } $items = wp_list_filter( $items, array( 'order_item_type' => $type ) ); diff --git a/includes/data-stores/abstract-wc-order-item-type-data-store.php b/includes/data-stores/abstract-wc-order-item-type-data-store.php index b9ea0c7594e..747403345e4 100644 --- a/includes/data-stores/abstract-wc-order-item-type-data-store.php +++ b/includes/data-stores/abstract-wc-order-item-type-data-store.php @@ -102,11 +102,11 @@ abstract class Abstract_WC_Order_Item_Type_Data_Store extends WC_Data_Store_WP i $item->set_defaults(); // Get from cache if available. - $data = wp_cache_get( 'data-' . $item->get_id(), 'order-items' ); + $data = wp_cache_get( 'item-' . $item->get_id(), 'order-items' ); if ( false === $data ) { - $data = $wpdb->get_row( $wpdb->prepare( "SELECT order_id, order_item_name, order_item_type FROM {$wpdb->prefix}woocommerce_order_items WHERE order_item_id = %d LIMIT 1;", $item->get_id() ) ); - wp_cache_set( 'data-' . $item->get_id(), $data, 'order-items' ); + $data = $wpdb->get_row( $wpdb->prepare( "SELECT order_id, order_item_name FROM {$wpdb->prefix}woocommerce_order_items WHERE order_item_id = %d LIMIT 1;", $item->get_id() ) ); + wp_cache_set( 'item-' . $item->get_id(), $data, 'order-items' ); } if ( ! $data ) { @@ -116,7 +116,6 @@ abstract class Abstract_WC_Order_Item_Type_Data_Store extends WC_Data_Store_WP i $item->set_props( array( 'order_id' => $data->order_id, 'name' => $data->order_item_name, - 'type' => $data->order_item_type, ) ); $item->read_meta_data(); } @@ -134,6 +133,6 @@ abstract class Abstract_WC_Order_Item_Type_Data_Store extends WC_Data_Store_WP i * Clear meta cachce. */ public function clear_cache( &$item ) { - wp_cache_delete( 'data-' . $item->get_id(), 'order-items' ); + wp_cache_delete( 'item-' . $item->get_id(), 'order-items' ); } } From 15bbac6b5c34656de1ae35c1846cd222d973b6c5 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 22 Mar 2017 10:53:18 +0000 Subject: [PATCH 070/525] Allow `data-coupon` though kses Fixes #13700 --- includes/class-wc-ajax.php | 4 ++-- includes/wc-cart-functions.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/includes/class-wc-ajax.php b/includes/class-wc-ajax.php index ba2d0228220..71373dc820c 100644 --- a/includes/class-wc-ajax.php +++ b/includes/class-wc-ajax.php @@ -200,9 +200,9 @@ class WC_AJAX { public static function remove_coupon() { check_ajax_referer( 'remove-coupon', 'security' ); - $coupon = wc_clean( $_POST['coupon'] ); + $coupon = isset( $_POST['coupon'] ) ? wc_clean( $_POST['coupon'] ) : false; - if ( ! isset( $coupon ) || empty( $coupon ) ) { + if ( empty( $coupon ) ) { wc_add_notice( __( 'Sorry there was a problem removing this coupon.', 'woocommerce' ), 'error' ); } else { WC()->cart->remove_coupon( $coupon ); diff --git a/includes/wc-cart-functions.php b/includes/wc-cart-functions.php index 83f0838f643..42126f4aefa 100644 --- a/includes/wc-cart-functions.php +++ b/includes/wc-cart-functions.php @@ -277,7 +277,7 @@ function wc_cart_totals_coupon_html( $coupon ) { $discount_amount_html = apply_filters( 'woocommerce_coupon_discount_amount_html', $discount_amount_html, $coupon ); $coupon_html = $discount_amount_html . ' ' . __( '[Remove]', 'woocommerce' ) . ''; - echo wp_kses_post( apply_filters( 'woocommerce_cart_totals_coupon_html', $coupon_html, $coupon, $discount_amount_html ) ); + echo wp_kses( apply_filters( 'woocommerce_cart_totals_coupon_html', $coupon_html, $coupon, $discount_amount_html ), array_replace_recursive( wp_kses_allowed_html( 'post' ), array( 'a' => array( 'data-coupon' => true ) ) ) ); } /** From 9ff603681b9a570cdc671d8e02a0ecbccee4ddb3 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 22 Mar 2017 11:08:37 +0000 Subject: [PATCH 071/525] Abort gallery script when there are no images Fixes #13699 --- assets/js/frontend/single-product.js | 5 +++++ assets/js/frontend/single-product.min.js | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/assets/js/frontend/single-product.js b/assets/js/frontend/single-product.js index 5ec911ccb0e..0cdc1122cd6 100644 --- a/assets/js/frontend/single-product.js +++ b/assets/js/frontend/single-product.js @@ -77,6 +77,11 @@ jQuery( function( $ ) { this.$target = $target; this.$images = $( '.woocommerce-product-gallery__image', $target ); + // No images? Abort. + if ( 0 === this.$images.length ) { + return; + } + // Make this object available. $target.data( 'product_gallery', this ); diff --git a/assets/js/frontend/single-product.min.js b/assets/js/frontend/single-product.min.js index b9c19e4083f..e9abc8f78e7 100644 --- a/assets/js/frontend/single-product.min.js +++ b/assets/js/frontend/single-product.min.js @@ -1 +1 @@ -jQuery(function(a){if("undefined"==typeof wc_single_product_params)return!1;a("body").on("init",".wc-tabs-wrapper, .woocommerce-tabs",function(){a(".wc-tab, .woocommerce-tabs .panel:not(.panel .panel)").hide();var b=window.location.hash,c=window.location.href,d=a(this).find(".wc-tabs, ul.tabs").first();b.toLowerCase().indexOf("comment-")>=0||"#reviews"===b||"#tab-reviews"===b?d.find("li.reviews_tab a").click():c.indexOf("comment-page-")>0||c.indexOf("cpage=")>0?d.find("li.reviews_tab a").click():d.find("li:first a").click()}).on("click",".wc-tabs li a, ul.tabs li a",function(b){b.preventDefault();var c=a(this),d=c.closest(".wc-tabs-wrapper, .woocommerce-tabs"),e=d.find(".wc-tabs, ul.tabs");e.find("li").removeClass("active"),d.find(".wc-tab, .panel:not(.panel .panel)").hide(),c.closest("li").addClass("active"),d.find(c.attr("href")).show()}).on("click","a.woocommerce-review-link",function(){return a(".reviews_tab a").click(),!0}).on("init","#rating",function(){a("#rating").hide().before('

      12345

      ')}).on("click","#respond p.stars a",function(){var b=a(this),c=a(this).closest("#respond").find("#rating"),d=a(this).closest(".stars");return c.val(b.text()),b.siblings("a").removeClass("active"),b.addClass("active"),d.addClass("selected"),!1}).on("click","#respond #submit",function(){var b=a(this).closest("#respond").find("#rating"),c=b.val();if(b.length>0&&!c&&"yes"===wc_single_product_params.review_rating_required)return window.alert(wc_single_product_params.i18n_required_rating_text),!1}),a(".wc-tabs-wrapper, .woocommerce-tabs, #rating").trigger("init");var b=function(b,c){this.$target=b,this.$images=a(".woocommerce-product-gallery__image",b),b.data("product_gallery",this),this.flexslider_enabled=a.isFunction(a.fn.flexslider)&&wc_single_product_params.flexslider_enabled,this.zoom_enabled=a.isFunction(a.fn.zoom)&&wc_single_product_params.zoom_enabled,this.photoswipe_enabled="undefined"!=typeof PhotoSwipe&&wc_single_product_params.photoswipe_enabled,c&&(this.flexslider_enabled=!1!==c.photoswipe_enabled&&this.flexslider_enabled,this.zoom_enabled=!1!==c.zoom_enabled&&this.zoom_enabled,this.photoswipe_enabled=!1!==c.photoswipe_enabled&&this.photoswipe_enabled),this.initFlexslider=this.initFlexslider.bind(this),this.initZoom=this.initZoom.bind(this),this.initPhotoswipe=this.initPhotoswipe.bind(this),this.onResetSlidePosition=this.onResetSlidePosition.bind(this),this.getGalleryItems=this.getGalleryItems.bind(this),this.openPhotoswipe=this.openPhotoswipe.bind(this),this.flexslider_enabled&&(this.initFlexslider(),b.on("woocommerce_gallery_reset_slide_position",this.onResetSlidePosition)),this.zoom_enabled&&(this.initZoom(),b.on("woocommerce_gallery_init_zoom",this.initZoom)),this.photoswipe_enabled&&this.initPhotoswipe()};b.prototype.initFlexslider=function(){var b=this.$images;this.$target.flexslider({selector:".woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image",animation:wc_single_product_params.flexslider.animation,smoothHeight:wc_single_product_params.flexslider.smoothHeight,directionNav:wc_single_product_params.flexslider.directionNav,controlNav:wc_single_product_params.flexslider.controlNav,slideshow:wc_single_product_params.flexslider.slideshow,animationSpeed:wc_single_product_params.flexslider.animationSpeed,animationLoop:wc_single_product_params.flexslider.animationLoop,start:function(){var c=0;b.each(function(){var b=a(this).height();b>c&&(c=b)}),b.each(function(){a(this).css("min-height",c)})}})},b.prototype.initZoom=function(){var b=this.$images,c=this.$target.width(),d=!1;this.flexslider_enabled||(b=b.first()),a(b).each(function(b,e){var f=a(e).find("img");if(f.attr("width")>c)return d=!0,!1}),d&&(b.trigger("zoom.destroy"),b.zoom({touch:!1}))},b.prototype.initPhotoswipe=function(){this.zoom_enabled&&this.$images.length>0&&(this.$target.prepend('🔍'),this.$target.on("click",".woocommerce-product-gallery__trigger",this.openPhotoswipe)),this.$target.on("click",".woocommerce-product-gallery__image a",this.openPhotoswipe)},b.prototype.onResetSlidePosition=function(){this.$target.flexslider(0)},b.prototype.getGalleryItems=function(){var b=this.$images,c=[];return b.length>0&&b.each(function(b,d){var e=a(d).find("img"),f=e.attr("data-large_image"),g=e.attr("data-large_image_width"),h=e.attr("data-large_image_height"),i={src:f,w:g,h:h,title:e.attr("title")};c.push(i)}),c},b.prototype.openPhotoswipe=function(b){b.preventDefault();var c,d=a(".pswp")[0],e=this.getGalleryItems(),f=a(b.target);c=f.is(".woocommerce-product-gallery__trigger")?this.$target.find(".flex-active-slide"):f.closest(".woocommerce-product-gallery__image");var g={index:a(c).index(),shareEl:!1,closeOnScroll:!1,history:!1,hideAnimationDuration:0,showAnimationDuration:0},h=new PhotoSwipe(d,PhotoSwipeUI_Default,e,g);h.init()},a.fn.wc_product_gallery=function(a){return new b(this,a),this},a(".woocommerce-product-gallery").each(function(){a(this).wc_product_gallery()})}); \ No newline at end of file +jQuery(function(a){if("undefined"==typeof wc_single_product_params)return!1;a("body").on("init",".wc-tabs-wrapper, .woocommerce-tabs",function(){a(".wc-tab, .woocommerce-tabs .panel:not(.panel .panel)").hide();var b=window.location.hash,c=window.location.href,d=a(this).find(".wc-tabs, ul.tabs").first();b.toLowerCase().indexOf("comment-")>=0||"#reviews"===b||"#tab-reviews"===b?d.find("li.reviews_tab a").click():c.indexOf("comment-page-")>0||c.indexOf("cpage=")>0?d.find("li.reviews_tab a").click():d.find("li:first a").click()}).on("click",".wc-tabs li a, ul.tabs li a",function(b){b.preventDefault();var c=a(this),d=c.closest(".wc-tabs-wrapper, .woocommerce-tabs"),e=d.find(".wc-tabs, ul.tabs");e.find("li").removeClass("active"),d.find(".wc-tab, .panel:not(.panel .panel)").hide(),c.closest("li").addClass("active"),d.find(c.attr("href")).show()}).on("click","a.woocommerce-review-link",function(){return a(".reviews_tab a").click(),!0}).on("init","#rating",function(){a("#rating").hide().before('

      12345

      ')}).on("click","#respond p.stars a",function(){var b=a(this),c=a(this).closest("#respond").find("#rating"),d=a(this).closest(".stars");return c.val(b.text()),b.siblings("a").removeClass("active"),b.addClass("active"),d.addClass("selected"),!1}).on("click","#respond #submit",function(){var b=a(this).closest("#respond").find("#rating"),c=b.val();if(b.length>0&&!c&&"yes"===wc_single_product_params.review_rating_required)return window.alert(wc_single_product_params.i18n_required_rating_text),!1}),a(".wc-tabs-wrapper, .woocommerce-tabs, #rating").trigger("init");var b=function(b,c){this.$target=b,this.$images=a(".woocommerce-product-gallery__image",b),0!==this.$images.length&&(b.data("product_gallery",this),this.flexslider_enabled=a.isFunction(a.fn.flexslider)&&wc_single_product_params.flexslider_enabled,this.zoom_enabled=a.isFunction(a.fn.zoom)&&wc_single_product_params.zoom_enabled,this.photoswipe_enabled="undefined"!=typeof PhotoSwipe&&wc_single_product_params.photoswipe_enabled,c&&(this.flexslider_enabled=!1!==c.photoswipe_enabled&&this.flexslider_enabled,this.zoom_enabled=!1!==c.zoom_enabled&&this.zoom_enabled,this.photoswipe_enabled=!1!==c.photoswipe_enabled&&this.photoswipe_enabled),this.initFlexslider=this.initFlexslider.bind(this),this.initZoom=this.initZoom.bind(this),this.initPhotoswipe=this.initPhotoswipe.bind(this),this.onResetSlidePosition=this.onResetSlidePosition.bind(this),this.getGalleryItems=this.getGalleryItems.bind(this),this.openPhotoswipe=this.openPhotoswipe.bind(this),this.flexslider_enabled&&(this.initFlexslider(),b.on("woocommerce_gallery_reset_slide_position",this.onResetSlidePosition)),this.zoom_enabled&&(this.initZoom(),b.on("woocommerce_gallery_init_zoom",this.initZoom)),this.photoswipe_enabled&&this.initPhotoswipe())};b.prototype.initFlexslider=function(){var b=this.$images;this.$target.flexslider({selector:".woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image",animation:wc_single_product_params.flexslider.animation,smoothHeight:wc_single_product_params.flexslider.smoothHeight,directionNav:wc_single_product_params.flexslider.directionNav,controlNav:wc_single_product_params.flexslider.controlNav,slideshow:wc_single_product_params.flexslider.slideshow,animationSpeed:wc_single_product_params.flexslider.animationSpeed,animationLoop:wc_single_product_params.flexslider.animationLoop,start:function(){var c=0;b.each(function(){var b=a(this).height();b>c&&(c=b)}),b.each(function(){a(this).css("min-height",c)})}})},b.prototype.initZoom=function(){var b=this.$images,c=this.$target.width(),d=!1;this.flexslider_enabled||(b=b.first()),a(b).each(function(b,e){var f=a(e).find("img");if(f.attr("width")>c)return d=!0,!1}),d&&(b.trigger("zoom.destroy"),b.zoom({touch:!1}))},b.prototype.initPhotoswipe=function(){this.zoom_enabled&&this.$images.length>0&&(this.$target.prepend('🔍'),this.$target.on("click",".woocommerce-product-gallery__trigger",this.openPhotoswipe)),this.$target.on("click",".woocommerce-product-gallery__image a",this.openPhotoswipe)},b.prototype.onResetSlidePosition=function(){this.$target.flexslider(0)},b.prototype.getGalleryItems=function(){var b=this.$images,c=[];return b.length>0&&b.each(function(b,d){var e=a(d).find("img"),f=e.attr("data-large_image"),g=e.attr("data-large_image_width"),h=e.attr("data-large_image_height"),i={src:f,w:g,h:h,title:e.attr("title")};c.push(i)}),c},b.prototype.openPhotoswipe=function(b){b.preventDefault();var c,d=a(".pswp")[0],e=this.getGalleryItems(),f=a(b.target);c=f.is(".woocommerce-product-gallery__trigger")?this.$target.find(".flex-active-slide"):f.closest(".woocommerce-product-gallery__image");var g={index:a(c).index(),shareEl:!1,closeOnScroll:!1,history:!1,hideAnimationDuration:0,showAnimationDuration:0},h=new PhotoSwipe(d,PhotoSwipeUI_Default,e,g);h.init()},a.fn.wc_product_gallery=function(a){return new b(this,a),this},a(".woocommerce-product-gallery").each(function(){a(this).wc_product_gallery()})}); \ No newline at end of file From 3b35d95c6a21b3b9d97e05c81bcfc2b2bc0521a1 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 22 Mar 2017 12:01:38 +0000 Subject: [PATCH 072/525] Use gmdate and GMT in data stores so times are not changed --- .../abstract-wc-order-data-store-cpt.php | 20 +++++++++---------- .../class-wc-coupon-data-store-cpt.php | 8 ++++---- .../class-wc-customer-data-store.php | 2 +- .../class-wc-product-data-store-cpt.php | 16 +++++++-------- ...ss-wc-product-variation-data-store-cpt.php | 16 +++++++-------- 5 files changed, 31 insertions(+), 31 deletions(-) diff --git a/includes/data-stores/abstract-wc-order-data-store-cpt.php b/includes/data-stores/abstract-wc-order-data-store-cpt.php index 67cbebda782..b83adc2fa96 100644 --- a/includes/data-stores/abstract-wc-order-data-store-cpt.php +++ b/includes/data-stores/abstract-wc-order-data-store-cpt.php @@ -54,8 +54,8 @@ abstract class Abstract_WC_Order_Data_Store_CPT extends WC_Data_Store_WP impleme $order->set_currency( $order->get_currency() ? $order->get_currency() : get_woocommerce_currency() ); $id = wp_insert_post( apply_filters( 'woocommerce_new_order_data', array( - 'post_date' => date( 'Y-m-d H:i:s', $order->get_date_created( 'edit' )->getOffsetTimestamp() ), - 'post_date_gmt' => date( 'Y-m-d H:i:s', $order->get_date_created( 'edit' )->getTimestamp() ), + 'post_date' => gmdate( 'Y-m-d H:i:s', $order->get_date_created( 'edit' )->getOffsetTimestamp() ), + 'post_date_gmt' => gmdate( 'Y-m-d H:i:s', $order->get_date_created( 'edit' )->getTimestamp() ), 'post_type' => $order->get_type( 'edit' ), 'post_status' => 'wc-' . ( $order->get_status( 'edit' ) ? $order->get_status( 'edit' ) : apply_filters( 'woocommerce_default_order_status', 'pending' ) ), 'ping_status' => 'closed', @@ -88,10 +88,10 @@ abstract class Abstract_WC_Order_Data_Store_CPT extends WC_Data_Store_WP impleme $id = $order->get_id(); $order->set_props( array( - 'parent_id' => $post_object->post_parent, - 'date_created' => strtotime( $post_object->post_date_gmt ), - 'date_modified' => strtotime( $post_object->post_modified_gmt ), - 'status' => $post_object->post_status, + 'parent_id' => $post_object->post_parent, + 'date_created' => 0 < $post_object->post_date_gmt ? strtotime( $post_object->post_date_gmt . ' GMT' ) : null, + 'date_modified' => 0 < $post_object->post_modified_gmt ? strtotime( $post_object->post_modified_gmt . ' GMT' ) : null, + 'status' => $post_object->post_status, ) ); $this->read_order_data( $order, $post_object ); @@ -121,13 +121,13 @@ abstract class Abstract_WC_Order_Data_Store_CPT extends WC_Data_Store_WP impleme if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'parent_id', 'post_excerpt' ), array_keys( $changes ) ) ) { wp_update_post( array( 'ID' => $order->get_id(), - 'post_date' => date( 'Y-m-d H:i:s', $order->get_date_created( 'edit' )->getOffsetTimestamp() ), - 'post_date_gmt' => date( 'Y-m-d H:i:s', $order->get_date_created( 'edit' )->getTimestamp() ), + 'post_date' => gmdate( 'Y-m-d H:i:s', $order->get_date_created( 'edit' )->getOffsetTimestamp() ), + 'post_date_gmt' => gmdate( 'Y-m-d H:i:s', $order->get_date_created( 'edit' )->getTimestamp() ), 'post_status' => 'wc-' . ( $order->get_status( 'edit' ) ? $order->get_status( 'edit' ) : apply_filters( 'woocommerce_default_order_status', 'pending' ) ), 'post_parent' => $order->get_parent_id(), 'post_excerpt' => $this->get_post_excerpt( $order ), - 'post_modified' => isset( $changes['date_modified'] ) ? date( 'Y-m-d H:i:s', $order->get_date_modified( 'edit' )->getOffsetTimestamp() ) : current_time( 'mysql' ), - 'post_modified_gmt' => isset( $changes['date_modified'] ) ? date( 'Y-m-d H:i:s', $order->get_date_modified( 'edit' )->getTimestamp() ) : current_time( 'mysql', 1 ), + 'post_modified' => isset( $changes['date_modified'] ) ? gmdate( 'Y-m-d H:i:s', $order->get_date_modified( 'edit' )->getOffsetTimestamp() ) : current_time( 'mysql' ), + 'post_modified_gmt' => isset( $changes['date_modified'] ) ? gmdate( 'Y-m-d H:i:s', $order->get_date_modified( 'edit' )->getTimestamp() ) : current_time( 'mysql', 1 ), ) ); } $this->update_post_meta( $order ); diff --git a/includes/data-stores/class-wc-coupon-data-store-cpt.php b/includes/data-stores/class-wc-coupon-data-store-cpt.php index 6804e59b2fa..f11d250af8e 100644 --- a/includes/data-stores/class-wc-coupon-data-store-cpt.php +++ b/includes/data-stores/class-wc-coupon-data-store-cpt.php @@ -64,8 +64,8 @@ class WC_Coupon_Data_Store_CPT extends WC_Data_Store_WP implements WC_Coupon_Dat 'post_title' => $coupon->get_code(), 'post_content' => '', 'post_excerpt' => $coupon->get_description(), - 'post_date' => date( 'Y-m-d H:i:s', $coupon->get_date_created()->getOffsetTimestamp() ), - 'post_date_gmt' => date( 'Y-m-d H:i:s', $coupon->get_date_created()->getTimestamp() ), + 'post_date' => gmdate( 'Y-m-d H:i:s', $coupon->get_date_created()->getOffsetTimestamp() ), + 'post_date_gmt' => gmdate( 'Y-m-d H:i:s', $coupon->get_date_created()->getTimestamp() ), ) ), true ); if ( $coupon_id ) { @@ -94,8 +94,8 @@ class WC_Coupon_Data_Store_CPT extends WC_Data_Store_WP implements WC_Coupon_Dat $coupon->set_props( array( 'code' => $post_object->post_title, 'description' => $post_object->post_excerpt, - 'date_created' => strtotime( $post_object->post_date_gmt ), - 'date_modified' => strtotime( $post_object->post_modified_gmt ), + 'date_created' => 0 < $post_object->post_date_gmt ? strtotime( $post_object->post_date_gmt . ' GMT' ) : null, + 'date_modified' => 0 < $post_object->post_modified_gmt ? strtotime( $post_object->post_modified_gmt . ' GMT' ) : null, 'date_expires' => metadata_exists( 'post', $coupon_id, 'date_expires' ) ? get_post_meta( $coupon_id, 'date_expires', true ) : get_post_meta( $coupon_id, 'expiry_date', true ), 'discount_type' => get_post_meta( $coupon_id, 'discount_type', true ), 'amount' => get_post_meta( $coupon_id, 'coupon_amount', true ), diff --git a/includes/data-stores/class-wc-customer-data-store.php b/includes/data-stores/class-wc-customer-data-store.php index b062ec80e3e..bfab33df949 100644 --- a/includes/data-stores/class-wc-customer-data-store.php +++ b/includes/data-stores/class-wc-customer-data-store.php @@ -137,7 +137,7 @@ class WC_Customer_Data_Store extends WC_Data_Store_WP implements WC_Customer_Dat 'is_paying_customer' => get_user_meta( $customer_id, 'paying_customer', true ), 'email' => $user_object->user_email, 'username' => $user_object->user_login, - 'date_created' => strtotime( $user_object->user_registered ), + 'date_created' => 0 < $user_object->user_registered ? strtotime( $user_object->user_registered . ' GMT' ) : null, 'date_modified' => get_user_meta( $customer_id, 'last_update', true ), 'role' => ! empty( $user_object->roles[0] ) ? $user_object->roles[0] : 'customer', ) ); diff --git a/includes/data-stores/class-wc-product-data-store-cpt.php b/includes/data-stores/class-wc-product-data-store-cpt.php index 053ab792daf..decb0899bdf 100644 --- a/includes/data-stores/class-wc-product-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-data-store-cpt.php @@ -98,8 +98,8 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da 'comment_status' => $product->get_reviews_allowed() ? 'open' : 'closed', 'ping_status' => 'closed', 'menu_order' => $product->get_menu_order(), - 'post_date' => date( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getOffsetTimestamp() ), - 'post_date_gmt' => date( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getTimestamp() ), + 'post_date' => gmdate( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getOffsetTimestamp() ), + 'post_date_gmt' => gmdate( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getTimestamp() ), ) ), true ); if ( $id && ! is_wp_error( $id ) ) { @@ -137,8 +137,8 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da $product->set_props( array( 'name' => $post_object->post_title, 'slug' => $post_object->post_name, - 'date_created' => strtotime( $post_object->post_date_gmt ), - 'date_modified' => strtotime( $post_object->post_modified_gmt ), + 'date_created' => 0 < $post_object->post_date_gmt ? strtotime( $post_object->post_date_gmt . ' GMT' ) : null, + 'date_modified' => 0 < $post_object->post_modified_gmt ? strtotime( $post_object->post_modified_gmt . ' GMT' ) : null, 'status' => $post_object->post_status, 'description' => $post_object->post_content, 'short_description' => $post_object->post_excerpt, @@ -174,10 +174,10 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da 'comment_status' => $product->get_reviews_allowed( 'edit' ) ? 'open' : 'closed', 'post_status' => $product->get_status( 'edit' ) ? $product->get_status( 'edit' ) : 'publish', 'menu_order' => $product->get_menu_order( 'edit' ), - 'post_date' => date( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getOffsetTimestamp() ), - 'post_date_gmt' => date( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getTimestamp() ), - 'post_modified' => isset( $changes['date_modified'] ) ? date( 'Y-m-d H:i:s', $product->get_date_modified( 'edit' )->getOffsetTimestamp() ) : current_time( 'mysql' ), - 'post_modified_gmt' => isset( $changes['date_modified'] ) ? date( 'Y-m-d H:i:s', $product->get_date_modified( 'edit' )->getTimestamp() ) : current_time( 'mysql', 1 ), + 'post_date' => gmdate( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getOffsetTimestamp() ), + 'post_date_gmt' => gmdate( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getTimestamp() ), + 'post_modified' => isset( $changes['date_modified'] ) ? gmdate( 'Y-m-d H:i:s', $product->get_date_modified( 'edit' )->getOffsetTimestamp() ) : current_time( 'mysql' ), + 'post_modified_gmt' => isset( $changes['date_modified'] ) ? gmdate( 'Y-m-d H:i:s', $product->get_date_modified( 'edit' )->getTimestamp() ) : current_time( 'mysql', 1 ), ) ); } diff --git a/includes/data-stores/class-wc-product-variation-data-store-cpt.php b/includes/data-stores/class-wc-product-variation-data-store-cpt.php index f3dc3ae21f8..e6e54651180 100644 --- a/includes/data-stores/class-wc-product-variation-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-variation-data-store-cpt.php @@ -58,8 +58,8 @@ class WC_Product_Variation_Data_Store_CPT extends WC_Product_Data_Store_CPT impl $product->set_props( array( 'name' => $post_object->post_title, 'slug' => $post_object->post_name, - 'date_created' => strtotime( $post_object->post_date_gmt ), - 'date_modified' => strtotime( $post_object->post_modified_gmt ), + 'date_created' => 0 < $post_object->post_date_gmt ? strtotime( $post_object->post_date_gmt ) : null, + 'date_modified' => 0 < $post_object->post_modified_gmt ? strtotime( $post_object->post_modified_gmt ) : null, 'status' => $post_object->post_status, 'menu_order' => $post_object->menu_order, 'reviews_allowed' => 'open' === $post_object->comment_status, @@ -106,8 +106,8 @@ class WC_Product_Variation_Data_Store_CPT extends WC_Product_Data_Store_CPT impl 'comment_status' => 'closed', 'ping_status' => 'closed', 'menu_order' => $product->get_menu_order(), - 'post_date' => date( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getOffsetTimestamp() ), - 'post_date_gmt' => date( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getTimestamp() ), + 'post_date' => gmdate( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getOffsetTimestamp() ), + 'post_date_gmt' => gmdate( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getTimestamp() ), ) ), true ); if ( $id && ! is_wp_error( $id ) ) { @@ -148,10 +148,10 @@ class WC_Product_Variation_Data_Store_CPT extends WC_Product_Data_Store_CPT impl 'comment_status' => 'closed', 'post_status' => $product->get_status( 'edit' ) ? $product->get_status( 'edit' ) : 'publish', 'menu_order' => $product->get_menu_order( 'edit' ), - 'post_date' => date( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getOffsetTimestamp() ), - 'post_date_gmt' => date( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getTimestamp() ), - 'post_modified' => isset( $changes['date_modified'] ) ? date( 'Y-m-d H:i:s', $product->get_date_modified( 'edit' )->getOffsetTimestamp() ) : current_time( 'mysql' ), - 'post_modified_gmt' => isset( $changes['date_modified'] ) ? date( 'Y-m-d H:i:s', $product->get_date_modified( 'edit' )->getTimestamp() ) : current_time( 'mysql', 1 ), + 'post_date' => gmdate( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getOffsetTimestamp() ), + 'post_date_gmt' => gmdate( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getTimestamp() ), + 'post_modified' => isset( $changes['date_modified'] ) ? gmdate( 'Y-m-d H:i:s', $product->get_date_modified( 'edit' )->getOffsetTimestamp() ) : current_time( 'mysql' ), + 'post_modified_gmt' => isset( $changes['date_modified'] ) ? gmdate( 'Y-m-d H:i:s', $product->get_date_modified( 'edit' )->getTimestamp() ) : current_time( 'mysql', 1 ), ) ); } From a070a7f6d607003a4a42d997e99361ead46a8294 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 22 Mar 2017 12:36:27 +0000 Subject: [PATCH 073/525] Tests --- tests/unit-tests/formatting/functions.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/unit-tests/formatting/functions.php b/tests/unit-tests/formatting/functions.php index a132ad93976..16250d40489 100644 --- a/tests/unit-tests/formatting/functions.php +++ b/tests/unit-tests/formatting/functions.php @@ -531,9 +531,15 @@ class WC_Tests_Formatting_Functions extends WC_Unit_Test_Case { delete_option( 'gmt_offset' ); $this->assertEquals( 'UTC', wc_timezone_string() ); - // test with manually set UTC offset + // test with manually set UTC offset. Will differ based on current DST! update_option( 'gmt_offset', -4 ); - $this->assertEquals( 'America/Halifax', wc_timezone_string() ); + $is_dst = (bool) date( 'I' ); + + if ( $is_dst ) { + $this->assertEquals( 'America/Boa_Vista', wc_timezone_string() ); + } else { + $this->assertEquals( 'America/Halifax', wc_timezone_string() ); + } // test with invalid offset update_option( 'gmt_offset', 99 ); From 75c55c0442764c263d7e48ce993595f76b5c3f31 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 22 Mar 2017 12:37:13 +0000 Subject: [PATCH 074/525] Revert "Tests" This reverts commit a070a7f6d607003a4a42d997e99361ead46a8294. --- tests/unit-tests/formatting/functions.php | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/tests/unit-tests/formatting/functions.php b/tests/unit-tests/formatting/functions.php index 16250d40489..a132ad93976 100644 --- a/tests/unit-tests/formatting/functions.php +++ b/tests/unit-tests/formatting/functions.php @@ -531,15 +531,9 @@ class WC_Tests_Formatting_Functions extends WC_Unit_Test_Case { delete_option( 'gmt_offset' ); $this->assertEquals( 'UTC', wc_timezone_string() ); - // test with manually set UTC offset. Will differ based on current DST! + // test with manually set UTC offset update_option( 'gmt_offset', -4 ); - $is_dst = (bool) date( 'I' ); - - if ( $is_dst ) { - $this->assertEquals( 'America/Boa_Vista', wc_timezone_string() ); - } else { - $this->assertEquals( 'America/Halifax', wc_timezone_string() ); - } + $this->assertEquals( 'America/Halifax', wc_timezone_string() ); // test with invalid offset update_option( 'gmt_offset', 99 ); From e2f144955383a8479e8e41d75aa14f344a9b0496 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 22 Mar 2017 12:51:27 +0000 Subject: [PATCH 075/525] Set data-src Closes #13710 --- templates/single-product/product-image.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/templates/single-product/product-image.php b/templates/single-product/product-image.php index 6cf3045eb7c..9207eb2368a 100644 --- a/templates/single-product/product-image.php +++ b/templates/single-product/product-image.php @@ -38,7 +38,8 @@ $wrapper_classes = apply_filters( 'woocommerce_single_product_image_gallery_cl
    Date: Wed, 22 Mar 2017 18:17:51 -0300 Subject: [PATCH 086/525] [REST API] Added timezone and GMT dates in category image --- ...-wc-rest-product-categories-controller.php | 184 ++++++++++++++++++ 1 file changed, 184 insertions(+) diff --git a/includes/api/class-wc-rest-product-categories-controller.php b/includes/api/class-wc-rest-product-categories-controller.php index be91dc42e5f..cbf3ac9eb2c 100644 --- a/includes/api/class-wc-rest-product-categories-controller.php +++ b/includes/api/class-wc-rest-product-categories-controller.php @@ -28,4 +28,188 @@ class WC_REST_Product_Categories_Controller extends WC_REST_Product_Categories_V * @var string */ protected $namespace = 'wc/v2'; + + /** + * Prepare a single product category output for response. + * + * @param WP_Term $item Term object. + * @param WP_REST_Request $request + * @return WP_REST_Response $response + */ + public function prepare_item_for_response( $item, $request ) { + // Get category display type. + $display_type = get_woocommerce_term_meta( $item->term_id, 'display_type' ); + + // Get category order. + $menu_order = get_woocommerce_term_meta( $item->term_id, 'order' ); + + $data = array( + 'id' => (int) $item->term_id, + 'name' => $item->name, + 'slug' => $item->slug, + 'parent' => (int) $item->parent, + 'description' => $item->description, + 'display' => $display_type ? $display_type : 'default', + 'image' => array(), + 'menu_order' => (int) $menu_order, + 'count' => (int) $item->count, + ); + + // Get category image. + if ( $image_id = get_woocommerce_term_meta( $item->term_id, 'thumbnail_id' ) ) { + $attachment = get_post( $image_id ); + + $data['image'] = array( + 'id' => (int) $image_id, + 'date_created' => wc_rest_prepare_date_response( $attachment->post_date ), + 'date_created_gmt' => wc_rest_prepare_date_response( $attachment->post_date_gmt ), + 'date_modified' => wc_rest_prepare_date_response( $attachment->post_modified ), + 'date_modified_gmt' => wc_rest_prepare_date_response( $attachment->post_modified_gmt ), + 'src' => wp_get_attachment_url( $image_id ), + 'title' => get_the_title( $attachment ), + 'alt' => get_post_meta( $image_id, '_wp_attachment_image_alt', true ), + ); + } + + $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; + $data = $this->add_additional_fields_to_object( $data, $request ); + $data = $this->filter_response_by_context( $data, $context ); + + $response = rest_ensure_response( $data ); + + $response->add_links( $this->prepare_links( $item, $request ) ); + + /** + * Filter a term item returned from the API. + * + * Allows modification of the term data right before it is returned. + * + * @param WP_REST_Response $response The response object. + * @param object $item The original term object. + * @param WP_REST_Request $request Request used to generate the response. + */ + return apply_filters( "woocommerce_rest_prepare_{$this->taxonomy}", $response, $item, $request ); + } + + /** + * Get the Category schema, conforming to JSON Schema. + * + * @return array + */ + public function get_item_schema() { + $schema = array( + '$schema' => 'http://json-schema.org/draft-04/schema#', + 'title' => $this->taxonomy, + 'type' => 'object', + 'properties' => array( + 'id' => array( + 'description' => __( 'Unique identifier for the resource.', 'woocommerce' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'name' => array( + 'description' => __( 'Category name.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'arg_options' => array( + 'sanitize_callback' => 'sanitize_text_field', + ), + ), + 'slug' => array( + 'description' => __( 'An alphanumeric identifier for the resource unique to its type.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'arg_options' => array( + 'sanitize_callback' => 'sanitize_title', + ), + ), + 'parent' => array( + 'description' => __( 'The ID for the parent of the resource.', 'woocommerce' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit' ), + ), + 'description' => array( + 'description' => __( 'HTML description of the resource.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'arg_options' => array( + 'sanitize_callback' => 'wp_filter_post_kses', + ), + ), + 'display' => array( + 'description' => __( 'Category archive display type.', 'woocommerce' ), + 'type' => 'string', + 'default' => 'default', + 'enum' => array( 'default', 'products', 'subcategories', 'both' ), + 'context' => array( 'view', 'edit' ), + ), + 'image' => array( + 'description' => __( 'Image data.', 'woocommerce' ), + 'type' => 'object', + 'context' => array( 'view', 'edit' ), + 'properties' => array( + 'id' => array( + 'description' => __( 'Image ID.', 'woocommerce' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit' ), + ), + 'date_created' => array( + 'description' => __( "The date the image was created, in the site's timezone.", 'woocommerce' ), + 'type' => 'date-time', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'date_created_gmt' => array( + 'description' => __( 'The date the image was created, as GMT', 'woocommerce' ), + 'type' => 'date-time', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'date_modified' => array( + 'description' => __( "The date the image was last modified, in the site's timezone.", 'woocommerce' ), + 'type' => 'date-time', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'date_modified_gmt' => array( + 'description' => __( 'The date the image was last modified, as GMT.', 'woocommerce' ), + 'type' => 'date-time', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'src' => array( + 'description' => __( 'Image URL.', 'woocommerce' ), + 'type' => 'string', + 'format' => 'uri', + 'context' => array( 'view', 'edit' ), + ), + 'name' => array( + 'description' => __( 'Image name.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'alt' => array( + 'description' => __( 'Image alternative text.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + ), + ), + 'menu_order' => array( + 'description' => __( 'Menu order, used to custom sort the resource.', 'woocommerce' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit' ), + ), + 'count' => array( + 'description' => __( 'Number of published products for the resource.', 'woocommerce' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + ), + ); + + return $this->add_additional_fields_schema( $schema ); + } } From 0f5e6373e44bf66c8626225759fc8b9decf0f6a4 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Wed, 22 Mar 2017 18:22:10 -0300 Subject: [PATCH 087/525] [REST API] Include GMT dates for images in schema --- .../class-wc-rest-product-variations-controller.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/includes/api/class-wc-rest-product-variations-controller.php b/includes/api/class-wc-rest-product-variations-controller.php index 40b492c4a7b..e227b6cfce6 100644 --- a/includes/api/class-wc-rest-product-variations-controller.php +++ b/includes/api/class-wc-rest-product-variations-controller.php @@ -835,12 +835,24 @@ class WC_REST_Product_Variations_Controller extends WC_REST_Products_Controller 'context' => array( 'view', 'edit' ), 'readonly' => true, ), + 'date_created_gmt' => array( + 'description' => __( 'The date the image was created, as GMT.', 'woocommerce' ), + 'type' => 'date-time', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), 'date_modified' => array( 'description' => __( "The date the image was last modified, in the site's timezone.", 'woocommerce' ), 'type' => 'date-time', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), + 'date_modified_gmt' => array( + 'description' => __( 'The date the image was last modified, as GMT.', 'woocommerce' ), + 'type' => 'date-time', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), 'src' => array( 'description' => __( 'Image URL.', 'woocommerce' ), 'type' => 'string', From 73f7a39d09692348d5bf94a74ed24f961c5fc3fe Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Wed, 22 Mar 2017 18:28:57 -0300 Subject: [PATCH 088/525] [REST API] Fixed timezone date and included GMT date to product reviews --- ...ass-wc-rest-product-reviews-controller.php | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/includes/api/class-wc-rest-product-reviews-controller.php b/includes/api/class-wc-rest-product-reviews-controller.php index a410483fd82..9c49a1d8568 100644 --- a/includes/api/class-wc-rest-product-reviews-controller.php +++ b/includes/api/class-wc-rest-product-reviews-controller.php @@ -72,6 +72,45 @@ class WC_REST_Product_Reviews_Controller extends WC_REST_Product_Reviews_V1_Cont return true; } + /** + * Prepare a single product review output for response. + * + * @param WP_Comment $review Product review object. + * @param WP_REST_Request $request Request object. + * @return WP_REST_Response $response Response data. + */ + public function prepare_item_for_response( $review, $request ) { + $data = array( + 'id' => (int) $review->comment_ID, + 'date_created' => wc_rest_prepare_date_response( $review->comment_date ), + 'date_created_gmt' => wc_rest_prepare_date_response( $review->comment_date_gmt ), + 'review' => $review->comment_content, + 'rating' => (int) get_comment_meta( $review->comment_ID, 'rating', true ), + 'name' => $review->comment_author, + 'email' => $review->comment_author_email, + 'verified' => wc_review_is_from_verified_owner( $review->comment_ID ), + ); + + $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; + $data = $this->add_additional_fields_to_object( $data, $request ); + $data = $this->filter_response_by_context( $data, $context ); + + // Wrap the data in a response object. + $response = rest_ensure_response( $data ); + + $response->add_links( $this->prepare_links( $review, $request ) ); + + /** + * Filter product reviews object returned from the REST API. + * + * @param WP_REST_Response $response The response object. + * @param WP_Comment $review Product review object used to create response. + * @param WP_REST_Request $request Request object. + */ + return apply_filters( 'woocommerce_rest_prepare_product_review', $response, $review, $request ); + } + + /** * Bulk create, update and delete items. * @@ -100,4 +139,63 @@ class WC_REST_Product_Reviews_Controller extends WC_REST_Product_Reviews_V1_Cont return parent::batch_items( $request ); } + + /** + * Get the Product Review's schema, conforming to JSON Schema. + * + * @return array + */ + public function get_item_schema() { + $schema = array( + '$schema' => 'http://json-schema.org/draft-04/schema#', + 'title' => 'product_review', + 'type' => 'object', + 'properties' => array( + 'id' => array( + 'description' => __( 'Unique identifier for the resource.', 'woocommerce' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'review' => array( + 'description' => __( 'The content of the review.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'date_created' => array( + 'description' => __( "The date the review was created, in the site's timezone.", 'woocommerce' ), + 'type' => 'date-time', + 'context' => array( 'view', 'edit' ), + ), + 'date_created_gmt' => array( + 'description' => __( "The date the review was created, as GMT.", 'woocommerce' ), + 'type' => 'date-time', + 'context' => array( 'view', 'edit' ), + ), + 'rating' => array( + 'description' => __( 'Review rating (0 to 5).', 'woocommerce' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit' ), + ), + 'name' => array( + 'description' => __( 'Reviewer name.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'email' => array( + 'description' => __( 'Reviewer email.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'verified' => array( + 'description' => __( 'Shows if the reviewer bought the product or not.', 'woocommerce' ), + 'type' => 'boolean', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + ), + ); + + return $this->add_additional_fields_schema( $schema ); + } } From 7f8c4b18e10e7fd8be14a2205037665f104cb17b Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Wed, 22 Mar 2017 18:34:10 -0300 Subject: [PATCH 089/525] [REST API] Fixed date and included GMT date for webhook deliveries --- .../api/class-wc-rest-webhook-deliveries.php | 139 ++++++++++++++++++ 1 file changed, 139 insertions(+) diff --git a/includes/api/class-wc-rest-webhook-deliveries.php b/includes/api/class-wc-rest-webhook-deliveries.php index a62c29c802a..3ac64cc1659 100644 --- a/includes/api/class-wc-rest-webhook-deliveries.php +++ b/includes/api/class-wc-rest-webhook-deliveries.php @@ -28,4 +28,143 @@ class WC_REST_Webhook_Deliveries_Controller extends WC_REST_Webhook_Deliveries_V * @var string */ protected $namespace = 'wc/v2'; + + /** + * Prepare a single webhook delivery output for response. + * + * @param stdClass $log Delivery log object. + * @param WP_REST_Request $request Request object. + * @return WP_REST_Response $response Response data. + */ + public function prepare_item_for_response( $log, $request ) { + $data = (array) $log; + + // Add timestamp. + $data['date_created'] = wc_rest_prepare_date_response( $log->comment->comment_date ); + $data['date_created_gmt'] = wc_rest_prepare_date_response( $log->comment->comment_date_gmt ); + + // Remove comment object. + unset( $data['comment'] ); + + $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; + $data = $this->add_additional_fields_to_object( $data, $request ); + $data = $this->filter_response_by_context( $data, $context ); + + // Wrap the data in a response object. + $response = rest_ensure_response( $data ); + + $response->add_links( $this->prepare_links( $log ) ); + + /** + * Filter webhook delivery object returned from the REST API. + * + * @param WP_REST_Response $response The response object. + * @param stdClass $log Delivery log object used to create response. + * @param WP_REST_Request $request Request object. + */ + return apply_filters( 'woocommerce_rest_prepare_webhook_delivery', $response, $log, $request ); + } + + /** + * Get the Webhook's schema, conforming to JSON Schema. + * + * @return array + */ + public function get_item_schema() { + $schema = array( + '$schema' => 'http://json-schema.org/draft-04/schema#', + 'title' => 'webhook_delivery', + 'type' => 'object', + 'properties' => array( + 'id' => array( + 'description' => __( 'Unique identifier for the resource.', 'woocommerce' ), + 'type' => 'integer', + 'context' => array( 'view' ), + 'readonly' => true, + ), + 'duration' => array( + 'description' => __( 'The delivery duration, in seconds.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view' ), + 'readonly' => true, + ), + 'summary' => array( + 'description' => __( 'A friendly summary of the response including the HTTP response code, message, and body.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view' ), + 'readonly' => true, + ), + 'request_url' => array( + 'description' => __( 'The URL where the webhook was delivered.', 'woocommerce' ), + 'type' => 'string', + 'format' => 'uri', + 'context' => array( 'view' ), + 'readonly' => true, + ), + 'request_headers' => array( + 'description' => __( 'The URL where the webhook was delivered.', 'woocommerce' ), + 'type' => 'string', + 'format' => 'uri', + 'context' => array( 'view' ), + 'readonly' => true, + ), + 'request_headers' => array( + 'description' => __( 'Request headers.', 'woocommerce' ), + 'type' => 'array', + 'context' => array( 'view' ), + 'readonly' => true, + 'items' => array( + 'type' => 'string', + ), + ), + 'request_body' => array( + 'description' => __( 'Request body.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view' ), + 'readonly' => true, + ), + 'response_code' => array( + 'description' => __( 'The HTTP response code from the receiving server.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view' ), + 'readonly' => true, + ), + 'response_message' => array( + 'description' => __( 'The HTTP response message from the receiving server.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view' ), + 'readonly' => true, + ), + 'response_headers' => array( + 'description' => __( 'Array of the response headers from the receiving server.', 'woocommerce' ), + 'type' => 'array', + 'context' => array( 'view' ), + 'readonly' => true, + 'items' => array( + 'type' => 'string', + ), + ), + 'response_body' => array( + 'description' => __( 'The response body from the receiving server.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view' ), + 'readonly' => true, + ), + 'date_created' => array( + 'description' => __( "The date the webhook delivery was logged, in the site's timezone.", 'woocommerce' ), + 'type' => 'date-time', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'date_created_gmt' => array( + 'description' => __( 'The date the webhook delivery was logged, GMT.', 'woocommerce' ), + 'type' => 'date-time', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + ), + ); + + return $this->add_additional_fields_schema( $schema ); + } } From c074c9d57b4fcc801f296248ea83918664885d9a Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Wed, 22 Mar 2017 18:36:15 -0300 Subject: [PATCH 090/525] [REST API] Fixed date and included GMT dates to webhooks --- .../api/class-wc-rest-webhooks-controller.php | 143 ++++++++++++++++++ 1 file changed, 143 insertions(+) diff --git a/includes/api/class-wc-rest-webhooks-controller.php b/includes/api/class-wc-rest-webhooks-controller.php index d5551c66bc2..5aa4b6d2907 100644 --- a/includes/api/class-wc-rest-webhooks-controller.php +++ b/includes/api/class-wc-rest-webhooks-controller.php @@ -28,4 +28,147 @@ class WC_REST_Webhooks_Controller extends WC_REST_Webhooks_V1_Controller { * @var string */ protected $namespace = 'wc/v2'; + + /** + * Prepare a single webhook output for response. + * + * @param WP_REST_Request $request Request object. + * @return WP_REST_Response $response Response data. + */ + public function prepare_item_for_response( $post, $request ) { + $id = (int) $post->ID; + $webhook = new WC_Webhook( $id ); + $data = array( + 'id' => $webhook->id, + 'name' => $webhook->get_name(), + 'status' => $webhook->get_status(), + 'topic' => $webhook->get_topic(), + 'resource' => $webhook->get_resource(), + 'event' => $webhook->get_event(), + 'hooks' => $webhook->get_hooks(), + 'delivery_url' => $webhook->get_delivery_url(), + 'date_created' => wc_rest_prepare_date_response( $webhook->get_post_data()->post_date ), + 'date_created_gmt' => wc_rest_prepare_date_response( $webhook->get_post_data()->post_date_gmt ), + 'date_modified' => wc_rest_prepare_date_response( $webhook->get_post_data()->post_modified ), + 'date_modified_gmt' => wc_rest_prepare_date_response( $webhook->get_post_data()->post_modified_gmt ), + ); + + $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; + $data = $this->add_additional_fields_to_object( $data, $request ); + $data = $this->filter_response_by_context( $data, $context ); + + // Wrap the data in a response object. + $response = rest_ensure_response( $data ); + + $response->add_links( $this->prepare_links( $post, $request ) ); + + /** + * Filter webhook object returned from the REST API. + * + * @param WP_REST_Response $response The response object. + * @param WC_Webhook $webhook Webhook object used to create response. + * @param WP_REST_Request $request Request object. + */ + return apply_filters( "woocommerce_rest_prepare_{$this->post_type}", $response, $webhook, $request ); + } + + /** + * Get the Webhook's schema, conforming to JSON Schema. + * + * @return array + */ + public function get_item_schema() { + $schema = array( + '$schema' => 'http://json-schema.org/draft-04/schema#', + 'title' => 'webhook', + 'type' => 'object', + 'properties' => array( + 'id' => array( + 'description' => __( 'Unique identifier for the resource.', 'woocommerce' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'name' => array( + 'description' => __( 'A friendly name for the webhook.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'status' => array( + 'description' => __( 'Webhook status.', 'woocommerce' ), + 'type' => 'string', + 'default' => 'active', + 'enum' => array( 'active', 'paused', 'disabled' ), + 'context' => array( 'view', 'edit' ), + 'arg_options' => array( + 'sanitize_callback' => 'wc_is_webhook_valid_topic', + ), + ), + 'topic' => array( + 'description' => __( 'Webhook topic.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'resource' => array( + 'description' => __( 'Webhook resource.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'event' => array( + 'description' => __( 'Webhook event.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'hooks' => array( + 'description' => __( 'WooCommerce action names associated with the webhook.', 'woocommerce' ), + 'type' => 'array', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + 'items' => array( + 'type' => 'string', + ), + ), + 'delivery_url' => array( + 'description' => __( 'The URL where the webhook payload is delivered.', 'woocommerce' ), + 'type' => 'string', + 'format' => 'uri', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'secret' => array( + 'description' => __( "Secret key used to generate a hash of the delivered webhook and provided in the request headers. This will default is a MD5 hash from the current user's ID|username if not provided.", 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'edit' ), + ), + 'date_created' => array( + 'description' => __( "The date the webhook was created, in the site's timezone.", 'woocommerce' ), + 'type' => 'date-time', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'date_created_gmt' => array( + 'description' => __( 'The date the webhook was created, as GMT.', 'woocommerce' ), + 'type' => 'date-time', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'date_modified' => array( + 'description' => __( "The date the webhook was last modified, in the site's timezone.", 'woocommerce' ), + 'type' => 'date-time', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'date_modified_gmt' => array( + 'description' => __( 'The date the webhook was last modified, as GMT.', 'woocommerce' ), + 'type' => 'date-time', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + ), + ); + + return $this->add_additional_fields_schema( $schema ); + } } From 7e462b9cca5e44824d1e50993b1a9502276c054e Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 23 Mar 2017 00:10:29 +0000 Subject: [PATCH 091/525] Data store date handling --- includes/data-stores/abstract-wc-order-data-store-cpt.php | 4 ++-- includes/data-stores/class-wc-coupon-data-store-cpt.php | 4 ++-- includes/data-stores/class-wc-customer-data-store.php | 4 ++-- includes/data-stores/class-wc-product-data-store-cpt.php | 4 ++-- .../data-stores/class-wc-product-variation-data-store-cpt.php | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/includes/data-stores/abstract-wc-order-data-store-cpt.php b/includes/data-stores/abstract-wc-order-data-store-cpt.php index b83adc2fa96..8b74746070b 100644 --- a/includes/data-stores/abstract-wc-order-data-store-cpt.php +++ b/includes/data-stores/abstract-wc-order-data-store-cpt.php @@ -89,8 +89,8 @@ abstract class Abstract_WC_Order_Data_Store_CPT extends WC_Data_Store_WP impleme $id = $order->get_id(); $order->set_props( array( 'parent_id' => $post_object->post_parent, - 'date_created' => 0 < $post_object->post_date_gmt ? strtotime( $post_object->post_date_gmt . ' GMT' ) : null, - 'date_modified' => 0 < $post_object->post_modified_gmt ? strtotime( $post_object->post_modified_gmt . ' GMT' ) : null, + 'date_created' => 0 < $post_object->post_date_gmt ? wc_string_to_timestamp( $post_object->post_date_gmt ) : null, + 'date_modified' => 0 < $post_object->post_modified_gmt ? wc_string_to_timestamp( $post_object->post_modified_gmt ) : null, 'status' => $post_object->post_status, ) ); diff --git a/includes/data-stores/class-wc-coupon-data-store-cpt.php b/includes/data-stores/class-wc-coupon-data-store-cpt.php index f11d250af8e..b5543c2d424 100644 --- a/includes/data-stores/class-wc-coupon-data-store-cpt.php +++ b/includes/data-stores/class-wc-coupon-data-store-cpt.php @@ -94,8 +94,8 @@ class WC_Coupon_Data_Store_CPT extends WC_Data_Store_WP implements WC_Coupon_Dat $coupon->set_props( array( 'code' => $post_object->post_title, 'description' => $post_object->post_excerpt, - 'date_created' => 0 < $post_object->post_date_gmt ? strtotime( $post_object->post_date_gmt . ' GMT' ) : null, - 'date_modified' => 0 < $post_object->post_modified_gmt ? strtotime( $post_object->post_modified_gmt . ' GMT' ) : null, + 'date_created' => 0 < $post_object->post_date_gmt ? wc_string_to_timestamp( $post_object->post_date_gmt ) : null, + 'date_modified' => 0 < $post_object->post_modified_gmt ? wc_string_to_timestamp( $post_object->post_modified_gmt ) : null, 'date_expires' => metadata_exists( 'post', $coupon_id, 'date_expires' ) ? get_post_meta( $coupon_id, 'date_expires', true ) : get_post_meta( $coupon_id, 'expiry_date', true ), 'discount_type' => get_post_meta( $coupon_id, 'discount_type', true ), 'amount' => get_post_meta( $coupon_id, 'coupon_amount', true ), diff --git a/includes/data-stores/class-wc-customer-data-store.php b/includes/data-stores/class-wc-customer-data-store.php index bfab33df949..eaa6f7d6b35 100644 --- a/includes/data-stores/class-wc-customer-data-store.php +++ b/includes/data-stores/class-wc-customer-data-store.php @@ -104,7 +104,7 @@ class WC_Customer_Data_Store extends WC_Data_Store_WP implements WC_Customer_Dat 'display_name' => $customer->get_first_name() . ' ' . $customer->get_last_name(), ) ); $wp_user = new WP_User( $customer->get_id() ); - $customer->set_date_created( strtotime( $wp_user->user_registered ) ); + $customer->set_date_created( $wp_user->user_registered ); $customer->set_date_modified( get_user_meta( $customer->get_id(), 'last_update', true ) ); $customer->save_meta_data(); $customer->apply_changes(); @@ -137,7 +137,7 @@ class WC_Customer_Data_Store extends WC_Data_Store_WP implements WC_Customer_Dat 'is_paying_customer' => get_user_meta( $customer_id, 'paying_customer', true ), 'email' => $user_object->user_email, 'username' => $user_object->user_login, - 'date_created' => 0 < $user_object->user_registered ? strtotime( $user_object->user_registered . ' GMT' ) : null, + 'date_created' => $user_object->user_registered, // Mysql string in local format. 'date_modified' => get_user_meta( $customer_id, 'last_update', true ), 'role' => ! empty( $user_object->roles[0] ) ? $user_object->roles[0] : 'customer', ) ); diff --git a/includes/data-stores/class-wc-product-data-store-cpt.php b/includes/data-stores/class-wc-product-data-store-cpt.php index decb0899bdf..91697eb9bec 100644 --- a/includes/data-stores/class-wc-product-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-data-store-cpt.php @@ -137,8 +137,8 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da $product->set_props( array( 'name' => $post_object->post_title, 'slug' => $post_object->post_name, - 'date_created' => 0 < $post_object->post_date_gmt ? strtotime( $post_object->post_date_gmt . ' GMT' ) : null, - 'date_modified' => 0 < $post_object->post_modified_gmt ? strtotime( $post_object->post_modified_gmt . ' GMT' ) : null, + 'date_created' => 0 < $post_object->post_date_gmt ? wc_string_to_timestamp( $post_object->post_date_gmt ) : null, + 'date_modified' => 0 < $post_object->post_modified_gmt ? wc_string_to_timestamp( $post_object->post_modified_gmt ) : null, 'status' => $post_object->post_status, 'description' => $post_object->post_content, 'short_description' => $post_object->post_excerpt, diff --git a/includes/data-stores/class-wc-product-variation-data-store-cpt.php b/includes/data-stores/class-wc-product-variation-data-store-cpt.php index e6e54651180..bb3672b7b96 100644 --- a/includes/data-stores/class-wc-product-variation-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-variation-data-store-cpt.php @@ -58,8 +58,8 @@ class WC_Product_Variation_Data_Store_CPT extends WC_Product_Data_Store_CPT impl $product->set_props( array( 'name' => $post_object->post_title, 'slug' => $post_object->post_name, - 'date_created' => 0 < $post_object->post_date_gmt ? strtotime( $post_object->post_date_gmt ) : null, - 'date_modified' => 0 < $post_object->post_modified_gmt ? strtotime( $post_object->post_modified_gmt ) : null, + 'date_created' => 0 < $post_object->post_date_gmt ? wc_string_to_timestamp( $post_object->post_date_gmt ) : null, + 'date_modified' => 0 < $post_object->post_modified_gmt ? wc_string_to_timestamp( $post_object->post_modified_gmt ) : null, 'status' => $post_object->post_status, 'menu_order' => $post_object->menu_order, 'reviews_allowed' => 'open' === $post_object->comment_status, From ba07d53768be7d36f7049369e13f01721ac68bc8 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 23 Mar 2017 00:11:15 +0000 Subject: [PATCH 092/525] Remove guesswork from timezone handling so offsets work correctly regardless of DST --- includes/abstracts/abstract-wc-data.php | 25 +++++++-- includes/class-wc-datetime.php | 33 +++++++++++ includes/wc-formatting-functions.php | 75 ++++++++++++++++++------- 3 files changed, 110 insertions(+), 23 deletions(-) diff --git a/includes/abstracts/abstract-wc-data.php b/includes/abstracts/abstract-wc-data.php index ea447f7396a..18db1eaff71 100644 --- a/includes/abstracts/abstract-wc-data.php +++ b/includes/abstracts/abstract-wc-data.php @@ -633,16 +633,33 @@ abstract class WC_Data { protected function set_date_prop( $prop, $value ) { try { if ( empty( $value ) ) { - $datetime = null; - } elseif ( is_a( $value, 'WC_DateTime' ) ) { + $this->set_prop( $prop, null ); + return; + } + + if ( is_a( $value, 'WC_DateTime' ) ) { $datetime = $value; } elseif ( is_numeric( $value ) ) { + // Timestamps are handled as UTC timestamps in all cases. $datetime = new WC_DateTime( "@{$value}", new DateTimeZone( 'UTC' ) ); + } else { + // Strings are defined in local WP timezone. Convert to UTC. + if ( 1 === preg_match( '/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(Z|((-|\+)\d{2}:\d{2}))$/', $value, $date_bits ) ) { + $offset = ! empty( $date_bits[7] ) ? iso8601_timezone_to_offset( $date_bits[7] ) : wc_timezone_offset(); + $timestamp = gmmktime( $date_bits[4], $date_bits[5], $date_bits[6], $date_bits[2], $date_bits[3], $date_bits[1] ) - $offset; + } else { + $timestamp = wc_string_to_timestamp( get_gmt_from_date( gmdate( 'Y-m-d H:i:s', wc_string_to_timestamp( $value ) ) ) ); + } + $datetime = new WC_DateTime( "@{$timestamp}", new DateTimeZone( 'UTC' ) ); + } + + // Set local timezone or offset. + if ( get_option( 'timezone_string' ) ) { $datetime->setTimezone( new DateTimeZone( wc_timezone_string() ) ); } else { - $datetime = new WC_DateTime( $value, new DateTimeZone( wc_timezone_string() ) ); - $datetime->setTimezone( new DateTimeZone( wc_timezone_string() ) ); + $datetime->set_utc_offset( wc_timezone_offset() ); } + $this->set_prop( $prop, $datetime ); } catch ( Exception $e ) {} } diff --git a/includes/class-wc-datetime.php b/includes/class-wc-datetime.php index b4035f428df..b7b310c3b1f 100644 --- a/includes/class-wc-datetime.php +++ b/includes/class-wc-datetime.php @@ -15,6 +15,12 @@ if ( ! defined( 'ABSPATH' ) ) { */ class WC_DateTime extends DateTime { + /** + * UTC Offset if needed. + * @var integer + */ + protected $utc_offset = 0; + /** * Output an ISO 8601 date string in local timezone. * @@ -25,6 +31,33 @@ class WC_DateTime extends DateTime { return $this->format( DATE_ATOM ); } + /** + * Set UTC offset. + */ + public function set_utc_offset( $offset ) { + $this->utc_offset = intval( $offset ); + } + + /** + * getOffset. + */ + public function getOffset() { + if ( $this->utc_offset ) { + return $this->utc_offset; + } else { + return parent::getOffset(); + } + } + + /** + * Set timezone. + * @param DateTimeZone $timezone + */ + public function setTimezone( $timezone ) { + $this->utc_offset = 0; + return parent::setTimezone( $timezone ); + } + /** * Missing in PHP 5.2. * diff --git a/includes/wc-formatting-functions.php b/includes/wc-formatting-functions.php index c6ea14e9937..d950c276e23 100644 --- a/includes/wc-formatting-functions.php +++ b/includes/wc-formatting-functions.php @@ -533,6 +533,32 @@ function wc_time_format() { return apply_filters( 'woocommerce_time_format', get_option( 'time_format' ) ); } +/** + * Convert mysql datetime to PHP timestamp, forcing UTC. Wrapper for strtotime. + * + * Based on wcs_strtotime_dark_knight() from WC Subscriptions by Prospress. + * + * @since 3.0.0 + * @return int + */ +function wc_string_to_timestamp( $time_string, $from_timestamp = null ) { + $original_timezone = date_default_timezone_get(); + + // @codingStandardsIgnoreStart + date_default_timezone_set( 'UTC' ); + + if ( null === $from_timestamp ) { + $next_timestamp = strtotime( $time_string ); + } else { + $next_timestamp = strtotime( $time_string, $from_timestamp ); + } + + date_default_timezone_set( $original_timezone ); + // @codingStandardsIgnoreEnd + + return $next_timestamp; +} + /** * WooCommerce Timezone - helper to retrieve the timezone string for a site until. * a WP core method exists (see https://core.trac.wordpress.org/ticket/24730). @@ -540,7 +566,7 @@ function wc_time_format() { * Adapted from https://secure.php.net/manual/en/function.timezone-name-from-abbr.php#89155. * * @since 2.1 - * @return string a valid PHP timezone string for the site + * @return string PHP timezone string for the site */ function wc_timezone_string() { @@ -550,7 +576,7 @@ function wc_timezone_string() { } // get UTC offset, if it isn't set then return UTC - if ( 0 === ( $utc_offset = get_option( 'gmt_offset', 0 ) ) ) { + if ( 0 === ( $utc_offset = intval( get_option( 'gmt_offset', 0 ) ) ) ) { return 'UTC'; } @@ -558,25 +584,36 @@ function wc_timezone_string() { $utc_offset *= 3600; // attempt to guess the timezone string from the UTC offset - $timezone = timezone_name_from_abbr( '', $utc_offset, 0 ); - - // last try, guess timezone string manually - if ( false === $timezone ) { - $is_dst = date( 'I' ); - - foreach ( timezone_abbreviations_list() as $abbr ) { - foreach ( $abbr as $city ) { - if ( $city['dst'] == $is_dst && $city['offset'] == $utc_offset ) { - return $city['timezone_id']; - } - } - } - - // fallback to UTC - return 'UTC'; + if ( $timezone = timezone_name_from_abbr( '', $utc_offset ) ) { + return $timezone; } - return $timezone; + // last try, guess timezone string manually + foreach ( timezone_abbreviations_list() as $abbr ) { + foreach ( $abbr as $city ) { + if ( (bool) date( 'I' ) === (bool) $city['dst'] && $city['timezone_id'] && intval( $city['offset'] ) === $utc_offset ) { + return $city['timezone_id']; + } + } + } + + // fallback to UTC + return 'UTC'; +} + +/** + * Get timezone offset in seconds. + * + * @since 3.0.0 + * @return integer + */ +function wc_timezone_offset() { + if ( $timezone = get_option( 'timezone_string' ) ) { + $timezone_object = new DateTimeZone( $timezone ); + return $timezone_object->getOffset( new DateTime( 'now' ) ); + } else { + return intval( get_option( 'gmt_offset', 0 ) ) * HOUR_IN_SECONDS; + } } /** From c0218188a09015d14b7379f413d847ee792954b1 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 23 Mar 2017 00:11:21 +0000 Subject: [PATCH 093/525] Update unit tests --- tests/unit-tests/crud/data.php | 62 ++++++++++++++++------- tests/unit-tests/formatting/functions.php | 2 +- 2 files changed, 45 insertions(+), 19 deletions(-) diff --git a/tests/unit-tests/crud/data.php b/tests/unit-tests/crud/data.php index bc256857e0a..3c5349db1ee 100644 --- a/tests/unit-tests/crud/data.php +++ b/tests/unit-tests/crud/data.php @@ -6,6 +6,27 @@ */ class WC_Tests_CRUD_Data extends WC_Unit_Test_Case { + /** + * Restore UTC on failire. + */ + public function tearDown() { + parent::tearDown(); + // @codingStandardsIgnoreStart + date_default_timezone_set( 'UTC' ); + // @codingStandardsIgnoreEnd + update_option( 'gmt_offset', 0 ); + update_option( 'timezone_string', '' ); + } + + public function onNotSuccessfulTest( $e ) { + // @codingStandardsIgnoreStart + date_default_timezone_set( 'UTC' ); + // @codingStandardsIgnoreEnd + update_option( 'gmt_offset', 0 ); + update_option( 'timezone_string', '' ); + parent::onNotSuccessfulTest( $e ); + } + /** * Create a test post we can add/test meta against. */ @@ -294,7 +315,10 @@ class WC_Tests_CRUD_Data extends WC_Unit_Test_Case { /** * Test protected method set_date_prop by testing a order date setter. */ - function test_set_date_prop_gmt_offset() { + function set_date_prop_gmt_offset( $timezone = 'UTC' ) { + // @codingStandardsIgnoreStart + date_default_timezone_set( $timezone ); + $object = new WC_Order(); // Change timezone in WP. @@ -306,9 +330,10 @@ class WC_Tests_CRUD_Data extends WC_Unit_Test_Case { // Set date to a string without timezone info. This will be assumed in local timezone and thus should match the offset timestamp. $object->set_date_created( '2017-01-02' ); + $this->assertEquals( -14400, $object->get_date_created()->getOffset() ); + $this->assertEquals( '2017-01-02 00:00:00', $object->get_date_created()->date( 'Y-m-d H:i:s' ) ); $this->assertEquals( 1483315200 - $object->get_date_created()->getOffset(), $object->get_date_created()->getTimestamp() ); $this->assertEquals( 1483315200, $object->get_date_created()->getOffsetTimestamp() ); - $this->assertEquals( '2017-01-02 00:00:00', $object->get_date_created()->date( 'Y-m-d H:i:s' ) ); // Date time with no timezone. $object->set_date_created( '2017-01-02T00:00' ); @@ -333,12 +358,18 @@ class WC_Tests_CRUD_Data extends WC_Unit_Test_Case { // Restore default. update_option( 'gmt_offset', 0 ); + + date_default_timezone_set( 'UTC' ); + // @codingStandardsIgnoreEnd } /** * Test protected method set_date_prop by testing a order date setter. */ - function test_set_date_prop_timezone_string() { + function set_date_prop_timezone_string( $timezone = 'UTC' ) { + // @codingStandardsIgnoreStart + date_default_timezone_set( $timezone ); + $object = new WC_Order(); // Repeat tests with timezone_string. America/New_York is -5 in the winter and -4 in summer. @@ -377,30 +408,25 @@ class WC_Tests_CRUD_Data extends WC_Unit_Test_Case { // Restore default. update_option( 'timezone_string', '' ); + + date_default_timezone_set( 'UTC' ); + // @codingStandardsIgnoreEnd } /** * Test protected method set_date_prop by testing a order date setter. */ function test_set_date_prop_server_timezone() { - // Repeat all tests with different server timezone. - // @codingStandardsIgnoreStart - date_default_timezone_set( 'Pacific/Fiji' ); - // @codingStandardsIgnoreEnd - $this->test_set_date_prop_gmt_offset(); - $this->test_set_date_prop_timezone_string(); + $this->set_date_prop_gmt_offset(); + $this->set_date_prop_timezone_string(); // Repeat all tests with different server timezone. - // @codingStandardsIgnoreStart - date_default_timezone_set( 'Pacific/Tahiti' ); - // @codingStandardsIgnoreEnd - $this->test_set_date_prop_gmt_offset(); - $this->test_set_date_prop_timezone_string(); + $this->set_date_prop_gmt_offset( 'Pacific/Fiji' ); + $this->set_date_prop_timezone_string( 'Pacific/Fiji' ); - // Restore to UTC. - // @codingStandardsIgnoreStart - date_default_timezone_set( 'UTC' ); - // @codingStandardsIgnoreEnd + // Repeat all tests with different server timezone. + $this->set_date_prop_gmt_offset( 'Pacific/Tahiti' ); + $this->set_date_prop_timezone_string( 'Pacific/Tahiti' ); } /** diff --git a/tests/unit-tests/formatting/functions.php b/tests/unit-tests/formatting/functions.php index a132ad93976..83bb23b36bd 100644 --- a/tests/unit-tests/formatting/functions.php +++ b/tests/unit-tests/formatting/functions.php @@ -533,7 +533,7 @@ class WC_Tests_Formatting_Functions extends WC_Unit_Test_Case { // test with manually set UTC offset update_option( 'gmt_offset', -4 ); - $this->assertEquals( 'America/Halifax', wc_timezone_string() ); + $this->assertNotEquals( 'UTC', wc_timezone_string() ); // test with invalid offset update_option( 'gmt_offset', 99 ); From 5a85e6a6f87622db982d180ece97ff2287bb5ca0 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 00:38:52 -0300 Subject: [PATCH 094/525] [REST API] Handle variation image as object and not array --- includes/api/class-wc-rest-product-variations-controller.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/includes/api/class-wc-rest-product-variations-controller.php b/includes/api/class-wc-rest-product-variations-controller.php index e227b6cfce6..7447f1317ad 100644 --- a/includes/api/class-wc-rest-product-variations-controller.php +++ b/includes/api/class-wc-rest-product-variations-controller.php @@ -192,7 +192,7 @@ class WC_REST_Product_Variations_Controller extends WC_REST_Products_Controller ), 'shipping_class' => $object->get_shipping_class(), 'shipping_class_id' => $object->get_shipping_class_id(), - 'image' => $this->get_images( $object ), + 'image' => current( $this->get_images( $object ) ), 'attributes' => $this->get_attributes( $object ), 'menu_order' => $object->get_menu_order(), 'meta_data' => $object->get_meta_data(), @@ -261,7 +261,6 @@ class WC_REST_Product_Variations_Controller extends WC_REST_Products_Controller // Thumbnail. if ( isset( $request['image'] ) && is_array( $request['image'] ) ) { $image = $request['image']; - $image = current( $image ); if ( is_array( $image ) ) { $image['position'] = 0; } From 39ed5c00cf38d40edc3c05606413a5beea018fc0 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 02:27:32 -0300 Subject: [PATCH 095/525] [REST API] Fixed refunded_by context in order refunds --- includes/api/class-wc-rest-order-refunds-controller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/api/class-wc-rest-order-refunds-controller.php b/includes/api/class-wc-rest-order-refunds-controller.php index bfa585b5352..eb1aacea895 100644 --- a/includes/api/class-wc-rest-order-refunds-controller.php +++ b/includes/api/class-wc-rest-order-refunds-controller.php @@ -369,7 +369,7 @@ class WC_REST_Order_Refunds_Controller extends WC_REST_Orders_Controller { 'refunded_by' => array( 'description' => __( 'User ID of user who created the refund.', 'woocommerce' ), 'type' => 'integer', - 'context' => array( 'view' ), + 'context' => array( 'view', 'edit' ), ), 'meta_data' => array( 'description' => __( 'Meta data.', 'woocommerce' ), From 7dfd62ecfc7e2e7aef0658bbf5557b035765f3a8 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 02:28:21 -0300 Subject: [PATCH 096/525] [REST API] Fixed download_type context for products v1 --- includes/api/v1/class-wc-rest-products-controller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/api/v1/class-wc-rest-products-controller.php b/includes/api/v1/class-wc-rest-products-controller.php index 6a2c90cb528..ce69364caaa 100644 --- a/includes/api/v1/class-wc-rest-products-controller.php +++ b/includes/api/v1/class-wc-rest-products-controller.php @@ -1914,7 +1914,7 @@ class WC_REST_Products_V1_Controller extends WC_REST_Posts_Controller { 'type' => 'string', 'default' => 'standard', 'enum' => array( 'standard' ), - 'context' => array( 'view' ), + 'context' => array( 'view', 'edit' ), ), 'external_url' => array( 'description' => __( 'Product external URL. Only for external products.', 'woocommerce' ), From 1072bea460d47b558471e9ed883da68cee07c654 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 02:29:06 -0300 Subject: [PATCH 097/525] [REST API] Fixed variations context for products v2 --- includes/api/class-wc-rest-products-controller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/api/class-wc-rest-products-controller.php b/includes/api/class-wc-rest-products-controller.php index 04fd8c8a177..8fd06355fd6 100644 --- a/includes/api/class-wc-rest-products-controller.php +++ b/includes/api/class-wc-rest-products-controller.php @@ -1921,7 +1921,7 @@ class WC_REST_Products_Controller extends WC_REST_Legacy_Products_Controller { 'variations' => array( 'description' => __( 'List of variations IDs.', 'woocommerce' ), 'type' => 'array', - 'context' => array( 'view' ), + 'context' => array( 'view', 'edit' ), 'items' => array( 'type' => 'integer', ), From 6bc29aa77fd59f7a4b1aa4f77b5373a1ea43e690 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 02:32:47 -0300 Subject: [PATCH 098/525] [REST API] Removed deprecated download_type from products v2 --- includes/api/class-wc-rest-products-controller.php | 8 -------- 1 file changed, 8 deletions(-) diff --git a/includes/api/class-wc-rest-products-controller.php b/includes/api/class-wc-rest-products-controller.php index 04fd8c8a177..d64bad542ab 100644 --- a/includes/api/class-wc-rest-products-controller.php +++ b/includes/api/class-wc-rest-products-controller.php @@ -577,7 +577,6 @@ class WC_REST_Products_Controller extends WC_REST_Legacy_Products_Controller { 'downloads' => $this->get_downloads( $product ), 'download_limit' => $product->get_download_limit(), 'download_expiry' => $product->get_download_expiry(), - 'download_type' => 'standard', 'external_url' => $product->is_type( 'external' ) ? $product->get_product_url() : '', 'button_text' => $product->is_type( 'external' ) ? $product->get_button_text() : '', 'tax_status' => $product->get_tax_status(), @@ -1558,13 +1557,6 @@ class WC_REST_Products_Controller extends WC_REST_Legacy_Products_Controller { 'default' => -1, 'context' => array( 'view', 'edit' ), ), - 'download_type' => array( - 'description' => __( 'Download type, this controls the schema on the front-end.', 'woocommerce' ), - 'type' => 'string', - 'default' => 'standard', - 'enum' => array( 'standard' ), - 'context' => array( 'view' ), - ), 'external_url' => array( 'description' => __( 'Product external URL. Only for external products.', 'woocommerce' ), 'type' => 'string', From ece81deb8ee498c03ff6a2ab49bbe5a2013184dd Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 23 Mar 2017 11:13:32 +0000 Subject: [PATCH 099/525] Use term ID, not slug Fixes #13731 --- assets/js/admin/meta-boxes-product.js | 2 +- assets/js/admin/meta-boxes-product.min.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/js/admin/meta-boxes-product.js b/assets/js/admin/meta-boxes-product.js index 4e2644713a1..29d7ed41c38 100644 --- a/assets/js/admin/meta-boxes-product.js +++ b/assets/js/admin/meta-boxes-product.js @@ -407,7 +407,7 @@ jQuery( function( $ ) { window.alert( response.error ); } else if ( response.slug ) { // Success. - $wrapper.find( 'select.attribute_values' ).append( '' ); + $wrapper.find( 'select.attribute_values' ).append( '' ); $wrapper.find( 'select.attribute_values' ).change(); } diff --git a/assets/js/admin/meta-boxes-product.min.js b/assets/js/admin/meta-boxes-product.min.js index 72e90cc2e6b..283b69cee9c 100644 --- a/assets/js/admin/meta-boxes-product.min.js +++ b/assets/js/admin/meta-boxes-product.min.js @@ -1 +1 @@ -jQuery(function(a){function b(){var b=a("select#product-type").val(),c=a("input#_virtual:checked").length,d=a("input#_downloadable:checked").length,e=".hide_if_downloadable, .hide_if_virtual",f=".show_if_downloadable, .show_if_virtual";a.each(woocommerce_admin_meta_boxes.product_types,function(a,b){e=e+", .hide_if_"+b,f=f+", .show_if_"+b}),a(e).show(),a(f).hide(),d&&a(".show_if_downloadable").show(),c&&a(".show_if_virtual").show(),a(".show_if_"+b).show(),d&&a(".hide_if_downloadable").hide(),c&&a(".hide_if_virtual").hide(),a(".hide_if_"+b).hide(),a("input#_manage_stock").change(),a(".woocommerce_options_panel").each(function(){var b=a(this).children(".options_group");if(0!==b.length){var c=b.filter(function(){return"none"===a(this).css("display")});if(c.length===b.length){var d=a(this).prop("id");a(".product_data_tabs").find('li a[href="#'+d+'"]').parent().hide()}}})}function c(){a(".product_attributes .woocommerce_attribute").each(function(b,c){a(".attribute_position",c).val(parseInt(a(c).index(".product_attributes .woocommerce_attribute"),10))})}a(function(){a('[id$="-all"] > ul.categorychecklist').each(function(){var b=a(this),c=b.find(":checked").first();if(c.length){var d=b.find("input").position().top,e=c.position().top;b.closest(".tabs-panel").scrollTop(e-d+5)}})}),a("#upsell_product_data").bind("keypress",function(a){if(13===a.keyCode)return!1}),a(".type_box").appendTo("#woocommerce-product-data .hndle span"),a(function(){a("#woocommerce-product-data").find(".hndle").unbind("click.postboxes"),a("#woocommerce-product-data").on("click",".hndle",function(b){a(b.target).filter("input, option, label, select").length||a("#woocommerce-product-data").toggleClass("closed")})}),a("#catalog-visibility").find(".edit-catalog-visibility").click(function(){return a("#catalog-visibility-select").is(":hidden")&&(a("#catalog-visibility-select").slideDown("fast"),a(this).hide()),!1}),a("#catalog-visibility").find(".save-post-visibility").click(function(){a("#catalog-visibility-select").slideUp("fast"),a("#catalog-visibility").find(".edit-catalog-visibility").show();var b=a("input[name=_visibility]:checked").attr("data-label");return a("input[name=_featured]").is(":checked")&&(b=b+", "+woocommerce_admin_meta_boxes.featured_label,a("input[name=_featured]").attr("checked","checked")),a("#catalog-visibility-display").text(b),!1}),a("#catalog-visibility").find(".cancel-post-visibility").click(function(){a("#catalog-visibility-select").slideUp("fast"),a("#catalog-visibility").find(".edit-catalog-visibility").show();var b=a("#current_visibility").val(),c=a("#current_featured").val();a("input[name=_visibility]").removeAttr("checked"),a("input[name=_visibility][value="+b+"]").attr("checked","checked");var d=a("input[name=_visibility]:checked").attr("data-label");return"yes"===c?(d=d+", "+woocommerce_admin_meta_boxes.featured_label,a("input[name=_featured]").attr("checked","checked")):a("input[name=_featured]").removeAttr("checked"),a("#catalog-visibility-display").text(d),!1}),a("select#product-type").change(function(){var c=a(this).val();"variable"===c?(a("input#_manage_stock").change(),a("input#_downloadable").prop("checked",!1),a("input#_virtual").removeAttr("checked")):"grouped"===c?(a("input#_downloadable").prop("checked",!1),a("input#_virtual").removeAttr("checked")):"external"===c&&(a("input#_downloadable").prop("checked",!1),a("input#_virtual").removeAttr("checked")),b(),a("ul.wc-tabs li:visible").eq(0).find("a").click(),a(document.body).trigger("woocommerce-product-type-change",c,a(this))}).change(),a("input#_downloadable, input#_virtual").change(function(){b()}),a(".sale_price_dates_fields").each(function(){var b=a(this),c=!1,d=b.closest("div, table");b.find("input").each(function(){""!==a(this).val()&&(c=!0)}),c?(d.find(".sale_schedule").hide(),d.find(".sale_price_dates_fields").show()):(d.find(".sale_schedule").show(),d.find(".sale_price_dates_fields").hide())}),a("#woocommerce-product-data").on("click",".sale_schedule",function(){var b=a(this).closest("div, table");return a(this).hide(),b.find(".cancel_sale_schedule").show(),b.find(".sale_price_dates_fields").show(),!1}),a("#woocommerce-product-data").on("click",".cancel_sale_schedule",function(){var b=a(this).closest("div, table");return a(this).hide(),b.find(".sale_schedule").show(),b.find(".sale_price_dates_fields").hide(),b.find(".sale_price_dates_fields").find("input").val(""),!1}),a("#woocommerce-product-data").on("click",".downloadable_files a.insert",function(){return a(this).closest(".downloadable_files").find("tbody").append(a(this).data("row")),!1}),a("#woocommerce-product-data").on("click",".downloadable_files a.delete",function(){return a(this).closest("tr").remove(),!1}),a("input#_manage_stock").change(function(){a(this).is(":checked")?a("div.stock_fields").show():a("div.stock_fields").hide()}).change(),a(".sale_price_dates_fields").each(function(){var b=a(this).find("input").datepicker({defaultDate:"",dateFormat:"yy-mm-dd",numberOfMonths:1,showButtonPanel:!0,onSelect:function(c){var d=a(this).is("#_sale_price_dates_from, .sale_price_dates_from")?"minDate":"maxDate",e=a(this).data("datepicker"),f=a.datepicker.parseDate(e.settings.dateFormat||a.datepicker._defaults.dateFormat,c,e.settings);b.not(this).datepicker("option",d,f)}})});var d=a(".product_attributes").find(".woocommerce_attribute").get();d.sort(function(b,c){var d=parseInt(a(b).attr("rel"),10),e=parseInt(a(c).attr("rel"),10);return de?1:0}),a(d).each(function(b,c){a(".product_attributes").append(c)}),a(".product_attributes .woocommerce_attribute").each(function(b,c){"none"!==a(c).css("display")&&a(c).is(".taxonomy")&&a("select.attribute_taxonomy").find('option[value="'+a(c).data("taxonomy")+'"]').attr("disabled","disabled")}),a("button.add_attribute").on("click",function(){var b=a(".product_attributes .woocommerce_attribute").length,d=a("select.attribute_taxonomy").val(),e=a(this).closest("#product_attributes"),f=e.find(".product_attributes"),g=a("select#product-type").val(),h={action:"woocommerce_add_attribute",taxonomy:d,i:b,security:woocommerce_admin_meta_boxes.add_attribute_nonce};return e.block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),a.post(woocommerce_admin_meta_boxes.ajax_url,h,function(b){f.append(b),"variable"!==g&&f.find(".enable_variation").hide(),a(document.body).trigger("wc-enhanced-select-init"),c(),e.unblock(),a(document.body).trigger("woocommerce_added_attribute")}),d&&(a("select.attribute_taxonomy").find('option[value="'+d+'"]').attr("disabled","disabled"),a("select.attribute_taxonomy").val("")),!1}),a(".product_attributes").on("blur","input.attribute_name",function(){a(this).closest(".woocommerce_attribute").find("strong.attribute_name").text(a(this).val())}),a(".product_attributes").on("click","button.select_all_attributes",function(){return a(this).closest("td").find("select option").attr("selected","selected"),a(this).closest("td").find("select").change(),!1}),a(".product_attributes").on("click","button.select_no_attributes",function(){return a(this).closest("td").find("select option").removeAttr("selected"),a(this).closest("td").find("select").change(),!1}),a(".product_attributes").on("click",".remove_row",function(){if(window.confirm(woocommerce_admin_meta_boxes.remove_attribute)){var b=a(this).parent().parent();b.is(".taxonomy")?(b.find("select, input[type=text]").val(""),b.hide(),a("select.attribute_taxonomy").find('option[value="'+b.data("taxonomy")+'"]').removeAttr("disabled")):(b.find("select, input[type=text]").val(""),b.hide(),c())}return!1}),a(".product_attributes").sortable({items:".woocommerce_attribute",cursor:"move",axis:"y",handle:"h3",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",opacity:.65,placeholder:"wc-metabox-sortable-placeholder",start:function(a,b){b.item.css("background-color","#f6f6f6")},stop:function(a,b){b.item.removeAttr("style"),c()}}),a(".product_attributes").on("click","button.add_new_attribute",function(){a(".product_attributes").block({message:null,overlayCSS:{background:"#fff",opacity:.6}});var b=a(this).closest(".woocommerce_attribute"),c=b.data("taxonomy"),d=window.prompt(woocommerce_admin_meta_boxes.new_attribute_prompt);if(d){var e={action:"woocommerce_add_new_attribute",taxonomy:c,term:d,security:woocommerce_admin_meta_boxes.add_attribute_nonce};a.post(woocommerce_admin_meta_boxes.ajax_url,e,function(c){c.error?window.alert(c.error):c.slug&&(b.find("select.attribute_values").append('"),b.find("select.attribute_values").change()),a(".product_attributes").unblock()})}else a(".product_attributes").unblock();return!1}),a(".save_attributes").on("click",function(){a("#woocommerce-product-data").block({message:null,overlayCSS:{background:"#fff",opacity:.6}});var b={post_id:woocommerce_admin_meta_boxes.post_id,product_type:a("#product-type").val(),data:a(".product_attributes").find("input, select, textarea").serialize(),action:"woocommerce_save_attributes",security:woocommerce_admin_meta_boxes.save_attributes_nonce};a.post(woocommerce_admin_meta_boxes.ajax_url,b,function(){var b=window.location.toString();b=b.replace("post-new.php?","post.php?post="+woocommerce_admin_meta_boxes.post_id+"&action=edit&"),a("#variable_product_options").load(b+" #variable_product_options_inner",function(){a("#variable_product_options").trigger("reload")})})});var e,f;a(document.body).on("click",".upload_file_button",function(b){var c=a(this);if(f=c.closest("tr").find("td.file_url input"),b.preventDefault(),e)return void e.open();var d=[new wp.media.controller.Library({library:wp.media.query(),multiple:!0,title:c.data("choose"),priority:20,filterable:"uploaded"})];e=wp.media.frames.downloadable_file=wp.media({title:c.data("choose"),library:{type:""},button:{text:c.data("update")},multiple:!0,states:d}),e.on("select",function(){var a="",b=e.state().get("selection");b.map(function(b){b=b.toJSON(),b.url&&(a=b.url)}),f.val(a).change()}),e.on("ready",function(){e.uploader.options.uploader.params={type:"downloadable_product"}}),e.open()}),a(".downloadable_files tbody").sortable({items:"tr",cursor:"move",axis:"y",handle:"td.sort",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",opacity:.65});var g,h=a("#product_image_gallery"),i=a("#product_images_container").find("ul.product_images");a(".add_product_images").on("click","a",function(b){var c=a(this);return b.preventDefault(),g?void g.open():(g=wp.media.frames.product_gallery=wp.media({title:c.data("choose"),button:{text:c.data("update")},states:[new wp.media.controller.Library({title:c.data("choose"),filterable:"all",multiple:!0})]}),g.on("select",function(){var a=g.state().get("selection"),b=h.val();a.map(function(a){if(a=a.toJSON(),a.id){b=b?b+","+a.id:a.id;var d=a.sizes&&a.sizes.thumbnail?a.sizes.thumbnail.url:a.url;i.append('
  • ")}}),h.val(b)}),void g.open())}),i.sortable({items:"li.image",cursor:"move",scrollSensitivity:40,forcePlaceholderSize:!0,forceHelperSize:!1,helper:"clone",opacity:.65,placeholder:"wc-metabox-sortable-placeholder",start:function(a,b){b.item.css("background-color","#f6f6f6")},stop:function(a,b){b.item.removeAttr("style")},update:function(){var b="";a("#product_images_container").find("ul li.image").css("cursor","default").each(function(){var c=a(this).attr("data-attachment_id");b=b+c+","}),h.val(b)}}),a("#product_images_container").on("click","a.delete",function(){a(this).closest("li.image").remove();var b="";return a("#product_images_container").find("ul li.image").css("cursor","default").each(function(){var c=a(this).attr("data-attachment_id");b=b+c+","}),h.val(b),a("#tiptip_holder").removeAttr("style"),a("#tiptip_arrow").removeAttr("style"),!1})}); \ No newline at end of file +jQuery(function(a){function b(){var b=a("select#product-type").val(),c=a("input#_virtual:checked").length,d=a("input#_downloadable:checked").length,e=".hide_if_downloadable, .hide_if_virtual",f=".show_if_downloadable, .show_if_virtual";a.each(woocommerce_admin_meta_boxes.product_types,function(a,b){e=e+", .hide_if_"+b,f=f+", .show_if_"+b}),a(e).show(),a(f).hide(),d&&a(".show_if_downloadable").show(),c&&a(".show_if_virtual").show(),a(".show_if_"+b).show(),d&&a(".hide_if_downloadable").hide(),c&&a(".hide_if_virtual").hide(),a(".hide_if_"+b).hide(),a("input#_manage_stock").change(),a(".woocommerce_options_panel").each(function(){var b=a(this).children(".options_group");if(0!==b.length){var c=b.filter(function(){return"none"===a(this).css("display")});if(c.length===b.length){var d=a(this).prop("id");a(".product_data_tabs").find('li a[href="#'+d+'"]').parent().hide()}}})}function c(){a(".product_attributes .woocommerce_attribute").each(function(b,c){a(".attribute_position",c).val(parseInt(a(c).index(".product_attributes .woocommerce_attribute"),10))})}a(function(){a('[id$="-all"] > ul.categorychecklist').each(function(){var b=a(this),c=b.find(":checked").first();if(c.length){var d=b.find("input").position().top,e=c.position().top;b.closest(".tabs-panel").scrollTop(e-d+5)}})}),a("#upsell_product_data").bind("keypress",function(a){if(13===a.keyCode)return!1}),a(".type_box").appendTo("#woocommerce-product-data .hndle span"),a(function(){a("#woocommerce-product-data").find(".hndle").unbind("click.postboxes"),a("#woocommerce-product-data").on("click",".hndle",function(b){a(b.target).filter("input, option, label, select").length||a("#woocommerce-product-data").toggleClass("closed")})}),a("#catalog-visibility").find(".edit-catalog-visibility").click(function(){return a("#catalog-visibility-select").is(":hidden")&&(a("#catalog-visibility-select").slideDown("fast"),a(this).hide()),!1}),a("#catalog-visibility").find(".save-post-visibility").click(function(){a("#catalog-visibility-select").slideUp("fast"),a("#catalog-visibility").find(".edit-catalog-visibility").show();var b=a("input[name=_visibility]:checked").attr("data-label");return a("input[name=_featured]").is(":checked")&&(b=b+", "+woocommerce_admin_meta_boxes.featured_label,a("input[name=_featured]").attr("checked","checked")),a("#catalog-visibility-display").text(b),!1}),a("#catalog-visibility").find(".cancel-post-visibility").click(function(){a("#catalog-visibility-select").slideUp("fast"),a("#catalog-visibility").find(".edit-catalog-visibility").show();var b=a("#current_visibility").val(),c=a("#current_featured").val();a("input[name=_visibility]").removeAttr("checked"),a("input[name=_visibility][value="+b+"]").attr("checked","checked");var d=a("input[name=_visibility]:checked").attr("data-label");return"yes"===c?(d=d+", "+woocommerce_admin_meta_boxes.featured_label,a("input[name=_featured]").attr("checked","checked")):a("input[name=_featured]").removeAttr("checked"),a("#catalog-visibility-display").text(d),!1}),a("select#product-type").change(function(){var c=a(this).val();"variable"===c?(a("input#_manage_stock").change(),a("input#_downloadable").prop("checked",!1),a("input#_virtual").removeAttr("checked")):"grouped"===c?(a("input#_downloadable").prop("checked",!1),a("input#_virtual").removeAttr("checked")):"external"===c&&(a("input#_downloadable").prop("checked",!1),a("input#_virtual").removeAttr("checked")),b(),a("ul.wc-tabs li:visible").eq(0).find("a").click(),a(document.body).trigger("woocommerce-product-type-change",c,a(this))}).change(),a("input#_downloadable, input#_virtual").change(function(){b()}),a(".sale_price_dates_fields").each(function(){var b=a(this),c=!1,d=b.closest("div, table");b.find("input").each(function(){""!==a(this).val()&&(c=!0)}),c?(d.find(".sale_schedule").hide(),d.find(".sale_price_dates_fields").show()):(d.find(".sale_schedule").show(),d.find(".sale_price_dates_fields").hide())}),a("#woocommerce-product-data").on("click",".sale_schedule",function(){var b=a(this).closest("div, table");return a(this).hide(),b.find(".cancel_sale_schedule").show(),b.find(".sale_price_dates_fields").show(),!1}),a("#woocommerce-product-data").on("click",".cancel_sale_schedule",function(){var b=a(this).closest("div, table");return a(this).hide(),b.find(".sale_schedule").show(),b.find(".sale_price_dates_fields").hide(),b.find(".sale_price_dates_fields").find("input").val(""),!1}),a("#woocommerce-product-data").on("click",".downloadable_files a.insert",function(){return a(this).closest(".downloadable_files").find("tbody").append(a(this).data("row")),!1}),a("#woocommerce-product-data").on("click",".downloadable_files a.delete",function(){return a(this).closest("tr").remove(),!1}),a("input#_manage_stock").change(function(){a(this).is(":checked")?a("div.stock_fields").show():a("div.stock_fields").hide()}).change(),a(".sale_price_dates_fields").each(function(){var b=a(this).find("input").datepicker({defaultDate:"",dateFormat:"yy-mm-dd",numberOfMonths:1,showButtonPanel:!0,onSelect:function(c){var d=a(this).is("#_sale_price_dates_from, .sale_price_dates_from")?"minDate":"maxDate",e=a(this).data("datepicker"),f=a.datepicker.parseDate(e.settings.dateFormat||a.datepicker._defaults.dateFormat,c,e.settings);b.not(this).datepicker("option",d,f)}})});var d=a(".product_attributes").find(".woocommerce_attribute").get();d.sort(function(b,c){var d=parseInt(a(b).attr("rel"),10),e=parseInt(a(c).attr("rel"),10);return de?1:0}),a(d).each(function(b,c){a(".product_attributes").append(c)}),a(".product_attributes .woocommerce_attribute").each(function(b,c){"none"!==a(c).css("display")&&a(c).is(".taxonomy")&&a("select.attribute_taxonomy").find('option[value="'+a(c).data("taxonomy")+'"]').attr("disabled","disabled")}),a("button.add_attribute").on("click",function(){var b=a(".product_attributes .woocommerce_attribute").length,d=a("select.attribute_taxonomy").val(),e=a(this).closest("#product_attributes"),f=e.find(".product_attributes"),g=a("select#product-type").val(),h={action:"woocommerce_add_attribute",taxonomy:d,i:b,security:woocommerce_admin_meta_boxes.add_attribute_nonce};return e.block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),a.post(woocommerce_admin_meta_boxes.ajax_url,h,function(b){f.append(b),"variable"!==g&&f.find(".enable_variation").hide(),a(document.body).trigger("wc-enhanced-select-init"),c(),e.unblock(),a(document.body).trigger("woocommerce_added_attribute")}),d&&(a("select.attribute_taxonomy").find('option[value="'+d+'"]').attr("disabled","disabled"),a("select.attribute_taxonomy").val("")),!1}),a(".product_attributes").on("blur","input.attribute_name",function(){a(this).closest(".woocommerce_attribute").find("strong.attribute_name").text(a(this).val())}),a(".product_attributes").on("click","button.select_all_attributes",function(){return a(this).closest("td").find("select option").attr("selected","selected"),a(this).closest("td").find("select").change(),!1}),a(".product_attributes").on("click","button.select_no_attributes",function(){return a(this).closest("td").find("select option").removeAttr("selected"),a(this).closest("td").find("select").change(),!1}),a(".product_attributes").on("click",".remove_row",function(){if(window.confirm(woocommerce_admin_meta_boxes.remove_attribute)){var b=a(this).parent().parent();b.is(".taxonomy")?(b.find("select, input[type=text]").val(""),b.hide(),a("select.attribute_taxonomy").find('option[value="'+b.data("taxonomy")+'"]').removeAttr("disabled")):(b.find("select, input[type=text]").val(""),b.hide(),c())}return!1}),a(".product_attributes").sortable({items:".woocommerce_attribute",cursor:"move",axis:"y",handle:"h3",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",opacity:.65,placeholder:"wc-metabox-sortable-placeholder",start:function(a,b){b.item.css("background-color","#f6f6f6")},stop:function(a,b){b.item.removeAttr("style"),c()}}),a(".product_attributes").on("click","button.add_new_attribute",function(){a(".product_attributes").block({message:null,overlayCSS:{background:"#fff",opacity:.6}});var b=a(this).closest(".woocommerce_attribute"),c=b.data("taxonomy"),d=window.prompt(woocommerce_admin_meta_boxes.new_attribute_prompt);if(d){var e={action:"woocommerce_add_new_attribute",taxonomy:c,term:d,security:woocommerce_admin_meta_boxes.add_attribute_nonce};a.post(woocommerce_admin_meta_boxes.ajax_url,e,function(c){c.error?window.alert(c.error):c.slug&&(b.find("select.attribute_values").append('"),b.find("select.attribute_values").change()),a(".product_attributes").unblock()})}else a(".product_attributes").unblock();return!1}),a(".save_attributes").on("click",function(){a("#woocommerce-product-data").block({message:null,overlayCSS:{background:"#fff",opacity:.6}});var b={post_id:woocommerce_admin_meta_boxes.post_id,product_type:a("#product-type").val(),data:a(".product_attributes").find("input, select, textarea").serialize(),action:"woocommerce_save_attributes",security:woocommerce_admin_meta_boxes.save_attributes_nonce};a.post(woocommerce_admin_meta_boxes.ajax_url,b,function(){var b=window.location.toString();b=b.replace("post-new.php?","post.php?post="+woocommerce_admin_meta_boxes.post_id+"&action=edit&"),a("#variable_product_options").load(b+" #variable_product_options_inner",function(){a("#variable_product_options").trigger("reload")})})});var e,f;a(document.body).on("click",".upload_file_button",function(b){var c=a(this);if(f=c.closest("tr").find("td.file_url input"),b.preventDefault(),e)return void e.open();var d=[new wp.media.controller.Library({library:wp.media.query(),multiple:!0,title:c.data("choose"),priority:20,filterable:"uploaded"})];e=wp.media.frames.downloadable_file=wp.media({title:c.data("choose"),library:{type:""},button:{text:c.data("update")},multiple:!0,states:d}),e.on("select",function(){var a="",b=e.state().get("selection");b.map(function(b){b=b.toJSON(),b.url&&(a=b.url)}),f.val(a).change()}),e.on("ready",function(){e.uploader.options.uploader.params={type:"downloadable_product"}}),e.open()}),a(".downloadable_files tbody").sortable({items:"tr",cursor:"move",axis:"y",handle:"td.sort",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",opacity:.65});var g,h=a("#product_image_gallery"),i=a("#product_images_container").find("ul.product_images");a(".add_product_images").on("click","a",function(b){var c=a(this);return b.preventDefault(),g?void g.open():(g=wp.media.frames.product_gallery=wp.media({title:c.data("choose"),button:{text:c.data("update")},states:[new wp.media.controller.Library({title:c.data("choose"),filterable:"all",multiple:!0})]}),g.on("select",function(){var a=g.state().get("selection"),b=h.val();a.map(function(a){if(a=a.toJSON(),a.id){b=b?b+","+a.id:a.id;var d=a.sizes&&a.sizes.thumbnail?a.sizes.thumbnail.url:a.url;i.append('
  • ")}}),h.val(b)}),void g.open())}),i.sortable({items:"li.image",cursor:"move",scrollSensitivity:40,forcePlaceholderSize:!0,forceHelperSize:!1,helper:"clone",opacity:.65,placeholder:"wc-metabox-sortable-placeholder",start:function(a,b){b.item.css("background-color","#f6f6f6")},stop:function(a,b){b.item.removeAttr("style")},update:function(){var b="";a("#product_images_container").find("ul li.image").css("cursor","default").each(function(){var c=a(this).attr("data-attachment_id");b=b+c+","}),h.val(b)}}),a("#product_images_container").on("click","a.delete",function(){a(this).closest("li.image").remove();var b="";return a("#product_images_container").find("ul li.image").css("cursor","default").each(function(){var c=a(this).attr("data-attachment_id");b=b+c+","}),h.val(b),a("#tiptip_holder").removeAttr("style"),a("#tiptip_arrow").removeAttr("style"),!1})}); \ No newline at end of file From 489ebedfcd0093ba1289a2a5dc6adf6564eff444 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 23 Mar 2017 11:18:41 +0000 Subject: [PATCH 100/525] Use floats for qty Fixes #13728 --- includes/wc-product-functions.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/includes/wc-product-functions.php b/includes/wc-product-functions.php index e1a0ddbc710..e20ce4cffc8 100644 --- a/includes/wc-product-functions.php +++ b/includes/wc-product-functions.php @@ -884,11 +884,11 @@ function wc_get_price_including_tax( $product, $args = array() ) { ) ); $price = '' !== $args['price'] ? max( 0.0, (float) $args['price'] ) : $product->get_price(); - $qty = '' !== $args['qty'] ? max( 0, (int) $args['qty'] ) : 1; + $qty = '' !== $args['qty'] ? max( 0.0, (float) $args['qty'] ) : 1; if ( '' === $price ) { return ''; - } elseif ( 0 === $qty ) { + } elseif ( empty( $qty ) ) { return 0.0; } @@ -943,11 +943,11 @@ function wc_get_price_excluding_tax( $product, $args = array() ) { ) ); $price = '' !== $args['price'] ? max( 0.0, (float) $args['price'] ) : $product->get_price(); - $qty = '' !== $args['qty'] ? max( 0, (int) $args['qty'] ) : 1; + $qty = '' !== $args['qty'] ? max( 0.0, (float) $args['qty'] ) : 1; if ( '' === $price ) { return ''; - } elseif ( 0 === $qty ) { + } elseif ( empty( $qty ) ) { return 0.0; } From a0949747fa8c6e81fbfd3b9cfa16b6fa558929ba Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 23 Mar 2017 11:25:03 +0000 Subject: [PATCH 101/525] Hide refund email from resend option Closes #13713 See https://github.com/woocommerce/woocommerce/issues/13738 --- includes/admin/meta-boxes/class-wc-meta-box-order-actions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/admin/meta-boxes/class-wc-meta-box-order-actions.php b/includes/admin/meta-boxes/class-wc-meta-box-order-actions.php index 2b72d55ed72..b6184682ba0 100644 --- a/includes/admin/meta-boxes/class-wc-meta-box-order-actions.php +++ b/includes/admin/meta-boxes/class-wc-meta-box-order-actions.php @@ -43,7 +43,7 @@ class WC_Meta_Box_Order_Actions { mailer(); - $available_emails = apply_filters( 'woocommerce_resend_order_emails_available', array( 'new_order', 'cancelled_order', 'customer_processing_order', 'customer_completed_order', 'customer_invoice', 'customer_refunded_order' ) ); + $available_emails = apply_filters( 'woocommerce_resend_order_emails_available', array( 'new_order', 'cancelled_order', 'customer_processing_order', 'customer_completed_order', 'customer_invoice' ) ); $mails = $mailer->get_emails(); if ( ! empty( $mails ) && ! empty( $available_emails ) ) { ?> From 73dd37fbd72659114068819b1da077c546cd7187 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 23 Mar 2017 14:21:16 +0000 Subject: [PATCH 102/525] Show variation prices if the sale prices do not all match fixes #13734 --- includes/class-wc-product-variable.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/includes/class-wc-product-variable.php b/includes/class-wc-product-variable.php index c139dca0c70..c641278dd90 100644 --- a/includes/class-wc-product-variable.php +++ b/includes/class-wc-product-variable.php @@ -266,12 +266,15 @@ class WC_Product_Variable extends WC_Product { $variation = wc_get_product( $variation ); } + // See if prices should be shown for each variation after selection. + $show_variation_price = apply_filters( 'woocommerce_show_variation_price', $variation->get_price() === "" || $this->get_variation_sale_price( 'min' ) !== $this->get_variation_sale_price( 'max' ) || $this->get_variation_regular_price( 'min' ) !== $this->get_variation_regular_price( 'max' ), $this, $variation ); + return apply_filters( 'woocommerce_available_variation', array_merge( $variation->get_data(), array( 'attributes' => $variation->get_variation_attributes(), 'image' => wc_get_product_attachment_props( $variation->get_image_id() ), 'weight_html' => wc_format_weight( $variation->get_weight() ), 'dimensions_html' => wc_format_dimensions( $variation->get_dimensions( false ) ), - 'price_html' => apply_filters( 'woocommerce_show_variation_price', $variation->get_price() === "" || $this->get_variation_price( 'min' ) !== $this->get_variation_price( 'max' ), $this, $variation ) ? '' . $variation->get_price_html() . '' : '', + 'price_html' => $show_variation_price ? '' . $variation->get_price_html() . '' : '', 'availability_html' => wc_get_stock_html( $variation ), 'variation_id' => $variation->get_id(), 'variation_is_visible' => $variation->variation_is_visible(), From e8974f709d0f1d119beac38045b25f165d6d6da5 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 23 Mar 2017 14:25:56 +0000 Subject: [PATCH 103/525] docblock Closes #13740 --- templates/emails/customer-on-hold-order.php | 2 +- templates/emails/plain/customer-on-hold-order.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/emails/customer-on-hold-order.php b/templates/emails/customer-on-hold-order.php index b5a22691c7d..c766ab1b2f5 100644 --- a/templates/emails/customer-on-hold-order.php +++ b/templates/emails/customer-on-hold-order.php @@ -2,7 +2,7 @@ /** * Customer on-hold order email * - * This template can be overridden by copying it to yourtheme/woocommerce/emails/customer-processing-order.php. + * This template can be overridden by copying it to yourtheme/woocommerce/emails/customer-on-hold-order.php. * * HOWEVER, on occasion WooCommerce will need to update template files and you * (the theme developer) will need to copy the new files to your theme to diff --git a/templates/emails/plain/customer-on-hold-order.php b/templates/emails/plain/customer-on-hold-order.php index ce2321eaf70..04bec34671a 100644 --- a/templates/emails/plain/customer-on-hold-order.php +++ b/templates/emails/plain/customer-on-hold-order.php @@ -2,7 +2,7 @@ /** * Customer on-hold order email * - * This template can be overridden by copying it to yourtheme/woocommerce/emails/plain/customer-processing-order.php. + * This template can be overridden by copying it to yourtheme/woocommerce/emails/plain/customer-on-hold-order.php. * * HOWEVER, on occasion WooCommerce will need to update template files and you * (the theme developer) will need to copy the new files to your theme to From 28c8ae8f95035195ac2fb8e380fe5d8509a96bbc Mon Sep 17 00:00:00 2001 From: Rodrigo Primo Date: Thu, 23 Mar 2017 12:32:02 -0300 Subject: [PATCH 104/525] Add the class name to deprecated messages wherever appropriate Doing this change to make it easier to locate the deprecated method and its replacement and also to be consistent with the other deprecated messages. --- includes/legacy/abstract-wc-legacy-order.php | 36 +++++++++---------- .../abstract-wc-legacy-payment-token.php | 4 +-- includes/legacy/class-wc-legacy-coupon.php | 8 ++--- .../legacy/class-wc-legacy-shipping-zone.php | 4 +-- 4 files changed, 26 insertions(+), 26 deletions(-) diff --git a/includes/legacy/abstract-wc-legacy-order.php b/includes/legacy/abstract-wc-legacy-order.php index b29793a30e8..d735269a9e4 100644 --- a/includes/legacy/abstract-wc-legacy-order.php +++ b/includes/legacy/abstract-wc-legacy-order.php @@ -479,7 +479,7 @@ abstract class WC_Abstract_Legacy_Order extends WC_Data { * @param array $item */ public function display_item_meta( $item ) { - wc_deprecated_function( 'display_item_meta', '3.0', 'wc_display_item_meta' ); + wc_deprecated_function( 'WC_Order::display_item_meta', '3.0', 'wc_display_item_meta' ); $product = $item->get_product(); $item_meta = new WC_Order_Item_Meta( $item, $product ); $item_meta->display(); @@ -490,7 +490,7 @@ abstract class WC_Abstract_Legacy_Order extends WC_Data { * @param array $item */ public function display_item_downloads( $item ) { - wc_deprecated_function( 'display_item_downloads', '3.0', 'wc_display_item_downloads' ); + wc_deprecated_function( 'WC_Order::display_item_downloads', '3.0', 'wc_display_item_downloads' ); $product = $item->get_product(); if ( $product && $product->exists() && $product->is_downloadable() && $this->is_download_permitted() ) { @@ -517,7 +517,7 @@ abstract class WC_Abstract_Legacy_Order extends WC_Data { * @return string */ public function get_download_url( $product_id, $download_id ) { - wc_deprecated_function( 'get_download_url', '3.0', 'WC_Order_Item_Product::get_item_download_url' ); + wc_deprecated_function( 'WC_Order::get_download_url', '3.0', 'WC_Order_Item_Product::get_item_download_url' ); return add_query_arg( array( 'download_file' => $product_id, 'order' => $this->get_order_key(), @@ -533,7 +533,7 @@ abstract class WC_Abstract_Legacy_Order extends WC_Data { * @return array */ public function get_item_downloads( $item ) { - wc_deprecated_function( 'get_item_downloads', '3.0', 'WC_Order_Item_Product::get_item_downloads' ); + wc_deprecated_function( 'WC_Order::get_item_downloads', '3.0', 'WC_Order_Item_Product::get_item_downloads' ); if ( ! $item instanceof WC_Order_Item ) { if ( ! empty( $item['variation_id'] ) ) { @@ -572,7 +572,7 @@ abstract class WC_Abstract_Legacy_Order extends WC_Data { * @return array|string */ public function get_item_meta( $order_item_id, $key = '', $single = false ) { - wc_deprecated_function( 'get_item_meta', '3.0', 'wc_get_order_item_meta' ); + wc_deprecated_function( 'WC_Order::get_item_meta', '3.0', 'wc_get_order_item_meta' ); return get_metadata( 'order_item', $order_item_id, $key, $single ); } @@ -583,7 +583,7 @@ abstract class WC_Abstract_Legacy_Order extends WC_Data { * @return array of objects */ public function get_item_meta_array( $order_item_id ) { - wc_deprecated_function( 'get_item_meta_array', '3.0', 'WC_Order_Item::get_meta_data() (note the format has changed)' ); + wc_deprecated_function( 'WC_Order::get_item_meta_array', '3.0', 'WC_Order_Item::get_meta_data() (note the format has changed)' ); $item = $this->get_item( $order_item_id ); $meta_data = $item->get_meta_data(); $item_meta_array = array(); @@ -603,7 +603,7 @@ abstract class WC_Abstract_Legacy_Order extends WC_Data { * @return array */ public function expand_item_meta( $item ) { - wc_deprecated_function( 'expand_item_meta', '3.0' ); + wc_deprecated_function( 'WC_Order::expand_item_meta', '3.0' ); return $item; } @@ -613,7 +613,7 @@ abstract class WC_Abstract_Legacy_Order extends WC_Data { * @param int|object|WC_Order $order Order to init. */ protected function init( $order ) { - wc_deprecated_function( 'init', '3.0', 'Logic moved to constructor' ); + wc_deprecated_function( 'WC_Order::init', '3.0', 'Logic moved to constructor' ); if ( is_numeric( $order ) ) { $this->set_id( $order ); } elseif ( $order instanceof WC_Order ) { @@ -632,7 +632,7 @@ abstract class WC_Abstract_Legacy_Order extends WC_Data { * @return bool */ public function get_order( $id = 0 ) { - wc_deprecated_function( 'get_order', '3.0' ); + wc_deprecated_function( 'WC_Order::get_order', '3.0' ); if ( ! $id ) { return false; @@ -654,7 +654,7 @@ abstract class WC_Abstract_Legacy_Order extends WC_Data { * @param mixed $result */ public function populate( $result ) { - wc_deprecated_function( 'populate', '3.0' ); + wc_deprecated_function( 'WC_Order::populate', '3.0' ); $this->set_id( $result->ID ); $this->set_object_read( false ); $this->data_store->read( $this ); @@ -666,7 +666,7 @@ abstract class WC_Abstract_Legacy_Order extends WC_Data { * @param string $note (default: '') Optional note to add. */ public function cancel_order( $note = '' ) { - wc_deprecated_function( 'cancel_order', '3.0', 'update_status' ); + wc_deprecated_function( 'WC_Order::cancel_order', '3.0', 'WC_Order::update_status' ); WC()->session->set( 'order_awaiting_payment', false ); $this->update_status( 'cancelled', $note ); } @@ -676,7 +676,7 @@ abstract class WC_Abstract_Legacy_Order extends WC_Data { * @deprecated 3.0.0 */ public function record_product_sales() { - wc_deprecated_function( 'record_product_sales', '3.0', 'wc_update_total_sales_counts' ); + wc_deprecated_function( 'WC_Order::record_product_sales', '3.0', 'wc_update_total_sales_counts' ); wc_update_total_sales_counts( $this->get_id() ); } @@ -685,7 +685,7 @@ abstract class WC_Abstract_Legacy_Order extends WC_Data { * @deprecated 3.0.0 */ public function increase_coupon_usage_counts() { - wc_deprecated_function( 'increase_coupon_usage_counts', '3.0', 'wc_update_coupon_usage_counts' ); + wc_deprecated_function( 'WC_Order::increase_coupon_usage_counts', '3.0', 'wc_update_coupon_usage_counts' ); wc_update_coupon_usage_counts( $this->get_id() ); } @@ -694,7 +694,7 @@ abstract class WC_Abstract_Legacy_Order extends WC_Data { * @deprecated 3.0.0 */ public function decrease_coupon_usage_counts() { - wc_deprecated_function( 'decrease_coupon_usage_counts', '3.0', 'wc_update_coupon_usage_counts' ); + wc_deprecated_function( 'WC_Order::decrease_coupon_usage_counts', '3.0', 'wc_update_coupon_usage_counts' ); wc_update_coupon_usage_counts( $this->get_id() ); } @@ -703,7 +703,7 @@ abstract class WC_Abstract_Legacy_Order extends WC_Data { * @deprecated 3.0.0 */ public function reduce_order_stock() { - wc_deprecated_function( 'reduce_order_stock', '3.0', 'wc_reduce_stock_levels' ); + wc_deprecated_function( 'WC_Order::reduce_order_stock', '3.0', 'wc_reduce_stock_levels' ); wc_reduce_stock_levels( $this->get_id() ); } @@ -712,7 +712,7 @@ abstract class WC_Abstract_Legacy_Order extends WC_Data { * @deprecated 3.0.0 No longer needs to be called directly. */ public function send_stock_notifications( $product, $new_stock, $qty_ordered ) { - wc_deprecated_function( 'send_stock_notifications', '3.0' ); + wc_deprecated_function( 'WC_Order::send_stock_notifications', '3.0' ); } /** @@ -722,7 +722,7 @@ abstract class WC_Abstract_Legacy_Order extends WC_Data { * @return string */ public function email_order_items_table( $args = array() ) { - wc_deprecated_function( 'email_order_items_table', '3.0', 'wc_get_email_order_items' ); + wc_deprecated_function( 'WC_Order::email_order_items_table', '3.0', 'wc_get_email_order_items' ); return wc_get_email_order_items( $this, $args ); } @@ -731,7 +731,7 @@ abstract class WC_Abstract_Legacy_Order extends WC_Data { * @deprecated 3.0.0 */ public function get_order_currency() { - wc_deprecated_function( 'get_order_currency', '3.0', 'get_currency' ); + wc_deprecated_function( 'WC_Order::get_order_currency', '3.0', 'WC_Order::get_currency' ); return apply_filters( 'woocommerce_get_order_currency', $this->get_currency(), $this ); } } diff --git a/includes/legacy/abstract-wc-legacy-payment-token.php b/includes/legacy/abstract-wc-legacy-payment-token.php index 5ccf9949b02..034bcba2bb2 100644 --- a/includes/legacy/abstract-wc-legacy-payment-token.php +++ b/includes/legacy/abstract-wc-legacy-payment-token.php @@ -42,7 +42,7 @@ abstract class WC_Legacy_Payment_Token extends WC_Data { * @deprecated 3.0.0 - Use ::save instead. */ public function update() { - wc_deprecated_function( 'WC_Payment_Token::update', '3.0.0', '::save instead.' ); + wc_deprecated_function( 'WC_Payment_Token::update', '3.0.0', 'WC_Payment_Token::save instead.' ); $data_store = WC_Data_Store::load( 'payment-token' ); try { $data_store->update( $this ); @@ -56,7 +56,7 @@ abstract class WC_Legacy_Payment_Token extends WC_Data { * @deprecated 3.0.0 - Use ::save instead. */ public function create() { - wc_deprecated_function( 'WC_Payment_Token::create', '3.0.0', '::save instead.' ); + wc_deprecated_function( 'WC_Payment_Token::create', '3.0.0', 'WC_Payment_Token::save instead.' ); $data_store = WC_Data_Store::load( 'payment-token' ); try { $data_store->create( $this ); diff --git a/includes/legacy/class-wc-legacy-coupon.php b/includes/legacy/class-wc-legacy-coupon.php index 13ec1dcf649..91c5fd893ee 100644 --- a/includes/legacy/class-wc-legacy-coupon.php +++ b/includes/legacy/class-wc-legacy-coupon.php @@ -142,7 +142,7 @@ abstract class WC_Legacy_Coupon extends WC_Data { * @return array */ public function format_array( $array ) { - wc_deprecated_function( 'format_array', '3.0' ); + wc_deprecated_function( 'WC_Coupon::format_array', '3.0' ); if ( ! is_array( $array ) ) { if ( is_serialized( $array ) ) { $array = maybe_unserialize( $array ); @@ -160,7 +160,7 @@ abstract class WC_Legacy_Coupon extends WC_Data { * @return bool */ public function apply_before_tax() { - wc_deprecated_function( 'apply_before_tax', '3.0' ); + wc_deprecated_function( 'WC_Coupon::apply_before_tax', '3.0' ); return true; } @@ -170,7 +170,7 @@ abstract class WC_Legacy_Coupon extends WC_Data { * @return bool */ public function enable_free_shipping() { - wc_deprecated_function( 'enable_free_shipping', '3.0', 'get_free_shipping' ); + wc_deprecated_function( 'WC_Coupon::enable_free_shipping', '3.0', 'WC_Coupon::get_free_shipping' ); return $this->get_free_shipping(); } @@ -180,7 +180,7 @@ abstract class WC_Legacy_Coupon extends WC_Data { * @return bool */ public function exclude_sale_items() { - wc_deprecated_function( 'exclude_sale_items', '3.0', 'get_exclude_sale_items' ); + wc_deprecated_function( 'WC_Coupon::exclude_sale_items', '3.0', 'WC_Coupon::get_exclude_sale_items' ); return $this->get_exclude_sale_items(); } diff --git a/includes/legacy/class-wc-legacy-shipping-zone.php b/includes/legacy/class-wc-legacy-shipping-zone.php index b208e5fe4a7..da94015b3db 100644 --- a/includes/legacy/class-wc-legacy-shipping-zone.php +++ b/includes/legacy/class-wc-legacy-shipping-zone.php @@ -39,7 +39,7 @@ abstract class WC_Legacy_Shipping_Zone extends WC_Data { * @deprecated 3.0.0 - Use ::save instead. */ public function update() { - wc_deprecated_function( 'WC_Shipping_Zone::update', '3.0', '::save instead.' ); + wc_deprecated_function( 'WC_Shipping_Zone::update', '3.0', 'WC_Shipping_Zone::save instead.' ); $data_store = WC_Data_Store::load( 'shipping-zone' ); try { $data_store->update( $this ); @@ -53,7 +53,7 @@ abstract class WC_Legacy_Shipping_Zone extends WC_Data { * @deprecated 3.0.0 - Use ::save instead. */ public function create() { - wc_deprecated_function( 'WC_Shipping_Zone::create', '3.0', '::save instead.' ); + wc_deprecated_function( 'WC_Shipping_Zone::create', '3.0', 'WC_Shipping_Zone::save instead.' ); $data_store = WC_Data_Store::load( 'shipping-zone' ); try { $data_store->create( $this ); From caae2d2a0fdf414d9b7bcbc3523af7355488ed6e Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 13:38:25 -0300 Subject: [PATCH 105/525] Fixed Products_API::test_product_schema() total of properties --- tests/unit-tests/api/products.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit-tests/api/products.php b/tests/unit-tests/api/products.php index f1b3c324b62..94e95fc59dc 100644 --- a/tests/unit-tests/api/products.php +++ b/tests/unit-tests/api/products.php @@ -477,7 +477,7 @@ class Products_API extends WC_REST_Unit_Test_Case { $response = $this->server->dispatch( $request ); $data = $response->get_data(); $properties = $data['schema']['properties']; - $this->assertEquals( 66, count( $properties ) ); + $this->assertEquals( 65, count( $properties ) ); $product->delete( true ); } From 5d19bba83d54aa0549b339451e5f4cee3848a380 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 13:39:16 -0300 Subject: [PATCH 106/525] Fixed unit tests for variation image --- tests/unit-tests/api/product-variations.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tests/unit-tests/api/product-variations.php b/tests/unit-tests/api/product-variations.php index 90217322821..579f6f0aa92 100644 --- a/tests/unit-tests/api/product-variations.php +++ b/tests/unit-tests/api/product-variations.php @@ -175,7 +175,7 @@ class Product_Variations_API extends WC_REST_Unit_Test_Case { 'sku' => 'FIXED-SKU', 'sale_price' => '8', 'description' => 'O_O', - 'image' => array( array( 'position' => 0, 'src' => 'https://cldup.com/Dr1Bczxq4q.png', 'alt' => 'test upload image' ) ), + 'image' => array( 'position' => 0, 'src' => 'https://cldup.com/Dr1Bczxq4q.png', 'alt' => 'test upload image' ), 'attributes' => array( array( 'name' => 'pa_size', 'option' => 'medium' ) ), ) ); $response = $this->server->dispatch( $request ); @@ -187,9 +187,8 @@ class Product_Variations_API extends WC_REST_Unit_Test_Case { $this->assertEquals( '10', $variation['regular_price'] ); $this->assertEquals( 'FIXED-SKU', $variation['sku'] ); $this->assertEquals( 'medium', $variation['attributes'][0]['option'] ); - - $this->assertContains( 'Dr1Bczxq4q', $variation['image'][0]['src'] ); - $this->assertContains( 'test upload image', $variation['image'][0]['alt'] ); + $this->assertContains( 'Dr1Bczxq4q', $variation['image']['src'] ); + $this->assertContains( 'test upload image', $variation['image']['alt'] ); $product->delete( true ); } @@ -300,7 +299,7 @@ class Product_Variations_API extends WC_REST_Unit_Test_Case { array( 'id' => $children[0], 'description' => 'Updated description.', - 'image' => array( array( 'position' => 0, 'src' => 'https://cldup.com/Dr1Bczxq4q.png', 'alt' => 'test upload image' ) ), + 'image' => array( 'position' => 0, 'src' => 'https://cldup.com/Dr1Bczxq4q.png', 'alt' => 'test upload image' ), ), ), 'delete' => array( From 3f82db5cbd2ff680e70514fc943f1b96c4de29bd Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 13:39:46 -0300 Subject: [PATCH 107/525] Fixed unit tests for review GMT dates --- tests/unit-tests/api/product-reviews.php | 48 +++++++++++++----------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/tests/unit-tests/api/product-reviews.php b/tests/unit-tests/api/product-reviews.php index b07cc84e046..e30d54db6ad 100644 --- a/tests/unit-tests/api/product-reviews.php +++ b/tests/unit-tests/api/product-reviews.php @@ -49,13 +49,14 @@ class Product_Reviews extends WC_REST_Unit_Test_Case { $this->assertEquals( 200, $response->get_status() ); $this->assertEquals( 10, count( $product_reviews ) ); $this->assertContains( array( - 'id' => $review_id, - 'date_created' => '2016-01-01T11:11:11', - 'review' => 'Review content here', - 'rating' => 0, - 'name' => 'admin', - 'email' => 'woo@woo.local', - 'verified' => false, + 'id' => $review_id, + 'date_created' => $product_reviews[0]['date_created'], + 'date_created_gmt' => $product_reviews[0]['date_created_gmt'], + 'review' => 'Review content here', + 'rating' => 0, + 'name' => 'admin', + 'email' => 'woo@woo.local', + 'verified' => false, '_links' => array( 'self' => array( array( @@ -114,13 +115,14 @@ class Product_Reviews extends WC_REST_Unit_Test_Case { $this->assertEquals( 200, $response->get_status() ); $this->assertEquals( array( - 'id' => $product_review_id, - 'date_created' => '2016-01-01T11:11:11', - 'review' => 'Review content here', - 'rating' => 0, - 'name' => 'admin', - 'email' => 'woo@woo.local', - 'verified' => false, + 'id' => $product_review_id, + 'date_created' => $data['date_created'], + 'date_created_gmt' => $data['date_created_gmt'], + 'review' => 'Review content here', + 'rating' => 0, + 'name' => 'admin', + 'email' => 'woo@woo.local', + 'verified' => false, ), $data ); } @@ -169,13 +171,14 @@ class Product_Reviews extends WC_REST_Unit_Test_Case { $this->assertEquals( 201, $response->get_status() ); $this->assertEquals( array( - 'id' => $data['id'], - 'date_created' => $data['date_created'], - 'review' => 'Hello world.', - 'rating' => 5, - 'name' => 'Admin', - 'email' => 'woo@woo.local', - 'verified' => false, + 'id' => $data['id'], + 'date_created' => $data['date_created'], + 'date_created_gmt' => $data['date_created_gmt'], + 'review' => 'Hello world.', + 'rating' => 5, + 'name' => 'Admin', + 'email' => 'woo@woo.local', + 'verified' => false, ), $data ); } @@ -406,10 +409,11 @@ class Product_Reviews extends WC_REST_Unit_Test_Case { $data = $response->get_data(); $properties = $data['schema']['properties']; - $this->assertEquals( 7, count( $properties ) ); + $this->assertEquals( 8, count( $properties ) ); $this->assertArrayHasKey( 'id', $properties ); $this->assertArrayHasKey( 'review', $properties ); $this->assertArrayHasKey( 'date_created', $properties ); + $this->assertArrayHasKey( 'date_created_gmt', $properties ); $this->assertArrayHasKey( 'rating', $properties ); $this->assertArrayHasKey( 'name', $properties ); $this->assertArrayHasKey( 'email', $properties ); From 8371882002721b4e7bd9e6843451865517db6286 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 17:19:07 -0300 Subject: [PATCH 108/525] [REST API] Fixed a minor bug that prevents saving default_attributes --- includes/api/class-wc-rest-products-controller.php | 3 ++- includes/api/v1/class-wc-rest-products-controller.php | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/includes/api/class-wc-rest-products-controller.php b/includes/api/class-wc-rest-products-controller.php index 7ba55a86c49..8423d2b36c7 100644 --- a/includes/api/class-wc-rest-products-controller.php +++ b/includes/api/class-wc-rest-products-controller.php @@ -1188,7 +1188,8 @@ class WC_REST_Products_Controller extends WC_REST_Legacy_Products_Controller { */ protected function save_default_attributes( $product, $request ) { if ( isset( $request['default_attributes'] ) && is_array( $request['default_attributes'] ) ) { - $attributes = $product->get_variation_attributes(); + + $attributes = $product->get_attributes(); $default_attributes = array(); foreach ( $request['default_attributes'] as $attribute ) { diff --git a/includes/api/v1/class-wc-rest-products-controller.php b/includes/api/v1/class-wc-rest-products-controller.php index ce69364caaa..8b7a499ad85 100644 --- a/includes/api/v1/class-wc-rest-products-controller.php +++ b/includes/api/v1/class-wc-rest-products-controller.php @@ -1003,7 +1003,7 @@ class WC_REST_Products_V1_Controller extends WC_REST_Posts_Controller { */ protected function save_default_attributes( $product, $request ) { if ( isset( $request['default_attributes'] ) && is_array( $request['default_attributes'] ) ) { - $attributes = $product->get_variation_attributes(); + $attributes = $product->get_attributes(); $default_attributes = array(); foreach ( $request['default_attributes'] as $attribute ) { From b8faa2197cf0bb60b594277fdb0ff9e7418569be Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 17:23:12 -0300 Subject: [PATCH 109/525] [REST API] Fixed default_attributes in legacy REST API --- includes/api/legacy/v2/class-wc-api-products.php | 3 ++- includes/api/legacy/v3/class-wc-api-products.php | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/includes/api/legacy/v2/class-wc-api-products.php b/includes/api/legacy/v2/class-wc-api-products.php index ba9e9592ae6..de67231b85d 100644 --- a/includes/api/legacy/v2/class-wc-api-products.php +++ b/includes/api/legacy/v2/class-wc-api-products.php @@ -820,13 +820,14 @@ class WC_API_Products extends WC_API_Resource { * @param array $request * @return WC_Product */ - protected function save_default_attributes( $product, $request ) { + protected function save_default_attributes( $product, $request ) { // Update default attributes options setting. if ( isset( $request['default_attribute'] ) ) { $request['default_attributes'] = $request['default_attribute']; } if ( isset( $request['default_attributes'] ) && is_array( $request['default_attributes'] ) ) { + $attributes = $product->get_attributes(); $default_attributes = array(); foreach ( $request['default_attributes'] as $default_attr_key => $default_attr ) { diff --git a/includes/api/legacy/v3/class-wc-api-products.php b/includes/api/legacy/v3/class-wc-api-products.php index f3e150a6860..2cfc7c5786a 100644 --- a/includes/api/legacy/v3/class-wc-api-products.php +++ b/includes/api/legacy/v3/class-wc-api-products.php @@ -1312,6 +1312,7 @@ class WC_API_Products extends WC_API_Resource { } if ( isset( $request['default_attributes'] ) && is_array( $request['default_attributes'] ) ) { + $attributes = $product->get_attributes(); $default_attributes = array(); foreach ( $request['default_attributes'] as $default_attr_key => $default_attr ) { From 44319e20f7f7150a2e780cda0919f38b8f34500e Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 17:48:37 -0300 Subject: [PATCH 110/525] [REST API] Fixed file name convention --- ...oller.php => class-wc-rest-setting-options-controller.php} | 2 +- includes/class-wc-api.php | 4 ++-- tests/unit-tests/api/settings.php | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename includes/api/{class-wc-rest-settings-options-controller.php => class-wc-rest-setting-options-controller.php} (99%) diff --git a/includes/api/class-wc-rest-settings-options-controller.php b/includes/api/class-wc-rest-setting-options-controller.php similarity index 99% rename from includes/api/class-wc-rest-settings-options-controller.php rename to includes/api/class-wc-rest-setting-options-controller.php index 242227e171b..96fd48b7bbe 100644 --- a/includes/api/class-wc-rest-settings-options-controller.php +++ b/includes/api/class-wc-rest-setting-options-controller.php @@ -20,7 +20,7 @@ if ( ! defined( 'ABSPATH' ) ) { * @package WooCommerce/API * @extends WC_REST_Controller */ -class WC_REST_Settings_Options_Controller extends WC_REST_Controller { +class WC_REST_Setting_Options_Controller extends WC_REST_Controller { /** * WP REST API namespace/version. diff --git a/includes/class-wc-api.php b/includes/class-wc-api.php index 072693e7b27..6b3a5b133f7 100644 --- a/includes/class-wc-api.php +++ b/includes/class-wc-api.php @@ -189,7 +189,7 @@ class WC_API extends WC_Legacy_API { include_once( dirname( __FILE__ ) . '/api/class-wc-rest-report-top-sellers-controller.php' ); include_once( dirname( __FILE__ ) . '/api/class-wc-rest-reports-controller.php' ); include_once( dirname( __FILE__ ) . '/api/class-wc-rest-settings-controller.php' ); - include_once( dirname( __FILE__ ) . '/api/class-wc-rest-settings-options-controller.php' ); + include_once( dirname( __FILE__ ) . '/api/class-wc-rest-setting-options-controller.php' ); include_once( dirname( __FILE__ ) . '/api/class-wc-rest-shipping-zones-controller.php' ); include_once( dirname( __FILE__ ) . '/api/class-wc-rest-shipping-zone-locations-controller.php' ); include_once( dirname( __FILE__ ) . '/api/class-wc-rest-shipping-zone-methods-controller.php' ); @@ -253,7 +253,7 @@ class WC_API extends WC_Legacy_API { 'WC_REST_Report_Top_Sellers_Controller', 'WC_REST_Reports_Controller', 'WC_REST_Settings_Controller', - 'WC_REST_Settings_Options_Controller', + 'WC_REST_Setting_Options_Controller', 'WC_REST_Shipping_Zones_Controller', 'WC_REST_Shipping_Zone_Locations_Controller', 'WC_REST_Shipping_Zone_Methods_Controller', diff --git a/tests/unit-tests/api/settings.php b/tests/unit-tests/api/settings.php index 6a95edffed6..cb1192ab4ed 100644 --- a/tests/unit-tests/api/settings.php +++ b/tests/unit-tests/api/settings.php @@ -13,7 +13,7 @@ class Settings extends WC_REST_Unit_Test_Case { */ public function setUp() { parent::setUp(); - $this->endpoint = new WC_REST_Settings_Options_Controller(); + $this->endpoint = new WC_REST_Setting_Options_Controller(); WC_Helper_Settings::register(); $this->user = $this->factory->user->create( array( 'role' => 'administrator', From f65cbdbfa4d9b87d074f5c88adce47d2c481526e Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 17:59:50 -0300 Subject: [PATCH 111/525] [REST API] All items in shipping_methods endpoint are readonly --- includes/api/class-wc-rest-shipping-methods-controller.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/includes/api/class-wc-rest-shipping-methods-controller.php b/includes/api/class-wc-rest-shipping-methods-controller.php index 2b1424b6f5c..e5ef36a674a 100644 --- a/includes/api/class-wc-rest-shipping-methods-controller.php +++ b/includes/api/class-wc-rest-shipping-methods-controller.php @@ -196,16 +196,19 @@ class WC_REST_Shipping_Methods_Controller extends WC_REST_Controller { 'description' => __( 'Method ID.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), + 'readonly' => true, ), 'title' => array( 'description' => __( 'Shipping method title.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), + 'readonly' => true, ), 'description' => array( 'description' => __( 'Shipping method description.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), + 'readonly' => true, ), ), ); From e33235ebf30b218aa3884f064b50a020189333ee Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 18:14:58 -0300 Subject: [PATCH 112/525] [REST API] Fixed settings schema. Included context and readonly for all items. And removed sanitize_callback used only in write context --- .../api/class-wc-rest-settings-controller.php | 63 +++++++++---------- 1 file changed, 29 insertions(+), 34 deletions(-) diff --git a/includes/api/class-wc-rest-settings-controller.php b/includes/api/class-wc-rest-settings-controller.php index 396c1a2fd6d..cc332b70b87 100644 --- a/includes/api/class-wc-rest-settings-controller.php +++ b/includes/api/class-wc-rest-settings-controller.php @@ -191,44 +191,39 @@ class WC_REST_Settings_Controller extends WC_REST_Controller { */ public function get_item_schema() { $schema = array( - '$schema' => 'http://json-schema.org/draft-04/schema#', - 'title' => 'setting_group', - 'type' => 'object', - 'properties' => array( - 'id' => array( - 'description' => __( 'A unique identifier that can be used to link settings together.', 'woocommerce' ), - 'type' => 'string', - 'arg_options' => array( - 'sanitize_callback' => 'sanitize_title', - ), + '$schema' => 'http://json-schema.org/draft-04/schema#', + 'title' => 'setting_group', + 'type' => 'object', + 'properties' => array( + 'id' => array( + 'description' => __( 'A unique identifier that can be used to link settings together.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view' ), + 'readonly' => true, ), - 'label' => array( - 'description' => __( 'A human readable label for the setting used in interfaces.', 'woocommerce' ), - 'type' => 'string', - 'arg_options' => array( - 'sanitize_callback' => 'sanitize_text_field', - ), + 'label' => array( + 'description' => __( 'A human readable label for the setting used in interfaces.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view' ), + 'readonly' => true, ), - 'description' => array( - 'description' => __( 'A human readable description for the setting used in interfaces.', 'woocommerce' ), - 'type' => 'string', - 'arg_options' => array( - 'sanitize_callback' => 'sanitize_text_field', - ), + 'description' => array( + 'description' => __( 'A human readable description for the setting used in interfaces.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view' ), + 'readonly' => true, ), - 'parent_id' => array( - 'description' => __( 'ID of parent grouping.', 'woocommerce' ), - 'type' => 'string', - 'arg_options' => array( - 'sanitize_callback' => 'sanitize_text_field', - ), + 'parent_id' => array( + 'description' => __( 'ID of parent grouping.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view' ), + 'readonly' => true, ), - 'sub_groups' => array( - 'description' => __( 'IDs for settings sub groups.', 'woocommerce' ), - 'type' => 'string', - 'arg_options' => array( - 'sanitize_callback' => 'sanitize_text_field', - ), + 'sub_groups' => array( + 'description' => __( 'IDs for settings sub groups.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view' ), + 'readonly' => true, ), ), ); From 0a7076744e90f929f7de4a14544ed56b5bb6a403 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 19:52:35 -0300 Subject: [PATCH 113/525] [REST API] Fixed settings/options rest_base --- ...ass-wc-rest-setting-options-controller.php | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/includes/api/class-wc-rest-setting-options-controller.php b/includes/api/class-wc-rest-setting-options-controller.php index 96fd48b7bbe..9b4915c384c 100644 --- a/includes/api/class-wc-rest-setting-options-controller.php +++ b/includes/api/class-wc-rest-setting-options-controller.php @@ -1,6 +1,6 @@ [\w-]+)'; /** * Register routes. @@ -40,7 +40,7 @@ class WC_REST_Setting_Options_Controller extends WC_REST_Controller { * @since 3.0.0 */ public function register_routes() { - register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P[\w-]+)', array( + register_rest_route( $this->namespace, '/' . $this->rest_base, array( 'args' => array( 'group' => array( 'description' => __( 'Settings group ID.', 'woocommerce' ), @@ -55,23 +55,7 @@ class WC_REST_Setting_Options_Controller extends WC_REST_Controller { 'schema' => array( $this, 'get_public_item_schema' ), ) ); - register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P[\w-]+)/batch', array( - 'args' => array( - 'group' => array( - 'description' => __( 'Settings group ID.', 'woocommerce' ), - 'type' => 'string', - ), - ), - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'batch_items' ), - 'permission_callback' => array( $this, 'update_items_permissions_check' ), - 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ), - ), - 'schema' => array( $this, 'get_public_batch_schema' ), - ) ); - - register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P[\w-]+)/(?P[\w-]+)', array( + register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P[\w-]+)', array( 'args' => array( 'group' => array( 'description' => __( 'Settings group ID.', 'woocommerce' ), @@ -95,6 +79,22 @@ class WC_REST_Setting_Options_Controller extends WC_REST_Controller { ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); + + register_rest_route( $this->namespace, '/' . $this->rest_base . '/batch', array( + 'args' => array( + 'group' => array( + 'description' => __( 'Settings group ID.', 'woocommerce' ), + 'type' => 'string', + ), + ), + array( + 'methods' => WP_REST_Server::EDITABLE, + 'callback' => array( $this, 'batch_items' ), + 'permission_callback' => array( $this, 'update_items_permissions_check' ), + 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ), + ), + 'schema' => array( $this, 'get_public_batch_schema' ), + ) ); } /** @@ -316,13 +316,13 @@ class WC_REST_Setting_Options_Controller extends WC_REST_Controller { * @return array Links for the given setting. */ protected function prepare_links( $setting_id, $group_id ) { - $base = '/' . $this->namespace . '/' . $this->rest_base . '/' . $group_id; + $base = str_replace( '(?P[\w-]+)', $group_id, $this->rest_base ); $links = array( 'self' => array( - 'href' => rest_url( trailingslashit( $base ) . $setting_id ), + 'href' => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $base, $setting_id ) ), ), 'collection' => array( - 'href' => rest_url( $base ), + 'href' => rest_url( sprintf( '/%s/%s', $this->namespace, $base ) ), ), ); From fb80482d73eccd6f54d9fca5facc1acaf5804004 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 19:56:56 -0300 Subject: [PATCH 114/525] Fixed rest_base --- includes/api/class-wc-rest-setting-options-controller.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/api/class-wc-rest-setting-options-controller.php b/includes/api/class-wc-rest-setting-options-controller.php index 9b4915c384c..d8f30b26be2 100644 --- a/includes/api/class-wc-rest-setting-options-controller.php +++ b/includes/api/class-wc-rest-setting-options-controller.php @@ -32,7 +32,7 @@ class WC_REST_Setting_Options_Controller extends WC_REST_Controller { * * @var string */ - protected $rest_base = 'settings/(?P[\w-]+)'; + protected $rest_base = 'settings/(?P[\w-]+)'; /** * Register routes. @@ -316,7 +316,7 @@ class WC_REST_Setting_Options_Controller extends WC_REST_Controller { * @return array Links for the given setting. */ protected function prepare_links( $setting_id, $group_id ) { - $base = str_replace( '(?P[\w-]+)', $group_id, $this->rest_base ); + $base = str_replace( '(?P[\w-]+)', $group_id, $this->rest_base ); $links = array( 'self' => array( 'href' => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $base, $setting_id ) ), From c24882f5d2bd2005a729d179a9160e4946f429f4 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 20:05:16 -0300 Subject: [PATCH 115/525] Apply change on rest_base to WC_REST_Setting_Options_Controller methods --- includes/api/class-wc-rest-setting-options-controller.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/includes/api/class-wc-rest-setting-options-controller.php b/includes/api/class-wc-rest-setting-options-controller.php index d8f30b26be2..a3b207456aa 100644 --- a/includes/api/class-wc-rest-setting-options-controller.php +++ b/includes/api/class-wc-rest-setting-options-controller.php @@ -105,7 +105,7 @@ class WC_REST_Setting_Options_Controller extends WC_REST_Controller { * @return WP_Error|WP_REST_Response */ public function get_item( $request ) { - $setting = $this->get_setting( $request['group'], $request['id'] ); + $setting = $this->get_setting( $request['group_id'], $request['id'] ); if ( is_wp_error( $setting ) ) { return $setting; @@ -124,7 +124,7 @@ class WC_REST_Setting_Options_Controller extends WC_REST_Controller { * @return WP_Error|WP_REST_Response */ public function get_items( $request ) { - $settings = $this->get_group_settings( $request['group'] ); + $settings = $this->get_group_settings( $request['group_id'] ); if ( is_wp_error( $settings ) ) { return $settings; @@ -255,7 +255,7 @@ class WC_REST_Setting_Options_Controller extends WC_REST_Controller { * @return WP_Error|WP_REST_Response */ public function update_item( $request ) { - $setting = $this->get_setting( $request['group'], $request['id'] ); + $setting = $this->get_setting( $request['group_id'], $request['id'] ); if ( is_wp_error( $setting ) ) { return $setting; @@ -303,7 +303,7 @@ class WC_REST_Setting_Options_Controller extends WC_REST_Controller { $data = $this->add_additional_fields_to_object( $data, $request ); $data = $this->filter_response_by_context( $data, empty( $request['context'] ) ? 'view' : $request['context'] ); $response = rest_ensure_response( $data ); - $response->add_links( $this->prepare_links( $data['id'], $request['group'] ) ); + $response->add_links( $this->prepare_links( $data['id'], $request['group_id'] ) ); return $response; } From ffe1deba517305e84733811086e03bb72a2256fe Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 20:37:42 -0300 Subject: [PATCH 116/525] Disable setting options endpoint in CLI --- includes/cli/class-wc-cli-runner.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/includes/cli/class-wc-cli-runner.php b/includes/cli/class-wc-cli-runner.php index 33fb7e062ab..e9c93a24179 100644 --- a/includes/cli/class-wc-cli-runner.php +++ b/includes/cli/class-wc-cli-runner.php @@ -19,9 +19,9 @@ class WC_CLI_Runner { */ private static $disabled_endpoints = array( 'settings', - 'settings/(?P[\w-]+)', - 'settings/(?P[\w-]+)/batch', - 'settings/(?P[\w-]+)/(?P[\w-]+)', + 'settings/(?P[\w-]+)', + 'settings/(?P[\w-]+)/batch', + 'settings/(?P[\w-]+)/(?P[\w-]+)', 'system_status', 'system_status/tools', 'system_status/tools/(?P[\w-]+)', From b1023c23c68e5a94c98e3e5d4242f1c114f531bf Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 20:45:19 -0300 Subject: [PATCH 117/525] Fixed setting options endpoint tests --- ...ass-wc-rest-setting-options-controller.php | 32 +++++++++---------- tests/unit-tests/api/settings.php | 15 +++++---- 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/includes/api/class-wc-rest-setting-options-controller.php b/includes/api/class-wc-rest-setting-options-controller.php index a3b207456aa..8b26ff5d2b8 100644 --- a/includes/api/class-wc-rest-setting-options-controller.php +++ b/includes/api/class-wc-rest-setting-options-controller.php @@ -55,6 +55,22 @@ class WC_REST_Setting_Options_Controller extends WC_REST_Controller { 'schema' => array( $this, 'get_public_item_schema' ), ) ); + register_rest_route( $this->namespace, '/' . $this->rest_base . '/batch', array( + 'args' => array( + 'group' => array( + 'description' => __( 'Settings group ID.', 'woocommerce' ), + 'type' => 'string', + ), + ), + array( + 'methods' => WP_REST_Server::EDITABLE, + 'callback' => array( $this, 'batch_items' ), + 'permission_callback' => array( $this, 'update_items_permissions_check' ), + 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ), + ), + 'schema' => array( $this, 'get_public_batch_schema' ), + ) ); + register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P[\w-]+)', array( 'args' => array( 'group' => array( @@ -79,22 +95,6 @@ class WC_REST_Setting_Options_Controller extends WC_REST_Controller { ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); - - register_rest_route( $this->namespace, '/' . $this->rest_base . '/batch', array( - 'args' => array( - 'group' => array( - 'description' => __( 'Settings group ID.', 'woocommerce' ), - 'type' => 'string', - ), - ), - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'batch_items' ), - 'permission_callback' => array( $this, 'update_items_permissions_check' ), - 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ), - ), - 'schema' => array( $this, 'get_public_batch_schema' ), - ) ); } /** diff --git a/tests/unit-tests/api/settings.php b/tests/unit-tests/api/settings.php index cb1192ab4ed..635fdce9ce0 100644 --- a/tests/unit-tests/api/settings.php +++ b/tests/unit-tests/api/settings.php @@ -28,8 +28,8 @@ class Settings extends WC_REST_Unit_Test_Case { public function test_register_routes() { $routes = $this->server->get_routes(); $this->assertArrayHasKey( '/wc/v2/settings', $routes ); - $this->assertArrayHasKey( '/wc/v2/settings/(?P[\w-]+)', $routes ); - $this->assertArrayHasKey( '/wc/v2/settings/(?P[\w-]+)/(?P[\w-]+)', $routes ); + $this->assertArrayHasKey( '/wc/v2/settings/(?P[\w-]+)', $routes ); + $this->assertArrayHasKey( '/wc/v2/settings/(?P[\w-]+)/(?P[\w-]+)', $routes ); } /** @@ -276,13 +276,14 @@ class Settings extends WC_REST_Unit_Test_Case { $request->set_body_params( array( 'update' => array( array( - 'id' => 'woocommerce_shop_page_display', - 'value' => 'both', + 'id' => 'woocommerce_shop_page_display', + 'value' => 'both', ), ), ) ); $response = $this->server->dispatch( $request ); $data = $response->get_data(); + $this->assertEquals( 'both', $data['update'][0]['value'] ); $this->assertEquals( 'both', get_option( 'woocommerce_shop_page_display' ) ); @@ -373,8 +374,8 @@ class Settings extends WC_REST_Unit_Test_Case { * @since 3.0.0 */ public function test_get_setting_invalid_setting_type() { - // $controller = $this->getMock( 'WC_Rest_Settings_Options_Controller', array( 'get_group_settings', 'is_setting_type_valid' ) ); - $controller = $this->getMockBuilder( 'WC_Rest_Settings_Options_Controller' )->setMethods( array( 'get_group_settings', 'is_setting_type_valid' ) )->getMock(); + // $controller = $this->getMock( 'WC_Rest_Setting_Options_Controller', array( 'get_group_settings', 'is_setting_type_valid' ) ); + $controller = $this->getMockBuilder( 'WC_Rest_Setting_Options_Controller' )->setMethods( array( 'get_group_settings', 'is_setting_type_valid' ) )->getMock(); $controller ->expects( $this->any() ) @@ -433,7 +434,7 @@ class Settings extends WC_REST_Unit_Test_Case { * Test updating a bad setting ID. * * @since 3.0.0 - * @covers WC_Rest_Settings_Options_Controller::update_item + * @covers WC_Rest_Setting_Options_Controller::update_item */ public function test_update_setting_bad_setting_id() { wp_set_current_user( $this->user ); From 85494e5d86021cd6702b4bcf53ab985511e6a668 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 20:51:21 -0300 Subject: [PATCH 118/525] [REST API] Fixed shipping zones schema "name" is only required while creating a new zone. "order" do request to define "required" and is already sanitized by "integer" type. --- .../api/class-wc-rest-shipping-zones-controller.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/includes/api/class-wc-rest-shipping-zones-controller.php b/includes/api/class-wc-rest-shipping-zones-controller.php index 39375d2fcaa..f1d895b4e27 100644 --- a/includes/api/class-wc-rest-shipping-zones-controller.php +++ b/includes/api/class-wc-rest-shipping-zones-controller.php @@ -36,7 +36,13 @@ class WC_REST_Shipping_Zones_Controller extends WC_REST_Shipping_Zones_Controlle 'methods' => WP_REST_Server::CREATABLE, 'callback' => array( $this, 'create_item' ), 'permission_callback' => array( $this, 'create_item_permissions_check' ), - 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::CREATABLE ), + 'args' => array_merge( $this->get_endpoint_args_for_item_schema( WP_REST_Server::CREATABLE ), array( + 'name' => array( + 'required' => true, + 'type' => 'string', + 'description' => __( 'Shipping zone name.', 'woocommerce' ), + ), + ) ), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); @@ -275,7 +281,6 @@ class WC_REST_Shipping_Zones_Controller extends WC_REST_Shipping_Zones_Controlle 'description' => __( 'Shipping zone name.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), - 'required' => true, 'arg_options' => array( 'sanitize_callback' => 'sanitize_text_field', ), @@ -284,10 +289,6 @@ class WC_REST_Shipping_Zones_Controller extends WC_REST_Shipping_Zones_Controlle 'description' => __( 'Shipping zone order.', 'woocommerce' ), 'type' => 'integer', 'context' => array( 'view', 'edit' ), - 'required' => false, - 'arg_options' => array( - 'sanitize_callback' => 'absint', - ), ), ), ); From 8f3f313effbf29d48f44b17f21f4d1176e39c805 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 20:56:02 -0300 Subject: [PATCH 119/525] Fixed coding standards --- includes/api/class-wc-rest-shipping-zones-controller.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/api/class-wc-rest-shipping-zones-controller.php b/includes/api/class-wc-rest-shipping-zones-controller.php index f1d895b4e27..fe85cfcdbaa 100644 --- a/includes/api/class-wc-rest-shipping-zones-controller.php +++ b/includes/api/class-wc-rest-shipping-zones-controller.php @@ -38,8 +38,8 @@ class WC_REST_Shipping_Zones_Controller extends WC_REST_Shipping_Zones_Controlle 'permission_callback' => array( $this, 'create_item_permissions_check' ), 'args' => array_merge( $this->get_endpoint_args_for_item_schema( WP_REST_Server::CREATABLE ), array( 'name' => array( - 'required' => true, - 'type' => 'string', + 'required' => true, + 'type' => 'string', 'description' => __( 'Shipping zone name.', 'woocommerce' ), ), ) ), From c369cdc8bd1354e9c14dbaf8e927a296d49e1cfc Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 20:56:41 -0300 Subject: [PATCH 120/525] Fixed shipping zones schema unit tests --- tests/unit-tests/api/shipping-zones.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/unit-tests/api/shipping-zones.php b/tests/unit-tests/api/shipping-zones.php index 74d901452d7..0d771f17e9d 100644 --- a/tests/unit-tests/api/shipping-zones.php +++ b/tests/unit-tests/api/shipping-zones.php @@ -176,9 +176,7 @@ class WC_Tests_API_Shipping_Zones extends WC_REST_Unit_Test_Case { $this->assertArrayHasKey( 'id', $properties ); $this->assertTrue( $properties['id']['readonly'] ); $this->assertArrayHasKey( 'name', $properties ); - $this->assertTrue( $properties['name']['required'] ); $this->assertArrayHasKey( 'order', $properties ); - $this->assertFalse( $properties['order']['required'] ); } /** From 7a671ab8a5f5fda511b6b4049c44c14415fd3f5c Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 21:41:56 -0300 Subject: [PATCH 121/525] [REST API] Fixed shipping zone locations schema This also fix improper sanitization and validation of the items. --- ...est-shipping-zone-locations-controller.php | 25 +++++++++++-------- tests/unit-tests/api/shipping-zones.php | 2 +- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/includes/api/class-wc-rest-shipping-zone-locations-controller.php b/includes/api/class-wc-rest-shipping-zone-locations-controller.php index 38edc401f47..fbda19d8ca3 100644 --- a/includes/api/class-wc-rest-shipping-zone-locations-controller.php +++ b/includes/api/class-wc-rest-shipping-zone-locations-controller.php @@ -90,10 +90,20 @@ class WC_REST_Shipping_Zone_Locations_Controller extends WC_REST_Shipping_Zones_ $locations = array(); foreach ( (array) $raw_locations as $raw_location ) { - if ( empty( $raw_location['code'] ) || empty( $raw_location['type'] ) ) { + if ( empty( $raw_location['code'] ) ) { continue; } - $locations[] = $raw_location; + + $type = ! empty( $raw_location['type'] ) ? sanitize_text_field( $raw_location['type'] ) : 'country'; + + if ( ! in_array( $type, array( 'postcode', 'state', 'country', 'continent' ), true ) ) { + continue; + } + + $locations[] = array( + 'code' => sanitize_text_field( $raw_location['code'] ), + 'type' => sanitize_text_field( $type ), + ); } $zone->set_locations( $locations ); @@ -157,25 +167,18 @@ class WC_REST_Shipping_Zone_Locations_Controller extends WC_REST_Shipping_Zones_ 'description' => __( 'Shipping zone location code.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), - 'required' => true, - 'arg_options' => array( - 'sanitize_callback' => 'sanitize_text_field', - ), ), 'type' => array( 'description' => __( 'Shipping zone location type.', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), - 'required' => true, - 'arg_options' => array( - 'sanitize_callback' => 'sanitize_text_field', - ), + 'default' => 'country', 'enum' => array( 'postcode', 'state', 'country', 'continent', ), + 'context' => array( 'view', 'edit' ), ), ), ); diff --git a/tests/unit-tests/api/shipping-zones.php b/tests/unit-tests/api/shipping-zones.php index 74d901452d7..14f465ecf13 100644 --- a/tests/unit-tests/api/shipping-zones.php +++ b/tests/unit-tests/api/shipping-zones.php @@ -467,7 +467,7 @@ class WC_Tests_API_Shipping_Zones extends WC_REST_Unit_Test_Case { $response = $this->server->dispatch( $request ); $data = $response->get_data(); - $this->assertEquals( count( $data ), 2 ); + $this->assertEquals( 3, count( $data ) ); $this->assertEquals( array( array( 'code' => 'UK', From 3ca1d946d9d2455818ee47508d51255b22511e79 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 23 Mar 2017 22:19:16 -0300 Subject: [PATCH 122/525] [REST API] Properly handle required items of shipping zone methods --- ...-wc-rest-shipping-zone-methods-controller.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/includes/api/class-wc-rest-shipping-zone-methods-controller.php b/includes/api/class-wc-rest-shipping-zone-methods-controller.php index 264f6d14355..c37dd49ad7f 100644 --- a/includes/api/class-wc-rest-shipping-zone-methods-controller.php +++ b/includes/api/class-wc-rest-shipping-zone-methods-controller.php @@ -42,7 +42,13 @@ class WC_REST_Shipping_Zone_Methods_Controller extends WC_REST_Shipping_Zones_Co 'methods' => WP_REST_Server::CREATABLE, 'callback' => array( $this, 'create_item' ), 'permission_callback' => array( $this, 'create_item_permissions_check' ), - 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::CREATABLE ), + 'args' => array_merge( $this->get_endpoint_args_for_item_schema( WP_REST_Server::CREATABLE ), array( + 'method_id' => array( + 'required' => true, + 'readonly' => false, + 'description' => __( 'Shipping method ID.', 'woocommerce' ), + ), + ) ), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); @@ -440,21 +446,17 @@ class WC_REST_Shipping_Zone_Methods_Controller extends WC_REST_Shipping_Zones_Co 'description' => __( 'Shipping method sort order.', 'woocommerce' ), 'type' => 'integer', 'context' => array( 'view', 'edit' ), - 'required' => false, - 'arg_options' => array( - 'sanitize_callback' => 'absint', - ), ), 'enabled' => array( 'description' => __( 'Shipping method enabled status.', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), - 'required' => false, ), 'method_id' => array( - 'description' => __( 'Shipping method ID. Write on create only.', 'woocommerce' ), + 'description' => __( 'Shipping method ID.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'method_title' => array( 'description' => __( 'Shipping method title.', 'woocommerce' ), From 5cc246b5cb22cc2a5c5010b38c940754897356b5 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Fri, 24 Mar 2017 00:41:39 -0300 Subject: [PATCH 123/525] [REST API] All items from system status endpoint should be readonly --- ...class-wc-rest-system-status-controller.php | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/includes/api/class-wc-rest-system-status-controller.php b/includes/api/class-wc-rest-system-status-controller.php index 3643da4aa06..3c39f8d72fb 100644 --- a/includes/api/class-wc-rest-system-status-controller.php +++ b/includes/api/class-wc-rest-system-status-controller.php @@ -103,158 +103,189 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'description' => __( 'Environment', 'woocommerce' ), 'type' => 'object', 'context' => array( 'view', 'edit' ), + 'readonly' => true, 'properties' => array( 'home_url' => array( 'description' => __( 'Home URL', 'woocommerce' ), 'type' => 'string', 'format' => 'uri', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'site_url' => array( 'description' => __( 'Site URL', 'woocommerce' ), 'type' => 'string', 'format' => 'uri', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'wc_version' => array( 'description' => __( 'WooCommerce version', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'log_directory' => array( 'description' => __( 'Log directory', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'log_directory_writable' => array( 'description' => __( 'Is log directory writable?', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'wp_version' => array( 'description' => __( 'WordPress version', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'wp_multisite' => array( 'description' => __( 'Is WordPress multisite?', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'wp_memory_limit' => array( 'description' => __( 'WordPress memory limit', 'woocommerce' ), 'type' => 'integer', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'wp_debug_mode' => array( 'description' => __( 'Is WordPress debug mode active?', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'wp_cron' => array( 'description' => __( 'Are WordPress cron jobs enabled?', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'language' => array( 'description' => __( 'WordPress language', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'server_info' => array( 'description' => __( 'Server info', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'php_version' => array( 'description' => __( 'PHP version', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'php_post_max_size' => array( 'description' => __( 'PHP post max size', 'woocommerce' ), 'type' => 'integer', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'php_max_execution_time' => array( 'description' => __( 'PHP max execution time', 'woocommerce' ), 'type' => 'integer', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'php_max_input_vars' => array( 'description' => __( 'PHP max input vars', 'woocommerce' ), 'type' => 'integer', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'curl_version' => array( 'description' => __( 'cURL version', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'suhosin_installed' => array( 'description' => __( 'Is SUHOSIN installed?', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'max_upload_size' => array( 'description' => __( 'Max upload size', 'woocommerce' ), 'type' => 'integer', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'mysql_version' => array( 'description' => __( 'MySQL version', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'default_timezone' => array( 'description' => __( 'Default timezone', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'fsockopen_or_curl_enabled' => array( 'description' => __( 'Is fsockopen/cURL enabled?', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'soapclient_enabled' => array( 'description' => __( 'Is SoapClient class enabled?', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'domdocument_enabled' => array( 'description' => __( 'Is DomDocument class enabled?', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'gzip_enabled' => array( 'description' => __( 'Is GZip enabled?', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'mbstring_enabled' => array( 'description' => __( 'Is mbstring enabled?', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'remote_post_successful' => array( 'description' => __( 'Remote POST successful?', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'remote_post_response' => array( 'description' => __( 'Remote POST response', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'remote_get_successful' => array( 'description' => __( 'Remote GET successful?', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'remote_get_response' => array( 'description' => __( 'Remote GET response', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), ), ), @@ -262,26 +293,31 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'description' => __( 'Database', 'woocommerce' ), 'type' => 'object', 'context' => array( 'view', 'edit' ), + 'readonly' => true, 'properties' => array( 'wc_database_version' => array( 'description' => __( 'WC database version', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'database_prefix' => array( 'description' => __( 'Database prefix', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'maxmind_geoip_database' => array( 'description' => __( 'MaxMind GeoIP database', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'database_tables' => array( 'description' => __( 'Database tables', 'woocommerce' ), 'type' => 'array', 'context' => array( 'view', 'edit' ), + 'readonly' => true, 'items' => array( 'type' => 'string', ), @@ -292,6 +328,7 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'description' => __( 'Active plugins', 'woocommerce' ), 'type' => 'array', 'context' => array( 'view', 'edit' ), + 'readonly' => true, 'items' => array( 'type' => 'string', ), @@ -300,52 +337,62 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'description' => __( 'Theme', 'woocommerce' ), 'type' => 'object', 'context' => array( 'view', 'edit' ), + 'readonly' => true, 'properties' => array( 'name' => array( 'description' => __( 'Theme name', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'version' => array( 'description' => __( 'Theme version', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'version_latest' => array( 'description' => __( 'Latest version of theme', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'author_url' => array( 'description' => __( 'Theme author URL', 'woocommerce' ), 'type' => 'string', 'format' => 'uri', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'is_child_theme' => array( 'description' => __( 'Is this theme a child theme?', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'has_woocommerce_support' => array( 'description' => __( 'Does the theme declare WooCommerce support?', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'has_woocommerce_file' => array( 'description' => __( 'Does the theme have a woocommerce.php file?', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'has_outdated_templates' => array( 'description' => __( 'Does this theme have outdated templates?', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'overrides' => array( 'description' => __( 'Template overrides', 'woocommerce' ), 'type' => 'array', 'context' => array( 'view', 'edit' ), + 'readonly' => true, 'items' => array( 'type' => 'string', ), @@ -354,17 +401,20 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'description' => __( 'Parent theme name', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'parent_version' => array( 'description' => __( 'Parent theme version', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'parent_author_url' => array( 'description' => __( 'Parent theme author URL', 'woocommerce' ), 'type' => 'string', 'format' => 'uri', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), ), ), @@ -372,56 +422,67 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'description' => __( 'Settings', 'woocommerce' ), 'type' => 'object', 'context' => array( 'view', 'edit' ), + 'readonly' => true, 'properties' => array( 'api_enabled' => array( 'description' => __( 'REST API enabled?', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'force_ssl' => array( 'description' => __( 'SSL forced?', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'currency' => array( 'description' => __( 'Currency', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'currency_symbol' => array( 'description' => __( 'Currency symbol', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'currency_position' => array( 'description' => __( 'Currency position', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'thousand_separator' => array( 'description' => __( 'Thousand separator', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'decimal_separator' => array( 'description' => __( 'Decimal separator', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'number_of_decimals' => array( 'description' => __( 'Number of decimals', 'woocommerce' ), 'type' => 'integer', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'geolocation_enabled' => array( 'description' => __( 'Geolocation enabled?', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'taxonomies' => array( 'description' => __( 'Taxonomy terms for product/order statuses', 'woocommerce' ), 'type' => 'array', 'context' => array( 'view', 'edit' ), + 'readonly' => true, 'items' => array( 'type' => 'string', ), @@ -432,16 +493,19 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'description' => __( 'Security', 'woocommerce' ), 'type' => 'object', 'context' => array( 'view', 'edit' ), + 'readonly' => true, 'properties' => array( 'secure_connection' => array( 'description' => __( 'Is the connection to your store secure?', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'hide_errors' => array( 'description' => __( 'Hide errors from visitors?', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), ), ), @@ -449,6 +513,7 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'description' => __( 'WooCommerce pages', 'woocommerce' ), 'type' => 'array', 'context' => array( 'view', 'edit' ), + 'readonly' => true, 'items' => array( 'type' => 'string', ), From bfbd45cf857cbea0b7515f43d1a1233261dd1f10 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Fri, 24 Mar 2017 00:43:46 -0300 Subject: [PATCH 124/525] [REST API] System status schema items are all view context only --- ...class-wc-rest-system-status-controller.php | 130 +++++++++--------- 1 file changed, 65 insertions(+), 65 deletions(-) diff --git a/includes/api/class-wc-rest-system-status-controller.php b/includes/api/class-wc-rest-system-status-controller.php index 3c39f8d72fb..51002e5c266 100644 --- a/includes/api/class-wc-rest-system-status-controller.php +++ b/includes/api/class-wc-rest-system-status-controller.php @@ -102,189 +102,189 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'environment' => array( 'description' => __( 'Environment', 'woocommerce' ), 'type' => 'object', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, 'properties' => array( 'home_url' => array( 'description' => __( 'Home URL', 'woocommerce' ), 'type' => 'string', 'format' => 'uri', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'site_url' => array( 'description' => __( 'Site URL', 'woocommerce' ), 'type' => 'string', 'format' => 'uri', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'wc_version' => array( 'description' => __( 'WooCommerce version', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'log_directory' => array( 'description' => __( 'Log directory', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'log_directory_writable' => array( 'description' => __( 'Is log directory writable?', 'woocommerce' ), 'type' => 'boolean', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'wp_version' => array( 'description' => __( 'WordPress version', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'wp_multisite' => array( 'description' => __( 'Is WordPress multisite?', 'woocommerce' ), 'type' => 'boolean', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'wp_memory_limit' => array( 'description' => __( 'WordPress memory limit', 'woocommerce' ), 'type' => 'integer', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'wp_debug_mode' => array( 'description' => __( 'Is WordPress debug mode active?', 'woocommerce' ), 'type' => 'boolean', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'wp_cron' => array( 'description' => __( 'Are WordPress cron jobs enabled?', 'woocommerce' ), 'type' => 'boolean', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'language' => array( 'description' => __( 'WordPress language', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'server_info' => array( 'description' => __( 'Server info', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'php_version' => array( 'description' => __( 'PHP version', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'php_post_max_size' => array( 'description' => __( 'PHP post max size', 'woocommerce' ), 'type' => 'integer', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'php_max_execution_time' => array( 'description' => __( 'PHP max execution time', 'woocommerce' ), 'type' => 'integer', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'php_max_input_vars' => array( 'description' => __( 'PHP max input vars', 'woocommerce' ), 'type' => 'integer', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'curl_version' => array( 'description' => __( 'cURL version', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'suhosin_installed' => array( 'description' => __( 'Is SUHOSIN installed?', 'woocommerce' ), 'type' => 'boolean', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'max_upload_size' => array( 'description' => __( 'Max upload size', 'woocommerce' ), 'type' => 'integer', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'mysql_version' => array( 'description' => __( 'MySQL version', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'default_timezone' => array( 'description' => __( 'Default timezone', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'fsockopen_or_curl_enabled' => array( 'description' => __( 'Is fsockopen/cURL enabled?', 'woocommerce' ), 'type' => 'boolean', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'soapclient_enabled' => array( 'description' => __( 'Is SoapClient class enabled?', 'woocommerce' ), 'type' => 'boolean', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'domdocument_enabled' => array( 'description' => __( 'Is DomDocument class enabled?', 'woocommerce' ), 'type' => 'boolean', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'gzip_enabled' => array( 'description' => __( 'Is GZip enabled?', 'woocommerce' ), 'type' => 'boolean', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'mbstring_enabled' => array( 'description' => __( 'Is mbstring enabled?', 'woocommerce' ), 'type' => 'boolean', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'remote_post_successful' => array( 'description' => __( 'Remote POST successful?', 'woocommerce' ), 'type' => 'boolean', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'remote_post_response' => array( 'description' => __( 'Remote POST response', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'remote_get_successful' => array( 'description' => __( 'Remote GET successful?', 'woocommerce' ), 'type' => 'boolean', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'remote_get_response' => array( 'description' => __( 'Remote GET response', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), ), @@ -292,31 +292,31 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'database' => array( 'description' => __( 'Database', 'woocommerce' ), 'type' => 'object', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, 'properties' => array( 'wc_database_version' => array( 'description' => __( 'WC database version', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'database_prefix' => array( 'description' => __( 'Database prefix', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'maxmind_geoip_database' => array( 'description' => __( 'MaxMind GeoIP database', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'database_tables' => array( 'description' => __( 'Database tables', 'woocommerce' ), 'type' => 'array', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, 'items' => array( 'type' => 'string', @@ -327,7 +327,7 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'active_plugins' => array( 'description' => __( 'Active plugins', 'woocommerce' ), 'type' => 'array', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, 'items' => array( 'type' => 'string', @@ -336,62 +336,62 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'theme' => array( 'description' => __( 'Theme', 'woocommerce' ), 'type' => 'object', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, 'properties' => array( 'name' => array( 'description' => __( 'Theme name', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'version' => array( 'description' => __( 'Theme version', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'version_latest' => array( 'description' => __( 'Latest version of theme', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'author_url' => array( 'description' => __( 'Theme author URL', 'woocommerce' ), 'type' => 'string', 'format' => 'uri', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'is_child_theme' => array( 'description' => __( 'Is this theme a child theme?', 'woocommerce' ), 'type' => 'boolean', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'has_woocommerce_support' => array( 'description' => __( 'Does the theme declare WooCommerce support?', 'woocommerce' ), 'type' => 'boolean', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'has_woocommerce_file' => array( 'description' => __( 'Does the theme have a woocommerce.php file?', 'woocommerce' ), 'type' => 'boolean', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'has_outdated_templates' => array( 'description' => __( 'Does this theme have outdated templates?', 'woocommerce' ), 'type' => 'boolean', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'overrides' => array( 'description' => __( 'Template overrides', 'woocommerce' ), 'type' => 'array', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, 'items' => array( 'type' => 'string', @@ -400,20 +400,20 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'parent_name' => array( 'description' => __( 'Parent theme name', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'parent_version' => array( 'description' => __( 'Parent theme version', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'parent_author_url' => array( 'description' => __( 'Parent theme author URL', 'woocommerce' ), 'type' => 'string', 'format' => 'uri', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), ), @@ -421,67 +421,67 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'settings' => array( 'description' => __( 'Settings', 'woocommerce' ), 'type' => 'object', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, 'properties' => array( 'api_enabled' => array( 'description' => __( 'REST API enabled?', 'woocommerce' ), 'type' => 'boolean', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'force_ssl' => array( 'description' => __( 'SSL forced?', 'woocommerce' ), 'type' => 'boolean', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'currency' => array( 'description' => __( 'Currency', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'currency_symbol' => array( 'description' => __( 'Currency symbol', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'currency_position' => array( 'description' => __( 'Currency position', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'thousand_separator' => array( 'description' => __( 'Thousand separator', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'decimal_separator' => array( 'description' => __( 'Decimal separator', 'woocommerce' ), 'type' => 'string', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'number_of_decimals' => array( 'description' => __( 'Number of decimals', 'woocommerce' ), 'type' => 'integer', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'geolocation_enabled' => array( 'description' => __( 'Geolocation enabled?', 'woocommerce' ), 'type' => 'boolean', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'taxonomies' => array( 'description' => __( 'Taxonomy terms for product/order statuses', 'woocommerce' ), 'type' => 'array', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, 'items' => array( 'type' => 'string', @@ -492,19 +492,19 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'security' => array( 'description' => __( 'Security', 'woocommerce' ), 'type' => 'object', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, 'properties' => array( 'secure_connection' => array( 'description' => __( 'Is the connection to your store secure?', 'woocommerce' ), 'type' => 'boolean', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), 'hide_errors' => array( 'description' => __( 'Hide errors from visitors?', 'woocommerce' ), 'type' => 'boolean', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, ), ), @@ -512,7 +512,7 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'pages' => array( 'description' => __( 'WooCommerce pages', 'woocommerce' ), 'type' => 'array', - 'context' => array( 'view', 'edit' ), + 'context' => array( 'view' ), 'readonly' => true, 'items' => array( 'type' => 'string', From 00b9f636a89864d3bbe15a731e00eb5ba29a2cdd Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Fri, 24 Mar 2017 00:48:41 -0300 Subject: [PATCH 125/525] Fixed description of items in system status schema --- ...class-wc-rest-system-status-controller.php | 88 +++++++++---------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/includes/api/class-wc-rest-system-status-controller.php b/includes/api/class-wc-rest-system-status-controller.php index 51002e5c266..883429f4e2c 100644 --- a/includes/api/class-wc-rest-system-status-controller.php +++ b/includes/api/class-wc-rest-system-status-controller.php @@ -100,33 +100,33 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'type' => 'object', 'properties' => array( 'environment' => array( - 'description' => __( 'Environment', 'woocommerce' ), + 'description' => __( 'Environment.', 'woocommerce' ), 'type' => 'object', 'context' => array( 'view' ), 'readonly' => true, 'properties' => array( 'home_url' => array( - 'description' => __( 'Home URL', 'woocommerce' ), + 'description' => __( 'Home URL.', 'woocommerce' ), 'type' => 'string', 'format' => 'uri', 'context' => array( 'view' ), 'readonly' => true, ), 'site_url' => array( - 'description' => __( 'Site URL', 'woocommerce' ), + 'description' => __( 'Site URL.', 'woocommerce' ), 'type' => 'string', 'format' => 'uri', 'context' => array( 'view' ), 'readonly' => true, ), 'wc_version' => array( - 'description' => __( 'WooCommerce version', 'woocommerce' ), + 'description' => __( 'WooCommerce version.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'log_directory' => array( - 'description' => __( 'Log directory', 'woocommerce' ), + 'description' => __( 'Log directory.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, @@ -138,7 +138,7 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'readonly' => true, ), 'wp_version' => array( - 'description' => __( 'WordPress version', 'woocommerce' ), + 'description' => __( 'WordPress version.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, @@ -150,7 +150,7 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'readonly' => true, ), 'wp_memory_limit' => array( - 'description' => __( 'WordPress memory limit', 'woocommerce' ), + 'description' => __( 'WordPress memory limit.', 'woocommerce' ), 'type' => 'integer', 'context' => array( 'view' ), 'readonly' => true, @@ -168,43 +168,43 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'readonly' => true, ), 'language' => array( - 'description' => __( 'WordPress language', 'woocommerce' ), + 'description' => __( 'WordPress language.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'server_info' => array( - 'description' => __( 'Server info', 'woocommerce' ), + 'description' => __( 'Server info.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'php_version' => array( - 'description' => __( 'PHP version', 'woocommerce' ), + 'description' => __( 'PHP version.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'php_post_max_size' => array( - 'description' => __( 'PHP post max size', 'woocommerce' ), + 'description' => __( 'PHP post max size.', 'woocommerce' ), 'type' => 'integer', 'context' => array( 'view' ), 'readonly' => true, ), 'php_max_execution_time' => array( - 'description' => __( 'PHP max execution time', 'woocommerce' ), + 'description' => __( 'PHP max execution time.', 'woocommerce' ), 'type' => 'integer', 'context' => array( 'view' ), 'readonly' => true, ), 'php_max_input_vars' => array( - 'description' => __( 'PHP max input vars', 'woocommerce' ), + 'description' => __( 'PHP max input vars.', 'woocommerce' ), 'type' => 'integer', 'context' => array( 'view' ), 'readonly' => true, ), 'curl_version' => array( - 'description' => __( 'cURL version', 'woocommerce' ), + 'description' => __( 'cURL version.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, @@ -216,19 +216,19 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'readonly' => true, ), 'max_upload_size' => array( - 'description' => __( 'Max upload size', 'woocommerce' ), + 'description' => __( 'Max upload size.', 'woocommerce' ), 'type' => 'integer', 'context' => array( 'view' ), 'readonly' => true, ), 'mysql_version' => array( - 'description' => __( 'MySQL version', 'woocommerce' ), + 'description' => __( 'MySQL version.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'default_timezone' => array( - 'description' => __( 'Default timezone', 'woocommerce' ), + 'description' => __( 'Default timezone.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, @@ -270,7 +270,7 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'readonly' => true, ), 'remote_post_response' => array( - 'description' => __( 'Remote POST response', 'woocommerce' ), + 'description' => __( 'Remote POST response.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, @@ -282,7 +282,7 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'readonly' => true, ), 'remote_get_response' => array( - 'description' => __( 'Remote GET response', 'woocommerce' ), + 'description' => __( 'Remote GET response.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, @@ -290,31 +290,31 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { ), ), 'database' => array( - 'description' => __( 'Database', 'woocommerce' ), + 'description' => __( 'Database.', 'woocommerce' ), 'type' => 'object', 'context' => array( 'view' ), 'readonly' => true, 'properties' => array( 'wc_database_version' => array( - 'description' => __( 'WC database version', 'woocommerce' ), + 'description' => __( 'WC database version.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'database_prefix' => array( - 'description' => __( 'Database prefix', 'woocommerce' ), + 'description' => __( 'Database prefix.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'maxmind_geoip_database' => array( - 'description' => __( 'MaxMind GeoIP database', 'woocommerce' ), + 'description' => __( 'MaxMind GeoIP database.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'database_tables' => array( - 'description' => __( 'Database tables', 'woocommerce' ), + 'description' => __( 'Database tables.', 'woocommerce' ), 'type' => 'array', 'context' => array( 'view' ), 'readonly' => true, @@ -325,7 +325,7 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { ), ), 'active_plugins' => array( - 'description' => __( 'Active plugins', 'woocommerce' ), + 'description' => __( 'Active plugins.', 'woocommerce' ), 'type' => 'array', 'context' => array( 'view' ), 'readonly' => true, @@ -334,31 +334,31 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { ), ), 'theme' => array( - 'description' => __( 'Theme', 'woocommerce' ), + 'description' => __( 'Theme.', 'woocommerce' ), 'type' => 'object', 'context' => array( 'view' ), 'readonly' => true, 'properties' => array( 'name' => array( - 'description' => __( 'Theme name', 'woocommerce' ), + 'description' => __( 'Theme name.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'version' => array( - 'description' => __( 'Theme version', 'woocommerce' ), + 'description' => __( 'Theme version.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'version_latest' => array( - 'description' => __( 'Latest version of theme', 'woocommerce' ), + 'description' => __( 'Latest version of theme.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'author_url' => array( - 'description' => __( 'Theme author URL', 'woocommerce' ), + 'description' => __( 'Theme author URL.', 'woocommerce' ), 'type' => 'string', 'format' => 'uri', 'context' => array( 'view' ), @@ -389,7 +389,7 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'readonly' => true, ), 'overrides' => array( - 'description' => __( 'Template overrides', 'woocommerce' ), + 'description' => __( 'Template overrides.', 'woocommerce' ), 'type' => 'array', 'context' => array( 'view' ), 'readonly' => true, @@ -398,19 +398,19 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { ), ), 'parent_name' => array( - 'description' => __( 'Parent theme name', 'woocommerce' ), + 'description' => __( 'Parent theme name.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'parent_version' => array( - 'description' => __( 'Parent theme version', 'woocommerce' ), + 'description' => __( 'Parent theme version.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'parent_author_url' => array( - 'description' => __( 'Parent theme author URL', 'woocommerce' ), + 'description' => __( 'Parent theme author URL.', 'woocommerce' ), 'type' => 'string', 'format' => 'uri', 'context' => array( 'view' ), @@ -419,7 +419,7 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { ), ), 'settings' => array( - 'description' => __( 'Settings', 'woocommerce' ), + 'description' => __( 'Settings.', 'woocommerce' ), 'type' => 'object', 'context' => array( 'view' ), 'readonly' => true, @@ -437,37 +437,37 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'readonly' => true, ), 'currency' => array( - 'description' => __( 'Currency', 'woocommerce' ), + 'description' => __( 'Currency.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'currency_symbol' => array( - 'description' => __( 'Currency symbol', 'woocommerce' ), + 'description' => __( 'Currency symbol.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'currency_position' => array( - 'description' => __( 'Currency position', 'woocommerce' ), + 'description' => __( 'Currency position.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'thousand_separator' => array( - 'description' => __( 'Thousand separator', 'woocommerce' ), + 'description' => __( 'Thousand separator.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'decimal_separator' => array( - 'description' => __( 'Decimal separator', 'woocommerce' ), + 'description' => __( 'Decimal separator.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'number_of_decimals' => array( - 'description' => __( 'Number of decimals', 'woocommerce' ), + 'description' => __( 'Number of decimals.', 'woocommerce' ), 'type' => 'integer', 'context' => array( 'view' ), 'readonly' => true, @@ -479,7 +479,7 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { 'readonly' => true, ), 'taxonomies' => array( - 'description' => __( 'Taxonomy terms for product/order statuses', 'woocommerce' ), + 'description' => __( 'Taxonomy terms for product/order statuses.', 'woocommerce' ), 'type' => 'array', 'context' => array( 'view' ), 'readonly' => true, @@ -490,7 +490,7 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { ), ), 'security' => array( - 'description' => __( 'Security', 'woocommerce' ), + 'description' => __( 'Security.', 'woocommerce' ), 'type' => 'object', 'context' => array( 'view' ), 'readonly' => true, @@ -510,7 +510,7 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { ), ), 'pages' => array( - 'description' => __( 'WooCommerce pages', 'woocommerce' ), + 'description' => __( 'WooCommerce pages.', 'woocommerce' ), 'type' => 'array', 'context' => array( 'view' ), 'readonly' => true, From 7381b008e03c0c4148909509d5003ec75eecb5e4 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Fri, 24 Mar 2017 01:54:59 -0300 Subject: [PATCH 126/525] [REST API] Fixed links for settings endpoint Do not allow embed and updated the key to reflect the items from the endpoint response --- includes/api/class-wc-rest-settings-controller.php | 5 ++--- tests/unit-tests/api/settings.php | 10 ++++------ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/includes/api/class-wc-rest-settings-controller.php b/includes/api/class-wc-rest-settings-controller.php index 396c1a2fd6d..55f6583aa26 100644 --- a/includes/api/class-wc-rest-settings-controller.php +++ b/includes/api/class-wc-rest-settings-controller.php @@ -97,9 +97,8 @@ class WC_REST_Settings_Controller extends WC_REST_Controller { protected function prepare_links( $group_id ) { $base = '/' . $this->namespace . '/' . $this->rest_base; $links = array( - 'item' => array( - 'href' => rest_url( trailingslashit( $base ) . $group_id ), - 'embeddable' => true, + 'options' => array( + 'href' => rest_url( trailingslashit( $base ) . $group_id ), ), ); diff --git a/tests/unit-tests/api/settings.php b/tests/unit-tests/api/settings.php index cb1192ab4ed..20e8dc67853 100644 --- a/tests/unit-tests/api/settings.php +++ b/tests/unit-tests/api/settings.php @@ -52,10 +52,9 @@ class Settings extends WC_REST_Unit_Test_Case { 'description' => 'My awesome test settings.', 'sub_groups' => array( 'sub-test' ), '_links' => array( - 'item' => array( + 'options' => array( array( - 'href' => rest_url( '/wc/v2/settings/test' ), - 'embeddable' => true, + 'href' => rest_url( '/wc/v2/settings/test' ), ), ), ), @@ -68,10 +67,9 @@ class Settings extends WC_REST_Unit_Test_Case { 'description' => '', 'sub_groups' => array(), '_links' => array( - 'item' => array( + 'options' => array( array( - 'href' => rest_url( '/wc/v2/settings/sub-test' ), - 'embeddable' => true, + 'href' => rest_url( '/wc/v2/settings/sub-test' ), ), ), ), From 24a2ff1960accb7e651ce90fd62f44ef5625aaa3 Mon Sep 17 00:00:00 2001 From: Manos Psychogyiopoulos Date: Fri, 24 Mar 2017 10:41:27 +0200 Subject: [PATCH 127/525] Add woocommerce_add_to_cart_sold_individually_found_in_cart hook Makes it easy for 3p code to change the condition that identifies whether a "sold individually" product is in the cart. For example, 3p code may use this hook to identify whether a product with the same ID already exists in the cart (instead of relying on finding the same hash/key). --- includes/class-wc-cart.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/includes/class-wc-cart.php b/includes/class-wc-cart.php index 9ca1c0a1b0c..e40f3beacad 100644 --- a/includes/class-wc-cart.php +++ b/includes/class-wc-cart.php @@ -904,10 +904,10 @@ class WC_Cart { // Force quantity to 1 if sold individually and check for existing item in cart if ( $product_data->is_sold_individually() ) { - $quantity = apply_filters( 'woocommerce_add_to_cart_sold_individually_quantity', 1, $quantity, $product_id, $variation_id, $cart_item_data ); - $in_cart_quantity = $cart_item_key ? $this->cart_contents[ $cart_item_key ]['quantity'] : 0; + $quantity = apply_filters( 'woocommerce_add_to_cart_sold_individually_quantity', 1, $quantity, $product_id, $variation_id, $cart_item_data ); + $found_in_cart = apply_filters( 'woocommerce_add_to_cart_sold_individually_found_in_cart', $cart_item_key && $this->cart_contents[ $cart_item_key ]['quantity'] > 0, $product_id, $variation_id, $cart_item_data, $cart_id ); - if ( $in_cart_quantity > 0 ) { + if ( $found_in_cart ) { /* translators: %s: product name */ throw new Exception( sprintf( '%s %s', wc_get_cart_url(), __( 'View cart', 'woocommerce' ), sprintf( __( 'You cannot add another "%s" to your cart.', 'woocommerce' ), $product_data->get_name() ) ) ); } From eb43190e1ecc78873ea94413f9cb3ecca3ef358f Mon Sep 17 00:00:00 2001 From: Manos Psychogyiopoulos Date: Fri, 24 Mar 2017 12:00:46 +0200 Subject: [PATCH 128/525] Stripslashes of posted variation attribute values Resolves issues with values that contain quotes, for instance. --- templates/single-product/add-to-cart/variable.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/single-product/add-to-cart/variable.php b/templates/single-product/add-to-cart/variable.php index f5c127fa9a3..2fae4efb744 100644 --- a/templates/single-product/add-to-cart/variable.php +++ b/templates/single-product/add-to-cart/variable.php @@ -38,7 +38,7 @@ do_action( 'woocommerce_before_add_to_cart_form' ); ?>
    ; vertical-align:middle; border: 1px solid #eee; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif; word-wrap:break-word;"> $item ) : do_action( 'woocommerce_order_item_meta_end', $item_id, $item, $order, $plain_text ); ?>get_quantity(), $item ); ?>get_formatted_line_subtotal( $item ); ?>get_quantity(), $item ); ?>get_formatted_line_subtotal( $item ); ?>
    + ‎ '; @@ -318,12 +319,13 @@ class WC_Admin_Settings { name="" id="" type="" + dir="ltr" style="" value="" class="" placeholder="" - /> + />‎
    get_variation_default_attribute( $attribute_name ); + $selected = isset( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) ? wc_clean( stripslashes( urldecode( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) ) ) : $product->get_variation_default_attribute( $attribute_name ); wc_dropdown_variation_attribute_options( array( 'options' => $options, 'attribute' => $attribute_name, 'product' => $product, 'selected' => $selected ) ); echo end( $attribute_keys ) === $attribute_name ? apply_filters( 'woocommerce_reset_variations_link', '' . esc_html__( 'Clear', 'woocommerce' ) . '' ) : ''; ?> From 819448daf598f61612a5fba5b91600bc50c531f2 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 24 Mar 2017 11:35:54 +0000 Subject: [PATCH 129/525] Fix unit test --- tests/unit-tests/api/shipping-zones.php | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/tests/unit-tests/api/shipping-zones.php b/tests/unit-tests/api/shipping-zones.php index 6985e087499..3f557abadb5 100644 --- a/tests/unit-tests/api/shipping-zones.php +++ b/tests/unit-tests/api/shipping-zones.php @@ -452,7 +452,7 @@ class WC_Tests_API_Shipping_Zones extends WC_REST_Unit_Test_Case { 'type' => 'country', ), array( - 'code' => 'US', // test that locations missing "type" aren't saved + 'code' => 'US', // test that locations missing "type" treated as country. ), array( 'code' => 'SW1A0AA', @@ -483,6 +483,22 @@ class WC_Tests_API_Shipping_Zones extends WC_REST_Unit_Test_Case { ), ), ), + array( + 'code' => 'US', + 'type' => 'country', + '_links' => array( + 'collection' => array( + array( + 'href' => rest_url( '/wc/v2/shipping/zones/' . $zone->get_id() . '/locations' ), + ), + ), + 'describes' => array( + array( + 'href' => rest_url( '/wc/v2/shipping/zones/' . $zone->get_id() ), + ), + ), + ), + ), array( 'code' => 'SW1A0AA', 'type' => 'postcode', From 7fd2f4f554c2c79a3bc75593d86b9aa9da3e72ab Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 24 Mar 2017 11:48:32 +0000 Subject: [PATCH 130/525] Support (not really) relative paths Fixes #13750 --- includes/class-wc-download-handler.php | 4 ++++ includes/class-wc-product-download.php | 2 ++ 2 files changed, 6 insertions(+) diff --git a/includes/class-wc-download-handler.php b/includes/class-wc-download-handler.php index bd91e32b328..a5395674f43 100644 --- a/includes/class-wc-download-handler.php +++ b/includes/class-wc-download-handler.php @@ -205,6 +205,10 @@ class WC_Download_Handler { $remote_file = false; $file_path = ABSPATH . $file_path; + } elseif ( '/wp-content' === substr( $file_path, 0, 11 ) ) { + $remote_file = false; + $file_path = realpath( WP_CONTENT_DIR . substr( $file_path, 11 ) ); + // Check if we have an absolute path } elseif ( ( ! isset( $parsed_file_path['scheme'] ) || ! in_array( $parsed_file_path['scheme'], array( 'http', 'https', 'ftp' ) ) ) && isset( $parsed_file_path['path'] ) && file_exists( $parsed_file_path['path'] ) ) { $remote_file = false; diff --git a/includes/class-wc-product-download.php b/includes/class-wc-product-download.php index 80feed84acb..5bad4305ed5 100644 --- a/includes/class-wc-product-download.php +++ b/includes/class-wc-product-download.php @@ -97,6 +97,8 @@ class WC_Product_Download implements ArrayAccess { $file_url = $this->get_file(); if ( '..' === substr( $file_url, 0, 2 ) || '/' !== substr( $file_url, 0, 1 ) ) { $file_url = realpath( ABSPATH . $file_url ); + } elseif ( '/wp-content' === substr( $file_url, 0, 11 ) ) { + $file_url = realpath( WP_CONTENT_DIR . substr( $file_url, 11 ) ); } return apply_filters( 'woocommerce_downloadable_file_exists', file_exists( $file_url ), $this->get_file() ); } From 7857fbe41f95b036229c9f40a8a89fa8793037bf Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 24 Mar 2017 12:05:28 +0000 Subject: [PATCH 131/525] Cast values to float Fixes #13752 --- includes/abstracts/abstract-wc-order.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/abstracts/abstract-wc-order.php b/includes/abstracts/abstract-wc-order.php index 2379537cb09..724c791022c 100644 --- a/includes/abstracts/abstract-wc-order.php +++ b/includes/abstracts/abstract-wc-order.php @@ -412,7 +412,7 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { $tax_totals[ $code ]->rate_id = $tax->get_rate_id(); $tax_totals[ $code ]->is_compound = $tax->is_compound(); $tax_totals[ $code ]->label = $tax->get_label(); - $tax_totals[ $code ]->amount += $tax->get_tax_total() + $tax->get_shipping_tax_total(); + $tax_totals[ $code ]->amount += (float) $tax->get_tax_total() + (float) $tax->get_shipping_tax_total(); $tax_totals[ $code ]->formatted_amount = wc_price( wc_round_tax_total( $tax_totals[ $code ]->amount ), array( 'currency' => $this->get_currency() ) ); } From 32f8142c917f1f2f5f56865b229aa95ee99de9c7 Mon Sep 17 00:00:00 2001 From: pierrebuet Date: Fri, 24 Mar 2017 12:13:00 +0000 Subject: [PATCH 132/525] Fixes #13748 --- includes/admin/meta-boxes/views/html-order-item.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/includes/admin/meta-boxes/views/html-order-item.php b/includes/admin/meta-boxes/views/html-order-item.php index 9a71fdefb80..2e5bbbda402 100644 --- a/includes/admin/meta-boxes/views/html-order-item.php +++ b/includes/admin/meta-boxes/views/html-order-item.php @@ -121,7 +121,11 @@ $thumbnail = $product ? apply_filters( 'woocommerce_admin_order_item_thumbnai } if ( $item->get_subtotal() !== $item->get_total() ) { - echo '-' . wc_price( wc_round_tax_total( $tax_item_subtotal - $tax_item_total ), array( 'currency' => $order->get_currency() ) ) . ''; + if ( '' === $tax_item_total ) { + echo ''; + } else { + echo '-' . wc_price( wc_round_tax_total( $tax_item_subtotal - $tax_item_total ), array( 'currency' => $order->get_currency() ) ) . ''; + } } if ( $refunded = $order->get_tax_refunded_for_item( $item_id, $tax_item_id ) ) { From 53a7d54253e9a8d75efd81888c6338dc461e8953 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 24 Mar 2017 13:22:09 +0000 Subject: [PATCH 133/525] Update settings once --- ...ss-wc-rest-payment-gateways-controller.php | 51 +++++++++---------- 1 file changed, 24 insertions(+), 27 deletions(-) diff --git a/includes/api/class-wc-rest-payment-gateways-controller.php b/includes/api/class-wc-rest-payment-gateways-controller.php index e0ddeb6c1f4..5b9465b6647 100644 --- a/includes/api/class-wc-rest-payment-gateways-controller.php +++ b/includes/api/class-wc-rest-payment-gateways-controller.php @@ -159,10 +159,12 @@ class WC_REST_Payment_Gateways_Controller extends WC_REST_Controller { return new WP_Error( 'woocommerce_rest_payment_gateway_invalid', __( 'Resource does not exist.', 'woocommerce' ), array( 'status' => 404 ) ); } - // Update settings if present + // Get settings. + $gateway->init_form_fields(); + $settings = $gateway->settings; + + // Update settings. if ( isset( $request['settings'] ) ) { - $gateway->init_form_fields(); - $settings = $gateway->settings; $errors_found = false; foreach ( $gateway->form_fields as $key => $field ) { if ( isset( $request['settings'][ $key ] ) ) { @@ -182,11 +184,27 @@ class WC_REST_Payment_Gateways_Controller extends WC_REST_Controller { if ( $errors_found ) { return new WP_Error( 'rest_setting_value_invalid', __( 'An invalid setting value was passed.', 'woocommerce' ), array( 'status' => 400 ) ); } - - $gateway->settings = $settings; - update_option( $gateway->get_option_key(), apply_filters( 'woocommerce_gateway_' . $gateway->id . '_settings_values', $settings, $gateway ) ); } + // Update if this method is enabled or not. + if ( isset( $request['enabled'] ) ) { + $gateway->enabled = $settings['enabled'] = wc_bool_to_string( $request['enabled'] ); + } + + // Update title. + if ( isset( $request['title'] ) ) { + $gateway->title = $settings['title'] = $request['title']; + } + + // Update description. + if ( isset( $request['description'] ) ) { + $gateway->description = $settings['description'] = $request['description']; + } + + // Update options. + $gateway->settings = $settings; + update_option( $gateway->get_option_key(), apply_filters( 'woocommerce_gateway_' . $gateway->id . '_settings_values', $settings, $gateway ) ); + // Update order if ( isset( $request['order'] ) ) { $order = (array) get_option( 'woocommerce_gateway_order' ); @@ -195,27 +213,6 @@ class WC_REST_Payment_Gateways_Controller extends WC_REST_Controller { $gateway->order = absint( $request['order'] ); } - // Update if this method is enabled or not. - if ( isset( $request['enabled'] ) ) { - $settings = $gateway->settings; - $gateway->enabled = $settings['enabled'] = wc_bool_to_string( $request['enabled'] ); - update_option( $gateway->get_option_key(), apply_filters( 'woocommerce_gateway_' . $gateway->id . '_settings_values', $settings, $gateway ) ); - } - - // Update title. - if ( isset( $request['title'] ) ) { - $settings = $gateway->settings; - $gateway->title = $settings['title'] = $request['title']; - update_option( $gateway->get_option_key(), apply_filters( 'woocommerce_gateway_' . $gateway->id . '_settings_values', $settings, $gateway ) ); - } - - // Update description. - if ( isset( $request['description'] ) ) { - $settings = $gateway->settings; - $gateway->description = $settings['description'] = $request['description']; - update_option( $gateway->get_option_key(), apply_filters( 'woocommerce_gateway_' . $gateway->id . '_settings_values', $settings, $gateway ) ); - } - $gateway = $this->prepare_item_for_response( $gateway, $request ); return rest_ensure_response( $gateway ); } From ca8fafdd367c96f3eacf2e63639dbedf4e93386f Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 24 Mar 2017 13:27:47 +0000 Subject: [PATCH 134/525] Hide enabled/description --- includes/api/class-wc-rest-payment-gateways-controller.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/includes/api/class-wc-rest-payment-gateways-controller.php b/includes/api/class-wc-rest-payment-gateways-controller.php index 5b9465b6647..d61721f5a33 100644 --- a/includes/api/class-wc-rest-payment-gateways-controller.php +++ b/includes/api/class-wc-rest-payment-gateways-controller.php @@ -288,6 +288,10 @@ class WC_REST_Payment_Gateways_Controller extends WC_REST_Controller { if ( 'title' === $field['type'] ) { continue; } + // Ignore 'enabled' and 'description' which get included elsewhere. + if ( in_array( $id, array( 'enabled', 'description' ) ) ) { + continue; + } $data = array( 'id' => $id, 'label' => empty( $field['label'] ) ? $field['title'] : $field['label'], From 5ceef2cdd566d80d0d0525f41030f05b88a87be3 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 24 Mar 2017 15:02:51 +0000 Subject: [PATCH 135/525] Check we have a product object. --- includes/admin/class-wc-admin-post-types.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/includes/admin/class-wc-admin-post-types.php b/includes/admin/class-wc-admin-post-types.php index 78aa0b846bc..1d093e8b590 100644 --- a/includes/admin/class-wc-admin-post-types.php +++ b/includes/admin/class-wc-admin-post-types.php @@ -324,6 +324,11 @@ class WC_Admin_Post_Types { $the_product = wc_get_product( $post ); } + // Only continue if we have a product. + if ( empty( $the_product ) ) { + return; + } + switch ( $column ) { case 'thumb' : echo '' . $the_product->get_image( 'thumbnail' ) . ''; From 01408ddda6034e4be000d401f0de41fdfffab6fb Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 24 Mar 2017 15:11:21 +0000 Subject: [PATCH 136/525] Fixed api tests --- tests/unit-tests/api/payment-gateways.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/unit-tests/api/payment-gateways.php b/tests/unit-tests/api/payment-gateways.php index d1189540a11..c0700a13491 100644 --- a/tests/unit-tests/api/payment-gateways.php +++ b/tests/unit-tests/api/payment-gateways.php @@ -50,7 +50,7 @@ class Payment_Gateways extends WC_REST_Unit_Test_Case { 'enabled' => true, 'method_title' => 'Check payments', 'method_description' => "Allows check payments. Why would you take checks in this day and age? Well you probably wouldn't but it does allow you to make test purchases for testing order emails and the 'success' pages etc.", - 'settings' => $this->get_settings( 'WC_Gateway_Cheque' ), + 'settings' => array_diff_key( $this->get_settings( 'WC_Gateway_Cheque' ), array( 'enabled' => false, 'description' => false ) ), '_links' => array( 'self' => array( array( @@ -90,14 +90,14 @@ class Payment_Gateways extends WC_REST_Unit_Test_Case { $this->assertEquals( 200, $response->get_status() ); $this->assertEquals( array( - 'id' => 'paypal', - 'title' => 'PayPal', - 'description' => "Pay via PayPal; you can pay with your credit card if you don't have a PayPal account.", - 'order' => '', - 'enabled' => true, - 'method_title' => 'PayPal', + 'id' => 'paypal', + 'title' => 'PayPal', + 'description' => "Pay via PayPal; you can pay with your credit card if you don't have a PayPal account.", + 'order' => '', + 'enabled' => true, + 'method_title' => 'PayPal', 'method_description' => 'PayPal Standard sends customers to PayPal to enter their payment information. PayPal IPN requires fsockopen/cURL support to update order statuses after payment. Check the system status page for more details.', - 'settings' => $this->get_settings( 'WC_Gateway_Paypal' ), + 'settings' => array_diff_key( $this->get_settings( 'WC_Gateway_Paypal' ), array( 'enabled' => false, 'description' => false ) ), ), $paypal ); } From 1bc194945f357eca08508618d795186f4635fc2b Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 24 Mar 2017 15:11:55 +0000 Subject: [PATCH 137/525] Version bump and POT --- i18n/languages/woocommerce.pot | 1709 +++++++++++++++++--------------- woocommerce.php | 2 +- 2 files changed, 935 insertions(+), 776 deletions(-) diff --git a/i18n/languages/woocommerce.pot b/i18n/languages/woocommerce.pot index da94c2339a1..cbcf718b18d 100644 --- a/i18n/languages/woocommerce.pot +++ b/i18n/languages/woocommerce.pot @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: WooCommerce 3.0.0-rc.1\n" "Report-Msgid-Bugs-To: https://github.com/woocommerce/woocommerce/issues\n" -"POT-Creation-Date: 2017-03-21 13:24:32+00:00\n" +"POT-Creation-Date: 2017-03-24 15:11:43+00:00\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -5170,7 +5170,7 @@ msgstr "" #: includes/abstracts/abstract-wc-order.php:1513 #: includes/admin/meta-boxes/views/html-order-item.php:97 -#: includes/admin/meta-boxes/views/html-order-item.php:139 +#: includes/admin/meta-boxes/views/html-order-item.php:143 #: includes/shortcodes/class-wc-shortcode-checkout.php:144 #: templates/checkout/thankyou.php:56 msgid "Total:" @@ -5218,7 +5218,7 @@ msgid "Read more" msgstr "" #: includes/abstracts/abstract-wc-product.php:1853 -#: includes/admin/class-wc-admin-post-types.php:433 +#: includes/admin/class-wc-admin-post-types.php:438 #: includes/admin/class-wc-admin-reports.php:100 #: includes/admin/reports/class-wc-report-stock.php:110 #: includes/wc-product-functions.php:803 @@ -5233,11 +5233,11 @@ msgstr "" #: includes/api/legacy/v2/class-wc-api-coupons.php:519 #: includes/api/legacy/v2/class-wc-api-customers.php:783 #: includes/api/legacy/v2/class-wc-api-orders.php:1768 -#: includes/api/legacy/v2/class-wc-api-products.php:2271 +#: includes/api/legacy/v2/class-wc-api-products.php:2272 #: includes/api/legacy/v3/class-wc-api-coupons.php:519 #: includes/api/legacy/v3/class-wc-api-customers.php:773 #: includes/api/legacy/v3/class-wc-api-orders.php:1818 -#: includes/api/legacy/v3/class-wc-api-products.php:3077 +#: includes/api/legacy/v3/class-wc-api-products.php:3078 #: includes/api/legacy/v3/class-wc-api-taxes.php:465 #. translators: %s: items limit msgid "Unable to accept more than %s items for this request." @@ -5247,8 +5247,8 @@ msgstr "" #: includes/abstracts/abstract-wc-rest-controller.php:239 #: includes/abstracts/abstract-wc-rest-controller.php:262 #: includes/abstracts/abstract-wc-rest-controller.php:305 -#: includes/api/class-wc-rest-payment-gateways-controller.php:183 -#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:311 +#: includes/api/class-wc-rest-payment-gateways-controller.php:185 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:317 msgid "An invalid setting value was passed." msgstr "" @@ -5311,7 +5311,7 @@ msgstr "" #: includes/abstracts/abstract-wc-rest-crud-controller.php:225 #: includes/abstracts/abstract-wc-rest-crud-controller.php:385 #: includes/abstracts/abstract-wc-rest-posts-controller.php:148 -#: includes/api/class-wc-rest-product-variations-controller.php:459 +#: includes/api/class-wc-rest-product-variations-controller.php:458 #: includes/api/class-wc-rest-products-controller.php:1264 msgid "Invalid ID." msgstr "" @@ -5330,7 +5330,7 @@ msgstr "" #: includes/abstracts/abstract-wc-rest-crud-controller.php:402 #: includes/abstracts/abstract-wc-rest-posts-controller.php:433 -#: includes/api/class-wc-rest-product-variations-controller.php:476 +#: includes/api/class-wc-rest-product-variations-controller.php:475 #: includes/api/class-wc-rest-products-controller.php:1285 #: includes/api/v1/class-wc-rest-products-controller.php:1658 #. translators: %s: post type @@ -5339,7 +5339,7 @@ msgstr "" #: includes/abstracts/abstract-wc-rest-crud-controller.php:416 #: includes/abstracts/abstract-wc-rest-posts-controller.php:446 -#: includes/api/class-wc-rest-product-variations-controller.php:490 +#: includes/api/class-wc-rest-product-variations-controller.php:489 #: includes/api/class-wc-rest-products-controller.php:1312 #: includes/api/v1/class-wc-rest-products-controller.php:1685 #. translators: %s: post type @@ -5348,7 +5348,7 @@ msgstr "" #: includes/abstracts/abstract-wc-rest-crud-controller.php:423 #: includes/abstracts/abstract-wc-rest-posts-controller.php:452 -#: includes/api/class-wc-rest-product-variations-controller.php:497 +#: includes/api/class-wc-rest-product-variations-controller.php:496 #: includes/api/class-wc-rest-products-controller.php:1319 #: includes/api/v1/class-wc-rest-products-controller.php:1691 #. translators: %s: post type @@ -5357,7 +5357,7 @@ msgstr "" #: includes/abstracts/abstract-wc-rest-crud-controller.php:433 #: includes/abstracts/abstract-wc-rest-posts-controller.php:462 -#: includes/api/class-wc-rest-product-variations-controller.php:507 +#: includes/api/class-wc-rest-product-variations-controller.php:506 #: includes/api/class-wc-rest-products-controller.php:1329 #: includes/api/v1/class-wc-rest-order-notes-controller.php:313 #: includes/api/v1/class-wc-rest-products-controller.php:1702 @@ -5441,8 +5441,8 @@ msgstr "" #: includes/abstracts/abstract-wc-rest-shipping-zones-controller.php:67 #: includes/abstracts/abstract-wc-rest-terms-controller.php:117 #: includes/api/class-wc-rest-payment-gateways-controller.php:83 -#: includes/api/class-wc-rest-settings-controller.php:180 -#: includes/api/class-wc-rest-settings-options-controller.php:341 +#: includes/api/class-wc-rest-setting-options-controller.php:341 +#: includes/api/class-wc-rest-settings-controller.php:179 #: includes/api/class-wc-rest-shipping-methods-controller.php:77 #: includes/api/class-wc-rest-system-status-controller.php:60 #: includes/api/class-wc-rest-system-status-tools-controller.php:81 @@ -5481,7 +5481,7 @@ msgstr "" #: includes/abstracts/abstract-wc-rest-posts-controller.php:146 #: includes/abstracts/abstract-wc-rest-posts-controller.php:253 -#: includes/api/class-wc-rest-products-controller.php:676 +#: includes/api/class-wc-rest-products-controller.php:675 #: includes/api/class-wc-rest-products-controller.php:1268 #: includes/api/v1/class-wc-rest-products-controller.php:1639 msgid "" @@ -5509,9 +5509,9 @@ msgstr "" #: includes/api/class-wc-rest-payment-gateways-controller.php:142 #: includes/api/class-wc-rest-payment-gateways-controller.php:159 #: includes/api/class-wc-rest-shipping-methods-controller.php:122 -#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:113 -#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:211 -#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:267 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:119 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:217 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:273 #: includes/api/v1/class-wc-rest-customer-downloads-controller.php:70 #: includes/api/v1/class-wc-rest-product-attributes-controller.php:155 #: includes/api/v1/class-wc-rest-product-attributes-controller.php:173 @@ -5536,18 +5536,23 @@ msgstr "" #: includes/abstracts/abstract-wc-rest-terms-controller.php:60 #: includes/api/class-wc-rest-coupons-controller.php:75 #: includes/api/class-wc-rest-customers-controller.php:128 +#: includes/api/class-wc-rest-order-notes-controller.php:132 #: includes/api/class-wc-rest-order-refunds-controller.php:92 #: includes/api/class-wc-rest-order-refunds-controller.php:342 #: includes/api/class-wc-rest-orders-controller.php:82 #: includes/api/class-wc-rest-orders-controller.php:793 #: includes/api/class-wc-rest-payment-gateways-controller.php:53 -#: includes/api/class-wc-rest-product-variations-controller.php:594 +#: includes/api/class-wc-rest-product-categories-controller.php:106 +#: includes/api/class-wc-rest-product-reviews-controller.php:155 +#: includes/api/class-wc-rest-product-variations-controller.php:593 #: includes/api/class-wc-rest-products-controller.php:83 #: includes/api/class-wc-rest-products-controller.php:1363 -#: includes/api/class-wc-rest-settings-options-controller.php:81 +#: includes/api/class-wc-rest-setting-options-controller.php:81 #: includes/api/class-wc-rest-shipping-methods-controller.php:53 -#: includes/api/class-wc-rest-shipping-zones-controller.php:269 +#: includes/api/class-wc-rest-shipping-zones-controller.php:275 #: includes/api/class-wc-rest-system-status-tools-controller.php:54 +#: includes/api/class-wc-rest-webhook-deliveries.php:80 +#: includes/api/class-wc-rest-webhooks-controller.php:87 #: includes/api/v1/class-wc-rest-coupons-controller.php:82 #: includes/api/v1/class-wc-rest-customer-downloads-controller.php:46 #: includes/api/v1/class-wc-rest-customers-controller.php:78 @@ -5644,13 +5649,13 @@ msgstr "" #: includes/abstracts/abstract-wc-settings-api.php:735 #: includes/admin/class-wc-admin-menus.php:270 -#: includes/admin/class-wc-admin-settings.php:605 +#: includes/admin/class-wc-admin-settings.php:607 #: includes/admin/meta-boxes/views/html-product-attribute.php:45 msgid "Select all" msgstr "" #: includes/abstracts/abstract-wc-settings-api.php:735 -#: includes/admin/class-wc-admin-settings.php:605 +#: includes/admin/class-wc-admin-settings.php:607 #: includes/admin/meta-boxes/views/html-product-attribute.php:46 msgid "Select none" msgstr "" @@ -6033,7 +6038,7 @@ msgstr "" #: includes/admin/class-wc-admin-assets.php:260 #: includes/admin/class-wc-admin-post-types.php:267 -#: includes/admin/class-wc-admin-post-types.php:1792 +#: includes/admin/class-wc-admin-post-types.php:1797 #: includes/admin/views/html-bulk-edit-product.php:199 #: includes/admin/views/html-quick-edit-product.php:157 msgid "Featured" @@ -6068,16 +6073,16 @@ msgid "Copying to clipboard failed. Please press Ctrl/Cmd+C to copy." msgstr "" #: includes/admin/class-wc-admin-attributes.php:99 -#: includes/api/legacy/v2/class-wc-api-products.php:1962 -#: includes/api/legacy/v3/class-wc-api-products.php:2521 +#: includes/api/legacy/v2/class-wc-api-products.php:1963 +#: includes/api/legacy/v3/class-wc-api-products.php:2522 #: includes/api/v1/class-wc-rest-product-attributes-controller.php:646 #. translators: %s: attribute name msgid "Slug \"%s\" is too long (28 characters max). Shorten it, please." msgstr "" #: includes/admin/class-wc-admin-attributes.php:102 -#: includes/api/legacy/v2/class-wc-api-products.php:1964 -#: includes/api/legacy/v3/class-wc-api-products.php:2523 +#: includes/api/legacy/v2/class-wc-api-products.php:1965 +#: includes/api/legacy/v3/class-wc-api-products.php:2524 #: includes/api/v1/class-wc-rest-product-attributes-controller.php:648 #. translators: %s: attribute name msgid "Slug \"%s\" is not allowed because it is a reserved term. Change it, please." @@ -6090,8 +6095,8 @@ msgstr "" #: includes/admin/class-wc-admin-attributes.php:124 #: includes/admin/class-wc-admin-attributes.php:158 -#: includes/api/legacy/v2/class-wc-api-products.php:1966 -#: includes/api/legacy/v3/class-wc-api-products.php:2525 +#: includes/api/legacy/v2/class-wc-api-products.php:1967 +#: includes/api/legacy/v3/class-wc-api-products.php:2526 #: includes/api/v1/class-wc-rest-product-attributes-controller.php:650 #. translators: %s: attribute name msgid "Slug \"%s\" is already in use. Change it, please." @@ -6199,7 +6204,7 @@ msgid "Terms" msgstr "" #: includes/admin/class-wc-admin-attributes.php:384 -#: includes/admin/class-wc-admin-post-types.php:1796 +#: includes/admin/class-wc-admin-post-types.php:1801 #: includes/admin/class-wc-admin-webhooks-table-list.php:99 #: includes/admin/meta-boxes/class-wc-meta-box-order-data.php:274 #: includes/admin/meta-boxes/class-wc-meta-box-order-data.php:364 @@ -6718,7 +6723,6 @@ msgstr "" #: includes/admin/class-wc-admin-menus.php:80 #: includes/admin/settings/class-wc-settings-api.php:45 #: includes/admin/views/html-admin-page-status-report.php:411 -#: includes/api/class-wc-rest-system-status-controller.php:372 #: includes/class-wc-install.php:885 msgid "Settings" msgstr "" @@ -6849,7 +6853,7 @@ msgid "" msgstr "" #: includes/admin/class-wc-admin-pointers.php:60 -#: includes/admin/class-wc-admin-post-types.php:1735 +#: includes/admin/class-wc-admin-post-types.php:1740 msgid "Product name" msgstr "" @@ -7330,45 +7334,45 @@ msgstr "" msgid "Actions" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:383 +#: includes/admin/class-wc-admin-post-types.php:388 msgid "Grouped" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:385 +#: includes/admin/class-wc-admin-post-types.php:390 msgid "External/Affiliate" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:389 -#: includes/admin/class-wc-admin-post-types.php:1493 +#: includes/admin/class-wc-admin-post-types.php:394 +#: includes/admin/class-wc-admin-post-types.php:1498 #: includes/admin/meta-boxes/class-wc-meta-box-product-data.php:59 #: includes/admin/meta-boxes/views/html-variation-admin.php:81 msgid "Virtual" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:391 -#: includes/admin/class-wc-admin-post-types.php:1485 +#: includes/admin/class-wc-admin-post-types.php:396 +#: includes/admin/class-wc-admin-post-types.php:1490 #: includes/admin/meta-boxes/class-wc-meta-box-product-data.php:66 #: includes/admin/meta-boxes/views/html-variation-admin.php:77 msgid "Downloadable" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:393 +#: includes/admin/class-wc-admin-post-types.php:398 msgid "Simple" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:396 +#: includes/admin/class-wc-admin-post-types.php:401 msgid "Variable" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:420 +#: includes/admin/class-wc-admin-post-types.php:425 msgid "Toggle featured" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:422 -#: includes/admin/class-wc-admin-post-types.php:539 -#: includes/admin/class-wc-admin-post-types.php:587 -#: includes/admin/class-wc-admin-post-types.php:590 -#: includes/admin/class-wc-admin-post-types.php:593 +#: includes/admin/class-wc-admin-post-types.php:427 +#: includes/admin/class-wc-admin-post-types.php:544 +#: includes/admin/class-wc-admin-post-types.php:592 +#: includes/admin/class-wc-admin-post-types.php:595 +#: includes/admin/class-wc-admin-post-types.php:598 #: includes/admin/settings/class-wc-settings-checkout.php:328 #: includes/admin/settings/class-wc-settings-emails.php:274 #: includes/admin/settings/class-wc-settings-shipping.php:244 @@ -7378,7 +7382,7 @@ msgstr "" msgid "Yes" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:424 +#: includes/admin/class-wc-admin-post-types.php:429 #: includes/admin/settings/class-wc-settings-shipping.php:245 #: includes/admin/views/html-bulk-edit-product.php:206 #: includes/admin/views/html-bulk-edit-product.php:240 @@ -7386,131 +7390,131 @@ msgstr "" msgid "No" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:431 +#: includes/admin/class-wc-admin-post-types.php:436 #: includes/admin/reports/class-wc-report-stock.php:108 -#: includes/wc-formatting-functions.php:933 +#: includes/wc-formatting-functions.php:970 #: includes/wc-product-functions.php:802 msgid "In stock" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:499 +#: includes/admin/class-wc-admin-post-types.php:504 #. translators: 1: count 2: limit msgid "%1$s / %2$s" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:535 +#: includes/admin/class-wc-admin-post-types.php:540 msgid "Y-m-d" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:554 +#: includes/admin/class-wc-admin-post-types.php:559 #: templates/order/order-details-customer.php:46 msgid "Phone:" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:567 -#: includes/admin/class-wc-admin-post-types.php:604 +#: includes/admin/class-wc-admin-post-types.php:572 +#: includes/admin/class-wc-admin-post-types.php:609 msgid "Via" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:590 +#: includes/admin/class-wc-admin-post-types.php:595 #. translators: %d: notes count msgid "plus %d other note" msgid_plural "plus %d other notes" msgstr[0] "" msgstr[1] "" -#: includes/admin/class-wc-admin-post-types.php:593 +#: includes/admin/class-wc-admin-post-types.php:598 #. translators: %d: notes count msgid "%d note" msgid_plural "%d notes" msgstr[0] "" msgstr[1] "" -#: includes/admin/class-wc-admin-post-types.php:620 +#: includes/admin/class-wc-admin-post-types.php:625 #: includes/admin/meta-boxes/class-wc-meta-box-order-data.php:265 msgid "Guest" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:625 +#: includes/admin/class-wc-admin-post-types.php:630 #. translators: 1: order and number (i.e. Order #13) 2: user name msgid "%1$s by %2$s" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:634 +#: includes/admin/class-wc-admin-post-types.php:639 msgid "Show more details" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:648 +#: includes/admin/class-wc-admin-post-types.php:653 msgid "Processing" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:656 +#: includes/admin/class-wc-admin-post-types.php:661 msgid "Complete" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:663 +#: includes/admin/class-wc-admin-post-types.php:668 #: includes/admin/reports/class-wc-report-stock.php:134 #: includes/admin/views/html-admin-page-status-logs.php:28 #: templates/myaccount/my-orders.php:79 templates/myaccount/orders.php:75 msgid "View" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:790 +#: includes/admin/class-wc-admin-post-types.php:795 msgid "Sort products" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1276 +#: includes/admin/class-wc-admin-post-types.php:1281 msgid "Mark processing" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1277 +#: includes/admin/class-wc-admin-post-types.php:1282 msgid "Mark on-hold" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1278 +#: includes/admin/class-wc-admin-post-types.php:1283 msgid "Mark complete" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1313 +#: includes/admin/class-wc-admin-post-types.php:1318 msgid "Order status changed by bulk edit:" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1348 +#: includes/admin/class-wc-admin-post-types.php:1353 #. translators: %s: orders count msgid "Order status changed." msgid_plural "%s order statuses changed." msgstr[0] "" msgstr[1] "" -#: includes/admin/class-wc-admin-post-types.php:1445 +#: includes/admin/class-wc-admin-post-types.php:1450 msgid "Show all product types" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1458 +#: includes/admin/class-wc-admin-post-types.php:1463 #: includes/wc-product-functions.php:523 msgid "Grouped product" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1461 +#: includes/admin/class-wc-admin-post-types.php:1466 #: includes/wc-product-functions.php:524 msgid "External/Affiliate product" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1464 +#: includes/admin/class-wc-admin-post-types.php:1469 #: includes/wc-product-functions.php:525 msgid "Variable product" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1467 +#: includes/admin/class-wc-admin-post-types.php:1472 #: includes/wc-product-functions.php:522 msgid "Simple product" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1508 +#: includes/admin/class-wc-admin-post-types.php:1513 msgid "Show all types" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1537 +#: includes/admin/class-wc-admin-post-types.php:1542 #: includes/admin/meta-boxes/class-wc-meta-box-order-data.php:258 #: includes/admin/settings/views/html-keys-edit.php:35 #: includes/class-wc-ajax.php:1244 @@ -7518,42 +7522,42 @@ msgstr "" msgid "%1$s (#%2$s – %3$s)" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1544 +#: includes/admin/class-wc-admin-post-types.php:1549 msgid "Search for a customer…" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1738 +#: includes/admin/class-wc-admin-post-types.php:1743 #: templates/cart/cart.php:137 templates/checkout/form-coupon.php:36 msgid "Coupon code" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1752 +#: includes/admin/class-wc-admin-post-types.php:1757 msgid "Description (optional)" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1788 +#: includes/admin/class-wc-admin-post-types.php:1793 msgid "Catalog visibility:" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1804 +#: includes/admin/class-wc-admin-post-types.php:1809 msgid "" "Choose where this product should be displayed in your catalog. The product " "will always be accessible directly." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1810 +#: includes/admin/class-wc-admin-post-types.php:1815 msgid "Enable this option to feature this product." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1812 +#: includes/admin/class-wc-admin-post-types.php:1817 msgid "Featured product" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1815 +#: includes/admin/class-wc-admin-post-types.php:1820 msgid "OK" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1816 +#: includes/admin/class-wc-admin-post-types.php:1821 #: includes/admin/meta-boxes/views/html-order-items.php:222 #: includes/admin/meta-boxes/views/html-order-items.php:268 #: includes/admin/meta-boxes/views/html-product-data-general.php:47 @@ -7562,34 +7566,34 @@ msgstr "" msgid "Cancel" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1915 +#: includes/admin/class-wc-admin-post-types.php:1920 msgid "When you receive a new order, it will appear here." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1916 +#: includes/admin/class-wc-admin-post-types.php:1921 msgid "Learn more about orders" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1921 +#: includes/admin/class-wc-admin-post-types.php:1926 msgid "" "Coupons are a great way to offer discounts and rewards to your customers. " "They will appear here once created." msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1922 +#: includes/admin/class-wc-admin-post-types.php:1927 msgid "Learn more about coupons" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1927 +#: includes/admin/class-wc-admin-post-types.php:1932 msgid "Ready to start selling something awesome?" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1928 +#: includes/admin/class-wc-admin-post-types.php:1933 #: includes/admin/class-wc-admin-setup-wizard.php:765 msgid "Create your first product!" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:1960 +#: includes/admin/class-wc-admin-post-types.php:1965 msgid "" "This is the WooCommerce shop page. The shop page is a special archive that " "lists your products. You can read more about this here." @@ -7633,7 +7637,7 @@ msgstr "" #: includes/api/class-wc-rest-customers-controller.php:282 #: includes/api/class-wc-rest-orders-controller.php:957 #: includes/api/class-wc-rest-orders-controller.php:1020 -msgid "Address 1" +msgid "Address line 1" msgstr "" #: includes/admin/class-wc-admin-profile.php:60 @@ -7644,7 +7648,7 @@ msgstr "" #: includes/api/class-wc-rest-customers-controller.php:287 #: includes/api/class-wc-rest-orders-controller.php:962 #: includes/api/class-wc-rest-orders-controller.php:1025 -msgid "Address 2" +msgid "Address line 2" msgstr "" #: includes/admin/class-wc-admin-profile.php:64 @@ -7670,8 +7674,8 @@ msgstr "" #: includes/admin/class-wc-admin-profile.php:72 #: includes/admin/class-wc-admin-profile.php:125 -#: includes/admin/class-wc-admin-settings.php:572 -#: includes/admin/class-wc-admin-settings.php:597 +#: includes/admin/class-wc-admin-settings.php:574 +#: includes/admin/class-wc-admin-settings.php:599 #: includes/admin/class-wc-admin-setup-wizard.php:462 #: includes/admin/meta-boxes/class-wc-meta-box-order-data.php:71 #: includes/admin/meta-boxes/class-wc-meta-box-order-data.php:120 @@ -7706,13 +7710,13 @@ msgstr "" #: includes/admin/class-wc-admin-profile.php:84 #: includes/admin/meta-boxes/class-wc-meta-box-order-data.php:86 -#: includes/class-wc-countries.php:1078 includes/class-wc-emails.php:416 +#: includes/class-wc-countries.php:1078 includes/class-wc-emails.php:397 msgid "Phone" msgstr "" #: includes/admin/class-wc-admin-profile.php:88 #: includes/admin/meta-boxes/class-wc-meta-box-order-data.php:83 -#: includes/class-wc-countries.php:1087 includes/class-wc-emails.php:409 +#: includes/class-wc-countries.php:1087 includes/class-wc-emails.php:390 #: includes/class-wc-form-handler.php:197 #: templates/myaccount/form-edit-account.php:40 #: templates/myaccount/form-login.php:91 @@ -7789,26 +7793,26 @@ msgstr "" msgid "The changes you made will be lost if you navigate away from this page." msgstr "" -#: includes/admin/class-wc-admin-settings.php:514 +#: includes/admin/class-wc-admin-settings.php:516 msgid "" "The settings of this image size have been disabled because its values are " "being overwritten by a filter." msgstr "" -#: includes/admin/class-wc-admin-settings.php:523 +#: includes/admin/class-wc-admin-settings.php:525 msgid "Hard crop?" msgstr "" -#: includes/admin/class-wc-admin-settings.php:550 +#: includes/admin/class-wc-admin-settings.php:552 msgid "Select a page…" msgstr "" -#: includes/admin/class-wc-admin-settings.php:572 +#: includes/admin/class-wc-admin-settings.php:574 #: includes/admin/class-wc-admin-setup-wizard.php:298 msgid "Choose a country…" msgstr "" -#: includes/admin/class-wc-admin-settings.php:597 +#: includes/admin/class-wc-admin-settings.php:599 msgid "Choose countries…" msgstr "" @@ -7957,7 +7961,6 @@ msgstr "" #: includes/admin/class-wc-admin-setup-wizard.php:318 #: includes/admin/settings/class-wc-settings-general.php:179 #: includes/admin/views/html-admin-page-status-report.php:431 -#: includes/api/class-wc-rest-system-status-controller.php:397 msgid "Currency position" msgstr "" @@ -7984,21 +7987,18 @@ msgstr "" #: includes/admin/class-wc-admin-setup-wizard.php:329 #: includes/admin/settings/class-wc-settings-general.php:196 #: includes/admin/views/html-admin-page-status-report.php:436 -#: includes/api/class-wc-rest-system-status-controller.php:402 msgid "Thousand separator" msgstr "" #: includes/admin/class-wc-admin-setup-wizard.php:335 #: includes/admin/settings/class-wc-settings-general.php:206 #: includes/admin/views/html-admin-page-status-report.php:441 -#: includes/api/class-wc-rest-system-status-controller.php:407 msgid "Decimal separator" msgstr "" #: includes/admin/class-wc-admin-setup-wizard.php:341 #: includes/admin/settings/class-wc-settings-general.php:216 #: includes/admin/views/html-admin-page-status-report.php:446 -#: includes/api/class-wc-rest-system-status-controller.php:412 msgid "Number of decimals" msgstr "" @@ -8839,7 +8839,7 @@ msgid "No billing address set." msgstr "" #: includes/admin/meta-boxes/class-wc-meta-box-order-data.php:328 -#: includes/class-wc-order.php:1744 +#: includes/class-wc-order.php:1747 #: includes/shortcodes/class-wc-shortcode-checkout.php:149 #: templates/checkout/thankyou.php:63 msgid "Payment method:" @@ -8857,8 +8857,8 @@ msgstr "" #: includes/shipping/legacy-flat-rate/includes/settings-flat-rate.php:93 #: includes/shipping/legacy-free-shipping/class-wc-shipping-legacy-free-shipping.php:122 #: includes/wc-account-functions.php:259 -#: includes/wc-formatting-functions.php:1002 -#: includes/wc-formatting-functions.php:1021 +#: includes/wc-formatting-functions.php:1039 +#: includes/wc-formatting-functions.php:1058 #: templates/order/order-details-customer.php:66 #: templates/order/order-details-customer.php:78 #: templates/single-product/meta.php:31 @@ -9089,7 +9089,7 @@ msgid "%s (No longer exists)" msgstr "" #: includes/admin/meta-boxes/views/html-order-item.php:93 -#: includes/admin/meta-boxes/views/html-order-item.php:135 +#: includes/admin/meta-boxes/views/html-order-item.php:139 msgid "Pre-discount:" msgstr "" @@ -9097,11 +9097,11 @@ msgstr "" msgid "After pre-tax discounts." msgstr "" -#: includes/admin/meta-boxes/views/html-order-item.php:155 +#: includes/admin/meta-boxes/views/html-order-item.php:159 msgid "Edit item" msgstr "" -#: includes/admin/meta-boxes/views/html-order-item.php:155 +#: includes/admin/meta-boxes/views/html-order-item.php:159 msgid "Delete item" msgstr "" @@ -9182,7 +9182,7 @@ msgid "Add tax" msgstr "" #: includes/admin/meta-boxes/views/html-order-items.php:206 -#: includes/class-wc-order.php:1760 +#: includes/class-wc-order.php:1763 msgid "Refund" msgstr "" @@ -9550,7 +9550,7 @@ msgstr "" #: includes/admin/meta-boxes/views/html-product-data-inventory.php:65 #: includes/admin/meta-boxes/views/html-variation-admin.php:207 -#: includes/api/class-wc-rest-products-controller.php:1603 +#: includes/api/class-wc-rest-products-controller.php:1596 #: includes/api/v1/class-wc-rest-products-controller.php:1954 msgid "" "Controls whether or not the product is listed as \"in stock\" or \"out of " @@ -10977,7 +10977,6 @@ msgstr "" #: includes/admin/settings/class-wc-settings-general.php:167 #: includes/admin/views/html-admin-page-status-report.php:426 -#: includes/api/class-wc-rest-system-status-controller.php:387 msgid "Currency" msgstr "" @@ -12186,7 +12185,6 @@ msgid "WordPress environment" msgstr "" #: includes/admin/views/html-admin-page-status-report.php:38 -#: includes/api/class-wc-rest-system-status-controller.php:108 msgid "Home URL" msgstr "" @@ -12195,7 +12193,6 @@ msgid "The URL of your site's homepage." msgstr "" #: includes/admin/views/html-admin-page-status-report.php:43 -#: includes/api/class-wc-rest-system-status-controller.php:114 msgid "Site URL" msgstr "" @@ -12286,7 +12283,6 @@ msgid "Server environment" msgstr "" #: includes/admin/views/html-admin-page-status-report.php:121 -#: includes/api/class-wc-rest-system-status-controller.php:165 msgid "Server info" msgstr "" @@ -12295,7 +12291,6 @@ msgid "Information about the web server that is currently hosting your site." msgstr "" #: includes/admin/views/html-admin-page-status-report.php:126 -#: includes/api/class-wc-rest-system-status-controller.php:170 msgid "PHP version" msgstr "" @@ -12312,7 +12307,6 @@ msgid "How to update your PHP version" msgstr "" #: includes/admin/views/html-admin-page-status-report.php:138 -#: includes/api/class-wc-rest-system-status-controller.php:175 msgid "PHP post max size" msgstr "" @@ -12331,7 +12325,6 @@ msgid "" msgstr "" #: includes/admin/views/html-admin-page-status-report.php:148 -#: includes/api/class-wc-rest-system-status-controller.php:185 msgid "PHP max input vars" msgstr "" @@ -12342,7 +12335,6 @@ msgid "" msgstr "" #: includes/admin/views/html-admin-page-status-report.php:153 -#: includes/api/class-wc-rest-system-status-controller.php:190 msgid "cURL version" msgstr "" @@ -12365,7 +12357,6 @@ msgid "" msgstr "" #: includes/admin/views/html-admin-page-status-report.php:170 -#: includes/api/class-wc-rest-system-status-controller.php:205 msgid "MySQL version" msgstr "" @@ -12382,7 +12373,6 @@ msgid "WordPress requirements" msgstr "" #: includes/admin/views/html-admin-page-status-report.php:184 -#: includes/api/class-wc-rest-system-status-controller.php:200 msgid "Max upload size" msgstr "" @@ -12510,12 +12500,10 @@ msgid "wp_remote_get() failed. Contact your hosting provider." msgstr "" #: includes/admin/views/html-admin-page-status-report.php:281 -#: includes/api/class-wc-rest-system-status-controller.php:262 msgid "Database" msgstr "" #: includes/admin/views/html-admin-page-status-report.php:286 -#: includes/api/class-wc-rest-system-status-controller.php:267 msgid "WC database version" msgstr "" @@ -12526,7 +12514,6 @@ msgid "" msgstr "" #: includes/admin/views/html-admin-page-status-report.php:291 -#: includes/api/class-wc-rest-system-status-controller.php:272 msgid "Database prefix" msgstr "" @@ -12543,7 +12530,6 @@ msgid "Table does not exist" msgstr "" #: includes/admin/views/html-admin-page-status-report.php:316 -#: includes/api/class-wc-rest-system-status-controller.php:277 msgid "MaxMind GeoIP database" msgstr "" @@ -12561,7 +12547,6 @@ msgid "" msgstr "" #: includes/admin/views/html-admin-page-status-report.php:334 -#: includes/api/class-wc-rest-system-status-controller.php:432 msgid "Security" msgstr "" @@ -12570,7 +12555,7 @@ msgid "Secure connection (HTTPS)" msgstr "" #: includes/admin/views/html-admin-page-status-report.php:340 -#: includes/api/class-wc-rest-system-status-controller.php:437 +#: includes/api/class-wc-rest-system-status-controller.php:499 msgid "Is the connection to your store secure?" msgstr "" @@ -12595,7 +12580,6 @@ msgid "Error messages should not be shown to visitors." msgstr "" #: includes/admin/views/html-admin-page-status-report.php:365 -#: includes/api/class-wc-rest-system-status-controller.php:292 msgid "Active plugins" msgstr "" @@ -12693,7 +12677,6 @@ msgid "Page does not contain the shortcode." msgstr "" #: includes/admin/views/html-admin-page-status-report.php:514 -#: includes/api/class-wc-rest-system-status-controller.php:300 msgid "Theme" msgstr "" @@ -12733,7 +12716,6 @@ msgid "" msgstr "" #: includes/admin/views/html-admin-page-status-report.php:550 -#: includes/api/class-wc-rest-system-status-controller.php:354 msgid "Parent theme name" msgstr "" @@ -12742,7 +12724,6 @@ msgid "The name of the parent theme." msgstr "" #: includes/admin/views/html-admin-page-status-report.php:555 -#: includes/api/class-wc-rest-system-status-controller.php:359 msgid "Parent theme version" msgstr "" @@ -12751,7 +12732,6 @@ msgid "The installed version of the parent theme." msgstr "" #: includes/admin/views/html-admin-page-status-report.php:566 -#: includes/api/class-wc-rest-system-status-controller.php:364 msgid "Parent theme author URL" msgstr "" @@ -13197,8 +13177,8 @@ msgstr "" #: includes/api/class-wc-rest-orders-controller.php:108 #: includes/api/class-wc-rest-product-variations-controller.php:112 #: includes/api/class-wc-rest-products-controller.php:108 -#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:80 -#: includes/api/class-wc-rest-shipping-zones-controller.php:70 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:86 +#: includes/api/class-wc-rest-shipping-zones-controller.php:76 #: includes/api/v1/class-wc-rest-coupons-controller.php:108 #: includes/api/v1/class-wc-rest-orders-controller.php:102 #: includes/api/v1/class-wc-rest-product-reviews-controller.php:118 @@ -13359,8 +13339,8 @@ msgstr "" #: includes/api/class-wc-rest-orders-controller.php:1386 #: includes/api/class-wc-rest-orders-controller.php:1484 #: includes/api/class-wc-rest-orders-controller.php:1542 -#: includes/api/class-wc-rest-product-variations-controller.php:898 -#: includes/api/class-wc-rest-products-controller.php:1945 +#: includes/api/class-wc-rest-product-variations-controller.php:909 +#: includes/api/class-wc-rest-products-controller.php:1938 msgid "Meta data." msgstr "" @@ -13374,8 +13354,8 @@ msgstr "" #: includes/api/class-wc-rest-orders-controller.php:1393 #: includes/api/class-wc-rest-orders-controller.php:1491 #: includes/api/class-wc-rest-orders-controller.php:1549 -#: includes/api/class-wc-rest-product-variations-controller.php:905 -#: includes/api/class-wc-rest-products-controller.php:1952 +#: includes/api/class-wc-rest-product-variations-controller.php:916 +#: includes/api/class-wc-rest-products-controller.php:1945 msgid "Meta ID." msgstr "" @@ -13389,8 +13369,8 @@ msgstr "" #: includes/api/class-wc-rest-orders-controller.php:1399 #: includes/api/class-wc-rest-orders-controller.php:1497 #: includes/api/class-wc-rest-orders-controller.php:1555 -#: includes/api/class-wc-rest-product-variations-controller.php:911 -#: includes/api/class-wc-rest-products-controller.php:1958 +#: includes/api/class-wc-rest-product-variations-controller.php:922 +#: includes/api/class-wc-rest-products-controller.php:1951 #: includes/api/v1/class-wc-rest-order-refunds-controller.php:477 #: includes/api/v1/class-wc-rest-orders-controller.php:1302 msgid "Meta key." @@ -13406,8 +13386,8 @@ msgstr "" #: includes/api/class-wc-rest-orders-controller.php:1404 #: includes/api/class-wc-rest-orders-controller.php:1502 #: includes/api/class-wc-rest-orders-controller.php:1560 -#: includes/api/class-wc-rest-product-variations-controller.php:916 -#: includes/api/class-wc-rest-products-controller.php:1963 +#: includes/api/class-wc-rest-product-variations-controller.php:927 +#: includes/api/class-wc-rest-products-controller.php:1956 #: includes/api/v1/class-wc-rest-order-refunds-controller.php:489 #: includes/api/v1/class-wc-rest-orders-controller.php:1314 msgid "Meta value." @@ -13482,7 +13462,7 @@ msgid "File details." msgstr "" #: includes/api/class-wc-rest-customer-downloads-controller.php:151 -#: includes/api/class-wc-rest-product-variations-controller.php:708 +#: includes/api/class-wc-rest-product-variations-controller.php:707 #: includes/api/class-wc-rest-products-controller.php:1537 #: includes/api/v1/class-wc-rest-customer-downloads-controller.php:223 #: includes/api/v1/class-wc-rest-products-controller.php:1888 @@ -13491,7 +13471,7 @@ msgid "File name." msgstr "" #: includes/api/class-wc-rest-customer-downloads-controller.php:157 -#: includes/api/class-wc-rest-product-variations-controller.php:713 +#: includes/api/class-wc-rest-product-variations-controller.php:712 #: includes/api/class-wc-rest-products-controller.php:1542 #: includes/api/v1/class-wc-rest-customer-downloads-controller.php:229 #: includes/api/v1/class-wc-rest-products-controller.php:1893 @@ -13676,7 +13656,27 @@ msgstr "" msgid "Invalid order ID." msgstr "" -#: includes/api/class-wc-rest-order-notes-controller.php:95 +#: includes/api/class-wc-rest-order-notes-controller.php:138 +#: includes/api/v1/class-wc-rest-order-notes-controller.php:404 +msgid "The date the order note was created, in the site's timezone." +msgstr "" + +#: includes/api/class-wc-rest-order-notes-controller.php:144 +msgid "The date the order note was created, as GMT." +msgstr "" + +#: includes/api/class-wc-rest-order-notes-controller.php:150 +#: includes/api/v1/class-wc-rest-order-notes-controller.php:70 +msgid "Order note content." +msgstr "" + +#: includes/api/class-wc-rest-order-notes-controller.php:155 +msgid "" +"If true, the note will be shown to customers and they will be notified. If " +"false, the note will be for admin reference only." +msgstr "" + +#: includes/api/class-wc-rest-order-notes-controller.php:176 msgid "Limit result to customers or internal notes." msgstr "" @@ -13881,6 +13881,10 @@ msgstr "" msgid "Product price." msgstr "" +#: includes/api/class-wc-rest-order-refunds-controller.php:528 +msgid "When true, the payment gateway API is used to generate the refund." +msgstr "" + #: includes/api/class-wc-rest-orders-controller.php:493 #: includes/api/legacy/class-wc-rest-legacy-orders-controller.php:248 #: includes/api/legacy/v2/class-wc-api-orders.php:386 @@ -14121,6 +14125,8 @@ msgid "Shipping method name." msgstr "" #: includes/api/class-wc-rest-orders-controller.php:1347 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:49 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:456 #: includes/api/v1/class-wc-rest-orders-controller.php:1397 msgid "Shipping method ID." msgstr "" @@ -14209,38 +14215,205 @@ msgstr "" msgid "Number of decimal points to use in each resource." msgstr "" -#: includes/api/class-wc-rest-payment-gateways-controller.php:344 +#: includes/api/class-wc-rest-payment-gateways-controller.php:345 msgid "Payment gateway ID." msgstr "" -#: includes/api/class-wc-rest-payment-gateways-controller.php:350 +#: includes/api/class-wc-rest-payment-gateways-controller.php:351 msgid "Payment gateway title on checkout." msgstr "" -#: includes/api/class-wc-rest-payment-gateways-controller.php:355 +#: includes/api/class-wc-rest-payment-gateways-controller.php:356 msgid "Payment gateway description on checkout." msgstr "" -#: includes/api/class-wc-rest-payment-gateways-controller.php:360 +#: includes/api/class-wc-rest-payment-gateways-controller.php:361 msgid "Payment gateway sort order." msgstr "" -#: includes/api/class-wc-rest-payment-gateways-controller.php:368 +#: includes/api/class-wc-rest-payment-gateways-controller.php:369 msgid "Payment gateway enabled status." msgstr "" -#: includes/api/class-wc-rest-payment-gateways-controller.php:373 +#: includes/api/class-wc-rest-payment-gateways-controller.php:374 msgid "Payment gateway method title." msgstr "" -#: includes/api/class-wc-rest-payment-gateways-controller.php:379 +#: includes/api/class-wc-rest-payment-gateways-controller.php:380 msgid "Payment gateway method description." msgstr "" -#: includes/api/class-wc-rest-payment-gateways-controller.php:385 +#: includes/api/class-wc-rest-payment-gateways-controller.php:386 msgid "Payment gateway settings." msgstr "" +#: includes/api/class-wc-rest-payment-gateways-controller.php:391 +#: includes/api/class-wc-rest-setting-options-controller.php:464 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:479 +msgid "A unique identifier for the setting." +msgstr "" + +#: includes/api/class-wc-rest-payment-gateways-controller.php:397 +#: includes/api/class-wc-rest-setting-options-controller.php:473 +#: includes/api/class-wc-rest-settings-controller.php:204 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:485 +msgid "A human readable label for the setting used in interfaces." +msgstr "" + +#: includes/api/class-wc-rest-payment-gateways-controller.php:403 +#: includes/api/class-wc-rest-setting-options-controller.php:482 +#: includes/api/class-wc-rest-settings-controller.php:210 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:491 +msgid "A human readable description for the setting used in interfaces." +msgstr "" + +#: includes/api/class-wc-rest-payment-gateways-controller.php:409 +#: includes/api/class-wc-rest-setting-options-controller.php:520 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:497 +msgid "Type of setting." +msgstr "" + +#: includes/api/class-wc-rest-payment-gateways-controller.php:416 +#: includes/api/class-wc-rest-setting-options-controller.php:491 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:504 +msgid "Setting value." +msgstr "" + +#: includes/api/class-wc-rest-payment-gateways-controller.php:421 +#: includes/api/class-wc-rest-setting-options-controller.php:496 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:509 +msgid "Default value for the setting." +msgstr "" + +#: includes/api/class-wc-rest-payment-gateways-controller.php:427 +#: includes/api/class-wc-rest-setting-options-controller.php:502 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:515 +msgid "Additional help text shown to the user about the setting." +msgstr "" + +#: includes/api/class-wc-rest-payment-gateways-controller.php:433 +#: includes/api/class-wc-rest-setting-options-controller.php:511 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:521 +msgid "Placeholder text to be displayed in text inputs." +msgstr "" + +#: includes/api/class-wc-rest-product-categories-controller.php:112 +#: includes/api/class-wc-rest-products-controller.php:1746 +#: includes/api/v1/class-wc-rest-product-categories-controller.php:176 +#: includes/api/v1/class-wc-rest-products-controller.php:2104 +msgid "Category name." +msgstr "" + +#: includes/api/class-wc-rest-product-categories-controller.php:120 +#: includes/api/v1/class-wc-rest-product-attribute-terms-controller.php:209 +#: includes/api/v1/class-wc-rest-product-attributes-controller.php:550 +#: includes/api/v1/class-wc-rest-product-categories-controller.php:184 +#: includes/api/v1/class-wc-rest-product-shipping-classes-controller.php:108 +#: includes/api/v1/class-wc-rest-product-tags-controller.php:108 +msgid "An alphanumeric identifier for the resource unique to its type." +msgstr "" + +#: includes/api/class-wc-rest-product-categories-controller.php:128 +#: includes/api/v1/class-wc-rest-product-categories-controller.php:192 +msgid "The ID for the parent of the resource." +msgstr "" + +#: includes/api/class-wc-rest-product-categories-controller.php:133 +#: includes/api/v1/class-wc-rest-product-attribute-terms-controller.php:217 +#: includes/api/v1/class-wc-rest-product-categories-controller.php:197 +#: includes/api/v1/class-wc-rest-product-shipping-classes-controller.php:116 +#: includes/api/v1/class-wc-rest-product-tags-controller.php:116 +msgid "HTML description of the resource." +msgstr "" + +#: includes/api/class-wc-rest-product-categories-controller.php:141 +#: includes/api/v1/class-wc-rest-product-categories-controller.php:205 +msgid "Category archive display type." +msgstr "" + +#: includes/api/class-wc-rest-product-categories-controller.php:148 +#: includes/api/v1/class-wc-rest-product-categories-controller.php:212 +msgid "Image data." +msgstr "" + +#: includes/api/class-wc-rest-product-categories-controller.php:153 +#: includes/api/class-wc-rest-product-variations-controller.php:827 +#: includes/api/class-wc-rest-products-controller.php:1795 +#: includes/api/v1/class-wc-rest-product-categories-controller.php:217 +#: includes/api/v1/class-wc-rest-products-controller.php:2153 +#: includes/api/v1/class-wc-rest-products-controller.php:2486 +msgid "Image ID." +msgstr "" + +#: includes/api/class-wc-rest-product-categories-controller.php:158 +#: includes/api/class-wc-rest-product-variations-controller.php:832 +#: includes/api/class-wc-rest-products-controller.php:1800 +#: includes/api/v1/class-wc-rest-product-categories-controller.php:222 +#: includes/api/v1/class-wc-rest-products-controller.php:2158 +#: includes/api/v1/class-wc-rest-products-controller.php:2491 +msgid "The date the image was created, in the site's timezone." +msgstr "" + +#: includes/api/class-wc-rest-product-categories-controller.php:164 +msgid "The date the image was created, as GMT" +msgstr "" + +#: includes/api/class-wc-rest-product-categories-controller.php:170 +#: includes/api/class-wc-rest-product-variations-controller.php:844 +#: includes/api/class-wc-rest-products-controller.php:1812 +#: includes/api/v1/class-wc-rest-product-categories-controller.php:228 +#: includes/api/v1/class-wc-rest-products-controller.php:2164 +#: includes/api/v1/class-wc-rest-products-controller.php:2497 +msgid "The date the image was last modified, in the site's timezone." +msgstr "" + +#: includes/api/class-wc-rest-product-categories-controller.php:176 +#: includes/api/class-wc-rest-product-variations-controller.php:850 +#: includes/api/class-wc-rest-products-controller.php:1818 +msgid "The date the image was last modified, as GMT." +msgstr "" + +#: includes/api/class-wc-rest-product-categories-controller.php:182 +#: includes/api/class-wc-rest-product-variations-controller.php:856 +#: includes/api/class-wc-rest-products-controller.php:1824 +#: includes/api/v1/class-wc-rest-product-categories-controller.php:234 +#: includes/api/v1/class-wc-rest-products-controller.php:2170 +#: includes/api/v1/class-wc-rest-products-controller.php:2503 +msgid "Image URL." +msgstr "" + +#: includes/api/class-wc-rest-product-categories-controller.php:188 +#: includes/api/class-wc-rest-product-variations-controller.php:862 +#: includes/api/class-wc-rest-products-controller.php:1830 +#: includes/api/v1/class-wc-rest-product-categories-controller.php:240 +#: includes/api/v1/class-wc-rest-products-controller.php:2176 +#: includes/api/v1/class-wc-rest-products-controller.php:2509 +msgid "Image name." +msgstr "" + +#: includes/api/class-wc-rest-product-categories-controller.php:193 +#: includes/api/class-wc-rest-product-variations-controller.php:867 +#: includes/api/class-wc-rest-products-controller.php:1835 +#: includes/api/v1/class-wc-rest-product-categories-controller.php:245 +#: includes/api/v1/class-wc-rest-products-controller.php:2181 +#: includes/api/v1/class-wc-rest-products-controller.php:2514 +msgid "Image alternative text." +msgstr "" + +#: includes/api/class-wc-rest-product-categories-controller.php:200 +#: includes/api/v1/class-wc-rest-product-attribute-terms-controller.php:225 +#: includes/api/v1/class-wc-rest-product-categories-controller.php:252 +msgid "Menu order, used to custom sort the resource." +msgstr "" + +#: includes/api/class-wc-rest-product-categories-controller.php:205 +#: includes/api/v1/class-wc-rest-product-attribute-terms-controller.php:230 +#: includes/api/v1/class-wc-rest-product-categories-controller.php:257 +#: includes/api/v1/class-wc-rest-product-shipping-classes-controller.php:124 +#: includes/api/v1/class-wc-rest-product-tags-controller.php:124 +msgid "Number of published products for the resource." +msgstr "" + #: includes/api/class-wc-rest-product-reviews-controller.php:48 #: includes/api/class-wc-rest-product-variations-controller.php:61 #: includes/api/class-wc-rest-product-variations-controller.php:82 @@ -14250,291 +14423,282 @@ msgstr "" msgid "Unique identifier for the variable product." msgstr "" +#: includes/api/class-wc-rest-product-reviews-controller.php:161 +#: includes/api/v1/class-wc-rest-product-reviews-controller.php:522 +msgid "The content of the review." +msgstr "" + +#: includes/api/class-wc-rest-product-reviews-controller.php:166 +#: includes/api/v1/class-wc-rest-product-reviews-controller.php:527 +msgid "The date the review was created, in the site's timezone." +msgstr "" + +#: includes/api/class-wc-rest-product-reviews-controller.php:171 +msgid "The date the review was created, as GMT." +msgstr "" + +#: includes/api/class-wc-rest-product-reviews-controller.php:176 +#: includes/api/v1/class-wc-rest-product-reviews-controller.php:532 +msgid "Review rating (0 to 5)." +msgstr "" + +#: includes/api/class-wc-rest-product-reviews-controller.php:181 +#: includes/api/v1/class-wc-rest-product-reviews-controller.php:537 +msgid "Reviewer name." +msgstr "" + +#: includes/api/class-wc-rest-product-reviews-controller.php:186 +#: includes/api/v1/class-wc-rest-product-reviews-controller.php:542 +msgid "Reviewer email." +msgstr "" + +#: includes/api/class-wc-rest-product-reviews-controller.php:191 +#: includes/api/v1/class-wc-rest-product-reviews-controller.php:547 +msgid "Shows if the reviewer bought the product or not." +msgstr "" + #: includes/api/class-wc-rest-product-variations-controller.php:86 #: includes/api/v1/class-wc-rest-product-reviews-controller.php:50 msgid "Unique identifier for the variation." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:600 +#: includes/api/class-wc-rest-product-variations-controller.php:599 #: includes/api/v1/class-wc-rest-products-controller.php:2274 msgid "The date the variation was created, in the site's timezone." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:606 +#: includes/api/class-wc-rest-product-variations-controller.php:605 #: includes/api/v1/class-wc-rest-products-controller.php:2280 msgid "The date the variation was last modified, in the site's timezone." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:612 +#: includes/api/class-wc-rest-product-variations-controller.php:611 msgid "Variation description." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:617 +#: includes/api/class-wc-rest-product-variations-controller.php:616 #: includes/api/v1/class-wc-rest-products-controller.php:2286 msgid "Variation URL." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:624 +#: includes/api/class-wc-rest-product-variations-controller.php:623 #: includes/api/class-wc-rest-products-controller.php:1447 #: includes/api/v1/class-wc-rest-products-controller.php:1808 #: includes/api/v1/class-wc-rest-products-controller.php:2293 msgid "Unique identifier." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:629 +#: includes/api/class-wc-rest-product-variations-controller.php:628 #: includes/api/v1/class-wc-rest-products-controller.php:2298 msgid "Current variation price." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:635 +#: includes/api/class-wc-rest-product-variations-controller.php:634 #: includes/api/v1/class-wc-rest-products-controller.php:2304 msgid "Variation regular price." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:640 +#: includes/api/class-wc-rest-product-variations-controller.php:639 #: includes/api/v1/class-wc-rest-products-controller.php:2309 msgid "Variation sale price." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:645 +#: includes/api/class-wc-rest-product-variations-controller.php:644 #: includes/api/class-wc-rest-products-controller.php:1468 msgid "Start date of sale price, in the site's timezone." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:650 +#: includes/api/class-wc-rest-product-variations-controller.php:649 #: includes/api/class-wc-rest-products-controller.php:1473 msgid "Start date of sale price, as GMT." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:655 -#: includes/api/class-wc-rest-product-variations-controller.php:660 +#: includes/api/class-wc-rest-product-variations-controller.php:654 +#: includes/api/class-wc-rest-product-variations-controller.php:659 #: includes/api/class-wc-rest-products-controller.php:1478 #: includes/api/class-wc-rest-products-controller.php:1483 msgid "End date of sale price, in the site's timezone." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:665 +#: includes/api/class-wc-rest-product-variations-controller.php:664 #: includes/api/v1/class-wc-rest-products-controller.php:2324 msgid "Shows if the variation is on sale." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:671 -#: includes/api/class-wc-rest-products-controller.php:1877 +#: includes/api/class-wc-rest-product-variations-controller.php:670 +#: includes/api/class-wc-rest-products-controller.php:1870 #: includes/api/v1/class-wc-rest-products-controller.php:2216 msgid "" "Define if the attribute is visible on the \"Additional information\" tab in " "the product's page." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:677 +#: includes/api/class-wc-rest-product-variations-controller.php:676 #: includes/api/v1/class-wc-rest-products-controller.php:2330 msgid "Shows if the variation can be bought." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:683 +#: includes/api/class-wc-rest-product-variations-controller.php:682 #: includes/api/v1/class-wc-rest-products-controller.php:2341 msgid "If the variation is virtual." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:689 +#: includes/api/class-wc-rest-product-variations-controller.php:688 #: includes/api/v1/class-wc-rest-products-controller.php:2347 msgid "If the variation is downloadable." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:695 +#: includes/api/class-wc-rest-product-variations-controller.php:694 #: includes/api/class-wc-rest-products-controller.php:1524 #: includes/api/v1/class-wc-rest-products-controller.php:1875 #: includes/api/v1/class-wc-rest-products-controller.php:2353 msgid "List of downloadable files." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:702 +#: includes/api/class-wc-rest-product-variations-controller.php:701 #: includes/api/class-wc-rest-products-controller.php:1531 #: includes/api/v1/class-wc-rest-products-controller.php:1882 #: includes/api/v1/class-wc-rest-products-controller.php:2360 msgid "File MD5 hash." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:721 +#: includes/api/class-wc-rest-product-variations-controller.php:720 #: includes/api/class-wc-rest-products-controller.php:1550 #: includes/api/v1/class-wc-rest-products-controller.php:1901 #: includes/api/v1/class-wc-rest-products-controller.php:2379 msgid "Number of times downloadable files can be downloaded after purchase." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:727 +#: includes/api/class-wc-rest-product-variations-controller.php:726 #: includes/api/class-wc-rest-products-controller.php:1556 #: includes/api/v1/class-wc-rest-products-controller.php:1907 #: includes/api/v1/class-wc-rest-products-controller.php:2385 msgid "Number of days until access to downloadable files expires." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:733 -#: includes/api/class-wc-rest-products-controller.php:1580 +#: includes/api/class-wc-rest-product-variations-controller.php:732 +#: includes/api/class-wc-rest-products-controller.php:1573 #: includes/api/v1/class-wc-rest-products-controller.php:1931 #: includes/api/v1/class-wc-rest-products-controller.php:2391 msgid "Tax status." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:740 -#: includes/api/class-wc-rest-products-controller.php:1587 +#: includes/api/class-wc-rest-product-variations-controller.php:739 +#: includes/api/class-wc-rest-products-controller.php:1580 #: includes/api/v1/class-wc-rest-products-controller.php:1938 #: includes/api/v1/class-wc-rest-products-controller.php:2398 #: includes/api/v1/class-wc-rest-taxes-controller.php:633 msgid "Tax class." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:745 +#: includes/api/class-wc-rest-product-variations-controller.php:744 #: includes/api/v1/class-wc-rest-products-controller.php:2403 msgid "Stock management at variation level." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:751 -#: includes/api/class-wc-rest-products-controller.php:1598 +#: includes/api/class-wc-rest-product-variations-controller.php:750 +#: includes/api/class-wc-rest-products-controller.php:1591 #: includes/api/v1/class-wc-rest-products-controller.php:1949 #: includes/api/v1/class-wc-rest-products-controller.php:2409 msgid "Stock quantity." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:756 +#: includes/api/class-wc-rest-product-variations-controller.php:755 #: includes/api/v1/class-wc-rest-products-controller.php:2414 msgid "" "Controls whether or not the variation is listed as \"in stock\" or \"out of " "stock\" on the frontend." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:762 -#: includes/api/class-wc-rest-products-controller.php:1609 +#: includes/api/class-wc-rest-product-variations-controller.php:761 +#: includes/api/class-wc-rest-products-controller.php:1602 #: includes/api/v1/class-wc-rest-products-controller.php:1960 #: includes/api/v1/class-wc-rest-products-controller.php:2420 msgid "If managing stock, this controls if backorders are allowed." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:769 -#: includes/api/class-wc-rest-products-controller.php:1616 +#: includes/api/class-wc-rest-product-variations-controller.php:768 +#: includes/api/class-wc-rest-products-controller.php:1609 #: includes/api/v1/class-wc-rest-products-controller.php:1967 #: includes/api/v1/class-wc-rest-products-controller.php:2427 msgid "Shows if backorders are allowed." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:775 +#: includes/api/class-wc-rest-product-variations-controller.php:774 #: includes/api/v1/class-wc-rest-products-controller.php:2433 msgid "Shows if the variation is on backordered." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:782 +#: includes/api/class-wc-rest-product-variations-controller.php:781 #: includes/api/v1/class-wc-rest-products-controller.php:2440 #. translators: %s: weight unit msgid "Variation weight (%s)." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:787 +#: includes/api/class-wc-rest-product-variations-controller.php:786 #: includes/api/v1/class-wc-rest-products-controller.php:2445 msgid "Variation dimensions." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:793 +#: includes/api/class-wc-rest-product-variations-controller.php:792 #: includes/api/v1/class-wc-rest-products-controller.php:2451 #. translators: %s: dimension unit msgid "Variation length (%s)." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:799 +#: includes/api/class-wc-rest-product-variations-controller.php:798 #: includes/api/v1/class-wc-rest-products-controller.php:2457 #. translators: %s: dimension unit msgid "Variation width (%s)." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:805 +#: includes/api/class-wc-rest-product-variations-controller.php:804 #: includes/api/v1/class-wc-rest-products-controller.php:2463 #. translators: %s: dimension unit msgid "Variation height (%s)." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:812 -#: includes/api/class-wc-rest-products-controller.php:1677 +#: includes/api/class-wc-rest-product-variations-controller.php:811 +#: includes/api/class-wc-rest-products-controller.php:1670 #: includes/api/v1/class-wc-rest-products-controller.php:2028 #: includes/api/v1/class-wc-rest-products-controller.php:2470 msgid "Shipping class slug." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:817 -#: includes/api/class-wc-rest-products-controller.php:1682 +#: includes/api/class-wc-rest-product-variations-controller.php:816 +#: includes/api/class-wc-rest-products-controller.php:1675 #: includes/api/v1/class-wc-rest-products-controller.php:2033 #: includes/api/v1/class-wc-rest-products-controller.php:2475 msgid "Shipping class ID." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:823 +#: includes/api/class-wc-rest-product-variations-controller.php:822 #: includes/api/v1/class-wc-rest-products-controller.php:2481 msgid "Variation image data." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:828 -#: includes/api/class-wc-rest-products-controller.php:1802 -#: includes/api/v1/class-wc-rest-product-categories-controller.php:217 -#: includes/api/v1/class-wc-rest-products-controller.php:2153 -#: includes/api/v1/class-wc-rest-products-controller.php:2486 -msgid "Image ID." +#: includes/api/class-wc-rest-product-variations-controller.php:838 +#: includes/api/class-wc-rest-products-controller.php:1806 +msgid "The date the image was created, as GMT." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:833 -#: includes/api/class-wc-rest-products-controller.php:1807 -#: includes/api/v1/class-wc-rest-product-categories-controller.php:222 -#: includes/api/v1/class-wc-rest-products-controller.php:2158 -#: includes/api/v1/class-wc-rest-products-controller.php:2491 -msgid "The date the image was created, in the site's timezone." -msgstr "" - -#: includes/api/class-wc-rest-product-variations-controller.php:839 -#: includes/api/class-wc-rest-products-controller.php:1819 -#: includes/api/v1/class-wc-rest-product-categories-controller.php:228 -#: includes/api/v1/class-wc-rest-products-controller.php:2164 -#: includes/api/v1/class-wc-rest-products-controller.php:2497 -msgid "The date the image was last modified, in the site's timezone." -msgstr "" - -#: includes/api/class-wc-rest-product-variations-controller.php:845 -#: includes/api/class-wc-rest-products-controller.php:1831 -#: includes/api/v1/class-wc-rest-product-categories-controller.php:234 -#: includes/api/v1/class-wc-rest-products-controller.php:2170 -#: includes/api/v1/class-wc-rest-products-controller.php:2503 -msgid "Image URL." -msgstr "" - -#: includes/api/class-wc-rest-product-variations-controller.php:851 -#: includes/api/class-wc-rest-products-controller.php:1837 -#: includes/api/v1/class-wc-rest-product-categories-controller.php:240 -#: includes/api/v1/class-wc-rest-products-controller.php:2176 -#: includes/api/v1/class-wc-rest-products-controller.php:2509 -msgid "Image name." -msgstr "" - -#: includes/api/class-wc-rest-product-variations-controller.php:856 -#: includes/api/class-wc-rest-products-controller.php:1842 -#: includes/api/v1/class-wc-rest-product-categories-controller.php:245 -#: includes/api/v1/class-wc-rest-products-controller.php:2181 -#: includes/api/v1/class-wc-rest-products-controller.php:2514 -msgid "Image alternative text." -msgstr "" - -#: includes/api/class-wc-rest-product-variations-controller.php:861 -#: includes/api/class-wc-rest-products-controller.php:1847 +#: includes/api/class-wc-rest-product-variations-controller.php:872 +#: includes/api/class-wc-rest-products-controller.php:1840 #: includes/api/v1/class-wc-rest-products-controller.php:2186 #: includes/api/v1/class-wc-rest-products-controller.php:2519 msgid "Image position. 0 means that the image is featured." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:868 -#: includes/api/class-wc-rest-products-controller.php:1855 +#: includes/api/class-wc-rest-product-variations-controller.php:879 +#: includes/api/class-wc-rest-products-controller.php:1848 #: includes/api/v1/class-wc-rest-products-controller.php:2194 #: includes/api/v1/class-wc-rest-products-controller.php:2526 msgid "List of attributes." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:875 -#: includes/api/class-wc-rest-products-controller.php:1862 -#: includes/api/class-wc-rest-products-controller.php:1904 +#: includes/api/class-wc-rest-product-variations-controller.php:886 +#: includes/api/class-wc-rest-products-controller.php:1855 +#: includes/api/class-wc-rest-products-controller.php:1897 #: includes/api/v1/class-wc-rest-products-controller.php:2201 #: includes/api/v1/class-wc-rest-products-controller.php:2243 #: includes/api/v1/class-wc-rest-products-controller.php:2533 @@ -14542,9 +14706,9 @@ msgstr "" msgid "Attribute ID." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:880 -#: includes/api/class-wc-rest-products-controller.php:1867 -#: includes/api/class-wc-rest-products-controller.php:1909 +#: includes/api/class-wc-rest-product-variations-controller.php:891 +#: includes/api/class-wc-rest-products-controller.php:1860 +#: includes/api/class-wc-rest-products-controller.php:1902 #: includes/api/v1/class-wc-rest-product-attributes-controller.php:542 #: includes/api/v1/class-wc-rest-products-controller.php:2206 #: includes/api/v1/class-wc-rest-products-controller.php:2248 @@ -14552,15 +14716,15 @@ msgstr "" msgid "Attribute name." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:885 -#: includes/api/class-wc-rest-products-controller.php:1914 +#: includes/api/class-wc-rest-product-variations-controller.php:896 +#: includes/api/class-wc-rest-products-controller.php:1907 #: includes/api/v1/class-wc-rest-products-controller.php:2253 #: includes/api/v1/class-wc-rest-products-controller.php:2543 msgid "Selected attribute term name." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:893 -#: includes/api/class-wc-rest-products-controller.php:1940 +#: includes/api/class-wc-rest-product-variations-controller.php:904 +#: includes/api/class-wc-rest-products-controller.php:1933 #: includes/api/v1/class-wc-rest-products-controller.php:2563 msgid "Menu order, used to custom sort products." msgstr "" @@ -14569,17 +14733,17 @@ msgstr "" #: includes/api/class-wc-rest-products-controller.php:394 #: includes/api/legacy/v1/class-wc-api-products.php:445 #: includes/api/legacy/v1/class-wc-api-products.php:446 -#: includes/api/legacy/v2/class-wc-api-products.php:1602 #: includes/api/legacy/v2/class-wc-api-products.php:1603 -#: includes/api/legacy/v3/class-wc-api-products.php:2101 +#: includes/api/legacy/v2/class-wc-api-products.php:1604 #: includes/api/legacy/v3/class-wc-api-products.php:2102 +#: includes/api/legacy/v3/class-wc-api-products.php:2103 #: includes/api/v1/class-wc-rest-products-controller.php:313 #: includes/api/v1/class-wc-rest-products-controller.php:314 #: includes/wc-product-functions.php:325 msgid "Placeholder" msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1053 +#: includes/api/class-wc-rest-products-controller.php:1052 #: includes/api/v1/class-wc-rest-products-controller.php:867 msgid "#%s is an invalid image ID." msgstr "" @@ -14688,591 +14852,631 @@ msgid "If the product is downloadable." msgstr "" #: includes/api/class-wc-rest-products-controller.php:1562 -#: includes/api/v1/class-wc-rest-products-controller.php:1913 -msgid "Download type, this controls the schema on the front-end." -msgstr "" - -#: includes/api/class-wc-rest-products-controller.php:1569 #: includes/api/v1/class-wc-rest-products-controller.php:1920 msgid "Product external URL. Only for external products." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1575 +#: includes/api/class-wc-rest-products-controller.php:1568 #: includes/api/v1/class-wc-rest-products-controller.php:1926 msgid "Product external button text. Only for external products." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1592 +#: includes/api/class-wc-rest-products-controller.php:1585 #: includes/api/v1/class-wc-rest-products-controller.php:1943 msgid "Stock management at product level." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1622 +#: includes/api/class-wc-rest-products-controller.php:1615 #: includes/api/v1/class-wc-rest-products-controller.php:1973 msgid "Shows if the product is on backordered." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1628 +#: includes/api/class-wc-rest-products-controller.php:1621 #: includes/api/v1/class-wc-rest-products-controller.php:1979 msgid "Allow one item to be bought in a single order." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1635 +#: includes/api/class-wc-rest-products-controller.php:1628 #: includes/api/v1/class-wc-rest-products-controller.php:1986 #. translators: %s: weight unit msgid "Product weight (%s)." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1640 +#: includes/api/class-wc-rest-products-controller.php:1633 #: includes/api/v1/class-wc-rest-products-controller.php:1991 msgid "Product dimensions." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1646 +#: includes/api/class-wc-rest-products-controller.php:1639 #: includes/api/v1/class-wc-rest-products-controller.php:1997 #. translators: %s: dimension unit msgid "Product length (%s)." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1652 +#: includes/api/class-wc-rest-products-controller.php:1645 #: includes/api/v1/class-wc-rest-products-controller.php:2003 #. translators: %s: dimension unit msgid "Product width (%s)." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1658 +#: includes/api/class-wc-rest-products-controller.php:1651 #: includes/api/v1/class-wc-rest-products-controller.php:2009 #. translators: %s: dimension unit msgid "Product height (%s)." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1665 +#: includes/api/class-wc-rest-products-controller.php:1658 #: includes/api/v1/class-wc-rest-products-controller.php:2016 msgid "Shows if the product need to be shipped." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1671 +#: includes/api/class-wc-rest-products-controller.php:1664 #: includes/api/v1/class-wc-rest-products-controller.php:2022 msgid "Shows whether or not the product shipping is taxable." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1688 +#: includes/api/class-wc-rest-products-controller.php:1681 #: includes/api/v1/class-wc-rest-products-controller.php:2039 msgid "Allow reviews." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1694 +#: includes/api/class-wc-rest-products-controller.php:1687 #: includes/api/v1/class-wc-rest-products-controller.php:2045 msgid "Reviews average rating." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1700 +#: includes/api/class-wc-rest-products-controller.php:1693 #: includes/api/v1/class-wc-rest-products-controller.php:2051 msgid "Amount of reviews that the product have." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1706 +#: includes/api/class-wc-rest-products-controller.php:1699 #: includes/api/v1/class-wc-rest-products-controller.php:2057 msgid "List of related products IDs." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1715 +#: includes/api/class-wc-rest-products-controller.php:1708 #: includes/api/v1/class-wc-rest-products-controller.php:2066 msgid "List of up-sell products IDs." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1723 +#: includes/api/class-wc-rest-products-controller.php:1716 #: includes/api/v1/class-wc-rest-products-controller.php:2074 msgid "List of cross-sell products IDs." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1731 +#: includes/api/class-wc-rest-products-controller.php:1724 #: includes/api/v1/class-wc-rest-products-controller.php:2082 msgid "Product parent ID." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1736 +#: includes/api/class-wc-rest-products-controller.php:1729 #: includes/api/v1/class-wc-rest-products-controller.php:2087 msgid "Optional note to send the customer after purchase." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1741 +#: includes/api/class-wc-rest-products-controller.php:1734 #: includes/api/v1/class-wc-rest-products-controller.php:2092 msgid "List of categories." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1748 +#: includes/api/class-wc-rest-products-controller.php:1741 #: includes/api/v1/class-wc-rest-products-controller.php:2099 msgid "Category ID." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1753 -#: includes/api/v1/class-wc-rest-product-categories-controller.php:176 -#: includes/api/v1/class-wc-rest-products-controller.php:2104 -msgid "Category name." -msgstr "" - -#: includes/api/class-wc-rest-products-controller.php:1759 +#: includes/api/class-wc-rest-products-controller.php:1752 #: includes/api/v1/class-wc-rest-products-controller.php:2110 msgid "Category slug." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1768 +#: includes/api/class-wc-rest-products-controller.php:1761 #: includes/api/v1/class-wc-rest-products-controller.php:2119 msgid "List of tags." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1775 +#: includes/api/class-wc-rest-products-controller.php:1768 #: includes/api/v1/class-wc-rest-products-controller.php:2126 msgid "Tag ID." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1780 +#: includes/api/class-wc-rest-products-controller.php:1773 #: includes/api/v1/class-wc-rest-product-tags-controller.php:100 #: includes/api/v1/class-wc-rest-products-controller.php:2131 msgid "Tag name." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1786 +#: includes/api/class-wc-rest-products-controller.php:1779 #: includes/api/v1/class-wc-rest-products-controller.php:2137 msgid "Tag slug." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1795 +#: includes/api/class-wc-rest-products-controller.php:1788 #: includes/api/v1/class-wc-rest-products-controller.php:2146 msgid "List of images." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1813 -msgid "The date the image was created, as GMT." -msgstr "" - -#: includes/api/class-wc-rest-products-controller.php:1825 -msgid "The date the image was last modified, as GMT." -msgstr "" - -#: includes/api/class-wc-rest-products-controller.php:1872 +#: includes/api/class-wc-rest-products-controller.php:1865 #: includes/api/v1/class-wc-rest-products-controller.php:2211 msgid "Attribute position." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1883 +#: includes/api/class-wc-rest-products-controller.php:1876 #: includes/api/v1/class-wc-rest-products-controller.php:2222 msgid "Define if the attribute can be used as variation." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1889 +#: includes/api/class-wc-rest-products-controller.php:1882 #: includes/api/v1/class-wc-rest-products-controller.php:2228 msgid "List of available term names of the attribute." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1897 +#: includes/api/class-wc-rest-products-controller.php:1890 #: includes/api/v1/class-wc-rest-products-controller.php:2236 msgid "Defaults variation attributes." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1922 +#: includes/api/class-wc-rest-products-controller.php:1915 msgid "List of variations IDs." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1931 +#: includes/api/class-wc-rest-products-controller.php:1924 #: includes/api/v1/class-wc-rest-products-controller.php:2554 msgid "List of grouped products ID." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1985 +#: includes/api/class-wc-rest-products-controller.php:1978 #: includes/api/v1/class-wc-rest-products-controller.php:2582 msgid "Limit result set to products with a specific slug." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1991 +#: includes/api/class-wc-rest-products-controller.php:1984 #: includes/api/v1/class-wc-rest-products-controller.php:2588 msgid "Limit result set to products assigned a specific status." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:1998 +#: includes/api/class-wc-rest-products-controller.php:1991 #: includes/api/v1/class-wc-rest-products-controller.php:2595 msgid "Limit result set to products assigned a specific type." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:2005 +#: includes/api/class-wc-rest-products-controller.php:1998 #: includes/api/v1/class-wc-rest-products-controller.php:2632 msgid "Limit result set to products with a specific SKU." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:2011 +#: includes/api/class-wc-rest-products-controller.php:2004 msgid "Limit result set to featured products." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:2017 +#: includes/api/class-wc-rest-products-controller.php:2010 #: includes/api/v1/class-wc-rest-products-controller.php:2602 msgid "Limit result set to products assigned a specific category ID." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:2023 +#: includes/api/class-wc-rest-products-controller.php:2016 #: includes/api/v1/class-wc-rest-products-controller.php:2608 msgid "Limit result set to products assigned a specific tag ID." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:2029 +#: includes/api/class-wc-rest-products-controller.php:2022 #: includes/api/v1/class-wc-rest-products-controller.php:2614 msgid "Limit result set to products assigned a specific shipping class ID." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:2035 +#: includes/api/class-wc-rest-products-controller.php:2028 #: includes/api/v1/class-wc-rest-products-controller.php:2620 msgid "Limit result set to products with a specific attribute." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:2041 +#: includes/api/class-wc-rest-products-controller.php:2034 #: includes/api/v1/class-wc-rest-products-controller.php:2626 msgid "" "Limit result set to products with a specific attribute term ID (required an " "assigned attribute)." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:2049 +#: includes/api/class-wc-rest-products-controller.php:2042 msgid "Limit result set to products with a specific tax class." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:2058 +#: includes/api/class-wc-rest-products-controller.php:2051 msgid "Limit result set to products in stock or out of stock." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:2064 +#: includes/api/class-wc-rest-products-controller.php:2057 msgid "Limit result set to products on sale." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:2070 +#: includes/api/class-wc-rest-products-controller.php:2063 msgid "Limit result set to products based on a minimum price." msgstr "" -#: includes/api/class-wc-rest-products-controller.php:2076 +#: includes/api/class-wc-rest-products-controller.php:2069 msgid "Limit result set to products based on a maximum price." msgstr "" +#: includes/api/class-wc-rest-setting-options-controller.php:46 +#: includes/api/class-wc-rest-setting-options-controller.php:61 +#: includes/api/class-wc-rest-setting-options-controller.php:77 +msgid "Settings group ID." +msgstr "" + +#: includes/api/class-wc-rest-setting-options-controller.php:155 +#: includes/api/class-wc-rest-setting-options-controller.php:161 +msgid "Invalid setting group." +msgstr "" + +#: includes/api/class-wc-rest-setting-options-controller.php:199 +#: includes/api/class-wc-rest-setting-options-controller.php:211 +#: includes/api/class-wc-rest-setting-options-controller.php:217 +msgid "Invalid setting." +msgstr "" + +#: includes/api/class-wc-rest-setting-options-controller.php:356 +#: includes/api/v1/class-wc-rest-product-reviews-controller.php:179 +msgid "Sorry, you cannot edit this resource." +msgstr "" + +#: includes/api/class-wc-rest-setting-options-controller.php:530 +msgid "" +"Array of options (key value pairs) for inputs such as select, multiselect, " +"and radio buttons." +msgstr "" + #: includes/api/class-wc-rest-settings-controller.php:63 msgid "No setting groups have been registered." msgstr "" -#: includes/api/class-wc-rest-settings-controller.php:199 +#: includes/api/class-wc-rest-settings-controller.php:198 msgid "A unique identifier that can be used to link settings together." msgstr "" -#: includes/api/class-wc-rest-settings-controller.php:206 -#: includes/api/class-wc-rest-settings-options-controller.php:473 -msgid "A human readable translation wrapped label. Meant to be used in interfaces." -msgstr "" - -#: includes/api/class-wc-rest-settings-controller.php:213 -#: includes/api/class-wc-rest-settings-options-controller.php:482 -msgid "" -"A human readable translation wrapped description. Meant to be used in " -"interfaces." -msgstr "" - -#: includes/api/class-wc-rest-settings-controller.php:220 +#: includes/api/class-wc-rest-settings-controller.php:216 msgid "ID of parent grouping." msgstr "" -#: includes/api/class-wc-rest-settings-controller.php:227 +#: includes/api/class-wc-rest-settings-controller.php:222 msgid "IDs for settings sub groups." msgstr "" -#: includes/api/class-wc-rest-settings-options-controller.php:46 -#: includes/api/class-wc-rest-settings-options-controller.php:61 -#: includes/api/class-wc-rest-settings-options-controller.php:77 -msgid "Settings group ID." -msgstr "" - -#: includes/api/class-wc-rest-settings-options-controller.php:155 -#: includes/api/class-wc-rest-settings-options-controller.php:161 -msgid "Invalid setting group." -msgstr "" - -#: includes/api/class-wc-rest-settings-options-controller.php:199 -#: includes/api/class-wc-rest-settings-options-controller.php:211 -#: includes/api/class-wc-rest-settings-options-controller.php:217 -msgid "Invalid setting." -msgstr "" - -#: includes/api/class-wc-rest-settings-options-controller.php:356 -#: includes/api/v1/class-wc-rest-product-reviews-controller.php:179 -msgid "Sorry, you cannot edit this resource." -msgstr "" - -#: includes/api/class-wc-rest-settings-options-controller.php:464 -msgid "A unique identifier for the setting." -msgstr "" - -#: includes/api/class-wc-rest-settings-options-controller.php:491 -msgid "Setting value." -msgstr "" - -#: includes/api/class-wc-rest-settings-options-controller.php:496 -msgid "Default value for the setting." -msgstr "" - -#: includes/api/class-wc-rest-settings-options-controller.php:502 -msgid "Extra help text explaining the setting." -msgstr "" - -#: includes/api/class-wc-rest-settings-options-controller.php:511 -msgid "Placeholder text to be displayed in text inputs." -msgstr "" - -#: includes/api/class-wc-rest-settings-options-controller.php:520 -msgid "" -"Type of setting. Allowed values: text, email, number, color, password, " -"textarea, select, multiselect, radio, image_width, checkbox." -msgstr "" - -#: includes/api/class-wc-rest-settings-options-controller.php:529 -msgid "" -"Array of options (key value pairs) for inputs such as select, multiselect, " -"and radio buttons." -msgstr "" - #: includes/api/class-wc-rest-shipping-methods-controller.php:196 msgid "Method ID." msgstr "" -#: includes/api/class-wc-rest-shipping-methods-controller.php:201 -#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:460 +#: includes/api/class-wc-rest-shipping-methods-controller.php:202 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:462 msgid "Shipping method title." msgstr "" -#: includes/api/class-wc-rest-shipping-methods-controller.php:206 -#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:466 +#: includes/api/class-wc-rest-shipping-methods-controller.php:208 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:468 msgid "Shipping method description." msgstr "" #: includes/api/class-wc-rest-shipping-zone-locations-controller.php:32 -#: includes/api/class-wc-rest-shipping-zones-controller.php:47 +#: includes/api/class-wc-rest-shipping-zones-controller.php:53 msgid "Unique ID for the resource." msgstr "" -#: includes/api/class-wc-rest-shipping-zone-locations-controller.php:157 +#: includes/api/class-wc-rest-shipping-zone-locations-controller.php:167 msgid "Shipping zone location code." msgstr "" -#: includes/api/class-wc-rest-shipping-zone-locations-controller.php:166 +#: includes/api/class-wc-rest-shipping-zone-locations-controller.php:172 msgid "Shipping zone location type." msgstr "" #: includes/api/class-wc-rest-shipping-zone-methods-controller.php:32 -#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:53 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:59 msgid "Unique ID for the zone." msgstr "" -#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:57 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:63 msgid "Unique ID for the instance." msgstr "" -#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:171 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:177 msgid "Resource cannot be created." msgstr "" -#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:226 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:232 msgid "Shipping methods do not support trashing." msgstr "" -#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:428 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:434 msgid "Shipping method instance ID." msgstr "" -#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:434 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:440 msgid "Shipping method customer facing title." msgstr "" -#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:440 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:446 msgid "Shipping method sort order." msgstr "" -#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:449 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:451 msgid "Shipping method enabled status." msgstr "" -#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:455 -msgid "Shipping method ID. Write on create only." -msgstr "" - -#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:472 +#: includes/api/class-wc-rest-shipping-zone-methods-controller.php:474 msgid "Shipping method settings." msgstr "" -#: includes/api/class-wc-rest-shipping-zones-controller.php:146 +#: includes/api/class-wc-rest-shipping-zones-controller.php:43 +#: includes/api/class-wc-rest-shipping-zones-controller.php:281 +msgid "Shipping zone name." +msgstr "" + +#: includes/api/class-wc-rest-shipping-zones-controller.php:152 msgid "" "Resource cannot be created. Check to make sure 'order' and 'name' are " "present." msgstr "" -#: includes/api/class-wc-rest-shipping-zones-controller.php:202 +#: includes/api/class-wc-rest-shipping-zones-controller.php:208 msgid "Shipping zones do not support trashing." msgstr "" -#: includes/api/class-wc-rest-shipping-zones-controller.php:275 -msgid "Shipping zone name." -msgstr "" - -#: includes/api/class-wc-rest-shipping-zones-controller.php:284 +#: includes/api/class-wc-rest-shipping-zones-controller.php:289 msgid "Shipping zone order." msgstr "" #: includes/api/class-wc-rest-system-status-controller.php:103 -msgid "Environment" +msgid "Environment." msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:120 -msgid "WooCommerce version" +#: includes/api/class-wc-rest-system-status-controller.php:109 +msgid "Home URL." msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:125 -msgid "Log directory" +#: includes/api/class-wc-rest-system-status-controller.php:116 +msgid "Site URL." msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:130 -msgid "Is log directory writable?" +#: includes/api/class-wc-rest-system-status-controller.php:123 +msgid "WooCommerce version." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:129 +msgid "Log directory." msgstr "" #: includes/api/class-wc-rest-system-status-controller.php:135 -msgid "WordPress version" +msgid "Is log directory writable?" msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:140 +#: includes/api/class-wc-rest-system-status-controller.php:141 +msgid "WordPress version." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:147 msgid "Is WordPress multisite?" msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:145 -msgid "WordPress memory limit" +#: includes/api/class-wc-rest-system-status-controller.php:153 +msgid "WordPress memory limit." msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:150 +#: includes/api/class-wc-rest-system-status-controller.php:159 msgid "Is WordPress debug mode active?" msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:155 +#: includes/api/class-wc-rest-system-status-controller.php:165 msgid "Are WordPress cron jobs enabled?" msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:160 -msgid "WordPress language" +#: includes/api/class-wc-rest-system-status-controller.php:171 +msgid "WordPress language." msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:180 -msgid "PHP max execution time" +#: includes/api/class-wc-rest-system-status-controller.php:177 +msgid "Server info." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:183 +msgid "PHP version." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:189 +msgid "PHP post max size." msgstr "" #: includes/api/class-wc-rest-system-status-controller.php:195 +msgid "PHP max execution time." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:201 +msgid "PHP max input vars." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:207 +msgid "cURL version." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:213 msgid "Is SUHOSIN installed?" msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:210 -msgid "Default timezone" -msgstr "" - -#: includes/api/class-wc-rest-system-status-controller.php:215 -msgid "Is fsockopen/cURL enabled?" -msgstr "" - -#: includes/api/class-wc-rest-system-status-controller.php:220 -msgid "Is SoapClient class enabled?" +#: includes/api/class-wc-rest-system-status-controller.php:219 +msgid "Max upload size." msgstr "" #: includes/api/class-wc-rest-system-status-controller.php:225 +msgid "MySQL version." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:231 +msgid "Default timezone." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:237 +msgid "Is fsockopen/cURL enabled?" +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:243 +msgid "Is SoapClient class enabled?" +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:249 msgid "Is DomDocument class enabled?" msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:230 +#: includes/api/class-wc-rest-system-status-controller.php:255 msgid "Is GZip enabled?" msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:235 +#: includes/api/class-wc-rest-system-status-controller.php:261 msgid "Is mbstring enabled?" msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:240 +#: includes/api/class-wc-rest-system-status-controller.php:267 msgid "Remote POST successful?" msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:245 -msgid "Remote POST response" +#: includes/api/class-wc-rest-system-status-controller.php:273 +msgid "Remote POST response." msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:250 +#: includes/api/class-wc-rest-system-status-controller.php:279 msgid "Remote GET successful?" msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:255 -msgid "Remote GET response" +#: includes/api/class-wc-rest-system-status-controller.php:285 +msgid "Remote GET response." msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:282 -msgid "Database tables" +#: includes/api/class-wc-rest-system-status-controller.php:293 +msgid "Database." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:299 +msgid "WC database version." msgstr "" #: includes/api/class-wc-rest-system-status-controller.php:305 -msgid "Theme name" +msgid "Database prefix." msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:310 -msgid "Theme version" +#: includes/api/class-wc-rest-system-status-controller.php:311 +msgid "MaxMind GeoIP database." msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:315 -msgid "Latest version of theme" +#: includes/api/class-wc-rest-system-status-controller.php:317 +msgid "Database tables." msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:320 -msgid "Theme author URL" +#: includes/api/class-wc-rest-system-status-controller.php:328 +msgid "Active plugins." msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:326 +#: includes/api/class-wc-rest-system-status-controller.php:337 +msgid "Theme." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:343 +msgid "Theme name." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:349 +msgid "Theme version." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:355 +msgid "Latest version of theme." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:361 +msgid "Theme author URL." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:368 msgid "Is this theme a child theme?" msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:331 +#: includes/api/class-wc-rest-system-status-controller.php:374 msgid "Does the theme declare WooCommerce support?" msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:336 +#: includes/api/class-wc-rest-system-status-controller.php:380 msgid "Does the theme have a woocommerce.php file?" msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:341 +#: includes/api/class-wc-rest-system-status-controller.php:386 msgid "Does this theme have outdated templates?" msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:346 -msgid "Template overrides" -msgstr "" - -#: includes/api/class-wc-rest-system-status-controller.php:377 -msgid "REST API enabled?" -msgstr "" - -#: includes/api/class-wc-rest-system-status-controller.php:382 -msgid "SSL forced?" -msgstr "" - #: includes/api/class-wc-rest-system-status-controller.php:392 -msgid "Currency symbol" +msgid "Template overrides." msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:417 -msgid "Geolocation enabled?" +#: includes/api/class-wc-rest-system-status-controller.php:401 +msgid "Parent theme name." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:407 +msgid "Parent theme version." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:413 +msgid "Parent theme author URL." msgstr "" #: includes/api/class-wc-rest-system-status-controller.php:422 -msgid "Taxonomy terms for product/order statuses" +msgid "Settings." msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:442 +#: includes/api/class-wc-rest-system-status-controller.php:428 +msgid "REST API enabled?" +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:434 +msgid "SSL forced?" +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:440 +msgid "Currency." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:446 +msgid "Currency symbol." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:452 +msgid "Currency position." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:458 +msgid "Thousand separator." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:464 +msgid "Decimal separator." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:470 +msgid "Number of decimals." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:476 +msgid "Geolocation enabled?" +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:482 +msgid "Taxonomy terms for product/order statuses." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:493 +msgid "Security." +msgstr "" + +#: includes/api/class-wc-rest-system-status-controller.php:505 msgid "Hide errors from visitors?" msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:449 -msgid "WooCommerce pages" +#: includes/api/class-wc-rest-system-status-controller.php:513 +msgid "WooCommerce pages." msgstr "" #: includes/api/class-wc-rest-system-status-tools-controller.php:107 @@ -15479,9 +15683,129 @@ msgstr "" msgid "There was an error calling this tool. There is no callback present." msgstr "" +#: includes/api/class-wc-rest-webhook-deliveries.php:86 +#: includes/api/v1/class-wc-rest-webhook-deliveries.php:240 +msgid "The delivery duration, in seconds." +msgstr "" + +#: includes/api/class-wc-rest-webhook-deliveries.php:92 +#: includes/api/v1/class-wc-rest-webhook-deliveries.php:246 +msgid "" +"A friendly summary of the response including the HTTP response code, " +"message, and body." +msgstr "" + +#: includes/api/class-wc-rest-webhook-deliveries.php:98 +#: includes/api/class-wc-rest-webhook-deliveries.php:105 +#: includes/api/v1/class-wc-rest-webhook-deliveries.php:252 +#: includes/api/v1/class-wc-rest-webhook-deliveries.php:259 +msgid "The URL where the webhook was delivered." +msgstr "" + +#: includes/api/class-wc-rest-webhook-deliveries.php:112 +#: includes/api/v1/class-wc-rest-webhook-deliveries.php:266 +msgid "Request headers." +msgstr "" + +#: includes/api/class-wc-rest-webhook-deliveries.php:121 +#: includes/api/v1/class-wc-rest-webhook-deliveries.php:275 +msgid "Request body." +msgstr "" + +#: includes/api/class-wc-rest-webhook-deliveries.php:127 +#: includes/api/v1/class-wc-rest-webhook-deliveries.php:281 +msgid "The HTTP response code from the receiving server." +msgstr "" + +#: includes/api/class-wc-rest-webhook-deliveries.php:133 +#: includes/api/v1/class-wc-rest-webhook-deliveries.php:287 +msgid "The HTTP response message from the receiving server." +msgstr "" + +#: includes/api/class-wc-rest-webhook-deliveries.php:139 +#: includes/api/v1/class-wc-rest-webhook-deliveries.php:293 +msgid "Array of the response headers from the receiving server." +msgstr "" + +#: includes/api/class-wc-rest-webhook-deliveries.php:148 +#: includes/api/v1/class-wc-rest-webhook-deliveries.php:302 +msgid "The response body from the receiving server." +msgstr "" + +#: includes/api/class-wc-rest-webhook-deliveries.php:154 +#: includes/api/v1/class-wc-rest-webhook-deliveries.php:308 +msgid "The date the webhook delivery was logged, in the site's timezone." +msgstr "" + +#: includes/api/class-wc-rest-webhook-deliveries.php:160 +msgid "The date the webhook delivery was logged, GMT." +msgstr "" + +#: includes/api/class-wc-rest-webhooks-controller.php:93 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:494 +msgid "A friendly name for the webhook." +msgstr "" + +#: includes/api/class-wc-rest-webhooks-controller.php:98 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:499 +msgid "Webhook status." +msgstr "" + +#: includes/api/class-wc-rest-webhooks-controller.php:108 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:72 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:509 +msgid "Webhook topic." +msgstr "" + +#: includes/api/class-wc-rest-webhooks-controller.php:113 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:514 +msgid "Webhook resource." +msgstr "" + +#: includes/api/class-wc-rest-webhooks-controller.php:119 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:520 +msgid "Webhook event." +msgstr "" + +#: includes/api/class-wc-rest-webhooks-controller.php:125 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:526 +msgid "WooCommerce action names associated with the webhook." +msgstr "" + +#: includes/api/class-wc-rest-webhooks-controller.php:134 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:535 +msgid "The URL where the webhook payload is delivered." +msgstr "" + +#: includes/api/class-wc-rest-webhooks-controller.php:141 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:542 +msgid "" +"Secret key used to generate a hash of the delivered webhook and provided in " +"the request headers. This will default is a MD5 hash from the current " +"user's ID|username if not provided." +msgstr "" + +#: includes/api/class-wc-rest-webhooks-controller.php:146 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:547 +msgid "The date the webhook was created, in the site's timezone." +msgstr "" + +#: includes/api/class-wc-rest-webhooks-controller.php:152 +msgid "The date the webhook was created, as GMT." +msgstr "" + +#: includes/api/class-wc-rest-webhooks-controller.php:158 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:553 +msgid "The date the webhook was last modified, in the site's timezone." +msgstr "" + +#: includes/api/class-wc-rest-webhooks-controller.php:164 +msgid "The date the webhook was last modified, as GMT." +msgstr "" + #: includes/api/legacy/class-wc-rest-legacy-products-controller.php:531 -#: includes/api/legacy/v2/class-wc-api-products.php:1273 -#: includes/api/legacy/v3/class-wc-api-products.php:1763 +#: includes/api/legacy/v2/class-wc-api-products.php:1274 +#: includes/api/legacy/v3/class-wc-api-products.php:1764 #: includes/api/v1/class-wc-rest-products-controller.php:1374 #. translators: 1: variation id 2: product name msgid "Variation #%1$s of %2$s" @@ -15646,7 +15970,7 @@ msgstr "" #: includes/api/legacy/v2/class-wc-api-products.php:442 #: includes/api/legacy/v2/class-wc-api-resource.php:384 #: includes/api/legacy/v3/class-wc-api-products.php:501 -#: includes/api/legacy/v3/class-wc-api-products.php:3019 +#: includes/api/legacy/v3/class-wc-api-products.php:3020 #: includes/api/legacy/v3/class-wc-api-resource.php:386 msgid "This %s cannot be deleted" msgstr "" @@ -15661,14 +15985,14 @@ msgstr "" #: includes/api/legacy/v1/class-wc-api-resource.php:322 #: includes/api/legacy/v2/class-wc-api-products.php:455 -#: includes/api/legacy/v2/class-wc-api-products.php:2196 +#: includes/api/legacy/v2/class-wc-api-products.php:2197 #: includes/api/legacy/v2/class-wc-api-resource.php:392 #: includes/api/legacy/v3/class-wc-api-products.php:514 #: includes/api/legacy/v3/class-wc-api-products.php:854 #: includes/api/legacy/v3/class-wc-api-products.php:1042 -#: includes/api/legacy/v3/class-wc-api-products.php:2758 -#: includes/api/legacy/v3/class-wc-api-products.php:3026 -#: includes/api/legacy/v3/class-wc-api-products.php:3333 +#: includes/api/legacy/v3/class-wc-api-products.php:2759 +#: includes/api/legacy/v3/class-wc-api-products.php:3027 +#: includes/api/legacy/v3/class-wc-api-products.php:3334 #: includes/api/legacy/v3/class-wc-api-resource.php:395 #: includes/api/legacy/v3/class-wc-api-taxes.php:354 #: includes/api/legacy/v3/class-wc-api-taxes.php:665 @@ -15703,13 +16027,13 @@ msgstr "" #: includes/api/legacy/v2/class-wc-api-coupons.php:222 #: includes/api/legacy/v2/class-wc-api-customers.php:358 #: includes/api/legacy/v2/class-wc-api-products.php:224 -#: includes/api/legacy/v2/class-wc-api-products.php:1958 +#: includes/api/legacy/v2/class-wc-api-products.php:1959 #: includes/api/legacy/v2/class-wc-api-server.php:429 #: includes/api/legacy/v3/class-wc-api-coupons.php:222 #: includes/api/legacy/v3/class-wc-api-customers.php:359 #: includes/api/legacy/v3/class-wc-api-products.php:273 -#: includes/api/legacy/v3/class-wc-api-products.php:2517 -#: includes/api/legacy/v3/class-wc-api-products.php:2904 +#: includes/api/legacy/v3/class-wc-api-products.php:2518 +#: includes/api/legacy/v3/class-wc-api-products.php:2905 #: includes/api/legacy/v3/class-wc-api-server.php:429 #: includes/api/legacy/v3/class-wc-api-taxes.php:575 #: includes/class-wc-auth.php:174 @@ -15723,7 +16047,7 @@ msgstr "" #: includes/api/legacy/v2/class-wc-api-orders.php:1276 #: includes/api/legacy/v2/class-wc-api-orders.php:1566 #: includes/api/legacy/v2/class-wc-api-products.php:210 -#: includes/api/legacy/v2/class-wc-api-products.php:1994 +#: includes/api/legacy/v2/class-wc-api-products.php:1995 #: includes/api/legacy/v2/class-wc-api-webhooks.php:169 #: includes/api/legacy/v3/class-wc-api-coupons.php:208 #: includes/api/legacy/v3/class-wc-api-customers.php:345 @@ -15733,9 +16057,9 @@ msgstr "" #: includes/api/legacy/v3/class-wc-api-products.php:259 #: includes/api/legacy/v3/class-wc-api-products.php:690 #: includes/api/legacy/v3/class-wc-api-products.php:943 -#: includes/api/legacy/v3/class-wc-api-products.php:2553 -#: includes/api/legacy/v3/class-wc-api-products.php:2884 -#: includes/api/legacy/v3/class-wc-api-products.php:3219 +#: includes/api/legacy/v3/class-wc-api-products.php:2554 +#: includes/api/legacy/v3/class-wc-api-products.php:2885 +#: includes/api/legacy/v3/class-wc-api-products.php:3220 #: includes/api/legacy/v3/class-wc-api-taxes.php:184 #: includes/api/legacy/v3/class-wc-api-taxes.php:564 #: includes/api/legacy/v3/class-wc-api-webhooks.php:169 @@ -15760,7 +16084,7 @@ msgstr "" #: includes/api/legacy/v2/class-wc-api-orders.php:1335 #: includes/api/legacy/v2/class-wc-api-orders.php:1645 #: includes/api/legacy/v2/class-wc-api-products.php:317 -#: includes/api/legacy/v2/class-wc-api-products.php:2075 +#: includes/api/legacy/v2/class-wc-api-products.php:2076 #: includes/api/legacy/v2/class-wc-api-webhooks.php:250 #: includes/api/legacy/v3/class-wc-api-coupons.php:317 #: includes/api/legacy/v3/class-wc-api-customers.php:398 @@ -15770,9 +16094,9 @@ msgstr "" #: includes/api/legacy/v3/class-wc-api-products.php:371 #: includes/api/legacy/v3/class-wc-api-products.php:767 #: includes/api/legacy/v3/class-wc-api-products.php:988 -#: includes/api/legacy/v3/class-wc-api-products.php:2635 -#: includes/api/legacy/v3/class-wc-api-products.php:2947 -#: includes/api/legacy/v3/class-wc-api-products.php:3277 +#: includes/api/legacy/v3/class-wc-api-products.php:2636 +#: includes/api/legacy/v3/class-wc-api-products.php:2948 +#: includes/api/legacy/v3/class-wc-api-products.php:3278 #: includes/api/legacy/v3/class-wc-api-taxes.php:254 #: includes/api/legacy/v3/class-wc-api-webhooks.php:250 msgid "No %1$s data specified to edit %1$s" @@ -15788,11 +16112,11 @@ msgstr "" #: includes/api/legacy/v2/class-wc-api-coupons.php:511 #: includes/api/legacy/v2/class-wc-api-customers.php:775 #: includes/api/legacy/v2/class-wc-api-orders.php:1760 -#: includes/api/legacy/v2/class-wc-api-products.php:2263 +#: includes/api/legacy/v2/class-wc-api-products.php:2264 #: includes/api/legacy/v3/class-wc-api-coupons.php:511 #: includes/api/legacy/v3/class-wc-api-customers.php:765 #: includes/api/legacy/v3/class-wc-api-orders.php:1810 -#: includes/api/legacy/v3/class-wc-api-products.php:3069 +#: includes/api/legacy/v3/class-wc-api-products.php:3070 #: includes/api/legacy/v3/class-wc-api-taxes.php:457 msgid "No %1$s data specified to create/edit %1$s" msgstr "" @@ -16043,111 +16367,111 @@ msgstr "" msgid "A product category with the provided ID could not be found" msgstr "" -#: includes/api/legacy/v2/class-wc-api-products.php:927 -#: includes/api/legacy/v3/class-wc-api-products.php:1412 +#: includes/api/legacy/v2/class-wc-api-products.php:928 +#: includes/api/legacy/v3/class-wc-api-products.php:1413 msgid "The SKU already exists on another product." msgstr "" -#: includes/api/legacy/v2/class-wc-api-products.php:1680 -#: includes/api/legacy/v3/class-wc-api-products.php:2214 +#: includes/api/legacy/v2/class-wc-api-products.php:1681 +#: includes/api/legacy/v3/class-wc-api-products.php:2215 #: includes/wc-rest-functions.php:74 msgid "Invalid URL %s." msgstr "" -#: includes/api/legacy/v2/class-wc-api-products.php:1692 -#: includes/api/legacy/v2/class-wc-api-products.php:1694 -#: includes/api/legacy/v3/class-wc-api-products.php:2226 -#: includes/api/legacy/v3/class-wc-api-products.php:2228 +#: includes/api/legacy/v2/class-wc-api-products.php:1693 +#: includes/api/legacy/v2/class-wc-api-products.php:1695 +#: includes/api/legacy/v3/class-wc-api-products.php:2227 +#: includes/api/legacy/v3/class-wc-api-products.php:2229 #: includes/wc-rest-functions.php:86 includes/wc-rest-functions.php:88 msgid "Error getting remote image %s." msgstr "" -#: includes/api/legacy/v2/class-wc-api-products.php:1692 -#: includes/api/legacy/v3/class-wc-api-products.php:2226 +#: includes/api/legacy/v2/class-wc-api-products.php:1693 +#: includes/api/legacy/v3/class-wc-api-products.php:2227 #: includes/class-wc-auth.php:383 includes/wc-rest-functions.php:86 #. translators: %s: error messase msgid "Error: %s." msgstr "" -#: includes/api/legacy/v2/class-wc-api-products.php:1715 -#: includes/api/legacy/v3/class-wc-api-products.php:2249 +#: includes/api/legacy/v2/class-wc-api-products.php:1716 +#: includes/api/legacy/v3/class-wc-api-products.php:2250 #: includes/wc-rest-functions.php:109 msgid "Invalid image type." msgstr "" -#: includes/api/legacy/v2/class-wc-api-products.php:1732 -#: includes/api/legacy/v3/class-wc-api-products.php:2266 +#: includes/api/legacy/v2/class-wc-api-products.php:1733 +#: includes/api/legacy/v3/class-wc-api-products.php:2267 #: includes/wc-rest-functions.php:127 msgid "Zero size file downloaded." msgstr "" -#: includes/api/legacy/v2/class-wc-api-products.php:1872 -#: includes/api/legacy/v2/class-wc-api-products.php:1916 -#: includes/api/legacy/v3/class-wc-api-products.php:2431 -#: includes/api/legacy/v3/class-wc-api-products.php:2475 +#: includes/api/legacy/v2/class-wc-api-products.php:1873 +#: includes/api/legacy/v2/class-wc-api-products.php:1917 +#: includes/api/legacy/v3/class-wc-api-products.php:2432 +#: includes/api/legacy/v3/class-wc-api-products.php:2476 msgid "You do not have permission to read product attributes" msgstr "" -#: includes/api/legacy/v2/class-wc-api-products.php:1911 -#: includes/api/legacy/v3/class-wc-api-products.php:2470 -#: includes/api/legacy/v3/class-wc-api-products.php:2838 +#: includes/api/legacy/v2/class-wc-api-products.php:1912 +#: includes/api/legacy/v3/class-wc-api-products.php:2471 +#: includes/api/legacy/v3/class-wc-api-products.php:2839 msgid "Invalid product attribute ID" msgstr "" -#: includes/api/legacy/v2/class-wc-api-products.php:1926 -#: includes/api/legacy/v2/class-wc-api-products.php:2168 -#: includes/api/legacy/v3/class-wc-api-products.php:2485 -#: includes/api/legacy/v3/class-wc-api-products.php:2729 -#: includes/api/legacy/v3/class-wc-api-products.php:2782 -#: includes/api/legacy/v3/class-wc-api-products.php:2849 -#: includes/api/legacy/v3/class-wc-api-products.php:2897 -#: includes/api/legacy/v3/class-wc-api-products.php:2961 -#: includes/api/legacy/v3/class-wc-api-products.php:3012 +#: includes/api/legacy/v2/class-wc-api-products.php:1927 +#: includes/api/legacy/v2/class-wc-api-products.php:2169 +#: includes/api/legacy/v3/class-wc-api-products.php:2486 +#: includes/api/legacy/v3/class-wc-api-products.php:2730 +#: includes/api/legacy/v3/class-wc-api-products.php:2783 +#: includes/api/legacy/v3/class-wc-api-products.php:2850 +#: includes/api/legacy/v3/class-wc-api-products.php:2898 +#: includes/api/legacy/v3/class-wc-api-products.php:2962 +#: includes/api/legacy/v3/class-wc-api-products.php:3013 msgid "A product attribute with the provided ID could not be found" msgstr "" -#: includes/api/legacy/v2/class-wc-api-products.php:1971 -#: includes/api/legacy/v3/class-wc-api-products.php:2530 +#: includes/api/legacy/v2/class-wc-api-products.php:1972 +#: includes/api/legacy/v3/class-wc-api-products.php:2531 msgid "" "Invalid product attribute type - the product attribute type must be any of " "these: %s" msgstr "" -#: includes/api/legacy/v2/class-wc-api-products.php:1976 -#: includes/api/legacy/v3/class-wc-api-products.php:2535 +#: includes/api/legacy/v2/class-wc-api-products.php:1977 +#: includes/api/legacy/v3/class-wc-api-products.php:2536 msgid "" "Invalid product attribute order_by type - the product attribute order_by " "type must be any of these: %s" msgstr "" -#: includes/api/legacy/v2/class-wc-api-products.php:2001 -#: includes/api/legacy/v3/class-wc-api-products.php:2560 -#: includes/api/legacy/v3/class-wc-api-products.php:2891 +#: includes/api/legacy/v2/class-wc-api-products.php:2002 +#: includes/api/legacy/v3/class-wc-api-products.php:2561 +#: includes/api/legacy/v3/class-wc-api-products.php:2892 msgid "You do not have permission to create product attributes" msgstr "" -#: includes/api/legacy/v2/class-wc-api-products.php:2083 -#: includes/api/legacy/v3/class-wc-api-products.php:2643 -#: includes/api/legacy/v3/class-wc-api-products.php:2955 +#: includes/api/legacy/v2/class-wc-api-products.php:2084 +#: includes/api/legacy/v3/class-wc-api-products.php:2644 +#: includes/api/legacy/v3/class-wc-api-products.php:2956 msgid "You do not have permission to edit product attributes" msgstr "" -#: includes/api/legacy/v2/class-wc-api-products.php:2129 -#: includes/api/legacy/v3/class-wc-api-products.php:2689 +#: includes/api/legacy/v2/class-wc-api-products.php:2130 +#: includes/api/legacy/v3/class-wc-api-products.php:2690 msgid "Could not edit the attribute" msgstr "" -#: includes/api/legacy/v2/class-wc-api-products.php:2156 -#: includes/api/legacy/v3/class-wc-api-products.php:2717 +#: includes/api/legacy/v2/class-wc-api-products.php:2157 +#: includes/api/legacy/v3/class-wc-api-products.php:2718 msgid "You do not have permission to delete product attributes" msgstr "" -#: includes/api/legacy/v2/class-wc-api-products.php:2178 -#: includes/api/legacy/v3/class-wc-api-products.php:2739 +#: includes/api/legacy/v2/class-wc-api-products.php:2179 +#: includes/api/legacy/v3/class-wc-api-products.php:2740 msgid "Could not delete the attribute" msgstr "" -#: includes/api/legacy/v2/class-wc-api-products.php:2217 +#: includes/api/legacy/v2/class-wc-api-products.php:2218 msgid "Invalid product SKU" msgstr "" @@ -16261,53 +16585,53 @@ msgstr "" msgid "Could not delete the tag" msgstr "" -#: includes/api/legacy/v3/class-wc-api-products.php:2776 -#: includes/api/legacy/v3/class-wc-api-products.php:2843 +#: includes/api/legacy/v3/class-wc-api-products.php:2777 +#: includes/api/legacy/v3/class-wc-api-products.php:2844 msgid "You do not have permission to read product attribute terms" msgstr "" -#: includes/api/legacy/v3/class-wc-api-products.php:2855 +#: includes/api/legacy/v3/class-wc-api-products.php:2856 msgid "A product attribute term with the provided ID could not be found" msgstr "" -#: includes/api/legacy/v3/class-wc-api-products.php:3006 +#: includes/api/legacy/v3/class-wc-api-products.php:3007 msgid "You do not have permission to delete product attribute terms" msgstr "" -#: includes/api/legacy/v3/class-wc-api-products.php:3145 -#: includes/api/legacy/v3/class-wc-api-products.php:3180 +#: includes/api/legacy/v3/class-wc-api-products.php:3146 +#: includes/api/legacy/v3/class-wc-api-products.php:3181 msgid "You do not have permission to read product shipping classes" msgstr "" -#: includes/api/legacy/v3/class-wc-api-products.php:3175 +#: includes/api/legacy/v3/class-wc-api-products.php:3176 msgid "Invalid product shipping class ID" msgstr "" -#: includes/api/legacy/v3/class-wc-api-products.php:3186 +#: includes/api/legacy/v3/class-wc-api-products.php:3187 msgid "A product shipping class with the provided ID could not be found" msgstr "" -#: includes/api/legacy/v3/class-wc-api-products.php:3224 +#: includes/api/legacy/v3/class-wc-api-products.php:3225 msgid "You do not have permission to create product shipping classes" msgstr "" -#: includes/api/legacy/v3/class-wc-api-products.php:3242 +#: includes/api/legacy/v3/class-wc-api-products.php:3243 msgid "Product shipping class parent is invalid" msgstr "" -#: includes/api/legacy/v3/class-wc-api-products.php:3285 +#: includes/api/legacy/v3/class-wc-api-products.php:3286 msgid "You do not have permission to edit product shipping classes" msgstr "" -#: includes/api/legacy/v3/class-wc-api-products.php:3297 +#: includes/api/legacy/v3/class-wc-api-products.php:3298 msgid "Could not edit the shipping class" msgstr "" -#: includes/api/legacy/v3/class-wc-api-products.php:3322 +#: includes/api/legacy/v3/class-wc-api-products.php:3323 msgid "You do not have permission to delete product shipping classes" msgstr "" -#: includes/api/legacy/v3/class-wc-api-products.php:3328 +#: includes/api/legacy/v3/class-wc-api-products.php:3329 msgid "Could not delete the shipping class" msgstr "" @@ -16446,11 +16770,15 @@ msgstr "" #: includes/api/v1/class-wc-rest-customers-controller.php:741 #: includes/api/v1/class-wc-rest-customers-controller.php:804 +#: includes/api/v1/class-wc-rest-orders-controller.php:1036 +#: includes/api/v1/class-wc-rest-orders-controller.php:1099 msgid "Address line 1." msgstr "" #: includes/api/v1/class-wc-rest-customers-controller.php:746 #: includes/api/v1/class-wc-rest-customers-controller.php:809 +#: includes/api/v1/class-wc-rest-orders-controller.php:1041 +#: includes/api/v1/class-wc-rest-orders-controller.php:1104 msgid "Address line 2." msgstr "" @@ -16467,19 +16795,11 @@ msgstr "" msgid "Limit result set to resources with a specific role." msgstr "" -#: includes/api/v1/class-wc-rest-order-notes-controller.php:70 -msgid "Order note content." -msgstr "" - #: includes/api/v1/class-wc-rest-order-notes-controller.php:292 #: includes/api/v1/class-wc-rest-webhooks-controller.php:316 msgid "Webhooks do not support trashing." msgstr "" -#: includes/api/v1/class-wc-rest-order-notes-controller.php:404 -msgid "The date the order note was created, in the site's timezone." -msgstr "" - #: includes/api/v1/class-wc-rest-order-notes-controller.php:410 msgid "Order note." msgstr "" @@ -16504,16 +16824,6 @@ msgstr "" msgid "Meta label." msgstr "" -#: includes/api/v1/class-wc-rest-orders-controller.php:1036 -#: includes/api/v1/class-wc-rest-orders-controller.php:1099 -msgid "Address 1." -msgstr "" - -#: includes/api/v1/class-wc-rest-orders-controller.php:1041 -#: includes/api/v1/class-wc-rest-orders-controller.php:1104 -msgid "Address 2." -msgstr "" - #: includes/api/v1/class-wc-rest-product-attribute-terms-controller.php:46 #: includes/api/v1/class-wc-rest-product-attribute-terms-controller.php:78 #: includes/api/v1/class-wc-rest-product-attribute-terms-controller.php:114 @@ -16524,33 +16834,6 @@ msgstr "" msgid "Term name." msgstr "" -#: includes/api/v1/class-wc-rest-product-attribute-terms-controller.php:209 -#: includes/api/v1/class-wc-rest-product-attributes-controller.php:550 -#: includes/api/v1/class-wc-rest-product-categories-controller.php:184 -#: includes/api/v1/class-wc-rest-product-shipping-classes-controller.php:108 -#: includes/api/v1/class-wc-rest-product-tags-controller.php:108 -msgid "An alphanumeric identifier for the resource unique to its type." -msgstr "" - -#: includes/api/v1/class-wc-rest-product-attribute-terms-controller.php:217 -#: includes/api/v1/class-wc-rest-product-categories-controller.php:197 -#: includes/api/v1/class-wc-rest-product-shipping-classes-controller.php:116 -#: includes/api/v1/class-wc-rest-product-tags-controller.php:116 -msgid "HTML description of the resource." -msgstr "" - -#: includes/api/v1/class-wc-rest-product-attribute-terms-controller.php:225 -#: includes/api/v1/class-wc-rest-product-categories-controller.php:252 -msgid "Menu order, used to custom sort the resource." -msgstr "" - -#: includes/api/v1/class-wc-rest-product-attribute-terms-controller.php:230 -#: includes/api/v1/class-wc-rest-product-categories-controller.php:257 -#: includes/api/v1/class-wc-rest-product-shipping-classes-controller.php:124 -#: includes/api/v1/class-wc-rest-product-tags-controller.php:124 -msgid "Number of published products for the resource." -msgstr "" - #: includes/api/v1/class-wc-rest-product-attributes-controller.php:141 msgid "Sorry, you cannot create new resource." msgstr "" @@ -16571,18 +16854,6 @@ msgstr "" msgid "Enable/Disable attribute archives." msgstr "" -#: includes/api/v1/class-wc-rest-product-categories-controller.php:192 -msgid "The ID for the parent of the resource." -msgstr "" - -#: includes/api/v1/class-wc-rest-product-categories-controller.php:205 -msgid "Category archive display type." -msgstr "" - -#: includes/api/v1/class-wc-rest-product-categories-controller.php:212 -msgid "Image data." -msgstr "" - #: includes/api/v1/class-wc-rest-product-reviews-controller.php:68 msgid "Review content." msgstr "" @@ -16630,30 +16901,6 @@ msgstr "" msgid "The product review cannot be deleted." msgstr "" -#: includes/api/v1/class-wc-rest-product-reviews-controller.php:522 -msgid "The content of the review." -msgstr "" - -#: includes/api/v1/class-wc-rest-product-reviews-controller.php:527 -msgid "The date the review was created, in the site's timezone." -msgstr "" - -#: includes/api/v1/class-wc-rest-product-reviews-controller.php:532 -msgid "Review rating (0 to 5)." -msgstr "" - -#: includes/api/v1/class-wc-rest-product-reviews-controller.php:537 -msgid "Reviewer name." -msgstr "" - -#: includes/api/v1/class-wc-rest-product-reviews-controller.php:542 -msgid "Reviewer email." -msgstr "" - -#: includes/api/v1/class-wc-rest-product-reviews-controller.php:547 -msgid "Shows if the reviewer bought the product or not." -msgstr "" - #: includes/api/v1/class-wc-rest-product-shipping-classes-controller.php:100 msgid "Shipping class name." msgstr "" @@ -16673,6 +16920,10 @@ msgstr "" msgid "End data of sale price." msgstr "" +#: includes/api/v1/class-wc-rest-products-controller.php:1913 +msgid "Download type, this controls the schema on the front-end." +msgstr "" + #: includes/api/v1/class-wc-rest-products-controller.php:2261 msgid "List of variations." msgstr "" @@ -16828,54 +17079,6 @@ msgstr "" msgid "Invalid webhook ID." msgstr "" -#: includes/api/v1/class-wc-rest-webhook-deliveries.php:240 -msgid "The delivery duration, in seconds." -msgstr "" - -#: includes/api/v1/class-wc-rest-webhook-deliveries.php:246 -msgid "" -"A friendly summary of the response including the HTTP response code, " -"message, and body." -msgstr "" - -#: includes/api/v1/class-wc-rest-webhook-deliveries.php:252 -#: includes/api/v1/class-wc-rest-webhook-deliveries.php:259 -msgid "The URL where the webhook was delivered." -msgstr "" - -#: includes/api/v1/class-wc-rest-webhook-deliveries.php:266 -msgid "Request headers." -msgstr "" - -#: includes/api/v1/class-wc-rest-webhook-deliveries.php:275 -msgid "Request body." -msgstr "" - -#: includes/api/v1/class-wc-rest-webhook-deliveries.php:281 -msgid "The HTTP response code from the receiving server." -msgstr "" - -#: includes/api/v1/class-wc-rest-webhook-deliveries.php:287 -msgid "The HTTP response message from the receiving server." -msgstr "" - -#: includes/api/v1/class-wc-rest-webhook-deliveries.php:293 -msgid "Array of the response headers from the receiving server." -msgstr "" - -#: includes/api/v1/class-wc-rest-webhook-deliveries.php:302 -msgid "The response body from the receiving server." -msgstr "" - -#: includes/api/v1/class-wc-rest-webhook-deliveries.php:308 -msgid "The date the webhook delivery was logged, in the site's timezone." -msgstr "" - -#: includes/api/v1/class-wc-rest-webhooks-controller.php:72 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:509 -msgid "Webhook topic." -msgstr "" - #: includes/api/v1/class-wc-rest-webhooks-controller.php:77 msgid "Webhook delivery URL." msgstr "" @@ -16889,45 +17092,6 @@ msgstr "" msgid "Webhook delivery URL must be a valid URL starting with http:// or https://." msgstr "" -#: includes/api/v1/class-wc-rest-webhooks-controller.php:494 -msgid "A friendly name for the webhook." -msgstr "" - -#: includes/api/v1/class-wc-rest-webhooks-controller.php:499 -msgid "Webhook status." -msgstr "" - -#: includes/api/v1/class-wc-rest-webhooks-controller.php:514 -msgid "Webhook resource." -msgstr "" - -#: includes/api/v1/class-wc-rest-webhooks-controller.php:520 -msgid "Webhook event." -msgstr "" - -#: includes/api/v1/class-wc-rest-webhooks-controller.php:526 -msgid "WooCommerce action names associated with the webhook." -msgstr "" - -#: includes/api/v1/class-wc-rest-webhooks-controller.php:535 -msgid "The URL where the webhook payload is delivered." -msgstr "" - -#: includes/api/v1/class-wc-rest-webhooks-controller.php:542 -msgid "" -"Secret key used to generate a hash of the delivered webhook and provided in " -"the request headers. This will default is a MD5 hash from the current " -"user's ID|username if not provided." -msgstr "" - -#: includes/api/v1/class-wc-rest-webhooks-controller.php:547 -msgid "The date the webhook was created, in the site's timezone." -msgstr "" - -#: includes/api/v1/class-wc-rest-webhooks-controller.php:553 -msgid "The date the webhook was last modified, in the site's timezone." -msgstr "" - #: includes/api/v1/class-wc-rest-webhooks-controller.php:574 msgid "Limit result set to webhooks assigned a specific status." msgstr "" @@ -17557,41 +17721,41 @@ msgstr "" msgid "No file defined" msgstr "" -#: includes/class-wc-download-handler.php:261 +#: includes/class-wc-download-handler.php:265 msgid "File not found" msgstr "" -#: includes/class-wc-download-handler.php:397 +#: includes/class-wc-download-handler.php:401 msgid "Go to shop" msgstr "" -#: includes/class-wc-emails.php:402 +#: includes/class-wc-emails.php:383 msgid "Note" msgstr "" -#: includes/class-wc-emails.php:458 +#: includes/class-wc-emails.php:439 msgid "Product low in stock" msgstr "" -#: includes/class-wc-emails.php:461 +#: includes/class-wc-emails.php:442 #. translators: 1: product name 2: items in stock msgid "%1$s is low in stock. There are %2$d left." msgstr "" -#: includes/class-wc-emails.php:481 +#: includes/class-wc-emails.php:462 msgid "Product out of stock" msgstr "" -#: includes/class-wc-emails.php:483 +#: includes/class-wc-emails.php:464 #. translators: %s: product name msgid "%s is out of stock." msgstr "" -#: includes/class-wc-emails.php:512 +#: includes/class-wc-emails.php:493 msgid "Product backorder" msgstr "" -#: includes/class-wc-emails.php:513 +#: includes/class-wc-emails.php:494 msgid "%1$s units of %2$s have been backordered in order #%3$s." msgstr "" @@ -17716,9 +17880,8 @@ msgstr[1] "" #: includes/class-wc-form-handler.php:875 #: includes/class-wc-form-handler.php:879 -#: includes/class-wc-form-handler.php:883 -#: includes/class-wc-form-handler.php:892 -#: includes/class-wc-form-handler.php:1033 includes/wc-user-functions.php:111 +#: includes/class-wc-form-handler.php:888 +#: includes/class-wc-form-handler.php:1029 includes/wc-user-functions.php:111 msgid "Error:" msgstr "" @@ -17726,23 +17889,19 @@ msgstr "" msgid "Username is required." msgstr "" -#: includes/class-wc-form-handler.php:883 -msgid "Password is required." -msgstr "" - -#: includes/class-wc-form-handler.php:892 +#: includes/class-wc-form-handler.php:888 msgid "A user could not be found with this email address." msgstr "" -#: includes/class-wc-form-handler.php:970 +#: includes/class-wc-form-handler.php:966 msgid "Please enter your password." msgstr "" -#: includes/class-wc-form-handler.php:974 +#: includes/class-wc-form-handler.php:970 msgid "Passwords do not match." msgstr "" -#: includes/class-wc-form-handler.php:1016 +#: includes/class-wc-form-handler.php:1012 msgid "Anti-spam field was filled in." msgstr "" @@ -18420,7 +18579,7 @@ msgstr "" msgid "Order – %s" msgstr "" -#: includes/data-stores/abstract-wc-order-item-type-data-store.php:107 +#: includes/data-stores/abstract-wc-order-item-type-data-store.php:113 msgid "Invalid order item." msgstr "" @@ -20958,15 +21117,15 @@ msgstr "" msgid "Fixed product discount" msgstr "" -#: includes/wc-formatting-functions.php:939 +#: includes/wc-formatting-functions.php:976 msgid "Only %s left in stock" msgstr "" -#: includes/wc-formatting-functions.php:943 +#: includes/wc-formatting-functions.php:980 msgid "%s in stock" msgstr "" -#: includes/wc-formatting-functions.php:948 +#: includes/wc-formatting-functions.php:985 msgid "(can be backordered)" msgstr "" @@ -22033,7 +22192,7 @@ msgstr "" msgid "Dimensions" msgstr "" -#: templates/single-product/product-image.php:53 +#: templates/single-product/product-image.php:54 msgid "Awaiting product image" msgstr "" @@ -22322,7 +22481,7 @@ msgctxt "default-slug" msgid "product" msgstr "" -#: includes/admin/class-wc-admin-post-types.php:616 +#: includes/admin/class-wc-admin-post-types.php:621 #: includes/class-wc-order.php:779 includes/class-wc-order.php:789 #. translators: 1: first name 2: last name msgctxt "full name" @@ -22438,22 +22597,22 @@ msgctxt "Pagination" msgid "%1$s of %2$s" msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:797 +#: includes/api/class-wc-rest-system-status-controller.php:862 msgctxt "Page setting" msgid "Shop base" msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:801 +#: includes/api/class-wc-rest-system-status-controller.php:866 msgctxt "Page setting" msgid "Cart" msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:805 +#: includes/api/class-wc-rest-system-status-controller.php:870 msgctxt "Page setting" msgid "Checkout" msgstr "" -#: includes/api/class-wc-rest-system-status-controller.php:809 +#: includes/api/class-wc-rest-system-status-controller.php:874 msgctxt "Page setting" msgid "My account" msgstr "" @@ -22540,7 +22699,7 @@ msgctxt "Price range: from-to" msgid "%1$s–%2$s" msgstr "" -#: includes/wc-formatting-functions.php:985 +#: includes/wc-formatting-functions.php:1022 msgctxt "Price range: from-to" msgid "%1$s – %2$s" msgstr "" diff --git a/woocommerce.php b/woocommerce.php index 2b27aa986f9..89d61ba19ab 100644 --- a/woocommerce.php +++ b/woocommerce.php @@ -3,7 +3,7 @@ * Plugin Name: WooCommerce * Plugin URI: https://woocommerce.com/ * Description: An e-commerce toolkit that helps you sell anything. Beautifully. - * Version: 3.0.0-rc.1 + * Version: 3.0.0-rc.2 * Author: Automattic * Author URI: https://woocommerce.com * Requires at least: 4.4 From 3946654b29b8271c81612d5a1d6c060fe00c6590 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Fri, 24 Mar 2017 13:51:27 -0300 Subject: [PATCH 138/525] Fixed author of uninstall.php --- uninstall.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uninstall.php b/uninstall.php index 5a879fb70c1..d0f1cd09349 100644 --- a/uninstall.php +++ b/uninstall.php @@ -4,7 +4,7 @@ * * Uninstalling WooCommerce deletes user roles, pages, tables, and options. * - * @author WooThemes + * @author WooCommerce * @category Core * @package WooCommerce/Uninstaller * @version 2.3.0 From f2f6d76f6d3657155d6b72e524bc8498985a4890 Mon Sep 17 00:00:00 2001 From: Cesar Rodas Date: Sat, 25 Mar 2017 00:30:12 -0300 Subject: [PATCH 139/525] Do not update woocommerce_order_items if nothing changed Do not update the item (`woocommerce_order_items`) unless something changed. --- .../abstract-wc-order-item-type-data-store.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/includes/data-stores/abstract-wc-order-item-type-data-store.php b/includes/data-stores/abstract-wc-order-item-type-data-store.php index 747403345e4..1e7105e3ee5 100644 --- a/includes/data-stores/abstract-wc-order-item-type-data-store.php +++ b/includes/data-stores/abstract-wc-order-item-type-data-store.php @@ -59,11 +59,15 @@ abstract class Abstract_WC_Order_Item_Type_Data_Store extends WC_Data_Store_WP i public function update( &$item ) { global $wpdb; - $wpdb->update( $wpdb->prefix . 'woocommerce_order_items', array( - 'order_item_name' => $item->get_name(), - 'order_item_type' => $item->get_type(), - 'order_id' => $item->get_order_id(), - ), array( 'order_item_id' => $item->get_id() ) ); + $changes = $item->get_changes(); + + if ( ! empty( $changes ) ) { + $wpdb->update( $wpdb->prefix . 'woocommerce_order_items', array( + 'order_item_name' => $item->get_name(), + 'order_item_type' => $item->get_type(), + 'order_id' => $item->get_order_id(), + ), array( 'order_item_id' => $item->get_id() ) ); + } $this->save_item_data( $item ); $item->save_meta_data(); From 6f3d0c1c113ef89cc2e20d1ee7483a4cd95032f7 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 27 Mar 2017 11:55:36 +0100 Subject: [PATCH 140/525] Install terms prior to update Closes #13770 --- includes/class-wc-install.php | 2 +- includes/wc-update-functions.php | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/includes/class-wc-install.php b/includes/class-wc-install.php index d180b343692..76df55426b5 100644 --- a/includes/class-wc-install.php +++ b/includes/class-wc-install.php @@ -375,7 +375,7 @@ class WC_Install { /** * Add the default terms for WC taxonomies - product types and order statuses. Modify this at your own risk. */ - private static function create_terms() { + public static function create_terms() { $taxonomies = array( 'product_type' => array( 'simple', diff --git a/includes/wc-update-functions.php b/includes/wc-update-functions.php index 8a6a10ee2f2..2972a3f3650 100644 --- a/includes/wc-update-functions.php +++ b/includes/wc-update-functions.php @@ -1040,6 +1040,8 @@ function wc_update_300_settings() { function wc_update_300_product_visibility() { global $wpdb; + WC_Install::create_terms(); + if ( $featured_term = get_term_by( 'name', 'featured', 'product_visibility' ) ) { $wpdb->query( $wpdb->prepare( "INSERT INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_featured' AND meta_value = 'yes';", $featured_term->term_id ) ); } From 9260babfba38c05ae35e106d13c67fd6317ec9c2 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 27 Mar 2017 12:11:08 +0100 Subject: [PATCH 141/525] Fix end date when no date is set --- includes/admin/reports/class-wc-admin-report.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/includes/admin/reports/class-wc-admin-report.php b/includes/admin/reports/class-wc-admin-report.php index 241ab9a8c0d..13ee20ab597 100644 --- a/includes/admin/reports/class-wc-admin-report.php +++ b/includes/admin/reports/class-wc-admin-report.php @@ -514,10 +514,11 @@ class WC_Admin_Report { case 'custom' : $this->start_date = strtotime( sanitize_text_field( $_GET['start_date'] ) ); - $this->end_date = strtotime( 'midnight', strtotime( sanitize_text_field( $_GET['end_date'] ) ) ); - if ( ! $this->end_date ) { - $this->end_date = current_time( 'timestamp' ); + if ( empty( $_GET['end_date'] ) ) { + $this->end_date = strtotime( 'midnight', current_time( 'timestamp' ) ); + } else { + $this->end_date = strtotime( 'midnight', strtotime( sanitize_text_field( $_GET['end_date'] ) ) ); } $interval = 0; From 7202ebdb4a060c04401463b1889cb33ca0fb8297 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 27 Mar 2017 12:18:09 +0100 Subject: [PATCH 142/525] Remove shipping from net sales Fixes #13777 --- includes/admin/reports/class-wc-report-sales-by-date.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/includes/admin/reports/class-wc-report-sales-by-date.php b/includes/admin/reports/class-wc-report-sales-by-date.php index eb82290e65e..f838d7c0515 100644 --- a/includes/admin/reports/class-wc-report-sales-by-date.php +++ b/includes/admin/reports/class-wc-report-sales-by-date.php @@ -325,9 +325,10 @@ class WC_Report_Sales_By_Date extends WC_Admin_Report { $this->report_data->total_shipping = wc_format_decimal( array_sum( wp_list_pluck( $this->report_data->orders, 'total_shipping' ) ) - $this->report_data->total_shipping_refunded, 2 ); $this->report_data->total_shipping_tax = wc_format_decimal( array_sum( wp_list_pluck( $this->report_data->orders, 'total_shipping_tax' ) ) - $this->report_data->total_shipping_tax_refunded, 2 ); - // Total the refunds and sales amounts. Sales subract refunds. Note - sales also includes shipping costs. + // Total the refunds and sales amounts. Sales subract refunds. Note - total_sales also includes shipping costs. $this->report_data->total_sales = wc_format_decimal( array_sum( wp_list_pluck( $this->report_data->orders, 'total_sales' ) ) - $this->report_data->total_refunds, 2 ); - $this->report_data->net_sales = wc_format_decimal( $this->report_data->total_sales - $this->report_data->total_tax - $this->report_data->total_shipping_tax, 2 ); + $this->report_data->net_sales = wc_format_decimal( $this->report_data->total_sales - $this->report_data->total_shipping - $this->report_data->total_tax - $this->report_data->total_shipping_tax, 2 ); + // Calculate average based on net $this->report_data->average_sales = wc_format_decimal( $this->report_data->net_sales / ( $this->chart_interval + 1 ), 2 ); $this->report_data->average_total_sales = wc_format_decimal( $this->report_data->total_sales / ( $this->chart_interval + 1 ), 2 ); From 673aa5f5bb5ee66cedd104f2888bf2750fd75866 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 27 Mar 2017 17:10:21 +0100 Subject: [PATCH 143/525] Change zoom mode on touch devices Fixes #13775 --- assets/js/frontend/single-product.js | 12 +++++++++--- assets/js/frontend/single-product.min.js | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/assets/js/frontend/single-product.js b/assets/js/frontend/single-product.js index 0cdc1122cd6..c7a9993e257 100644 --- a/assets/js/frontend/single-product.js +++ b/assets/js/frontend/single-product.js @@ -176,10 +176,16 @@ jQuery( function( $ ) { // But only zoom if the img is larger than its container. if ( zoomEnabled ) { - zoomTarget.trigger( 'zoom.destroy' ); - zoomTarget.zoom( { + var zoom_options = { touch: false - } ); + }; + + if ( 'ontouchstart' in window ) { + zoom_options.on = 'click'; + } + + zoomTarget.trigger( 'zoom.destroy' ); + zoomTarget.zoom( zoom_options ); } }; diff --git a/assets/js/frontend/single-product.min.js b/assets/js/frontend/single-product.min.js index e9abc8f78e7..4faf3e25592 100644 --- a/assets/js/frontend/single-product.min.js +++ b/assets/js/frontend/single-product.min.js @@ -1 +1 @@ -jQuery(function(a){if("undefined"==typeof wc_single_product_params)return!1;a("body").on("init",".wc-tabs-wrapper, .woocommerce-tabs",function(){a(".wc-tab, .woocommerce-tabs .panel:not(.panel .panel)").hide();var b=window.location.hash,c=window.location.href,d=a(this).find(".wc-tabs, ul.tabs").first();b.toLowerCase().indexOf("comment-")>=0||"#reviews"===b||"#tab-reviews"===b?d.find("li.reviews_tab a").click():c.indexOf("comment-page-")>0||c.indexOf("cpage=")>0?d.find("li.reviews_tab a").click():d.find("li:first a").click()}).on("click",".wc-tabs li a, ul.tabs li a",function(b){b.preventDefault();var c=a(this),d=c.closest(".wc-tabs-wrapper, .woocommerce-tabs"),e=d.find(".wc-tabs, ul.tabs");e.find("li").removeClass("active"),d.find(".wc-tab, .panel:not(.panel .panel)").hide(),c.closest("li").addClass("active"),d.find(c.attr("href")).show()}).on("click","a.woocommerce-review-link",function(){return a(".reviews_tab a").click(),!0}).on("init","#rating",function(){a("#rating").hide().before('

    12345

    ')}).on("click","#respond p.stars a",function(){var b=a(this),c=a(this).closest("#respond").find("#rating"),d=a(this).closest(".stars");return c.val(b.text()),b.siblings("a").removeClass("active"),b.addClass("active"),d.addClass("selected"),!1}).on("click","#respond #submit",function(){var b=a(this).closest("#respond").find("#rating"),c=b.val();if(b.length>0&&!c&&"yes"===wc_single_product_params.review_rating_required)return window.alert(wc_single_product_params.i18n_required_rating_text),!1}),a(".wc-tabs-wrapper, .woocommerce-tabs, #rating").trigger("init");var b=function(b,c){this.$target=b,this.$images=a(".woocommerce-product-gallery__image",b),0!==this.$images.length&&(b.data("product_gallery",this),this.flexslider_enabled=a.isFunction(a.fn.flexslider)&&wc_single_product_params.flexslider_enabled,this.zoom_enabled=a.isFunction(a.fn.zoom)&&wc_single_product_params.zoom_enabled,this.photoswipe_enabled="undefined"!=typeof PhotoSwipe&&wc_single_product_params.photoswipe_enabled,c&&(this.flexslider_enabled=!1!==c.photoswipe_enabled&&this.flexslider_enabled,this.zoom_enabled=!1!==c.zoom_enabled&&this.zoom_enabled,this.photoswipe_enabled=!1!==c.photoswipe_enabled&&this.photoswipe_enabled),this.initFlexslider=this.initFlexslider.bind(this),this.initZoom=this.initZoom.bind(this),this.initPhotoswipe=this.initPhotoswipe.bind(this),this.onResetSlidePosition=this.onResetSlidePosition.bind(this),this.getGalleryItems=this.getGalleryItems.bind(this),this.openPhotoswipe=this.openPhotoswipe.bind(this),this.flexslider_enabled&&(this.initFlexslider(),b.on("woocommerce_gallery_reset_slide_position",this.onResetSlidePosition)),this.zoom_enabled&&(this.initZoom(),b.on("woocommerce_gallery_init_zoom",this.initZoom)),this.photoswipe_enabled&&this.initPhotoswipe())};b.prototype.initFlexslider=function(){var b=this.$images;this.$target.flexslider({selector:".woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image",animation:wc_single_product_params.flexslider.animation,smoothHeight:wc_single_product_params.flexslider.smoothHeight,directionNav:wc_single_product_params.flexslider.directionNav,controlNav:wc_single_product_params.flexslider.controlNav,slideshow:wc_single_product_params.flexslider.slideshow,animationSpeed:wc_single_product_params.flexslider.animationSpeed,animationLoop:wc_single_product_params.flexslider.animationLoop,start:function(){var c=0;b.each(function(){var b=a(this).height();b>c&&(c=b)}),b.each(function(){a(this).css("min-height",c)})}})},b.prototype.initZoom=function(){var b=this.$images,c=this.$target.width(),d=!1;this.flexslider_enabled||(b=b.first()),a(b).each(function(b,e){var f=a(e).find("img");if(f.attr("width")>c)return d=!0,!1}),d&&(b.trigger("zoom.destroy"),b.zoom({touch:!1}))},b.prototype.initPhotoswipe=function(){this.zoom_enabled&&this.$images.length>0&&(this.$target.prepend('🔍'),this.$target.on("click",".woocommerce-product-gallery__trigger",this.openPhotoswipe)),this.$target.on("click",".woocommerce-product-gallery__image a",this.openPhotoswipe)},b.prototype.onResetSlidePosition=function(){this.$target.flexslider(0)},b.prototype.getGalleryItems=function(){var b=this.$images,c=[];return b.length>0&&b.each(function(b,d){var e=a(d).find("img"),f=e.attr("data-large_image"),g=e.attr("data-large_image_width"),h=e.attr("data-large_image_height"),i={src:f,w:g,h:h,title:e.attr("title")};c.push(i)}),c},b.prototype.openPhotoswipe=function(b){b.preventDefault();var c,d=a(".pswp")[0],e=this.getGalleryItems(),f=a(b.target);c=f.is(".woocommerce-product-gallery__trigger")?this.$target.find(".flex-active-slide"):f.closest(".woocommerce-product-gallery__image");var g={index:a(c).index(),shareEl:!1,closeOnScroll:!1,history:!1,hideAnimationDuration:0,showAnimationDuration:0},h=new PhotoSwipe(d,PhotoSwipeUI_Default,e,g);h.init()},a.fn.wc_product_gallery=function(a){return new b(this,a),this},a(".woocommerce-product-gallery").each(function(){a(this).wc_product_gallery()})}); \ No newline at end of file +jQuery(function(a){if("undefined"==typeof wc_single_product_params)return!1;a("body").on("init",".wc-tabs-wrapper, .woocommerce-tabs",function(){a(".wc-tab, .woocommerce-tabs .panel:not(.panel .panel)").hide();var b=window.location.hash,c=window.location.href,d=a(this).find(".wc-tabs, ul.tabs").first();b.toLowerCase().indexOf("comment-")>=0||"#reviews"===b||"#tab-reviews"===b?d.find("li.reviews_tab a").click():c.indexOf("comment-page-")>0||c.indexOf("cpage=")>0?d.find("li.reviews_tab a").click():d.find("li:first a").click()}).on("click",".wc-tabs li a, ul.tabs li a",function(b){b.preventDefault();var c=a(this),d=c.closest(".wc-tabs-wrapper, .woocommerce-tabs"),e=d.find(".wc-tabs, ul.tabs");e.find("li").removeClass("active"),d.find(".wc-tab, .panel:not(.panel .panel)").hide(),c.closest("li").addClass("active"),d.find(c.attr("href")).show()}).on("click","a.woocommerce-review-link",function(){return a(".reviews_tab a").click(),!0}).on("init","#rating",function(){a("#rating").hide().before('

    12345

    ')}).on("click","#respond p.stars a",function(){var b=a(this),c=a(this).closest("#respond").find("#rating"),d=a(this).closest(".stars");return c.val(b.text()),b.siblings("a").removeClass("active"),b.addClass("active"),d.addClass("selected"),!1}).on("click","#respond #submit",function(){var b=a(this).closest("#respond").find("#rating"),c=b.val();if(b.length>0&&!c&&"yes"===wc_single_product_params.review_rating_required)return window.alert(wc_single_product_params.i18n_required_rating_text),!1}),a(".wc-tabs-wrapper, .woocommerce-tabs, #rating").trigger("init");var b=function(b,c){this.$target=b,this.$images=a(".woocommerce-product-gallery__image",b),0!==this.$images.length&&(b.data("product_gallery",this),this.flexslider_enabled=a.isFunction(a.fn.flexslider)&&wc_single_product_params.flexslider_enabled,this.zoom_enabled=a.isFunction(a.fn.zoom)&&wc_single_product_params.zoom_enabled,this.photoswipe_enabled="undefined"!=typeof PhotoSwipe&&wc_single_product_params.photoswipe_enabled,c&&(this.flexslider_enabled=!1!==c.photoswipe_enabled&&this.flexslider_enabled,this.zoom_enabled=!1!==c.zoom_enabled&&this.zoom_enabled,this.photoswipe_enabled=!1!==c.photoswipe_enabled&&this.photoswipe_enabled),this.initFlexslider=this.initFlexslider.bind(this),this.initZoom=this.initZoom.bind(this),this.initPhotoswipe=this.initPhotoswipe.bind(this),this.onResetSlidePosition=this.onResetSlidePosition.bind(this),this.getGalleryItems=this.getGalleryItems.bind(this),this.openPhotoswipe=this.openPhotoswipe.bind(this),this.flexslider_enabled&&(this.initFlexslider(),b.on("woocommerce_gallery_reset_slide_position",this.onResetSlidePosition)),this.zoom_enabled&&(this.initZoom(),b.on("woocommerce_gallery_init_zoom",this.initZoom)),this.photoswipe_enabled&&this.initPhotoswipe())};b.prototype.initFlexslider=function(){var b=this.$images;this.$target.flexslider({selector:".woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image",animation:wc_single_product_params.flexslider.animation,smoothHeight:wc_single_product_params.flexslider.smoothHeight,directionNav:wc_single_product_params.flexslider.directionNav,controlNav:wc_single_product_params.flexslider.controlNav,slideshow:wc_single_product_params.flexslider.slideshow,animationSpeed:wc_single_product_params.flexslider.animationSpeed,animationLoop:wc_single_product_params.flexslider.animationLoop,start:function(){var c=0;b.each(function(){var b=a(this).height();b>c&&(c=b)}),b.each(function(){a(this).css("min-height",c)})}})},b.prototype.initZoom=function(){var b=this.$images,c=this.$target.width(),d=!1;if(this.flexslider_enabled||(b=b.first()),a(b).each(function(b,e){var f=a(e).find("img");if(f.attr("width")>c)return d=!0,!1}),d){var e={touch:!1};"ontouchstart"in window&&(e.on="click"),b.trigger("zoom.destroy"),b.zoom(e)}},b.prototype.initPhotoswipe=function(){this.zoom_enabled&&this.$images.length>0&&(this.$target.prepend('🔍'),this.$target.on("click",".woocommerce-product-gallery__trigger",this.openPhotoswipe)),this.$target.on("click",".woocommerce-product-gallery__image a",this.openPhotoswipe)},b.prototype.onResetSlidePosition=function(){this.$target.flexslider(0)},b.prototype.getGalleryItems=function(){var b=this.$images,c=[];return b.length>0&&b.each(function(b,d){var e=a(d).find("img"),f=e.attr("data-large_image"),g=e.attr("data-large_image_width"),h=e.attr("data-large_image_height"),i={src:f,w:g,h:h,title:e.attr("title")};c.push(i)}),c},b.prototype.openPhotoswipe=function(b){b.preventDefault();var c,d=a(".pswp")[0],e=this.getGalleryItems(),f=a(b.target);c=f.is(".woocommerce-product-gallery__trigger")?this.$target.find(".flex-active-slide"):f.closest(".woocommerce-product-gallery__image");var g={index:a(c).index(),shareEl:!1,closeOnScroll:!1,history:!1,hideAnimationDuration:0,showAnimationDuration:0},h=new PhotoSwipe(d,PhotoSwipeUI_Default,e,g);h.init()},a.fn.wc_product_gallery=function(a){return new b(this,a),this},a(".woocommerce-product-gallery").each(function(){a(this).wc_product_gallery()})}); \ No newline at end of file From be45bffd451acb27e058792e4d62c6172794b028 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 27 Mar 2017 17:27:42 +0100 Subject: [PATCH 144/525] ignore duplicates --- includes/wc-update-functions.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/includes/wc-update-functions.php b/includes/wc-update-functions.php index 2972a3f3650..32ee46c0b63 100644 --- a/includes/wc-update-functions.php +++ b/includes/wc-update-functions.php @@ -1043,39 +1043,39 @@ function wc_update_300_product_visibility() { WC_Install::create_terms(); if ( $featured_term = get_term_by( 'name', 'featured', 'product_visibility' ) ) { - $wpdb->query( $wpdb->prepare( "INSERT INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_featured' AND meta_value = 'yes';", $featured_term->term_id ) ); + $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_featured' AND meta_value = 'yes';", $featured_term->term_id ) ); } if ( $exclude_search_term = get_term_by( 'name', 'exclude-from-search', 'product_visibility' ) ) { - $wpdb->query( $wpdb->prepare( "INSERT INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_visibility' AND meta_value IN ('hidden', 'catalog');", $exclude_search_term->term_id ) ); + $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_visibility' AND meta_value IN ('hidden', 'catalog');", $exclude_search_term->term_id ) ); } if ( $exclude_catalog_term = get_term_by( 'name', 'exclude-from-catalog', 'product_visibility' ) ) { - $wpdb->query( $wpdb->prepare( "INSERT INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_visibility' AND meta_value IN ('hidden', 'search');", $exclude_catalog_term->term_id ) ); + $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_visibility' AND meta_value IN ('hidden', 'search');", $exclude_catalog_term->term_id ) ); } if ( $outofstock_term = get_term_by( 'name', 'outofstock', 'product_visibility' ) ) { - $wpdb->query( $wpdb->prepare( "INSERT INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_stock_status' AND meta_value = 'outofstock';", $outofstock_term->term_id ) ); + $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_stock_status' AND meta_value = 'outofstock';", $outofstock_term->term_id ) ); } if ( $rating_term = get_term_by( 'name', 'rated-1', 'product_visibility' ) ) { - $wpdb->query( $wpdb->prepare( "INSERT INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_wc_average_rating' AND ROUND( meta_value ) = 1;", $rating_term->term_id ) ); + $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_wc_average_rating' AND ROUND( meta_value ) = 1;", $rating_term->term_id ) ); } if ( $rating_term = get_term_by( 'name', 'rated-2', 'product_visibility' ) ) { - $wpdb->query( $wpdb->prepare( "INSERT INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_wc_average_rating' AND ROUND( meta_value ) = 2;", $rating_term->term_id ) ); + $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_wc_average_rating' AND ROUND( meta_value ) = 2;", $rating_term->term_id ) ); } if ( $rating_term = get_term_by( 'name', 'rated-3', 'product_visibility' ) ) { - $wpdb->query( $wpdb->prepare( "INSERT INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_wc_average_rating' AND ROUND( meta_value ) = 3;", $rating_term->term_id ) ); + $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_wc_average_rating' AND ROUND( meta_value ) = 3;", $rating_term->term_id ) ); } if ( $rating_term = get_term_by( 'name', 'rated-4', 'product_visibility' ) ) { - $wpdb->query( $wpdb->prepare( "INSERT INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_wc_average_rating' AND ROUND( meta_value ) = 4;", $rating_term->term_id ) ); + $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_wc_average_rating' AND ROUND( meta_value ) = 4;", $rating_term->term_id ) ); } if ( $rating_term = get_term_by( 'name', 'rated-5', 'product_visibility' ) ) { - $wpdb->query( $wpdb->prepare( "INSERT INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_wc_average_rating' AND ROUND( meta_value ) = 5;", $rating_term->term_id ) ); + $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_wc_average_rating' AND ROUND( meta_value ) = 5;", $rating_term->term_id ) ); } } From 57f733388cc700aa224fe6fd9f8bfd9826b85c16 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 27 Mar 2017 17:32:00 +0100 Subject: [PATCH 145/525] Unused variable --- includes/class-wc-query.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/includes/class-wc-query.php b/includes/class-wc-query.php index ad05e3d6c0a..66127445711 100644 --- a/includes/class-wc-query.php +++ b/includes/class-wc-query.php @@ -563,9 +563,8 @@ class WC_Query { } } - $product_visibility_terms = wc_get_product_visibility_term_ids(); + $product_visibility_terms = wc_get_product_visibility_term_ids(); $product_visibility_not_in = array( is_search() && $main_query ? $product_visibility_terms['exclude-from-search'] : $product_visibility_terms['exclude-from-catalog'] ); - $product_visibility_in = array(); // Hide out of stock products. if ( 'yes' === get_option( 'woocommerce_hide_out_of_stock_items' ) ) { From 89128da8ba1e02a549c2ef04fe468bee7829fa5a Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Mon, 27 Mar 2017 11:52:03 -0700 Subject: [PATCH 146/525] Fix child_has_dimensions --- ...ass-wc-product-variable-data-store-cpt.php | 4 +-- tests/unit-tests/product/data-store.php | 31 +++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/includes/data-stores/class-wc-product-variable-data-store-cpt.php b/includes/data-stores/class-wc-product-variable-data-store-cpt.php index 941f83e732a..3c5cd6949e6 100644 --- a/includes/data-stores/class-wc-product-variable-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-variable-data-store-cpt.php @@ -264,7 +264,7 @@ class WC_Product_Variable_Data_Store_CPT extends WC_Product_Data_Store_CPT imple public function child_has_weight( $product ) { global $wpdb; $children = $product->get_visible_children(); - return $children ? $wpdb->get_var( "SELECT 1 FROM $wpdb->postmeta WHERE meta_key = '_weight' AND meta_value > 0 AND post_id IN ( " . implode( ',', array_map( 'absint', $children ) ) . " )" ) : false; + return $children ? (bool) $wpdb->get_var( "SELECT 1 FROM $wpdb->postmeta WHERE meta_key = '_weight' AND meta_value > 0 AND post_id IN ( " . implode( ',', array_map( 'absint', $children ) ) . " )" ) : false; } /** @@ -277,7 +277,7 @@ class WC_Product_Variable_Data_Store_CPT extends WC_Product_Data_Store_CPT imple public function child_has_dimensions( $product ) { global $wpdb; $children = $product->get_visible_children(); - return $children ? $wpdb->get_var( "SELECT 1 FROM $wpdb->postmeta WHERE meta_key IN ( '_length', '_width', '_height' ) AND post_id IN ( " . implode( ',', array_map( 'absint', $children ) ) . " )" ) : false; + return $children ? (bool) $wpdb->get_var( "SELECT 1 FROM $wpdb->postmeta WHERE meta_key IN ( '_length', '_width', '_height' ) AND meta_value > 0 AND post_id IN ( " . implode( ',', array_map( 'absint', $children ) ) . " )" ) : false; } /** diff --git a/tests/unit-tests/product/data-store.php b/tests/unit-tests/product/data-store.php index f6841753048..472099228da 100644 --- a/tests/unit-tests/product/data-store.php +++ b/tests/unit-tests/product/data-store.php @@ -350,6 +350,37 @@ class WC_Tests_Product_Data_Store extends WC_Unit_Test_Case { $this->assertEquals( 'green', $_attribute['color'] ); } + function test_variable_child_has_dimensions() { + $product = new WC_Product_Variable; + $product->save(); + + $variation = new WC_Product_variation; + $variation->set_parent_id( $product->get_id() ); + $variation->set_width( 10 ); + $variation->save(); + + $product = wc_get_product( $product->get_id() ); + + $store = new WC_Product_Variable_Data_Store_CPT(); + + $this->assertTrue( $store->child_has_dimensions( $product ) ); + } + + function test_variable_child_has_dimensions_no_dimensions() { + $product = new WC_Product_Variable; + $product->save(); + + $variation = new WC_Product_variation; + $variation->set_parent_id( $product->get_id() ); + $variation->save(); + + $product = wc_get_product( $product->get_id() ); + + $store = new WC_Product_Variable_Data_Store_CPT(); + + $this->assertFalse( $store->child_has_dimensions( $product ) ); + } + function test_get_on_sale_products() { $product_store = new WC_Product_Data_Store_CPT(); From 129293ab6f7041a58dbda9472d10862e1cdb7579 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 28 Mar 2017 11:49:27 +0100 Subject: [PATCH 147/525] Remove array filter No args should be null/not set since all args defined by WC have values. Closes #13786 --- .../paypal/includes/class-wc-gateway-paypal-request.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/gateways/paypal/includes/class-wc-gateway-paypal-request.php b/includes/gateways/paypal/includes/class-wc-gateway-paypal-request.php index 62d067be56a..f4e9b9a5e74 100644 --- a/includes/gateways/paypal/includes/class-wc-gateway-paypal-request.php +++ b/includes/gateways/paypal/includes/class-wc-gateway-paypal-request.php @@ -43,7 +43,7 @@ class WC_Gateway_Paypal_Request { * @return string */ public function get_request_url( $order, $sandbox = false ) { - $paypal_args = http_build_query( array_filter( $this->get_paypal_args( $order ) ), '', '&' ); + $paypal_args = http_build_query( $this->get_paypal_args( $order ), '', '&' ); WC_Gateway_Paypal::log( 'PayPal Request Args for order ' . $order->get_order_number() . ': ' . wc_print_r( $paypal_args, true ) ); From f50254be289ad7b2ca7e491ae42ddd5610b6480b Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 28 Mar 2017 12:03:09 +0100 Subject: [PATCH 148/525] Update notice to protect against calls before post type registration Closes #13763 --- includes/wc-order-functions.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/wc-order-functions.php b/includes/wc-order-functions.php index ac7be650419..b54cf34a8a4 100644 --- a/includes/wc-order-functions.php +++ b/includes/wc-order-functions.php @@ -93,8 +93,8 @@ function wc_get_orders( $args ) { * @return WC_Order|WC_Refund */ function wc_get_order( $the_order = false ) { - if ( ! did_action( 'woocommerce_init' ) ) { - wc_doing_it_wrong( __FUNCTION__, __( 'wc_get_order should not be called before the woocommerce_init action.', 'woocommerce' ), '2.5' ); + if ( ! did_action( 'woocommerce_register_post_type' ) ) { + wc_doing_it_wrong( __FUNCTION__, __( 'wc_get_order should not be called before post types are registered (woocommerce_register_post_type action).', 'woocommerce' ), '2.5' ); return false; } return WC()->order_factory->get_order( $the_order ); From b35e4c0cf9f6d0686a865049786c0dc916ce02f5 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 28 Mar 2017 12:30:04 +0100 Subject: [PATCH 149/525] Load values only when not-empty/set Closes #13785 --- includes/class-wc-checkout.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/class-wc-checkout.php b/includes/class-wc-checkout.php index 5aacae2c752..4dd291bc377 100644 --- a/includes/class-wc-checkout.php +++ b/includes/class-wc-checkout.php @@ -981,8 +981,8 @@ class WC_Checkout { } if ( is_callable( array( WC()->customer, "get_$input" ) ) ) { - $value = WC()->customer->{"get_$input"}(); - } else { + $value = WC()->customer->{"get_$input"}() ? WC()->customer->{"get_$input"}() : null; + } elseif ( WC()->customer->meta_exists( $input ) ) { $value = WC()->customer->get_meta( $input, true ); } From b3198d254696391690e62953c1f0df2b55eb8439 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 28 Mar 2017 12:37:17 +0100 Subject: [PATCH 150/525] woocommerce_after_register_post_type action --- includes/class-wc-post-types.php | 2 ++ includes/wc-order-functions.php | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/includes/class-wc-post-types.php b/includes/class-wc-post-types.php index f951954d956..fae40c0ec40 100644 --- a/includes/class-wc-post-types.php +++ b/includes/class-wc-post-types.php @@ -449,6 +449,8 @@ class WC_Post_types { ) ) ); + + do_action( 'woocommerce_after_register_post_type' ); } /** diff --git a/includes/wc-order-functions.php b/includes/wc-order-functions.php index b54cf34a8a4..9f248f8091a 100644 --- a/includes/wc-order-functions.php +++ b/includes/wc-order-functions.php @@ -93,8 +93,8 @@ function wc_get_orders( $args ) { * @return WC_Order|WC_Refund */ function wc_get_order( $the_order = false ) { - if ( ! did_action( 'woocommerce_register_post_type' ) ) { - wc_doing_it_wrong( __FUNCTION__, __( 'wc_get_order should not be called before post types are registered (woocommerce_register_post_type action).', 'woocommerce' ), '2.5' ); + if ( ! did_action( 'woocommerce_after_register_post_type' ) ) { + wc_doing_it_wrong( __FUNCTION__, __( 'wc_get_order should not be called before post types are registered (woocommerce_after_register_post_type action).', 'woocommerce' ), '2.5' ); return false; } return WC()->order_factory->get_order( $the_order ); From 45ab4733d5b30c61706ba933683925482abce2e9 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 28 Mar 2017 12:51:32 +0100 Subject: [PATCH 151/525] sync before test --- tests/unit-tests/product/data-store.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/unit-tests/product/data-store.php b/tests/unit-tests/product/data-store.php index 472099228da..ba60e8ce1a3 100644 --- a/tests/unit-tests/product/data-store.php +++ b/tests/unit-tests/product/data-store.php @@ -360,6 +360,7 @@ class WC_Tests_Product_Data_Store extends WC_Unit_Test_Case { $variation->save(); $product = wc_get_product( $product->get_id() ); + $product->sync( $product ); $store = new WC_Product_Variable_Data_Store_CPT(); @@ -375,6 +376,7 @@ class WC_Tests_Product_Data_Store extends WC_Unit_Test_Case { $variation->save(); $product = wc_get_product( $product->get_id() ); + $product->sync( $product ); $store = new WC_Product_Variable_Data_Store_CPT(); From 55ba115ac535493abd6ab6d08dd689afdef82511 Mon Sep 17 00:00:00 2001 From: Cesar Rodas Date: Tue, 28 Mar 2017 08:47:01 -0400 Subject: [PATCH 152/525] Make sure the changes includes either $name or $order_id --- includes/data-stores/abstract-wc-order-item-type-data-store.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/data-stores/abstract-wc-order-item-type-data-store.php b/includes/data-stores/abstract-wc-order-item-type-data-store.php index 1e7105e3ee5..13c05c45ab5 100644 --- a/includes/data-stores/abstract-wc-order-item-type-data-store.php +++ b/includes/data-stores/abstract-wc-order-item-type-data-store.php @@ -61,7 +61,7 @@ abstract class Abstract_WC_Order_Item_Type_Data_Store extends WC_Data_Store_WP i $changes = $item->get_changes(); - if ( ! empty( $changes ) ) { + if ( array_intersect( array( 'name', 'order_id' ), array_keys( $changes ) ) ) { $wpdb->update( $wpdb->prefix . 'woocommerce_order_items', array( 'order_item_name' => $item->get_name(), 'order_item_type' => $item->get_type(), From 0694312cc9b1f75f9c4e1e84442109eb200bbf0e Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 28 Mar 2017 13:51:19 +0100 Subject: [PATCH 153/525] Clear parent transients on variation save --- .../class-wc-product-variation-data-store-cpt.php | 5 +++++ tests/unit-tests/product/data-store.php | 2 -- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/includes/data-stores/class-wc-product-variation-data-store-cpt.php b/includes/data-stores/class-wc-product-variation-data-store-cpt.php index bb3672b7b96..09c1b25be12 100644 --- a/includes/data-stores/class-wc-product-variation-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-variation-data-store-cpt.php @@ -155,6 +155,11 @@ class WC_Product_Variation_Data_Store_CPT extends WC_Product_Data_Store_CPT impl ) ); } + if ( isset( $changes['parent_id'] ) ) { + delete_transient( 'wc_product_children_' . $product->get_parent_id( 'edit' ) ); + delete_transient( 'wc_product_children_' . $this->data['parent_id'] ); + } + $this->update_post_meta( $product ); $this->update_terms( $product ); $this->update_attributes( $product ); diff --git a/tests/unit-tests/product/data-store.php b/tests/unit-tests/product/data-store.php index ba60e8ce1a3..472099228da 100644 --- a/tests/unit-tests/product/data-store.php +++ b/tests/unit-tests/product/data-store.php @@ -360,7 +360,6 @@ class WC_Tests_Product_Data_Store extends WC_Unit_Test_Case { $variation->save(); $product = wc_get_product( $product->get_id() ); - $product->sync( $product ); $store = new WC_Product_Variable_Data_Store_CPT(); @@ -376,7 +375,6 @@ class WC_Tests_Product_Data_Store extends WC_Unit_Test_Case { $variation->save(); $product = wc_get_product( $product->get_id() ); - $product->sync( $product ); $store = new WC_Product_Variable_Data_Store_CPT(); From 5f573b87779eb5559c95c957c1c1e9b5110eea2a Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 28 Mar 2017 14:01:02 +0100 Subject: [PATCH 154/525] Clear parent transient on variation creation --- .../data-stores/class-wc-product-variation-data-store-cpt.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/includes/data-stores/class-wc-product-variation-data-store-cpt.php b/includes/data-stores/class-wc-product-variation-data-store-cpt.php index 09c1b25be12..a8645e10e6b 100644 --- a/includes/data-stores/class-wc-product-variation-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-variation-data-store-cpt.php @@ -102,7 +102,7 @@ class WC_Product_Variation_Data_Store_CPT extends WC_Product_Data_Store_CPT impl 'post_author' => get_current_user_id(), 'post_title' => $this->generate_product_title( $product ), 'post_content' => '', - 'post_parent' => $product->get_parent_id(), + 'post_parent' => $product->get_parent_id( 'edit' ), 'comment_status' => 'closed', 'ping_status' => 'closed', 'menu_order' => $product->get_menu_order(), @@ -113,6 +113,8 @@ class WC_Product_Variation_Data_Store_CPT extends WC_Product_Data_Store_CPT impl if ( $id && ! is_wp_error( $id ) ) { $product->set_id( $id ); + delete_transient( 'wc_product_children_' . $product->get_parent_id( 'edit' ) ); + $this->update_post_meta( $product, true ); $this->update_terms( $product, true ); $this->update_attributes( $product, true ); From e575904fbf59dce7abebb501075fa771cbcaf9c1 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 28 Mar 2017 14:32:46 +0100 Subject: [PATCH 155/525] Revert "Clear parent transient on variation creation" This reverts commit 5f573b87779eb5559c95c957c1c1e9b5110eea2a. --- .../data-stores/class-wc-product-variation-data-store-cpt.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/includes/data-stores/class-wc-product-variation-data-store-cpt.php b/includes/data-stores/class-wc-product-variation-data-store-cpt.php index a8645e10e6b..09c1b25be12 100644 --- a/includes/data-stores/class-wc-product-variation-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-variation-data-store-cpt.php @@ -102,7 +102,7 @@ class WC_Product_Variation_Data_Store_CPT extends WC_Product_Data_Store_CPT impl 'post_author' => get_current_user_id(), 'post_title' => $this->generate_product_title( $product ), 'post_content' => '', - 'post_parent' => $product->get_parent_id( 'edit' ), + 'post_parent' => $product->get_parent_id(), 'comment_status' => 'closed', 'ping_status' => 'closed', 'menu_order' => $product->get_menu_order(), @@ -113,8 +113,6 @@ class WC_Product_Variation_Data_Store_CPT extends WC_Product_Data_Store_CPT impl if ( $id && ! is_wp_error( $id ) ) { $product->set_id( $id ); - delete_transient( 'wc_product_children_' . $product->get_parent_id( 'edit' ) ); - $this->update_post_meta( $product, true ); $this->update_terms( $product, true ); $this->update_attributes( $product, true ); From 29d6f69a87328230b50839768447d72677f45af7 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 28 Mar 2017 14:32:52 +0100 Subject: [PATCH 156/525] Revert "Clear parent transients on variation save" This reverts commit 0694312cc9b1f75f9c4e1e84442109eb200bbf0e. --- .../class-wc-product-variation-data-store-cpt.php | 5 ----- tests/unit-tests/product/data-store.php | 2 ++ 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/includes/data-stores/class-wc-product-variation-data-store-cpt.php b/includes/data-stores/class-wc-product-variation-data-store-cpt.php index 09c1b25be12..bb3672b7b96 100644 --- a/includes/data-stores/class-wc-product-variation-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-variation-data-store-cpt.php @@ -155,11 +155,6 @@ class WC_Product_Variation_Data_Store_CPT extends WC_Product_Data_Store_CPT impl ) ); } - if ( isset( $changes['parent_id'] ) ) { - delete_transient( 'wc_product_children_' . $product->get_parent_id( 'edit' ) ); - delete_transient( 'wc_product_children_' . $this->data['parent_id'] ); - } - $this->update_post_meta( $product ); $this->update_terms( $product ); $this->update_attributes( $product ); diff --git a/tests/unit-tests/product/data-store.php b/tests/unit-tests/product/data-store.php index 472099228da..ba60e8ce1a3 100644 --- a/tests/unit-tests/product/data-store.php +++ b/tests/unit-tests/product/data-store.php @@ -360,6 +360,7 @@ class WC_Tests_Product_Data_Store extends WC_Unit_Test_Case { $variation->save(); $product = wc_get_product( $product->get_id() ); + $product->sync( $product ); $store = new WC_Product_Variable_Data_Store_CPT(); @@ -375,6 +376,7 @@ class WC_Tests_Product_Data_Store extends WC_Unit_Test_Case { $variation->save(); $product = wc_get_product( $product->get_id() ); + $product->sync( $product ); $store = new WC_Product_Variable_Data_Store_CPT(); From 9aabe1ff44e325730325b47ca09035d93e57f55e Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 28 Mar 2017 14:32:56 +0100 Subject: [PATCH 157/525] Revert "sync before test" This reverts commit 45ab4733d5b30c61706ba933683925482abce2e9. --- tests/unit-tests/product/data-store.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/unit-tests/product/data-store.php b/tests/unit-tests/product/data-store.php index ba60e8ce1a3..472099228da 100644 --- a/tests/unit-tests/product/data-store.php +++ b/tests/unit-tests/product/data-store.php @@ -360,7 +360,6 @@ class WC_Tests_Product_Data_Store extends WC_Unit_Test_Case { $variation->save(); $product = wc_get_product( $product->get_id() ); - $product->sync( $product ); $store = new WC_Product_Variable_Data_Store_CPT(); @@ -376,7 +375,6 @@ class WC_Tests_Product_Data_Store extends WC_Unit_Test_Case { $variation->save(); $product = wc_get_product( $product->get_id() ); - $product->sync( $product ); $store = new WC_Product_Variable_Data_Store_CPT(); From 3c008b8a5608c4cccd9c600a769f070f8f1c9d0a Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 28 Mar 2017 17:26:58 +0100 Subject: [PATCH 158/525] Check for null --- .../data-stores/class-wc-product-variable-data-store-cpt.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/data-stores/class-wc-product-variable-data-store-cpt.php b/includes/data-stores/class-wc-product-variable-data-store-cpt.php index 3c5cd6949e6..237ef7ebf47 100644 --- a/includes/data-stores/class-wc-product-variable-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-variable-data-store-cpt.php @@ -264,7 +264,7 @@ class WC_Product_Variable_Data_Store_CPT extends WC_Product_Data_Store_CPT imple public function child_has_weight( $product ) { global $wpdb; $children = $product->get_visible_children(); - return $children ? (bool) $wpdb->get_var( "SELECT 1 FROM $wpdb->postmeta WHERE meta_key = '_weight' AND meta_value > 0 AND post_id IN ( " . implode( ',', array_map( 'absint', $children ) ) . " )" ) : false; + return $children ? null !== $wpdb->get_var( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_weight' AND meta_value > 0 AND post_id IN ( " . implode( ',', array_map( 'absint', $children ) ) . " )" ) : false; } /** @@ -277,7 +277,7 @@ class WC_Product_Variable_Data_Store_CPT extends WC_Product_Data_Store_CPT imple public function child_has_dimensions( $product ) { global $wpdb; $children = $product->get_visible_children(); - return $children ? (bool) $wpdb->get_var( "SELECT 1 FROM $wpdb->postmeta WHERE meta_key IN ( '_length', '_width', '_height' ) AND meta_value > 0 AND post_id IN ( " . implode( ',', array_map( 'absint', $children ) ) . " )" ) : false; + return $children ? null !== $wpdb->get_var( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key IN ( '_length', '_width', '_height' ) AND meta_value > 0 AND post_id IN ( " . implode( ',', array_map( 'absint', $children ) ) . " )" ) : false; } /** From 54c353d67fc95cd59e0ddd7d652c6d9f87ae8817 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 28 Mar 2017 14:34:41 -0300 Subject: [PATCH 159/525] [REST API] Fixed taxonomies query arguments. Fixed the follow error: PHP Warning: explode() expects parameter 2 to be string, array given in includes/api/v1/class-wc-rest-products-controller.php on line 156 Error caused since terms are sanitized by wp_parse_id_list() that already creates an array. Closes #13790 --- includes/api/v1/class-wc-rest-products-controller.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/includes/api/v1/class-wc-rest-products-controller.php b/includes/api/v1/class-wc-rest-products-controller.php index 8b7a499ad85..b78f03c5ad6 100644 --- a/includes/api/v1/class-wc-rest-products-controller.php +++ b/includes/api/v1/class-wc-rest-products-controller.php @@ -152,8 +152,6 @@ class WC_REST_Products_V1_Controller extends WC_REST_Posts_Controller { // Set tax_query for each passed arg. foreach ( $taxonomies as $taxonomy => $key ) { if ( ! empty( $request[ $key ] ) ) { - $terms = explode( ',', $request[ $key ] ); - $tax_query[] = array( 'taxonomy' => $taxonomy, 'field' => 'term_id', From afccb22f5879be9068ae909bd68c1c853818f00d Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 28 Mar 2017 14:44:11 -0300 Subject: [PATCH 160/525] [REST API] Fixed all products v1 query parameters --- .../v1/class-wc-rest-products-controller.php | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/includes/api/v1/class-wc-rest-products-controller.php b/includes/api/v1/class-wc-rest-products-controller.php index b78f03c5ad6..8414fc793a4 100644 --- a/includes/api/v1/class-wc-rest-products-controller.php +++ b/includes/api/v1/class-wc-rest-products-controller.php @@ -155,31 +155,27 @@ class WC_REST_Products_V1_Controller extends WC_REST_Posts_Controller { $tax_query[] = array( 'taxonomy' => $taxonomy, 'field' => 'term_id', - 'terms' => $terms, + 'terms' => $request[ $key ], ); } } // Filter product type by slug. if ( ! empty( $request['type'] ) ) { - $terms = explode( ',', $request['type'] ); - $tax_query[] = array( 'taxonomy' => 'product_type', 'field' => 'slug', - 'terms' => $terms, + 'terms' => $request['type'], ); } // Filter by attribute and term. if ( ! empty( $request['attribute'] ) && ! empty( $request['attribute_term'] ) ) { - if ( in_array( $request['attribute'], wc_get_attribute_taxonomy_names() ) ) { - $terms = explode( ',', $request['attribute_term'] ); - + if ( in_array( $request['attribute'], wc_get_attribute_taxonomy_names(), true ) ) { $tax_query[] = array( 'taxonomy' => $request['attribute'], 'field' => 'term_id', - 'terms' => $terms, + 'terms' => $request['attribute_term'], ); } } @@ -190,15 +186,17 @@ class WC_REST_Products_V1_Controller extends WC_REST_Posts_Controller { // Filter by sku. if ( ! empty( $request['sku'] ) ) { - if ( ! empty( $args['meta_query'] ) ) { - $args['meta_query'] = array(); + $skus = explode( ',', $request['sku'] ); + // Include the current string as a SKU too. + if ( 1 < count( $skus ) ) { + $skus[] = $request['sku']; } - $args['meta_query'][] = array( + $args['meta_query'] = $this->add_meta_query( $args, array( 'key' => '_sku', - 'value' => $request['sku'], - 'compare' => '=', - ); + 'value' => $skus, + 'compare' => 'IN', + ) ); } // Apply all WP_Query filters again. @@ -209,7 +207,7 @@ class WC_REST_Products_V1_Controller extends WC_REST_Posts_Controller { // Force the post_type argument, since it's not a user input variable. if ( ! empty( $request['sku'] ) ) { - $args['post_type'] = $this->get_post_types(); + $args['post_type'] = array( 'product', 'product_variation' ); } else { $args['post_type'] = $this->post_type; } From 6660379f199f6cd961e28cd6936249f2b28f4a09 Mon Sep 17 00:00:00 2001 From: Michael Pretty Date: Tue, 28 Mar 2017 13:52:32 -0400 Subject: [PATCH 161/525] Cleanup of PHPDoc for interfaces, fixes #13808 --- ...wc-abstract-order-data-store-interface.php | 6 ++--- .../class-wc-coupon-data-store-interface.php | 8 +++---- ...class-wc-customer-data-store-interface.php | 6 ++--- .../class-wc-object-data-store-interface.php | 24 +++++++++---------- .../class-wc-order-data-store-interface.php | 8 +++---- ...-wc-payment-token-data-store-interface.php | 11 +++++---- .../class-wc-product-data-store-interface.php | 6 ++--- ...-product-variable-data-store-interface.php | 2 +- ...-wc-shipping-zone-data-store-interface.php | 2 +- 9 files changed, 37 insertions(+), 36 deletions(-) diff --git a/includes/interfaces/class-wc-abstract-order-data-store-interface.php b/includes/interfaces/class-wc-abstract-order-data-store-interface.php index b1ed0b703c7..a511b705661 100644 --- a/includes/interfaces/class-wc-abstract-order-data-store-interface.php +++ b/includes/interfaces/class-wc-abstract-order-data-store-interface.php @@ -26,7 +26,7 @@ interface WC_Abstract_Order_Data_Store_Interface { /** * Remove all line items (products, coupons, shipping, taxes) from the order. * - * @param WC_Order + * @param WC_Order $order * @param string $type Order item type. Default null. */ public function delete_items( $order, $type = null ); @@ -34,7 +34,7 @@ interface WC_Abstract_Order_Data_Store_Interface { /** * Get token ids for an order. * - * @param WC_Order + * @param WC_Order $order * @return array */ public function get_payment_token_ids( $order ); @@ -42,7 +42,7 @@ interface WC_Abstract_Order_Data_Store_Interface { /** * Update token ids for an order. * - * @param WC_Order + * @param WC_Order $order * @param array $token_ids */ public function update_payment_token_ids( $order, $token_ids ); diff --git a/includes/interfaces/class-wc-coupon-data-store-interface.php b/includes/interfaces/class-wc-coupon-data-store-interface.php index 0dcb4839373..d4174ba203b 100644 --- a/includes/interfaces/class-wc-coupon-data-store-interface.php +++ b/includes/interfaces/class-wc-coupon-data-store-interface.php @@ -15,22 +15,22 @@ if ( ! defined( 'ABSPATH' ) ) { interface WC_Coupon_Data_Store_Interface { /** * Increase usage count for current coupon. - * @param WC_Coupon + * @param WC_Coupon &$coupon * @param string $used_by Either user ID or billing email */ public function increase_usage_count( &$coupon, $used_by = '' ); /** * Decrease usage count for current coupon. - * @param WC_Coupon + * @param WC_Coupon &$coupon * @param string $used_by Either user ID or billing email */ public function decrease_usage_count( &$coupon, $used_by = '' ); /** * Get the number of uses for a coupon by user ID. - * @param WC_Coupon - * @param id $user_id + * @param WC_Coupon &$coupon + * @param int $user_id * @return int */ public function get_usage_by_user_id( &$coupon, $user_id ); diff --git a/includes/interfaces/class-wc-customer-data-store-interface.php b/includes/interfaces/class-wc-customer-data-store-interface.php index 163770e823e..7ed1cca6722 100644 --- a/includes/interfaces/class-wc-customer-data-store-interface.php +++ b/includes/interfaces/class-wc-customer-data-store-interface.php @@ -17,7 +17,7 @@ interface WC_Customer_Data_Store_Interface { /** * Gets the customers last order. * - * @param WC_Customer + * @param WC_Customer &$customer * @return WC_Order|false */ public function get_last_order( &$customer ); @@ -25,7 +25,7 @@ interface WC_Customer_Data_Store_Interface { /** * Return the number of orders this customer has. * - * @param WC_Customer + * @param WC_Customer &$customer * @return integer */ public function get_order_count( &$customer ); @@ -33,7 +33,7 @@ interface WC_Customer_Data_Store_Interface { /** * Return how much money this customer has spent. * - * @param WC_Customer + * @param WC_Customer &$customer * @return float */ public function get_total_spent( &$customer ); diff --git a/includes/interfaces/class-wc-object-data-store-interface.php b/includes/interfaces/class-wc-object-data-store-interface.php index 145eefba4ff..50a0e842fcd 100644 --- a/includes/interfaces/class-wc-object-data-store-interface.php +++ b/includes/interfaces/class-wc-object-data-store-interface.php @@ -13,25 +13,25 @@ if ( ! defined( 'ABSPATH' ) ) { interface WC_Object_Data_Store_Interface { /** * Method to create a new record of a WC_Data based object. - * @param WC_Data + * @param WC_Data &$data */ public function create( &$data ); /** * Method to read a record. Creates a new WC_Data based object. - * @param WC_Data + * @param WC_Data &$data */ public function read( &$data ); /** * Updates a record in the database. - * @param WC_Data + * @param WC_Data &$data */ public function update( &$data ); /** * Deletes a record from the database. - * @param WC_Data + * @param WC_Data &$data * @param array $args Array of args to pass to the delete method. * @return bool result */ @@ -39,31 +39,31 @@ interface WC_Object_Data_Store_Interface { /** * Returns an array of meta for an object. - * @param WC_Data + * @param WC_Data &$data * @return array */ public function read_meta( &$data ); /** * Deletes meta based on meta ID. - * @param WC_Data - * @param stdClass (containing at least ->id) + * @param WC_Data &$data + * @param object $meta (containing at least ->id) * @return array */ public function delete_meta( &$data, $meta ); /** * Add new piece of meta. - * @param WC_Data - * @param stdClass (containing ->key and ->value) - * @return meta ID + * @param WC_Data &$data + * @param object $meta (containing ->key and ->value) + * @return int meta ID */ public function add_meta( &$data, $meta ); /** * Update meta. - * @param WC_Data - * @param stdClass (containing ->id, ->key and ->value) + * @param WC_Data &$data + * @param object $meta (containing ->id, ->key and ->value) */ public function update_meta( &$data, $meta ); } diff --git a/includes/interfaces/class-wc-order-data-store-interface.php b/includes/interfaces/class-wc-order-data-store-interface.php index f45c14e45e2..2928aee9651 100644 --- a/includes/interfaces/class-wc-order-data-store-interface.php +++ b/includes/interfaces/class-wc-order-data-store-interface.php @@ -16,7 +16,7 @@ interface WC_Order_Data_Store_Interface { /** * Get amount already refunded. * - * @param WC_Order + * @param WC_Order $order * @return string */ public function get_total_refunded( $order ); @@ -24,7 +24,7 @@ interface WC_Order_Data_Store_Interface { /** * Get the total tax refunded. * - * @param WC_Order + * @param WC_Order $order * @return float */ public function get_total_tax_refunded( $order ); @@ -32,7 +32,7 @@ interface WC_Order_Data_Store_Interface { /** * Get the total shipping refunded. * - * @param WC_Order + * @param WC_Order $order * @return float */ public function get_total_shipping_refunded( $order ); @@ -63,7 +63,7 @@ interface WC_Order_Data_Store_Interface { /** * Get unpaid orders after a certain date, - * @param int timestamp $date + * @param int $date timestamp * @return array */ public function get_unpaid_orders( $date ); diff --git a/includes/interfaces/class-wc-payment-token-data-store-interface.php b/includes/interfaces/class-wc-payment-token-data-store-interface.php index bb40bafefd5..9a878617e8f 100644 --- a/includes/interfaces/class-wc-payment-token-data-store-interface.php +++ b/includes/interfaces/class-wc-payment-token-data-store-interface.php @@ -25,7 +25,7 @@ interface WC_Payment_Token_Data_Store_Interface { /** * Returns an stdObject of a token for a user's default token. * Should contain the fields token_id, gateway_id, token, user_id, type, is_default. - * @param id $user_id + * @param int $user_id * @return object */ public function get_users_default_token( $user_id ); @@ -33,14 +33,14 @@ interface WC_Payment_Token_Data_Store_Interface { /** * Returns an stdObject of a token. * Should contain the fields token_id, gateway_id, token, user_id, type, is_default. - * @param id $token_id + * @param int $token_id * @return object */ public function get_token_by_id( $token_id ); /** * Returns metadata for a specific payment token. - * @param id $token_id + * @param int $token_id * @return array */ public function get_metadata( $token_id ); @@ -49,7 +49,7 @@ interface WC_Payment_Token_Data_Store_Interface { * Get a token's type by ID. * * @since 3.0.0 - * @param id $token_id + * @param int $token_id * @return string */ public function get_token_type_by_id( $token_id ); @@ -58,7 +58,8 @@ interface WC_Payment_Token_Data_Store_Interface { * Update's a tokens default status in the database. Used for quickly * looping through tokens and setting their statuses instead of creating a bunch * of objects. - * @param id $token_id + * @param int $token_id + * @param bool $status * @return string */ public function set_default_status( $token_id, $status = true ); diff --git a/includes/interfaces/class-wc-product-data-store-interface.php b/includes/interfaces/class-wc-product-data-store-interface.php index 2852a0bbd01..2bfd73096db 100644 --- a/includes/interfaces/class-wc-product-data-store-interface.php +++ b/includes/interfaces/class-wc-product-data-store-interface.php @@ -95,7 +95,7 @@ interface WC_Product_Data_Store_Interface { * * Uses queries rather than update_post_meta so we can do this in one query (to avoid stock issues). * - * @param int + * @param int $product_id_with_stock * @param int|null $stock_quantity * @param string $operation set, increase and decrease. */ @@ -107,7 +107,7 @@ interface WC_Product_Data_Store_Interface { * Uses queries rather than update_post_meta so we can do this in one query for performance. * * @since 3.0.0 this supports set, increase and decrease. - * @param int + * @param int $product_id * @param int|null $quantity * @param string $operation set, increase and decrease. */ @@ -115,7 +115,7 @@ interface WC_Product_Data_Store_Interface { /** * Get shipping class ID by slug. - * @param $slug string + * @param string $slug * @return int|false */ public function get_shipping_class_id_by_slug( $slug ); diff --git a/includes/interfaces/class-wc-product-variable-data-store-interface.php b/includes/interfaces/class-wc-product-variable-data-store-interface.php index 33171ce7894..b327abfb4de 100644 --- a/includes/interfaces/class-wc-product-variable-data-store-interface.php +++ b/includes/interfaces/class-wc-product-variable-data-store-interface.php @@ -66,7 +66,7 @@ interface WC_Product_Variable_Data_Store_Interface { * Delete variations of a product. * * @param int $product_id - * @param $force_delete False to trash. + * @param bool $force_delete False to trash. */ public function delete_variations( $product_id, $force_delete = false ); diff --git a/includes/interfaces/class-wc-shipping-zone-data-store-interface.php b/includes/interfaces/class-wc-shipping-zone-data-store-interface.php index 05cc0759456..b488f778b61 100644 --- a/includes/interfaces/class-wc-shipping-zone-data-store-interface.php +++ b/includes/interfaces/class-wc-shipping-zone-data-store-interface.php @@ -23,7 +23,7 @@ interface WC_Shipping_Zone_Data_Store_Interface { /** * Get count of methods for a zone. - * @param int Zone ID + * @param int $zone_id Zone ID * @return int Method Count */ public function get_method_count( $zone_id ); From 0b416439c89311475d51ec76f932972b3b464afc Mon Sep 17 00:00:00 2001 From: Akeda Bagus Date: Wed, 29 Mar 2017 00:58:51 +0700 Subject: [PATCH 162/525] Fixed all typos of all files in includes/ directory. Scanning and fixing were done automatically by codespell, https://github.com/lucasdemarchi/codespell. --- includes/abstracts/abstract-wc-data.php | 4 ++-- includes/abstracts/abstract-wc-rest-controller.php | 2 +- includes/abstracts/abstract-wc-rest-crud-controller.php | 2 +- includes/abstracts/abstract-wc-rest-posts-controller.php | 2 +- includes/abstracts/abstract-wc-rest-terms-controller.php | 2 +- includes/admin/class-wc-admin-settings.php | 2 +- includes/admin/reports/class-wc-report-coupon-usage.php | 4 ++-- includes/admin/reports/class-wc-report-customers.php | 2 +- includes/class-wc-order.php | 2 +- includes/class-wc-tracker.php | 6 +++--- includes/data-stores/class-wc-product-data-store-cpt.php | 2 +- .../paypal/includes/class-wc-gateway-paypal-ipn-handler.php | 4 ++-- .../class-wc-gateway-simplify-commerce.php | 2 +- includes/libraries/class-wc-eval-math.php | 2 +- includes/log-handlers/class-wc-log-handler-file.php | 2 +- .../legacy-flat-rate/class-wc-shipping-legacy-flat-rate.php | 2 +- includes/wc-coupon-functions.php | 2 +- includes/wc-order-functions.php | 2 +- includes/widgets/class-wc-widget-product-tag-cloud.php | 2 +- includes/widgets/class-wc-widget-rating-filter.php | 2 +- 20 files changed, 25 insertions(+), 25 deletions(-) diff --git a/includes/abstracts/abstract-wc-data.php b/includes/abstracts/abstract-wc-data.php index ec60bfbddc1..da57cf3a265 100644 --- a/includes/abstracts/abstract-wc-data.php +++ b/includes/abstracts/abstract-wc-data.php @@ -91,7 +91,7 @@ abstract class WC_Data { protected $cache_group = ''; /** - * Stores additonal meta data. + * Stores additional meta data. * * @since 3.0.0 * @var array @@ -168,7 +168,7 @@ abstract class WC_Data { } /** - * Save should create or update based on object existance. + * Save should create or update based on object existence. * * @since 2.6.0 * @return int diff --git a/includes/abstracts/abstract-wc-rest-controller.php b/includes/abstracts/abstract-wc-rest-controller.php index 41f33696c77..c2c39555635 100644 --- a/includes/abstracts/abstract-wc-rest-controller.php +++ b/includes/abstracts/abstract-wc-rest-controller.php @@ -5,7 +5,7 @@ if ( ! defined( 'ABSPATH' ) ) { } /** - * Abstract Rest Controler Class + * Abstract Rest Controller Class * * @author WooThemes * @category API diff --git a/includes/abstracts/abstract-wc-rest-crud-controller.php b/includes/abstracts/abstract-wc-rest-crud-controller.php index eaf90c74423..d81dbdece0b 100644 --- a/includes/abstracts/abstract-wc-rest-crud-controller.php +++ b/includes/abstracts/abstract-wc-rest-crud-controller.php @@ -1,6 +1,6 @@ get_order_report_data( $total_coupons_query ) ); $legend[] = array( - /* translators: %s: discount ammount */ + /* translators: %s: discount amount */ 'title' => sprintf( __( '%s discounts in total', 'woocommerce' ), '' . wc_price( $total_discount ) . '' ), 'color' => $this->chart_colours['discount_amount'], 'highlight_series' => 1, ); $legend[] = array( - /* translators: %s: coupons ammount */ + /* translators: %s: coupons amount */ 'title' => sprintf( __( '%s coupons used in total', 'woocommerce' ), '' . $total_coupons . '' ), 'color' => $this->chart_colours['coupon_count'], 'highlight_series' => 0, diff --git a/includes/admin/reports/class-wc-report-customers.php b/includes/admin/reports/class-wc-report-customers.php index dd0827e80eb..ceb64b0d20d 100644 --- a/includes/admin/reports/class-wc-report-customers.php +++ b/includes/admin/reports/class-wc-report-customers.php @@ -37,7 +37,7 @@ class WC_Report_Customers extends WC_Admin_Report { $legend = array(); $legend[] = array( - /* translators: %s: signups ammount */ + /* translators: %s: signups amount */ 'title' => sprintf( __( '%s signups in this period', 'woocommerce' ), '' . sizeof( $this->customers ) . '' ), 'color' => $this->chart_colours['signups'], 'highlight_series' => 2, diff --git a/includes/class-wc-order.php b/includes/class-wc-order.php index 2b684170987..ad58ee0b2c4 100644 --- a/includes/class-wc-order.php +++ b/includes/class-wc-order.php @@ -309,7 +309,7 @@ class WC_Order extends WC_Abstract_Order { $transition_note = sprintf( __( 'Order status set to %s.', 'woocommerce' ), wc_get_order_status_name( $this->status_transition['to'] ) ); } - // Note the transition occured + // Note the transition occurred $this->add_order_note( trim( $this->status_transition['note'] . ' ' . $transition_note ), 0, $this->status_transition['manual'] ); // This has ran, so reset status transition variable diff --git a/includes/class-wc-tracker.php b/includes/class-wc-tracker.php index d5d6aa3e82c..9c784c42fa3 100644 --- a/includes/class-wc-tracker.php +++ b/includes/class-wc-tracker.php @@ -3,7 +3,7 @@ * WooCommerce Tracker * * The WooCommerce tracker class adds functionality to track WooCommerce usage based on if the customer opted in. - * No personal infomation is tracked, only general WooCommerce settings, general product, order and user counts and admin email for discount code. + * No personal information is tracked, only general WooCommerce settings, general product, order and user counts and admin email for discount code. * * @class WC_Tracker * @version 2.3.0 @@ -37,7 +37,7 @@ class WC_Tracker { * @param boolean $override */ public static function send_tracking_data( $override = false ) { - // Dont trigger this on AJAX Requests + // Don't trigger this on AJAX Requests if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { return; } @@ -49,7 +49,7 @@ class WC_Tracker { return; } } else { - // Make sure there is at least a 1 hour delay between override sends, we dont want duplicate calls due to double clicking links. + // Make sure there is at least a 1 hour delay between override sends, we don't want duplicate calls due to double clicking links. $last_send = self::get_last_send_time(); if ( $last_send && $last_send > strtotime( '-1 hours' ) ) { return; diff --git a/includes/data-stores/class-wc-product-data-store-cpt.php b/includes/data-stores/class-wc-product-data-store-cpt.php index 23e1165bc36..8d02961f52c 100644 --- a/includes/data-stores/class-wc-product-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-data-store-cpt.php @@ -1128,7 +1128,7 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da 'order' => $args['order'], 'tax_query' => array(), ); - // Do not load unneccessary post data if the user only wants IDs. + // Do not load unnecessary post data if the user only wants IDs. if ( 'ids' === $args['return'] ) { $wp_query_args['fields'] = 'ids'; } diff --git a/includes/gateways/paypal/includes/class-wc-gateway-paypal-ipn-handler.php b/includes/gateways/paypal/includes/class-wc-gateway-paypal-ipn-handler.php index af15b6c55bb..da4435f2c23 100644 --- a/includes/gateways/paypal/includes/class-wc-gateway-paypal-ipn-handler.php +++ b/includes/gateways/paypal/includes/class-wc-gateway-paypal-ipn-handler.php @@ -283,7 +283,7 @@ class WC_Gateway_Paypal_IPN_Handler extends WC_Gateway_Paypal_Response { } /** - * Handle a reveral. + * Handle a reversal. * @param WC_Order $order * @param array $posted */ @@ -297,7 +297,7 @@ class WC_Gateway_Paypal_IPN_Handler extends WC_Gateway_Paypal_Response { } /** - * Handle a cancelled reveral. + * Handle a cancelled reversal. * @param WC_Order $order * @param array $posted */ diff --git a/includes/gateways/simplify-commerce/class-wc-gateway-simplify-commerce.php b/includes/gateways/simplify-commerce/class-wc-gateway-simplify-commerce.php index b6b55baf88d..c419391a860 100644 --- a/includes/gateways/simplify-commerce/class-wc-gateway-simplify-commerce.php +++ b/includes/gateways/simplify-commerce/class-wc-gateway-simplify-commerce.php @@ -339,7 +339,7 @@ class WC_Gateway_Simplify_Commerce extends WC_Payment_Gateway_CC { } /** - * Actualy saves a customer token to the database. + * Actually saves a customer token to the database. * * @param WC_Payment_Token $customer_token Payment Token * @param string $cart_token CC Token diff --git a/includes/libraries/class-wc-eval-math.php b/includes/libraries/class-wc-eval-math.php index 3278a994386..d8936c1af1c 100644 --- a/includes/libraries/class-wc-eval-math.php +++ b/includes/libraries/class-wc-eval-math.php @@ -208,7 +208,7 @@ if ( ! class_exists( 'WC_Eval_Math', false ) ) { } elseif ( in_array( $op, $ops ) and ! $expecting_op ) { return self::trigger( "unexpected operator '$op'" ); } else { // I don't even want to know what you did to get here - return self::trigger( "an unexpected error occured" ); + return self::trigger( "an unexpected error occurred" ); } if ( strlen( $expr ) == $index ) { if ( in_array( $op, $ops ) ) { // did we end with an operator? bad. diff --git a/includes/log-handlers/class-wc-log-handler-file.php b/includes/log-handlers/class-wc-log-handler-file.php index 6a8ae2139bf..cc66305a647 100644 --- a/includes/log-handlers/class-wc-log-handler-file.php +++ b/includes/log-handlers/class-wc-log-handler-file.php @@ -78,7 +78,7 @@ class WC_Log_Handler_File extends WC_Log_Handler { * * @type string $source Optional. Determines log file to write to. Default 'log'. * @type bool $_legacy Optional. Default false. True to use outdated log format - * orignally used in deprecated WC_Logger::add calls. + * originally used in deprecated WC_Logger::add calls. * } * * @return bool False if value was not handled and true if value was handled. diff --git a/includes/shipping/legacy-flat-rate/class-wc-shipping-legacy-flat-rate.php b/includes/shipping/legacy-flat-rate/class-wc-shipping-legacy-flat-rate.php index 854258e9019..18838c25358 100644 --- a/includes/shipping/legacy-flat-rate/class-wc-shipping-legacy-flat-rate.php +++ b/includes/shipping/legacy-flat-rate/class-wc-shipping-legacy-flat-rate.php @@ -273,7 +273,7 @@ class WC_Shipping_Legacy_Flat_Rate extends WC_Shipping_Method { * * @deprecated 2.4.0 * - * Additonal rates defined like this: + * Additional rates defined like this: * Option Name | Additional Cost [+- Percents%] | Per Cost Type (order, class, or item). */ public function calculate_extra_shipping( $method, $rate ) { diff --git a/includes/wc-coupon-functions.php b/includes/wc-coupon-functions.php index da59b6a0819..bc07372ea13 100644 --- a/includes/wc-coupon-functions.php +++ b/includes/wc-coupon-functions.php @@ -87,7 +87,7 @@ function wc_get_coupon_code_by_id( $id ) { * * @since 3.0.0 * @param string $code - * @param int $exclude Used to exclude an ID from the check if you're checking existance. + * @param int $exclude Used to exclude an ID from the check if you're checking existence. * @return int */ function wc_get_coupon_id_by_code( $code, $exclude = 0 ) { diff --git a/includes/wc-order-functions.php b/includes/wc-order-functions.php index 9f248f8091a..3e32160f875 100644 --- a/includes/wc-order-functions.php +++ b/includes/wc-order-functions.php @@ -166,7 +166,7 @@ function wc_get_order_id_by_order_key( $order_key ) { /** * Get all registered order types. * - * $for optionally define what you are getting order types for so only relevent types are returned. + * $for optionally define what you are getting order types for so only relevant types are returned. * * e.g. for 'order-meta-boxes', 'order-count' * diff --git a/includes/widgets/class-wc-widget-product-tag-cloud.php b/includes/widgets/class-wc-widget-product-tag-cloud.php index 549811f3efc..a680aec2d72 100644 --- a/includes/widgets/class-wc-widget-product-tag-cloud.php +++ b/includes/widgets/class-wc-widget-product-tag-cloud.php @@ -75,7 +75,7 @@ class WC_Widget_Product_Tag_Cloud extends WC_Widget { } /** - * Retuns topic count text. + * Returns topic count text. * * @since 2.6.0 * @param int $count diff --git a/includes/widgets/class-wc-widget-rating-filter.php b/includes/widgets/class-wc-widget-rating-filter.php index e282093fb47..79f86b2f166 100644 --- a/includes/widgets/class-wc-widget-rating-filter.php +++ b/includes/widgets/class-wc-widget-rating-filter.php @@ -91,7 +91,7 @@ class WC_Widget_Rating_Filter extends WC_Widget { } /** - * Count products after other filters have occured by adjusting the main query. + * Count products after other filters have occurred by adjusting the main query. * @param int $rating * @return int */ From 757b5ae2c4bdab4e15139097a97459cb3bb9a1b3 Mon Sep 17 00:00:00 2001 From: Akeda Bagus Date: Wed, 29 Mar 2017 01:02:31 +0700 Subject: [PATCH 163/525] Fixed all typo in tests/ directory. --- tests/unit-tests/api/payment-gateways.php | 2 +- tests/unit-tests/api/products.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/unit-tests/api/payment-gateways.php b/tests/unit-tests/api/payment-gateways.php index c0700a13491..f79091ceed6 100644 --- a/tests/unit-tests/api/payment-gateways.php +++ b/tests/unit-tests/api/payment-gateways.php @@ -264,7 +264,7 @@ class Payment_Gateways extends WC_REST_Unit_Test_Case { } /** - * Loads a particualr gateway's settings so we can correctly test API output. + * Loads a particular gateway's settings so we can correctly test API output. * * @since 3.0.0 * @param string $gateway_class Name of WC_Payment_Gateway class. diff --git a/tests/unit-tests/api/products.php b/tests/unit-tests/api/products.php index 94e95fc59dc..8c55e333db0 100644 --- a/tests/unit-tests/api/products.php +++ b/tests/unit-tests/api/products.php @@ -180,7 +180,7 @@ class Products_API extends WC_REST_Unit_Test_Case { $this->assertContains( 'Dr1Bczxq4q', $data['images'][0]['src'] ); $this->assertContains( 'test upload image', $data['images'][0]['alt'] ); - // test variable product (varations are tested in product-variations.php) + // test variable product (variations are tested in product-variations.php) $product = WC_Helper_Product::create_variation_product(); $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v2/products/' . $product->get_id() ) ); $data = $response->get_data(); From 28726570bf373629a7d25c493b0a7e7748714e14 Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Tue, 28 Mar 2017 11:05:45 -0700 Subject: [PATCH 164/525] Use new_* hooks instead of created_* --- includes/class-wc-deprecated-action-hooks.php | 2 ++ .../class-wc-payment-token-data-store.php | 2 +- ...ss-wc-product-variation-data-store-cpt.php | 2 +- tests/unit-tests/util/deprecated-hooks.php | 21 +++++++++++++++++++ 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/includes/class-wc-deprecated-action-hooks.php b/includes/class-wc-deprecated-action-hooks.php index d0594a155aa..6e1e10eaba9 100644 --- a/includes/class-wc-deprecated-action-hooks.php +++ b/includes/class-wc-deprecated-action-hooks.php @@ -32,6 +32,8 @@ class WC_Deprecated_Action_Hooks extends WC_Deprecated_Hooks { 'woocommerce_order_update_fee', 'woocommerce_order_update_tax', ), + 'woocommerce_new_payment_token' => 'woocommerce_payment_token_created', + 'woocommerce_new_product_variation' => 'woocommerce_create_product_variation', ); /** diff --git a/includes/data-stores/class-wc-payment-token-data-store.php b/includes/data-stores/class-wc-payment-token-data-store.php index 651911ed898..0d5aea53915 100644 --- a/includes/data-stores/class-wc-payment-token-data-store.php +++ b/includes/data-stores/class-wc-payment-token-data-store.php @@ -61,7 +61,7 @@ class WC_Payment_Token_Data_Store extends WC_Data_Store_WP implements WC_Payment WC_Payment_Tokens::set_users_default( $token->get_user_id(), $token_id ); } - do_action( 'woocommerce_payment_token_created', $token_id ); + do_action( 'woocommerce_new_payment_token', $token_id ); } /** diff --git a/includes/data-stores/class-wc-product-variation-data-store-cpt.php b/includes/data-stores/class-wc-product-variation-data-store-cpt.php index bb3672b7b96..643a971f654 100644 --- a/includes/data-stores/class-wc-product-variation-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-variation-data-store-cpt.php @@ -125,7 +125,7 @@ class WC_Product_Variation_Data_Store_CPT extends WC_Product_Data_Store_CPT impl $this->clear_caches( $product ); - do_action( 'woocommerce_create_product_variation', $id ); + do_action( 'woocommerce_new_product_variation', $id ); } } diff --git a/tests/unit-tests/util/deprecated-hooks.php b/tests/unit-tests/util/deprecated-hooks.php index 83e011551a2..2f0bfebb5f8 100644 --- a/tests/unit-tests/util/deprecated-hooks.php +++ b/tests/unit-tests/util/deprecated-hooks.php @@ -150,4 +150,25 @@ class WC_Tests_Deprecated_Hooks extends WC_Unit_Test_Case { $this->assertTrue( $order_update_worked ); $this->assertTrue( $item_update_worked ); } + + /** + * Test the mapping of deprecated created_* hooks to new_* hooks + * + * @since 3.0 + */ + function test_created_actions_deprecation() { + add_filter( 'woocommerce_payment_token_created', '__return_true' ); + add_filter( 'woocommerce_create_product_variation', '__return_true' ); + + $token = WC_Helper_Payment_Token::create_stub_token( __FUNCTION__ ); + $token->save(); + + $product = new WC_Product_Variation; + $product->save(); + + $this->assertEquals( 1, did_action( 'woocommerce_payment_token_created' ) ); + $this->assertEquals( 1, did_action( 'woocommerce_new_payment_token' ) ); + $this->assertEquals( 1, did_action( 'woocommerce_create_product_variation' ) ); + $this->assertEquals( 1, did_action( 'woocommerce_new_product_variation' ) ); + } } From fdbd442e0547574d2f2849d7f5c169bda4f9650a Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 28 Mar 2017 15:10:05 -0300 Subject: [PATCH 165/525] Define default $discount_amount_html in wc_cart_totals_coupon_html() Closes #13807 --- includes/wc-cart-functions.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/includes/wc-cart-functions.php b/includes/wc-cart-functions.php index 42126f4aefa..283ccd54096 100644 --- a/includes/wc-cart-functions.php +++ b/includes/wc-cart-functions.php @@ -268,6 +268,8 @@ function wc_cart_totals_coupon_html( $coupon ) { $coupon = new WC_Coupon( $coupon ); } + $discount_amount_html = ''; + if ( $amount = WC()->cart->get_coupon_discount_amount( $coupon->get_code(), WC()->cart->display_cart_ex_tax ) ) { $discount_amount_html = '-' . wc_price( $amount ); } elseif ( $coupon->get_free_shipping() ) { From 448d47a78ce8ce3d6a6f48315400696e5f794a21 Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Tue, 28 Mar 2017 11:15:00 -0700 Subject: [PATCH 166/525] Sprinkle some periods --- tests/unit-tests/util/deprecated-hooks.php | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/tests/unit-tests/util/deprecated-hooks.php b/tests/unit-tests/util/deprecated-hooks.php index 2f0bfebb5f8..c60998c228c 100644 --- a/tests/unit-tests/util/deprecated-hooks.php +++ b/tests/unit-tests/util/deprecated-hooks.php @@ -10,7 +10,7 @@ class WC_Tests_Deprecated_Hooks extends WC_Unit_Test_Case { protected $handlers = array(); /** - * Generic toggle value function that can be hooked to a filter for testing + * Generic toggle value function that can be hooked to a filter for testing. * @param bool/int $value * @return bool/int */ @@ -19,7 +19,7 @@ class WC_Tests_Deprecated_Hooks extends WC_Unit_Test_Case { } /** - * Generic toggle value function that can be hooked to an action for testing + * Generic toggle value function that can be hooked to an action for testing. * @param bool/int $value */ function toggle_value_by_ref( &$value ) { @@ -27,7 +27,7 @@ class WC_Tests_Deprecated_Hooks extends WC_Unit_Test_Case { } /** - * Generic meta setting function that can be hooked to an action for testing + * Generic meta setting function that can be hooked to an action for testing. * @param int $item1_id * @param int $item2_id (default: false) */ @@ -44,7 +44,7 @@ class WC_Tests_Deprecated_Hooks extends WC_Unit_Test_Case { } /** - * Test the deprecated hook handlers are initialized + * Test the deprecated hook handlers are initialized. * * @since 3.0 */ @@ -57,7 +57,7 @@ class WC_Tests_Deprecated_Hooks extends WC_Unit_Test_Case { } /** - * Test the get_old_hooks method + * Test the get_old_hooks method. * * @since 3.0 */ @@ -70,7 +70,7 @@ class WC_Tests_Deprecated_Hooks extends WC_Unit_Test_Case { } /** - * Test the hook_in method + * Test the hook_in method. * * @since 3.0 */ @@ -80,7 +80,7 @@ class WC_Tests_Deprecated_Hooks extends WC_Unit_Test_Case { } /** - * Test the handle_deprecated_hook method in the filters handler + * Test the handle_deprecated_hook method in the filters handler. * * @since 3.0 */ @@ -97,7 +97,7 @@ class WC_Tests_Deprecated_Hooks extends WC_Unit_Test_Case { } /** - * Test the handle_deprecated_hook method in the actions handler + * Test the handle_deprecated_hook method in the actions handler. * * @since 3.0 */ @@ -115,7 +115,7 @@ class WC_Tests_Deprecated_Hooks extends WC_Unit_Test_Case { } /** - * Test a complete deprecated filter mapping + * Test a complete deprecated filter mapping. * * @since 3.0 */ @@ -129,7 +129,7 @@ class WC_Tests_Deprecated_Hooks extends WC_Unit_Test_Case { } /** - * Test a complete deprecated action mapping + * Test a complete deprecated action mapping. * * @since 3.0 */ @@ -152,7 +152,7 @@ class WC_Tests_Deprecated_Hooks extends WC_Unit_Test_Case { } /** - * Test the mapping of deprecated created_* hooks to new_* hooks + * Test the mapping of deprecated created_* hooks to new_* hooks. * * @since 3.0 */ From 68c7b055a4a3f9133f0026d1fdb9f3a1f24610a9 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 28 Mar 2017 15:32:49 -0300 Subject: [PATCH 167/525] Fixed typos in CHANGELOG.txt --- CHANGELOG.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index fb7fef8d7d3..7f7b3082283 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -93,7 +93,7 @@ * Fix - API - Allow API to save refund reason. * Fix - API - Resolved encoding issues with attribute and variation slugs. * Fix - API - get_attributes should return term name, not slug. -* Fix - API - Product "filter" and "sku" paramaters. +* Fix - API - Product "filter" and "sku" parameters. * Fix - Handle info notices in cart, not just error messages. * Fix - Don't remove hyphens in attribute labels. * Fix - Start sales on variations after they are saved, if applicable. @@ -766,7 +766,7 @@ * Tweak - Use 30 days instead of year for transients to avoid bugs in memcache plugins. * Tweak - Add reports menu item if user can access reports but not the main WC section. * Tweak - Improve grouped product quantity inputs. -* Tweak - Load the persistant cart if cart is empty. +* Tweak - Load the persistent cart if cart is empty. * Tweak - Prevent cart being cleared when accessing the login page. * Tweak - Shipping calculator - Made state/postcode respect country locale like checkout. * Tweak - Move default customer location to general settings tab. @@ -849,7 +849,7 @@ * Fix - Added WC version of GEOIP classes to prevent conflicts with other plugins. = 2.3.0 - 2015-02-11 = -* Feature - Option to geo-locate the customer's inital location. +* Feature - Option to geo-locate the customer's initial location. * Feature - Display taxes in store based on the customer location, rather than the shop base. * Feature - Made tax importer expand postcode ranges. * Feature - Print styles for reports. @@ -1108,7 +1108,7 @@ * Dev - Introduces the WC_Order::needs_shipping_address() method. * Dev - Gateways can set transaction ID for the order. * Dev - Gateways can do refunds via the Payment Gateway API. -* Refactor - Changed the method in which order statuses are stored. Previously, order status was a taxonomy. This caused issues when unique term slugs differed from what we were expecting, and also added additonal overhead to order queries in reports. https://github.com/woocommerce/woocommerce/issues/3064 Order status is now stored as post status - several new post statuses have been added. Order class variables are backwards compatible. The only thing to note (for devs) is that any query must use the order status instead of 'publish' when getting orders and querying by post_status. THe shop_order_status has also been removed. +* Refactor - Changed the method in which order statuses are stored. Previously, order status was a taxonomy. This caused issues when unique term slugs differed from what we were expecting, and also added additional overhead to order queries in reports. https://github.com/woocommerce/woocommerce/issues/3064 Order status is now stored as post status - several new post statuses have been added. Order class variables are backwards compatible. The only thing to note (for devs) is that any query must use the order status instead of 'publish' when getting orders and querying by post_status. THe shop_order_status has also been removed. * Refactor - Update stock amounts with DB queries. * Refactor - Simplified attribute name sanitisation which maintains UTF8 char integrity. * Refactor - Country class return methods. @@ -1130,7 +1130,7 @@ * Fix - Saving tax rates threw notices (missing git cherry pick). = 2.1.10 - 2014-06-03 = -* Fix - Removed unecessary localization from edit account. +* Fix - Removed unnecessary localization from edit account. * Fix - Admin welcome screen css. * Fix - Fixed my account setting values to wrong user submitted strings. * Fix - Menu order terms were coming back empty. From 0964847e28a2466a0e533a625bb1a4240ac3ba38 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 28 Mar 2017 16:06:26 -0300 Subject: [PATCH 168/525] Load custom "WooCommerce endpoint" metabox only in Appearance > Menus. Closes #13813 --- includes/admin/class-wc-admin-menus.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/admin/class-wc-admin-menus.php b/includes/admin/class-wc-admin-menus.php index 7d05de347c7..22a4ad9561c 100644 --- a/includes/admin/class-wc-admin-menus.php +++ b/includes/admin/class-wc-admin-menus.php @@ -38,8 +38,8 @@ class WC_Admin_Menus { add_filter( 'menu_order', array( $this, 'menu_order' ) ); add_filter( 'custom_menu_order', array( $this, 'custom_menu_order' ) ); - // Add endpoints custom URLs in Appearance > Menus > Pages - add_action( 'admin_init', array( $this, 'add_nav_menu_meta_boxes' ) ); + // Add endpoints custom URLs in Appearance > Menus > Pages. + add_action( 'admin_head-nav-menus.php', array( $this, 'add_nav_menu_meta_boxes' ) ); // Admin bar menus if ( apply_filters( 'woocommerce_show_admin_bar_visit_store', true ) ) { From 989d60a60a9837b0180dbde4cb80efa57c42665c Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 28 Mar 2017 18:07:00 -0300 Subject: [PATCH 169/525] Include WooCommerce endpoints to customize nav menu setting --- includes/admin/class-wc-admin-customize.php | 98 +++++++++++++++++++++ includes/admin/class-wc-admin.php | 1 + 2 files changed, 99 insertions(+) create mode 100644 includes/admin/class-wc-admin-customize.php diff --git a/includes/admin/class-wc-admin-customize.php b/includes/admin/class-wc-admin-customize.php new file mode 100644 index 00000000000..2d6a7f33d84 --- /dev/null +++ b/includes/admin/class-wc-admin-customize.php @@ -0,0 +1,98 @@ + __( 'WooCommerce endpoints', 'woocommerce' ), + 'type_label' => __( 'WooCommerce endpoint', 'woocommerce' ), + 'type' => 'woocommerce_nav', + 'object' => 'woocommerce_endpoint' + ); + + return $item_types; + } + + /** + * Register account endpoints to customize nav menu items. + * + * @since 3.0.0 + * @param array $items List of nav menu items. + * @param string $type Nav menu type. + * @param string $object Nav menu object. + * @param integer $page Page number. + * @return array + */ + public function register_customize_nav_menu_items( $items = array(), $type = '', $object = '', $page = 0 ) { + if ( 'woocommerce_endpoint' !== $object ) { + return $items; + } + + // Don't allow pagination since all items are loaded at once. + if ( 0 < $page ) { + return $items; + } + + // Get items from account menu. + $endpoints = wc_get_account_menu_items(); + + // Remove dashboard item. + if ( isset( $endpoints['dashboard'] ) ) { + unset( $endpoints['dashboard'] ); + } + + // Include missing lost password. + $endpoints['lost-password'] = __( 'Lost password', 'woocommerce' ); + + $endpoints = apply_filters( 'woocommerce_custom_nav_menu_items', $endpoints ); + + foreach ( $endpoints as $endpoint => $title ) { + $items[] = array( + 'id' => $endpoint, + 'title' => $title, + 'type_label' => __( 'Custom Link', 'woocommerce' ), + 'url' => esc_url_raw( wc_get_account_endpoint_url( $endpoint ) ), + ); + } + + return $items; + } +} + +endif; + +return new WC_Admin_Customize(); diff --git a/includes/admin/class-wc-admin.php b/includes/admin/class-wc-admin.php index 781d7dd4c27..0a73b97efb9 100644 --- a/includes/admin/class-wc-admin.php +++ b/includes/admin/class-wc-admin.php @@ -48,6 +48,7 @@ class WC_Admin { include_once( dirname( __FILE__ ) . '/class-wc-admin-post-types.php' ); include_once( dirname( __FILE__ ) . '/class-wc-admin-taxonomies.php' ); include_once( dirname( __FILE__ ) . '/class-wc-admin-menus.php' ); + include_once( dirname( __FILE__ ) . '/class-wc-admin-customize.php' ); include_once( dirname( __FILE__ ) . '/class-wc-admin-notices.php' ); include_once( dirname( __FILE__ ) . '/class-wc-admin-assets.php' ); include_once( dirname( __FILE__ ) . '/class-wc-admin-api-keys.php' ); From 987fff3775f122dd9718c97470afb9e55cf1bfc9 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 28 Mar 2017 18:33:06 -0300 Subject: [PATCH 170/525] Fixed titles and items from WC_Admin_Menus::nav_menu_links() --- includes/admin/class-wc-admin-menus.php | 29 ++++++++++++++++--------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/includes/admin/class-wc-admin-menus.php b/includes/admin/class-wc-admin-menus.php index 7d05de347c7..524613b998c 100644 --- a/includes/admin/class-wc-admin-menus.php +++ b/includes/admin/class-wc-admin-menus.php @@ -238,30 +238,39 @@ class WC_Admin_Menus { * Output menu links. */ public function nav_menu_links() { - $exclude = array( 'view-order', 'add-payment-method', 'order-pay', 'order-received' ); + // Get items from account menu. + $endpoints = wc_get_account_menu_items(); + + // Remove dashboard item. + if ( isset( $endpoints['dashboard'] ) ) { + unset( $endpoints['dashboard'] ); + } + + // Include missing lost password. + $endpoints['lost-password'] = __( 'Lost password', 'woocommerce' ); + + $endpoints = apply_filters( 'woocommerce_custom_nav_menu_items', $endpoints ); + ?>
      query->query_vars as $key => $value ) { - if ( in_array( $key, $exclude ) ) { - continue; - } + foreach ( $endpoints as $key => $value ) : ?>
    • - - + +
    From da0b04878838b1f0fee528d8017a72b489c02270 Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Tue, 28 Mar 2017 14:45:12 -0700 Subject: [PATCH 171/525] Allow setup wizard filtering --- includes/admin/class-wc-admin-setup-wizard.php | 6 ++++-- includes/admin/wc-admin-functions.php | 16 ++++++++++++++++ woocommerce.php | 7 +++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/includes/admin/class-wc-admin-setup-wizard.php b/includes/admin/class-wc-admin-setup-wizard.php index f5f935300b9..5d781e52f2d 100644 --- a/includes/admin/class-wc-admin-setup-wizard.php +++ b/includes/admin/class-wc-admin-setup-wizard.php @@ -54,7 +54,7 @@ class WC_Admin_Setup_Wizard { if ( empty( $_GET['page'] ) || 'wc-setup' !== $_GET['page'] ) { return; } - $this->steps = array( + $default_steps = array( 'introduction' => array( 'name' => __( 'Introduction', 'woocommerce' ), 'view' => array( $this, 'wc_setup_introduction' ), @@ -86,6 +86,8 @@ class WC_Admin_Setup_Wizard { 'handler' => '', ), ); + + $this->steps = apply_filters( 'woocommerce_setup_wizard_steps', $default_steps ); $this->step = isset( $_GET['step'] ) ? sanitize_key( $_GET['step'] ) : current( array_keys( $this->steps ) ); $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; @@ -778,4 +780,4 @@ class WC_Admin_Setup_Wizard { } } -new WC_Admin_Setup_Wizard(); +WC()->setup_wizard = new WC_Admin_Setup_Wizard(); diff --git a/includes/admin/wc-admin-functions.php b/includes/admin/wc-admin-functions.php index 0e2aa839a9a..5e0515b90c4 100644 --- a/includes/admin/wc-admin-functions.php +++ b/includes/admin/wc-admin-functions.php @@ -299,3 +299,19 @@ function wc_save_order_items( $order_id, $items ) { // Inform other plugins that the items have been saved do_action( 'woocommerce_saved_order_items', $order_id, $items ); } + +/** + * Get the URL for the next step in the setup wizard. + * + * @since 3.1 + * @return string URL for step or empty string if called outside the setup wizard + */ +function woocommerce_setup_wizard_get_next_step_link() { + $wizard = WC()->setup_wizard; + + if ( ! $wizard ) { + return ""; + } + + return $wizard->get_next_step_link(); +} diff --git a/woocommerce.php b/woocommerce.php index 89d61ba19ab..38d44dce788 100644 --- a/woocommerce.php +++ b/woocommerce.php @@ -108,6 +108,13 @@ final class WooCommerce { */ public $structured_data = null; + /** + * Setup Wizard instance. + * + * @var WC_Admin_Setup_Wizard + */ + public $setup_wizard = null; + /** * Array of deprecated hook handlers. * From 0608eaf11a03941063c06e051fd2ea72419e4b00 Mon Sep 17 00:00:00 2001 From: corsonr Date: Wed, 29 Mar 2017 10:01:45 +0200 Subject: [PATCH 172/525] Fix 13820 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add the “description” class to `.cancel_sale_schedule` so that the “cancel” link gets aligned properly with a margin left of 7 pixels. --- includes/admin/meta-boxes/views/html-product-data-general.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/admin/meta-boxes/views/html-product-data-general.php b/includes/admin/meta-boxes/views/html-product-data-general.php index 4916d2de48d..fb76c78856f 100644 --- a/includes/admin/meta-boxes/views/html-product-data-general.php +++ b/includes/admin/meta-boxes/views/html-product-data-general.php @@ -44,7 +44,7 @@ - ' . __( 'Cancel', 'woocommerce' ) . '' . wc_help_tip( __( 'The sale will end at the beginning of the set date.', 'woocommerce' ) ) . ' + ' . __( 'Cancel', 'woocommerce' ) . '' . wc_help_tip( __( 'The sale will end at the beginning of the set date.', 'woocommerce' ) ) . '

    '; do_action( 'woocommerce_product_options_pricing' ); From df13658dabf7f66470edeac382077ef4f9b962a8 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 29 Mar 2017 11:47:33 +0100 Subject: [PATCH 173/525] docblock correction Closes #13818 --- includes/class-wc-checkout.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/class-wc-checkout.php b/includes/class-wc-checkout.php index 4dd291bc377..fae5a25057f 100644 --- a/includes/class-wc-checkout.php +++ b/includes/class-wc-checkout.php @@ -519,7 +519,7 @@ class WC_Checkout { * Get posted data from the checkout form. * * @since 3.0.0 - * @return array of data and errors. + * @return array of data. */ protected function get_posted_data() { $skipped = array(); From 82ffd9894f69cdc2d209197076ef1aa1dc890bbc Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 29 Mar 2017 13:13:00 +0100 Subject: [PATCH 174/525] Filter empty tax values Fixes #13822 --- includes/class-wc-ajax.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/class-wc-ajax.php b/includes/class-wc-ajax.php index 71373dc820c..11a618a25fa 100644 --- a/includes/class-wc-ajax.php +++ b/includes/class-wc-ajax.php @@ -1372,7 +1372,7 @@ class WC_AJAX { $line_items[ $item_id ]['refund_total'] = wc_format_decimal( $total ); } foreach ( $line_item_tax_totals as $item_id => $tax_totals ) { - $line_items[ $item_id ]['refund_tax'] = array_map( 'wc_format_decimal', $tax_totals ); + $line_items[ $item_id ]['refund_tax'] = array_filter( array_map( 'wc_format_decimal', $tax_totals ) ); } // Create the refund object. From 399c141377dfe78a2badfecb4037d706b33c184a Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 29 Mar 2017 13:41:23 +0100 Subject: [PATCH 175/525] Fix slug updating in CRUD Fixes #13824 --- includes/data-stores/class-wc-product-data-store-cpt.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/includes/data-stores/class-wc-product-data-store-cpt.php b/includes/data-stores/class-wc-product-data-store-cpt.php index 8d02961f52c..b1d6f160e6f 100644 --- a/includes/data-stores/class-wc-product-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-data-store-cpt.php @@ -100,6 +100,7 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da 'menu_order' => $product->get_menu_order(), 'post_date' => gmdate( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getOffsetTimestamp() ), 'post_date_gmt' => gmdate( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getTimestamp() ), + 'post_name' => $product->get_slug( 'edit' ), ) ), true ); if ( $id && ! is_wp_error( $id ) ) { @@ -164,7 +165,7 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da $changes = $product->get_changes(); // Only update the post when the post data changes. - if ( array_intersect( array( 'description', 'short_description', 'name', 'parent_id', 'reviews_allowed', 'status', 'menu_order', 'date_created', 'date_modified' ), array_keys( $changes ) ) ) { + if ( array_intersect( array( 'description', 'short_description', 'name', 'parent_id', 'reviews_allowed', 'status', 'menu_order', 'date_created', 'date_modified', 'slug' ), array_keys( $changes ) ) ) { wp_update_post( array( 'ID' => $product->get_id(), 'post_content' => $product->get_description( 'edit' ), @@ -178,6 +179,7 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da 'post_date_gmt' => gmdate( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getTimestamp() ), 'post_modified' => isset( $changes['date_modified'] ) ? gmdate( 'Y-m-d H:i:s', $product->get_date_modified( 'edit' )->getOffsetTimestamp() ) : current_time( 'mysql' ), 'post_modified_gmt' => isset( $changes['date_modified'] ) ? gmdate( 'Y-m-d H:i:s', $product->get_date_modified( 'edit' )->getTimestamp() ) : current_time( 'mysql', 1 ), + 'post_name' => $product->get_slug( 'edit' ), ) ); } From 27e1cffa30c240caccb7d7a792c7ad463f315410 Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Wed, 29 Mar 2017 11:22:55 -0700 Subject: [PATCH 176/525] Better way of passing on the next stepg --- .../admin/class-wc-admin-setup-wizard.php | 50 ++++++++++--------- includes/admin/wc-admin-functions.php | 16 ------ woocommerce.php | 7 --- 3 files changed, 27 insertions(+), 46 deletions(-) diff --git a/includes/admin/class-wc-admin-setup-wizard.php b/includes/admin/class-wc-admin-setup-wizard.php index 5d781e52f2d..ed8d5057108 100644 --- a/includes/admin/class-wc-admin-setup-wizard.php +++ b/includes/admin/class-wc-admin-setup-wizard.php @@ -118,7 +118,7 @@ class WC_Admin_Setup_Wizard { ) ); if ( ! empty( $_POST['save_step'] ) && isset( $this->steps[ $this->step ]['handler'] ) ) { - call_user_func( $this->steps[ $this->step ]['handler'] ); + call_user_func( $this->steps[ $this->step ]['handler'], $this->get_next_step_link() ); } ob_start(); @@ -131,7 +131,11 @@ class WC_Admin_Setup_Wizard { public function get_next_step_link() { $keys = array_keys( $this->steps ); - return add_query_arg( 'step', $keys[ array_search( $this->step, array_keys( $this->steps ) ) + 1 ] ); + if ( end( $keys ) === $this->step ) { + return admin_url(); + } + + return add_query_arg( 'step', $keys[ array_search( $this->step, $keys ) + 1 ] ); } /** @@ -193,20 +197,20 @@ class WC_Admin_Setup_Wizard { */ public function setup_wizard_content() { echo '
    '; - call_user_func( $this->steps[ $this->step ]['view'] ); + call_user_func( $this->steps[ $this->step ]['view'], $this->get_next_step_link() ); echo '
    '; } /** * Introduction step. */ - public function wc_setup_introduction() { + public function wc_setup_introduction( $next_step_link ) { ?>

    It’s completely optional and shouldn’t take longer than five minutes.', 'woocommerce' ); ?>

    - +

    @@ -255,7 +259,7 @@ class WC_Admin_Setup_Wizard {

    - +

    @@ -265,18 +269,18 @@ class WC_Admin_Setup_Wizard { /** * Save Page Settings. */ - public function wc_setup_pages_save() { + public function wc_setup_pages_save( $next_step_link ) { check_admin_referer( 'wc-setup' ); WC_Install::create_pages(); - wp_redirect( esc_url_raw( $this->get_next_step_link() ) ); + wp_redirect( esc_url_raw( $next_step_link ) ); exit; } /** * Locale settings. */ - public function wc_setup_locale() { + public function wc_setup_locale( $next_step_link ) { $user_location = WC_Geolocation::geolocate_ip(); $country = ! empty( $user_location['country'] ) ? $user_location['country'] : 'US'; $state = ! empty( $user_location['state'] ) ? $user_location['state'] : '*'; @@ -371,7 +375,7 @@ class WC_Admin_Setup_Wizard {

    - +

    @@ -381,7 +385,7 @@ class WC_Admin_Setup_Wizard { /** * Save Locale Settings. */ - public function wc_setup_locale_save() { + public function wc_setup_locale_save( $next_step_link ) { check_admin_referer( 'wc-setup' ); $store_location = sanitize_text_field( $_POST['store_location'] ); @@ -402,14 +406,14 @@ class WC_Admin_Setup_Wizard { update_option( 'woocommerce_weight_unit', $weight_unit ); update_option( 'woocommerce_dimension_unit', $dimension_unit ); - wp_redirect( esc_url_raw( $this->get_next_step_link() ) ); + wp_redirect( esc_url_raw( $next_step_link ) ); exit; } /** * Shipping and taxes. */ - public function wc_setup_shipping_taxes() { + public function wc_setup_shipping_taxes( $next_step_link ) { ?>

    @@ -492,7 +496,7 @@ class WC_Admin_Setup_Wizard {

    - +

    @@ -502,7 +506,7 @@ class WC_Admin_Setup_Wizard { /** * Save shipping and tax options. */ - public function wc_setup_shipping_taxes_save() { + public function wc_setup_shipping_taxes_save( $next_step_link ) { check_admin_referer( 'wc-setup' ); $enable_shipping = isset( $_POST['woocommerce_calc_shipping'] ); @@ -553,7 +557,7 @@ class WC_Admin_Setup_Wizard { } } - wp_redirect( esc_url_raw( $this->get_next_step_link() ) ); + wp_redirect( esc_url_raw( $next_step_link ) ); exit; } @@ -638,7 +642,7 @@ class WC_Admin_Setup_Wizard { /** * Payments Step. */ - public function wc_setup_payments() { + public function wc_setup_payments( $next_step_link ) { $gateways = $this->get_wizard_payment_gateways(); ?>

    @@ -685,7 +689,7 @@ class WC_Admin_Setup_Wizard {

    - +

    @@ -695,7 +699,7 @@ class WC_Admin_Setup_Wizard { /** * Payments Step save. */ - public function wc_setup_payments_save() { + public function wc_setup_payments_save( $next_step_link ) { check_admin_referer( 'wc-setup' ); $gateways = $this->get_wizard_payment_gateways(); @@ -719,7 +723,7 @@ class WC_Admin_Setup_Wizard { update_option( $settings_key, $settings ); } - wp_redirect( esc_url_raw( $this->get_next_step_link() ) ); + wp_redirect( esc_url_raw( $next_step_link ) ); exit; } @@ -741,7 +745,7 @@ class WC_Admin_Setup_Wizard { /** * Final step. */ - public function wc_setup_ready() { + public function wc_setup_ready( $next_step_link ) { $this->wc_setup_ready_actions(); shuffle( $this->tweets ); ?> @@ -780,4 +784,4 @@ class WC_Admin_Setup_Wizard { } } -WC()->setup_wizard = new WC_Admin_Setup_Wizard(); +new WC_Admin_Setup_Wizard(); diff --git a/includes/admin/wc-admin-functions.php b/includes/admin/wc-admin-functions.php index 5e0515b90c4..0e2aa839a9a 100644 --- a/includes/admin/wc-admin-functions.php +++ b/includes/admin/wc-admin-functions.php @@ -299,19 +299,3 @@ function wc_save_order_items( $order_id, $items ) { // Inform other plugins that the items have been saved do_action( 'woocommerce_saved_order_items', $order_id, $items ); } - -/** - * Get the URL for the next step in the setup wizard. - * - * @since 3.1 - * @return string URL for step or empty string if called outside the setup wizard - */ -function woocommerce_setup_wizard_get_next_step_link() { - $wizard = WC()->setup_wizard; - - if ( ! $wizard ) { - return ""; - } - - return $wizard->get_next_step_link(); -} diff --git a/woocommerce.php b/woocommerce.php index 38d44dce788..89d61ba19ab 100644 --- a/woocommerce.php +++ b/woocommerce.php @@ -108,13 +108,6 @@ final class WooCommerce { */ public $structured_data = null; - /** - * Setup Wizard instance. - * - * @var WC_Admin_Setup_Wizard - */ - public $setup_wizard = null; - /** * Array of deprecated hook handlers. * From 84e428abd35024fb5d39f5b475e9f9b100fcff76 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Wed, 29 Mar 2017 17:50:09 -0300 Subject: [PATCH 177/525] Use correct attribute type label in attributes admin screen This allow use a translatable label for attribute type instead of forcing English for everybody. --- includes/admin/class-wc-admin-attributes.php | 2 +- includes/wc-attribute-functions.php | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/includes/admin/class-wc-admin-attributes.php b/includes/admin/class-wc-admin-attributes.php index dc32f411f66..ab912feca1f 100644 --- a/includes/admin/class-wc-admin-attributes.php +++ b/includes/admin/class-wc-admin-attributes.php @@ -384,7 +384,7 @@ class WC_Admin_Attributes {
    |
    attribute_name ); ?>attribute_type ) ); ?> attribute_public ? __( '(Public)', 'woocommerce' ) : ''; ?>attribute_type ) ); ?> attribute_public ? __( '(Public)', 'woocommerce' ) : ''; ?> attribute_orderby ) { case 'name' : diff --git a/includes/wc-attribute-functions.php b/includes/wc-attribute-functions.php index 9c05159fb67..e9b1eb3a161 100644 --- a/includes/wc-attribute-functions.php +++ b/includes/wc-attribute-functions.php @@ -197,6 +197,19 @@ function wc_get_attribute_types() { ) ); } +/** + * Get attribute type label. + * + * @since 3.0.0 + * @param string $type Attribute type slug. + * @return string + */ +function wc_get_attribute_type_label( $type ) { + $types = wc_get_attribute_types(); + + return isset( $types[ $type ] ) ? $types[ $type ] : ucfirst( $type ); +} + /** * Check if attribute name is reserved. * https://codex.wordpress.org/Function_Reference/register_taxonomy#Reserved_Terms. From 61ec9b3e51df5bf8e893852fc96769a81c15c229 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Wed, 29 Mar 2017 17:56:03 -0300 Subject: [PATCH 178/525] Updated version to 3.1.0 --- includes/admin/class-wc-admin-customize.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/includes/admin/class-wc-admin-customize.php b/includes/admin/class-wc-admin-customize.php index 2d6a7f33d84..f7ad8b7dc39 100644 --- a/includes/admin/class-wc-admin-customize.php +++ b/includes/admin/class-wc-admin-customize.php @@ -5,7 +5,7 @@ * @author WooCommerce * @category Admin * @package WooCommerce/Admin/Customize - * @version 3.0.0 + * @version 3.1.0 */ if ( ! defined( 'ABSPATH' ) ) { @@ -32,7 +32,7 @@ class WC_Admin_Customize { * Register customize new nav menu item types. * This will register WooCommerce account endpoints as a nav menu item type. * - * @since 3.0.0 + * @since 3.1.0 * @param array $item_types Menu item types. * @return array */ @@ -50,7 +50,7 @@ class WC_Admin_Customize { /** * Register account endpoints to customize nav menu items. * - * @since 3.0.0 + * @since 3.1.0 * @param array $items List of nav menu items. * @param string $type Nav menu type. * @param string $object Nav menu object. From 38cd9b4df7886f9b08c7295b24ea1adfc00c774d Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Wed, 29 Mar 2017 14:51:33 -0700 Subject: [PATCH 179/525] Update product rating counts after adding a rating --- includes/class-wc-comments.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/includes/class-wc-comments.php b/includes/class-wc-comments.php index fa3121c11b3..daaebe840f9 100644 --- a/includes/class-wc-comments.php +++ b/includes/class-wc-comments.php @@ -205,6 +205,11 @@ class WC_Comments { return; } add_comment_meta( $comment_id, 'rating', (int) esc_attr( $_POST['rating'] ), true ); + + $post_id = isset( $_POST['comment_post_ID'] ) ? (int) $_POST['comment_post_ID'] : 0; + if ( $post_id ) { + self::clear_transients( $post_id ); + } } } From be8036869e141f7d0e00893d9afbcfa15cf5e648 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 30 Mar 2017 13:43:59 -0300 Subject: [PATCH 180/525] [REST API] Ignore 0 category while querying products --- includes/api/v1/class-wc-rest-products-controller.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/includes/api/v1/class-wc-rest-products-controller.php b/includes/api/v1/class-wc-rest-products-controller.php index 8414fc793a4..41d73585568 100644 --- a/includes/api/v1/class-wc-rest-products-controller.php +++ b/includes/api/v1/class-wc-rest-products-controller.php @@ -151,6 +151,10 @@ class WC_REST_Products_V1_Controller extends WC_REST_Posts_Controller { // Set tax_query for each passed arg. foreach ( $taxonomies as $taxonomy => $key ) { + if ( ! empty( $request[ $key ] ) && is_array( $request[ $key ] ) ) { + $request[ $key ] = array_filter( $request[ $key ] ); + } + if ( ! empty( $request[ $key ] ) ) { $tax_query[] = array( 'taxonomy' => $taxonomy, From 4bae06b1981412567c0965576c467ca7ca8e9cb3 Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Thu, 30 Mar 2017 10:53:03 -0700 Subject: [PATCH 181/525] Dont redirect lost password on multisite global pages --- includes/wc-account-functions.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/includes/wc-account-functions.php b/includes/wc-account-functions.php index ad9395133ad..ece890c8033 100644 --- a/includes/wc-account-functions.php +++ b/includes/wc-account-functions.php @@ -22,6 +22,11 @@ if ( ! defined( 'ABSPATH' ) ) { * @return string */ function wc_lostpassword_url( $default_url = '' ) { + // Don't redirect to the woocommerce endpoint on global network admin lost passwords. + if ( is_multisite() && isset( $_GET['redirect_to'] ) && false !== strpos( $_GET['redirect_to'], network_admin_url() ) ) { + return $default_url; + } + $wc_account_page_url = wc_get_page_permalink( 'myaccount' ); $wc_account_page_exists = wc_get_page_id( 'myaccount' ) > 0; $lost_password_endpoint = get_option( 'woocommerce_myaccount_lost_password_endpoint' ); From 1cd85b1b9b6a8bd7986497507340ccb6dc2ba1c8 Mon Sep 17 00:00:00 2001 From: James Koster Date: Thu, 30 Mar 2017 19:52:29 +0100 Subject: [PATCH 182/525] Use the full size image dimensions to decide whether to init zoom. #13830 --- assets/js/frontend/single-product.js | 2 +- assets/js/frontend/single-product.min.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/js/frontend/single-product.js b/assets/js/frontend/single-product.js index c7a9993e257..8608fd0b70f 100644 --- a/assets/js/frontend/single-product.js +++ b/assets/js/frontend/single-product.js @@ -168,7 +168,7 @@ jQuery( function( $ ) { $( zoomTarget ).each( function( index, target ) { var image = $( target ).find( 'img' ); - if ( image.attr( 'width' ) > galleryWidth ) { + if ( image.data( 'large_image_width' ) > galleryWidth ) { zoomEnabled = true; return false; } diff --git a/assets/js/frontend/single-product.min.js b/assets/js/frontend/single-product.min.js index 4faf3e25592..30f82086eda 100644 --- a/assets/js/frontend/single-product.min.js +++ b/assets/js/frontend/single-product.min.js @@ -1 +1 @@ -jQuery(function(a){if("undefined"==typeof wc_single_product_params)return!1;a("body").on("init",".wc-tabs-wrapper, .woocommerce-tabs",function(){a(".wc-tab, .woocommerce-tabs .panel:not(.panel .panel)").hide();var b=window.location.hash,c=window.location.href,d=a(this).find(".wc-tabs, ul.tabs").first();b.toLowerCase().indexOf("comment-")>=0||"#reviews"===b||"#tab-reviews"===b?d.find("li.reviews_tab a").click():c.indexOf("comment-page-")>0||c.indexOf("cpage=")>0?d.find("li.reviews_tab a").click():d.find("li:first a").click()}).on("click",".wc-tabs li a, ul.tabs li a",function(b){b.preventDefault();var c=a(this),d=c.closest(".wc-tabs-wrapper, .woocommerce-tabs"),e=d.find(".wc-tabs, ul.tabs");e.find("li").removeClass("active"),d.find(".wc-tab, .panel:not(.panel .panel)").hide(),c.closest("li").addClass("active"),d.find(c.attr("href")).show()}).on("click","a.woocommerce-review-link",function(){return a(".reviews_tab a").click(),!0}).on("init","#rating",function(){a("#rating").hide().before('

    12345

    ')}).on("click","#respond p.stars a",function(){var b=a(this),c=a(this).closest("#respond").find("#rating"),d=a(this).closest(".stars");return c.val(b.text()),b.siblings("a").removeClass("active"),b.addClass("active"),d.addClass("selected"),!1}).on("click","#respond #submit",function(){var b=a(this).closest("#respond").find("#rating"),c=b.val();if(b.length>0&&!c&&"yes"===wc_single_product_params.review_rating_required)return window.alert(wc_single_product_params.i18n_required_rating_text),!1}),a(".wc-tabs-wrapper, .woocommerce-tabs, #rating").trigger("init");var b=function(b,c){this.$target=b,this.$images=a(".woocommerce-product-gallery__image",b),0!==this.$images.length&&(b.data("product_gallery",this),this.flexslider_enabled=a.isFunction(a.fn.flexslider)&&wc_single_product_params.flexslider_enabled,this.zoom_enabled=a.isFunction(a.fn.zoom)&&wc_single_product_params.zoom_enabled,this.photoswipe_enabled="undefined"!=typeof PhotoSwipe&&wc_single_product_params.photoswipe_enabled,c&&(this.flexslider_enabled=!1!==c.photoswipe_enabled&&this.flexslider_enabled,this.zoom_enabled=!1!==c.zoom_enabled&&this.zoom_enabled,this.photoswipe_enabled=!1!==c.photoswipe_enabled&&this.photoswipe_enabled),this.initFlexslider=this.initFlexslider.bind(this),this.initZoom=this.initZoom.bind(this),this.initPhotoswipe=this.initPhotoswipe.bind(this),this.onResetSlidePosition=this.onResetSlidePosition.bind(this),this.getGalleryItems=this.getGalleryItems.bind(this),this.openPhotoswipe=this.openPhotoswipe.bind(this),this.flexslider_enabled&&(this.initFlexslider(),b.on("woocommerce_gallery_reset_slide_position",this.onResetSlidePosition)),this.zoom_enabled&&(this.initZoom(),b.on("woocommerce_gallery_init_zoom",this.initZoom)),this.photoswipe_enabled&&this.initPhotoswipe())};b.prototype.initFlexslider=function(){var b=this.$images;this.$target.flexslider({selector:".woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image",animation:wc_single_product_params.flexslider.animation,smoothHeight:wc_single_product_params.flexslider.smoothHeight,directionNav:wc_single_product_params.flexslider.directionNav,controlNav:wc_single_product_params.flexslider.controlNav,slideshow:wc_single_product_params.flexslider.slideshow,animationSpeed:wc_single_product_params.flexslider.animationSpeed,animationLoop:wc_single_product_params.flexslider.animationLoop,start:function(){var c=0;b.each(function(){var b=a(this).height();b>c&&(c=b)}),b.each(function(){a(this).css("min-height",c)})}})},b.prototype.initZoom=function(){var b=this.$images,c=this.$target.width(),d=!1;if(this.flexslider_enabled||(b=b.first()),a(b).each(function(b,e){var f=a(e).find("img");if(f.attr("width")>c)return d=!0,!1}),d){var e={touch:!1};"ontouchstart"in window&&(e.on="click"),b.trigger("zoom.destroy"),b.zoom(e)}},b.prototype.initPhotoswipe=function(){this.zoom_enabled&&this.$images.length>0&&(this.$target.prepend('🔍'),this.$target.on("click",".woocommerce-product-gallery__trigger",this.openPhotoswipe)),this.$target.on("click",".woocommerce-product-gallery__image a",this.openPhotoswipe)},b.prototype.onResetSlidePosition=function(){this.$target.flexslider(0)},b.prototype.getGalleryItems=function(){var b=this.$images,c=[];return b.length>0&&b.each(function(b,d){var e=a(d).find("img"),f=e.attr("data-large_image"),g=e.attr("data-large_image_width"),h=e.attr("data-large_image_height"),i={src:f,w:g,h:h,title:e.attr("title")};c.push(i)}),c},b.prototype.openPhotoswipe=function(b){b.preventDefault();var c,d=a(".pswp")[0],e=this.getGalleryItems(),f=a(b.target);c=f.is(".woocommerce-product-gallery__trigger")?this.$target.find(".flex-active-slide"):f.closest(".woocommerce-product-gallery__image");var g={index:a(c).index(),shareEl:!1,closeOnScroll:!1,history:!1,hideAnimationDuration:0,showAnimationDuration:0},h=new PhotoSwipe(d,PhotoSwipeUI_Default,e,g);h.init()},a.fn.wc_product_gallery=function(a){return new b(this,a),this},a(".woocommerce-product-gallery").each(function(){a(this).wc_product_gallery()})}); \ No newline at end of file +jQuery(function(a){if("undefined"==typeof wc_single_product_params)return!1;a("body").on("init",".wc-tabs-wrapper, .woocommerce-tabs",function(){a(".wc-tab, .woocommerce-tabs .panel:not(.panel .panel)").hide();var b=window.location.hash,c=window.location.href,d=a(this).find(".wc-tabs, ul.tabs").first();b.toLowerCase().indexOf("comment-")>=0||"#reviews"===b||"#tab-reviews"===b?d.find("li.reviews_tab a").click():c.indexOf("comment-page-")>0||c.indexOf("cpage=")>0?d.find("li.reviews_tab a").click():d.find("li:first a").click()}).on("click",".wc-tabs li a, ul.tabs li a",function(b){b.preventDefault();var c=a(this),d=c.closest(".wc-tabs-wrapper, .woocommerce-tabs"),e=d.find(".wc-tabs, ul.tabs");e.find("li").removeClass("active"),d.find(".wc-tab, .panel:not(.panel .panel)").hide(),c.closest("li").addClass("active"),d.find(c.attr("href")).show()}).on("click","a.woocommerce-review-link",function(){return a(".reviews_tab a").click(),!0}).on("init","#rating",function(){a("#rating").hide().before('

    12345

    ')}).on("click","#respond p.stars a",function(){var b=a(this),c=a(this).closest("#respond").find("#rating"),d=a(this).closest(".stars");return c.val(b.text()),b.siblings("a").removeClass("active"),b.addClass("active"),d.addClass("selected"),!1}).on("click","#respond #submit",function(){var b=a(this).closest("#respond").find("#rating"),c=b.val();if(b.length>0&&!c&&"yes"===wc_single_product_params.review_rating_required)return window.alert(wc_single_product_params.i18n_required_rating_text),!1}),a(".wc-tabs-wrapper, .woocommerce-tabs, #rating").trigger("init");var b=function(b,c){this.$target=b,this.$images=a(".woocommerce-product-gallery__image",b),0!==this.$images.length&&(b.data("product_gallery",this),this.flexslider_enabled=a.isFunction(a.fn.flexslider)&&wc_single_product_params.flexslider_enabled,this.zoom_enabled=a.isFunction(a.fn.zoom)&&wc_single_product_params.zoom_enabled,this.photoswipe_enabled="undefined"!=typeof PhotoSwipe&&wc_single_product_params.photoswipe_enabled,c&&(this.flexslider_enabled=!1!==c.photoswipe_enabled&&this.flexslider_enabled,this.zoom_enabled=!1!==c.zoom_enabled&&this.zoom_enabled,this.photoswipe_enabled=!1!==c.photoswipe_enabled&&this.photoswipe_enabled),this.initFlexslider=this.initFlexslider.bind(this),this.initZoom=this.initZoom.bind(this),this.initPhotoswipe=this.initPhotoswipe.bind(this),this.onResetSlidePosition=this.onResetSlidePosition.bind(this),this.getGalleryItems=this.getGalleryItems.bind(this),this.openPhotoswipe=this.openPhotoswipe.bind(this),this.flexslider_enabled&&(this.initFlexslider(),b.on("woocommerce_gallery_reset_slide_position",this.onResetSlidePosition)),this.zoom_enabled&&(this.initZoom(),b.on("woocommerce_gallery_init_zoom",this.initZoom)),this.photoswipe_enabled&&this.initPhotoswipe())};b.prototype.initFlexslider=function(){var b=this.$images;this.$target.flexslider({selector:".woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image",animation:wc_single_product_params.flexslider.animation,smoothHeight:wc_single_product_params.flexslider.smoothHeight,directionNav:wc_single_product_params.flexslider.directionNav,controlNav:wc_single_product_params.flexslider.controlNav,slideshow:wc_single_product_params.flexslider.slideshow,animationSpeed:wc_single_product_params.flexslider.animationSpeed,animationLoop:wc_single_product_params.flexslider.animationLoop,start:function(){var c=0;b.each(function(){var b=a(this).height();b>c&&(c=b)}),b.each(function(){a(this).css("min-height",c)})}})},b.prototype.initZoom=function(){var b=this.$images,c=this.$target.width(),d=!1;if(this.flexslider_enabled||(b=b.first()),a(b).each(function(b,e){var f=a(e).find("img");if(f.data("large_image_width")>c)return d=!0,!1}),d){var e={touch:!1};"ontouchstart"in window&&(e.on="click"),b.trigger("zoom.destroy"),b.zoom(e)}},b.prototype.initPhotoswipe=function(){this.zoom_enabled&&this.$images.length>0&&(this.$target.prepend('🔍'),this.$target.on("click",".woocommerce-product-gallery__trigger",this.openPhotoswipe)),this.$target.on("click",".woocommerce-product-gallery__image a",this.openPhotoswipe)},b.prototype.onResetSlidePosition=function(){this.$target.flexslider(0)},b.prototype.getGalleryItems=function(){var b=this.$images,c=[];return b.length>0&&b.each(function(b,d){var e=a(d).find("img"),f=e.attr("data-large_image"),g=e.attr("data-large_image_width"),h=e.attr("data-large_image_height"),i={src:f,w:g,h:h,title:e.attr("title")};c.push(i)}),c},b.prototype.openPhotoswipe=function(b){b.preventDefault();var c,d=a(".pswp")[0],e=this.getGalleryItems(),f=a(b.target);c=f.is(".woocommerce-product-gallery__trigger")?this.$target.find(".flex-active-slide"):f.closest(".woocommerce-product-gallery__image");var g={index:a(c).index(),shareEl:!1,closeOnScroll:!1,history:!1,hideAnimationDuration:0,showAnimationDuration:0},h=new PhotoSwipe(d,PhotoSwipeUI_Default,e,g);h.init()},a.fn.wc_product_gallery=function(a){return new b(this,a),this},a(".woocommerce-product-gallery").each(function(){a(this).wc_product_gallery()})}); \ No newline at end of file From a443419006542b1d04a2e80573d024b7a3474a93 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 31 Mar 2017 11:15:55 +0100 Subject: [PATCH 183/525] remove extract and sanitize orderby against whitelist --- .../class-wc-customer-download-data-store.php | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/includes/data-stores/class-wc-customer-download-data-store.php b/includes/data-stores/class-wc-customer-download-data-store.php index a4a28f512cc..e5d2bc3edc8 100644 --- a/includes/data-stores/class-wc-customer-download-data-store.php +++ b/includes/data-stores/class-wc-customer-download-data-store.php @@ -214,38 +214,37 @@ class WC_Customer_Download_Data_Store implements WC_Customer_Download_Data_Store 'return' => 'objects', ) ); - extract( $args ); - $query = array(); $query[] = "SELECT * FROM {$wpdb->prefix}woocommerce_downloadable_product_permissions WHERE 1=1"; - if ( $user_email ) { - $query[] = $wpdb->prepare( "AND user_email = %s", $user_email ); + if ( $args['user_email'] ) { + $query[] = $wpdb->prepare( "AND user_email = %s", sanitize_email( $args['user_email'] ) ); } - if ( $order_id ) { - $query[] = $wpdb->prepare( "AND order_id = %d", $order_id ); + if ( $args['order_id'] ) { + $query[] = $wpdb->prepare( "AND order_id = %d", $args['order_id'] ); } - if ( $order_key ) { - $query[] = $wpdb->prepare( "AND order_key = %s", $order_key ); + if ( $args['order_key'] ) { + $query[] = $wpdb->prepare( "AND order_key = %s", $args['order_key'] ); } - if ( $product_id ) { - $query[] = $wpdb->prepare( "AND product_id = %d", $product_id ); + if ( $args['product_id'] ) { + $query[] = $wpdb->prepare( "AND product_id = %d", $args['product_id'] ); } - $orderby = esc_sql( $orderby ); - $order = esc_sql( $order ); - $query[] = "ORDER BY {$orderby} {$order}"; + $order = in_array( $args['order'], array( 'permission_id', 'download_id', 'product_id', 'order_id', 'order_key', 'user_email', 'user_id', 'downloads_remaining', 'access_granted', 'access_expires', 'download_count' ) ) ? $args['order'] : 'permission_id'; + $orderby = 'DESC' === strtoupper( $args['orderby'] ) ? 'DESC' : 'ASC'; + $orderby_sql = sanitize_sql_orderby( "{$orderby} {$order}" ); + $query[] = "ORDER BY {$orderby_sql}"; - if ( 0 < $limit ) { - $query[] = $wpdb->prepare( "LIMIT %d", $limit ); + if ( 0 < $args['limit'] ) { + $query[] = $wpdb->prepare( "LIMIT %d", $args['limit'] ); } $raw_downloads = $wpdb->get_results( implode( ' ', $query ) ); - switch ( $return ) { + switch ( $args['return'] ) { case 'ids' : return wp_list_pluck( $raw_downloads, 'permission_id' ); default : From f1a699c259c82a25ddddf9978a392d33caef98f0 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 31 Mar 2017 11:18:22 +0100 Subject: [PATCH 184/525] Cleanup --- .../class-wc-customer-download-data-store.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/includes/data-stores/class-wc-customer-download-data-store.php b/includes/data-stores/class-wc-customer-download-data-store.php index e5d2bc3edc8..a02bd0bf1b3 100644 --- a/includes/data-stores/class-wc-customer-download-data-store.php +++ b/includes/data-stores/class-wc-customer-download-data-store.php @@ -233,10 +233,11 @@ class WC_Customer_Download_Data_Store implements WC_Customer_Download_Data_Store $query[] = $wpdb->prepare( "AND product_id = %d", $args['product_id'] ); } - $order = in_array( $args['order'], array( 'permission_id', 'download_id', 'product_id', 'order_id', 'order_key', 'user_email', 'user_id', 'downloads_remaining', 'access_granted', 'access_expires', 'download_count' ) ) ? $args['order'] : 'permission_id'; - $orderby = 'DESC' === strtoupper( $args['orderby'] ) ? 'DESC' : 'ASC'; - $orderby_sql = sanitize_sql_orderby( "{$orderby} {$order}" ); - $query[] = "ORDER BY {$orderby_sql}"; + $allowed_orders = array( 'permission_id', 'download_id', 'product_id', 'order_id', 'order_key', 'user_email', 'user_id', 'downloads_remaining', 'access_granted', 'access_expires', 'download_count' ); + $order = in_array( $args['order'], $allowed_orders ) ? $args['order'] : 'permission_id'; + $orderby = 'DESC' === strtoupper( $args['orderby'] ) ? 'DESC' : 'ASC'; + $orderby_sql = sanitize_sql_orderby( "{$orderby} {$order}" ); + $query[] = "ORDER BY {$orderby_sql}"; if ( 0 < $args['limit'] ) { $query[] = $wpdb->prepare( "LIMIT %d", $args['limit'] ); From 0d1cfe6fd2420810e7ea512224df8a6ed67baa0a Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 31 Mar 2017 11:22:47 +0100 Subject: [PATCH 185/525] Use prepare on `type` in payment token data store --- includes/data-stores/class-wc-payment-token-data-store.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/data-stores/class-wc-payment-token-data-store.php b/includes/data-stores/class-wc-payment-token-data-store.php index 0d5aea53915..c6e72017019 100644 --- a/includes/data-stores/class-wc-payment-token-data-store.php +++ b/includes/data-stores/class-wc-payment-token-data-store.php @@ -224,7 +224,7 @@ class WC_Payment_Token_Data_Store extends WC_Data_Store_WP implements WC_Payment } if ( $args['user_id'] ) { - $where[] = 'user_id = ' . absint( $args['user_id'] ); + $where[] = $wpdb->prepare( 'user_id = %d', absint( $args['user_id'] ) ); } if ( $args['gateway_id'] ) { @@ -238,7 +238,7 @@ class WC_Payment_Token_Data_Store extends WC_Data_Store_WP implements WC_Payment $where[] = "gateway_id IN ('" . implode( "','", array_map( 'esc_sql', $gateway_ids ) ) . "')"; if ( $args['type'] ) { - $where[] = 'type = ' . esc_sql( $args['type'] ); + $where[] = $wpdb->prepare( 'type = %s', $args['type'] ); } $token_results = $wpdb->get_results( $sql . ' WHERE ' . implode( ' AND ', $where ) ); From 12e28a83f3f1f532424f7c43c331a4db368cde0f Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 31 Mar 2017 11:37:12 +0100 Subject: [PATCH 186/525] WC_Product_Variable_Data_Store_CPT::read_variation_attributes() cast to int --- .../data-stores/class-wc-product-variable-data-store-cpt.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/data-stores/class-wc-product-variable-data-store-cpt.php b/includes/data-stores/class-wc-product-variable-data-store-cpt.php index 237ef7ebf47..22284be2e03 100644 --- a/includes/data-stores/class-wc-product-variable-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-variable-data-store-cpt.php @@ -95,7 +95,7 @@ class WC_Product_Variable_Data_Store_CPT extends WC_Product_Data_Store_CPT imple // Get possible values for this attribute, for only visible variations. $values = array_unique( $wpdb->get_col( $wpdb->prepare( - "SELECT meta_value FROM {$wpdb->postmeta} WHERE meta_key = %s AND post_id IN (" . implode( ',', array_map( 'esc_sql', $child_ids ) ) . ")", + "SELECT meta_value FROM {$wpdb->postmeta} WHERE meta_key = %s AND post_id IN (" . implode( ',', array_map( 'absint', $child_ids ) ) . ")", wc_variation_attribute_name( $attribute['name'] ) ) ) ); From b50312a1d895db4da0e2be3a1a76d89f05c2407d Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 31 Mar 2017 11:50:11 +0100 Subject: [PATCH 187/525] Prevent bad timestamps being used for dates in reports and add nonce field --- includes/admin/reports/class-wc-admin-report.php | 8 +++++++- includes/admin/views/html-report-by-date.php | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/includes/admin/reports/class-wc-admin-report.php b/includes/admin/reports/class-wc-admin-report.php index 13ee20ab597..445607ed62c 100644 --- a/includes/admin/reports/class-wc-admin-report.php +++ b/includes/admin/reports/class-wc-admin-report.php @@ -513,7 +513,13 @@ class WC_Admin_Report { switch ( $current_range ) { case 'custom' : - $this->start_date = strtotime( sanitize_text_field( $_GET['start_date'] ) ); + + if ( ! isset( $_GET['wc_reports_nonce'] ) || ! wp_verify_nonce( $_GET['wc_reports_nonce'], 'custom_range' ) ) { + wp_safe_redirect( remove_query_arg( array( 'start_date', 'end_date', 'range', 'wc_reports_nonce' ) ) ); + exit; + } + + $this->start_date = max( 1262304000, strtotime( sanitize_text_field( $_GET['start_date'] ) ) ); if ( empty( $_GET['end_date'] ) ) { $this->end_date = strtotime( 'midnight', current_time( 'timestamp' ) ); diff --git a/includes/admin/views/html-report-by-date.php b/includes/admin/views/html-report-by-date.php index 16c70276228..6547aa3c545 100644 --- a/includes/admin/views/html-report-by-date.php +++ b/includes/admin/views/html-report-by-date.php @@ -54,6 +54,7 @@ if ( ! defined( 'ABSPATH' ) ) { + From 14802a03079f4725c4c75d53c7bca1a22d5be7df Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 31 Mar 2017 12:10:20 +0100 Subject: [PATCH 188/525] Remove double unserialization --- includes/admin/class-wc-admin-meta-boxes.php | 2 +- includes/api/legacy/v3/class-wc-api-products.php | 2 +- includes/data-stores/class-wc-product-data-store-cpt.php | 4 ++-- includes/legacy/abstract-wc-legacy-product.php | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/includes/admin/class-wc-admin-meta-boxes.php b/includes/admin/class-wc-admin-meta-boxes.php index 59e95bd85bb..2b3eb957e90 100644 --- a/includes/admin/class-wc-admin-meta-boxes.php +++ b/includes/admin/class-wc-admin-meta-boxes.php @@ -91,7 +91,7 @@ class WC_Admin_Meta_Boxes { * Show any stored error messages. */ public function output_errors() { - $errors = maybe_unserialize( get_option( 'woocommerce_meta_box_errors' ) ); + $errors = array_filter( (array) get_option( 'woocommerce_meta_box_errors' ) ); if ( ! empty( $errors ) ) { diff --git a/includes/api/legacy/v3/class-wc-api-products.php b/includes/api/legacy/v3/class-wc-api-products.php index 2cfc7c5786a..d193d9b2341 100644 --- a/includes/api/legacy/v3/class-wc-api-products.php +++ b/includes/api/legacy/v3/class-wc-api-products.php @@ -1752,7 +1752,7 @@ class WC_API_Products extends WC_API_Resource { $id = $product->get_id(); $variations = $request['variations']; - $attributes = (array) maybe_unserialize( get_post_meta( $id, '_product_attributes', true ) ); + $attributes = (array) get_post_meta( $id, '_product_attributes', true ); foreach ( $variations as $menu_order => $data ) { $variation_id = isset( $data['id'] ) ? absint( $data['id'] ) : 0; diff --git a/includes/data-stores/class-wc-product-data-store-cpt.php b/includes/data-stores/class-wc-product-data-store-cpt.php index b1d6f160e6f..d39d96bdf0f 100644 --- a/includes/data-stores/class-wc-product-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-data-store-cpt.php @@ -342,7 +342,7 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da * @since 3.0.0 */ protected function read_attributes( &$product ) { - $meta_values = maybe_unserialize( get_post_meta( $product->get_id(), '_product_attributes', true ) ); + $meta_values = get_post_meta( $product->get_id(), '_product_attributes', true ); if ( $meta_values ) { $attributes = array(); @@ -375,7 +375,7 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da * @since 3.0.0 */ protected function read_downloads( &$product ) { - $meta_values = array_filter( (array) maybe_unserialize( get_post_meta( $product->get_id(), '_downloadable_files', true ) ) ); + $meta_values = array_filter( (array) get_post_meta( $product->get_id(), '_downloadable_files', true ) ); if ( $meta_values ) { $downloads = array(); diff --git a/includes/legacy/abstract-wc-legacy-product.php b/includes/legacy/abstract-wc-legacy-product.php index 9312dfeca3f..2b0939407ae 100644 --- a/includes/legacy/abstract-wc-legacy-product.php +++ b/includes/legacy/abstract-wc-legacy-product.php @@ -162,7 +162,7 @@ abstract class WC_Abstract_Legacy_Product extends WC_Data { */ public function get_variation_default_attributes() { wc_deprecated_function( 'WC_Product_Variable::get_variation_default_attributes', '3.0', 'WC_Product::get_default_attributes' ); - return apply_filters( 'woocommerce_product_default_attributes', array_filter( (array) maybe_unserialize( $this->get_default_attributes() ) ), $this ); + return apply_filters( 'woocommerce_product_default_attributes', $this->get_default_attributes(), $this ); } /** From 58040c94ae35003631f6ee8aa4fa31ff7a817cb2 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 31 Mar 2017 12:29:19 +0100 Subject: [PATCH 189/525] Increase order key length to 22 to support 2.6 Fixes #13850 --- includes/class-wc-order.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/class-wc-order.php b/includes/class-wc-order.php index ad58ee0b2c4..0bc88a60fd3 100644 --- a/includes/class-wc-order.php +++ b/includes/class-wc-order.php @@ -846,11 +846,11 @@ class WC_Order extends WC_Abstract_Order { /** * Set order_key. * - * @param string $value Max length 20 chars. + * @param string $value Max length 22 chars. * @throws WC_Data_Exception */ public function set_order_key( $value ) { - $this->set_prop( 'order_key', substr( $value, 0, 20 ) ); + $this->set_prop( 'order_key', substr( $value, 0, 22 ) ); } /** From 8a201b64c501367b838b11e98c299f06e6680090 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 31 Mar 2017 12:38:18 +0100 Subject: [PATCH 190/525] Only set dates if set/not null Fixes #13848 --- .../class-wc-product-data-store-cpt.php | 38 +++++++++++-------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/includes/data-stores/class-wc-product-data-store-cpt.php b/includes/data-stores/class-wc-product-data-store-cpt.php index b1d6f160e6f..1ff271782d8 100644 --- a/includes/data-stores/class-wc-product-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-data-store-cpt.php @@ -166,21 +166,29 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da // Only update the post when the post data changes. if ( array_intersect( array( 'description', 'short_description', 'name', 'parent_id', 'reviews_allowed', 'status', 'menu_order', 'date_created', 'date_modified', 'slug' ), array_keys( $changes ) ) ) { - wp_update_post( array( - 'ID' => $product->get_id(), - 'post_content' => $product->get_description( 'edit' ), - 'post_excerpt' => $product->get_short_description( 'edit' ), - 'post_title' => $product->get_name( 'edit' ), - 'post_parent' => $product->get_parent_id( 'edit' ), - 'comment_status' => $product->get_reviews_allowed( 'edit' ) ? 'open' : 'closed', - 'post_status' => $product->get_status( 'edit' ) ? $product->get_status( 'edit' ) : 'publish', - 'menu_order' => $product->get_menu_order( 'edit' ), - 'post_date' => gmdate( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getOffsetTimestamp() ), - 'post_date_gmt' => gmdate( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getTimestamp() ), - 'post_modified' => isset( $changes['date_modified'] ) ? gmdate( 'Y-m-d H:i:s', $product->get_date_modified( 'edit' )->getOffsetTimestamp() ) : current_time( 'mysql' ), - 'post_modified_gmt' => isset( $changes['date_modified'] ) ? gmdate( 'Y-m-d H:i:s', $product->get_date_modified( 'edit' )->getTimestamp() ) : current_time( 'mysql', 1 ), - 'post_name' => $product->get_slug( 'edit' ), - ) ); + $post_data = array( + 'ID' => $product->get_id(), + 'post_content' => $product->get_description( 'edit' ), + 'post_excerpt' => $product->get_short_description( 'edit' ), + 'post_title' => $product->get_name( 'edit' ), + 'post_parent' => $product->get_parent_id( 'edit' ), + 'comment_status' => $product->get_reviews_allowed( 'edit' ) ? 'open' : 'closed', + 'post_status' => $product->get_status( 'edit' ) ? $product->get_status( 'edit' ) : 'publish', + 'menu_order' => $product->get_menu_order( 'edit' ), + 'post_name' => $product->get_slug( 'edit' ), + ); + if ( $product->get_date_created( 'edit' ) ) { + $post_data['post_date'] = gmdate( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getOffsetTimestamp() ); + $post_data['post_date_gmt'] = gmdate( 'Y-m-d H:i:s', $product->get_date_created( 'edit' )->getTimestamp() ); + } + if ( isset( $changes['date_modified'] ) && $product->get_date_modified( 'edit' ) ) { + $post_data['post_modified'] = gmdate( 'Y-m-d H:i:s', $product->get_date_modified( 'edit' )->getOffsetTimestamp() ); + $post_data['post_modified_gmt'] = gmdate( 'Y-m-d H:i:s', $product->get_date_modified( 'edit' )->getTimestamp() ); + } else { + $post_data['post_modified'] = current_time( 'mysql' ); + $post_data['post_modified_gmt'] = current_time( 'mysql', 1 ); + } + wp_update_post( $post_data ); } $this->update_post_meta( $product ); From a2e60c51e31a6b986245379e65712ae06e460ee8 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 31 Mar 2017 12:42:07 +0100 Subject: [PATCH 191/525] use term_taxonomy_id in upgrade routine Fixes #13849 --- includes/wc-update-functions.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/includes/wc-update-functions.php b/includes/wc-update-functions.php index 32ee46c0b63..df048f7f18b 100644 --- a/includes/wc-update-functions.php +++ b/includes/wc-update-functions.php @@ -1043,39 +1043,39 @@ function wc_update_300_product_visibility() { WC_Install::create_terms(); if ( $featured_term = get_term_by( 'name', 'featured', 'product_visibility' ) ) { - $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_featured' AND meta_value = 'yes';", $featured_term->term_id ) ); + $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_featured' AND meta_value = 'yes';", $featured_term->term_taxonomy_id ) ); } if ( $exclude_search_term = get_term_by( 'name', 'exclude-from-search', 'product_visibility' ) ) { - $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_visibility' AND meta_value IN ('hidden', 'catalog');", $exclude_search_term->term_id ) ); + $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_visibility' AND meta_value IN ('hidden', 'catalog');", $exclude_search_term->term_taxonomy_id ) ); } if ( $exclude_catalog_term = get_term_by( 'name', 'exclude-from-catalog', 'product_visibility' ) ) { - $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_visibility' AND meta_value IN ('hidden', 'search');", $exclude_catalog_term->term_id ) ); + $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_visibility' AND meta_value IN ('hidden', 'search');", $exclude_catalog_term->term_taxonomy_id ) ); } if ( $outofstock_term = get_term_by( 'name', 'outofstock', 'product_visibility' ) ) { - $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_stock_status' AND meta_value = 'outofstock';", $outofstock_term->term_id ) ); + $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_stock_status' AND meta_value = 'outofstock';", $outofstock_term->term_taxonomy_id ) ); } if ( $rating_term = get_term_by( 'name', 'rated-1', 'product_visibility' ) ) { - $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_wc_average_rating' AND ROUND( meta_value ) = 1;", $rating_term->term_id ) ); + $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_wc_average_rating' AND ROUND( meta_value ) = 1;", $rating_term->term_taxonomy_id ) ); } if ( $rating_term = get_term_by( 'name', 'rated-2', 'product_visibility' ) ) { - $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_wc_average_rating' AND ROUND( meta_value ) = 2;", $rating_term->term_id ) ); + $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_wc_average_rating' AND ROUND( meta_value ) = 2;", $rating_term->term_taxonomy_id ) ); } if ( $rating_term = get_term_by( 'name', 'rated-3', 'product_visibility' ) ) { - $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_wc_average_rating' AND ROUND( meta_value ) = 3;", $rating_term->term_id ) ); + $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_wc_average_rating' AND ROUND( meta_value ) = 3;", $rating_term->term_taxonomy_id ) ); } if ( $rating_term = get_term_by( 'name', 'rated-4', 'product_visibility' ) ) { - $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_wc_average_rating' AND ROUND( meta_value ) = 4;", $rating_term->term_id ) ); + $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_wc_average_rating' AND ROUND( meta_value ) = 4;", $rating_term->term_taxonomy_id ) ); } if ( $rating_term = get_term_by( 'name', 'rated-5', 'product_visibility' ) ) { - $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_wc_average_rating' AND ROUND( meta_value ) = 5;", $rating_term->term_id ) ); + $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->term_relationships} SELECT post_id, %d, 0 FROM {$wpdb->postmeta} WHERE meta_key = '_wc_average_rating' AND ROUND( meta_value ) = 5;", $rating_term->term_taxonomy_id ) ); } } From 0f5046621943263725708340b83cec666ae8598f Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 31 Mar 2017 12:57:53 +0100 Subject: [PATCH 192/525] Poland uses space for thousands Fixes #13846 --- i18n/locale-info.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/locale-info.php b/i18n/locale-info.php index adb7b732dad..fef6ddd56a9 100644 --- a/i18n/locale-info.php +++ b/i18n/locale-info.php @@ -438,7 +438,7 @@ return array( 'currency_code' => 'PLN', 'currency_pos' => 'right', 'thousand_sep' => ',', - 'decimal_sep' => '.', + 'decimal_sep' => ' ', 'num_decimals' => 2, 'weight_unit' => 'kg', 'dimension_unit' => 'cm', From 0c2ab2dabb1b36650fbec08b68ff684333de69af Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 31 Mar 2017 13:53:37 +0100 Subject: [PATCH 193/525] Fade gallery in after delay to avoid flash Closes #13847 --- assets/css/woocommerce-rtl.css | 2 +- assets/css/woocommerce.css | 2 +- assets/css/woocommerce.scss | 8 +++----- assets/js/frontend/add-to-cart-variation.js | 3 --- assets/js/frontend/add-to-cart-variation.min.js | 2 +- assets/js/frontend/single-product.js | 8 ++++++++ assets/js/frontend/single-product.min.js | 2 +- 7 files changed, 15 insertions(+), 12 deletions(-) diff --git a/assets/css/woocommerce-rtl.css b/assets/css/woocommerce-rtl.css index 413d2d27042..ca26cabe792 100644 --- a/assets/css/woocommerce-rtl.css +++ b/assets/css/woocommerce-rtl.css @@ -1 +1 @@ -@charset "UTF-8";@-webkit-keyframes spin{100%{-webkit-transform:rotate(-360deg)}}@-moz-keyframes spin{100%{-moz-transform:rotate(-360deg)}}@keyframes spin{100%{-webkit-transform:rotate(-360deg);-moz-transform:rotate(-360deg);-ms-transform:rotate(-360deg);-o-transform:rotate(-360deg);transform:rotate(-360deg)}}@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}.woocommerce-store-notice,p.demo_store{position:absolute;top:0;right:0;left:0;margin:0;width:100%;font-size:1em;padding:1em 0;text-align:center;background-color:#a46497;color:#fff;z-index:99998;box-shadow:0 1px 1em rgba(0,0,0,.2);display:none}.woocommerce-store-notice a,p.demo_store a{color:#fff;text-decoration:underline}.admin-bar p.demo_store{top:32px}.clear{clear:both}.woocommerce .blockUI.blockOverlay{position:relative}.woocommerce .blockUI.blockOverlay::before,.woocommerce .loader::before{height:1em;width:1em;display:block;position:absolute;top:50%;right:50%;margin-right:-.5em;margin-top:-.5em;content:'';-webkit-animation:spin 1s ease-in-out infinite;-moz-animation:spin 1s ease-in-out infinite;animation:spin 1s ease-in-out infinite;background:url(../images/icons/loader.svg) center center;background-size:cover;line-height:1;text-align:center;font-size:2em;color:rgba(0,0,0,.75)}.woocommerce a.remove{display:block;font-size:1.5em;height:1em;width:1em;text-align:center;line-height:1;border-radius:100%;color:red!important;text-decoration:none;font-weight:700;border:0}.woocommerce a.remove:hover{color:#fff!important;background:red}.woocommerce small.note{display:block;color:#777;font-size:.857em;margin-top:10px}.woocommerce .woocommerce-breadcrumb{margin:0 0 1em;padding:0;font-size:.92em;color:#777}.woocommerce .woocommerce-breadcrumb::after,.woocommerce .woocommerce-breadcrumb::before{content:' ';display:table}.woocommerce .woocommerce-breadcrumb::after{clear:both}.woocommerce .woocommerce-breadcrumb a{color:#777}.woocommerce .quantity .qty{width:3.631em;text-align:center}.woocommerce div.product{margin-bottom:0;position:relative}.woocommerce div.product .product_title{clear:none;margin-top:0;padding:0}.woocommerce #reviews #comments .add_review::after,.woocommerce .products ul::after,.woocommerce div.product form.cart::after,.woocommerce div.product p.cart::after,.woocommerce nav.woocommerce-pagination ul,.woocommerce ul.products::after{clear:both}.woocommerce div.product p.price,.woocommerce div.product span.price{color:#77a464;font-size:1.25em}.woocommerce div.product p.price ins,.woocommerce div.product span.price ins{background:inherit;font-weight:700}.woocommerce div.product p.price del,.woocommerce div.product span.price del{opacity:.5}.woocommerce div.product p.stock{font-size:.92em}.woocommerce div.product .stock{color:#77a464}.woocommerce div.product .out-of-stock{color:red}.woocommerce div.product .woocommerce-product-rating{margin-bottom:1.618em}.woocommerce div.product div.images{margin-bottom:2em}.woocommerce div.product div.images img{display:block;width:100%;height:auto;box-shadow:none}.woocommerce div.product div.images div.thumbnails{padding-top:1em}.woocommerce div.product div.images.woocommerce-product-gallery{position:relative}.woocommerce div.product div.images .woocommerce-product-gallery__wrapper{transition:all cubic-bezier(.795,-.035,0,1) .5s}.woocommerce div.product div.images .woocommerce-product-gallery__image:nth-child(n+2){width:25%;display:inline-block}.woocommerce div.product div.images .woocommerce-product-gallery__trigger{position:absolute;top:.5em;left:.5em;font-size:2em;z-index:9;width:36px;height:36px;background:#fff;text-indent:-9999px;border-radius:100%;box-sizing:content-box}.woocommerce div.product div.images .woocommerce-product-gallery__trigger:before{content:"";display:block;width:10px;height:10px;border:2px solid #000;border-radius:100%;position:absolute;top:9px;right:9px;box-sizing:content-box}.woocommerce div.product div.images .woocommerce-product-gallery__trigger:after{content:"";display:block;width:2px;height:8px;background:#000;border-radius:6px;position:absolute;top:19px;right:22px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);box-sizing:content-box}.woocommerce div.product div.images .flex-control-thumbs{overflow:hidden;zoom:1;margin:0;padding:0}.woocommerce div.product div.images .flex-control-thumbs li{width:25%;float:right;margin:0;list-style:none}.woocommerce div.product div.images .flex-control-thumbs li img{cursor:pointer;opacity:.5;margin:0}.woocommerce div.product div.images .flex-control-thumbs li img.flex-active,.woocommerce div.product div.images .flex-control-thumbs li img:hover{opacity:1}.woocommerce div.product div.summary{margin-bottom:2em}.woocommerce div.product div.social{text-align:left;margin:0 0 1em}.woocommerce div.product div.social span{margin:0 2px 0 0}.woocommerce div.product div.social span span{margin:0}.woocommerce div.product div.social span .stButton .chicklets{padding-right:16px;width:0}.woocommerce div.product div.social iframe{float:right;margin-top:3px}.woocommerce div.product .woocommerce-tabs ul.tabs{list-style:none;padding:0 1em 0 0;margin:0 0 1.618em;overflow:hidden;position:relative}.woocommerce div.product .woocommerce-tabs ul.tabs li{border:1px solid #d3ced2;background-color:#ebe9eb;display:inline-block;position:relative;z-index:0;border-radius:4px 4px 0 0;margin:0 -5px;padding:0 1em}.woocommerce div.product .woocommerce-tabs ul.tabs li a{display:inline-block;padding:.5em 0;font-weight:700;color:#515151;text-decoration:none}.woocommerce div.product form.cart::after,.woocommerce div.product form.cart::before,.woocommerce div.product p.cart::after,.woocommerce div.product p.cart::before{display:table;content:' '}.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover{text-decoration:none;color:#6b6b6b}.woocommerce div.product .woocommerce-tabs ul.tabs li.active{background:#fff;z-index:2;border-bottom-color:#fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{color:inherit;text-shadow:inherit}.woocommerce div.product .woocommerce-tabs ul.tabs li.active::before{box-shadow:-2px 2px 0 #fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active::after{box-shadow:2px 2px 0 #fff}.woocommerce div.product .woocommerce-tabs ul.tabs li::after,.woocommerce div.product .woocommerce-tabs ul.tabs li::before{border:1px solid #d3ced2;position:absolute;bottom:-1px;width:5px;height:5px;content:' '}.woocommerce div.product .woocommerce-tabs ul.tabs li::before{right:-6px;-webkit-border-bottom-left-radius:4px;-moz-border-bottom-left-radius:4px;border-bottom-left-radius:4px;border-width:0 0 1px 1px;box-shadow:-2px 2px 0 #ebe9eb}.woocommerce div.product .woocommerce-tabs ul.tabs li::after{left:-6px;-webkit-border-bottom-right-radius:4px;-moz-border-bottom-right-radius:4px;border-bottom-right-radius:4px;border-width:0 1px 1px 0;box-shadow:2px 2px 0 #ebe9eb}.woocommerce div.product .woocommerce-tabs ul.tabs::before{position:absolute;content:' ';width:100%;bottom:0;right:0;border-bottom:1px solid #d3ced2;z-index:1}.woocommerce div.product .woocommerce-tabs .panel{margin:0 0 2em;padding:0}.woocommerce div.product form.cart,.woocommerce div.product p.cart{margin-bottom:2em}.woocommerce div.product form.cart div.quantity{float:right;margin:0 0 0 4px}.woocommerce div.product form.cart table{border-width:0 0 1px}.woocommerce div.product form.cart table td{padding-right:0}.woocommerce div.product form.cart table div.quantity{float:none;margin:0}.woocommerce div.product form.cart table small.stock{display:block;float:none}.woocommerce div.product form.cart .variations{margin-bottom:1em;border:0;width:100%}.woocommerce div.product form.cart .variations td,.woocommerce div.product form.cart .variations th{border:0;vertical-align:top;line-height:2em}.woocommerce div.product form.cart .variations label{font-weight:700}.woocommerce div.product form.cart .variations select{max-width:100%;min-width:75%;display:inline-block;margin-left:1em}.woocommerce div.product form.cart .variations td.label{padding-left:1em}.woocommerce div.product form.cart .woocommerce-variation-description p{margin-bottom:1em}.woocommerce div.product form.cart .reset_variations{visibility:hidden;font-size:.83em}.woocommerce div.product form.cart .wc-no-matching-variations{display:none}.woocommerce div.product form.cart .button{vertical-align:middle;float:right}.woocommerce div.product form.cart .group_table td.label{padding-left:1em;padding-right:1em}.woocommerce div.product form.cart .group_table td{vertical-align:top;padding-bottom:.5em;border:0}.woocommerce div.product form.cart .group_table td:first-child{width:4em;text-align:center}.woocommerce div.product form.cart .group_table .wc-grouped-product-add-to-cart-checkbox{display:inline-block;width:auto;margin:0 auto;transform:scale(1.5,1.5)}.woocommerce span.onsale{min-height:3.236em;min-width:3.236em;padding:.202em;font-weight:700;position:absolute;text-align:center;line-height:3.236;top:-.5em;right:-.5em;margin:0;border-radius:100%;background-color:#77a464;color:#fff;font-size:.857em;-webkit-font-smoothing:antialiased;z-index:9}.woocommerce .products ul,.woocommerce ul.products{margin:0 0 1em;padding:0;list-style:none;clear:both}.woocommerce .products ul::after,.woocommerce .products ul::before,.woocommerce ul.products::after,.woocommerce ul.products::before{content:' ';display:table}.woocommerce .products ul li,.woocommerce ul.products li{list-style:none}.woocommerce ul.products li.product .onsale{top:0;left:0;right:auto;margin:-.5em 0 0 -.5em}.woocommerce ul.products li.product .woocommerce-loop-category__title,.woocommerce ul.products li.product .woocommerce-loop-product__title,.woocommerce ul.products li.product h3{padding:.5em 0;margin:0;font-size:1em}.woocommerce ul.products li.product a{text-decoration:none}.woocommerce ul.products li.product a img{width:100%;height:auto;display:block;margin:0 0 1em;box-shadow:none}.woocommerce ul.products li.product strong{display:block}.woocommerce ul.products li.product .star-rating{font-size:.857em}.woocommerce ul.products li.product .button{margin-top:1em}.woocommerce ul.products li.product .price{color:#77a464;display:block;font-weight:400;margin-bottom:.5em;font-size:.857em}.woocommerce ul.products li.product .price del{color:inherit;opacity:.5;display:block}.woocommerce ul.products li.product .price ins{background:0 0;font-weight:700}.woocommerce ul.products li.product .price .from{font-size:.67em;margin:-2px 0 0;text-transform:uppercase;color:rgba(132,132,132,.5)}.woocommerce .woocommerce-ordering,.woocommerce .woocommerce-result-count{margin:0 0 1em}.woocommerce .woocommerce-ordering select{vertical-align:top}.woocommerce nav.woocommerce-pagination{text-align:center}.woocommerce nav.woocommerce-pagination ul{display:inline-block;white-space:nowrap;padding:0;border:1px solid #d3ced2;border-left:0;margin:1px}.woocommerce nav.woocommerce-pagination ul li{border-left:1px solid #d3ced2;padding:0;margin:0;float:right;display:inline;overflow:hidden}.woocommerce nav.woocommerce-pagination ul li a,.woocommerce nav.woocommerce-pagination ul li span{margin:0;text-decoration:none;line-height:1;font-size:1em;font-weight:400;padding:.5em;min-width:1em;display:block}.woocommerce nav.woocommerce-pagination ul li a:focus,.woocommerce nav.woocommerce-pagination ul li a:hover,.woocommerce nav.woocommerce-pagination ul li span.current{background:#ebe9eb;color:#8a7e88}.woocommerce #respond input#submit,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button{font-size:100%;margin:0;line-height:1;cursor:pointer;position:relative;text-decoration:none;overflow:visible;padding:.618em 1em;font-weight:700;border-radius:3px;right:auto;color:#515151;background-color:#ebe9eb;border:0;white-space:nowrap;display:inline-block;background-image:none;box-shadow:none;-webkit-box-shadow:none;text-shadow:none}.woocommerce #respond input#submit.loading,.woocommerce a.button.loading,.woocommerce button.button.loading,.woocommerce input.button.loading{opacity:.25;padding-left:2.618em}.woocommerce #respond input#submit.loading::after,.woocommerce a.button.loading::after,.woocommerce button.button.loading::after,.woocommerce input.button.loading::after{font-family:WooCommerce;content:'\e01c';vertical-align:top;-webkit-font-smoothing:antialiased;font-weight:400;position:absolute;top:.618em;left:1em;-webkit-animation:spin 2s linear infinite;-moz-animation:spin 2s linear infinite;animation:spin 2s linear infinite}.woocommerce #respond input#submit.added::after,.woocommerce a.button.added::after,.woocommerce button.button.added::after,.woocommerce input.button.added::after{font-family:WooCommerce;content:'\e017';margin-right:.53em;vertical-align:bottom}.woocommerce #respond input#submit:hover,.woocommerce a.button:hover,.woocommerce button.button:hover,.woocommerce input.button:hover{background-color:#dad8da;text-decoration:none;background-image:none;color:#515151}.woocommerce #respond input#submit.alt,.woocommerce a.button.alt,.woocommerce button.button.alt,.woocommerce input.button.alt{background-color:#a46497;color:#fff;-webkit-font-smoothing:antialiased}.woocommerce #respond input#submit.alt:hover,.woocommerce a.button.alt:hover,.woocommerce button.button.alt:hover,.woocommerce input.button.alt:hover{background-color:#935386;color:#fff}.woocommerce #respond input#submit.alt.disabled,.woocommerce #respond input#submit.alt.disabled:hover,.woocommerce #respond input#submit.alt:disabled,.woocommerce #respond input#submit.alt:disabled:hover,.woocommerce #respond input#submit.alt:disabled[disabled],.woocommerce #respond input#submit.alt:disabled[disabled]:hover,.woocommerce a.button.alt.disabled,.woocommerce a.button.alt.disabled:hover,.woocommerce a.button.alt:disabled,.woocommerce a.button.alt:disabled:hover,.woocommerce a.button.alt:disabled[disabled],.woocommerce a.button.alt:disabled[disabled]:hover,.woocommerce button.button.alt.disabled,.woocommerce button.button.alt.disabled:hover,.woocommerce button.button.alt:disabled,.woocommerce button.button.alt:disabled:hover,.woocommerce button.button.alt:disabled[disabled],.woocommerce button.button.alt:disabled[disabled]:hover,.woocommerce input.button.alt.disabled,.woocommerce input.button.alt.disabled:hover,.woocommerce input.button.alt:disabled,.woocommerce input.button.alt:disabled:hover,.woocommerce input.button.alt:disabled[disabled],.woocommerce input.button.alt:disabled[disabled]:hover{background-color:#a46497;color:#fff}.woocommerce #respond input#submit.disabled,.woocommerce #respond input#submit:disabled,.woocommerce #respond input#submit:disabled[disabled],.woocommerce a.button.disabled,.woocommerce a.button:disabled,.woocommerce a.button:disabled[disabled],.woocommerce button.button.disabled,.woocommerce button.button:disabled,.woocommerce button.button:disabled[disabled],.woocommerce input.button.disabled,.woocommerce input.button:disabled,.woocommerce input.button:disabled[disabled]{color:inherit;cursor:not-allowed;opacity:.5;padding:.618em 1em}.woocommerce #respond input#submit.disabled:hover,.woocommerce #respond input#submit:disabled:hover,.woocommerce #respond input#submit:disabled[disabled]:hover,.woocommerce a.button.disabled:hover,.woocommerce a.button:disabled:hover,.woocommerce a.button:disabled[disabled]:hover,.woocommerce button.button.disabled:hover,.woocommerce button.button:disabled:hover,.woocommerce button.button:disabled[disabled]:hover,.woocommerce input.button.disabled:hover,.woocommerce input.button:disabled:hover,.woocommerce input.button:disabled[disabled]:hover{color:inherit;background-color:#ebe9eb}.woocommerce .cart .button,.woocommerce .cart input.button{float:none}.woocommerce a.added_to_cart{padding-top:.5em;white-space:nowrap;display:inline-block}.woocommerce #reviews #comments .add_review::after,.woocommerce #reviews #comments .add_review::before,.woocommerce #reviews #comments ol.commentlist li .comment-text::after,.woocommerce #reviews #comments ol.commentlist li .comment-text::before,.woocommerce #reviews #comments ol.commentlist::after,.woocommerce #reviews #comments ol.commentlist::before{content:' ';display:table}.woocommerce #reviews h2 small{float:left;color:#777;font-size:15px;margin:10px 0 0}.woocommerce #reviews h2 small a{text-decoration:none;color:#777}.woocommerce #reviews h3{margin:0}.woocommerce #reviews #respond{margin:0;border:0;padding:0}.woocommerce #reviews #comment{height:75px}.woocommerce #reviews #comments h2{clear:none}.woocommerce #review_form #respond::after,.woocommerce #reviews #comments ol.commentlist li .comment-text::after,.woocommerce #reviews #comments ol.commentlist::after,.woocommerce .woocommerce-product-rating::after,.woocommerce ul.cart_list li dl::after,.woocommerce ul.cart_list li::after,.woocommerce ul.product_list_widget li dl::after,.woocommerce ul.product_list_widget li::after{clear:both}.woocommerce #reviews #comments ol.commentlist{margin:0;width:100%;background:0 0;list-style:none}.woocommerce #reviews #comments ol.commentlist li{padding:0;margin:0 0 20px;position:relative;background:100%;border:0}.woocommerce #reviews #comments ol.commentlist li .meta{color:#777;font-size:.75em}.woocommerce #reviews #comments ol.commentlist li img.avatar{float:right;position:absolute;top:0;right:0;padding:3px;width:32px;height:auto;background:#ebe9eb;border:1px solid #e4e1e3;margin:0;box-shadow:none}.woocommerce #reviews #comments ol.commentlist li .comment-text{margin:0 50px 0 0;border:1px solid #e4e1e3;border-radius:4px;padding:1em 1em 0}.woocommerce #reviews #comments ol.commentlist li .comment-text p{margin:0 0 1em}.woocommerce #reviews #comments ol.commentlist li .comment-text p.meta{font-size:.83em}.woocommerce #reviews #comments ol.commentlist ul.children{list-style:none;margin:20px 50px 0 0}.woocommerce #reviews #comments ol.commentlist ul.children .star-rating{display:none}.woocommerce #reviews #comments ol.commentlist #respond{border:1px solid #e4e1e3;border-radius:4px;padding:1em 1em 0;margin:20px 50px 0 0}.woocommerce #reviews #comments .commentlist>li::before{content:''}.woocommerce .star-rating{float:left;overflow:hidden;position:relative;height:1em;line-height:1;font-size:1em;width:5.4em;font-family:star}.woocommerce .star-rating::before{content:'\73\73\73\73\73';color:#d3ced2;float:right;top:0;right:0;position:absolute}.woocommerce .star-rating span{overflow:hidden;float:right;top:0;right:0;position:absolute;padding-top:1.5em}.woocommerce .star-rating span::before{content:'\53\53\53\53\53';top:0;position:absolute;right:0}.woocommerce .woocommerce-product-rating{line-height:2;display:block}.woocommerce .woocommerce-product-rating::after,.woocommerce .woocommerce-product-rating::before{content:' ';display:table}.woocommerce .woocommerce-product-rating .star-rating{margin:.5em 0 0 4px;float:right}.woocommerce .products .star-rating{display:block;margin:0 0 .5em;float:none}.woocommerce .hreview-aggregate .star-rating{margin:10px 0 0}.woocommerce #review_form #respond{position:static;margin:0;width:auto;padding:0;background:0 0;border:0}.woocommerce #review_form #respond::after,.woocommerce #review_form #respond::before{content:' ';display:table}.woocommerce p.stars a::before,.woocommerce p.stars a:hover~a::before{content:'\e021'}.woocommerce #review_form #respond p{margin:0 0 10px}.woocommerce #review_form #respond .form-submit input{right:auto}.woocommerce #review_form #respond textarea{box-sizing:border-box;width:100%}.woocommerce p.stars a{position:relative;height:1em;width:1em;text-indent:-999em;display:inline-block;text-decoration:none}.woocommerce p.stars a::before{display:block;position:absolute;top:0;right:0;width:1em;height:1em;line-height:1;font-family:WooCommerce;text-indent:0}.woocommerce table.shop_attributes td,.woocommerce table.shop_attributes th{line-height:1.5;border-bottom:1px dotted rgba(0,0,0,.1);border-top:0;margin:0}.woocommerce p.stars.selected a.active::before,.woocommerce p.stars:hover a::before{content:'\e020'}.woocommerce p.stars.selected a.active~a::before{content:'\e021'}.woocommerce p.stars.selected a:not(.active)::before{content:'\e020'}.woocommerce table.shop_attributes{border:0;border-top:1px dotted rgba(0,0,0,.1);margin-bottom:1.618em;width:100%}.woocommerce table.shop_attributes th{width:150px;font-weight:700;padding:8px}.woocommerce table.shop_attributes td{font-style:italic;padding:0}.woocommerce table.shop_attributes td p{margin:0;padding:8px 0}.woocommerce table.shop_attributes tr:nth-child(even) td,.woocommerce table.shop_attributes tr:nth-child(even) th{background:rgba(0,0,0,.025)}.woocommerce table.shop_table{border:1px solid rgba(0,0,0,.1);margin:0 0 24px -1px;text-align:right;width:100%;border-collapse:separate;border-radius:5px}.woocommerce table.shop_table th{font-weight:700;padding:9px 12px}.woocommerce table.shop_table td{border-top:1px solid rgba(0,0,0,.1);padding:6px 12px;vertical-align:middle}.woocommerce table.shop_table td small{font-weight:400}.woocommerce table.shop_table tbody:first-child tr:first-child td,.woocommerce table.shop_table tbody:first-child tr:first-child th{border-top:0}.woocommerce table.shop_table tbody th,.woocommerce table.shop_table tfoot td,.woocommerce table.shop_table tfoot th{font-weight:700;border-top:1px solid rgba(0,0,0,.1)}.woocommerce table.my_account_orders{font-size:.85em}.woocommerce table.my_account_orders td,.woocommerce table.my_account_orders th{padding:4px 8px;vertical-align:middle}.woocommerce table.my_account_orders .button{white-space:nowrap}.woocommerce table.my_account_orders .order-actions{text-align:left}.woocommerce table.my_account_orders .order-actions .button{margin:.125em .25em .125em 0}.woocommerce table.woocommerce-MyAccount-downloads td,.woocommerce table.woocommerce-MyAccount-downloads th{vertical-align:top;text-align:center}.woocommerce table.woocommerce-MyAccount-downloads td:first-child,.woocommerce table.woocommerce-MyAccount-downloads td:last-child,.woocommerce table.woocommerce-MyAccount-downloads th:first-child,.woocommerce table.woocommerce-MyAccount-downloads th:last-child{text-align:right}.woocommerce table.woocommerce-MyAccount-downloads td .woocommerce-MyAccount-downloads-file::before,.woocommerce table.woocommerce-MyAccount-downloads th .woocommerce-MyAccount-downloads-file::before{content:'\2193';display:inline-block}.woocommerce td.product-name .wc-item-meta,.woocommerce td.product-name dl.variation{list-style:none}.woocommerce td.product-name .wc-item-meta .wc-item-meta-label,.woocommerce td.product-name .wc-item-meta dt,.woocommerce td.product-name dl.variation .wc-item-meta-label,.woocommerce td.product-name dl.variation dt{float:right;clear:both;margin-left:.25em;display:inline-block;list-style:none}.woocommerce td.product-name .wc-item-meta dd,.woocommerce td.product-name dl.variation dd{margin:0}.woocommerce td.product-name .wc-item-meta p,.woocommerce td.product-name .wc-item-meta:last-child,.woocommerce td.product-name dl.variation p,.woocommerce td.product-name dl.variation:last-child{margin-bottom:0}.woocommerce td.product-name p.backorder_notification{font-size:.83em}.woocommerce td.product-quantity{min-width:80px}.woocommerce ul.cart_list,.woocommerce ul.product_list_widget{list-style:none;padding:0;margin:0}.woocommerce ul.cart_list li,.woocommerce ul.product_list_widget li{padding:4px 0;margin:0;list-style:none}.woocommerce ul.cart_list li::after,.woocommerce ul.cart_list li::before,.woocommerce ul.product_list_widget li::after,.woocommerce ul.product_list_widget li::before{content:' ';display:table}.woocommerce ul.cart_list li a,.woocommerce ul.product_list_widget li a{display:block;font-weight:700}.woocommerce ul.cart_list li img,.woocommerce ul.product_list_widget li img{float:left;margin-right:4px;width:32px;height:auto;box-shadow:none}.woocommerce ul.cart_list li dl,.woocommerce ul.product_list_widget li dl{margin:0;padding-right:1em;border-right:2px solid rgba(0,0,0,.1)}.woocommerce ul.cart_list li dl::after,.woocommerce ul.cart_list li dl::before,.woocommerce ul.product_list_widget li dl::after,.woocommerce ul.product_list_widget li dl::before{content:' ';display:table}.woocommerce ul.cart_list li dl dd,.woocommerce ul.cart_list li dl dt,.woocommerce ul.product_list_widget li dl dd,.woocommerce ul.product_list_widget li dl dt{display:inline-block;float:right;margin-bottom:1em}.woocommerce ul.cart_list li dl dt,.woocommerce ul.product_list_widget li dl dt{font-weight:700;padding:0 0 .25em;margin:0 0 0 4px;clear:right}#add_payment_method .wc-proceed-to-checkout::after,.woocommerce .widget_layered_nav ul li::after,.woocommerce .widget_rating_filter ul li::after,.woocommerce .widget_shopping_cart .buttons::after,.woocommerce ul.order_details::after,.woocommerce-account .addresses .title::after,.woocommerce-account .woocommerce::after,.woocommerce-cart .wc-proceed-to-checkout::after,.woocommerce-checkout .wc-proceed-to-checkout::after,.woocommerce-error::after,.woocommerce-info::after,.woocommerce-message::after,.woocommerce.widget_shopping_cart .buttons::after{clear:both}.woocommerce ul.cart_list li dl dd,.woocommerce ul.product_list_widget li dl dd{padding:0 0 .25em}.woocommerce ul.cart_list li dl dd p:last-child,.woocommerce ul.product_list_widget li dl dd p:last-child{margin-bottom:0}.woocommerce ul.cart_list li .star-rating,.woocommerce ul.product_list_widget li .star-rating{float:none}.woocommerce .widget_shopping_cart .total,.woocommerce.widget_shopping_cart .total{border-top:3px double #ebe9eb;padding:4px 0 0}.woocommerce .widget_shopping_cart .total strong,.woocommerce.widget_shopping_cart .total strong{min-width:40px;display:inline-block}.woocommerce .widget_shopping_cart .cart_list li,.woocommerce.widget_shopping_cart .cart_list li{padding-right:2em;position:relative;padding-top:0}.woocommerce .widget_shopping_cart .cart_list li a.remove,.woocommerce.widget_shopping_cart .cart_list li a.remove{position:absolute;top:0;right:0}.woocommerce .widget_shopping_cart .buttons::after,.woocommerce .widget_shopping_cart .buttons::before,.woocommerce.widget_shopping_cart .buttons::after,.woocommerce.widget_shopping_cart .buttons::before{content:' ';display:table}.woocommerce .widget_shopping_cart .buttons a,.woocommerce.widget_shopping_cart .buttons a{margin-left:5px;margin-bottom:5px}.woocommerce form .form-row{padding:3px;margin:0 0 6px}.woocommerce form .form-row [placeholder]:focus::-webkit-input-placeholder{-webkit-transition:opacity .5s .5s ease;-moz-transition:opacity .5s .5s ease;transition:opacity .5s .5s ease;opacity:0}.woocommerce form .form-row label{line-height:2}.woocommerce form .form-row label.hidden{visibility:hidden}.woocommerce form .form-row label.inline{display:inline}.woocommerce form .form-row select{cursor:pointer;margin:0}.woocommerce form .form-row .required{color:red;font-weight:700;border:0}.woocommerce form .form-row .input-checkbox{display:inline;margin:-2px 0 0 8px;text-align:center;vertical-align:middle}.woocommerce form .form-row input.input-text,.woocommerce form .form-row textarea{box-sizing:border-box;width:100%;margin:0;outline:0;line-height:1}.woocommerce form .form-row textarea{height:4em;line-height:1.5;display:block;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.woocommerce form .form-row .select2-container{width:100%;line-height:2em}.woocommerce form .form-row.woocommerce-invalid label{color:#a00}.woocommerce form .form-row.woocommerce-invalid .select2-container,.woocommerce form .form-row.woocommerce-invalid input.input-text,.woocommerce form .form-row.woocommerce-invalid select{border-color:#a00}.woocommerce form .form-row.woocommerce-validated .select2-container,.woocommerce form .form-row.woocommerce-validated input.input-text,.woocommerce form .form-row.woocommerce-validated select{border-color:#69bf29}.woocommerce form .form-row ::-webkit-input-placeholder{line-height:normal}.woocommerce form .form-row :-moz-placeholder{line-height:normal}.woocommerce form .form-row :-ms-input-placeholder{line-height:normal}.woocommerce form.checkout_coupon,.woocommerce form.login,.woocommerce form.register{border:1px solid #d3ced2;padding:20px;margin:2em 0;text-align:right;border-radius:5px}.woocommerce ul#shipping_method{list-style:none;margin:0;padding:0}.woocommerce ul#shipping_method li{margin:0;padding:.25em 22px .25em 0;text-indent:-22px;list-style:none}.woocommerce ul#shipping_method li input{margin:3px .5ex}.woocommerce ul#shipping_method li label{display:inline}.woocommerce .widget_layered_nav ul li::after,.woocommerce .widget_layered_nav ul li::before,.woocommerce ul.order_details::after,.woocommerce ul.order_details::before{content:' ';display:table}.woocommerce ul#shipping_method .amount{font-weight:700}.woocommerce p.woocommerce-shipping-contents{margin:0}.woocommerce ul.order_details{margin:0 0 3em;list-style:none}.woocommerce ul.order_details li{float:right;margin-left:2em;text-transform:uppercase;font-size:.715em;line-height:1;border-left:1px dashed #d3ced2;padding-left:2em;margin-right:0;padding-right:0;list-style-type:none}.woocommerce ul.order_details li strong{display:block;font-size:1.4em;text-transform:none;line-height:1.5}.woocommerce ul.order_details li:last-of-type{border:none}.woocommerce .wc-bacs-bank-details-account-name{font-weight:700}.woocommerce .widget_layered_nav ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_layered_nav ul li{padding:0 0 1px;list-style:none}.woocommerce .widget_layered_nav ul li.chosen a::before,.woocommerce .widget_layered_nav_filters ul li a::before{line-height:1;content:"";font-weight:400;color:#a00;font-family:WooCommerce;speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-decoration:none}.woocommerce .widget_layered_nav ul li a,.woocommerce .widget_layered_nav ul li span{padding:1px 0}.woocommerce .widget_layered_nav ul li.chosen a::before{margin-left:.618em}.woocommerce .widget_layered_nav_filters ul{margin:0;padding:0;border:0;list-style:none;overflow:hidden;zoom:1}.woocommerce .widget_layered_nav_filters ul li{float:right;padding:0 0 1px 1px;list-style:none}.woocommerce .widget_layered_nav_filters ul li a{text-decoration:none}.woocommerce .widget_layered_nav_filters ul li a::before{margin-left:.618em}.woocommerce .widget_price_filter .price_slider{margin-bottom:1em}.woocommerce .widget_price_filter .price_slider_amount{text-align:left;line-height:2.4;font-size:.8751em}.woocommerce .widget_price_filter .price_slider_amount .button{font-size:1.15em;float:right}.woocommerce .widget_price_filter .ui-slider{position:relative;text-align:right;margin-right:.5em;margin-left:.5em}.woocommerce .widget_price_filter .ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1em;height:1em;background-color:#a46497;border-radius:1em;cursor:ew-resize;outline:0;top:-.3em;margin-right:-.5em}.woocommerce .widget_price_filter .ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;border-radius:1em;background-color:#a46497}.woocommerce .widget_price_filter .price_slider_wrapper .ui-widget-content{border-radius:1em;background-color:#602053;border:0}.woocommerce .widget_price_filter .ui-slider-horizontal{height:.5em}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range{top:0;height:100%}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-min{right:-1px}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-max{left:-1px}.woocommerce .widget_rating_filter ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_rating_filter ul li{padding:0 0 1px;list-style:none}.woocommerce .widget_rating_filter ul li::after,.woocommerce .widget_rating_filter ul li::before{content:' ';display:table}.woocommerce .widget_rating_filter ul li a{padding:1px 0;text-decoration:none}.woocommerce .widget_rating_filter ul li .star-rating{float:none;display:inline-block}.rtl.woocommerce div.product div.images .flex-control-thumbs li,.woocommerce-error .button,.woocommerce-info .button,.woocommerce-message .button{float:left}.woocommerce .widget_rating_filter ul li.chosen a::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-left:.618em;content:"";text-decoration:none;color:#a00}.pswp{z-index:999999}.woocommerce img.pswp__img,.woocommerce-page img.pswp__img{max-width:none}button.pswp__button{box-shadow:none!important;background-image:url(photoswipe/default-skin/default-skin.png)!important}button.pswp__button,button.pswp__button--arrow--left::before,button.pswp__button--arrow--right::before,button.pswp__button:hover{background-color:transparent!important}button.pswp__button--arrow--left,button.pswp__button--arrow--left:hover,button.pswp__button--arrow--right,button.pswp__button--arrow--right:hover{background-image:none!important}button.pswp__button--close:hover{background-position:100% -44px}button.pswp__button--zoom:hover{background-position:-88px 0}.woocommerce-error,.woocommerce-info,.woocommerce-message{padding:1em 3.5em 1em 2em;margin:0 0 2em;position:relative;background-color:#f7f6f7;color:#515151;border-top:3px solid #a46497;list-style:none;width:auto;word-wrap:break-word}.woocommerce-error::after,.woocommerce-error::before,.woocommerce-info::after,.woocommerce-info::before,.woocommerce-message::after,.woocommerce-message::before{content:' ';display:table}.woocommerce-error::before,.woocommerce-info::before,.woocommerce-message::before{font-family:WooCommerce;content:'\e028';display:inline-block;position:absolute;top:1em;right:1.5em}.woocommerce-error li,.woocommerce-info li,.woocommerce-message li{list-style:none!important;padding-right:0!important;margin-right:0!important}.woocommerce-message{border-top-color:#8fae1b}.woocommerce-message::before{content:'\e015';color:#8fae1b}.woocommerce-info{border-top-color:#1e85be}.woocommerce-info::before{color:#1e85be}.woocommerce-error{border-top-color:#b81c23}.woocommerce-error::before{content:'\e016';color:#b81c23}.woocommerce-account .addresses .title::after,.woocommerce-account .addresses .title::before,.woocommerce-account .woocommerce::after,.woocommerce-account .woocommerce::before{content:' ';display:table}.woocommerce-account .addresses .title h3{float:right}.woocommerce-account .addresses .title .edit,.woocommerce-account ul.digital-downloads li .count{float:left}.woocommerce-account ol.commentlist.notes li.note p.meta{font-weight:700;margin-bottom:0}.woocommerce-account ol.commentlist.notes li.note .description p:last-child{margin-bottom:0}.woocommerce-account ul.digital-downloads{margin-right:0;padding-right:0}.woocommerce-account ul.digital-downloads li{list-style:none;margin-right:0;padding-right:0}.woocommerce-account ul.digital-downloads li::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-left:.618em;content:"";text-decoration:none}#add_payment_method table.cart .product-thumbnail,.woocommerce-cart table.cart .product-thumbnail,.woocommerce-checkout table.cart .product-thumbnail{min-width:32px}#add_payment_method table.cart img,.woocommerce-cart table.cart img,.woocommerce-checkout table.cart img{width:32px;box-shadow:none}#add_payment_method table.cart td,#add_payment_method table.cart th,.woocommerce-cart table.cart td,.woocommerce-cart table.cart th,.woocommerce-checkout table.cart td,.woocommerce-checkout table.cart th{vertical-align:middle}#add_payment_method table.cart td.actions .coupon .input-text,.woocommerce-cart table.cart td.actions .coupon .input-text,.woocommerce-checkout table.cart td.actions .coupon .input-text{float:right;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #d3ced2;padding:6px 6px 5px;margin:0 0 0 4px;outline:0;line-height:1}#add_payment_method table.cart input,.woocommerce-cart table.cart input,.woocommerce-checkout table.cart input{margin:0;vertical-align:middle;line-height:1}#add_payment_method .wc-proceed-to-checkout,.woocommerce-cart .wc-proceed-to-checkout,.woocommerce-checkout .wc-proceed-to-checkout{padding:1em 0}#add_payment_method .wc-proceed-to-checkout::after,#add_payment_method .wc-proceed-to-checkout::before,.woocommerce-cart .wc-proceed-to-checkout::after,.woocommerce-cart .wc-proceed-to-checkout::before,.woocommerce-checkout .wc-proceed-to-checkout::after,.woocommerce-checkout .wc-proceed-to-checkout::before{content:' ';display:table}#add_payment_method .wc-proceed-to-checkout a.checkout-button,.woocommerce-cart .wc-proceed-to-checkout a.checkout-button,.woocommerce-checkout .wc-proceed-to-checkout a.checkout-button{display:block;text-align:center;margin-bottom:1em;font-size:1.25em;padding:1em}#add_payment_method .cart-collaterals .shipping_calculator .button,.woocommerce-cart .cart-collaterals .shipping_calculator .button,.woocommerce-checkout .cart-collaterals .shipping_calculator .button{width:100%;float:none;display:block}#add_payment_method .cart-collaterals .shipping_calculator .shipping-calculator-button::after,.woocommerce-cart .cart-collaterals .shipping_calculator .shipping-calculator-button::after,.woocommerce-checkout .cart-collaterals .shipping_calculator .shipping-calculator-button::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none}#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::after,#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::before,#add_payment_method #payment ul.payment_methods::after,#add_payment_method #payment ul.payment_methods::before,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::before,.woocommerce-cart #payment ul.payment_methods::after,.woocommerce-cart #payment ul.payment_methods::before,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::before,.woocommerce-checkout #payment ul.payment_methods::after,.woocommerce-checkout #payment ul.payment_methods::before{content:' ';display:table}#add_payment_method .cart-collaterals .cart_totals p small,.woocommerce-cart .cart-collaterals .cart_totals p small,.woocommerce-checkout .cart-collaterals .cart_totals p small{color:#777;font-size:.83em}#add_payment_method .cart-collaterals .cart_totals table,.woocommerce-cart .cart-collaterals .cart_totals table,.woocommerce-checkout .cart-collaterals .cart_totals table{border-collapse:separate;margin:0 0 6px;padding:0}#add_payment_method .cart-collaterals .cart_totals table tr:first-child td,#add_payment_method .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-cart .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-cart .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-checkout .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-checkout .cart-collaterals .cart_totals table tr:first-child th{border-top:0}#add_payment_method .cart-collaterals .cart_totals table th,.woocommerce-cart .cart-collaterals .cart_totals table th,.woocommerce-checkout .cart-collaterals .cart_totals table th{width:40%}#add_payment_method .cart-collaterals .cart_totals table td,#add_payment_method .cart-collaterals .cart_totals table th,.woocommerce-cart .cart-collaterals .cart_totals table td,.woocommerce-cart .cart-collaterals .cart_totals table th,.woocommerce-checkout .cart-collaterals .cart_totals table td,.woocommerce-checkout .cart-collaterals .cart_totals table th{vertical-align:top;border-right:0;border-left:0;line-height:1.5em}#add_payment_method .cart-collaterals .cart_totals table small,.woocommerce-cart .cart-collaterals .cart_totals table small,.woocommerce-checkout .cart-collaterals .cart_totals table small{color:#777}#add_payment_method .cart-collaterals .cart_totals table select,.woocommerce-cart .cart-collaterals .cart_totals table select,.woocommerce-checkout .cart-collaterals .cart_totals table select{width:100%}#add_payment_method .cart-collaterals .cart_totals .discount td,.woocommerce-cart .cart-collaterals .cart_totals .discount td,.woocommerce-checkout .cart-collaterals .cart_totals .discount td{color:#77a464}#add_payment_method .cart-collaterals .cart_totals tr td,#add_payment_method .cart-collaterals .cart_totals tr th,.woocommerce-cart .cart-collaterals .cart_totals tr td,.woocommerce-cart .cart-collaterals .cart_totals tr th,.woocommerce-checkout .cart-collaterals .cart_totals tr td,.woocommerce-checkout .cart-collaterals .cart_totals tr th{border-top:1px solid #ebe9eb}#add_payment_method .cart-collaterals .cross-sells ul.products li.product,.woocommerce-cart .cart-collaterals .cross-sells ul.products li.product,.woocommerce-checkout .cart-collaterals .cross-sells ul.products li.product{margin-top:0}#add_payment_method .checkout .col-2 h3#ship-to-different-address,.woocommerce-cart .checkout .col-2 h3#ship-to-different-address,.woocommerce-checkout .checkout .col-2 h3#ship-to-different-address{float:right;clear:none}#add_payment_method .checkout .col-2 .form-row-first,#add_payment_method .checkout .col-2 .notes,.woocommerce-cart .checkout .col-2 .form-row-first,.woocommerce-cart .checkout .col-2 .notes,.woocommerce-checkout .checkout .col-2 .form-row-first,.woocommerce-checkout .checkout .col-2 .notes{clear:right}#add_payment_method .checkout .create-account small,.woocommerce-cart .checkout .create-account small,.woocommerce-checkout .checkout .create-account small{font-size:11px;color:#777;font-weight:400}#add_payment_method .checkout div.shipping-address,.woocommerce-cart .checkout div.shipping-address,.woocommerce-checkout .checkout div.shipping-address{padding:0;clear:right;width:100%}#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::after,#add_payment_method #payment ul.payment_methods::after,#add_payment_method .checkout .shipping_address,.single-product .twentythirteen p.stars,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-cart #payment ul.payment_methods::after,.woocommerce-cart .checkout .shipping_address,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-checkout #payment ul.payment_methods::after,.woocommerce-checkout .checkout .shipping_address{clear:both}#add_payment_method #payment,.woocommerce-cart #payment,.woocommerce-checkout #payment{background:#ebe9eb;border-radius:5px}#add_payment_method #payment ul.payment_methods,.woocommerce-cart #payment ul.payment_methods,.woocommerce-checkout #payment ul.payment_methods{text-align:right;padding:1em;border-bottom:1px solid #d3ced2;margin:0;list-style:none}#add_payment_method #payment ul.payment_methods li,.woocommerce-cart #payment ul.payment_methods li,.woocommerce-checkout #payment ul.payment_methods li{line-height:2;text-align:right;margin:0;font-weight:400}#add_payment_method #payment ul.payment_methods li input,.woocommerce-cart #payment ul.payment_methods li input,.woocommerce-checkout #payment ul.payment_methods li input{margin:0 0 0 1em}#add_payment_method #payment ul.payment_methods li img,.woocommerce-cart #payment ul.payment_methods li img,.woocommerce-checkout #payment ul.payment_methods li img{vertical-align:middle;margin:-2px .5em 0 0;padding:0;position:relative;box-shadow:none}#add_payment_method #payment ul.payment_methods li img+img,.woocommerce-cart #payment ul.payment_methods li img+img,.woocommerce-checkout #payment ul.payment_methods li img+img{margin-right:2px}#add_payment_method #payment div.form-row,.woocommerce-cart #payment div.form-row,.woocommerce-checkout #payment div.form-row{padding:1em}#add_payment_method #payment div.payment_box,.woocommerce-cart #payment div.payment_box,.woocommerce-checkout #payment div.payment_box{position:relative;box-sizing:border-box;width:100%;padding:1em;margin:1em 0;font-size:.92em;border-radius:2px;line-height:1.5;background-color:#dfdcde;color:#515151}#add_payment_method #payment div.payment_box input.input-text,#add_payment_method #payment div.payment_box textarea,.woocommerce-cart #payment div.payment_box input.input-text,.woocommerce-cart #payment div.payment_box textarea,.woocommerce-checkout #payment div.payment_box input.input-text,.woocommerce-checkout #payment div.payment_box textarea{border-color:#bbb3b9 #c7c1c6 #c7c1c6}#add_payment_method #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-cart #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-checkout #payment div.payment_box ::-webkit-input-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box :-moz-placeholder,.woocommerce-cart #payment div.payment_box :-moz-placeholder,.woocommerce-checkout #payment div.payment_box :-moz-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box :-ms-input-placeholder,.woocommerce-cart #payment div.payment_box :-ms-input-placeholder,.woocommerce-checkout #payment div.payment_box :-ms-input-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods{list-style:none;margin:0}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token{margin:0 0 .5em}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label{cursor:pointer}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput{vertical-align:middle;margin:-3px 0 0 1em;position:relative}#add_payment_method #payment div.payment_box .wc-credit-card-form,.woocommerce-cart #payment div.payment_box .wc-credit-card-form,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form{border:0;padding:0;margin:1em 0 0}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number{font-size:1.5em;padding:8px;background-repeat:no-repeat;background-position:left .618em center;background-size:32px 20px}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.visa,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.visa,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.visa{background-image:url(../images/icons/credit-cards/visa.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.mastercard{background-image:url(../images/icons/credit-cards/mastercard.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.laser,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.laser,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.laser{background-image:url(../images/icons/credit-cards/laser.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.dinersclub{background-image:url(../images/icons/credit-cards/diners.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.maestro{background-image:url(../images/icons/credit-cards/maestro.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.jcb{background-image:url(../images/icons/credit-cards/jcb.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.amex,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.amex,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.amex{background-image:url(../images/icons/credit-cards/amex.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.discover,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.discover,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.discover{background-image:url(../images/icons/credit-cards/discover.svg)}#add_payment_method #payment div.payment_box span.help,.woocommerce-cart #payment div.payment_box span.help,.woocommerce-checkout #payment div.payment_box span.help{font-size:.857em;color:#777;font-weight:400}#add_payment_method #payment div.payment_box .form-row,.woocommerce-cart #payment div.payment_box .form-row,.woocommerce-checkout #payment div.payment_box .form-row{margin:0 0 1em}#add_payment_method #payment div.payment_box p:last-child,.woocommerce-cart #payment div.payment_box p:last-child,.woocommerce-checkout #payment div.payment_box p:last-child{margin-bottom:0}#add_payment_method #payment div.payment_box::before,.woocommerce-cart #payment div.payment_box::before,.woocommerce-checkout #payment div.payment_box::before{content:'';display:block;border:1em solid #dfdcde;border-left-color:transparent;border-right-color:transparent;border-top-color:transparent;position:absolute;top:-.75em;right:0;margin:-1em 2em 0 0}#add_payment_method #payment .payment_method_paypal .about_paypal,.woocommerce-cart #payment .payment_method_paypal .about_paypal,.woocommerce-checkout #payment .payment_method_paypal .about_paypal{float:left;line-height:52px;font-size:.83em}#add_payment_method #payment .payment_method_paypal img,.woocommerce-cart #payment .payment_method_paypal img,.woocommerce-checkout #payment .payment_method_paypal img{max-height:52px;vertical-align:middle}.woocommerce-password-strength{text-align:center;font-weight:600;padding:3px .5em;font-size:1em}.woocommerce-password-strength.strong{background-color:#c1e1b9;border-color:#83c373}.woocommerce-password-strength.short{background-color:#f1adad;border-color:#e35b5b}.woocommerce-password-strength.bad{background-color:#fbc5a9;border-color:#f78b53}.woocommerce-password-strength.good{background-color:#ffe399;border-color:#ffc733}.woocommerce-password-hint{margin:.5em 0 0;display:block}.product.has-default-attributes.has-children>.images{opacity:0}#content.twentyeleven .woocommerce-pagination a{font-size:1em;line-height:1}.single-product .twentythirteen #reply-title,.single-product .twentythirteen #respond #commentform,.single-product .twentythirteen .entry-summary{padding:0}.twentythirteen .woocommerce-breadcrumb{padding-top:40px}.twentyfourteen ul.products li.product{margin-top:0!important}body:not(.search-results) .twentysixteen .entry-summary{color:inherit;font-size:inherit;line-height:inherit}.twentysixteen .price ins{background:inherit;color:inherit} \ No newline at end of file +@charset "UTF-8";@-webkit-keyframes spin{100%{-webkit-transform:rotate(-360deg)}}@-moz-keyframes spin{100%{-moz-transform:rotate(-360deg)}}@keyframes spin{100%{-webkit-transform:rotate(-360deg);-moz-transform:rotate(-360deg);-ms-transform:rotate(-360deg);-o-transform:rotate(-360deg);transform:rotate(-360deg)}}@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}.woocommerce-store-notice,p.demo_store{position:absolute;top:0;right:0;left:0;margin:0;width:100%;font-size:1em;padding:1em 0;text-align:center;background-color:#a46497;color:#fff;z-index:99998;box-shadow:0 1px 1em rgba(0,0,0,.2);display:none}.woocommerce-store-notice a,p.demo_store a{color:#fff;text-decoration:underline}.admin-bar p.demo_store{top:32px}.clear{clear:both}.woocommerce .blockUI.blockOverlay{position:relative}.woocommerce .blockUI.blockOverlay::before,.woocommerce .loader::before{height:1em;width:1em;display:block;position:absolute;top:50%;right:50%;margin-right:-.5em;margin-top:-.5em;content:'';-webkit-animation:spin 1s ease-in-out infinite;-moz-animation:spin 1s ease-in-out infinite;animation:spin 1s ease-in-out infinite;background:url(../images/icons/loader.svg) center center;background-size:cover;line-height:1;text-align:center;font-size:2em;color:rgba(0,0,0,.75)}.woocommerce a.remove{display:block;font-size:1.5em;height:1em;width:1em;text-align:center;line-height:1;border-radius:100%;color:red!important;text-decoration:none;font-weight:700;border:0}.woocommerce a.remove:hover{color:#fff!important;background:red}.woocommerce small.note{display:block;color:#777;font-size:.857em;margin-top:10px}.woocommerce .woocommerce-breadcrumb{margin:0 0 1em;padding:0;font-size:.92em;color:#777}.woocommerce .woocommerce-breadcrumb::after,.woocommerce .woocommerce-breadcrumb::before{content:' ';display:table}.woocommerce .woocommerce-breadcrumb::after{clear:both}.woocommerce .woocommerce-breadcrumb a{color:#777}.woocommerce .quantity .qty{width:3.631em;text-align:center}.woocommerce div.product{margin-bottom:0;position:relative}.woocommerce div.product .product_title{clear:none;margin-top:0;padding:0}.woocommerce #reviews #comments .add_review::after,.woocommerce .products ul::after,.woocommerce div.product form.cart::after,.woocommerce div.product p.cart::after,.woocommerce nav.woocommerce-pagination ul,.woocommerce ul.products::after{clear:both}.woocommerce div.product p.price,.woocommerce div.product span.price{color:#77a464;font-size:1.25em}.woocommerce div.product p.price ins,.woocommerce div.product span.price ins{background:inherit;font-weight:700}.woocommerce div.product p.price del,.woocommerce div.product span.price del{opacity:.5}.woocommerce div.product p.stock{font-size:.92em}.woocommerce div.product .stock{color:#77a464}.woocommerce div.product .out-of-stock{color:red}.woocommerce div.product .woocommerce-product-rating{margin-bottom:1.618em}.woocommerce div.product div.images{margin-bottom:2em}.woocommerce div.product div.images img{display:block;width:100%;height:auto;box-shadow:none}.woocommerce div.product div.images div.thumbnails{padding-top:1em}.woocommerce div.product div.images.woocommerce-product-gallery{position:relative}.woocommerce div.product div.images .woocommerce-product-gallery__wrapper{transition:all cubic-bezier(.795,-.035,0,1) .5s}.woocommerce div.product div.images .woocommerce-product-gallery__image:nth-child(n+2){width:25%;display:inline-block}.woocommerce div.product div.images .woocommerce-product-gallery__trigger{position:absolute;top:.5em;left:.5em;font-size:2em;z-index:9;width:36px;height:36px;background:#fff;text-indent:-9999px;border-radius:100%;box-sizing:content-box}.woocommerce div.product div.images .woocommerce-product-gallery__trigger:before{content:"";display:block;width:10px;height:10px;border:2px solid #000;border-radius:100%;position:absolute;top:9px;right:9px;box-sizing:content-box}.woocommerce div.product div.images .woocommerce-product-gallery__trigger:after{content:"";display:block;width:2px;height:8px;background:#000;border-radius:6px;position:absolute;top:19px;right:22px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);box-sizing:content-box}.woocommerce div.product div.images .flex-control-thumbs{overflow:hidden;zoom:1;margin:0;padding:0}.woocommerce div.product div.images .flex-control-thumbs li{width:25%;float:right;margin:0;list-style:none}.woocommerce div.product div.images .flex-control-thumbs li img{cursor:pointer;opacity:.5;margin:0}.woocommerce div.product div.images .flex-control-thumbs li img.flex-active,.woocommerce div.product div.images .flex-control-thumbs li img:hover{opacity:1}.woocommerce div.product div.summary{margin-bottom:2em}.woocommerce div.product div.social{text-align:left;margin:0 0 1em}.woocommerce div.product div.social span{margin:0 2px 0 0}.woocommerce div.product div.social span span{margin:0}.woocommerce div.product div.social span .stButton .chicklets{padding-right:16px;width:0}.woocommerce div.product div.social iframe{float:right;margin-top:3px}.woocommerce div.product .woocommerce-tabs ul.tabs{list-style:none;padding:0 1em 0 0;margin:0 0 1.618em;overflow:hidden;position:relative}.woocommerce div.product .woocommerce-tabs ul.tabs li{border:1px solid #d3ced2;background-color:#ebe9eb;display:inline-block;position:relative;z-index:0;border-radius:4px 4px 0 0;margin:0 -5px;padding:0 1em}.woocommerce div.product .woocommerce-tabs ul.tabs li a{display:inline-block;padding:.5em 0;font-weight:700;color:#515151;text-decoration:none}.woocommerce div.product form.cart::after,.woocommerce div.product form.cart::before,.woocommerce div.product p.cart::after,.woocommerce div.product p.cart::before{display:table;content:' '}.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover{text-decoration:none;color:#6b6b6b}.woocommerce div.product .woocommerce-tabs ul.tabs li.active{background:#fff;z-index:2;border-bottom-color:#fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{color:inherit;text-shadow:inherit}.woocommerce div.product .woocommerce-tabs ul.tabs li.active::before{box-shadow:-2px 2px 0 #fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active::after{box-shadow:2px 2px 0 #fff}.woocommerce div.product .woocommerce-tabs ul.tabs li::after,.woocommerce div.product .woocommerce-tabs ul.tabs li::before{border:1px solid #d3ced2;position:absolute;bottom:-1px;width:5px;height:5px;content:' '}.woocommerce div.product .woocommerce-tabs ul.tabs li::before{right:-6px;-webkit-border-bottom-left-radius:4px;-moz-border-bottom-left-radius:4px;border-bottom-left-radius:4px;border-width:0 0 1px 1px;box-shadow:-2px 2px 0 #ebe9eb}.woocommerce div.product .woocommerce-tabs ul.tabs li::after{left:-6px;-webkit-border-bottom-right-radius:4px;-moz-border-bottom-right-radius:4px;border-bottom-right-radius:4px;border-width:0 1px 1px 0;box-shadow:2px 2px 0 #ebe9eb}.woocommerce div.product .woocommerce-tabs ul.tabs::before{position:absolute;content:' ';width:100%;bottom:0;right:0;border-bottom:1px solid #d3ced2;z-index:1}.woocommerce div.product .woocommerce-tabs .panel{margin:0 0 2em;padding:0}.woocommerce div.product form.cart,.woocommerce div.product p.cart{margin-bottom:2em}.woocommerce div.product form.cart div.quantity{float:right;margin:0 0 0 4px}.woocommerce div.product form.cart table{border-width:0 0 1px}.woocommerce div.product form.cart table td{padding-right:0}.woocommerce div.product form.cart table div.quantity{float:none;margin:0}.woocommerce div.product form.cart table small.stock{display:block;float:none}.woocommerce div.product form.cart .variations{margin-bottom:1em;border:0;width:100%}.woocommerce div.product form.cart .variations td,.woocommerce div.product form.cart .variations th{border:0;vertical-align:top;line-height:2em}.woocommerce div.product form.cart .variations label{font-weight:700}.woocommerce div.product form.cart .variations select{max-width:100%;min-width:75%;display:inline-block;margin-left:1em}.woocommerce div.product form.cart .variations td.label{padding-left:1em}.woocommerce div.product form.cart .woocommerce-variation-description p{margin-bottom:1em}.woocommerce div.product form.cart .reset_variations{visibility:hidden;font-size:.83em}.woocommerce div.product form.cart .wc-no-matching-variations{display:none}.woocommerce div.product form.cart .button{vertical-align:middle;float:right}.woocommerce div.product form.cart .group_table td.label{padding-left:1em;padding-right:1em}.woocommerce div.product form.cart .group_table td{vertical-align:top;padding-bottom:.5em;border:0}.woocommerce div.product form.cart .group_table td:first-child{width:4em;text-align:center}.woocommerce div.product form.cart .group_table .wc-grouped-product-add-to-cart-checkbox{display:inline-block;width:auto;margin:0 auto;transform:scale(1.5,1.5)}.woocommerce span.onsale{min-height:3.236em;min-width:3.236em;padding:.202em;font-weight:700;position:absolute;text-align:center;line-height:3.236;top:-.5em;right:-.5em;margin:0;border-radius:100%;background-color:#77a464;color:#fff;font-size:.857em;-webkit-font-smoothing:antialiased;z-index:9}.woocommerce .products ul,.woocommerce ul.products{margin:0 0 1em;padding:0;list-style:none;clear:both}.woocommerce .products ul::after,.woocommerce .products ul::before,.woocommerce ul.products::after,.woocommerce ul.products::before{content:' ';display:table}.woocommerce .products ul li,.woocommerce ul.products li{list-style:none}.woocommerce ul.products li.product .onsale{top:0;left:0;right:auto;margin:-.5em 0 0 -.5em}.woocommerce ul.products li.product .woocommerce-loop-category__title,.woocommerce ul.products li.product .woocommerce-loop-product__title,.woocommerce ul.products li.product h3{padding:.5em 0;margin:0;font-size:1em}.woocommerce ul.products li.product a{text-decoration:none}.woocommerce ul.products li.product a img{width:100%;height:auto;display:block;margin:0 0 1em;box-shadow:none}.woocommerce ul.products li.product strong{display:block}.woocommerce ul.products li.product .star-rating{font-size:.857em}.woocommerce ul.products li.product .button{margin-top:1em}.woocommerce ul.products li.product .price{color:#77a464;display:block;font-weight:400;margin-bottom:.5em;font-size:.857em}.woocommerce ul.products li.product .price del{color:inherit;opacity:.5;display:block}.woocommerce ul.products li.product .price ins{background:0 0;font-weight:700}.woocommerce ul.products li.product .price .from{font-size:.67em;margin:-2px 0 0;text-transform:uppercase;color:rgba(132,132,132,.5)}.woocommerce .woocommerce-ordering,.woocommerce .woocommerce-result-count{margin:0 0 1em}.woocommerce .woocommerce-ordering select{vertical-align:top}.woocommerce nav.woocommerce-pagination{text-align:center}.woocommerce nav.woocommerce-pagination ul{display:inline-block;white-space:nowrap;padding:0;border:1px solid #d3ced2;border-left:0;margin:1px}.woocommerce nav.woocommerce-pagination ul li{border-left:1px solid #d3ced2;padding:0;margin:0;float:right;display:inline;overflow:hidden}.woocommerce nav.woocommerce-pagination ul li a,.woocommerce nav.woocommerce-pagination ul li span{margin:0;text-decoration:none;line-height:1;font-size:1em;font-weight:400;padding:.5em;min-width:1em;display:block}.woocommerce nav.woocommerce-pagination ul li a:focus,.woocommerce nav.woocommerce-pagination ul li a:hover,.woocommerce nav.woocommerce-pagination ul li span.current{background:#ebe9eb;color:#8a7e88}.woocommerce #respond input#submit,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button{font-size:100%;margin:0;line-height:1;cursor:pointer;position:relative;text-decoration:none;overflow:visible;padding:.618em 1em;font-weight:700;border-radius:3px;right:auto;color:#515151;background-color:#ebe9eb;border:0;white-space:nowrap;display:inline-block;background-image:none;box-shadow:none;-webkit-box-shadow:none;text-shadow:none}.woocommerce #respond input#submit.loading,.woocommerce a.button.loading,.woocommerce button.button.loading,.woocommerce input.button.loading{opacity:.25;padding-left:2.618em}.woocommerce #respond input#submit.loading::after,.woocommerce a.button.loading::after,.woocommerce button.button.loading::after,.woocommerce input.button.loading::after{font-family:WooCommerce;content:'\e01c';vertical-align:top;-webkit-font-smoothing:antialiased;font-weight:400;position:absolute;top:.618em;left:1em;-webkit-animation:spin 2s linear infinite;-moz-animation:spin 2s linear infinite;animation:spin 2s linear infinite}.woocommerce #respond input#submit.added::after,.woocommerce a.button.added::after,.woocommerce button.button.added::after,.woocommerce input.button.added::after{font-family:WooCommerce;content:'\e017';margin-right:.53em;vertical-align:bottom}.woocommerce #respond input#submit:hover,.woocommerce a.button:hover,.woocommerce button.button:hover,.woocommerce input.button:hover{background-color:#dad8da;text-decoration:none;background-image:none;color:#515151}.woocommerce #respond input#submit.alt,.woocommerce a.button.alt,.woocommerce button.button.alt,.woocommerce input.button.alt{background-color:#a46497;color:#fff;-webkit-font-smoothing:antialiased}.woocommerce #respond input#submit.alt:hover,.woocommerce a.button.alt:hover,.woocommerce button.button.alt:hover,.woocommerce input.button.alt:hover{background-color:#935386;color:#fff}.woocommerce #respond input#submit.alt.disabled,.woocommerce #respond input#submit.alt.disabled:hover,.woocommerce #respond input#submit.alt:disabled,.woocommerce #respond input#submit.alt:disabled:hover,.woocommerce #respond input#submit.alt:disabled[disabled],.woocommerce #respond input#submit.alt:disabled[disabled]:hover,.woocommerce a.button.alt.disabled,.woocommerce a.button.alt.disabled:hover,.woocommerce a.button.alt:disabled,.woocommerce a.button.alt:disabled:hover,.woocommerce a.button.alt:disabled[disabled],.woocommerce a.button.alt:disabled[disabled]:hover,.woocommerce button.button.alt.disabled,.woocommerce button.button.alt.disabled:hover,.woocommerce button.button.alt:disabled,.woocommerce button.button.alt:disabled:hover,.woocommerce button.button.alt:disabled[disabled],.woocommerce button.button.alt:disabled[disabled]:hover,.woocommerce input.button.alt.disabled,.woocommerce input.button.alt.disabled:hover,.woocommerce input.button.alt:disabled,.woocommerce input.button.alt:disabled:hover,.woocommerce input.button.alt:disabled[disabled],.woocommerce input.button.alt:disabled[disabled]:hover{background-color:#a46497;color:#fff}.woocommerce #respond input#submit.disabled,.woocommerce #respond input#submit:disabled,.woocommerce #respond input#submit:disabled[disabled],.woocommerce a.button.disabled,.woocommerce a.button:disabled,.woocommerce a.button:disabled[disabled],.woocommerce button.button.disabled,.woocommerce button.button:disabled,.woocommerce button.button:disabled[disabled],.woocommerce input.button.disabled,.woocommerce input.button:disabled,.woocommerce input.button:disabled[disabled]{color:inherit;cursor:not-allowed;opacity:.5;padding:.618em 1em}.woocommerce #respond input#submit.disabled:hover,.woocommerce #respond input#submit:disabled:hover,.woocommerce #respond input#submit:disabled[disabled]:hover,.woocommerce a.button.disabled:hover,.woocommerce a.button:disabled:hover,.woocommerce a.button:disabled[disabled]:hover,.woocommerce button.button.disabled:hover,.woocommerce button.button:disabled:hover,.woocommerce button.button:disabled[disabled]:hover,.woocommerce input.button.disabled:hover,.woocommerce input.button:disabled:hover,.woocommerce input.button:disabled[disabled]:hover{color:inherit;background-color:#ebe9eb}.woocommerce .cart .button,.woocommerce .cart input.button{float:none}.woocommerce a.added_to_cart{padding-top:.5em;white-space:nowrap;display:inline-block}.woocommerce #reviews #comments .add_review::after,.woocommerce #reviews #comments .add_review::before,.woocommerce #reviews #comments ol.commentlist li .comment-text::after,.woocommerce #reviews #comments ol.commentlist li .comment-text::before,.woocommerce #reviews #comments ol.commentlist::after,.woocommerce #reviews #comments ol.commentlist::before{content:' ';display:table}.woocommerce #reviews h2 small{float:left;color:#777;font-size:15px;margin:10px 0 0}.woocommerce #reviews h2 small a{text-decoration:none;color:#777}.woocommerce #reviews h3{margin:0}.woocommerce #reviews #respond{margin:0;border:0;padding:0}.woocommerce #reviews #comment{height:75px}.woocommerce #reviews #comments h2{clear:none}.woocommerce #review_form #respond::after,.woocommerce #reviews #comments ol.commentlist li .comment-text::after,.woocommerce #reviews #comments ol.commentlist::after,.woocommerce .woocommerce-product-rating::after,.woocommerce ul.cart_list li dl::after,.woocommerce ul.cart_list li::after,.woocommerce ul.product_list_widget li dl::after,.woocommerce ul.product_list_widget li::after{clear:both}.woocommerce #reviews #comments ol.commentlist{margin:0;width:100%;background:0 0;list-style:none}.woocommerce #reviews #comments ol.commentlist li{padding:0;margin:0 0 20px;position:relative;background:100%;border:0}.woocommerce #reviews #comments ol.commentlist li .meta{color:#777;font-size:.75em}.woocommerce #reviews #comments ol.commentlist li img.avatar{float:right;position:absolute;top:0;right:0;padding:3px;width:32px;height:auto;background:#ebe9eb;border:1px solid #e4e1e3;margin:0;box-shadow:none}.woocommerce #reviews #comments ol.commentlist li .comment-text{margin:0 50px 0 0;border:1px solid #e4e1e3;border-radius:4px;padding:1em 1em 0}.woocommerce #reviews #comments ol.commentlist li .comment-text p{margin:0 0 1em}.woocommerce #reviews #comments ol.commentlist li .comment-text p.meta{font-size:.83em}.woocommerce #reviews #comments ol.commentlist ul.children{list-style:none;margin:20px 50px 0 0}.woocommerce #reviews #comments ol.commentlist ul.children .star-rating{display:none}.woocommerce #reviews #comments ol.commentlist #respond{border:1px solid #e4e1e3;border-radius:4px;padding:1em 1em 0;margin:20px 50px 0 0}.woocommerce #reviews #comments .commentlist>li::before{content:''}.woocommerce .star-rating{float:left;overflow:hidden;position:relative;height:1em;line-height:1;font-size:1em;width:5.4em;font-family:star}.woocommerce .star-rating::before{content:'\73\73\73\73\73';color:#d3ced2;float:right;top:0;right:0;position:absolute}.woocommerce .star-rating span{overflow:hidden;float:right;top:0;right:0;position:absolute;padding-top:1.5em}.woocommerce .star-rating span::before{content:'\53\53\53\53\53';top:0;position:absolute;right:0}.woocommerce .woocommerce-product-rating{line-height:2;display:block}.woocommerce .woocommerce-product-rating::after,.woocommerce .woocommerce-product-rating::before{content:' ';display:table}.woocommerce .woocommerce-product-rating .star-rating{margin:.5em 0 0 4px;float:right}.woocommerce .products .star-rating{display:block;margin:0 0 .5em;float:none}.woocommerce .hreview-aggregate .star-rating{margin:10px 0 0}.woocommerce #review_form #respond{position:static;margin:0;width:auto;padding:0;background:0 0;border:0}.woocommerce #review_form #respond::after,.woocommerce #review_form #respond::before{content:' ';display:table}.woocommerce p.stars a::before,.woocommerce p.stars a:hover~a::before{content:'\e021'}.woocommerce #review_form #respond p{margin:0 0 10px}.woocommerce #review_form #respond .form-submit input{right:auto}.woocommerce #review_form #respond textarea{box-sizing:border-box;width:100%}.woocommerce p.stars a{position:relative;height:1em;width:1em;text-indent:-999em;display:inline-block;text-decoration:none}.woocommerce p.stars a::before{display:block;position:absolute;top:0;right:0;width:1em;height:1em;line-height:1;font-family:WooCommerce;text-indent:0}.woocommerce table.shop_attributes td,.woocommerce table.shop_attributes th{line-height:1.5;border-bottom:1px dotted rgba(0,0,0,.1);border-top:0;margin:0}.woocommerce p.stars.selected a.active::before,.woocommerce p.stars:hover a::before{content:'\e020'}.woocommerce p.stars.selected a.active~a::before{content:'\e021'}.woocommerce p.stars.selected a:not(.active)::before{content:'\e020'}.woocommerce table.shop_attributes{border:0;border-top:1px dotted rgba(0,0,0,.1);margin-bottom:1.618em;width:100%}.woocommerce table.shop_attributes th{width:150px;font-weight:700;padding:8px}.woocommerce table.shop_attributes td{font-style:italic;padding:0}.woocommerce table.shop_attributes td p{margin:0;padding:8px 0}.woocommerce table.shop_attributes tr:nth-child(even) td,.woocommerce table.shop_attributes tr:nth-child(even) th{background:rgba(0,0,0,.025)}.woocommerce table.shop_table{border:1px solid rgba(0,0,0,.1);margin:0 0 24px -1px;text-align:right;width:100%;border-collapse:separate;border-radius:5px}.woocommerce table.shop_table th{font-weight:700;padding:9px 12px}.woocommerce table.shop_table td{border-top:1px solid rgba(0,0,0,.1);padding:6px 12px;vertical-align:middle}.woocommerce table.shop_table td small{font-weight:400}.woocommerce table.shop_table tbody:first-child tr:first-child td,.woocommerce table.shop_table tbody:first-child tr:first-child th{border-top:0}.woocommerce table.shop_table tbody th,.woocommerce table.shop_table tfoot td,.woocommerce table.shop_table tfoot th{font-weight:700;border-top:1px solid rgba(0,0,0,.1)}.woocommerce table.my_account_orders{font-size:.85em}.woocommerce table.my_account_orders td,.woocommerce table.my_account_orders th{padding:4px 8px;vertical-align:middle}.woocommerce table.my_account_orders .button{white-space:nowrap}.woocommerce table.my_account_orders .order-actions{text-align:left}.woocommerce table.my_account_orders .order-actions .button{margin:.125em .25em .125em 0}.woocommerce table.woocommerce-MyAccount-downloads td,.woocommerce table.woocommerce-MyAccount-downloads th{vertical-align:top;text-align:center}.woocommerce table.woocommerce-MyAccount-downloads td:first-child,.woocommerce table.woocommerce-MyAccount-downloads td:last-child,.woocommerce table.woocommerce-MyAccount-downloads th:first-child,.woocommerce table.woocommerce-MyAccount-downloads th:last-child{text-align:right}.woocommerce table.woocommerce-MyAccount-downloads td .woocommerce-MyAccount-downloads-file::before,.woocommerce table.woocommerce-MyAccount-downloads th .woocommerce-MyAccount-downloads-file::before{content:'\2193';display:inline-block}.woocommerce td.product-name .wc-item-meta,.woocommerce td.product-name dl.variation{list-style:none}.woocommerce td.product-name .wc-item-meta .wc-item-meta-label,.woocommerce td.product-name .wc-item-meta dt,.woocommerce td.product-name dl.variation .wc-item-meta-label,.woocommerce td.product-name dl.variation dt{float:right;clear:both;margin-left:.25em;display:inline-block;list-style:none}.woocommerce td.product-name .wc-item-meta dd,.woocommerce td.product-name dl.variation dd{margin:0}.woocommerce td.product-name .wc-item-meta p,.woocommerce td.product-name .wc-item-meta:last-child,.woocommerce td.product-name dl.variation p,.woocommerce td.product-name dl.variation:last-child{margin-bottom:0}.woocommerce td.product-name p.backorder_notification{font-size:.83em}.woocommerce td.product-quantity{min-width:80px}.woocommerce ul.cart_list,.woocommerce ul.product_list_widget{list-style:none;padding:0;margin:0}.woocommerce ul.cart_list li,.woocommerce ul.product_list_widget li{padding:4px 0;margin:0;list-style:none}.woocommerce ul.cart_list li::after,.woocommerce ul.cart_list li::before,.woocommerce ul.product_list_widget li::after,.woocommerce ul.product_list_widget li::before{content:' ';display:table}.woocommerce ul.cart_list li a,.woocommerce ul.product_list_widget li a{display:block;font-weight:700}.woocommerce ul.cart_list li img,.woocommerce ul.product_list_widget li img{float:left;margin-right:4px;width:32px;height:auto;box-shadow:none}.woocommerce ul.cart_list li dl,.woocommerce ul.product_list_widget li dl{margin:0;padding-right:1em;border-right:2px solid rgba(0,0,0,.1)}.woocommerce ul.cart_list li dl::after,.woocommerce ul.cart_list li dl::before,.woocommerce ul.product_list_widget li dl::after,.woocommerce ul.product_list_widget li dl::before{content:' ';display:table}.woocommerce ul.cart_list li dl dd,.woocommerce ul.cart_list li dl dt,.woocommerce ul.product_list_widget li dl dd,.woocommerce ul.product_list_widget li dl dt{display:inline-block;float:right;margin-bottom:1em}.woocommerce ul.cart_list li dl dt,.woocommerce ul.product_list_widget li dl dt{font-weight:700;padding:0 0 .25em;margin:0 0 0 4px;clear:right}#add_payment_method .wc-proceed-to-checkout::after,.woocommerce .widget_layered_nav ul li::after,.woocommerce .widget_rating_filter ul li::after,.woocommerce .widget_shopping_cart .buttons::after,.woocommerce ul.order_details::after,.woocommerce-account .addresses .title::after,.woocommerce-account .woocommerce::after,.woocommerce-cart .wc-proceed-to-checkout::after,.woocommerce-checkout .wc-proceed-to-checkout::after,.woocommerce-error::after,.woocommerce-info::after,.woocommerce-message::after,.woocommerce.widget_shopping_cart .buttons::after{clear:both}.woocommerce ul.cart_list li dl dd,.woocommerce ul.product_list_widget li dl dd{padding:0 0 .25em}.woocommerce ul.cart_list li dl dd p:last-child,.woocommerce ul.product_list_widget li dl dd p:last-child{margin-bottom:0}.woocommerce ul.cart_list li .star-rating,.woocommerce ul.product_list_widget li .star-rating{float:none}.woocommerce .widget_shopping_cart .total,.woocommerce.widget_shopping_cart .total{border-top:3px double #ebe9eb;padding:4px 0 0}.woocommerce .widget_shopping_cart .total strong,.woocommerce.widget_shopping_cart .total strong{min-width:40px;display:inline-block}.woocommerce .widget_shopping_cart .cart_list li,.woocommerce.widget_shopping_cart .cart_list li{padding-right:2em;position:relative;padding-top:0}.woocommerce .widget_shopping_cart .cart_list li a.remove,.woocommerce.widget_shopping_cart .cart_list li a.remove{position:absolute;top:0;right:0}.woocommerce .widget_shopping_cart .buttons::after,.woocommerce .widget_shopping_cart .buttons::before,.woocommerce.widget_shopping_cart .buttons::after,.woocommerce.widget_shopping_cart .buttons::before{content:' ';display:table}.woocommerce .widget_shopping_cart .buttons a,.woocommerce.widget_shopping_cart .buttons a{margin-left:5px;margin-bottom:5px}.woocommerce form .form-row{padding:3px;margin:0 0 6px}.woocommerce form .form-row [placeholder]:focus::-webkit-input-placeholder{-webkit-transition:opacity .5s .5s ease;-moz-transition:opacity .5s .5s ease;transition:opacity .5s .5s ease;opacity:0}.woocommerce form .form-row label{line-height:2}.woocommerce form .form-row label.hidden{visibility:hidden}.woocommerce form .form-row label.inline{display:inline}.woocommerce form .form-row select{cursor:pointer;margin:0}.woocommerce form .form-row .required{color:red;font-weight:700;border:0}.woocommerce form .form-row .input-checkbox{display:inline;margin:-2px 0 0 8px;text-align:center;vertical-align:middle}.woocommerce form .form-row input.input-text,.woocommerce form .form-row textarea{box-sizing:border-box;width:100%;margin:0;outline:0;line-height:1}.woocommerce form .form-row textarea{height:4em;line-height:1.5;display:block;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.woocommerce form .form-row .select2-container{width:100%;line-height:2em}.woocommerce form .form-row.woocommerce-invalid label{color:#a00}.woocommerce form .form-row.woocommerce-invalid .select2-container,.woocommerce form .form-row.woocommerce-invalid input.input-text,.woocommerce form .form-row.woocommerce-invalid select{border-color:#a00}.woocommerce form .form-row.woocommerce-validated .select2-container,.woocommerce form .form-row.woocommerce-validated input.input-text,.woocommerce form .form-row.woocommerce-validated select{border-color:#69bf29}.woocommerce form .form-row ::-webkit-input-placeholder{line-height:normal}.woocommerce form .form-row :-moz-placeholder{line-height:normal}.woocommerce form .form-row :-ms-input-placeholder{line-height:normal}.woocommerce form.checkout_coupon,.woocommerce form.login,.woocommerce form.register{border:1px solid #d3ced2;padding:20px;margin:2em 0;text-align:right;border-radius:5px}.woocommerce ul#shipping_method{list-style:none;margin:0;padding:0}.woocommerce ul#shipping_method li{margin:0;padding:.25em 22px .25em 0;text-indent:-22px;list-style:none}.woocommerce ul#shipping_method li input{margin:3px .5ex}.woocommerce ul#shipping_method li label{display:inline}.woocommerce .widget_layered_nav ul li::after,.woocommerce .widget_layered_nav ul li::before,.woocommerce ul.order_details::after,.woocommerce ul.order_details::before{content:' ';display:table}.woocommerce ul#shipping_method .amount{font-weight:700}.woocommerce p.woocommerce-shipping-contents{margin:0}.woocommerce ul.order_details{margin:0 0 3em;list-style:none}.woocommerce ul.order_details li{float:right;margin-left:2em;text-transform:uppercase;font-size:.715em;line-height:1;border-left:1px dashed #d3ced2;padding-left:2em;margin-right:0;padding-right:0;list-style-type:none}.woocommerce ul.order_details li strong{display:block;font-size:1.4em;text-transform:none;line-height:1.5}.woocommerce ul.order_details li:last-of-type{border:none}.woocommerce .wc-bacs-bank-details-account-name{font-weight:700}.woocommerce .widget_layered_nav ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_layered_nav ul li{padding:0 0 1px;list-style:none}.woocommerce .widget_layered_nav ul li.chosen a::before,.woocommerce .widget_layered_nav_filters ul li a::before{line-height:1;content:"";font-weight:400;color:#a00;font-family:WooCommerce;speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-decoration:none}.woocommerce .widget_layered_nav ul li a,.woocommerce .widget_layered_nav ul li span{padding:1px 0}.woocommerce .widget_layered_nav ul li.chosen a::before{margin-left:.618em}.woocommerce .widget_layered_nav_filters ul{margin:0;padding:0;border:0;list-style:none;overflow:hidden;zoom:1}.woocommerce .widget_layered_nav_filters ul li{float:right;padding:0 0 1px 1px;list-style:none}.woocommerce .widget_layered_nav_filters ul li a{text-decoration:none}.woocommerce .widget_layered_nav_filters ul li a::before{margin-left:.618em}.woocommerce .widget_price_filter .price_slider{margin-bottom:1em}.woocommerce .widget_price_filter .price_slider_amount{text-align:left;line-height:2.4;font-size:.8751em}.woocommerce .widget_price_filter .price_slider_amount .button{font-size:1.15em;float:right}.woocommerce .widget_price_filter .ui-slider{position:relative;text-align:right;margin-right:.5em;margin-left:.5em}.woocommerce .widget_price_filter .ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1em;height:1em;background-color:#a46497;border-radius:1em;cursor:ew-resize;outline:0;top:-.3em;margin-right:-.5em}.woocommerce .widget_price_filter .ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;border-radius:1em;background-color:#a46497}.woocommerce .widget_price_filter .price_slider_wrapper .ui-widget-content{border-radius:1em;background-color:#602053;border:0}.woocommerce .widget_price_filter .ui-slider-horizontal{height:.5em}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range{top:0;height:100%}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-min{right:-1px}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-max{left:-1px}.woocommerce .widget_rating_filter ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_rating_filter ul li{padding:0 0 1px;list-style:none}.woocommerce .widget_rating_filter ul li::after,.woocommerce .widget_rating_filter ul li::before{content:' ';display:table}.woocommerce .widget_rating_filter ul li a{padding:1px 0;text-decoration:none}.woocommerce .widget_rating_filter ul li .star-rating{float:none;display:inline-block}.rtl.woocommerce div.product div.images .flex-control-thumbs li,.woocommerce-error .button,.woocommerce-info .button,.woocommerce-message .button{float:left}.woocommerce .widget_rating_filter ul li.chosen a::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-left:.618em;content:"";text-decoration:none;color:#a00}.pswp{z-index:999999}.woocommerce img.pswp__img,.woocommerce-page img.pswp__img{max-width:none}button.pswp__button{box-shadow:none!important;background-image:url(photoswipe/default-skin/default-skin.png)!important}button.pswp__button,button.pswp__button--arrow--left::before,button.pswp__button--arrow--right::before,button.pswp__button:hover{background-color:transparent!important}button.pswp__button--arrow--left,button.pswp__button--arrow--left:hover,button.pswp__button--arrow--right,button.pswp__button--arrow--right:hover{background-image:none!important}button.pswp__button--close:hover{background-position:100% -44px}button.pswp__button--zoom:hover{background-position:-88px 0}.woocommerce-error,.woocommerce-info,.woocommerce-message{padding:1em 3.5em 1em 2em;margin:0 0 2em;position:relative;background-color:#f7f6f7;color:#515151;border-top:3px solid #a46497;list-style:none;width:auto;word-wrap:break-word}.woocommerce-error::after,.woocommerce-error::before,.woocommerce-info::after,.woocommerce-info::before,.woocommerce-message::after,.woocommerce-message::before{content:' ';display:table}.woocommerce-error::before,.woocommerce-info::before,.woocommerce-message::before{font-family:WooCommerce;content:'\e028';display:inline-block;position:absolute;top:1em;right:1.5em}.woocommerce-error li,.woocommerce-info li,.woocommerce-message li{list-style:none!important;padding-right:0!important;margin-right:0!important}.woocommerce-message{border-top-color:#8fae1b}.woocommerce-message::before{content:'\e015';color:#8fae1b}.woocommerce-info{border-top-color:#1e85be}.woocommerce-info::before{color:#1e85be}.woocommerce-error{border-top-color:#b81c23}.woocommerce-error::before{content:'\e016';color:#b81c23}.woocommerce-account .addresses .title::after,.woocommerce-account .addresses .title::before,.woocommerce-account .woocommerce::after,.woocommerce-account .woocommerce::before{content:' ';display:table}.woocommerce-account .addresses .title h3{float:right}.woocommerce-account .addresses .title .edit,.woocommerce-account ul.digital-downloads li .count{float:left}.woocommerce-account ol.commentlist.notes li.note p.meta{font-weight:700;margin-bottom:0}.woocommerce-account ol.commentlist.notes li.note .description p:last-child{margin-bottom:0}.woocommerce-account ul.digital-downloads{margin-right:0;padding-right:0}.woocommerce-account ul.digital-downloads li{list-style:none;margin-right:0;padding-right:0}.woocommerce-account ul.digital-downloads li::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-left:.618em;content:"";text-decoration:none}#add_payment_method table.cart .product-thumbnail,.woocommerce-cart table.cart .product-thumbnail,.woocommerce-checkout table.cart .product-thumbnail{min-width:32px}#add_payment_method table.cart img,.woocommerce-cart table.cart img,.woocommerce-checkout table.cart img{width:32px;box-shadow:none}#add_payment_method table.cart td,#add_payment_method table.cart th,.woocommerce-cart table.cart td,.woocommerce-cart table.cart th,.woocommerce-checkout table.cart td,.woocommerce-checkout table.cart th{vertical-align:middle}#add_payment_method table.cart td.actions .coupon .input-text,.woocommerce-cart table.cart td.actions .coupon .input-text,.woocommerce-checkout table.cart td.actions .coupon .input-text{float:right;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #d3ced2;padding:6px 6px 5px;margin:0 0 0 4px;outline:0;line-height:1}#add_payment_method table.cart input,.woocommerce-cart table.cart input,.woocommerce-checkout table.cart input{margin:0;vertical-align:middle;line-height:1}#add_payment_method .wc-proceed-to-checkout,.woocommerce-cart .wc-proceed-to-checkout,.woocommerce-checkout .wc-proceed-to-checkout{padding:1em 0}#add_payment_method .wc-proceed-to-checkout::after,#add_payment_method .wc-proceed-to-checkout::before,.woocommerce-cart .wc-proceed-to-checkout::after,.woocommerce-cart .wc-proceed-to-checkout::before,.woocommerce-checkout .wc-proceed-to-checkout::after,.woocommerce-checkout .wc-proceed-to-checkout::before{content:' ';display:table}#add_payment_method .wc-proceed-to-checkout a.checkout-button,.woocommerce-cart .wc-proceed-to-checkout a.checkout-button,.woocommerce-checkout .wc-proceed-to-checkout a.checkout-button{display:block;text-align:center;margin-bottom:1em;font-size:1.25em;padding:1em}#add_payment_method .cart-collaterals .shipping_calculator .button,.woocommerce-cart .cart-collaterals .shipping_calculator .button,.woocommerce-checkout .cart-collaterals .shipping_calculator .button{width:100%;float:none;display:block}#add_payment_method .cart-collaterals .shipping_calculator .shipping-calculator-button::after,.woocommerce-cart .cart-collaterals .shipping_calculator .shipping-calculator-button::after,.woocommerce-checkout .cart-collaterals .shipping_calculator .shipping-calculator-button::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none}#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::after,#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::before,#add_payment_method #payment ul.payment_methods::after,#add_payment_method #payment ul.payment_methods::before,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::before,.woocommerce-cart #payment ul.payment_methods::after,.woocommerce-cart #payment ul.payment_methods::before,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::before,.woocommerce-checkout #payment ul.payment_methods::after,.woocommerce-checkout #payment ul.payment_methods::before{content:' ';display:table}#add_payment_method .cart-collaterals .cart_totals p small,.woocommerce-cart .cart-collaterals .cart_totals p small,.woocommerce-checkout .cart-collaterals .cart_totals p small{color:#777;font-size:.83em}#add_payment_method .cart-collaterals .cart_totals table,.woocommerce-cart .cart-collaterals .cart_totals table,.woocommerce-checkout .cart-collaterals .cart_totals table{border-collapse:separate;margin:0 0 6px;padding:0}#add_payment_method .cart-collaterals .cart_totals table tr:first-child td,#add_payment_method .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-cart .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-cart .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-checkout .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-checkout .cart-collaterals .cart_totals table tr:first-child th{border-top:0}#add_payment_method .cart-collaterals .cart_totals table th,.woocommerce-cart .cart-collaterals .cart_totals table th,.woocommerce-checkout .cart-collaterals .cart_totals table th{width:40%}#add_payment_method .cart-collaterals .cart_totals table td,#add_payment_method .cart-collaterals .cart_totals table th,.woocommerce-cart .cart-collaterals .cart_totals table td,.woocommerce-cart .cart-collaterals .cart_totals table th,.woocommerce-checkout .cart-collaterals .cart_totals table td,.woocommerce-checkout .cart-collaterals .cart_totals table th{vertical-align:top;border-right:0;border-left:0;line-height:1.5em}#add_payment_method .cart-collaterals .cart_totals table small,.woocommerce-cart .cart-collaterals .cart_totals table small,.woocommerce-checkout .cart-collaterals .cart_totals table small{color:#777}#add_payment_method .cart-collaterals .cart_totals table select,.woocommerce-cart .cart-collaterals .cart_totals table select,.woocommerce-checkout .cart-collaterals .cart_totals table select{width:100%}#add_payment_method .cart-collaterals .cart_totals .discount td,.woocommerce-cart .cart-collaterals .cart_totals .discount td,.woocommerce-checkout .cart-collaterals .cart_totals .discount td{color:#77a464}#add_payment_method .cart-collaterals .cart_totals tr td,#add_payment_method .cart-collaterals .cart_totals tr th,.woocommerce-cart .cart-collaterals .cart_totals tr td,.woocommerce-cart .cart-collaterals .cart_totals tr th,.woocommerce-checkout .cart-collaterals .cart_totals tr td,.woocommerce-checkout .cart-collaterals .cart_totals tr th{border-top:1px solid #ebe9eb}#add_payment_method .cart-collaterals .cross-sells ul.products li.product,.woocommerce-cart .cart-collaterals .cross-sells ul.products li.product,.woocommerce-checkout .cart-collaterals .cross-sells ul.products li.product{margin-top:0}#add_payment_method .checkout .col-2 h3#ship-to-different-address,.woocommerce-cart .checkout .col-2 h3#ship-to-different-address,.woocommerce-checkout .checkout .col-2 h3#ship-to-different-address{float:right;clear:none}#add_payment_method .checkout .col-2 .form-row-first,#add_payment_method .checkout .col-2 .notes,.woocommerce-cart .checkout .col-2 .form-row-first,.woocommerce-cart .checkout .col-2 .notes,.woocommerce-checkout .checkout .col-2 .form-row-first,.woocommerce-checkout .checkout .col-2 .notes{clear:right}#add_payment_method .checkout .create-account small,.woocommerce-cart .checkout .create-account small,.woocommerce-checkout .checkout .create-account small{font-size:11px;color:#777;font-weight:400}#add_payment_method .checkout div.shipping-address,.woocommerce-cart .checkout div.shipping-address,.woocommerce-checkout .checkout div.shipping-address{padding:0;clear:right;width:100%}#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::after,#add_payment_method #payment ul.payment_methods::after,#add_payment_method .checkout .shipping_address,.single-product .twentythirteen p.stars,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-cart #payment ul.payment_methods::after,.woocommerce-cart .checkout .shipping_address,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-checkout #payment ul.payment_methods::after,.woocommerce-checkout .checkout .shipping_address{clear:both}#add_payment_method #payment,.woocommerce-cart #payment,.woocommerce-checkout #payment{background:#ebe9eb;border-radius:5px}#add_payment_method #payment ul.payment_methods,.woocommerce-cart #payment ul.payment_methods,.woocommerce-checkout #payment ul.payment_methods{text-align:right;padding:1em;border-bottom:1px solid #d3ced2;margin:0;list-style:none}#add_payment_method #payment ul.payment_methods li,.woocommerce-cart #payment ul.payment_methods li,.woocommerce-checkout #payment ul.payment_methods li{line-height:2;text-align:right;margin:0;font-weight:400}#add_payment_method #payment ul.payment_methods li input,.woocommerce-cart #payment ul.payment_methods li input,.woocommerce-checkout #payment ul.payment_methods li input{margin:0 0 0 1em}#add_payment_method #payment ul.payment_methods li img,.woocommerce-cart #payment ul.payment_methods li img,.woocommerce-checkout #payment ul.payment_methods li img{vertical-align:middle;margin:-2px .5em 0 0;padding:0;position:relative;box-shadow:none}#add_payment_method #payment ul.payment_methods li img+img,.woocommerce-cart #payment ul.payment_methods li img+img,.woocommerce-checkout #payment ul.payment_methods li img+img{margin-right:2px}#add_payment_method #payment div.form-row,.woocommerce-cart #payment div.form-row,.woocommerce-checkout #payment div.form-row{padding:1em}#add_payment_method #payment div.payment_box,.woocommerce-cart #payment div.payment_box,.woocommerce-checkout #payment div.payment_box{position:relative;box-sizing:border-box;width:100%;padding:1em;margin:1em 0;font-size:.92em;border-radius:2px;line-height:1.5;background-color:#dfdcde;color:#515151}#add_payment_method #payment div.payment_box input.input-text,#add_payment_method #payment div.payment_box textarea,.woocommerce-cart #payment div.payment_box input.input-text,.woocommerce-cart #payment div.payment_box textarea,.woocommerce-checkout #payment div.payment_box input.input-text,.woocommerce-checkout #payment div.payment_box textarea{border-color:#bbb3b9 #c7c1c6 #c7c1c6}#add_payment_method #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-cart #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-checkout #payment div.payment_box ::-webkit-input-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box :-moz-placeholder,.woocommerce-cart #payment div.payment_box :-moz-placeholder,.woocommerce-checkout #payment div.payment_box :-moz-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box :-ms-input-placeholder,.woocommerce-cart #payment div.payment_box :-ms-input-placeholder,.woocommerce-checkout #payment div.payment_box :-ms-input-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods{list-style:none;margin:0}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token{margin:0 0 .5em}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label{cursor:pointer}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput{vertical-align:middle;margin:-3px 0 0 1em;position:relative}#add_payment_method #payment div.payment_box .wc-credit-card-form,.woocommerce-cart #payment div.payment_box .wc-credit-card-form,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form{border:0;padding:0;margin:1em 0 0}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number{font-size:1.5em;padding:8px;background-repeat:no-repeat;background-position:left .618em center;background-size:32px 20px}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.visa,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.visa,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.visa{background-image:url(../images/icons/credit-cards/visa.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.mastercard{background-image:url(../images/icons/credit-cards/mastercard.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.laser,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.laser,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.laser{background-image:url(../images/icons/credit-cards/laser.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.dinersclub{background-image:url(../images/icons/credit-cards/diners.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.maestro{background-image:url(../images/icons/credit-cards/maestro.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.jcb{background-image:url(../images/icons/credit-cards/jcb.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.amex,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.amex,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.amex{background-image:url(../images/icons/credit-cards/amex.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.discover,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.discover,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.discover{background-image:url(../images/icons/credit-cards/discover.svg)}#add_payment_method #payment div.payment_box span.help,.woocommerce-cart #payment div.payment_box span.help,.woocommerce-checkout #payment div.payment_box span.help{font-size:.857em;color:#777;font-weight:400}#add_payment_method #payment div.payment_box .form-row,.woocommerce-cart #payment div.payment_box .form-row,.woocommerce-checkout #payment div.payment_box .form-row{margin:0 0 1em}#add_payment_method #payment div.payment_box p:last-child,.woocommerce-cart #payment div.payment_box p:last-child,.woocommerce-checkout #payment div.payment_box p:last-child{margin-bottom:0}#add_payment_method #payment div.payment_box::before,.woocommerce-cart #payment div.payment_box::before,.woocommerce-checkout #payment div.payment_box::before{content:'';display:block;border:1em solid #dfdcde;border-left-color:transparent;border-right-color:transparent;border-top-color:transparent;position:absolute;top:-.75em;right:0;margin:-1em 2em 0 0}#add_payment_method #payment .payment_method_paypal .about_paypal,.woocommerce-cart #payment .payment_method_paypal .about_paypal,.woocommerce-checkout #payment .payment_method_paypal .about_paypal{float:left;line-height:52px;font-size:.83em}#add_payment_method #payment .payment_method_paypal img,.woocommerce-cart #payment .payment_method_paypal img,.woocommerce-checkout #payment .payment_method_paypal img{max-height:52px;vertical-align:middle}.woocommerce-password-strength{text-align:center;font-weight:600;padding:3px .5em;font-size:1em}.woocommerce-password-strength.strong{background-color:#c1e1b9;border-color:#83c373}.woocommerce-password-strength.short{background-color:#f1adad;border-color:#e35b5b}.woocommerce-password-strength.bad{background-color:#fbc5a9;border-color:#f78b53}.woocommerce-password-strength.good{background-color:#ffe399;border-color:#ffc733}.woocommerce-password-hint{margin:.5em 0 0;display:block}.js .woocommerce-product-gallery--with-images{opacity:0}#content.twentyeleven .woocommerce-pagination a{font-size:1em;line-height:1}.single-product .twentythirteen #reply-title,.single-product .twentythirteen #respond #commentform,.single-product .twentythirteen .entry-summary{padding:0}.twentythirteen .woocommerce-breadcrumb{padding-top:40px}.twentyfourteen ul.products li.product{margin-top:0!important}body:not(.search-results) .twentysixteen .entry-summary{color:inherit;font-size:inherit;line-height:inherit}.twentysixteen .price ins{background:inherit;color:inherit} \ No newline at end of file diff --git a/assets/css/woocommerce.css b/assets/css/woocommerce.css index 5ef09be619a..90c079bba22 100644 --- a/assets/css/woocommerce.css +++ b/assets/css/woocommerce.css @@ -1 +1 @@ -@charset "UTF-8";@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg)}}@-moz-keyframes spin{100%{-moz-transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}.woocommerce-store-notice,p.demo_store{position:absolute;top:0;left:0;right:0;margin:0;width:100%;font-size:1em;padding:1em 0;text-align:center;background-color:#a46497;color:#fff;z-index:99998;box-shadow:0 1px 1em rgba(0,0,0,.2);display:none}.woocommerce-store-notice a,p.demo_store a{color:#fff;text-decoration:underline}.admin-bar p.demo_store{top:32px}.clear{clear:both}.woocommerce .blockUI.blockOverlay{position:relative}.woocommerce .blockUI.blockOverlay::before,.woocommerce .loader::before{height:1em;width:1em;display:block;position:absolute;top:50%;left:50%;margin-left:-.5em;margin-top:-.5em;content:'';-webkit-animation:spin 1s ease-in-out infinite;-moz-animation:spin 1s ease-in-out infinite;animation:spin 1s ease-in-out infinite;background:url(../images/icons/loader.svg) center center;background-size:cover;line-height:1;text-align:center;font-size:2em;color:rgba(0,0,0,.75)}.woocommerce a.remove{display:block;font-size:1.5em;height:1em;width:1em;text-align:center;line-height:1;border-radius:100%;color:red!important;text-decoration:none;font-weight:700;border:0}.woocommerce a.remove:hover{color:#fff!important;background:red}.woocommerce small.note{display:block;color:#777;font-size:.857em;margin-top:10px}.woocommerce .woocommerce-breadcrumb{margin:0 0 1em;padding:0;font-size:.92em;color:#777}.woocommerce .woocommerce-breadcrumb::after,.woocommerce .woocommerce-breadcrumb::before{content:' ';display:table}.woocommerce .woocommerce-breadcrumb::after{clear:both}.woocommerce .woocommerce-breadcrumb a{color:#777}.woocommerce .quantity .qty{width:3.631em;text-align:center}.woocommerce div.product{margin-bottom:0;position:relative}.woocommerce div.product .product_title{clear:none;margin-top:0;padding:0}.woocommerce #reviews #comments .add_review::after,.woocommerce .products ul::after,.woocommerce div.product form.cart::after,.woocommerce div.product p.cart::after,.woocommerce nav.woocommerce-pagination ul,.woocommerce ul.products::after{clear:both}.woocommerce div.product p.price,.woocommerce div.product span.price{color:#77a464;font-size:1.25em}.woocommerce div.product p.price ins,.woocommerce div.product span.price ins{background:inherit;font-weight:700}.woocommerce div.product p.price del,.woocommerce div.product span.price del{opacity:.5}.woocommerce div.product p.stock{font-size:.92em}.woocommerce div.product .stock{color:#77a464}.woocommerce div.product .out-of-stock{color:red}.woocommerce div.product .woocommerce-product-rating{margin-bottom:1.618em}.woocommerce div.product div.images{margin-bottom:2em}.woocommerce div.product div.images img{display:block;width:100%;height:auto;box-shadow:none}.woocommerce div.product div.images div.thumbnails{padding-top:1em}.woocommerce div.product div.images.woocommerce-product-gallery{position:relative}.woocommerce div.product div.images .woocommerce-product-gallery__wrapper{transition:all cubic-bezier(.795,-.035,0,1) .5s}.woocommerce div.product div.images .woocommerce-product-gallery__image:nth-child(n+2){width:25%;display:inline-block}.woocommerce div.product div.images .woocommerce-product-gallery__trigger{position:absolute;top:.5em;right:.5em;font-size:2em;z-index:9;width:36px;height:36px;background:#fff;text-indent:-9999px;border-radius:100%;box-sizing:content-box}.woocommerce div.product div.images .woocommerce-product-gallery__trigger:before{content:"";display:block;width:10px;height:10px;border:2px solid #000;border-radius:100%;position:absolute;top:9px;left:9px;box-sizing:content-box}.woocommerce div.product div.images .woocommerce-product-gallery__trigger:after{content:"";display:block;width:2px;height:8px;background:#000;border-radius:6px;position:absolute;top:19px;left:22px;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg);box-sizing:content-box}.woocommerce div.product div.images .flex-control-thumbs{overflow:hidden;zoom:1;margin:0;padding:0}.woocommerce div.product div.images .flex-control-thumbs li{width:25%;float:left;margin:0;list-style:none}.woocommerce div.product div.images .flex-control-thumbs li img{cursor:pointer;opacity:.5;margin:0}.woocommerce div.product div.images .flex-control-thumbs li img.flex-active,.woocommerce div.product div.images .flex-control-thumbs li img:hover{opacity:1}.woocommerce div.product div.summary{margin-bottom:2em}.woocommerce div.product div.social{text-align:right;margin:0 0 1em}.woocommerce div.product div.social span{margin:0 0 0 2px}.woocommerce div.product div.social span span{margin:0}.woocommerce div.product div.social span .stButton .chicklets{padding-left:16px;width:0}.woocommerce div.product div.social iframe{float:left;margin-top:3px}.woocommerce div.product .woocommerce-tabs ul.tabs{list-style:none;padding:0 0 0 1em;margin:0 0 1.618em;overflow:hidden;position:relative}.woocommerce div.product .woocommerce-tabs ul.tabs li{border:1px solid #d3ced2;background-color:#ebe9eb;display:inline-block;position:relative;z-index:0;border-radius:4px 4px 0 0;margin:0 -5px;padding:0 1em}.woocommerce div.product .woocommerce-tabs ul.tabs li a{display:inline-block;padding:.5em 0;font-weight:700;color:#515151;text-decoration:none}.woocommerce div.product form.cart::after,.woocommerce div.product form.cart::before,.woocommerce div.product p.cart::after,.woocommerce div.product p.cart::before{display:table;content:' '}.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover{text-decoration:none;color:#6b6b6b}.woocommerce div.product .woocommerce-tabs ul.tabs li.active{background:#fff;z-index:2;border-bottom-color:#fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{color:inherit;text-shadow:inherit}.woocommerce div.product .woocommerce-tabs ul.tabs li.active::before{box-shadow:2px 2px 0 #fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active::after{box-shadow:-2px 2px 0 #fff}.woocommerce div.product .woocommerce-tabs ul.tabs li::after,.woocommerce div.product .woocommerce-tabs ul.tabs li::before{border:1px solid #d3ced2;position:absolute;bottom:-1px;width:5px;height:5px;content:' '}.woocommerce div.product .woocommerce-tabs ul.tabs li::before{left:-6px;-webkit-border-bottom-right-radius:4px;-moz-border-bottom-right-radius:4px;border-bottom-right-radius:4px;border-width:0 1px 1px 0;box-shadow:2px 2px 0 #ebe9eb}.woocommerce div.product .woocommerce-tabs ul.tabs li::after{right:-6px;-webkit-border-bottom-left-radius:4px;-moz-border-bottom-left-radius:4px;border-bottom-left-radius:4px;border-width:0 0 1px 1px;box-shadow:-2px 2px 0 #ebe9eb}.woocommerce div.product .woocommerce-tabs ul.tabs::before{position:absolute;content:' ';width:100%;bottom:0;left:0;border-bottom:1px solid #d3ced2;z-index:1}.woocommerce div.product .woocommerce-tabs .panel{margin:0 0 2em;padding:0}.woocommerce div.product form.cart,.woocommerce div.product p.cart{margin-bottom:2em}.woocommerce div.product form.cart div.quantity{float:left;margin:0 4px 0 0}.woocommerce div.product form.cart table{border-width:0 0 1px}.woocommerce div.product form.cart table td{padding-left:0}.woocommerce div.product form.cart table div.quantity{float:none;margin:0}.woocommerce div.product form.cart table small.stock{display:block;float:none}.woocommerce div.product form.cart .variations{margin-bottom:1em;border:0;width:100%}.woocommerce div.product form.cart .variations td,.woocommerce div.product form.cart .variations th{border:0;vertical-align:top;line-height:2em}.woocommerce div.product form.cart .variations label{font-weight:700}.woocommerce div.product form.cart .variations select{max-width:100%;min-width:75%;display:inline-block;margin-right:1em}.woocommerce div.product form.cart .variations td.label{padding-right:1em}.woocommerce div.product form.cart .woocommerce-variation-description p{margin-bottom:1em}.woocommerce div.product form.cart .reset_variations{visibility:hidden;font-size:.83em}.woocommerce div.product form.cart .wc-no-matching-variations{display:none}.woocommerce div.product form.cart .button{vertical-align:middle;float:left}.woocommerce div.product form.cart .group_table td.label{padding-right:1em;padding-left:1em}.woocommerce div.product form.cart .group_table td{vertical-align:top;padding-bottom:.5em;border:0}.woocommerce div.product form.cart .group_table td:first-child{width:4em;text-align:center}.woocommerce div.product form.cart .group_table .wc-grouped-product-add-to-cart-checkbox{display:inline-block;width:auto;margin:0 auto;transform:scale(1.5,1.5)}.woocommerce span.onsale{min-height:3.236em;min-width:3.236em;padding:.202em;font-weight:700;position:absolute;text-align:center;line-height:3.236;top:-.5em;left:-.5em;margin:0;border-radius:100%;background-color:#77a464;color:#fff;font-size:.857em;-webkit-font-smoothing:antialiased;z-index:9}.woocommerce .products ul,.woocommerce ul.products{margin:0 0 1em;padding:0;list-style:none;clear:both}.woocommerce .products ul::after,.woocommerce .products ul::before,.woocommerce ul.products::after,.woocommerce ul.products::before{content:' ';display:table}.woocommerce .products ul li,.woocommerce ul.products li{list-style:none}.woocommerce ul.products li.product .onsale{top:0;right:0;left:auto;margin:-.5em -.5em 0 0}.woocommerce ul.products li.product .woocommerce-loop-category__title,.woocommerce ul.products li.product .woocommerce-loop-product__title,.woocommerce ul.products li.product h3{padding:.5em 0;margin:0;font-size:1em}.woocommerce ul.products li.product a{text-decoration:none}.woocommerce ul.products li.product a img{width:100%;height:auto;display:block;margin:0 0 1em;box-shadow:none}.woocommerce ul.products li.product strong{display:block}.woocommerce ul.products li.product .star-rating{font-size:.857em}.woocommerce ul.products li.product .button{margin-top:1em}.woocommerce ul.products li.product .price{color:#77a464;display:block;font-weight:400;margin-bottom:.5em;font-size:.857em}.woocommerce ul.products li.product .price del{color:inherit;opacity:.5;display:block}.woocommerce ul.products li.product .price ins{background:0 0;font-weight:700}.woocommerce ul.products li.product .price .from{font-size:.67em;margin:-2px 0 0;text-transform:uppercase;color:rgba(132,132,132,.5)}.woocommerce .woocommerce-ordering,.woocommerce .woocommerce-result-count{margin:0 0 1em}.woocommerce .woocommerce-ordering select{vertical-align:top}.woocommerce nav.woocommerce-pagination{text-align:center}.woocommerce nav.woocommerce-pagination ul{display:inline-block;white-space:nowrap;padding:0;border:1px solid #d3ced2;border-right:0;margin:1px}.woocommerce nav.woocommerce-pagination ul li{border-right:1px solid #d3ced2;padding:0;margin:0;float:left;display:inline;overflow:hidden}.woocommerce nav.woocommerce-pagination ul li a,.woocommerce nav.woocommerce-pagination ul li span{margin:0;text-decoration:none;line-height:1;font-size:1em;font-weight:400;padding:.5em;min-width:1em;display:block}.woocommerce nav.woocommerce-pagination ul li a:focus,.woocommerce nav.woocommerce-pagination ul li a:hover,.woocommerce nav.woocommerce-pagination ul li span.current{background:#ebe9eb;color:#8a7e88}.woocommerce #respond input#submit,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button{font-size:100%;margin:0;line-height:1;cursor:pointer;position:relative;text-decoration:none;overflow:visible;padding:.618em 1em;font-weight:700;border-radius:3px;left:auto;color:#515151;background-color:#ebe9eb;border:0;white-space:nowrap;display:inline-block;background-image:none;box-shadow:none;-webkit-box-shadow:none;text-shadow:none}.woocommerce #respond input#submit.loading,.woocommerce a.button.loading,.woocommerce button.button.loading,.woocommerce input.button.loading{opacity:.25;padding-right:2.618em}.woocommerce #respond input#submit.loading::after,.woocommerce a.button.loading::after,.woocommerce button.button.loading::after,.woocommerce input.button.loading::after{font-family:WooCommerce;content:'\e01c';vertical-align:top;-webkit-font-smoothing:antialiased;font-weight:400;position:absolute;top:.618em;right:1em;-webkit-animation:spin 2s linear infinite;-moz-animation:spin 2s linear infinite;animation:spin 2s linear infinite}.woocommerce #respond input#submit.added::after,.woocommerce a.button.added::after,.woocommerce button.button.added::after,.woocommerce input.button.added::after{font-family:WooCommerce;content:'\e017';margin-left:.53em;vertical-align:bottom}.woocommerce #respond input#submit:hover,.woocommerce a.button:hover,.woocommerce button.button:hover,.woocommerce input.button:hover{background-color:#dad8da;text-decoration:none;background-image:none;color:#515151}.woocommerce #respond input#submit.alt,.woocommerce a.button.alt,.woocommerce button.button.alt,.woocommerce input.button.alt{background-color:#a46497;color:#fff;-webkit-font-smoothing:antialiased}.woocommerce #respond input#submit.alt:hover,.woocommerce a.button.alt:hover,.woocommerce button.button.alt:hover,.woocommerce input.button.alt:hover{background-color:#935386;color:#fff}.woocommerce #respond input#submit.alt.disabled,.woocommerce #respond input#submit.alt.disabled:hover,.woocommerce #respond input#submit.alt:disabled,.woocommerce #respond input#submit.alt:disabled:hover,.woocommerce #respond input#submit.alt:disabled[disabled],.woocommerce #respond input#submit.alt:disabled[disabled]:hover,.woocommerce a.button.alt.disabled,.woocommerce a.button.alt.disabled:hover,.woocommerce a.button.alt:disabled,.woocommerce a.button.alt:disabled:hover,.woocommerce a.button.alt:disabled[disabled],.woocommerce a.button.alt:disabled[disabled]:hover,.woocommerce button.button.alt.disabled,.woocommerce button.button.alt.disabled:hover,.woocommerce button.button.alt:disabled,.woocommerce button.button.alt:disabled:hover,.woocommerce button.button.alt:disabled[disabled],.woocommerce button.button.alt:disabled[disabled]:hover,.woocommerce input.button.alt.disabled,.woocommerce input.button.alt.disabled:hover,.woocommerce input.button.alt:disabled,.woocommerce input.button.alt:disabled:hover,.woocommerce input.button.alt:disabled[disabled],.woocommerce input.button.alt:disabled[disabled]:hover{background-color:#a46497;color:#fff}.woocommerce #respond input#submit.disabled,.woocommerce #respond input#submit:disabled,.woocommerce #respond input#submit:disabled[disabled],.woocommerce a.button.disabled,.woocommerce a.button:disabled,.woocommerce a.button:disabled[disabled],.woocommerce button.button.disabled,.woocommerce button.button:disabled,.woocommerce button.button:disabled[disabled],.woocommerce input.button.disabled,.woocommerce input.button:disabled,.woocommerce input.button:disabled[disabled]{color:inherit;cursor:not-allowed;opacity:.5;padding:.618em 1em}.woocommerce #respond input#submit.disabled:hover,.woocommerce #respond input#submit:disabled:hover,.woocommerce #respond input#submit:disabled[disabled]:hover,.woocommerce a.button.disabled:hover,.woocommerce a.button:disabled:hover,.woocommerce a.button:disabled[disabled]:hover,.woocommerce button.button.disabled:hover,.woocommerce button.button:disabled:hover,.woocommerce button.button:disabled[disabled]:hover,.woocommerce input.button.disabled:hover,.woocommerce input.button:disabled:hover,.woocommerce input.button:disabled[disabled]:hover{color:inherit;background-color:#ebe9eb}.woocommerce .cart .button,.woocommerce .cart input.button{float:none}.woocommerce a.added_to_cart{padding-top:.5em;white-space:nowrap;display:inline-block}.woocommerce #reviews #comments .add_review::after,.woocommerce #reviews #comments .add_review::before,.woocommerce #reviews #comments ol.commentlist li .comment-text::after,.woocommerce #reviews #comments ol.commentlist li .comment-text::before,.woocommerce #reviews #comments ol.commentlist::after,.woocommerce #reviews #comments ol.commentlist::before{content:' ';display:table}.woocommerce #reviews h2 small{float:right;color:#777;font-size:15px;margin:10px 0 0}.woocommerce #reviews h2 small a{text-decoration:none;color:#777}.woocommerce #reviews h3{margin:0}.woocommerce #reviews #respond{margin:0;border:0;padding:0}.woocommerce #reviews #comment{height:75px}.woocommerce #reviews #comments h2{clear:none}.woocommerce #review_form #respond::after,.woocommerce #reviews #comments ol.commentlist li .comment-text::after,.woocommerce #reviews #comments ol.commentlist::after,.woocommerce .woocommerce-product-rating::after,.woocommerce ul.cart_list li dl::after,.woocommerce ul.cart_list li::after,.woocommerce ul.product_list_widget li dl::after,.woocommerce ul.product_list_widget li::after{clear:both}.woocommerce #reviews #comments ol.commentlist{margin:0;width:100%;background:0 0;list-style:none}.woocommerce #reviews #comments ol.commentlist li{padding:0;margin:0 0 20px;position:relative;background:0;border:0}.woocommerce #reviews #comments ol.commentlist li .meta{color:#777;font-size:.75em}.woocommerce #reviews #comments ol.commentlist li img.avatar{float:left;position:absolute;top:0;left:0;padding:3px;width:32px;height:auto;background:#ebe9eb;border:1px solid #e4e1e3;margin:0;box-shadow:none}.woocommerce #reviews #comments ol.commentlist li .comment-text{margin:0 0 0 50px;border:1px solid #e4e1e3;border-radius:4px;padding:1em 1em 0}.woocommerce #reviews #comments ol.commentlist li .comment-text p{margin:0 0 1em}.woocommerce #reviews #comments ol.commentlist li .comment-text p.meta{font-size:.83em}.woocommerce #reviews #comments ol.commentlist ul.children{list-style:none;margin:20px 0 0 50px}.woocommerce #reviews #comments ol.commentlist ul.children .star-rating{display:none}.woocommerce #reviews #comments ol.commentlist #respond{border:1px solid #e4e1e3;border-radius:4px;padding:1em 1em 0;margin:20px 0 0 50px}.woocommerce #reviews #comments .commentlist>li::before{content:''}.woocommerce .star-rating{float:right;overflow:hidden;position:relative;height:1em;line-height:1;font-size:1em;width:5.4em;font-family:star}.woocommerce .star-rating::before{content:'\73\73\73\73\73';color:#d3ced2;float:left;top:0;left:0;position:absolute}.woocommerce .star-rating span{overflow:hidden;float:left;top:0;left:0;position:absolute;padding-top:1.5em}.woocommerce .star-rating span::before{content:'\53\53\53\53\53';top:0;position:absolute;left:0}.woocommerce .woocommerce-product-rating{line-height:2;display:block}.woocommerce .woocommerce-product-rating::after,.woocommerce .woocommerce-product-rating::before{content:' ';display:table}.woocommerce .woocommerce-product-rating .star-rating{margin:.5em 4px 0 0;float:left}.woocommerce .products .star-rating{display:block;margin:0 0 .5em;float:none}.woocommerce .hreview-aggregate .star-rating{margin:10px 0 0}.woocommerce #review_form #respond{position:static;margin:0;width:auto;padding:0;background:0 0;border:0}.woocommerce #review_form #respond::after,.woocommerce #review_form #respond::before{content:' ';display:table}.woocommerce p.stars a::before,.woocommerce p.stars a:hover~a::before{content:'\e021'}.woocommerce #review_form #respond p{margin:0 0 10px}.woocommerce #review_form #respond .form-submit input{left:auto}.woocommerce #review_form #respond textarea{box-sizing:border-box;width:100%}.woocommerce p.stars a{position:relative;height:1em;width:1em;text-indent:-999em;display:inline-block;text-decoration:none}.woocommerce p.stars a::before{display:block;position:absolute;top:0;left:0;width:1em;height:1em;line-height:1;font-family:WooCommerce;text-indent:0}.woocommerce table.shop_attributes td,.woocommerce table.shop_attributes th{line-height:1.5;border-bottom:1px dotted rgba(0,0,0,.1);border-top:0;margin:0}.woocommerce p.stars.selected a.active::before,.woocommerce p.stars:hover a::before{content:'\e020'}.woocommerce p.stars.selected a.active~a::before{content:'\e021'}.woocommerce p.stars.selected a:not(.active)::before{content:'\e020'}.woocommerce table.shop_attributes{border:0;border-top:1px dotted rgba(0,0,0,.1);margin-bottom:1.618em;width:100%}.woocommerce table.shop_attributes th{width:150px;font-weight:700;padding:8px}.woocommerce table.shop_attributes td{font-style:italic;padding:0}.woocommerce table.shop_attributes td p{margin:0;padding:8px 0}.woocommerce table.shop_attributes tr:nth-child(even) td,.woocommerce table.shop_attributes tr:nth-child(even) th{background:rgba(0,0,0,.025)}.woocommerce table.shop_table{border:1px solid rgba(0,0,0,.1);margin:0 -1px 24px 0;text-align:left;width:100%;border-collapse:separate;border-radius:5px}.woocommerce table.shop_table th{font-weight:700;padding:9px 12px}.woocommerce table.shop_table td{border-top:1px solid rgba(0,0,0,.1);padding:6px 12px;vertical-align:middle}.woocommerce table.shop_table td small{font-weight:400}.woocommerce table.shop_table tbody:first-child tr:first-child td,.woocommerce table.shop_table tbody:first-child tr:first-child th{border-top:0}.woocommerce table.shop_table tbody th,.woocommerce table.shop_table tfoot td,.woocommerce table.shop_table tfoot th{font-weight:700;border-top:1px solid rgba(0,0,0,.1)}.woocommerce table.my_account_orders{font-size:.85em}.woocommerce table.my_account_orders td,.woocommerce table.my_account_orders th{padding:4px 8px;vertical-align:middle}.woocommerce table.my_account_orders .button{white-space:nowrap}.woocommerce table.my_account_orders .order-actions{text-align:right}.woocommerce table.my_account_orders .order-actions .button{margin:.125em 0 .125em .25em}.woocommerce table.woocommerce-MyAccount-downloads td,.woocommerce table.woocommerce-MyAccount-downloads th{vertical-align:top;text-align:center}.woocommerce table.woocommerce-MyAccount-downloads td:first-child,.woocommerce table.woocommerce-MyAccount-downloads td:last-child,.woocommerce table.woocommerce-MyAccount-downloads th:first-child,.woocommerce table.woocommerce-MyAccount-downloads th:last-child{text-align:left}.woocommerce table.woocommerce-MyAccount-downloads td .woocommerce-MyAccount-downloads-file::before,.woocommerce table.woocommerce-MyAccount-downloads th .woocommerce-MyAccount-downloads-file::before{content:'\2193';display:inline-block}.woocommerce td.product-name .wc-item-meta,.woocommerce td.product-name dl.variation{list-style:none}.woocommerce td.product-name .wc-item-meta .wc-item-meta-label,.woocommerce td.product-name .wc-item-meta dt,.woocommerce td.product-name dl.variation .wc-item-meta-label,.woocommerce td.product-name dl.variation dt{float:left;clear:both;margin-right:.25em;display:inline-block;list-style:none}.woocommerce td.product-name .wc-item-meta dd,.woocommerce td.product-name dl.variation dd{margin:0}.woocommerce td.product-name .wc-item-meta p,.woocommerce td.product-name .wc-item-meta:last-child,.woocommerce td.product-name dl.variation p,.woocommerce td.product-name dl.variation:last-child{margin-bottom:0}.woocommerce td.product-name p.backorder_notification{font-size:.83em}.woocommerce td.product-quantity{min-width:80px}.woocommerce ul.cart_list,.woocommerce ul.product_list_widget{list-style:none;padding:0;margin:0}.woocommerce ul.cart_list li,.woocommerce ul.product_list_widget li{padding:4px 0;margin:0;list-style:none}.woocommerce ul.cart_list li::after,.woocommerce ul.cart_list li::before,.woocommerce ul.product_list_widget li::after,.woocommerce ul.product_list_widget li::before{content:' ';display:table}.woocommerce ul.cart_list li a,.woocommerce ul.product_list_widget li a{display:block;font-weight:700}.woocommerce ul.cart_list li img,.woocommerce ul.product_list_widget li img{float:right;margin-left:4px;width:32px;height:auto;box-shadow:none}.woocommerce ul.cart_list li dl,.woocommerce ul.product_list_widget li dl{margin:0;padding-left:1em;border-left:2px solid rgba(0,0,0,.1)}.woocommerce ul.cart_list li dl::after,.woocommerce ul.cart_list li dl::before,.woocommerce ul.product_list_widget li dl::after,.woocommerce ul.product_list_widget li dl::before{content:' ';display:table}.woocommerce ul.cart_list li dl dd,.woocommerce ul.cart_list li dl dt,.woocommerce ul.product_list_widget li dl dd,.woocommerce ul.product_list_widget li dl dt{display:inline-block;float:left;margin-bottom:1em}.woocommerce ul.cart_list li dl dt,.woocommerce ul.product_list_widget li dl dt{font-weight:700;padding:0 0 .25em;margin:0 4px 0 0;clear:left}#add_payment_method .wc-proceed-to-checkout::after,.woocommerce .widget_layered_nav ul li::after,.woocommerce .widget_rating_filter ul li::after,.woocommerce .widget_shopping_cart .buttons::after,.woocommerce ul.order_details::after,.woocommerce-account .addresses .title::after,.woocommerce-account .woocommerce::after,.woocommerce-cart .wc-proceed-to-checkout::after,.woocommerce-checkout .wc-proceed-to-checkout::after,.woocommerce-error::after,.woocommerce-info::after,.woocommerce-message::after,.woocommerce.widget_shopping_cart .buttons::after{clear:both}.woocommerce ul.cart_list li dl dd,.woocommerce ul.product_list_widget li dl dd{padding:0 0 .25em}.woocommerce ul.cart_list li dl dd p:last-child,.woocommerce ul.product_list_widget li dl dd p:last-child{margin-bottom:0}.woocommerce ul.cart_list li .star-rating,.woocommerce ul.product_list_widget li .star-rating{float:none}.woocommerce .widget_shopping_cart .total,.woocommerce.widget_shopping_cart .total{border-top:3px double #ebe9eb;padding:4px 0 0}.woocommerce .widget_shopping_cart .total strong,.woocommerce.widget_shopping_cart .total strong{min-width:40px;display:inline-block}.woocommerce .widget_shopping_cart .cart_list li,.woocommerce.widget_shopping_cart .cart_list li{padding-left:2em;position:relative;padding-top:0}.woocommerce .widget_shopping_cart .cart_list li a.remove,.woocommerce.widget_shopping_cart .cart_list li a.remove{position:absolute;top:0;left:0}.woocommerce .widget_shopping_cart .buttons::after,.woocommerce .widget_shopping_cart .buttons::before,.woocommerce.widget_shopping_cart .buttons::after,.woocommerce.widget_shopping_cart .buttons::before{content:' ';display:table}.woocommerce .widget_shopping_cart .buttons a,.woocommerce.widget_shopping_cart .buttons a{margin-right:5px;margin-bottom:5px}.woocommerce form .form-row{padding:3px;margin:0 0 6px}.woocommerce form .form-row [placeholder]:focus::-webkit-input-placeholder{-webkit-transition:opacity .5s .5s ease;-moz-transition:opacity .5s .5s ease;transition:opacity .5s .5s ease;opacity:0}.woocommerce form .form-row label{line-height:2}.woocommerce form .form-row label.hidden{visibility:hidden}.woocommerce form .form-row label.inline{display:inline}.woocommerce form .form-row select{cursor:pointer;margin:0}.woocommerce form .form-row .required{color:red;font-weight:700;border:0}.woocommerce form .form-row .input-checkbox{display:inline;margin:-2px 8px 0 0;text-align:center;vertical-align:middle}.woocommerce form .form-row input.input-text,.woocommerce form .form-row textarea{box-sizing:border-box;width:100%;margin:0;outline:0;line-height:1}.woocommerce form .form-row textarea{height:4em;line-height:1.5;display:block;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.woocommerce form .form-row .select2-container{width:100%;line-height:2em}.woocommerce form .form-row.woocommerce-invalid label{color:#a00}.woocommerce form .form-row.woocommerce-invalid .select2-container,.woocommerce form .form-row.woocommerce-invalid input.input-text,.woocommerce form .form-row.woocommerce-invalid select{border-color:#a00}.woocommerce form .form-row.woocommerce-validated .select2-container,.woocommerce form .form-row.woocommerce-validated input.input-text,.woocommerce form .form-row.woocommerce-validated select{border-color:#69bf29}.woocommerce form .form-row ::-webkit-input-placeholder{line-height:normal}.woocommerce form .form-row :-moz-placeholder{line-height:normal}.woocommerce form .form-row :-ms-input-placeholder{line-height:normal}.woocommerce form.checkout_coupon,.woocommerce form.login,.woocommerce form.register{border:1px solid #d3ced2;padding:20px;margin:2em 0;text-align:left;border-radius:5px}.woocommerce ul#shipping_method{list-style:none;margin:0;padding:0}.woocommerce ul#shipping_method li{margin:0;padding:.25em 0 .25em 22px;text-indent:-22px;list-style:none}.woocommerce ul#shipping_method li input{margin:3px .5ex}.woocommerce ul#shipping_method li label{display:inline}.woocommerce .widget_layered_nav ul li::after,.woocommerce .widget_layered_nav ul li::before,.woocommerce ul.order_details::after,.woocommerce ul.order_details::before{content:' ';display:table}.woocommerce ul#shipping_method .amount{font-weight:700}.woocommerce p.woocommerce-shipping-contents{margin:0}.woocommerce ul.order_details{margin:0 0 3em;list-style:none}.woocommerce ul.order_details li{float:left;margin-right:2em;text-transform:uppercase;font-size:.715em;line-height:1;border-right:1px dashed #d3ced2;padding-right:2em;margin-left:0;padding-left:0;list-style-type:none}.woocommerce ul.order_details li strong{display:block;font-size:1.4em;text-transform:none;line-height:1.5}.woocommerce ul.order_details li:last-of-type{border:none}.woocommerce .wc-bacs-bank-details-account-name{font-weight:700}.woocommerce .widget_layered_nav ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_layered_nav ul li{padding:0 0 1px;list-style:none}.woocommerce .widget_layered_nav ul li.chosen a::before,.woocommerce .widget_layered_nav_filters ul li a::before{line-height:1;content:"";font-weight:400;color:#a00;font-family:WooCommerce;speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-decoration:none}.woocommerce .widget_layered_nav ul li a,.woocommerce .widget_layered_nav ul li span{padding:1px 0}.woocommerce .widget_layered_nav ul li.chosen a::before{margin-right:.618em}.woocommerce .widget_layered_nav_filters ul{margin:0;padding:0;border:0;list-style:none;overflow:hidden;zoom:1}.woocommerce .widget_layered_nav_filters ul li{float:left;padding:0 1px 1px 0;list-style:none}.woocommerce .widget_layered_nav_filters ul li a{text-decoration:none}.woocommerce .widget_layered_nav_filters ul li a::before{margin-right:.618em}.woocommerce .widget_price_filter .price_slider{margin-bottom:1em}.woocommerce .widget_price_filter .price_slider_amount{text-align:right;line-height:2.4;font-size:.8751em}.woocommerce .widget_price_filter .price_slider_amount .button{font-size:1.15em;float:left}.woocommerce .widget_price_filter .ui-slider{position:relative;text-align:left;margin-left:.5em;margin-right:.5em}.woocommerce .widget_price_filter .ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1em;height:1em;background-color:#a46497;border-radius:1em;cursor:ew-resize;outline:0;top:-.3em;margin-left:-.5em}.woocommerce .widget_price_filter .ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;border-radius:1em;background-color:#a46497}.woocommerce .widget_price_filter .price_slider_wrapper .ui-widget-content{border-radius:1em;background-color:#602053;border:0}.woocommerce .widget_price_filter .ui-slider-horizontal{height:.5em}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range{top:0;height:100%}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-min{left:-1px}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-max{right:-1px}.woocommerce .widget_rating_filter ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_rating_filter ul li{padding:0 0 1px;list-style:none}.woocommerce .widget_rating_filter ul li::after,.woocommerce .widget_rating_filter ul li::before{content:' ';display:table}.woocommerce .widget_rating_filter ul li a{padding:1px 0;text-decoration:none}.woocommerce .widget_rating_filter ul li .star-rating{float:none;display:inline-block}.rtl.woocommerce div.product div.images .flex-control-thumbs li,.woocommerce-error .button,.woocommerce-info .button,.woocommerce-message .button{float:right}.woocommerce .widget_rating_filter ul li.chosen a::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none;color:#a00}.pswp{z-index:999999}.woocommerce img.pswp__img,.woocommerce-page img.pswp__img{max-width:none}button.pswp__button{box-shadow:none!important;background-image:url(photoswipe/default-skin/default-skin.png)!important}button.pswp__button,button.pswp__button--arrow--left::before,button.pswp__button--arrow--right::before,button.pswp__button:hover{background-color:transparent!important}button.pswp__button--arrow--left,button.pswp__button--arrow--left:hover,button.pswp__button--arrow--right,button.pswp__button--arrow--right:hover{background-image:none!important}button.pswp__button--close:hover{background-position:0 -44px}button.pswp__button--zoom:hover{background-position:-88px 0}.woocommerce-error,.woocommerce-info,.woocommerce-message{padding:1em 2em 1em 3.5em;margin:0 0 2em;position:relative;background-color:#f7f6f7;color:#515151;border-top:3px solid #a46497;list-style:none;width:auto;word-wrap:break-word}.woocommerce-error::after,.woocommerce-error::before,.woocommerce-info::after,.woocommerce-info::before,.woocommerce-message::after,.woocommerce-message::before{content:' ';display:table}.woocommerce-error::before,.woocommerce-info::before,.woocommerce-message::before{font-family:WooCommerce;content:'\e028';display:inline-block;position:absolute;top:1em;left:1.5em}.woocommerce-error li,.woocommerce-info li,.woocommerce-message li{list-style:none!important;padding-left:0!important;margin-left:0!important}.woocommerce-message{border-top-color:#8fae1b}.woocommerce-message::before{content:'\e015';color:#8fae1b}.woocommerce-info{border-top-color:#1e85be}.woocommerce-info::before{color:#1e85be}.woocommerce-error{border-top-color:#b81c23}.woocommerce-error::before{content:'\e016';color:#b81c23}.woocommerce-account .addresses .title::after,.woocommerce-account .addresses .title::before,.woocommerce-account .woocommerce::after,.woocommerce-account .woocommerce::before{content:' ';display:table}.woocommerce-account .addresses .title h3{float:left}.woocommerce-account .addresses .title .edit,.woocommerce-account ul.digital-downloads li .count{float:right}.woocommerce-account ol.commentlist.notes li.note p.meta{font-weight:700;margin-bottom:0}.woocommerce-account ol.commentlist.notes li.note .description p:last-child{margin-bottom:0}.woocommerce-account ul.digital-downloads{margin-left:0;padding-left:0}.woocommerce-account ul.digital-downloads li{list-style:none;margin-left:0;padding-left:0}.woocommerce-account ul.digital-downloads li::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none}#add_payment_method table.cart .product-thumbnail,.woocommerce-cart table.cart .product-thumbnail,.woocommerce-checkout table.cart .product-thumbnail{min-width:32px}#add_payment_method table.cart img,.woocommerce-cart table.cart img,.woocommerce-checkout table.cart img{width:32px;box-shadow:none}#add_payment_method table.cart td,#add_payment_method table.cart th,.woocommerce-cart table.cart td,.woocommerce-cart table.cart th,.woocommerce-checkout table.cart td,.woocommerce-checkout table.cart th{vertical-align:middle}#add_payment_method table.cart td.actions .coupon .input-text,.woocommerce-cart table.cart td.actions .coupon .input-text,.woocommerce-checkout table.cart td.actions .coupon .input-text{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #d3ced2;padding:6px 6px 5px;margin:0 4px 0 0;outline:0;line-height:1}#add_payment_method table.cart input,.woocommerce-cart table.cart input,.woocommerce-checkout table.cart input{margin:0;vertical-align:middle;line-height:1}#add_payment_method .wc-proceed-to-checkout,.woocommerce-cart .wc-proceed-to-checkout,.woocommerce-checkout .wc-proceed-to-checkout{padding:1em 0}#add_payment_method .wc-proceed-to-checkout::after,#add_payment_method .wc-proceed-to-checkout::before,.woocommerce-cart .wc-proceed-to-checkout::after,.woocommerce-cart .wc-proceed-to-checkout::before,.woocommerce-checkout .wc-proceed-to-checkout::after,.woocommerce-checkout .wc-proceed-to-checkout::before{content:' ';display:table}#add_payment_method .wc-proceed-to-checkout a.checkout-button,.woocommerce-cart .wc-proceed-to-checkout a.checkout-button,.woocommerce-checkout .wc-proceed-to-checkout a.checkout-button{display:block;text-align:center;margin-bottom:1em;font-size:1.25em;padding:1em}#add_payment_method .cart-collaterals .shipping_calculator .button,.woocommerce-cart .cart-collaterals .shipping_calculator .button,.woocommerce-checkout .cart-collaterals .shipping_calculator .button{width:100%;float:none;display:block}#add_payment_method .cart-collaterals .shipping_calculator .shipping-calculator-button::after,.woocommerce-cart .cart-collaterals .shipping_calculator .shipping-calculator-button::after,.woocommerce-checkout .cart-collaterals .shipping_calculator .shipping-calculator-button::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-left:.618em;content:"";text-decoration:none}#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::after,#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::before,#add_payment_method #payment ul.payment_methods::after,#add_payment_method #payment ul.payment_methods::before,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::before,.woocommerce-cart #payment ul.payment_methods::after,.woocommerce-cart #payment ul.payment_methods::before,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::before,.woocommerce-checkout #payment ul.payment_methods::after,.woocommerce-checkout #payment ul.payment_methods::before{content:' ';display:table}#add_payment_method .cart-collaterals .cart_totals p small,.woocommerce-cart .cart-collaterals .cart_totals p small,.woocommerce-checkout .cart-collaterals .cart_totals p small{color:#777;font-size:.83em}#add_payment_method .cart-collaterals .cart_totals table,.woocommerce-cart .cart-collaterals .cart_totals table,.woocommerce-checkout .cart-collaterals .cart_totals table{border-collapse:separate;margin:0 0 6px;padding:0}#add_payment_method .cart-collaterals .cart_totals table tr:first-child td,#add_payment_method .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-cart .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-cart .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-checkout .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-checkout .cart-collaterals .cart_totals table tr:first-child th{border-top:0}#add_payment_method .cart-collaterals .cart_totals table th,.woocommerce-cart .cart-collaterals .cart_totals table th,.woocommerce-checkout .cart-collaterals .cart_totals table th{width:40%}#add_payment_method .cart-collaterals .cart_totals table td,#add_payment_method .cart-collaterals .cart_totals table th,.woocommerce-cart .cart-collaterals .cart_totals table td,.woocommerce-cart .cart-collaterals .cart_totals table th,.woocommerce-checkout .cart-collaterals .cart_totals table td,.woocommerce-checkout .cart-collaterals .cart_totals table th{vertical-align:top;border-left:0;border-right:0;line-height:1.5em}#add_payment_method .cart-collaterals .cart_totals table small,.woocommerce-cart .cart-collaterals .cart_totals table small,.woocommerce-checkout .cart-collaterals .cart_totals table small{color:#777}#add_payment_method .cart-collaterals .cart_totals table select,.woocommerce-cart .cart-collaterals .cart_totals table select,.woocommerce-checkout .cart-collaterals .cart_totals table select{width:100%}#add_payment_method .cart-collaterals .cart_totals .discount td,.woocommerce-cart .cart-collaterals .cart_totals .discount td,.woocommerce-checkout .cart-collaterals .cart_totals .discount td{color:#77a464}#add_payment_method .cart-collaterals .cart_totals tr td,#add_payment_method .cart-collaterals .cart_totals tr th,.woocommerce-cart .cart-collaterals .cart_totals tr td,.woocommerce-cart .cart-collaterals .cart_totals tr th,.woocommerce-checkout .cart-collaterals .cart_totals tr td,.woocommerce-checkout .cart-collaterals .cart_totals tr th{border-top:1px solid #ebe9eb}#add_payment_method .cart-collaterals .cross-sells ul.products li.product,.woocommerce-cart .cart-collaterals .cross-sells ul.products li.product,.woocommerce-checkout .cart-collaterals .cross-sells ul.products li.product{margin-top:0}#add_payment_method .checkout .col-2 h3#ship-to-different-address,.woocommerce-cart .checkout .col-2 h3#ship-to-different-address,.woocommerce-checkout .checkout .col-2 h3#ship-to-different-address{float:left;clear:none}#add_payment_method .checkout .col-2 .form-row-first,#add_payment_method .checkout .col-2 .notes,.woocommerce-cart .checkout .col-2 .form-row-first,.woocommerce-cart .checkout .col-2 .notes,.woocommerce-checkout .checkout .col-2 .form-row-first,.woocommerce-checkout .checkout .col-2 .notes{clear:left}#add_payment_method .checkout .create-account small,.woocommerce-cart .checkout .create-account small,.woocommerce-checkout .checkout .create-account small{font-size:11px;color:#777;font-weight:400}#add_payment_method .checkout div.shipping-address,.woocommerce-cart .checkout div.shipping-address,.woocommerce-checkout .checkout div.shipping-address{padding:0;clear:left;width:100%}#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::after,#add_payment_method #payment ul.payment_methods::after,#add_payment_method .checkout .shipping_address,.single-product .twentythirteen p.stars,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-cart #payment ul.payment_methods::after,.woocommerce-cart .checkout .shipping_address,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-checkout #payment ul.payment_methods::after,.woocommerce-checkout .checkout .shipping_address{clear:both}#add_payment_method #payment,.woocommerce-cart #payment,.woocommerce-checkout #payment{background:#ebe9eb;border-radius:5px}#add_payment_method #payment ul.payment_methods,.woocommerce-cart #payment ul.payment_methods,.woocommerce-checkout #payment ul.payment_methods{text-align:left;padding:1em;border-bottom:1px solid #d3ced2;margin:0;list-style:none}#add_payment_method #payment ul.payment_methods li,.woocommerce-cart #payment ul.payment_methods li,.woocommerce-checkout #payment ul.payment_methods li{line-height:2;text-align:left;margin:0;font-weight:400}#add_payment_method #payment ul.payment_methods li input,.woocommerce-cart #payment ul.payment_methods li input,.woocommerce-checkout #payment ul.payment_methods li input{margin:0 1em 0 0}#add_payment_method #payment ul.payment_methods li img,.woocommerce-cart #payment ul.payment_methods li img,.woocommerce-checkout #payment ul.payment_methods li img{vertical-align:middle;margin:-2px 0 0 .5em;padding:0;position:relative;box-shadow:none}#add_payment_method #payment ul.payment_methods li img+img,.woocommerce-cart #payment ul.payment_methods li img+img,.woocommerce-checkout #payment ul.payment_methods li img+img{margin-left:2px}#add_payment_method #payment div.form-row,.woocommerce-cart #payment div.form-row,.woocommerce-checkout #payment div.form-row{padding:1em}#add_payment_method #payment div.payment_box,.woocommerce-cart #payment div.payment_box,.woocommerce-checkout #payment div.payment_box{position:relative;box-sizing:border-box;width:100%;padding:1em;margin:1em 0;font-size:.92em;border-radius:2px;line-height:1.5;background-color:#dfdcde;color:#515151}#add_payment_method #payment div.payment_box input.input-text,#add_payment_method #payment div.payment_box textarea,.woocommerce-cart #payment div.payment_box input.input-text,.woocommerce-cart #payment div.payment_box textarea,.woocommerce-checkout #payment div.payment_box input.input-text,.woocommerce-checkout #payment div.payment_box textarea{border-color:#bbb3b9 #c7c1c6 #c7c1c6}#add_payment_method #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-cart #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-checkout #payment div.payment_box ::-webkit-input-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box :-moz-placeholder,.woocommerce-cart #payment div.payment_box :-moz-placeholder,.woocommerce-checkout #payment div.payment_box :-moz-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box :-ms-input-placeholder,.woocommerce-cart #payment div.payment_box :-ms-input-placeholder,.woocommerce-checkout #payment div.payment_box :-ms-input-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods{list-style:none;margin:0}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token{margin:0 0 .5em}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label{cursor:pointer}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput{vertical-align:middle;margin:-3px 1em 0 0;position:relative}#add_payment_method #payment div.payment_box .wc-credit-card-form,.woocommerce-cart #payment div.payment_box .wc-credit-card-form,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form{border:0;padding:0;margin:1em 0 0}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number{font-size:1.5em;padding:8px;background-repeat:no-repeat;background-position:right .618em center;background-size:32px 20px}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.visa,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.visa,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.visa{background-image:url(../images/icons/credit-cards/visa.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.mastercard{background-image:url(../images/icons/credit-cards/mastercard.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.laser,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.laser,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.laser{background-image:url(../images/icons/credit-cards/laser.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.dinersclub{background-image:url(../images/icons/credit-cards/diners.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.maestro{background-image:url(../images/icons/credit-cards/maestro.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.jcb{background-image:url(../images/icons/credit-cards/jcb.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.amex,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.amex,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.amex{background-image:url(../images/icons/credit-cards/amex.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.discover,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.discover,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.discover{background-image:url(../images/icons/credit-cards/discover.svg)}#add_payment_method #payment div.payment_box span.help,.woocommerce-cart #payment div.payment_box span.help,.woocommerce-checkout #payment div.payment_box span.help{font-size:.857em;color:#777;font-weight:400}#add_payment_method #payment div.payment_box .form-row,.woocommerce-cart #payment div.payment_box .form-row,.woocommerce-checkout #payment div.payment_box .form-row{margin:0 0 1em}#add_payment_method #payment div.payment_box p:last-child,.woocommerce-cart #payment div.payment_box p:last-child,.woocommerce-checkout #payment div.payment_box p:last-child{margin-bottom:0}#add_payment_method #payment div.payment_box::before,.woocommerce-cart #payment div.payment_box::before,.woocommerce-checkout #payment div.payment_box::before{content:'';display:block;border:1em solid #dfdcde;border-right-color:transparent;border-left-color:transparent;border-top-color:transparent;position:absolute;top:-.75em;left:0;margin:-1em 0 0 2em}#add_payment_method #payment .payment_method_paypal .about_paypal,.woocommerce-cart #payment .payment_method_paypal .about_paypal,.woocommerce-checkout #payment .payment_method_paypal .about_paypal{float:right;line-height:52px;font-size:.83em}#add_payment_method #payment .payment_method_paypal img,.woocommerce-cart #payment .payment_method_paypal img,.woocommerce-checkout #payment .payment_method_paypal img{max-height:52px;vertical-align:middle}.woocommerce-password-strength{text-align:center;font-weight:600;padding:3px .5em;font-size:1em}.woocommerce-password-strength.strong{background-color:#c1e1b9;border-color:#83c373}.woocommerce-password-strength.short{background-color:#f1adad;border-color:#e35b5b}.woocommerce-password-strength.bad{background-color:#fbc5a9;border-color:#f78b53}.woocommerce-password-strength.good{background-color:#ffe399;border-color:#ffc733}.woocommerce-password-hint{margin:.5em 0 0;display:block}.product.has-default-attributes.has-children>.images{opacity:0}#content.twentyeleven .woocommerce-pagination a{font-size:1em;line-height:1}.single-product .twentythirteen #reply-title,.single-product .twentythirteen #respond #commentform,.single-product .twentythirteen .entry-summary{padding:0}.twentythirteen .woocommerce-breadcrumb{padding-top:40px}.twentyfourteen ul.products li.product{margin-top:0!important}body:not(.search-results) .twentysixteen .entry-summary{color:inherit;font-size:inherit;line-height:inherit}.twentysixteen .price ins{background:inherit;color:inherit} \ No newline at end of file +@charset "UTF-8";@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg)}}@-moz-keyframes spin{100%{-moz-transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}.woocommerce-store-notice,p.demo_store{position:absolute;top:0;left:0;right:0;margin:0;width:100%;font-size:1em;padding:1em 0;text-align:center;background-color:#a46497;color:#fff;z-index:99998;box-shadow:0 1px 1em rgba(0,0,0,.2);display:none}.woocommerce-store-notice a,p.demo_store a{color:#fff;text-decoration:underline}.admin-bar p.demo_store{top:32px}.clear{clear:both}.woocommerce .blockUI.blockOverlay{position:relative}.woocommerce .blockUI.blockOverlay::before,.woocommerce .loader::before{height:1em;width:1em;display:block;position:absolute;top:50%;left:50%;margin-left:-.5em;margin-top:-.5em;content:'';-webkit-animation:spin 1s ease-in-out infinite;-moz-animation:spin 1s ease-in-out infinite;animation:spin 1s ease-in-out infinite;background:url(../images/icons/loader.svg) center center;background-size:cover;line-height:1;text-align:center;font-size:2em;color:rgba(0,0,0,.75)}.woocommerce a.remove{display:block;font-size:1.5em;height:1em;width:1em;text-align:center;line-height:1;border-radius:100%;color:red!important;text-decoration:none;font-weight:700;border:0}.woocommerce a.remove:hover{color:#fff!important;background:red}.woocommerce small.note{display:block;color:#777;font-size:.857em;margin-top:10px}.woocommerce .woocommerce-breadcrumb{margin:0 0 1em;padding:0;font-size:.92em;color:#777}.woocommerce .woocommerce-breadcrumb::after,.woocommerce .woocommerce-breadcrumb::before{content:' ';display:table}.woocommerce .woocommerce-breadcrumb::after{clear:both}.woocommerce .woocommerce-breadcrumb a{color:#777}.woocommerce .quantity .qty{width:3.631em;text-align:center}.woocommerce div.product{margin-bottom:0;position:relative}.woocommerce div.product .product_title{clear:none;margin-top:0;padding:0}.woocommerce #reviews #comments .add_review::after,.woocommerce .products ul::after,.woocommerce div.product form.cart::after,.woocommerce div.product p.cart::after,.woocommerce nav.woocommerce-pagination ul,.woocommerce ul.products::after{clear:both}.woocommerce div.product p.price,.woocommerce div.product span.price{color:#77a464;font-size:1.25em}.woocommerce div.product p.price ins,.woocommerce div.product span.price ins{background:inherit;font-weight:700}.woocommerce div.product p.price del,.woocommerce div.product span.price del{opacity:.5}.woocommerce div.product p.stock{font-size:.92em}.woocommerce div.product .stock{color:#77a464}.woocommerce div.product .out-of-stock{color:red}.woocommerce div.product .woocommerce-product-rating{margin-bottom:1.618em}.woocommerce div.product div.images{margin-bottom:2em}.woocommerce div.product div.images img{display:block;width:100%;height:auto;box-shadow:none}.woocommerce div.product div.images div.thumbnails{padding-top:1em}.woocommerce div.product div.images.woocommerce-product-gallery{position:relative}.woocommerce div.product div.images .woocommerce-product-gallery__wrapper{transition:all cubic-bezier(.795,-.035,0,1) .5s}.woocommerce div.product div.images .woocommerce-product-gallery__image:nth-child(n+2){width:25%;display:inline-block}.woocommerce div.product div.images .woocommerce-product-gallery__trigger{position:absolute;top:.5em;right:.5em;font-size:2em;z-index:9;width:36px;height:36px;background:#fff;text-indent:-9999px;border-radius:100%;box-sizing:content-box}.woocommerce div.product div.images .woocommerce-product-gallery__trigger:before{content:"";display:block;width:10px;height:10px;border:2px solid #000;border-radius:100%;position:absolute;top:9px;left:9px;box-sizing:content-box}.woocommerce div.product div.images .woocommerce-product-gallery__trigger:after{content:"";display:block;width:2px;height:8px;background:#000;border-radius:6px;position:absolute;top:19px;left:22px;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg);box-sizing:content-box}.woocommerce div.product div.images .flex-control-thumbs{overflow:hidden;zoom:1;margin:0;padding:0}.woocommerce div.product div.images .flex-control-thumbs li{width:25%;float:left;margin:0;list-style:none}.woocommerce div.product div.images .flex-control-thumbs li img{cursor:pointer;opacity:.5;margin:0}.woocommerce div.product div.images .flex-control-thumbs li img.flex-active,.woocommerce div.product div.images .flex-control-thumbs li img:hover{opacity:1}.woocommerce div.product div.summary{margin-bottom:2em}.woocommerce div.product div.social{text-align:right;margin:0 0 1em}.woocommerce div.product div.social span{margin:0 0 0 2px}.woocommerce div.product div.social span span{margin:0}.woocommerce div.product div.social span .stButton .chicklets{padding-left:16px;width:0}.woocommerce div.product div.social iframe{float:left;margin-top:3px}.woocommerce div.product .woocommerce-tabs ul.tabs{list-style:none;padding:0 0 0 1em;margin:0 0 1.618em;overflow:hidden;position:relative}.woocommerce div.product .woocommerce-tabs ul.tabs li{border:1px solid #d3ced2;background-color:#ebe9eb;display:inline-block;position:relative;z-index:0;border-radius:4px 4px 0 0;margin:0 -5px;padding:0 1em}.woocommerce div.product .woocommerce-tabs ul.tabs li a{display:inline-block;padding:.5em 0;font-weight:700;color:#515151;text-decoration:none}.woocommerce div.product form.cart::after,.woocommerce div.product form.cart::before,.woocommerce div.product p.cart::after,.woocommerce div.product p.cart::before{display:table;content:' '}.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover{text-decoration:none;color:#6b6b6b}.woocommerce div.product .woocommerce-tabs ul.tabs li.active{background:#fff;z-index:2;border-bottom-color:#fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{color:inherit;text-shadow:inherit}.woocommerce div.product .woocommerce-tabs ul.tabs li.active::before{box-shadow:2px 2px 0 #fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active::after{box-shadow:-2px 2px 0 #fff}.woocommerce div.product .woocommerce-tabs ul.tabs li::after,.woocommerce div.product .woocommerce-tabs ul.tabs li::before{border:1px solid #d3ced2;position:absolute;bottom:-1px;width:5px;height:5px;content:' '}.woocommerce div.product .woocommerce-tabs ul.tabs li::before{left:-6px;-webkit-border-bottom-right-radius:4px;-moz-border-bottom-right-radius:4px;border-bottom-right-radius:4px;border-width:0 1px 1px 0;box-shadow:2px 2px 0 #ebe9eb}.woocommerce div.product .woocommerce-tabs ul.tabs li::after{right:-6px;-webkit-border-bottom-left-radius:4px;-moz-border-bottom-left-radius:4px;border-bottom-left-radius:4px;border-width:0 0 1px 1px;box-shadow:-2px 2px 0 #ebe9eb}.woocommerce div.product .woocommerce-tabs ul.tabs::before{position:absolute;content:' ';width:100%;bottom:0;left:0;border-bottom:1px solid #d3ced2;z-index:1}.woocommerce div.product .woocommerce-tabs .panel{margin:0 0 2em;padding:0}.woocommerce div.product form.cart,.woocommerce div.product p.cart{margin-bottom:2em}.woocommerce div.product form.cart div.quantity{float:left;margin:0 4px 0 0}.woocommerce div.product form.cart table{border-width:0 0 1px}.woocommerce div.product form.cart table td{padding-left:0}.woocommerce div.product form.cart table div.quantity{float:none;margin:0}.woocommerce div.product form.cart table small.stock{display:block;float:none}.woocommerce div.product form.cart .variations{margin-bottom:1em;border:0;width:100%}.woocommerce div.product form.cart .variations td,.woocommerce div.product form.cart .variations th{border:0;vertical-align:top;line-height:2em}.woocommerce div.product form.cart .variations label{font-weight:700}.woocommerce div.product form.cart .variations select{max-width:100%;min-width:75%;display:inline-block;margin-right:1em}.woocommerce div.product form.cart .variations td.label{padding-right:1em}.woocommerce div.product form.cart .woocommerce-variation-description p{margin-bottom:1em}.woocommerce div.product form.cart .reset_variations{visibility:hidden;font-size:.83em}.woocommerce div.product form.cart .wc-no-matching-variations{display:none}.woocommerce div.product form.cart .button{vertical-align:middle;float:left}.woocommerce div.product form.cart .group_table td.label{padding-right:1em;padding-left:1em}.woocommerce div.product form.cart .group_table td{vertical-align:top;padding-bottom:.5em;border:0}.woocommerce div.product form.cart .group_table td:first-child{width:4em;text-align:center}.woocommerce div.product form.cart .group_table .wc-grouped-product-add-to-cart-checkbox{display:inline-block;width:auto;margin:0 auto;transform:scale(1.5,1.5)}.woocommerce span.onsale{min-height:3.236em;min-width:3.236em;padding:.202em;font-weight:700;position:absolute;text-align:center;line-height:3.236;top:-.5em;left:-.5em;margin:0;border-radius:100%;background-color:#77a464;color:#fff;font-size:.857em;-webkit-font-smoothing:antialiased;z-index:9}.woocommerce .products ul,.woocommerce ul.products{margin:0 0 1em;padding:0;list-style:none;clear:both}.woocommerce .products ul::after,.woocommerce .products ul::before,.woocommerce ul.products::after,.woocommerce ul.products::before{content:' ';display:table}.woocommerce .products ul li,.woocommerce ul.products li{list-style:none}.woocommerce ul.products li.product .onsale{top:0;right:0;left:auto;margin:-.5em -.5em 0 0}.woocommerce ul.products li.product .woocommerce-loop-category__title,.woocommerce ul.products li.product .woocommerce-loop-product__title,.woocommerce ul.products li.product h3{padding:.5em 0;margin:0;font-size:1em}.woocommerce ul.products li.product a{text-decoration:none}.woocommerce ul.products li.product a img{width:100%;height:auto;display:block;margin:0 0 1em;box-shadow:none}.woocommerce ul.products li.product strong{display:block}.woocommerce ul.products li.product .star-rating{font-size:.857em}.woocommerce ul.products li.product .button{margin-top:1em}.woocommerce ul.products li.product .price{color:#77a464;display:block;font-weight:400;margin-bottom:.5em;font-size:.857em}.woocommerce ul.products li.product .price del{color:inherit;opacity:.5;display:block}.woocommerce ul.products li.product .price ins{background:0 0;font-weight:700}.woocommerce ul.products li.product .price .from{font-size:.67em;margin:-2px 0 0;text-transform:uppercase;color:rgba(132,132,132,.5)}.woocommerce .woocommerce-ordering,.woocommerce .woocommerce-result-count{margin:0 0 1em}.woocommerce .woocommerce-ordering select{vertical-align:top}.woocommerce nav.woocommerce-pagination{text-align:center}.woocommerce nav.woocommerce-pagination ul{display:inline-block;white-space:nowrap;padding:0;border:1px solid #d3ced2;border-right:0;margin:1px}.woocommerce nav.woocommerce-pagination ul li{border-right:1px solid #d3ced2;padding:0;margin:0;float:left;display:inline;overflow:hidden}.woocommerce nav.woocommerce-pagination ul li a,.woocommerce nav.woocommerce-pagination ul li span{margin:0;text-decoration:none;line-height:1;font-size:1em;font-weight:400;padding:.5em;min-width:1em;display:block}.woocommerce nav.woocommerce-pagination ul li a:focus,.woocommerce nav.woocommerce-pagination ul li a:hover,.woocommerce nav.woocommerce-pagination ul li span.current{background:#ebe9eb;color:#8a7e88}.woocommerce #respond input#submit,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button{font-size:100%;margin:0;line-height:1;cursor:pointer;position:relative;text-decoration:none;overflow:visible;padding:.618em 1em;font-weight:700;border-radius:3px;left:auto;color:#515151;background-color:#ebe9eb;border:0;white-space:nowrap;display:inline-block;background-image:none;box-shadow:none;-webkit-box-shadow:none;text-shadow:none}.woocommerce #respond input#submit.loading,.woocommerce a.button.loading,.woocommerce button.button.loading,.woocommerce input.button.loading{opacity:.25;padding-right:2.618em}.woocommerce #respond input#submit.loading::after,.woocommerce a.button.loading::after,.woocommerce button.button.loading::after,.woocommerce input.button.loading::after{font-family:WooCommerce;content:'\e01c';vertical-align:top;-webkit-font-smoothing:antialiased;font-weight:400;position:absolute;top:.618em;right:1em;-webkit-animation:spin 2s linear infinite;-moz-animation:spin 2s linear infinite;animation:spin 2s linear infinite}.woocommerce #respond input#submit.added::after,.woocommerce a.button.added::after,.woocommerce button.button.added::after,.woocommerce input.button.added::after{font-family:WooCommerce;content:'\e017';margin-left:.53em;vertical-align:bottom}.woocommerce #respond input#submit:hover,.woocommerce a.button:hover,.woocommerce button.button:hover,.woocommerce input.button:hover{background-color:#dad8da;text-decoration:none;background-image:none;color:#515151}.woocommerce #respond input#submit.alt,.woocommerce a.button.alt,.woocommerce button.button.alt,.woocommerce input.button.alt{background-color:#a46497;color:#fff;-webkit-font-smoothing:antialiased}.woocommerce #respond input#submit.alt:hover,.woocommerce a.button.alt:hover,.woocommerce button.button.alt:hover,.woocommerce input.button.alt:hover{background-color:#935386;color:#fff}.woocommerce #respond input#submit.alt.disabled,.woocommerce #respond input#submit.alt.disabled:hover,.woocommerce #respond input#submit.alt:disabled,.woocommerce #respond input#submit.alt:disabled:hover,.woocommerce #respond input#submit.alt:disabled[disabled],.woocommerce #respond input#submit.alt:disabled[disabled]:hover,.woocommerce a.button.alt.disabled,.woocommerce a.button.alt.disabled:hover,.woocommerce a.button.alt:disabled,.woocommerce a.button.alt:disabled:hover,.woocommerce a.button.alt:disabled[disabled],.woocommerce a.button.alt:disabled[disabled]:hover,.woocommerce button.button.alt.disabled,.woocommerce button.button.alt.disabled:hover,.woocommerce button.button.alt:disabled,.woocommerce button.button.alt:disabled:hover,.woocommerce button.button.alt:disabled[disabled],.woocommerce button.button.alt:disabled[disabled]:hover,.woocommerce input.button.alt.disabled,.woocommerce input.button.alt.disabled:hover,.woocommerce input.button.alt:disabled,.woocommerce input.button.alt:disabled:hover,.woocommerce input.button.alt:disabled[disabled],.woocommerce input.button.alt:disabled[disabled]:hover{background-color:#a46497;color:#fff}.woocommerce #respond input#submit.disabled,.woocommerce #respond input#submit:disabled,.woocommerce #respond input#submit:disabled[disabled],.woocommerce a.button.disabled,.woocommerce a.button:disabled,.woocommerce a.button:disabled[disabled],.woocommerce button.button.disabled,.woocommerce button.button:disabled,.woocommerce button.button:disabled[disabled],.woocommerce input.button.disabled,.woocommerce input.button:disabled,.woocommerce input.button:disabled[disabled]{color:inherit;cursor:not-allowed;opacity:.5;padding:.618em 1em}.woocommerce #respond input#submit.disabled:hover,.woocommerce #respond input#submit:disabled:hover,.woocommerce #respond input#submit:disabled[disabled]:hover,.woocommerce a.button.disabled:hover,.woocommerce a.button:disabled:hover,.woocommerce a.button:disabled[disabled]:hover,.woocommerce button.button.disabled:hover,.woocommerce button.button:disabled:hover,.woocommerce button.button:disabled[disabled]:hover,.woocommerce input.button.disabled:hover,.woocommerce input.button:disabled:hover,.woocommerce input.button:disabled[disabled]:hover{color:inherit;background-color:#ebe9eb}.woocommerce .cart .button,.woocommerce .cart input.button{float:none}.woocommerce a.added_to_cart{padding-top:.5em;white-space:nowrap;display:inline-block}.woocommerce #reviews #comments .add_review::after,.woocommerce #reviews #comments .add_review::before,.woocommerce #reviews #comments ol.commentlist li .comment-text::after,.woocommerce #reviews #comments ol.commentlist li .comment-text::before,.woocommerce #reviews #comments ol.commentlist::after,.woocommerce #reviews #comments ol.commentlist::before{content:' ';display:table}.woocommerce #reviews h2 small{float:right;color:#777;font-size:15px;margin:10px 0 0}.woocommerce #reviews h2 small a{text-decoration:none;color:#777}.woocommerce #reviews h3{margin:0}.woocommerce #reviews #respond{margin:0;border:0;padding:0}.woocommerce #reviews #comment{height:75px}.woocommerce #reviews #comments h2{clear:none}.woocommerce #review_form #respond::after,.woocommerce #reviews #comments ol.commentlist li .comment-text::after,.woocommerce #reviews #comments ol.commentlist::after,.woocommerce .woocommerce-product-rating::after,.woocommerce ul.cart_list li dl::after,.woocommerce ul.cart_list li::after,.woocommerce ul.product_list_widget li dl::after,.woocommerce ul.product_list_widget li::after{clear:both}.woocommerce #reviews #comments ol.commentlist{margin:0;width:100%;background:0 0;list-style:none}.woocommerce #reviews #comments ol.commentlist li{padding:0;margin:0 0 20px;position:relative;background:0;border:0}.woocommerce #reviews #comments ol.commentlist li .meta{color:#777;font-size:.75em}.woocommerce #reviews #comments ol.commentlist li img.avatar{float:left;position:absolute;top:0;left:0;padding:3px;width:32px;height:auto;background:#ebe9eb;border:1px solid #e4e1e3;margin:0;box-shadow:none}.woocommerce #reviews #comments ol.commentlist li .comment-text{margin:0 0 0 50px;border:1px solid #e4e1e3;border-radius:4px;padding:1em 1em 0}.woocommerce #reviews #comments ol.commentlist li .comment-text p{margin:0 0 1em}.woocommerce #reviews #comments ol.commentlist li .comment-text p.meta{font-size:.83em}.woocommerce #reviews #comments ol.commentlist ul.children{list-style:none;margin:20px 0 0 50px}.woocommerce #reviews #comments ol.commentlist ul.children .star-rating{display:none}.woocommerce #reviews #comments ol.commentlist #respond{border:1px solid #e4e1e3;border-radius:4px;padding:1em 1em 0;margin:20px 0 0 50px}.woocommerce #reviews #comments .commentlist>li::before{content:''}.woocommerce .star-rating{float:right;overflow:hidden;position:relative;height:1em;line-height:1;font-size:1em;width:5.4em;font-family:star}.woocommerce .star-rating::before{content:'\73\73\73\73\73';color:#d3ced2;float:left;top:0;left:0;position:absolute}.woocommerce .star-rating span{overflow:hidden;float:left;top:0;left:0;position:absolute;padding-top:1.5em}.woocommerce .star-rating span::before{content:'\53\53\53\53\53';top:0;position:absolute;left:0}.woocommerce .woocommerce-product-rating{line-height:2;display:block}.woocommerce .woocommerce-product-rating::after,.woocommerce .woocommerce-product-rating::before{content:' ';display:table}.woocommerce .woocommerce-product-rating .star-rating{margin:.5em 4px 0 0;float:left}.woocommerce .products .star-rating{display:block;margin:0 0 .5em;float:none}.woocommerce .hreview-aggregate .star-rating{margin:10px 0 0}.woocommerce #review_form #respond{position:static;margin:0;width:auto;padding:0;background:0 0;border:0}.woocommerce #review_form #respond::after,.woocommerce #review_form #respond::before{content:' ';display:table}.woocommerce p.stars a::before,.woocommerce p.stars a:hover~a::before{content:'\e021'}.woocommerce #review_form #respond p{margin:0 0 10px}.woocommerce #review_form #respond .form-submit input{left:auto}.woocommerce #review_form #respond textarea{box-sizing:border-box;width:100%}.woocommerce p.stars a{position:relative;height:1em;width:1em;text-indent:-999em;display:inline-block;text-decoration:none}.woocommerce p.stars a::before{display:block;position:absolute;top:0;left:0;width:1em;height:1em;line-height:1;font-family:WooCommerce;text-indent:0}.woocommerce table.shop_attributes td,.woocommerce table.shop_attributes th{line-height:1.5;border-bottom:1px dotted rgba(0,0,0,.1);border-top:0;margin:0}.woocommerce p.stars.selected a.active::before,.woocommerce p.stars:hover a::before{content:'\e020'}.woocommerce p.stars.selected a.active~a::before{content:'\e021'}.woocommerce p.stars.selected a:not(.active)::before{content:'\e020'}.woocommerce table.shop_attributes{border:0;border-top:1px dotted rgba(0,0,0,.1);margin-bottom:1.618em;width:100%}.woocommerce table.shop_attributes th{width:150px;font-weight:700;padding:8px}.woocommerce table.shop_attributes td{font-style:italic;padding:0}.woocommerce table.shop_attributes td p{margin:0;padding:8px 0}.woocommerce table.shop_attributes tr:nth-child(even) td,.woocommerce table.shop_attributes tr:nth-child(even) th{background:rgba(0,0,0,.025)}.woocommerce table.shop_table{border:1px solid rgba(0,0,0,.1);margin:0 -1px 24px 0;text-align:left;width:100%;border-collapse:separate;border-radius:5px}.woocommerce table.shop_table th{font-weight:700;padding:9px 12px}.woocommerce table.shop_table td{border-top:1px solid rgba(0,0,0,.1);padding:6px 12px;vertical-align:middle}.woocommerce table.shop_table td small{font-weight:400}.woocommerce table.shop_table tbody:first-child tr:first-child td,.woocommerce table.shop_table tbody:first-child tr:first-child th{border-top:0}.woocommerce table.shop_table tbody th,.woocommerce table.shop_table tfoot td,.woocommerce table.shop_table tfoot th{font-weight:700;border-top:1px solid rgba(0,0,0,.1)}.woocommerce table.my_account_orders{font-size:.85em}.woocommerce table.my_account_orders td,.woocommerce table.my_account_orders th{padding:4px 8px;vertical-align:middle}.woocommerce table.my_account_orders .button{white-space:nowrap}.woocommerce table.my_account_orders .order-actions{text-align:right}.woocommerce table.my_account_orders .order-actions .button{margin:.125em 0 .125em .25em}.woocommerce table.woocommerce-MyAccount-downloads td,.woocommerce table.woocommerce-MyAccount-downloads th{vertical-align:top;text-align:center}.woocommerce table.woocommerce-MyAccount-downloads td:first-child,.woocommerce table.woocommerce-MyAccount-downloads td:last-child,.woocommerce table.woocommerce-MyAccount-downloads th:first-child,.woocommerce table.woocommerce-MyAccount-downloads th:last-child{text-align:left}.woocommerce table.woocommerce-MyAccount-downloads td .woocommerce-MyAccount-downloads-file::before,.woocommerce table.woocommerce-MyAccount-downloads th .woocommerce-MyAccount-downloads-file::before{content:'\2193';display:inline-block}.woocommerce td.product-name .wc-item-meta,.woocommerce td.product-name dl.variation{list-style:none}.woocommerce td.product-name .wc-item-meta .wc-item-meta-label,.woocommerce td.product-name .wc-item-meta dt,.woocommerce td.product-name dl.variation .wc-item-meta-label,.woocommerce td.product-name dl.variation dt{float:left;clear:both;margin-right:.25em;display:inline-block;list-style:none}.woocommerce td.product-name .wc-item-meta dd,.woocommerce td.product-name dl.variation dd{margin:0}.woocommerce td.product-name .wc-item-meta p,.woocommerce td.product-name .wc-item-meta:last-child,.woocommerce td.product-name dl.variation p,.woocommerce td.product-name dl.variation:last-child{margin-bottom:0}.woocommerce td.product-name p.backorder_notification{font-size:.83em}.woocommerce td.product-quantity{min-width:80px}.woocommerce ul.cart_list,.woocommerce ul.product_list_widget{list-style:none;padding:0;margin:0}.woocommerce ul.cart_list li,.woocommerce ul.product_list_widget li{padding:4px 0;margin:0;list-style:none}.woocommerce ul.cart_list li::after,.woocommerce ul.cart_list li::before,.woocommerce ul.product_list_widget li::after,.woocommerce ul.product_list_widget li::before{content:' ';display:table}.woocommerce ul.cart_list li a,.woocommerce ul.product_list_widget li a{display:block;font-weight:700}.woocommerce ul.cart_list li img,.woocommerce ul.product_list_widget li img{float:right;margin-left:4px;width:32px;height:auto;box-shadow:none}.woocommerce ul.cart_list li dl,.woocommerce ul.product_list_widget li dl{margin:0;padding-left:1em;border-left:2px solid rgba(0,0,0,.1)}.woocommerce ul.cart_list li dl::after,.woocommerce ul.cart_list li dl::before,.woocommerce ul.product_list_widget li dl::after,.woocommerce ul.product_list_widget li dl::before{content:' ';display:table}.woocommerce ul.cart_list li dl dd,.woocommerce ul.cart_list li dl dt,.woocommerce ul.product_list_widget li dl dd,.woocommerce ul.product_list_widget li dl dt{display:inline-block;float:left;margin-bottom:1em}.woocommerce ul.cart_list li dl dt,.woocommerce ul.product_list_widget li dl dt{font-weight:700;padding:0 0 .25em;margin:0 4px 0 0;clear:left}#add_payment_method .wc-proceed-to-checkout::after,.woocommerce .widget_layered_nav ul li::after,.woocommerce .widget_rating_filter ul li::after,.woocommerce .widget_shopping_cart .buttons::after,.woocommerce ul.order_details::after,.woocommerce-account .addresses .title::after,.woocommerce-account .woocommerce::after,.woocommerce-cart .wc-proceed-to-checkout::after,.woocommerce-checkout .wc-proceed-to-checkout::after,.woocommerce-error::after,.woocommerce-info::after,.woocommerce-message::after,.woocommerce.widget_shopping_cart .buttons::after{clear:both}.woocommerce ul.cart_list li dl dd,.woocommerce ul.product_list_widget li dl dd{padding:0 0 .25em}.woocommerce ul.cart_list li dl dd p:last-child,.woocommerce ul.product_list_widget li dl dd p:last-child{margin-bottom:0}.woocommerce ul.cart_list li .star-rating,.woocommerce ul.product_list_widget li .star-rating{float:none}.woocommerce .widget_shopping_cart .total,.woocommerce.widget_shopping_cart .total{border-top:3px double #ebe9eb;padding:4px 0 0}.woocommerce .widget_shopping_cart .total strong,.woocommerce.widget_shopping_cart .total strong{min-width:40px;display:inline-block}.woocommerce .widget_shopping_cart .cart_list li,.woocommerce.widget_shopping_cart .cart_list li{padding-left:2em;position:relative;padding-top:0}.woocommerce .widget_shopping_cart .cart_list li a.remove,.woocommerce.widget_shopping_cart .cart_list li a.remove{position:absolute;top:0;left:0}.woocommerce .widget_shopping_cart .buttons::after,.woocommerce .widget_shopping_cart .buttons::before,.woocommerce.widget_shopping_cart .buttons::after,.woocommerce.widget_shopping_cart .buttons::before{content:' ';display:table}.woocommerce .widget_shopping_cart .buttons a,.woocommerce.widget_shopping_cart .buttons a{margin-right:5px;margin-bottom:5px}.woocommerce form .form-row{padding:3px;margin:0 0 6px}.woocommerce form .form-row [placeholder]:focus::-webkit-input-placeholder{-webkit-transition:opacity .5s .5s ease;-moz-transition:opacity .5s .5s ease;transition:opacity .5s .5s ease;opacity:0}.woocommerce form .form-row label{line-height:2}.woocommerce form .form-row label.hidden{visibility:hidden}.woocommerce form .form-row label.inline{display:inline}.woocommerce form .form-row select{cursor:pointer;margin:0}.woocommerce form .form-row .required{color:red;font-weight:700;border:0}.woocommerce form .form-row .input-checkbox{display:inline;margin:-2px 8px 0 0;text-align:center;vertical-align:middle}.woocommerce form .form-row input.input-text,.woocommerce form .form-row textarea{box-sizing:border-box;width:100%;margin:0;outline:0;line-height:1}.woocommerce form .form-row textarea{height:4em;line-height:1.5;display:block;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.woocommerce form .form-row .select2-container{width:100%;line-height:2em}.woocommerce form .form-row.woocommerce-invalid label{color:#a00}.woocommerce form .form-row.woocommerce-invalid .select2-container,.woocommerce form .form-row.woocommerce-invalid input.input-text,.woocommerce form .form-row.woocommerce-invalid select{border-color:#a00}.woocommerce form .form-row.woocommerce-validated .select2-container,.woocommerce form .form-row.woocommerce-validated input.input-text,.woocommerce form .form-row.woocommerce-validated select{border-color:#69bf29}.woocommerce form .form-row ::-webkit-input-placeholder{line-height:normal}.woocommerce form .form-row :-moz-placeholder{line-height:normal}.woocommerce form .form-row :-ms-input-placeholder{line-height:normal}.woocommerce form.checkout_coupon,.woocommerce form.login,.woocommerce form.register{border:1px solid #d3ced2;padding:20px;margin:2em 0;text-align:left;border-radius:5px}.woocommerce ul#shipping_method{list-style:none;margin:0;padding:0}.woocommerce ul#shipping_method li{margin:0;padding:.25em 0 .25em 22px;text-indent:-22px;list-style:none}.woocommerce ul#shipping_method li input{margin:3px .5ex}.woocommerce ul#shipping_method li label{display:inline}.woocommerce .widget_layered_nav ul li::after,.woocommerce .widget_layered_nav ul li::before,.woocommerce ul.order_details::after,.woocommerce ul.order_details::before{content:' ';display:table}.woocommerce ul#shipping_method .amount{font-weight:700}.woocommerce p.woocommerce-shipping-contents{margin:0}.woocommerce ul.order_details{margin:0 0 3em;list-style:none}.woocommerce ul.order_details li{float:left;margin-right:2em;text-transform:uppercase;font-size:.715em;line-height:1;border-right:1px dashed #d3ced2;padding-right:2em;margin-left:0;padding-left:0;list-style-type:none}.woocommerce ul.order_details li strong{display:block;font-size:1.4em;text-transform:none;line-height:1.5}.woocommerce ul.order_details li:last-of-type{border:none}.woocommerce .wc-bacs-bank-details-account-name{font-weight:700}.woocommerce .widget_layered_nav ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_layered_nav ul li{padding:0 0 1px;list-style:none}.woocommerce .widget_layered_nav ul li.chosen a::before,.woocommerce .widget_layered_nav_filters ul li a::before{line-height:1;content:"";font-weight:400;color:#a00;font-family:WooCommerce;speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-decoration:none}.woocommerce .widget_layered_nav ul li a,.woocommerce .widget_layered_nav ul li span{padding:1px 0}.woocommerce .widget_layered_nav ul li.chosen a::before{margin-right:.618em}.woocommerce .widget_layered_nav_filters ul{margin:0;padding:0;border:0;list-style:none;overflow:hidden;zoom:1}.woocommerce .widget_layered_nav_filters ul li{float:left;padding:0 1px 1px 0;list-style:none}.woocommerce .widget_layered_nav_filters ul li a{text-decoration:none}.woocommerce .widget_layered_nav_filters ul li a::before{margin-right:.618em}.woocommerce .widget_price_filter .price_slider{margin-bottom:1em}.woocommerce .widget_price_filter .price_slider_amount{text-align:right;line-height:2.4;font-size:.8751em}.woocommerce .widget_price_filter .price_slider_amount .button{font-size:1.15em;float:left}.woocommerce .widget_price_filter .ui-slider{position:relative;text-align:left;margin-left:.5em;margin-right:.5em}.woocommerce .widget_price_filter .ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1em;height:1em;background-color:#a46497;border-radius:1em;cursor:ew-resize;outline:0;top:-.3em;margin-left:-.5em}.woocommerce .widget_price_filter .ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;border-radius:1em;background-color:#a46497}.woocommerce .widget_price_filter .price_slider_wrapper .ui-widget-content{border-radius:1em;background-color:#602053;border:0}.woocommerce .widget_price_filter .ui-slider-horizontal{height:.5em}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range{top:0;height:100%}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-min{left:-1px}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-max{right:-1px}.woocommerce .widget_rating_filter ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_rating_filter ul li{padding:0 0 1px;list-style:none}.woocommerce .widget_rating_filter ul li::after,.woocommerce .widget_rating_filter ul li::before{content:' ';display:table}.woocommerce .widget_rating_filter ul li a{padding:1px 0;text-decoration:none}.woocommerce .widget_rating_filter ul li .star-rating{float:none;display:inline-block}.rtl.woocommerce div.product div.images .flex-control-thumbs li,.woocommerce-error .button,.woocommerce-info .button,.woocommerce-message .button{float:right}.woocommerce .widget_rating_filter ul li.chosen a::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none;color:#a00}.pswp{z-index:999999}.woocommerce img.pswp__img,.woocommerce-page img.pswp__img{max-width:none}button.pswp__button{box-shadow:none!important;background-image:url(photoswipe/default-skin/default-skin.png)!important}button.pswp__button,button.pswp__button--arrow--left::before,button.pswp__button--arrow--right::before,button.pswp__button:hover{background-color:transparent!important}button.pswp__button--arrow--left,button.pswp__button--arrow--left:hover,button.pswp__button--arrow--right,button.pswp__button--arrow--right:hover{background-image:none!important}button.pswp__button--close:hover{background-position:0 -44px}button.pswp__button--zoom:hover{background-position:-88px 0}.woocommerce-error,.woocommerce-info,.woocommerce-message{padding:1em 2em 1em 3.5em;margin:0 0 2em;position:relative;background-color:#f7f6f7;color:#515151;border-top:3px solid #a46497;list-style:none;width:auto;word-wrap:break-word}.woocommerce-error::after,.woocommerce-error::before,.woocommerce-info::after,.woocommerce-info::before,.woocommerce-message::after,.woocommerce-message::before{content:' ';display:table}.woocommerce-error::before,.woocommerce-info::before,.woocommerce-message::before{font-family:WooCommerce;content:'\e028';display:inline-block;position:absolute;top:1em;left:1.5em}.woocommerce-error li,.woocommerce-info li,.woocommerce-message li{list-style:none!important;padding-left:0!important;margin-left:0!important}.woocommerce-message{border-top-color:#8fae1b}.woocommerce-message::before{content:'\e015';color:#8fae1b}.woocommerce-info{border-top-color:#1e85be}.woocommerce-info::before{color:#1e85be}.woocommerce-error{border-top-color:#b81c23}.woocommerce-error::before{content:'\e016';color:#b81c23}.woocommerce-account .addresses .title::after,.woocommerce-account .addresses .title::before,.woocommerce-account .woocommerce::after,.woocommerce-account .woocommerce::before{content:' ';display:table}.woocommerce-account .addresses .title h3{float:left}.woocommerce-account .addresses .title .edit,.woocommerce-account ul.digital-downloads li .count{float:right}.woocommerce-account ol.commentlist.notes li.note p.meta{font-weight:700;margin-bottom:0}.woocommerce-account ol.commentlist.notes li.note .description p:last-child{margin-bottom:0}.woocommerce-account ul.digital-downloads{margin-left:0;padding-left:0}.woocommerce-account ul.digital-downloads li{list-style:none;margin-left:0;padding-left:0}.woocommerce-account ul.digital-downloads li::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none}#add_payment_method table.cart .product-thumbnail,.woocommerce-cart table.cart .product-thumbnail,.woocommerce-checkout table.cart .product-thumbnail{min-width:32px}#add_payment_method table.cart img,.woocommerce-cart table.cart img,.woocommerce-checkout table.cart img{width:32px;box-shadow:none}#add_payment_method table.cart td,#add_payment_method table.cart th,.woocommerce-cart table.cart td,.woocommerce-cart table.cart th,.woocommerce-checkout table.cart td,.woocommerce-checkout table.cart th{vertical-align:middle}#add_payment_method table.cart td.actions .coupon .input-text,.woocommerce-cart table.cart td.actions .coupon .input-text,.woocommerce-checkout table.cart td.actions .coupon .input-text{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #d3ced2;padding:6px 6px 5px;margin:0 4px 0 0;outline:0;line-height:1}#add_payment_method table.cart input,.woocommerce-cart table.cart input,.woocommerce-checkout table.cart input{margin:0;vertical-align:middle;line-height:1}#add_payment_method .wc-proceed-to-checkout,.woocommerce-cart .wc-proceed-to-checkout,.woocommerce-checkout .wc-proceed-to-checkout{padding:1em 0}#add_payment_method .wc-proceed-to-checkout::after,#add_payment_method .wc-proceed-to-checkout::before,.woocommerce-cart .wc-proceed-to-checkout::after,.woocommerce-cart .wc-proceed-to-checkout::before,.woocommerce-checkout .wc-proceed-to-checkout::after,.woocommerce-checkout .wc-proceed-to-checkout::before{content:' ';display:table}#add_payment_method .wc-proceed-to-checkout a.checkout-button,.woocommerce-cart .wc-proceed-to-checkout a.checkout-button,.woocommerce-checkout .wc-proceed-to-checkout a.checkout-button{display:block;text-align:center;margin-bottom:1em;font-size:1.25em;padding:1em}#add_payment_method .cart-collaterals .shipping_calculator .button,.woocommerce-cart .cart-collaterals .shipping_calculator .button,.woocommerce-checkout .cart-collaterals .shipping_calculator .button{width:100%;float:none;display:block}#add_payment_method .cart-collaterals .shipping_calculator .shipping-calculator-button::after,.woocommerce-cart .cart-collaterals .shipping_calculator .shipping-calculator-button::after,.woocommerce-checkout .cart-collaterals .shipping_calculator .shipping-calculator-button::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-left:.618em;content:"";text-decoration:none}#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::after,#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::before,#add_payment_method #payment ul.payment_methods::after,#add_payment_method #payment ul.payment_methods::before,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::before,.woocommerce-cart #payment ul.payment_methods::after,.woocommerce-cart #payment ul.payment_methods::before,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::before,.woocommerce-checkout #payment ul.payment_methods::after,.woocommerce-checkout #payment ul.payment_methods::before{content:' ';display:table}#add_payment_method .cart-collaterals .cart_totals p small,.woocommerce-cart .cart-collaterals .cart_totals p small,.woocommerce-checkout .cart-collaterals .cart_totals p small{color:#777;font-size:.83em}#add_payment_method .cart-collaterals .cart_totals table,.woocommerce-cart .cart-collaterals .cart_totals table,.woocommerce-checkout .cart-collaterals .cart_totals table{border-collapse:separate;margin:0 0 6px;padding:0}#add_payment_method .cart-collaterals .cart_totals table tr:first-child td,#add_payment_method .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-cart .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-cart .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-checkout .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-checkout .cart-collaterals .cart_totals table tr:first-child th{border-top:0}#add_payment_method .cart-collaterals .cart_totals table th,.woocommerce-cart .cart-collaterals .cart_totals table th,.woocommerce-checkout .cart-collaterals .cart_totals table th{width:40%}#add_payment_method .cart-collaterals .cart_totals table td,#add_payment_method .cart-collaterals .cart_totals table th,.woocommerce-cart .cart-collaterals .cart_totals table td,.woocommerce-cart .cart-collaterals .cart_totals table th,.woocommerce-checkout .cart-collaterals .cart_totals table td,.woocommerce-checkout .cart-collaterals .cart_totals table th{vertical-align:top;border-left:0;border-right:0;line-height:1.5em}#add_payment_method .cart-collaterals .cart_totals table small,.woocommerce-cart .cart-collaterals .cart_totals table small,.woocommerce-checkout .cart-collaterals .cart_totals table small{color:#777}#add_payment_method .cart-collaterals .cart_totals table select,.woocommerce-cart .cart-collaterals .cart_totals table select,.woocommerce-checkout .cart-collaterals .cart_totals table select{width:100%}#add_payment_method .cart-collaterals .cart_totals .discount td,.woocommerce-cart .cart-collaterals .cart_totals .discount td,.woocommerce-checkout .cart-collaterals .cart_totals .discount td{color:#77a464}#add_payment_method .cart-collaterals .cart_totals tr td,#add_payment_method .cart-collaterals .cart_totals tr th,.woocommerce-cart .cart-collaterals .cart_totals tr td,.woocommerce-cart .cart-collaterals .cart_totals tr th,.woocommerce-checkout .cart-collaterals .cart_totals tr td,.woocommerce-checkout .cart-collaterals .cart_totals tr th{border-top:1px solid #ebe9eb}#add_payment_method .cart-collaterals .cross-sells ul.products li.product,.woocommerce-cart .cart-collaterals .cross-sells ul.products li.product,.woocommerce-checkout .cart-collaterals .cross-sells ul.products li.product{margin-top:0}#add_payment_method .checkout .col-2 h3#ship-to-different-address,.woocommerce-cart .checkout .col-2 h3#ship-to-different-address,.woocommerce-checkout .checkout .col-2 h3#ship-to-different-address{float:left;clear:none}#add_payment_method .checkout .col-2 .form-row-first,#add_payment_method .checkout .col-2 .notes,.woocommerce-cart .checkout .col-2 .form-row-first,.woocommerce-cart .checkout .col-2 .notes,.woocommerce-checkout .checkout .col-2 .form-row-first,.woocommerce-checkout .checkout .col-2 .notes{clear:left}#add_payment_method .checkout .create-account small,.woocommerce-cart .checkout .create-account small,.woocommerce-checkout .checkout .create-account small{font-size:11px;color:#777;font-weight:400}#add_payment_method .checkout div.shipping-address,.woocommerce-cart .checkout div.shipping-address,.woocommerce-checkout .checkout div.shipping-address{padding:0;clear:left;width:100%}#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::after,#add_payment_method #payment ul.payment_methods::after,#add_payment_method .checkout .shipping_address,.single-product .twentythirteen p.stars,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-cart #payment ul.payment_methods::after,.woocommerce-cart .checkout .shipping_address,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-checkout #payment ul.payment_methods::after,.woocommerce-checkout .checkout .shipping_address{clear:both}#add_payment_method #payment,.woocommerce-cart #payment,.woocommerce-checkout #payment{background:#ebe9eb;border-radius:5px}#add_payment_method #payment ul.payment_methods,.woocommerce-cart #payment ul.payment_methods,.woocommerce-checkout #payment ul.payment_methods{text-align:left;padding:1em;border-bottom:1px solid #d3ced2;margin:0;list-style:none}#add_payment_method #payment ul.payment_methods li,.woocommerce-cart #payment ul.payment_methods li,.woocommerce-checkout #payment ul.payment_methods li{line-height:2;text-align:left;margin:0;font-weight:400}#add_payment_method #payment ul.payment_methods li input,.woocommerce-cart #payment ul.payment_methods li input,.woocommerce-checkout #payment ul.payment_methods li input{margin:0 1em 0 0}#add_payment_method #payment ul.payment_methods li img,.woocommerce-cart #payment ul.payment_methods li img,.woocommerce-checkout #payment ul.payment_methods li img{vertical-align:middle;margin:-2px 0 0 .5em;padding:0;position:relative;box-shadow:none}#add_payment_method #payment ul.payment_methods li img+img,.woocommerce-cart #payment ul.payment_methods li img+img,.woocommerce-checkout #payment ul.payment_methods li img+img{margin-left:2px}#add_payment_method #payment div.form-row,.woocommerce-cart #payment div.form-row,.woocommerce-checkout #payment div.form-row{padding:1em}#add_payment_method #payment div.payment_box,.woocommerce-cart #payment div.payment_box,.woocommerce-checkout #payment div.payment_box{position:relative;box-sizing:border-box;width:100%;padding:1em;margin:1em 0;font-size:.92em;border-radius:2px;line-height:1.5;background-color:#dfdcde;color:#515151}#add_payment_method #payment div.payment_box input.input-text,#add_payment_method #payment div.payment_box textarea,.woocommerce-cart #payment div.payment_box input.input-text,.woocommerce-cart #payment div.payment_box textarea,.woocommerce-checkout #payment div.payment_box input.input-text,.woocommerce-checkout #payment div.payment_box textarea{border-color:#bbb3b9 #c7c1c6 #c7c1c6}#add_payment_method #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-cart #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-checkout #payment div.payment_box ::-webkit-input-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box :-moz-placeholder,.woocommerce-cart #payment div.payment_box :-moz-placeholder,.woocommerce-checkout #payment div.payment_box :-moz-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box :-ms-input-placeholder,.woocommerce-cart #payment div.payment_box :-ms-input-placeholder,.woocommerce-checkout #payment div.payment_box :-ms-input-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods{list-style:none;margin:0}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token{margin:0 0 .5em}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label{cursor:pointer}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput{vertical-align:middle;margin:-3px 1em 0 0;position:relative}#add_payment_method #payment div.payment_box .wc-credit-card-form,.woocommerce-cart #payment div.payment_box .wc-credit-card-form,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form{border:0;padding:0;margin:1em 0 0}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number{font-size:1.5em;padding:8px;background-repeat:no-repeat;background-position:right .618em center;background-size:32px 20px}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.visa,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.visa,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.visa{background-image:url(../images/icons/credit-cards/visa.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.mastercard{background-image:url(../images/icons/credit-cards/mastercard.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.laser,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.laser,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.laser{background-image:url(../images/icons/credit-cards/laser.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.dinersclub{background-image:url(../images/icons/credit-cards/diners.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.maestro{background-image:url(../images/icons/credit-cards/maestro.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.jcb{background-image:url(../images/icons/credit-cards/jcb.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.amex,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.amex,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.amex{background-image:url(../images/icons/credit-cards/amex.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.discover,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.discover,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.discover{background-image:url(../images/icons/credit-cards/discover.svg)}#add_payment_method #payment div.payment_box span.help,.woocommerce-cart #payment div.payment_box span.help,.woocommerce-checkout #payment div.payment_box span.help{font-size:.857em;color:#777;font-weight:400}#add_payment_method #payment div.payment_box .form-row,.woocommerce-cart #payment div.payment_box .form-row,.woocommerce-checkout #payment div.payment_box .form-row{margin:0 0 1em}#add_payment_method #payment div.payment_box p:last-child,.woocommerce-cart #payment div.payment_box p:last-child,.woocommerce-checkout #payment div.payment_box p:last-child{margin-bottom:0}#add_payment_method #payment div.payment_box::before,.woocommerce-cart #payment div.payment_box::before,.woocommerce-checkout #payment div.payment_box::before{content:'';display:block;border:1em solid #dfdcde;border-right-color:transparent;border-left-color:transparent;border-top-color:transparent;position:absolute;top:-.75em;left:0;margin:-1em 0 0 2em}#add_payment_method #payment .payment_method_paypal .about_paypal,.woocommerce-cart #payment .payment_method_paypal .about_paypal,.woocommerce-checkout #payment .payment_method_paypal .about_paypal{float:right;line-height:52px;font-size:.83em}#add_payment_method #payment .payment_method_paypal img,.woocommerce-cart #payment .payment_method_paypal img,.woocommerce-checkout #payment .payment_method_paypal img{max-height:52px;vertical-align:middle}.woocommerce-password-strength{text-align:center;font-weight:600;padding:3px .5em;font-size:1em}.woocommerce-password-strength.strong{background-color:#c1e1b9;border-color:#83c373}.woocommerce-password-strength.short{background-color:#f1adad;border-color:#e35b5b}.woocommerce-password-strength.bad{background-color:#fbc5a9;border-color:#f78b53}.woocommerce-password-strength.good{background-color:#ffe399;border-color:#ffc733}.woocommerce-password-hint{margin:.5em 0 0;display:block}.js .woocommerce-product-gallery--with-images{opacity:0}#content.twentyeleven .woocommerce-pagination a{font-size:1em;line-height:1}.single-product .twentythirteen #reply-title,.single-product .twentythirteen #respond #commentform,.single-product .twentythirteen .entry-summary{padding:0}.twentythirteen .woocommerce-breadcrumb{padding-top:40px}.twentyfourteen ul.products li.product{margin-top:0!important}body:not(.search-results) .twentysixteen .entry-summary{color:inherit;font-size:inherit;line-height:inherit}.twentysixteen .price ins{background:inherit;color:inherit} \ No newline at end of file diff --git a/assets/css/woocommerce.scss b/assets/css/woocommerce.scss index d684377e288..f46cf566731 100644 --- a/assets/css/woocommerce.scss +++ b/assets/css/woocommerce.scss @@ -2163,11 +2163,9 @@ button.pswp__button--zoom:hover { display: block; } -/* added to get around variation image flicker issue */ -.product.has-default-attributes.has-children { - > .images { - opacity: 0; - } +// Gallery fades in +.js .woocommerce-product-gallery--with-images { + opacity: 0; } /** diff --git a/assets/js/frontend/add-to-cart-variation.js b/assets/js/frontend/add-to-cart-variation.js index d05da226550..dd3ac8d19e9 100644 --- a/assets/js/frontend/add-to-cart-variation.js +++ b/assets/js/frontend/add-to-cart-variation.js @@ -174,9 +174,6 @@ // Show reset link. form.toggleResetLink( attributes.chosenCount > 0 ); - - // added to get around variation image flicker issue - $( '.product.has-default-attributes > .images' ).fadeTo( 200, 1 ); }; /** diff --git a/assets/js/frontend/add-to-cart-variation.min.js b/assets/js/frontend/add-to-cart-variation.min.js index 6fb05b41004..6ce5cf7a087 100644 --- a/assets/js/frontend/add-to-cart-variation.min.js +++ b/assets/js/frontend/add-to-cart-variation.min.js @@ -1 +1 @@ -!function(a,b,c,d){var e=function(a){this.$form=a,this.$attributeFields=a.find(".variations select"),this.$singleVariation=a.find(".single_variation"),this.$singleVariationWrap=a.find(".single_variation_wrap"),this.$resetVariations=a.find(".reset_variations"),this.$product=a.closest(".product"),this.variationData=a.data("product_variations"),this.useAjax=!1===this.variationData,this.xhr=!1,this.$singleVariationWrap.show(),this.$form.unbind("check_variations update_variation_values found_variation"),this.$resetVariations.unbind("click"),this.$attributeFields.unbind("change "),this.getChosenAttributes=this.getChosenAttributes.bind(this),this.findMatchingVariations=this.findMatchingVariations.bind(this),this.isMatch=this.isMatch.bind(this),this.toggleResetLink=this.toggleResetLink.bind(this),a.on("click",".reset_variations",{variationForm:this},this.onReset),a.on("reload_product_variations",{variationForm:this},this.onReload),a.on("hide_variation",{variationForm:this},this.onHide),a.on("show_variation",{variationForm:this},this.onShow),a.on("click",".single_add_to_cart_button",{variationForm:this},this.onAddToCart),a.on("reset_data",{variationForm:this},this.onResetDisplayedVariation),a.on("reset_image",{variationForm:this},this.onResetImage),a.on("change",".variations select",{variationForm:this},this.onChange),a.on("found_variation",{variationForm:this},this.onFoundVariation),a.on("check_variations",{variationForm:this},this.onFindVariation),a.on("update_variation_values",{variationForm:this},this.onUpdateAttributes),a.trigger("check_variations"),a.trigger("wc_variation_form")};e.prototype.onReset=function(a){a.preventDefault(),a.data.variationForm.$attributeFields.val("").change(),a.data.variationForm.$form.trigger("reset_data")},e.prototype.onReload=function(a){var b=a.data.variationForm;b.variationData=b.$form.data("product_variations"),b.useAjax=!1===b.variationData,b.$form.trigger("check_variations")},e.prototype.onHide=function(a){a.preventDefault(),a.data.variationForm.$form.find(".single_add_to_cart_button").removeClass("wc-variation-is-unavailable").addClass("disabled wc-variation-selection-needed"),a.data.variationForm.$form.find(".woocommerce-variation-add-to-cart").removeClass("woocommerce-variation-add-to-cart-enabled").addClass("woocommerce-variation-add-to-cart-disabled")},e.prototype.onShow=function(a,b,c){a.preventDefault(),c?(a.data.variationForm.$form.find(".single_add_to_cart_button").removeClass("disabled wc-variation-selection-needed wc-variation-is-unavailable"),a.data.variationForm.$form.find(".woocommerce-variation-add-to-cart").removeClass("woocommerce-variation-add-to-cart-disabled").addClass("woocommerce-variation-add-to-cart-enabled")):(a.data.variationForm.$form.find(".single_add_to_cart_button").removeClass("wc-variation-selection-needed").addClass("disabled wc-variation-is-unavailable"),a.data.variationForm.$form.find(".woocommerce-variation-add-to-cart").removeClass("woocommerce-variation-add-to-cart-enabled").addClass("woocommerce-variation-add-to-cart-disabled"))},e.prototype.onAddToCart=function(c){a(this).is(".disabled")&&(c.preventDefault(),a(this).is(".wc-variation-is-unavailable")?b.alert(wc_add_to_cart_variation_params.i18n_unavailable_text):a(this).is(".wc-variation-selection-needed")&&b.alert(wc_add_to_cart_variation_params.i18n_make_a_selection_text))},e.prototype.onResetDisplayedVariation=function(a){var b=a.data.variationForm;b.$product.find(".product_meta").find(".sku").wc_reset_content(),b.$product.find(".product_weight").wc_reset_content(),b.$product.find(".product_dimensions").wc_reset_content(),b.$form.trigger("reset_image"),b.$singleVariation.slideUp(200).trigger("hide_variation")},e.prototype.onResetImage=function(a){a.data.variationForm.$form.wc_variations_image_update(!1)},e.prototype.onFindVariation=function(b){var c=b.data.variationForm,d=c.getChosenAttributes(),e=d.data;if(d.count===d.chosenCount)if(c.useAjax)c.xhr&&c.xhr.abort(),c.$form.block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),e.product_id=parseInt(c.$form.data("product_id"),10),e.custom_data=c.$form.data("custom_data"),c.xhr=a.ajax({url:wc_cart_fragments_params.wc_ajax_url.toString().replace("%%endpoint%%","get_variation"),type:"POST",data:e,success:function(a){a?c.$form.trigger("found_variation",[a]):(c.$form.trigger("reset_data"),c.$form.find(".single_variation").after('

    '+wc_add_to_cart_variation_params.i18n_no_matching_variations_text+"

    "),c.$form.find(".wc-no-matching-variations").slideDown(200))},complete:function(){c.$form.unblock()}});else{c.$form.trigger("update_variation_values");var f=c.findMatchingVariations(c.variationData,e),g=f.shift();g?c.$form.trigger("found_variation",[g]):(c.$form.trigger("reset_data"),c.$form.find(".single_variation").after('

    '+wc_add_to_cart_variation_params.i18n_no_matching_variations_text+"

    "),c.$form.find(".wc-no-matching-variations").slideDown(200))}else c.$form.trigger("update_variation_values"),c.$form.trigger("reset_data");c.toggleResetLink(d.chosenCount>0),a(".product.has-default-attributes > .images").fadeTo(200,1)},e.prototype.onFoundVariation=function(b,c){var d=b.data.variationForm,e=d.$product.find(".product_meta").find(".sku"),f=d.$product.find(".product_weight"),g=d.$product.find(".product_dimensions"),h=d.$singleVariationWrap.find(".quantity"),i=!0,j="",k=!1,l="";c.sku?e.wc_set_content(c.sku):e.wc_reset_content(),c.weight?f.wc_set_content(c.weight):f.wc_reset_content(),c.dimensions?g.wc_set_content(c.dimensions):g.wc_reset_content(),d.$form.wc_variations_image_update(c),c.variation_is_visible?(k=wp.template("variation-template"),j=c.variation_id):k=wp.template("unavailable-variation-template"),l=k({variation:c}),l=l.replace("/**/",""),d.$singleVariation.html(l),d.$form.find('input[name="variation_id"], input.variation_id').val(c.variation_id).change(),"yes"===c.is_sold_individually?(h.find("input.qty").val("1").attr("min","1").attr("max",""),h.hide()):(h.find("input.qty").attr("min",c.min_qty).attr("max",c.max_qty),h.show()),c.is_purchasable&&c.is_in_stock&&c.variation_is_visible||(i=!1),a.trim(d.$singleVariation.text())?d.$singleVariation.slideDown(200).trigger("show_variation",[c,i]):d.$singleVariation.show().trigger("show_variation",[c,i])},e.prototype.onChange=function(b){var c=b.data.variationForm;c.$form.find('input[name="variation_id"], input.variation_id').val("").change(),c.$form.find(".wc-no-matching-variations").remove(),c.useAjax?c.$form.trigger("check_variations"):(c.$form.trigger("woocommerce_variation_select_change"),c.$form.trigger("check_variations"),a(this).blur()),c.$form.trigger("woocommerce_variation_has_changed")},e.prototype.addSlashes=function(a){return a=a.replace(/'/g,"\\'"),a=a.replace(/"/g,'\\"')},e.prototype.onUpdateAttributes=function(b){var c=b.data.variationForm,d=c.getChosenAttributes(),e=d.data;c.useAjax||(c.$attributeFields.each(function(b,d){var f=a(d),g=f.data("attribute_name")||f.attr("name"),h=a(d).data("show_option_none"),i=":gt(0)",j=0,k=a(""),l=f.val()||"",m=!0;if(!f.data("attribute_html")){var n=f.clone();n.find("option").removeAttr("disabled attached").removeAttr("selected"),f.data("attribute_options",n.find("option"+i).get()),f.data("attribute_html",n.html())}k.html(f.data("attribute_html"));var o=a.extend(!0,{},e);o[g]="";var p=c.findMatchingVariations(c.variationData,o);for(var q in p)if("undefined"!=typeof p[q]){var r=p[q].attributes;for(var s in r)if(r.hasOwnProperty(s)){var t=r[s],u="";s===g&&(p[q].variation_is_active&&(u="enabled"),t?(t=a("
    ").html(t).text(),k.find('option[value="'+c.addSlashes(t)+'"]').addClass("attached "+u)):k.find("option:gt(0)").addClass("attached "+u))}}j=k.find("option.attached").length,!l||0!==j&&0!==k.find('option.attached.enabled[value="'+c.addSlashes(l)+'"]').length||(m=!1),j>0&&l&&m&&"no"===h&&(k.find("option:first").remove(),i=""),k.find("option"+i+":not(.attached)").remove(),f.html(k.html()),f.find("option"+i+":not(.enabled)").prop("disabled",!0),l?m?f.val(l):f.val("").change():f.val("")}),c.$form.trigger("woocommerce_update_variation_values"))},e.prototype.getChosenAttributes=function(){var b={},c=0,d=0;return this.$attributeFields.each(function(){var e=a(this).data("attribute_name")||a(this).attr("name"),f=a(this).val()||"";f.length>0&&d++,c++,b[e]=f}),{count:c,chosenCount:d,data:b}},e.prototype.findMatchingVariations=function(a,b){for(var c=[],d=0;d1?(i.wc_set_variation_attr("src",c.image.src),i.wc_set_variation_attr("height",c.image.src_h),i.wc_set_variation_attr("width",c.image.src_w),i.wc_set_variation_attr("srcset",c.image.srcset),i.wc_set_variation_attr("sizes",c.image.sizes),i.wc_set_variation_attr("title",c.image.title),i.wc_set_variation_attr("alt",c.image.alt),i.wc_set_variation_attr("data-src",c.image.full_src),i.wc_set_variation_attr("data-large_image",c.image.full_src),i.wc_set_variation_attr("data-large_image_width",c.image.full_src_w),i.wc_set_variation_attr("data-large_image_height",c.image.full_src_h),h.wc_set_variation_attr("data-thumb",c.image.src),g.wc_set_variation_attr("src",c.image.src),j.wc_set_variation_attr("href",c.image.full_src)):(i.wc_reset_variation_attr("src"),i.wc_reset_variation_attr("width"),i.wc_reset_variation_attr("height"),i.wc_reset_variation_attr("srcset"),i.wc_reset_variation_attr("sizes"),i.wc_reset_variation_attr("title"),i.wc_reset_variation_attr("alt"),i.wc_reset_variation_attr("data-src"),i.wc_reset_variation_attr("data-large_image"),i.wc_reset_variation_attr("data-large_image_width"),i.wc_reset_variation_attr("data-large_image_height"),h.wc_reset_variation_attr("data-thumb"),g.wc_reset_variation_attr("src"),j.wc_reset_variation_attr("href")),b.setTimeout(function(){f.trigger("woocommerce_gallery_init_zoom"),d.wc_maybe_trigger_slide_position_reset(c),a(b).trigger("resize")},10)},a(function(){"undefined"!=typeof wc_add_to_cart_variation_params&&a(".variations_form").each(function(){a(this).wc_variation_form()})})}(jQuery,window,document); \ No newline at end of file diff --git a/assets/js/frontend/single-product.js b/assets/js/frontend/single-product.js index 8608fd0b70f..6a7d52e1983 100644 --- a/assets/js/frontend/single-product.js +++ b/assets/js/frontend/single-product.js @@ -108,6 +108,8 @@ jQuery( function( $ ) { if ( this.flexslider_enabled ) { this.initFlexslider(); $target.on( 'woocommerce_gallery_reset_slide_position', this.onResetSlidePosition ); + } else { + $( '.woocommerce-product-gallery--with-images' ).fadeTo( 250, 1 ); } if ( this.zoom_enabled ) { @@ -149,6 +151,12 @@ jQuery( function( $ ) { images.each( function() { $( this ).css( 'min-height', largest_height ); } ); + }, + init: function() { + window.setTimeout( function() { + // Fade in after init. + $( '.woocommerce-product-gallery--with-images' ).fadeTo( 250, 1 ); + }, 20 ); } } ); }; diff --git a/assets/js/frontend/single-product.min.js b/assets/js/frontend/single-product.min.js index 30f82086eda..80eb8cd4701 100644 --- a/assets/js/frontend/single-product.min.js +++ b/assets/js/frontend/single-product.min.js @@ -1 +1 @@ -jQuery(function(a){if("undefined"==typeof wc_single_product_params)return!1;a("body").on("init",".wc-tabs-wrapper, .woocommerce-tabs",function(){a(".wc-tab, .woocommerce-tabs .panel:not(.panel .panel)").hide();var b=window.location.hash,c=window.location.href,d=a(this).find(".wc-tabs, ul.tabs").first();b.toLowerCase().indexOf("comment-")>=0||"#reviews"===b||"#tab-reviews"===b?d.find("li.reviews_tab a").click():c.indexOf("comment-page-")>0||c.indexOf("cpage=")>0?d.find("li.reviews_tab a").click():d.find("li:first a").click()}).on("click",".wc-tabs li a, ul.tabs li a",function(b){b.preventDefault();var c=a(this),d=c.closest(".wc-tabs-wrapper, .woocommerce-tabs"),e=d.find(".wc-tabs, ul.tabs");e.find("li").removeClass("active"),d.find(".wc-tab, .panel:not(.panel .panel)").hide(),c.closest("li").addClass("active"),d.find(c.attr("href")).show()}).on("click","a.woocommerce-review-link",function(){return a(".reviews_tab a").click(),!0}).on("init","#rating",function(){a("#rating").hide().before('

    12345

    ')}).on("click","#respond p.stars a",function(){var b=a(this),c=a(this).closest("#respond").find("#rating"),d=a(this).closest(".stars");return c.val(b.text()),b.siblings("a").removeClass("active"),b.addClass("active"),d.addClass("selected"),!1}).on("click","#respond #submit",function(){var b=a(this).closest("#respond").find("#rating"),c=b.val();if(b.length>0&&!c&&"yes"===wc_single_product_params.review_rating_required)return window.alert(wc_single_product_params.i18n_required_rating_text),!1}),a(".wc-tabs-wrapper, .woocommerce-tabs, #rating").trigger("init");var b=function(b,c){this.$target=b,this.$images=a(".woocommerce-product-gallery__image",b),0!==this.$images.length&&(b.data("product_gallery",this),this.flexslider_enabled=a.isFunction(a.fn.flexslider)&&wc_single_product_params.flexslider_enabled,this.zoom_enabled=a.isFunction(a.fn.zoom)&&wc_single_product_params.zoom_enabled,this.photoswipe_enabled="undefined"!=typeof PhotoSwipe&&wc_single_product_params.photoswipe_enabled,c&&(this.flexslider_enabled=!1!==c.photoswipe_enabled&&this.flexslider_enabled,this.zoom_enabled=!1!==c.zoom_enabled&&this.zoom_enabled,this.photoswipe_enabled=!1!==c.photoswipe_enabled&&this.photoswipe_enabled),this.initFlexslider=this.initFlexslider.bind(this),this.initZoom=this.initZoom.bind(this),this.initPhotoswipe=this.initPhotoswipe.bind(this),this.onResetSlidePosition=this.onResetSlidePosition.bind(this),this.getGalleryItems=this.getGalleryItems.bind(this),this.openPhotoswipe=this.openPhotoswipe.bind(this),this.flexslider_enabled&&(this.initFlexslider(),b.on("woocommerce_gallery_reset_slide_position",this.onResetSlidePosition)),this.zoom_enabled&&(this.initZoom(),b.on("woocommerce_gallery_init_zoom",this.initZoom)),this.photoswipe_enabled&&this.initPhotoswipe())};b.prototype.initFlexslider=function(){var b=this.$images;this.$target.flexslider({selector:".woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image",animation:wc_single_product_params.flexslider.animation,smoothHeight:wc_single_product_params.flexslider.smoothHeight,directionNav:wc_single_product_params.flexslider.directionNav,controlNav:wc_single_product_params.flexslider.controlNav,slideshow:wc_single_product_params.flexslider.slideshow,animationSpeed:wc_single_product_params.flexslider.animationSpeed,animationLoop:wc_single_product_params.flexslider.animationLoop,start:function(){var c=0;b.each(function(){var b=a(this).height();b>c&&(c=b)}),b.each(function(){a(this).css("min-height",c)})}})},b.prototype.initZoom=function(){var b=this.$images,c=this.$target.width(),d=!1;if(this.flexslider_enabled||(b=b.first()),a(b).each(function(b,e){var f=a(e).find("img");if(f.data("large_image_width")>c)return d=!0,!1}),d){var e={touch:!1};"ontouchstart"in window&&(e.on="click"),b.trigger("zoom.destroy"),b.zoom(e)}},b.prototype.initPhotoswipe=function(){this.zoom_enabled&&this.$images.length>0&&(this.$target.prepend('🔍'),this.$target.on("click",".woocommerce-product-gallery__trigger",this.openPhotoswipe)),this.$target.on("click",".woocommerce-product-gallery__image a",this.openPhotoswipe)},b.prototype.onResetSlidePosition=function(){this.$target.flexslider(0)},b.prototype.getGalleryItems=function(){var b=this.$images,c=[];return b.length>0&&b.each(function(b,d){var e=a(d).find("img"),f=e.attr("data-large_image"),g=e.attr("data-large_image_width"),h=e.attr("data-large_image_height"),i={src:f,w:g,h:h,title:e.attr("title")};c.push(i)}),c},b.prototype.openPhotoswipe=function(b){b.preventDefault();var c,d=a(".pswp")[0],e=this.getGalleryItems(),f=a(b.target);c=f.is(".woocommerce-product-gallery__trigger")?this.$target.find(".flex-active-slide"):f.closest(".woocommerce-product-gallery__image");var g={index:a(c).index(),shareEl:!1,closeOnScroll:!1,history:!1,hideAnimationDuration:0,showAnimationDuration:0},h=new PhotoSwipe(d,PhotoSwipeUI_Default,e,g);h.init()},a.fn.wc_product_gallery=function(a){return new b(this,a),this},a(".woocommerce-product-gallery").each(function(){a(this).wc_product_gallery()})}); \ No newline at end of file +jQuery(function(a){if("undefined"==typeof wc_single_product_params)return!1;a("body").on("init",".wc-tabs-wrapper, .woocommerce-tabs",function(){a(".wc-tab, .woocommerce-tabs .panel:not(.panel .panel)").hide();var b=window.location.hash,c=window.location.href,d=a(this).find(".wc-tabs, ul.tabs").first();b.toLowerCase().indexOf("comment-")>=0||"#reviews"===b||"#tab-reviews"===b?d.find("li.reviews_tab a").click():c.indexOf("comment-page-")>0||c.indexOf("cpage=")>0?d.find("li.reviews_tab a").click():d.find("li:first a").click()}).on("click",".wc-tabs li a, ul.tabs li a",function(b){b.preventDefault();var c=a(this),d=c.closest(".wc-tabs-wrapper, .woocommerce-tabs"),e=d.find(".wc-tabs, ul.tabs");e.find("li").removeClass("active"),d.find(".wc-tab, .panel:not(.panel .panel)").hide(),c.closest("li").addClass("active"),d.find(c.attr("href")).show()}).on("click","a.woocommerce-review-link",function(){return a(".reviews_tab a").click(),!0}).on("init","#rating",function(){a("#rating").hide().before('

    12345

    ')}).on("click","#respond p.stars a",function(){var b=a(this),c=a(this).closest("#respond").find("#rating"),d=a(this).closest(".stars");return c.val(b.text()),b.siblings("a").removeClass("active"),b.addClass("active"),d.addClass("selected"),!1}).on("click","#respond #submit",function(){var b=a(this).closest("#respond").find("#rating"),c=b.val();if(b.length>0&&!c&&"yes"===wc_single_product_params.review_rating_required)return window.alert(wc_single_product_params.i18n_required_rating_text),!1}),a(".wc-tabs-wrapper, .woocommerce-tabs, #rating").trigger("init");var b=function(b,c){this.$target=b,this.$images=a(".woocommerce-product-gallery__image",b),0!==this.$images.length&&(b.data("product_gallery",this),this.flexslider_enabled=a.isFunction(a.fn.flexslider)&&wc_single_product_params.flexslider_enabled,this.zoom_enabled=a.isFunction(a.fn.zoom)&&wc_single_product_params.zoom_enabled,this.photoswipe_enabled="undefined"!=typeof PhotoSwipe&&wc_single_product_params.photoswipe_enabled,c&&(this.flexslider_enabled=!1!==c.photoswipe_enabled&&this.flexslider_enabled,this.zoom_enabled=!1!==c.zoom_enabled&&this.zoom_enabled,this.photoswipe_enabled=!1!==c.photoswipe_enabled&&this.photoswipe_enabled),this.initFlexslider=this.initFlexslider.bind(this),this.initZoom=this.initZoom.bind(this),this.initPhotoswipe=this.initPhotoswipe.bind(this),this.onResetSlidePosition=this.onResetSlidePosition.bind(this),this.getGalleryItems=this.getGalleryItems.bind(this),this.openPhotoswipe=this.openPhotoswipe.bind(this),this.flexslider_enabled?(this.initFlexslider(),b.on("woocommerce_gallery_reset_slide_position",this.onResetSlidePosition)):a(".woocommerce-product-gallery--with-images").fadeTo(250,1),this.zoom_enabled&&(this.initZoom(),b.on("woocommerce_gallery_init_zoom",this.initZoom)),this.photoswipe_enabled&&this.initPhotoswipe())};b.prototype.initFlexslider=function(){var b=this.$images;this.$target.flexslider({selector:".woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image",animation:wc_single_product_params.flexslider.animation,smoothHeight:wc_single_product_params.flexslider.smoothHeight,directionNav:wc_single_product_params.flexslider.directionNav,controlNav:wc_single_product_params.flexslider.controlNav,slideshow:wc_single_product_params.flexslider.slideshow,animationSpeed:wc_single_product_params.flexslider.animationSpeed,animationLoop:wc_single_product_params.flexslider.animationLoop,start:function(){var c=0;b.each(function(){var b=a(this).height();b>c&&(c=b)}),b.each(function(){a(this).css("min-height",c)})},init:function(){window.setTimeout(function(){a(".woocommerce-product-gallery--with-images").fadeTo(250,1)},20)}})},b.prototype.initZoom=function(){var b=this.$images,c=this.$target.width(),d=!1;if(this.flexslider_enabled||(b=b.first()),a(b).each(function(b,e){var f=a(e).find("img");if(f.data("large_image_width")>c)return d=!0,!1}),d){var e={touch:!1};"ontouchstart"in window&&(e.on="click"),b.trigger("zoom.destroy"),b.zoom(e)}},b.prototype.initPhotoswipe=function(){this.zoom_enabled&&this.$images.length>0&&(this.$target.prepend('🔍'),this.$target.on("click",".woocommerce-product-gallery__trigger",this.openPhotoswipe)),this.$target.on("click",".woocommerce-product-gallery__image a",this.openPhotoswipe)},b.prototype.onResetSlidePosition=function(){this.$target.flexslider(0)},b.prototype.getGalleryItems=function(){var b=this.$images,c=[];return b.length>0&&b.each(function(b,d){var e=a(d).find("img"),f=e.attr("data-large_image"),g=e.attr("data-large_image_width"),h=e.attr("data-large_image_height"),i={src:f,w:g,h:h,title:e.attr("title")};c.push(i)}),c},b.prototype.openPhotoswipe=function(b){b.preventDefault();var c,d=a(".pswp")[0],e=this.getGalleryItems(),f=a(b.target);c=f.is(".woocommerce-product-gallery__trigger")?this.$target.find(".flex-active-slide"):f.closest(".woocommerce-product-gallery__image");var g={index:a(c).index(),shareEl:!1,closeOnScroll:!1,history:!1,hideAnimationDuration:0,showAnimationDuration:0},h=new PhotoSwipe(d,PhotoSwipeUI_Default,e,g);h.init()},a.fn.wc_product_gallery=function(a){return new b(this,a),this},a(".woocommerce-product-gallery").each(function(){a(this).wc_product_gallery()})}); \ No newline at end of file From 62bd505bdae4c0fe704125fe3558dfab263a60a6 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 31 Mar 2017 15:16:10 +0100 Subject: [PATCH 194/525] CSS transition --- assets/css/woocommerce.scss | 5 ----- assets/js/frontend/single-product.js | 4 ++-- assets/js/frontend/single-product.min.js | 2 +- templates/single-product/product-image.php | 2 +- 4 files changed, 4 insertions(+), 9 deletions(-) diff --git a/assets/css/woocommerce.scss b/assets/css/woocommerce.scss index f46cf566731..652c511a639 100644 --- a/assets/css/woocommerce.scss +++ b/assets/css/woocommerce.scss @@ -2163,11 +2163,6 @@ button.pswp__button--zoom:hover { display: block; } -// Gallery fades in -.js .woocommerce-product-gallery--with-images { - opacity: 0; -} - /** * Twenty Eleven specific styles */ diff --git a/assets/js/frontend/single-product.js b/assets/js/frontend/single-product.js index 6a7d52e1983..d7c51371a55 100644 --- a/assets/js/frontend/single-product.js +++ b/assets/js/frontend/single-product.js @@ -109,7 +109,7 @@ jQuery( function( $ ) { this.initFlexslider(); $target.on( 'woocommerce_gallery_reset_slide_position', this.onResetSlidePosition ); } else { - $( '.woocommerce-product-gallery--with-images' ).fadeTo( 250, 1 ); + $( '.woocommerce-product-gallery' ).css( 'opacity', 1 ); } if ( this.zoom_enabled ) { @@ -155,7 +155,7 @@ jQuery( function( $ ) { init: function() { window.setTimeout( function() { // Fade in after init. - $( '.woocommerce-product-gallery--with-images' ).fadeTo( 250, 1 ); + $( '.woocommerce-product-gallery' ).css( 'opacity', 1 ); }, 20 ); } } ); diff --git a/assets/js/frontend/single-product.min.js b/assets/js/frontend/single-product.min.js index 80eb8cd4701..416bd853f1f 100644 --- a/assets/js/frontend/single-product.min.js +++ b/assets/js/frontend/single-product.min.js @@ -1 +1 @@ -jQuery(function(a){if("undefined"==typeof wc_single_product_params)return!1;a("body").on("init",".wc-tabs-wrapper, .woocommerce-tabs",function(){a(".wc-tab, .woocommerce-tabs .panel:not(.panel .panel)").hide();var b=window.location.hash,c=window.location.href,d=a(this).find(".wc-tabs, ul.tabs").first();b.toLowerCase().indexOf("comment-")>=0||"#reviews"===b||"#tab-reviews"===b?d.find("li.reviews_tab a").click():c.indexOf("comment-page-")>0||c.indexOf("cpage=")>0?d.find("li.reviews_tab a").click():d.find("li:first a").click()}).on("click",".wc-tabs li a, ul.tabs li a",function(b){b.preventDefault();var c=a(this),d=c.closest(".wc-tabs-wrapper, .woocommerce-tabs"),e=d.find(".wc-tabs, ul.tabs");e.find("li").removeClass("active"),d.find(".wc-tab, .panel:not(.panel .panel)").hide(),c.closest("li").addClass("active"),d.find(c.attr("href")).show()}).on("click","a.woocommerce-review-link",function(){return a(".reviews_tab a").click(),!0}).on("init","#rating",function(){a("#rating").hide().before('

    12345

    ')}).on("click","#respond p.stars a",function(){var b=a(this),c=a(this).closest("#respond").find("#rating"),d=a(this).closest(".stars");return c.val(b.text()),b.siblings("a").removeClass("active"),b.addClass("active"),d.addClass("selected"),!1}).on("click","#respond #submit",function(){var b=a(this).closest("#respond").find("#rating"),c=b.val();if(b.length>0&&!c&&"yes"===wc_single_product_params.review_rating_required)return window.alert(wc_single_product_params.i18n_required_rating_text),!1}),a(".wc-tabs-wrapper, .woocommerce-tabs, #rating").trigger("init");var b=function(b,c){this.$target=b,this.$images=a(".woocommerce-product-gallery__image",b),0!==this.$images.length&&(b.data("product_gallery",this),this.flexslider_enabled=a.isFunction(a.fn.flexslider)&&wc_single_product_params.flexslider_enabled,this.zoom_enabled=a.isFunction(a.fn.zoom)&&wc_single_product_params.zoom_enabled,this.photoswipe_enabled="undefined"!=typeof PhotoSwipe&&wc_single_product_params.photoswipe_enabled,c&&(this.flexslider_enabled=!1!==c.photoswipe_enabled&&this.flexslider_enabled,this.zoom_enabled=!1!==c.zoom_enabled&&this.zoom_enabled,this.photoswipe_enabled=!1!==c.photoswipe_enabled&&this.photoswipe_enabled),this.initFlexslider=this.initFlexslider.bind(this),this.initZoom=this.initZoom.bind(this),this.initPhotoswipe=this.initPhotoswipe.bind(this),this.onResetSlidePosition=this.onResetSlidePosition.bind(this),this.getGalleryItems=this.getGalleryItems.bind(this),this.openPhotoswipe=this.openPhotoswipe.bind(this),this.flexslider_enabled?(this.initFlexslider(),b.on("woocommerce_gallery_reset_slide_position",this.onResetSlidePosition)):a(".woocommerce-product-gallery--with-images").fadeTo(250,1),this.zoom_enabled&&(this.initZoom(),b.on("woocommerce_gallery_init_zoom",this.initZoom)),this.photoswipe_enabled&&this.initPhotoswipe())};b.prototype.initFlexslider=function(){var b=this.$images;this.$target.flexslider({selector:".woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image",animation:wc_single_product_params.flexslider.animation,smoothHeight:wc_single_product_params.flexslider.smoothHeight,directionNav:wc_single_product_params.flexslider.directionNav,controlNav:wc_single_product_params.flexslider.controlNav,slideshow:wc_single_product_params.flexslider.slideshow,animationSpeed:wc_single_product_params.flexslider.animationSpeed,animationLoop:wc_single_product_params.flexslider.animationLoop,start:function(){var c=0;b.each(function(){var b=a(this).height();b>c&&(c=b)}),b.each(function(){a(this).css("min-height",c)})},init:function(){window.setTimeout(function(){a(".woocommerce-product-gallery--with-images").fadeTo(250,1)},20)}})},b.prototype.initZoom=function(){var b=this.$images,c=this.$target.width(),d=!1;if(this.flexslider_enabled||(b=b.first()),a(b).each(function(b,e){var f=a(e).find("img");if(f.data("large_image_width")>c)return d=!0,!1}),d){var e={touch:!1};"ontouchstart"in window&&(e.on="click"),b.trigger("zoom.destroy"),b.zoom(e)}},b.prototype.initPhotoswipe=function(){this.zoom_enabled&&this.$images.length>0&&(this.$target.prepend('🔍'),this.$target.on("click",".woocommerce-product-gallery__trigger",this.openPhotoswipe)),this.$target.on("click",".woocommerce-product-gallery__image a",this.openPhotoswipe)},b.prototype.onResetSlidePosition=function(){this.$target.flexslider(0)},b.prototype.getGalleryItems=function(){var b=this.$images,c=[];return b.length>0&&b.each(function(b,d){var e=a(d).find("img"),f=e.attr("data-large_image"),g=e.attr("data-large_image_width"),h=e.attr("data-large_image_height"),i={src:f,w:g,h:h,title:e.attr("title")};c.push(i)}),c},b.prototype.openPhotoswipe=function(b){b.preventDefault();var c,d=a(".pswp")[0],e=this.getGalleryItems(),f=a(b.target);c=f.is(".woocommerce-product-gallery__trigger")?this.$target.find(".flex-active-slide"):f.closest(".woocommerce-product-gallery__image");var g={index:a(c).index(),shareEl:!1,closeOnScroll:!1,history:!1,hideAnimationDuration:0,showAnimationDuration:0},h=new PhotoSwipe(d,PhotoSwipeUI_Default,e,g);h.init()},a.fn.wc_product_gallery=function(a){return new b(this,a),this},a(".woocommerce-product-gallery").each(function(){a(this).wc_product_gallery()})}); \ No newline at end of file +jQuery(function(a){if("undefined"==typeof wc_single_product_params)return!1;a("body").on("init",".wc-tabs-wrapper, .woocommerce-tabs",function(){a(".wc-tab, .woocommerce-tabs .panel:not(.panel .panel)").hide();var b=window.location.hash,c=window.location.href,d=a(this).find(".wc-tabs, ul.tabs").first();b.toLowerCase().indexOf("comment-")>=0||"#reviews"===b||"#tab-reviews"===b?d.find("li.reviews_tab a").click():c.indexOf("comment-page-")>0||c.indexOf("cpage=")>0?d.find("li.reviews_tab a").click():d.find("li:first a").click()}).on("click",".wc-tabs li a, ul.tabs li a",function(b){b.preventDefault();var c=a(this),d=c.closest(".wc-tabs-wrapper, .woocommerce-tabs"),e=d.find(".wc-tabs, ul.tabs");e.find("li").removeClass("active"),d.find(".wc-tab, .panel:not(.panel .panel)").hide(),c.closest("li").addClass("active"),d.find(c.attr("href")).show()}).on("click","a.woocommerce-review-link",function(){return a(".reviews_tab a").click(),!0}).on("init","#rating",function(){a("#rating").hide().before('

    12345

    ')}).on("click","#respond p.stars a",function(){var b=a(this),c=a(this).closest("#respond").find("#rating"),d=a(this).closest(".stars");return c.val(b.text()),b.siblings("a").removeClass("active"),b.addClass("active"),d.addClass("selected"),!1}).on("click","#respond #submit",function(){var b=a(this).closest("#respond").find("#rating"),c=b.val();if(b.length>0&&!c&&"yes"===wc_single_product_params.review_rating_required)return window.alert(wc_single_product_params.i18n_required_rating_text),!1}),a(".wc-tabs-wrapper, .woocommerce-tabs, #rating").trigger("init");var b=function(b,c){this.$target=b,this.$images=a(".woocommerce-product-gallery__image",b),0!==this.$images.length&&(b.data("product_gallery",this),this.flexslider_enabled=a.isFunction(a.fn.flexslider)&&wc_single_product_params.flexslider_enabled,this.zoom_enabled=a.isFunction(a.fn.zoom)&&wc_single_product_params.zoom_enabled,this.photoswipe_enabled="undefined"!=typeof PhotoSwipe&&wc_single_product_params.photoswipe_enabled,c&&(this.flexslider_enabled=!1!==c.photoswipe_enabled&&this.flexslider_enabled,this.zoom_enabled=!1!==c.zoom_enabled&&this.zoom_enabled,this.photoswipe_enabled=!1!==c.photoswipe_enabled&&this.photoswipe_enabled),this.initFlexslider=this.initFlexslider.bind(this),this.initZoom=this.initZoom.bind(this),this.initPhotoswipe=this.initPhotoswipe.bind(this),this.onResetSlidePosition=this.onResetSlidePosition.bind(this),this.getGalleryItems=this.getGalleryItems.bind(this),this.openPhotoswipe=this.openPhotoswipe.bind(this),this.flexslider_enabled?(this.initFlexslider(),b.on("woocommerce_gallery_reset_slide_position",this.onResetSlidePosition)):a(".woocommerce-product-gallery").css("opacity",1),this.zoom_enabled&&(this.initZoom(),b.on("woocommerce_gallery_init_zoom",this.initZoom)),this.photoswipe_enabled&&this.initPhotoswipe())};b.prototype.initFlexslider=function(){var b=this.$images;this.$target.flexslider({selector:".woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image",animation:wc_single_product_params.flexslider.animation,smoothHeight:wc_single_product_params.flexslider.smoothHeight,directionNav:wc_single_product_params.flexslider.directionNav,controlNav:wc_single_product_params.flexslider.controlNav,slideshow:wc_single_product_params.flexslider.slideshow,animationSpeed:wc_single_product_params.flexslider.animationSpeed,animationLoop:wc_single_product_params.flexslider.animationLoop,start:function(){var c=0;b.each(function(){var b=a(this).height();b>c&&(c=b)}),b.each(function(){a(this).css("min-height",c)})},init:function(){window.setTimeout(function(){a(".woocommerce-product-gallery").css("opacity",1)},20)}})},b.prototype.initZoom=function(){var b=this.$images,c=this.$target.width(),d=!1;if(this.flexslider_enabled||(b=b.first()),a(b).each(function(b,e){var f=a(e).find("img");if(f.data("large_image_width")>c)return d=!0,!1}),d){var e={touch:!1};"ontouchstart"in window&&(e.on="click"),b.trigger("zoom.destroy"),b.zoom(e)}},b.prototype.initPhotoswipe=function(){this.zoom_enabled&&this.$images.length>0&&(this.$target.prepend('🔍'),this.$target.on("click",".woocommerce-product-gallery__trigger",this.openPhotoswipe)),this.$target.on("click",".woocommerce-product-gallery__image a",this.openPhotoswipe)},b.prototype.onResetSlidePosition=function(){this.$target.flexslider(0)},b.prototype.getGalleryItems=function(){var b=this.$images,c=[];return b.length>0&&b.each(function(b,d){var e=a(d).find("img"),f=e.attr("data-large_image"),g=e.attr("data-large_image_width"),h=e.attr("data-large_image_height"),i={src:f,w:g,h:h,title:e.attr("title")};c.push(i)}),c},b.prototype.openPhotoswipe=function(b){b.preventDefault();var c,d=a(".pswp")[0],e=this.getGalleryItems(),f=a(b.target);c=f.is(".woocommerce-product-gallery__trigger")?this.$target.find(".flex-active-slide"):f.closest(".woocommerce-product-gallery__image");var g={index:a(c).index(),shareEl:!1,closeOnScroll:!1,history:!1,hideAnimationDuration:0,showAnimationDuration:0},h=new PhotoSwipe(d,PhotoSwipeUI_Default,e,g);h.init()},a.fn.wc_product_gallery=function(a){return new b(this,a),this},a(".woocommerce-product-gallery").each(function(){a(this).wc_product_gallery()})}); \ No newline at end of file diff --git a/templates/single-product/product-image.php b/templates/single-product/product-image.php index 9207eb2368a..e97dd6aa243 100644 --- a/templates/single-product/product-image.php +++ b/templates/single-product/product-image.php @@ -34,7 +34,7 @@ $wrapper_classes = apply_filters( 'woocommerce_single_product_image_gallery_cl 'images', ) ); ?> -
    +

    - +

    @@ -385,7 +402,7 @@ class WC_Admin_Setup_Wizard { /** * Save Locale Settings. */ - public function wc_setup_locale_save( $next_step_link ) { + public function wc_setup_locale_save() { check_admin_referer( 'wc-setup' ); $store_location = sanitize_text_field( $_POST['store_location'] ); @@ -406,14 +423,14 @@ class WC_Admin_Setup_Wizard { update_option( 'woocommerce_weight_unit', $weight_unit ); update_option( 'woocommerce_dimension_unit', $dimension_unit ); - wp_redirect( esc_url_raw( $next_step_link ) ); + wp_redirect( esc_url_raw( $this->get_next_step_link() ) ); exit; } /** * Shipping and taxes. */ - public function wc_setup_shipping_taxes( $next_step_link ) { + public function wc_setup_shipping_taxes() { ?>

    @@ -496,7 +513,7 @@ class WC_Admin_Setup_Wizard {

    - +

    @@ -506,7 +523,7 @@ class WC_Admin_Setup_Wizard { /** * Save shipping and tax options. */ - public function wc_setup_shipping_taxes_save( $next_step_link ) { + public function wc_setup_shipping_taxes_save() { check_admin_referer( 'wc-setup' ); $enable_shipping = isset( $_POST['woocommerce_calc_shipping'] ); @@ -557,7 +574,7 @@ class WC_Admin_Setup_Wizard { } } - wp_redirect( esc_url_raw( $next_step_link ) ); + wp_redirect( esc_url_raw( $this->get_next_step_link() ) ); exit; } @@ -642,7 +659,7 @@ class WC_Admin_Setup_Wizard { /** * Payments Step. */ - public function wc_setup_payments( $next_step_link ) { + public function wc_setup_payments() { $gateways = $this->get_wizard_payment_gateways(); ?>

    @@ -689,7 +706,7 @@ class WC_Admin_Setup_Wizard {

    - +

    @@ -699,7 +716,7 @@ class WC_Admin_Setup_Wizard { /** * Payments Step save. */ - public function wc_setup_payments_save( $next_step_link ) { + public function wc_setup_payments_save() { check_admin_referer( 'wc-setup' ); $gateways = $this->get_wizard_payment_gateways(); @@ -723,7 +740,7 @@ class WC_Admin_Setup_Wizard { update_option( $settings_key, $settings ); } - wp_redirect( esc_url_raw( $next_step_link ) ); + wp_redirect( esc_url_raw( $this->get_next_step_link() ) ); exit; } @@ -745,7 +762,7 @@ class WC_Admin_Setup_Wizard { /** * Final step. */ - public function wc_setup_ready( $next_step_link ) { + public function wc_setup_ready() { $this->wc_setup_ready_actions(); shuffle( $this->tweets ); ?> From 955f20be80739dfb2693d9a03eea6f5ca77b4082 Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Fri, 31 Mar 2017 11:28:00 -0700 Subject: [PATCH 199/525] Do custom buttons before Cancel and Save buttons --- includes/admin/meta-boxes/views/html-order-items.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/admin/meta-boxes/views/html-order-items.php b/includes/admin/meta-boxes/views/html-order-items.php index d8f38329c19..9497657bb78 100644 --- a/includes/admin/meta-boxes/views/html-order-items.php +++ b/includes/admin/meta-boxes/views/html-order-items.php @@ -219,12 +219,12 @@ if ( wc_tax_enabled() ) { - - + + get_total() - $order->get_total_refunded() || 0 < absint( $order->get_item_count() - $order->get_item_count_refunded() ) ) : ?>
    diff --git a/includes/api/class-wc-rest-webhooks-controller.php b/includes/api/class-wc-rest-webhooks-controller.php index 5aa4b6d2907..45ca4e2e7c6 100644 --- a/includes/api/class-wc-rest-webhooks-controller.php +++ b/includes/api/class-wc-rest-webhooks-controller.php @@ -72,6 +72,16 @@ class WC_REST_Webhooks_Controller extends WC_REST_Webhooks_V1_Controller { return apply_filters( "woocommerce_rest_prepare_{$this->post_type}", $response, $webhook, $request ); } + /** + * Get the default REST API version. + * + * @since 3.0.0 + * @return string + */ + protected function get_default_api_version() { + return 'wp_api_v2'; + } + /** * Get the Webhook's schema, conforming to JSON Schema. * diff --git a/includes/api/v1/class-wc-rest-webhooks-controller.php b/includes/api/v1/class-wc-rest-webhooks-controller.php index dab8d268012..d2e79b224ba 100644 --- a/includes/api/v1/class-wc-rest-webhooks-controller.php +++ b/includes/api/v1/class-wc-rest-webhooks-controller.php @@ -133,6 +133,16 @@ class WC_REST_Webhooks_V1_Controller extends WC_REST_Posts_Controller { ) ); } + /** + * Get the default REST API version. + * + * @since 3.0.0 + * @return string + */ + protected function get_default_api_version() { + return 'wp_api_v2'; + } + /** * Create a single webhook. * @@ -185,8 +195,8 @@ class WC_REST_Webhooks_V1_Controller extends WC_REST_Posts_Controller { // Set secret. $webhook->set_secret( ! empty( $request['secret'] ) ? $request['secret'] : '' ); - // Set API version to WP API integration v1. - $webhook->set_api_version( 'wp_api_v1' ); + // Set API version to WP API integration. + $webhook->set_api_version( $this->get_default_api_version() ); // Set status. if ( ! empty( $request['status'] ) ) { diff --git a/includes/class-wc-webhook.php b/includes/class-wc-webhook.php index ec8e8969f4a..f3320478ab0 100644 --- a/includes/class-wc-webhook.php +++ b/includes/class-wc-webhook.php @@ -291,12 +291,14 @@ class WC_Webhook { * @return array */ private function get_wp_api_payload( $resource, $resource_id, $event ) { + $version_suffix = 'wp_api_v1' === $this->get_api_version() ? '_V1' : ''; + switch ( $resource ) { case 'coupon' : case 'customer' : case 'order' : case 'product' : - $class = 'WC_REST_' . ucfirst( $resource ) . 's_Controller'; + $class = 'WC_REST_' . ucfirst( $resource ) . 's' . $version_suffix . '_Controller'; $request = new WP_REST_Request( 'GET' ); $controller = new $class; @@ -349,7 +351,7 @@ class WC_Webhook { 'id' => $resource_id, ); } else { - if ( 'wp_api_v1' === $this->get_api_version() ) { + if ( in_array( $this->get_api_version(), array( 'wp_api_v1', 'wp_api_v2', true ) ) ) { $payload = $this->get_wp_api_payload( $resource, $resource_id, $event ); } else { $payload = $this->get_legacy_api_payload( $resource, $resource_id, $event ); @@ -900,12 +902,13 @@ class WC_Webhook { */ public function set_api_version( $version ) { $versions = array( + 'wp_api_v2', 'wp_api_v1', 'legacy_v3', ); if ( ! in_array( $version, $versions, true ) ) { - $version = 'wp_api_v1'; + $version = 'wp_api_v2'; } update_post_meta( $this->id, '_api_version', $version ); From 5b51b915f62d358bc595ca6aa54cd6cd3a386aa2 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sun, 2 Apr 2017 03:24:52 -0300 Subject: [PATCH 202/525] Fixed a typo --- includes/api/class-wc-rest-webhook-deliveries.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/api/class-wc-rest-webhook-deliveries.php b/includes/api/class-wc-rest-webhook-deliveries.php index 3ac64cc1659..847005264a2 100644 --- a/includes/api/class-wc-rest-webhook-deliveries.php +++ b/includes/api/class-wc-rest-webhook-deliveries.php @@ -157,7 +157,7 @@ class WC_REST_Webhook_Deliveries_Controller extends WC_REST_Webhook_Deliveries_V 'readonly' => true, ), 'date_created_gmt' => array( - 'description' => __( 'The date the webhook delivery was logged, GMT.', 'woocommerce' ), + 'description' => __( 'The date the webhook delivery was logged, as GMT.', 'woocommerce' ), 'type' => 'date-time', 'context' => array( 'view', 'edit' ), 'readonly' => true, From 984edf07d2c4b046f43aff1c82fa1288f8c5ddd5 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Sun, 2 Apr 2017 03:27:58 -0300 Subject: [PATCH 203/525] Missing period --- includes/api/class-wc-rest-product-categories-controller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/api/class-wc-rest-product-categories-controller.php b/includes/api/class-wc-rest-product-categories-controller.php index cbf3ac9eb2c..599e2561340 100644 --- a/includes/api/class-wc-rest-product-categories-controller.php +++ b/includes/api/class-wc-rest-product-categories-controller.php @@ -161,7 +161,7 @@ class WC_REST_Product_Categories_Controller extends WC_REST_Product_Categories_V 'readonly' => true, ), 'date_created_gmt' => array( - 'description' => __( 'The date the image was created, as GMT', 'woocommerce' ), + 'description' => __( 'The date the image was created, as GMT.', 'woocommerce' ), 'type' => 'date-time', 'context' => array( 'view', 'edit' ), 'readonly' => true, From 1fe791d7d82e9d264ad6d2e06b2903eabe8e0f8a Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Mon, 3 Apr 2017 02:59:04 -0300 Subject: [PATCH 204/525] Fixed WC_AJAX::get_customer_details() filter deprecated message --- includes/class-wc-ajax.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/class-wc-ajax.php b/includes/class-wc-ajax.php index 11a618a25fa..97fde7a4b6b 100644 --- a/includes/class-wc-ajax.php +++ b/includes/class-wc-ajax.php @@ -726,7 +726,7 @@ class WC_AJAX { $customer = new WC_Customer( $user_id ); if ( has_filter( 'woocommerce_found_customer_details' ) ) { - wc_deprecated_function( 'The woocommerce_found_customer_details filter', '3.0', 'woocommerce_found_customer_details' ); + wc_deprecated_function( 'The woocommerce_found_customer_details filter', '3.0', 'woocommerce_ajax_get_customer_details' ); } $data = $customer->get_data(); From 014262c0cc2610ce4400f8156b1f882690db351a Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Mon, 3 Apr 2017 03:00:07 -0300 Subject: [PATCH 205/525] Fixed returned data from WC_AJAX::get_customer_details() --- includes/class-wc-ajax.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/class-wc-ajax.php b/includes/class-wc-ajax.php index 97fde7a4b6b..27f821bce6d 100644 --- a/includes/class-wc-ajax.php +++ b/includes/class-wc-ajax.php @@ -733,7 +733,7 @@ class WC_AJAX { $data['date_created'] = $data['date_created'] ? $data['date_created']->getTimestamp() : null; $data['date_modified'] = $data['date_modified'] ? $data['date_modified']->getTimestamp() : null; - $customer_data = apply_filters( 'woocommerce_ajax_get_customer_details', $customer->get_data(), $customer, $user_id ); + $customer_data = apply_filters( 'woocommerce_ajax_get_customer_details', $data, $customer, $user_id ); wp_send_json( $customer_data ); } From 196c317ab11d66a110e5e6662586d00accdd6045 Mon Sep 17 00:00:00 2001 From: Manos Psychogyiopoulos Date: Mon, 3 Apr 2017 11:37:51 +0300 Subject: [PATCH 206/525] Fix order item meta e-mails style --- templates/emails/email-styles.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/templates/emails/email-styles.php b/templates/emails/email-styles.php index 1a8b3917aba..2fb434b2b09 100644 --- a/templates/emails/email-styles.php +++ b/templates/emails/email-styles.php @@ -10,7 +10,7 @@ * happen. When this occurs the version of the template file will be bumped and * the readme will list any important changes. * - * @see https://docs.woocommerce.com/document/template-structure/ + * @see https://docs.woocommerce.com/document/template-structure/ * @author WooThemes * @package WooCommerce/Templates/Emails * @version 2.3.0 @@ -95,6 +95,18 @@ $text_lighter_20 = wc_hex_lighter( $text, 20 ); padding: 12px; } +#body_content td ul.wc-item-meta { + font-size: 0.875em; + margin-left: 0; + padding-left: 0; + list-style: none; +} + +#body_content td ul.wc-item-meta li { + margin-left: 0; + padding-left: 0; +} + #body_content p { margin: 0 0 16px; } From bec1f9b113b637b3456bcb660371353af9618c68 Mon Sep 17 00:00:00 2001 From: Manos Psychogyiopoulos Date: Mon, 3 Apr 2017 11:50:02 +0300 Subject: [PATCH 207/525] Use `small` --- templates/emails/email-styles.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/emails/email-styles.php b/templates/emails/email-styles.php index 2fb434b2b09..8285055ee10 100644 --- a/templates/emails/email-styles.php +++ b/templates/emails/email-styles.php @@ -96,7 +96,7 @@ $text_lighter_20 = wc_hex_lighter( $text, 20 ); } #body_content td ul.wc-item-meta { - font-size: 0.875em; + font-size: small; margin-left: 0; padding-left: 0; list-style: none; From 75f79b3279d087af79088ac4580f3c1bc7f84f80 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 3 Apr 2017 10:46:37 +0100 Subject: [PATCH 208/525] Se 20y limit on datepicker too --- assets/js/admin/reports.js | 1 + assets/js/admin/reports.min.js | 2 +- includes/admin/reports/class-wc-admin-report.php | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/assets/js/admin/reports.js b/assets/js/admin/reports.js index 0cb7026f6f7..0a3d1e8e0b5 100644 --- a/assets/js/admin/reports.js +++ b/assets/js/admin/reports.js @@ -110,6 +110,7 @@ jQuery(function( $ ) { defaultDate: '', dateFormat: 'yy-mm-dd', numberOfMonths: 1, + minDate: '-20Y', maxDate: '+0D', showButtonPanel: true, showOn: 'focus', diff --git a/assets/js/admin/reports.min.js b/assets/js/admin/reports.min.js index 523eb26b51d..9cfd34c51fc 100644 --- a/assets/js/admin/reports.min.js +++ b/assets/js/admin/reports.min.js @@ -1 +1 @@ -jQuery(function(a){function b(b,c,d){a('
    '+d+"
    ").css({top:c-16,left:b+20}).appendTo("body").fadeIn(200)}var c=null,d=null;a(".chart-placeholder").bind("plothover",function(e,f,g){if(g){if((c!==g.dataIndex||d!==g.seriesIndex)&&(c=g.dataIndex,d=g.seriesIndex,a(".chart-tooltip").remove(),g.series.points.show||g.series.enable_tooltip)){var h=g.series.data[g.dataIndex][1],i="";g.series.prepend_label&&(i=i+g.series.label+": "),g.series.prepend_tooltip&&(i+=g.series.prepend_tooltip),i+=h,g.series.append_tooltip&&(i+=g.series.append_tooltip),g.series.pie.show?b(f.pageX,f.pageY,i):b(g.pageX,g.pageY,i)}}else a(".chart-tooltip").remove(),c=null}),a(".wc_sparkline.bars").each(function(){var b=a(this).data("sparkline"),c={grid:{show:!1}},d=[{data:b,color:a(this).data("color"),bars:{fillColor:a(this).data("color"),fill:!0,show:!0,lineWidth:1,barWidth:a(this).data("barwidth"),align:"center"},shadowSize:0}];a.plot(a(this),d,c)}),a(".wc_sparkline.lines").each(function(){var b=a(this).data("sparkline"),c={grid:{show:!1}},d=[{data:b,color:a(this).data("color"),lines:{fill:!1,show:!0,lineWidth:1,align:"center"},shadowSize:0}];a.plot(a(this),d,c)});var e=a(".range_datepicker").datepicker({changeMonth:!0,changeYear:!0,defaultDate:"",dateFormat:"yy-mm-dd",numberOfMonths:1,maxDate:"+0D",showButtonPanel:!0,showOn:"focus",buttonImageOnly:!0,onSelect:function(b){var c=a(this).is(".from")?"minDate":"maxDate",d=a(this).data("datepicker"),f=a.datepicker.parseDate(d.settings.dateFormat||a.datepicker._defaults.dateFormat,b,d.settings);e.not(this).datepicker("option",c,f)}}),f=document.createElement("a");"undefined"==typeof f.download&&a(".export_csv").hide(),a(".export_csv").click(function(){var b=a(this).data("exclude_series")||"";b=b.toString(),b=b.split(",");var c,d,e,f=a(this).data("xaxes"),g=a(this).data("groupby"),h=a(this).data("index_type"),i=a(this).data("export"),j="data:application/csv;charset=utf-8,";if("table"===i)a(this).offsetParent().find("thead tr,tbody tr").each(function(){a(this).find("th, td").each(function(){var b=a(this).text();b=b.replace("[?]","").replace("#",""),j+='"'+b+'",'}),j=j.substring(0,j.length-1),j+="\n"}),a(this).offsetParent().find("tfoot tr").each(function(){a(this).find("th, td").each(function(){var b=a(this).text();if(b=b.replace("[?]","").replace("#",""),j+='"'+b+'",',a(this).attr("colspan")>0)for(n=1;n'+d+"").css({top:c-16,left:b+20}).appendTo("body").fadeIn(200)}var c=null,d=null;a(".chart-placeholder").bind("plothover",function(e,f,g){if(g){if((c!==g.dataIndex||d!==g.seriesIndex)&&(c=g.dataIndex,d=g.seriesIndex,a(".chart-tooltip").remove(),g.series.points.show||g.series.enable_tooltip)){var h=g.series.data[g.dataIndex][1],i="";g.series.prepend_label&&(i=i+g.series.label+": "),g.series.prepend_tooltip&&(i+=g.series.prepend_tooltip),i+=h,g.series.append_tooltip&&(i+=g.series.append_tooltip),g.series.pie.show?b(f.pageX,f.pageY,i):b(g.pageX,g.pageY,i)}}else a(".chart-tooltip").remove(),c=null}),a(".wc_sparkline.bars").each(function(){var b=a(this).data("sparkline"),c={grid:{show:!1}},d=[{data:b,color:a(this).data("color"),bars:{fillColor:a(this).data("color"),fill:!0,show:!0,lineWidth:1,barWidth:a(this).data("barwidth"),align:"center"},shadowSize:0}];a.plot(a(this),d,c)}),a(".wc_sparkline.lines").each(function(){var b=a(this).data("sparkline"),c={grid:{show:!1}},d=[{data:b,color:a(this).data("color"),lines:{fill:!1,show:!0,lineWidth:1,align:"center"},shadowSize:0}];a.plot(a(this),d,c)});var e=a(".range_datepicker").datepicker({changeMonth:!0,changeYear:!0,defaultDate:"",dateFormat:"yy-mm-dd",numberOfMonths:1,minDate:"-20Y",maxDate:"+0D",showButtonPanel:!0,showOn:"focus",buttonImageOnly:!0,onSelect:function(b){var c=a(this).is(".from")?"minDate":"maxDate",d=a(this).data("datepicker"),f=a.datepicker.parseDate(d.settings.dateFormat||a.datepicker._defaults.dateFormat,b,d.settings);e.not(this).datepicker("option",c,f)}}),f=document.createElement("a");"undefined"==typeof f.download&&a(".export_csv").hide(),a(".export_csv").click(function(){var b=a(this).data("exclude_series")||"";b=b.toString(),b=b.split(",");var c,d,e,f=a(this).data("xaxes"),g=a(this).data("groupby"),h=a(this).data("index_type"),i=a(this).data("export"),j="data:application/csv;charset=utf-8,";if("table"===i)a(this).offsetParent().find("thead tr,tbody tr").each(function(){a(this).find("th, td").each(function(){var b=a(this).text();b=b.replace("[?]","").replace("#",""),j+='"'+b+'",'}),j=j.substring(0,j.length-1),j+="\n"}),a(this).offsetParent().find("tfoot tr").each(function(){a(this).find("th, td").each(function(){var b=a(this).text();if(b=b.replace("[?]","").replace("#",""),j+='"'+b+'",',a(this).attr("colspan")>0)for(n=1;nstart_date = max( 1262304000, strtotime( sanitize_text_field( $_GET['start_date'] ) ) ); + $this->start_date = max( strtotime( '-20 years' ), strtotime( sanitize_text_field( $_GET['start_date'] ) ) ); if ( empty( $_GET['end_date'] ) ) { $this->end_date = strtotime( 'midnight', current_time( 'timestamp' ) ); From 6704cbdbab1663aa493c925b22359ad530291fbe Mon Sep 17 00:00:00 2001 From: James Koster Date: Mon, 3 Apr 2017 11:53:08 +0100 Subject: [PATCH 209/525] Add .org assets --- .wordpress-org/banner-1544x500.png | Bin 0 -> 122451 bytes .wordpress-org/banner-772x250.png | Bin 0 -> 54368 bytes .wordpress-org/icon-128x128.png | Bin 0 -> 4156 bytes .wordpress-org/icon-256x256.png | Bin 0 -> 8850 bytes .wordpress-org/screenshot-1.png | Bin 0 -> 32573 bytes .wordpress-org/screenshot-2.png | Bin 0 -> 88152 bytes .wordpress-org/screenshot-3.png | Bin 0 -> 31045 bytes .wordpress-org/screenshot-4.png | Bin 0 -> 50699 bytes .wordpress-org/screenshot-5.png | Bin 0 -> 155291 bytes .wordpress-org/screenshot-6.png | Bin 0 -> 151214 bytes 10 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 .wordpress-org/banner-1544x500.png create mode 100644 .wordpress-org/banner-772x250.png create mode 100644 .wordpress-org/icon-128x128.png create mode 100644 .wordpress-org/icon-256x256.png create mode 100644 .wordpress-org/screenshot-1.png create mode 100644 .wordpress-org/screenshot-2.png create mode 100644 .wordpress-org/screenshot-3.png create mode 100644 .wordpress-org/screenshot-4.png create mode 100644 .wordpress-org/screenshot-5.png create mode 100644 .wordpress-org/screenshot-6.png diff --git a/.wordpress-org/banner-1544x500.png b/.wordpress-org/banner-1544x500.png new file mode 100644 index 0000000000000000000000000000000000000000..d515d551fcc68ad1555eb3ba9ea1b2c0a441bb20 GIT binary patch literal 122451 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

    6fmY87az@E#FgQhv7@GoK!fGDTmzGRsWb` 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 Ef{Y1Vxc~qF literal 0 HcmV?d00001 diff --git a/.wordpress-org/icon-128x128.png b/.wordpress-org/icon-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..60918af469590b386b9a49e1099a2f039a6098b7 GIT binary patch literal 4156 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 literal 0 HcmV?d00001 diff --git a/.wordpress-org/icon-256x256.png b/.wordpress-org/icon-256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..2390aa84fff669ff4ac5ebb05b22fa6d88b2b04b GIT binary patch literal 8850 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 literal 0 HcmV?d00001 diff --git a/.wordpress-org/screenshot-1.png b/.wordpress-org/screenshot-1.png new file mode 100644 index 0000000000000000000000000000000000000000..9b90d4fd05d884135b31d9d245d6f5cbe03c5c86 GIT binary patch literal 32573 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 literal 0 HcmV?d00001 diff --git a/.wordpress-org/screenshot-2.png b/.wordpress-org/screenshot-2.png new file mode 100644 index 0000000000000000000000000000000000000000..995273936b3f358b11d6a1f2dbd895ef34cb57b5 GIT binary patch literal 88152 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 literal 0 HcmV?d00001 diff --git a/.wordpress-org/screenshot-3.png b/.wordpress-org/screenshot-3.png new file mode 100644 index 0000000000000000000000000000000000000000..84c39b4c4e34174a8b91b2801167d80db734e0be GIT binary patch literal 31045 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 literal 0 HcmV?d00001 diff --git a/.wordpress-org/screenshot-5.png b/.wordpress-org/screenshot-5.png new file mode 100644 index 0000000000000000000000000000000000000000..ed40c7f4743c7a5284882bb9e6c9c9280ae8ee65 GIT binary patch literal 155291 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%0A}ChR#sMi)Z27>s0SXo8yg!m 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

    B-SDI92jrM+FPKw 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⁡yXmNN=gT;`CBa!U1LaDoZV$JKt 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 literal 0 HcmV?d00001 From 8598f82c8a8c137f3ab5b530d5664d7fdf5f9148 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 3 Apr 2017 12:04:59 +0100 Subject: [PATCH 210/525] If user can edit private products, search them Fixes #13877 --- .../data-stores/class-wc-product-data-store-cpt.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/includes/data-stores/class-wc-product-data-store-cpt.php b/includes/data-stores/class-wc-product-data-store-cpt.php index 5cee37a6372..1d71e270b7a 100644 --- a/includes/data-stores/class-wc-product-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-data-store-cpt.php @@ -1239,10 +1239,11 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da $search_fields = array_map( 'wc_clean', apply_filters( 'woocommerce_product_search_fields', array( '_sku', ) ) ); - $like_term = '%' . $wpdb->esc_like( $term ) . '%'; - $post_types = $include_variations ? array( 'product', 'product_variation' ) : array( 'product' ); - $type_join = ''; - $type_where = ''; + $like_term = '%' . $wpdb->esc_like( $term ) . '%'; + $post_types = $include_variations ? array( 'product', 'product_variation' ) : array( 'product' ); + $post_statuses = current_user_can( 'edit_private_products' ) ? array( 'private', 'publish' ) : array( 'publish' ); + $type_join = ''; + $type_where = ''; if ( $type ) { if ( in_array( $type, array( 'virtual', 'downloadable' ) ) ) { @@ -1264,7 +1265,7 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da ) ) AND posts.post_type IN ('" . implode( "','", $post_types ) . "') - AND posts.post_status = 'publish' + AND posts.post_status IN ('" . implode( "','", $post_statuses ) . "') $type_where ORDER BY posts.post_parent ASC, posts.post_title ASC ", From c06fdc2e2e7a9aefc7a996706f34242ccad5efdc Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 3 Apr 2017 12:05:28 +0100 Subject: [PATCH 211/525] If product has_options, don't show qty in grouped product add to cart form Fixes #13875 --- includes/abstracts/abstract-wc-product.php | 11 +++++++++++ includes/class-wc-product-variable.php | 11 +++++++++++ templates/single-product/add-to-cart/grouped.php | 6 +++--- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/includes/abstracts/abstract-wc-product.php b/includes/abstracts/abstract-wc-product.php index 82639a2a509..eae76ea242e 100644 --- a/includes/abstracts/abstract-wc-product.php +++ b/includes/abstracts/abstract-wc-product.php @@ -1581,6 +1581,17 @@ class WC_Product extends WC_Abstract_Legacy_Product { return $this->is_downloadable() && $this->get_file( $download_id ); } + /** + * Returns whether or not the product has additonal options that need + * selecting before adding to cart. + * + * @since 3.0.0 + * @return boolean + */ + public function has_options() { + return false; + } + /* |-------------------------------------------------------------------------- | Non-CRUD Getters diff --git a/includes/class-wc-product-variable.php b/includes/class-wc-product-variable.php index c641278dd90..d2ac8dfbbcf 100644 --- a/includes/class-wc-product-variable.php +++ b/includes/class-wc-product-variable.php @@ -470,6 +470,17 @@ class WC_Product_Variable extends WC_Product { return parent::has_weight() || $this->child_has_weight(); } + /** + * Returns whether or not the product has additonal options that need + * selecting before adding to cart. + * + * @since 3.0.0 + * @return boolean + */ + public function has_options() { + return true; + } + /* |-------------------------------------------------------------------------- | Sync with child variations. diff --git a/templates/single-product/add-to-cart/grouped.php b/templates/single-product/add-to-cart/grouped.php index 62aeefba128..4cd7127a40f 100644 --- a/templates/single-product/add-to-cart/grouped.php +++ b/templates/single-product/add-to-cart/grouped.php @@ -30,14 +30,14 @@ do_action( 'woocommerce_before_add_to_cart_form' ); ?> $quantites_required = false; foreach ( $grouped_products as $grouped_product ) { - $post_object = get_post( $grouped_product->get_id() ); - $quantites_required = $quantites_required || $grouped_product->is_purchasable(); + $post_object = get_post( $grouped_product->get_id() ); + $quantites_required = $quantites_required || ( $grouped_product->is_purchasable() && ! $grouped_product->has_options() ); setup_postdata( $GLOBALS['post'] =& $post_object ); ?>

    - is_purchasable() ) : ?> + is_purchasable() || $grouped_product->has_options() ) : ?> is_sold_individually() ) : ?> From 0a96f17747afa6ca2bb0569583c6e58e0b2a0310 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 3 Apr 2017 12:12:10 +0100 Subject: [PATCH 212/525] Flip orderby --- includes/data-stores/class-wc-customer-download-data-store.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/data-stores/class-wc-customer-download-data-store.php b/includes/data-stores/class-wc-customer-download-data-store.php index a02bd0bf1b3..591c6e78777 100644 --- a/includes/data-stores/class-wc-customer-download-data-store.php +++ b/includes/data-stores/class-wc-customer-download-data-store.php @@ -236,7 +236,7 @@ class WC_Customer_Download_Data_Store implements WC_Customer_Download_Data_Store $allowed_orders = array( 'permission_id', 'download_id', 'product_id', 'order_id', 'order_key', 'user_email', 'user_id', 'downloads_remaining', 'access_granted', 'access_expires', 'download_count' ); $order = in_array( $args['order'], $allowed_orders ) ? $args['order'] : 'permission_id'; $orderby = 'DESC' === strtoupper( $args['orderby'] ) ? 'DESC' : 'ASC'; - $orderby_sql = sanitize_sql_orderby( "{$orderby} {$order}" ); + $orderby_sql = sanitize_sql_orderby( "{$order} {$orderby}" ); $query[] = "ORDER BY {$orderby_sql}"; if ( 0 < $args['limit'] ) { From d4c58588fd8104dbea99b338eb53e28ca1be5451 Mon Sep 17 00:00:00 2001 From: Manos Psychogyiopoulos Date: Mon, 3 Apr 2017 15:03:32 +0300 Subject: [PATCH 213/525] Fix unnecessary margin in #13879 --- templates/emails/email-styles.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/templates/emails/email-styles.php b/templates/emails/email-styles.php index 8285055ee10..bc7ac31a30d 100644 --- a/templates/emails/email-styles.php +++ b/templates/emails/email-styles.php @@ -97,14 +97,18 @@ $text_lighter_20 = wc_hex_lighter( $text, 20 ); #body_content td ul.wc-item-meta { font-size: small; - margin-left: 0; - padding-left: 0; + margin: 1em 0 0; + padding: 0; list-style: none; } #body_content td ul.wc-item-meta li { - margin-left: 0; - padding-left: 0; + margin: 0.5em 0 0; + padding: 0; +} + +#body_content td ul.wc-item-meta li p { + margin: 0; } #body_content p { From 6b11bfbff0cb55e35e64afd882a351c78d5f8619 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 3 Apr 2017 16:01:18 +0100 Subject: [PATCH 214/525] Timezone can be + 30 mins Fixes #13887 --- includes/wc-formatting-functions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/wc-formatting-functions.php b/includes/wc-formatting-functions.php index d950c276e23..4c029a17a66 100644 --- a/includes/wc-formatting-functions.php +++ b/includes/wc-formatting-functions.php @@ -612,7 +612,7 @@ function wc_timezone_offset() { $timezone_object = new DateTimeZone( $timezone ); return $timezone_object->getOffset( new DateTime( 'now' ) ); } else { - return intval( get_option( 'gmt_offset', 0 ) ) * HOUR_IN_SECONDS; + return floatval( get_option( 'gmt_offset', 0 ) ) * HOUR_IN_SECONDS; } } From 82c3f933409773b4fefb3b1debeca241c296cd66 Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Mon, 3 Apr 2017 09:54:24 -0700 Subject: [PATCH 215/525] Change to single quotes --- includes/admin/class-wc-admin-setup-wizard.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/admin/class-wc-admin-setup-wizard.php b/includes/admin/class-wc-admin-setup-wizard.php index 4395f04d12d..9be115df878 100644 --- a/includes/admin/class-wc-admin-setup-wizard.php +++ b/includes/admin/class-wc-admin-setup-wizard.php @@ -149,7 +149,7 @@ class WC_Admin_Setup_Wizard { $step_index = array_search( $step, $keys ); if ( false === $step_index ) { - return ""; + return ''; } return add_query_arg( 'step', $keys[ $step_index + 1 ] ); From bf601e7b2346d523462237e1539337fa1a26d28d Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 3 Apr 2017 19:14:55 +0100 Subject: [PATCH 216/525] docblock --- includes/wc-formatting-functions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/wc-formatting-functions.php b/includes/wc-formatting-functions.php index 4c029a17a66..087a78b3cb5 100644 --- a/includes/wc-formatting-functions.php +++ b/includes/wc-formatting-functions.php @@ -605,7 +605,7 @@ function wc_timezone_string() { * Get timezone offset in seconds. * * @since 3.0.0 - * @return integer + * @return float */ function wc_timezone_offset() { if ( $timezone = get_option( 'timezone_string' ) ) { From ef7dbc75a1e4593a1e7b4e4d80a5fdacb6b3d6a7 Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Mon, 3 Apr 2017 11:24:01 -0700 Subject: [PATCH 217/525] bump down version number --- includes/admin/class-wc-admin-setup-wizard.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/admin/class-wc-admin-setup-wizard.php b/includes/admin/class-wc-admin-setup-wizard.php index 9be115df878..bdee4553a36 100644 --- a/includes/admin/class-wc-admin-setup-wizard.php +++ b/includes/admin/class-wc-admin-setup-wizard.php @@ -135,7 +135,7 @@ class WC_Admin_Setup_Wizard { * @return string URL for next step if a next step exists. * Admin URL if it's the last step. * Empty string on failure. - * @since 3.1.0 + * @since 3.0.0 */ public function get_next_step_link( $step = '' ) { if ( ! $step ) { From 8007d3955a41dc9c210d5c4a0e3c4cf0289be6f1 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 3 Apr 2017 19:36:55 +0100 Subject: [PATCH 218/525] Update apidocs --- apigen.neon | 2 +- apigen/theme-woocommerce/@layout.latte | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apigen.neon b/apigen.neon index 7fdf2e0f4a3..d8a09352fd7 100644 --- a/apigen.neon +++ b/apigen.neon @@ -26,7 +26,7 @@ charset: [UTF-8] main: WC # title of generated documentation -title: WooCommerce 2.6.x Code Reference +title: WooCommerce 3.0.x Code Reference # base url used for sitemap (useful for public doc) baseUrl: https://docs.woocommerce.com/wc-apidocs/ diff --git a/apigen/theme-woocommerce/@layout.latte b/apigen/theme-woocommerce/@layout.latte index 9c0500b8770..136673b87b4 100644 --- a/apigen/theme-woocommerce/@layout.latte +++ b/apigen/theme-woocommerce/@layout.latte @@ -83,7 +83,7 @@
  • - REST API Docs + REST API Docs
  • From c89cb04194deb6989201425246d60cef4a04623c Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Mon, 3 Apr 2017 21:41:00 -0300 Subject: [PATCH 219/525] Fixed api version compare for #13872 --- includes/class-wc-webhook.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/class-wc-webhook.php b/includes/class-wc-webhook.php index f3320478ab0..bb24408c850 100644 --- a/includes/class-wc-webhook.php +++ b/includes/class-wc-webhook.php @@ -351,7 +351,7 @@ class WC_Webhook { 'id' => $resource_id, ); } else { - if ( in_array( $this->get_api_version(), array( 'wp_api_v1', 'wp_api_v2', true ) ) ) { + if ( in_array( $this->get_api_version(), array( 'wp_api_v1', 'wp_api_v2' ), true ) ) { $payload = $this->get_wp_api_payload( $resource, $resource_id, $event ); } else { $payload = $this->get_legacy_api_payload( $resource, $resource_id, $event ); From 005bedb7e80b5571d7b56fad4f614e44f0231ade Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 4 Apr 2017 11:13:43 +0100 Subject: [PATCH 220/525] Workaround for loading failed message --- assets/js/admin/wc-enhanced-select.js | 3 ++- assets/js/admin/wc-enhanced-select.min.js | 2 +- assets/js/frontend/country-select.js | 3 ++- assets/js/frontend/country-select.min.js | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/assets/js/admin/wc-enhanced-select.js b/assets/js/admin/wc-enhanced-select.js index 2843d014ea0..4379731c339 100644 --- a/assets/js/admin/wc-enhanced-select.js +++ b/assets/js/admin/wc-enhanced-select.js @@ -5,7 +5,8 @@ jQuery( function( $ ) { return { 'language': { errorLoading: function() { - return wc_enhanced_select_params.i18n_ajax_error; + // Workaround for https://github.com/select2/select2/issues/4355 instead of i18n_ajax_error. + return wc_enhanced_select_params.i18n_searching; }, inputTooLong: function( args ) { var overChars = args.input.length - args.maximum; diff --git a/assets/js/admin/wc-enhanced-select.min.js b/assets/js/admin/wc-enhanced-select.min.js index 31ea9ae4533..437a454478a 100644 --- a/assets/js/admin/wc-enhanced-select.min.js +++ b/assets/js/admin/wc-enhanced-select.min.js @@ -1 +1 @@ -jQuery(function(a){function b(){return{language:{errorLoading:function(){return wc_enhanced_select_params.i18n_ajax_error},inputTooLong:function(a){var b=a.input.length-a.maximum;return 1===b?wc_enhanced_select_params.i18n_input_too_long_1:wc_enhanced_select_params.i18n_input_too_long_n.replace("%qty%",b)},inputTooShort:function(a){var b=a.minimum-a.input.length;return 1===b?wc_enhanced_select_params.i18n_input_too_short_1:wc_enhanced_select_params.i18n_input_too_short_n.replace("%qty%",b)},loadingMore:function(){return wc_enhanced_select_params.i18n_load_more},maximumSelected:function(a){return 1===a.maximum?wc_enhanced_select_params.i18n_selection_too_long_1:wc_enhanced_select_params.i18n_selection_too_long_n.replace("%qty%",a.maximum)},noResults:function(){return wc_enhanced_select_params.i18n_no_matches},searching:function(){return wc_enhanced_select_params.i18n_searching}}}}a(document.body).on("wc-enhanced-select-init",function(){a(":input.wc-enhanced-select, :input.chosen_select").filter(":not(.enhanced)").each(function(){var c=a.extend({minimumResultsForSearch:10,allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder")},b());a(this).select2(c).addClass("enhanced")}),a(":input.wc-enhanced-select-nostd, :input.chosen_select_nostd").filter(":not(.enhanced)").each(function(){var c=a.extend({minimumResultsForSearch:10,allowClear:!0,placeholder:a(this).data("placeholder")},b());a(this).select2(c).addClass("enhanced")}),a(":input.wc-product-search").filter(":not(.enhanced)").each(function(){var c={allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder"),minimumInputLength:a(this).data("minimum_input_length")?a(this).data("minimum_input_length"):"3",escapeMarkup:function(a){return a},ajax:{url:wc_enhanced_select_params.ajax_url,dataType:"json",quietMillis:250,data:function(b){return{term:b.term,action:a(this).data("action")||"woocommerce_json_search_products_and_variations",security:wc_enhanced_select_params.search_products_nonce,exclude:a(this).data("exclude"),include:a(this).data("include"),limit:a(this).data("limit")}},processResults:function(b){var c=[];return b&&a.each(b,function(a,b){c.push({id:a,text:b})}),{results:c}},cache:!0}};if(c=a.extend(c,b()),a(this).select2(c).addClass("enhanced"),a(this).data("sortable")){var d=a(this),e=a(this).next(".select2-container").find("ul.select2-selection__rendered");e.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){a(e.find(".select2-selection__choice").get().reverse()).each(function(){var b=a(this).data("data").id,c=d.find('option[value="'+b+'"]')[0];d.prepend(c)})}})}}),a(":input.wc-customer-search").filter(":not(.enhanced)").each(function(){var c={allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder"),minimumInputLength:a(this).data("minimum_input_length")?a(this).data("minimum_input_length"):"3",escapeMarkup:function(a){return a},ajax:{url:wc_enhanced_select_params.ajax_url,dataType:"json",quietMillis:250,data:function(b){return{term:b.term,action:"woocommerce_json_search_customers",security:wc_enhanced_select_params.search_customers_nonce,exclude:a(this).data("exclude")}},processResults:function(b){var c=[];return b&&a.each(b,function(a,b){c.push({id:a,text:b})}),{results:c}},cache:!0}};if(c=a.extend(c,b()),a(this).select2(c).addClass("enhanced"),a(this).data("sortable")){var d=a(this),e=a(this).next(".select2-container").find("ul.select2-selection__rendered");e.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){a(e.find(".select2-selection__choice").get().reverse()).each(function(){var b=a(this).data("data").id,c=d.find('option[value="'+b+'"]')[0];d.prepend(c)})}})}})}).on("wc_backbone_modal_before_remove",function(){a(".wc-enhanced-select, :input.wc-product-search, :input.wc-customer-search").filter(".select2-hidden-accessible").select2("close")}).trigger("wc-enhanced-select-init"),a("html").on("click",function(b){this===b.target&&a(".wc-enhanced-select, :input.wc-product-search, :input.wc-customer-search").filter(".select2-hidden-accessible").select2("close")})}); \ No newline at end of file +jQuery(function(a){function b(){return{language:{errorLoading:function(){return wc_enhanced_select_params.i18n_searching},inputTooLong:function(a){var b=a.input.length-a.maximum;return 1===b?wc_enhanced_select_params.i18n_input_too_long_1:wc_enhanced_select_params.i18n_input_too_long_n.replace("%qty%",b)},inputTooShort:function(a){var b=a.minimum-a.input.length;return 1===b?wc_enhanced_select_params.i18n_input_too_short_1:wc_enhanced_select_params.i18n_input_too_short_n.replace("%qty%",b)},loadingMore:function(){return wc_enhanced_select_params.i18n_load_more},maximumSelected:function(a){return 1===a.maximum?wc_enhanced_select_params.i18n_selection_too_long_1:wc_enhanced_select_params.i18n_selection_too_long_n.replace("%qty%",a.maximum)},noResults:function(){return wc_enhanced_select_params.i18n_no_matches},searching:function(){return wc_enhanced_select_params.i18n_searching}}}}a(document.body).on("wc-enhanced-select-init",function(){a(":input.wc-enhanced-select, :input.chosen_select").filter(":not(.enhanced)").each(function(){var c=a.extend({minimumResultsForSearch:10,allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder")},b());a(this).select2(c).addClass("enhanced")}),a(":input.wc-enhanced-select-nostd, :input.chosen_select_nostd").filter(":not(.enhanced)").each(function(){var c=a.extend({minimumResultsForSearch:10,allowClear:!0,placeholder:a(this).data("placeholder")},b());a(this).select2(c).addClass("enhanced")}),a(":input.wc-product-search").filter(":not(.enhanced)").each(function(){var c={allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder"),minimumInputLength:a(this).data("minimum_input_length")?a(this).data("minimum_input_length"):"3",escapeMarkup:function(a){return a},ajax:{url:wc_enhanced_select_params.ajax_url,dataType:"json",quietMillis:250,data:function(b){return{term:b.term,action:a(this).data("action")||"woocommerce_json_search_products_and_variations",security:wc_enhanced_select_params.search_products_nonce,exclude:a(this).data("exclude"),include:a(this).data("include"),limit:a(this).data("limit")}},processResults:function(b){var c=[];return b&&a.each(b,function(a,b){c.push({id:a,text:b})}),{results:c}},cache:!0}};if(c=a.extend(c,b()),a(this).select2(c).addClass("enhanced"),a(this).data("sortable")){var d=a(this),e=a(this).next(".select2-container").find("ul.select2-selection__rendered");e.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){a(e.find(".select2-selection__choice").get().reverse()).each(function(){var b=a(this).data("data").id,c=d.find('option[value="'+b+'"]')[0];d.prepend(c)})}})}}),a(":input.wc-customer-search").filter(":not(.enhanced)").each(function(){var c={allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder"),minimumInputLength:a(this).data("minimum_input_length")?a(this).data("minimum_input_length"):"3",escapeMarkup:function(a){return a},ajax:{url:wc_enhanced_select_params.ajax_url,dataType:"json",quietMillis:250,data:function(b){return{term:b.term,action:"woocommerce_json_search_customers",security:wc_enhanced_select_params.search_customers_nonce,exclude:a(this).data("exclude")}},processResults:function(b){var c=[];return b&&a.each(b,function(a,b){c.push({id:a,text:b})}),{results:c}},cache:!0}};if(c=a.extend(c,b()),a(this).select2(c).addClass("enhanced"),a(this).data("sortable")){var d=a(this),e=a(this).next(".select2-container").find("ul.select2-selection__rendered");e.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){a(e.find(".select2-selection__choice").get().reverse()).each(function(){var b=a(this).data("data").id,c=d.find('option[value="'+b+'"]')[0];d.prepend(c)})}})}})}).on("wc_backbone_modal_before_remove",function(){a(".wc-enhanced-select, :input.wc-product-search, :input.wc-customer-search").filter(".select2-hidden-accessible").select2("close")}).trigger("wc-enhanced-select-init"),a("html").on("click",function(b){this===b.target&&a(".wc-enhanced-select, :input.wc-product-search, :input.wc-customer-search").filter(".select2-hidden-accessible").select2("close")})}); \ No newline at end of file diff --git a/assets/js/frontend/country-select.js b/assets/js/frontend/country-select.js index 0d1f9b3e053..a47fc5dfdfb 100644 --- a/assets/js/frontend/country-select.js +++ b/assets/js/frontend/country-select.js @@ -10,7 +10,8 @@ jQuery( function( $ ) { return { 'language': { errorLoading: function() { - return wc_country_select_params.i18n_ajax_error; + // Workaround for https://github.com/select2/select2/issues/4355 instead of i18n_ajax_error. + return wc_country_select_params.i18n_searching; }, inputTooLong: function( args ) { var overChars = args.input.length - args.maximum; diff --git a/assets/js/frontend/country-select.min.js b/assets/js/frontend/country-select.min.js index 0d1808efd63..c75f75310d0 100644 --- a/assets/js/frontend/country-select.min.js +++ b/assets/js/frontend/country-select.min.js @@ -1 +1 @@ -jQuery(function(a){function b(){return{language:{errorLoading:function(){return wc_country_select_params.i18n_ajax_error},inputTooLong:function(a){var b=a.input.length-a.maximum;return 1===b?wc_country_select_params.i18n_input_too_long_1:wc_country_select_params.i18n_input_too_long_n.replace("%qty%",b)},inputTooShort:function(a){var b=a.minimum-a.input.length;return 1===b?wc_country_select_params.i18n_input_too_short_1:wc_country_select_params.i18n_input_too_short_n.replace("%qty%",b)},loadingMore:function(){return wc_country_select_params.i18n_load_more},maximumSelected:function(a){return 1===a.maximum?wc_country_select_params.i18n_selection_too_long_1:wc_country_select_params.i18n_selection_too_long_n.replace("%qty%",a.maximum)},noResults:function(){return wc_country_select_params.i18n_no_matches},searching:function(){return wc_country_select_params.i18n_searching}}}}if("undefined"==typeof wc_country_select_params)return!1;if(a().select2){var c=function(){a("select.country_select:visible, select.state_select:visible").each(function(){var c=a.extend({placeholderOption:"first",width:"100%"},b());a(this).select2(c),a(this).on("select2:select",function(){a(this).focus()})})};c(),a(document.body).bind("country_to_state_changed",function(){c()})}var d=wc_country_select_params.countries.replace(/"/g,'"'),e=a.parseJSON(d);a(document.body).on("change","select.country_to_state, input.country_to_state",function(){var b=a(this).closest(".woocommerce-billing-fields, .woocommerce-shipping-fields, .woocommerce-shipping-calculator");b.length||(b=a(this).closest(".form-row").parent());var c=a(this).val(),d=b.find("#billing_state, #shipping_state, #calc_shipping_state"),f=d.parent(),g=d.attr("name"),h=d.attr("id"),i=d.val(),j=d.attr("placeholder")||d.attr("data-placeholder")||"";if(e[c])if(a.isEmptyObject(e[c]))d.parent().hide().find(".select2-container").remove(),d.replaceWith(''),a(document.body).trigger("country_to_state_changed",[c,b]);else{var k="",l=e[c];for(var m in l)l.hasOwnProperty(m)&&(k=k+'");d.parent().show(),d.is("input")&&(d.replaceWith(''),d=b.find("#billing_state, #shipping_state, #calc_shipping_state")),d.html('"+k),d.val(i).change(),a(document.body).trigger("country_to_state_changed",[c,b])}else d.is("select")?(f.show().find(".select2-container").remove(),d.replaceWith(''),a(document.body).trigger("country_to_state_changed",[c,b])):d.is('input[type="hidden"]')&&(f.show().find(".select2-container").remove(),d.replaceWith(''),a(document.body).trigger("country_to_state_changed",[c,b]));a(document.body).trigger("country_to_state_changing",[c,b])}),a(function(){a(":input.country_to_state").change()})}); \ No newline at end of file +jQuery(function(a){function b(){return{language:{errorLoading:function(){return wc_country_select_params.i18n_searching},inputTooLong:function(a){var b=a.input.length-a.maximum;return 1===b?wc_country_select_params.i18n_input_too_long_1:wc_country_select_params.i18n_input_too_long_n.replace("%qty%",b)},inputTooShort:function(a){var b=a.minimum-a.input.length;return 1===b?wc_country_select_params.i18n_input_too_short_1:wc_country_select_params.i18n_input_too_short_n.replace("%qty%",b)},loadingMore:function(){return wc_country_select_params.i18n_load_more},maximumSelected:function(a){return 1===a.maximum?wc_country_select_params.i18n_selection_too_long_1:wc_country_select_params.i18n_selection_too_long_n.replace("%qty%",a.maximum)},noResults:function(){return wc_country_select_params.i18n_no_matches},searching:function(){return wc_country_select_params.i18n_searching}}}}if("undefined"==typeof wc_country_select_params)return!1;if(a().select2){var c=function(){a("select.country_select:visible, select.state_select:visible").each(function(){var c=a.extend({placeholderOption:"first",width:"100%"},b());a(this).select2(c),a(this).on("select2:select",function(){a(this).focus()})})};c(),a(document.body).bind("country_to_state_changed",function(){c()})}var d=wc_country_select_params.countries.replace(/"/g,'"'),e=a.parseJSON(d);a(document.body).on("change","select.country_to_state, input.country_to_state",function(){var b=a(this).closest(".woocommerce-billing-fields, .woocommerce-shipping-fields, .woocommerce-shipping-calculator");b.length||(b=a(this).closest(".form-row").parent());var c=a(this).val(),d=b.find("#billing_state, #shipping_state, #calc_shipping_state"),f=d.parent(),g=d.attr("name"),h=d.attr("id"),i=d.val(),j=d.attr("placeholder")||d.attr("data-placeholder")||"";if(e[c])if(a.isEmptyObject(e[c]))d.parent().hide().find(".select2-container").remove(),d.replaceWith(''),a(document.body).trigger("country_to_state_changed",[c,b]);else{var k="",l=e[c];for(var m in l)l.hasOwnProperty(m)&&(k=k+'");d.parent().show(),d.is("input")&&(d.replaceWith(''),d=b.find("#billing_state, #shipping_state, #calc_shipping_state")),d.html('"+k),d.val(i).change(),a(document.body).trigger("country_to_state_changed",[c,b])}else d.is("select")?(f.show().find(".select2-container").remove(),d.replaceWith(''),a(document.body).trigger("country_to_state_changed",[c,b])):d.is('input[type="hidden"]')&&(f.show().find(".select2-container").remove(),d.replaceWith(''),a(document.body).trigger("country_to_state_changed",[c,b]));a(document.body).trigger("country_to_state_changing",[c,b])}),a(function(){a(":input.country_to_state").change()})}); \ No newline at end of file From b61c378e171d8ab667b36a1c30da04466a24de9d Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 4 Apr 2017 11:36:10 +0100 Subject: [PATCH 221/525] Fix mistake in #13846 with PL locale --- i18n/locale-info.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/i18n/locale-info.php b/i18n/locale-info.php index fef6ddd56a9..d6a71b5957a 100644 --- a/i18n/locale-info.php +++ b/i18n/locale-info.php @@ -436,9 +436,9 @@ return array( ), 'PL' => array( 'currency_code' => 'PLN', - 'currency_pos' => 'right', - 'thousand_sep' => ',', - 'decimal_sep' => ' ', + 'currency_pos' => 'right_space', + 'thousand_sep' => ' ', + 'decimal_sep' => ',', 'num_decimals' => 2, 'weight_unit' => 'kg', 'dimension_unit' => 'cm', From 505813403e39387fdf4d6e6fc9c9a14c4bd6f9ae Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 4 Apr 2017 11:52:54 +0100 Subject: [PATCH 222/525] @used-by WC_Order::set_status comment #13891 --- includes/wc-order-functions.php | 1 + 1 file changed, 1 insertion(+) diff --git a/includes/wc-order-functions.php b/includes/wc-order-functions.php index 3e32160f875..f00534164fd 100644 --- a/includes/wc-order-functions.php +++ b/includes/wc-order-functions.php @@ -104,6 +104,7 @@ function wc_get_order( $the_order = false ) { * Get all order statuses. * * @since 2.2 + * @used-by WC_Order::set_status * @return array */ function wc_get_order_statuses() { From d9178563781c8ab1eb1319cb38fb33eb8c9c11e9 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 4 Apr 2017 12:39:35 +0100 Subject: [PATCH 223/525] Validate status if object_read #13891 --- includes/abstracts/abstract-wc-order.php | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/includes/abstracts/abstract-wc-order.php b/includes/abstracts/abstract-wc-order.php index 724c791022c..b59fb57f6ce 100644 --- a/includes/abstracts/abstract-wc-order.php +++ b/includes/abstracts/abstract-wc-order.php @@ -470,18 +470,21 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { $old_status = $this->get_status(); $new_status = 'wc-' === substr( $new_status, 0, 3 ) ? substr( $new_status, 3 ) : $new_status; - // Only allow valid new status - if ( ! in_array( 'wc-' . $new_status, $this->get_valid_statuses() ) && 'trash' !== $new_status ) { - $new_status = 'pending'; + // If setting the status, ensure it's set to a valid status. + if ( true === $this->object_read ) { + // Only allow valid new status + if ( ! in_array( 'wc-' . $new_status, $this->get_valid_statuses() ) && 'trash' !== $new_status ) { + $new_status = 'pending'; + } + + // If the old status is set but unknown (e.g. draft) assume its pending for action usage. + if ( $old_status && ! in_array( 'wc-' . $old_status, $this->get_valid_statuses() ) && 'trash' !== $old_status ) { + $old_status = 'pending'; + } } $this->set_prop( 'status', $new_status ); - // If the old status is set but unknown (e.g. draft) assume its pending for action usage. - if ( $old_status && ! in_array( 'wc-' . $old_status, $this->get_valid_statuses() ) && 'trash' !== $old_status ) { - $old_status = 'pending'; - } - return array( 'from' => $old_status, 'to' => $new_status, From 514ce648b56e0bf071f87cd73f85bcc4680f41ac Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 4 Apr 2017 09:23:44 -0300 Subject: [PATCH 224/525] Minify CSS --- assets/css/woocommerce-rtl.css | 2 +- assets/css/woocommerce.css | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/css/woocommerce-rtl.css b/assets/css/woocommerce-rtl.css index ca26cabe792..258c40e684e 100644 --- a/assets/css/woocommerce-rtl.css +++ b/assets/css/woocommerce-rtl.css @@ -1 +1 @@ -@charset "UTF-8";@-webkit-keyframes spin{100%{-webkit-transform:rotate(-360deg)}}@-moz-keyframes spin{100%{-moz-transform:rotate(-360deg)}}@keyframes spin{100%{-webkit-transform:rotate(-360deg);-moz-transform:rotate(-360deg);-ms-transform:rotate(-360deg);-o-transform:rotate(-360deg);transform:rotate(-360deg)}}@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}.woocommerce-store-notice,p.demo_store{position:absolute;top:0;right:0;left:0;margin:0;width:100%;font-size:1em;padding:1em 0;text-align:center;background-color:#a46497;color:#fff;z-index:99998;box-shadow:0 1px 1em rgba(0,0,0,.2);display:none}.woocommerce-store-notice a,p.demo_store a{color:#fff;text-decoration:underline}.admin-bar p.demo_store{top:32px}.clear{clear:both}.woocommerce .blockUI.blockOverlay{position:relative}.woocommerce .blockUI.blockOverlay::before,.woocommerce .loader::before{height:1em;width:1em;display:block;position:absolute;top:50%;right:50%;margin-right:-.5em;margin-top:-.5em;content:'';-webkit-animation:spin 1s ease-in-out infinite;-moz-animation:spin 1s ease-in-out infinite;animation:spin 1s ease-in-out infinite;background:url(../images/icons/loader.svg) center center;background-size:cover;line-height:1;text-align:center;font-size:2em;color:rgba(0,0,0,.75)}.woocommerce a.remove{display:block;font-size:1.5em;height:1em;width:1em;text-align:center;line-height:1;border-radius:100%;color:red!important;text-decoration:none;font-weight:700;border:0}.woocommerce a.remove:hover{color:#fff!important;background:red}.woocommerce small.note{display:block;color:#777;font-size:.857em;margin-top:10px}.woocommerce .woocommerce-breadcrumb{margin:0 0 1em;padding:0;font-size:.92em;color:#777}.woocommerce .woocommerce-breadcrumb::after,.woocommerce .woocommerce-breadcrumb::before{content:' ';display:table}.woocommerce .woocommerce-breadcrumb::after{clear:both}.woocommerce .woocommerce-breadcrumb a{color:#777}.woocommerce .quantity .qty{width:3.631em;text-align:center}.woocommerce div.product{margin-bottom:0;position:relative}.woocommerce div.product .product_title{clear:none;margin-top:0;padding:0}.woocommerce #reviews #comments .add_review::after,.woocommerce .products ul::after,.woocommerce div.product form.cart::after,.woocommerce div.product p.cart::after,.woocommerce nav.woocommerce-pagination ul,.woocommerce ul.products::after{clear:both}.woocommerce div.product p.price,.woocommerce div.product span.price{color:#77a464;font-size:1.25em}.woocommerce div.product p.price ins,.woocommerce div.product span.price ins{background:inherit;font-weight:700}.woocommerce div.product p.price del,.woocommerce div.product span.price del{opacity:.5}.woocommerce div.product p.stock{font-size:.92em}.woocommerce div.product .stock{color:#77a464}.woocommerce div.product .out-of-stock{color:red}.woocommerce div.product .woocommerce-product-rating{margin-bottom:1.618em}.woocommerce div.product div.images{margin-bottom:2em}.woocommerce div.product div.images img{display:block;width:100%;height:auto;box-shadow:none}.woocommerce div.product div.images div.thumbnails{padding-top:1em}.woocommerce div.product div.images.woocommerce-product-gallery{position:relative}.woocommerce div.product div.images .woocommerce-product-gallery__wrapper{transition:all cubic-bezier(.795,-.035,0,1) .5s}.woocommerce div.product div.images .woocommerce-product-gallery__image:nth-child(n+2){width:25%;display:inline-block}.woocommerce div.product div.images .woocommerce-product-gallery__trigger{position:absolute;top:.5em;left:.5em;font-size:2em;z-index:9;width:36px;height:36px;background:#fff;text-indent:-9999px;border-radius:100%;box-sizing:content-box}.woocommerce div.product div.images .woocommerce-product-gallery__trigger:before{content:"";display:block;width:10px;height:10px;border:2px solid #000;border-radius:100%;position:absolute;top:9px;right:9px;box-sizing:content-box}.woocommerce div.product div.images .woocommerce-product-gallery__trigger:after{content:"";display:block;width:2px;height:8px;background:#000;border-radius:6px;position:absolute;top:19px;right:22px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);box-sizing:content-box}.woocommerce div.product div.images .flex-control-thumbs{overflow:hidden;zoom:1;margin:0;padding:0}.woocommerce div.product div.images .flex-control-thumbs li{width:25%;float:right;margin:0;list-style:none}.woocommerce div.product div.images .flex-control-thumbs li img{cursor:pointer;opacity:.5;margin:0}.woocommerce div.product div.images .flex-control-thumbs li img.flex-active,.woocommerce div.product div.images .flex-control-thumbs li img:hover{opacity:1}.woocommerce div.product div.summary{margin-bottom:2em}.woocommerce div.product div.social{text-align:left;margin:0 0 1em}.woocommerce div.product div.social span{margin:0 2px 0 0}.woocommerce div.product div.social span span{margin:0}.woocommerce div.product div.social span .stButton .chicklets{padding-right:16px;width:0}.woocommerce div.product div.social iframe{float:right;margin-top:3px}.woocommerce div.product .woocommerce-tabs ul.tabs{list-style:none;padding:0 1em 0 0;margin:0 0 1.618em;overflow:hidden;position:relative}.woocommerce div.product .woocommerce-tabs ul.tabs li{border:1px solid #d3ced2;background-color:#ebe9eb;display:inline-block;position:relative;z-index:0;border-radius:4px 4px 0 0;margin:0 -5px;padding:0 1em}.woocommerce div.product .woocommerce-tabs ul.tabs li a{display:inline-block;padding:.5em 0;font-weight:700;color:#515151;text-decoration:none}.woocommerce div.product form.cart::after,.woocommerce div.product form.cart::before,.woocommerce div.product p.cart::after,.woocommerce div.product p.cart::before{display:table;content:' '}.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover{text-decoration:none;color:#6b6b6b}.woocommerce div.product .woocommerce-tabs ul.tabs li.active{background:#fff;z-index:2;border-bottom-color:#fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{color:inherit;text-shadow:inherit}.woocommerce div.product .woocommerce-tabs ul.tabs li.active::before{box-shadow:-2px 2px 0 #fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active::after{box-shadow:2px 2px 0 #fff}.woocommerce div.product .woocommerce-tabs ul.tabs li::after,.woocommerce div.product .woocommerce-tabs ul.tabs li::before{border:1px solid #d3ced2;position:absolute;bottom:-1px;width:5px;height:5px;content:' '}.woocommerce div.product .woocommerce-tabs ul.tabs li::before{right:-6px;-webkit-border-bottom-left-radius:4px;-moz-border-bottom-left-radius:4px;border-bottom-left-radius:4px;border-width:0 0 1px 1px;box-shadow:-2px 2px 0 #ebe9eb}.woocommerce div.product .woocommerce-tabs ul.tabs li::after{left:-6px;-webkit-border-bottom-right-radius:4px;-moz-border-bottom-right-radius:4px;border-bottom-right-radius:4px;border-width:0 1px 1px 0;box-shadow:2px 2px 0 #ebe9eb}.woocommerce div.product .woocommerce-tabs ul.tabs::before{position:absolute;content:' ';width:100%;bottom:0;right:0;border-bottom:1px solid #d3ced2;z-index:1}.woocommerce div.product .woocommerce-tabs .panel{margin:0 0 2em;padding:0}.woocommerce div.product form.cart,.woocommerce div.product p.cart{margin-bottom:2em}.woocommerce div.product form.cart div.quantity{float:right;margin:0 0 0 4px}.woocommerce div.product form.cart table{border-width:0 0 1px}.woocommerce div.product form.cart table td{padding-right:0}.woocommerce div.product form.cart table div.quantity{float:none;margin:0}.woocommerce div.product form.cart table small.stock{display:block;float:none}.woocommerce div.product form.cart .variations{margin-bottom:1em;border:0;width:100%}.woocommerce div.product form.cart .variations td,.woocommerce div.product form.cart .variations th{border:0;vertical-align:top;line-height:2em}.woocommerce div.product form.cart .variations label{font-weight:700}.woocommerce div.product form.cart .variations select{max-width:100%;min-width:75%;display:inline-block;margin-left:1em}.woocommerce div.product form.cart .variations td.label{padding-left:1em}.woocommerce div.product form.cart .woocommerce-variation-description p{margin-bottom:1em}.woocommerce div.product form.cart .reset_variations{visibility:hidden;font-size:.83em}.woocommerce div.product form.cart .wc-no-matching-variations{display:none}.woocommerce div.product form.cart .button{vertical-align:middle;float:right}.woocommerce div.product form.cart .group_table td.label{padding-left:1em;padding-right:1em}.woocommerce div.product form.cart .group_table td{vertical-align:top;padding-bottom:.5em;border:0}.woocommerce div.product form.cart .group_table td:first-child{width:4em;text-align:center}.woocommerce div.product form.cart .group_table .wc-grouped-product-add-to-cart-checkbox{display:inline-block;width:auto;margin:0 auto;transform:scale(1.5,1.5)}.woocommerce span.onsale{min-height:3.236em;min-width:3.236em;padding:.202em;font-weight:700;position:absolute;text-align:center;line-height:3.236;top:-.5em;right:-.5em;margin:0;border-radius:100%;background-color:#77a464;color:#fff;font-size:.857em;-webkit-font-smoothing:antialiased;z-index:9}.woocommerce .products ul,.woocommerce ul.products{margin:0 0 1em;padding:0;list-style:none;clear:both}.woocommerce .products ul::after,.woocommerce .products ul::before,.woocommerce ul.products::after,.woocommerce ul.products::before{content:' ';display:table}.woocommerce .products ul li,.woocommerce ul.products li{list-style:none}.woocommerce ul.products li.product .onsale{top:0;left:0;right:auto;margin:-.5em 0 0 -.5em}.woocommerce ul.products li.product .woocommerce-loop-category__title,.woocommerce ul.products li.product .woocommerce-loop-product__title,.woocommerce ul.products li.product h3{padding:.5em 0;margin:0;font-size:1em}.woocommerce ul.products li.product a{text-decoration:none}.woocommerce ul.products li.product a img{width:100%;height:auto;display:block;margin:0 0 1em;box-shadow:none}.woocommerce ul.products li.product strong{display:block}.woocommerce ul.products li.product .star-rating{font-size:.857em}.woocommerce ul.products li.product .button{margin-top:1em}.woocommerce ul.products li.product .price{color:#77a464;display:block;font-weight:400;margin-bottom:.5em;font-size:.857em}.woocommerce ul.products li.product .price del{color:inherit;opacity:.5;display:block}.woocommerce ul.products li.product .price ins{background:0 0;font-weight:700}.woocommerce ul.products li.product .price .from{font-size:.67em;margin:-2px 0 0;text-transform:uppercase;color:rgba(132,132,132,.5)}.woocommerce .woocommerce-ordering,.woocommerce .woocommerce-result-count{margin:0 0 1em}.woocommerce .woocommerce-ordering select{vertical-align:top}.woocommerce nav.woocommerce-pagination{text-align:center}.woocommerce nav.woocommerce-pagination ul{display:inline-block;white-space:nowrap;padding:0;border:1px solid #d3ced2;border-left:0;margin:1px}.woocommerce nav.woocommerce-pagination ul li{border-left:1px solid #d3ced2;padding:0;margin:0;float:right;display:inline;overflow:hidden}.woocommerce nav.woocommerce-pagination ul li a,.woocommerce nav.woocommerce-pagination ul li span{margin:0;text-decoration:none;line-height:1;font-size:1em;font-weight:400;padding:.5em;min-width:1em;display:block}.woocommerce nav.woocommerce-pagination ul li a:focus,.woocommerce nav.woocommerce-pagination ul li a:hover,.woocommerce nav.woocommerce-pagination ul li span.current{background:#ebe9eb;color:#8a7e88}.woocommerce #respond input#submit,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button{font-size:100%;margin:0;line-height:1;cursor:pointer;position:relative;text-decoration:none;overflow:visible;padding:.618em 1em;font-weight:700;border-radius:3px;right:auto;color:#515151;background-color:#ebe9eb;border:0;white-space:nowrap;display:inline-block;background-image:none;box-shadow:none;-webkit-box-shadow:none;text-shadow:none}.woocommerce #respond input#submit.loading,.woocommerce a.button.loading,.woocommerce button.button.loading,.woocommerce input.button.loading{opacity:.25;padding-left:2.618em}.woocommerce #respond input#submit.loading::after,.woocommerce a.button.loading::after,.woocommerce button.button.loading::after,.woocommerce input.button.loading::after{font-family:WooCommerce;content:'\e01c';vertical-align:top;-webkit-font-smoothing:antialiased;font-weight:400;position:absolute;top:.618em;left:1em;-webkit-animation:spin 2s linear infinite;-moz-animation:spin 2s linear infinite;animation:spin 2s linear infinite}.woocommerce #respond input#submit.added::after,.woocommerce a.button.added::after,.woocommerce button.button.added::after,.woocommerce input.button.added::after{font-family:WooCommerce;content:'\e017';margin-right:.53em;vertical-align:bottom}.woocommerce #respond input#submit:hover,.woocommerce a.button:hover,.woocommerce button.button:hover,.woocommerce input.button:hover{background-color:#dad8da;text-decoration:none;background-image:none;color:#515151}.woocommerce #respond input#submit.alt,.woocommerce a.button.alt,.woocommerce button.button.alt,.woocommerce input.button.alt{background-color:#a46497;color:#fff;-webkit-font-smoothing:antialiased}.woocommerce #respond input#submit.alt:hover,.woocommerce a.button.alt:hover,.woocommerce button.button.alt:hover,.woocommerce input.button.alt:hover{background-color:#935386;color:#fff}.woocommerce #respond input#submit.alt.disabled,.woocommerce #respond input#submit.alt.disabled:hover,.woocommerce #respond input#submit.alt:disabled,.woocommerce #respond input#submit.alt:disabled:hover,.woocommerce #respond input#submit.alt:disabled[disabled],.woocommerce #respond input#submit.alt:disabled[disabled]:hover,.woocommerce a.button.alt.disabled,.woocommerce a.button.alt.disabled:hover,.woocommerce a.button.alt:disabled,.woocommerce a.button.alt:disabled:hover,.woocommerce a.button.alt:disabled[disabled],.woocommerce a.button.alt:disabled[disabled]:hover,.woocommerce button.button.alt.disabled,.woocommerce button.button.alt.disabled:hover,.woocommerce button.button.alt:disabled,.woocommerce button.button.alt:disabled:hover,.woocommerce button.button.alt:disabled[disabled],.woocommerce button.button.alt:disabled[disabled]:hover,.woocommerce input.button.alt.disabled,.woocommerce input.button.alt.disabled:hover,.woocommerce input.button.alt:disabled,.woocommerce input.button.alt:disabled:hover,.woocommerce input.button.alt:disabled[disabled],.woocommerce input.button.alt:disabled[disabled]:hover{background-color:#a46497;color:#fff}.woocommerce #respond input#submit.disabled,.woocommerce #respond input#submit:disabled,.woocommerce #respond input#submit:disabled[disabled],.woocommerce a.button.disabled,.woocommerce a.button:disabled,.woocommerce a.button:disabled[disabled],.woocommerce button.button.disabled,.woocommerce button.button:disabled,.woocommerce button.button:disabled[disabled],.woocommerce input.button.disabled,.woocommerce input.button:disabled,.woocommerce input.button:disabled[disabled]{color:inherit;cursor:not-allowed;opacity:.5;padding:.618em 1em}.woocommerce #respond input#submit.disabled:hover,.woocommerce #respond input#submit:disabled:hover,.woocommerce #respond input#submit:disabled[disabled]:hover,.woocommerce a.button.disabled:hover,.woocommerce a.button:disabled:hover,.woocommerce a.button:disabled[disabled]:hover,.woocommerce button.button.disabled:hover,.woocommerce button.button:disabled:hover,.woocommerce button.button:disabled[disabled]:hover,.woocommerce input.button.disabled:hover,.woocommerce input.button:disabled:hover,.woocommerce input.button:disabled[disabled]:hover{color:inherit;background-color:#ebe9eb}.woocommerce .cart .button,.woocommerce .cart input.button{float:none}.woocommerce a.added_to_cart{padding-top:.5em;white-space:nowrap;display:inline-block}.woocommerce #reviews #comments .add_review::after,.woocommerce #reviews #comments .add_review::before,.woocommerce #reviews #comments ol.commentlist li .comment-text::after,.woocommerce #reviews #comments ol.commentlist li .comment-text::before,.woocommerce #reviews #comments ol.commentlist::after,.woocommerce #reviews #comments ol.commentlist::before{content:' ';display:table}.woocommerce #reviews h2 small{float:left;color:#777;font-size:15px;margin:10px 0 0}.woocommerce #reviews h2 small a{text-decoration:none;color:#777}.woocommerce #reviews h3{margin:0}.woocommerce #reviews #respond{margin:0;border:0;padding:0}.woocommerce #reviews #comment{height:75px}.woocommerce #reviews #comments h2{clear:none}.woocommerce #review_form #respond::after,.woocommerce #reviews #comments ol.commentlist li .comment-text::after,.woocommerce #reviews #comments ol.commentlist::after,.woocommerce .woocommerce-product-rating::after,.woocommerce ul.cart_list li dl::after,.woocommerce ul.cart_list li::after,.woocommerce ul.product_list_widget li dl::after,.woocommerce ul.product_list_widget li::after{clear:both}.woocommerce #reviews #comments ol.commentlist{margin:0;width:100%;background:0 0;list-style:none}.woocommerce #reviews #comments ol.commentlist li{padding:0;margin:0 0 20px;position:relative;background:100%;border:0}.woocommerce #reviews #comments ol.commentlist li .meta{color:#777;font-size:.75em}.woocommerce #reviews #comments ol.commentlist li img.avatar{float:right;position:absolute;top:0;right:0;padding:3px;width:32px;height:auto;background:#ebe9eb;border:1px solid #e4e1e3;margin:0;box-shadow:none}.woocommerce #reviews #comments ol.commentlist li .comment-text{margin:0 50px 0 0;border:1px solid #e4e1e3;border-radius:4px;padding:1em 1em 0}.woocommerce #reviews #comments ol.commentlist li .comment-text p{margin:0 0 1em}.woocommerce #reviews #comments ol.commentlist li .comment-text p.meta{font-size:.83em}.woocommerce #reviews #comments ol.commentlist ul.children{list-style:none;margin:20px 50px 0 0}.woocommerce #reviews #comments ol.commentlist ul.children .star-rating{display:none}.woocommerce #reviews #comments ol.commentlist #respond{border:1px solid #e4e1e3;border-radius:4px;padding:1em 1em 0;margin:20px 50px 0 0}.woocommerce #reviews #comments .commentlist>li::before{content:''}.woocommerce .star-rating{float:left;overflow:hidden;position:relative;height:1em;line-height:1;font-size:1em;width:5.4em;font-family:star}.woocommerce .star-rating::before{content:'\73\73\73\73\73';color:#d3ced2;float:right;top:0;right:0;position:absolute}.woocommerce .star-rating span{overflow:hidden;float:right;top:0;right:0;position:absolute;padding-top:1.5em}.woocommerce .star-rating span::before{content:'\53\53\53\53\53';top:0;position:absolute;right:0}.woocommerce .woocommerce-product-rating{line-height:2;display:block}.woocommerce .woocommerce-product-rating::after,.woocommerce .woocommerce-product-rating::before{content:' ';display:table}.woocommerce .woocommerce-product-rating .star-rating{margin:.5em 0 0 4px;float:right}.woocommerce .products .star-rating{display:block;margin:0 0 .5em;float:none}.woocommerce .hreview-aggregate .star-rating{margin:10px 0 0}.woocommerce #review_form #respond{position:static;margin:0;width:auto;padding:0;background:0 0;border:0}.woocommerce #review_form #respond::after,.woocommerce #review_form #respond::before{content:' ';display:table}.woocommerce p.stars a::before,.woocommerce p.stars a:hover~a::before{content:'\e021'}.woocommerce #review_form #respond p{margin:0 0 10px}.woocommerce #review_form #respond .form-submit input{right:auto}.woocommerce #review_form #respond textarea{box-sizing:border-box;width:100%}.woocommerce p.stars a{position:relative;height:1em;width:1em;text-indent:-999em;display:inline-block;text-decoration:none}.woocommerce p.stars a::before{display:block;position:absolute;top:0;right:0;width:1em;height:1em;line-height:1;font-family:WooCommerce;text-indent:0}.woocommerce table.shop_attributes td,.woocommerce table.shop_attributes th{line-height:1.5;border-bottom:1px dotted rgba(0,0,0,.1);border-top:0;margin:0}.woocommerce p.stars.selected a.active::before,.woocommerce p.stars:hover a::before{content:'\e020'}.woocommerce p.stars.selected a.active~a::before{content:'\e021'}.woocommerce p.stars.selected a:not(.active)::before{content:'\e020'}.woocommerce table.shop_attributes{border:0;border-top:1px dotted rgba(0,0,0,.1);margin-bottom:1.618em;width:100%}.woocommerce table.shop_attributes th{width:150px;font-weight:700;padding:8px}.woocommerce table.shop_attributes td{font-style:italic;padding:0}.woocommerce table.shop_attributes td p{margin:0;padding:8px 0}.woocommerce table.shop_attributes tr:nth-child(even) td,.woocommerce table.shop_attributes tr:nth-child(even) th{background:rgba(0,0,0,.025)}.woocommerce table.shop_table{border:1px solid rgba(0,0,0,.1);margin:0 0 24px -1px;text-align:right;width:100%;border-collapse:separate;border-radius:5px}.woocommerce table.shop_table th{font-weight:700;padding:9px 12px}.woocommerce table.shop_table td{border-top:1px solid rgba(0,0,0,.1);padding:6px 12px;vertical-align:middle}.woocommerce table.shop_table td small{font-weight:400}.woocommerce table.shop_table tbody:first-child tr:first-child td,.woocommerce table.shop_table tbody:first-child tr:first-child th{border-top:0}.woocommerce table.shop_table tbody th,.woocommerce table.shop_table tfoot td,.woocommerce table.shop_table tfoot th{font-weight:700;border-top:1px solid rgba(0,0,0,.1)}.woocommerce table.my_account_orders{font-size:.85em}.woocommerce table.my_account_orders td,.woocommerce table.my_account_orders th{padding:4px 8px;vertical-align:middle}.woocommerce table.my_account_orders .button{white-space:nowrap}.woocommerce table.my_account_orders .order-actions{text-align:left}.woocommerce table.my_account_orders .order-actions .button{margin:.125em .25em .125em 0}.woocommerce table.woocommerce-MyAccount-downloads td,.woocommerce table.woocommerce-MyAccount-downloads th{vertical-align:top;text-align:center}.woocommerce table.woocommerce-MyAccount-downloads td:first-child,.woocommerce table.woocommerce-MyAccount-downloads td:last-child,.woocommerce table.woocommerce-MyAccount-downloads th:first-child,.woocommerce table.woocommerce-MyAccount-downloads th:last-child{text-align:right}.woocommerce table.woocommerce-MyAccount-downloads td .woocommerce-MyAccount-downloads-file::before,.woocommerce table.woocommerce-MyAccount-downloads th .woocommerce-MyAccount-downloads-file::before{content:'\2193';display:inline-block}.woocommerce td.product-name .wc-item-meta,.woocommerce td.product-name dl.variation{list-style:none}.woocommerce td.product-name .wc-item-meta .wc-item-meta-label,.woocommerce td.product-name .wc-item-meta dt,.woocommerce td.product-name dl.variation .wc-item-meta-label,.woocommerce td.product-name dl.variation dt{float:right;clear:both;margin-left:.25em;display:inline-block;list-style:none}.woocommerce td.product-name .wc-item-meta dd,.woocommerce td.product-name dl.variation dd{margin:0}.woocommerce td.product-name .wc-item-meta p,.woocommerce td.product-name .wc-item-meta:last-child,.woocommerce td.product-name dl.variation p,.woocommerce td.product-name dl.variation:last-child{margin-bottom:0}.woocommerce td.product-name p.backorder_notification{font-size:.83em}.woocommerce td.product-quantity{min-width:80px}.woocommerce ul.cart_list,.woocommerce ul.product_list_widget{list-style:none;padding:0;margin:0}.woocommerce ul.cart_list li,.woocommerce ul.product_list_widget li{padding:4px 0;margin:0;list-style:none}.woocommerce ul.cart_list li::after,.woocommerce ul.cart_list li::before,.woocommerce ul.product_list_widget li::after,.woocommerce ul.product_list_widget li::before{content:' ';display:table}.woocommerce ul.cart_list li a,.woocommerce ul.product_list_widget li a{display:block;font-weight:700}.woocommerce ul.cart_list li img,.woocommerce ul.product_list_widget li img{float:left;margin-right:4px;width:32px;height:auto;box-shadow:none}.woocommerce ul.cart_list li dl,.woocommerce ul.product_list_widget li dl{margin:0;padding-right:1em;border-right:2px solid rgba(0,0,0,.1)}.woocommerce ul.cart_list li dl::after,.woocommerce ul.cart_list li dl::before,.woocommerce ul.product_list_widget li dl::after,.woocommerce ul.product_list_widget li dl::before{content:' ';display:table}.woocommerce ul.cart_list li dl dd,.woocommerce ul.cart_list li dl dt,.woocommerce ul.product_list_widget li dl dd,.woocommerce ul.product_list_widget li dl dt{display:inline-block;float:right;margin-bottom:1em}.woocommerce ul.cart_list li dl dt,.woocommerce ul.product_list_widget li dl dt{font-weight:700;padding:0 0 .25em;margin:0 0 0 4px;clear:right}#add_payment_method .wc-proceed-to-checkout::after,.woocommerce .widget_layered_nav ul li::after,.woocommerce .widget_rating_filter ul li::after,.woocommerce .widget_shopping_cart .buttons::after,.woocommerce ul.order_details::after,.woocommerce-account .addresses .title::after,.woocommerce-account .woocommerce::after,.woocommerce-cart .wc-proceed-to-checkout::after,.woocommerce-checkout .wc-proceed-to-checkout::after,.woocommerce-error::after,.woocommerce-info::after,.woocommerce-message::after,.woocommerce.widget_shopping_cart .buttons::after{clear:both}.woocommerce ul.cart_list li dl dd,.woocommerce ul.product_list_widget li dl dd{padding:0 0 .25em}.woocommerce ul.cart_list li dl dd p:last-child,.woocommerce ul.product_list_widget li dl dd p:last-child{margin-bottom:0}.woocommerce ul.cart_list li .star-rating,.woocommerce ul.product_list_widget li .star-rating{float:none}.woocommerce .widget_shopping_cart .total,.woocommerce.widget_shopping_cart .total{border-top:3px double #ebe9eb;padding:4px 0 0}.woocommerce .widget_shopping_cart .total strong,.woocommerce.widget_shopping_cart .total strong{min-width:40px;display:inline-block}.woocommerce .widget_shopping_cart .cart_list li,.woocommerce.widget_shopping_cart .cart_list li{padding-right:2em;position:relative;padding-top:0}.woocommerce .widget_shopping_cart .cart_list li a.remove,.woocommerce.widget_shopping_cart .cart_list li a.remove{position:absolute;top:0;right:0}.woocommerce .widget_shopping_cart .buttons::after,.woocommerce .widget_shopping_cart .buttons::before,.woocommerce.widget_shopping_cart .buttons::after,.woocommerce.widget_shopping_cart .buttons::before{content:' ';display:table}.woocommerce .widget_shopping_cart .buttons a,.woocommerce.widget_shopping_cart .buttons a{margin-left:5px;margin-bottom:5px}.woocommerce form .form-row{padding:3px;margin:0 0 6px}.woocommerce form .form-row [placeholder]:focus::-webkit-input-placeholder{-webkit-transition:opacity .5s .5s ease;-moz-transition:opacity .5s .5s ease;transition:opacity .5s .5s ease;opacity:0}.woocommerce form .form-row label{line-height:2}.woocommerce form .form-row label.hidden{visibility:hidden}.woocommerce form .form-row label.inline{display:inline}.woocommerce form .form-row select{cursor:pointer;margin:0}.woocommerce form .form-row .required{color:red;font-weight:700;border:0}.woocommerce form .form-row .input-checkbox{display:inline;margin:-2px 0 0 8px;text-align:center;vertical-align:middle}.woocommerce form .form-row input.input-text,.woocommerce form .form-row textarea{box-sizing:border-box;width:100%;margin:0;outline:0;line-height:1}.woocommerce form .form-row textarea{height:4em;line-height:1.5;display:block;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.woocommerce form .form-row .select2-container{width:100%;line-height:2em}.woocommerce form .form-row.woocommerce-invalid label{color:#a00}.woocommerce form .form-row.woocommerce-invalid .select2-container,.woocommerce form .form-row.woocommerce-invalid input.input-text,.woocommerce form .form-row.woocommerce-invalid select{border-color:#a00}.woocommerce form .form-row.woocommerce-validated .select2-container,.woocommerce form .form-row.woocommerce-validated input.input-text,.woocommerce form .form-row.woocommerce-validated select{border-color:#69bf29}.woocommerce form .form-row ::-webkit-input-placeholder{line-height:normal}.woocommerce form .form-row :-moz-placeholder{line-height:normal}.woocommerce form .form-row :-ms-input-placeholder{line-height:normal}.woocommerce form.checkout_coupon,.woocommerce form.login,.woocommerce form.register{border:1px solid #d3ced2;padding:20px;margin:2em 0;text-align:right;border-radius:5px}.woocommerce ul#shipping_method{list-style:none;margin:0;padding:0}.woocommerce ul#shipping_method li{margin:0;padding:.25em 22px .25em 0;text-indent:-22px;list-style:none}.woocommerce ul#shipping_method li input{margin:3px .5ex}.woocommerce ul#shipping_method li label{display:inline}.woocommerce .widget_layered_nav ul li::after,.woocommerce .widget_layered_nav ul li::before,.woocommerce ul.order_details::after,.woocommerce ul.order_details::before{content:' ';display:table}.woocommerce ul#shipping_method .amount{font-weight:700}.woocommerce p.woocommerce-shipping-contents{margin:0}.woocommerce ul.order_details{margin:0 0 3em;list-style:none}.woocommerce ul.order_details li{float:right;margin-left:2em;text-transform:uppercase;font-size:.715em;line-height:1;border-left:1px dashed #d3ced2;padding-left:2em;margin-right:0;padding-right:0;list-style-type:none}.woocommerce ul.order_details li strong{display:block;font-size:1.4em;text-transform:none;line-height:1.5}.woocommerce ul.order_details li:last-of-type{border:none}.woocommerce .wc-bacs-bank-details-account-name{font-weight:700}.woocommerce .widget_layered_nav ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_layered_nav ul li{padding:0 0 1px;list-style:none}.woocommerce .widget_layered_nav ul li.chosen a::before,.woocommerce .widget_layered_nav_filters ul li a::before{line-height:1;content:"";font-weight:400;color:#a00;font-family:WooCommerce;speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-decoration:none}.woocommerce .widget_layered_nav ul li a,.woocommerce .widget_layered_nav ul li span{padding:1px 0}.woocommerce .widget_layered_nav ul li.chosen a::before{margin-left:.618em}.woocommerce .widget_layered_nav_filters ul{margin:0;padding:0;border:0;list-style:none;overflow:hidden;zoom:1}.woocommerce .widget_layered_nav_filters ul li{float:right;padding:0 0 1px 1px;list-style:none}.woocommerce .widget_layered_nav_filters ul li a{text-decoration:none}.woocommerce .widget_layered_nav_filters ul li a::before{margin-left:.618em}.woocommerce .widget_price_filter .price_slider{margin-bottom:1em}.woocommerce .widget_price_filter .price_slider_amount{text-align:left;line-height:2.4;font-size:.8751em}.woocommerce .widget_price_filter .price_slider_amount .button{font-size:1.15em;float:right}.woocommerce .widget_price_filter .ui-slider{position:relative;text-align:right;margin-right:.5em;margin-left:.5em}.woocommerce .widget_price_filter .ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1em;height:1em;background-color:#a46497;border-radius:1em;cursor:ew-resize;outline:0;top:-.3em;margin-right:-.5em}.woocommerce .widget_price_filter .ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;border-radius:1em;background-color:#a46497}.woocommerce .widget_price_filter .price_slider_wrapper .ui-widget-content{border-radius:1em;background-color:#602053;border:0}.woocommerce .widget_price_filter .ui-slider-horizontal{height:.5em}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range{top:0;height:100%}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-min{right:-1px}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-max{left:-1px}.woocommerce .widget_rating_filter ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_rating_filter ul li{padding:0 0 1px;list-style:none}.woocommerce .widget_rating_filter ul li::after,.woocommerce .widget_rating_filter ul li::before{content:' ';display:table}.woocommerce .widget_rating_filter ul li a{padding:1px 0;text-decoration:none}.woocommerce .widget_rating_filter ul li .star-rating{float:none;display:inline-block}.rtl.woocommerce div.product div.images .flex-control-thumbs li,.woocommerce-error .button,.woocommerce-info .button,.woocommerce-message .button{float:left}.woocommerce .widget_rating_filter ul li.chosen a::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-left:.618em;content:"";text-decoration:none;color:#a00}.pswp{z-index:999999}.woocommerce img.pswp__img,.woocommerce-page img.pswp__img{max-width:none}button.pswp__button{box-shadow:none!important;background-image:url(photoswipe/default-skin/default-skin.png)!important}button.pswp__button,button.pswp__button--arrow--left::before,button.pswp__button--arrow--right::before,button.pswp__button:hover{background-color:transparent!important}button.pswp__button--arrow--left,button.pswp__button--arrow--left:hover,button.pswp__button--arrow--right,button.pswp__button--arrow--right:hover{background-image:none!important}button.pswp__button--close:hover{background-position:100% -44px}button.pswp__button--zoom:hover{background-position:-88px 0}.woocommerce-error,.woocommerce-info,.woocommerce-message{padding:1em 3.5em 1em 2em;margin:0 0 2em;position:relative;background-color:#f7f6f7;color:#515151;border-top:3px solid #a46497;list-style:none;width:auto;word-wrap:break-word}.woocommerce-error::after,.woocommerce-error::before,.woocommerce-info::after,.woocommerce-info::before,.woocommerce-message::after,.woocommerce-message::before{content:' ';display:table}.woocommerce-error::before,.woocommerce-info::before,.woocommerce-message::before{font-family:WooCommerce;content:'\e028';display:inline-block;position:absolute;top:1em;right:1.5em}.woocommerce-error li,.woocommerce-info li,.woocommerce-message li{list-style:none!important;padding-right:0!important;margin-right:0!important}.woocommerce-message{border-top-color:#8fae1b}.woocommerce-message::before{content:'\e015';color:#8fae1b}.woocommerce-info{border-top-color:#1e85be}.woocommerce-info::before{color:#1e85be}.woocommerce-error{border-top-color:#b81c23}.woocommerce-error::before{content:'\e016';color:#b81c23}.woocommerce-account .addresses .title::after,.woocommerce-account .addresses .title::before,.woocommerce-account .woocommerce::after,.woocommerce-account .woocommerce::before{content:' ';display:table}.woocommerce-account .addresses .title h3{float:right}.woocommerce-account .addresses .title .edit,.woocommerce-account ul.digital-downloads li .count{float:left}.woocommerce-account ol.commentlist.notes li.note p.meta{font-weight:700;margin-bottom:0}.woocommerce-account ol.commentlist.notes li.note .description p:last-child{margin-bottom:0}.woocommerce-account ul.digital-downloads{margin-right:0;padding-right:0}.woocommerce-account ul.digital-downloads li{list-style:none;margin-right:0;padding-right:0}.woocommerce-account ul.digital-downloads li::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-left:.618em;content:"";text-decoration:none}#add_payment_method table.cart .product-thumbnail,.woocommerce-cart table.cart .product-thumbnail,.woocommerce-checkout table.cart .product-thumbnail{min-width:32px}#add_payment_method table.cart img,.woocommerce-cart table.cart img,.woocommerce-checkout table.cart img{width:32px;box-shadow:none}#add_payment_method table.cart td,#add_payment_method table.cart th,.woocommerce-cart table.cart td,.woocommerce-cart table.cart th,.woocommerce-checkout table.cart td,.woocommerce-checkout table.cart th{vertical-align:middle}#add_payment_method table.cart td.actions .coupon .input-text,.woocommerce-cart table.cart td.actions .coupon .input-text,.woocommerce-checkout table.cart td.actions .coupon .input-text{float:right;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #d3ced2;padding:6px 6px 5px;margin:0 0 0 4px;outline:0;line-height:1}#add_payment_method table.cart input,.woocommerce-cart table.cart input,.woocommerce-checkout table.cart input{margin:0;vertical-align:middle;line-height:1}#add_payment_method .wc-proceed-to-checkout,.woocommerce-cart .wc-proceed-to-checkout,.woocommerce-checkout .wc-proceed-to-checkout{padding:1em 0}#add_payment_method .wc-proceed-to-checkout::after,#add_payment_method .wc-proceed-to-checkout::before,.woocommerce-cart .wc-proceed-to-checkout::after,.woocommerce-cart .wc-proceed-to-checkout::before,.woocommerce-checkout .wc-proceed-to-checkout::after,.woocommerce-checkout .wc-proceed-to-checkout::before{content:' ';display:table}#add_payment_method .wc-proceed-to-checkout a.checkout-button,.woocommerce-cart .wc-proceed-to-checkout a.checkout-button,.woocommerce-checkout .wc-proceed-to-checkout a.checkout-button{display:block;text-align:center;margin-bottom:1em;font-size:1.25em;padding:1em}#add_payment_method .cart-collaterals .shipping_calculator .button,.woocommerce-cart .cart-collaterals .shipping_calculator .button,.woocommerce-checkout .cart-collaterals .shipping_calculator .button{width:100%;float:none;display:block}#add_payment_method .cart-collaterals .shipping_calculator .shipping-calculator-button::after,.woocommerce-cart .cart-collaterals .shipping_calculator .shipping-calculator-button::after,.woocommerce-checkout .cart-collaterals .shipping_calculator .shipping-calculator-button::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none}#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::after,#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::before,#add_payment_method #payment ul.payment_methods::after,#add_payment_method #payment ul.payment_methods::before,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::before,.woocommerce-cart #payment ul.payment_methods::after,.woocommerce-cart #payment ul.payment_methods::before,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::before,.woocommerce-checkout #payment ul.payment_methods::after,.woocommerce-checkout #payment ul.payment_methods::before{content:' ';display:table}#add_payment_method .cart-collaterals .cart_totals p small,.woocommerce-cart .cart-collaterals .cart_totals p small,.woocommerce-checkout .cart-collaterals .cart_totals p small{color:#777;font-size:.83em}#add_payment_method .cart-collaterals .cart_totals table,.woocommerce-cart .cart-collaterals .cart_totals table,.woocommerce-checkout .cart-collaterals .cart_totals table{border-collapse:separate;margin:0 0 6px;padding:0}#add_payment_method .cart-collaterals .cart_totals table tr:first-child td,#add_payment_method .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-cart .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-cart .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-checkout .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-checkout .cart-collaterals .cart_totals table tr:first-child th{border-top:0}#add_payment_method .cart-collaterals .cart_totals table th,.woocommerce-cart .cart-collaterals .cart_totals table th,.woocommerce-checkout .cart-collaterals .cart_totals table th{width:40%}#add_payment_method .cart-collaterals .cart_totals table td,#add_payment_method .cart-collaterals .cart_totals table th,.woocommerce-cart .cart-collaterals .cart_totals table td,.woocommerce-cart .cart-collaterals .cart_totals table th,.woocommerce-checkout .cart-collaterals .cart_totals table td,.woocommerce-checkout .cart-collaterals .cart_totals table th{vertical-align:top;border-right:0;border-left:0;line-height:1.5em}#add_payment_method .cart-collaterals .cart_totals table small,.woocommerce-cart .cart-collaterals .cart_totals table small,.woocommerce-checkout .cart-collaterals .cart_totals table small{color:#777}#add_payment_method .cart-collaterals .cart_totals table select,.woocommerce-cart .cart-collaterals .cart_totals table select,.woocommerce-checkout .cart-collaterals .cart_totals table select{width:100%}#add_payment_method .cart-collaterals .cart_totals .discount td,.woocommerce-cart .cart-collaterals .cart_totals .discount td,.woocommerce-checkout .cart-collaterals .cart_totals .discount td{color:#77a464}#add_payment_method .cart-collaterals .cart_totals tr td,#add_payment_method .cart-collaterals .cart_totals tr th,.woocommerce-cart .cart-collaterals .cart_totals tr td,.woocommerce-cart .cart-collaterals .cart_totals tr th,.woocommerce-checkout .cart-collaterals .cart_totals tr td,.woocommerce-checkout .cart-collaterals .cart_totals tr th{border-top:1px solid #ebe9eb}#add_payment_method .cart-collaterals .cross-sells ul.products li.product,.woocommerce-cart .cart-collaterals .cross-sells ul.products li.product,.woocommerce-checkout .cart-collaterals .cross-sells ul.products li.product{margin-top:0}#add_payment_method .checkout .col-2 h3#ship-to-different-address,.woocommerce-cart .checkout .col-2 h3#ship-to-different-address,.woocommerce-checkout .checkout .col-2 h3#ship-to-different-address{float:right;clear:none}#add_payment_method .checkout .col-2 .form-row-first,#add_payment_method .checkout .col-2 .notes,.woocommerce-cart .checkout .col-2 .form-row-first,.woocommerce-cart .checkout .col-2 .notes,.woocommerce-checkout .checkout .col-2 .form-row-first,.woocommerce-checkout .checkout .col-2 .notes{clear:right}#add_payment_method .checkout .create-account small,.woocommerce-cart .checkout .create-account small,.woocommerce-checkout .checkout .create-account small{font-size:11px;color:#777;font-weight:400}#add_payment_method .checkout div.shipping-address,.woocommerce-cart .checkout div.shipping-address,.woocommerce-checkout .checkout div.shipping-address{padding:0;clear:right;width:100%}#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::after,#add_payment_method #payment ul.payment_methods::after,#add_payment_method .checkout .shipping_address,.single-product .twentythirteen p.stars,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-cart #payment ul.payment_methods::after,.woocommerce-cart .checkout .shipping_address,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-checkout #payment ul.payment_methods::after,.woocommerce-checkout .checkout .shipping_address{clear:both}#add_payment_method #payment,.woocommerce-cart #payment,.woocommerce-checkout #payment{background:#ebe9eb;border-radius:5px}#add_payment_method #payment ul.payment_methods,.woocommerce-cart #payment ul.payment_methods,.woocommerce-checkout #payment ul.payment_methods{text-align:right;padding:1em;border-bottom:1px solid #d3ced2;margin:0;list-style:none}#add_payment_method #payment ul.payment_methods li,.woocommerce-cart #payment ul.payment_methods li,.woocommerce-checkout #payment ul.payment_methods li{line-height:2;text-align:right;margin:0;font-weight:400}#add_payment_method #payment ul.payment_methods li input,.woocommerce-cart #payment ul.payment_methods li input,.woocommerce-checkout #payment ul.payment_methods li input{margin:0 0 0 1em}#add_payment_method #payment ul.payment_methods li img,.woocommerce-cart #payment ul.payment_methods li img,.woocommerce-checkout #payment ul.payment_methods li img{vertical-align:middle;margin:-2px .5em 0 0;padding:0;position:relative;box-shadow:none}#add_payment_method #payment ul.payment_methods li img+img,.woocommerce-cart #payment ul.payment_methods li img+img,.woocommerce-checkout #payment ul.payment_methods li img+img{margin-right:2px}#add_payment_method #payment div.form-row,.woocommerce-cart #payment div.form-row,.woocommerce-checkout #payment div.form-row{padding:1em}#add_payment_method #payment div.payment_box,.woocommerce-cart #payment div.payment_box,.woocommerce-checkout #payment div.payment_box{position:relative;box-sizing:border-box;width:100%;padding:1em;margin:1em 0;font-size:.92em;border-radius:2px;line-height:1.5;background-color:#dfdcde;color:#515151}#add_payment_method #payment div.payment_box input.input-text,#add_payment_method #payment div.payment_box textarea,.woocommerce-cart #payment div.payment_box input.input-text,.woocommerce-cart #payment div.payment_box textarea,.woocommerce-checkout #payment div.payment_box input.input-text,.woocommerce-checkout #payment div.payment_box textarea{border-color:#bbb3b9 #c7c1c6 #c7c1c6}#add_payment_method #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-cart #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-checkout #payment div.payment_box ::-webkit-input-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box :-moz-placeholder,.woocommerce-cart #payment div.payment_box :-moz-placeholder,.woocommerce-checkout #payment div.payment_box :-moz-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box :-ms-input-placeholder,.woocommerce-cart #payment div.payment_box :-ms-input-placeholder,.woocommerce-checkout #payment div.payment_box :-ms-input-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods{list-style:none;margin:0}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token{margin:0 0 .5em}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label{cursor:pointer}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput{vertical-align:middle;margin:-3px 0 0 1em;position:relative}#add_payment_method #payment div.payment_box .wc-credit-card-form,.woocommerce-cart #payment div.payment_box .wc-credit-card-form,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form{border:0;padding:0;margin:1em 0 0}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number{font-size:1.5em;padding:8px;background-repeat:no-repeat;background-position:left .618em center;background-size:32px 20px}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.visa,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.visa,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.visa{background-image:url(../images/icons/credit-cards/visa.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.mastercard{background-image:url(../images/icons/credit-cards/mastercard.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.laser,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.laser,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.laser{background-image:url(../images/icons/credit-cards/laser.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.dinersclub{background-image:url(../images/icons/credit-cards/diners.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.maestro{background-image:url(../images/icons/credit-cards/maestro.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.jcb{background-image:url(../images/icons/credit-cards/jcb.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.amex,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.amex,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.amex{background-image:url(../images/icons/credit-cards/amex.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.discover,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.discover,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.discover{background-image:url(../images/icons/credit-cards/discover.svg)}#add_payment_method #payment div.payment_box span.help,.woocommerce-cart #payment div.payment_box span.help,.woocommerce-checkout #payment div.payment_box span.help{font-size:.857em;color:#777;font-weight:400}#add_payment_method #payment div.payment_box .form-row,.woocommerce-cart #payment div.payment_box .form-row,.woocommerce-checkout #payment div.payment_box .form-row{margin:0 0 1em}#add_payment_method #payment div.payment_box p:last-child,.woocommerce-cart #payment div.payment_box p:last-child,.woocommerce-checkout #payment div.payment_box p:last-child{margin-bottom:0}#add_payment_method #payment div.payment_box::before,.woocommerce-cart #payment div.payment_box::before,.woocommerce-checkout #payment div.payment_box::before{content:'';display:block;border:1em solid #dfdcde;border-left-color:transparent;border-right-color:transparent;border-top-color:transparent;position:absolute;top:-.75em;right:0;margin:-1em 2em 0 0}#add_payment_method #payment .payment_method_paypal .about_paypal,.woocommerce-cart #payment .payment_method_paypal .about_paypal,.woocommerce-checkout #payment .payment_method_paypal .about_paypal{float:left;line-height:52px;font-size:.83em}#add_payment_method #payment .payment_method_paypal img,.woocommerce-cart #payment .payment_method_paypal img,.woocommerce-checkout #payment .payment_method_paypal img{max-height:52px;vertical-align:middle}.woocommerce-password-strength{text-align:center;font-weight:600;padding:3px .5em;font-size:1em}.woocommerce-password-strength.strong{background-color:#c1e1b9;border-color:#83c373}.woocommerce-password-strength.short{background-color:#f1adad;border-color:#e35b5b}.woocommerce-password-strength.bad{background-color:#fbc5a9;border-color:#f78b53}.woocommerce-password-strength.good{background-color:#ffe399;border-color:#ffc733}.woocommerce-password-hint{margin:.5em 0 0;display:block}.js .woocommerce-product-gallery--with-images{opacity:0}#content.twentyeleven .woocommerce-pagination a{font-size:1em;line-height:1}.single-product .twentythirteen #reply-title,.single-product .twentythirteen #respond #commentform,.single-product .twentythirteen .entry-summary{padding:0}.twentythirteen .woocommerce-breadcrumb{padding-top:40px}.twentyfourteen ul.products li.product{margin-top:0!important}body:not(.search-results) .twentysixteen .entry-summary{color:inherit;font-size:inherit;line-height:inherit}.twentysixteen .price ins{background:inherit;color:inherit} \ No newline at end of file +@charset "UTF-8";@-webkit-keyframes spin{100%{-webkit-transform:rotate(-360deg)}}@-moz-keyframes spin{100%{-moz-transform:rotate(-360deg)}}@keyframes spin{100%{-webkit-transform:rotate(-360deg);-moz-transform:rotate(-360deg);-ms-transform:rotate(-360deg);-o-transform:rotate(-360deg);transform:rotate(-360deg)}}@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}.woocommerce-store-notice,p.demo_store{position:absolute;top:0;right:0;left:0;margin:0;width:100%;font-size:1em;padding:1em 0;text-align:center;background-color:#a46497;color:#fff;z-index:99998;box-shadow:0 1px 1em rgba(0,0,0,.2);display:none}.woocommerce-store-notice a,p.demo_store a{color:#fff;text-decoration:underline}.admin-bar p.demo_store{top:32px}.clear{clear:both}.woocommerce .blockUI.blockOverlay{position:relative}.woocommerce .blockUI.blockOverlay::before,.woocommerce .loader::before{height:1em;width:1em;display:block;position:absolute;top:50%;right:50%;margin-right:-.5em;margin-top:-.5em;content:'';-webkit-animation:spin 1s ease-in-out infinite;-moz-animation:spin 1s ease-in-out infinite;animation:spin 1s ease-in-out infinite;background:url(../images/icons/loader.svg) center center;background-size:cover;line-height:1;text-align:center;font-size:2em;color:rgba(0,0,0,.75)}.woocommerce a.remove{display:block;font-size:1.5em;height:1em;width:1em;text-align:center;line-height:1;border-radius:100%;color:red!important;text-decoration:none;font-weight:700;border:0}.woocommerce a.remove:hover{color:#fff!important;background:red}.woocommerce small.note{display:block;color:#777;font-size:.857em;margin-top:10px}.woocommerce .woocommerce-breadcrumb{margin:0 0 1em;padding:0;font-size:.92em;color:#777}.woocommerce .woocommerce-breadcrumb::after,.woocommerce .woocommerce-breadcrumb::before{content:' ';display:table}.woocommerce .woocommerce-breadcrumb::after{clear:both}.woocommerce .woocommerce-breadcrumb a{color:#777}.woocommerce .quantity .qty{width:3.631em;text-align:center}.woocommerce div.product{margin-bottom:0;position:relative}.woocommerce div.product .product_title{clear:none;margin-top:0;padding:0}.woocommerce #reviews #comments .add_review::after,.woocommerce .products ul::after,.woocommerce div.product form.cart::after,.woocommerce div.product p.cart::after,.woocommerce nav.woocommerce-pagination ul,.woocommerce ul.products::after{clear:both}.woocommerce div.product p.price,.woocommerce div.product span.price{color:#77a464;font-size:1.25em}.woocommerce div.product p.price ins,.woocommerce div.product span.price ins{background:inherit;font-weight:700}.woocommerce div.product p.price del,.woocommerce div.product span.price del{opacity:.5}.woocommerce div.product p.stock{font-size:.92em}.woocommerce div.product .stock{color:#77a464}.woocommerce div.product .out-of-stock{color:red}.woocommerce div.product .woocommerce-product-rating{margin-bottom:1.618em}.woocommerce div.product div.images{margin-bottom:2em}.woocommerce div.product div.images img{display:block;width:100%;height:auto;box-shadow:none}.woocommerce div.product div.images div.thumbnails{padding-top:1em}.woocommerce div.product div.images.woocommerce-product-gallery{position:relative}.woocommerce div.product div.images .woocommerce-product-gallery__wrapper{transition:all cubic-bezier(.795,-.035,0,1) .5s}.woocommerce div.product div.images .woocommerce-product-gallery__image:nth-child(n+2){width:25%;display:inline-block}.woocommerce div.product div.images .woocommerce-product-gallery__trigger{position:absolute;top:.5em;left:.5em;font-size:2em;z-index:9;width:36px;height:36px;background:#fff;text-indent:-9999px;border-radius:100%;box-sizing:content-box}.woocommerce div.product div.images .woocommerce-product-gallery__trigger:before{content:"";display:block;width:10px;height:10px;border:2px solid #000;border-radius:100%;position:absolute;top:9px;right:9px;box-sizing:content-box}.woocommerce div.product div.images .woocommerce-product-gallery__trigger:after{content:"";display:block;width:2px;height:8px;background:#000;border-radius:6px;position:absolute;top:19px;right:22px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);box-sizing:content-box}.woocommerce div.product div.images .flex-control-thumbs{overflow:hidden;zoom:1;margin:0;padding:0}.woocommerce div.product div.images .flex-control-thumbs li{width:25%;float:right;margin:0;list-style:none}.woocommerce div.product div.images .flex-control-thumbs li img{cursor:pointer;opacity:.5;margin:0}.woocommerce div.product div.images .flex-control-thumbs li img.flex-active,.woocommerce div.product div.images .flex-control-thumbs li img:hover{opacity:1}.woocommerce div.product div.summary{margin-bottom:2em}.woocommerce div.product div.social{text-align:left;margin:0 0 1em}.woocommerce div.product div.social span{margin:0 2px 0 0}.woocommerce div.product div.social span span{margin:0}.woocommerce div.product div.social span .stButton .chicklets{padding-right:16px;width:0}.woocommerce div.product div.social iframe{float:right;margin-top:3px}.woocommerce div.product .woocommerce-tabs ul.tabs{list-style:none;padding:0 1em 0 0;margin:0 0 1.618em;overflow:hidden;position:relative}.woocommerce div.product .woocommerce-tabs ul.tabs li{border:1px solid #d3ced2;background-color:#ebe9eb;display:inline-block;position:relative;z-index:0;border-radius:4px 4px 0 0;margin:0 -5px;padding:0 1em}.woocommerce div.product .woocommerce-tabs ul.tabs li a{display:inline-block;padding:.5em 0;font-weight:700;color:#515151;text-decoration:none}.woocommerce div.product form.cart::after,.woocommerce div.product form.cart::before,.woocommerce div.product p.cart::after,.woocommerce div.product p.cart::before{display:table;content:' '}.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover{text-decoration:none;color:#6b6b6b}.woocommerce div.product .woocommerce-tabs ul.tabs li.active{background:#fff;z-index:2;border-bottom-color:#fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{color:inherit;text-shadow:inherit}.woocommerce div.product .woocommerce-tabs ul.tabs li.active::before{box-shadow:-2px 2px 0 #fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active::after{box-shadow:2px 2px 0 #fff}.woocommerce div.product .woocommerce-tabs ul.tabs li::after,.woocommerce div.product .woocommerce-tabs ul.tabs li::before{border:1px solid #d3ced2;position:absolute;bottom:-1px;width:5px;height:5px;content:' '}.woocommerce div.product .woocommerce-tabs ul.tabs li::before{right:-6px;-webkit-border-bottom-left-radius:4px;-moz-border-bottom-left-radius:4px;border-bottom-left-radius:4px;border-width:0 0 1px 1px;box-shadow:-2px 2px 0 #ebe9eb}.woocommerce div.product .woocommerce-tabs ul.tabs li::after{left:-6px;-webkit-border-bottom-right-radius:4px;-moz-border-bottom-right-radius:4px;border-bottom-right-radius:4px;border-width:0 1px 1px 0;box-shadow:2px 2px 0 #ebe9eb}.woocommerce div.product .woocommerce-tabs ul.tabs::before{position:absolute;content:' ';width:100%;bottom:0;right:0;border-bottom:1px solid #d3ced2;z-index:1}.woocommerce div.product .woocommerce-tabs .panel{margin:0 0 2em;padding:0}.woocommerce div.product form.cart,.woocommerce div.product p.cart{margin-bottom:2em}.woocommerce div.product form.cart div.quantity{float:right;margin:0 0 0 4px}.woocommerce div.product form.cart table{border-width:0 0 1px}.woocommerce div.product form.cart table td{padding-right:0}.woocommerce div.product form.cart table div.quantity{float:none;margin:0}.woocommerce div.product form.cart table small.stock{display:block;float:none}.woocommerce div.product form.cart .variations{margin-bottom:1em;border:0;width:100%}.woocommerce div.product form.cart .variations td,.woocommerce div.product form.cart .variations th{border:0;vertical-align:top;line-height:2em}.woocommerce div.product form.cart .variations label{font-weight:700}.woocommerce div.product form.cart .variations select{max-width:100%;min-width:75%;display:inline-block;margin-left:1em}.woocommerce div.product form.cart .variations td.label{padding-left:1em}.woocommerce div.product form.cart .woocommerce-variation-description p{margin-bottom:1em}.woocommerce div.product form.cart .reset_variations{visibility:hidden;font-size:.83em}.woocommerce div.product form.cart .wc-no-matching-variations{display:none}.woocommerce div.product form.cart .button{vertical-align:middle;float:right}.woocommerce div.product form.cart .group_table td.label{padding-left:1em;padding-right:1em}.woocommerce div.product form.cart .group_table td{vertical-align:top;padding-bottom:.5em;border:0}.woocommerce div.product form.cart .group_table td:first-child{width:4em;text-align:center}.woocommerce div.product form.cart .group_table .wc-grouped-product-add-to-cart-checkbox{display:inline-block;width:auto;margin:0 auto;transform:scale(1.5,1.5)}.woocommerce span.onsale{min-height:3.236em;min-width:3.236em;padding:.202em;font-weight:700;position:absolute;text-align:center;line-height:3.236;top:-.5em;right:-.5em;margin:0;border-radius:100%;background-color:#77a464;color:#fff;font-size:.857em;-webkit-font-smoothing:antialiased;z-index:9}.woocommerce .products ul,.woocommerce ul.products{margin:0 0 1em;padding:0;list-style:none;clear:both}.woocommerce .products ul::after,.woocommerce .products ul::before,.woocommerce ul.products::after,.woocommerce ul.products::before{content:' ';display:table}.woocommerce .products ul li,.woocommerce ul.products li{list-style:none}.woocommerce ul.products li.product .onsale{top:0;left:0;right:auto;margin:-.5em 0 0 -.5em}.woocommerce ul.products li.product .woocommerce-loop-category__title,.woocommerce ul.products li.product .woocommerce-loop-product__title,.woocommerce ul.products li.product h3{padding:.5em 0;margin:0;font-size:1em}.woocommerce ul.products li.product a{text-decoration:none}.woocommerce ul.products li.product a img{width:100%;height:auto;display:block;margin:0 0 1em;box-shadow:none}.woocommerce ul.products li.product strong{display:block}.woocommerce ul.products li.product .star-rating{font-size:.857em}.woocommerce ul.products li.product .button{margin-top:1em}.woocommerce ul.products li.product .price{color:#77a464;display:block;font-weight:400;margin-bottom:.5em;font-size:.857em}.woocommerce ul.products li.product .price del{color:inherit;opacity:.5;display:block}.woocommerce ul.products li.product .price ins{background:0 0;font-weight:700}.woocommerce ul.products li.product .price .from{font-size:.67em;margin:-2px 0 0;text-transform:uppercase;color:rgba(132,132,132,.5)}.woocommerce .woocommerce-ordering,.woocommerce .woocommerce-result-count{margin:0 0 1em}.woocommerce .woocommerce-ordering select{vertical-align:top}.woocommerce nav.woocommerce-pagination{text-align:center}.woocommerce nav.woocommerce-pagination ul{display:inline-block;white-space:nowrap;padding:0;border:1px solid #d3ced2;border-left:0;margin:1px}.woocommerce nav.woocommerce-pagination ul li{border-left:1px solid #d3ced2;padding:0;margin:0;float:right;display:inline;overflow:hidden}.woocommerce nav.woocommerce-pagination ul li a,.woocommerce nav.woocommerce-pagination ul li span{margin:0;text-decoration:none;line-height:1;font-size:1em;font-weight:400;padding:.5em;min-width:1em;display:block}.woocommerce nav.woocommerce-pagination ul li a:focus,.woocommerce nav.woocommerce-pagination ul li a:hover,.woocommerce nav.woocommerce-pagination ul li span.current{background:#ebe9eb;color:#8a7e88}.woocommerce #respond input#submit,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button{font-size:100%;margin:0;line-height:1;cursor:pointer;position:relative;text-decoration:none;overflow:visible;padding:.618em 1em;font-weight:700;border-radius:3px;right:auto;color:#515151;background-color:#ebe9eb;border:0;white-space:nowrap;display:inline-block;background-image:none;box-shadow:none;-webkit-box-shadow:none;text-shadow:none}.woocommerce #respond input#submit.loading,.woocommerce a.button.loading,.woocommerce button.button.loading,.woocommerce input.button.loading{opacity:.25;padding-left:2.618em}.woocommerce #respond input#submit.loading::after,.woocommerce a.button.loading::after,.woocommerce button.button.loading::after,.woocommerce input.button.loading::after{font-family:WooCommerce;content:'\e01c';vertical-align:top;-webkit-font-smoothing:antialiased;font-weight:400;position:absolute;top:.618em;left:1em;-webkit-animation:spin 2s linear infinite;-moz-animation:spin 2s linear infinite;animation:spin 2s linear infinite}.woocommerce #respond input#submit.added::after,.woocommerce a.button.added::after,.woocommerce button.button.added::after,.woocommerce input.button.added::after{font-family:WooCommerce;content:'\e017';margin-right:.53em;vertical-align:bottom}.woocommerce #respond input#submit:hover,.woocommerce a.button:hover,.woocommerce button.button:hover,.woocommerce input.button:hover{background-color:#dad8da;text-decoration:none;background-image:none;color:#515151}.woocommerce #respond input#submit.alt,.woocommerce a.button.alt,.woocommerce button.button.alt,.woocommerce input.button.alt{background-color:#a46497;color:#fff;-webkit-font-smoothing:antialiased}.woocommerce #respond input#submit.alt:hover,.woocommerce a.button.alt:hover,.woocommerce button.button.alt:hover,.woocommerce input.button.alt:hover{background-color:#935386;color:#fff}.woocommerce #respond input#submit.alt.disabled,.woocommerce #respond input#submit.alt.disabled:hover,.woocommerce #respond input#submit.alt:disabled,.woocommerce #respond input#submit.alt:disabled:hover,.woocommerce #respond input#submit.alt:disabled[disabled],.woocommerce #respond input#submit.alt:disabled[disabled]:hover,.woocommerce a.button.alt.disabled,.woocommerce a.button.alt.disabled:hover,.woocommerce a.button.alt:disabled,.woocommerce a.button.alt:disabled:hover,.woocommerce a.button.alt:disabled[disabled],.woocommerce a.button.alt:disabled[disabled]:hover,.woocommerce button.button.alt.disabled,.woocommerce button.button.alt.disabled:hover,.woocommerce button.button.alt:disabled,.woocommerce button.button.alt:disabled:hover,.woocommerce button.button.alt:disabled[disabled],.woocommerce button.button.alt:disabled[disabled]:hover,.woocommerce input.button.alt.disabled,.woocommerce input.button.alt.disabled:hover,.woocommerce input.button.alt:disabled,.woocommerce input.button.alt:disabled:hover,.woocommerce input.button.alt:disabled[disabled],.woocommerce input.button.alt:disabled[disabled]:hover{background-color:#a46497;color:#fff}.woocommerce #respond input#submit.disabled,.woocommerce #respond input#submit:disabled,.woocommerce #respond input#submit:disabled[disabled],.woocommerce a.button.disabled,.woocommerce a.button:disabled,.woocommerce a.button:disabled[disabled],.woocommerce button.button.disabled,.woocommerce button.button:disabled,.woocommerce button.button:disabled[disabled],.woocommerce input.button.disabled,.woocommerce input.button:disabled,.woocommerce input.button:disabled[disabled]{color:inherit;cursor:not-allowed;opacity:.5;padding:.618em 1em}.woocommerce #respond input#submit.disabled:hover,.woocommerce #respond input#submit:disabled:hover,.woocommerce #respond input#submit:disabled[disabled]:hover,.woocommerce a.button.disabled:hover,.woocommerce a.button:disabled:hover,.woocommerce a.button:disabled[disabled]:hover,.woocommerce button.button.disabled:hover,.woocommerce button.button:disabled:hover,.woocommerce button.button:disabled[disabled]:hover,.woocommerce input.button.disabled:hover,.woocommerce input.button:disabled:hover,.woocommerce input.button:disabled[disabled]:hover{color:inherit;background-color:#ebe9eb}.woocommerce .cart .button,.woocommerce .cart input.button{float:none}.woocommerce a.added_to_cart{padding-top:.5em;white-space:nowrap;display:inline-block}.woocommerce #reviews #comments .add_review::after,.woocommerce #reviews #comments .add_review::before,.woocommerce #reviews #comments ol.commentlist li .comment-text::after,.woocommerce #reviews #comments ol.commentlist li .comment-text::before,.woocommerce #reviews #comments ol.commentlist::after,.woocommerce #reviews #comments ol.commentlist::before{content:' ';display:table}.woocommerce #reviews h2 small{float:left;color:#777;font-size:15px;margin:10px 0 0}.woocommerce #reviews h2 small a{text-decoration:none;color:#777}.woocommerce #reviews h3{margin:0}.woocommerce #reviews #respond{margin:0;border:0;padding:0}.woocommerce #reviews #comment{height:75px}.woocommerce #reviews #comments h2{clear:none}.woocommerce #review_form #respond::after,.woocommerce #reviews #comments ol.commentlist li .comment-text::after,.woocommerce #reviews #comments ol.commentlist::after,.woocommerce .woocommerce-product-rating::after,.woocommerce ul.cart_list li dl::after,.woocommerce ul.cart_list li::after,.woocommerce ul.product_list_widget li dl::after,.woocommerce ul.product_list_widget li::after{clear:both}.woocommerce #reviews #comments ol.commentlist{margin:0;width:100%;background:0 0;list-style:none}.woocommerce #reviews #comments ol.commentlist li{padding:0;margin:0 0 20px;position:relative;background:100%;border:0}.woocommerce #reviews #comments ol.commentlist li .meta{color:#777;font-size:.75em}.woocommerce #reviews #comments ol.commentlist li img.avatar{float:right;position:absolute;top:0;right:0;padding:3px;width:32px;height:auto;background:#ebe9eb;border:1px solid #e4e1e3;margin:0;box-shadow:none}.woocommerce #reviews #comments ol.commentlist li .comment-text{margin:0 50px 0 0;border:1px solid #e4e1e3;border-radius:4px;padding:1em 1em 0}.woocommerce #reviews #comments ol.commentlist li .comment-text p{margin:0 0 1em}.woocommerce #reviews #comments ol.commentlist li .comment-text p.meta{font-size:.83em}.woocommerce #reviews #comments ol.commentlist ul.children{list-style:none;margin:20px 50px 0 0}.woocommerce #reviews #comments ol.commentlist ul.children .star-rating{display:none}.woocommerce #reviews #comments ol.commentlist #respond{border:1px solid #e4e1e3;border-radius:4px;padding:1em 1em 0;margin:20px 50px 0 0}.woocommerce #reviews #comments .commentlist>li::before{content:''}.woocommerce .star-rating{float:left;overflow:hidden;position:relative;height:1em;line-height:1;font-size:1em;width:5.4em;font-family:star}.woocommerce .star-rating::before{content:'\73\73\73\73\73';color:#d3ced2;float:right;top:0;right:0;position:absolute}.woocommerce .star-rating span{overflow:hidden;float:right;top:0;right:0;position:absolute;padding-top:1.5em}.woocommerce .star-rating span::before{content:'\53\53\53\53\53';top:0;position:absolute;right:0}.woocommerce .woocommerce-product-rating{line-height:2;display:block}.woocommerce .woocommerce-product-rating::after,.woocommerce .woocommerce-product-rating::before{content:' ';display:table}.woocommerce .woocommerce-product-rating .star-rating{margin:.5em 0 0 4px;float:right}.woocommerce .products .star-rating{display:block;margin:0 0 .5em;float:none}.woocommerce .hreview-aggregate .star-rating{margin:10px 0 0}.woocommerce #review_form #respond{position:static;margin:0;width:auto;padding:0;background:0 0;border:0}.woocommerce #review_form #respond::after,.woocommerce #review_form #respond::before{content:' ';display:table}.woocommerce p.stars a::before,.woocommerce p.stars a:hover~a::before{content:'\e021'}.woocommerce #review_form #respond p{margin:0 0 10px}.woocommerce #review_form #respond .form-submit input{right:auto}.woocommerce #review_form #respond textarea{box-sizing:border-box;width:100%}.woocommerce p.stars a{position:relative;height:1em;width:1em;text-indent:-999em;display:inline-block;text-decoration:none}.woocommerce p.stars a::before{display:block;position:absolute;top:0;right:0;width:1em;height:1em;line-height:1;font-family:WooCommerce;text-indent:0}.woocommerce table.shop_attributes td,.woocommerce table.shop_attributes th{line-height:1.5;border-bottom:1px dotted rgba(0,0,0,.1);border-top:0;margin:0}.woocommerce p.stars.selected a.active::before,.woocommerce p.stars:hover a::before{content:'\e020'}.woocommerce p.stars.selected a.active~a::before{content:'\e021'}.woocommerce p.stars.selected a:not(.active)::before{content:'\e020'}.woocommerce table.shop_attributes{border:0;border-top:1px dotted rgba(0,0,0,.1);margin-bottom:1.618em;width:100%}.woocommerce table.shop_attributes th{width:150px;font-weight:700;padding:8px}.woocommerce table.shop_attributes td{font-style:italic;padding:0}.woocommerce table.shop_attributes td p{margin:0;padding:8px 0}.woocommerce table.shop_attributes tr:nth-child(even) td,.woocommerce table.shop_attributes tr:nth-child(even) th{background:rgba(0,0,0,.025)}.woocommerce table.shop_table{border:1px solid rgba(0,0,0,.1);margin:0 0 24px -1px;text-align:right;width:100%;border-collapse:separate;border-radius:5px}.woocommerce table.shop_table th{font-weight:700;padding:9px 12px}.woocommerce table.shop_table td{border-top:1px solid rgba(0,0,0,.1);padding:6px 12px;vertical-align:middle}.woocommerce table.shop_table td small{font-weight:400}.woocommerce table.shop_table tbody:first-child tr:first-child td,.woocommerce table.shop_table tbody:first-child tr:first-child th{border-top:0}.woocommerce table.shop_table tbody th,.woocommerce table.shop_table tfoot td,.woocommerce table.shop_table tfoot th{font-weight:700;border-top:1px solid rgba(0,0,0,.1)}.woocommerce table.my_account_orders{font-size:.85em}.woocommerce table.my_account_orders td,.woocommerce table.my_account_orders th{padding:4px 8px;vertical-align:middle}.woocommerce table.my_account_orders .button{white-space:nowrap}.woocommerce table.my_account_orders .order-actions{text-align:left}.woocommerce table.my_account_orders .order-actions .button{margin:.125em .25em .125em 0}.woocommerce table.woocommerce-MyAccount-downloads td,.woocommerce table.woocommerce-MyAccount-downloads th{vertical-align:top;text-align:center}.woocommerce table.woocommerce-MyAccount-downloads td:first-child,.woocommerce table.woocommerce-MyAccount-downloads td:last-child,.woocommerce table.woocommerce-MyAccount-downloads th:first-child,.woocommerce table.woocommerce-MyAccount-downloads th:last-child{text-align:right}.woocommerce table.woocommerce-MyAccount-downloads td .woocommerce-MyAccount-downloads-file::before,.woocommerce table.woocommerce-MyAccount-downloads th .woocommerce-MyAccount-downloads-file::before{content:'\2193';display:inline-block}.woocommerce td.product-name .wc-item-meta,.woocommerce td.product-name dl.variation{list-style:none}.woocommerce td.product-name .wc-item-meta .wc-item-meta-label,.woocommerce td.product-name .wc-item-meta dt,.woocommerce td.product-name dl.variation .wc-item-meta-label,.woocommerce td.product-name dl.variation dt{float:right;clear:both;margin-left:.25em;display:inline-block;list-style:none}.woocommerce td.product-name .wc-item-meta dd,.woocommerce td.product-name dl.variation dd{margin:0}.woocommerce td.product-name .wc-item-meta p,.woocommerce td.product-name .wc-item-meta:last-child,.woocommerce td.product-name dl.variation p,.woocommerce td.product-name dl.variation:last-child{margin-bottom:0}.woocommerce td.product-name p.backorder_notification{font-size:.83em}.woocommerce td.product-quantity{min-width:80px}.woocommerce ul.cart_list,.woocommerce ul.product_list_widget{list-style:none;padding:0;margin:0}.woocommerce ul.cart_list li,.woocommerce ul.product_list_widget li{padding:4px 0;margin:0;list-style:none}.woocommerce ul.cart_list li::after,.woocommerce ul.cart_list li::before,.woocommerce ul.product_list_widget li::after,.woocommerce ul.product_list_widget li::before{content:' ';display:table}.woocommerce ul.cart_list li a,.woocommerce ul.product_list_widget li a{display:block;font-weight:700}.woocommerce ul.cart_list li img,.woocommerce ul.product_list_widget li img{float:left;margin-right:4px;width:32px;height:auto;box-shadow:none}.woocommerce ul.cart_list li dl,.woocommerce ul.product_list_widget li dl{margin:0;padding-right:1em;border-right:2px solid rgba(0,0,0,.1)}.woocommerce ul.cart_list li dl::after,.woocommerce ul.cart_list li dl::before,.woocommerce ul.product_list_widget li dl::after,.woocommerce ul.product_list_widget li dl::before{content:' ';display:table}.woocommerce ul.cart_list li dl dd,.woocommerce ul.cart_list li dl dt,.woocommerce ul.product_list_widget li dl dd,.woocommerce ul.product_list_widget li dl dt{display:inline-block;float:right;margin-bottom:1em}.woocommerce ul.cart_list li dl dt,.woocommerce ul.product_list_widget li dl dt{font-weight:700;padding:0 0 .25em;margin:0 0 0 4px;clear:right}#add_payment_method .wc-proceed-to-checkout::after,.woocommerce .widget_layered_nav ul li::after,.woocommerce .widget_rating_filter ul li::after,.woocommerce .widget_shopping_cart .buttons::after,.woocommerce ul.order_details::after,.woocommerce-account .addresses .title::after,.woocommerce-account .woocommerce::after,.woocommerce-cart .wc-proceed-to-checkout::after,.woocommerce-checkout .wc-proceed-to-checkout::after,.woocommerce-error::after,.woocommerce-info::after,.woocommerce-message::after,.woocommerce.widget_shopping_cart .buttons::after{clear:both}.woocommerce ul.cart_list li dl dd,.woocommerce ul.product_list_widget li dl dd{padding:0 0 .25em}.woocommerce ul.cart_list li dl dd p:last-child,.woocommerce ul.product_list_widget li dl dd p:last-child{margin-bottom:0}.woocommerce ul.cart_list li .star-rating,.woocommerce ul.product_list_widget li .star-rating{float:none}.woocommerce .widget_shopping_cart .total,.woocommerce.widget_shopping_cart .total{border-top:3px double #ebe9eb;padding:4px 0 0}.woocommerce .widget_shopping_cart .total strong,.woocommerce.widget_shopping_cart .total strong{min-width:40px;display:inline-block}.woocommerce .widget_shopping_cart .cart_list li,.woocommerce.widget_shopping_cart .cart_list li{padding-right:2em;position:relative;padding-top:0}.woocommerce .widget_shopping_cart .cart_list li a.remove,.woocommerce.widget_shopping_cart .cart_list li a.remove{position:absolute;top:0;right:0}.woocommerce .widget_shopping_cart .buttons::after,.woocommerce .widget_shopping_cart .buttons::before,.woocommerce.widget_shopping_cart .buttons::after,.woocommerce.widget_shopping_cart .buttons::before{content:' ';display:table}.woocommerce .widget_shopping_cart .buttons a,.woocommerce.widget_shopping_cart .buttons a{margin-left:5px;margin-bottom:5px}.woocommerce form .form-row{padding:3px;margin:0 0 6px}.woocommerce form .form-row [placeholder]:focus::-webkit-input-placeholder{-webkit-transition:opacity .5s .5s ease;-moz-transition:opacity .5s .5s ease;transition:opacity .5s .5s ease;opacity:0}.woocommerce form .form-row label{line-height:2}.woocommerce form .form-row label.hidden{visibility:hidden}.woocommerce form .form-row label.inline{display:inline}.woocommerce form .form-row select{cursor:pointer;margin:0}.woocommerce form .form-row .required{color:red;font-weight:700;border:0}.woocommerce form .form-row .input-checkbox{display:inline;margin:-2px 0 0 8px;text-align:center;vertical-align:middle}.woocommerce form .form-row input.input-text,.woocommerce form .form-row textarea{box-sizing:border-box;width:100%;margin:0;outline:0;line-height:1}.woocommerce form .form-row textarea{height:4em;line-height:1.5;display:block;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.woocommerce form .form-row .select2-container{width:100%;line-height:2em}.woocommerce form .form-row.woocommerce-invalid label{color:#a00}.woocommerce form .form-row.woocommerce-invalid .select2-container,.woocommerce form .form-row.woocommerce-invalid input.input-text,.woocommerce form .form-row.woocommerce-invalid select{border-color:#a00}.woocommerce form .form-row.woocommerce-validated .select2-container,.woocommerce form .form-row.woocommerce-validated input.input-text,.woocommerce form .form-row.woocommerce-validated select{border-color:#69bf29}.woocommerce form .form-row ::-webkit-input-placeholder{line-height:normal}.woocommerce form .form-row :-moz-placeholder{line-height:normal}.woocommerce form .form-row :-ms-input-placeholder{line-height:normal}.woocommerce form.checkout_coupon,.woocommerce form.login,.woocommerce form.register{border:1px solid #d3ced2;padding:20px;margin:2em 0;text-align:right;border-radius:5px}.woocommerce ul#shipping_method{list-style:none;margin:0;padding:0}.woocommerce ul#shipping_method li{margin:0;padding:.25em 22px .25em 0;text-indent:-22px;list-style:none}.woocommerce ul#shipping_method li input{margin:3px .5ex}.woocommerce ul#shipping_method li label{display:inline}.woocommerce ul#shipping_method .amount{font-weight:700}.woocommerce p.woocommerce-shipping-contents{margin:0}.woocommerce ul.order_details{margin:0 0 3em;list-style:none}.woocommerce ul.order_details::after,.woocommerce ul.order_details::before{content:' ';display:table}.woocommerce ul.order_details li{float:right;margin-left:2em;text-transform:uppercase;font-size:.715em;line-height:1;border-left:1px dashed #d3ced2;padding-left:2em;margin-right:0;padding-right:0;list-style-type:none}.woocommerce ul.order_details li strong{display:block;font-size:1.4em;text-transform:none;line-height:1.5}.woocommerce ul.order_details li:last-of-type{border:none}.woocommerce .wc-bacs-bank-details-account-name{font-weight:700}.woocommerce .widget_layered_nav ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_layered_nav ul li{padding:0 0 1px;list-style:none}.woocommerce .widget_layered_nav ul li::after,.woocommerce .widget_layered_nav ul li::before{content:' ';display:table}.woocommerce .widget_layered_nav ul li.chosen a::before,.woocommerce .widget_layered_nav_filters ul li a::before{line-height:1;content:"";font-weight:400;color:#a00;font-family:WooCommerce;speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-decoration:none}.woocommerce .widget_layered_nav ul li a,.woocommerce .widget_layered_nav ul li span{padding:1px 0}.woocommerce .widget_layered_nav ul li.chosen a::before{margin-left:.618em}.woocommerce .widget_layered_nav_filters ul{margin:0;padding:0;border:0;list-style:none;overflow:hidden;zoom:1}.woocommerce .widget_layered_nav_filters ul li{float:right;padding:0 0 1px 1px;list-style:none}.woocommerce .widget_layered_nav_filters ul li a{text-decoration:none}.woocommerce .widget_layered_nav_filters ul li a::before{margin-left:.618em}.woocommerce .widget_price_filter .price_slider{margin-bottom:1em}.woocommerce .widget_price_filter .price_slider_amount{text-align:left;line-height:2.4;font-size:.8751em}.woocommerce .widget_price_filter .price_slider_amount .button{font-size:1.15em;float:right}.woocommerce .widget_price_filter .ui-slider{position:relative;text-align:right;margin-right:.5em;margin-left:.5em}.woocommerce .widget_price_filter .ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1em;height:1em;background-color:#a46497;border-radius:1em;cursor:ew-resize;outline:0;top:-.3em;margin-right:-.5em}.woocommerce .widget_price_filter .ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;border-radius:1em;background-color:#a46497}.woocommerce .widget_price_filter .price_slider_wrapper .ui-widget-content{border-radius:1em;background-color:#602053;border:0}.woocommerce .widget_price_filter .ui-slider-horizontal{height:.5em}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range{top:0;height:100%}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-min{right:-1px}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-max{left:-1px}.woocommerce .widget_rating_filter ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_rating_filter ul li{padding:0 0 1px;list-style:none}.woocommerce .widget_rating_filter ul li::after,.woocommerce .widget_rating_filter ul li::before{content:' ';display:table}.woocommerce .widget_rating_filter ul li a{padding:1px 0;text-decoration:none}.woocommerce .widget_rating_filter ul li .star-rating{float:none;display:inline-block}.rtl.woocommerce div.product div.images .flex-control-thumbs li,.woocommerce-error .button,.woocommerce-info .button,.woocommerce-message .button{float:left}.woocommerce .widget_rating_filter ul li.chosen a::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-left:.618em;content:"";text-decoration:none;color:#a00}.pswp{z-index:999999}.woocommerce img.pswp__img,.woocommerce-page img.pswp__img{max-width:none}button.pswp__button{box-shadow:none!important;background-image:url(photoswipe/default-skin/default-skin.png)!important}button.pswp__button,button.pswp__button--arrow--left::before,button.pswp__button--arrow--right::before,button.pswp__button:hover{background-color:transparent!important}button.pswp__button--arrow--left,button.pswp__button--arrow--left:hover,button.pswp__button--arrow--right,button.pswp__button--arrow--right:hover{background-image:none!important}button.pswp__button--close:hover{background-position:100% -44px}button.pswp__button--zoom:hover{background-position:-88px 0}.woocommerce-error,.woocommerce-info,.woocommerce-message{padding:1em 3.5em 1em 2em;margin:0 0 2em;position:relative;background-color:#f7f6f7;color:#515151;border-top:3px solid #a46497;list-style:none;width:auto;word-wrap:break-word}.woocommerce-error::after,.woocommerce-error::before,.woocommerce-info::after,.woocommerce-info::before,.woocommerce-message::after,.woocommerce-message::before{content:' ';display:table}.woocommerce-error::before,.woocommerce-info::before,.woocommerce-message::before{font-family:WooCommerce;content:'\e028';display:inline-block;position:absolute;top:1em;right:1.5em}.woocommerce-error li,.woocommerce-info li,.woocommerce-message li{list-style:none!important;padding-right:0!important;margin-right:0!important}.woocommerce-message{border-top-color:#8fae1b}.woocommerce-message::before{content:'\e015';color:#8fae1b}.woocommerce-info{border-top-color:#1e85be}.woocommerce-info::before{color:#1e85be}.woocommerce-error{border-top-color:#b81c23}.woocommerce-error::before{content:'\e016';color:#b81c23}.woocommerce-account .addresses .title::after,.woocommerce-account .addresses .title::before,.woocommerce-account .woocommerce::after,.woocommerce-account .woocommerce::before{content:' ';display:table}.woocommerce-account .addresses .title h3{float:right}.woocommerce-account .addresses .title .edit,.woocommerce-account ul.digital-downloads li .count{float:left}.woocommerce-account ol.commentlist.notes li.note p.meta{font-weight:700;margin-bottom:0}.woocommerce-account ol.commentlist.notes li.note .description p:last-child{margin-bottom:0}.woocommerce-account ul.digital-downloads{margin-right:0;padding-right:0}.woocommerce-account ul.digital-downloads li{list-style:none;margin-right:0;padding-right:0}.woocommerce-account ul.digital-downloads li::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-left:.618em;content:"";text-decoration:none}#add_payment_method table.cart .product-thumbnail,.woocommerce-cart table.cart .product-thumbnail,.woocommerce-checkout table.cart .product-thumbnail{min-width:32px}#add_payment_method table.cart img,.woocommerce-cart table.cart img,.woocommerce-checkout table.cart img{width:32px;box-shadow:none}#add_payment_method table.cart td,#add_payment_method table.cart th,.woocommerce-cart table.cart td,.woocommerce-cart table.cart th,.woocommerce-checkout table.cart td,.woocommerce-checkout table.cart th{vertical-align:middle}#add_payment_method table.cart td.actions .coupon .input-text,.woocommerce-cart table.cart td.actions .coupon .input-text,.woocommerce-checkout table.cart td.actions .coupon .input-text{float:right;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #d3ced2;padding:6px 6px 5px;margin:0 0 0 4px;outline:0;line-height:1}#add_payment_method table.cart input,.woocommerce-cart table.cart input,.woocommerce-checkout table.cart input{margin:0;vertical-align:middle;line-height:1}#add_payment_method .wc-proceed-to-checkout,.woocommerce-cart .wc-proceed-to-checkout,.woocommerce-checkout .wc-proceed-to-checkout{padding:1em 0}#add_payment_method .wc-proceed-to-checkout::after,#add_payment_method .wc-proceed-to-checkout::before,.woocommerce-cart .wc-proceed-to-checkout::after,.woocommerce-cart .wc-proceed-to-checkout::before,.woocommerce-checkout .wc-proceed-to-checkout::after,.woocommerce-checkout .wc-proceed-to-checkout::before{content:' ';display:table}#add_payment_method .wc-proceed-to-checkout a.checkout-button,.woocommerce-cart .wc-proceed-to-checkout a.checkout-button,.woocommerce-checkout .wc-proceed-to-checkout a.checkout-button{display:block;text-align:center;margin-bottom:1em;font-size:1.25em;padding:1em}#add_payment_method .cart-collaterals .shipping_calculator .button,.woocommerce-cart .cart-collaterals .shipping_calculator .button,.woocommerce-checkout .cart-collaterals .shipping_calculator .button{width:100%;float:none;display:block}#add_payment_method .cart-collaterals .shipping_calculator .shipping-calculator-button::after,.woocommerce-cart .cart-collaterals .shipping_calculator .shipping-calculator-button::after,.woocommerce-checkout .cart-collaterals .shipping_calculator .shipping-calculator-button::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none}#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::after,#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::before,#add_payment_method #payment ul.payment_methods::after,#add_payment_method #payment ul.payment_methods::before,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::before,.woocommerce-cart #payment ul.payment_methods::after,.woocommerce-cart #payment ul.payment_methods::before,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::before,.woocommerce-checkout #payment ul.payment_methods::after,.woocommerce-checkout #payment ul.payment_methods::before{content:' ';display:table}#add_payment_method .cart-collaterals .cart_totals p small,.woocommerce-cart .cart-collaterals .cart_totals p small,.woocommerce-checkout .cart-collaterals .cart_totals p small{color:#777;font-size:.83em}#add_payment_method .cart-collaterals .cart_totals table,.woocommerce-cart .cart-collaterals .cart_totals table,.woocommerce-checkout .cart-collaterals .cart_totals table{border-collapse:separate;margin:0 0 6px;padding:0}#add_payment_method .cart-collaterals .cart_totals table tr:first-child td,#add_payment_method .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-cart .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-cart .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-checkout .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-checkout .cart-collaterals .cart_totals table tr:first-child th{border-top:0}#add_payment_method .cart-collaterals .cart_totals table th,.woocommerce-cart .cart-collaterals .cart_totals table th,.woocommerce-checkout .cart-collaterals .cart_totals table th{width:40%}#add_payment_method .cart-collaterals .cart_totals table td,#add_payment_method .cart-collaterals .cart_totals table th,.woocommerce-cart .cart-collaterals .cart_totals table td,.woocommerce-cart .cart-collaterals .cart_totals table th,.woocommerce-checkout .cart-collaterals .cart_totals table td,.woocommerce-checkout .cart-collaterals .cart_totals table th{vertical-align:top;border-right:0;border-left:0;line-height:1.5em}#add_payment_method .cart-collaterals .cart_totals table small,.woocommerce-cart .cart-collaterals .cart_totals table small,.woocommerce-checkout .cart-collaterals .cart_totals table small{color:#777}#add_payment_method .cart-collaterals .cart_totals table select,.woocommerce-cart .cart-collaterals .cart_totals table select,.woocommerce-checkout .cart-collaterals .cart_totals table select{width:100%}#add_payment_method .cart-collaterals .cart_totals .discount td,.woocommerce-cart .cart-collaterals .cart_totals .discount td,.woocommerce-checkout .cart-collaterals .cart_totals .discount td{color:#77a464}#add_payment_method .cart-collaterals .cart_totals tr td,#add_payment_method .cart-collaterals .cart_totals tr th,.woocommerce-cart .cart-collaterals .cart_totals tr td,.woocommerce-cart .cart-collaterals .cart_totals tr th,.woocommerce-checkout .cart-collaterals .cart_totals tr td,.woocommerce-checkout .cart-collaterals .cart_totals tr th{border-top:1px solid #ebe9eb}#add_payment_method .cart-collaterals .cross-sells ul.products li.product,.woocommerce-cart .cart-collaterals .cross-sells ul.products li.product,.woocommerce-checkout .cart-collaterals .cross-sells ul.products li.product{margin-top:0}#add_payment_method .checkout .col-2 h3#ship-to-different-address,.woocommerce-cart .checkout .col-2 h3#ship-to-different-address,.woocommerce-checkout .checkout .col-2 h3#ship-to-different-address{float:right;clear:none}#add_payment_method .checkout .col-2 .form-row-first,#add_payment_method .checkout .col-2 .notes,.woocommerce-cart .checkout .col-2 .form-row-first,.woocommerce-cart .checkout .col-2 .notes,.woocommerce-checkout .checkout .col-2 .form-row-first,.woocommerce-checkout .checkout .col-2 .notes{clear:right}#add_payment_method .checkout .create-account small,.woocommerce-cart .checkout .create-account small,.woocommerce-checkout .checkout .create-account small{font-size:11px;color:#777;font-weight:400}#add_payment_method .checkout div.shipping-address,.woocommerce-cart .checkout div.shipping-address,.woocommerce-checkout .checkout div.shipping-address{padding:0;clear:right;width:100%}#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::after,#add_payment_method #payment ul.payment_methods::after,#add_payment_method .checkout .shipping_address,.single-product .twentythirteen p.stars,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-cart #payment ul.payment_methods::after,.woocommerce-cart .checkout .shipping_address,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-checkout #payment ul.payment_methods::after,.woocommerce-checkout .checkout .shipping_address{clear:both}#add_payment_method #payment,.woocommerce-cart #payment,.woocommerce-checkout #payment{background:#ebe9eb;border-radius:5px}#add_payment_method #payment ul.payment_methods,.woocommerce-cart #payment ul.payment_methods,.woocommerce-checkout #payment ul.payment_methods{text-align:right;padding:1em;border-bottom:1px solid #d3ced2;margin:0;list-style:none}#add_payment_method #payment ul.payment_methods li,.woocommerce-cart #payment ul.payment_methods li,.woocommerce-checkout #payment ul.payment_methods li{line-height:2;text-align:right;margin:0;font-weight:400}#add_payment_method #payment ul.payment_methods li input,.woocommerce-cart #payment ul.payment_methods li input,.woocommerce-checkout #payment ul.payment_methods li input{margin:0 0 0 1em}#add_payment_method #payment ul.payment_methods li img,.woocommerce-cart #payment ul.payment_methods li img,.woocommerce-checkout #payment ul.payment_methods li img{vertical-align:middle;margin:-2px .5em 0 0;padding:0;position:relative;box-shadow:none}#add_payment_method #payment ul.payment_methods li img+img,.woocommerce-cart #payment ul.payment_methods li img+img,.woocommerce-checkout #payment ul.payment_methods li img+img{margin-right:2px}#add_payment_method #payment div.form-row,.woocommerce-cart #payment div.form-row,.woocommerce-checkout #payment div.form-row{padding:1em}#add_payment_method #payment div.payment_box,.woocommerce-cart #payment div.payment_box,.woocommerce-checkout #payment div.payment_box{position:relative;box-sizing:border-box;width:100%;padding:1em;margin:1em 0;font-size:.92em;border-radius:2px;line-height:1.5;background-color:#dfdcde;color:#515151}#add_payment_method #payment div.payment_box input.input-text,#add_payment_method #payment div.payment_box textarea,.woocommerce-cart #payment div.payment_box input.input-text,.woocommerce-cart #payment div.payment_box textarea,.woocommerce-checkout #payment div.payment_box input.input-text,.woocommerce-checkout #payment div.payment_box textarea{border-color:#bbb3b9 #c7c1c6 #c7c1c6}#add_payment_method #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-cart #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-checkout #payment div.payment_box ::-webkit-input-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box :-moz-placeholder,.woocommerce-cart #payment div.payment_box :-moz-placeholder,.woocommerce-checkout #payment div.payment_box :-moz-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box :-ms-input-placeholder,.woocommerce-cart #payment div.payment_box :-ms-input-placeholder,.woocommerce-checkout #payment div.payment_box :-ms-input-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods{list-style:none;margin:0}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token{margin:0 0 .5em}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label{cursor:pointer}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput{vertical-align:middle;margin:-3px 0 0 1em;position:relative}#add_payment_method #payment div.payment_box .wc-credit-card-form,.woocommerce-cart #payment div.payment_box .wc-credit-card-form,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form{border:0;padding:0;margin:1em 0 0}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number{font-size:1.5em;padding:8px;background-repeat:no-repeat;background-position:left .618em center;background-size:32px 20px}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.visa,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.visa,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.visa{background-image:url(../images/icons/credit-cards/visa.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.mastercard{background-image:url(../images/icons/credit-cards/mastercard.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.laser,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.laser,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.laser{background-image:url(../images/icons/credit-cards/laser.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.dinersclub{background-image:url(../images/icons/credit-cards/diners.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.maestro{background-image:url(../images/icons/credit-cards/maestro.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.jcb{background-image:url(../images/icons/credit-cards/jcb.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.amex,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.amex,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.amex{background-image:url(../images/icons/credit-cards/amex.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.discover,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.discover,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.discover{background-image:url(../images/icons/credit-cards/discover.svg)}#add_payment_method #payment div.payment_box span.help,.woocommerce-cart #payment div.payment_box span.help,.woocommerce-checkout #payment div.payment_box span.help{font-size:.857em;color:#777;font-weight:400}#add_payment_method #payment div.payment_box .form-row,.woocommerce-cart #payment div.payment_box .form-row,.woocommerce-checkout #payment div.payment_box .form-row{margin:0 0 1em}#add_payment_method #payment div.payment_box p:last-child,.woocommerce-cart #payment div.payment_box p:last-child,.woocommerce-checkout #payment div.payment_box p:last-child{margin-bottom:0}#add_payment_method #payment div.payment_box::before,.woocommerce-cart #payment div.payment_box::before,.woocommerce-checkout #payment div.payment_box::before{content:'';display:block;border:1em solid #dfdcde;border-left-color:transparent;border-right-color:transparent;border-top-color:transparent;position:absolute;top:-.75em;right:0;margin:-1em 2em 0 0}#add_payment_method #payment .payment_method_paypal .about_paypal,.woocommerce-cart #payment .payment_method_paypal .about_paypal,.woocommerce-checkout #payment .payment_method_paypal .about_paypal{float:left;line-height:52px;font-size:.83em}#add_payment_method #payment .payment_method_paypal img,.woocommerce-cart #payment .payment_method_paypal img,.woocommerce-checkout #payment .payment_method_paypal img{max-height:52px;vertical-align:middle}.woocommerce-password-strength{text-align:center;font-weight:600;padding:3px .5em;font-size:1em}.woocommerce-password-strength.strong{background-color:#c1e1b9;border-color:#83c373}.woocommerce-password-strength.short{background-color:#f1adad;border-color:#e35b5b}.woocommerce-password-strength.bad{background-color:#fbc5a9;border-color:#f78b53}.woocommerce-password-strength.good{background-color:#ffe399;border-color:#ffc733}.woocommerce-password-hint{margin:.5em 0 0;display:block}#content.twentyeleven .woocommerce-pagination a{font-size:1em;line-height:1}.single-product .twentythirteen #reply-title,.single-product .twentythirteen #respond #commentform,.single-product .twentythirteen .entry-summary{padding:0}.twentythirteen .woocommerce-breadcrumb{padding-top:40px}.twentyfourteen ul.products li.product{margin-top:0!important}body:not(.search-results) .twentysixteen .entry-summary{color:inherit;font-size:inherit;line-height:inherit}.twentysixteen .price ins{background:inherit;color:inherit} \ No newline at end of file diff --git a/assets/css/woocommerce.css b/assets/css/woocommerce.css index 90c079bba22..3fafb8b5ae9 100644 --- a/assets/css/woocommerce.css +++ b/assets/css/woocommerce.css @@ -1 +1 @@ -@charset "UTF-8";@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg)}}@-moz-keyframes spin{100%{-moz-transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}.woocommerce-store-notice,p.demo_store{position:absolute;top:0;left:0;right:0;margin:0;width:100%;font-size:1em;padding:1em 0;text-align:center;background-color:#a46497;color:#fff;z-index:99998;box-shadow:0 1px 1em rgba(0,0,0,.2);display:none}.woocommerce-store-notice a,p.demo_store a{color:#fff;text-decoration:underline}.admin-bar p.demo_store{top:32px}.clear{clear:both}.woocommerce .blockUI.blockOverlay{position:relative}.woocommerce .blockUI.blockOverlay::before,.woocommerce .loader::before{height:1em;width:1em;display:block;position:absolute;top:50%;left:50%;margin-left:-.5em;margin-top:-.5em;content:'';-webkit-animation:spin 1s ease-in-out infinite;-moz-animation:spin 1s ease-in-out infinite;animation:spin 1s ease-in-out infinite;background:url(../images/icons/loader.svg) center center;background-size:cover;line-height:1;text-align:center;font-size:2em;color:rgba(0,0,0,.75)}.woocommerce a.remove{display:block;font-size:1.5em;height:1em;width:1em;text-align:center;line-height:1;border-radius:100%;color:red!important;text-decoration:none;font-weight:700;border:0}.woocommerce a.remove:hover{color:#fff!important;background:red}.woocommerce small.note{display:block;color:#777;font-size:.857em;margin-top:10px}.woocommerce .woocommerce-breadcrumb{margin:0 0 1em;padding:0;font-size:.92em;color:#777}.woocommerce .woocommerce-breadcrumb::after,.woocommerce .woocommerce-breadcrumb::before{content:' ';display:table}.woocommerce .woocommerce-breadcrumb::after{clear:both}.woocommerce .woocommerce-breadcrumb a{color:#777}.woocommerce .quantity .qty{width:3.631em;text-align:center}.woocommerce div.product{margin-bottom:0;position:relative}.woocommerce div.product .product_title{clear:none;margin-top:0;padding:0}.woocommerce #reviews #comments .add_review::after,.woocommerce .products ul::after,.woocommerce div.product form.cart::after,.woocommerce div.product p.cart::after,.woocommerce nav.woocommerce-pagination ul,.woocommerce ul.products::after{clear:both}.woocommerce div.product p.price,.woocommerce div.product span.price{color:#77a464;font-size:1.25em}.woocommerce div.product p.price ins,.woocommerce div.product span.price ins{background:inherit;font-weight:700}.woocommerce div.product p.price del,.woocommerce div.product span.price del{opacity:.5}.woocommerce div.product p.stock{font-size:.92em}.woocommerce div.product .stock{color:#77a464}.woocommerce div.product .out-of-stock{color:red}.woocommerce div.product .woocommerce-product-rating{margin-bottom:1.618em}.woocommerce div.product div.images{margin-bottom:2em}.woocommerce div.product div.images img{display:block;width:100%;height:auto;box-shadow:none}.woocommerce div.product div.images div.thumbnails{padding-top:1em}.woocommerce div.product div.images.woocommerce-product-gallery{position:relative}.woocommerce div.product div.images .woocommerce-product-gallery__wrapper{transition:all cubic-bezier(.795,-.035,0,1) .5s}.woocommerce div.product div.images .woocommerce-product-gallery__image:nth-child(n+2){width:25%;display:inline-block}.woocommerce div.product div.images .woocommerce-product-gallery__trigger{position:absolute;top:.5em;right:.5em;font-size:2em;z-index:9;width:36px;height:36px;background:#fff;text-indent:-9999px;border-radius:100%;box-sizing:content-box}.woocommerce div.product div.images .woocommerce-product-gallery__trigger:before{content:"";display:block;width:10px;height:10px;border:2px solid #000;border-radius:100%;position:absolute;top:9px;left:9px;box-sizing:content-box}.woocommerce div.product div.images .woocommerce-product-gallery__trigger:after{content:"";display:block;width:2px;height:8px;background:#000;border-radius:6px;position:absolute;top:19px;left:22px;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg);box-sizing:content-box}.woocommerce div.product div.images .flex-control-thumbs{overflow:hidden;zoom:1;margin:0;padding:0}.woocommerce div.product div.images .flex-control-thumbs li{width:25%;float:left;margin:0;list-style:none}.woocommerce div.product div.images .flex-control-thumbs li img{cursor:pointer;opacity:.5;margin:0}.woocommerce div.product div.images .flex-control-thumbs li img.flex-active,.woocommerce div.product div.images .flex-control-thumbs li img:hover{opacity:1}.woocommerce div.product div.summary{margin-bottom:2em}.woocommerce div.product div.social{text-align:right;margin:0 0 1em}.woocommerce div.product div.social span{margin:0 0 0 2px}.woocommerce div.product div.social span span{margin:0}.woocommerce div.product div.social span .stButton .chicklets{padding-left:16px;width:0}.woocommerce div.product div.social iframe{float:left;margin-top:3px}.woocommerce div.product .woocommerce-tabs ul.tabs{list-style:none;padding:0 0 0 1em;margin:0 0 1.618em;overflow:hidden;position:relative}.woocommerce div.product .woocommerce-tabs ul.tabs li{border:1px solid #d3ced2;background-color:#ebe9eb;display:inline-block;position:relative;z-index:0;border-radius:4px 4px 0 0;margin:0 -5px;padding:0 1em}.woocommerce div.product .woocommerce-tabs ul.tabs li a{display:inline-block;padding:.5em 0;font-weight:700;color:#515151;text-decoration:none}.woocommerce div.product form.cart::after,.woocommerce div.product form.cart::before,.woocommerce div.product p.cart::after,.woocommerce div.product p.cart::before{display:table;content:' '}.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover{text-decoration:none;color:#6b6b6b}.woocommerce div.product .woocommerce-tabs ul.tabs li.active{background:#fff;z-index:2;border-bottom-color:#fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{color:inherit;text-shadow:inherit}.woocommerce div.product .woocommerce-tabs ul.tabs li.active::before{box-shadow:2px 2px 0 #fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active::after{box-shadow:-2px 2px 0 #fff}.woocommerce div.product .woocommerce-tabs ul.tabs li::after,.woocommerce div.product .woocommerce-tabs ul.tabs li::before{border:1px solid #d3ced2;position:absolute;bottom:-1px;width:5px;height:5px;content:' '}.woocommerce div.product .woocommerce-tabs ul.tabs li::before{left:-6px;-webkit-border-bottom-right-radius:4px;-moz-border-bottom-right-radius:4px;border-bottom-right-radius:4px;border-width:0 1px 1px 0;box-shadow:2px 2px 0 #ebe9eb}.woocommerce div.product .woocommerce-tabs ul.tabs li::after{right:-6px;-webkit-border-bottom-left-radius:4px;-moz-border-bottom-left-radius:4px;border-bottom-left-radius:4px;border-width:0 0 1px 1px;box-shadow:-2px 2px 0 #ebe9eb}.woocommerce div.product .woocommerce-tabs ul.tabs::before{position:absolute;content:' ';width:100%;bottom:0;left:0;border-bottom:1px solid #d3ced2;z-index:1}.woocommerce div.product .woocommerce-tabs .panel{margin:0 0 2em;padding:0}.woocommerce div.product form.cart,.woocommerce div.product p.cart{margin-bottom:2em}.woocommerce div.product form.cart div.quantity{float:left;margin:0 4px 0 0}.woocommerce div.product form.cart table{border-width:0 0 1px}.woocommerce div.product form.cart table td{padding-left:0}.woocommerce div.product form.cart table div.quantity{float:none;margin:0}.woocommerce div.product form.cart table small.stock{display:block;float:none}.woocommerce div.product form.cart .variations{margin-bottom:1em;border:0;width:100%}.woocommerce div.product form.cart .variations td,.woocommerce div.product form.cart .variations th{border:0;vertical-align:top;line-height:2em}.woocommerce div.product form.cart .variations label{font-weight:700}.woocommerce div.product form.cart .variations select{max-width:100%;min-width:75%;display:inline-block;margin-right:1em}.woocommerce div.product form.cart .variations td.label{padding-right:1em}.woocommerce div.product form.cart .woocommerce-variation-description p{margin-bottom:1em}.woocommerce div.product form.cart .reset_variations{visibility:hidden;font-size:.83em}.woocommerce div.product form.cart .wc-no-matching-variations{display:none}.woocommerce div.product form.cart .button{vertical-align:middle;float:left}.woocommerce div.product form.cart .group_table td.label{padding-right:1em;padding-left:1em}.woocommerce div.product form.cart .group_table td{vertical-align:top;padding-bottom:.5em;border:0}.woocommerce div.product form.cart .group_table td:first-child{width:4em;text-align:center}.woocommerce div.product form.cart .group_table .wc-grouped-product-add-to-cart-checkbox{display:inline-block;width:auto;margin:0 auto;transform:scale(1.5,1.5)}.woocommerce span.onsale{min-height:3.236em;min-width:3.236em;padding:.202em;font-weight:700;position:absolute;text-align:center;line-height:3.236;top:-.5em;left:-.5em;margin:0;border-radius:100%;background-color:#77a464;color:#fff;font-size:.857em;-webkit-font-smoothing:antialiased;z-index:9}.woocommerce .products ul,.woocommerce ul.products{margin:0 0 1em;padding:0;list-style:none;clear:both}.woocommerce .products ul::after,.woocommerce .products ul::before,.woocommerce ul.products::after,.woocommerce ul.products::before{content:' ';display:table}.woocommerce .products ul li,.woocommerce ul.products li{list-style:none}.woocommerce ul.products li.product .onsale{top:0;right:0;left:auto;margin:-.5em -.5em 0 0}.woocommerce ul.products li.product .woocommerce-loop-category__title,.woocommerce ul.products li.product .woocommerce-loop-product__title,.woocommerce ul.products li.product h3{padding:.5em 0;margin:0;font-size:1em}.woocommerce ul.products li.product a{text-decoration:none}.woocommerce ul.products li.product a img{width:100%;height:auto;display:block;margin:0 0 1em;box-shadow:none}.woocommerce ul.products li.product strong{display:block}.woocommerce ul.products li.product .star-rating{font-size:.857em}.woocommerce ul.products li.product .button{margin-top:1em}.woocommerce ul.products li.product .price{color:#77a464;display:block;font-weight:400;margin-bottom:.5em;font-size:.857em}.woocommerce ul.products li.product .price del{color:inherit;opacity:.5;display:block}.woocommerce ul.products li.product .price ins{background:0 0;font-weight:700}.woocommerce ul.products li.product .price .from{font-size:.67em;margin:-2px 0 0;text-transform:uppercase;color:rgba(132,132,132,.5)}.woocommerce .woocommerce-ordering,.woocommerce .woocommerce-result-count{margin:0 0 1em}.woocommerce .woocommerce-ordering select{vertical-align:top}.woocommerce nav.woocommerce-pagination{text-align:center}.woocommerce nav.woocommerce-pagination ul{display:inline-block;white-space:nowrap;padding:0;border:1px solid #d3ced2;border-right:0;margin:1px}.woocommerce nav.woocommerce-pagination ul li{border-right:1px solid #d3ced2;padding:0;margin:0;float:left;display:inline;overflow:hidden}.woocommerce nav.woocommerce-pagination ul li a,.woocommerce nav.woocommerce-pagination ul li span{margin:0;text-decoration:none;line-height:1;font-size:1em;font-weight:400;padding:.5em;min-width:1em;display:block}.woocommerce nav.woocommerce-pagination ul li a:focus,.woocommerce nav.woocommerce-pagination ul li a:hover,.woocommerce nav.woocommerce-pagination ul li span.current{background:#ebe9eb;color:#8a7e88}.woocommerce #respond input#submit,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button{font-size:100%;margin:0;line-height:1;cursor:pointer;position:relative;text-decoration:none;overflow:visible;padding:.618em 1em;font-weight:700;border-radius:3px;left:auto;color:#515151;background-color:#ebe9eb;border:0;white-space:nowrap;display:inline-block;background-image:none;box-shadow:none;-webkit-box-shadow:none;text-shadow:none}.woocommerce #respond input#submit.loading,.woocommerce a.button.loading,.woocommerce button.button.loading,.woocommerce input.button.loading{opacity:.25;padding-right:2.618em}.woocommerce #respond input#submit.loading::after,.woocommerce a.button.loading::after,.woocommerce button.button.loading::after,.woocommerce input.button.loading::after{font-family:WooCommerce;content:'\e01c';vertical-align:top;-webkit-font-smoothing:antialiased;font-weight:400;position:absolute;top:.618em;right:1em;-webkit-animation:spin 2s linear infinite;-moz-animation:spin 2s linear infinite;animation:spin 2s linear infinite}.woocommerce #respond input#submit.added::after,.woocommerce a.button.added::after,.woocommerce button.button.added::after,.woocommerce input.button.added::after{font-family:WooCommerce;content:'\e017';margin-left:.53em;vertical-align:bottom}.woocommerce #respond input#submit:hover,.woocommerce a.button:hover,.woocommerce button.button:hover,.woocommerce input.button:hover{background-color:#dad8da;text-decoration:none;background-image:none;color:#515151}.woocommerce #respond input#submit.alt,.woocommerce a.button.alt,.woocommerce button.button.alt,.woocommerce input.button.alt{background-color:#a46497;color:#fff;-webkit-font-smoothing:antialiased}.woocommerce #respond input#submit.alt:hover,.woocommerce a.button.alt:hover,.woocommerce button.button.alt:hover,.woocommerce input.button.alt:hover{background-color:#935386;color:#fff}.woocommerce #respond input#submit.alt.disabled,.woocommerce #respond input#submit.alt.disabled:hover,.woocommerce #respond input#submit.alt:disabled,.woocommerce #respond input#submit.alt:disabled:hover,.woocommerce #respond input#submit.alt:disabled[disabled],.woocommerce #respond input#submit.alt:disabled[disabled]:hover,.woocommerce a.button.alt.disabled,.woocommerce a.button.alt.disabled:hover,.woocommerce a.button.alt:disabled,.woocommerce a.button.alt:disabled:hover,.woocommerce a.button.alt:disabled[disabled],.woocommerce a.button.alt:disabled[disabled]:hover,.woocommerce button.button.alt.disabled,.woocommerce button.button.alt.disabled:hover,.woocommerce button.button.alt:disabled,.woocommerce button.button.alt:disabled:hover,.woocommerce button.button.alt:disabled[disabled],.woocommerce button.button.alt:disabled[disabled]:hover,.woocommerce input.button.alt.disabled,.woocommerce input.button.alt.disabled:hover,.woocommerce input.button.alt:disabled,.woocommerce input.button.alt:disabled:hover,.woocommerce input.button.alt:disabled[disabled],.woocommerce input.button.alt:disabled[disabled]:hover{background-color:#a46497;color:#fff}.woocommerce #respond input#submit.disabled,.woocommerce #respond input#submit:disabled,.woocommerce #respond input#submit:disabled[disabled],.woocommerce a.button.disabled,.woocommerce a.button:disabled,.woocommerce a.button:disabled[disabled],.woocommerce button.button.disabled,.woocommerce button.button:disabled,.woocommerce button.button:disabled[disabled],.woocommerce input.button.disabled,.woocommerce input.button:disabled,.woocommerce input.button:disabled[disabled]{color:inherit;cursor:not-allowed;opacity:.5;padding:.618em 1em}.woocommerce #respond input#submit.disabled:hover,.woocommerce #respond input#submit:disabled:hover,.woocommerce #respond input#submit:disabled[disabled]:hover,.woocommerce a.button.disabled:hover,.woocommerce a.button:disabled:hover,.woocommerce a.button:disabled[disabled]:hover,.woocommerce button.button.disabled:hover,.woocommerce button.button:disabled:hover,.woocommerce button.button:disabled[disabled]:hover,.woocommerce input.button.disabled:hover,.woocommerce input.button:disabled:hover,.woocommerce input.button:disabled[disabled]:hover{color:inherit;background-color:#ebe9eb}.woocommerce .cart .button,.woocommerce .cart input.button{float:none}.woocommerce a.added_to_cart{padding-top:.5em;white-space:nowrap;display:inline-block}.woocommerce #reviews #comments .add_review::after,.woocommerce #reviews #comments .add_review::before,.woocommerce #reviews #comments ol.commentlist li .comment-text::after,.woocommerce #reviews #comments ol.commentlist li .comment-text::before,.woocommerce #reviews #comments ol.commentlist::after,.woocommerce #reviews #comments ol.commentlist::before{content:' ';display:table}.woocommerce #reviews h2 small{float:right;color:#777;font-size:15px;margin:10px 0 0}.woocommerce #reviews h2 small a{text-decoration:none;color:#777}.woocommerce #reviews h3{margin:0}.woocommerce #reviews #respond{margin:0;border:0;padding:0}.woocommerce #reviews #comment{height:75px}.woocommerce #reviews #comments h2{clear:none}.woocommerce #review_form #respond::after,.woocommerce #reviews #comments ol.commentlist li .comment-text::after,.woocommerce #reviews #comments ol.commentlist::after,.woocommerce .woocommerce-product-rating::after,.woocommerce ul.cart_list li dl::after,.woocommerce ul.cart_list li::after,.woocommerce ul.product_list_widget li dl::after,.woocommerce ul.product_list_widget li::after{clear:both}.woocommerce #reviews #comments ol.commentlist{margin:0;width:100%;background:0 0;list-style:none}.woocommerce #reviews #comments ol.commentlist li{padding:0;margin:0 0 20px;position:relative;background:0;border:0}.woocommerce #reviews #comments ol.commentlist li .meta{color:#777;font-size:.75em}.woocommerce #reviews #comments ol.commentlist li img.avatar{float:left;position:absolute;top:0;left:0;padding:3px;width:32px;height:auto;background:#ebe9eb;border:1px solid #e4e1e3;margin:0;box-shadow:none}.woocommerce #reviews #comments ol.commentlist li .comment-text{margin:0 0 0 50px;border:1px solid #e4e1e3;border-radius:4px;padding:1em 1em 0}.woocommerce #reviews #comments ol.commentlist li .comment-text p{margin:0 0 1em}.woocommerce #reviews #comments ol.commentlist li .comment-text p.meta{font-size:.83em}.woocommerce #reviews #comments ol.commentlist ul.children{list-style:none;margin:20px 0 0 50px}.woocommerce #reviews #comments ol.commentlist ul.children .star-rating{display:none}.woocommerce #reviews #comments ol.commentlist #respond{border:1px solid #e4e1e3;border-radius:4px;padding:1em 1em 0;margin:20px 0 0 50px}.woocommerce #reviews #comments .commentlist>li::before{content:''}.woocommerce .star-rating{float:right;overflow:hidden;position:relative;height:1em;line-height:1;font-size:1em;width:5.4em;font-family:star}.woocommerce .star-rating::before{content:'\73\73\73\73\73';color:#d3ced2;float:left;top:0;left:0;position:absolute}.woocommerce .star-rating span{overflow:hidden;float:left;top:0;left:0;position:absolute;padding-top:1.5em}.woocommerce .star-rating span::before{content:'\53\53\53\53\53';top:0;position:absolute;left:0}.woocommerce .woocommerce-product-rating{line-height:2;display:block}.woocommerce .woocommerce-product-rating::after,.woocommerce .woocommerce-product-rating::before{content:' ';display:table}.woocommerce .woocommerce-product-rating .star-rating{margin:.5em 4px 0 0;float:left}.woocommerce .products .star-rating{display:block;margin:0 0 .5em;float:none}.woocommerce .hreview-aggregate .star-rating{margin:10px 0 0}.woocommerce #review_form #respond{position:static;margin:0;width:auto;padding:0;background:0 0;border:0}.woocommerce #review_form #respond::after,.woocommerce #review_form #respond::before{content:' ';display:table}.woocommerce p.stars a::before,.woocommerce p.stars a:hover~a::before{content:'\e021'}.woocommerce #review_form #respond p{margin:0 0 10px}.woocommerce #review_form #respond .form-submit input{left:auto}.woocommerce #review_form #respond textarea{box-sizing:border-box;width:100%}.woocommerce p.stars a{position:relative;height:1em;width:1em;text-indent:-999em;display:inline-block;text-decoration:none}.woocommerce p.stars a::before{display:block;position:absolute;top:0;left:0;width:1em;height:1em;line-height:1;font-family:WooCommerce;text-indent:0}.woocommerce table.shop_attributes td,.woocommerce table.shop_attributes th{line-height:1.5;border-bottom:1px dotted rgba(0,0,0,.1);border-top:0;margin:0}.woocommerce p.stars.selected a.active::before,.woocommerce p.stars:hover a::before{content:'\e020'}.woocommerce p.stars.selected a.active~a::before{content:'\e021'}.woocommerce p.stars.selected a:not(.active)::before{content:'\e020'}.woocommerce table.shop_attributes{border:0;border-top:1px dotted rgba(0,0,0,.1);margin-bottom:1.618em;width:100%}.woocommerce table.shop_attributes th{width:150px;font-weight:700;padding:8px}.woocommerce table.shop_attributes td{font-style:italic;padding:0}.woocommerce table.shop_attributes td p{margin:0;padding:8px 0}.woocommerce table.shop_attributes tr:nth-child(even) td,.woocommerce table.shop_attributes tr:nth-child(even) th{background:rgba(0,0,0,.025)}.woocommerce table.shop_table{border:1px solid rgba(0,0,0,.1);margin:0 -1px 24px 0;text-align:left;width:100%;border-collapse:separate;border-radius:5px}.woocommerce table.shop_table th{font-weight:700;padding:9px 12px}.woocommerce table.shop_table td{border-top:1px solid rgba(0,0,0,.1);padding:6px 12px;vertical-align:middle}.woocommerce table.shop_table td small{font-weight:400}.woocommerce table.shop_table tbody:first-child tr:first-child td,.woocommerce table.shop_table tbody:first-child tr:first-child th{border-top:0}.woocommerce table.shop_table tbody th,.woocommerce table.shop_table tfoot td,.woocommerce table.shop_table tfoot th{font-weight:700;border-top:1px solid rgba(0,0,0,.1)}.woocommerce table.my_account_orders{font-size:.85em}.woocommerce table.my_account_orders td,.woocommerce table.my_account_orders th{padding:4px 8px;vertical-align:middle}.woocommerce table.my_account_orders .button{white-space:nowrap}.woocommerce table.my_account_orders .order-actions{text-align:right}.woocommerce table.my_account_orders .order-actions .button{margin:.125em 0 .125em .25em}.woocommerce table.woocommerce-MyAccount-downloads td,.woocommerce table.woocommerce-MyAccount-downloads th{vertical-align:top;text-align:center}.woocommerce table.woocommerce-MyAccount-downloads td:first-child,.woocommerce table.woocommerce-MyAccount-downloads td:last-child,.woocommerce table.woocommerce-MyAccount-downloads th:first-child,.woocommerce table.woocommerce-MyAccount-downloads th:last-child{text-align:left}.woocommerce table.woocommerce-MyAccount-downloads td .woocommerce-MyAccount-downloads-file::before,.woocommerce table.woocommerce-MyAccount-downloads th .woocommerce-MyAccount-downloads-file::before{content:'\2193';display:inline-block}.woocommerce td.product-name .wc-item-meta,.woocommerce td.product-name dl.variation{list-style:none}.woocommerce td.product-name .wc-item-meta .wc-item-meta-label,.woocommerce td.product-name .wc-item-meta dt,.woocommerce td.product-name dl.variation .wc-item-meta-label,.woocommerce td.product-name dl.variation dt{float:left;clear:both;margin-right:.25em;display:inline-block;list-style:none}.woocommerce td.product-name .wc-item-meta dd,.woocommerce td.product-name dl.variation dd{margin:0}.woocommerce td.product-name .wc-item-meta p,.woocommerce td.product-name .wc-item-meta:last-child,.woocommerce td.product-name dl.variation p,.woocommerce td.product-name dl.variation:last-child{margin-bottom:0}.woocommerce td.product-name p.backorder_notification{font-size:.83em}.woocommerce td.product-quantity{min-width:80px}.woocommerce ul.cart_list,.woocommerce ul.product_list_widget{list-style:none;padding:0;margin:0}.woocommerce ul.cart_list li,.woocommerce ul.product_list_widget li{padding:4px 0;margin:0;list-style:none}.woocommerce ul.cart_list li::after,.woocommerce ul.cart_list li::before,.woocommerce ul.product_list_widget li::after,.woocommerce ul.product_list_widget li::before{content:' ';display:table}.woocommerce ul.cart_list li a,.woocommerce ul.product_list_widget li a{display:block;font-weight:700}.woocommerce ul.cart_list li img,.woocommerce ul.product_list_widget li img{float:right;margin-left:4px;width:32px;height:auto;box-shadow:none}.woocommerce ul.cart_list li dl,.woocommerce ul.product_list_widget li dl{margin:0;padding-left:1em;border-left:2px solid rgba(0,0,0,.1)}.woocommerce ul.cart_list li dl::after,.woocommerce ul.cart_list li dl::before,.woocommerce ul.product_list_widget li dl::after,.woocommerce ul.product_list_widget li dl::before{content:' ';display:table}.woocommerce ul.cart_list li dl dd,.woocommerce ul.cart_list li dl dt,.woocommerce ul.product_list_widget li dl dd,.woocommerce ul.product_list_widget li dl dt{display:inline-block;float:left;margin-bottom:1em}.woocommerce ul.cart_list li dl dt,.woocommerce ul.product_list_widget li dl dt{font-weight:700;padding:0 0 .25em;margin:0 4px 0 0;clear:left}#add_payment_method .wc-proceed-to-checkout::after,.woocommerce .widget_layered_nav ul li::after,.woocommerce .widget_rating_filter ul li::after,.woocommerce .widget_shopping_cart .buttons::after,.woocommerce ul.order_details::after,.woocommerce-account .addresses .title::after,.woocommerce-account .woocommerce::after,.woocommerce-cart .wc-proceed-to-checkout::after,.woocommerce-checkout .wc-proceed-to-checkout::after,.woocommerce-error::after,.woocommerce-info::after,.woocommerce-message::after,.woocommerce.widget_shopping_cart .buttons::after{clear:both}.woocommerce ul.cart_list li dl dd,.woocommerce ul.product_list_widget li dl dd{padding:0 0 .25em}.woocommerce ul.cart_list li dl dd p:last-child,.woocommerce ul.product_list_widget li dl dd p:last-child{margin-bottom:0}.woocommerce ul.cart_list li .star-rating,.woocommerce ul.product_list_widget li .star-rating{float:none}.woocommerce .widget_shopping_cart .total,.woocommerce.widget_shopping_cart .total{border-top:3px double #ebe9eb;padding:4px 0 0}.woocommerce .widget_shopping_cart .total strong,.woocommerce.widget_shopping_cart .total strong{min-width:40px;display:inline-block}.woocommerce .widget_shopping_cart .cart_list li,.woocommerce.widget_shopping_cart .cart_list li{padding-left:2em;position:relative;padding-top:0}.woocommerce .widget_shopping_cart .cart_list li a.remove,.woocommerce.widget_shopping_cart .cart_list li a.remove{position:absolute;top:0;left:0}.woocommerce .widget_shopping_cart .buttons::after,.woocommerce .widget_shopping_cart .buttons::before,.woocommerce.widget_shopping_cart .buttons::after,.woocommerce.widget_shopping_cart .buttons::before{content:' ';display:table}.woocommerce .widget_shopping_cart .buttons a,.woocommerce.widget_shopping_cart .buttons a{margin-right:5px;margin-bottom:5px}.woocommerce form .form-row{padding:3px;margin:0 0 6px}.woocommerce form .form-row [placeholder]:focus::-webkit-input-placeholder{-webkit-transition:opacity .5s .5s ease;-moz-transition:opacity .5s .5s ease;transition:opacity .5s .5s ease;opacity:0}.woocommerce form .form-row label{line-height:2}.woocommerce form .form-row label.hidden{visibility:hidden}.woocommerce form .form-row label.inline{display:inline}.woocommerce form .form-row select{cursor:pointer;margin:0}.woocommerce form .form-row .required{color:red;font-weight:700;border:0}.woocommerce form .form-row .input-checkbox{display:inline;margin:-2px 8px 0 0;text-align:center;vertical-align:middle}.woocommerce form .form-row input.input-text,.woocommerce form .form-row textarea{box-sizing:border-box;width:100%;margin:0;outline:0;line-height:1}.woocommerce form .form-row textarea{height:4em;line-height:1.5;display:block;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.woocommerce form .form-row .select2-container{width:100%;line-height:2em}.woocommerce form .form-row.woocommerce-invalid label{color:#a00}.woocommerce form .form-row.woocommerce-invalid .select2-container,.woocommerce form .form-row.woocommerce-invalid input.input-text,.woocommerce form .form-row.woocommerce-invalid select{border-color:#a00}.woocommerce form .form-row.woocommerce-validated .select2-container,.woocommerce form .form-row.woocommerce-validated input.input-text,.woocommerce form .form-row.woocommerce-validated select{border-color:#69bf29}.woocommerce form .form-row ::-webkit-input-placeholder{line-height:normal}.woocommerce form .form-row :-moz-placeholder{line-height:normal}.woocommerce form .form-row :-ms-input-placeholder{line-height:normal}.woocommerce form.checkout_coupon,.woocommerce form.login,.woocommerce form.register{border:1px solid #d3ced2;padding:20px;margin:2em 0;text-align:left;border-radius:5px}.woocommerce ul#shipping_method{list-style:none;margin:0;padding:0}.woocommerce ul#shipping_method li{margin:0;padding:.25em 0 .25em 22px;text-indent:-22px;list-style:none}.woocommerce ul#shipping_method li input{margin:3px .5ex}.woocommerce ul#shipping_method li label{display:inline}.woocommerce .widget_layered_nav ul li::after,.woocommerce .widget_layered_nav ul li::before,.woocommerce ul.order_details::after,.woocommerce ul.order_details::before{content:' ';display:table}.woocommerce ul#shipping_method .amount{font-weight:700}.woocommerce p.woocommerce-shipping-contents{margin:0}.woocommerce ul.order_details{margin:0 0 3em;list-style:none}.woocommerce ul.order_details li{float:left;margin-right:2em;text-transform:uppercase;font-size:.715em;line-height:1;border-right:1px dashed #d3ced2;padding-right:2em;margin-left:0;padding-left:0;list-style-type:none}.woocommerce ul.order_details li strong{display:block;font-size:1.4em;text-transform:none;line-height:1.5}.woocommerce ul.order_details li:last-of-type{border:none}.woocommerce .wc-bacs-bank-details-account-name{font-weight:700}.woocommerce .widget_layered_nav ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_layered_nav ul li{padding:0 0 1px;list-style:none}.woocommerce .widget_layered_nav ul li.chosen a::before,.woocommerce .widget_layered_nav_filters ul li a::before{line-height:1;content:"";font-weight:400;color:#a00;font-family:WooCommerce;speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-decoration:none}.woocommerce .widget_layered_nav ul li a,.woocommerce .widget_layered_nav ul li span{padding:1px 0}.woocommerce .widget_layered_nav ul li.chosen a::before{margin-right:.618em}.woocommerce .widget_layered_nav_filters ul{margin:0;padding:0;border:0;list-style:none;overflow:hidden;zoom:1}.woocommerce .widget_layered_nav_filters ul li{float:left;padding:0 1px 1px 0;list-style:none}.woocommerce .widget_layered_nav_filters ul li a{text-decoration:none}.woocommerce .widget_layered_nav_filters ul li a::before{margin-right:.618em}.woocommerce .widget_price_filter .price_slider{margin-bottom:1em}.woocommerce .widget_price_filter .price_slider_amount{text-align:right;line-height:2.4;font-size:.8751em}.woocommerce .widget_price_filter .price_slider_amount .button{font-size:1.15em;float:left}.woocommerce .widget_price_filter .ui-slider{position:relative;text-align:left;margin-left:.5em;margin-right:.5em}.woocommerce .widget_price_filter .ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1em;height:1em;background-color:#a46497;border-radius:1em;cursor:ew-resize;outline:0;top:-.3em;margin-left:-.5em}.woocommerce .widget_price_filter .ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;border-radius:1em;background-color:#a46497}.woocommerce .widget_price_filter .price_slider_wrapper .ui-widget-content{border-radius:1em;background-color:#602053;border:0}.woocommerce .widget_price_filter .ui-slider-horizontal{height:.5em}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range{top:0;height:100%}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-min{left:-1px}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-max{right:-1px}.woocommerce .widget_rating_filter ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_rating_filter ul li{padding:0 0 1px;list-style:none}.woocommerce .widget_rating_filter ul li::after,.woocommerce .widget_rating_filter ul li::before{content:' ';display:table}.woocommerce .widget_rating_filter ul li a{padding:1px 0;text-decoration:none}.woocommerce .widget_rating_filter ul li .star-rating{float:none;display:inline-block}.rtl.woocommerce div.product div.images .flex-control-thumbs li,.woocommerce-error .button,.woocommerce-info .button,.woocommerce-message .button{float:right}.woocommerce .widget_rating_filter ul li.chosen a::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none;color:#a00}.pswp{z-index:999999}.woocommerce img.pswp__img,.woocommerce-page img.pswp__img{max-width:none}button.pswp__button{box-shadow:none!important;background-image:url(photoswipe/default-skin/default-skin.png)!important}button.pswp__button,button.pswp__button--arrow--left::before,button.pswp__button--arrow--right::before,button.pswp__button:hover{background-color:transparent!important}button.pswp__button--arrow--left,button.pswp__button--arrow--left:hover,button.pswp__button--arrow--right,button.pswp__button--arrow--right:hover{background-image:none!important}button.pswp__button--close:hover{background-position:0 -44px}button.pswp__button--zoom:hover{background-position:-88px 0}.woocommerce-error,.woocommerce-info,.woocommerce-message{padding:1em 2em 1em 3.5em;margin:0 0 2em;position:relative;background-color:#f7f6f7;color:#515151;border-top:3px solid #a46497;list-style:none;width:auto;word-wrap:break-word}.woocommerce-error::after,.woocommerce-error::before,.woocommerce-info::after,.woocommerce-info::before,.woocommerce-message::after,.woocommerce-message::before{content:' ';display:table}.woocommerce-error::before,.woocommerce-info::before,.woocommerce-message::before{font-family:WooCommerce;content:'\e028';display:inline-block;position:absolute;top:1em;left:1.5em}.woocommerce-error li,.woocommerce-info li,.woocommerce-message li{list-style:none!important;padding-left:0!important;margin-left:0!important}.woocommerce-message{border-top-color:#8fae1b}.woocommerce-message::before{content:'\e015';color:#8fae1b}.woocommerce-info{border-top-color:#1e85be}.woocommerce-info::before{color:#1e85be}.woocommerce-error{border-top-color:#b81c23}.woocommerce-error::before{content:'\e016';color:#b81c23}.woocommerce-account .addresses .title::after,.woocommerce-account .addresses .title::before,.woocommerce-account .woocommerce::after,.woocommerce-account .woocommerce::before{content:' ';display:table}.woocommerce-account .addresses .title h3{float:left}.woocommerce-account .addresses .title .edit,.woocommerce-account ul.digital-downloads li .count{float:right}.woocommerce-account ol.commentlist.notes li.note p.meta{font-weight:700;margin-bottom:0}.woocommerce-account ol.commentlist.notes li.note .description p:last-child{margin-bottom:0}.woocommerce-account ul.digital-downloads{margin-left:0;padding-left:0}.woocommerce-account ul.digital-downloads li{list-style:none;margin-left:0;padding-left:0}.woocommerce-account ul.digital-downloads li::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none}#add_payment_method table.cart .product-thumbnail,.woocommerce-cart table.cart .product-thumbnail,.woocommerce-checkout table.cart .product-thumbnail{min-width:32px}#add_payment_method table.cart img,.woocommerce-cart table.cart img,.woocommerce-checkout table.cart img{width:32px;box-shadow:none}#add_payment_method table.cart td,#add_payment_method table.cart th,.woocommerce-cart table.cart td,.woocommerce-cart table.cart th,.woocommerce-checkout table.cart td,.woocommerce-checkout table.cart th{vertical-align:middle}#add_payment_method table.cart td.actions .coupon .input-text,.woocommerce-cart table.cart td.actions .coupon .input-text,.woocommerce-checkout table.cart td.actions .coupon .input-text{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #d3ced2;padding:6px 6px 5px;margin:0 4px 0 0;outline:0;line-height:1}#add_payment_method table.cart input,.woocommerce-cart table.cart input,.woocommerce-checkout table.cart input{margin:0;vertical-align:middle;line-height:1}#add_payment_method .wc-proceed-to-checkout,.woocommerce-cart .wc-proceed-to-checkout,.woocommerce-checkout .wc-proceed-to-checkout{padding:1em 0}#add_payment_method .wc-proceed-to-checkout::after,#add_payment_method .wc-proceed-to-checkout::before,.woocommerce-cart .wc-proceed-to-checkout::after,.woocommerce-cart .wc-proceed-to-checkout::before,.woocommerce-checkout .wc-proceed-to-checkout::after,.woocommerce-checkout .wc-proceed-to-checkout::before{content:' ';display:table}#add_payment_method .wc-proceed-to-checkout a.checkout-button,.woocommerce-cart .wc-proceed-to-checkout a.checkout-button,.woocommerce-checkout .wc-proceed-to-checkout a.checkout-button{display:block;text-align:center;margin-bottom:1em;font-size:1.25em;padding:1em}#add_payment_method .cart-collaterals .shipping_calculator .button,.woocommerce-cart .cart-collaterals .shipping_calculator .button,.woocommerce-checkout .cart-collaterals .shipping_calculator .button{width:100%;float:none;display:block}#add_payment_method .cart-collaterals .shipping_calculator .shipping-calculator-button::after,.woocommerce-cart .cart-collaterals .shipping_calculator .shipping-calculator-button::after,.woocommerce-checkout .cart-collaterals .shipping_calculator .shipping-calculator-button::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-left:.618em;content:"";text-decoration:none}#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::after,#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::before,#add_payment_method #payment ul.payment_methods::after,#add_payment_method #payment ul.payment_methods::before,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::before,.woocommerce-cart #payment ul.payment_methods::after,.woocommerce-cart #payment ul.payment_methods::before,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::before,.woocommerce-checkout #payment ul.payment_methods::after,.woocommerce-checkout #payment ul.payment_methods::before{content:' ';display:table}#add_payment_method .cart-collaterals .cart_totals p small,.woocommerce-cart .cart-collaterals .cart_totals p small,.woocommerce-checkout .cart-collaterals .cart_totals p small{color:#777;font-size:.83em}#add_payment_method .cart-collaterals .cart_totals table,.woocommerce-cart .cart-collaterals .cart_totals table,.woocommerce-checkout .cart-collaterals .cart_totals table{border-collapse:separate;margin:0 0 6px;padding:0}#add_payment_method .cart-collaterals .cart_totals table tr:first-child td,#add_payment_method .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-cart .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-cart .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-checkout .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-checkout .cart-collaterals .cart_totals table tr:first-child th{border-top:0}#add_payment_method .cart-collaterals .cart_totals table th,.woocommerce-cart .cart-collaterals .cart_totals table th,.woocommerce-checkout .cart-collaterals .cart_totals table th{width:40%}#add_payment_method .cart-collaterals .cart_totals table td,#add_payment_method .cart-collaterals .cart_totals table th,.woocommerce-cart .cart-collaterals .cart_totals table td,.woocommerce-cart .cart-collaterals .cart_totals table th,.woocommerce-checkout .cart-collaterals .cart_totals table td,.woocommerce-checkout .cart-collaterals .cart_totals table th{vertical-align:top;border-left:0;border-right:0;line-height:1.5em}#add_payment_method .cart-collaterals .cart_totals table small,.woocommerce-cart .cart-collaterals .cart_totals table small,.woocommerce-checkout .cart-collaterals .cart_totals table small{color:#777}#add_payment_method .cart-collaterals .cart_totals table select,.woocommerce-cart .cart-collaterals .cart_totals table select,.woocommerce-checkout .cart-collaterals .cart_totals table select{width:100%}#add_payment_method .cart-collaterals .cart_totals .discount td,.woocommerce-cart .cart-collaterals .cart_totals .discount td,.woocommerce-checkout .cart-collaterals .cart_totals .discount td{color:#77a464}#add_payment_method .cart-collaterals .cart_totals tr td,#add_payment_method .cart-collaterals .cart_totals tr th,.woocommerce-cart .cart-collaterals .cart_totals tr td,.woocommerce-cart .cart-collaterals .cart_totals tr th,.woocommerce-checkout .cart-collaterals .cart_totals tr td,.woocommerce-checkout .cart-collaterals .cart_totals tr th{border-top:1px solid #ebe9eb}#add_payment_method .cart-collaterals .cross-sells ul.products li.product,.woocommerce-cart .cart-collaterals .cross-sells ul.products li.product,.woocommerce-checkout .cart-collaterals .cross-sells ul.products li.product{margin-top:0}#add_payment_method .checkout .col-2 h3#ship-to-different-address,.woocommerce-cart .checkout .col-2 h3#ship-to-different-address,.woocommerce-checkout .checkout .col-2 h3#ship-to-different-address{float:left;clear:none}#add_payment_method .checkout .col-2 .form-row-first,#add_payment_method .checkout .col-2 .notes,.woocommerce-cart .checkout .col-2 .form-row-first,.woocommerce-cart .checkout .col-2 .notes,.woocommerce-checkout .checkout .col-2 .form-row-first,.woocommerce-checkout .checkout .col-2 .notes{clear:left}#add_payment_method .checkout .create-account small,.woocommerce-cart .checkout .create-account small,.woocommerce-checkout .checkout .create-account small{font-size:11px;color:#777;font-weight:400}#add_payment_method .checkout div.shipping-address,.woocommerce-cart .checkout div.shipping-address,.woocommerce-checkout .checkout div.shipping-address{padding:0;clear:left;width:100%}#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::after,#add_payment_method #payment ul.payment_methods::after,#add_payment_method .checkout .shipping_address,.single-product .twentythirteen p.stars,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-cart #payment ul.payment_methods::after,.woocommerce-cart .checkout .shipping_address,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-checkout #payment ul.payment_methods::after,.woocommerce-checkout .checkout .shipping_address{clear:both}#add_payment_method #payment,.woocommerce-cart #payment,.woocommerce-checkout #payment{background:#ebe9eb;border-radius:5px}#add_payment_method #payment ul.payment_methods,.woocommerce-cart #payment ul.payment_methods,.woocommerce-checkout #payment ul.payment_methods{text-align:left;padding:1em;border-bottom:1px solid #d3ced2;margin:0;list-style:none}#add_payment_method #payment ul.payment_methods li,.woocommerce-cart #payment ul.payment_methods li,.woocommerce-checkout #payment ul.payment_methods li{line-height:2;text-align:left;margin:0;font-weight:400}#add_payment_method #payment ul.payment_methods li input,.woocommerce-cart #payment ul.payment_methods li input,.woocommerce-checkout #payment ul.payment_methods li input{margin:0 1em 0 0}#add_payment_method #payment ul.payment_methods li img,.woocommerce-cart #payment ul.payment_methods li img,.woocommerce-checkout #payment ul.payment_methods li img{vertical-align:middle;margin:-2px 0 0 .5em;padding:0;position:relative;box-shadow:none}#add_payment_method #payment ul.payment_methods li img+img,.woocommerce-cart #payment ul.payment_methods li img+img,.woocommerce-checkout #payment ul.payment_methods li img+img{margin-left:2px}#add_payment_method #payment div.form-row,.woocommerce-cart #payment div.form-row,.woocommerce-checkout #payment div.form-row{padding:1em}#add_payment_method #payment div.payment_box,.woocommerce-cart #payment div.payment_box,.woocommerce-checkout #payment div.payment_box{position:relative;box-sizing:border-box;width:100%;padding:1em;margin:1em 0;font-size:.92em;border-radius:2px;line-height:1.5;background-color:#dfdcde;color:#515151}#add_payment_method #payment div.payment_box input.input-text,#add_payment_method #payment div.payment_box textarea,.woocommerce-cart #payment div.payment_box input.input-text,.woocommerce-cart #payment div.payment_box textarea,.woocommerce-checkout #payment div.payment_box input.input-text,.woocommerce-checkout #payment div.payment_box textarea{border-color:#bbb3b9 #c7c1c6 #c7c1c6}#add_payment_method #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-cart #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-checkout #payment div.payment_box ::-webkit-input-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box :-moz-placeholder,.woocommerce-cart #payment div.payment_box :-moz-placeholder,.woocommerce-checkout #payment div.payment_box :-moz-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box :-ms-input-placeholder,.woocommerce-cart #payment div.payment_box :-ms-input-placeholder,.woocommerce-checkout #payment div.payment_box :-ms-input-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods{list-style:none;margin:0}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token{margin:0 0 .5em}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label{cursor:pointer}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput{vertical-align:middle;margin:-3px 1em 0 0;position:relative}#add_payment_method #payment div.payment_box .wc-credit-card-form,.woocommerce-cart #payment div.payment_box .wc-credit-card-form,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form{border:0;padding:0;margin:1em 0 0}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number{font-size:1.5em;padding:8px;background-repeat:no-repeat;background-position:right .618em center;background-size:32px 20px}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.visa,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.visa,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.visa{background-image:url(../images/icons/credit-cards/visa.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.mastercard{background-image:url(../images/icons/credit-cards/mastercard.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.laser,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.laser,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.laser{background-image:url(../images/icons/credit-cards/laser.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.dinersclub{background-image:url(../images/icons/credit-cards/diners.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.maestro{background-image:url(../images/icons/credit-cards/maestro.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.jcb{background-image:url(../images/icons/credit-cards/jcb.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.amex,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.amex,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.amex{background-image:url(../images/icons/credit-cards/amex.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.discover,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.discover,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.discover{background-image:url(../images/icons/credit-cards/discover.svg)}#add_payment_method #payment div.payment_box span.help,.woocommerce-cart #payment div.payment_box span.help,.woocommerce-checkout #payment div.payment_box span.help{font-size:.857em;color:#777;font-weight:400}#add_payment_method #payment div.payment_box .form-row,.woocommerce-cart #payment div.payment_box .form-row,.woocommerce-checkout #payment div.payment_box .form-row{margin:0 0 1em}#add_payment_method #payment div.payment_box p:last-child,.woocommerce-cart #payment div.payment_box p:last-child,.woocommerce-checkout #payment div.payment_box p:last-child{margin-bottom:0}#add_payment_method #payment div.payment_box::before,.woocommerce-cart #payment div.payment_box::before,.woocommerce-checkout #payment div.payment_box::before{content:'';display:block;border:1em solid #dfdcde;border-right-color:transparent;border-left-color:transparent;border-top-color:transparent;position:absolute;top:-.75em;left:0;margin:-1em 0 0 2em}#add_payment_method #payment .payment_method_paypal .about_paypal,.woocommerce-cart #payment .payment_method_paypal .about_paypal,.woocommerce-checkout #payment .payment_method_paypal .about_paypal{float:right;line-height:52px;font-size:.83em}#add_payment_method #payment .payment_method_paypal img,.woocommerce-cart #payment .payment_method_paypal img,.woocommerce-checkout #payment .payment_method_paypal img{max-height:52px;vertical-align:middle}.woocommerce-password-strength{text-align:center;font-weight:600;padding:3px .5em;font-size:1em}.woocommerce-password-strength.strong{background-color:#c1e1b9;border-color:#83c373}.woocommerce-password-strength.short{background-color:#f1adad;border-color:#e35b5b}.woocommerce-password-strength.bad{background-color:#fbc5a9;border-color:#f78b53}.woocommerce-password-strength.good{background-color:#ffe399;border-color:#ffc733}.woocommerce-password-hint{margin:.5em 0 0;display:block}.js .woocommerce-product-gallery--with-images{opacity:0}#content.twentyeleven .woocommerce-pagination a{font-size:1em;line-height:1}.single-product .twentythirteen #reply-title,.single-product .twentythirteen #respond #commentform,.single-product .twentythirteen .entry-summary{padding:0}.twentythirteen .woocommerce-breadcrumb{padding-top:40px}.twentyfourteen ul.products li.product{margin-top:0!important}body:not(.search-results) .twentysixteen .entry-summary{color:inherit;font-size:inherit;line-height:inherit}.twentysixteen .price ins{background:inherit;color:inherit} \ No newline at end of file +@charset "UTF-8";@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg)}}@-moz-keyframes spin{100%{-moz-transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}.woocommerce-store-notice,p.demo_store{position:absolute;top:0;left:0;right:0;margin:0;width:100%;font-size:1em;padding:1em 0;text-align:center;background-color:#a46497;color:#fff;z-index:99998;box-shadow:0 1px 1em rgba(0,0,0,.2);display:none}.woocommerce-store-notice a,p.demo_store a{color:#fff;text-decoration:underline}.admin-bar p.demo_store{top:32px}.clear{clear:both}.woocommerce .blockUI.blockOverlay{position:relative}.woocommerce .blockUI.blockOverlay::before,.woocommerce .loader::before{height:1em;width:1em;display:block;position:absolute;top:50%;left:50%;margin-left:-.5em;margin-top:-.5em;content:'';-webkit-animation:spin 1s ease-in-out infinite;-moz-animation:spin 1s ease-in-out infinite;animation:spin 1s ease-in-out infinite;background:url(../images/icons/loader.svg) center center;background-size:cover;line-height:1;text-align:center;font-size:2em;color:rgba(0,0,0,.75)}.woocommerce a.remove{display:block;font-size:1.5em;height:1em;width:1em;text-align:center;line-height:1;border-radius:100%;color:red!important;text-decoration:none;font-weight:700;border:0}.woocommerce a.remove:hover{color:#fff!important;background:red}.woocommerce small.note{display:block;color:#777;font-size:.857em;margin-top:10px}.woocommerce .woocommerce-breadcrumb{margin:0 0 1em;padding:0;font-size:.92em;color:#777}.woocommerce .woocommerce-breadcrumb::after,.woocommerce .woocommerce-breadcrumb::before{content:' ';display:table}.woocommerce .woocommerce-breadcrumb::after{clear:both}.woocommerce .woocommerce-breadcrumb a{color:#777}.woocommerce .quantity .qty{width:3.631em;text-align:center}.woocommerce div.product{margin-bottom:0;position:relative}.woocommerce div.product .product_title{clear:none;margin-top:0;padding:0}.woocommerce #reviews #comments .add_review::after,.woocommerce .products ul::after,.woocommerce div.product form.cart::after,.woocommerce div.product p.cart::after,.woocommerce nav.woocommerce-pagination ul,.woocommerce ul.products::after{clear:both}.woocommerce div.product p.price,.woocommerce div.product span.price{color:#77a464;font-size:1.25em}.woocommerce div.product p.price ins,.woocommerce div.product span.price ins{background:inherit;font-weight:700}.woocommerce div.product p.price del,.woocommerce div.product span.price del{opacity:.5}.woocommerce div.product p.stock{font-size:.92em}.woocommerce div.product .stock{color:#77a464}.woocommerce div.product .out-of-stock{color:red}.woocommerce div.product .woocommerce-product-rating{margin-bottom:1.618em}.woocommerce div.product div.images{margin-bottom:2em}.woocommerce div.product div.images img{display:block;width:100%;height:auto;box-shadow:none}.woocommerce div.product div.images div.thumbnails{padding-top:1em}.woocommerce div.product div.images.woocommerce-product-gallery{position:relative}.woocommerce div.product div.images .woocommerce-product-gallery__wrapper{transition:all cubic-bezier(.795,-.035,0,1) .5s}.woocommerce div.product div.images .woocommerce-product-gallery__image:nth-child(n+2){width:25%;display:inline-block}.woocommerce div.product div.images .woocommerce-product-gallery__trigger{position:absolute;top:.5em;right:.5em;font-size:2em;z-index:9;width:36px;height:36px;background:#fff;text-indent:-9999px;border-radius:100%;box-sizing:content-box}.woocommerce div.product div.images .woocommerce-product-gallery__trigger:before{content:"";display:block;width:10px;height:10px;border:2px solid #000;border-radius:100%;position:absolute;top:9px;left:9px;box-sizing:content-box}.woocommerce div.product div.images .woocommerce-product-gallery__trigger:after{content:"";display:block;width:2px;height:8px;background:#000;border-radius:6px;position:absolute;top:19px;left:22px;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg);box-sizing:content-box}.woocommerce div.product div.images .flex-control-thumbs{overflow:hidden;zoom:1;margin:0;padding:0}.woocommerce div.product div.images .flex-control-thumbs li{width:25%;float:left;margin:0;list-style:none}.woocommerce div.product div.images .flex-control-thumbs li img{cursor:pointer;opacity:.5;margin:0}.woocommerce div.product div.images .flex-control-thumbs li img.flex-active,.woocommerce div.product div.images .flex-control-thumbs li img:hover{opacity:1}.woocommerce div.product div.summary{margin-bottom:2em}.woocommerce div.product div.social{text-align:right;margin:0 0 1em}.woocommerce div.product div.social span{margin:0 0 0 2px}.woocommerce div.product div.social span span{margin:0}.woocommerce div.product div.social span .stButton .chicklets{padding-left:16px;width:0}.woocommerce div.product div.social iframe{float:left;margin-top:3px}.woocommerce div.product .woocommerce-tabs ul.tabs{list-style:none;padding:0 0 0 1em;margin:0 0 1.618em;overflow:hidden;position:relative}.woocommerce div.product .woocommerce-tabs ul.tabs li{border:1px solid #d3ced2;background-color:#ebe9eb;display:inline-block;position:relative;z-index:0;border-radius:4px 4px 0 0;margin:0 -5px;padding:0 1em}.woocommerce div.product .woocommerce-tabs ul.tabs li a{display:inline-block;padding:.5em 0;font-weight:700;color:#515151;text-decoration:none}.woocommerce div.product form.cart::after,.woocommerce div.product form.cart::before,.woocommerce div.product p.cart::after,.woocommerce div.product p.cart::before{display:table;content:' '}.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover{text-decoration:none;color:#6b6b6b}.woocommerce div.product .woocommerce-tabs ul.tabs li.active{background:#fff;z-index:2;border-bottom-color:#fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{color:inherit;text-shadow:inherit}.woocommerce div.product .woocommerce-tabs ul.tabs li.active::before{box-shadow:2px 2px 0 #fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active::after{box-shadow:-2px 2px 0 #fff}.woocommerce div.product .woocommerce-tabs ul.tabs li::after,.woocommerce div.product .woocommerce-tabs ul.tabs li::before{border:1px solid #d3ced2;position:absolute;bottom:-1px;width:5px;height:5px;content:' '}.woocommerce div.product .woocommerce-tabs ul.tabs li::before{left:-6px;-webkit-border-bottom-right-radius:4px;-moz-border-bottom-right-radius:4px;border-bottom-right-radius:4px;border-width:0 1px 1px 0;box-shadow:2px 2px 0 #ebe9eb}.woocommerce div.product .woocommerce-tabs ul.tabs li::after{right:-6px;-webkit-border-bottom-left-radius:4px;-moz-border-bottom-left-radius:4px;border-bottom-left-radius:4px;border-width:0 0 1px 1px;box-shadow:-2px 2px 0 #ebe9eb}.woocommerce div.product .woocommerce-tabs ul.tabs::before{position:absolute;content:' ';width:100%;bottom:0;left:0;border-bottom:1px solid #d3ced2;z-index:1}.woocommerce div.product .woocommerce-tabs .panel{margin:0 0 2em;padding:0}.woocommerce div.product form.cart,.woocommerce div.product p.cart{margin-bottom:2em}.woocommerce div.product form.cart div.quantity{float:left;margin:0 4px 0 0}.woocommerce div.product form.cart table{border-width:0 0 1px}.woocommerce div.product form.cart table td{padding-left:0}.woocommerce div.product form.cart table div.quantity{float:none;margin:0}.woocommerce div.product form.cart table small.stock{display:block;float:none}.woocommerce div.product form.cart .variations{margin-bottom:1em;border:0;width:100%}.woocommerce div.product form.cart .variations td,.woocommerce div.product form.cart .variations th{border:0;vertical-align:top;line-height:2em}.woocommerce div.product form.cart .variations label{font-weight:700}.woocommerce div.product form.cart .variations select{max-width:100%;min-width:75%;display:inline-block;margin-right:1em}.woocommerce div.product form.cart .variations td.label{padding-right:1em}.woocommerce div.product form.cart .woocommerce-variation-description p{margin-bottom:1em}.woocommerce div.product form.cart .reset_variations{visibility:hidden;font-size:.83em}.woocommerce div.product form.cart .wc-no-matching-variations{display:none}.woocommerce div.product form.cart .button{vertical-align:middle;float:left}.woocommerce div.product form.cart .group_table td.label{padding-right:1em;padding-left:1em}.woocommerce div.product form.cart .group_table td{vertical-align:top;padding-bottom:.5em;border:0}.woocommerce div.product form.cart .group_table td:first-child{width:4em;text-align:center}.woocommerce div.product form.cart .group_table .wc-grouped-product-add-to-cart-checkbox{display:inline-block;width:auto;margin:0 auto;transform:scale(1.5,1.5)}.woocommerce span.onsale{min-height:3.236em;min-width:3.236em;padding:.202em;font-weight:700;position:absolute;text-align:center;line-height:3.236;top:-.5em;left:-.5em;margin:0;border-radius:100%;background-color:#77a464;color:#fff;font-size:.857em;-webkit-font-smoothing:antialiased;z-index:9}.woocommerce .products ul,.woocommerce ul.products{margin:0 0 1em;padding:0;list-style:none;clear:both}.woocommerce .products ul::after,.woocommerce .products ul::before,.woocommerce ul.products::after,.woocommerce ul.products::before{content:' ';display:table}.woocommerce .products ul li,.woocommerce ul.products li{list-style:none}.woocommerce ul.products li.product .onsale{top:0;right:0;left:auto;margin:-.5em -.5em 0 0}.woocommerce ul.products li.product .woocommerce-loop-category__title,.woocommerce ul.products li.product .woocommerce-loop-product__title,.woocommerce ul.products li.product h3{padding:.5em 0;margin:0;font-size:1em}.woocommerce ul.products li.product a{text-decoration:none}.woocommerce ul.products li.product a img{width:100%;height:auto;display:block;margin:0 0 1em;box-shadow:none}.woocommerce ul.products li.product strong{display:block}.woocommerce ul.products li.product .star-rating{font-size:.857em}.woocommerce ul.products li.product .button{margin-top:1em}.woocommerce ul.products li.product .price{color:#77a464;display:block;font-weight:400;margin-bottom:.5em;font-size:.857em}.woocommerce ul.products li.product .price del{color:inherit;opacity:.5;display:block}.woocommerce ul.products li.product .price ins{background:0 0;font-weight:700}.woocommerce ul.products li.product .price .from{font-size:.67em;margin:-2px 0 0;text-transform:uppercase;color:rgba(132,132,132,.5)}.woocommerce .woocommerce-ordering,.woocommerce .woocommerce-result-count{margin:0 0 1em}.woocommerce .woocommerce-ordering select{vertical-align:top}.woocommerce nav.woocommerce-pagination{text-align:center}.woocommerce nav.woocommerce-pagination ul{display:inline-block;white-space:nowrap;padding:0;border:1px solid #d3ced2;border-right:0;margin:1px}.woocommerce nav.woocommerce-pagination ul li{border-right:1px solid #d3ced2;padding:0;margin:0;float:left;display:inline;overflow:hidden}.woocommerce nav.woocommerce-pagination ul li a,.woocommerce nav.woocommerce-pagination ul li span{margin:0;text-decoration:none;line-height:1;font-size:1em;font-weight:400;padding:.5em;min-width:1em;display:block}.woocommerce nav.woocommerce-pagination ul li a:focus,.woocommerce nav.woocommerce-pagination ul li a:hover,.woocommerce nav.woocommerce-pagination ul li span.current{background:#ebe9eb;color:#8a7e88}.woocommerce #respond input#submit,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button{font-size:100%;margin:0;line-height:1;cursor:pointer;position:relative;text-decoration:none;overflow:visible;padding:.618em 1em;font-weight:700;border-radius:3px;left:auto;color:#515151;background-color:#ebe9eb;border:0;white-space:nowrap;display:inline-block;background-image:none;box-shadow:none;-webkit-box-shadow:none;text-shadow:none}.woocommerce #respond input#submit.loading,.woocommerce a.button.loading,.woocommerce button.button.loading,.woocommerce input.button.loading{opacity:.25;padding-right:2.618em}.woocommerce #respond input#submit.loading::after,.woocommerce a.button.loading::after,.woocommerce button.button.loading::after,.woocommerce input.button.loading::after{font-family:WooCommerce;content:'\e01c';vertical-align:top;-webkit-font-smoothing:antialiased;font-weight:400;position:absolute;top:.618em;right:1em;-webkit-animation:spin 2s linear infinite;-moz-animation:spin 2s linear infinite;animation:spin 2s linear infinite}.woocommerce #respond input#submit.added::after,.woocommerce a.button.added::after,.woocommerce button.button.added::after,.woocommerce input.button.added::after{font-family:WooCommerce;content:'\e017';margin-left:.53em;vertical-align:bottom}.woocommerce #respond input#submit:hover,.woocommerce a.button:hover,.woocommerce button.button:hover,.woocommerce input.button:hover{background-color:#dad8da;text-decoration:none;background-image:none;color:#515151}.woocommerce #respond input#submit.alt,.woocommerce a.button.alt,.woocommerce button.button.alt,.woocommerce input.button.alt{background-color:#a46497;color:#fff;-webkit-font-smoothing:antialiased}.woocommerce #respond input#submit.alt:hover,.woocommerce a.button.alt:hover,.woocommerce button.button.alt:hover,.woocommerce input.button.alt:hover{background-color:#935386;color:#fff}.woocommerce #respond input#submit.alt.disabled,.woocommerce #respond input#submit.alt.disabled:hover,.woocommerce #respond input#submit.alt:disabled,.woocommerce #respond input#submit.alt:disabled:hover,.woocommerce #respond input#submit.alt:disabled[disabled],.woocommerce #respond input#submit.alt:disabled[disabled]:hover,.woocommerce a.button.alt.disabled,.woocommerce a.button.alt.disabled:hover,.woocommerce a.button.alt:disabled,.woocommerce a.button.alt:disabled:hover,.woocommerce a.button.alt:disabled[disabled],.woocommerce a.button.alt:disabled[disabled]:hover,.woocommerce button.button.alt.disabled,.woocommerce button.button.alt.disabled:hover,.woocommerce button.button.alt:disabled,.woocommerce button.button.alt:disabled:hover,.woocommerce button.button.alt:disabled[disabled],.woocommerce button.button.alt:disabled[disabled]:hover,.woocommerce input.button.alt.disabled,.woocommerce input.button.alt.disabled:hover,.woocommerce input.button.alt:disabled,.woocommerce input.button.alt:disabled:hover,.woocommerce input.button.alt:disabled[disabled],.woocommerce input.button.alt:disabled[disabled]:hover{background-color:#a46497;color:#fff}.woocommerce #respond input#submit.disabled,.woocommerce #respond input#submit:disabled,.woocommerce #respond input#submit:disabled[disabled],.woocommerce a.button.disabled,.woocommerce a.button:disabled,.woocommerce a.button:disabled[disabled],.woocommerce button.button.disabled,.woocommerce button.button:disabled,.woocommerce button.button:disabled[disabled],.woocommerce input.button.disabled,.woocommerce input.button:disabled,.woocommerce input.button:disabled[disabled]{color:inherit;cursor:not-allowed;opacity:.5;padding:.618em 1em}.woocommerce #respond input#submit.disabled:hover,.woocommerce #respond input#submit:disabled:hover,.woocommerce #respond input#submit:disabled[disabled]:hover,.woocommerce a.button.disabled:hover,.woocommerce a.button:disabled:hover,.woocommerce a.button:disabled[disabled]:hover,.woocommerce button.button.disabled:hover,.woocommerce button.button:disabled:hover,.woocommerce button.button:disabled[disabled]:hover,.woocommerce input.button.disabled:hover,.woocommerce input.button:disabled:hover,.woocommerce input.button:disabled[disabled]:hover{color:inherit;background-color:#ebe9eb}.woocommerce .cart .button,.woocommerce .cart input.button{float:none}.woocommerce a.added_to_cart{padding-top:.5em;white-space:nowrap;display:inline-block}.woocommerce #reviews #comments .add_review::after,.woocommerce #reviews #comments .add_review::before,.woocommerce #reviews #comments ol.commentlist li .comment-text::after,.woocommerce #reviews #comments ol.commentlist li .comment-text::before,.woocommerce #reviews #comments ol.commentlist::after,.woocommerce #reviews #comments ol.commentlist::before{content:' ';display:table}.woocommerce #reviews h2 small{float:right;color:#777;font-size:15px;margin:10px 0 0}.woocommerce #reviews h2 small a{text-decoration:none;color:#777}.woocommerce #reviews h3{margin:0}.woocommerce #reviews #respond{margin:0;border:0;padding:0}.woocommerce #reviews #comment{height:75px}.woocommerce #reviews #comments h2{clear:none}.woocommerce #review_form #respond::after,.woocommerce #reviews #comments ol.commentlist li .comment-text::after,.woocommerce #reviews #comments ol.commentlist::after,.woocommerce .woocommerce-product-rating::after,.woocommerce ul.cart_list li dl::after,.woocommerce ul.cart_list li::after,.woocommerce ul.product_list_widget li dl::after,.woocommerce ul.product_list_widget li::after{clear:both}.woocommerce #reviews #comments ol.commentlist{margin:0;width:100%;background:0 0;list-style:none}.woocommerce #reviews #comments ol.commentlist li{padding:0;margin:0 0 20px;position:relative;background:0;border:0}.woocommerce #reviews #comments ol.commentlist li .meta{color:#777;font-size:.75em}.woocommerce #reviews #comments ol.commentlist li img.avatar{float:left;position:absolute;top:0;left:0;padding:3px;width:32px;height:auto;background:#ebe9eb;border:1px solid #e4e1e3;margin:0;box-shadow:none}.woocommerce #reviews #comments ol.commentlist li .comment-text{margin:0 0 0 50px;border:1px solid #e4e1e3;border-radius:4px;padding:1em 1em 0}.woocommerce #reviews #comments ol.commentlist li .comment-text p{margin:0 0 1em}.woocommerce #reviews #comments ol.commentlist li .comment-text p.meta{font-size:.83em}.woocommerce #reviews #comments ol.commentlist ul.children{list-style:none;margin:20px 0 0 50px}.woocommerce #reviews #comments ol.commentlist ul.children .star-rating{display:none}.woocommerce #reviews #comments ol.commentlist #respond{border:1px solid #e4e1e3;border-radius:4px;padding:1em 1em 0;margin:20px 0 0 50px}.woocommerce #reviews #comments .commentlist>li::before{content:''}.woocommerce .star-rating{float:right;overflow:hidden;position:relative;height:1em;line-height:1;font-size:1em;width:5.4em;font-family:star}.woocommerce .star-rating::before{content:'\73\73\73\73\73';color:#d3ced2;float:left;top:0;left:0;position:absolute}.woocommerce .star-rating span{overflow:hidden;float:left;top:0;left:0;position:absolute;padding-top:1.5em}.woocommerce .star-rating span::before{content:'\53\53\53\53\53';top:0;position:absolute;left:0}.woocommerce .woocommerce-product-rating{line-height:2;display:block}.woocommerce .woocommerce-product-rating::after,.woocommerce .woocommerce-product-rating::before{content:' ';display:table}.woocommerce .woocommerce-product-rating .star-rating{margin:.5em 4px 0 0;float:left}.woocommerce .products .star-rating{display:block;margin:0 0 .5em;float:none}.woocommerce .hreview-aggregate .star-rating{margin:10px 0 0}.woocommerce #review_form #respond{position:static;margin:0;width:auto;padding:0;background:0 0;border:0}.woocommerce #review_form #respond::after,.woocommerce #review_form #respond::before{content:' ';display:table}.woocommerce p.stars a::before,.woocommerce p.stars a:hover~a::before{content:'\e021'}.woocommerce #review_form #respond p{margin:0 0 10px}.woocommerce #review_form #respond .form-submit input{left:auto}.woocommerce #review_form #respond textarea{box-sizing:border-box;width:100%}.woocommerce p.stars a{position:relative;height:1em;width:1em;text-indent:-999em;display:inline-block;text-decoration:none}.woocommerce p.stars a::before{display:block;position:absolute;top:0;left:0;width:1em;height:1em;line-height:1;font-family:WooCommerce;text-indent:0}.woocommerce table.shop_attributes td,.woocommerce table.shop_attributes th{line-height:1.5;border-bottom:1px dotted rgba(0,0,0,.1);border-top:0;margin:0}.woocommerce p.stars.selected a.active::before,.woocommerce p.stars:hover a::before{content:'\e020'}.woocommerce p.stars.selected a.active~a::before{content:'\e021'}.woocommerce p.stars.selected a:not(.active)::before{content:'\e020'}.woocommerce table.shop_attributes{border:0;border-top:1px dotted rgba(0,0,0,.1);margin-bottom:1.618em;width:100%}.woocommerce table.shop_attributes th{width:150px;font-weight:700;padding:8px}.woocommerce table.shop_attributes td{font-style:italic;padding:0}.woocommerce table.shop_attributes td p{margin:0;padding:8px 0}.woocommerce table.shop_attributes tr:nth-child(even) td,.woocommerce table.shop_attributes tr:nth-child(even) th{background:rgba(0,0,0,.025)}.woocommerce table.shop_table{border:1px solid rgba(0,0,0,.1);margin:0 -1px 24px 0;text-align:left;width:100%;border-collapse:separate;border-radius:5px}.woocommerce table.shop_table th{font-weight:700;padding:9px 12px}.woocommerce table.shop_table td{border-top:1px solid rgba(0,0,0,.1);padding:6px 12px;vertical-align:middle}.woocommerce table.shop_table td small{font-weight:400}.woocommerce table.shop_table tbody:first-child tr:first-child td,.woocommerce table.shop_table tbody:first-child tr:first-child th{border-top:0}.woocommerce table.shop_table tbody th,.woocommerce table.shop_table tfoot td,.woocommerce table.shop_table tfoot th{font-weight:700;border-top:1px solid rgba(0,0,0,.1)}.woocommerce table.my_account_orders{font-size:.85em}.woocommerce table.my_account_orders td,.woocommerce table.my_account_orders th{padding:4px 8px;vertical-align:middle}.woocommerce table.my_account_orders .button{white-space:nowrap}.woocommerce table.my_account_orders .order-actions{text-align:right}.woocommerce table.my_account_orders .order-actions .button{margin:.125em 0 .125em .25em}.woocommerce table.woocommerce-MyAccount-downloads td,.woocommerce table.woocommerce-MyAccount-downloads th{vertical-align:top;text-align:center}.woocommerce table.woocommerce-MyAccount-downloads td:first-child,.woocommerce table.woocommerce-MyAccount-downloads td:last-child,.woocommerce table.woocommerce-MyAccount-downloads th:first-child,.woocommerce table.woocommerce-MyAccount-downloads th:last-child{text-align:left}.woocommerce table.woocommerce-MyAccount-downloads td .woocommerce-MyAccount-downloads-file::before,.woocommerce table.woocommerce-MyAccount-downloads th .woocommerce-MyAccount-downloads-file::before{content:'\2193';display:inline-block}.woocommerce td.product-name .wc-item-meta,.woocommerce td.product-name dl.variation{list-style:none}.woocommerce td.product-name .wc-item-meta .wc-item-meta-label,.woocommerce td.product-name .wc-item-meta dt,.woocommerce td.product-name dl.variation .wc-item-meta-label,.woocommerce td.product-name dl.variation dt{float:left;clear:both;margin-right:.25em;display:inline-block;list-style:none}.woocommerce td.product-name .wc-item-meta dd,.woocommerce td.product-name dl.variation dd{margin:0}.woocommerce td.product-name .wc-item-meta p,.woocommerce td.product-name .wc-item-meta:last-child,.woocommerce td.product-name dl.variation p,.woocommerce td.product-name dl.variation:last-child{margin-bottom:0}.woocommerce td.product-name p.backorder_notification{font-size:.83em}.woocommerce td.product-quantity{min-width:80px}.woocommerce ul.cart_list,.woocommerce ul.product_list_widget{list-style:none;padding:0;margin:0}.woocommerce ul.cart_list li,.woocommerce ul.product_list_widget li{padding:4px 0;margin:0;list-style:none}.woocommerce ul.cart_list li::after,.woocommerce ul.cart_list li::before,.woocommerce ul.product_list_widget li::after,.woocommerce ul.product_list_widget li::before{content:' ';display:table}.woocommerce ul.cart_list li a,.woocommerce ul.product_list_widget li a{display:block;font-weight:700}.woocommerce ul.cart_list li img,.woocommerce ul.product_list_widget li img{float:right;margin-left:4px;width:32px;height:auto;box-shadow:none}.woocommerce ul.cart_list li dl,.woocommerce ul.product_list_widget li dl{margin:0;padding-left:1em;border-left:2px solid rgba(0,0,0,.1)}.woocommerce ul.cart_list li dl::after,.woocommerce ul.cart_list li dl::before,.woocommerce ul.product_list_widget li dl::after,.woocommerce ul.product_list_widget li dl::before{content:' ';display:table}.woocommerce ul.cart_list li dl dd,.woocommerce ul.cart_list li dl dt,.woocommerce ul.product_list_widget li dl dd,.woocommerce ul.product_list_widget li dl dt{display:inline-block;float:left;margin-bottom:1em}.woocommerce ul.cart_list li dl dt,.woocommerce ul.product_list_widget li dl dt{font-weight:700;padding:0 0 .25em;margin:0 4px 0 0;clear:left}#add_payment_method .wc-proceed-to-checkout::after,.woocommerce .widget_layered_nav ul li::after,.woocommerce .widget_rating_filter ul li::after,.woocommerce .widget_shopping_cart .buttons::after,.woocommerce ul.order_details::after,.woocommerce-account .addresses .title::after,.woocommerce-account .woocommerce::after,.woocommerce-cart .wc-proceed-to-checkout::after,.woocommerce-checkout .wc-proceed-to-checkout::after,.woocommerce-error::after,.woocommerce-info::after,.woocommerce-message::after,.woocommerce.widget_shopping_cart .buttons::after{clear:both}.woocommerce ul.cart_list li dl dd,.woocommerce ul.product_list_widget li dl dd{padding:0 0 .25em}.woocommerce ul.cart_list li dl dd p:last-child,.woocommerce ul.product_list_widget li dl dd p:last-child{margin-bottom:0}.woocommerce ul.cart_list li .star-rating,.woocommerce ul.product_list_widget li .star-rating{float:none}.woocommerce .widget_shopping_cart .total,.woocommerce.widget_shopping_cart .total{border-top:3px double #ebe9eb;padding:4px 0 0}.woocommerce .widget_shopping_cart .total strong,.woocommerce.widget_shopping_cart .total strong{min-width:40px;display:inline-block}.woocommerce .widget_shopping_cart .cart_list li,.woocommerce.widget_shopping_cart .cart_list li{padding-left:2em;position:relative;padding-top:0}.woocommerce .widget_shopping_cart .cart_list li a.remove,.woocommerce.widget_shopping_cart .cart_list li a.remove{position:absolute;top:0;left:0}.woocommerce .widget_shopping_cart .buttons::after,.woocommerce .widget_shopping_cart .buttons::before,.woocommerce.widget_shopping_cart .buttons::after,.woocommerce.widget_shopping_cart .buttons::before{content:' ';display:table}.woocommerce .widget_shopping_cart .buttons a,.woocommerce.widget_shopping_cart .buttons a{margin-right:5px;margin-bottom:5px}.woocommerce form .form-row{padding:3px;margin:0 0 6px}.woocommerce form .form-row [placeholder]:focus::-webkit-input-placeholder{-webkit-transition:opacity .5s .5s ease;-moz-transition:opacity .5s .5s ease;transition:opacity .5s .5s ease;opacity:0}.woocommerce form .form-row label{line-height:2}.woocommerce form .form-row label.hidden{visibility:hidden}.woocommerce form .form-row label.inline{display:inline}.woocommerce form .form-row select{cursor:pointer;margin:0}.woocommerce form .form-row .required{color:red;font-weight:700;border:0}.woocommerce form .form-row .input-checkbox{display:inline;margin:-2px 8px 0 0;text-align:center;vertical-align:middle}.woocommerce form .form-row input.input-text,.woocommerce form .form-row textarea{box-sizing:border-box;width:100%;margin:0;outline:0;line-height:1}.woocommerce form .form-row textarea{height:4em;line-height:1.5;display:block;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.woocommerce form .form-row .select2-container{width:100%;line-height:2em}.woocommerce form .form-row.woocommerce-invalid label{color:#a00}.woocommerce form .form-row.woocommerce-invalid .select2-container,.woocommerce form .form-row.woocommerce-invalid input.input-text,.woocommerce form .form-row.woocommerce-invalid select{border-color:#a00}.woocommerce form .form-row.woocommerce-validated .select2-container,.woocommerce form .form-row.woocommerce-validated input.input-text,.woocommerce form .form-row.woocommerce-validated select{border-color:#69bf29}.woocommerce form .form-row ::-webkit-input-placeholder{line-height:normal}.woocommerce form .form-row :-moz-placeholder{line-height:normal}.woocommerce form .form-row :-ms-input-placeholder{line-height:normal}.woocommerce form.checkout_coupon,.woocommerce form.login,.woocommerce form.register{border:1px solid #d3ced2;padding:20px;margin:2em 0;text-align:left;border-radius:5px}.woocommerce ul#shipping_method{list-style:none;margin:0;padding:0}.woocommerce ul#shipping_method li{margin:0;padding:.25em 0 .25em 22px;text-indent:-22px;list-style:none}.woocommerce ul#shipping_method li input{margin:3px .5ex}.woocommerce ul#shipping_method li label{display:inline}.woocommerce ul#shipping_method .amount{font-weight:700}.woocommerce p.woocommerce-shipping-contents{margin:0}.woocommerce ul.order_details{margin:0 0 3em;list-style:none}.woocommerce ul.order_details::after,.woocommerce ul.order_details::before{content:' ';display:table}.woocommerce ul.order_details li{float:left;margin-right:2em;text-transform:uppercase;font-size:.715em;line-height:1;border-right:1px dashed #d3ced2;padding-right:2em;margin-left:0;padding-left:0;list-style-type:none}.woocommerce ul.order_details li strong{display:block;font-size:1.4em;text-transform:none;line-height:1.5}.woocommerce ul.order_details li:last-of-type{border:none}.woocommerce .wc-bacs-bank-details-account-name{font-weight:700}.woocommerce .widget_layered_nav ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_layered_nav ul li{padding:0 0 1px;list-style:none}.woocommerce .widget_layered_nav ul li::after,.woocommerce .widget_layered_nav ul li::before{content:' ';display:table}.woocommerce .widget_layered_nav ul li.chosen a::before,.woocommerce .widget_layered_nav_filters ul li a::before{line-height:1;content:"";font-weight:400;color:#a00;font-family:WooCommerce;speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-decoration:none}.woocommerce .widget_layered_nav ul li a,.woocommerce .widget_layered_nav ul li span{padding:1px 0}.woocommerce .widget_layered_nav ul li.chosen a::before{margin-right:.618em}.woocommerce .widget_layered_nav_filters ul{margin:0;padding:0;border:0;list-style:none;overflow:hidden;zoom:1}.woocommerce .widget_layered_nav_filters ul li{float:left;padding:0 1px 1px 0;list-style:none}.woocommerce .widget_layered_nav_filters ul li a{text-decoration:none}.woocommerce .widget_layered_nav_filters ul li a::before{margin-right:.618em}.woocommerce .widget_price_filter .price_slider{margin-bottom:1em}.woocommerce .widget_price_filter .price_slider_amount{text-align:right;line-height:2.4;font-size:.8751em}.woocommerce .widget_price_filter .price_slider_amount .button{font-size:1.15em;float:left}.woocommerce .widget_price_filter .ui-slider{position:relative;text-align:left;margin-left:.5em;margin-right:.5em}.woocommerce .widget_price_filter .ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1em;height:1em;background-color:#a46497;border-radius:1em;cursor:ew-resize;outline:0;top:-.3em;margin-left:-.5em}.woocommerce .widget_price_filter .ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;border-radius:1em;background-color:#a46497}.woocommerce .widget_price_filter .price_slider_wrapper .ui-widget-content{border-radius:1em;background-color:#602053;border:0}.woocommerce .widget_price_filter .ui-slider-horizontal{height:.5em}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range{top:0;height:100%}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-min{left:-1px}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-max{right:-1px}.woocommerce .widget_rating_filter ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_rating_filter ul li{padding:0 0 1px;list-style:none}.woocommerce .widget_rating_filter ul li::after,.woocommerce .widget_rating_filter ul li::before{content:' ';display:table}.woocommerce .widget_rating_filter ul li a{padding:1px 0;text-decoration:none}.woocommerce .widget_rating_filter ul li .star-rating{float:none;display:inline-block}.rtl.woocommerce div.product div.images .flex-control-thumbs li,.woocommerce-error .button,.woocommerce-info .button,.woocommerce-message .button{float:right}.woocommerce .widget_rating_filter ul li.chosen a::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none;color:#a00}.pswp{z-index:999999}.woocommerce img.pswp__img,.woocommerce-page img.pswp__img{max-width:none}button.pswp__button{box-shadow:none!important;background-image:url(photoswipe/default-skin/default-skin.png)!important}button.pswp__button,button.pswp__button--arrow--left::before,button.pswp__button--arrow--right::before,button.pswp__button:hover{background-color:transparent!important}button.pswp__button--arrow--left,button.pswp__button--arrow--left:hover,button.pswp__button--arrow--right,button.pswp__button--arrow--right:hover{background-image:none!important}button.pswp__button--close:hover{background-position:0 -44px}button.pswp__button--zoom:hover{background-position:-88px 0}.woocommerce-error,.woocommerce-info,.woocommerce-message{padding:1em 2em 1em 3.5em;margin:0 0 2em;position:relative;background-color:#f7f6f7;color:#515151;border-top:3px solid #a46497;list-style:none;width:auto;word-wrap:break-word}.woocommerce-error::after,.woocommerce-error::before,.woocommerce-info::after,.woocommerce-info::before,.woocommerce-message::after,.woocommerce-message::before{content:' ';display:table}.woocommerce-error::before,.woocommerce-info::before,.woocommerce-message::before{font-family:WooCommerce;content:'\e028';display:inline-block;position:absolute;top:1em;left:1.5em}.woocommerce-error li,.woocommerce-info li,.woocommerce-message li{list-style:none!important;padding-left:0!important;margin-left:0!important}.woocommerce-message{border-top-color:#8fae1b}.woocommerce-message::before{content:'\e015';color:#8fae1b}.woocommerce-info{border-top-color:#1e85be}.woocommerce-info::before{color:#1e85be}.woocommerce-error{border-top-color:#b81c23}.woocommerce-error::before{content:'\e016';color:#b81c23}.woocommerce-account .addresses .title::after,.woocommerce-account .addresses .title::before,.woocommerce-account .woocommerce::after,.woocommerce-account .woocommerce::before{content:' ';display:table}.woocommerce-account .addresses .title h3{float:left}.woocommerce-account .addresses .title .edit,.woocommerce-account ul.digital-downloads li .count{float:right}.woocommerce-account ol.commentlist.notes li.note p.meta{font-weight:700;margin-bottom:0}.woocommerce-account ol.commentlist.notes li.note .description p:last-child{margin-bottom:0}.woocommerce-account ul.digital-downloads{margin-left:0;padding-left:0}.woocommerce-account ul.digital-downloads li{list-style:none;margin-left:0;padding-left:0}.woocommerce-account ul.digital-downloads li::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none}#add_payment_method table.cart .product-thumbnail,.woocommerce-cart table.cart .product-thumbnail,.woocommerce-checkout table.cart .product-thumbnail{min-width:32px}#add_payment_method table.cart img,.woocommerce-cart table.cart img,.woocommerce-checkout table.cart img{width:32px;box-shadow:none}#add_payment_method table.cart td,#add_payment_method table.cart th,.woocommerce-cart table.cart td,.woocommerce-cart table.cart th,.woocommerce-checkout table.cart td,.woocommerce-checkout table.cart th{vertical-align:middle}#add_payment_method table.cart td.actions .coupon .input-text,.woocommerce-cart table.cart td.actions .coupon .input-text,.woocommerce-checkout table.cart td.actions .coupon .input-text{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #d3ced2;padding:6px 6px 5px;margin:0 4px 0 0;outline:0;line-height:1}#add_payment_method table.cart input,.woocommerce-cart table.cart input,.woocommerce-checkout table.cart input{margin:0;vertical-align:middle;line-height:1}#add_payment_method .wc-proceed-to-checkout,.woocommerce-cart .wc-proceed-to-checkout,.woocommerce-checkout .wc-proceed-to-checkout{padding:1em 0}#add_payment_method .wc-proceed-to-checkout::after,#add_payment_method .wc-proceed-to-checkout::before,.woocommerce-cart .wc-proceed-to-checkout::after,.woocommerce-cart .wc-proceed-to-checkout::before,.woocommerce-checkout .wc-proceed-to-checkout::after,.woocommerce-checkout .wc-proceed-to-checkout::before{content:' ';display:table}#add_payment_method .wc-proceed-to-checkout a.checkout-button,.woocommerce-cart .wc-proceed-to-checkout a.checkout-button,.woocommerce-checkout .wc-proceed-to-checkout a.checkout-button{display:block;text-align:center;margin-bottom:1em;font-size:1.25em;padding:1em}#add_payment_method .cart-collaterals .shipping_calculator .button,.woocommerce-cart .cart-collaterals .shipping_calculator .button,.woocommerce-checkout .cart-collaterals .shipping_calculator .button{width:100%;float:none;display:block}#add_payment_method .cart-collaterals .shipping_calculator .shipping-calculator-button::after,.woocommerce-cart .cart-collaterals .shipping_calculator .shipping-calculator-button::after,.woocommerce-checkout .cart-collaterals .shipping_calculator .shipping-calculator-button::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-left:.618em;content:"";text-decoration:none}#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::after,#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::before,#add_payment_method #payment ul.payment_methods::after,#add_payment_method #payment ul.payment_methods::before,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::before,.woocommerce-cart #payment ul.payment_methods::after,.woocommerce-cart #payment ul.payment_methods::before,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::before,.woocommerce-checkout #payment ul.payment_methods::after,.woocommerce-checkout #payment ul.payment_methods::before{content:' ';display:table}#add_payment_method .cart-collaterals .cart_totals p small,.woocommerce-cart .cart-collaterals .cart_totals p small,.woocommerce-checkout .cart-collaterals .cart_totals p small{color:#777;font-size:.83em}#add_payment_method .cart-collaterals .cart_totals table,.woocommerce-cart .cart-collaterals .cart_totals table,.woocommerce-checkout .cart-collaterals .cart_totals table{border-collapse:separate;margin:0 0 6px;padding:0}#add_payment_method .cart-collaterals .cart_totals table tr:first-child td,#add_payment_method .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-cart .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-cart .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-checkout .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-checkout .cart-collaterals .cart_totals table tr:first-child th{border-top:0}#add_payment_method .cart-collaterals .cart_totals table th,.woocommerce-cart .cart-collaterals .cart_totals table th,.woocommerce-checkout .cart-collaterals .cart_totals table th{width:40%}#add_payment_method .cart-collaterals .cart_totals table td,#add_payment_method .cart-collaterals .cart_totals table th,.woocommerce-cart .cart-collaterals .cart_totals table td,.woocommerce-cart .cart-collaterals .cart_totals table th,.woocommerce-checkout .cart-collaterals .cart_totals table td,.woocommerce-checkout .cart-collaterals .cart_totals table th{vertical-align:top;border-left:0;border-right:0;line-height:1.5em}#add_payment_method .cart-collaterals .cart_totals table small,.woocommerce-cart .cart-collaterals .cart_totals table small,.woocommerce-checkout .cart-collaterals .cart_totals table small{color:#777}#add_payment_method .cart-collaterals .cart_totals table select,.woocommerce-cart .cart-collaterals .cart_totals table select,.woocommerce-checkout .cart-collaterals .cart_totals table select{width:100%}#add_payment_method .cart-collaterals .cart_totals .discount td,.woocommerce-cart .cart-collaterals .cart_totals .discount td,.woocommerce-checkout .cart-collaterals .cart_totals .discount td{color:#77a464}#add_payment_method .cart-collaterals .cart_totals tr td,#add_payment_method .cart-collaterals .cart_totals tr th,.woocommerce-cart .cart-collaterals .cart_totals tr td,.woocommerce-cart .cart-collaterals .cart_totals tr th,.woocommerce-checkout .cart-collaterals .cart_totals tr td,.woocommerce-checkout .cart-collaterals .cart_totals tr th{border-top:1px solid #ebe9eb}#add_payment_method .cart-collaterals .cross-sells ul.products li.product,.woocommerce-cart .cart-collaterals .cross-sells ul.products li.product,.woocommerce-checkout .cart-collaterals .cross-sells ul.products li.product{margin-top:0}#add_payment_method .checkout .col-2 h3#ship-to-different-address,.woocommerce-cart .checkout .col-2 h3#ship-to-different-address,.woocommerce-checkout .checkout .col-2 h3#ship-to-different-address{float:left;clear:none}#add_payment_method .checkout .col-2 .form-row-first,#add_payment_method .checkout .col-2 .notes,.woocommerce-cart .checkout .col-2 .form-row-first,.woocommerce-cart .checkout .col-2 .notes,.woocommerce-checkout .checkout .col-2 .form-row-first,.woocommerce-checkout .checkout .col-2 .notes{clear:left}#add_payment_method .checkout .create-account small,.woocommerce-cart .checkout .create-account small,.woocommerce-checkout .checkout .create-account small{font-size:11px;color:#777;font-weight:400}#add_payment_method .checkout div.shipping-address,.woocommerce-cart .checkout div.shipping-address,.woocommerce-checkout .checkout div.shipping-address{padding:0;clear:left;width:100%}#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::after,#add_payment_method #payment ul.payment_methods::after,#add_payment_method .checkout .shipping_address,.single-product .twentythirteen p.stars,.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-cart #payment ul.payment_methods::after,.woocommerce-cart .checkout .shipping_address,.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::after,.woocommerce-checkout #payment ul.payment_methods::after,.woocommerce-checkout .checkout .shipping_address{clear:both}#add_payment_method #payment,.woocommerce-cart #payment,.woocommerce-checkout #payment{background:#ebe9eb;border-radius:5px}#add_payment_method #payment ul.payment_methods,.woocommerce-cart #payment ul.payment_methods,.woocommerce-checkout #payment ul.payment_methods{text-align:left;padding:1em;border-bottom:1px solid #d3ced2;margin:0;list-style:none}#add_payment_method #payment ul.payment_methods li,.woocommerce-cart #payment ul.payment_methods li,.woocommerce-checkout #payment ul.payment_methods li{line-height:2;text-align:left;margin:0;font-weight:400}#add_payment_method #payment ul.payment_methods li input,.woocommerce-cart #payment ul.payment_methods li input,.woocommerce-checkout #payment ul.payment_methods li input{margin:0 1em 0 0}#add_payment_method #payment ul.payment_methods li img,.woocommerce-cart #payment ul.payment_methods li img,.woocommerce-checkout #payment ul.payment_methods li img{vertical-align:middle;margin:-2px 0 0 .5em;padding:0;position:relative;box-shadow:none}#add_payment_method #payment ul.payment_methods li img+img,.woocommerce-cart #payment ul.payment_methods li img+img,.woocommerce-checkout #payment ul.payment_methods li img+img{margin-left:2px}#add_payment_method #payment div.form-row,.woocommerce-cart #payment div.form-row,.woocommerce-checkout #payment div.form-row{padding:1em}#add_payment_method #payment div.payment_box,.woocommerce-cart #payment div.payment_box,.woocommerce-checkout #payment div.payment_box{position:relative;box-sizing:border-box;width:100%;padding:1em;margin:1em 0;font-size:.92em;border-radius:2px;line-height:1.5;background-color:#dfdcde;color:#515151}#add_payment_method #payment div.payment_box input.input-text,#add_payment_method #payment div.payment_box textarea,.woocommerce-cart #payment div.payment_box input.input-text,.woocommerce-cart #payment div.payment_box textarea,.woocommerce-checkout #payment div.payment_box input.input-text,.woocommerce-checkout #payment div.payment_box textarea{border-color:#bbb3b9 #c7c1c6 #c7c1c6}#add_payment_method #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-cart #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-checkout #payment div.payment_box ::-webkit-input-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box :-moz-placeholder,.woocommerce-cart #payment div.payment_box :-moz-placeholder,.woocommerce-checkout #payment div.payment_box :-moz-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box :-ms-input-placeholder,.woocommerce-cart #payment div.payment_box :-ms-input-placeholder,.woocommerce-checkout #payment div.payment_box :-ms-input-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods{list-style:none;margin:0}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token{margin:0 0 .5em}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label{cursor:pointer}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput{vertical-align:middle;margin:-3px 1em 0 0;position:relative}#add_payment_method #payment div.payment_box .wc-credit-card-form,.woocommerce-cart #payment div.payment_box .wc-credit-card-form,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form{border:0;padding:0;margin:1em 0 0}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number{font-size:1.5em;padding:8px;background-repeat:no-repeat;background-position:right .618em center;background-size:32px 20px}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.visa,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.visa,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.visa{background-image:url(../images/icons/credit-cards/visa.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.mastercard{background-image:url(../images/icons/credit-cards/mastercard.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.laser,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.laser,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.laser{background-image:url(../images/icons/credit-cards/laser.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.dinersclub{background-image:url(../images/icons/credit-cards/diners.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.maestro{background-image:url(../images/icons/credit-cards/maestro.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.jcb{background-image:url(../images/icons/credit-cards/jcb.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.amex,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.amex,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.amex{background-image:url(../images/icons/credit-cards/amex.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.discover,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.discover,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.discover{background-image:url(../images/icons/credit-cards/discover.svg)}#add_payment_method #payment div.payment_box span.help,.woocommerce-cart #payment div.payment_box span.help,.woocommerce-checkout #payment div.payment_box span.help{font-size:.857em;color:#777;font-weight:400}#add_payment_method #payment div.payment_box .form-row,.woocommerce-cart #payment div.payment_box .form-row,.woocommerce-checkout #payment div.payment_box .form-row{margin:0 0 1em}#add_payment_method #payment div.payment_box p:last-child,.woocommerce-cart #payment div.payment_box p:last-child,.woocommerce-checkout #payment div.payment_box p:last-child{margin-bottom:0}#add_payment_method #payment div.payment_box::before,.woocommerce-cart #payment div.payment_box::before,.woocommerce-checkout #payment div.payment_box::before{content:'';display:block;border:1em solid #dfdcde;border-right-color:transparent;border-left-color:transparent;border-top-color:transparent;position:absolute;top:-.75em;left:0;margin:-1em 0 0 2em}#add_payment_method #payment .payment_method_paypal .about_paypal,.woocommerce-cart #payment .payment_method_paypal .about_paypal,.woocommerce-checkout #payment .payment_method_paypal .about_paypal{float:right;line-height:52px;font-size:.83em}#add_payment_method #payment .payment_method_paypal img,.woocommerce-cart #payment .payment_method_paypal img,.woocommerce-checkout #payment .payment_method_paypal img{max-height:52px;vertical-align:middle}.woocommerce-password-strength{text-align:center;font-weight:600;padding:3px .5em;font-size:1em}.woocommerce-password-strength.strong{background-color:#c1e1b9;border-color:#83c373}.woocommerce-password-strength.short{background-color:#f1adad;border-color:#e35b5b}.woocommerce-password-strength.bad{background-color:#fbc5a9;border-color:#f78b53}.woocommerce-password-strength.good{background-color:#ffe399;border-color:#ffc733}.woocommerce-password-hint{margin:.5em 0 0;display:block}#content.twentyeleven .woocommerce-pagination a{font-size:1em;line-height:1}.single-product .twentythirteen #reply-title,.single-product .twentythirteen #respond #commentform,.single-product .twentythirteen .entry-summary{padding:0}.twentythirteen .woocommerce-breadcrumb{padding-top:40px}.twentyfourteen ul.products li.product{margin-top:0!important}body:not(.search-results) .twentysixteen .entry-summary{color:inherit;font-size:inherit;line-height:inherit}.twentysixteen .price ins{background:inherit;color:inherit} \ No newline at end of file From d6b2fbedc0feca6c54d4c58202898b7a5025ed8c Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 4 Apr 2017 09:23:49 -0300 Subject: [PATCH 225/525] POT --- i18n/languages/woocommerce.pot | 549 +++++++++++++++++---------------- 1 file changed, 277 insertions(+), 272 deletions(-) diff --git a/i18n/languages/woocommerce.pot b/i18n/languages/woocommerce.pot index cbcf718b18d..05e2d7c20e0 100644 --- a/i18n/languages/woocommerce.pot +++ b/i18n/languages/woocommerce.pot @@ -2,9 +2,9 @@ # This file is distributed under the same license as the WooCommerce package. msgid "" msgstr "" -"Project-Id-Version: WooCommerce 3.0.0-rc.1\n" +"Project-Id-Version: WooCommerce 3.0.0-rc.2\n" "Report-Msgid-Bugs-To: https://github.com/woocommerce/woocommerce/issues\n" -"POT-Creation-Date: 2017-03-24 15:11:43+00:00\n" +"POT-Creation-Date: 2017-04-04 12:23:31+00:00\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -5140,35 +5140,35 @@ msgstr "" msgid "Invalid parent ID" msgstr "" -#: includes/abstracts/abstract-wc-order.php:509 +#: includes/abstracts/abstract-wc-order.php:512 msgid "Invalid currency code" msgstr "" -#: includes/abstracts/abstract-wc-order.php:1394 +#: includes/abstracts/abstract-wc-order.php:1397 #. translators: %s: shipping method msgid "via %s" msgstr "" -#: includes/abstracts/abstract-wc-order.php:1399 +#: includes/abstracts/abstract-wc-order.php:1402 #: includes/class-wc-cart.php:1614 includes/class-wc-product-grouped.php:100 msgid "Free!" msgstr "" -#: includes/abstracts/abstract-wc-order.php:1424 +#: includes/abstracts/abstract-wc-order.php:1427 msgid "Subtotal:" msgstr "" -#: includes/abstracts/abstract-wc-order.php:1439 +#: includes/abstracts/abstract-wc-order.php:1442 #: includes/admin/meta-boxes/views/html-order-items.php:121 msgid "Discount:" msgstr "" -#: includes/abstracts/abstract-wc-order.php:1454 +#: includes/abstracts/abstract-wc-order.php:1457 #: includes/admin/meta-boxes/views/html-order-items.php:131 msgid "Shipping:" msgstr "" -#: includes/abstracts/abstract-wc-order.php:1513 +#: includes/abstracts/abstract-wc-order.php:1516 #: includes/admin/meta-boxes/views/html-order-item.php:97 #: includes/admin/meta-boxes/views/html-order-item.php:143 #: includes/shortcodes/class-wc-shortcode-checkout.php:144 @@ -5206,18 +5206,18 @@ msgstr "" msgid "The downloadable file %s cannot be used as it does not exist on the server." msgstr "" -#: includes/abstracts/abstract-wc-product.php:1692 +#: includes/abstracts/abstract-wc-product.php:1703 #: includes/class-wc-product-simple.php:54 msgid "Add to cart" msgstr "" -#: includes/abstracts/abstract-wc-product.php:1701 +#: includes/abstracts/abstract-wc-product.php:1712 #: includes/class-wc-embed.php:112 includes/class-wc-product-simple.php:54 #: includes/class-wc-product-variable.php:60 msgid "Read more" msgstr "" -#: includes/abstracts/abstract-wc-product.php:1853 +#: includes/abstracts/abstract-wc-product.php:1864 #: includes/admin/class-wc-admin-post-types.php:438 #: includes/admin/class-wc-admin-reports.php:100 #: includes/admin/reports/class-wc-report-stock.php:110 @@ -5225,7 +5225,7 @@ msgstr "" msgid "Out of stock" msgstr "" -#: includes/abstracts/abstract-wc-product.php:1855 templates/cart/cart.php:91 +#: includes/abstracts/abstract-wc-product.php:1866 templates/cart/cart.php:91 msgid "Available on backorder" msgstr "" @@ -5323,7 +5323,7 @@ msgstr "" #: includes/api/v1/class-wc-rest-order-refunds-controller.php:282 #: includes/api/v1/class-wc-rest-orders-controller.php:814 #: includes/api/v1/class-wc-rest-products-controller.php:739 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:145 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:155 #. translators: %s: post type msgid "Cannot create existing %s." msgstr "" @@ -5361,7 +5361,7 @@ msgstr "" #: includes/api/class-wc-rest-products-controller.php:1329 #: includes/api/v1/class-wc-rest-order-notes-controller.php:313 #: includes/api/v1/class-wc-rest-products-controller.php:1702 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:332 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:342 #. translators: %s: post type msgid "The %s cannot be deleted." msgstr "" @@ -5494,7 +5494,7 @@ msgstr "" #: includes/api/v1/class-wc-rest-coupons-controller.php:351 #: includes/api/v1/class-wc-rest-orders-controller.php:853 #: includes/api/v1/class-wc-rest-products-controller.php:784 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:234 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:244 msgid "ID is invalid." msgstr "" @@ -5552,7 +5552,7 @@ msgstr "" #: includes/api/class-wc-rest-shipping-zones-controller.php:275 #: includes/api/class-wc-rest-system-status-tools-controller.php:54 #: includes/api/class-wc-rest-webhook-deliveries.php:80 -#: includes/api/class-wc-rest-webhooks-controller.php:87 +#: includes/api/class-wc-rest-webhooks-controller.php:97 #: includes/api/v1/class-wc-rest-coupons-controller.php:82 #: includes/api/v1/class-wc-rest-customer-downloads-controller.php:46 #: includes/api/v1/class-wc-rest-customers-controller.php:78 @@ -5580,7 +5580,7 @@ msgstr "" #: includes/api/v1/class-wc-rest-webhook-deliveries.php:66 #: includes/api/v1/class-wc-rest-webhook-deliveries.php:234 #: includes/api/v1/class-wc-rest-webhooks-controller.php:92 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:488 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:498 msgid "Unique identifier for the resource." msgstr "" @@ -5648,7 +5648,7 @@ msgid "Limit result set to resources with a specific slug." msgstr "" #: includes/abstracts/abstract-wc-settings-api.php:735 -#: includes/admin/class-wc-admin-menus.php:270 +#: includes/admin/class-wc-admin-menus.php:279 #: includes/admin/class-wc-admin-settings.php:607 #: includes/admin/meta-boxes/views/html-product-attribute.php:45 msgid "Select all" @@ -5695,7 +5695,7 @@ msgstr "" #: includes/admin/class-wc-admin-api-keys-table-list.php:40 #: includes/admin/class-wc-admin-post-types.php:286 -#: includes/admin/class-wc-admin-setup-wizard.php:225 +#: includes/admin/class-wc-admin-setup-wizard.php:248 #: includes/admin/meta-boxes/views/html-variation-admin.php:307 #: includes/admin/settings/class-wc-settings-shipping.php:339 #: includes/admin/settings/views/html-admin-page-shipping-zone-methods.php:73 @@ -5959,7 +5959,7 @@ msgstr "" #: includes/admin/class-wc-admin-attributes.php:454 #: includes/admin/class-wc-admin-attributes.php:495 #: includes/admin/class-wc-admin-post-types.php:254 -#: includes/admin/class-wc-admin-setup-wizard.php:465 +#: includes/admin/class-wc-admin-setup-wizard.php:488 #: includes/admin/class-wc-admin-webhooks-table-list.php:40 #: includes/admin/meta-boxes/views/html-product-attribute.php:12 #: includes/admin/meta-boxes/views/html-product-data-general.php:61 @@ -6228,7 +6228,7 @@ msgstr "" #: includes/admin/meta-boxes/views/html-product-variation-download.php:8 #: includes/admin/settings/views/html-admin-page-shipping-zone-methods.php:107 #: includes/admin/settings/views/html-admin-page-shipping-zones.php:78 -#: includes/wc-account-functions.php:264 +#: includes/wc-account-functions.php:269 msgid "Delete" msgstr "" @@ -6739,11 +6739,17 @@ msgstr "" msgid "WooCommerce endpoints" msgstr "" -#: includes/admin/class-wc-admin-menus.php:273 +#: includes/admin/class-wc-admin-menus.php:250 +#: includes/admin/settings/class-wc-settings-accounts.php:167 +#: includes/class-wc-query.php:125 +msgid "Lost password" +msgstr "" + +#: includes/admin/class-wc-admin-menus.php:282 msgid "Add to menu" msgstr "" -#: includes/admin/class-wc-admin-menus.php:306 +#: includes/admin/class-wc-admin-menus.php:315 msgid "Visit Store" msgstr "" @@ -7028,9 +7034,9 @@ msgstr "" #: includes/admin/class-wc-admin-post-types.php:164 #: includes/admin/class-wc-admin-post-types.php:182 #: includes/admin/settings/views/html-webhook-log.php:10 -#: includes/admin/settings/views/html-webhooks-edit.php:142 -#: includes/admin/settings/views/html-webhooks-edit.php:151 -#: includes/admin/settings/views/html-webhooks-edit.php:159 +#: includes/admin/settings/views/html-webhooks-edit.php:143 +#: includes/admin/settings/views/html-webhooks-edit.php:152 +#: includes/admin/settings/views/html-webhooks-edit.php:160 msgid "M j, Y @ G:i" msgstr "" @@ -7247,11 +7253,11 @@ msgstr "" #: includes/admin/reports/class-wc-report-coupon-usage.php:351 #: includes/admin/reports/class-wc-report-customers.php:227 #: includes/admin/reports/class-wc-report-sales-by-category.php:264 -#: includes/admin/reports/class-wc-report-sales-by-date.php:516 +#: includes/admin/reports/class-wc-report-sales-by-date.php:517 #: includes/admin/reports/class-wc-report-sales-by-product.php:377 #: includes/admin/settings/views/html-webhook-logs.php:17 #: includes/admin/settings/views/html-webhook-logs.php:25 -#: includes/wc-account-functions.php:179 +#: includes/wc-account-functions.php:184 #: includes/widgets/class-wc-widget-products.php:55 #: templates/myaccount/my-orders.php:14 msgid "Date" @@ -7267,7 +7273,7 @@ msgstr "" #: includes/admin/class-wc-admin-post-types.php:285 #: includes/admin/meta-boxes/class-wc-meta-box-coupon-data.php:78 -#: includes/admin/reports/class-wc-report-sales-by-date.php:636 +#: includes/admin/reports/class-wc-report-sales-by-date.php:637 msgid "Coupon amount" msgstr "" @@ -7288,14 +7294,14 @@ msgstr "" #: includes/admin/meta-boxes/views/html-product-data-variations.php:44 #: includes/admin/settings/views/html-webhook-log.php:25 #: includes/admin/settings/views/html-webhooks-edit.php:28 -#: includes/wc-account-functions.php:180 templates/myaccount/my-orders.php:15 +#: includes/wc-account-functions.php:185 templates/myaccount/my-orders.php:15 msgid "Status" msgstr "" #: includes/admin/class-wc-admin-post-types.php:303 #: includes/admin/meta-boxes/class-wc-meta-box-order-data.php:165 #: includes/gateways/paypal/includes/class-wc-gateway-paypal-request.php:204 -#: includes/wc-account-functions.php:178 templates/myaccount/my-orders.php:13 +#: includes/wc-account-functions.php:183 templates/myaccount/my-orders.php:13 msgid "Order" msgstr "" @@ -7319,7 +7325,7 @@ msgstr "" #: includes/admin/class-wc-admin-post-types.php:309 #: includes/admin/meta-boxes/views/html-order-items.php:32 #: includes/admin/reports/class-wc-report-taxes-by-code.php:177 -#: includes/wc-account-functions.php:181 templates/cart/cart-totals.php:92 +#: includes/wc-account-functions.php:186 templates/cart/cart-totals.php:92 #: templates/cart/cart-totals.php:93 templates/cart/cart.php:38 #: templates/cart/cart.php:119 templates/checkout/review-order.php:27 #: templates/checkout/review-order.php:106 templates/myaccount/my-orders.php:16 @@ -7558,7 +7564,7 @@ msgid "OK" msgstr "" #: includes/admin/class-wc-admin-post-types.php:1821 -#: includes/admin/meta-boxes/views/html-order-items.php:222 +#: includes/admin/meta-boxes/views/html-order-items.php:226 #: includes/admin/meta-boxes/views/html-order-items.php:268 #: includes/admin/meta-boxes/views/html-product-data-general.php:47 #: includes/admin/meta-boxes/views/html-product-data-variations.php:108 @@ -7589,7 +7595,7 @@ msgid "Ready to start selling something awesome?" msgstr "" #: includes/admin/class-wc-admin-post-types.php:1933 -#: includes/admin/class-wc-admin-setup-wizard.php:765 +#: includes/admin/class-wc-admin-setup-wizard.php:788 msgid "Create your first product!" msgstr "" @@ -7676,7 +7682,7 @@ msgstr "" #: includes/admin/class-wc-admin-profile.php:125 #: includes/admin/class-wc-admin-settings.php:574 #: includes/admin/class-wc-admin-settings.php:599 -#: includes/admin/class-wc-admin-setup-wizard.php:462 +#: includes/admin/class-wc-admin-setup-wizard.php:485 #: includes/admin/meta-boxes/class-wc-meta-box-order-data.php:71 #: includes/admin/meta-boxes/class-wc-meta-box-order-data.php:120 #: includes/class-wc-countries.php:574 @@ -7732,7 +7738,7 @@ msgstr "" #: includes/admin/reports/class-wc-report-customer-list.php:212 #: includes/admin/settings/class-wc-settings-accounts.php:113 #: includes/class-wc-post-types.php:318 includes/class-wc-query.php:101 -#: includes/wc-account-functions.php:92 +#: includes/wc-account-functions.php:97 msgid "Orders" msgstr "" @@ -7808,7 +7814,7 @@ msgid "Select a page…" msgstr "" #: includes/admin/class-wc-admin-settings.php:574 -#: includes/admin/class-wc-admin-setup-wizard.php:298 +#: includes/admin/class-wc-admin-setup-wizard.php:321 msgid "Choose a country…" msgstr "" @@ -7821,7 +7827,7 @@ msgid "Introduction" msgstr "" #: includes/admin/class-wc-admin-setup-wizard.php:64 -#: includes/admin/class-wc-admin-setup-wizard.php:218 +#: includes/admin/class-wc-admin-setup-wizard.php:241 msgid "Page setup" msgstr "" @@ -7834,7 +7840,7 @@ msgid "Shipping & tax" msgstr "" #: includes/admin/class-wc-admin-setup-wizard.php:79 -#: includes/admin/class-wc-admin-setup-wizard.php:642 +#: includes/admin/class-wc-admin-setup-wizard.php:665 msgid "Payments" msgstr "" @@ -7842,72 +7848,72 @@ msgstr "" msgid "Ready!" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:145 +#: includes/admin/class-wc-admin-setup-wizard.php:168 msgid "WooCommerce › Setup Wizard" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:161 +#: includes/admin/class-wc-admin-setup-wizard.php:184 msgid "Return to the WordPress Dashboard" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:203 +#: includes/admin/class-wc-admin-setup-wizard.php:226 msgid "Welcome to the world of WooCommerce!" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:204 +#: includes/admin/class-wc-admin-setup-wizard.php:227 msgid "" "Thank you for choosing WooCommerce to power your online store! This quick " "setup wizard will help you configure the basic settings. It’s " "completely optional and shouldn’t take longer than five minutes." msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:205 +#: includes/admin/class-wc-admin-setup-wizard.php:228 msgid "" "No time right now? If you don’t want to go through the wizard, you can skip " "and return to the WordPress dashboard. Come back anytime if you change your " "mind!" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:207 +#: includes/admin/class-wc-admin-setup-wizard.php:230 msgid "Let's go!" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:208 +#: includes/admin/class-wc-admin-setup-wizard.php:231 msgid "Not right now" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:220 +#: includes/admin/class-wc-admin-setup-wizard.php:243 msgid "" "Your store needs a few essential pages. The following will be created automatically " "(if they do not already exist):" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:224 +#: includes/admin/class-wc-admin-setup-wizard.php:247 msgid "Page name" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:231 +#: includes/admin/class-wc-admin-setup-wizard.php:254 msgid "The shop page will display your products." msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:235 +#: includes/admin/class-wc-admin-setup-wizard.php:258 msgid "" "The cart page will be where the customers go to view their cart and begin " "checkout." msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:240 +#: includes/admin/class-wc-admin-setup-wizard.php:263 msgid "The checkout page will be where the customers go to pay for their items." msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:246 +#: includes/admin/class-wc-admin-setup-wizard.php:269 msgid "" "Registered customers will be able to manage their account details and view " "past orders on this page." msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:252 +#: includes/admin/class-wc-admin-setup-wizard.php:275 msgid "" "Once created, these pages can be managed from your admin dashboard on the " "Pages screen. You can control which " @@ -7915,269 +7921,269 @@ msgid "" "target=\"_blank\">Appearance > Menus." msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:255 -#: includes/admin/class-wc-admin-setup-wizard.php:371 -#: includes/admin/class-wc-admin-setup-wizard.php:492 -#: includes/admin/class-wc-admin-setup-wizard.php:685 +#: includes/admin/class-wc-admin-setup-wizard.php:278 +#: includes/admin/class-wc-admin-setup-wizard.php:394 +#: includes/admin/class-wc-admin-setup-wizard.php:515 +#: includes/admin/class-wc-admin-setup-wizard.php:708 msgid "Continue" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:256 -#: includes/admin/class-wc-admin-setup-wizard.php:372 -#: includes/admin/class-wc-admin-setup-wizard.php:493 -#: includes/admin/class-wc-admin-setup-wizard.php:686 +#: includes/admin/class-wc-admin-setup-wizard.php:279 +#: includes/admin/class-wc-admin-setup-wizard.php:395 +#: includes/admin/class-wc-admin-setup-wizard.php:516 +#: includes/admin/class-wc-admin-setup-wizard.php:709 msgid "Skip this step" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:292 +#: includes/admin/class-wc-admin-setup-wizard.php:315 msgid "Store locale setup" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:296 +#: includes/admin/class-wc-admin-setup-wizard.php:319 msgid "Where is your store based?" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:304 +#: includes/admin/class-wc-admin-setup-wizard.php:327 msgid "Which currency will your store use?" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:306 -#: includes/admin/class-wc-admin-setup-wizard.php:307 +#: includes/admin/class-wc-admin-setup-wizard.php:329 +#: includes/admin/class-wc-admin-setup-wizard.php:330 msgid "Choose a currency…" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:310 +#: includes/admin/class-wc-admin-setup-wizard.php:333 #: includes/admin/meta-boxes/views/html-order-items.php:39 #: includes/admin/views/html-bulk-edit-product.php:133 msgid "%1$s (%2$s)" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:314 +#: includes/admin/class-wc-admin-setup-wizard.php:337 msgid "" "If your currency is not listed you can add " "it later." msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:318 +#: includes/admin/class-wc-admin-setup-wizard.php:341 #: includes/admin/settings/class-wc-settings-general.php:179 #: includes/admin/views/html-admin-page-status-report.php:431 msgid "Currency position" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:321 +#: includes/admin/class-wc-admin-setup-wizard.php:344 #: includes/admin/settings/class-wc-settings-general.php:187 msgid "Left" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:322 +#: includes/admin/class-wc-admin-setup-wizard.php:345 #: includes/admin/settings/class-wc-settings-general.php:188 msgid "Right" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:323 +#: includes/admin/class-wc-admin-setup-wizard.php:346 #: includes/admin/settings/class-wc-settings-general.php:189 msgid "Left with space" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:324 +#: includes/admin/class-wc-admin-setup-wizard.php:347 #: includes/admin/settings/class-wc-settings-general.php:190 msgid "Right with space" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:329 +#: includes/admin/class-wc-admin-setup-wizard.php:352 #: includes/admin/settings/class-wc-settings-general.php:196 #: includes/admin/views/html-admin-page-status-report.php:436 msgid "Thousand separator" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:335 +#: includes/admin/class-wc-admin-setup-wizard.php:358 #: includes/admin/settings/class-wc-settings-general.php:206 #: includes/admin/views/html-admin-page-status-report.php:441 msgid "Decimal separator" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:341 +#: includes/admin/class-wc-admin-setup-wizard.php:364 #: includes/admin/settings/class-wc-settings-general.php:216 #: includes/admin/views/html-admin-page-status-report.php:446 msgid "Number of decimals" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:347 +#: includes/admin/class-wc-admin-setup-wizard.php:370 msgid "Which unit should be used for product weights?" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:350 +#: includes/admin/class-wc-admin-setup-wizard.php:373 #: includes/admin/settings/class-wc-settings-products.php:429 msgid "kg" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:351 +#: includes/admin/class-wc-admin-setup-wizard.php:374 #: includes/admin/settings/class-wc-settings-products.php:430 msgid "g" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:352 +#: includes/admin/class-wc-admin-setup-wizard.php:375 #: includes/admin/settings/class-wc-settings-products.php:431 msgid "lbs" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:353 +#: includes/admin/class-wc-admin-setup-wizard.php:376 #: includes/admin/settings/class-wc-settings-products.php:432 msgid "oz" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:358 +#: includes/admin/class-wc-admin-setup-wizard.php:381 msgid "Which unit should be used for product dimensions?" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:361 +#: includes/admin/class-wc-admin-setup-wizard.php:384 #: includes/admin/meta-boxes/class-wc-meta-box-order-data.php:216 #: includes/admin/settings/class-wc-settings-products.php:446 msgid "m" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:362 +#: includes/admin/class-wc-admin-setup-wizard.php:385 #: includes/admin/settings/class-wc-settings-products.php:447 msgid "cm" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:363 +#: includes/admin/class-wc-admin-setup-wizard.php:386 #: includes/admin/settings/class-wc-settings-products.php:448 msgid "mm" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:364 +#: includes/admin/class-wc-admin-setup-wizard.php:387 #: includes/admin/settings/class-wc-settings-products.php:449 msgid "in" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:365 +#: includes/admin/class-wc-admin-setup-wizard.php:388 #: includes/admin/settings/class-wc-settings-products.php:450 msgid "yd" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:412 +#: includes/admin/class-wc-admin-setup-wizard.php:435 msgid "Shipping & Tax setup" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:414 +#: includes/admin/class-wc-admin-setup-wizard.php:437 msgid "" "If you will be charging sales tax, or shipping physical goods to customers, " "you can enable these below. This is optional and can be changed later." msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:417 +#: includes/admin/class-wc-admin-setup-wizard.php:440 msgid "Will you be shipping products?" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:420 +#: includes/admin/class-wc-admin-setup-wizard.php:443 msgid "Yes, I will be shipping physical goods to customers" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:424 +#: includes/admin/class-wc-admin-setup-wizard.php:447 msgid "Will you be charging sales tax?" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:427 +#: includes/admin/class-wc-admin-setup-wizard.php:450 msgid "Yes, I will be charging sales tax" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:431 +#: includes/admin/class-wc-admin-setup-wizard.php:454 msgid "How will you enter product prices?" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:433 +#: includes/admin/class-wc-admin-setup-wizard.php:456 msgid "I will enter prices inclusive of tax" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:434 +#: includes/admin/class-wc-admin-setup-wizard.php:457 msgid "I will enter prices exclusive of tax" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:457 +#: includes/admin/class-wc-admin-setup-wizard.php:480 msgid "" "The following tax rates will be imported automatically for you. You can " "read more about taxes in our " "documentation." msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:463 +#: includes/admin/class-wc-admin-setup-wizard.php:486 #: includes/class-wc-countries.php:677 includes/class-wc-countries.php:987 msgid "State" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:464 +#: includes/admin/class-wc-admin-setup-wizard.php:487 msgid "Rate (%)" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:484 +#: includes/admin/class-wc-admin-setup-wizard.php:507 msgid "" "You may need to add/edit rates based on your products or business location " "which can be done from the tax " "settings screen. If in doubt, speak to an accountant." msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:565 +#: includes/admin/class-wc-admin-setup-wizard.php:588 msgid "PayPal by Braintree" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:567 -#: includes/admin/class-wc-admin-setup-wizard.php:574 +#: includes/admin/class-wc-admin-setup-wizard.php:590 +#: includes/admin/class-wc-admin-setup-wizard.php:597 msgid "" "Safe and secure payments using credit cards or your customer's PayPal " "account. Learn more about PayPal." msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:572 +#: includes/admin/class-wc-admin-setup-wizard.php:595 msgid "PayPal Express Checkout" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:579 +#: includes/admin/class-wc-admin-setup-wizard.php:602 msgid "Stripe" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:581 +#: includes/admin/class-wc-admin-setup-wizard.php:604 msgid "" "A modern and robust way to accept credit card payments on your store. Learn more about Stripe." msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:586 +#: includes/admin/class-wc-admin-setup-wizard.php:609 msgid "PayPal Standard" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:587 +#: includes/admin/class-wc-admin-setup-wizard.php:610 msgid "Accept payments via PayPal using account balance or credit card." msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:592 -#: includes/admin/class-wc-admin-setup-wizard.php:595 +#: includes/admin/class-wc-admin-setup-wizard.php:615 +#: includes/admin/class-wc-admin-setup-wizard.php:618 msgid "PayPal email address" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:601 +#: includes/admin/class-wc-admin-setup-wizard.php:624 msgid "A simple offline gateway that lets you accept a check as method of payment." msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:606 +#: includes/admin/class-wc-admin-setup-wizard.php:629 msgid "Bank transfer (BACS) payments" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:607 +#: includes/admin/class-wc-admin-setup-wizard.php:630 msgid "A simple offline gateway that lets you accept BACS payment." msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:612 +#: includes/admin/class-wc-admin-setup-wizard.php:635 #: includes/gateways/cod/class-wc-gateway-cod.php:51 #: includes/gateways/cod/class-wc-gateway-cod.php:78 msgid "Cash on delivery" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:613 +#: includes/admin/class-wc-admin-setup-wizard.php:636 msgid "A simple offline gateway that lets you accept cash on delivery." msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:644 +#: includes/admin/class-wc-admin-setup-wizard.php:667 msgid "" "WooCommerce can accept both online and offline payments. Additional payment methods can be installed later and " @@ -8185,46 +8191,46 @@ msgid "" "screen." msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:749 +#: includes/admin/class-wc-admin-setup-wizard.php:772 msgid "Your store is ready!" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:753 +#: includes/admin/class-wc-admin-setup-wizard.php:776 msgid "" "Want to help make WooCommerce even more awesome? Allow WooCommerce to " "collect non-sensitive diagnostic data and usage information. %1$sFind out " "more%2$s." msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:755 +#: includes/admin/class-wc-admin-setup-wizard.php:778 #: includes/admin/views/html-notice-tracking.php:13 #: includes/wc-product-functions.php:817 msgid "Allow" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:756 +#: includes/admin/class-wc-admin-setup-wizard.php:779 msgid "No thanks" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:763 +#: includes/admin/class-wc-admin-setup-wizard.php:786 msgid "Next steps" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:769 +#: includes/admin/class-wc-admin-setup-wizard.php:792 #: includes/admin/meta-boxes/views/html-product-data-variations.php:8 #: includes/gateways/simplify-commerce/class-wc-gateway-simplify-commerce.php:98 msgid "Learn more" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:771 +#: includes/admin/class-wc-admin-setup-wizard.php:794 msgid "Watch the Guided Tour videos" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:772 +#: includes/admin/class-wc-admin-setup-wizard.php:795 msgid "Get eCommerce advice in your inbox" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:773 +#: includes/admin/class-wc-admin-setup-wizard.php:796 msgid "Learn more about getting started" msgstr "" @@ -8340,7 +8346,7 @@ msgstr "" #: includes/admin/class-wc-admin-webhooks-table-list.php:109 #: includes/admin/class-wc-admin-webhooks-table-list.php:251 #: includes/admin/meta-boxes/class-wc-meta-box-order-actions.php:78 -#: includes/admin/settings/views/html-webhooks-edit.php:169 +#: includes/admin/settings/views/html-webhooks-edit.php:170 msgid "Delete permanently" msgstr "" @@ -8364,7 +8370,7 @@ msgstr "" #: includes/admin/class-wc-admin-webhooks-table-list.php:256 #: includes/admin/meta-boxes/class-wc-meta-box-order-actions.php:80 -#: includes/admin/settings/views/html-webhooks-edit.php:169 +#: includes/admin/settings/views/html-webhooks-edit.php:170 msgid "Move to trash" msgstr "" @@ -8376,7 +8382,7 @@ msgstr "" #: includes/admin/class-wc-admin-webhooks.php:217 #: includes/api/legacy/v2/class-wc-api-webhooks.php:198 #: includes/api/legacy/v3/class-wc-api-webhooks.php:198 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:369 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:379 #. translators: %s: date` #. translators: %s: date msgid "Webhook created on %s" @@ -8856,7 +8862,7 @@ msgstr "" #: includes/shipping/legacy-flat-rate/includes/settings-flat-rate.php:84 #: includes/shipping/legacy-flat-rate/includes/settings-flat-rate.php:93 #: includes/shipping/legacy-free-shipping/class-wc-shipping-legacy-free-shipping.php:122 -#: includes/wc-account-functions.php:259 +#: includes/wc-account-functions.php:264 #: includes/wc-formatting-functions.php:1039 #: includes/wc-formatting-functions.php:1058 #: templates/order/order-details-customer.php:66 @@ -9036,7 +9042,7 @@ msgstr[0] "" msgstr[1] "" #: includes/admin/meta-boxes/views/html-order-download-permission.php:26 -#: includes/wc-account-functions.php:198 +#: includes/wc-account-functions.php:203 msgid "Downloads remaining" msgstr "" @@ -9206,7 +9212,7 @@ msgstr "" msgid "Add shipping cost" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:223 +#: includes/admin/meta-boxes/views/html-order-items.php:227 #: templates/myaccount/form-reset-password.php:47 msgid "Save" msgstr "" @@ -9224,7 +9230,7 @@ msgid "Total available to refund" msgstr "" #: includes/admin/meta-boxes/views/html-order-items.php:245 -#: includes/admin/reports/class-wc-report-sales-by-date.php:676 +#: includes/admin/reports/class-wc-report-sales-by-date.php:677 msgid "Refund amount" msgstr "" @@ -9922,19 +9928,19 @@ msgstr[0] "" msgstr[1] "" #: includes/admin/reports/class-wc-report-coupon-usage.php:109 -#. translators: %s: discount ammount +#. translators: %s: discount amount msgid "%s discounts in total" msgstr "" #: includes/admin/reports/class-wc-report-coupon-usage.php:116 -#. translators: %s: coupons ammount +#. translators: %s: coupons amount msgid "%s coupons used in total" msgstr "" #: includes/admin/reports/class-wc-report-coupon-usage.php:130 #: includes/admin/reports/class-wc-report-customers.php:163 #: includes/admin/reports/class-wc-report-sales-by-category.php:114 -#: includes/admin/reports/class-wc-report-sales-by-date.php:476 +#: includes/admin/reports/class-wc-report-sales-by-date.php:477 #: includes/admin/reports/class-wc-report-sales-by-product.php:128 #: includes/admin/reports/class-wc-report-taxes-by-code.php:49 #: includes/admin/reports/class-wc-report-taxes-by-date.php:49 @@ -9944,7 +9950,7 @@ msgstr "" #: includes/admin/reports/class-wc-report-coupon-usage.php:131 #: includes/admin/reports/class-wc-report-customers.php:164 #: includes/admin/reports/class-wc-report-sales-by-category.php:115 -#: includes/admin/reports/class-wc-report-sales-by-date.php:477 +#: includes/admin/reports/class-wc-report-sales-by-date.php:478 #: includes/admin/reports/class-wc-report-sales-by-product.php:129 #: includes/admin/reports/class-wc-report-taxes-by-code.php:50 #: includes/admin/reports/class-wc-report-taxes-by-date.php:50 @@ -9954,7 +9960,7 @@ msgstr "" #: includes/admin/reports/class-wc-report-coupon-usage.php:132 #: includes/admin/reports/class-wc-report-customers.php:165 #: includes/admin/reports/class-wc-report-sales-by-category.php:116 -#: includes/admin/reports/class-wc-report-sales-by-date.php:478 +#: includes/admin/reports/class-wc-report-sales-by-date.php:479 #: includes/admin/reports/class-wc-report-sales-by-product.php:130 #: includes/admin/reports/class-wc-report-taxes-by-code.php:51 #: includes/admin/reports/class-wc-report-taxes-by-date.php:51 @@ -9964,7 +9970,7 @@ msgstr "" #: includes/admin/reports/class-wc-report-coupon-usage.php:133 #: includes/admin/reports/class-wc-report-customers.php:166 #: includes/admin/reports/class-wc-report-sales-by-category.php:117 -#: includes/admin/reports/class-wc-report-sales-by-date.php:479 +#: includes/admin/reports/class-wc-report-sales-by-date.php:480 #: includes/admin/reports/class-wc-report-sales-by-product.php:131 msgid "Last 7 days" msgstr "" @@ -10008,7 +10014,7 @@ msgstr "" #: includes/admin/reports/class-wc-report-coupon-usage.php:354 #: includes/admin/reports/class-wc-report-customers.php:230 #: includes/admin/reports/class-wc-report-sales-by-category.php:267 -#: includes/admin/reports/class-wc-report-sales-by-date.php:520 +#: includes/admin/reports/class-wc-report-sales-by-date.php:521 #: includes/admin/reports/class-wc-report-sales-by-product.php:380 #: includes/admin/reports/class-wc-report-taxes-by-code.php:38 #: includes/admin/reports/class-wc-report-taxes-by-date.php:38 @@ -10088,7 +10094,7 @@ msgid "Last order" msgstr "" #: includes/admin/reports/class-wc-report-customers.php:41 -#. translators: %s: signups ammount +#. translators: %s: signups amount msgid "%s signups in this period" msgstr "" @@ -10159,103 +10165,103 @@ msgstr "" msgid "Choose a category to view stats" msgstr "" -#: includes/admin/reports/class-wc-report-sales-by-date.php:359 +#: includes/admin/reports/class-wc-report-sales-by-date.php:360 #. translators: %s: average total sales msgid "%s average gross daily sales" msgstr "" -#: includes/admin/reports/class-wc-report-sales-by-date.php:364 +#: includes/admin/reports/class-wc-report-sales-by-date.php:365 #. translators: %s: average sales msgid "%s average net daily sales" msgstr "" -#: includes/admin/reports/class-wc-report-sales-by-date.php:372 +#: includes/admin/reports/class-wc-report-sales-by-date.php:373 #. translators: %s: average total sales msgid "%s average gross monthly sales" msgstr "" -#: includes/admin/reports/class-wc-report-sales-by-date.php:377 +#: includes/admin/reports/class-wc-report-sales-by-date.php:378 #. translators: %s: average sales msgid "%s average net monthly sales" msgstr "" -#: includes/admin/reports/class-wc-report-sales-by-date.php:386 +#: includes/admin/reports/class-wc-report-sales-by-date.php:387 #. translators: %s: total sales msgid "%s gross sales in this period" msgstr "" -#: includes/admin/reports/class-wc-report-sales-by-date.php:389 +#: includes/admin/reports/class-wc-report-sales-by-date.php:390 msgid "" "This is the sum of the order totals after any refunds and including " "shipping and taxes." msgstr "" -#: includes/admin/reports/class-wc-report-sales-by-date.php:404 +#: includes/admin/reports/class-wc-report-sales-by-date.php:405 #. translators: %s: net sales msgid "%s net sales in this period" msgstr "" -#: includes/admin/reports/class-wc-report-sales-by-date.php:407 +#: includes/admin/reports/class-wc-report-sales-by-date.php:408 msgid "" "This is the sum of the order totals after any refunds and excluding " "shipping and taxes." msgstr "" -#: includes/admin/reports/class-wc-report-sales-by-date.php:422 +#: includes/admin/reports/class-wc-report-sales-by-date.php:423 #. translators: %s: total orders msgid "%s orders placed" msgstr "" -#: includes/admin/reports/class-wc-report-sales-by-date.php:432 +#: includes/admin/reports/class-wc-report-sales-by-date.php:433 #. translators: %s: total items msgid "%s items purchased" msgstr "" -#: includes/admin/reports/class-wc-report-sales-by-date.php:441 +#: includes/admin/reports/class-wc-report-sales-by-date.php:442 #. translators: 1: total refunds 2: total refunded orders 3: refunded items msgid "%1$s refunded %2$d order (%3$d item)" msgid_plural "%1$s refunded %2$d orders (%3$d items)" msgstr[0] "" msgstr[1] "" -#: includes/admin/reports/class-wc-report-sales-by-date.php:452 +#: includes/admin/reports/class-wc-report-sales-by-date.php:453 #. translators: %s: total shipping msgid "%s charged for shipping" msgstr "" -#: includes/admin/reports/class-wc-report-sales-by-date.php:461 +#: includes/admin/reports/class-wc-report-sales-by-date.php:462 #. translators: %s: total coupons msgid "%s worth of coupons used" msgstr "" -#: includes/admin/reports/class-wc-report-sales-by-date.php:600 +#: includes/admin/reports/class-wc-report-sales-by-date.php:601 #: includes/admin/reports/class-wc-report-sales-by-product.php:494 msgid "Number of items sold" msgstr "" -#: includes/admin/reports/class-wc-report-sales-by-date.php:608 +#: includes/admin/reports/class-wc-report-sales-by-date.php:609 #: includes/admin/reports/class-wc-report-taxes-by-code.php:151 #: includes/admin/reports/class-wc-report-taxes-by-date.php:153 msgid "Number of orders" msgstr "" -#: includes/admin/reports/class-wc-report-sales-by-date.php:616 +#: includes/admin/reports/class-wc-report-sales-by-date.php:617 msgid "Average gross sales amount" msgstr "" -#: includes/admin/reports/class-wc-report-sales-by-date.php:626 +#: includes/admin/reports/class-wc-report-sales-by-date.php:627 msgid "Average net sales amount" msgstr "" -#: includes/admin/reports/class-wc-report-sales-by-date.php:646 +#: includes/admin/reports/class-wc-report-sales-by-date.php:647 msgid "Shipping amount" msgstr "" -#: includes/admin/reports/class-wc-report-sales-by-date.php:656 +#: includes/admin/reports/class-wc-report-sales-by-date.php:657 msgid "Gross sales amount" msgstr "" -#: includes/admin/reports/class-wc-report-sales-by-date.php:666 +#: includes/admin/reports/class-wc-report-sales-by-date.php:667 msgid "Net sales amount" msgstr "" @@ -10320,7 +10326,7 @@ msgstr "" #: includes/admin/reports/class-wc-report-stock.php:164 #: includes/class-wc-post-types.php:259 #: includes/data-stores/class-wc-product-data-store-cpt.php:94 -#: includes/wc-account-functions.php:197 templates/cart/cart.php:35 +#: includes/wc-account-functions.php:202 templates/cart/cart.php:35 #: templates/cart/cart.php:78 templates/checkout/form-pay.php:29 #: templates/checkout/review-order.php:26 #: templates/emails/email-order-details.php:36 @@ -10488,7 +10494,7 @@ msgid "Endpoint for the \"My account → View order\" page." msgstr "" #: includes/admin/settings/class-wc-settings-accounts.php:131 -#: includes/class-wc-query.php:110 includes/wc-account-functions.php:93 +#: includes/class-wc-query.php:110 includes/wc-account-functions.php:98 msgid "Downloads" msgstr "" @@ -10505,7 +10511,7 @@ msgid "Endpoint for the \"My account → Edit account\" page." msgstr "" #: includes/admin/settings/class-wc-settings-accounts.php:149 -#: includes/class-wc-query.php:116 includes/wc-account-functions.php:94 +#: includes/class-wc-query.php:116 includes/wc-account-functions.php:99 msgid "Addresses" msgstr "" @@ -10514,7 +10520,7 @@ msgid "Endpoint for the \"My account → Addresses\" page." msgstr "" #: includes/admin/settings/class-wc-settings-accounts.php:158 -#: includes/class-wc-query.php:119 includes/wc-account-functions.php:95 +#: includes/class-wc-query.php:119 includes/wc-account-functions.php:100 msgid "Payment methods" msgstr "" @@ -10522,17 +10528,13 @@ msgstr "" msgid "Endpoint for the \"My account → Payment methods\" page." msgstr "" -#: includes/admin/settings/class-wc-settings-accounts.php:167 -#: includes/class-wc-query.php:125 -msgid "Lost password" -msgstr "" - #: includes/admin/settings/class-wc-settings-accounts.php:168 msgid "Endpoint for the \"My account → Lost password\" page." msgstr "" #: includes/admin/settings/class-wc-settings-accounts.php:176 -#: includes/wc-account-functions.php:97 templates/auth/form-grant-access.php:39 +#: includes/wc-account-functions.php:102 +#: templates/auth/form-grant-access.php:39 msgid "Logout" msgstr "" @@ -11836,7 +11838,7 @@ msgid "Last page" msgstr "" #: includes/admin/settings/views/html-webhook-log.php:13 -#: includes/wc-account-functions.php:219 +#: includes/wc-account-functions.php:224 msgid "Method" msgstr "" @@ -11985,31 +11987,35 @@ msgid "REST API version used in the webhook deliveries." msgstr "" #: includes/admin/settings/views/html-webhooks-edit.php:120 -msgid "WP REST API Integration v1" +msgid "WP REST API Integration v2" msgstr "" #: includes/admin/settings/views/html-webhooks-edit.php:121 +msgid "WP REST API Integration v1" +msgstr "" + +#: includes/admin/settings/views/html-webhooks-edit.php:122 msgid "Legacy API v3 (deprecated)" msgstr "" -#: includes/admin/settings/views/html-webhooks-edit.php:132 +#: includes/admin/settings/views/html-webhooks-edit.php:133 msgid "Webhook actions" msgstr "" -#: includes/admin/settings/views/html-webhooks-edit.php:139 -#: includes/admin/settings/views/html-webhooks-edit.php:148 +#: includes/admin/settings/views/html-webhooks-edit.php:140 +#: includes/admin/settings/views/html-webhooks-edit.php:149 msgid "Created at" msgstr "" -#: includes/admin/settings/views/html-webhooks-edit.php:156 +#: includes/admin/settings/views/html-webhooks-edit.php:157 msgid "Updated at" msgstr "" -#: includes/admin/settings/views/html-webhooks-edit.php:167 +#: includes/admin/settings/views/html-webhooks-edit.php:168 msgid "Save webhook" msgstr "" -#: includes/admin/settings/views/html-webhooks-edit.php:179 +#: includes/admin/settings/views/html-webhooks-edit.php:180 msgid "Webhook logs" msgstr "" @@ -13652,7 +13658,7 @@ msgstr "" #: includes/api/v1/class-wc-rest-order-notes-controller.php:265 #: includes/api/v1/class-wc-rest-order-notes-controller.php:298 #: includes/api/v1/class-wc-rest-order-refunds-controller.php:126 -#: includes/wc-core-functions.php:137 includes/wc-order-functions.php:497 +#: includes/wc-core-functions.php:137 includes/wc-order-functions.php:498 msgid "Invalid order ID." msgstr "" @@ -14355,7 +14361,9 @@ msgid "The date the image was created, in the site's timezone." msgstr "" #: includes/api/class-wc-rest-product-categories-controller.php:164 -msgid "The date the image was created, as GMT" +#: includes/api/class-wc-rest-product-variations-controller.php:838 +#: includes/api/class-wc-rest-products-controller.php:1806 +msgid "The date the image was created, as GMT." msgstr "" #: includes/api/class-wc-rest-product-categories-controller.php:170 @@ -14677,11 +14685,6 @@ msgstr "" msgid "Variation image data." msgstr "" -#: includes/api/class-wc-rest-product-variations-controller.php:838 -#: includes/api/class-wc-rest-products-controller.php:1806 -msgid "The date the image was created, as GMT." -msgstr "" - #: includes/api/class-wc-rest-product-variations-controller.php:872 #: includes/api/class-wc-rest-products-controller.php:1840 #: includes/api/v1/class-wc-rest-products-controller.php:2186 @@ -15738,68 +15741,68 @@ msgid "The date the webhook delivery was logged, in the site's timezone." msgstr "" #: includes/api/class-wc-rest-webhook-deliveries.php:160 -msgid "The date the webhook delivery was logged, GMT." +msgid "The date the webhook delivery was logged, as GMT." msgstr "" -#: includes/api/class-wc-rest-webhooks-controller.php:93 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:494 +#: includes/api/class-wc-rest-webhooks-controller.php:103 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:504 msgid "A friendly name for the webhook." msgstr "" -#: includes/api/class-wc-rest-webhooks-controller.php:98 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:499 +#: includes/api/class-wc-rest-webhooks-controller.php:108 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:509 msgid "Webhook status." msgstr "" -#: includes/api/class-wc-rest-webhooks-controller.php:108 +#: includes/api/class-wc-rest-webhooks-controller.php:118 #: includes/api/v1/class-wc-rest-webhooks-controller.php:72 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:509 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:519 msgid "Webhook topic." msgstr "" -#: includes/api/class-wc-rest-webhooks-controller.php:113 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:514 +#: includes/api/class-wc-rest-webhooks-controller.php:123 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:524 msgid "Webhook resource." msgstr "" -#: includes/api/class-wc-rest-webhooks-controller.php:119 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:520 +#: includes/api/class-wc-rest-webhooks-controller.php:129 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:530 msgid "Webhook event." msgstr "" -#: includes/api/class-wc-rest-webhooks-controller.php:125 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:526 +#: includes/api/class-wc-rest-webhooks-controller.php:135 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:536 msgid "WooCommerce action names associated with the webhook." msgstr "" -#: includes/api/class-wc-rest-webhooks-controller.php:134 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:535 +#: includes/api/class-wc-rest-webhooks-controller.php:144 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:545 msgid "The URL where the webhook payload is delivered." msgstr "" -#: includes/api/class-wc-rest-webhooks-controller.php:141 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:542 +#: includes/api/class-wc-rest-webhooks-controller.php:151 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:552 msgid "" "Secret key used to generate a hash of the delivered webhook and provided in " "the request headers. This will default is a MD5 hash from the current " "user's ID|username if not provided." msgstr "" -#: includes/api/class-wc-rest-webhooks-controller.php:146 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:547 +#: includes/api/class-wc-rest-webhooks-controller.php:156 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:557 msgid "The date the webhook was created, in the site's timezone." msgstr "" -#: includes/api/class-wc-rest-webhooks-controller.php:152 +#: includes/api/class-wc-rest-webhooks-controller.php:162 msgid "The date the webhook was created, as GMT." msgstr "" -#: includes/api/class-wc-rest-webhooks-controller.php:158 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:553 +#: includes/api/class-wc-rest-webhooks-controller.php:168 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:563 msgid "The date the webhook was last modified, in the site's timezone." msgstr "" -#: includes/api/class-wc-rest-webhooks-controller.php:164 +#: includes/api/class-wc-rest-webhooks-controller.php:174 msgid "The date the webhook was last modified, as GMT." msgstr "" @@ -16325,7 +16328,7 @@ msgstr "" #: includes/api/legacy/v2/class-wc-api-orders.php:1615 #: includes/api/legacy/v3/class-wc-api-orders.php:1665 -#: includes/wc-order-functions.php:634 +#: includes/wc-order-functions.php:635 msgid "" "An error occurred while attempting to create the refund using the payment " "gateway API." @@ -16492,7 +16495,7 @@ msgstr "" #: includes/api/legacy/v2/class-wc-api-webhooks.php:183 #: includes/api/legacy/v3/class-wc-api-webhooks.php:183 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:150 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:160 msgid "Webhook topic is required and must be valid." msgstr "" @@ -16510,7 +16513,7 @@ msgstr "" #: includes/api/legacy/v2/class-wc-api-webhooks.php:273 #: includes/api/legacy/v3/class-wc-api-webhooks.php:273 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:244 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:254 msgid "Webhook topic must be valid." msgstr "" @@ -16796,7 +16799,7 @@ msgid "Limit result set to resources with a specific role." msgstr "" #: includes/api/v1/class-wc-rest-order-notes-controller.php:292 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:316 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:326 msgid "Webhooks do not support trashing." msgstr "" @@ -16906,7 +16909,7 @@ msgid "Shipping class name." msgstr "" #: includes/api/v1/class-wc-rest-products-controller.php:1641 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:322 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:332 msgid "Invalid post ID." msgstr "" @@ -17087,12 +17090,12 @@ msgstr "" msgid "Webhook secret." msgstr "" -#: includes/api/v1/class-wc-rest-webhooks-controller.php:155 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:253 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:165 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:263 msgid "Webhook delivery URL must be a valid URL starting with http:// or https://." msgstr "" -#: includes/api/v1/class-wc-rest-webhooks-controller.php:574 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:584 msgid "Limit result set to webhooks assigned a specific status." msgstr "" @@ -17692,7 +17695,7 @@ msgstr "" #: includes/data-stores/abstract-wc-order-data-store-cpt.php:86 #: includes/shortcodes/class-wc-shortcode-checkout.php:169 #: includes/shortcodes/class-wc-shortcode-my-account.php:118 -#: includes/wc-order-functions.php:615 +#: includes/wc-order-functions.php:616 msgid "Invalid order." msgstr "" @@ -18023,7 +18026,7 @@ msgstr "" msgid "Refund – %s" msgstr "" -#: includes/class-wc-order.php:160 includes/wc-cart-functions.php:307 +#: includes/class-wc-order.php:160 includes/wc-cart-functions.php:309 msgid "(includes %s)" msgstr "" @@ -18419,43 +18422,43 @@ msgstr "" msgid "Parent webhook" msgstr "" -#: includes/class-wc-post-types.php:467 +#: includes/class-wc-post-types.php:469 msgid "Pending payment (%s)" msgid_plural "Pending payment (%s)" msgstr[0] "" msgstr[1] "" -#: includes/class-wc-post-types.php:475 +#: includes/class-wc-post-types.php:477 msgid "Processing (%s)" msgid_plural "Processing (%s)" msgstr[0] "" msgstr[1] "" -#: includes/class-wc-post-types.php:483 +#: includes/class-wc-post-types.php:485 msgid "On hold (%s)" msgid_plural "On hold (%s)" msgstr[0] "" msgstr[1] "" -#: includes/class-wc-post-types.php:491 +#: includes/class-wc-post-types.php:493 msgid "Completed (%s)" msgid_plural "Completed (%s)" msgstr[0] "" msgstr[1] "" -#: includes/class-wc-post-types.php:499 +#: includes/class-wc-post-types.php:501 msgid "Cancelled (%s)" msgid_plural "Cancelled (%s)" msgstr[0] "" msgstr[1] "" -#: includes/class-wc-post-types.php:507 +#: includes/class-wc-post-types.php:509 msgid "Refunded (%s)" msgid_plural "Refunded (%s)" msgstr[0] "" msgstr[1] "" -#: includes/class-wc-post-types.php:515 +#: includes/class-wc-post-types.php:517 msgid "Failed (%s)" msgid_plural "Failed (%s)" msgstr[0] "" @@ -18494,7 +18497,7 @@ msgstr "" #: includes/class-wc-query.php:113 #: includes/gateways/bacs/class-wc-gateway-bacs.php:123 -#: includes/wc-account-functions.php:96 +#: includes/wc-account-functions.php:101 msgid "Account details" msgstr "" @@ -18508,11 +18511,11 @@ msgstr[1] "" msgid "Everywhere" msgstr "" -#: includes/class-wc-webhook.php:683 +#: includes/class-wc-webhook.php:685 msgid "Error: Delivery URL cannot be reached: %s" msgstr "" -#: includes/class-wc-webhook.php:687 +#: includes/class-wc-webhook.php:689 msgid "Error: Delivery URL returned response code: %s" msgstr "" @@ -18579,7 +18582,7 @@ msgstr "" msgid "Order – %s" msgstr "" -#: includes/data-stores/abstract-wc-order-item-type-data-store.php:113 +#: includes/data-stores/abstract-wc-order-item-type-data-store.php:117 msgid "Invalid order item." msgstr "" @@ -18605,7 +18608,7 @@ msgstr "" msgid "Invalid payment token." msgstr "" -#: includes/data-stores/class-wc-product-data-store-cpt.php:132 +#: includes/data-stores/class-wc-product-data-store-cpt.php:133 msgid "Invalid product." msgstr "" @@ -19745,7 +19748,7 @@ msgid "Enable Simplify Commerce" msgstr "" #: includes/gateways/simplify-commerce/class-wc-gateway-simplify-commerce.php:200 -#: includes/wc-account-functions.php:233 includes/wc-account-functions.php:299 +#: includes/wc-account-functions.php:238 includes/wc-account-functions.php:304 msgid "Credit card" msgstr "" @@ -19901,7 +19904,7 @@ msgid "%1$s ending in %2$s (expires %3$s/%4$s)" msgstr "" #: includes/payment-tokens/class-wc-payment-token-echeck.php:41 -#: includes/wc-account-functions.php:234 includes/wc-account-functions.php:321 +#: includes/wc-account-functions.php:239 includes/wc-account-functions.php:326 msgid "eCheck" msgstr "" @@ -20369,19 +20372,19 @@ msgstr "" msgid "%1$s must be between %2$d (inclusive) and %3$d (inclusive)" msgstr "" -#: includes/wc-account-functions.php:91 +#: includes/wc-account-functions.php:96 msgid "Dashboard" msgstr "" -#: includes/wc-account-functions.php:199 includes/wc-account-functions.php:220 +#: includes/wc-account-functions.php:204 includes/wc-account-functions.php:225 msgid "Expires" msgstr "" -#: includes/wc-account-functions.php:200 +#: includes/wc-account-functions.php:205 msgid "File" msgstr "" -#: includes/wc-account-functions.php:273 +#: includes/wc-account-functions.php:278 msgid "Make default" msgstr "" @@ -20415,15 +20418,15 @@ msgstr "" msgid "Coupon: %s" msgstr "" -#: includes/wc-cart-functions.php:274 +#: includes/wc-cart-functions.php:276 msgid "Free shipping coupon" msgstr "" -#: includes/wc-cart-functions.php:278 +#: includes/wc-cart-functions.php:280 msgid "[Remove]" msgstr "" -#: includes/wc-cart-functions.php:305 +#: includes/wc-cart-functions.php:307 msgid "estimated for %s" msgstr "" @@ -21137,30 +21140,32 @@ msgid "This function should not be called before woocommerce_init." msgstr "" #: includes/wc-order-functions.php:97 -msgid "wc_get_order should not be called before the woocommerce_init action." +msgid "" +"wc_get_order should not be called before post types are registered " +"(woocommerce_after_register_post_type action)." msgstr "" -#: includes/wc-order-functions.php:506 +#: includes/wc-order-functions.php:507 msgid "Invalid refund amount." msgstr "" -#: includes/wc-order-functions.php:624 +#: includes/wc-order-functions.php:625 msgid "The payment gateway for this order does not exist." msgstr "" -#: includes/wc-order-functions.php:628 +#: includes/wc-order-functions.php:629 msgid "The payment gateway for this order does not support automatic refunds." msgstr "" -#: includes/wc-order-functions.php:668 +#: includes/wc-order-functions.php:669 msgid "Item #%1$s stock increased from %2$s to %3$s." msgstr "" -#: includes/wc-order-functions.php:728 includes/wc-update-functions.php:773 +#: includes/wc-order-functions.php:729 includes/wc-update-functions.php:773 msgid "Order fully refunded" msgstr "" -#: includes/wc-order-functions.php:852 +#: includes/wc-order-functions.php:853 msgid "Unpaid order cancelled - time limit reached." msgstr "" @@ -22342,70 +22347,70 @@ msgid "Georgia" msgstr "" #: includes/admin/class-wc-admin-assets.php:118 -#: includes/admin/class-wc-admin-setup-wizard.php:96 +#: includes/admin/class-wc-admin-setup-wizard.php:98 #: includes/class-wc-frontend-scripts.php:544 msgctxt "enhanced select" msgid "No matches found" msgstr "" #: includes/admin/class-wc-admin-assets.php:119 -#: includes/admin/class-wc-admin-setup-wizard.php:97 +#: includes/admin/class-wc-admin-setup-wizard.php:99 #: includes/class-wc-frontend-scripts.php:545 msgctxt "enhanced select" msgid "Loading failed" msgstr "" #: includes/admin/class-wc-admin-assets.php:120 -#: includes/admin/class-wc-admin-setup-wizard.php:98 +#: includes/admin/class-wc-admin-setup-wizard.php:100 #: includes/class-wc-frontend-scripts.php:546 msgctxt "enhanced select" msgid "Please enter 1 or more characters" msgstr "" #: includes/admin/class-wc-admin-assets.php:121 -#: includes/admin/class-wc-admin-setup-wizard.php:99 +#: includes/admin/class-wc-admin-setup-wizard.php:101 #: includes/class-wc-frontend-scripts.php:547 msgctxt "enhanced select" msgid "Please enter %qty% or more characters" msgstr "" #: includes/admin/class-wc-admin-assets.php:122 -#: includes/admin/class-wc-admin-setup-wizard.php:100 +#: includes/admin/class-wc-admin-setup-wizard.php:102 #: includes/class-wc-frontend-scripts.php:548 msgctxt "enhanced select" msgid "Please delete 1 character" msgstr "" #: includes/admin/class-wc-admin-assets.php:123 -#: includes/admin/class-wc-admin-setup-wizard.php:101 +#: includes/admin/class-wc-admin-setup-wizard.php:103 #: includes/class-wc-frontend-scripts.php:549 msgctxt "enhanced select" msgid "Please delete %qty% characters" msgstr "" #: includes/admin/class-wc-admin-assets.php:124 -#: includes/admin/class-wc-admin-setup-wizard.php:102 +#: includes/admin/class-wc-admin-setup-wizard.php:104 #: includes/class-wc-frontend-scripts.php:550 msgctxt "enhanced select" msgid "You can only select 1 item" msgstr "" #: includes/admin/class-wc-admin-assets.php:125 -#: includes/admin/class-wc-admin-setup-wizard.php:103 +#: includes/admin/class-wc-admin-setup-wizard.php:105 #: includes/class-wc-frontend-scripts.php:551 msgctxt "enhanced select" msgid "You can only select %qty% items" msgstr "" #: includes/admin/class-wc-admin-assets.php:126 -#: includes/admin/class-wc-admin-setup-wizard.php:104 +#: includes/admin/class-wc-admin-setup-wizard.php:106 #: includes/class-wc-frontend-scripts.php:552 msgctxt "enhanced select" msgid "Loading more results…" msgstr "" #: includes/admin/class-wc-admin-assets.php:127 -#: includes/admin/class-wc-admin-setup-wizard.php:105 +#: includes/admin/class-wc-admin-setup-wizard.php:107 #: includes/class-wc-frontend-scripts.php:553 msgctxt "enhanced select" msgid "Searching…" @@ -22488,31 +22493,31 @@ msgctxt "full name" msgid "%1$s %2$s" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:230 +#: includes/admin/class-wc-admin-setup-wizard.php:253 #: includes/class-wc-install.php:320 msgctxt "Page title" msgid "Shop" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:234 +#: includes/admin/class-wc-admin-setup-wizard.php:257 #: includes/class-wc-install.php:325 msgctxt "Page title" msgid "Cart" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:238 +#: includes/admin/class-wc-admin-setup-wizard.php:261 #: includes/class-wc-install.php:330 msgctxt "Page title" msgid "Checkout" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:244 +#: includes/admin/class-wc-admin-setup-wizard.php:267 #: includes/class-wc-install.php:335 msgctxt "Page title" msgid "My account" msgstr "" -#: includes/admin/class-wc-admin-setup-wizard.php:600 +#: includes/admin/class-wc-admin-setup-wizard.php:623 #: includes/gateways/cheque/class-wc-gateway-cheque.php:27 #: includes/gateways/cheque/class-wc-gateway-cheque.php:63 msgctxt "Check payment method" @@ -22537,7 +22542,7 @@ msgstr[1] "" #: includes/admin/settings/views/html-webhooks-edit.php:18 #: includes/api/legacy/v2/class-wc-api-webhooks.php:198 #: includes/api/legacy/v3/class-wc-api-webhooks.php:198 -#: includes/api/v1/class-wc-rest-webhooks-controller.php:369 +#: includes/api/v1/class-wc-rest-webhooks-controller.php:379 msgctxt "Webhook created on date parsed by strftime" msgid "%b %d, %Y @ %I:%M %p" msgstr "" @@ -22659,37 +22664,37 @@ msgctxt "shop_order post type singular name" msgid "Order" msgstr "" -#: includes/class-wc-post-types.php:462 includes/wc-order-functions.php:111 +#: includes/class-wc-post-types.php:464 includes/wc-order-functions.php:112 msgctxt "Order status" msgid "Pending payment" msgstr "" -#: includes/class-wc-post-types.php:470 includes/wc-order-functions.php:112 +#: includes/class-wc-post-types.php:472 includes/wc-order-functions.php:113 msgctxt "Order status" msgid "Processing" msgstr "" -#: includes/class-wc-post-types.php:478 includes/wc-order-functions.php:113 +#: includes/class-wc-post-types.php:480 includes/wc-order-functions.php:114 msgctxt "Order status" msgid "On hold" msgstr "" -#: includes/class-wc-post-types.php:486 includes/wc-order-functions.php:114 +#: includes/class-wc-post-types.php:488 includes/wc-order-functions.php:115 msgctxt "Order status" msgid "Completed" msgstr "" -#: includes/class-wc-post-types.php:494 includes/wc-order-functions.php:115 +#: includes/class-wc-post-types.php:496 includes/wc-order-functions.php:116 msgctxt "Order status" msgid "Cancelled" msgstr "" -#: includes/class-wc-post-types.php:502 includes/wc-order-functions.php:116 +#: includes/class-wc-post-types.php:504 includes/wc-order-functions.php:117 msgctxt "Order status" msgid "Refunded" msgstr "" -#: includes/class-wc-post-types.php:510 includes/wc-order-functions.php:117 +#: includes/class-wc-post-types.php:512 includes/wc-order-functions.php:118 msgctxt "Order status" msgid "Failed" msgstr "" @@ -22704,12 +22709,12 @@ msgctxt "Price range: from-to" msgid "%1$s – %2$s" msgstr "" -#: includes/wc-account-functions.php:59 +#: includes/wc-account-functions.php:64 msgctxt "edit-address-slug" msgid "billing" msgstr "" -#: includes/wc-account-functions.php:60 +#: includes/wc-account-functions.php:65 msgctxt "edit-address-slug" msgid "shipping" msgstr "" From 1b935d55576d3fe558052752340c59e76413d696 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 4 Apr 2017 09:27:17 -0300 Subject: [PATCH 226/525] Version 3.0.0 --- CHANGELOG.txt | 62 +++++++++++++++++++++++++++++++++++++++++++++++++ readme.txt | 2 +- woocommerce.php | 2 +- 3 files changed, 64 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 7f7b3082283..79cf72410ab 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,5 +1,67 @@ == Changelog == += 3.0.0 - 2017-04-04 = +* New gallery on single product pages with better mobile support, using PhotoSwipe and Zoom. Declare support with add_theme_support() - wc-product-gallery-zoom, wc-product-gallery-lightbox, wc-product-gallery-slider +* Made the store notice dismissible on the frontend. +* Variable products no longer show striked out prices in combination with ranges for clarity when on sale. +* Prices no longer display as 'free' instead of 0, to fix issues with ranges and localization and for consistency. +* Improved structured product data by using JSON-LD instead of inline Microdata. +* Improved downloads list layout (template file). +* Respect stock status and prevent the "out of stock threshold" setting affecting existing in-stock products. +* Improved handling of shop page rewrite rules to allow subpages. +* Redirect to login after password reset. +* When using authorizations in PayPal Standard, automatically capture funds when the order goes processing/completed. +* On multisite, when a user logs into a store with an account on a site, but not the current site, rather than error, add the user to the current site as a customer. +* Show variable weights/dimensions even when parent values are not set. +* Automatically sort tax rates rather than allow clunky manual sorting. +* When deleting a tax rate class, remove it's tax rates. +* Made WC_Logger pluggable via wc_get_logger function. +* Use 'average rating' post meta for 'rating' product sorting option. +* Show better labels in nav menus metabox. +* Sort “Recently Viewed” products by the view order. +* Removed internal scroll from log viewer. +* Add reply-to to admin emails. +* Improved the zone setup flow. +* Made wc_get_wildcard_postcodes return the orignal postcode plus * since wildcards should match empty strings too. +* Use all paid statuses in $customer->get_total_spent(). +* Move location of billing email field to work with password managers. +* Option to restrict selling locations by country. +* Added tool to clear orphaned variations in system status. +* Remove checkbox options in system status tools and replace with constants. +* Added security section in system status report. +* Add image_url setting to PayPal Standard. +* Fixed attribute registration. Attributes are non-hierarchical by default (parent is not supported). +* Add sort parameter to checkout fields to aid with sorting per locale. +* Merged percent and percent product coupon types (they provide the same discount). +* Prevent payment details being cleared after update_checkout events. +* Performance - Converted _featured and _visibility meta data to terms for faster catalog queries. Upgrade routine handles migration. Developers may need to update queries to reflect this change. +* Includes product attributes archives links in "Additional Information" tab. +* Select2 has been upgraded to v4. +* Improved logging system for extensions. +* Tax suffix is now hidden on non-taxable products. +* Performance - Converted rating filters to visibility terms. +* Performance - Added visibility term for outofstock products to speed those queries up also. +* Performance - Introduced a new CRUD (create, read, update, delete) system for Products, Orders, Customers and Shipping Zones. +* Performance - Optimised variable product sync. Upper/lower price meta is no longer stored, just the main prices, if a child has weight, and if a child has dimensions. +* Performance - Removed WP_Query from up-sells.php and related.php and replaced with PHP foreach loop (since we already have the product IDs). +* Performance - Removed the feature where old orders get access to new downloads on product edit. Looping potentially thousands of orders to do this is too much of a performance burden for stores and this can sometimes be unexpected behavior too. This does however updates *edited* downloads. +* Performance - Removed 'items' column on orders screen due to loading excessive data. +* Performance - Deferred email sending for faster checkouts. Now uses CRON. +* API - New Rest API v2 with support for meta_data amongst other things. +* API - Removed last order from customers part of the API due to performance concerns - use orders endpoint instead. Other order data on the endpoint is now transient cached. +* API - Allow oAuth1.0a authentication using headers. +* API - New Shipping Zones endpoints. +* API - New variations endpoints. +* API - New settings endpoints. +* API - Payment gateways and shipping methods endpoints. +* API - Prevented the (broken) ability to manipulate variations directly on the products endpoints. +* CLI - New CLI which uses the REST API endpoints rather than it's own functions. +* Localization - Improved RTL support. +* Localization - Added a language independent permalink setting function. +* Localization - Added inline comments for placeholder strings. +* Localization - Added Nigerian and Pakistan Provinces to i18n/state. +* Localization - US and Poland postcode validation. + = 2.6.14 - 2017-02-02 = * Fix - Ensure product exists in wc_update_product_stock. * Fix - Send emails using the site language. diff --git a/readme.txt b/readme.txt index 7d1b8f1e58c..ed05dca28d6 100644 --- a/readme.txt +++ b/readme.txt @@ -3,7 +3,7 @@ Contributors: automattic, mikejolley, jameskoster, claudiosanches, jshreve, code Tags: ecommerce, e-commerce, store, sales, sell, shop, cart, checkout, downloadable, downloads, paypal, storefront, woo commerce Requires at least: 4.4 Tested up to: 4.7 -Stable tag: 2.6.14 +Stable tag: 3.0.0 License: GPLv3 License URI: https://www.gnu.org/licenses/gpl-3.0.html diff --git a/woocommerce.php b/woocommerce.php index 89d61ba19ab..650dfcd7137 100644 --- a/woocommerce.php +++ b/woocommerce.php @@ -3,7 +3,7 @@ * Plugin Name: WooCommerce * Plugin URI: https://woocommerce.com/ * Description: An e-commerce toolkit that helps you sell anything. Beautifully. - * Version: 3.0.0-rc.2 + * Version: 3.0.0 * Author: Automattic * Author URI: https://woocommerce.com * Requires at least: 4.4 From b2e4052e3bcc87dd100e70d25f59dc76c413f2a3 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 4 Apr 2017 13:35:28 +0100 Subject: [PATCH 227/525] Stock qty should be wrapped in wc_stock_amount --- includes/admin/class-wc-admin-post-types.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/admin/class-wc-admin-post-types.php b/includes/admin/class-wc-admin-post-types.php index 1d093e8b590..aca4e6c3ffb 100644 --- a/includes/admin/class-wc-admin-post-types.php +++ b/includes/admin/class-wc-admin-post-types.php @@ -439,7 +439,7 @@ class WC_Admin_Post_Types { } if ( $the_product->managing_stock() ) { - $stock_html .= ' (' . $the_product->get_stock_quantity() . ')'; + $stock_html .= ' (' . wc_stock_amount( $the_product->get_stock_quantity() ) . ')'; } echo apply_filters( 'woocommerce_admin_stock_html', $stock_html, $the_product ); From 36c080acd66ca9ad1b9f32cf878d6a0a6382aee1 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 4 Apr 2017 10:11:43 -0300 Subject: [PATCH 228/525] Start dev of 3.1.0 --- woocommerce.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/woocommerce.php b/woocommerce.php index 650dfcd7137..da8a08edd4a 100644 --- a/woocommerce.php +++ b/woocommerce.php @@ -3,7 +3,7 @@ * Plugin Name: WooCommerce * Plugin URI: https://woocommerce.com/ * Description: An e-commerce toolkit that helps you sell anything. Beautifully. - * Version: 3.0.0 + * Version: 3.1.0-alpha * Author: Automattic * Author URI: https://woocommerce.com * Requires at least: 4.4 @@ -26,7 +26,7 @@ if ( ! class_exists( 'WooCommerce' ) ) : * Main WooCommerce Class. * * @class WooCommerce - * @version 3.0.0 + * @version 3.1.0 */ final class WooCommerce { @@ -35,7 +35,7 @@ final class WooCommerce { * * @var string */ - public $version = '3.0.0'; + public $version = '3.1.0'; /** * The single instance of the class. From 0aec4e4b1dbe8838b9c11720be5b066174b451de Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 4 Apr 2017 11:05:18 -0300 Subject: [PATCH 229/525] Changelog for #13815 --- readme.txt | 64 ++---------------------------------------------------- 1 file changed, 2 insertions(+), 62 deletions(-) diff --git a/readme.txt b/readme.txt index ed05dca28d6..eda57ea116f 100644 --- a/readme.txt +++ b/readme.txt @@ -161,68 +161,8 @@ Yes you can! Join in on our [GitHub repository](http://github.com/woocommerce/wo == Changelog == -= 3.0.0 - 2017-04-04 = -* New gallery on single product pages with better mobile support, using PhotoSwipe and Zoom. Declare support with add_theme_support() - wc-product-gallery-zoom, wc-product-gallery-lightbox, wc-product-gallery-slider -* Made the store notice dismissible on the frontend. -* Variable products no longer show striked out prices in combination with ranges for clarity when on sale. -* Prices no longer display as 'free' instead of 0, to fix issues with ranges and localization and for consistency. -* Improved structured product data by using JSON-LD instead of inline Microdata. -* Improved downloads list layout (template file). -* Respect stock status and prevent the "out of stock threshold" setting affecting existing in-stock products. -* Improved handling of shop page rewrite rules to allow subpages. -* Redirect to login after password reset. -* When using authorizations in PayPal Standard, automatically capture funds when the order goes processing/completed. -* On multisite, when a user logs into a store with an account on a site, but not the current site, rather than error, add the user to the current site as a customer. -* Show variable weights/dimensions even when parent values are not set. -* Automatically sort tax rates rather than allow clunky manual sorting. -* When deleting a tax rate class, remove it's tax rates. -* Made WC_Logger pluggable via wc_get_logger function. -* Use 'average rating' post meta for 'rating' product sorting option. -* Show better labels in nav menus metabox. -* Sort “Recently Viewed” products by the view order. -* Removed internal scroll from log viewer. -* Add reply-to to admin emails. -* Improved the zone setup flow. -* Made wc_get_wildcard_postcodes return the orignal postcode plus * since wildcards should match empty strings too. -* Use all paid statuses in $customer->get_total_spent(). -* Move location of billing email field to work with password managers. -* Option to restrict selling locations by country. -* Added tool to clear orphaned variations in system status. -* Remove checkbox options in system status tools and replace with constants. -* Added security section in system status report. -* Add image_url setting to PayPal Standard. -* Fixed attribute registration. Attributes are non-hierarchical by default (parent is not supported). -* Add sort parameter to checkout fields to aid with sorting per locale. -* Merged percent and percent product coupon types (they provide the same discount). -* Prevent payment details being cleared after update_checkout events. -* Performance - Converted _featured and _visibility meta data to terms for faster catalog queries. Upgrade routine handles migration. Developers may need to update queries to reflect this change. -* Includes product attributes archives links in "Additional Information" tab. -* Select2 has been upgraded to v4. -* Improved logging system for extensions. -* Tax suffix is now hidden on non-taxable products. -* Performance - Converted rating filters to visibility terms. -* Performance - Added visibility term for outofstock products to speed those queries up also. -* Performance - Introduced a new CRUD (create, read, update, delete) system for Products, Orders, Customers and Shipping Zones. -* Performance - Optimised variable product sync. Upper/lower price meta is no longer stored, just the main prices, if a child has weight, and if a child has dimensions. -* Performance - Removed WP_Query from up-sells.php and related.php and replaced with PHP foreach loop (since we already have the product IDs). -* Performance - Removed the feature where old orders get access to new downloads on product edit. Looping potentially thousands of orders to do this is too much of a performance burden for stores and this can sometimes be unexpected behavior too. This does however updates *edited* downloads. -* Performance - Removed 'items' column on orders screen due to loading excessive data. -* Performance - Deferred email sending for faster checkouts. Now uses CRON. -* API - New Rest API v2 with support for meta_data amongst other things. -* API - Removed last order from customers part of the API due to performance concerns - use orders endpoint instead. Other order data on the endpoint is now transient cached. -* API - Allow oAuth1.0a authentication using headers. -* API - New Shipping Zones endpoints. -* API - New variations endpoints. -* API - New settings endpoints. -* API - Payment gateways and shipping methods endpoints. -* API - Prevented the (broken) ability to manipulate variations directly on the products endpoints. -* CLI - New CLI which uses the REST API endpoints rather than it's own functions. -* Localization - Improved RTL support. -* Localization - Added a language independent permalink setting function. -* Localization - Added inline comments for placeholder strings. -* Localization - Added Nigerian and Pakistan Provinces to i18n/state. -* Localization - US and Poland postcode validation. -* To read more about this release, see our dev blog announcement here: http://wp.me/p6wtcw-Uo += 3.1.0 - 2017-xx-xx = +* Included WooCommerce endpoints as options nav menu settings on Customize. [See changelog for all versions](https://raw.githubusercontent.com/woocommerce/woocommerce/master/CHANGELOG.txt). From e65a835fabd7b3866d14be77458267248cb69cac Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 4 Apr 2017 11:31:48 -0300 Subject: [PATCH 230/525] Changelog for #13867 --- readme.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/readme.txt b/readme.txt index eda57ea116f..07159821a8c 100644 --- a/readme.txt +++ b/readme.txt @@ -163,6 +163,7 @@ Yes you can! Join in on our [GitHub repository](http://github.com/woocommerce/wo = 3.1.0 - 2017-xx-xx = * Included WooCommerce endpoints as options nav menu settings on Customize. +* Updated Emogrifier to version 1.2. [See changelog for all versions](https://raw.githubusercontent.com/woocommerce/woocommerce/master/CHANGELOG.txt). From d881bf05007707d6dba1d59d89b1eaa67ce5ad46 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 4 Apr 2017 11:40:02 -0300 Subject: [PATCH 231/525] Coding standards and changelog for #13867 --- .../class-wc-meta-box-product-data.php | 18 +++++++++++++++--- readme.txt | 3 ++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/includes/admin/meta-boxes/class-wc-meta-box-product-data.php b/includes/admin/meta-boxes/class-wc-meta-box-product-data.php index dcf2bfa2121..c8684d6215c 100644 --- a/includes/admin/meta-boxes/class-wc-meta-box-product-data.php +++ b/includes/admin/meta-boxes/class-wc-meta-box-product-data.php @@ -120,7 +120,7 @@ class WC_Meta_Box_Product_Data { ), ) ); - // Sort tabs based on priority + // Sort tabs based on priority. uasort( $tabs, array( __CLASS__, 'product_data_tabs_sort' ) ); return $tabs; @@ -128,10 +128,22 @@ class WC_Meta_Box_Product_Data { /** * Callback to sort product data tabs on priority. + * + * @since 3.1.0 + * @param int $a First item. + * @param int $b Second item. + * + * @return bool */ private static function product_data_tabs_sort( $a, $b ) { - if ( ! isset( $a['priority'], $b['priority'] ) ) return -1; - if ( $a['priority'] == $b['priority'] ) return 0; + if ( ! isset( $a['priority'], $b['priority'] ) ) { + return -1; + } + + if ( $a['priority'] == $b['priority'] ) { + return 0; + } + return $a['priority'] < $b['priority'] ? -1 : 1; } diff --git a/readme.txt b/readme.txt index 07159821a8c..f453893a028 100644 --- a/readme.txt +++ b/readme.txt @@ -163,7 +163,8 @@ Yes you can! Join in on our [GitHub repository](http://github.com/woocommerce/wo = 3.1.0 - 2017-xx-xx = * Included WooCommerce endpoints as options nav menu settings on Customize. -* Updated Emogrifier to version 1.2. +* Dev - Updated Emogrifier to version 1.2. +* Dev - Sort product data tabs by priority in admin screen. [See changelog for all versions](https://raw.githubusercontent.com/woocommerce/woocommerce/master/CHANGELOG.txt). From 642b8f4e73903d0415911a7db1070f77e7aecb6b Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 4 Apr 2017 12:51:49 -0300 Subject: [PATCH 232/525] Updated CHANGELOG to include grouped products note --- CHANGELOG.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 79cf72410ab..52c245bcf2f 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -39,6 +39,7 @@ * Select2 has been upgraded to v4. * Improved logging system for extensions. * Tax suffix is now hidden on non-taxable products. +* Grouped products are linked from the parent rather than the children. Children can be in more than one group. * Performance - Converted rating filters to visibility terms. * Performance - Added visibility term for outofstock products to speed those queries up also. * Performance - Introduced a new CRUD (create, read, update, delete) system for Products, Orders, Customers and Shipping Zones. From 3d53d746c1a9a7f56a9160dd2566bc929a99a3a2 Mon Sep 17 00:00:00 2001 From: refael iliaguyev Date: Tue, 4 Apr 2017 19:30:16 +0300 Subject: [PATCH 233/525] remove deep nesting when not necessary --- assets/css/admin.scss | 1144 +++++++++++++++++------------------------ 1 file changed, 486 insertions(+), 658 deletions(-) diff --git a/assets/css/admin.scss b/assets/css/admin.scss index 6bcb019b982..7f1a32e2a10 100644 --- a/assets/css/admin.scss +++ b/assets/css/admin.scss @@ -505,12 +505,10 @@ table.wc_status_table { margin: 0; } - tr { - &:nth-child( 2n ) { - th, - td { - background: #fcfcfc; - } + tr:nth-child( 2n ) { + th, + td { + background: #fcfcfc; } } @@ -650,10 +648,8 @@ table.wc_status_table { #log-viewer-select { padding: 10px 0 8px; line-height: 28px; - h2 { - a { - vertical-align: middle; - } + h2 a { + vertical-align: middle; } } @@ -685,21 +681,19 @@ table.wc_status_table { margin-left: 10px; } - .dimensions { - div { + .dimensions div { + display: block; + margin: 0.2em 0; + + span.title { display: block; - margin: 0.2em 0; + float: left; + width: 5em; + } - span.title { - display: block; - float: left; - width: 5em; - } - - span.input-text-wrap { - display: block; - margin-left: 5em; - } + span.input-text-wrap { + display: block; + margin-left: 5em; } } @@ -730,11 +724,9 @@ table.wc_status_table { width: 49%; margin: 0.2em 0; } - &.dimensions { - label { - width: 75%; - max-width: 75%; - } + &.dimensions label { + width: 75%; + max-width: 75%; } } @@ -768,26 +760,22 @@ ul.wc_coupon_list, clear: both; } -ul.wc_coupon_list { - li { - margin: 0; +ul.wc_coupon_list li { + margin: 0; - &.code { - display: inline-block; + &.code { + display: inline-block; - &::after { - content: ', '; - } + &::after { + content: ', '; + } - &:last-of-type { - &::after { - display: none; - } - } + &:last-of-type::after { + display: none; + } - .tips { - cursor: pointer; - } + .tips { + cursor: pointer; } } } @@ -882,10 +870,8 @@ ul.wc_coupon_list_block { padding: 0 2% 0 0; float: left; - > h3 { - span { - display: block; - } + > h3 span { + display: block; } &:last-child { @@ -896,10 +882,8 @@ ul.wc_coupon_list_block { padding: 0 !important; } - .address { - strong { - display: block; - } + .address strong { + display: block; } .form-field { @@ -1015,11 +999,9 @@ ul.wc_coupon_list_block { -webkit-font-smoothing: antialiased; } } - a.edit_address { - &::after { - font-family: 'Dashicons'; - content: '\f464'; - } + a.edit_address::after { + font-family: 'Dashicons'; + content: '\f464'; } .billing-same-as-shipping, @@ -1177,11 +1159,9 @@ ul.wc_coupon_list_block { } } - .wc-order-item-bulk-edit { - .cancel-action { - float: left; - margin-left: 0; - } + .wc-order-item-bulk-edit .cancel-action { + float: left; + margin-left: 0; } .add_meta { @@ -1226,35 +1206,33 @@ ul.wc_coupon_list_block { width: 100%; background: #fff; - thead { - th { - text-align: left; - padding: 1em; - font-weight: normal; - color: #999; - background: #f8f8f8; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - &.sortable { - cursor: pointer; - } - &:last-child { - padding-right: 2em; - } - &:first-child { - padding-left: 2em; - } - .wc-arrow { - float: right; - position: relative; - margin-right: -1em; - } + thead th { + text-align: left; + padding: 1em; + font-weight: normal; + color: #999; + background: #f8f8f8; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + &.sortable { + cursor: pointer; } - } + &:last-child { + padding-right: 2em; + } + &:first-child { + padding-left: 2em; + } + .wc-arrow { + float: right; + position: relative; + margin-right: -1em; + } + } tbody th, td { padding: 1.5em 1em 1em; @@ -1544,33 +1522,29 @@ ul.wc_coupon_list_block { border-bottom: 1px dotted #999; } - tr.fee { - .thumb div { - @include ir(); - font-size: 1.5em; - line-height: 1em; - vertical-align: middle; - margin: 0; + tr.fee .thumb div { + @include ir(); + font-size: 1.5em; + line-height: 1em; + vertical-align: middle; + margin: 0; - &::before { - @include icon( '\e007' ); - color: #ccc; - } + &::before { + @include icon( '\e007' ); + color: #ccc; } } - tr.refund { - .thumb div { - @include ir(); - font-size: 1.5em; - line-height: 1em; - vertical-align: middle; - margin: 0; + tr.refund .thumb div { + @include ir(); + font-size: 1.5em; + line-height: 1em; + vertical-align: middle; + margin: 0; - &::before { - @include icon( '\e014' ); - color: #ccc; - } + &::before { + @include icon( '\e014' ); + color: #ccc; } } @@ -1612,17 +1586,13 @@ ul.wc_coupon_list_block { color: #999; } - &:hover { - &::before { - color: $red; - } + &:hover::before { + color: $red; } } - &:hover { - .delete-order-tax { - visibility: visible; - } + &:hover .delete-order-tax { + visibility: visible; } } @@ -1679,11 +1649,9 @@ ul.wc_coupon_list_block { } } - .edit-order-item { - &::before { - @include icon_dashicons( '\f464' ); - position: relative; - } + .edit-order-item::before { + @include icon_dashicons( '\f464' ); + position: relative; } .delete-order-item, @@ -1692,10 +1660,8 @@ ul.wc_coupon_list_block { @include icon_dashicons( '\f158' ); position: relative; } - &:hover { - &::before { - color: $red; - } + &:hover::before { + color: $red; } } } @@ -1741,34 +1707,26 @@ ul.wc_coupon_list_block { } } -#poststuff #woocommerce-order-actions { - .inside { - margin: 0; - padding: 0; +#poststuff #woocommerce-order-actions .inside { + margin: 0; + padding: 0; - ul.order_actions { - li { - padding: 6px 10px; - box-sizing: border-box; + ul.order_actions li { + padding: 6px 10px; + box-sizing: border-box; - &:last-child { - border-bottom: 0; - } - } + &:last-child { + border-bottom: 0; } } } -#poststuff #woocommerce-order-notes { - .inside { - margin: 0; - padding: 0; +#poststuff #woocommerce-order-notes .inside { + margin: 0; + padding: 0; - ul.order_notes { - li { - padding: 0 10px; - } - } + ul.order_notes li { + padding: 0 10px; } } @@ -1785,11 +1743,9 @@ ul.wc_coupon_list_block { } .widefat { - &.customers { - td { - vertical-align: middle; - padding: 4px 7px; - } + &.customers td { + vertical-align: middle; + padding: 4px 7px; } .column-order_title { @@ -1907,29 +1863,25 @@ ul.wc_coupon_list_block { } } -.column-customer_message { - .note-on { - @include ir(); - margin: 0 auto; - color: #999; +.column-customer_message .note-on { + @include ir(); + margin: 0 auto; + color: #999; - &::after { - @include icon( '\e026' ); - line-height: 16px; - } + &::after { + @include icon( '\e026' ); + line-height: 16px; } } -.column-order_notes { - .note-on { - @include ir(); - margin: 0 auto; - color: #999; +.column-order_notes .note-on { + @include ir(); + margin: 0 auto; + color: #999; - &::after { - @include icon( '\e027' ); - line-height: 16px; - } + &::after { + @include icon( '\e027' ); + line-height: 16px; } } @@ -2136,10 +2088,8 @@ table.wp-list-table { padding-left: 2px; } - .column-price { - .woocommerce-price-suffix { - display: none; - } + .column-price .woocommerce-price-suffix { + display: none; } img { @@ -2182,25 +2132,19 @@ table.wp-list-table { &::before { content: '\f155'; } - &.not-featured { - &::before { - content: '\f154'; - } + &.not-featured::before { + content: '\f154'; } } - td.column-featured { - span.wc-featured { - font-size: 1.6em; - cursor: pointer; - } + td.column-featured span.wc-featured { + font-size: 1.6em; + cursor: pointer; } - span.wc-type { - &::before { - font-family: 'WooCommerce'; - content: '\e006'; - } + span.wc-type::before { + font-family: 'WooCommerce'; + content: '\e006'; } span.product-type { @@ -2397,31 +2341,27 @@ table.wc_input_table { padding: 0 4px; } - .ui-sortable:not( .ui-sortable-disabled ) { - td.sort { - cursor: move; - font-size: 15px; - background: #f9f9f9; + .ui-sortable:not( .ui-sortable-disabled ) td.sort { + cursor: move; + font-size: 15px; + background: #f9f9f9; + text-align: center; + vertical-align: middle; + + &::before { + content: '\f333'; + font-family: 'Dashicons'; text-align: center; - vertical-align: middle; + line-height: 1; + color: #999; + display: block; + width: 17px; + float: left; + height: 100%; + } - &::before { - content: '\f333'; - font-family: 'Dashicons'; - text-align: center; - line-height: 1; - color: #999; - display: block; - width: 17px; - float: left; - height: 100%; - } - - &:hover { - &::before { - color: #333; - } - } + &:hover::before { + color: #333; } } @@ -2455,12 +2395,8 @@ table.wc_input_table { } } - tr { - &:last-child { - td { - border-bottom: 0; - } - } + tr:last-child td { + border-bottom: 0; } } @@ -2475,10 +2411,8 @@ table.wc_shipping { line-height: 2em; } - tr:nth-child( odd ) { - td { - background: #f9f9f9; - } + tr:nth-child( odd ) td { + background: #f9f9f9; } th { @@ -2545,18 +2479,16 @@ table.wc_shipping { margin: 0 auto; } } - .wc-email-settings-table-actions { - a { - @include ir(); - padding: 0 !important; - height: 2em !important; - width: 2em; + .wc-email-settings-table-actions a { + @include ir(); + padding: 0 !important; + height: 2em !important; + width: 2em; - &::after { - @include icon('\f111'); - font-family: 'Dashicons'; - line-height: 1.85; - } + &::after { + @include icon('\f111'); + font-family: 'Dashicons'; + line-height: 1.85; } } } @@ -2613,15 +2545,11 @@ table.wc_shipping { table { tr, tr:hover { table.wc-shipping-zone-methods { - tr { - .row-actions { - position: relative; - } + tr .row-actions { + position: relative; } - tr:hover { - .row-actions { - position: static; - } + tr:hover .row-actions { + position: static; } } } @@ -2715,10 +2643,8 @@ table.wc-shipping-zones, table.wc-shipping-zone-methods, table.wc-shipping-class } } tbody.wc-shipping-zone-rows, .wc-shipping-zone-method-rows { - tr:nth-child( odd ) { - td { - background: #f9f9f9; - } + tr:nth-child( odd ) td { + background: #f9f9f9; } } tr.odd, .wc-shipping-class-rows tr:nth-child( odd ) { @@ -2746,10 +2672,8 @@ table.wc-shipping-zones, table.wc-shipping-zone-methods, table.wc-shipping-class height: 100%; line-height: 24px; } - &:hover { - &::before { - color: #333; - } + &:hover::before { + color: #333; } } td.wc-shipping-zone-worldwide { @@ -2907,45 +2831,43 @@ table.wc-shipping-zones, table.wc-shipping-zone-methods, table.wc-shipping-class .wc-modal-shipping-method-settings { background: #f8f8f8; padding: 1em !important; - form { - .form-table { - width: 100%; - background: #fff; - margin: 0 0 1.5em; - tr { - th { - width: 30%; - position: relative; - .woocommerce-help-tip { - float: right; - margin: -8px -0.5em 0 0; - vertical-align: middle; - right: 0; - top: 50%; - position: absolute; - } - } - td { - input, select, textarea { - width: 50%; - min-width: 250px; - } - input[type='checkbox'] { - width: auto; - min-width: 16px; - } - } - td, th { + form .form-table { + width: 100%; + background: #fff; + margin: 0 0 1.5em; + tr { + th { + width: 30%; + position: relative; + .woocommerce-help-tip { + float: right; + margin: -8px -0.5em 0 0; vertical-align: middle; - margin: 0; - line-height: 24px; - padding: 1em; - border-bottom: 1px solid #f8f8f8; + right: 0; + top: 50%; + position: absolute; } } - &:last-of-type { - margin-bottom: 0; + td { + input, select, textarea { + width: 50%; + min-width: 250px; + } + input[type='checkbox'] { + width: auto; + min-width: 16px; + } } + td, th { + vertical-align: middle; + margin: 0; + line-height: 24px; + padding: 1em; + border-bottom: 1px solid #f8f8f8; + } + } + &:last-of-type { + margin-bottom: 0; } } } @@ -2986,25 +2908,19 @@ img.help_tip { @include ir(); } -.status-manual { - &::before { - @include icon( '\e008' ); - color: #999; - } +.status-manual::before { + @include icon( '\e008' ); + color: #999; } -.status-enabled { - &::before { - @include icon( '\e015' ); - color: $woocommerce; - } +.status-enabled::before { + @include icon( '\e015' ); + color: $woocommerce; } -.status-disabled { - &::before { - @include icon( '\e013' ); - color: #ccc; - } +.status-disabled::before { + @include icon( '\e013' ); + color: #ccc; } .woocommerce { @@ -3038,10 +2954,8 @@ img.help_tip { margin-top: -4px; } - .editor { - textarea { - margin-bottom: 8px; - } + .editor textarea { + margin-bottom: 8px; } } @@ -3199,108 +3113,102 @@ img.help_tip { width: 100%; } -#postimagediv { - img { - border: 1px solid #d5d5d5; - max-width: 100%; - } +#postimagediv img { + border: 1px solid #d5d5d5; + max-width: 100%; } -#woocommerce-product-images { - .inside { - margin: 0; - padding: 0; +#woocommerce-product-images .inside { + margin: 0; + padding: 0; - .add_product_images { - padding: 0 12px 12px; - } + .add_product_images { + padding: 0 12px 12px; + } - #product_images_container { - padding: 0 0 0 9px; + #product_images_container { + padding: 0 0 0 9px; - ul { - @include clearfix(); - margin: 0; - padding: 0; + ul { + @include clearfix(); + margin: 0; + padding: 0; - li.image, - li.add, - li.wc-metabox-sortable-placeholder { - width: 80px; - float: left; - cursor: move; - border: 1px solid #d5d5d5; - margin: 9px 9px 0 0; - background: #f7f7f7; - @include border-radius(2px); - position: relative; - box-sizing: border-box; + li.image, + li.add, + li.wc-metabox-sortable-placeholder { + width: 80px; + float: left; + cursor: move; + border: 1px solid #d5d5d5; + margin: 9px 9px 0 0; + background: #f7f7f7; + @include border-radius(2px); + position: relative; + box-sizing: border-box; - img { - width: 100%; - height: auto; - display: block; - } - } - - li.wc-metabox-sortable-placeholder { - border: 3px dashed #dddddd; - position: relative; - - &::after { - @include icon_dashicons( '\f161' ); - font-size: 2.618em; - line-height: 72px; - color: #ddd; - } - } - - ul.actions { - position: absolute; - top: -8px; - right: -8px; - padding: 2px; - display: none; - - li { - float: right; - margin: 0 0 0 2px; - - a { - width: 1em; - height: 1em; - margin: 0; - height: 0; - display: block; - overflow: hidden; - - &.tips { - cursor: pointer; - } - } - - a.delete { - @include ir(); - font-size: 1.4em; - - &::before { - @include icon_dashicons( '\f153' ); - color: #999; - } - - &:hover { - &::before { - color: $red; - } - } - } - } - } - - li:hover ul.actions { + img { + width: 100%; + height: auto; display: block; } } + + li.wc-metabox-sortable-placeholder { + border: 3px dashed #dddddd; + position: relative; + + &::after { + @include icon_dashicons( '\f161' ); + font-size: 2.618em; + line-height: 72px; + color: #ddd; + } + } + + ul.actions { + position: absolute; + top: -8px; + right: -8px; + padding: 2px; + display: none; + + li { + float: right; + margin: 0 0 0 2px; + + a { + width: 1em; + height: 1em; + margin: 0; + height: 0; + display: block; + overflow: hidden; + + &.tips { + cursor: pointer; + } + } + + a.delete { + @include ir(); + font-size: 1.4em; + + &::before { + @include icon_dashicons( '\f153' ); + color: #999; + } + + &:hover::before { + color: $red; + } + } + } + } + + li:hover ul.actions { + display: block; + } } } } @@ -3470,77 +3378,55 @@ img.help_tip { } } - &.general_options { - a::before { - content: '\f107'; - } + &.general_options a::before { + content: '\f107'; } - &.inventory_options { - a::before { - content: '\f481'; - } + &.inventory_options a::before { + content: '\f481'; } - &.shipping_options { - a::before { - font-family: 'WooCommerce'; - content: '\e01a'; - } + &.shipping_options a::before { + font-family: 'WooCommerce'; + content: '\e01a'; } - &.linked_product_options { - a::before { - content: '\f103'; - } + &.linked_product_options a::before { + content: '\f103'; } - &.attribute_options { - a::before { - content: '\f175'; - } + &.attribute_options a::before { + content: '\f175'; } - &.advanced_options { - a::before { - font-family: 'Dashicons'; - content: '\f111'; - } + &.advanced_options a::before { + font-family: 'Dashicons'; + content: '\f111'; } - &.variations_options { - a::before { - content: '\f509'; - } + &.variations_options a::before { + content: '\f509'; } - &.usage_restriction_options { - a::before { - font-family: 'WooCommerce'; - content: '\e602'; - } + &.usage_restriction_options a::before { + font-family: 'WooCommerce'; + content: '\e602'; } - &.usage_limit_options { - a::before { - font-family: 'WooCommerce'; - content: '\e601'; - } + &.usage_limit_options a::before { + font-family: 'WooCommerce'; + content: '\e601'; } - &.general_coupon_data { - a::before { - font-family: 'WooCommerce'; - content: '\e600'; - } + &.general_coupon_data a::before { + font-family: 'WooCommerce'; + content: '\e600'; } - &.active { - a { - color: #555; - position: relative; - background-color: #eee; - } + &.active a { + color: #555; + position: relative; + background-color: #eee; } } } @@ -3559,10 +3445,8 @@ img.help_tip { padding-top: 20px; } - tfoot { - th { - padding-left: 10px; - } + tfoot th { + padding-left: 10px; } .add.button::before { @@ -3591,10 +3475,8 @@ img.help_tip { padding: 9px; color: #555; - .form-field { - .woocommerce-help-tip { - font-size: 1.4em; - } + .form-field .woocommerce-help-tip { + font-size: 1.4em; } } @@ -3636,112 +3518,76 @@ img.help_tip { .woocommerce_variations, .woocommerce_options_panel { - .downloadable_files { - table { - width: 100%; - padding: 0 !important; + .downloadable_files table { + width: 100%; + padding: 0 !important; - th { - padding: 7px 0 7px 7px !important; + th { + padding: 7px 0 7px 7px !important; - &.sort { - width: 17px; - padding: 7px !important; - } - - .woocommerce-help-tip { - font-size: 1.1em; - margin-left: 0; - } - } - - td { - vertical-align: middle !important; - padding: 4px 0 4px 7px !important; - position: relative; - - &:last-child { - padding-right: 7px !important; - } - - input.input_text { - width: 100%; - float: none; - min-width: 0; - margin: 1px 0; - } - - .upload_file_button { - width: auto; - float: right; - cursor: pointer; - } - - .delete { - @include ir(); - font-size: 1.2em; - - &::before { - @include icon_dashicons( '\f153' ); - color: #999; - } - - &:hover { - &::before { - color: $red; - } - } - } - } - - td.sort { + &.sort { width: 17px; - cursor: move; - font-size: 15px; - text-align: center; - background: #f9f9f9; + padding: 7px !important; + } + + .woocommerce-help-tip { + font-size: 1.1em; + margin-left: 0; + } + } + + td { + vertical-align: middle !important; + padding: 4px 0 4px 7px !important; + position: relative; + + &:last-child { padding-right: 7px !important; + } + + input.input_text { + width: 100%; + float: none; + min-width: 0; + margin: 1px 0; + } + + .upload_file_button { + width: auto; + float: right; + cursor: pointer; + } + + .delete { + @include ir(); + font-size: 1.2em; &::before { - content: '\f333'; - font-family: 'Dashicons'; - text-align: center; - line-height: 1; + @include icon_dashicons( '\f153' ); color: #999; - display: block; - width: 17px; - float: left; - height: 100%; } &:hover { &::before { - color: #333; + color: $red; } } } } - } -} -.woocommerce_variation { - h3 { - .sort { + + td.sort { width: 17px; - height: 26px; cursor: move; - float: right; font-size: 15px; - font-weight: 400; - margin-right: 0.5em; - visibility: hidden; text-align: center; - vertical-align: middle; + background: #f9f9f9; + padding-right: 7px !important; &::before { content: '\f333'; font-family: 'Dashicons'; text-align: center; - line-height: 28px; + line-height: 1; color: #999; display: block; width: 17px; @@ -3749,13 +3595,41 @@ img.help_tip { height: 100%; } - &:hover { - &::before { - color: #777; - } + &:hover::before { + color: #333; } } } +} +.woocommerce_variation { + h3 .sort { + width: 17px; + height: 26px; + cursor: move; + float: right; + font-size: 15px; + font-weight: 400; + margin-right: 0.5em; + visibility: hidden; + text-align: center; + vertical-align: middle; + + &::before { + content: '\f333'; + font-family: 'Dashicons'; + text-align: center; + line-height: 28px; + color: #999; + display: block; + width: 17px; + float: left; + height: 100%; + } + + &:hover::before { + color: #777; + } + } h3:hover, &.ui-sortable-helper { .sort { visibility: visible; @@ -3909,27 +3783,23 @@ img.help_tip { } } - ul.wc-radios { - label { - margin-left: 0; - } + ul.wc-radios label { + margin-left: 0; } } } - .dimensions_field { - .wrap { - display: block; - width: 50%; + .dimensions_field .wrap { + display: block; + width: 50%; - input { - width: 30.75%; - margin-right: 3.8%; - } + input { + width: 30.75%; + margin-right: 3.8%; + } - .last { - margin-right: 0; - } + .last { + margin-right: 0; } } @@ -4002,11 +3872,9 @@ img.help_tip { } } - &#product_attributes { - .expand-close { - float: right; - line-height: 28px; - } + &#product_attributes .expand-close { + float: right; + line-height: 28px; } button.add_variable_attribute, @@ -4059,10 +3927,8 @@ img.help_tip { &.closed { @include border-radius(3px); - .handlediv { - &::before { - content: '\f140' !important; - } + .handlediv::before { + content: '\f140' !important; } h3 { @@ -4283,10 +4149,8 @@ img.help_tip { display: none; } - &:hover { - &::before { - display: block; - } + &:hover::before { + display: block; } } } @@ -4521,13 +4385,11 @@ img.ui-datepicker-trigger { zoom: 1; } - .widefat { - td { - vertical-align: top; - padding: 7px; - .description { - margin: 4px 0 0; - } + .widefat td { + vertical-align: top; + padding: 7px; + .description { + margin: 4px 0 0; } } @@ -4895,10 +4757,8 @@ img.ui-datepicker-trigger { float: left; min-width: 100%; - table { - td { - padding: 9px; - } + table td { + padding: 9px; } } @@ -4934,16 +4794,12 @@ img.ui-datepicker-trigger { } } - a.edit { - &::after { - content: '\f464'; - } + a.edit::after { + content: '\f464'; } - a.view { - &::after { - content: '\f177'; - } + a.view::after { + content: '\f177'; } } } @@ -5054,22 +4910,16 @@ table.bar_chart { } } -.post-type-shop_order { - .woocommerce-BlankState-message::before { - @include icon( '\e01d' ); - } +.post-type-shop_order .woocommerce-BlankState-message::before { + @include icon( '\e01d' ); } -.post-type-shop_coupon { - .woocommerce-BlankState-message::before { - @include icon( '\e600' ); - } +.post-type-shop_coupon .woocommerce-BlankState-message::before { + @include icon( '\e600' ); } -.post-type-product { - .woocommerce-BlankState-message::before { - @include icon( '\e006' ); - } +.post-type-product .woocommerce-BlankState-message::before { + @include icon( '\e006' ); } .woocommerce-BlankState { @@ -5154,13 +5004,9 @@ table.bar_chart { } } - .woocommerce_variable_attributes { - .downloadable_files { - table { - margin: 0 0 1em; - width: 100%; - } - } + .woocommerce_variable_attributes .downloadable_files table { + margin: 0 0 1em; + width: 100%; } } } @@ -5267,12 +5113,8 @@ table.bar_chart { } } - .is-expanded { - td { - &:not( .hidden ) { - overflow: visible; - } - } + .is-expanded td:not( .hidden ) { + overflow: visible; } .toggle-row { @@ -5302,19 +5144,13 @@ table.bar_chart { text-align: inherit; } - .column-order_notes { - .note-on { - font-size: 1.3em; - margin: 0; - } + .column-order_notes .note-on { + font-size: 1.3em; + margin: 0; } - .is-expanded { - td { - &:not( .hidden ) { - overflow: visible; - } - } + .is-expanded td:not(.hidden ) { + overflow: visible; } .toggle-row { @@ -5360,11 +5196,9 @@ table.bar_chart { } } - &.wc-backbone-modal-shipping-method-settings { - .wc-backbone-modal-content { - width: 75%; - min-width: 500px; - } + &.wc-backbone-modal-shipping-method-settings .wc-backbone-modal-content { + width: 75%; + min-width: 500px; } .select2-container { @@ -5543,36 +5377,30 @@ table.bar_chart { color: #999; margin-top: -1px; } - .select2-search--inline { - .select2-search__field { - font-family: inherit; - font-size: inherit; - font-weight: inherit; - padding: 3px 0; - } + .select2-search--inline .select2-search__field { + font-family: inherit; + font-size: inherit; + font-weight: inherit; + padding: 3px 0; } } -.woocommerce table.form-table { +.woocommerce table.form-table .select2-container { + min-width: 400px !important; +} +.post-type-shop_order .tablenav { + .actions { + overflow: visible; + } + select, + input { + line-height: 32px; + height: 32px; + } .select2-container { - min-width: 400px !important; - } -} -.post-type-shop_order { - .tablenav { - .actions { - overflow: visible; - } - select, - input { - line-height: 32px; - height: 32px; - } - .select2-container { - float: left; - width: 200px !important; - font-size: 14px; - vertical-align: middle; - margin: 1px 6px 4px 1px; - } + float: left; + width: 200px !important; + font-size: 14px; + vertical-align: middle; + margin: 1px 6px 4px 1px; } } From 4f5f3f251e1b164ccf840933bd511d91536da973 Mon Sep 17 00:00:00 2001 From: refael iliaguyev Date: Tue, 4 Apr 2017 20:14:33 +0300 Subject: [PATCH 234/525] remove deep nesting where not really necessary --- assets/css/woocommerce.scss | 697 ++++++++++++++++-------------------- 1 file changed, 299 insertions(+), 398 deletions(-) diff --git a/assets/css/woocommerce.scss b/assets/css/woocommerce.scss index 652c511a639..ddd349a0813 100644 --- a/assets/css/woocommerce.scss +++ b/assets/css/woocommerce.scss @@ -39,10 +39,8 @@ p.demo_store, } } -.admin-bar { - p.demo_store { - top: 32px; - } +.admin-bar p.demo_store { + top: 32px; } /** @@ -103,11 +101,9 @@ p.demo_store, } } - .quantity { - .qty { - width: 3.631em; - text-align: center; - } + .quantity .qty { + width: 3.631em; + text-align: center; } /** @@ -431,10 +427,8 @@ p.demo_store, } } - .woocommerce-variation-description { - p { - margin-bottom: 1em; - } + .woocommerce-variation-description p { + margin-bottom: 1em; } .reset_variations { @@ -514,71 +508,69 @@ p.demo_store, } } - ul.products { - li.product { - .onsale { - top: 0; - right: 0; - left: auto; - margin: -0.5em -0.5em 0 0; - } + ul.products li.product { + .onsale { + top: 0; + right: 0; + left: auto; + margin: -0.5em -0.5em 0 0; + } - h3, - .woocommerce-loop-product__title, - .woocommerce-loop-category__title { - padding: 0.5em 0; - margin: 0; - font-size: 1em; - } + h3, + .woocommerce-loop-product__title, + .woocommerce-loop-category__title { + padding: 0.5em 0; + margin: 0; + font-size: 1em; + } - a { - text-decoration: none; - } + a { + text-decoration: none; + } - a img { - width: 100%; - height: auto; - display: block; - margin: 0 0 1em; - box-shadow: none; - } + a img { + width: 100%; + height: auto; + display: block; + margin: 0 0 1em; + box-shadow: none; + } - strong { + strong { + display: block; + } + + .star-rating { + font-size: 0.857em; + } + + .button { + margin-top: 1em; + } + + .price { + color: $highlight; + display: block; + font-weight: normal; + margin-bottom: 0.5em; + font-size: 0.857em; + + del { + color: inherit; + opacity: 0.5; display: block; } - .star-rating { - font-size: 0.857em; + ins { + background: none; + font-weight: 700; } - .button { - margin-top: 1em; - } - - .price { - color: $highlight; - display: block; - font-weight: normal; - margin-bottom: 0.5em; - font-size: 0.857em; - - del { - color: inherit; - opacity: 0.5; - display: block; - } - - ins { - background: none; - font-weight: 700; - } - - .from { - font-size: 0.67em; - margin: -2px 0 0 0; - text-transform: uppercase; - color: rgba(desaturate($highlight, 75%), 0.5); - } + .from { + font-size: 0.67em; + margin: -2px 0 0 0; + text-transform: uppercase; + color: rgba(desaturate($highlight, 75%), 0.5); } } } @@ -685,13 +677,11 @@ p.demo_store, } } - &.added { - &::after { - font-family: 'WooCommerce'; - content: '\e017'; - margin-left: 0.53em; - vertical-align: bottom; - } + &.added::after { + font-family: 'WooCommerce'; + content: '\e017'; + margin-left: 0.53em; + vertical-align: bottom; } &:hover { @@ -911,44 +901,36 @@ p.demo_store, } } - .products { - .star-rating { - display: block; - margin: 0 0 0.5em; - float: none; - } + .products .star-rating { + display: block; + margin: 0 0 0.5em; + float: none; } - .hreview-aggregate { - .star-rating { - margin: 10px 0 0; - } + .hreview-aggregate .star-rating { + margin: 10px 0 0; } - #review_form { - #respond { - @include clearfix(); - position: static; - margin: 0; - width: auto; - padding: 0; - background: transparent none; - border: 0; + #review_form #respond { + @include clearfix(); + position: static; + margin: 0; + width: auto; + padding: 0; + background: transparent none; + border: 0; - p { - margin: 0 0 10px; - } + p { + margin: 0 0 10px; + } - .form-submit { - input { - left: auto; - } - } + .form-submit input { + left: auto; + } - textarea { - box-sizing: border-box; - width: 100%; - } + textarea { + box-sizing: border-box; + width: 100%; } } @@ -974,19 +956,13 @@ p.demo_store, text-indent: 0; } - &:hover { - ~ a::before { - content: '\e021'; - } + &:hover ~ a::before { + content: '\e021'; } } - &:hover { - a { - &::before { - content: '\e020'; - } - } + &:hover a::before { + content: '\e020'; } &.selected { @@ -1000,10 +976,8 @@ p.demo_store, } } - a:not( .active ) { - &::before { - content: '\e020'; - } + a:not( .active )::before { + content: '\e020'; } } } @@ -1070,12 +1044,10 @@ p.demo_store, } } - tbody:first-child { - tr:first-child { - th, - td { - border-top: 0; - } + tbody:first-child tr:first-child { + th, + td { + border-top: 0; } } @@ -1121,11 +1093,9 @@ p.demo_store, &:last-child { text-align: left; } - .woocommerce-MyAccount-downloads-file { - &::before { - content: '\2193'; - display: inline-block; - } + .woocommerce-MyAccount-downloads-file::before { + content: '\2193'; + display: inline-block; } } } @@ -1161,7 +1131,6 @@ p.demo_store, min-width: 80px; } - /** * Cart sidebar */ @@ -1237,17 +1206,15 @@ p.demo_store, } } - .cart_list { - li { - padding-left: 2em; - position: relative; - padding-top: 0; + .cart_list li { + padding-left: 2em; + position: relative; + padding-top: 0; - a.remove { - position: absolute; - top: 0; - left: 0; - } + a.remove { + position: absolute; + top: 0; + left: 0; } } @@ -1263,101 +1230,99 @@ p.demo_store, /** * Forms */ - form { - .form-row { - padding: 3px; - margin: 0 0 6px; + form .form-row { + padding: 3px; + margin: 0 0 6px; - [placeholder]:focus::-webkit-input-placeholder { - -webkit-transition: opacity 0.5s 0.5s ease; - -moz-transition: opacity 0.5s 0.5s ease; - transition: opacity 0.5s 0.5s ease; - opacity: 0; - } + [placeholder]:focus::-webkit-input-placeholder { + -webkit-transition: opacity 0.5s 0.5s ease; + -moz-transition: opacity 0.5s 0.5s ease; + transition: opacity 0.5s 0.5s ease; + opacity: 0; + } + label { + line-height: 2; + } + + label.hidden { + visibility: hidden; + } + + label.inline { + display: inline; + } + + select { + cursor: pointer; + margin: 0; + } + + .required { + color: red; + font-weight: 700; + border: 0; + } + + .input-checkbox { + display: inline; + margin: -2px 8px 0 0; + text-align: center; + vertical-align: middle; + } + + input.input-text, + textarea { + box-sizing: border-box; + width: 100%; + margin: 0; + outline: 0; + line-height: 1; + } + + textarea { + height: 4em; + line-height: 1.5; + display: block; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + } + + .select2-container { + width: 100%; + line-height: 2em; + } + + &.woocommerce-invalid { label { - line-height: 2; + color: $red; } - - label.hidden { - visibility: hidden; - } - - label.inline { - display: inline; - } - - select { - cursor: pointer; - margin: 0; - } - - .required { - color: red; - font-weight: 700; - border: 0; - } - - .input-checkbox { - display: inline; - margin: -2px 8px 0 0; - text-align: center; - vertical-align: middle; - } - + .select2-container, input.input-text, - textarea { - box-sizing: border-box; - width: 100%; - margin: 0; - outline: 0; - line-height: 1; + select { + border-color: $red; } + } - textarea { - height: 4em; - line-height: 1.5; - display: block; - -moz-box-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; + &.woocommerce-validated { + .select2-container, + input.input-text, + select { + border-color: $green - #111; } + } - .select2-container { - width: 100%; - line-height: 2em; - } + ::-webkit-input-placeholder { + line-height: normal; + } - &.woocommerce-invalid { - label { - color: $red; - } - .select2-container, - input.input-text, - select { - border-color: $red; - } - } + :-moz-placeholder { + line-height: normal; + } - &.woocommerce-validated { - .select2-container, - input.input-text, - select { - border-color: $green - #111; - } - } - - ::-webkit-input-placeholder { - line-height: normal; - } - - :-moz-placeholder { - line-height: normal; - } - - :-ms-input-placeholder { - line-height: normal; - } + :-ms-input-placeholder { + line-height: normal; } } @@ -1438,56 +1403,48 @@ p.demo_store, /** * Layered nav widget */ - .widget_layered_nav { - ul { - margin: 0; - padding: 0; - border: 0; - list-style: none outside; + .widget_layered_nav ul { + margin: 0; + padding: 0; + border: 0; + list-style: none outside; - li { - @include clearfix(); - padding: 0 0 1px; - list-style: none; + li { + @include clearfix(); + padding: 0 0 1px; + list-style: none; - a, - span { - padding: 1px 0; - } + a, + span { + padding: 1px 0; } + } - li.chosen { - a { - &::before { - @include iconbefore( '\e013' ); - color: $red; - } - } - } + li.chosen a::before { + @include iconbefore( '\e013' ); + color: $red; } } - .widget_layered_nav_filters { - ul { - margin: 0; - padding: 0; - border: 0; - list-style: none outside; - overflow: hidden; - zoom: 1; + .widget_layered_nav_filters ul { + margin: 0; + padding: 0; + border: 0; + list-style: none outside; + overflow: hidden; + zoom: 1; - li { - float: left; - padding: 0 1px 1px 0; - list-style: none; + li { + float: left; + padding: 0 1px 1px 0; + list-style: none; - a { - text-decoration: none; + a { + text-decoration: none; - &::before { - @include iconbefore( '\e013' ); - color: $red; - } + &::before { + @include iconbefore( '\e013' ); + color: $red; } } } @@ -1508,9 +1465,6 @@ p.demo_store, .button { font-size: 1.15em; - } - - .button { float: left; } } @@ -1575,38 +1529,32 @@ p.demo_store, /** * Rating Filter Widget */ - .widget_rating_filter { - ul { - margin: 0; - padding: 0; - border: 0; - list-style: none outside; + .widget_rating_filter ul { + margin: 0; + padding: 0; + border: 0; + list-style: none outside; - li { - @include clearfix(); - padding: 0 0 1px; - list-style: none; + li { + @include clearfix(); + padding: 0 0 1px; + list-style: none; - a { - padding: 1px 0; - text-decoration: none; - } - - .star-rating { - float: none; - display: inline-block; - } + a { + padding: 1px 0; + text-decoration: none; } - li.chosen { - a { - &::before { - @include iconbefore( '\e013' ); - color: $red; - } - } + .star-rating { + float: none; + display: inline-block; } } + + li.chosen a::before { + @include iconbefore( '\e013' ); + color: $red; + } } } @@ -1688,18 +1636,8 @@ button.pswp__button--zoom:hover { /** * Right to left styles */ -.rtl { - &.woocommerce { - div.product { - div.images { - .flex-control-thumbs { - li { - float: right; - } - } - } - } - } +.rtl.woocommerce div.product div.images .flex-control-thumbs li { + float: right; } .woocommerce-message { @@ -1736,33 +1674,26 @@ button.pswp__button--zoom:hover { @include clearfix(); } - .addresses { - .title { - @include clearfix(); + .addresses .title { + @include clearfix(); - h3 { - float: left; - } + h3 { + float: left; + } - .edit { - float: right; - } + .edit { + float: right; } } - ol.commentlist.notes { - li.note { + ol.commentlist.notes li.note { + p.meta { + font-weight: 700; + margin-bottom: 0; + } - p.meta { - font-weight: 700; - margin-bottom: 0; - } - - .description { - p:last-child { - margin-bottom: 0; - } - } + .description p:last-child { + margin-bottom: 0; } } ul.digital-downloads { @@ -1806,20 +1737,16 @@ button.pswp__button--zoom:hover { vertical-align: middle; } - td.actions { - .coupon { - .input-text { - float: left; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - border: 1px solid darken( $secondary, 10% ); - padding: 6px 6px 5px; - margin: 0 4px 0 0; - outline: 0; - line-height: 1; - } - } + td.actions .coupon .input-text { + float: left; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid darken( $secondary, 10% ); + padding: 6px 6px 5px; + margin: 0 4px 0 0; + outline: 0; + line-height: 1; } input { @@ -1850,19 +1777,15 @@ button.pswp__button--zoom:hover { display: block; } - .shipping-calculator-button { - &::after { - @include iconafter( '\e019' ); - } + .shipping-calculator-button::after { + @include iconafter( '\e019' ); } } .cart_totals { - p { - small { - color: $subtext; - font-size: 0.83em; - } + p small { + color: $subtext; + font-size: 0.83em; } table { @@ -1908,12 +1831,8 @@ button.pswp__button--zoom:hover { } } - .cross-sells { - ul.products { - li.product { - margin-top: 0; - } - } + .cross-sells ul.products li.product { + margin-top: 0; } } .checkout { @@ -2166,65 +2085,47 @@ button.pswp__button--zoom:hover { /** * Twenty Eleven specific styles */ -#content.twentyeleven { - .woocommerce-pagination { - a { - font-size: 1em; - line-height: 1; - } - } +#content.twentyeleven .woocommerce-pagination a { + font-size: 1em; + line-height: 1; } /** * Twenty Thirteen specific styles */ -.single-product { - .twentythirteen { - .entry-summary, - #reply-title, - #respond #commentform { - padding: 0; - } +.single-product .twentythirteen { + .entry-summary, + #reply-title, + #respond #commentform { + padding: 0; + } - p.stars { - clear: both; - } + p.stars { + clear: both; } } -.twentythirteen { - .woocommerce-breadcrumb { - padding-top: 40px; - } +.twentythirteen .woocommerce-breadcrumb { + padding-top: 40px; } /** * Twenty Fourteen specific styles */ -.twentyfourteen { - ul.products { - li.product { - margin-top: 0 !important; - } - } +.twentyfourteen ul.products li.product { + margin-top: 0 !important; } /** * Twenty Sixteen specific styles */ -body:not( .search-results ) { - .twentysixteen { - .entry-summary { - color: inherit; - font-size: inherit; - line-height: inherit; - } - } +body:not( .search-results ) .twentysixteen .entry-summary { + color: inherit; + font-size: inherit; + line-height: inherit; } -.twentysixteen { - .price ins { - background: inherit; - color: inherit; - } +.twentysixteen .price ins { + background: inherit; + color: inherit; } From cf954fac1e6afd1c8b72821852584292e4559547 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 4 Apr 2017 14:53:05 -0300 Subject: [PATCH 235/525] Fixed missing array declaration --- includes/abstracts/abstract-wc-rest-crud-controller.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/includes/abstracts/abstract-wc-rest-crud-controller.php b/includes/abstracts/abstract-wc-rest-crud-controller.php index d81dbdece0b..6226351f002 100644 --- a/includes/abstracts/abstract-wc-rest-crud-controller.php +++ b/includes/abstracts/abstract-wc-rest-crud-controller.php @@ -471,7 +471,8 @@ abstract class WC_REST_CRUD_Controller extends WC_REST_Posts_Controller { * @return array */ public function get_collection_params() { - $params['context'] = $this->get_context_param(); + $params = array(); + $params['context'] = $this->get_context_param(); $params['context']['default'] = 'view'; $params['page'] = array( From c88941a42424f43f670fdd9cb3762dce90fbc53a Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 4 Apr 2017 14:54:01 -0300 Subject: [PATCH 236/525] Removed extra taxes params. Search, include and exclude are not handled by the REST API. --- .../api/v1/class-wc-rest-taxes-controller.php | 41 +++++++++---------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/includes/api/v1/class-wc-rest-taxes-controller.php b/includes/api/v1/class-wc-rest-taxes-controller.php index 69f9e2bfcd3..eaf95cf4dc4 100644 --- a/includes/api/v1/class-wc-rest-taxes-controller.php +++ b/includes/api/v1/class-wc-rest-taxes-controller.php @@ -197,10 +197,8 @@ class WC_REST_Taxes_V1_Controller extends WC_REST_Controller { global $wpdb; $prepared_args = array(); - $prepared_args['exclude'] = $request['exclude']; - $prepared_args['include'] = $request['include']; - $prepared_args['order'] = $request['order']; - $prepared_args['number'] = $request['per_page']; + $prepared_args['order'] = $request['order']; + $prepared_args['number'] = $request['per_page']; if ( ! empty( $request['offset'] ) ) { $prepared_args['offset'] = $request['offset']; } else { @@ -648,27 +646,26 @@ class WC_REST_Taxes_V1_Controller extends WC_REST_Controller { * @return array */ public function get_collection_params() { - $params = parent::get_collection_params(); - + $params = array(); + $params['context'] = $this->get_context_param(); $params['context']['default'] = 'view'; - $params['exclude'] = array( - 'description' => __( 'Ensure result set excludes specific IDs.', 'woocommerce' ), - 'type' => 'array', - 'items' => array( - 'type' => 'integer', - ), - 'default' => array(), - 'sanitize_callback' => 'wp_parse_id_list', + $params['page'] = array( + 'description' => __( 'Current page of the collection.', 'woocommerce' ), + 'type' => 'integer', + 'default' => 1, + 'sanitize_callback' => 'absint', + 'validate_callback' => 'rest_validate_request_arg', + 'minimum' => 1, ); - $params['include'] = array( - 'description' => __( 'Limit result set to specific IDs.', 'woocommerce' ), - 'type' => 'array', - 'items' => array( - 'type' => 'integer', - ), - 'default' => array(), - 'sanitize_callback' => 'wp_parse_id_list', + $params['per_page'] = array( + 'description' => __( 'Maximum number of items to be returned in result set.', 'woocommerce' ), + 'type' => 'integer', + 'default' => 10, + 'minimum' => 1, + 'maximum' => 100, + 'sanitize_callback' => 'absint', + 'validate_callback' => 'rest_validate_request_arg', ); $params['offset'] = array( 'description' => __( 'Offset the result set by a specific number of items.', 'woocommerce' ), From b251973a668af23daeeb554a1a4de82c9fc99647 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 4 Apr 2017 20:33:36 +0100 Subject: [PATCH 237/525] Don't filter hidden grouped products Fixes #13903 --- includes/wc-template-functions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/wc-template-functions.php b/includes/wc-template-functions.php index 3d13b869fe1..6029d13b8b8 100644 --- a/includes/wc-template-functions.php +++ b/includes/wc-template-functions.php @@ -974,7 +974,7 @@ if ( ! function_exists( 'woocommerce_grouped_add_to_cart' ) ) { wc_get_template( 'single-product/add-to-cart/grouped.php', array( 'grouped_product' => $product, - 'grouped_products' => array_filter( array_map( 'wc_get_product', $product->get_children() ), 'wc_products_array_filter_visible' ), + 'grouped_products' => array_map( 'wc_get_product', $product->get_children() ), 'quantites_required' => false, ) ); } From 3920a12d71fd8f78990f3c24cb1d684cc8080bd4 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 4 Apr 2017 17:27:11 -0300 Subject: [PATCH 238/525] Prevent RTL flip only color picker inputs Fixes #13723 --- includes/admin/class-wc-admin-settings.php | 45 ++++++++++++++-------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/includes/admin/class-wc-admin-settings.php b/includes/admin/class-wc-admin-settings.php index 4d4c05ff0d1..5488c8b8823 100644 --- a/includes/admin/class-wc-admin-settings.php +++ b/includes/admin/class-wc-admin-settings.php @@ -291,41 +291,52 @@ class WC_Admin_Settings { case 'text': case 'email': case 'number': - case 'color' : case 'password' : - - $type = $value['type']; $option_value = self::get_option( $value['id'], $value['default'] ); - if ( 'color' === $value['type'] ) { - $type = 'text'; - $value['class'] .= 'colorpick'; - $description .= ''; - } - ?>
    - ‎ - '; - } - ?> + /> +
    + + + ‎ + + />‎ +
    : + + + +
    diff --git a/includes/class-wc-deprecated-filter-hooks.php b/includes/class-wc-deprecated-filter-hooks.php index db2068d10ad..5ef50fa4957 100644 --- a/includes/class-wc-deprecated-filter-hooks.php +++ b/includes/class-wc-deprecated-filter-hooks.php @@ -12,43 +12,45 @@ class WC_Deprecated_Filter_Hooks extends WC_Deprecated_Hooks { /** * Array of deprecated hooks we need to handle. + * Format of 'new' => 'old'. * * @var array */ protected $deprecated_hooks = array( - 'woocommerce_structured_data_order' => 'woocommerce_email_order_schema_markup', - 'woocommerce_add_to_cart_fragments' => 'add_to_cart_fragments', - 'woocommerce_add_to_cart_redirect' => 'add_to_cart_redirect', - 'woocommerce_product_get_width' => 'woocommerce_product_width', - 'woocommerce_product_get_height' => 'woocommerce_product_height', - 'woocommerce_product_get_length' => 'woocommerce_product_length', - 'woocommerce_product_get_weight' => 'woocommerce_product_weight', - 'woocommerce_product_get_sku' => 'woocommerce_get_sku', - 'woocommerce_product_get_price' => 'woocommerce_get_price', - 'woocommerce_product_get_regular_price' => 'woocommerce_get_regular_price', - 'woocommerce_product_get_sale_price' => 'woocommerce_get_sale_price', - 'woocommerce_product_get_tax_class' => 'woocommerce_product_tax_class', - 'woocommerce_product_get_stock_quantity' => 'woocommerce_get_stock_quantity', - 'woocommerce_product_get_attributes' => 'woocommerce_get_product_attributes', - 'woocommerce_product_get_gallery_image_ids' => 'woocommerce_product_gallery_attachment_ids', - 'woocommerce_product_get_review_count' => 'woocommerce_product_review_count', - 'woocommerce_product_get_downloads' => 'woocommerce_product_files', - 'woocommerce_order_get_currency' => 'woocommerce_get_currency', - 'woocommerce_order_get_discount_total' => 'woocommerce_order_amount_discount_total', - 'woocommerce_order_get_discount_tax' => 'woocommerce_order_amount_discount_tax', - 'woocommerce_order_get_shipping_total' => 'woocommerce_order_amount_shipping_total', - 'woocommerce_order_get_shipping_tax' => 'woocommerce_order_amount_shipping_tax', - 'woocommerce_order_get_cart_tax' => 'woocommerce_order_amount_cart_tax', - 'woocommerce_order_get_total' => 'woocommerce_order_amount_total', - 'woocommerce_order_get_total_tax' => 'woocommerce_order_amount_total_tax', - 'woocommerce_order_get_total_discount' => 'woocommerce_order_amount_total_discount', - 'woocommerce_order_get_subtotal' => 'woocommerce_order_amount_subtotal', - 'woocommerce_order_get_tax_totals' => 'woocommerce_order_tax_totals', - 'woocommerce_get_order_refund_get_amount' => 'woocommerce_refund_amount', - 'woocommerce_get_order_refund_get_reason' => 'woocommerce_refund_reason', - 'default_checkout_billing_country' => 'default_checkout_country', - 'default_checkout_billing_state' => 'default_checkout_state', - 'default_checkout_billing_postcode' => 'default_checkout_postcode', + 'woocommerce_structured_data_order' => 'woocommerce_email_order_schema_markup', + 'woocommerce_add_to_cart_fragments' => 'add_to_cart_fragments', + 'woocommerce_add_to_cart_redirect' => 'add_to_cart_redirect', + 'woocommerce_product_get_width' => 'woocommerce_product_width', + 'woocommerce_product_get_height' => 'woocommerce_product_height', + 'woocommerce_product_get_length' => 'woocommerce_product_length', + 'woocommerce_product_get_weight' => 'woocommerce_product_weight', + 'woocommerce_product_get_sku' => 'woocommerce_get_sku', + 'woocommerce_product_get_price' => 'woocommerce_get_price', + 'woocommerce_product_get_regular_price' => 'woocommerce_get_regular_price', + 'woocommerce_product_get_sale_price' => 'woocommerce_get_sale_price', + 'woocommerce_product_get_tax_class' => 'woocommerce_product_tax_class', + 'woocommerce_product_get_stock_quantity' => 'woocommerce_get_stock_quantity', + 'woocommerce_product_get_attributes' => 'woocommerce_get_product_attributes', + 'woocommerce_product_get_gallery_image_ids' => 'woocommerce_product_gallery_attachment_ids', + 'woocommerce_product_get_review_count' => 'woocommerce_product_review_count', + 'woocommerce_product_get_downloads' => 'woocommerce_product_files', + 'woocommerce_order_get_currency' => 'woocommerce_get_currency', + 'woocommerce_order_get_discount_total' => 'woocommerce_order_amount_discount_total', + 'woocommerce_order_get_discount_tax' => 'woocommerce_order_amount_discount_tax', + 'woocommerce_order_get_shipping_total' => 'woocommerce_order_amount_shipping_total', + 'woocommerce_order_get_shipping_tax' => 'woocommerce_order_amount_shipping_tax', + 'woocommerce_order_get_cart_tax' => 'woocommerce_order_amount_cart_tax', + 'woocommerce_order_get_total' => 'woocommerce_order_amount_total', + 'woocommerce_order_get_total_tax' => 'woocommerce_order_amount_total_tax', + 'woocommerce_order_get_total_discount' => 'woocommerce_order_amount_total_discount', + 'woocommerce_order_get_subtotal' => 'woocommerce_order_amount_subtotal', + 'woocommerce_order_get_tax_totals' => 'woocommerce_order_tax_totals', + 'woocommerce_get_order_refund_get_amount' => 'woocommerce_refund_amount', + 'woocommerce_get_order_refund_get_reason' => 'woocommerce_refund_reason', + 'default_checkout_billing_country' => 'default_checkout_country', + 'default_checkout_billing_state' => 'default_checkout_state', + 'default_checkout_billing_postcode' => 'default_checkout_postcode', + 'woocommerce_system_status_environment_rows' => 'woocommerce_debug_posting', ); /** From 67274e8c2c2f66c567f8fcac6b60e44071d53f89 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Wed, 5 Apr 2017 14:23:50 -0300 Subject: [PATCH 252/525] Make sure that ID exists --- includes/api/class-wc-rest-system-status-controller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/api/class-wc-rest-system-status-controller.php b/includes/api/class-wc-rest-system-status-controller.php index 8e2212a9068..40a13bb80e7 100644 --- a/includes/api/class-wc-rest-system-status-controller.php +++ b/includes/api/class-wc-rest-system-status-controller.php @@ -844,7 +844,7 @@ class WC_REST_System_Status_Controller extends WC_REST_Controller { * @return array */ public function get_security_info() { - $check_page = wc_get_page_id( 'shop' ) ? get_permalink( wc_get_page_id( 'shop' ) ) : get_home_url(); + $check_page = 0 < wc_get_page_id( 'shop' ) ? get_permalink( wc_get_page_id( 'shop' ) ) : get_home_url(); return array( 'secure_connection' => 'https' === substr( $check_page, 0, 5 ), 'hide_errors' => ! ( defined( 'WP_DEBUG' ) && defined( 'WP_DEBUG_DISPLAY' ) && WP_DEBUG && WP_DEBUG_DISPLAY ) || 0 === intval( ini_get( 'display_errors' ) ), From b9b76f3388ed47d02f86285e7d0d941a98226852 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Wed, 5 Apr 2017 14:31:53 -0300 Subject: [PATCH 253/525] Fixed colorpicker align with other inputs --- assets/css/admin-rtl.css | 2 +- assets/css/admin.css | 2 +- assets/css/admin.scss | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/assets/css/admin-rtl.css b/assets/css/admin-rtl.css index 114dfd7c0f7..a5222192ab1 100644 --- a/assets/css/admin-rtl.css +++ b/assets/css/admin-rtl.css @@ -1,2 +1,2 @@ .select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important}.select2-container--classic .select2-results>.select2-results__options,.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.select2-container--default .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:1px solid #000;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:0 0;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#0073aa;color:#fff}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top,#fff 50%,#eee 100%);background-image:-o-linear-gradient(top,#fff 50%,#eee 100%);background-image:linear-gradient(to bottom,#fff 50%,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #0073aa}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top,#eee 50%,#ccc 100%);background-image:-o-linear-gradient(top,#eee 50%,#ccc 100%);background-image:linear-gradient(to bottom,#eee 50%,#ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:4px 0 0 4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #0073aa}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:0 0;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top,#fff 0,#eee 50%);background-image:-o-linear-gradient(top,#fff 0,#eee 50%);background-image:linear-gradient(to bottom,#fff 0,#eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top,#eee 50%,#fff 100%);background-image:-o-linear-gradient(top,#eee 50%,#fff 100%);background-image:linear-gradient(to bottom,#eee 50%,#fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #0073aa}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #0073aa}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#0073aa} -@charset "UTF-8";.button.wc-reload::after,.woocommerce-help-tip::after{speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased}@-webkit-keyframes spin{100%{-webkit-transform:rotate(-360deg)}}@-moz-keyframes spin{100%{-moz-transform:rotate(-360deg)}}@keyframes spin{100%{-webkit-transform:rotate(-360deg);-moz-transform:rotate(-360deg);-ms-transform:rotate(-360deg);-o-transform:rotate(-360deg);transform:rotate(-360deg)}}@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}.blockUI.blockOverlay::before{height:1em;width:1em;display:block;position:absolute;top:50%;right:50%;margin-right:-.5em;margin-top:-.5em;content:'';-webkit-animation:spin 1s ease-in-out infinite;-moz-animation:spin 1s ease-in-out infinite;animation:spin 1s ease-in-out infinite;background:url(../images/icons/loader.svg) center center;background-size:cover;line-height:1;text-align:center;font-size:2em;color:rgba(0,0,0,.75)}.wc_addons_wrap .addons-featured{max-width:1140px;margin:-1%}.wc_addons_wrap .addons-banner-block-item-icon,.wc_addons_wrap .addons-column-block-item-icon{align-items:center;display:flex;justify-content:center}.wc_addons_wrap .addons-banner-block{background:#fff;box-shadow:0 0 1px rgba(0,0,0,.2);margin:2% 1% 0;max-width:1140px;padding:20px}.wc_addons_wrap .addons-banner-block img{height:62px}.wc_addons_wrap .addons-banner-block p{margin:0 0 20px}.wc_addons_wrap .addons-banner-block-items{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-around;margin:0 -10px}.wc_addons_wrap .addons-banner-block-item{border:1px solid #e6e6e6;border-radius:3px;flex:1 1 200px;margin:10px;max-width:350px;min-width:200px;width:30%}.wc_addons_wrap .addons-banner-block-item-icon{background:#f7f7f7;height:143px}.wc_addons_wrap .addons-banner-block-item-content{display:flex;flex-direction:column;height:184px;justify-content:space-between;padding:24px}.wc_addons_wrap .addons-banner-block-item-content h3{margin-top:0}.wc_addons_wrap .addons-banner-block-item-content p{margin:0 0 auto}.wc_addons_wrap .addons-column-section{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-around}.wc_addons_wrap .addons-column{flex:1 1 200px;margin:0 1%;width:49.5%}.wc_addons_wrap .addons-column-block,.wc_addons_wrap .addons-small-dark-block,.wc_addons_wrap .addons-small-light-block{box-sizing:border-box;box-shadow:0 0 1px rgba(0,0,0,.2);margin:4% 0 0;padding:20px}.wc_addons_wrap .addons-column-block img{max-height:50px;max-width:50px}.wc_addons_wrap .addons-column-block,.wc_addons_wrap .addons-small-light-block{background:#fff}.wc_addons_wrap .addons-column-block-left{float:right}.wc_addons_wrap .addons-column-block-right{float:left}.wc_addons_wrap .addons-column-block-item{display:flex;border-top:2px solid #f9f9f9;flex-direction:row;flex-wrap:wrap;justify-content:space-between;margin:0 -20px;padding:20px}.wc_addons_wrap .addons-column-block-item-icon{background:#f7f7f7;border:1px solid #e6e6e6;height:100px;margin:0 0 10px 10px;width:100px}.wc_addons_wrap .addons-column-block-item-content{display:flex;flex:1 1 200px;flex-wrap:wrap;height:20%;justify-content:space-between;min-width:200px}.wc_addons_wrap .addons-column-block-item-content h2{float:right;margin-top:8px}.wc_addons_wrap .addons-column-block-item-content a{float:left}.wc_addons_wrap .addons-column-block-item-content p{float:right}.wc_addons_wrap .addons-small-dark-block{background-color:#54687d;text-align:center}.wc_addons_wrap .addons-small-dark-items{display:flex;flex-wrap:wrap;justify-content:space-around}.wc_addons_wrap .addons-small-dark-item{margin:0 0 20px}.wc_addons_wrap .addons-small-dark-block h1{color:#fff}.wc_addons_wrap .addons-small-dark-block p{color:#fafafa}.wc_addons_wrap .addons-small-dark-item-icon img{height:30px}.wc_addons_wrap .addons-small-dark-item a{margin:28px auto 0}.wc_addons_wrap .addons-small-light-block{display:flex;flex-wrap:wrap}.wc_addons_wrap .addons-small-light-block h1{margin-top:-12px}.wc_addons_wrap .addons-small-light-block p{margin-top:0}.wc_addons_wrap .addons-small-light-block img{height:225px;margin:0 -20px 0 0}.wc_addons_wrap .addons-small-light-block-content{display:flex;flex:1 1 100px;flex-direction:column;justify-content:space-around}.wc_addons_wrap .addons-small-light-block-buttons{display:flex;justify-content:space-between}.wc_addons_wrap .addons-small-light-block-content a{width:48%}.wc_addons_wrap .addons-button{border-radius:3px;cursor:pointer;display:block;height:37px;line-height:37px;text-align:center;text-decoration:none;width:124px}.wc_addons_wrap .addons-button-solid{background-color:#955a89;color:#fff}.wc_addons_wrap .addons-button-solid:hover{color:#fff;opacity:.8}.wc_addons_wrap .addons-button-outline-green{border:1px solid #73ae39;color:#73ae39}.wc_addons_wrap .addons-button-outline-green:hover{color:#73ae39;opacity:.8}.wc_addons_wrap .addons-button-outline-white{border:1px solid #fff;color:#fff}.wc_addons_wrap .addons-button-outline-white:hover{color:#fff;opacity:.8}.wc_addons_wrap .addons-button-installed{background:#e6e6e6;color:#3c3c3c}.wc_addons_wrap .addons-button-installed:hover{color:#3c3c3c;opacity:.8}@media only screen and (max-width:400px){.wc_addons_wrap .addons-featured{margin:-1% -5%}.wc_addons_wrap .addons-button,.wc_addons_wrap .addons-small-dark-item{width:100%}.wc_addons_wrap .addons-column-block-item-icon{background:0 0;border:none;height:75px;margin:0 0 10px 10px;width:75px}}.wc_addons_wrap .products{overflow:hidden}.wc_addons_wrap .products li{float:right;margin:0 0 1em 1em!important;padding:0;vertical-align:top;width:300px}.wc_addons_wrap .products li a{text-decoration:none;color:inherit;border:1px solid #ddd;display:block;min-height:220px;overflow:hidden;background:#f5f5f5;box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(0,0,0,.1)}.wc_addons_wrap .products li a img{max-width:258px;max-height:24px;padding:17px 20px;display:block;margin:0;background:#fff;border-left:260px solid #fff}.wc_addons_wrap .products li a .price,.wc_addons_wrap .products li a img.extension-thumb+h3{display:none}.wc_addons_wrap .products li a h2,.wc_addons_wrap .products li a h3{margin:0!important;padding:20px!important;background:#fff}.wc_addons_wrap .products li a p{padding:20px!important;margin:0!important;border-top:1px solid #f1f1f1}.wc_addons_wrap .products li a:focus,.wc_addons_wrap .products li a:hover{background-color:#fff}.wc_addons_wrap .storefront{background:url(../images/storefront-bg.jpg) bottom right #f6f6f6;border:1px solid #ddd;padding:20px;overflow:hidden;zoom:1}.wc_addons_wrap .storefront img{width:278px;height:auto;float:right;margin:0 0 0 20px;box-shadow:0 1px 6px rgba(0,0,0,.1)}.wc_addons_wrap .storefront p{max-width:750px}.woocommerce-BlankState a.button-primary,.woocommerce-BlankState button.button-primary,.woocommerce-message a.button-primary,.woocommerce-message button.button-primary{background:#bb77ae;border-color:#a36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;color:#fff;text-shadow:0 -1px 1px #a36597,-1px 0 1px #a36597,0 1px 1px #a36597,1px 0 1px #a36597;display:inline-block}.woocommerce-BlankState a.button-primary:active,.woocommerce-BlankState a.button-primary:focus,.woocommerce-BlankState a.button-primary:hover,.woocommerce-BlankState button.button-primary:active,.woocommerce-BlankState button.button-primary:focus,.woocommerce-BlankState button.button-primary:hover,.woocommerce-message a.button-primary:active,.woocommerce-message a.button-primary:focus,.woocommerce-message a.button-primary:hover,.woocommerce-message button.button-primary:active,.woocommerce-message button.button-primary:focus,.woocommerce-message button.button-primary:hover{background:#a36597;border-color:#a36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597}.woocommerce-message{position:relative;border-right-color:#cc99c2!important;overflow:hidden}.woocommerce-message a.docs,.woocommerce-message a.skip{text-decoration:none!important}.woocommerce-message a.woocommerce-message-close{position:absolute;top:10px;left:10px;padding:10px 21px 10px 15px;font-size:13px;line-height:1.23076923;text-decoration:none}.woocommerce-message a.woocommerce-message-close::before{position:absolute;top:8px;right:0;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.woocommerce-message .twitter-share-button{margin-top:-3px;margin-right:3px;vertical-align:middle}#variable_product_options #message,#variable_product_options .notice{margin:10px}.clear{clear:both}#woocommerce-fields-bulk.inline-edit-col label,#woocommerce-fields.inline-edit-col{clear:right}.wrap.woocommerce div.error,.wrap.woocommerce div.updated{margin-top:10px}mark.amount{background:0 0;color:inherit}.simplify-commerce-banner{overflow:hidden}.simplify-commerce-banner img{float:left;padding:15px 0;margin-right:1em;width:200px}.woocommerce-help-tip{color:#666;display:inline-block;font-size:1.1em;font-style:normal;height:16px;line-height:16px;position:relative;vertical-align:middle;width:16px}.woocommerce-help-tip::after{font-family:Dashicons;font-weight:400;line-height:1;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:"";cursor:help}h2 .woocommerce-help-tip{margin-top:-5px;margin-right:.25em}table.wc_status_table{margin-bottom:1em}table.wc_status_table h2{font-size:14px;margin:0}table.wc_status_table tr:nth-child(2n) td,table.wc_status_table tr:nth-child(2n) th{background:#fcfcfc}table.wc_status_table th{font-weight:700;padding:9px}table.wc_status_table td:first-child{width:33%}table.wc_status_table td.help{width:1em}table.wc_status_table td{padding:9px;font-size:1.1em}table.wc_status_table td mark{background:0 0}table.wc_status_table td mark.yes{color:#7ad03a}table.wc_status_table td mark.no{color:#999}table.wc_status_table td mark.error{color:#a00}table.wc_status_table td ul{margin:0}table.wc_status_table .help_tip{cursor:help}#debug-report{display:none;margin:10px 0;padding:0;position:relative}#debug-report textarea{font-family:monospace;width:100%;margin:0;height:300px;padding:20px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;resize:none;font-size:12px;line-height:20px;outline:0}.wp-list-table.logs .log-level{display:inline;padding:.2em .6em .3em;font-size:80%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.2em}.wp-list-table.logs .log-level:empty{display:none}.wp-list-table.logs .log-level--alert,.wp-list-table.logs .log-level--emergency{background-color:#ff4136}.wp-list-table.logs .log-level--critical,.wp-list-table.logs .log-level--error{background-color:#ff851b}.wp-list-table.logs .log-level--notice,.wp-list-table.logs .log-level--warning{color:#222;background-color:#ffdc00}.wp-list-table.logs .log-level--info{background-color:#0074d9}.wp-list-table.logs .log-level--debug{background-color:#3d9970}@media screen and (min-width:783px){.wp-list-table.logs .column-timestamp{width:18%}.wp-list-table.logs .column-level{width:14%}.wp-list-table.logs .column-source{width:15%}}#log-viewer-select{padding:10px 0 8px;line-height:28px}#log-viewer-select h2 a{vertical-align:middle}#log-viewer{background:#fff;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);padding:5px 20px}#log-viewer pre{font-family:monospace;white-space:pre-wrap}.inline-edit-product.quick-edit-row .inline-edit-col-center,.inline-edit-product.quick-edit-row .inline-edit-col-right{float:left!important}#woocommerce-fields.inline-edit-col label.featured,#woocommerce-fields.inline-edit-col label.manage_stock{margin-right:10px}#woocommerce-fields.inline-edit-col .dimensions div{display:block;margin:.2em 0}#woocommerce-fields.inline-edit-col .dimensions div span.title{display:block;float:right;width:5em}#woocommerce-fields.inline-edit-col .dimensions div span.input-text-wrap{display:block;margin-right:5em}#woocommerce-fields.inline-edit-col .text{box-sizing:border-box;width:99%;float:right;margin:1px 1px 1px 1%}#woocommerce-fields.inline-edit-col .height,#woocommerce-fields.inline-edit-col .length,#woocommerce-fields.inline-edit-col .width{width:32.33%}#woocommerce-fields.inline-edit-col .height{margin-left:0}#woocommerce-fields-bulk.inline-edit-col .inline-edit-group label{clear:none;width:49%;margin:.2em 0}#woocommerce-fields-bulk.inline-edit-col .inline-edit-group.dimensions label{width:75%;max-width:75%}#woocommerce-fields-bulk.inline-edit-col .length,#woocommerce-fields-bulk.inline-edit-col .regular_price,#woocommerce-fields-bulk.inline-edit-col .sale_price,#woocommerce-fields-bulk.inline-edit-col .stock,#woocommerce-fields-bulk.inline-edit-col .weight{box-sizing:border-box;width:100%;margin-right:4.4em}#woocommerce-fields-bulk.inline-edit-col .height,#woocommerce-fields-bulk.inline-edit-col .length,#woocommerce-fields-bulk.inline-edit-col .width{box-sizing:border-box;width:25%}.column-coupon_code{line-height:2.25em}.column-coupon_code,ul.wc_coupon_list{margin:0;overflow:hidden;zoom:1;clear:both}ul.wc_coupon_list li{margin:0}ul.wc_coupon_list li.code{display:inline-block}ul.wc_coupon_list li.code::after{content:', '}ul.wc_coupon_list li.code:last-of-type::after{display:none}ul.wc_coupon_list li.code .tips{cursor:pointer}ul.wc_coupon_list_block{margin:0;padding-bottom:2px}ul.wc_coupon_list_block li{border-top:1px solid #fff;border-bottom:1px solid #ccc;line-height:2.5em;margin:0;padding:.5em 0}ul.wc_coupon_list_block li:first-child{border-top:0;padding-top:0}ul.wc_coupon_list_block li:last-child{border-bottom:0;padding-bottom:0}.button.wc-reload{text-indent:-9999px;position:relative;padding:0;height:28px;width:28px!important;display:inline-block}.button.wc-reload::after{font-family:Dashicons;font-weight:400;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:"";line-height:28px}#order_data h2,#order_data p.order_number{font-family:HelveticaNeue-Light,'Helvetica Neue Light','Helvetica Neue',sans-serif;font-weight:400}#woocommerce-order-data .handlediv,#woocommerce-order-data .hndle{display:none}#woocommerce-order-data .inside{display:block!important}#order_data{padding:23px 24px 12px}#order_data h2{margin:0;font-size:21px;line-height:1.2;text-shadow:-1px 1px 1px #fff;padding:0}#order_data h3{font-size:14px}#order_data h3,#order_data h4{color:#333;margin:1.33em 0 0}#order_data p{color:#777}#order_data p.order_number{margin:0;line-height:1.6em;font-size:16px}#order_data .order_data_column_container{clear:both}#order_data .order_data_column{width:32%;padding:0 0 0 2%;float:right}#order_data .order_data_column>h3 span{display:block}#order_data .order_data_column:last-child{padding-left:0}#order_data .order_data_column p{padding:0!important}#order_data .order_data_column .address strong{display:block}#order_data .order_data_column .form-field{float:right;clear:right;width:48%;padding:0;margin:9px 0 0}#order_data .order_data_column .form-field label{display:block;padding:0 0 3px}#order_data .order_data_column .form-field input,#order_data .order_data_column .form-field select,#order_data .order_data_column .form-field textarea{width:100%}#order_data .order_data_column .form-field .select2-container{width:100%!important}#order_data .order_data_column .form-field .date-picker{width:50%}#order_data .order_data_column .form-field .hour,#order_data .order_data_column .form-field .minute{width:3.5em}#order_data .order_data_column .form-field small{display:block;margin:5px 0 0;color:#999}#order_data .order_data_column ._billing_address_2_field,#order_data .order_data_column ._billing_last_name_field,#order_data .order_data_column ._billing_phone_field,#order_data .order_data_column ._billing_postcode_field,#order_data .order_data_column ._billing_state_field,#order_data .order_data_column ._shipping_address_2_field,#order_data .order_data_column ._shipping_last_name_field,#order_data .order_data_column ._shipping_postcode_field,#order_data .order_data_column ._shipping_state_field,#order_data .order_data_column .form-field.last{float:left;clear:left}#order_data .order_data_column ._billing_company_field,#order_data .order_data_column ._shipping_company_field,#order_data .order_data_column ._transaction_id_field,#order_data .order_data_column .form-field-wide{width:100%;clear:both}#order_data .order_data_column ._billing_company_field .wc-customer-search,#order_data .order_data_column ._billing_company_field .wc-enhanced-select,#order_data .order_data_column ._billing_company_field input,#order_data .order_data_column ._billing_company_field select,#order_data .order_data_column ._billing_company_field textarea,#order_data .order_data_column ._shipping_company_field .wc-customer-search,#order_data .order_data_column ._shipping_company_field .wc-enhanced-select,#order_data .order_data_column ._shipping_company_field input,#order_data .order_data_column ._shipping_company_field select,#order_data .order_data_column ._shipping_company_field textarea,#order_data .order_data_column ._transaction_id_field .wc-customer-search,#order_data .order_data_column ._transaction_id_field .wc-enhanced-select,#order_data .order_data_column ._transaction_id_field input,#order_data .order_data_column ._transaction_id_field select,#order_data .order_data_column ._transaction_id_field textarea,#order_data .order_data_column .form-field-wide .wc-customer-search,#order_data .order_data_column .form-field-wide .wc-enhanced-select,#order_data .order_data_column .form-field-wide input,#order_data .order_data_column .form-field-wide select,#order_data .order_data_column .form-field-wide textarea{width:100%}#order_data .order_data_column p.none_set{color:#999}#order_data .order_data_column div.edit_address{display:none;zoom:1;padding-left:1px}#order_data .order_data_column .wc-customer-user label a,#order_data .order_data_column .wc-order-status label a{float:left}#order_data .order_data_column a.edit_address{width:14px;height:0;padding:14px 0 0;margin:0 6px 0 0;overflow:hidden;position:relative;color:#999;border:0;float:left}#order_data .order_data_column a.edit_address:focus,#order_data .order_data_column a.edit_address:hover{color:#000}#order_data .order_data_column a.edit_address::after{position:absolute;top:0;right:0;text-align:center;vertical-align:top;line-height:14px;font-size:14px;font-weight:400;-webkit-font-smoothing:antialiased;font-family:Dashicons;content:'\f464'}#order_data .order_data_column .billing-same-as-shipping,#order_data .order_data_column .load_customer_billing,#order_data .order_data_column .load_customer_shipping{font-size:13px;display:inline-block;font-weight:400}#order_data .order_data_column .load_customer_shipping{margin-left:.3em}.order_actions{margin:0;overflow:hidden;zoom:1}.order_actions li{border-top:1px solid #fff;border-bottom:1px solid #ddd;padding:6px 0;margin:0;line-height:1.6em;float:right;width:50%;text-align:center}.order_actions li a{float:none;text-align:center;text-decoration:underline}.order_actions li.wide{width:auto;float:none;clear:both;padding:6px;text-align:right;overflow:hidden}.order_actions li #delete-action{line-height:25px;vertical-align:middle;text-align:right;float:right}.order_actions li .save_order{float:left}.order_actions li#actions{overflow:hidden}.order_actions li#actions .button{width:24px;box-sizing:border-box;float:left}.order_actions li#actions select{width:225px;box-sizing:border-box;float:right}#woocommerce-order-items .inside{margin:0;padding:0;background:#fefefe}#woocommerce-order-items .wc-order-data-row{border-bottom:1px solid #dfdfdf;padding:1.5em 2em;background:#f8f8f8;line-height:2em;text-align:left}#woocommerce-order-items .wc-order-data-row::after,#woocommerce-order-items .wc-order-data-row::before{content:' ';display:table}#woocommerce-order-items .wc-order-data-row::after{clear:both}#woocommerce-order-items .wc-order-data-row p{margin:0;line-height:2em}#woocommerce-order-items .wc-order-data-row .wc-used-coupons{text-align:right}#woocommerce-order-items .wc-order-data-row .wc-used-coupons .tips{display:inline-block}#woocommerce-order-items .wc-used-coupons{float:right;width:50%}#woocommerce-order-items .wc-order-totals{float:left;width:50%;margin:0;padding:0;text-align:left}#woocommerce-order-items .wc-order-totals .amount{font-weight:700}#woocommerce-order-items .wc-order-totals .label{vertical-align:top}#woocommerce-order-items .wc-order-totals .total{font-size:1em!important;width:10em;margin:0 .5em 0 0;box-sizing:border-box}#woocommerce-order-items .wc-order-totals .total input[type=text]{width:96%;float:left}#woocommerce-order-items .wc-order-totals .refunded-total{color:#a00}#woocommerce-order-items .refund-actions{margin-top:5px;padding-top:12px;border-top:1px solid #dfdfdf}#woocommerce-order-items .refund-actions .button{float:left;margin-right:4px}#woocommerce-order-items .refund-actions .cancel-action,#woocommerce-order-items .wc-order-item-bulk-edit .cancel-action{float:right;margin-right:0}#woocommerce-order-items .add_meta{margin-right:0!important}#woocommerce-order-items h3 small{color:#999}#woocommerce-order-items .amount{white-space:nowrap}#woocommerce-order-items .add-items .description{margin-left:10px}#woocommerce-order-items .add-items .button{float:right;margin-left:.25em}#woocommerce-order-items .add-items .button-primary{float:none;margin-left:0}#woocommerce-order-items .inside{display:block!important}#woocommerce-order-items .handlediv,#woocommerce-order-items .hndle{display:none}#woocommerce-order-items .woocommerce_order_items_wrapper{margin:0;overflow-x:auto}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items{width:100%;background:#fff}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th{text-align:right;padding:1em;font-weight:400;color:#999;background:#f8f8f8;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th.sortable{cursor:pointer}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th:last-child{padding-left:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th:first-child{padding-right:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th .wc-arrow{float:left;position:relative;margin-left:-1em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td{padding:1.5em 1em 1em;text-align:right;line-height:1.5em;vertical-align:top;border-bottom:1px solid #f8f8f8}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td textarea{width:100%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td select{width:50%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td textarea{font-size:14px;padding:4px;color:#555}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th:last-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td:last-child{padding-left:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td:first-child{padding-right:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr td{cursor:pointer}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr.selected{background:#f5ebf3}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr.selected td{border-color:#e6cce1;opacity:.8}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr:last-child td{border-bottom:1px solid #dfdfdf}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr:first-child td{border-top:8px solid #f8f8f8}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody#order_line_items tr:first-child td{border-top:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb{text-align:right;width:38px;padding-bottom:1.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb .wc-order-item-thumbnail{width:38px;height:38px;border:2px solid #e8e8e8;background:#f8f8f8;color:#ccc;position:relative;font-size:21px;display:block;text-align:center}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb .wc-order-item-thumbnail::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;height:100%;text-align:center;content:"";width:38px;line-height:38px;display:block}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb .wc-order-item-thumbnail img{width:100%;height:100%;margin:0;padding:0;position:relative}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.name .wc-order-item-sku,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.name .wc-order-item-variation{display:block;margin-top:.5em;font-size:.92em!important;color:#888}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item{min-width:200px}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .center,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .variation-id{text-align:center}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class{text-align:left}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class label{white-space:nowrap;color:#999;font-size:.833em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class label input{display:inline}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class input{width:70px;vertical-align:middle;text-align:left}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class select{width:85px;height:26px;vertical-align:middle;font-size:1em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input{display:inline-block;background:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);margin:1px 0;min-width:80px;overflow:hidden;line-height:1em;text-align:left}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input{width:100%;box-sizing:border-box}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input label{font-size:.75em;padding:4px 6px 0;color:#555;display:block}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input input{width:100%;box-sizing:border-box;border:0;box-shadow:none;margin:0;padding:0 6px 4px;color:#555;background:0 0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input input::-webkit-input-placeholder{color:#ddd}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input:first-child{border-bottom:1px dashed #ddd;background:#fff}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input:first-child label{color:#ccc}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .view{white-space:nowrap}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .edit{text-align:right}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class small.times{font-size:.92em!important;color:#888}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-taxes{margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-taxes label{display:block}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-discount{display:block;margin-top:.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class small.times{margin-left:.25em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity{text-align:center}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity input{text-align:center;width:50px}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items span.subtotal{opacity:.5}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.tax_class,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.tax_class{text-align:right}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .calculated{border-color:#ae8ca2;border-style:dotted}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta{width:100%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta{margin:.5em 0 0;font-size:.92em!important;color:#888}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.fee .thumb div::before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.refund .thumb div::before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .thumb div::before{color:#ccc;top:0;right:0;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-align:center;font-family:WooCommerce}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr th,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr th{border:0;padding:0 0 .5em 4px;line-height:1.5em;width:20%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td{padding:0 0 .5em 4px;border:0;line-height:1.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td input{width:100%;margin:0;position:relative;border-bottom:0;box-shadow:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .refund_by,ul.order_notes li p.meta .exact-date{border-bottom:1px dotted #999}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td textarea{width:100%;height:4em;margin:0;box-shadow:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td input:focus+textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td input:focus+textarea{border-top-color:#999}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td p,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td p{margin:0 0 .5em;line-height:1.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td p:last-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td p:last-child{margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.fee .thumb div{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.5em;line-height:1em;vertical-align:middle;margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.fee .thumb div::before{line-height:1;margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.refund .thumb div{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.5em;line-height:1em;vertical-align:middle;margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.refund .thumb div::before{line-height:1;margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .thumb div{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.5em;line-height:1em;vertical-align:middle;margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .thumb div::before{line-height:1;margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .shipping_method,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .shipping_method_name{width:100%;margin:0 0 .5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax{white-space:nowrap}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;float:left;font-size:14px;visibility:hidden;margin:3px 0 0 -18px}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax::before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:"";color:#999}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax:hover::before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax:hover::before{color:#a00}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax:hover .delete-order-tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax:hover .delete-order-tax{visibility:visible}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items small.refunded{display:block;color:#a00;white-space:nowrap;margin-top:.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items small.refunded::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-indent:0;width:100%;height:100%;text-align:center;content:"";position:relative;top:auto;right:auto;margin:-1px 0 0 4px;vertical-align:middle;line-height:1em}#woocommerce-order-items .wc-order-edit-line-item{padding-right:0}#woocommerce-order-items .wc-order-edit-line-item-actions{width:44px;text-align:left;padding-right:0;vertical-align:middle}#woocommerce-order-items .wc-order-edit-line-item-actions a{color:#ccc;display:inline-block;cursor:pointer;padding:0 0 .5em;margin:0 12px 0 0;vertical-align:middle;text-decoration:none;line-height:16px;width:16px;overflow:hidden}#woocommerce-order-items .wc-order-edit-line-item-actions a::before{margin:0;padding:0;font-size:16px;width:16px;height:16px}#woocommerce-order-items .wc-order-edit-line-item-actions .delete-order-item::before,#woocommerce-order-items .wc-order-edit-line-item-actions .delete_refund::before,#woocommerce-order-items .wc-order-edit-line-item-actions .edit-order-item::before{font-family:Dashicons;-webkit-font-smoothing:antialiased;top:0;right:0;width:100%;height:100%;margin:0;text-align:center;position:relative;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;text-indent:0}#woocommerce-order-items .wc-order-edit-line-item-actions a:hover::before{color:#999}#woocommerce-order-items .wc-order-edit-line-item-actions a:first-child{margin-right:0}#woocommerce-order-items .wc-order-edit-line-item-actions .edit-order-item::before{content:""}#woocommerce-order-items .wc-order-edit-line-item-actions .delete-order-item::before,#woocommerce-order-items .wc-order-edit-line-item-actions .delete_refund::before{content:""}#woocommerce-order-items .wc-order-edit-line-item-actions .delete-order-item:hover::before,#woocommerce-order-items .wc-order-edit-line-item-actions .delete_refund:hover::before{color:#a00}#woocommerce-order-items tbody tr .wc-order-edit-line-item-actions{visibility:hidden}#woocommerce-order-items tbody tr:hover .wc-order-edit-line-item-actions{visibility:visible}#woocommerce-order-items .wc-order-totals .wc-order-edit-line-item-actions{width:1.5em;visibility:visible!important}#woocommerce-order-items .wc-order-totals .wc-order-edit-line-item-actions a{padding:0}#woocommerce-order-downloads .buttons{float:right;padding:0;margin:0;vertical-align:top}#woocommerce-order-downloads .buttons .add_item_id,#woocommerce-order-downloads .buttons .select2-container{width:400px!important;margin-left:9px;vertical-align:top;float:right}#woocommerce-order-downloads .buttons button{margin:2px 0 0}#woocommerce-order-downloads h3 small{color:#999}#poststuff #woocommerce-order-actions .inside{margin:0;padding:0}#poststuff #woocommerce-order-actions .inside ul.order_actions li{padding:6px 10px;box-sizing:border-box}#poststuff #woocommerce-order-actions .inside ul.order_actions li:last-child{border-bottom:0}#poststuff #woocommerce-order-notes .inside{margin:0;padding:0}#poststuff #woocommerce-order-notes .inside ul.order_notes li{padding:0 10px}#woocommerce_customers p.search-box{margin:6px 0 4px;float:right}#woocommerce_customers .tablenav{float:left;clear:none}#woocommerce-product-images .inside #product_images_container ul::after,.woocommerce_variable_attributes .data::after{clear:both}.widefat.customers td{vertical-align:middle;padding:4px 7px}.widefat .column-order_title{width:15%}.widefat .column-order_title time{display:block;color:#999;margin:3px 0}.widefat .column-orders,.widefat .column-paying,.widefat .column-spent{text-align:center;width:8%}.widefat .column-last_order{width:11%}.widefat .column-order_actions,.widefat .column-user_actions,.widefat .column-wc_actions{width:110px}.widefat .column-order_actions a.button,.widefat .column-user_actions a.button,.widefat .column-wc_actions a.button{float:right;margin:0 0 2px 4px;cursor:pointer;padding:3px 4px;height:auto}.widefat .column-order_actions a.button img,.widefat .column-user_actions a.button img,.widefat .column-wc_actions a.button img{display:block;width:12px;height:auto}.widefat small.meta{display:block;color:#999;font-size:inherit;margin:3px 0}.widefat .column-order_date,.widefat .column-order_total{width:9%}.widefat .column-order_status{width:45px;text-align:center}.widefat .column-order_status mark{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;background:0 0;font-size:1.4em;margin:0 auto}.widefat .column-order_status mark.cancelled::after,.widefat .column-order_status mark.completed::after,.widefat .column-order_status mark.failed::after,.widefat .column-order_status mark.on-hold::after,.widefat .column-order_status mark.pending::after,.widefat .column-order_status mark.processing::after,.widefat .column-order_status mark.refunded::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center}.column-customer_message .note-on::after,.column-order_notes .note-on::after{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;top:0;right:0;text-align:center;line-height:16px;font-family:WooCommerce}.widefat .column-order_status mark.pending::after{content:'\e012';color:#ffba00}.widefat .column-order_status mark.completed::after{content:'\e015';color:#2ea2cc}.widefat .column-order_status mark.on-hold::after{content:'\e033';color:#999}.widefat .column-order_status mark.failed::after{content:'\e016';color:#d0c21f}.widefat .column-order_status mark.cancelled::after{content:'\e013';color:#a00}.widefat .column-order_status mark.processing::after{content:'\e011';color:#73a724}.widefat .column-order_status mark.refunded::after{content:'\e014';color:#999}.widefat td.column-order_status{padding-top:9px}.column-customer_message .note-on{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto;color:#999}.column-customer_message .note-on::after{margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}.column-order_notes .note-on{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto;color:#999}.column-order_notes .note-on::after{margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}.order_actions .complete,.order_actions .processing,.order_actions .view{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.order_actions .processing::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:"";line-height:1.85}.order_actions .complete::after,.order_actions .view::after{font-family:Dashicons;text-indent:0;position:absolute;width:100%;height:100%;right:0;line-height:1.85;margin:0;text-align:center;font-weight:400;top:0;speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased}.order_actions .complete::after{content:""}.order_actions .view::after{content:""}.user_actions .edit,.user_actions .link,.user_actions .refresh,.user_actions .view{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.user_actions .edit::after,.user_actions .link::after,.user_actions .refresh::after,.user_actions .view::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:"";line-height:1.85}.user_actions .edit::after{font-family:Dashicons;content:'\f464'}.user_actions .link::after{content:'\e00d'}.user_actions .view::after{content:'\e010'}.user_actions .refresh::after{content:'\e031'}.attributes-table td,.attributes-table th{width:15%;vertical-align:top}.attributes-table .attribute-terms{width:32%}.attributes-table .attribute-actions{width:2em}.attributes-table .attribute-actions .configure-terms{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.attributes-table .attribute-actions .configure-terms::after{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:"";font-family:Dashicons;line-height:1.85}ul.order_notes{padding:2px 0 0}ul.order_notes li .note_content{padding:10px;background:#efefef;position:relative}ul.order_notes li .note_content p{margin:0;padding:0;word-wrap:break-word}ul.order_notes li p.meta{padding:10px;color:#999;margin:0;font-size:11px}ul.order_notes li a.delete_note{color:#a00}table.wp-list-table .row-actions,table.wp-list-table span.na{color:#999}ul.order_notes li .note_content::after{content:'';display:block;position:absolute;bottom:-10px;right:20px;width:0;height:0;border-width:10px 0 0 10px;border-style:solid;border-color:#efefef transparent}ul.order_notes li.customer-note .note_content{background:#a7cedc}ul.order_notes li.customer-note .note_content::after{border-color:#a7cedc transparent}ul.order_notes li.system-note .note_content{background:#d7cad2}ul.order_notes li.system-note .note_content::after{border-color:#d7cad2 transparent}.add_note{border-top:1px solid #ddd;padding:10px 10px 0}.add_note h4{margin-top:5px!important}.add_note #add_order_note{width:100%;height:50px}table.wp-list-table .column-thumb{width:52px;text-align:center;white-space:nowrap}table.wp-list-table .column-name{width:22%}table.wp-list-table .column-product_cat,table.wp-list-table .column-product_tag{width:11%!important}table.wp-list-table .column-featured,table.wp-list-table .column-product_type{width:48px;text-align:right!important}table.wp-list-table .column-customer_message,table.wp-list-table .column-order_notes{width:48px;text-align:center}table.wp-list-table .column-customer_message img,table.wp-list-table .column-order_notes img{margin:0 auto;padding-top:0!important}table.wp-list-table .manage-column.column-featured img,table.wp-list-table .manage-column.column-product_type img{padding-right:2px}table.wp-list-table .column-price .woocommerce-price-suffix{display:none}table.wp-list-table img{margin:1px 2px}table.wp-list-table td.column-thumb img{margin:0;width:auto;height:auto;max-width:40px;max-height:40px;vertical-align:middle}table.wp-list-table .column-is_in_stock{text-align:right!important}table.wp-list-table span.wc-featured,table.wp-list-table span.wc-image,table.wp-list-table span.wc-type{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto}table.wp-list-table span.wc-featured::before,table.wp-list-table span.wc-image::before,table.wp-list-table span.wc-type::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:""}table.wp-list-table span.wc-featured::before{content:'\f155'}table.wp-list-table span.wc-featured.not-featured::before{content:'\f154'}table.wp-list-table td.column-featured span.wc-featured{font-size:1.6em;cursor:pointer}table.wp-list-table span.wc-type::before{font-family:WooCommerce;content:'\e006'}table.wp-list-table span.product-type{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.6em;margin:0 auto}table.wp-list-table span.product-type::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:""}table.wp-list-table span.product-type.grouped::before{content:'\e002'}table.wp-list-table span.product-type.external::before{content:'\e034'}table.wp-list-table span.product-type.variable::before{content:'\e003'}table.wp-list-table span.product-type.downloadable::before{content:'\e001'}table.wp-list-table span.product-type.virtual::before{content:'\e000'}table.wp-list-table mark.instock{font-weight:700;color:#7ad03a;background:0 0;line-height:1}table.wp-list-table mark.outofstock{font-weight:700;color:#a44;background:0 0;line-height:1}table.wp-list-table .notes_head,table.wp-list-table .order-notes_head,table.wp-list-table .status_head{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto}table.wp-list-table .notes_head::after,table.wp-list-table .order-notes_head::after,table.wp-list-table .status_head::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center}table.wc_emails .wc-email-settings-table-name,table.wc_emails td.name,table.wc_gateways .wc-email-settings-table-name,table.wc_gateways td.name,table.wc_shipping .wc-email-settings-table-name,table.wc_shipping td.name{font-weight:700}table.wp-list-table .order-notes_head::after{content:'\e028'}table.wp-list-table .notes_head::after{content:'\e026'}table.wp-list-table .status_head::after{content:'\e011'}table.wp-list-table .column-order_items{width:12%}table.wp-list-table .column-order_items table.order_items{width:100%;margin:3px 0 0;padding:0;display:none}table.wp-list-table .column-order_items table.order_items td{border:0;margin:0;padding:0 0 3px}table.wp-list-table .column-order_items table.order_items td.qty{color:#999;padding-left:6px;text-align:right}mark.notice{background:#fff;color:#a00;margin:0 10px 0 0}a.export_rates,a.import_rates{float:left;margin-right:9px;margin-top:-2px;margin-bottom:0}#rates-search{float:left}#rates-search input.wc-tax-rates-search-field{padding:4px 8px;font-size:1.2em}#rates-pagination{float:left;margin-left:.5em}#rates-pagination .tablenav{margin:0}table.wc_input_table,table.wc_tax_rates{width:100%}table.wc_input_table span.tips,table.wc_tax_rates span.tips{color:#2ea2cc}table.wc_input_table th,table.wc_tax_rates th{white-space:nowrap;padding:10px}table.wc_input_table td,table.wc_tax_rates td{padding:0;border-left:1px solid #dfdfdf;border-bottom:1px solid #dfdfdf;border-top:0;background:#fff;cursor:default}table.wc_input_table td input[type=text],table.wc_input_table td input[type=number],table.wc_tax_rates td input[type=text],table.wc_tax_rates td input[type=number]{width:100%;padding:8px 10px;margin:0;border:0;outline:0;background:0 0}table.wc_input_table td input[type=text]:focus,table.wc_input_table td input[type=number]:focus,table.wc_tax_rates td input[type=text]:focus,table.wc_tax_rates td input[type=number]:focus{outline:0;box-shadow:none}table.wc_input_table td.apply_to_shipping,table.wc_input_table td.compound,table.wc_tax_rates td.apply_to_shipping,table.wc_tax_rates td.compound{padding:5px 7px;vertical-align:middle}table.wc_input_table td.apply_to_shipping input,table.wc_input_table td.compound input,table.wc_tax_rates td.apply_to_shipping input,table.wc_tax_rates td.compound input{width:auto;padding:0}table.wc_input_table td:last-child,table.wc_tax_rates td:last-child{border-left:0}table.wc_input_table tr.current td,table.wc_tax_rates tr.current td{background-color:#fefbcc}table.wc_input_table .cost,table.wc_input_table .cost input,table.wc_input_table .item_cost,table.wc_input_table .item_cost input,table.wc_tax_rates .cost,table.wc_tax_rates .cost input,table.wc_tax_rates .item_cost,table.wc_tax_rates .item_cost input{text-align:left}table.wc_input_table th.sort,table.wc_tax_rates th.sort{width:17px;padding:0 4px}table.wc_input_table td.sort,table.wc_tax_rates td.sort{padding:0 4px}table.wc_input_table .ui-sortable:not(.ui-sortable-disabled) td.sort,table.wc_tax_rates .ui-sortable:not(.ui-sortable-disabled) td.sort{cursor:move;font-size:15px;background:#f9f9f9;text-align:center;vertical-align:middle}table.wc_input_table .ui-sortable:not(.ui-sortable-disabled) td.sort::before,table.wc_tax_rates .ui-sortable:not(.ui-sortable-disabled) td.sort::before{content:'\f333';font-family:Dashicons;text-align:center;line-height:1;color:#999;display:block;width:17px;float:right;height:100%}table.wc_input_table .ui-sortable:not(.ui-sortable-disabled) td.sort:hover::before,table.wc_tax_rates .ui-sortable:not(.ui-sortable-disabled) td.sort:hover::before{color:#333}table.wc_input_table .button,table.wc_tax_rates .button{float:right;margin-left:5px}table.wc_input_table .export,table.wc_input_table .import,table.wc_tax_rates .export,table.wc_tax_rates .import{float:left;margin-left:0;margin-right:5px}table.wc_input_table span.tips,table.wc_tax_rates span.tips{padding:0 3px}table.wc_input_table .pagination,table.wc_tax_rates .pagination{float:left}table.wc_input_table .pagination .button,table.wc_tax_rates .pagination .button{margin-right:5px;margin-left:0}table.wc_input_table .pagination .current,table.wc_tax_rates .pagination .current{background:#bbb;text-shadow:none}table.wc_input_table tr:last-child td,table.wc_tax_rates tr:last-child td{border-bottom:0}table.wc_emails,table.wc_gateways,table.wc_shipping{position:relative}table.wc_emails td,table.wc_gateways td,table.wc_shipping td{vertical-align:middle;padding:7px;line-height:2em}table.wc_emails tr:nth-child(odd) td,table.wc_gateways tr:nth-child(odd) td,table.wc_shipping tr:nth-child(odd) td{background:#f9f9f9}table.wc_emails th,table.wc_gateways th,table.wc_shipping th{padding:9px 7px!important;vertical-align:middle}table.wc_emails .settings,table.wc_gateways .settings,table.wc_shipping .settings{text-align:left}table.wc_emails .default,table.wc_emails .radio,table.wc_emails .status,table.wc_gateways .default,table.wc_gateways .radio,table.wc_gateways .status,table.wc_shipping .default,table.wc_shipping .radio,table.wc_shipping .status{text-align:center}table.wc_emails .default .tips,table.wc_emails .radio .tips,table.wc_emails .status .tips,table.wc_gateways .default .tips,table.wc_gateways .radio .tips,table.wc_gateways .status .tips,table.wc_shipping .default .tips,table.wc_shipping .radio .tips,table.wc_shipping .status .tips{margin:0 auto}table.wc_emails .default input,table.wc_emails .radio input,table.wc_emails .status input,table.wc_gateways .default input,table.wc_gateways .radio input,table.wc_gateways .status input,table.wc_shipping .default input,table.wc_shipping .radio input,table.wc_shipping .status input{margin:0}table.wc_emails th.sort,table.wc_gateways th.sort,table.wc_shipping th.sort{width:28px;padding:0}table.wc_emails td.sort,table.wc_gateways td.sort,table.wc_shipping td.sort{padding:0 7px;cursor:move;font-size:15px;text-align:center;vertical-align:middle}table.wc_emails td.sort::before,table.wc_gateways td.sort::before,table.wc_shipping td.sort::before{content:'\f333';font-family:Dashicons;text-align:center;line-height:1;color:#999;display:block;width:17px;float:right;height:100%}table.wc_emails .wc-email-settings-table-name span,table.wc_gateways .wc-email-settings-table-name span,table.wc_shipping .wc-email-settings-table-name span{font-weight:400;color:#999;margin:0 4px 0 0!important}table.wc_emails .wc-email-settings-table-status,table.wc_gateways .wc-email-settings-table-status,table.wc_shipping .wc-email-settings-table-status{text-align:center;width:1em}table.wc_emails .wc-email-settings-table-status .tips,table.wc_gateways .wc-email-settings-table-status .tips,table.wc_shipping .wc-email-settings-table-status .tips{margin:0 auto}table.wc_emails .wc-email-settings-table-actions a,table.wc_gateways .wc-email-settings-table-actions a,table.wc_shipping .wc-email-settings-table-actions a{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}table.wc_emails .wc-email-settings-table-actions a::after,table.wc_gateways .wc-email-settings-table-actions a::after,table.wc_shipping .wc-email-settings-table-actions a::after{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:"";font-family:Dashicons;line-height:1.85}.wc-shipping-zone-settings th{padding:24px 0 24px 24px}.wc-shipping-zone-settings td.forminp{padding:15px 10px}.wc-shipping-zone-settings td.forminp input,.wc-shipping-zone-settings td.forminp textarea{padding:8px;width:448px;max-width:100%!important}.wc-shipping-zone-settings td.forminp .wc-shipping-zone-region-select{width:448px;max-width:100%!important}.wc-shipping-zone-settings td.forminp .wc-shipping-zone-region-select .select2-choices{padding:8px 8px 4px;border-color:#DDD;min-height:0;line-height:1}.wc-shipping-zone-settings td.forminp .wc-shipping-zone-region-select .select2-choices input{padding:0}.wc-shipping-zone-settings td.forminp .wc-shipping-zone-region-select .select2-choices li{margin:0 0 4px 4px}.wc-shipping-zone-settings .wc-shipping-zone-postcodes-toggle{margin:.5em 0 0;font-size:.9em;text-decoration:underline;display:block}.wc-shipping-zone-settings .wc-shipping-zone-postcodes-toggle+.wc-shipping-zone-postcodes{display:none}.wc-shipping-zone-settings .wc-shipping-zone-postcodes textarea{margin:10px 0}.wc-shipping-zone-settings .wc-shipping-zone-postcodes .description{font-size:.9em;color:#999}.wc-shipping-zone-settings+p.submit{margin-top:0}table tr table.wc-shipping-zone-methods tr .row-actions,table tr:hover table.wc-shipping-zone-methods tr .row-actions{position:relative}table tr table.wc-shipping-zone-methods tr:hover .row-actions,table tr:hover table.wc-shipping-zone-methods tr:hover .row-actions{position:static}.wc-shipping-zones-heading .page-title-action{display:inline-block}table.wc-shipping-classes td,table.wc-shipping-classes th,table.wc-shipping-zone-methods td,table.wc-shipping-zone-methods th,table.wc-shipping-zones td,table.wc-shipping-zones th{vertical-align:top;line-height:24px;padding:1em!important;font-size:14px;background:#fff}table.wc-shipping-classes td li,table.wc-shipping-classes th li,table.wc-shipping-zone-methods td li,table.wc-shipping-zone-methods th li,table.wc-shipping-zones td li,table.wc-shipping-zones th li{line-height:24px;font-size:14px}table.wc-shipping-classes td .woocommerce-help-tip,table.wc-shipping-classes th .woocommerce-help-tip,table.wc-shipping-zone-methods td .woocommerce-help-tip,table.wc-shipping-zone-methods th .woocommerce-help-tip,table.wc-shipping-zones td .woocommerce-help-tip,table.wc-shipping-zones th .woocommerce-help-tip{margin:0!important}table.wc-shipping-classes thead th,table.wc-shipping-zone-methods thead th,table.wc-shipping-zones thead th{vertical-align:middle}table.wc-shipping-classes thead .wc-shipping-zone-sort,table.wc-shipping-zone-methods thead .wc-shipping-zone-sort,table.wc-shipping-zones thead .wc-shipping-zone-sort{text-align:center}table.wc-shipping-classes tbody td,table.wc-shipping-zone-methods tbody td,table.wc-shipping-zones tbody td{padding:1.5em 1em!important}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state,table.wc-shipping-classes td.wc-shipping-zones-blank-state,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state,table.wc-shipping-zones td.wc-shipping-zones-blank-state{background:#f7f1f6!important;overflow:hidden;position:relative;padding:7.5em 7.5%!important;border-bottom:2px solid #eee2ec}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state,table.wc-shipping-classes td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state,table.wc-shipping-zones td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state{padding:2em!important}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state p,table.wc-shipping-classes td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state p,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state p,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state p,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state p,table.wc-shipping-zones td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state p{margin-bottom:0}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state li,table.wc-shipping-classes td.wc-shipping-zone-method-blank-state p,table.wc-shipping-classes td.wc-shipping-zones-blank-state li,table.wc-shipping-classes td.wc-shipping-zones-blank-state p,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state p,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state p,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state p,table.wc-shipping-zones td.wc-shipping-zones-blank-state li,table.wc-shipping-zones td.wc-shipping-zones-blank-state p{color:#a46497;font-size:1.5em;line-height:1.5em;margin:0 0 1em;position:relative;z-index:1;text-shadow:-1px 1px 1px #fff}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state li.main,table.wc-shipping-classes td.wc-shipping-zone-method-blank-state p.main,table.wc-shipping-classes td.wc-shipping-zones-blank-state li.main,table.wc-shipping-classes td.wc-shipping-zones-blank-state p.main,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state li.main,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state p.main,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state li.main,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state p.main,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state li.main,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state p.main,table.wc-shipping-zones td.wc-shipping-zones-blank-state li.main,table.wc-shipping-zones td.wc-shipping-zones-blank-state p.main{font-size:2em}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state li,table.wc-shipping-classes td.wc-shipping-zones-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state li,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zones td.wc-shipping-zones-blank-state li{margin-right:1em;list-style:circle inside}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state::before,table.wc-shipping-classes td.wc-shipping-zones-blank-state::before,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state::before,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state::before,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state::before,table.wc-shipping-zones td.wc-shipping-zones-blank-state::before{content:'\e01b';font-family:WooCommerce;text-align:center;line-height:1;color:#eee2ec;display:block;width:1em;font-size:40em;top:50%;left:-3.75%;margin-top:-.1875em;position:absolute}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state .button-primary,table.wc-shipping-classes td.wc-shipping-zones-blank-state .button-primary,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state .button-primary,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state .button-primary,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state .button-primary,table.wc-shipping-zones td.wc-shipping-zones-blank-state .button-primary{background-color:#804877;border-color:#804877;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 0 rgba(0,0,0,.15);margin:0;opacity:1;text-shadow:0 -1px 1px #8a4f7f,-1px 0 1px #8a4f7f,0 1px 1px #8a4f7f,1px 0 1px #8a4f7f;font-size:1.5em;padding:.75em 1em;height:auto;position:relative;z-index:1}table.wc-shipping-classes .wc-shipping-class-rows tr:nth-child(odd) td,table.wc-shipping-classes .wc-shipping-zone-method-rows tr:nth-child(odd) td,table.wc-shipping-classes tbody.wc-shipping-zone-rows tr:nth-child(odd) td,table.wc-shipping-classes tr.odd td,table.wc-shipping-zone-methods .wc-shipping-class-rows tr:nth-child(odd) td,table.wc-shipping-zone-methods .wc-shipping-zone-method-rows tr:nth-child(odd) td,table.wc-shipping-zone-methods tbody.wc-shipping-zone-rows tr:nth-child(odd) td,table.wc-shipping-zone-methods tr.odd td,table.wc-shipping-zones .wc-shipping-class-rows tr:nth-child(odd) td,table.wc-shipping-zones .wc-shipping-zone-method-rows tr:nth-child(odd) td,table.wc-shipping-zones tbody.wc-shipping-zone-rows tr:nth-child(odd) td,table.wc-shipping-zones tr.odd td{background:#f9f9f9}table.wc-shipping-classes p,table.wc-shipping-classes ul,table.wc-shipping-zone-methods p,table.wc-shipping-zone-methods ul,table.wc-shipping-zones p,table.wc-shipping-zones ul{margin:0}table.wc-shipping-classes td.wc-shipping-zone-method-sort,table.wc-shipping-classes td.wc-shipping-zone-sort,table.wc-shipping-zone-methods td.wc-shipping-zone-method-sort,table.wc-shipping-zone-methods td.wc-shipping-zone-sort,table.wc-shipping-zones td.wc-shipping-zone-method-sort,table.wc-shipping-zones td.wc-shipping-zone-sort{cursor:move;font-size:15px;text-align:center}table.wc-shipping-classes td.wc-shipping-zone-method-sort::before,table.wc-shipping-classes td.wc-shipping-zone-sort::before,table.wc-shipping-zone-methods td.wc-shipping-zone-method-sort::before,table.wc-shipping-zone-methods td.wc-shipping-zone-sort::before,table.wc-shipping-zones td.wc-shipping-zone-method-sort::before,table.wc-shipping-zones td.wc-shipping-zone-sort::before{content:'\f333';font-family:Dashicons;text-align:center;color:#999;display:block;width:17px;float:right;height:100%;line-height:24px}table.wc-shipping-classes td.wc-shipping-zone-method-sort:hover::before,table.wc-shipping-classes td.wc-shipping-zone-sort:hover::before,table.wc-shipping-zone-methods td.wc-shipping-zone-method-sort:hover::before,table.wc-shipping-zone-methods td.wc-shipping-zone-sort:hover::before,table.wc-shipping-zones td.wc-shipping-zone-method-sort:hover::before,table.wc-shipping-zones td.wc-shipping-zone-sort:hover::before{color:#333}table.wc-shipping-classes td.wc-shipping-zone-worldwide,table.wc-shipping-zone-methods td.wc-shipping-zone-worldwide,table.wc-shipping-zones td.wc-shipping-zone-worldwide{text-align:center}table.wc-shipping-classes td.wc-shipping-zone-worldwide::before,table.wc-shipping-zone-methods td.wc-shipping-zone-worldwide::before,table.wc-shipping-zones td.wc-shipping-zone-worldwide::before{content:'\f319';font-family:dashicons;text-align:center;color:#999;display:block;width:17px;float:right;height:100%;line-height:24px}table.wc-shipping-classes .wc-shipping-zone-methods,table.wc-shipping-classes .wc-shipping-zone-name,table.wc-shipping-zone-methods .wc-shipping-zone-methods,table.wc-shipping-zone-methods .wc-shipping-zone-name,table.wc-shipping-zones .wc-shipping-zone-methods,table.wc-shipping-zones .wc-shipping-zone-name{width:25%}table.wc-shipping-classes .wc-shipping-class-description input,table.wc-shipping-classes .wc-shipping-class-description select,table.wc-shipping-classes .wc-shipping-class-description textarea,table.wc-shipping-classes .wc-shipping-class-name input,table.wc-shipping-classes .wc-shipping-class-name select,table.wc-shipping-classes .wc-shipping-class-name textarea,table.wc-shipping-classes .wc-shipping-class-slug input,table.wc-shipping-classes .wc-shipping-class-slug select,table.wc-shipping-classes .wc-shipping-class-slug textarea,table.wc-shipping-classes .wc-shipping-zone-name input,table.wc-shipping-classes .wc-shipping-zone-name select,table.wc-shipping-classes .wc-shipping-zone-name textarea,table.wc-shipping-classes .wc-shipping-zone-region input,table.wc-shipping-classes .wc-shipping-zone-region select,table.wc-shipping-classes .wc-shipping-zone-region textarea,table.wc-shipping-zone-methods .wc-shipping-class-description input,table.wc-shipping-zone-methods .wc-shipping-class-description select,table.wc-shipping-zone-methods .wc-shipping-class-description textarea,table.wc-shipping-zone-methods .wc-shipping-class-name input,table.wc-shipping-zone-methods .wc-shipping-class-name select,table.wc-shipping-zone-methods .wc-shipping-class-name textarea,table.wc-shipping-zone-methods .wc-shipping-class-slug input,table.wc-shipping-zone-methods .wc-shipping-class-slug select,table.wc-shipping-zone-methods .wc-shipping-class-slug textarea,table.wc-shipping-zone-methods .wc-shipping-zone-name input,table.wc-shipping-zone-methods .wc-shipping-zone-name select,table.wc-shipping-zone-methods .wc-shipping-zone-name textarea,table.wc-shipping-zone-methods .wc-shipping-zone-region input,table.wc-shipping-zone-methods .wc-shipping-zone-region select,table.wc-shipping-zone-methods .wc-shipping-zone-region textarea,table.wc-shipping-zones .wc-shipping-class-description input,table.wc-shipping-zones .wc-shipping-class-description select,table.wc-shipping-zones .wc-shipping-class-description textarea,table.wc-shipping-zones .wc-shipping-class-name input,table.wc-shipping-zones .wc-shipping-class-name select,table.wc-shipping-zones .wc-shipping-class-name textarea,table.wc-shipping-zones .wc-shipping-class-slug input,table.wc-shipping-zones .wc-shipping-class-slug select,table.wc-shipping-zones .wc-shipping-class-slug textarea,table.wc-shipping-zones .wc-shipping-zone-name input,table.wc-shipping-zones .wc-shipping-zone-name select,table.wc-shipping-zones .wc-shipping-zone-name textarea,table.wc-shipping-zones .wc-shipping-zone-region input,table.wc-shipping-zones .wc-shipping-zone-region select,table.wc-shipping-zones .wc-shipping-zone-region textarea{width:100%}table.wc-shipping-classes .wc-shipping-class-description a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-class-description a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-class-name a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-class-name a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-class-slug a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-class-slug a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-zone-name a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-zone-name a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-zone-region a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-zone-region a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-class-description a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-class-description a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-class-name a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-class-name a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-class-slug a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-class-slug a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-zone-name a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-zone-name a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-zone-region a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-zone-region a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-class-description a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-class-description a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-class-name a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-class-name a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-class-slug a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-class-slug a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-zone-name a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-zone-name a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-zone-region a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-zone-region a.wc-shipping-zone-delete{color:#a00}table.wc-shipping-classes .wc-shipping-class-description a.wc-shipping-class-delete:hover,table.wc-shipping-classes .wc-shipping-class-description a.wc-shipping-zone-delete:hover,table.wc-shipping-classes .wc-shipping-class-name a.wc-shipping-class-delete:hover,table.wc-shipping-classes .wc-shipping-class-name a.wc-shipping-zone-delete:hover,table.wc-shipping-classes .wc-shipping-class-slug a.wc-shipping-class-delete:hover,table.wc-shipping-classes .wc-shipping-class-slug a.wc-shipping-zone-delete:hover,table.wc-shipping-classes .wc-shipping-zone-name a.wc-shipping-class-delete:hover,table.wc-shipping-classes .wc-shipping-zone-name a.wc-shipping-zone-delete:hover,table.wc-shipping-classes .wc-shipping-zone-region a.wc-shipping-class-delete:hover,table.wc-shipping-classes .wc-shipping-zone-region a.wc-shipping-zone-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-description a.wc-shipping-class-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-description a.wc-shipping-zone-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-name a.wc-shipping-class-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-name a.wc-shipping-zone-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-slug a.wc-shipping-class-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-slug a.wc-shipping-zone-delete:hover,table.wc-shipping-zone-methods .wc-shipping-zone-name a.wc-shipping-class-delete:hover,table.wc-shipping-zone-methods .wc-shipping-zone-name a.wc-shipping-zone-delete:hover,table.wc-shipping-zone-methods .wc-shipping-zone-region a.wc-shipping-class-delete:hover,table.wc-shipping-zone-methods .wc-shipping-zone-region a.wc-shipping-zone-delete:hover,table.wc-shipping-zones .wc-shipping-class-description a.wc-shipping-class-delete:hover,table.wc-shipping-zones .wc-shipping-class-description a.wc-shipping-zone-delete:hover,table.wc-shipping-zones .wc-shipping-class-name a.wc-shipping-class-delete:hover,table.wc-shipping-zones .wc-shipping-class-name a.wc-shipping-zone-delete:hover,table.wc-shipping-zones .wc-shipping-class-slug a.wc-shipping-class-delete:hover,table.wc-shipping-zones .wc-shipping-class-slug a.wc-shipping-zone-delete:hover,table.wc-shipping-zones .wc-shipping-zone-name a.wc-shipping-class-delete:hover,table.wc-shipping-zones .wc-shipping-zone-name a.wc-shipping-zone-delete:hover,table.wc-shipping-zones .wc-shipping-zone-region a.wc-shipping-class-delete:hover,table.wc-shipping-zones .wc-shipping-zone-region a.wc-shipping-zone-delete:hover{color:red}table.wc-shipping-classes .wc-shipping-class-count,table.wc-shipping-zone-methods .wc-shipping-class-count,table.wc-shipping-zones .wc-shipping-class-count{text-align:center}table.wc-shipping-classes td.wc-shipping-zone-methods,table.wc-shipping-zone-methods td.wc-shipping-zone-methods,table.wc-shipping-zones td.wc-shipping-zone-methods{color:#555}table.wc-shipping-classes td.wc-shipping-zone-methods .method_disabled,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .method_disabled,table.wc-shipping-zones td.wc-shipping-zone-methods .method_disabled{text-decoration:line-through}table.wc-shipping-classes td.wc-shipping-zone-methods ul,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul,table.wc-shipping-zones td.wc-shipping-zone-methods ul{position:relative;padding-left:32px}table.wc-shipping-classes td.wc-shipping-zone-methods ul li,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li,table.wc-shipping-zones td.wc-shipping-zone-methods ul li{color:#555;display:inline;margin:0}table.wc-shipping-classes td.wc-shipping-zone-methods ul li::before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li::before,table.wc-shipping-zones td.wc-shipping-zone-methods ul li::before{content:', '}table.wc-shipping-classes td.wc-shipping-zone-methods ul li:first-child::before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li:first-child::before,table.wc-shipping-zones td.wc-shipping-zone-methods ul li:first-child::before{content:''}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method{display:block;width:24px;padding:24px 0 0;height:0;overflow:hidden;cursor:pointer}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method::before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method::before,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method::before{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;font-family:Dashicons;content:'\f502';color:#999;vertical-align:middle;line-height:24px;font-size:16px;margin:0}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method.disabled,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method.disabled,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method.disabled{cursor:not-allowed}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method.disabled::before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method.disabled::before,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method.disabled::before{color:#ccc}table.wc-shipping-classes .wc-shipping-zone-method-title,table.wc-shipping-zone-methods .wc-shipping-zone-method-title,table.wc-shipping-zones .wc-shipping-zone-method-title{width:25%}table.wc-shipping-classes .wc-shipping-zone-method-title .wc-shipping-zone-method-delete,table.wc-shipping-zone-methods .wc-shipping-zone-method-title .wc-shipping-zone-method-delete,table.wc-shipping-zones .wc-shipping-zone-method-title .wc-shipping-zone-method-delete{color:red}table.wc-shipping-classes .wc-shipping-zone-method-enabled,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled,table.wc-shipping-zones .wc-shipping-zone-method-enabled{text-align:center}table.wc-shipping-classes .wc-shipping-zone-method-enabled a,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled a,table.wc-shipping-zones .wc-shipping-zone-method-enabled a{display:inline-block}table.wc-shipping-classes .wc-shipping-zone-method-enabled .woocommerce-input-toggle,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled .woocommerce-input-toggle,table.wc-shipping-zones .wc-shipping-zone-method-enabled .woocommerce-input-toggle{margin-top:3px}table.wc-shipping-classes .wc-shipping-zone-method-type,table.wc-shipping-zone-methods .wc-shipping-zone-method-type,table.wc-shipping-zones .wc-shipping-zone-method-type{display:block}table.wc-shipping-classes tfoot input,table.wc-shipping-classes tfoot select,table.wc-shipping-zone-methods tfoot input,table.wc-shipping-zone-methods tfoot select,table.wc-shipping-zones tfoot input,table.wc-shipping-zones tfoot select{vertical-align:middle!important}table.wc-shipping-classes tfoot .button-secondary,table.wc-shipping-zone-methods tfoot .button-secondary,table.wc-shipping-zones tfoot .button-secondary{float:left}table.wc-shipping-classes .editing .wc-shipping-zone-edit,table.wc-shipping-classes .editing .wc-shipping-zone-view,table.wc-shipping-zone-methods .editing .wc-shipping-zone-edit,table.wc-shipping-zone-methods .editing .wc-shipping-zone-view,table.wc-shipping-zones .editing .wc-shipping-zone-edit,table.wc-shipping-zones .editing .wc-shipping-zone-view{display:none}.woocommerce-input-toggle{height:16px;width:32px;border:2px solid #935687;background-color:#935687;display:inline-block;text-indent:-9999px;border-radius:10em;position:relative}.woocommerce-input-toggle:before{content:"";display:block;width:16px;height:16px;background:#fff;position:absolute;top:0;left:0;border-radius:100%}.woocommerce-input-toggle.woocommerce-input-toggle--disabled{border-color:#999;background-color:#999}.woocommerce-input-toggle.woocommerce-input-toggle--disabled:before{left:auto;right:0}.wc-modal-shipping-method-settings{background:#f8f8f8;padding:1em!important}.wc-modal-shipping-method-settings form .form-table{width:100%;background:#fff;margin:0 0 1.5em}.wc-modal-shipping-method-settings form .form-table tr th{width:30%;position:relative}.wc-modal-shipping-method-settings form .form-table tr th .woocommerce-help-tip{float:left;margin:-8px 0 0 -.5em;vertical-align:middle;left:0;top:50%;position:absolute}.wc-modal-shipping-method-settings form .form-table tr td input,.wc-modal-shipping-method-settings form .form-table tr td select,.wc-modal-shipping-method-settings form .form-table tr td textarea{width:50%;min-width:250px}.wc-modal-shipping-method-settings form .form-table tr td input[type=checkbox]{width:auto;min-width:16px}.wc-modal-shipping-method-settings form .form-table tr td,.wc-modal-shipping-method-settings form .form-table tr th{vertical-align:middle;margin:0;line-height:24px;padding:1em;border-bottom:1px solid #f8f8f8}.wc-modal-shipping-method-settings form .form-table:last-of-type{margin-bottom:0}.wc-backbone-modal .wc-shipping-zone-method-selector p{margin-top:0}.wc-backbone-modal .wc-shipping-zone-method-selector .wc-shipping-zone-method-description{margin:.75em 1px 0;line-height:1.5em;color:#999;font-style:italic}.wc-backbone-modal .wc-shipping-zone-method-selector select{width:100%;cursor:pointer}img.help_tip{margin:0 9px 0 0;vertical-align:middle}.postbox img.help_tip{margin-top:0}.postbox .woocommerce-help-tip{margin:0 9px 0 0}.status-disabled,.status-enabled,.status-manual{font-size:1.4em;display:block;text-indent:-9999px;position:relative;height:1em;width:1em}.status-disabled::before,.status-enabled::before,.status-manual::before{font-family:WooCommerce;line-height:1;margin:0;position:absolute;width:100%;height:100%;text-indent:0;top:0;font-variant:normal;-webkit-font-smoothing:antialiased;font-weight:400;text-align:center;right:0;speak:none;text-transform:none}.status-manual::before{content:"";color:#999}.status-enabled::before{content:"";color:#a46497}.status-disabled::before{content:"";color:#ccc}.woocommerce h2.woo-nav-tab-wrapper{margin-bottom:1em}.woocommerce nav.woo-nav-tab-wrapper{margin:1.5em 0 1em;border-bottom:1px solid #ccc}.woocommerce .subsubsub{margin:-8px 0 0}.woocommerce .wc-admin-breadcrumb{margin-right:.5em}.woocommerce .wc-admin-breadcrumb a{color:#a46497}.woocommerce #template div{margin:0}.woocommerce #template div p .button{float:left;margin-right:10px;margin-top:-4px}.woocommerce #template div .editor textarea{margin-bottom:8px}.woocommerce textarea[disabled=disabled]{background:#dfdfdf!important}.woocommerce table.form-table{margin:0;position:relative}.woocommerce table.form-table .forminp-radio ul{margin:0}.woocommerce table.form-table .forminp-radio ul li{line-height:1.4em}.woocommerce table.form-table textarea.input-text{height:100%;min-width:150px;display:block}.woocommerce table.form-table input.regular-input{width:400px}.woocommerce table.form-table textarea.wide-input{width:100%}.woocommerce table.form-table .woocommerce-help-tip,.woocommerce table.form-table img.help_tip{padding:0;margin:-4px 5px 0 0;vertical-align:middle;cursor:help;line-height:1}.woocommerce table.form-table span.help_tip{cursor:help;color:#2ea2cc}.woocommerce table.form-table th{position:relative;padding-left:24px}.woocommerce table.form-table .select2-container{vertical-align:top;margin-bottom:3px}.woocommerce table.form-table table.widefat th{padding-left:inherit}.woocommerce table.form-table th .woocommerce-help-tip,.woocommerce table.form-table th img.help_tip{margin:2px 0 0 -24px;float:left}.woocommerce table.form-table .wp-list-table .woocommerce-help-tip{float:none}.woocommerce table.form-table fieldset{margin-top:4px}.woocommerce table.form-table fieldset .woocommerce-help-tip,.woocommerce table.form-table fieldset img.help_tip{margin:-3px 5px 0 0}.woocommerce table.form-table fieldset p.description{margin-bottom:8px}.woocommerce table.form-table fieldset:first-child{margin-top:0}.woocommerce table.form-table .iris-picker{z-index:100;display:none;position:absolute;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.2)}.woocommerce table.form-table .iris-picker .ui-slider{border:0!important;margin:0!important;width:auto!important;height:auto!important;background:none!important}.woocommerce table.form-table .iris-picker .ui-slider .ui-slider-handle{margin-bottom:0!important}.woocommerce table.form-table .colorpickpreview{padding:3px 20px 3px 3px;border:1px solid #ddd;border-right:0}.woocommerce table.form-table .colorpick{border-left:0}.woocommerce table.form-table .image_width_settings{vertical-align:middle}.woocommerce table.form-table .image_width_settings label{margin-right:10px}.woocommerce table.form-table .wc_emails_wrapper{padding:0 0 10px 15px}.woocommerce #tabs-wrap table a.remove{margin-right:4px}.woocommerce #tabs-wrap table p{margin:0 0 4px!important;overflow:hidden;zoom:1}.woocommerce #tabs-wrap table p a.add{float:right}#wp-excerpt-editor-container{background:#fff}#product_variation-parent #parent_id{width:100%}#postimagediv img{border:1px solid #d5d5d5;max-width:100%}#woocommerce-product-images .inside{margin:0;padding:0}#woocommerce-product-images .inside .add_product_images{padding:0 12px 12px}#woocommerce-product-images .inside #product_images_container{padding:0 9px 0 0}#woocommerce-product-images .inside #product_images_container ul{margin:0;padding:0}#woocommerce-product-images .inside #product_images_container ul::after,#woocommerce-product-images .inside #product_images_container ul::before{content:' ';display:table}#woocommerce-product-images .inside #product_images_container ul li.add,#woocommerce-product-images .inside #product_images_container ul li.image,#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder{width:80px;float:right;cursor:move;border:1px solid #d5d5d5;margin:9px 0 0 9px;background:#f7f7f7;border-radius:2px;position:relative;box-sizing:border-box}#woocommerce-product-images .inside #product_images_container ul li.add img,#woocommerce-product-images .inside #product_images_container ul li.image img,#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder img{width:100%;height:auto;display:block}#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder{border:3px dashed #ddd;position:relative}#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder::after{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:"";font-size:2.618em;line-height:72px;color:#ddd}#woocommerce-product-images .inside #product_images_container ul ul.actions{position:absolute;top:-8px;left:-8px;padding:2px;display:none}#woocommerce-product-images .inside #product_images_container ul ul.actions li{float:left;margin:0 2px 0 0}#woocommerce-product-images .inside #product_images_container ul ul.actions li a{width:1em;margin:0;height:0;display:block;overflow:hidden}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.tips{cursor:pointer}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.delete{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.4em}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.delete::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:"";color:#999}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.delete:hover::before{color:#a00}#woocommerce-product-images .inside #product_images_container ul li:hover ul.actions{display:block}#woocommerce-product-data .hndle{padding:10px}#woocommerce-product-data .hndle span{display:block;vertical-align:middle;line-height:24px}#woocommerce-product-data .hndle span span{display:inline;line-height:inherit;vertical-align:baseline}#woocommerce-product-data .hndle select{margin:0 .5em 0 0}#woocommerce-product-data .hndle label{padding-left:1em;font-size:12px;vertical-align:baseline}#woocommerce-product-data .hndle label:first-child{margin-left:1em;border-left:1px solid #dfdfdf}#woocommerce-product-data .hndle input,#woocommerce-product-data .hndle select{margin-top:-3px 0 0;vertical-align:middle}#woocommerce-product-data>.handlediv{margin-top:4px}#woocommerce-product-data .wrap{margin:0}#woocommerce-coupon-description{padding:3px 8px;font-size:1.7em;line-height:1.42em;height:auto;width:100%;outline:0;margin:10px 0;display:block}#woocommerce-coupon-description::-webkit-input-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-description::-moz-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-description:-ms-input-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-description:-moz-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-data .panel-wrap,#woocommerce-product-data .panel-wrap{background:#fff}#woocommerce-coupon-data .wc-metaboxes-wrapper,#woocommerce-coupon-data .woocommerce_options_panel,#woocommerce-product-data .wc-metaboxes-wrapper,#woocommerce-product-data .woocommerce_options_panel{float:right;width:80%}#woocommerce-coupon-data .wc-metaboxes-wrapper .wc-radios,#woocommerce-coupon-data .woocommerce_options_panel .wc-radios,#woocommerce-product-data .wc-metaboxes-wrapper .wc-radios,#woocommerce-product-data .woocommerce_options_panel .wc-radios{display:block;float:right;margin:0}#woocommerce-coupon-data .wc-metaboxes-wrapper .wc-radios li,#woocommerce-coupon-data .woocommerce_options_panel .wc-radios li,#woocommerce-product-data .wc-metaboxes-wrapper .wc-radios li,#woocommerce-product-data .woocommerce_options_panel .wc-radios li{display:block;padding:0 0 10px}#woocommerce-coupon-data .wc-metaboxes-wrapper .wc-radios li input,#woocommerce-coupon-data .woocommerce_options_panel .wc-radios li input,#woocommerce-product-data .wc-metaboxes-wrapper .wc-radios li input,#woocommerce-product-data .woocommerce_options_panel .wc-radios li input{width:auto}#woocommerce-coupon-data .panel-wrap,#woocommerce-product-data .panel-wrap,.woocommerce .panel-wrap{overflow:hidden}#woocommerce-coupon-data ul.wc-tabs,#woocommerce-product-data ul.wc-tabs,.woocommerce ul.wc-tabs{margin:0;width:20%;float:right;line-height:1em;padding:0 0 10px;position:relative;background-color:#fafafa;border-left:1px solid #eee;box-sizing:border-box}#woocommerce-coupon-data ul.wc-tabs::after,#woocommerce-product-data ul.wc-tabs::after,.woocommerce ul.wc-tabs::after{content:'';display:block;width:100%;height:9999em;position:absolute;bottom:-9999em;right:0;background-color:#fafafa;border-left:1px solid #eee}#woocommerce-coupon-data ul.wc-tabs li,#woocommerce-product-data ul.wc-tabs li,.woocommerce ul.wc-tabs li{margin:0;padding:0;display:block;position:relative}#woocommerce-coupon-data ul.wc-tabs li a,#woocommerce-product-data ul.wc-tabs li a,.woocommerce ul.wc-tabs li a{margin:0;padding:10px;display:block;box-shadow:none;text-decoration:none;line-height:20px!important;border-bottom:1px solid #eee}#woocommerce-coupon-data ul.wc-tabs li a span,#woocommerce-product-data ul.wc-tabs li a span,.woocommerce ul.wc-tabs li a span{margin-right:.618em;margin-left:.618em}#woocommerce-coupon-data ul.wc-tabs li a::before,#woocommerce-product-data ul.wc-tabs li a::before,.woocommerce ul.wc-tabs li a::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;content:"";text-decoration:none}#woocommerce-coupon-data ul.wc-tabs li.general_options a::before,#woocommerce-product-data ul.wc-tabs li.general_options a::before,.woocommerce ul.wc-tabs li.general_options a::before{content:'\f107'}#woocommerce-coupon-data ul.wc-tabs li.inventory_options a::before,#woocommerce-product-data ul.wc-tabs li.inventory_options a::before,.woocommerce ul.wc-tabs li.inventory_options a::before{content:'\f481'}#woocommerce-coupon-data ul.wc-tabs li.shipping_options a::before,#woocommerce-product-data ul.wc-tabs li.shipping_options a::before,.woocommerce ul.wc-tabs li.shipping_options a::before{font-family:WooCommerce;content:'\e01a'}#woocommerce-coupon-data ul.wc-tabs li.linked_product_options a::before,#woocommerce-product-data ul.wc-tabs li.linked_product_options a::before,.woocommerce ul.wc-tabs li.linked_product_options a::before{content:'\f103'}#woocommerce-coupon-data ul.wc-tabs li.attribute_options a::before,#woocommerce-product-data ul.wc-tabs li.attribute_options a::before,.woocommerce ul.wc-tabs li.attribute_options a::before{content:'\f175'}#woocommerce-coupon-data ul.wc-tabs li.advanced_options a::before,#woocommerce-product-data ul.wc-tabs li.advanced_options a::before,.woocommerce ul.wc-tabs li.advanced_options a::before{font-family:Dashicons;content:'\f111'}#woocommerce-coupon-data ul.wc-tabs li.variations_options a::before,#woocommerce-product-data ul.wc-tabs li.variations_options a::before,.woocommerce ul.wc-tabs li.variations_options a::before{content:'\f509'}#woocommerce-coupon-data ul.wc-tabs li.usage_restriction_options a::before,#woocommerce-product-data ul.wc-tabs li.usage_restriction_options a::before,.woocommerce ul.wc-tabs li.usage_restriction_options a::before{font-family:WooCommerce;content:'\e602'}#woocommerce-coupon-data ul.wc-tabs li.usage_limit_options a::before,#woocommerce-product-data ul.wc-tabs li.usage_limit_options a::before,.woocommerce ul.wc-tabs li.usage_limit_options a::before{font-family:WooCommerce;content:'\e601'}#woocommerce-coupon-data ul.wc-tabs li.general_coupon_data a::before,#woocommerce-product-data ul.wc-tabs li.general_coupon_data a::before,.woocommerce ul.wc-tabs li.general_coupon_data a::before{font-family:WooCommerce;content:'\e600'}#woocommerce-coupon-data ul.wc-tabs li.active a,#woocommerce-product-data ul.wc-tabs li.active a,.woocommerce ul.wc-tabs li.active a{color:#555;position:relative;background-color:#eee}.woocommerce_page_wc-settings input[type=email],.woocommerce_page_wc-settings input[type=url]{direction:rtl}.woocommerce_page_wc-settings .shippingrows th.check-column{padding-top:20px}.woocommerce_page_wc-settings .shippingrows tfoot th{padding-right:10px}.woocommerce_page_wc-settings .shippingrows .add.button::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-left:.618em;content:"";text-decoration:none}.woocommerce_page_wc-settings h3.wc-settings-sub-title{font-size:1.2em}#woocommerce-coupon-data .inside,#woocommerce-order-data .inside,#woocommerce-order-downloads .inside,#woocommerce-product-data .inside,#woocommerce-product-type-options .inside{margin:0;padding:0}.panel,.woocommerce_options_panel{padding:9px;color:#555}.panel .form-field .woocommerce-help-tip,.woocommerce_options_panel .form-field .woocommerce-help-tip{font-size:1.4em}.panel,.woocommerce_page_settings .woocommerce_options_panel{padding:0}#woocommerce-product-specs .inside,#woocommerce-product-type-options .panel{margin:0;padding:9px}#woocommerce-product-type-options .panel p,.woocommerce_options_panel fieldset.form-field,.woocommerce_options_panel p{margin:0 0 9px;font-size:12px;padding:5px 9px;line-height:24px}#woocommerce-product-type-options .panel p::after,.woocommerce_options_panel fieldset.form-field::after,.woocommerce_options_panel p::after{content:'.';display:block;height:0;clear:both;visibility:hidden}.woocommerce_options_panel .checkbox,.woocommerce_variable_attributes .checkbox{width:auto;margin:4px 0!important;vertical-align:middle;float:right}.woocommerce_options_panel .downloadable_files table,.woocommerce_variations .downloadable_files table{width:100%;padding:0!important}.woocommerce_options_panel .downloadable_files table th,.woocommerce_variations .downloadable_files table th{padding:7px 7px 7px 0!important}.woocommerce_options_panel .downloadable_files table th.sort,.woocommerce_variations .downloadable_files table th.sort{width:17px;padding:7px!important}.woocommerce_options_panel .downloadable_files table th .woocommerce-help-tip,.woocommerce_variations .downloadable_files table th .woocommerce-help-tip{font-size:1.1em;margin-right:0}.woocommerce_options_panel .downloadable_files table td,.woocommerce_variations .downloadable_files table td{vertical-align:middle!important;padding:4px 7px 4px 0!important;position:relative}.woocommerce_options_panel .downloadable_files table td:last-child,.woocommerce_variations .downloadable_files table td:last-child{padding-left:7px!important}.woocommerce_options_panel .downloadable_files table td input.input_text,.woocommerce_variations .downloadable_files table td input.input_text{width:100%;float:none;min-width:0;margin:1px 0}.woocommerce_options_panel .downloadable_files table td .upload_file_button,.woocommerce_variations .downloadable_files table td .upload_file_button{width:auto;float:left;cursor:pointer}.woocommerce_options_panel .downloadable_files table td .delete,.woocommerce_variations .downloadable_files table td .delete{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.2em}.woocommerce_options_panel .downloadable_files table td .delete::before,.woocommerce_variations .downloadable_files table td .delete::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:"";color:#999}.woocommerce_options_panel .downloadable_files table td .delete:hover::before,.woocommerce_variations .downloadable_files table td .delete:hover::before{color:#a00}.woocommerce_options_panel .downloadable_files table td.sort,.woocommerce_variations .downloadable_files table td.sort{width:17px;cursor:move;font-size:15px;text-align:center;background:#f9f9f9;padding-left:7px!important}.woocommerce_options_panel .downloadable_files table td.sort::before,.woocommerce_variations .downloadable_files table td.sort::before{content:'\f333';font-family:Dashicons;text-align:center;line-height:1;color:#999;display:block;width:17px;float:right;height:100%}.woocommerce_options_panel .downloadable_files table td.sort:hover::before,.woocommerce_variations .downloadable_files table td.sort:hover::before{color:#333}.woocommerce_variation h3 .sort{width:17px;height:26px;cursor:move;float:left;font-size:15px;font-weight:400;margin-left:.5em;visibility:hidden;text-align:center;vertical-align:middle}.woocommerce_variation h3 .sort::before{content:'\f333';font-family:Dashicons;text-align:center;line-height:28px;color:#999;display:block;width:17px;float:right;height:100%}.woocommerce_variation h3 .sort:hover::before{color:#777}.woocommerce_variation h3:hover .sort,.woocommerce_variation.ui-sortable-helper .sort{visibility:visible}.woocommerce_options_panel{min-height:175px;box-sizing:border-box}.woocommerce_options_panel .downloadable_files{padding:0 162px 0 9px;position:relative;margin:9px 0}.woocommerce_options_panel .downloadable_files label{position:absolute;right:0;margin:0 12px 0 0;line-height:24px}.woocommerce_options_panel p{margin:9px 0}.woocommerce_options_panel fieldset.form-field,.woocommerce_options_panel p.form-field{padding:5px 162px 5px 20px!important}.woocommerce_options_panel .sale_price_dates_fields .short:first-of-type{margin-bottom:1em}.woocommerce_options_panel .sale_price_dates_fields .short:nth-of-type(2){clear:right}.woocommerce_options_panel label,.woocommerce_options_panel legend{float:right;width:150px;padding:0;margin:0 -150px 0 0}.woocommerce_options_panel label .req,.woocommerce_options_panel legend .req{font-weight:700;font-style:normal;color:#a00}.woocommerce_options_panel .description{padding:0;margin:0 7px 0 0;clear:none;display:inline}.woocommerce_options_panel .description-block{margin-right:0;display:block}.woocommerce_options_panel input,.woocommerce_options_panel select,.woocommerce_options_panel textarea{margin:0}.woocommerce_options_panel textarea{float:right;height:3.5em;line-height:1.5em;vertical-align:top}.woocommerce_options_panel input[type=text],.woocommerce_options_panel input[type=number],.woocommerce_options_panel input[type=email],.woocommerce_options_panel input[type=password]{width:50%;float:right}.woocommerce_options_panel input.button{width:auto;margin-right:8px}.woocommerce_options_panel select{float:right}.woocommerce_options_panel .short,.woocommerce_options_panel input[type=text].short,.woocommerce_options_panel input[type=number].short,.woocommerce_options_panel input[type=email].short,.woocommerce_options_panel input[type=password].short{width:50%}.woocommerce_options_panel .sized{width:auto!important;margin-left:6px}.woocommerce_options_panel .options_group{border-top:1px solid #fff;border-bottom:1px solid #eee}.woocommerce_options_panel .options_group:first-child{border-top:0}.woocommerce_options_panel .options_group:last-child{border-bottom:0}.woocommerce_options_panel .options_group fieldset{margin:9px 0;font-size:12px;padding:5px 9px;line-height:24px}.woocommerce_options_panel .options_group fieldset label{width:auto;float:none}.woocommerce_options_panel .options_group fieldset ul{float:right;width:50%;margin:0;padding:0}.woocommerce_options_panel .options_group fieldset ul li{margin:0;width:auto}.woocommerce_options_panel .options_group fieldset ul li input{width:auto;float:none;margin-left:4px}.woocommerce_options_panel .options_group fieldset ul.wc-radios label{margin-right:0}.woocommerce_options_panel .dimensions_field .wrap{display:block;width:50%}.woocommerce_options_panel .dimensions_field .wrap input{width:30.75%;margin-left:3.8%}.woocommerce_options_panel .dimensions_field .wrap .last{margin-left:0}.woocommerce_options_panel.padded{padding:1em}#woocommerce-product-data input.dp-applied,.woocommerce_options_panel .select2-container{float:right}#grouped_product_options,#simple_product_options,#virtual_product_options{padding:12px;font-style:italic;color:#666}.wc-metaboxes-wrapper .toolbar{margin:0!important;border-top:1px solid #fff;border-bottom:1px solid #eee;padding:9px 12px!important}.wc-metaboxes-wrapper .toolbar:first-child{border-top:0}.wc-metaboxes-wrapper .toolbar:last-child{border-bottom:0}.wc-metaboxes-wrapper .toolbar .add_variation{float:left;margin-right:5px}.wc-metaboxes-wrapper .toolbar .cancel-variation-changes,.wc-metaboxes-wrapper .toolbar .save-variation-changes{float:right;margin-left:5px}.wc-metaboxes-wrapper p.toolbar{overflow:hidden;zoom:1}.wc-metaboxes-wrapper .expand-close{margin-left:2px;color:#777;font-size:12px;font-style:italic}.wc-metaboxes-wrapper .expand-close a{background:0 0;padding:0;font-size:12px;text-decoration:none}.wc-metaboxes-wrapper#product_attributes .expand-close{float:left;line-height:28px}.wc-metaboxes-wrapper .fr,.wc-metaboxes-wrapper button.add_variable_attribute{float:left;margin:0 6px 0 0}.wc-metaboxes-wrapper .wc-metaboxes{border-bottom:1px solid #eee}.wc-metaboxes-wrapper .wc-metabox-sortable-placeholder{border-color:#bbb;background-color:#f5f5f5;margin-bottom:9px;border-width:1px;border-style:dashed}.wc-metaboxes-wrapper .wc-metabox{background:#fff;border-bottom:1px solid #eee;margin:0!important}.wc-metaboxes-wrapper .wc-metabox select{font-weight:400}.wc-metaboxes-wrapper .wc-metabox:last-of-type{border-bottom:0}.wc-metaboxes-wrapper .wc-metabox .handlediv{width:27px}.wc-metaboxes-wrapper .wc-metabox .handlediv::before{content:'\f142'!important;cursor:pointer;display:inline-block;font:400 20px/1 Dashicons;line-height:.5!important;padding:8px 10px;position:relative;left:12px;top:0}.wc-metaboxes-wrapper .wc-metabox.closed{border-radius:3px}.wc-metaboxes-wrapper .wc-metabox.closed .handlediv::before{content:'\f140'!important}.wc-metaboxes-wrapper .wc-metabox.closed h3{border:0}.wc-metaboxes-wrapper .wc-metabox h3{margin:0!important;padding:.75em 1em .75em .75em!important;font-size:1em!important;overflow:hidden;zoom:1;cursor:move}.wc-metaboxes-wrapper .wc-metabox h3 a.delete,.wc-metaboxes-wrapper .wc-metabox h3 button{float:left}.wc-metaboxes-wrapper .wc-metabox h3 a.delete{color:red;font-weight:400;line-height:26px;text-decoration:none;position:relative;visibility:hidden}.wc-metaboxes-wrapper .wc-metabox h3 strong{line-height:26px;font-weight:700}.wc-metaboxes-wrapper .wc-metabox h3 select{font-family:sans-serif;max-width:20%;margin:.25em 0 .25em .25em}.wc-metaboxes-wrapper .wc-metabox h3 .handlediv{background-position:6px 5px!important;visibility:hidden;height:26px}.wc-metaboxes-wrapper .wc-metabox h3.fixed{cursor:pointer!important}.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3{cursor:pointer;padding:.5em 1em .5em .75em!important}.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3 .handlediv,.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3 .sort,.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3 a.delete{margin-top:.25em}.wc-metaboxes-wrapper .wc-metabox h3:hover .handlediv,.wc-metaboxes-wrapper .wc-metabox h3:hover a.delete,.wc-metaboxes-wrapper .wc-metabox.ui-sortable-helper .handlediv,.wc-metaboxes-wrapper .wc-metabox.ui-sortable-helper a.delete{visibility:visible}.wc-metaboxes-wrapper .wc-metabox table{width:100%;position:relative;background-color:#fdfdfd;padding:1em;border-top:1px solid #eee}.wc-metaboxes-wrapper .wc-metabox table td{text-align:right;padding:0 0 1em 6px;vertical-align:top;border:0}.wc-metaboxes-wrapper .wc-metabox table td label{text-align:right;display:block;line-height:21px}.wc-metaboxes-wrapper .wc-metabox table td input{float:right;min-width:200px}.wc-metaboxes-wrapper .wc-metabox table td input,.wc-metaboxes-wrapper .wc-metabox table td textarea{width:100%;margin:0;display:block;font-size:14px;padding:4px;color:#555}.wc-metaboxes-wrapper .wc-metabox table td .select2-container,.wc-metaboxes-wrapper .wc-metabox table td select{width:100%!important}.wc-metaboxes-wrapper .wc-metabox table td input.short{width:200px}.wc-metaboxes-wrapper .wc-metabox table td input.checkbox{width:16px;min-width:inherit;vertical-align:text-bottom;display:inline-block;float:none}.wc-metaboxes-wrapper .wc-metabox table td.attribute_name{width:200px}.wc-metaboxes-wrapper .wc-metabox table .minus,.wc-metaboxes-wrapper .wc-metabox table .plus{margin-top:6px}.wc-metaboxes-wrapper .wc-metabox table .fl{float:right}.wc-metaboxes-wrapper .wc-metabox table .fr{float:left}.variations-pagenav{float:left;line-height:24px}.variations-pagenav .displaying-num{color:#777;font-size:12px;font-style:italic}.variations-pagenav a{padding:0 10px 3px;background:rgba(0,0,0,.05);font-size:16px;font-weight:400;text-decoration:none}.variations-pagenav a.disabled,.variations-pagenav a.disabled:active,.variations-pagenav a.disabled:focus,.variations-pagenav a.disabled:hover{color:#a0a5aa;background:rgba(0,0,0,.05)}.variations-defaults{float:right}.variations-defaults select{margin:.25em 0 .25em .25em}.woocommerce_variable_attributes{background-color:#fdfdfd;border-top:1px solid #eee}.woocommerce_variable_attributes .data{padding:1em 2em}.woocommerce_variable_attributes .data::after,.woocommerce_variable_attributes .data::before{content:' ';display:table}.woocommerce_variable_attributes .upload_image_button{display:block;width:64px;height:64px;float:right;margin-left:20px;position:relative;cursor:pointer}.woocommerce_variable_attributes .upload_image_button img{width:100%;height:auto;display:none}.woocommerce_variable_attributes .upload_image_button::before{content:'\f128';font-family:Dashicons;position:absolute;top:0;right:0;left:0;bottom:0;text-align:center;line-height:64px;font-size:64px;font-weight:400;-webkit-font-smoothing:antialiased}.woocommerce_variable_attributes .upload_image_button.remove img{display:block}.woocommerce_variable_attributes .upload_image_button.remove::before{content:'\f335';display:none}.woocommerce_variable_attributes .upload_image_button.remove:hover::before{display:block}.woocommerce_variable_attributes .options{border:1px solid #eee;border-width:1px 0;padding:.25em 0}.woocommerce_variable_attributes .options label{display:inline-block;padding:4px 0 2px 1em}.woocommerce_variable_attributes .options input[type=checkbox]{margin:0 .5em 0 5px!important;vertical-align:middle}.form-row label{display:inline-block}.form-row .woocommerce-help-tip{float:left}.form-row input[type=number],.form-row input[type=text],.form-row select,.form-row textarea{width:100%;vertical-align:middle;margin:2px 0 0;padding:6px}.form-row select{height:30px;line-height:30px}.form-row.dimensions_field .wrap{clear:right;display:block}.form-row.dimensions_field input{width:33%;float:right;vertical-align:middle}.form-row.dimensions_field input:last-of-type{margin-left:0;width:34%}.form-row.form-row-first,.form-row.form-row-last{width:48%;float:left}.form-row.form-row-first{clear:both;float:right}.form-row.form-row-full{clear:both}.tips{cursor:help;text-decoration:none}img.tips{padding:5px 0 0}#tiptip_holder{display:none;position:absolute;top:0;left:0;z-index:9999999}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_top #tiptip_arrow_inner{margin-top:-7px;margin-right:-6px;border-top-color:#333}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_bottom #tiptip_arrow_inner{margin-top:-5px;margin-right:-6px;border-bottom-color:#333}#tiptip_holder.tip_right{padding-right:5px}#tiptip_holder.tip_right #tiptip_arrow_inner{margin-top:-6px;margin-right:-5px;border-left-color:#333}#tiptip_holder.tip_left{padding-left:5px}#tiptip_holder.tip_left #tiptip_arrow_inner{margin-top:-6px;margin-right:-7px;border-right-color:#333}#tiptip_content,.chart-tooltip,.wc_error_tip{color:#fff;font-size:.8em;max-width:150px;background:#333;text-align:center;border-radius:3px;padding:.618em 1em;box-shadow:0 1px 3px rgba(0,0,0,.2)}#tiptip_content code,.chart-tooltip code,.wc_error_tip code{padding:1px;background:#888}#tiptip_arrow,#tiptip_arrow_inner{position:absolute;border-color:transparent;border-style:solid;border-width:6px;height:0;width:0}#tiptip_arrow{margin-right:79.5px!important;margin-left:0!important}.wc_error_tip{max-width:20em;line-height:1.8em;position:absolute;white-space:normal;background:#d82223;margin:1.5em -1em 0 1px;z-index:9999999}.wc_error_tip::after{content:'';display:block;border:8px solid #d82223;border-left-color:transparent;border-right-color:transparent;border-top-color:transparent;position:absolute;top:-3px;right:50%;margin:-1em -3px 0 0}img.ui-datepicker-trigger{vertical-align:middle;margin-top:-1px;cursor:pointer}.wc-metabox-content img.ui-datepicker-trigger,.woocommerce_options_panel img.ui-datepicker-trigger{float:right;margin-left:8px;margin-top:4px;margin-right:4px}#ui-datepicker-div{display:none}.woocommerce-reports-wide.woocommerce-reports-wrap,.woocommerce-reports-wrap.woocommerce-reports-wrap{margin-right:300px;padding-top:18px}.woocommerce-reports-wide.halved,.woocommerce-reports-wrap.halved{margin:0;overflow:hidden;zoom:1}.woocommerce-reports-wide .widefat td,.woocommerce-reports-wrap .widefat td{vertical-align:top;padding:7px}.woocommerce-reports-wide .widefat td .description,.woocommerce-reports-wrap .widefat td .description{margin:4px 0 0}.woocommerce-reports-wide .postbox::after,.woocommerce-reports-wrap .postbox::after{content:'.';display:block;height:0;clear:both;visibility:hidden}.woocommerce-reports-wide .postbox h3,.woocommerce-reports-wrap .postbox h3{cursor:default!important}.woocommerce-reports-wide .postbox .inside,.woocommerce-reports-wrap .postbox .inside{padding:10px;margin:0!important}.woocommerce-reports-wide .postbox div.stats_range,.woocommerce-reports-wide .postbox h3.stats_range,.woocommerce-reports-wrap .postbox div.stats_range,.woocommerce-reports-wrap .postbox h3.stats_range{border-bottom-color:#dfdfdf;margin:0;padding:0!important}.woocommerce-reports-wide .postbox div.stats_range .export_csv,.woocommerce-reports-wide .postbox h3.stats_range .export_csv,.woocommerce-reports-wrap .postbox div.stats_range .export_csv,.woocommerce-reports-wrap .postbox h3.stats_range .export_csv{float:left;line-height:26px;border-right:1px solid #dfdfdf;padding:10px;display:block;text-decoration:none}.woocommerce-reports-wide .postbox div.stats_range .export_csv::before,.woocommerce-reports-wide .postbox h3.stats_range .export_csv::before,.woocommerce-reports-wrap .postbox div.stats_range .export_csv::before,.woocommerce-reports-wrap .postbox h3.stats_range .export_csv::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;content:"";text-decoration:none;margin-left:4px}.woocommerce-reports-wide .postbox div.stats_range ul,.woocommerce-reports-wide .postbox h3.stats_range ul,.woocommerce-reports-wrap .postbox div.stats_range ul,.woocommerce-reports-wrap .postbox h3.stats_range ul{list-style:none;margin:0;padding:0;zoom:1;background:#f5f5f5;border-bottom:1px solid #ccc}.woocommerce-reports-wide .postbox div.stats_range ul::after,.woocommerce-reports-wide .postbox div.stats_range ul::before,.woocommerce-reports-wide .postbox h3.stats_range ul::after,.woocommerce-reports-wide .postbox h3.stats_range ul::before,.woocommerce-reports-wrap .postbox div.stats_range ul::after,.woocommerce-reports-wrap .postbox div.stats_range ul::before,.woocommerce-reports-wrap .postbox h3.stats_range ul::after,.woocommerce-reports-wrap .postbox h3.stats_range ul::before{content:' ';display:table}.woocommerce-reports-wide .postbox div.stats_range ul::after,.woocommerce-reports-wide .postbox h3.stats_range ul::after,.woocommerce-reports-wrap .postbox div.stats_range ul::after,.woocommerce-reports-wrap .postbox h3.stats_range ul::after{clear:both}.woocommerce-reports-wide .postbox div.stats_range ul li,.woocommerce-reports-wide .postbox h3.stats_range ul li,.woocommerce-reports-wrap .postbox div.stats_range ul li,.woocommerce-reports-wrap .postbox h3.stats_range ul li{float:right;margin:0;padding:0;line-height:26px;font-weight:700;font-size:14px}.woocommerce-reports-wide .postbox div.stats_range ul li a,.woocommerce-reports-wide .postbox h3.stats_range ul li a,.woocommerce-reports-wrap .postbox div.stats_range ul li a,.woocommerce-reports-wrap .postbox h3.stats_range ul li a{border-left:1px solid #dfdfdf;padding:10px;display:block;text-decoration:none}.woocommerce-reports-wide .postbox div.stats_range ul li.active,.woocommerce-reports-wide .postbox h3.stats_range ul li.active,.woocommerce-reports-wrap .postbox div.stats_range ul li.active,.woocommerce-reports-wrap .postbox h3.stats_range ul li.active{background:#fff;-webkit-box-shadow:0 4px 0 0 #fff;box-shadow:0 4px 0 0 #fff}.woocommerce-reports-wide .postbox div.stats_range ul li.active a,.woocommerce-reports-wide .postbox h3.stats_range ul li.active a,.woocommerce-reports-wrap .postbox div.stats_range ul li.active a,.woocommerce-reports-wrap .postbox h3.stats_range ul li.active a{color:#777}.woocommerce-reports-wide .postbox div.stats_range ul li.custom,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom{padding:9px 10px;vertical-align:middle}.woocommerce-reports-wide .postbox div.stats_range ul li.custom div,.woocommerce-reports-wide .postbox div.stats_range ul li.custom form,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom div,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom form,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom div,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom form,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom div,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom form{display:inline;margin:0}.woocommerce-reports-wide .postbox div.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wide .postbox div.stats_range ul li.custom form input.range_datepicker,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom form input.range_datepicker,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom form input.range_datepicker,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom form input.range_datepicker{padding:0;margin:0 0 0 10px;background:0 0;border:0;color:#777;text-align:center;-webkit-box-shadow:none;box-shadow:none}.woocommerce-reports-wide .postbox div.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wide .postbox div.stats_range ul li.custom form input.range_datepicker.from,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom form input.range_datepicker.from,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom form input.range_datepicker.from,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom form input.range_datepicker.from{margin-left:0}.woocommerce-reports-wide .postbox .chart-with-sidebar,.woocommerce-reports-wrap .postbox .chart-with-sidebar{padding:12px 249px 12px 12px;margin:0!important}.woocommerce-reports-wide .postbox .chart-with-sidebar .chart-sidebar,.woocommerce-reports-wrap .postbox .chart-with-sidebar .chart-sidebar{width:225px;margin-right:-237px;float:right}.woocommerce-reports-wide .postbox .chart-widgets,.woocommerce-reports-wrap .postbox .chart-widgets{margin:0;padding:0}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget{margin:0 0 1em;background:#fafafa;border:1px solid #dfdfdf}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget::after,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget::after{content:'.';display:block;height:0;clear:both;visibility:hidden}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget h4,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget h4{background:#fff;border:1px solid #dfdfdf;border-right-width:0;border-left-width:0;padding:10px;margin:0;color:#2ea2cc;border-top-width:0;background-image:-webkit-gradient(linear,right bottom,right top,from(#ececec),to(#f9f9f9));background-image:-webkit-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-moz-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-o-linear-gradient(bottom,#ececec,#f9f9f9);background-image:linear-gradient(to top,#ececec,#f9f9f9)}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.count,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table tr.active td,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.count,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table tr.active td{background:#f5f5f5}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget h4.section_title:hover,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget h4.section_title:hover{color:#a00}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title{cursor:pointer}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title span,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title span{display:block}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title span::after,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title span::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none;float:left;font-size:.9em;line-height:1.618}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title.open,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title.open{color:#333}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title.open span::after,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title.open span::after{display:none}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section{border-bottom:1px solid #dfdfdf}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section .select2-container,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section .select2-container{width:100%!important}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section:last-of-type,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section:last-of-type{border-radius:0 0 3px 3px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table{width:100%}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td{padding:7px 10px;vertical-align:top;border-top:1px solid #e5e5e5;line-height:1.4em}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table tr:first-child td,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table tr:first-child td{border-top:0}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.name,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.name{max-width:175px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.name a,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.name a{word-wrap:break-word}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.sparkline,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.sparkline{vertical-align:middle}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table .wc_sparkline,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table .wc_sparkline{width:32px;height:1em;display:block;float:left}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget form,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget p,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget form,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget p{margin:0;padding:10px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget form .submit,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget p .submit,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget form .submit,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget p .submit{margin-top:10px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget #product_ids,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget #product_ids{width:100%}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .select_all,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .select_none,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .select_all,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .select_none{float:left;color:#999;margin-right:4px;margin-top:10px}.woocommerce-reports-wide .postbox .chart-legend,.woocommerce-reports-wrap .postbox .chart-legend{list-style:none;margin:0 0 1em;padding:0;border:1px solid #dfdfdf;border-left-width:0;border-bottom-width:0;background:#fff}.woocommerce-reports-wide .postbox .chart-legend li,.woocommerce-reports-wrap .postbox .chart-legend li{border-left:5px solid #aaa;color:#aaa;padding:1em;display:block;margin:0;-webkit-transition:all ease .5s;box-shadow:inset 0 -1px 0 0 #dfdfdf}.woocommerce-reports-wide .postbox .chart-legend li strong,.woocommerce-reports-wrap .postbox .chart-legend li strong{font-size:1.618em;line-height:1.2em;color:#464646;font-weight:400;display:block;font-family:HelveticaNeue-Light,'Helvetica Neue Light','Helvetica Neue',sans-serif}.woocommerce-reports-wide .postbox .chart-legend li strong del,.woocommerce-reports-wrap .postbox .chart-legend li strong del{color:#e74c3c;font-weight:400}.woocommerce-reports-wide .postbox .chart-legend li:hover,.woocommerce-reports-wrap .postbox .chart-legend li:hover{box-shadow:inset 0 -1px 0 0 #dfdfdf,inset -300px 0 0 rgba(156,93,144,.1);border-left:5px solid #9c5d90!important;padding-right:1.5em;color:#9c5d90}.woocommerce-reports-wide .postbox .pie-chart-legend,.woocommerce-reports-wrap .postbox .pie-chart-legend{margin:12px 0 0;overflow:hidden}.woocommerce-reports-wide .postbox .pie-chart-legend li,.woocommerce-reports-wrap .postbox .pie-chart-legend li{float:right;margin:0;padding:6px 0 0;border-top:4px solid #999;text-align:center;box-sizing:border-box;width:50%}.woocommerce-reports-wide .postbox .stat,.woocommerce-reports-wrap .postbox .stat{font-size:1.5em!important;font-weight:700;text-align:center}.woocommerce-reports-wide .postbox .chart-placeholder,.woocommerce-reports-wrap .postbox .chart-placeholder{width:100%;height:650px;overflow:hidden;position:relative}.woocommerce-reports-wide .postbox .chart-prompt,.woocommerce-reports-wrap .postbox .chart-prompt{line-height:650px;margin:0;color:#999;font-size:1.2em;font-style:italic;text-align:center}.woocommerce-reports-wide .postbox .chart-container,.woocommerce-reports-wrap .postbox .chart-container{background:#fff;padding:12px;position:relative;border:1px solid #dfdfdf;border-radius:3px}.woocommerce-reports-wide .postbox .main .chart-legend,.woocommerce-reports-wrap .postbox .main .chart-legend{margin-top:12px}.woocommerce-reports-wide .postbox .main .chart-legend li,.woocommerce-reports-wrap .postbox .main .chart-legend li{border-left:0;margin:0 0 0 8px;float:right;border-top:4px solid #aaa}.woocommerce-reports-wide .woocommerce-reports-main,.woocommerce-reports-wrap .woocommerce-reports-main{float:right;min-width:100%}.woocommerce-reports-wide .woocommerce-reports-main table td,.woocommerce-reports-wrap .woocommerce-reports-main table td{padding:9px}.woocommerce-reports-wide .woocommerce-reports-sidebar,.woocommerce-reports-wrap .woocommerce-reports-sidebar{display:inline;width:281px;margin-right:-300px;clear:both;float:right}.woocommerce-reports-wide .woocommerce-reports-left,.woocommerce-reports-wrap .woocommerce-reports-left{width:49.5%;float:right}.woocommerce-reports-wide .woocommerce-reports-right,.woocommerce-reports-wrap .woocommerce-reports-right{width:49.5%;float:left}.woocommerce-reports-wide .column-wc_actions a.edit,.woocommerce-reports-wide .column-wc_actions a.view,.woocommerce-reports-wrap .column-wc_actions a.edit,.woocommerce-reports-wrap .column-wc_actions a.view{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.woocommerce-reports-wide .column-wc_actions a.edit::after,.woocommerce-reports-wide .column-wc_actions a.view::after,.woocommerce-reports-wrap .column-wc_actions a.edit::after,.woocommerce-reports-wrap .column-wc_actions a.view::after{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;line-height:1.85}.woocommerce-reports-wide .column-wc_actions a.edit::after,.woocommerce-reports-wrap .column-wc_actions a.edit::after{content:'\f464'}.woocommerce-reports-wide .column-wc_actions a.view::after,.woocommerce-reports-wrap .column-wc_actions a.view::after{content:'\f177'}.woocommerce-wide-reports-wrap{padding-bottom:11px}.woocommerce-wide-reports-wrap .widefat .export-data{float:left}.woocommerce-wide-reports-wrap .widefat td,.woocommerce-wide-reports-wrap .widefat th{vertical-align:middle;padding:7px}form.report_filters div,form.report_filters input,form.report_filters label,form.report_filters p{vertical-align:middle}.chart-tooltip{position:absolute;display:none;line-height:1}table.bar_chart{width:100%}table.bar_chart thead th{text-align:right;color:#ccc;padding:6px 0}table.bar_chart tbody th{padding:6px 0;width:25%;text-align:right!important;font-weight:400!important;border-bottom:1px solid #fee}table.bar_chart tbody td{text-align:left;line-height:24px;padding:6px 0 6px 6px;border-bottom:1px solid #fee}table.bar_chart tbody td span{color:#8a4b75;display:block}table.bar_chart tbody td span.alt{color:#47a03e;margin-top:6px}table.bar_chart tbody td.bars{position:relative;text-align:right;padding:6px 0 6px 6px;border-bottom:1px solid #fee}table.bar_chart tbody td.bars a,table.bar_chart tbody td.bars span{text-decoration:none;clear:both;background:#8a4b75;float:right;display:block;line-height:24px;height:24px;-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-khtml-border-radius:3px;border-radius:3px}.post-type-product .woocommerce-BlankState-message::before,.post-type-shop_coupon .woocommerce-BlankState-message::before,.post-type-shop_order .woocommerce-BlankState-message::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center}table.bar_chart tbody td.bars span.alt{clear:both;background:#47a03e}table.bar_chart tbody td.bars span.alt span{margin:0;color:#c5dec2!important;text-shadow:0 1px 0 #47a03e;background:0 0}.post-type-shop_order .woocommerce-BlankState-message::before{content:""}.post-type-shop_coupon .woocommerce-BlankState-message::before{content:""}.post-type-product .woocommerce-BlankState-message::before{content:""}.woocommerce-BlankState{text-align:center;padding:5em 0 0}.woocommerce-BlankState .woocommerce-BlankState-message{color:#aaa;margin:0 auto 1.5em;line-height:1.5em;font-size:1.2em;max-width:500px}.woocommerce-BlankState .woocommerce-BlankState-message::before{color:#ddd;text-shadow:0 -1px 1px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.8);font-size:8em;display:block;position:relative!important;top:auto;right:auto;line-height:1em;margin:0 0 .1875em}.woocommerce-BlankState .woocommerce-BlankState-cta{font-size:1.2em;padding:.75em 1.5em;height:auto}@media only screen and (max-width:1280px){#order_data .order_data_column{width:48%}#order_data .order_data_column:first-child{width:100%}.woocommerce_options_panel .description{display:block;clear:both;margin-right:0}.woocommerce_options_panel .dimensions_field .wrap,.woocommerce_options_panel .short,.woocommerce_options_panel input[type=text].short,.woocommerce_options_panel input[type=number].short,.woocommerce_options_panel input[type=email].short,.woocommerce_options_panel input[type=password].short{width:80%}.woocommerce_options_panel .downloadable_files,.woocommerce_variations .downloadable_files{padding:0;clear:both}.woocommerce_options_panel .downloadable_files label,.woocommerce_variations .downloadable_files label{position:static}.woocommerce_options_panel .downloadable_files table,.woocommerce_variations .downloadable_files table{margin:0 12px 24px;width:94%}.woocommerce_options_panel .downloadable_files table .sort,.woocommerce_variations .downloadable_files table .sort{visibility:hidden}.woocommerce_options_panel .woocommerce_variable_attributes .downloadable_files table,.woocommerce_variations .woocommerce_variable_attributes .downloadable_files table{margin:0 0 1em;width:100%}}@media only screen and (max-width:900px){#woocommerce-coupon-data ul.coupon_data_tabs,#woocommerce-product-data .wc-tabs-back,#woocommerce-product-data ul.product_data_tabs{width:10%}#woocommerce-coupon-data .wc-metaboxes-wrapper,#woocommerce-coupon-data .woocommerce_options_panel,#woocommerce-product-data .wc-metaboxes-wrapper,#woocommerce-product-data .woocommerce_options_panel{width:90%}#woocommerce-coupon-data ul.coupon_data_tabs li a,#woocommerce-product-data ul.product_data_tabs li a{position:relative;text-indent:-999px;padding:10px}#woocommerce-coupon-data ul.coupon_data_tabs li a::before,#woocommerce-product-data ul.product_data_tabs li a::before{position:absolute;top:0;left:0;bottom:0;right:0;text-indent:0;text-align:center;line-height:40px;width:100%;height:40px}}@media only screen and (max-width:782px){#wp-excerpt-media-buttons a{font-size:16px;line-height:37px;height:39px;padding:0 15px 0 20px}#wp-excerpt-editor-tools{padding-top:20px;padding-left:15px;overflow:hidden;margin-bottom:-1px}.post-type-product .wp-list-table .is-expanded td:not(.hidden),.post-type-shop_order .wp-list-table .is-expanded td:not(.hidden){overflow:visible}#woocommerce-product-data .checkbox{width:25px}.variations-pagenav{float:none;text-align:center;font-size:18px}.variations-pagenav .displaying-num{font-size:16px}.variations-pagenav a{padding:8px 20px 11px;font-size:18px}.variations-pagenav select{padding:0 20px}.variations-defaults{float:none;text-align:center;margin-top:10px}.post-type-product .wp-list-table .column-thumb{display:none;text-align:right;padding-bottom:0}.post-type-product .wp-list-table .column-thumb::before{display:none!important}.post-type-product .wp-list-table .column-thumb img{max-width:32px}.post-type-product .wp-list-table .toggle-row{top:-28px}.post-type-shop_order .wp-list-table .column-order_status{display:none;text-align:right;padding-bottom:0}.post-type-shop_order .wp-list-table .column-order_status mark{margin:0}.post-type-shop_order .wp-list-table .column-order_status::before{display:none!important}.post-type-shop_order .wp-list-table .column-customer_message,.post-type-shop_order .wp-list-table .column-order_notes{text-align:inherit}.post-type-shop_order .wp-list-table .column-order_notes .note-on{font-size:1.3em;margin:0}.post-type-shop_order .wp-list-table .toggle-row{top:-15px}}@media only screen and (max-width:500px){.woocommerce_options_panel label,.woocommerce_options_panel legend{float:none;width:auto;display:block;margin:0}.woocommerce_options_panel fieldset.form-field,.woocommerce_options_panel p.form-field{padding:5px 20px!important}}.wc-backbone-modal *{box-sizing:border-box}.wc-backbone-modal .wc-backbone-modal-content{position:fixed;background:#fff;z-index:100000;right:50%;top:50%;transform:translate(50%,-50%);width:500px}.wc-backbone-modal .wc-backbone-modal-content article{overflow:auto}.wc-backbone-modal.wc-backbone-modal-shipping-method-settings .wc-backbone-modal-content{width:75%;min-width:500px}.wc-backbone-modal .select2-container{width:100%!important}.wc-backbone-modal-backdrop{position:fixed;top:0;right:0;left:0;bottom:0;min-height:360px;background:#000;opacity:.7;z-index:99900}.wc-backbone-modal-main{padding-bottom:55px}.wc-backbone-modal-main article,.wc-backbone-modal-main header{display:block;position:relative}.wc-backbone-modal-main .wc-backbone-modal-header{height:auto;background:#fcfcfc;padding:1em 1.5em;border-bottom:1px solid #ddd}.wc-backbone-modal-main .wc-backbone-modal-header h1{margin:0;font-size:18px;font-weight:700;line-height:1.5em}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link{cursor:pointer;color:#777;height:54px;width:54px;padding:0;position:absolute;top:0;left:0;text-align:center;border:0;border-right:1px solid #ddd;background-color:transparent;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link::before{font:400 22px/50px dashicons!important;color:#666;display:block;content:'\f335';font-weight:300}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link:focus,.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link:hover{background:#ddd;border-color:#ccc;color:#000}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link:focus{outline:0}.wc-backbone-modal-main article{padding:1.5em}.wc-backbone-modal-main article p{margin:1.5em 0}.wc-backbone-modal-main article p:last-child,.wc-backbone-modal-main footer .inner .button{margin-bottom:0}.wc-backbone-modal-main article p:first-child{margin-top:0}.wc-backbone-modal-main article .pagination{padding:10px 0 0;text-align:center}.wc-backbone-modal-main footer{position:absolute;right:0;left:0;bottom:0;z-index:100;padding:1em 1.5em;background:#fcfcfc;border-top:1px solid #dfdfdf;box-shadow:0 -4px 4px -4px rgba(0,0,0,.1)}.select2-container .select2-selection,.select2-dropdown{border-color:#ddd}.wc-backbone-modal-main footer .inner{float:left;line-height:23px}.select2-drop,.select2-dropdown{z-index:999999!important}.select2-results{line-height:1.5em}.select2-results .select2-results__group,.select2-results .select2-results__option{margin:0;padding:8px}.select2-dropdown--below{box-shadow:0 1px 1px rgba(0,0,0,.1)}.select2-dropdown--above{box-shadow:0 -1px 1px rgba(0,0,0,.1)}.select2-selection__rendered.ui-sortable li{cursor:move}.select2-container .select2-search__field{min-width:150px}.select2-container .select2-selection--single{height:32px}.select2-container .select2-selection--single .select2-selection__rendered{line-height:32px;padding-left:24px}.select2-container .select2-selection--single .select2-selection__arrow{left:3px;height:30px}.select2-container .select2-selection--multiple{min-height:28px;border-radius:0;line-height:1.5}.select2-container .select2-selection--multiple li{margin:0}.select2-container .select2-selection--multiple .select2-selection__choice{padding:2px 6px}.select2-container .select2-selection__clear{color:#999;margin-top:-1px}.select2-container .select2-search--inline .select2-search__field{font-family:inherit;font-size:inherit;font-weight:inherit;padding:3px 0}.woocommerce table.form-table .select2-container{min-width:400px!important}.post-type-shop_order .tablenav .actions{overflow:visible}.post-type-shop_order .tablenav input,.post-type-shop_order .tablenav select{line-height:32px;height:32px}.post-type-shop_order .tablenav .select2-container{float:right;width:200px!important;font-size:14px;vertical-align:middle;margin:1px 1px 4px 6px} \ No newline at end of file +@charset "UTF-8";.button.wc-reload::after,.woocommerce-help-tip::after{speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased}@-webkit-keyframes spin{100%{-webkit-transform:rotate(-360deg)}}@-moz-keyframes spin{100%{-moz-transform:rotate(-360deg)}}@keyframes spin{100%{-webkit-transform:rotate(-360deg);-moz-transform:rotate(-360deg);-ms-transform:rotate(-360deg);-o-transform:rotate(-360deg);transform:rotate(-360deg)}}@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}.blockUI.blockOverlay::before{height:1em;width:1em;display:block;position:absolute;top:50%;right:50%;margin-right:-.5em;margin-top:-.5em;content:'';-webkit-animation:spin 1s ease-in-out infinite;-moz-animation:spin 1s ease-in-out infinite;animation:spin 1s ease-in-out infinite;background:url(../images/icons/loader.svg) center center;background-size:cover;line-height:1;text-align:center;font-size:2em;color:rgba(0,0,0,.75)}.wc_addons_wrap .addons-featured{max-width:1140px;margin:-1%}.wc_addons_wrap .addons-banner-block-item-icon,.wc_addons_wrap .addons-column-block-item-icon{align-items:center;display:flex;justify-content:center}.wc_addons_wrap .addons-banner-block{background:#fff;box-shadow:0 0 1px rgba(0,0,0,.2);margin:2% 1% 0;max-width:1140px;padding:20px}.wc_addons_wrap .addons-banner-block img{height:62px}.wc_addons_wrap .addons-banner-block p{margin:0 0 20px}.wc_addons_wrap .addons-banner-block-items{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-around;margin:0 -10px}.wc_addons_wrap .addons-banner-block-item{border:1px solid #e6e6e6;border-radius:3px;flex:1 1 200px;margin:10px;max-width:350px;min-width:200px;width:30%}.wc_addons_wrap .addons-banner-block-item-icon{background:#f7f7f7;height:143px}.wc_addons_wrap .addons-banner-block-item-content{display:flex;flex-direction:column;height:184px;justify-content:space-between;padding:24px}.wc_addons_wrap .addons-banner-block-item-content h3{margin-top:0}.wc_addons_wrap .addons-banner-block-item-content p{margin:0 0 auto}.wc_addons_wrap .addons-column-section{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-around}.wc_addons_wrap .addons-column{flex:1 1 200px;margin:0 1%;width:49.5%}.wc_addons_wrap .addons-column-block,.wc_addons_wrap .addons-small-dark-block,.wc_addons_wrap .addons-small-light-block{box-sizing:border-box;box-shadow:0 0 1px rgba(0,0,0,.2);margin:4% 0 0;padding:20px}.wc_addons_wrap .addons-column-block img{max-height:50px;max-width:50px}.wc_addons_wrap .addons-column-block,.wc_addons_wrap .addons-small-light-block{background:#fff}.wc_addons_wrap .addons-column-block-left{float:right}.wc_addons_wrap .addons-column-block-right{float:left}.wc_addons_wrap .addons-column-block-item{display:flex;border-top:2px solid #f9f9f9;flex-direction:row;flex-wrap:wrap;justify-content:space-between;margin:0 -20px;padding:20px}.wc_addons_wrap .addons-column-block-item-icon{background:#f7f7f7;border:1px solid #e6e6e6;height:100px;margin:0 0 10px 10px;width:100px}.wc_addons_wrap .addons-column-block-item-content{display:flex;flex:1 1 200px;flex-wrap:wrap;height:20%;justify-content:space-between;min-width:200px}.wc_addons_wrap .addons-column-block-item-content h2{float:right;margin-top:8px}.wc_addons_wrap .addons-column-block-item-content a{float:left}.wc_addons_wrap .addons-column-block-item-content p{float:right}.wc_addons_wrap .addons-small-dark-block{background-color:#54687d;text-align:center}.wc_addons_wrap .addons-small-dark-items{display:flex;flex-wrap:wrap;justify-content:space-around}.wc_addons_wrap .addons-small-dark-item{margin:0 0 20px}.wc_addons_wrap .addons-small-dark-block h1{color:#fff}.wc_addons_wrap .addons-small-dark-block p{color:#fafafa}.wc_addons_wrap .addons-small-dark-item-icon img{height:30px}.wc_addons_wrap .addons-small-dark-item a{margin:28px auto 0}.wc_addons_wrap .addons-small-light-block{display:flex;flex-wrap:wrap}.wc_addons_wrap .addons-small-light-block h1{margin-top:-12px}.wc_addons_wrap .addons-small-light-block p{margin-top:0}.wc_addons_wrap .addons-small-light-block img{height:225px;margin:0 -20px 0 0}.wc_addons_wrap .addons-small-light-block-content{display:flex;flex:1 1 100px;flex-direction:column;justify-content:space-around}.wc_addons_wrap .addons-small-light-block-buttons{display:flex;justify-content:space-between}.wc_addons_wrap .addons-small-light-block-content a{width:48%}.wc_addons_wrap .addons-button{border-radius:3px;cursor:pointer;display:block;height:37px;line-height:37px;text-align:center;text-decoration:none;width:124px}.wc_addons_wrap .addons-button-solid{background-color:#955a89;color:#fff}.wc_addons_wrap .addons-button-solid:hover{color:#fff;opacity:.8}.wc_addons_wrap .addons-button-outline-green{border:1px solid #73ae39;color:#73ae39}.wc_addons_wrap .addons-button-outline-green:hover{color:#73ae39;opacity:.8}.wc_addons_wrap .addons-button-outline-white{border:1px solid #fff;color:#fff}.wc_addons_wrap .addons-button-outline-white:hover{color:#fff;opacity:.8}.wc_addons_wrap .addons-button-installed{background:#e6e6e6;color:#3c3c3c}.wc_addons_wrap .addons-button-installed:hover{color:#3c3c3c;opacity:.8}@media only screen and (max-width:400px){.wc_addons_wrap .addons-featured{margin:-1% -5%}.wc_addons_wrap .addons-button,.wc_addons_wrap .addons-small-dark-item{width:100%}.wc_addons_wrap .addons-column-block-item-icon{background:0 0;border:none;height:75px;margin:0 0 10px 10px;width:75px}}.wc_addons_wrap .products{overflow:hidden}.wc_addons_wrap .products li{float:right;margin:0 0 1em 1em!important;padding:0;vertical-align:top;width:300px}.wc_addons_wrap .products li a{text-decoration:none;color:inherit;border:1px solid #ddd;display:block;min-height:220px;overflow:hidden;background:#f5f5f5;box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(0,0,0,.1)}.wc_addons_wrap .products li a img{max-width:258px;max-height:24px;padding:17px 20px;display:block;margin:0;background:#fff;border-left:260px solid #fff}.wc_addons_wrap .products li a .price,.wc_addons_wrap .products li a img.extension-thumb+h3{display:none}.wc_addons_wrap .products li a h2,.wc_addons_wrap .products li a h3{margin:0!important;padding:20px!important;background:#fff}.wc_addons_wrap .products li a p{padding:20px!important;margin:0!important;border-top:1px solid #f1f1f1}.wc_addons_wrap .products li a:focus,.wc_addons_wrap .products li a:hover{background-color:#fff}.wc_addons_wrap .storefront{background:url(../images/storefront-bg.jpg) bottom right #f6f6f6;border:1px solid #ddd;padding:20px;overflow:hidden;zoom:1}.wc_addons_wrap .storefront img{width:278px;height:auto;float:right;margin:0 0 0 20px;box-shadow:0 1px 6px rgba(0,0,0,.1)}.wc_addons_wrap .storefront p{max-width:750px}.woocommerce-BlankState a.button-primary,.woocommerce-BlankState button.button-primary,.woocommerce-message a.button-primary,.woocommerce-message button.button-primary{background:#bb77ae;border-color:#a36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;color:#fff;text-shadow:0 -1px 1px #a36597,-1px 0 1px #a36597,0 1px 1px #a36597,1px 0 1px #a36597;display:inline-block}.woocommerce-BlankState a.button-primary:active,.woocommerce-BlankState a.button-primary:focus,.woocommerce-BlankState a.button-primary:hover,.woocommerce-BlankState button.button-primary:active,.woocommerce-BlankState button.button-primary:focus,.woocommerce-BlankState button.button-primary:hover,.woocommerce-message a.button-primary:active,.woocommerce-message a.button-primary:focus,.woocommerce-message a.button-primary:hover,.woocommerce-message button.button-primary:active,.woocommerce-message button.button-primary:focus,.woocommerce-message button.button-primary:hover{background:#a36597;border-color:#a36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597}.woocommerce-message{position:relative;border-right-color:#cc99c2!important;overflow:hidden}.woocommerce-message a.docs,.woocommerce-message a.skip{text-decoration:none!important}.woocommerce-message a.woocommerce-message-close{position:absolute;top:10px;left:10px;padding:10px 21px 10px 15px;font-size:13px;line-height:1.23076923;text-decoration:none}.woocommerce-message a.woocommerce-message-close::before{position:absolute;top:8px;right:0;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.woocommerce-message .twitter-share-button{margin-top:-3px;margin-right:3px;vertical-align:middle}#variable_product_options #message,#variable_product_options .notice{margin:10px}.clear{clear:both}#woocommerce-fields-bulk.inline-edit-col label,#woocommerce-fields.inline-edit-col{clear:right}.wrap.woocommerce div.error,.wrap.woocommerce div.updated{margin-top:10px}mark.amount{background:0 0;color:inherit}.simplify-commerce-banner{overflow:hidden}.simplify-commerce-banner img{float:left;padding:15px 0;margin-right:1em;width:200px}.woocommerce-help-tip{color:#666;display:inline-block;font-size:1.1em;font-style:normal;height:16px;line-height:16px;position:relative;vertical-align:middle;width:16px}.woocommerce-help-tip::after{font-family:Dashicons;font-weight:400;line-height:1;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:"";cursor:help}h2 .woocommerce-help-tip{margin-top:-5px;margin-right:.25em}table.wc_status_table{margin-bottom:1em}table.wc_status_table h2{font-size:14px;margin:0}table.wc_status_table tr:nth-child(2n) td,table.wc_status_table tr:nth-child(2n) th{background:#fcfcfc}table.wc_status_table th{font-weight:700;padding:9px}table.wc_status_table td:first-child{width:33%}table.wc_status_table td.help{width:1em}table.wc_status_table td{padding:9px;font-size:1.1em}table.wc_status_table td mark{background:0 0}table.wc_status_table td mark.yes{color:#7ad03a}table.wc_status_table td mark.no{color:#999}table.wc_status_table td mark.error{color:#a00}table.wc_status_table td ul{margin:0}table.wc_status_table .help_tip{cursor:help}#debug-report{display:none;margin:10px 0;padding:0;position:relative}#debug-report textarea{font-family:monospace;width:100%;margin:0;height:300px;padding:20px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;resize:none;font-size:12px;line-height:20px;outline:0}.wp-list-table.logs .log-level{display:inline;padding:.2em .6em .3em;font-size:80%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.2em}.wp-list-table.logs .log-level:empty{display:none}.wp-list-table.logs .log-level--alert,.wp-list-table.logs .log-level--emergency{background-color:#ff4136}.wp-list-table.logs .log-level--critical,.wp-list-table.logs .log-level--error{background-color:#ff851b}.wp-list-table.logs .log-level--notice,.wp-list-table.logs .log-level--warning{color:#222;background-color:#ffdc00}.wp-list-table.logs .log-level--info{background-color:#0074d9}.wp-list-table.logs .log-level--debug{background-color:#3d9970}@media screen and (min-width:783px){.wp-list-table.logs .column-timestamp{width:18%}.wp-list-table.logs .column-level{width:14%}.wp-list-table.logs .column-source{width:15%}}#log-viewer-select{padding:10px 0 8px;line-height:28px}#log-viewer-select h2 a{vertical-align:middle}#log-viewer{background:#fff;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);padding:5px 20px}#log-viewer pre{font-family:monospace;white-space:pre-wrap}.inline-edit-product.quick-edit-row .inline-edit-col-center,.inline-edit-product.quick-edit-row .inline-edit-col-right{float:left!important}#woocommerce-fields.inline-edit-col label.featured,#woocommerce-fields.inline-edit-col label.manage_stock{margin-right:10px}#woocommerce-fields.inline-edit-col .dimensions div{display:block;margin:.2em 0}#woocommerce-fields.inline-edit-col .dimensions div span.title{display:block;float:right;width:5em}#woocommerce-fields.inline-edit-col .dimensions div span.input-text-wrap{display:block;margin-right:5em}#woocommerce-fields.inline-edit-col .text{box-sizing:border-box;width:99%;float:right;margin:1px 1px 1px 1%}#woocommerce-fields.inline-edit-col .height,#woocommerce-fields.inline-edit-col .length,#woocommerce-fields.inline-edit-col .width{width:32.33%}#woocommerce-fields.inline-edit-col .height{margin-left:0}#woocommerce-fields-bulk.inline-edit-col .inline-edit-group label{clear:none;width:49%;margin:.2em 0}#woocommerce-fields-bulk.inline-edit-col .inline-edit-group.dimensions label{width:75%;max-width:75%}#woocommerce-fields-bulk.inline-edit-col .length,#woocommerce-fields-bulk.inline-edit-col .regular_price,#woocommerce-fields-bulk.inline-edit-col .sale_price,#woocommerce-fields-bulk.inline-edit-col .stock,#woocommerce-fields-bulk.inline-edit-col .weight{box-sizing:border-box;width:100%;margin-right:4.4em}#woocommerce-fields-bulk.inline-edit-col .height,#woocommerce-fields-bulk.inline-edit-col .length,#woocommerce-fields-bulk.inline-edit-col .width{box-sizing:border-box;width:25%}.column-coupon_code{line-height:2.25em}.column-coupon_code,ul.wc_coupon_list{margin:0;overflow:hidden;zoom:1;clear:both}ul.wc_coupon_list li{margin:0}ul.wc_coupon_list li.code{display:inline-block}ul.wc_coupon_list li.code::after{content:', '}ul.wc_coupon_list li.code:last-of-type::after{display:none}ul.wc_coupon_list li.code .tips{cursor:pointer}ul.wc_coupon_list_block{margin:0;padding-bottom:2px}ul.wc_coupon_list_block li{border-top:1px solid #fff;border-bottom:1px solid #ccc;line-height:2.5em;margin:0;padding:.5em 0}ul.wc_coupon_list_block li:first-child{border-top:0;padding-top:0}ul.wc_coupon_list_block li:last-child{border-bottom:0;padding-bottom:0}.button.wc-reload{text-indent:-9999px;position:relative;padding:0;height:28px;width:28px!important;display:inline-block}.button.wc-reload::after{font-family:Dashicons;font-weight:400;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:"";line-height:28px}#order_data h2,#order_data p.order_number{font-family:HelveticaNeue-Light,'Helvetica Neue Light','Helvetica Neue',sans-serif;font-weight:400}#woocommerce-order-data .handlediv,#woocommerce-order-data .hndle{display:none}#woocommerce-order-data .inside{display:block!important}#order_data{padding:23px 24px 12px}#order_data h2{margin:0;font-size:21px;line-height:1.2;text-shadow:-1px 1px 1px #fff;padding:0}#order_data h3{font-size:14px}#order_data h3,#order_data h4{color:#333;margin:1.33em 0 0}#order_data p{color:#777}#order_data p.order_number{margin:0;line-height:1.6em;font-size:16px}#order_data .order_data_column_container{clear:both}#order_data .order_data_column{width:32%;padding:0 0 0 2%;float:right}#order_data .order_data_column>h3 span{display:block}#order_data .order_data_column:last-child{padding-left:0}#order_data .order_data_column p{padding:0!important}#order_data .order_data_column .address strong{display:block}#order_data .order_data_column .form-field{float:right;clear:right;width:48%;padding:0;margin:9px 0 0}#order_data .order_data_column .form-field label{display:block;padding:0 0 3px}#order_data .order_data_column .form-field input,#order_data .order_data_column .form-field select,#order_data .order_data_column .form-field textarea{width:100%}#order_data .order_data_column .form-field .select2-container{width:100%!important}#order_data .order_data_column .form-field .date-picker{width:50%}#order_data .order_data_column .form-field .hour,#order_data .order_data_column .form-field .minute{width:3.5em}#order_data .order_data_column .form-field small{display:block;margin:5px 0 0;color:#999}#order_data .order_data_column ._billing_address_2_field,#order_data .order_data_column ._billing_last_name_field,#order_data .order_data_column ._billing_phone_field,#order_data .order_data_column ._billing_postcode_field,#order_data .order_data_column ._billing_state_field,#order_data .order_data_column ._shipping_address_2_field,#order_data .order_data_column ._shipping_last_name_field,#order_data .order_data_column ._shipping_postcode_field,#order_data .order_data_column ._shipping_state_field,#order_data .order_data_column .form-field.last{float:left;clear:left}#order_data .order_data_column ._billing_company_field,#order_data .order_data_column ._shipping_company_field,#order_data .order_data_column ._transaction_id_field,#order_data .order_data_column .form-field-wide{width:100%;clear:both}#order_data .order_data_column ._billing_company_field .wc-customer-search,#order_data .order_data_column ._billing_company_field .wc-enhanced-select,#order_data .order_data_column ._billing_company_field input,#order_data .order_data_column ._billing_company_field select,#order_data .order_data_column ._billing_company_field textarea,#order_data .order_data_column ._shipping_company_field .wc-customer-search,#order_data .order_data_column ._shipping_company_field .wc-enhanced-select,#order_data .order_data_column ._shipping_company_field input,#order_data .order_data_column ._shipping_company_field select,#order_data .order_data_column ._shipping_company_field textarea,#order_data .order_data_column ._transaction_id_field .wc-customer-search,#order_data .order_data_column ._transaction_id_field .wc-enhanced-select,#order_data .order_data_column ._transaction_id_field input,#order_data .order_data_column ._transaction_id_field select,#order_data .order_data_column ._transaction_id_field textarea,#order_data .order_data_column .form-field-wide .wc-customer-search,#order_data .order_data_column .form-field-wide .wc-enhanced-select,#order_data .order_data_column .form-field-wide input,#order_data .order_data_column .form-field-wide select,#order_data .order_data_column .form-field-wide textarea{width:100%}#order_data .order_data_column p.none_set{color:#999}#order_data .order_data_column div.edit_address{display:none;zoom:1;padding-left:1px}#order_data .order_data_column .wc-customer-user label a,#order_data .order_data_column .wc-order-status label a{float:left}#order_data .order_data_column a.edit_address{width:14px;height:0;padding:14px 0 0;margin:0 6px 0 0;overflow:hidden;position:relative;color:#999;border:0;float:left}#order_data .order_data_column a.edit_address:focus,#order_data .order_data_column a.edit_address:hover{color:#000}#order_data .order_data_column a.edit_address::after{position:absolute;top:0;right:0;text-align:center;vertical-align:top;line-height:14px;font-size:14px;font-weight:400;-webkit-font-smoothing:antialiased;font-family:Dashicons;content:'\f464'}#order_data .order_data_column .billing-same-as-shipping,#order_data .order_data_column .load_customer_billing,#order_data .order_data_column .load_customer_shipping{font-size:13px;display:inline-block;font-weight:400}#order_data .order_data_column .load_customer_shipping{margin-left:.3em}.order_actions{margin:0;overflow:hidden;zoom:1}.order_actions li{border-top:1px solid #fff;border-bottom:1px solid #ddd;padding:6px 0;margin:0;line-height:1.6em;float:right;width:50%;text-align:center}.order_actions li a{float:none;text-align:center;text-decoration:underline}.order_actions li.wide{width:auto;float:none;clear:both;padding:6px;text-align:right;overflow:hidden}.order_actions li #delete-action{line-height:25px;vertical-align:middle;text-align:right;float:right}.order_actions li .save_order{float:left}.order_actions li#actions{overflow:hidden}.order_actions li#actions .button{width:24px;box-sizing:border-box;float:left}.order_actions li#actions select{width:225px;box-sizing:border-box;float:right}#woocommerce-order-items .inside{margin:0;padding:0;background:#fefefe}#woocommerce-order-items .wc-order-data-row{border-bottom:1px solid #dfdfdf;padding:1.5em 2em;background:#f8f8f8;line-height:2em;text-align:left}#woocommerce-order-items .wc-order-data-row::after,#woocommerce-order-items .wc-order-data-row::before{content:' ';display:table}#woocommerce-order-items .wc-order-data-row::after{clear:both}#woocommerce-order-items .wc-order-data-row p{margin:0;line-height:2em}#woocommerce-order-items .wc-order-data-row .wc-used-coupons{text-align:right}#woocommerce-order-items .wc-order-data-row .wc-used-coupons .tips{display:inline-block}#woocommerce-order-items .wc-used-coupons{float:right;width:50%}#woocommerce-order-items .wc-order-totals{float:left;width:50%;margin:0;padding:0;text-align:left}#woocommerce-order-items .wc-order-totals .amount{font-weight:700}#woocommerce-order-items .wc-order-totals .label{vertical-align:top}#woocommerce-order-items .wc-order-totals .total{font-size:1em!important;width:10em;margin:0 .5em 0 0;box-sizing:border-box}#woocommerce-order-items .wc-order-totals .total input[type=text]{width:96%;float:left}#woocommerce-order-items .wc-order-totals .refunded-total{color:#a00}#woocommerce-order-items .refund-actions{margin-top:5px;padding-top:12px;border-top:1px solid #dfdfdf}#woocommerce-order-items .refund-actions .button{float:left;margin-right:4px}#woocommerce-order-items .refund-actions .cancel-action,#woocommerce-order-items .wc-order-item-bulk-edit .cancel-action{float:right;margin-right:0}#woocommerce-order-items .add_meta{margin-right:0!important}#woocommerce-order-items h3 small{color:#999}#woocommerce-order-items .amount{white-space:nowrap}#woocommerce-order-items .add-items .description{margin-left:10px}#woocommerce-order-items .add-items .button{float:right;margin-left:.25em}#woocommerce-order-items .add-items .button-primary{float:none;margin-left:0}#woocommerce-order-items .inside{display:block!important}#woocommerce-order-items .handlediv,#woocommerce-order-items .hndle{display:none}#woocommerce-order-items .woocommerce_order_items_wrapper{margin:0;overflow-x:auto}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items{width:100%;background:#fff}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th{text-align:right;padding:1em;font-weight:400;color:#999;background:#f8f8f8;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th.sortable{cursor:pointer}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th:last-child{padding-left:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th:first-child{padding-right:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th .wc-arrow{float:left;position:relative;margin-left:-1em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td{padding:1.5em 1em 1em;text-align:right;line-height:1.5em;vertical-align:top;border-bottom:1px solid #f8f8f8}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td textarea{width:100%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td select{width:50%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td textarea{font-size:14px;padding:4px;color:#555}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th:last-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td:last-child{padding-left:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td:first-child{padding-right:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr td{cursor:pointer}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr.selected{background:#f5ebf3}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr.selected td{border-color:#e6cce1;opacity:.8}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr:last-child td{border-bottom:1px solid #dfdfdf}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr:first-child td{border-top:8px solid #f8f8f8}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody#order_line_items tr:first-child td{border-top:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb{text-align:right;width:38px;padding-bottom:1.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb .wc-order-item-thumbnail{width:38px;height:38px;border:2px solid #e8e8e8;background:#f8f8f8;color:#ccc;position:relative;font-size:21px;display:block;text-align:center}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb .wc-order-item-thumbnail::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;height:100%;text-align:center;content:"";width:38px;line-height:38px;display:block}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb .wc-order-item-thumbnail img{width:100%;height:100%;margin:0;padding:0;position:relative}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.name .wc-order-item-sku,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.name .wc-order-item-variation{display:block;margin-top:.5em;font-size:.92em!important;color:#888}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item{min-width:200px}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .center,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .variation-id{text-align:center}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class{text-align:left}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class label{white-space:nowrap;color:#999;font-size:.833em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class label input{display:inline}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class input{width:70px;vertical-align:middle;text-align:left}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class select{width:85px;height:26px;vertical-align:middle;font-size:1em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input{display:inline-block;background:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);margin:1px 0;min-width:80px;overflow:hidden;line-height:1em;text-align:left}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input{width:100%;box-sizing:border-box}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input label{font-size:.75em;padding:4px 6px 0;color:#555;display:block}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input input{width:100%;box-sizing:border-box;border:0;box-shadow:none;margin:0;padding:0 6px 4px;color:#555;background:0 0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input input::-webkit-input-placeholder{color:#ddd}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input:first-child{border-bottom:1px dashed #ddd;background:#fff}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input:first-child label{color:#ccc}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .view{white-space:nowrap}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .edit{text-align:right}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class small.times{font-size:.92em!important;color:#888}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-taxes{margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-taxes label{display:block}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-discount{display:block;margin-top:.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class small.times{margin-left:.25em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity{text-align:center}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity input{text-align:center;width:50px}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items span.subtotal{opacity:.5}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.tax_class,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.tax_class{text-align:right}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .calculated{border-color:#ae8ca2;border-style:dotted}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta{width:100%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta{margin:.5em 0 0;font-size:.92em!important;color:#888}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.fee .thumb div::before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.refund .thumb div::before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .thumb div::before{color:#ccc;top:0;right:0;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-align:center;font-family:WooCommerce}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr th,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr th{border:0;padding:0 0 .5em 4px;line-height:1.5em;width:20%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td{padding:0 0 .5em 4px;border:0;line-height:1.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td input{width:100%;margin:0;position:relative;border-bottom:0;box-shadow:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .refund_by,ul.order_notes li p.meta .exact-date{border-bottom:1px dotted #999}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td textarea{width:100%;height:4em;margin:0;box-shadow:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td input:focus+textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td input:focus+textarea{border-top-color:#999}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td p,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td p{margin:0 0 .5em;line-height:1.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td p:last-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td p:last-child{margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.fee .thumb div{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.5em;line-height:1em;vertical-align:middle;margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.fee .thumb div::before{line-height:1;margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.refund .thumb div{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.5em;line-height:1em;vertical-align:middle;margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.refund .thumb div::before{line-height:1;margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .thumb div{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.5em;line-height:1em;vertical-align:middle;margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .thumb div::before{line-height:1;margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .shipping_method,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .shipping_method_name{width:100%;margin:0 0 .5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax{white-space:nowrap}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;float:left;font-size:14px;visibility:hidden;margin:3px 0 0 -18px}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax::before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:"";color:#999}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax:hover::before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax:hover::before{color:#a00}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax:hover .delete-order-tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax:hover .delete-order-tax{visibility:visible}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items small.refunded{display:block;color:#a00;white-space:nowrap;margin-top:.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items small.refunded::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-indent:0;width:100%;height:100%;text-align:center;content:"";position:relative;top:auto;right:auto;margin:-1px 0 0 4px;vertical-align:middle;line-height:1em}#woocommerce-order-items .wc-order-edit-line-item{padding-right:0}#woocommerce-order-items .wc-order-edit-line-item-actions{width:44px;text-align:left;padding-right:0;vertical-align:middle}#woocommerce-order-items .wc-order-edit-line-item-actions a{color:#ccc;display:inline-block;cursor:pointer;padding:0 0 .5em;margin:0 12px 0 0;vertical-align:middle;text-decoration:none;line-height:16px;width:16px;overflow:hidden}#woocommerce-order-items .wc-order-edit-line-item-actions a::before{margin:0;padding:0;font-size:16px;width:16px;height:16px}#woocommerce-order-items .wc-order-edit-line-item-actions .delete-order-item::before,#woocommerce-order-items .wc-order-edit-line-item-actions .delete_refund::before,#woocommerce-order-items .wc-order-edit-line-item-actions .edit-order-item::before{font-family:Dashicons;-webkit-font-smoothing:antialiased;top:0;right:0;width:100%;height:100%;margin:0;text-align:center;position:relative;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;text-indent:0}#woocommerce-order-items .wc-order-edit-line-item-actions a:hover::before{color:#999}#woocommerce-order-items .wc-order-edit-line-item-actions a:first-child{margin-right:0}#woocommerce-order-items .wc-order-edit-line-item-actions .edit-order-item::before{content:""}#woocommerce-order-items .wc-order-edit-line-item-actions .delete-order-item::before,#woocommerce-order-items .wc-order-edit-line-item-actions .delete_refund::before{content:""}#woocommerce-order-items .wc-order-edit-line-item-actions .delete-order-item:hover::before,#woocommerce-order-items .wc-order-edit-line-item-actions .delete_refund:hover::before{color:#a00}#woocommerce-order-items tbody tr .wc-order-edit-line-item-actions{visibility:hidden}#woocommerce-order-items tbody tr:hover .wc-order-edit-line-item-actions{visibility:visible}#woocommerce-order-items .wc-order-totals .wc-order-edit-line-item-actions{width:1.5em;visibility:visible!important}#woocommerce-order-items .wc-order-totals .wc-order-edit-line-item-actions a{padding:0}#woocommerce-order-downloads .buttons{float:right;padding:0;margin:0;vertical-align:top}#woocommerce-order-downloads .buttons .add_item_id,#woocommerce-order-downloads .buttons .select2-container{width:400px!important;margin-left:9px;vertical-align:top;float:right}#woocommerce-order-downloads .buttons button{margin:2px 0 0}#woocommerce-order-downloads h3 small{color:#999}#poststuff #woocommerce-order-actions .inside{margin:0;padding:0}#poststuff #woocommerce-order-actions .inside ul.order_actions li{padding:6px 10px;box-sizing:border-box}#poststuff #woocommerce-order-actions .inside ul.order_actions li:last-child{border-bottom:0}#poststuff #woocommerce-order-notes .inside{margin:0;padding:0}#poststuff #woocommerce-order-notes .inside ul.order_notes li{padding:0 10px}#woocommerce_customers p.search-box{margin:6px 0 4px;float:right}#woocommerce_customers .tablenav{float:left;clear:none}#woocommerce-product-images .inside #product_images_container ul::after,.woocommerce_variable_attributes .data::after{clear:both}.widefat.customers td{vertical-align:middle;padding:4px 7px}.widefat .column-order_title{width:15%}.widefat .column-order_title time{display:block;color:#999;margin:3px 0}.widefat .column-orders,.widefat .column-paying,.widefat .column-spent{text-align:center;width:8%}.widefat .column-last_order{width:11%}.widefat .column-order_actions,.widefat .column-user_actions,.widefat .column-wc_actions{width:110px}.widefat .column-order_actions a.button,.widefat .column-user_actions a.button,.widefat .column-wc_actions a.button{float:right;margin:0 0 2px 4px;cursor:pointer;padding:3px 4px;height:auto}.widefat .column-order_actions a.button img,.widefat .column-user_actions a.button img,.widefat .column-wc_actions a.button img{display:block;width:12px;height:auto}.widefat small.meta{display:block;color:#999;font-size:inherit;margin:3px 0}.widefat .column-order_date,.widefat .column-order_total{width:9%}.widefat .column-order_status{width:45px;text-align:center}.widefat .column-order_status mark{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;background:0 0;font-size:1.4em;margin:0 auto}.widefat .column-order_status mark.cancelled::after,.widefat .column-order_status mark.completed::after,.widefat .column-order_status mark.failed::after,.widefat .column-order_status mark.on-hold::after,.widefat .column-order_status mark.pending::after,.widefat .column-order_status mark.processing::after,.widefat .column-order_status mark.refunded::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center}.column-customer_message .note-on::after,.column-order_notes .note-on::after{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;top:0;right:0;text-align:center;line-height:16px;font-family:WooCommerce}.widefat .column-order_status mark.pending::after{content:'\e012';color:#ffba00}.widefat .column-order_status mark.completed::after{content:'\e015';color:#2ea2cc}.widefat .column-order_status mark.on-hold::after{content:'\e033';color:#999}.widefat .column-order_status mark.failed::after{content:'\e016';color:#d0c21f}.widefat .column-order_status mark.cancelled::after{content:'\e013';color:#a00}.widefat .column-order_status mark.processing::after{content:'\e011';color:#73a724}.widefat .column-order_status mark.refunded::after{content:'\e014';color:#999}.widefat td.column-order_status{padding-top:9px}.column-customer_message .note-on{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto;color:#999}.column-customer_message .note-on::after{margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}.column-order_notes .note-on{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto;color:#999}.column-order_notes .note-on::after{margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}.order_actions .complete,.order_actions .processing,.order_actions .view{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.order_actions .processing::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:"";line-height:1.85}.order_actions .complete::after,.order_actions .view::after{font-family:Dashicons;text-indent:0;position:absolute;width:100%;height:100%;right:0;line-height:1.85;margin:0;text-align:center;font-weight:400;top:0;speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased}.order_actions .complete::after{content:""}.order_actions .view::after{content:""}.user_actions .edit,.user_actions .link,.user_actions .refresh,.user_actions .view{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.user_actions .edit::after,.user_actions .link::after,.user_actions .refresh::after,.user_actions .view::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:"";line-height:1.85}.user_actions .edit::after{font-family:Dashicons;content:'\f464'}.user_actions .link::after{content:'\e00d'}.user_actions .view::after{content:'\e010'}.user_actions .refresh::after{content:'\e031'}.attributes-table td,.attributes-table th{width:15%;vertical-align:top}.attributes-table .attribute-terms{width:32%}.attributes-table .attribute-actions{width:2em}.attributes-table .attribute-actions .configure-terms{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.attributes-table .attribute-actions .configure-terms::after{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:"";font-family:Dashicons;line-height:1.85}ul.order_notes{padding:2px 0 0}ul.order_notes li .note_content{padding:10px;background:#efefef;position:relative}ul.order_notes li .note_content p{margin:0;padding:0;word-wrap:break-word}ul.order_notes li p.meta{padding:10px;color:#999;margin:0;font-size:11px}ul.order_notes li a.delete_note{color:#a00}table.wp-list-table .row-actions,table.wp-list-table span.na{color:#999}ul.order_notes li .note_content::after{content:'';display:block;position:absolute;bottom:-10px;right:20px;width:0;height:0;border-width:10px 0 0 10px;border-style:solid;border-color:#efefef transparent}ul.order_notes li.customer-note .note_content{background:#a7cedc}ul.order_notes li.customer-note .note_content::after{border-color:#a7cedc transparent}ul.order_notes li.system-note .note_content{background:#d7cad2}ul.order_notes li.system-note .note_content::after{border-color:#d7cad2 transparent}.add_note{border-top:1px solid #ddd;padding:10px 10px 0}.add_note h4{margin-top:5px!important}.add_note #add_order_note{width:100%;height:50px}table.wp-list-table .column-thumb{width:52px;text-align:center;white-space:nowrap}table.wp-list-table .column-name{width:22%}table.wp-list-table .column-product_cat,table.wp-list-table .column-product_tag{width:11%!important}table.wp-list-table .column-featured,table.wp-list-table .column-product_type{width:48px;text-align:right!important}table.wp-list-table .column-customer_message,table.wp-list-table .column-order_notes{width:48px;text-align:center}table.wp-list-table .column-customer_message img,table.wp-list-table .column-order_notes img{margin:0 auto;padding-top:0!important}table.wp-list-table .manage-column.column-featured img,table.wp-list-table .manage-column.column-product_type img{padding-right:2px}table.wp-list-table .column-price .woocommerce-price-suffix{display:none}table.wp-list-table img{margin:1px 2px}table.wp-list-table td.column-thumb img{margin:0;width:auto;height:auto;max-width:40px;max-height:40px;vertical-align:middle}table.wp-list-table .column-is_in_stock{text-align:right!important}table.wp-list-table span.wc-featured,table.wp-list-table span.wc-image,table.wp-list-table span.wc-type{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto}table.wp-list-table span.wc-featured::before,table.wp-list-table span.wc-image::before,table.wp-list-table span.wc-type::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:""}table.wp-list-table span.wc-featured::before{content:'\f155'}table.wp-list-table span.wc-featured.not-featured::before{content:'\f154'}table.wp-list-table td.column-featured span.wc-featured{font-size:1.6em;cursor:pointer}table.wp-list-table span.wc-type::before{font-family:WooCommerce;content:'\e006'}table.wp-list-table span.product-type{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.6em;margin:0 auto}table.wp-list-table span.product-type::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:""}table.wp-list-table span.product-type.grouped::before{content:'\e002'}table.wp-list-table span.product-type.external::before{content:'\e034'}table.wp-list-table span.product-type.variable::before{content:'\e003'}table.wp-list-table span.product-type.downloadable::before{content:'\e001'}table.wp-list-table span.product-type.virtual::before{content:'\e000'}table.wp-list-table mark.instock{font-weight:700;color:#7ad03a;background:0 0;line-height:1}table.wp-list-table mark.outofstock{font-weight:700;color:#a44;background:0 0;line-height:1}table.wp-list-table .notes_head,table.wp-list-table .order-notes_head,table.wp-list-table .status_head{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto}table.wp-list-table .notes_head::after,table.wp-list-table .order-notes_head::after,table.wp-list-table .status_head::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center}table.wc_emails .wc-email-settings-table-name,table.wc_emails td.name,table.wc_gateways .wc-email-settings-table-name,table.wc_gateways td.name,table.wc_shipping .wc-email-settings-table-name,table.wc_shipping td.name{font-weight:700}table.wp-list-table .order-notes_head::after{content:'\e028'}table.wp-list-table .notes_head::after{content:'\e026'}table.wp-list-table .status_head::after{content:'\e011'}table.wp-list-table .column-order_items{width:12%}table.wp-list-table .column-order_items table.order_items{width:100%;margin:3px 0 0;padding:0;display:none}table.wp-list-table .column-order_items table.order_items td{border:0;margin:0;padding:0 0 3px}table.wp-list-table .column-order_items table.order_items td.qty{color:#999;padding-left:6px;text-align:right}mark.notice{background:#fff;color:#a00;margin:0 10px 0 0}a.export_rates,a.import_rates{float:left;margin-right:9px;margin-top:-2px;margin-bottom:0}#rates-search{float:left}#rates-search input.wc-tax-rates-search-field{padding:4px 8px;font-size:1.2em}#rates-pagination{float:left;margin-left:.5em}#rates-pagination .tablenav{margin:0}table.wc_input_table,table.wc_tax_rates{width:100%}table.wc_input_table span.tips,table.wc_tax_rates span.tips{color:#2ea2cc}table.wc_input_table th,table.wc_tax_rates th{white-space:nowrap;padding:10px}table.wc_input_table td,table.wc_tax_rates td{padding:0;border-left:1px solid #dfdfdf;border-bottom:1px solid #dfdfdf;border-top:0;background:#fff;cursor:default}table.wc_input_table td input[type=text],table.wc_input_table td input[type=number],table.wc_tax_rates td input[type=text],table.wc_tax_rates td input[type=number]{width:100%;padding:8px 10px;margin:0;border:0;outline:0;background:0 0}table.wc_input_table td input[type=text]:focus,table.wc_input_table td input[type=number]:focus,table.wc_tax_rates td input[type=text]:focus,table.wc_tax_rates td input[type=number]:focus{outline:0;box-shadow:none}table.wc_input_table td.apply_to_shipping,table.wc_input_table td.compound,table.wc_tax_rates td.apply_to_shipping,table.wc_tax_rates td.compound{padding:5px 7px;vertical-align:middle}table.wc_input_table td.apply_to_shipping input,table.wc_input_table td.compound input,table.wc_tax_rates td.apply_to_shipping input,table.wc_tax_rates td.compound input{width:auto;padding:0}table.wc_input_table td:last-child,table.wc_tax_rates td:last-child{border-left:0}table.wc_input_table tr.current td,table.wc_tax_rates tr.current td{background-color:#fefbcc}table.wc_input_table .cost,table.wc_input_table .cost input,table.wc_input_table .item_cost,table.wc_input_table .item_cost input,table.wc_tax_rates .cost,table.wc_tax_rates .cost input,table.wc_tax_rates .item_cost,table.wc_tax_rates .item_cost input{text-align:left}table.wc_input_table th.sort,table.wc_tax_rates th.sort{width:17px;padding:0 4px}table.wc_input_table td.sort,table.wc_tax_rates td.sort{padding:0 4px}table.wc_input_table .ui-sortable:not(.ui-sortable-disabled) td.sort,table.wc_tax_rates .ui-sortable:not(.ui-sortable-disabled) td.sort{cursor:move;font-size:15px;background:#f9f9f9;text-align:center;vertical-align:middle}table.wc_input_table .ui-sortable:not(.ui-sortable-disabled) td.sort::before,table.wc_tax_rates .ui-sortable:not(.ui-sortable-disabled) td.sort::before{content:'\f333';font-family:Dashicons;text-align:center;line-height:1;color:#999;display:block;width:17px;float:right;height:100%}table.wc_input_table .ui-sortable:not(.ui-sortable-disabled) td.sort:hover::before,table.wc_tax_rates .ui-sortable:not(.ui-sortable-disabled) td.sort:hover::before{color:#333}table.wc_input_table .button,table.wc_tax_rates .button{float:right;margin-left:5px}table.wc_input_table .export,table.wc_input_table .import,table.wc_tax_rates .export,table.wc_tax_rates .import{float:left;margin-left:0;margin-right:5px}table.wc_input_table span.tips,table.wc_tax_rates span.tips{padding:0 3px}table.wc_input_table .pagination,table.wc_tax_rates .pagination{float:left}table.wc_input_table .pagination .button,table.wc_tax_rates .pagination .button{margin-right:5px;margin-left:0}table.wc_input_table .pagination .current,table.wc_tax_rates .pagination .current{background:#bbb;text-shadow:none}table.wc_input_table tr:last-child td,table.wc_tax_rates tr:last-child td{border-bottom:0}table.wc_emails,table.wc_gateways,table.wc_shipping{position:relative}table.wc_emails td,table.wc_gateways td,table.wc_shipping td{vertical-align:middle;padding:7px;line-height:2em}table.wc_emails tr:nth-child(odd) td,table.wc_gateways tr:nth-child(odd) td,table.wc_shipping tr:nth-child(odd) td{background:#f9f9f9}table.wc_emails th,table.wc_gateways th,table.wc_shipping th{padding:9px 7px!important;vertical-align:middle}table.wc_emails .settings,table.wc_gateways .settings,table.wc_shipping .settings{text-align:left}table.wc_emails .default,table.wc_emails .radio,table.wc_emails .status,table.wc_gateways .default,table.wc_gateways .radio,table.wc_gateways .status,table.wc_shipping .default,table.wc_shipping .radio,table.wc_shipping .status{text-align:center}table.wc_emails .default .tips,table.wc_emails .radio .tips,table.wc_emails .status .tips,table.wc_gateways .default .tips,table.wc_gateways .radio .tips,table.wc_gateways .status .tips,table.wc_shipping .default .tips,table.wc_shipping .radio .tips,table.wc_shipping .status .tips{margin:0 auto}table.wc_emails .default input,table.wc_emails .radio input,table.wc_emails .status input,table.wc_gateways .default input,table.wc_gateways .radio input,table.wc_gateways .status input,table.wc_shipping .default input,table.wc_shipping .radio input,table.wc_shipping .status input{margin:0}table.wc_emails th.sort,table.wc_gateways th.sort,table.wc_shipping th.sort{width:28px;padding:0}table.wc_emails td.sort,table.wc_gateways td.sort,table.wc_shipping td.sort{padding:0 7px;cursor:move;font-size:15px;text-align:center;vertical-align:middle}table.wc_emails td.sort::before,table.wc_gateways td.sort::before,table.wc_shipping td.sort::before{content:'\f333';font-family:Dashicons;text-align:center;line-height:1;color:#999;display:block;width:17px;float:right;height:100%}table.wc_emails .wc-email-settings-table-name span,table.wc_gateways .wc-email-settings-table-name span,table.wc_shipping .wc-email-settings-table-name span{font-weight:400;color:#999;margin:0 4px 0 0!important}table.wc_emails .wc-email-settings-table-status,table.wc_gateways .wc-email-settings-table-status,table.wc_shipping .wc-email-settings-table-status{text-align:center;width:1em}table.wc_emails .wc-email-settings-table-status .tips,table.wc_gateways .wc-email-settings-table-status .tips,table.wc_shipping .wc-email-settings-table-status .tips{margin:0 auto}table.wc_emails .wc-email-settings-table-actions a,table.wc_gateways .wc-email-settings-table-actions a,table.wc_shipping .wc-email-settings-table-actions a{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}table.wc_emails .wc-email-settings-table-actions a::after,table.wc_gateways .wc-email-settings-table-actions a::after,table.wc_shipping .wc-email-settings-table-actions a::after{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:"";font-family:Dashicons;line-height:1.85}.wc-shipping-zone-settings th{padding:24px 0 24px 24px}.wc-shipping-zone-settings td.forminp{padding:15px 10px}.wc-shipping-zone-settings td.forminp input,.wc-shipping-zone-settings td.forminp textarea{padding:8px;width:448px;max-width:100%!important}.wc-shipping-zone-settings td.forminp .wc-shipping-zone-region-select{width:448px;max-width:100%!important}.wc-shipping-zone-settings td.forminp .wc-shipping-zone-region-select .select2-choices{padding:8px 8px 4px;border-color:#DDD;min-height:0;line-height:1}.wc-shipping-zone-settings td.forminp .wc-shipping-zone-region-select .select2-choices input{padding:0}.wc-shipping-zone-settings td.forminp .wc-shipping-zone-region-select .select2-choices li{margin:0 0 4px 4px}.wc-shipping-zone-settings .wc-shipping-zone-postcodes-toggle{margin:.5em 0 0;font-size:.9em;text-decoration:underline;display:block}.wc-shipping-zone-settings .wc-shipping-zone-postcodes-toggle+.wc-shipping-zone-postcodes{display:none}.wc-shipping-zone-settings .wc-shipping-zone-postcodes textarea{margin:10px 0}.wc-shipping-zone-settings .wc-shipping-zone-postcodes .description{font-size:.9em;color:#999}.wc-shipping-zone-settings+p.submit{margin-top:0}table tr table.wc-shipping-zone-methods tr .row-actions,table tr:hover table.wc-shipping-zone-methods tr .row-actions{position:relative}table tr table.wc-shipping-zone-methods tr:hover .row-actions,table tr:hover table.wc-shipping-zone-methods tr:hover .row-actions{position:static}.wc-shipping-zones-heading .page-title-action{display:inline-block}table.wc-shipping-classes td,table.wc-shipping-classes th,table.wc-shipping-zone-methods td,table.wc-shipping-zone-methods th,table.wc-shipping-zones td,table.wc-shipping-zones th{vertical-align:top;line-height:24px;padding:1em!important;font-size:14px;background:#fff}table.wc-shipping-classes td li,table.wc-shipping-classes th li,table.wc-shipping-zone-methods td li,table.wc-shipping-zone-methods th li,table.wc-shipping-zones td li,table.wc-shipping-zones th li{line-height:24px;font-size:14px}table.wc-shipping-classes td .woocommerce-help-tip,table.wc-shipping-classes th .woocommerce-help-tip,table.wc-shipping-zone-methods td .woocommerce-help-tip,table.wc-shipping-zone-methods th .woocommerce-help-tip,table.wc-shipping-zones td .woocommerce-help-tip,table.wc-shipping-zones th .woocommerce-help-tip{margin:0!important}table.wc-shipping-classes thead th,table.wc-shipping-zone-methods thead th,table.wc-shipping-zones thead th{vertical-align:middle}table.wc-shipping-classes thead .wc-shipping-zone-sort,table.wc-shipping-zone-methods thead .wc-shipping-zone-sort,table.wc-shipping-zones thead .wc-shipping-zone-sort{text-align:center}table.wc-shipping-classes tbody td,table.wc-shipping-zone-methods tbody td,table.wc-shipping-zones tbody td{padding:1.5em 1em!important}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state,table.wc-shipping-classes td.wc-shipping-zones-blank-state,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state,table.wc-shipping-zones td.wc-shipping-zones-blank-state{background:#f7f1f6!important;overflow:hidden;position:relative;padding:7.5em 7.5%!important;border-bottom:2px solid #eee2ec}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state,table.wc-shipping-classes td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state,table.wc-shipping-zones td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state{padding:2em!important}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state p,table.wc-shipping-classes td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state p,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state p,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state p,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state p,table.wc-shipping-zones td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state p{margin-bottom:0}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state li,table.wc-shipping-classes td.wc-shipping-zone-method-blank-state p,table.wc-shipping-classes td.wc-shipping-zones-blank-state li,table.wc-shipping-classes td.wc-shipping-zones-blank-state p,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state p,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state p,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state p,table.wc-shipping-zones td.wc-shipping-zones-blank-state li,table.wc-shipping-zones td.wc-shipping-zones-blank-state p{color:#a46497;font-size:1.5em;line-height:1.5em;margin:0 0 1em;position:relative;z-index:1;text-shadow:-1px 1px 1px #fff}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state li.main,table.wc-shipping-classes td.wc-shipping-zone-method-blank-state p.main,table.wc-shipping-classes td.wc-shipping-zones-blank-state li.main,table.wc-shipping-classes td.wc-shipping-zones-blank-state p.main,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state li.main,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state p.main,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state li.main,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state p.main,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state li.main,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state p.main,table.wc-shipping-zones td.wc-shipping-zones-blank-state li.main,table.wc-shipping-zones td.wc-shipping-zones-blank-state p.main{font-size:2em}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state li,table.wc-shipping-classes td.wc-shipping-zones-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state li,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zones td.wc-shipping-zones-blank-state li{margin-right:1em;list-style:circle inside}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state::before,table.wc-shipping-classes td.wc-shipping-zones-blank-state::before,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state::before,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state::before,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state::before,table.wc-shipping-zones td.wc-shipping-zones-blank-state::before{content:'\e01b';font-family:WooCommerce;text-align:center;line-height:1;color:#eee2ec;display:block;width:1em;font-size:40em;top:50%;left:-3.75%;margin-top:-.1875em;position:absolute}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state .button-primary,table.wc-shipping-classes td.wc-shipping-zones-blank-state .button-primary,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state .button-primary,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state .button-primary,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state .button-primary,table.wc-shipping-zones td.wc-shipping-zones-blank-state .button-primary{background-color:#804877;border-color:#804877;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 0 rgba(0,0,0,.15);margin:0;opacity:1;text-shadow:0 -1px 1px #8a4f7f,-1px 0 1px #8a4f7f,0 1px 1px #8a4f7f,1px 0 1px #8a4f7f;font-size:1.5em;padding:.75em 1em;height:auto;position:relative;z-index:1}table.wc-shipping-classes .wc-shipping-class-rows tr:nth-child(odd) td,table.wc-shipping-classes .wc-shipping-zone-method-rows tr:nth-child(odd) td,table.wc-shipping-classes tbody.wc-shipping-zone-rows tr:nth-child(odd) td,table.wc-shipping-classes tr.odd td,table.wc-shipping-zone-methods .wc-shipping-class-rows tr:nth-child(odd) td,table.wc-shipping-zone-methods .wc-shipping-zone-method-rows tr:nth-child(odd) td,table.wc-shipping-zone-methods tbody.wc-shipping-zone-rows tr:nth-child(odd) td,table.wc-shipping-zone-methods tr.odd td,table.wc-shipping-zones .wc-shipping-class-rows tr:nth-child(odd) td,table.wc-shipping-zones .wc-shipping-zone-method-rows tr:nth-child(odd) td,table.wc-shipping-zones tbody.wc-shipping-zone-rows tr:nth-child(odd) td,table.wc-shipping-zones tr.odd td{background:#f9f9f9}table.wc-shipping-classes p,table.wc-shipping-classes ul,table.wc-shipping-zone-methods p,table.wc-shipping-zone-methods ul,table.wc-shipping-zones p,table.wc-shipping-zones ul{margin:0}table.wc-shipping-classes td.wc-shipping-zone-method-sort,table.wc-shipping-classes td.wc-shipping-zone-sort,table.wc-shipping-zone-methods td.wc-shipping-zone-method-sort,table.wc-shipping-zone-methods td.wc-shipping-zone-sort,table.wc-shipping-zones td.wc-shipping-zone-method-sort,table.wc-shipping-zones td.wc-shipping-zone-sort{cursor:move;font-size:15px;text-align:center}table.wc-shipping-classes td.wc-shipping-zone-method-sort::before,table.wc-shipping-classes td.wc-shipping-zone-sort::before,table.wc-shipping-zone-methods td.wc-shipping-zone-method-sort::before,table.wc-shipping-zone-methods td.wc-shipping-zone-sort::before,table.wc-shipping-zones td.wc-shipping-zone-method-sort::before,table.wc-shipping-zones td.wc-shipping-zone-sort::before{content:'\f333';font-family:Dashicons;text-align:center;color:#999;display:block;width:17px;float:right;height:100%;line-height:24px}table.wc-shipping-classes td.wc-shipping-zone-method-sort:hover::before,table.wc-shipping-classes td.wc-shipping-zone-sort:hover::before,table.wc-shipping-zone-methods td.wc-shipping-zone-method-sort:hover::before,table.wc-shipping-zone-methods td.wc-shipping-zone-sort:hover::before,table.wc-shipping-zones td.wc-shipping-zone-method-sort:hover::before,table.wc-shipping-zones td.wc-shipping-zone-sort:hover::before{color:#333}table.wc-shipping-classes td.wc-shipping-zone-worldwide,table.wc-shipping-zone-methods td.wc-shipping-zone-worldwide,table.wc-shipping-zones td.wc-shipping-zone-worldwide{text-align:center}table.wc-shipping-classes td.wc-shipping-zone-worldwide::before,table.wc-shipping-zone-methods td.wc-shipping-zone-worldwide::before,table.wc-shipping-zones td.wc-shipping-zone-worldwide::before{content:'\f319';font-family:dashicons;text-align:center;color:#999;display:block;width:17px;float:right;height:100%;line-height:24px}table.wc-shipping-classes .wc-shipping-zone-methods,table.wc-shipping-classes .wc-shipping-zone-name,table.wc-shipping-zone-methods .wc-shipping-zone-methods,table.wc-shipping-zone-methods .wc-shipping-zone-name,table.wc-shipping-zones .wc-shipping-zone-methods,table.wc-shipping-zones .wc-shipping-zone-name{width:25%}table.wc-shipping-classes .wc-shipping-class-description input,table.wc-shipping-classes .wc-shipping-class-description select,table.wc-shipping-classes .wc-shipping-class-description textarea,table.wc-shipping-classes .wc-shipping-class-name input,table.wc-shipping-classes .wc-shipping-class-name select,table.wc-shipping-classes .wc-shipping-class-name textarea,table.wc-shipping-classes .wc-shipping-class-slug input,table.wc-shipping-classes .wc-shipping-class-slug select,table.wc-shipping-classes .wc-shipping-class-slug textarea,table.wc-shipping-classes .wc-shipping-zone-name input,table.wc-shipping-classes .wc-shipping-zone-name select,table.wc-shipping-classes .wc-shipping-zone-name textarea,table.wc-shipping-classes .wc-shipping-zone-region input,table.wc-shipping-classes .wc-shipping-zone-region select,table.wc-shipping-classes .wc-shipping-zone-region textarea,table.wc-shipping-zone-methods .wc-shipping-class-description input,table.wc-shipping-zone-methods .wc-shipping-class-description select,table.wc-shipping-zone-methods .wc-shipping-class-description textarea,table.wc-shipping-zone-methods .wc-shipping-class-name input,table.wc-shipping-zone-methods .wc-shipping-class-name select,table.wc-shipping-zone-methods .wc-shipping-class-name textarea,table.wc-shipping-zone-methods .wc-shipping-class-slug input,table.wc-shipping-zone-methods .wc-shipping-class-slug select,table.wc-shipping-zone-methods .wc-shipping-class-slug textarea,table.wc-shipping-zone-methods .wc-shipping-zone-name input,table.wc-shipping-zone-methods .wc-shipping-zone-name select,table.wc-shipping-zone-methods .wc-shipping-zone-name textarea,table.wc-shipping-zone-methods .wc-shipping-zone-region input,table.wc-shipping-zone-methods .wc-shipping-zone-region select,table.wc-shipping-zone-methods .wc-shipping-zone-region textarea,table.wc-shipping-zones .wc-shipping-class-description input,table.wc-shipping-zones .wc-shipping-class-description select,table.wc-shipping-zones .wc-shipping-class-description textarea,table.wc-shipping-zones .wc-shipping-class-name input,table.wc-shipping-zones .wc-shipping-class-name select,table.wc-shipping-zones .wc-shipping-class-name textarea,table.wc-shipping-zones .wc-shipping-class-slug input,table.wc-shipping-zones .wc-shipping-class-slug select,table.wc-shipping-zones .wc-shipping-class-slug textarea,table.wc-shipping-zones .wc-shipping-zone-name input,table.wc-shipping-zones .wc-shipping-zone-name select,table.wc-shipping-zones .wc-shipping-zone-name textarea,table.wc-shipping-zones .wc-shipping-zone-region input,table.wc-shipping-zones .wc-shipping-zone-region select,table.wc-shipping-zones .wc-shipping-zone-region textarea{width:100%}table.wc-shipping-classes .wc-shipping-class-description a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-class-description a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-class-name a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-class-name a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-class-slug a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-class-slug a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-zone-name a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-zone-name a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-zone-region a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-zone-region a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-class-description a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-class-description a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-class-name a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-class-name a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-class-slug a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-class-slug a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-zone-name a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-zone-name a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-zone-region a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-zone-region a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-class-description a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-class-description a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-class-name a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-class-name a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-class-slug a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-class-slug a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-zone-name a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-zone-name a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-zone-region a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-zone-region a.wc-shipping-zone-delete{color:#a00}table.wc-shipping-classes .wc-shipping-class-description a.wc-shipping-class-delete:hover,table.wc-shipping-classes .wc-shipping-class-description a.wc-shipping-zone-delete:hover,table.wc-shipping-classes .wc-shipping-class-name a.wc-shipping-class-delete:hover,table.wc-shipping-classes .wc-shipping-class-name a.wc-shipping-zone-delete:hover,table.wc-shipping-classes .wc-shipping-class-slug a.wc-shipping-class-delete:hover,table.wc-shipping-classes .wc-shipping-class-slug a.wc-shipping-zone-delete:hover,table.wc-shipping-classes .wc-shipping-zone-name a.wc-shipping-class-delete:hover,table.wc-shipping-classes .wc-shipping-zone-name a.wc-shipping-zone-delete:hover,table.wc-shipping-classes .wc-shipping-zone-region a.wc-shipping-class-delete:hover,table.wc-shipping-classes .wc-shipping-zone-region a.wc-shipping-zone-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-description a.wc-shipping-class-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-description a.wc-shipping-zone-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-name a.wc-shipping-class-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-name a.wc-shipping-zone-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-slug a.wc-shipping-class-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-slug a.wc-shipping-zone-delete:hover,table.wc-shipping-zone-methods .wc-shipping-zone-name a.wc-shipping-class-delete:hover,table.wc-shipping-zone-methods .wc-shipping-zone-name a.wc-shipping-zone-delete:hover,table.wc-shipping-zone-methods .wc-shipping-zone-region a.wc-shipping-class-delete:hover,table.wc-shipping-zone-methods .wc-shipping-zone-region a.wc-shipping-zone-delete:hover,table.wc-shipping-zones .wc-shipping-class-description a.wc-shipping-class-delete:hover,table.wc-shipping-zones .wc-shipping-class-description a.wc-shipping-zone-delete:hover,table.wc-shipping-zones .wc-shipping-class-name a.wc-shipping-class-delete:hover,table.wc-shipping-zones .wc-shipping-class-name a.wc-shipping-zone-delete:hover,table.wc-shipping-zones .wc-shipping-class-slug a.wc-shipping-class-delete:hover,table.wc-shipping-zones .wc-shipping-class-slug a.wc-shipping-zone-delete:hover,table.wc-shipping-zones .wc-shipping-zone-name a.wc-shipping-class-delete:hover,table.wc-shipping-zones .wc-shipping-zone-name a.wc-shipping-zone-delete:hover,table.wc-shipping-zones .wc-shipping-zone-region a.wc-shipping-class-delete:hover,table.wc-shipping-zones .wc-shipping-zone-region a.wc-shipping-zone-delete:hover{color:red}table.wc-shipping-classes .wc-shipping-class-count,table.wc-shipping-zone-methods .wc-shipping-class-count,table.wc-shipping-zones .wc-shipping-class-count{text-align:center}table.wc-shipping-classes td.wc-shipping-zone-methods,table.wc-shipping-zone-methods td.wc-shipping-zone-methods,table.wc-shipping-zones td.wc-shipping-zone-methods{color:#555}table.wc-shipping-classes td.wc-shipping-zone-methods .method_disabled,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .method_disabled,table.wc-shipping-zones td.wc-shipping-zone-methods .method_disabled{text-decoration:line-through}table.wc-shipping-classes td.wc-shipping-zone-methods ul,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul,table.wc-shipping-zones td.wc-shipping-zone-methods ul{position:relative;padding-left:32px}table.wc-shipping-classes td.wc-shipping-zone-methods ul li,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li,table.wc-shipping-zones td.wc-shipping-zone-methods ul li{color:#555;display:inline;margin:0}table.wc-shipping-classes td.wc-shipping-zone-methods ul li::before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li::before,table.wc-shipping-zones td.wc-shipping-zone-methods ul li::before{content:', '}table.wc-shipping-classes td.wc-shipping-zone-methods ul li:first-child::before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li:first-child::before,table.wc-shipping-zones td.wc-shipping-zone-methods ul li:first-child::before{content:''}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method{display:block;width:24px;padding:24px 0 0;height:0;overflow:hidden;cursor:pointer}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method::before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method::before,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method::before{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;font-family:Dashicons;content:'\f502';color:#999;vertical-align:middle;line-height:24px;font-size:16px;margin:0}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method.disabled,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method.disabled,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method.disabled{cursor:not-allowed}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method.disabled::before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method.disabled::before,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method.disabled::before{color:#ccc}table.wc-shipping-classes .wc-shipping-zone-method-title,table.wc-shipping-zone-methods .wc-shipping-zone-method-title,table.wc-shipping-zones .wc-shipping-zone-method-title{width:25%}table.wc-shipping-classes .wc-shipping-zone-method-title .wc-shipping-zone-method-delete,table.wc-shipping-zone-methods .wc-shipping-zone-method-title .wc-shipping-zone-method-delete,table.wc-shipping-zones .wc-shipping-zone-method-title .wc-shipping-zone-method-delete{color:red}table.wc-shipping-classes .wc-shipping-zone-method-enabled,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled,table.wc-shipping-zones .wc-shipping-zone-method-enabled{text-align:center}table.wc-shipping-classes .wc-shipping-zone-method-enabled a,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled a,table.wc-shipping-zones .wc-shipping-zone-method-enabled a{display:inline-block}table.wc-shipping-classes .wc-shipping-zone-method-enabled .woocommerce-input-toggle,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled .woocommerce-input-toggle,table.wc-shipping-zones .wc-shipping-zone-method-enabled .woocommerce-input-toggle{margin-top:3px}table.wc-shipping-classes .wc-shipping-zone-method-type,table.wc-shipping-zone-methods .wc-shipping-zone-method-type,table.wc-shipping-zones .wc-shipping-zone-method-type{display:block}table.wc-shipping-classes tfoot input,table.wc-shipping-classes tfoot select,table.wc-shipping-zone-methods tfoot input,table.wc-shipping-zone-methods tfoot select,table.wc-shipping-zones tfoot input,table.wc-shipping-zones tfoot select{vertical-align:middle!important}table.wc-shipping-classes tfoot .button-secondary,table.wc-shipping-zone-methods tfoot .button-secondary,table.wc-shipping-zones tfoot .button-secondary{float:left}table.wc-shipping-classes .editing .wc-shipping-zone-edit,table.wc-shipping-classes .editing .wc-shipping-zone-view,table.wc-shipping-zone-methods .editing .wc-shipping-zone-edit,table.wc-shipping-zone-methods .editing .wc-shipping-zone-view,table.wc-shipping-zones .editing .wc-shipping-zone-edit,table.wc-shipping-zones .editing .wc-shipping-zone-view{display:none}.woocommerce-input-toggle{height:16px;width:32px;border:2px solid #935687;background-color:#935687;display:inline-block;text-indent:-9999px;border-radius:10em;position:relative}.woocommerce-input-toggle:before{content:"";display:block;width:16px;height:16px;background:#fff;position:absolute;top:0;left:0;border-radius:100%}.woocommerce-input-toggle.woocommerce-input-toggle--disabled{border-color:#999;background-color:#999}.woocommerce-input-toggle.woocommerce-input-toggle--disabled:before{left:auto;right:0}.wc-modal-shipping-method-settings{background:#f8f8f8;padding:1em!important}.wc-modal-shipping-method-settings form .form-table{width:100%;background:#fff;margin:0 0 1.5em}.wc-modal-shipping-method-settings form .form-table tr th{width:30%;position:relative}.wc-modal-shipping-method-settings form .form-table tr th .woocommerce-help-tip{float:left;margin:-8px 0 0 -.5em;vertical-align:middle;left:0;top:50%;position:absolute}.wc-modal-shipping-method-settings form .form-table tr td input,.wc-modal-shipping-method-settings form .form-table tr td select,.wc-modal-shipping-method-settings form .form-table tr td textarea{width:50%;min-width:250px}.wc-modal-shipping-method-settings form .form-table tr td input[type=checkbox]{width:auto;min-width:16px}.wc-modal-shipping-method-settings form .form-table tr td,.wc-modal-shipping-method-settings form .form-table tr th{vertical-align:middle;margin:0;line-height:24px;padding:1em;border-bottom:1px solid #f8f8f8}.wc-modal-shipping-method-settings form .form-table:last-of-type{margin-bottom:0}.wc-backbone-modal .wc-shipping-zone-method-selector p{margin-top:0}.wc-backbone-modal .wc-shipping-zone-method-selector .wc-shipping-zone-method-description{margin:.75em 1px 0;line-height:1.5em;color:#999;font-style:italic}.wc-backbone-modal .wc-shipping-zone-method-selector select{width:100%;cursor:pointer}img.help_tip{margin:0 9px 0 0;vertical-align:middle}.postbox img.help_tip{margin-top:0}.postbox .woocommerce-help-tip{margin:0 9px 0 0}.status-disabled,.status-enabled,.status-manual{font-size:1.4em;display:block;text-indent:-9999px;position:relative;height:1em;width:1em}.status-disabled::before,.status-enabled::before,.status-manual::before{font-family:WooCommerce;line-height:1;margin:0;position:absolute;width:100%;height:100%;text-indent:0;top:0;font-variant:normal;-webkit-font-smoothing:antialiased;font-weight:400;text-align:center;right:0;speak:none;text-transform:none}.status-manual::before{content:"";color:#999}.status-enabled::before{content:"";color:#a46497}.status-disabled::before{content:"";color:#ccc}.woocommerce h2.woo-nav-tab-wrapper{margin-bottom:1em}.woocommerce nav.woo-nav-tab-wrapper{margin:1.5em 0 1em;border-bottom:1px solid #ccc}.woocommerce .subsubsub{margin:-8px 0 0}.woocommerce .wc-admin-breadcrumb{margin-right:.5em}.woocommerce .wc-admin-breadcrumb a{color:#a46497}.woocommerce #template div{margin:0}.woocommerce #template div p .button{float:left;margin-right:10px;margin-top:-4px}.woocommerce #template div .editor textarea{margin-bottom:8px}.woocommerce textarea[disabled=disabled]{background:#dfdfdf!important}.woocommerce table.form-table{margin:0;position:relative}.woocommerce table.form-table .forminp-radio ul{margin:0}.woocommerce table.form-table .forminp-radio ul li{line-height:1.4em}.woocommerce table.form-table textarea.input-text{height:100%;min-width:150px;display:block}.woocommerce table.form-table input.regular-input{width:400px}.woocommerce table.form-table textarea.wide-input{width:100%}.woocommerce table.form-table .woocommerce-help-tip,.woocommerce table.form-table img.help_tip{padding:0;margin:-4px 5px 0 0;vertical-align:middle;cursor:help;line-height:1}.woocommerce table.form-table span.help_tip{cursor:help;color:#2ea2cc}.woocommerce table.form-table th{position:relative;padding-left:24px}.woocommerce table.form-table .select2-container{vertical-align:top;margin-bottom:3px}.woocommerce table.form-table table.widefat th{padding-left:inherit}.woocommerce table.form-table th .woocommerce-help-tip,.woocommerce table.form-table th img.help_tip{margin:2px 0 0 -24px;float:left}.woocommerce table.form-table .wp-list-table .woocommerce-help-tip{float:none}.woocommerce table.form-table fieldset{margin-top:4px}.woocommerce table.form-table fieldset .woocommerce-help-tip,.woocommerce table.form-table fieldset img.help_tip{margin:-3px 5px 0 0}.woocommerce table.form-table fieldset p.description{margin-bottom:8px}.woocommerce table.form-table fieldset:first-child{margin-top:0}.woocommerce table.form-table .iris-picker{z-index:100;display:none;position:absolute;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.2)}.woocommerce table.form-table .iris-picker .ui-slider{border:0!important;margin:0!important;width:auto!important;height:auto!important;background:none!important}.woocommerce table.form-table .iris-picker .ui-slider .ui-slider-handle{margin-bottom:0!important}.woocommerce table.form-table .colorpickpreview{padding:3px 20px 3px 3px;border:1px solid #ddd;border-right:0;margin-right:-3px}.woocommerce table.form-table .colorpick{border-left:0}.woocommerce table.form-table .image_width_settings{vertical-align:middle}.woocommerce table.form-table .image_width_settings label{margin-right:10px}.woocommerce table.form-table .wc_emails_wrapper{padding:0 0 10px 15px}.woocommerce #tabs-wrap table a.remove{margin-right:4px}.woocommerce #tabs-wrap table p{margin:0 0 4px!important;overflow:hidden;zoom:1}.woocommerce #tabs-wrap table p a.add{float:right}#wp-excerpt-editor-container{background:#fff}#product_variation-parent #parent_id{width:100%}#postimagediv img{border:1px solid #d5d5d5;max-width:100%}#woocommerce-product-images .inside{margin:0;padding:0}#woocommerce-product-images .inside .add_product_images{padding:0 12px 12px}#woocommerce-product-images .inside #product_images_container{padding:0 9px 0 0}#woocommerce-product-images .inside #product_images_container ul{margin:0;padding:0}#woocommerce-product-images .inside #product_images_container ul::after,#woocommerce-product-images .inside #product_images_container ul::before{content:' ';display:table}#woocommerce-product-images .inside #product_images_container ul li.add,#woocommerce-product-images .inside #product_images_container ul li.image,#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder{width:80px;float:right;cursor:move;border:1px solid #d5d5d5;margin:9px 0 0 9px;background:#f7f7f7;border-radius:2px;position:relative;box-sizing:border-box}#woocommerce-product-images .inside #product_images_container ul li.add img,#woocommerce-product-images .inside #product_images_container ul li.image img,#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder img{width:100%;height:auto;display:block}#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder{border:3px dashed #ddd;position:relative}#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder::after{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:"";font-size:2.618em;line-height:72px;color:#ddd}#woocommerce-product-images .inside #product_images_container ul ul.actions{position:absolute;top:-8px;left:-8px;padding:2px;display:none}#woocommerce-product-images .inside #product_images_container ul ul.actions li{float:left;margin:0 2px 0 0}#woocommerce-product-images .inside #product_images_container ul ul.actions li a{width:1em;margin:0;height:0;display:block;overflow:hidden}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.tips{cursor:pointer}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.delete{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.4em}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.delete::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:"";color:#999}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.delete:hover::before{color:#a00}#woocommerce-product-images .inside #product_images_container ul li:hover ul.actions{display:block}#woocommerce-product-data .hndle{padding:10px}#woocommerce-product-data .hndle span{display:block;vertical-align:middle;line-height:24px}#woocommerce-product-data .hndle span span{display:inline;line-height:inherit;vertical-align:baseline}#woocommerce-product-data .hndle select{margin:0 .5em 0 0}#woocommerce-product-data .hndle label{padding-left:1em;font-size:12px;vertical-align:baseline}#woocommerce-product-data .hndle label:first-child{margin-left:1em;border-left:1px solid #dfdfdf}#woocommerce-product-data .hndle input,#woocommerce-product-data .hndle select{margin-top:-3px 0 0;vertical-align:middle}#woocommerce-product-data>.handlediv{margin-top:4px}#woocommerce-product-data .wrap{margin:0}#woocommerce-coupon-description{padding:3px 8px;font-size:1.7em;line-height:1.42em;height:auto;width:100%;outline:0;margin:10px 0;display:block}#woocommerce-coupon-description::-webkit-input-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-description::-moz-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-description:-ms-input-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-description:-moz-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-data .panel-wrap,#woocommerce-product-data .panel-wrap{background:#fff}#woocommerce-coupon-data .wc-metaboxes-wrapper,#woocommerce-coupon-data .woocommerce_options_panel,#woocommerce-product-data .wc-metaboxes-wrapper,#woocommerce-product-data .woocommerce_options_panel{float:right;width:80%}#woocommerce-coupon-data .wc-metaboxes-wrapper .wc-radios,#woocommerce-coupon-data .woocommerce_options_panel .wc-radios,#woocommerce-product-data .wc-metaboxes-wrapper .wc-radios,#woocommerce-product-data .woocommerce_options_panel .wc-radios{display:block;float:right;margin:0}#woocommerce-coupon-data .wc-metaboxes-wrapper .wc-radios li,#woocommerce-coupon-data .woocommerce_options_panel .wc-radios li,#woocommerce-product-data .wc-metaboxes-wrapper .wc-radios li,#woocommerce-product-data .woocommerce_options_panel .wc-radios li{display:block;padding:0 0 10px}#woocommerce-coupon-data .wc-metaboxes-wrapper .wc-radios li input,#woocommerce-coupon-data .woocommerce_options_panel .wc-radios li input,#woocommerce-product-data .wc-metaboxes-wrapper .wc-radios li input,#woocommerce-product-data .woocommerce_options_panel .wc-radios li input{width:auto}#woocommerce-coupon-data .panel-wrap,#woocommerce-product-data .panel-wrap,.woocommerce .panel-wrap{overflow:hidden}#woocommerce-coupon-data ul.wc-tabs,#woocommerce-product-data ul.wc-tabs,.woocommerce ul.wc-tabs{margin:0;width:20%;float:right;line-height:1em;padding:0 0 10px;position:relative;background-color:#fafafa;border-left:1px solid #eee;box-sizing:border-box}#woocommerce-coupon-data ul.wc-tabs::after,#woocommerce-product-data ul.wc-tabs::after,.woocommerce ul.wc-tabs::after{content:'';display:block;width:100%;height:9999em;position:absolute;bottom:-9999em;right:0;background-color:#fafafa;border-left:1px solid #eee}#woocommerce-coupon-data ul.wc-tabs li,#woocommerce-product-data ul.wc-tabs li,.woocommerce ul.wc-tabs li{margin:0;padding:0;display:block;position:relative}#woocommerce-coupon-data ul.wc-tabs li a,#woocommerce-product-data ul.wc-tabs li a,.woocommerce ul.wc-tabs li a{margin:0;padding:10px;display:block;box-shadow:none;text-decoration:none;line-height:20px!important;border-bottom:1px solid #eee}#woocommerce-coupon-data ul.wc-tabs li a span,#woocommerce-product-data ul.wc-tabs li a span,.woocommerce ul.wc-tabs li a span{margin-right:.618em;margin-left:.618em}#woocommerce-coupon-data ul.wc-tabs li a::before,#woocommerce-product-data ul.wc-tabs li a::before,.woocommerce ul.wc-tabs li a::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;content:"";text-decoration:none}#woocommerce-coupon-data ul.wc-tabs li.general_options a::before,#woocommerce-product-data ul.wc-tabs li.general_options a::before,.woocommerce ul.wc-tabs li.general_options a::before{content:'\f107'}#woocommerce-coupon-data ul.wc-tabs li.inventory_options a::before,#woocommerce-product-data ul.wc-tabs li.inventory_options a::before,.woocommerce ul.wc-tabs li.inventory_options a::before{content:'\f481'}#woocommerce-coupon-data ul.wc-tabs li.shipping_options a::before,#woocommerce-product-data ul.wc-tabs li.shipping_options a::before,.woocommerce ul.wc-tabs li.shipping_options a::before{font-family:WooCommerce;content:'\e01a'}#woocommerce-coupon-data ul.wc-tabs li.linked_product_options a::before,#woocommerce-product-data ul.wc-tabs li.linked_product_options a::before,.woocommerce ul.wc-tabs li.linked_product_options a::before{content:'\f103'}#woocommerce-coupon-data ul.wc-tabs li.attribute_options a::before,#woocommerce-product-data ul.wc-tabs li.attribute_options a::before,.woocommerce ul.wc-tabs li.attribute_options a::before{content:'\f175'}#woocommerce-coupon-data ul.wc-tabs li.advanced_options a::before,#woocommerce-product-data ul.wc-tabs li.advanced_options a::before,.woocommerce ul.wc-tabs li.advanced_options a::before{font-family:Dashicons;content:'\f111'}#woocommerce-coupon-data ul.wc-tabs li.variations_options a::before,#woocommerce-product-data ul.wc-tabs li.variations_options a::before,.woocommerce ul.wc-tabs li.variations_options a::before{content:'\f509'}#woocommerce-coupon-data ul.wc-tabs li.usage_restriction_options a::before,#woocommerce-product-data ul.wc-tabs li.usage_restriction_options a::before,.woocommerce ul.wc-tabs li.usage_restriction_options a::before{font-family:WooCommerce;content:'\e602'}#woocommerce-coupon-data ul.wc-tabs li.usage_limit_options a::before,#woocommerce-product-data ul.wc-tabs li.usage_limit_options a::before,.woocommerce ul.wc-tabs li.usage_limit_options a::before{font-family:WooCommerce;content:'\e601'}#woocommerce-coupon-data ul.wc-tabs li.general_coupon_data a::before,#woocommerce-product-data ul.wc-tabs li.general_coupon_data a::before,.woocommerce ul.wc-tabs li.general_coupon_data a::before{font-family:WooCommerce;content:'\e600'}#woocommerce-coupon-data ul.wc-tabs li.active a,#woocommerce-product-data ul.wc-tabs li.active a,.woocommerce ul.wc-tabs li.active a{color:#555;position:relative;background-color:#eee}.woocommerce_page_wc-settings input[type=email],.woocommerce_page_wc-settings input[type=url]{direction:rtl}.woocommerce_page_wc-settings .shippingrows th.check-column{padding-top:20px}.woocommerce_page_wc-settings .shippingrows tfoot th{padding-right:10px}.woocommerce_page_wc-settings .shippingrows .add.button::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-left:.618em;content:"";text-decoration:none}.woocommerce_page_wc-settings h3.wc-settings-sub-title{font-size:1.2em}#woocommerce-coupon-data .inside,#woocommerce-order-data .inside,#woocommerce-order-downloads .inside,#woocommerce-product-data .inside,#woocommerce-product-type-options .inside{margin:0;padding:0}.panel,.woocommerce_options_panel{padding:9px;color:#555}.panel .form-field .woocommerce-help-tip,.woocommerce_options_panel .form-field .woocommerce-help-tip{font-size:1.4em}.panel,.woocommerce_page_settings .woocommerce_options_panel{padding:0}#woocommerce-product-specs .inside,#woocommerce-product-type-options .panel{margin:0;padding:9px}#woocommerce-product-type-options .panel p,.woocommerce_options_panel fieldset.form-field,.woocommerce_options_panel p{margin:0 0 9px;font-size:12px;padding:5px 9px;line-height:24px}#woocommerce-product-type-options .panel p::after,.woocommerce_options_panel fieldset.form-field::after,.woocommerce_options_panel p::after{content:'.';display:block;height:0;clear:both;visibility:hidden}.woocommerce_options_panel .checkbox,.woocommerce_variable_attributes .checkbox{width:auto;margin:4px 0!important;vertical-align:middle;float:right}.woocommerce_options_panel .downloadable_files table,.woocommerce_variations .downloadable_files table{width:100%;padding:0!important}.woocommerce_options_panel .downloadable_files table th,.woocommerce_variations .downloadable_files table th{padding:7px 7px 7px 0!important}.woocommerce_options_panel .downloadable_files table th.sort,.woocommerce_variations .downloadable_files table th.sort{width:17px;padding:7px!important}.woocommerce_options_panel .downloadable_files table th .woocommerce-help-tip,.woocommerce_variations .downloadable_files table th .woocommerce-help-tip{font-size:1.1em;margin-right:0}.woocommerce_options_panel .downloadable_files table td,.woocommerce_variations .downloadable_files table td{vertical-align:middle!important;padding:4px 7px 4px 0!important;position:relative}.woocommerce_options_panel .downloadable_files table td:last-child,.woocommerce_variations .downloadable_files table td:last-child{padding-left:7px!important}.woocommerce_options_panel .downloadable_files table td input.input_text,.woocommerce_variations .downloadable_files table td input.input_text{width:100%;float:none;min-width:0;margin:1px 0}.woocommerce_options_panel .downloadable_files table td .upload_file_button,.woocommerce_variations .downloadable_files table td .upload_file_button{width:auto;float:left;cursor:pointer}.woocommerce_options_panel .downloadable_files table td .delete,.woocommerce_variations .downloadable_files table td .delete{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.2em}.woocommerce_options_panel .downloadable_files table td .delete::before,.woocommerce_variations .downloadable_files table td .delete::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;content:"";color:#999}.woocommerce_options_panel .downloadable_files table td .delete:hover::before,.woocommerce_variations .downloadable_files table td .delete:hover::before{color:#a00}.woocommerce_options_panel .downloadable_files table td.sort,.woocommerce_variations .downloadable_files table td.sort{width:17px;cursor:move;font-size:15px;text-align:center;background:#f9f9f9;padding-left:7px!important}.woocommerce_options_panel .downloadable_files table td.sort::before,.woocommerce_variations .downloadable_files table td.sort::before{content:'\f333';font-family:Dashicons;text-align:center;line-height:1;color:#999;display:block;width:17px;float:right;height:100%}.woocommerce_options_panel .downloadable_files table td.sort:hover::before,.woocommerce_variations .downloadable_files table td.sort:hover::before{color:#333}.woocommerce_variation h3 .sort{width:17px;height:26px;cursor:move;float:left;font-size:15px;font-weight:400;margin-left:.5em;visibility:hidden;text-align:center;vertical-align:middle}.woocommerce_variation h3 .sort::before{content:'\f333';font-family:Dashicons;text-align:center;line-height:28px;color:#999;display:block;width:17px;float:right;height:100%}.woocommerce_variation h3 .sort:hover::before{color:#777}.woocommerce_variation h3:hover .sort,.woocommerce_variation.ui-sortable-helper .sort{visibility:visible}.woocommerce_options_panel{min-height:175px;box-sizing:border-box}.woocommerce_options_panel .downloadable_files{padding:0 162px 0 9px;position:relative;margin:9px 0}.woocommerce_options_panel .downloadable_files label{position:absolute;right:0;margin:0 12px 0 0;line-height:24px}.woocommerce_options_panel p{margin:9px 0}.woocommerce_options_panel fieldset.form-field,.woocommerce_options_panel p.form-field{padding:5px 162px 5px 20px!important}.woocommerce_options_panel .sale_price_dates_fields .short:first-of-type{margin-bottom:1em}.woocommerce_options_panel .sale_price_dates_fields .short:nth-of-type(2){clear:right}.woocommerce_options_panel label,.woocommerce_options_panel legend{float:right;width:150px;padding:0;margin:0 -150px 0 0}.woocommerce_options_panel label .req,.woocommerce_options_panel legend .req{font-weight:700;font-style:normal;color:#a00}.woocommerce_options_panel .description{padding:0;margin:0 7px 0 0;clear:none;display:inline}.woocommerce_options_panel .description-block{margin-right:0;display:block}.woocommerce_options_panel input,.woocommerce_options_panel select,.woocommerce_options_panel textarea{margin:0}.woocommerce_options_panel textarea{float:right;height:3.5em;line-height:1.5em;vertical-align:top}.woocommerce_options_panel input[type=text],.woocommerce_options_panel input[type=number],.woocommerce_options_panel input[type=email],.woocommerce_options_panel input[type=password]{width:50%;float:right}.woocommerce_options_panel input.button{width:auto;margin-right:8px}.woocommerce_options_panel select{float:right}.woocommerce_options_panel .short,.woocommerce_options_panel input[type=text].short,.woocommerce_options_panel input[type=number].short,.woocommerce_options_panel input[type=email].short,.woocommerce_options_panel input[type=password].short{width:50%}.woocommerce_options_panel .sized{width:auto!important;margin-left:6px}.woocommerce_options_panel .options_group{border-top:1px solid #fff;border-bottom:1px solid #eee}.woocommerce_options_panel .options_group:first-child{border-top:0}.woocommerce_options_panel .options_group:last-child{border-bottom:0}.woocommerce_options_panel .options_group fieldset{margin:9px 0;font-size:12px;padding:5px 9px;line-height:24px}.woocommerce_options_panel .options_group fieldset label{width:auto;float:none}.woocommerce_options_panel .options_group fieldset ul{float:right;width:50%;margin:0;padding:0}.woocommerce_options_panel .options_group fieldset ul li{margin:0;width:auto}.woocommerce_options_panel .options_group fieldset ul li input{width:auto;float:none;margin-left:4px}.woocommerce_options_panel .options_group fieldset ul.wc-radios label{margin-right:0}.woocommerce_options_panel .dimensions_field .wrap{display:block;width:50%}.woocommerce_options_panel .dimensions_field .wrap input{width:30.75%;margin-left:3.8%}.woocommerce_options_panel .dimensions_field .wrap .last{margin-left:0}.woocommerce_options_panel.padded{padding:1em}#woocommerce-product-data input.dp-applied,.woocommerce_options_panel .select2-container{float:right}#grouped_product_options,#simple_product_options,#virtual_product_options{padding:12px;font-style:italic;color:#666}.wc-metaboxes-wrapper .toolbar{margin:0!important;border-top:1px solid #fff;border-bottom:1px solid #eee;padding:9px 12px!important}.wc-metaboxes-wrapper .toolbar:first-child{border-top:0}.wc-metaboxes-wrapper .toolbar:last-child{border-bottom:0}.wc-metaboxes-wrapper .toolbar .add_variation{float:left;margin-right:5px}.wc-metaboxes-wrapper .toolbar .cancel-variation-changes,.wc-metaboxes-wrapper .toolbar .save-variation-changes{float:right;margin-left:5px}.wc-metaboxes-wrapper p.toolbar{overflow:hidden;zoom:1}.wc-metaboxes-wrapper .expand-close{margin-left:2px;color:#777;font-size:12px;font-style:italic}.wc-metaboxes-wrapper .expand-close a{background:0 0;padding:0;font-size:12px;text-decoration:none}.wc-metaboxes-wrapper#product_attributes .expand-close{float:left;line-height:28px}.wc-metaboxes-wrapper .fr,.wc-metaboxes-wrapper button.add_variable_attribute{float:left;margin:0 6px 0 0}.wc-metaboxes-wrapper .wc-metaboxes{border-bottom:1px solid #eee}.wc-metaboxes-wrapper .wc-metabox-sortable-placeholder{border-color:#bbb;background-color:#f5f5f5;margin-bottom:9px;border-width:1px;border-style:dashed}.wc-metaboxes-wrapper .wc-metabox{background:#fff;border-bottom:1px solid #eee;margin:0!important}.wc-metaboxes-wrapper .wc-metabox select{font-weight:400}.wc-metaboxes-wrapper .wc-metabox:last-of-type{border-bottom:0}.wc-metaboxes-wrapper .wc-metabox .handlediv{width:27px}.wc-metaboxes-wrapper .wc-metabox .handlediv::before{content:'\f142'!important;cursor:pointer;display:inline-block;font:400 20px/1 Dashicons;line-height:.5!important;padding:8px 10px;position:relative;left:12px;top:0}.wc-metaboxes-wrapper .wc-metabox.closed{border-radius:3px}.wc-metaboxes-wrapper .wc-metabox.closed .handlediv::before{content:'\f140'!important}.wc-metaboxes-wrapper .wc-metabox.closed h3{border:0}.wc-metaboxes-wrapper .wc-metabox h3{margin:0!important;padding:.75em 1em .75em .75em!important;font-size:1em!important;overflow:hidden;zoom:1;cursor:move}.wc-metaboxes-wrapper .wc-metabox h3 a.delete,.wc-metaboxes-wrapper .wc-metabox h3 button{float:left}.wc-metaboxes-wrapper .wc-metabox h3 a.delete{color:red;font-weight:400;line-height:26px;text-decoration:none;position:relative;visibility:hidden}.wc-metaboxes-wrapper .wc-metabox h3 strong{line-height:26px;font-weight:700}.wc-metaboxes-wrapper .wc-metabox h3 select{font-family:sans-serif;max-width:20%;margin:.25em 0 .25em .25em}.wc-metaboxes-wrapper .wc-metabox h3 .handlediv{background-position:6px 5px!important;visibility:hidden;height:26px}.wc-metaboxes-wrapper .wc-metabox h3.fixed{cursor:pointer!important}.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3{cursor:pointer;padding:.5em 1em .5em .75em!important}.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3 .handlediv,.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3 .sort,.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3 a.delete{margin-top:.25em}.wc-metaboxes-wrapper .wc-metabox h3:hover .handlediv,.wc-metaboxes-wrapper .wc-metabox h3:hover a.delete,.wc-metaboxes-wrapper .wc-metabox.ui-sortable-helper .handlediv,.wc-metaboxes-wrapper .wc-metabox.ui-sortable-helper a.delete{visibility:visible}.wc-metaboxes-wrapper .wc-metabox table{width:100%;position:relative;background-color:#fdfdfd;padding:1em;border-top:1px solid #eee}.wc-metaboxes-wrapper .wc-metabox table td{text-align:right;padding:0 0 1em 6px;vertical-align:top;border:0}.wc-metaboxes-wrapper .wc-metabox table td label{text-align:right;display:block;line-height:21px}.wc-metaboxes-wrapper .wc-metabox table td input{float:right;min-width:200px}.wc-metaboxes-wrapper .wc-metabox table td input,.wc-metaboxes-wrapper .wc-metabox table td textarea{width:100%;margin:0;display:block;font-size:14px;padding:4px;color:#555}.wc-metaboxes-wrapper .wc-metabox table td .select2-container,.wc-metaboxes-wrapper .wc-metabox table td select{width:100%!important}.wc-metaboxes-wrapper .wc-metabox table td input.short{width:200px}.wc-metaboxes-wrapper .wc-metabox table td input.checkbox{width:16px;min-width:inherit;vertical-align:text-bottom;display:inline-block;float:none}.wc-metaboxes-wrapper .wc-metabox table td.attribute_name{width:200px}.wc-metaboxes-wrapper .wc-metabox table .minus,.wc-metaboxes-wrapper .wc-metabox table .plus{margin-top:6px}.wc-metaboxes-wrapper .wc-metabox table .fl{float:right}.wc-metaboxes-wrapper .wc-metabox table .fr{float:left}.variations-pagenav{float:left;line-height:24px}.variations-pagenav .displaying-num{color:#777;font-size:12px;font-style:italic}.variations-pagenav a{padding:0 10px 3px;background:rgba(0,0,0,.05);font-size:16px;font-weight:400;text-decoration:none}.variations-pagenav a.disabled,.variations-pagenav a.disabled:active,.variations-pagenav a.disabled:focus,.variations-pagenav a.disabled:hover{color:#a0a5aa;background:rgba(0,0,0,.05)}.variations-defaults{float:right}.variations-defaults select{margin:.25em 0 .25em .25em}.woocommerce_variable_attributes{background-color:#fdfdfd;border-top:1px solid #eee}.woocommerce_variable_attributes .data{padding:1em 2em}.woocommerce_variable_attributes .data::after,.woocommerce_variable_attributes .data::before{content:' ';display:table}.woocommerce_variable_attributes .upload_image_button{display:block;width:64px;height:64px;float:right;margin-left:20px;position:relative;cursor:pointer}.woocommerce_variable_attributes .upload_image_button img{width:100%;height:auto;display:none}.woocommerce_variable_attributes .upload_image_button::before{content:'\f128';font-family:Dashicons;position:absolute;top:0;right:0;left:0;bottom:0;text-align:center;line-height:64px;font-size:64px;font-weight:400;-webkit-font-smoothing:antialiased}.woocommerce_variable_attributes .upload_image_button.remove img{display:block}.woocommerce_variable_attributes .upload_image_button.remove::before{content:'\f335';display:none}.woocommerce_variable_attributes .upload_image_button.remove:hover::before{display:block}.woocommerce_variable_attributes .options{border:1px solid #eee;border-width:1px 0;padding:.25em 0}.woocommerce_variable_attributes .options label{display:inline-block;padding:4px 0 2px 1em}.woocommerce_variable_attributes .options input[type=checkbox]{margin:0 .5em 0 5px!important;vertical-align:middle}.form-row label{display:inline-block}.form-row .woocommerce-help-tip{float:left}.form-row input[type=number],.form-row input[type=text],.form-row select,.form-row textarea{width:100%;vertical-align:middle;margin:2px 0 0;padding:6px}.form-row select{height:30px;line-height:30px}.form-row.dimensions_field .wrap{clear:right;display:block}.form-row.dimensions_field input{width:33%;float:right;vertical-align:middle}.form-row.dimensions_field input:last-of-type{margin-left:0;width:34%}.form-row.form-row-first,.form-row.form-row-last{width:48%;float:left}.form-row.form-row-first{clear:both;float:right}.form-row.form-row-full{clear:both}.tips{cursor:help;text-decoration:none}img.tips{padding:5px 0 0}#tiptip_holder{display:none;position:absolute;top:0;left:0;z-index:9999999}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_top #tiptip_arrow_inner{margin-top:-7px;margin-right:-6px;border-top-color:#333}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_bottom #tiptip_arrow_inner{margin-top:-5px;margin-right:-6px;border-bottom-color:#333}#tiptip_holder.tip_right{padding-right:5px}#tiptip_holder.tip_right #tiptip_arrow_inner{margin-top:-6px;margin-right:-5px;border-left-color:#333}#tiptip_holder.tip_left{padding-left:5px}#tiptip_holder.tip_left #tiptip_arrow_inner{margin-top:-6px;margin-right:-7px;border-right-color:#333}#tiptip_content,.chart-tooltip,.wc_error_tip{color:#fff;font-size:.8em;max-width:150px;background:#333;text-align:center;border-radius:3px;padding:.618em 1em;box-shadow:0 1px 3px rgba(0,0,0,.2)}#tiptip_content code,.chart-tooltip code,.wc_error_tip code{padding:1px;background:#888}#tiptip_arrow,#tiptip_arrow_inner{position:absolute;border-color:transparent;border-style:solid;border-width:6px;height:0;width:0}#tiptip_arrow{margin-right:79.5px!important;margin-left:0!important}.wc_error_tip{max-width:20em;line-height:1.8em;position:absolute;white-space:normal;background:#d82223;margin:1.5em -1em 0 1px;z-index:9999999}.wc_error_tip::after{content:'';display:block;border:8px solid #d82223;border-left-color:transparent;border-right-color:transparent;border-top-color:transparent;position:absolute;top:-3px;right:50%;margin:-1em -3px 0 0}img.ui-datepicker-trigger{vertical-align:middle;margin-top:-1px;cursor:pointer}.wc-metabox-content img.ui-datepicker-trigger,.woocommerce_options_panel img.ui-datepicker-trigger{float:right;margin-left:8px;margin-top:4px;margin-right:4px}#ui-datepicker-div{display:none}.woocommerce-reports-wide.woocommerce-reports-wrap,.woocommerce-reports-wrap.woocommerce-reports-wrap{margin-right:300px;padding-top:18px}.woocommerce-reports-wide.halved,.woocommerce-reports-wrap.halved{margin:0;overflow:hidden;zoom:1}.woocommerce-reports-wide .widefat td,.woocommerce-reports-wrap .widefat td{vertical-align:top;padding:7px}.woocommerce-reports-wide .widefat td .description,.woocommerce-reports-wrap .widefat td .description{margin:4px 0 0}.woocommerce-reports-wide .postbox::after,.woocommerce-reports-wrap .postbox::after{content:'.';display:block;height:0;clear:both;visibility:hidden}.woocommerce-reports-wide .postbox h3,.woocommerce-reports-wrap .postbox h3{cursor:default!important}.woocommerce-reports-wide .postbox .inside,.woocommerce-reports-wrap .postbox .inside{padding:10px;margin:0!important}.woocommerce-reports-wide .postbox div.stats_range,.woocommerce-reports-wide .postbox h3.stats_range,.woocommerce-reports-wrap .postbox div.stats_range,.woocommerce-reports-wrap .postbox h3.stats_range{border-bottom-color:#dfdfdf;margin:0;padding:0!important}.woocommerce-reports-wide .postbox div.stats_range .export_csv,.woocommerce-reports-wide .postbox h3.stats_range .export_csv,.woocommerce-reports-wrap .postbox div.stats_range .export_csv,.woocommerce-reports-wrap .postbox h3.stats_range .export_csv{float:left;line-height:26px;border-right:1px solid #dfdfdf;padding:10px;display:block;text-decoration:none}.woocommerce-reports-wide .postbox div.stats_range .export_csv::before,.woocommerce-reports-wide .postbox h3.stats_range .export_csv::before,.woocommerce-reports-wrap .postbox div.stats_range .export_csv::before,.woocommerce-reports-wrap .postbox h3.stats_range .export_csv::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;content:"";text-decoration:none;margin-left:4px}.woocommerce-reports-wide .postbox div.stats_range ul,.woocommerce-reports-wide .postbox h3.stats_range ul,.woocommerce-reports-wrap .postbox div.stats_range ul,.woocommerce-reports-wrap .postbox h3.stats_range ul{list-style:none;margin:0;padding:0;zoom:1;background:#f5f5f5;border-bottom:1px solid #ccc}.woocommerce-reports-wide .postbox div.stats_range ul::after,.woocommerce-reports-wide .postbox div.stats_range ul::before,.woocommerce-reports-wide .postbox h3.stats_range ul::after,.woocommerce-reports-wide .postbox h3.stats_range ul::before,.woocommerce-reports-wrap .postbox div.stats_range ul::after,.woocommerce-reports-wrap .postbox div.stats_range ul::before,.woocommerce-reports-wrap .postbox h3.stats_range ul::after,.woocommerce-reports-wrap .postbox h3.stats_range ul::before{content:' ';display:table}.woocommerce-reports-wide .postbox div.stats_range ul::after,.woocommerce-reports-wide .postbox h3.stats_range ul::after,.woocommerce-reports-wrap .postbox div.stats_range ul::after,.woocommerce-reports-wrap .postbox h3.stats_range ul::after{clear:both}.woocommerce-reports-wide .postbox div.stats_range ul li,.woocommerce-reports-wide .postbox h3.stats_range ul li,.woocommerce-reports-wrap .postbox div.stats_range ul li,.woocommerce-reports-wrap .postbox h3.stats_range ul li{float:right;margin:0;padding:0;line-height:26px;font-weight:700;font-size:14px}.woocommerce-reports-wide .postbox div.stats_range ul li a,.woocommerce-reports-wide .postbox h3.stats_range ul li a,.woocommerce-reports-wrap .postbox div.stats_range ul li a,.woocommerce-reports-wrap .postbox h3.stats_range ul li a{border-left:1px solid #dfdfdf;padding:10px;display:block;text-decoration:none}.woocommerce-reports-wide .postbox div.stats_range ul li.active,.woocommerce-reports-wide .postbox h3.stats_range ul li.active,.woocommerce-reports-wrap .postbox div.stats_range ul li.active,.woocommerce-reports-wrap .postbox h3.stats_range ul li.active{background:#fff;-webkit-box-shadow:0 4px 0 0 #fff;box-shadow:0 4px 0 0 #fff}.woocommerce-reports-wide .postbox div.stats_range ul li.active a,.woocommerce-reports-wide .postbox h3.stats_range ul li.active a,.woocommerce-reports-wrap .postbox div.stats_range ul li.active a,.woocommerce-reports-wrap .postbox h3.stats_range ul li.active a{color:#777}.woocommerce-reports-wide .postbox div.stats_range ul li.custom,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom{padding:9px 10px;vertical-align:middle}.woocommerce-reports-wide .postbox div.stats_range ul li.custom div,.woocommerce-reports-wide .postbox div.stats_range ul li.custom form,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom div,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom form,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom div,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom form,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom div,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom form{display:inline;margin:0}.woocommerce-reports-wide .postbox div.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wide .postbox div.stats_range ul li.custom form input.range_datepicker,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom form input.range_datepicker,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom form input.range_datepicker,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom form input.range_datepicker{padding:0;margin:0 0 0 10px;background:0 0;border:0;color:#777;text-align:center;-webkit-box-shadow:none;box-shadow:none}.woocommerce-reports-wide .postbox div.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wide .postbox div.stats_range ul li.custom form input.range_datepicker.from,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom form input.range_datepicker.from,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom form input.range_datepicker.from,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom form input.range_datepicker.from{margin-left:0}.woocommerce-reports-wide .postbox .chart-with-sidebar,.woocommerce-reports-wrap .postbox .chart-with-sidebar{padding:12px 249px 12px 12px;margin:0!important}.woocommerce-reports-wide .postbox .chart-with-sidebar .chart-sidebar,.woocommerce-reports-wrap .postbox .chart-with-sidebar .chart-sidebar{width:225px;margin-right:-237px;float:right}.woocommerce-reports-wide .postbox .chart-widgets,.woocommerce-reports-wrap .postbox .chart-widgets{margin:0;padding:0}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget{margin:0 0 1em;background:#fafafa;border:1px solid #dfdfdf}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget::after,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget::after{content:'.';display:block;height:0;clear:both;visibility:hidden}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget h4,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget h4{background:#fff;border:1px solid #dfdfdf;border-right-width:0;border-left-width:0;padding:10px;margin:0;color:#2ea2cc;border-top-width:0;background-image:-webkit-gradient(linear,right bottom,right top,from(#ececec),to(#f9f9f9));background-image:-webkit-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-moz-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-o-linear-gradient(bottom,#ececec,#f9f9f9);background-image:linear-gradient(to top,#ececec,#f9f9f9)}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.count,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table tr.active td,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.count,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table tr.active td{background:#f5f5f5}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget h4.section_title:hover,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget h4.section_title:hover{color:#a00}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title{cursor:pointer}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title span,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title span{display:block}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title span::after,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title span::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none;float:left;font-size:.9em;line-height:1.618}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title.open,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title.open{color:#333}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title.open span::after,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title.open span::after{display:none}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section{border-bottom:1px solid #dfdfdf}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section .select2-container,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section .select2-container{width:100%!important}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section:last-of-type,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section:last-of-type{border-radius:0 0 3px 3px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table{width:100%}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td{padding:7px 10px;vertical-align:top;border-top:1px solid #e5e5e5;line-height:1.4em}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table tr:first-child td,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table tr:first-child td{border-top:0}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.name,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.name{max-width:175px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.name a,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.name a{word-wrap:break-word}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.sparkline,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.sparkline{vertical-align:middle}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table .wc_sparkline,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table .wc_sparkline{width:32px;height:1em;display:block;float:left}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget form,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget p,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget form,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget p{margin:0;padding:10px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget form .submit,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget p .submit,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget form .submit,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget p .submit{margin-top:10px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget #product_ids,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget #product_ids{width:100%}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .select_all,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .select_none,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .select_all,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .select_none{float:left;color:#999;margin-right:4px;margin-top:10px}.woocommerce-reports-wide .postbox .chart-legend,.woocommerce-reports-wrap .postbox .chart-legend{list-style:none;margin:0 0 1em;padding:0;border:1px solid #dfdfdf;border-left-width:0;border-bottom-width:0;background:#fff}.woocommerce-reports-wide .postbox .chart-legend li,.woocommerce-reports-wrap .postbox .chart-legend li{border-left:5px solid #aaa;color:#aaa;padding:1em;display:block;margin:0;-webkit-transition:all ease .5s;box-shadow:inset 0 -1px 0 0 #dfdfdf}.woocommerce-reports-wide .postbox .chart-legend li strong,.woocommerce-reports-wrap .postbox .chart-legend li strong{font-size:1.618em;line-height:1.2em;color:#464646;font-weight:400;display:block;font-family:HelveticaNeue-Light,'Helvetica Neue Light','Helvetica Neue',sans-serif}.woocommerce-reports-wide .postbox .chart-legend li strong del,.woocommerce-reports-wrap .postbox .chart-legend li strong del{color:#e74c3c;font-weight:400}.woocommerce-reports-wide .postbox .chart-legend li:hover,.woocommerce-reports-wrap .postbox .chart-legend li:hover{box-shadow:inset 0 -1px 0 0 #dfdfdf,inset -300px 0 0 rgba(156,93,144,.1);border-left:5px solid #9c5d90!important;padding-right:1.5em;color:#9c5d90}.woocommerce-reports-wide .postbox .pie-chart-legend,.woocommerce-reports-wrap .postbox .pie-chart-legend{margin:12px 0 0;overflow:hidden}.woocommerce-reports-wide .postbox .pie-chart-legend li,.woocommerce-reports-wrap .postbox .pie-chart-legend li{float:right;margin:0;padding:6px 0 0;border-top:4px solid #999;text-align:center;box-sizing:border-box;width:50%}.woocommerce-reports-wide .postbox .stat,.woocommerce-reports-wrap .postbox .stat{font-size:1.5em!important;font-weight:700;text-align:center}.woocommerce-reports-wide .postbox .chart-placeholder,.woocommerce-reports-wrap .postbox .chart-placeholder{width:100%;height:650px;overflow:hidden;position:relative}.woocommerce-reports-wide .postbox .chart-prompt,.woocommerce-reports-wrap .postbox .chart-prompt{line-height:650px;margin:0;color:#999;font-size:1.2em;font-style:italic;text-align:center}.woocommerce-reports-wide .postbox .chart-container,.woocommerce-reports-wrap .postbox .chart-container{background:#fff;padding:12px;position:relative;border:1px solid #dfdfdf;border-radius:3px}.woocommerce-reports-wide .postbox .main .chart-legend,.woocommerce-reports-wrap .postbox .main .chart-legend{margin-top:12px}.woocommerce-reports-wide .postbox .main .chart-legend li,.woocommerce-reports-wrap .postbox .main .chart-legend li{border-left:0;margin:0 0 0 8px;float:right;border-top:4px solid #aaa}.woocommerce-reports-wide .woocommerce-reports-main,.woocommerce-reports-wrap .woocommerce-reports-main{float:right;min-width:100%}.woocommerce-reports-wide .woocommerce-reports-main table td,.woocommerce-reports-wrap .woocommerce-reports-main table td{padding:9px}.woocommerce-reports-wide .woocommerce-reports-sidebar,.woocommerce-reports-wrap .woocommerce-reports-sidebar{display:inline;width:281px;margin-right:-300px;clear:both;float:right}.woocommerce-reports-wide .woocommerce-reports-left,.woocommerce-reports-wrap .woocommerce-reports-left{width:49.5%;float:right}.woocommerce-reports-wide .woocommerce-reports-right,.woocommerce-reports-wrap .woocommerce-reports-right{width:49.5%;float:left}.woocommerce-reports-wide .column-wc_actions a.edit,.woocommerce-reports-wide .column-wc_actions a.view,.woocommerce-reports-wrap .column-wc_actions a.edit,.woocommerce-reports-wrap .column-wc_actions a.view{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.woocommerce-reports-wide .column-wc_actions a.edit::after,.woocommerce-reports-wide .column-wc_actions a.view::after,.woocommerce-reports-wrap .column-wc_actions a.edit::after,.woocommerce-reports-wrap .column-wc_actions a.view::after{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center;line-height:1.85}.woocommerce-reports-wide .column-wc_actions a.edit::after,.woocommerce-reports-wrap .column-wc_actions a.edit::after{content:'\f464'}.woocommerce-reports-wide .column-wc_actions a.view::after,.woocommerce-reports-wrap .column-wc_actions a.view::after{content:'\f177'}.woocommerce-wide-reports-wrap{padding-bottom:11px}.woocommerce-wide-reports-wrap .widefat .export-data{float:left}.woocommerce-wide-reports-wrap .widefat td,.woocommerce-wide-reports-wrap .widefat th{vertical-align:middle;padding:7px}form.report_filters div,form.report_filters input,form.report_filters label,form.report_filters p{vertical-align:middle}.chart-tooltip{position:absolute;display:none;line-height:1}table.bar_chart{width:100%}table.bar_chart thead th{text-align:right;color:#ccc;padding:6px 0}table.bar_chart tbody th{padding:6px 0;width:25%;text-align:right!important;font-weight:400!important;border-bottom:1px solid #fee}table.bar_chart tbody td{text-align:left;line-height:24px;padding:6px 0 6px 6px;border-bottom:1px solid #fee}table.bar_chart tbody td span{color:#8a4b75;display:block}table.bar_chart tbody td span.alt{color:#47a03e;margin-top:6px}table.bar_chart tbody td.bars{position:relative;text-align:right;padding:6px 0 6px 6px;border-bottom:1px solid #fee}table.bar_chart tbody td.bars a,table.bar_chart tbody td.bars span{text-decoration:none;clear:both;background:#8a4b75;float:right;display:block;line-height:24px;height:24px;-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-khtml-border-radius:3px;border-radius:3px}.post-type-product .woocommerce-BlankState-message::before,.post-type-shop_coupon .woocommerce-BlankState-message::before,.post-type-shop_order .woocommerce-BlankState-message::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;right:0;width:100%;height:100%;text-align:center}table.bar_chart tbody td.bars span.alt{clear:both;background:#47a03e}table.bar_chart tbody td.bars span.alt span{margin:0;color:#c5dec2!important;text-shadow:0 1px 0 #47a03e;background:0 0}.post-type-shop_order .woocommerce-BlankState-message::before{content:""}.post-type-shop_coupon .woocommerce-BlankState-message::before{content:""}.post-type-product .woocommerce-BlankState-message::before{content:""}.woocommerce-BlankState{text-align:center;padding:5em 0 0}.woocommerce-BlankState .woocommerce-BlankState-message{color:#aaa;margin:0 auto 1.5em;line-height:1.5em;font-size:1.2em;max-width:500px}.woocommerce-BlankState .woocommerce-BlankState-message::before{color:#ddd;text-shadow:0 -1px 1px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.8);font-size:8em;display:block;position:relative!important;top:auto;right:auto;line-height:1em;margin:0 0 .1875em}.woocommerce-BlankState .woocommerce-BlankState-cta{font-size:1.2em;padding:.75em 1.5em;height:auto}@media only screen and (max-width:1280px){#order_data .order_data_column{width:48%}#order_data .order_data_column:first-child{width:100%}.woocommerce_options_panel .description{display:block;clear:both;margin-right:0}.woocommerce_options_panel .dimensions_field .wrap,.woocommerce_options_panel .short,.woocommerce_options_panel input[type=text].short,.woocommerce_options_panel input[type=number].short,.woocommerce_options_panel input[type=email].short,.woocommerce_options_panel input[type=password].short{width:80%}.woocommerce_options_panel .downloadable_files,.woocommerce_variations .downloadable_files{padding:0;clear:both}.woocommerce_options_panel .downloadable_files label,.woocommerce_variations .downloadable_files label{position:static}.woocommerce_options_panel .downloadable_files table,.woocommerce_variations .downloadable_files table{margin:0 12px 24px;width:94%}.woocommerce_options_panel .downloadable_files table .sort,.woocommerce_variations .downloadable_files table .sort{visibility:hidden}.woocommerce_options_panel .woocommerce_variable_attributes .downloadable_files table,.woocommerce_variations .woocommerce_variable_attributes .downloadable_files table{margin:0 0 1em;width:100%}}@media only screen and (max-width:900px){#woocommerce-coupon-data ul.coupon_data_tabs,#woocommerce-product-data .wc-tabs-back,#woocommerce-product-data ul.product_data_tabs{width:10%}#woocommerce-coupon-data .wc-metaboxes-wrapper,#woocommerce-coupon-data .woocommerce_options_panel,#woocommerce-product-data .wc-metaboxes-wrapper,#woocommerce-product-data .woocommerce_options_panel{width:90%}#woocommerce-coupon-data ul.coupon_data_tabs li a,#woocommerce-product-data ul.product_data_tabs li a{position:relative;text-indent:-999px;padding:10px}#woocommerce-coupon-data ul.coupon_data_tabs li a::before,#woocommerce-product-data ul.product_data_tabs li a::before{position:absolute;top:0;left:0;bottom:0;right:0;text-indent:0;text-align:center;line-height:40px;width:100%;height:40px}}@media only screen and (max-width:782px){#wp-excerpt-media-buttons a{font-size:16px;line-height:37px;height:39px;padding:0 15px 0 20px}#wp-excerpt-editor-tools{padding-top:20px;padding-left:15px;overflow:hidden;margin-bottom:-1px}.post-type-product .wp-list-table .is-expanded td:not(.hidden),.post-type-shop_order .wp-list-table .is-expanded td:not(.hidden){overflow:visible}#woocommerce-product-data .checkbox{width:25px}.variations-pagenav{float:none;text-align:center;font-size:18px}.variations-pagenav .displaying-num{font-size:16px}.variations-pagenav a{padding:8px 20px 11px;font-size:18px}.variations-pagenav select{padding:0 20px}.variations-defaults{float:none;text-align:center;margin-top:10px}.post-type-product .wp-list-table .column-thumb{display:none;text-align:right;padding-bottom:0}.post-type-product .wp-list-table .column-thumb::before{display:none!important}.post-type-product .wp-list-table .column-thumb img{max-width:32px}.post-type-product .wp-list-table .toggle-row{top:-28px}.post-type-shop_order .wp-list-table .column-order_status{display:none;text-align:right;padding-bottom:0}.post-type-shop_order .wp-list-table .column-order_status mark{margin:0}.post-type-shop_order .wp-list-table .column-order_status::before{display:none!important}.post-type-shop_order .wp-list-table .column-customer_message,.post-type-shop_order .wp-list-table .column-order_notes{text-align:inherit}.post-type-shop_order .wp-list-table .column-order_notes .note-on{font-size:1.3em;margin:0}.post-type-shop_order .wp-list-table .toggle-row{top:-15px}}@media only screen and (max-width:500px){.woocommerce_options_panel label,.woocommerce_options_panel legend{float:none;width:auto;display:block;margin:0}.woocommerce_options_panel fieldset.form-field,.woocommerce_options_panel p.form-field{padding:5px 20px!important}}.wc-backbone-modal *{box-sizing:border-box}.wc-backbone-modal .wc-backbone-modal-content{position:fixed;background:#fff;z-index:100000;right:50%;top:50%;transform:translate(50%,-50%);width:500px}.wc-backbone-modal .wc-backbone-modal-content article{overflow:auto}.wc-backbone-modal.wc-backbone-modal-shipping-method-settings .wc-backbone-modal-content{width:75%;min-width:500px}.wc-backbone-modal .select2-container{width:100%!important}.wc-backbone-modal-backdrop{position:fixed;top:0;right:0;left:0;bottom:0;min-height:360px;background:#000;opacity:.7;z-index:99900}.wc-backbone-modal-main{padding-bottom:55px}.wc-backbone-modal-main article,.wc-backbone-modal-main header{display:block;position:relative}.wc-backbone-modal-main .wc-backbone-modal-header{height:auto;background:#fcfcfc;padding:1em 1.5em;border-bottom:1px solid #ddd}.wc-backbone-modal-main .wc-backbone-modal-header h1{margin:0;font-size:18px;font-weight:700;line-height:1.5em}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link{cursor:pointer;color:#777;height:54px;width:54px;padding:0;position:absolute;top:0;left:0;text-align:center;border:0;border-right:1px solid #ddd;background-color:transparent;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link::before{font:400 22px/50px dashicons!important;color:#666;display:block;content:'\f335';font-weight:300}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link:focus,.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link:hover{background:#ddd;border-color:#ccc;color:#000}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link:focus{outline:0}.wc-backbone-modal-main article{padding:1.5em}.wc-backbone-modal-main article p{margin:1.5em 0}.wc-backbone-modal-main article p:last-child,.wc-backbone-modal-main footer .inner .button{margin-bottom:0}.wc-backbone-modal-main article p:first-child{margin-top:0}.wc-backbone-modal-main article .pagination{padding:10px 0 0;text-align:center}.wc-backbone-modal-main footer{position:absolute;right:0;left:0;bottom:0;z-index:100;padding:1em 1.5em;background:#fcfcfc;border-top:1px solid #dfdfdf;box-shadow:0 -4px 4px -4px rgba(0,0,0,.1)}.select2-container .select2-selection,.select2-dropdown{border-color:#ddd}.wc-backbone-modal-main footer .inner{float:left;line-height:23px}.select2-drop,.select2-dropdown{z-index:999999!important}.select2-results{line-height:1.5em}.select2-results .select2-results__group,.select2-results .select2-results__option{margin:0;padding:8px}.select2-dropdown--below{box-shadow:0 1px 1px rgba(0,0,0,.1)}.select2-dropdown--above{box-shadow:0 -1px 1px rgba(0,0,0,.1)}.select2-selection__rendered.ui-sortable li{cursor:move}.select2-container .select2-search__field{min-width:150px}.select2-container .select2-selection--single{height:32px}.select2-container .select2-selection--single .select2-selection__rendered{line-height:32px;padding-left:24px}.select2-container .select2-selection--single .select2-selection__arrow{left:3px;height:30px}.select2-container .select2-selection--multiple{min-height:28px;border-radius:0;line-height:1.5}.select2-container .select2-selection--multiple li{margin:0}.select2-container .select2-selection--multiple .select2-selection__choice{padding:2px 6px}.select2-container .select2-selection__clear{color:#999;margin-top:-1px}.select2-container .select2-search--inline .select2-search__field{font-family:inherit;font-size:inherit;font-weight:inherit;padding:3px 0}.woocommerce table.form-table .select2-container{min-width:400px!important}.post-type-shop_order .tablenav .actions{overflow:visible}.post-type-shop_order .tablenav input,.post-type-shop_order .tablenav select{line-height:32px;height:32px}.post-type-shop_order .tablenav .select2-container{float:right;width:200px!important;font-size:14px;vertical-align:middle;margin:1px 1px 4px 6px} \ No newline at end of file diff --git a/assets/css/admin.css b/assets/css/admin.css index 577aea2744f..d905f3823b5 100644 --- a/assets/css/admin.css +++ b/assets/css/admin.css @@ -1,2 +1,2 @@ .select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important}.select2-container--classic .select2-results>.select2-results__options,.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.select2-container--default .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:1px solid #000;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:0 0;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#0073aa;color:#fff}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top,#fff 50%,#eee 100%);background-image:-o-linear-gradient(top,#fff 50%,#eee 100%);background-image:linear-gradient(to bottom,#fff 50%,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #0073aa}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top,#eee 50%,#ccc 100%);background-image:-o-linear-gradient(top,#eee 50%,#ccc 100%);background-image:linear-gradient(to bottom,#eee 50%,#ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:4px 0 0 4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #0073aa}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:0 0;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top,#fff 0,#eee 50%);background-image:-o-linear-gradient(top,#fff 0,#eee 50%);background-image:linear-gradient(to bottom,#fff 0,#eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top,#eee 50%,#fff 100%);background-image:-o-linear-gradient(top,#eee 50%,#fff 100%);background-image:linear-gradient(to bottom,#eee 50%,#fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #0073aa}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #0073aa}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#0073aa} -@charset "UTF-8";.button.wc-reload::after,.woocommerce-help-tip::after{speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased}@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg)}}@-moz-keyframes spin{100%{-moz-transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}.blockUI.blockOverlay::before{height:1em;width:1em;display:block;position:absolute;top:50%;left:50%;margin-left:-.5em;margin-top:-.5em;content:'';-webkit-animation:spin 1s ease-in-out infinite;-moz-animation:spin 1s ease-in-out infinite;animation:spin 1s ease-in-out infinite;background:url(../images/icons/loader.svg) center center;background-size:cover;line-height:1;text-align:center;font-size:2em;color:rgba(0,0,0,.75)}.wc_addons_wrap .addons-featured{max-width:1140px;margin:-1%}.wc_addons_wrap .addons-banner-block-item-icon,.wc_addons_wrap .addons-column-block-item-icon{align-items:center;display:flex;justify-content:center}.wc_addons_wrap .addons-banner-block{background:#fff;box-shadow:0 0 1px rgba(0,0,0,.2);margin:2% 1% 0;max-width:1140px;padding:20px}.wc_addons_wrap .addons-banner-block img{height:62px}.wc_addons_wrap .addons-banner-block p{margin:0 0 20px}.wc_addons_wrap .addons-banner-block-items{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-around;margin:0 -10px}.wc_addons_wrap .addons-banner-block-item{border:1px solid #e6e6e6;border-radius:3px;flex:1 1 200px;margin:10px;max-width:350px;min-width:200px;width:30%}.wc_addons_wrap .addons-banner-block-item-icon{background:#f7f7f7;height:143px}.wc_addons_wrap .addons-banner-block-item-content{display:flex;flex-direction:column;height:184px;justify-content:space-between;padding:24px}.wc_addons_wrap .addons-banner-block-item-content h3{margin-top:0}.wc_addons_wrap .addons-banner-block-item-content p{margin:0 0 auto}.wc_addons_wrap .addons-column-section{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-around}.wc_addons_wrap .addons-column{flex:1 1 200px;margin:0 1%;width:49.5%}.wc_addons_wrap .addons-column-block,.wc_addons_wrap .addons-small-dark-block,.wc_addons_wrap .addons-small-light-block{box-sizing:border-box;box-shadow:0 0 1px rgba(0,0,0,.2);margin:4% 0 0;padding:20px}.wc_addons_wrap .addons-column-block img{max-height:50px;max-width:50px}.wc_addons_wrap .addons-column-block,.wc_addons_wrap .addons-small-light-block{background:#fff}.wc_addons_wrap .addons-column-block-left{float:left}.wc_addons_wrap .addons-column-block-right{float:right}.wc_addons_wrap .addons-column-block-item{display:flex;border-top:2px solid #f9f9f9;flex-direction:row;flex-wrap:wrap;justify-content:space-between;margin:0 -20px;padding:20px}.wc_addons_wrap .addons-column-block-item-icon{background:#f7f7f7;border:1px solid #e6e6e6;height:100px;margin:0 10px 10px 0;width:100px}.wc_addons_wrap .addons-column-block-item-content{display:flex;flex:1 1 200px;flex-wrap:wrap;height:20%;justify-content:space-between;min-width:200px}.wc_addons_wrap .addons-column-block-item-content h2{float:left;margin-top:8px}.wc_addons_wrap .addons-column-block-item-content a{float:right}.wc_addons_wrap .addons-column-block-item-content p{float:left}.wc_addons_wrap .addons-small-dark-block{background-color:#54687d;text-align:center}.wc_addons_wrap .addons-small-dark-items{display:flex;flex-wrap:wrap;justify-content:space-around}.wc_addons_wrap .addons-small-dark-item{margin:0 0 20px}.wc_addons_wrap .addons-small-dark-block h1{color:#fff}.wc_addons_wrap .addons-small-dark-block p{color:#fafafa}.wc_addons_wrap .addons-small-dark-item-icon img{height:30px}.wc_addons_wrap .addons-small-dark-item a{margin:28px auto 0}.wc_addons_wrap .addons-small-light-block{display:flex;flex-wrap:wrap}.wc_addons_wrap .addons-small-light-block h1{margin-top:-12px}.wc_addons_wrap .addons-small-light-block p{margin-top:0}.wc_addons_wrap .addons-small-light-block img{height:225px;margin:0 0 0 -20px}.wc_addons_wrap .addons-small-light-block-content{display:flex;flex:1 1 100px;flex-direction:column;justify-content:space-around}.wc_addons_wrap .addons-small-light-block-buttons{display:flex;justify-content:space-between}.wc_addons_wrap .addons-small-light-block-content a{width:48%}.wc_addons_wrap .addons-button{border-radius:3px;cursor:pointer;display:block;height:37px;line-height:37px;text-align:center;text-decoration:none;width:124px}.wc_addons_wrap .addons-button-solid{background-color:#955a89;color:#fff}.wc_addons_wrap .addons-button-solid:hover{color:#fff;opacity:.8}.wc_addons_wrap .addons-button-outline-green{border:1px solid #73ae39;color:#73ae39}.wc_addons_wrap .addons-button-outline-green:hover{color:#73ae39;opacity:.8}.wc_addons_wrap .addons-button-outline-white{border:1px solid #fff;color:#fff}.wc_addons_wrap .addons-button-outline-white:hover{color:#fff;opacity:.8}.wc_addons_wrap .addons-button-installed{background:#e6e6e6;color:#3c3c3c}.wc_addons_wrap .addons-button-installed:hover{color:#3c3c3c;opacity:.8}@media only screen and (max-width:400px){.wc_addons_wrap .addons-featured{margin:-1% -5%}.wc_addons_wrap .addons-button,.wc_addons_wrap .addons-small-dark-item{width:100%}.wc_addons_wrap .addons-column-block-item-icon{background:0 0;border:none;height:75px;margin:0 10px 10px 0;width:75px}}.wc_addons_wrap .products{overflow:hidden}.wc_addons_wrap .products li{float:left;margin:0 1em 1em 0!important;padding:0;vertical-align:top;width:300px}.wc_addons_wrap .products li a{text-decoration:none;color:inherit;border:1px solid #ddd;display:block;min-height:220px;overflow:hidden;background:#f5f5f5;box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(0,0,0,.1)}.wc_addons_wrap .products li a img{max-width:258px;max-height:24px;padding:17px 20px;display:block;margin:0;background:#fff;border-right:260px solid #fff}.wc_addons_wrap .products li a .price,.wc_addons_wrap .products li a img.extension-thumb+h3{display:none}.wc_addons_wrap .products li a h2,.wc_addons_wrap .products li a h3{margin:0!important;padding:20px!important;background:#fff}.wc_addons_wrap .products li a p{padding:20px!important;margin:0!important;border-top:1px solid #f1f1f1}.wc_addons_wrap .products li a:focus,.wc_addons_wrap .products li a:hover{background-color:#fff}.wc_addons_wrap .storefront{background:url(../images/storefront-bg.jpg) bottom right #f6f6f6;border:1px solid #ddd;padding:20px;overflow:hidden;zoom:1}.wc_addons_wrap .storefront img{width:278px;height:auto;float:left;margin:0 20px 0 0;box-shadow:0 1px 6px rgba(0,0,0,.1)}.wc_addons_wrap .storefront p{max-width:750px}.woocommerce-BlankState a.button-primary,.woocommerce-BlankState button.button-primary,.woocommerce-message a.button-primary,.woocommerce-message button.button-primary{background:#bb77ae;border-color:#a36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;color:#fff;text-shadow:0 -1px 1px #a36597,1px 0 1px #a36597,0 1px 1px #a36597,-1px 0 1px #a36597;display:inline-block}.woocommerce-BlankState a.button-primary:active,.woocommerce-BlankState a.button-primary:focus,.woocommerce-BlankState a.button-primary:hover,.woocommerce-BlankState button.button-primary:active,.woocommerce-BlankState button.button-primary:focus,.woocommerce-BlankState button.button-primary:hover,.woocommerce-message a.button-primary:active,.woocommerce-message a.button-primary:focus,.woocommerce-message a.button-primary:hover,.woocommerce-message button.button-primary:active,.woocommerce-message button.button-primary:focus,.woocommerce-message button.button-primary:hover{background:#a36597;border-color:#a36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597}.woocommerce-message{position:relative;border-left-color:#cc99c2!important;overflow:hidden}.woocommerce-message a.docs,.woocommerce-message a.skip{text-decoration:none!important}.woocommerce-message a.woocommerce-message-close{position:absolute;top:10px;right:10px;padding:10px 15px 10px 21px;font-size:13px;line-height:1.23076923;text-decoration:none}.woocommerce-message a.woocommerce-message-close::before{position:absolute;top:8px;left:0;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.woocommerce-message .twitter-share-button{margin-top:-3px;margin-left:3px;vertical-align:middle}#variable_product_options #message,#variable_product_options .notice{margin:10px}.clear{clear:both}#woocommerce-fields-bulk.inline-edit-col label,#woocommerce-fields.inline-edit-col{clear:left}.wrap.woocommerce div.error,.wrap.woocommerce div.updated{margin-top:10px}mark.amount{background:0 0;color:inherit}.simplify-commerce-banner{overflow:hidden}.simplify-commerce-banner img{float:right;padding:15px 0;margin-left:1em;width:200px}.woocommerce-help-tip{color:#666;display:inline-block;font-size:1.1em;font-style:normal;height:16px;line-height:16px;position:relative;vertical-align:middle;width:16px}.woocommerce-help-tip::after{font-family:Dashicons;font-weight:400;line-height:1;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";cursor:help}h2 .woocommerce-help-tip{margin-top:-5px;margin-left:.25em}table.wc_status_table{margin-bottom:1em}table.wc_status_table h2{font-size:14px;margin:0}table.wc_status_table tr:nth-child(2n) td,table.wc_status_table tr:nth-child(2n) th{background:#fcfcfc}table.wc_status_table th{font-weight:700;padding:9px}table.wc_status_table td:first-child{width:33%}table.wc_status_table td.help{width:1em}table.wc_status_table td{padding:9px;font-size:1.1em}table.wc_status_table td mark{background:0 0}table.wc_status_table td mark.yes{color:#7ad03a}table.wc_status_table td mark.no{color:#999}table.wc_status_table td mark.error{color:#a00}table.wc_status_table td ul{margin:0}table.wc_status_table .help_tip{cursor:help}#debug-report{display:none;margin:10px 0;padding:0;position:relative}#debug-report textarea{font-family:monospace;width:100%;margin:0;height:300px;padding:20px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;resize:none;font-size:12px;line-height:20px;outline:0}.wp-list-table.logs .log-level{display:inline;padding:.2em .6em .3em;font-size:80%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.2em}.wp-list-table.logs .log-level:empty{display:none}.wp-list-table.logs .log-level--alert,.wp-list-table.logs .log-level--emergency{background-color:#ff4136}.wp-list-table.logs .log-level--critical,.wp-list-table.logs .log-level--error{background-color:#ff851b}.wp-list-table.logs .log-level--notice,.wp-list-table.logs .log-level--warning{color:#222;background-color:#ffdc00}.wp-list-table.logs .log-level--info{background-color:#0074d9}.wp-list-table.logs .log-level--debug{background-color:#3d9970}@media screen and (min-width:783px){.wp-list-table.logs .column-timestamp{width:18%}.wp-list-table.logs .column-level{width:14%}.wp-list-table.logs .column-source{width:15%}}#log-viewer-select{padding:10px 0 8px;line-height:28px}#log-viewer-select h2 a{vertical-align:middle}#log-viewer{background:#fff;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);padding:5px 20px}#log-viewer pre{font-family:monospace;white-space:pre-wrap}.inline-edit-product.quick-edit-row .inline-edit-col-center,.inline-edit-product.quick-edit-row .inline-edit-col-right{float:right!important}#woocommerce-fields.inline-edit-col label.featured,#woocommerce-fields.inline-edit-col label.manage_stock{margin-left:10px}#woocommerce-fields.inline-edit-col .dimensions div{display:block;margin:.2em 0}#woocommerce-fields.inline-edit-col .dimensions div span.title{display:block;float:left;width:5em}#woocommerce-fields.inline-edit-col .dimensions div span.input-text-wrap{display:block;margin-left:5em}#woocommerce-fields.inline-edit-col .text{box-sizing:border-box;width:99%;float:left;margin:1px 1% 1px 1px}#woocommerce-fields.inline-edit-col .height,#woocommerce-fields.inline-edit-col .length,#woocommerce-fields.inline-edit-col .width{width:32.33%}#woocommerce-fields.inline-edit-col .height{margin-right:0}#woocommerce-fields-bulk.inline-edit-col .inline-edit-group label{clear:none;width:49%;margin:.2em 0}#woocommerce-fields-bulk.inline-edit-col .inline-edit-group.dimensions label{width:75%;max-width:75%}#woocommerce-fields-bulk.inline-edit-col .length,#woocommerce-fields-bulk.inline-edit-col .regular_price,#woocommerce-fields-bulk.inline-edit-col .sale_price,#woocommerce-fields-bulk.inline-edit-col .stock,#woocommerce-fields-bulk.inline-edit-col .weight{box-sizing:border-box;width:100%;margin-left:4.4em}#woocommerce-fields-bulk.inline-edit-col .height,#woocommerce-fields-bulk.inline-edit-col .length,#woocommerce-fields-bulk.inline-edit-col .width{box-sizing:border-box;width:25%}.column-coupon_code{line-height:2.25em}.column-coupon_code,ul.wc_coupon_list{margin:0;overflow:hidden;zoom:1;clear:both}ul.wc_coupon_list li{margin:0}ul.wc_coupon_list li.code{display:inline-block}ul.wc_coupon_list li.code::after{content:', '}ul.wc_coupon_list li.code:last-of-type::after{display:none}ul.wc_coupon_list li.code .tips{cursor:pointer}ul.wc_coupon_list_block{margin:0;padding-bottom:2px}ul.wc_coupon_list_block li{border-top:1px solid #fff;border-bottom:1px solid #ccc;line-height:2.5em;margin:0;padding:.5em 0}ul.wc_coupon_list_block li:first-child{border-top:0;padding-top:0}ul.wc_coupon_list_block li:last-child{border-bottom:0;padding-bottom:0}.button.wc-reload{text-indent:-9999px;position:relative;padding:0;height:28px;width:28px!important;display:inline-block}.button.wc-reload::after{font-family:Dashicons;font-weight:400;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";line-height:28px}#order_data h2,#order_data p.order_number{font-family:HelveticaNeue-Light,'Helvetica Neue Light','Helvetica Neue',sans-serif;font-weight:400}#woocommerce-order-data .handlediv,#woocommerce-order-data .hndle{display:none}#woocommerce-order-data .inside{display:block!important}#order_data{padding:23px 24px 12px}#order_data h2{margin:0;font-size:21px;line-height:1.2;text-shadow:1px 1px 1px #fff;padding:0}#order_data h3{font-size:14px}#order_data h3,#order_data h4{color:#333;margin:1.33em 0 0}#order_data p{color:#777}#order_data p.order_number{margin:0;line-height:1.6em;font-size:16px}#order_data .order_data_column_container{clear:both}#order_data .order_data_column{width:32%;padding:0 2% 0 0;float:left}#order_data .order_data_column>h3 span{display:block}#order_data .order_data_column:last-child{padding-right:0}#order_data .order_data_column p{padding:0!important}#order_data .order_data_column .address strong{display:block}#order_data .order_data_column .form-field{float:left;clear:left;width:48%;padding:0;margin:9px 0 0}#order_data .order_data_column .form-field label{display:block;padding:0 0 3px}#order_data .order_data_column .form-field input,#order_data .order_data_column .form-field select,#order_data .order_data_column .form-field textarea{width:100%}#order_data .order_data_column .form-field .select2-container{width:100%!important}#order_data .order_data_column .form-field .date-picker{width:50%}#order_data .order_data_column .form-field .hour,#order_data .order_data_column .form-field .minute{width:3.5em}#order_data .order_data_column .form-field small{display:block;margin:5px 0 0;color:#999}#order_data .order_data_column ._billing_address_2_field,#order_data .order_data_column ._billing_last_name_field,#order_data .order_data_column ._billing_phone_field,#order_data .order_data_column ._billing_postcode_field,#order_data .order_data_column ._billing_state_field,#order_data .order_data_column ._shipping_address_2_field,#order_data .order_data_column ._shipping_last_name_field,#order_data .order_data_column ._shipping_postcode_field,#order_data .order_data_column ._shipping_state_field,#order_data .order_data_column .form-field.last{float:right;clear:right}#order_data .order_data_column ._billing_company_field,#order_data .order_data_column ._shipping_company_field,#order_data .order_data_column ._transaction_id_field,#order_data .order_data_column .form-field-wide{width:100%;clear:both}#order_data .order_data_column ._billing_company_field .wc-customer-search,#order_data .order_data_column ._billing_company_field .wc-enhanced-select,#order_data .order_data_column ._billing_company_field input,#order_data .order_data_column ._billing_company_field select,#order_data .order_data_column ._billing_company_field textarea,#order_data .order_data_column ._shipping_company_field .wc-customer-search,#order_data .order_data_column ._shipping_company_field .wc-enhanced-select,#order_data .order_data_column ._shipping_company_field input,#order_data .order_data_column ._shipping_company_field select,#order_data .order_data_column ._shipping_company_field textarea,#order_data .order_data_column ._transaction_id_field .wc-customer-search,#order_data .order_data_column ._transaction_id_field .wc-enhanced-select,#order_data .order_data_column ._transaction_id_field input,#order_data .order_data_column ._transaction_id_field select,#order_data .order_data_column ._transaction_id_field textarea,#order_data .order_data_column .form-field-wide .wc-customer-search,#order_data .order_data_column .form-field-wide .wc-enhanced-select,#order_data .order_data_column .form-field-wide input,#order_data .order_data_column .form-field-wide select,#order_data .order_data_column .form-field-wide textarea{width:100%}#order_data .order_data_column p.none_set{color:#999}#order_data .order_data_column div.edit_address{display:none;zoom:1;padding-right:1px}#order_data .order_data_column .wc-customer-user label a,#order_data .order_data_column .wc-order-status label a{float:right}#order_data .order_data_column a.edit_address{width:14px;height:0;padding:14px 0 0;margin:0 0 0 6px;overflow:hidden;position:relative;color:#999;border:0;float:right}#order_data .order_data_column a.edit_address:focus,#order_data .order_data_column a.edit_address:hover{color:#000}#order_data .order_data_column a.edit_address::after{position:absolute;top:0;left:0;text-align:center;vertical-align:top;line-height:14px;font-size:14px;font-weight:400;-webkit-font-smoothing:antialiased;font-family:Dashicons;content:'\f464'}#order_data .order_data_column .billing-same-as-shipping,#order_data .order_data_column .load_customer_billing,#order_data .order_data_column .load_customer_shipping{font-size:13px;display:inline-block;font-weight:400}#order_data .order_data_column .load_customer_shipping{margin-right:.3em}.order_actions{margin:0;overflow:hidden;zoom:1}.order_actions li{border-top:1px solid #fff;border-bottom:1px solid #ddd;padding:6px 0;margin:0;line-height:1.6em;float:left;width:50%;text-align:center}.order_actions li a{float:none;text-align:center;text-decoration:underline}.order_actions li.wide{width:auto;float:none;clear:both;padding:6px;text-align:left;overflow:hidden}.order_actions li #delete-action{line-height:25px;vertical-align:middle;text-align:left;float:left}.order_actions li .save_order{float:right}.order_actions li#actions{overflow:hidden}.order_actions li#actions .button{width:24px;box-sizing:border-box;float:right}.order_actions li#actions select{width:225px;box-sizing:border-box;float:left}#woocommerce-order-items .inside{margin:0;padding:0;background:#fefefe}#woocommerce-order-items .wc-order-data-row{border-bottom:1px solid #dfdfdf;padding:1.5em 2em;background:#f8f8f8;line-height:2em;text-align:right}#woocommerce-order-items .wc-order-data-row::after,#woocommerce-order-items .wc-order-data-row::before{content:' ';display:table}#woocommerce-order-items .wc-order-data-row::after{clear:both}#woocommerce-order-items .wc-order-data-row p{margin:0;line-height:2em}#woocommerce-order-items .wc-order-data-row .wc-used-coupons{text-align:left}#woocommerce-order-items .wc-order-data-row .wc-used-coupons .tips{display:inline-block}#woocommerce-order-items .wc-used-coupons{float:left;width:50%}#woocommerce-order-items .wc-order-totals{float:right;width:50%;margin:0;padding:0;text-align:right}#woocommerce-order-items .wc-order-totals .amount{font-weight:700}#woocommerce-order-items .wc-order-totals .label{vertical-align:top}#woocommerce-order-items .wc-order-totals .total{font-size:1em!important;width:10em;margin:0 0 0 .5em;box-sizing:border-box}#woocommerce-order-items .wc-order-totals .total input[type=text]{width:96%;float:right}#woocommerce-order-items .wc-order-totals .refunded-total{color:#a00}#woocommerce-order-items .refund-actions{margin-top:5px;padding-top:12px;border-top:1px solid #dfdfdf}#woocommerce-order-items .refund-actions .button{float:right;margin-left:4px}#woocommerce-order-items .refund-actions .cancel-action,#woocommerce-order-items .wc-order-item-bulk-edit .cancel-action{float:left;margin-left:0}#woocommerce-order-items .add_meta{margin-left:0!important}#woocommerce-order-items h3 small{color:#999}#woocommerce-order-items .amount{white-space:nowrap}#woocommerce-order-items .add-items .description{margin-right:10px}#woocommerce-order-items .add-items .button{float:left;margin-right:.25em}#woocommerce-order-items .add-items .button-primary{float:none;margin-right:0}#woocommerce-order-items .inside{display:block!important}#woocommerce-order-items .handlediv,#woocommerce-order-items .hndle{display:none}#woocommerce-order-items .woocommerce_order_items_wrapper{margin:0;overflow-x:auto}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items{width:100%;background:#fff}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th{text-align:left;padding:1em;font-weight:400;color:#999;background:#f8f8f8;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th.sortable{cursor:pointer}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th:last-child{padding-right:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th:first-child{padding-left:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th .wc-arrow{float:right;position:relative;margin-right:-1em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td{padding:1.5em 1em 1em;text-align:left;line-height:1.5em;vertical-align:top;border-bottom:1px solid #f8f8f8}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td textarea{width:100%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td select{width:50%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td textarea{font-size:14px;padding:4px;color:#555}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th:last-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td:last-child{padding-right:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td:first-child{padding-left:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr td{cursor:pointer}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr.selected{background:#f5ebf3}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr.selected td{border-color:#e6cce1;opacity:.8}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr:last-child td{border-bottom:1px solid #dfdfdf}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr:first-child td{border-top:8px solid #f8f8f8}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody#order_line_items tr:first-child td{border-top:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb{text-align:left;width:38px;padding-bottom:1.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb .wc-order-item-thumbnail{width:38px;height:38px;border:2px solid #e8e8e8;background:#f8f8f8;color:#ccc;position:relative;font-size:21px;display:block;text-align:center}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb .wc-order-item-thumbnail::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;height:100%;text-align:center;content:"";width:38px;line-height:38px;display:block}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb .wc-order-item-thumbnail img{width:100%;height:100%;margin:0;padding:0;position:relative}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.name .wc-order-item-sku,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.name .wc-order-item-variation{display:block;margin-top:.5em;font-size:.92em!important;color:#888}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item{min-width:200px}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .center,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .variation-id{text-align:center}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class{text-align:right}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class label{white-space:nowrap;color:#999;font-size:.833em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class label input{display:inline}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class input{width:70px;vertical-align:middle;text-align:right}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class select{width:85px;height:26px;vertical-align:middle;font-size:1em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input{display:inline-block;background:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);margin:1px 0;min-width:80px;overflow:hidden;line-height:1em;text-align:right}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input{width:100%;box-sizing:border-box}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input label{font-size:.75em;padding:4px 6px 0;color:#555;display:block}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input input{width:100%;box-sizing:border-box;border:0;box-shadow:none;margin:0;padding:0 6px 4px;color:#555;background:0 0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input input::-webkit-input-placeholder{color:#ddd}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input:first-child{border-bottom:1px dashed #ddd;background:#fff}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input:first-child label{color:#ccc}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .view{white-space:nowrap}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .edit{text-align:left}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class small.times{font-size:.92em!important;color:#888}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-taxes{margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-taxes label{display:block}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-discount{display:block;margin-top:.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class small.times{margin-right:.25em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity{text-align:center}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity input{text-align:center;width:50px}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items span.subtotal{opacity:.5}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.tax_class,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.tax_class{text-align:left}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .calculated{border-color:#ae8ca2;border-style:dotted}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta{width:100%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta{margin:.5em 0 0;font-size:.92em!important;color:#888}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.fee .thumb div::before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.refund .thumb div::before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .thumb div::before{color:#ccc;top:0;left:0;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-align:center;font-family:WooCommerce}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr th,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr th{border:0;padding:0 4px .5em 0;line-height:1.5em;width:20%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td{padding:0 4px .5em 0;border:0;line-height:1.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td input{width:100%;margin:0;position:relative;border-bottom:0;box-shadow:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .refund_by,ul.order_notes li p.meta .exact-date{border-bottom:1px dotted #999}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td textarea{width:100%;height:4em;margin:0;box-shadow:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td input:focus+textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td input:focus+textarea{border-top-color:#999}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td p,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td p{margin:0 0 .5em;line-height:1.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td p:last-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td p:last-child{margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.fee .thumb div{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.5em;line-height:1em;vertical-align:middle;margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.fee .thumb div::before{line-height:1;margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.refund .thumb div{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.5em;line-height:1em;vertical-align:middle;margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.refund .thumb div::before{line-height:1;margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .thumb div{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.5em;line-height:1em;vertical-align:middle;margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .thumb div::before{line-height:1;margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .shipping_method,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .shipping_method_name{width:100%;margin:0 0 .5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax{white-space:nowrap}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;float:right;font-size:14px;visibility:hidden;margin:3px -18px 0 0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax::before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";color:#999}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax:hover::before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax:hover::before{color:#a00}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax:hover .delete-order-tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax:hover .delete-order-tax{visibility:visible}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items small.refunded{display:block;color:#a00;white-space:nowrap;margin-top:.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items small.refunded::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-indent:0;width:100%;height:100%;text-align:center;content:"";position:relative;top:auto;left:auto;margin:-1px 4px 0 0;vertical-align:middle;line-height:1em}#woocommerce-order-items .wc-order-edit-line-item{padding-left:0}#woocommerce-order-items .wc-order-edit-line-item-actions{width:44px;text-align:right;padding-left:0;vertical-align:middle}#woocommerce-order-items .wc-order-edit-line-item-actions a{color:#ccc;display:inline-block;cursor:pointer;padding:0 0 .5em;margin:0 0 0 12px;vertical-align:middle;text-decoration:none;line-height:16px;width:16px;overflow:hidden}#woocommerce-order-items .wc-order-edit-line-item-actions a::before{margin:0;padding:0;font-size:16px;width:16px;height:16px}#woocommerce-order-items .wc-order-edit-line-item-actions .delete-order-item::before,#woocommerce-order-items .wc-order-edit-line-item-actions .delete_refund::before,#woocommerce-order-items .wc-order-edit-line-item-actions .edit-order-item::before{font-family:Dashicons;-webkit-font-smoothing:antialiased;top:0;left:0;width:100%;height:100%;margin:0;text-align:center;position:relative;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;text-indent:0}#woocommerce-order-items .wc-order-edit-line-item-actions a:hover::before{color:#999}#woocommerce-order-items .wc-order-edit-line-item-actions a:first-child{margin-left:0}#woocommerce-order-items .wc-order-edit-line-item-actions .edit-order-item::before{content:""}#woocommerce-order-items .wc-order-edit-line-item-actions .delete-order-item::before,#woocommerce-order-items .wc-order-edit-line-item-actions .delete_refund::before{content:""}#woocommerce-order-items .wc-order-edit-line-item-actions .delete-order-item:hover::before,#woocommerce-order-items .wc-order-edit-line-item-actions .delete_refund:hover::before{color:#a00}#woocommerce-order-items tbody tr .wc-order-edit-line-item-actions{visibility:hidden}#woocommerce-order-items tbody tr:hover .wc-order-edit-line-item-actions{visibility:visible}#woocommerce-order-items .wc-order-totals .wc-order-edit-line-item-actions{width:1.5em;visibility:visible!important}#woocommerce-order-items .wc-order-totals .wc-order-edit-line-item-actions a{padding:0}#woocommerce-order-downloads .buttons{float:left;padding:0;margin:0;vertical-align:top}#woocommerce-order-downloads .buttons .add_item_id,#woocommerce-order-downloads .buttons .select2-container{width:400px!important;margin-right:9px;vertical-align:top;float:left}#woocommerce-order-downloads .buttons button{margin:2px 0 0}#woocommerce-order-downloads h3 small{color:#999}#poststuff #woocommerce-order-actions .inside{margin:0;padding:0}#poststuff #woocommerce-order-actions .inside ul.order_actions li{padding:6px 10px;box-sizing:border-box}#poststuff #woocommerce-order-actions .inside ul.order_actions li:last-child{border-bottom:0}#poststuff #woocommerce-order-notes .inside{margin:0;padding:0}#poststuff #woocommerce-order-notes .inside ul.order_notes li{padding:0 10px}#woocommerce_customers p.search-box{margin:6px 0 4px;float:left}#woocommerce_customers .tablenav{float:right;clear:none}#woocommerce-product-images .inside #product_images_container ul::after,.woocommerce_variable_attributes .data::after{clear:both}.widefat.customers td{vertical-align:middle;padding:4px 7px}.widefat .column-order_title{width:15%}.widefat .column-order_title time{display:block;color:#999;margin:3px 0}.widefat .column-orders,.widefat .column-paying,.widefat .column-spent{text-align:center;width:8%}.widefat .column-last_order{width:11%}.widefat .column-order_actions,.widefat .column-user_actions,.widefat .column-wc_actions{width:110px}.widefat .column-order_actions a.button,.widefat .column-user_actions a.button,.widefat .column-wc_actions a.button{float:left;margin:0 4px 2px 0;cursor:pointer;padding:3px 4px;height:auto}.widefat .column-order_actions a.button img,.widefat .column-user_actions a.button img,.widefat .column-wc_actions a.button img{display:block;width:12px;height:auto}.widefat small.meta{display:block;color:#999;font-size:inherit;margin:3px 0}.widefat .column-order_date,.widefat .column-order_total{width:9%}.widefat .column-order_status{width:45px;text-align:center}.widefat .column-order_status mark{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;background:0 0;font-size:1.4em;margin:0 auto}.widefat .column-order_status mark.cancelled::after,.widefat .column-order_status mark.completed::after,.widefat .column-order_status mark.failed::after,.widefat .column-order_status mark.on-hold::after,.widefat .column-order_status mark.pending::after,.widefat .column-order_status mark.processing::after,.widefat .column-order_status mark.refunded::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center}.column-customer_message .note-on::after,.column-order_notes .note-on::after{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;top:0;left:0;text-align:center;line-height:16px;font-family:WooCommerce}.widefat .column-order_status mark.pending::after{content:'\e012';color:#ffba00}.widefat .column-order_status mark.completed::after{content:'\e015';color:#2ea2cc}.widefat .column-order_status mark.on-hold::after{content:'\e033';color:#999}.widefat .column-order_status mark.failed::after{content:'\e016';color:#d0c21f}.widefat .column-order_status mark.cancelled::after{content:'\e013';color:#a00}.widefat .column-order_status mark.processing::after{content:'\e011';color:#73a724}.widefat .column-order_status mark.refunded::after{content:'\e014';color:#999}.widefat td.column-order_status{padding-top:9px}.column-customer_message .note-on{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto;color:#999}.column-customer_message .note-on::after{margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}.column-order_notes .note-on{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto;color:#999}.column-order_notes .note-on::after{margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}.order_actions .complete,.order_actions .processing,.order_actions .view{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.order_actions .processing::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";line-height:1.85}.order_actions .complete::after,.order_actions .view::after{font-family:Dashicons;text-indent:0;position:absolute;width:100%;height:100%;left:0;line-height:1.85;margin:0;text-align:center;font-weight:400;top:0;speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased}.order_actions .complete::after{content:""}.order_actions .view::after{content:""}.user_actions .edit,.user_actions .link,.user_actions .refresh,.user_actions .view{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.user_actions .edit::after,.user_actions .link::after,.user_actions .refresh::after,.user_actions .view::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";line-height:1.85}.user_actions .edit::after{font-family:Dashicons;content:'\f464'}.user_actions .link::after{content:'\e00d'}.user_actions .view::after{content:'\e010'}.user_actions .refresh::after{content:'\e031'}.attributes-table td,.attributes-table th{width:15%;vertical-align:top}.attributes-table .attribute-terms{width:32%}.attributes-table .attribute-actions{width:2em}.attributes-table .attribute-actions .configure-terms{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.attributes-table .attribute-actions .configure-terms::after{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";font-family:Dashicons;line-height:1.85}ul.order_notes{padding:2px 0 0}ul.order_notes li .note_content{padding:10px;background:#efefef;position:relative}ul.order_notes li .note_content p{margin:0;padding:0;word-wrap:break-word}ul.order_notes li p.meta{padding:10px;color:#999;margin:0;font-size:11px}ul.order_notes li a.delete_note{color:#a00}table.wp-list-table .row-actions,table.wp-list-table span.na{color:#999}ul.order_notes li .note_content::after{content:'';display:block;position:absolute;bottom:-10px;left:20px;width:0;height:0;border-width:10px 10px 0 0;border-style:solid;border-color:#efefef transparent}ul.order_notes li.customer-note .note_content{background:#a7cedc}ul.order_notes li.customer-note .note_content::after{border-color:#a7cedc transparent}ul.order_notes li.system-note .note_content{background:#d7cad2}ul.order_notes li.system-note .note_content::after{border-color:#d7cad2 transparent}.add_note{border-top:1px solid #ddd;padding:10px 10px 0}.add_note h4{margin-top:5px!important}.add_note #add_order_note{width:100%;height:50px}table.wp-list-table .column-thumb{width:52px;text-align:center;white-space:nowrap}table.wp-list-table .column-name{width:22%}table.wp-list-table .column-product_cat,table.wp-list-table .column-product_tag{width:11%!important}table.wp-list-table .column-featured,table.wp-list-table .column-product_type{width:48px;text-align:left!important}table.wp-list-table .column-customer_message,table.wp-list-table .column-order_notes{width:48px;text-align:center}table.wp-list-table .column-customer_message img,table.wp-list-table .column-order_notes img{margin:0 auto;padding-top:0!important}table.wp-list-table .manage-column.column-featured img,table.wp-list-table .manage-column.column-product_type img{padding-left:2px}table.wp-list-table .column-price .woocommerce-price-suffix{display:none}table.wp-list-table img{margin:1px 2px}table.wp-list-table td.column-thumb img{margin:0;width:auto;height:auto;max-width:40px;max-height:40px;vertical-align:middle}table.wp-list-table .column-is_in_stock{text-align:left!important}table.wp-list-table span.wc-featured,table.wp-list-table span.wc-image,table.wp-list-table span.wc-type{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto}table.wp-list-table span.wc-featured::before,table.wp-list-table span.wc-image::before,table.wp-list-table span.wc-type::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:""}table.wp-list-table span.wc-featured::before{content:'\f155'}table.wp-list-table span.wc-featured.not-featured::before{content:'\f154'}table.wp-list-table td.column-featured span.wc-featured{font-size:1.6em;cursor:pointer}table.wp-list-table span.wc-type::before{font-family:WooCommerce;content:'\e006'}table.wp-list-table span.product-type{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.6em;margin:0 auto}table.wp-list-table span.product-type::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:""}table.wp-list-table span.product-type.grouped::before{content:'\e002'}table.wp-list-table span.product-type.external::before{content:'\e034'}table.wp-list-table span.product-type.variable::before{content:'\e003'}table.wp-list-table span.product-type.downloadable::before{content:'\e001'}table.wp-list-table span.product-type.virtual::before{content:'\e000'}table.wp-list-table mark.instock{font-weight:700;color:#7ad03a;background:0 0;line-height:1}table.wp-list-table mark.outofstock{font-weight:700;color:#a44;background:0 0;line-height:1}table.wp-list-table .notes_head,table.wp-list-table .order-notes_head,table.wp-list-table .status_head{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto}table.wp-list-table .notes_head::after,table.wp-list-table .order-notes_head::after,table.wp-list-table .status_head::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center}table.wc_emails .wc-email-settings-table-name,table.wc_emails td.name,table.wc_gateways .wc-email-settings-table-name,table.wc_gateways td.name,table.wc_shipping .wc-email-settings-table-name,table.wc_shipping td.name{font-weight:700}table.wp-list-table .order-notes_head::after{content:'\e028'}table.wp-list-table .notes_head::after{content:'\e026'}table.wp-list-table .status_head::after{content:'\e011'}table.wp-list-table .column-order_items{width:12%}table.wp-list-table .column-order_items table.order_items{width:100%;margin:3px 0 0;padding:0;display:none}table.wp-list-table .column-order_items table.order_items td{border:0;margin:0;padding:0 0 3px}table.wp-list-table .column-order_items table.order_items td.qty{color:#999;padding-right:6px;text-align:left}mark.notice{background:#fff;color:#a00;margin:0 0 0 10px}a.export_rates,a.import_rates{float:right;margin-left:9px;margin-top:-2px;margin-bottom:0}#rates-search{float:right}#rates-search input.wc-tax-rates-search-field{padding:4px 8px;font-size:1.2em}#rates-pagination{float:right;margin-right:.5em}#rates-pagination .tablenav{margin:0}table.wc_input_table,table.wc_tax_rates{width:100%}table.wc_input_table span.tips,table.wc_tax_rates span.tips{color:#2ea2cc}table.wc_input_table th,table.wc_tax_rates th{white-space:nowrap;padding:10px}table.wc_input_table td,table.wc_tax_rates td{padding:0;border-right:1px solid #dfdfdf;border-bottom:1px solid #dfdfdf;border-top:0;background:#fff;cursor:default}table.wc_input_table td input[type=text],table.wc_input_table td input[type=number],table.wc_tax_rates td input[type=text],table.wc_tax_rates td input[type=number]{width:100%;padding:8px 10px;margin:0;border:0;outline:0;background:0 0}table.wc_input_table td input[type=text]:focus,table.wc_input_table td input[type=number]:focus,table.wc_tax_rates td input[type=text]:focus,table.wc_tax_rates td input[type=number]:focus{outline:0;box-shadow:none}table.wc_input_table td.apply_to_shipping,table.wc_input_table td.compound,table.wc_tax_rates td.apply_to_shipping,table.wc_tax_rates td.compound{padding:5px 7px;vertical-align:middle}table.wc_input_table td.apply_to_shipping input,table.wc_input_table td.compound input,table.wc_tax_rates td.apply_to_shipping input,table.wc_tax_rates td.compound input{width:auto;padding:0}table.wc_input_table td:last-child,table.wc_tax_rates td:last-child{border-right:0}table.wc_input_table tr.current td,table.wc_tax_rates tr.current td{background-color:#fefbcc}table.wc_input_table .cost,table.wc_input_table .cost input,table.wc_input_table .item_cost,table.wc_input_table .item_cost input,table.wc_tax_rates .cost,table.wc_tax_rates .cost input,table.wc_tax_rates .item_cost,table.wc_tax_rates .item_cost input{text-align:right}table.wc_input_table th.sort,table.wc_tax_rates th.sort{width:17px;padding:0 4px}table.wc_input_table td.sort,table.wc_tax_rates td.sort{padding:0 4px}table.wc_input_table .ui-sortable:not(.ui-sortable-disabled) td.sort,table.wc_tax_rates .ui-sortable:not(.ui-sortable-disabled) td.sort{cursor:move;font-size:15px;background:#f9f9f9;text-align:center;vertical-align:middle}table.wc_input_table .ui-sortable:not(.ui-sortable-disabled) td.sort::before,table.wc_tax_rates .ui-sortable:not(.ui-sortable-disabled) td.sort::before{content:'\f333';font-family:Dashicons;text-align:center;line-height:1;color:#999;display:block;width:17px;float:left;height:100%}table.wc_input_table .ui-sortable:not(.ui-sortable-disabled) td.sort:hover::before,table.wc_tax_rates .ui-sortable:not(.ui-sortable-disabled) td.sort:hover::before{color:#333}table.wc_input_table .button,table.wc_tax_rates .button{float:left;margin-right:5px}table.wc_input_table .export,table.wc_input_table .import,table.wc_tax_rates .export,table.wc_tax_rates .import{float:right;margin-right:0;margin-left:5px}table.wc_input_table span.tips,table.wc_tax_rates span.tips{padding:0 3px}table.wc_input_table .pagination,table.wc_tax_rates .pagination{float:right}table.wc_input_table .pagination .button,table.wc_tax_rates .pagination .button{margin-left:5px;margin-right:0}table.wc_input_table .pagination .current,table.wc_tax_rates .pagination .current{background:#bbb;text-shadow:none}table.wc_input_table tr:last-child td,table.wc_tax_rates tr:last-child td{border-bottom:0}table.wc_emails,table.wc_gateways,table.wc_shipping{position:relative}table.wc_emails td,table.wc_gateways td,table.wc_shipping td{vertical-align:middle;padding:7px;line-height:2em}table.wc_emails tr:nth-child(odd) td,table.wc_gateways tr:nth-child(odd) td,table.wc_shipping tr:nth-child(odd) td{background:#f9f9f9}table.wc_emails th,table.wc_gateways th,table.wc_shipping th{padding:9px 7px!important;vertical-align:middle}table.wc_emails .settings,table.wc_gateways .settings,table.wc_shipping .settings{text-align:right}table.wc_emails .default,table.wc_emails .radio,table.wc_emails .status,table.wc_gateways .default,table.wc_gateways .radio,table.wc_gateways .status,table.wc_shipping .default,table.wc_shipping .radio,table.wc_shipping .status{text-align:center}table.wc_emails .default .tips,table.wc_emails .radio .tips,table.wc_emails .status .tips,table.wc_gateways .default .tips,table.wc_gateways .radio .tips,table.wc_gateways .status .tips,table.wc_shipping .default .tips,table.wc_shipping .radio .tips,table.wc_shipping .status .tips{margin:0 auto}table.wc_emails .default input,table.wc_emails .radio input,table.wc_emails .status input,table.wc_gateways .default input,table.wc_gateways .radio input,table.wc_gateways .status input,table.wc_shipping .default input,table.wc_shipping .radio input,table.wc_shipping .status input{margin:0}table.wc_emails th.sort,table.wc_gateways th.sort,table.wc_shipping th.sort{width:28px;padding:0}table.wc_emails td.sort,table.wc_gateways td.sort,table.wc_shipping td.sort{padding:0 7px;cursor:move;font-size:15px;text-align:center;vertical-align:middle}table.wc_emails td.sort::before,table.wc_gateways td.sort::before,table.wc_shipping td.sort::before{content:'\f333';font-family:Dashicons;text-align:center;line-height:1;color:#999;display:block;width:17px;float:left;height:100%}table.wc_emails .wc-email-settings-table-name span,table.wc_gateways .wc-email-settings-table-name span,table.wc_shipping .wc-email-settings-table-name span{font-weight:400;color:#999;margin:0 0 0 4px!important}table.wc_emails .wc-email-settings-table-status,table.wc_gateways .wc-email-settings-table-status,table.wc_shipping .wc-email-settings-table-status{text-align:center;width:1em}table.wc_emails .wc-email-settings-table-status .tips,table.wc_gateways .wc-email-settings-table-status .tips,table.wc_shipping .wc-email-settings-table-status .tips{margin:0 auto}table.wc_emails .wc-email-settings-table-actions a,table.wc_gateways .wc-email-settings-table-actions a,table.wc_shipping .wc-email-settings-table-actions a{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}table.wc_emails .wc-email-settings-table-actions a::after,table.wc_gateways .wc-email-settings-table-actions a::after,table.wc_shipping .wc-email-settings-table-actions a::after{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";font-family:Dashicons;line-height:1.85}.wc-shipping-zone-settings th{padding:24px 24px 24px 0}.wc-shipping-zone-settings td.forminp{padding:15px 10px}.wc-shipping-zone-settings td.forminp input,.wc-shipping-zone-settings td.forminp textarea{padding:8px;width:448px;max-width:100%!important}.wc-shipping-zone-settings td.forminp .wc-shipping-zone-region-select{width:448px;max-width:100%!important}.wc-shipping-zone-settings td.forminp .wc-shipping-zone-region-select .select2-choices{padding:8px 8px 4px;border-color:#DDD;min-height:0;line-height:1}.wc-shipping-zone-settings td.forminp .wc-shipping-zone-region-select .select2-choices input{padding:0}.wc-shipping-zone-settings td.forminp .wc-shipping-zone-region-select .select2-choices li{margin:0 4px 4px 0}.wc-shipping-zone-settings .wc-shipping-zone-postcodes-toggle{margin:.5em 0 0;font-size:.9em;text-decoration:underline;display:block}.wc-shipping-zone-settings .wc-shipping-zone-postcodes-toggle+.wc-shipping-zone-postcodes{display:none}.wc-shipping-zone-settings .wc-shipping-zone-postcodes textarea{margin:10px 0}.wc-shipping-zone-settings .wc-shipping-zone-postcodes .description{font-size:.9em;color:#999}.wc-shipping-zone-settings+p.submit{margin-top:0}table tr table.wc-shipping-zone-methods tr .row-actions,table tr:hover table.wc-shipping-zone-methods tr .row-actions{position:relative}table tr table.wc-shipping-zone-methods tr:hover .row-actions,table tr:hover table.wc-shipping-zone-methods tr:hover .row-actions{position:static}.wc-shipping-zones-heading .page-title-action{display:inline-block}table.wc-shipping-classes td,table.wc-shipping-classes th,table.wc-shipping-zone-methods td,table.wc-shipping-zone-methods th,table.wc-shipping-zones td,table.wc-shipping-zones th{vertical-align:top;line-height:24px;padding:1em!important;font-size:14px;background:#fff}table.wc-shipping-classes td li,table.wc-shipping-classes th li,table.wc-shipping-zone-methods td li,table.wc-shipping-zone-methods th li,table.wc-shipping-zones td li,table.wc-shipping-zones th li{line-height:24px;font-size:14px}table.wc-shipping-classes td .woocommerce-help-tip,table.wc-shipping-classes th .woocommerce-help-tip,table.wc-shipping-zone-methods td .woocommerce-help-tip,table.wc-shipping-zone-methods th .woocommerce-help-tip,table.wc-shipping-zones td .woocommerce-help-tip,table.wc-shipping-zones th .woocommerce-help-tip{margin:0!important}table.wc-shipping-classes thead th,table.wc-shipping-zone-methods thead th,table.wc-shipping-zones thead th{vertical-align:middle}table.wc-shipping-classes thead .wc-shipping-zone-sort,table.wc-shipping-zone-methods thead .wc-shipping-zone-sort,table.wc-shipping-zones thead .wc-shipping-zone-sort{text-align:center}table.wc-shipping-classes tbody td,table.wc-shipping-zone-methods tbody td,table.wc-shipping-zones tbody td{padding:1.5em 1em!important}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state,table.wc-shipping-classes td.wc-shipping-zones-blank-state,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state,table.wc-shipping-zones td.wc-shipping-zones-blank-state{background:#f7f1f6!important;overflow:hidden;position:relative;padding:7.5em 7.5%!important;border-bottom:2px solid #eee2ec}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state,table.wc-shipping-classes td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state,table.wc-shipping-zones td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state{padding:2em!important}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state p,table.wc-shipping-classes td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state p,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state p,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state p,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state p,table.wc-shipping-zones td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state p{margin-bottom:0}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state li,table.wc-shipping-classes td.wc-shipping-zone-method-blank-state p,table.wc-shipping-classes td.wc-shipping-zones-blank-state li,table.wc-shipping-classes td.wc-shipping-zones-blank-state p,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state p,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state p,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state p,table.wc-shipping-zones td.wc-shipping-zones-blank-state li,table.wc-shipping-zones td.wc-shipping-zones-blank-state p{color:#a46497;font-size:1.5em;line-height:1.5em;margin:0 0 1em;position:relative;z-index:1;text-shadow:1px 1px 1px #fff}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state li.main,table.wc-shipping-classes td.wc-shipping-zone-method-blank-state p.main,table.wc-shipping-classes td.wc-shipping-zones-blank-state li.main,table.wc-shipping-classes td.wc-shipping-zones-blank-state p.main,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state li.main,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state p.main,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state li.main,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state p.main,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state li.main,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state p.main,table.wc-shipping-zones td.wc-shipping-zones-blank-state li.main,table.wc-shipping-zones td.wc-shipping-zones-blank-state p.main{font-size:2em}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state li,table.wc-shipping-classes td.wc-shipping-zones-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state li,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zones td.wc-shipping-zones-blank-state li{margin-left:1em;list-style:circle inside}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state::before,table.wc-shipping-classes td.wc-shipping-zones-blank-state::before,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state::before,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state::before,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state::before,table.wc-shipping-zones td.wc-shipping-zones-blank-state::before{content:'\e01b';font-family:WooCommerce;text-align:center;line-height:1;color:#eee2ec;display:block;width:1em;font-size:40em;top:50%;right:-3.75%;margin-top:-.1875em;position:absolute}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state .button-primary,table.wc-shipping-classes td.wc-shipping-zones-blank-state .button-primary,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state .button-primary,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state .button-primary,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state .button-primary,table.wc-shipping-zones td.wc-shipping-zones-blank-state .button-primary{background-color:#804877;border-color:#804877;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 0 rgba(0,0,0,.15);margin:0;opacity:1;text-shadow:0 -1px 1px #8a4f7f,1px 0 1px #8a4f7f,0 1px 1px #8a4f7f,-1px 0 1px #8a4f7f;font-size:1.5em;padding:.75em 1em;height:auto;position:relative;z-index:1}table.wc-shipping-classes .wc-shipping-class-rows tr:nth-child(odd) td,table.wc-shipping-classes .wc-shipping-zone-method-rows tr:nth-child(odd) td,table.wc-shipping-classes tbody.wc-shipping-zone-rows tr:nth-child(odd) td,table.wc-shipping-classes tr.odd td,table.wc-shipping-zone-methods .wc-shipping-class-rows tr:nth-child(odd) td,table.wc-shipping-zone-methods .wc-shipping-zone-method-rows tr:nth-child(odd) td,table.wc-shipping-zone-methods tbody.wc-shipping-zone-rows tr:nth-child(odd) td,table.wc-shipping-zone-methods tr.odd td,table.wc-shipping-zones .wc-shipping-class-rows tr:nth-child(odd) td,table.wc-shipping-zones .wc-shipping-zone-method-rows tr:nth-child(odd) td,table.wc-shipping-zones tbody.wc-shipping-zone-rows tr:nth-child(odd) td,table.wc-shipping-zones tr.odd td{background:#f9f9f9}table.wc-shipping-classes p,table.wc-shipping-classes ul,table.wc-shipping-zone-methods p,table.wc-shipping-zone-methods ul,table.wc-shipping-zones p,table.wc-shipping-zones ul{margin:0}table.wc-shipping-classes td.wc-shipping-zone-method-sort,table.wc-shipping-classes td.wc-shipping-zone-sort,table.wc-shipping-zone-methods td.wc-shipping-zone-method-sort,table.wc-shipping-zone-methods td.wc-shipping-zone-sort,table.wc-shipping-zones td.wc-shipping-zone-method-sort,table.wc-shipping-zones td.wc-shipping-zone-sort{cursor:move;font-size:15px;text-align:center}table.wc-shipping-classes td.wc-shipping-zone-method-sort::before,table.wc-shipping-classes td.wc-shipping-zone-sort::before,table.wc-shipping-zone-methods td.wc-shipping-zone-method-sort::before,table.wc-shipping-zone-methods td.wc-shipping-zone-sort::before,table.wc-shipping-zones td.wc-shipping-zone-method-sort::before,table.wc-shipping-zones td.wc-shipping-zone-sort::before{content:'\f333';font-family:Dashicons;text-align:center;color:#999;display:block;width:17px;float:left;height:100%;line-height:24px}table.wc-shipping-classes td.wc-shipping-zone-method-sort:hover::before,table.wc-shipping-classes td.wc-shipping-zone-sort:hover::before,table.wc-shipping-zone-methods td.wc-shipping-zone-method-sort:hover::before,table.wc-shipping-zone-methods td.wc-shipping-zone-sort:hover::before,table.wc-shipping-zones td.wc-shipping-zone-method-sort:hover::before,table.wc-shipping-zones td.wc-shipping-zone-sort:hover::before{color:#333}table.wc-shipping-classes td.wc-shipping-zone-worldwide,table.wc-shipping-zone-methods td.wc-shipping-zone-worldwide,table.wc-shipping-zones td.wc-shipping-zone-worldwide{text-align:center}table.wc-shipping-classes td.wc-shipping-zone-worldwide::before,table.wc-shipping-zone-methods td.wc-shipping-zone-worldwide::before,table.wc-shipping-zones td.wc-shipping-zone-worldwide::before{content:'\f319';font-family:dashicons;text-align:center;color:#999;display:block;width:17px;float:left;height:100%;line-height:24px}table.wc-shipping-classes .wc-shipping-zone-methods,table.wc-shipping-classes .wc-shipping-zone-name,table.wc-shipping-zone-methods .wc-shipping-zone-methods,table.wc-shipping-zone-methods .wc-shipping-zone-name,table.wc-shipping-zones .wc-shipping-zone-methods,table.wc-shipping-zones .wc-shipping-zone-name{width:25%}table.wc-shipping-classes .wc-shipping-class-description input,table.wc-shipping-classes .wc-shipping-class-description select,table.wc-shipping-classes .wc-shipping-class-description textarea,table.wc-shipping-classes .wc-shipping-class-name input,table.wc-shipping-classes .wc-shipping-class-name select,table.wc-shipping-classes .wc-shipping-class-name textarea,table.wc-shipping-classes .wc-shipping-class-slug input,table.wc-shipping-classes .wc-shipping-class-slug select,table.wc-shipping-classes .wc-shipping-class-slug textarea,table.wc-shipping-classes .wc-shipping-zone-name input,table.wc-shipping-classes .wc-shipping-zone-name select,table.wc-shipping-classes .wc-shipping-zone-name textarea,table.wc-shipping-classes .wc-shipping-zone-region input,table.wc-shipping-classes .wc-shipping-zone-region select,table.wc-shipping-classes .wc-shipping-zone-region textarea,table.wc-shipping-zone-methods .wc-shipping-class-description input,table.wc-shipping-zone-methods .wc-shipping-class-description select,table.wc-shipping-zone-methods .wc-shipping-class-description textarea,table.wc-shipping-zone-methods .wc-shipping-class-name input,table.wc-shipping-zone-methods .wc-shipping-class-name select,table.wc-shipping-zone-methods .wc-shipping-class-name textarea,table.wc-shipping-zone-methods .wc-shipping-class-slug input,table.wc-shipping-zone-methods .wc-shipping-class-slug select,table.wc-shipping-zone-methods .wc-shipping-class-slug textarea,table.wc-shipping-zone-methods .wc-shipping-zone-name input,table.wc-shipping-zone-methods .wc-shipping-zone-name select,table.wc-shipping-zone-methods .wc-shipping-zone-name textarea,table.wc-shipping-zone-methods .wc-shipping-zone-region input,table.wc-shipping-zone-methods .wc-shipping-zone-region select,table.wc-shipping-zone-methods .wc-shipping-zone-region textarea,table.wc-shipping-zones .wc-shipping-class-description input,table.wc-shipping-zones .wc-shipping-class-description select,table.wc-shipping-zones .wc-shipping-class-description textarea,table.wc-shipping-zones .wc-shipping-class-name input,table.wc-shipping-zones .wc-shipping-class-name select,table.wc-shipping-zones .wc-shipping-class-name textarea,table.wc-shipping-zones .wc-shipping-class-slug input,table.wc-shipping-zones .wc-shipping-class-slug select,table.wc-shipping-zones .wc-shipping-class-slug textarea,table.wc-shipping-zones .wc-shipping-zone-name input,table.wc-shipping-zones .wc-shipping-zone-name select,table.wc-shipping-zones .wc-shipping-zone-name textarea,table.wc-shipping-zones .wc-shipping-zone-region input,table.wc-shipping-zones .wc-shipping-zone-region select,table.wc-shipping-zones .wc-shipping-zone-region textarea{width:100%}table.wc-shipping-classes .wc-shipping-class-description a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-class-description a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-class-name a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-class-name a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-class-slug a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-class-slug a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-zone-name a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-zone-name a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-zone-region a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-zone-region a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-class-description a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-class-description a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-class-name a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-class-name a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-class-slug a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-class-slug a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-zone-name a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-zone-name a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-zone-region a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-zone-region a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-class-description a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-class-description a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-class-name a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-class-name a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-class-slug a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-class-slug a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-zone-name a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-zone-name a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-zone-region a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-zone-region a.wc-shipping-zone-delete{color:#a00}table.wc-shipping-classes .wc-shipping-class-description a.wc-shipping-class-delete:hover,table.wc-shipping-classes .wc-shipping-class-description a.wc-shipping-zone-delete:hover,table.wc-shipping-classes .wc-shipping-class-name a.wc-shipping-class-delete:hover,table.wc-shipping-classes .wc-shipping-class-name a.wc-shipping-zone-delete:hover,table.wc-shipping-classes .wc-shipping-class-slug a.wc-shipping-class-delete:hover,table.wc-shipping-classes .wc-shipping-class-slug a.wc-shipping-zone-delete:hover,table.wc-shipping-classes .wc-shipping-zone-name a.wc-shipping-class-delete:hover,table.wc-shipping-classes .wc-shipping-zone-name a.wc-shipping-zone-delete:hover,table.wc-shipping-classes .wc-shipping-zone-region a.wc-shipping-class-delete:hover,table.wc-shipping-classes .wc-shipping-zone-region a.wc-shipping-zone-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-description a.wc-shipping-class-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-description a.wc-shipping-zone-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-name a.wc-shipping-class-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-name a.wc-shipping-zone-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-slug a.wc-shipping-class-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-slug a.wc-shipping-zone-delete:hover,table.wc-shipping-zone-methods .wc-shipping-zone-name a.wc-shipping-class-delete:hover,table.wc-shipping-zone-methods .wc-shipping-zone-name a.wc-shipping-zone-delete:hover,table.wc-shipping-zone-methods .wc-shipping-zone-region a.wc-shipping-class-delete:hover,table.wc-shipping-zone-methods .wc-shipping-zone-region a.wc-shipping-zone-delete:hover,table.wc-shipping-zones .wc-shipping-class-description a.wc-shipping-class-delete:hover,table.wc-shipping-zones .wc-shipping-class-description a.wc-shipping-zone-delete:hover,table.wc-shipping-zones .wc-shipping-class-name a.wc-shipping-class-delete:hover,table.wc-shipping-zones .wc-shipping-class-name a.wc-shipping-zone-delete:hover,table.wc-shipping-zones .wc-shipping-class-slug a.wc-shipping-class-delete:hover,table.wc-shipping-zones .wc-shipping-class-slug a.wc-shipping-zone-delete:hover,table.wc-shipping-zones .wc-shipping-zone-name a.wc-shipping-class-delete:hover,table.wc-shipping-zones .wc-shipping-zone-name a.wc-shipping-zone-delete:hover,table.wc-shipping-zones .wc-shipping-zone-region a.wc-shipping-class-delete:hover,table.wc-shipping-zones .wc-shipping-zone-region a.wc-shipping-zone-delete:hover{color:red}table.wc-shipping-classes .wc-shipping-class-count,table.wc-shipping-zone-methods .wc-shipping-class-count,table.wc-shipping-zones .wc-shipping-class-count{text-align:center}table.wc-shipping-classes td.wc-shipping-zone-methods,table.wc-shipping-zone-methods td.wc-shipping-zone-methods,table.wc-shipping-zones td.wc-shipping-zone-methods{color:#555}table.wc-shipping-classes td.wc-shipping-zone-methods .method_disabled,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .method_disabled,table.wc-shipping-zones td.wc-shipping-zone-methods .method_disabled{text-decoration:line-through}table.wc-shipping-classes td.wc-shipping-zone-methods ul,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul,table.wc-shipping-zones td.wc-shipping-zone-methods ul{position:relative;padding-right:32px}table.wc-shipping-classes td.wc-shipping-zone-methods ul li,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li,table.wc-shipping-zones td.wc-shipping-zone-methods ul li{color:#555;display:inline;margin:0}table.wc-shipping-classes td.wc-shipping-zone-methods ul li::before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li::before,table.wc-shipping-zones td.wc-shipping-zone-methods ul li::before{content:', '}table.wc-shipping-classes td.wc-shipping-zone-methods ul li:first-child::before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li:first-child::before,table.wc-shipping-zones td.wc-shipping-zone-methods ul li:first-child::before{content:''}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method{display:block;width:24px;padding:24px 0 0;height:0;overflow:hidden;cursor:pointer}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method::before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method::before,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method::before{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;font-family:Dashicons;content:'\f502';color:#999;vertical-align:middle;line-height:24px;font-size:16px;margin:0}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method.disabled,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method.disabled,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method.disabled{cursor:not-allowed}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method.disabled::before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method.disabled::before,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method.disabled::before{color:#ccc}table.wc-shipping-classes .wc-shipping-zone-method-title,table.wc-shipping-zone-methods .wc-shipping-zone-method-title,table.wc-shipping-zones .wc-shipping-zone-method-title{width:25%}table.wc-shipping-classes .wc-shipping-zone-method-title .wc-shipping-zone-method-delete,table.wc-shipping-zone-methods .wc-shipping-zone-method-title .wc-shipping-zone-method-delete,table.wc-shipping-zones .wc-shipping-zone-method-title .wc-shipping-zone-method-delete{color:red}table.wc-shipping-classes .wc-shipping-zone-method-enabled,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled,table.wc-shipping-zones .wc-shipping-zone-method-enabled{text-align:center}table.wc-shipping-classes .wc-shipping-zone-method-enabled a,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled a,table.wc-shipping-zones .wc-shipping-zone-method-enabled a{display:inline-block}table.wc-shipping-classes .wc-shipping-zone-method-enabled .woocommerce-input-toggle,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled .woocommerce-input-toggle,table.wc-shipping-zones .wc-shipping-zone-method-enabled .woocommerce-input-toggle{margin-top:3px}table.wc-shipping-classes .wc-shipping-zone-method-type,table.wc-shipping-zone-methods .wc-shipping-zone-method-type,table.wc-shipping-zones .wc-shipping-zone-method-type{display:block}table.wc-shipping-classes tfoot input,table.wc-shipping-classes tfoot select,table.wc-shipping-zone-methods tfoot input,table.wc-shipping-zone-methods tfoot select,table.wc-shipping-zones tfoot input,table.wc-shipping-zones tfoot select{vertical-align:middle!important}table.wc-shipping-classes tfoot .button-secondary,table.wc-shipping-zone-methods tfoot .button-secondary,table.wc-shipping-zones tfoot .button-secondary{float:right}table.wc-shipping-classes .editing .wc-shipping-zone-edit,table.wc-shipping-classes .editing .wc-shipping-zone-view,table.wc-shipping-zone-methods .editing .wc-shipping-zone-edit,table.wc-shipping-zone-methods .editing .wc-shipping-zone-view,table.wc-shipping-zones .editing .wc-shipping-zone-edit,table.wc-shipping-zones .editing .wc-shipping-zone-view{display:none}.woocommerce-input-toggle{height:16px;width:32px;border:2px solid #935687;background-color:#935687;display:inline-block;text-indent:-9999px;border-radius:10em;position:relative}.woocommerce-input-toggle:before{content:"";display:block;width:16px;height:16px;background:#fff;position:absolute;top:0;right:0;border-radius:100%}.woocommerce-input-toggle.woocommerce-input-toggle--disabled{border-color:#999;background-color:#999}.woocommerce-input-toggle.woocommerce-input-toggle--disabled:before{right:auto;left:0}.wc-modal-shipping-method-settings{background:#f8f8f8;padding:1em!important}.wc-modal-shipping-method-settings form .form-table{width:100%;background:#fff;margin:0 0 1.5em}.wc-modal-shipping-method-settings form .form-table tr th{width:30%;position:relative}.wc-modal-shipping-method-settings form .form-table tr th .woocommerce-help-tip{float:right;margin:-8px -.5em 0 0;vertical-align:middle;right:0;top:50%;position:absolute}.wc-modal-shipping-method-settings form .form-table tr td input,.wc-modal-shipping-method-settings form .form-table tr td select,.wc-modal-shipping-method-settings form .form-table tr td textarea{width:50%;min-width:250px}.wc-modal-shipping-method-settings form .form-table tr td input[type=checkbox]{width:auto;min-width:16px}.wc-modal-shipping-method-settings form .form-table tr td,.wc-modal-shipping-method-settings form .form-table tr th{vertical-align:middle;margin:0;line-height:24px;padding:1em;border-bottom:1px solid #f8f8f8}.wc-modal-shipping-method-settings form .form-table:last-of-type{margin-bottom:0}.wc-backbone-modal .wc-shipping-zone-method-selector p{margin-top:0}.wc-backbone-modal .wc-shipping-zone-method-selector .wc-shipping-zone-method-description{margin:.75em 1px 0;line-height:1.5em;color:#999;font-style:italic}.wc-backbone-modal .wc-shipping-zone-method-selector select{width:100%;cursor:pointer}img.help_tip{margin:0 0 0 9px;vertical-align:middle}.postbox img.help_tip{margin-top:0}.postbox .woocommerce-help-tip{margin:0 0 0 9px}.status-disabled,.status-enabled,.status-manual{font-size:1.4em;display:block;text-indent:-9999px;position:relative;height:1em;width:1em}.status-disabled::before,.status-enabled::before,.status-manual::before{font-family:WooCommerce;line-height:1;margin:0;position:absolute;width:100%;height:100%;text-indent:0;top:0;font-variant:normal;-webkit-font-smoothing:antialiased;font-weight:400;text-align:center;left:0;speak:none;text-transform:none}.status-manual::before{content:"";color:#999}.status-enabled::before{content:"";color:#a46497}.status-disabled::before{content:"";color:#ccc}.woocommerce h2.woo-nav-tab-wrapper{margin-bottom:1em}.woocommerce nav.woo-nav-tab-wrapper{margin:1.5em 0 1em;border-bottom:1px solid #ccc}.woocommerce .subsubsub{margin:-8px 0 0}.woocommerce .wc-admin-breadcrumb{margin-left:.5em}.woocommerce .wc-admin-breadcrumb a{color:#a46497}.woocommerce #template div{margin:0}.woocommerce #template div p .button{float:right;margin-left:10px;margin-top:-4px}.woocommerce #template div .editor textarea{margin-bottom:8px}.woocommerce textarea[disabled=disabled]{background:#dfdfdf!important}.woocommerce table.form-table{margin:0;position:relative}.woocommerce table.form-table .forminp-radio ul{margin:0}.woocommerce table.form-table .forminp-radio ul li{line-height:1.4em}.woocommerce table.form-table textarea.input-text{height:100%;min-width:150px;display:block}.woocommerce table.form-table input.regular-input{width:400px}.woocommerce table.form-table textarea.wide-input{width:100%}.woocommerce table.form-table .woocommerce-help-tip,.woocommerce table.form-table img.help_tip{padding:0;margin:-4px 0 0 5px;vertical-align:middle;cursor:help;line-height:1}.woocommerce table.form-table span.help_tip{cursor:help;color:#2ea2cc}.woocommerce table.form-table th{position:relative;padding-right:24px}.woocommerce table.form-table .select2-container{vertical-align:top;margin-bottom:3px}.woocommerce table.form-table table.widefat th{padding-right:inherit}.woocommerce table.form-table th .woocommerce-help-tip,.woocommerce table.form-table th img.help_tip{margin:2px -24px 0 0;float:right}.woocommerce table.form-table .wp-list-table .woocommerce-help-tip{float:none}.woocommerce table.form-table fieldset{margin-top:4px}.woocommerce table.form-table fieldset .woocommerce-help-tip,.woocommerce table.form-table fieldset img.help_tip{margin:-3px 0 0 5px}.woocommerce table.form-table fieldset p.description{margin-bottom:8px}.woocommerce table.form-table fieldset:first-child{margin-top:0}.woocommerce table.form-table .iris-picker{z-index:100;display:none;position:absolute;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.2)}.woocommerce table.form-table .iris-picker .ui-slider{border:0!important;margin:0!important;width:auto!important;height:auto!important;background:none!important}.woocommerce table.form-table .iris-picker .ui-slider .ui-slider-handle{margin-bottom:0!important}.woocommerce table.form-table .colorpickpreview{padding:3px 3px 3px 20px;border:1px solid #ddd;border-right:0}.woocommerce table.form-table .colorpick{border-left:0}.woocommerce table.form-table .image_width_settings{vertical-align:middle}.woocommerce table.form-table .image_width_settings label{margin-left:10px}.woocommerce table.form-table .wc_emails_wrapper{padding:0 15px 10px 0}.woocommerce #tabs-wrap table a.remove{margin-left:4px}.woocommerce #tabs-wrap table p{margin:0 0 4px!important;overflow:hidden;zoom:1}.woocommerce #tabs-wrap table p a.add{float:left}#wp-excerpt-editor-container{background:#fff}#product_variation-parent #parent_id{width:100%}#postimagediv img{border:1px solid #d5d5d5;max-width:100%}#woocommerce-product-images .inside{margin:0;padding:0}#woocommerce-product-images .inside .add_product_images{padding:0 12px 12px}#woocommerce-product-images .inside #product_images_container{padding:0 0 0 9px}#woocommerce-product-images .inside #product_images_container ul{margin:0;padding:0}#woocommerce-product-images .inside #product_images_container ul::after,#woocommerce-product-images .inside #product_images_container ul::before{content:' ';display:table}#woocommerce-product-images .inside #product_images_container ul li.add,#woocommerce-product-images .inside #product_images_container ul li.image,#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder{width:80px;float:left;cursor:move;border:1px solid #d5d5d5;margin:9px 9px 0 0;background:#f7f7f7;border-radius:2px;position:relative;box-sizing:border-box}#woocommerce-product-images .inside #product_images_container ul li.add img,#woocommerce-product-images .inside #product_images_container ul li.image img,#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder img{width:100%;height:auto;display:block}#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder{border:3px dashed #ddd;position:relative}#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder::after{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";font-size:2.618em;line-height:72px;color:#ddd}#woocommerce-product-images .inside #product_images_container ul ul.actions{position:absolute;top:-8px;right:-8px;padding:2px;display:none}#woocommerce-product-images .inside #product_images_container ul ul.actions li{float:right;margin:0 0 0 2px}#woocommerce-product-images .inside #product_images_container ul ul.actions li a{width:1em;margin:0;height:0;display:block;overflow:hidden}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.tips{cursor:pointer}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.delete{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.4em}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.delete::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";color:#999}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.delete:hover::before{color:#a00}#woocommerce-product-images .inside #product_images_container ul li:hover ul.actions{display:block}#woocommerce-product-data .hndle{padding:10px}#woocommerce-product-data .hndle span{display:block;vertical-align:middle;line-height:24px}#woocommerce-product-data .hndle span span{display:inline;line-height:inherit;vertical-align:baseline}#woocommerce-product-data .hndle select{margin:0 0 0 .5em}#woocommerce-product-data .hndle label{padding-right:1em;font-size:12px;vertical-align:baseline}#woocommerce-product-data .hndle label:first-child{margin-right:1em;border-right:1px solid #dfdfdf}#woocommerce-product-data .hndle input,#woocommerce-product-data .hndle select{margin-top:-3px 0 0;vertical-align:middle}#woocommerce-product-data>.handlediv{margin-top:4px}#woocommerce-product-data .wrap{margin:0}#woocommerce-coupon-description{padding:3px 8px;font-size:1.7em;line-height:1.42em;height:auto;width:100%;outline:0;margin:10px 0;display:block}#woocommerce-coupon-description::-webkit-input-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-description::-moz-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-description:-ms-input-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-description:-moz-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-data .panel-wrap,#woocommerce-product-data .panel-wrap{background:#fff}#woocommerce-coupon-data .wc-metaboxes-wrapper,#woocommerce-coupon-data .woocommerce_options_panel,#woocommerce-product-data .wc-metaboxes-wrapper,#woocommerce-product-data .woocommerce_options_panel{float:left;width:80%}#woocommerce-coupon-data .wc-metaboxes-wrapper .wc-radios,#woocommerce-coupon-data .woocommerce_options_panel .wc-radios,#woocommerce-product-data .wc-metaboxes-wrapper .wc-radios,#woocommerce-product-data .woocommerce_options_panel .wc-radios{display:block;float:left;margin:0}#woocommerce-coupon-data .wc-metaboxes-wrapper .wc-radios li,#woocommerce-coupon-data .woocommerce_options_panel .wc-radios li,#woocommerce-product-data .wc-metaboxes-wrapper .wc-radios li,#woocommerce-product-data .woocommerce_options_panel .wc-radios li{display:block;padding:0 0 10px}#woocommerce-coupon-data .wc-metaboxes-wrapper .wc-radios li input,#woocommerce-coupon-data .woocommerce_options_panel .wc-radios li input,#woocommerce-product-data .wc-metaboxes-wrapper .wc-radios li input,#woocommerce-product-data .woocommerce_options_panel .wc-radios li input{width:auto}#woocommerce-coupon-data .panel-wrap,#woocommerce-product-data .panel-wrap,.woocommerce .panel-wrap{overflow:hidden}#woocommerce-coupon-data ul.wc-tabs,#woocommerce-product-data ul.wc-tabs,.woocommerce ul.wc-tabs{margin:0;width:20%;float:left;line-height:1em;padding:0 0 10px;position:relative;background-color:#fafafa;border-right:1px solid #eee;box-sizing:border-box}#woocommerce-coupon-data ul.wc-tabs::after,#woocommerce-product-data ul.wc-tabs::after,.woocommerce ul.wc-tabs::after{content:'';display:block;width:100%;height:9999em;position:absolute;bottom:-9999em;left:0;background-color:#fafafa;border-right:1px solid #eee}#woocommerce-coupon-data ul.wc-tabs li,#woocommerce-product-data ul.wc-tabs li,.woocommerce ul.wc-tabs li{margin:0;padding:0;display:block;position:relative}#woocommerce-coupon-data ul.wc-tabs li a,#woocommerce-product-data ul.wc-tabs li a,.woocommerce ul.wc-tabs li a{margin:0;padding:10px;display:block;box-shadow:none;text-decoration:none;line-height:20px!important;border-bottom:1px solid #eee}#woocommerce-coupon-data ul.wc-tabs li a span,#woocommerce-product-data ul.wc-tabs li a span,.woocommerce ul.wc-tabs li a span{margin-left:.618em;margin-right:.618em}#woocommerce-coupon-data ul.wc-tabs li a::before,#woocommerce-product-data ul.wc-tabs li a::before,.woocommerce ul.wc-tabs li a::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;content:"";text-decoration:none}#woocommerce-coupon-data ul.wc-tabs li.general_options a::before,#woocommerce-product-data ul.wc-tabs li.general_options a::before,.woocommerce ul.wc-tabs li.general_options a::before{content:'\f107'}#woocommerce-coupon-data ul.wc-tabs li.inventory_options a::before,#woocommerce-product-data ul.wc-tabs li.inventory_options a::before,.woocommerce ul.wc-tabs li.inventory_options a::before{content:'\f481'}#woocommerce-coupon-data ul.wc-tabs li.shipping_options a::before,#woocommerce-product-data ul.wc-tabs li.shipping_options a::before,.woocommerce ul.wc-tabs li.shipping_options a::before{font-family:WooCommerce;content:'\e01a'}#woocommerce-coupon-data ul.wc-tabs li.linked_product_options a::before,#woocommerce-product-data ul.wc-tabs li.linked_product_options a::before,.woocommerce ul.wc-tabs li.linked_product_options a::before{content:'\f103'}#woocommerce-coupon-data ul.wc-tabs li.attribute_options a::before,#woocommerce-product-data ul.wc-tabs li.attribute_options a::before,.woocommerce ul.wc-tabs li.attribute_options a::before{content:'\f175'}#woocommerce-coupon-data ul.wc-tabs li.advanced_options a::before,#woocommerce-product-data ul.wc-tabs li.advanced_options a::before,.woocommerce ul.wc-tabs li.advanced_options a::before{font-family:Dashicons;content:'\f111'}#woocommerce-coupon-data ul.wc-tabs li.variations_options a::before,#woocommerce-product-data ul.wc-tabs li.variations_options a::before,.woocommerce ul.wc-tabs li.variations_options a::before{content:'\f509'}#woocommerce-coupon-data ul.wc-tabs li.usage_restriction_options a::before,#woocommerce-product-data ul.wc-tabs li.usage_restriction_options a::before,.woocommerce ul.wc-tabs li.usage_restriction_options a::before{font-family:WooCommerce;content:'\e602'}#woocommerce-coupon-data ul.wc-tabs li.usage_limit_options a::before,#woocommerce-product-data ul.wc-tabs li.usage_limit_options a::before,.woocommerce ul.wc-tabs li.usage_limit_options a::before{font-family:WooCommerce;content:'\e601'}#woocommerce-coupon-data ul.wc-tabs li.general_coupon_data a::before,#woocommerce-product-data ul.wc-tabs li.general_coupon_data a::before,.woocommerce ul.wc-tabs li.general_coupon_data a::before{font-family:WooCommerce;content:'\e600'}#woocommerce-coupon-data ul.wc-tabs li.active a,#woocommerce-product-data ul.wc-tabs li.active a,.woocommerce ul.wc-tabs li.active a{color:#555;position:relative;background-color:#eee}.woocommerce_page_wc-settings input[type=email],.woocommerce_page_wc-settings input[type=url]{direction:ltr}.woocommerce_page_wc-settings .shippingrows th.check-column{padding-top:20px}.woocommerce_page_wc-settings .shippingrows tfoot th{padding-left:10px}.woocommerce_page_wc-settings .shippingrows .add.button::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none}.woocommerce_page_wc-settings h3.wc-settings-sub-title{font-size:1.2em}#woocommerce-coupon-data .inside,#woocommerce-order-data .inside,#woocommerce-order-downloads .inside,#woocommerce-product-data .inside,#woocommerce-product-type-options .inside{margin:0;padding:0}.panel,.woocommerce_options_panel{padding:9px;color:#555}.panel .form-field .woocommerce-help-tip,.woocommerce_options_panel .form-field .woocommerce-help-tip{font-size:1.4em}.panel,.woocommerce_page_settings .woocommerce_options_panel{padding:0}#woocommerce-product-specs .inside,#woocommerce-product-type-options .panel{margin:0;padding:9px}#woocommerce-product-type-options .panel p,.woocommerce_options_panel fieldset.form-field,.woocommerce_options_panel p{margin:0 0 9px;font-size:12px;padding:5px 9px;line-height:24px}#woocommerce-product-type-options .panel p::after,.woocommerce_options_panel fieldset.form-field::after,.woocommerce_options_panel p::after{content:'.';display:block;height:0;clear:both;visibility:hidden}.woocommerce_options_panel .checkbox,.woocommerce_variable_attributes .checkbox{width:auto;margin:4px 0!important;vertical-align:middle;float:left}.woocommerce_options_panel .downloadable_files table,.woocommerce_variations .downloadable_files table{width:100%;padding:0!important}.woocommerce_options_panel .downloadable_files table th,.woocommerce_variations .downloadable_files table th{padding:7px 0 7px 7px!important}.woocommerce_options_panel .downloadable_files table th.sort,.woocommerce_variations .downloadable_files table th.sort{width:17px;padding:7px!important}.woocommerce_options_panel .downloadable_files table th .woocommerce-help-tip,.woocommerce_variations .downloadable_files table th .woocommerce-help-tip{font-size:1.1em;margin-left:0}.woocommerce_options_panel .downloadable_files table td,.woocommerce_variations .downloadable_files table td{vertical-align:middle!important;padding:4px 0 4px 7px!important;position:relative}.woocommerce_options_panel .downloadable_files table td:last-child,.woocommerce_variations .downloadable_files table td:last-child{padding-right:7px!important}.woocommerce_options_panel .downloadable_files table td input.input_text,.woocommerce_variations .downloadable_files table td input.input_text{width:100%;float:none;min-width:0;margin:1px 0}.woocommerce_options_panel .downloadable_files table td .upload_file_button,.woocommerce_variations .downloadable_files table td .upload_file_button{width:auto;float:right;cursor:pointer}.woocommerce_options_panel .downloadable_files table td .delete,.woocommerce_variations .downloadable_files table td .delete{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.2em}.woocommerce_options_panel .downloadable_files table td .delete::before,.woocommerce_variations .downloadable_files table td .delete::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";color:#999}.woocommerce_options_panel .downloadable_files table td .delete:hover::before,.woocommerce_variations .downloadable_files table td .delete:hover::before{color:#a00}.woocommerce_options_panel .downloadable_files table td.sort,.woocommerce_variations .downloadable_files table td.sort{width:17px;cursor:move;font-size:15px;text-align:center;background:#f9f9f9;padding-right:7px!important}.woocommerce_options_panel .downloadable_files table td.sort::before,.woocommerce_variations .downloadable_files table td.sort::before{content:'\f333';font-family:Dashicons;text-align:center;line-height:1;color:#999;display:block;width:17px;float:left;height:100%}.woocommerce_options_panel .downloadable_files table td.sort:hover::before,.woocommerce_variations .downloadable_files table td.sort:hover::before{color:#333}.woocommerce_variation h3 .sort{width:17px;height:26px;cursor:move;float:right;font-size:15px;font-weight:400;margin-right:.5em;visibility:hidden;text-align:center;vertical-align:middle}.woocommerce_variation h3 .sort::before{content:'\f333';font-family:Dashicons;text-align:center;line-height:28px;color:#999;display:block;width:17px;float:left;height:100%}.woocommerce_variation h3 .sort:hover::before{color:#777}.woocommerce_variation h3:hover .sort,.woocommerce_variation.ui-sortable-helper .sort{visibility:visible}.woocommerce_options_panel{min-height:175px;box-sizing:border-box}.woocommerce_options_panel .downloadable_files{padding:0 9px 0 162px;position:relative;margin:9px 0}.woocommerce_options_panel .downloadable_files label{position:absolute;left:0;margin:0 0 0 12px;line-height:24px}.woocommerce_options_panel p{margin:9px 0}.woocommerce_options_panel fieldset.form-field,.woocommerce_options_panel p.form-field{padding:5px 20px 5px 162px!important}.woocommerce_options_panel .sale_price_dates_fields .short:first-of-type{margin-bottom:1em}.woocommerce_options_panel .sale_price_dates_fields .short:nth-of-type(2){clear:left}.woocommerce_options_panel label,.woocommerce_options_panel legend{float:left;width:150px;padding:0;margin:0 0 0 -150px}.woocommerce_options_panel label .req,.woocommerce_options_panel legend .req{font-weight:700;font-style:normal;color:#a00}.woocommerce_options_panel .description{padding:0;margin:0 0 0 7px;clear:none;display:inline}.woocommerce_options_panel .description-block{margin-left:0;display:block}.woocommerce_options_panel input,.woocommerce_options_panel select,.woocommerce_options_panel textarea{margin:0}.woocommerce_options_panel textarea{float:left;height:3.5em;line-height:1.5em;vertical-align:top}.woocommerce_options_panel input[type=text],.woocommerce_options_panel input[type=number],.woocommerce_options_panel input[type=email],.woocommerce_options_panel input[type=password]{width:50%;float:left}.woocommerce_options_panel input.button{width:auto;margin-left:8px}.woocommerce_options_panel select{float:left}.woocommerce_options_panel .short,.woocommerce_options_panel input[type=text].short,.woocommerce_options_panel input[type=number].short,.woocommerce_options_panel input[type=email].short,.woocommerce_options_panel input[type=password].short{width:50%}.woocommerce_options_panel .sized{width:auto!important;margin-right:6px}.woocommerce_options_panel .options_group{border-top:1px solid #fff;border-bottom:1px solid #eee}.woocommerce_options_panel .options_group:first-child{border-top:0}.woocommerce_options_panel .options_group:last-child{border-bottom:0}.woocommerce_options_panel .options_group fieldset{margin:9px 0;font-size:12px;padding:5px 9px;line-height:24px}.woocommerce_options_panel .options_group fieldset label{width:auto;float:none}.woocommerce_options_panel .options_group fieldset ul{float:left;width:50%;margin:0;padding:0}.woocommerce_options_panel .options_group fieldset ul li{margin:0;width:auto}.woocommerce_options_panel .options_group fieldset ul li input{width:auto;float:none;margin-right:4px}.woocommerce_options_panel .options_group fieldset ul.wc-radios label{margin-left:0}.woocommerce_options_panel .dimensions_field .wrap{display:block;width:50%}.woocommerce_options_panel .dimensions_field .wrap input{width:30.75%;margin-right:3.8%}.woocommerce_options_panel .dimensions_field .wrap .last{margin-right:0}.woocommerce_options_panel.padded{padding:1em}#woocommerce-product-data input.dp-applied,.woocommerce_options_panel .select2-container{float:left}#grouped_product_options,#simple_product_options,#virtual_product_options{padding:12px;font-style:italic;color:#666}.wc-metaboxes-wrapper .toolbar{margin:0!important;border-top:1px solid #fff;border-bottom:1px solid #eee;padding:9px 12px!important}.wc-metaboxes-wrapper .toolbar:first-child{border-top:0}.wc-metaboxes-wrapper .toolbar:last-child{border-bottom:0}.wc-metaboxes-wrapper .toolbar .add_variation{float:right;margin-left:5px}.wc-metaboxes-wrapper .toolbar .cancel-variation-changes,.wc-metaboxes-wrapper .toolbar .save-variation-changes{float:left;margin-right:5px}.wc-metaboxes-wrapper p.toolbar{overflow:hidden;zoom:1}.wc-metaboxes-wrapper .expand-close{margin-right:2px;color:#777;font-size:12px;font-style:italic}.wc-metaboxes-wrapper .expand-close a{background:0 0;padding:0;font-size:12px;text-decoration:none}.wc-metaboxes-wrapper#product_attributes .expand-close{float:right;line-height:28px}.wc-metaboxes-wrapper .fr,.wc-metaboxes-wrapper button.add_variable_attribute{float:right;margin:0 0 0 6px}.wc-metaboxes-wrapper .wc-metaboxes{border-bottom:1px solid #eee}.wc-metaboxes-wrapper .wc-metabox-sortable-placeholder{border-color:#bbb;background-color:#f5f5f5;margin-bottom:9px;border-width:1px;border-style:dashed}.wc-metaboxes-wrapper .wc-metabox{background:#fff;border-bottom:1px solid #eee;margin:0!important}.wc-metaboxes-wrapper .wc-metabox select{font-weight:400}.wc-metaboxes-wrapper .wc-metabox:last-of-type{border-bottom:0}.wc-metaboxes-wrapper .wc-metabox .handlediv{width:27px}.wc-metaboxes-wrapper .wc-metabox .handlediv::before{content:'\f142'!important;cursor:pointer;display:inline-block;font:400 20px/1 Dashicons;line-height:.5!important;padding:8px 10px;position:relative;right:12px;top:0}.wc-metaboxes-wrapper .wc-metabox.closed{border-radius:3px}.wc-metaboxes-wrapper .wc-metabox.closed .handlediv::before{content:'\f140'!important}.wc-metaboxes-wrapper .wc-metabox.closed h3{border:0}.wc-metaboxes-wrapper .wc-metabox h3{margin:0!important;padding:.75em .75em .75em 1em!important;font-size:1em!important;overflow:hidden;zoom:1;cursor:move}.wc-metaboxes-wrapper .wc-metabox h3 a.delete,.wc-metaboxes-wrapper .wc-metabox h3 button{float:right}.wc-metaboxes-wrapper .wc-metabox h3 a.delete{color:red;font-weight:400;line-height:26px;text-decoration:none;position:relative;visibility:hidden}.wc-metaboxes-wrapper .wc-metabox h3 strong{line-height:26px;font-weight:700}.wc-metaboxes-wrapper .wc-metabox h3 select{font-family:sans-serif;max-width:20%;margin:.25em .25em .25em 0}.wc-metaboxes-wrapper .wc-metabox h3 .handlediv{background-position:6px 5px!important;visibility:hidden;height:26px}.wc-metaboxes-wrapper .wc-metabox h3.fixed{cursor:pointer!important}.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3{cursor:pointer;padding:.5em .75em .5em 1em!important}.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3 .handlediv,.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3 .sort,.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3 a.delete{margin-top:.25em}.wc-metaboxes-wrapper .wc-metabox h3:hover .handlediv,.wc-metaboxes-wrapper .wc-metabox h3:hover a.delete,.wc-metaboxes-wrapper .wc-metabox.ui-sortable-helper .handlediv,.wc-metaboxes-wrapper .wc-metabox.ui-sortable-helper a.delete{visibility:visible}.wc-metaboxes-wrapper .wc-metabox table{width:100%;position:relative;background-color:#fdfdfd;padding:1em;border-top:1px solid #eee}.wc-metaboxes-wrapper .wc-metabox table td{text-align:left;padding:0 6px 1em 0;vertical-align:top;border:0}.wc-metaboxes-wrapper .wc-metabox table td label{text-align:left;display:block;line-height:21px}.wc-metaboxes-wrapper .wc-metabox table td input{float:left;min-width:200px}.wc-metaboxes-wrapper .wc-metabox table td input,.wc-metaboxes-wrapper .wc-metabox table td textarea{width:100%;margin:0;display:block;font-size:14px;padding:4px;color:#555}.wc-metaboxes-wrapper .wc-metabox table td .select2-container,.wc-metaboxes-wrapper .wc-metabox table td select{width:100%!important}.wc-metaboxes-wrapper .wc-metabox table td input.short{width:200px}.wc-metaboxes-wrapper .wc-metabox table td input.checkbox{width:16px;min-width:inherit;vertical-align:text-bottom;display:inline-block;float:none}.wc-metaboxes-wrapper .wc-metabox table td.attribute_name{width:200px}.wc-metaboxes-wrapper .wc-metabox table .minus,.wc-metaboxes-wrapper .wc-metabox table .plus{margin-top:6px}.wc-metaboxes-wrapper .wc-metabox table .fl{float:left}.wc-metaboxes-wrapper .wc-metabox table .fr{float:right}.variations-pagenav{float:right;line-height:24px}.variations-pagenav .displaying-num{color:#777;font-size:12px;font-style:italic}.variations-pagenav a{padding:0 10px 3px;background:rgba(0,0,0,.05);font-size:16px;font-weight:400;text-decoration:none}.variations-pagenav a.disabled,.variations-pagenav a.disabled:active,.variations-pagenav a.disabled:focus,.variations-pagenav a.disabled:hover{color:#a0a5aa;background:rgba(0,0,0,.05)}.variations-defaults{float:left}.variations-defaults select{margin:.25em .25em .25em 0}.woocommerce_variable_attributes{background-color:#fdfdfd;border-top:1px solid #eee}.woocommerce_variable_attributes .data{padding:1em 2em}.woocommerce_variable_attributes .data::after,.woocommerce_variable_attributes .data::before{content:' ';display:table}.woocommerce_variable_attributes .upload_image_button{display:block;width:64px;height:64px;float:left;margin-right:20px;position:relative;cursor:pointer}.woocommerce_variable_attributes .upload_image_button img{width:100%;height:auto;display:none}.woocommerce_variable_attributes .upload_image_button::before{content:'\f128';font-family:Dashicons;position:absolute;top:0;left:0;right:0;bottom:0;text-align:center;line-height:64px;font-size:64px;font-weight:400;-webkit-font-smoothing:antialiased}.woocommerce_variable_attributes .upload_image_button.remove img{display:block}.woocommerce_variable_attributes .upload_image_button.remove::before{content:'\f335';display:none}.woocommerce_variable_attributes .upload_image_button.remove:hover::before{display:block}.woocommerce_variable_attributes .options{border:1px solid #eee;border-width:1px 0;padding:.25em 0}.woocommerce_variable_attributes .options label{display:inline-block;padding:4px 1em 2px 0}.woocommerce_variable_attributes .options input[type=checkbox]{margin:0 5px 0 .5em!important;vertical-align:middle}.form-row label{display:inline-block}.form-row .woocommerce-help-tip{float:right}.form-row input[type=number],.form-row input[type=text],.form-row select,.form-row textarea{width:100%;vertical-align:middle;margin:2px 0 0;padding:6px}.form-row select{height:30px;line-height:30px}.form-row.dimensions_field .wrap{clear:left;display:block}.form-row.dimensions_field input{width:33%;float:left;vertical-align:middle}.form-row.dimensions_field input:last-of-type{margin-right:0;width:34%}.form-row.form-row-first,.form-row.form-row-last{width:48%;float:right}.form-row.form-row-first{clear:both;float:left}.form-row.form-row-full{clear:both}.tips{cursor:help;text-decoration:none}img.tips{padding:5px 0 0}#tiptip_holder{display:none;position:absolute;top:0;left:0;z-index:9999999}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_top #tiptip_arrow_inner{margin-top:-7px;margin-left:-6px;border-top-color:#333}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_bottom #tiptip_arrow_inner{margin-top:-5px;margin-left:-6px;border-bottom-color:#333}#tiptip_holder.tip_right{padding-left:5px}#tiptip_holder.tip_right #tiptip_arrow_inner{margin-top:-6px;margin-left:-5px;border-right-color:#333}#tiptip_holder.tip_left{padding-right:5px}#tiptip_holder.tip_left #tiptip_arrow_inner{margin-top:-6px;margin-left:-7px;border-left-color:#333}#tiptip_content,.chart-tooltip,.wc_error_tip{color:#fff;font-size:.8em;max-width:150px;background:#333;text-align:center;border-radius:3px;padding:.618em 1em;box-shadow:0 1px 3px rgba(0,0,0,.2)}#tiptip_content code,.chart-tooltip code,.wc_error_tip code{padding:1px;background:#888}#tiptip_arrow,#tiptip_arrow_inner{position:absolute;border-color:transparent;border-style:solid;border-width:6px;height:0;width:0}.wc_error_tip{max-width:20em;line-height:1.8em;position:absolute;white-space:normal;background:#d82223;margin:1.5em 1px 0 -1em;z-index:9999999}.wc_error_tip::after{content:'';display:block;border:8px solid #d82223;border-right-color:transparent;border-left-color:transparent;border-top-color:transparent;position:absolute;top:-3px;left:50%;margin:-1em 0 0 -3px}img.ui-datepicker-trigger{vertical-align:middle;margin-top:-1px;cursor:pointer}.wc-metabox-content img.ui-datepicker-trigger,.woocommerce_options_panel img.ui-datepicker-trigger{float:left;margin-right:8px;margin-top:4px;margin-left:4px}#ui-datepicker-div{display:none}.woocommerce-reports-wide.woocommerce-reports-wrap,.woocommerce-reports-wrap.woocommerce-reports-wrap{margin-left:300px;padding-top:18px}.woocommerce-reports-wide.halved,.woocommerce-reports-wrap.halved{margin:0;overflow:hidden;zoom:1}.woocommerce-reports-wide .widefat td,.woocommerce-reports-wrap .widefat td{vertical-align:top;padding:7px}.woocommerce-reports-wide .widefat td .description,.woocommerce-reports-wrap .widefat td .description{margin:4px 0 0}.woocommerce-reports-wide .postbox::after,.woocommerce-reports-wrap .postbox::after{content:'.';display:block;height:0;clear:both;visibility:hidden}.woocommerce-reports-wide .postbox h3,.woocommerce-reports-wrap .postbox h3{cursor:default!important}.woocommerce-reports-wide .postbox .inside,.woocommerce-reports-wrap .postbox .inside{padding:10px;margin:0!important}.woocommerce-reports-wide .postbox div.stats_range,.woocommerce-reports-wide .postbox h3.stats_range,.woocommerce-reports-wrap .postbox div.stats_range,.woocommerce-reports-wrap .postbox h3.stats_range{border-bottom-color:#dfdfdf;margin:0;padding:0!important}.woocommerce-reports-wide .postbox div.stats_range .export_csv,.woocommerce-reports-wide .postbox h3.stats_range .export_csv,.woocommerce-reports-wrap .postbox div.stats_range .export_csv,.woocommerce-reports-wrap .postbox h3.stats_range .export_csv{float:right;line-height:26px;border-left:1px solid #dfdfdf;padding:10px;display:block;text-decoration:none}.woocommerce-reports-wide .postbox div.stats_range .export_csv::before,.woocommerce-reports-wide .postbox h3.stats_range .export_csv::before,.woocommerce-reports-wrap .postbox div.stats_range .export_csv::before,.woocommerce-reports-wrap .postbox h3.stats_range .export_csv::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;content:"";text-decoration:none;margin-right:4px}.woocommerce-reports-wide .postbox div.stats_range ul,.woocommerce-reports-wide .postbox h3.stats_range ul,.woocommerce-reports-wrap .postbox div.stats_range ul,.woocommerce-reports-wrap .postbox h3.stats_range ul{list-style:none;margin:0;padding:0;zoom:1;background:#f5f5f5;border-bottom:1px solid #ccc}.woocommerce-reports-wide .postbox div.stats_range ul::after,.woocommerce-reports-wide .postbox div.stats_range ul::before,.woocommerce-reports-wide .postbox h3.stats_range ul::after,.woocommerce-reports-wide .postbox h3.stats_range ul::before,.woocommerce-reports-wrap .postbox div.stats_range ul::after,.woocommerce-reports-wrap .postbox div.stats_range ul::before,.woocommerce-reports-wrap .postbox h3.stats_range ul::after,.woocommerce-reports-wrap .postbox h3.stats_range ul::before{content:' ';display:table}.woocommerce-reports-wide .postbox div.stats_range ul::after,.woocommerce-reports-wide .postbox h3.stats_range ul::after,.woocommerce-reports-wrap .postbox div.stats_range ul::after,.woocommerce-reports-wrap .postbox h3.stats_range ul::after{clear:both}.woocommerce-reports-wide .postbox div.stats_range ul li,.woocommerce-reports-wide .postbox h3.stats_range ul li,.woocommerce-reports-wrap .postbox div.stats_range ul li,.woocommerce-reports-wrap .postbox h3.stats_range ul li{float:left;margin:0;padding:0;line-height:26px;font-weight:700;font-size:14px}.woocommerce-reports-wide .postbox div.stats_range ul li a,.woocommerce-reports-wide .postbox h3.stats_range ul li a,.woocommerce-reports-wrap .postbox div.stats_range ul li a,.woocommerce-reports-wrap .postbox h3.stats_range ul li a{border-right:1px solid #dfdfdf;padding:10px;display:block;text-decoration:none}.woocommerce-reports-wide .postbox div.stats_range ul li.active,.woocommerce-reports-wide .postbox h3.stats_range ul li.active,.woocommerce-reports-wrap .postbox div.stats_range ul li.active,.woocommerce-reports-wrap .postbox h3.stats_range ul li.active{background:#fff;-webkit-box-shadow:0 4px 0 0 #fff;box-shadow:0 4px 0 0 #fff}.woocommerce-reports-wide .postbox div.stats_range ul li.active a,.woocommerce-reports-wide .postbox h3.stats_range ul li.active a,.woocommerce-reports-wrap .postbox div.stats_range ul li.active a,.woocommerce-reports-wrap .postbox h3.stats_range ul li.active a{color:#777}.woocommerce-reports-wide .postbox div.stats_range ul li.custom,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom{padding:9px 10px;vertical-align:middle}.woocommerce-reports-wide .postbox div.stats_range ul li.custom div,.woocommerce-reports-wide .postbox div.stats_range ul li.custom form,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom div,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom form,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom div,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom form,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom div,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom form{display:inline;margin:0}.woocommerce-reports-wide .postbox div.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wide .postbox div.stats_range ul li.custom form input.range_datepicker,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom form input.range_datepicker,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom form input.range_datepicker,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom form input.range_datepicker{padding:0;margin:0 10px 0 0;background:0 0;border:0;color:#777;text-align:center;-webkit-box-shadow:none;box-shadow:none}.woocommerce-reports-wide .postbox div.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wide .postbox div.stats_range ul li.custom form input.range_datepicker.from,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom form input.range_datepicker.from,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom form input.range_datepicker.from,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom form input.range_datepicker.from{margin-right:0}.woocommerce-reports-wide .postbox .chart-with-sidebar,.woocommerce-reports-wrap .postbox .chart-with-sidebar{padding:12px 12px 12px 249px;margin:0!important}.woocommerce-reports-wide .postbox .chart-with-sidebar .chart-sidebar,.woocommerce-reports-wrap .postbox .chart-with-sidebar .chart-sidebar{width:225px;margin-left:-237px;float:left}.woocommerce-reports-wide .postbox .chart-widgets,.woocommerce-reports-wrap .postbox .chart-widgets{margin:0;padding:0}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget{margin:0 0 1em;background:#fafafa;border:1px solid #dfdfdf}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget::after,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget::after{content:'.';display:block;height:0;clear:both;visibility:hidden}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget h4,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget h4{background:#fff;border:1px solid #dfdfdf;border-left-width:0;border-right-width:0;padding:10px;margin:0;color:#2ea2cc;border-top-width:0;background-image:-webkit-gradient(linear,left bottom,left top,from(#ececec),to(#f9f9f9));background-image:-webkit-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-moz-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-o-linear-gradient(bottom,#ececec,#f9f9f9);background-image:linear-gradient(to top,#ececec,#f9f9f9)}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.count,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table tr.active td,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.count,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table tr.active td{background:#f5f5f5}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget h4.section_title:hover,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget h4.section_title:hover{color:#a00}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title{cursor:pointer}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title span,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title span{display:block}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title span::after,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title span::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin-left:.618em;content:"";text-decoration:none;float:right;font-size:.9em;line-height:1.618}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title.open,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title.open{color:#333}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title.open span::after,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title.open span::after{display:none}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section{border-bottom:1px solid #dfdfdf}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section .select2-container,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section .select2-container{width:100%!important}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section:last-of-type,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section:last-of-type{border-radius:0 0 3px 3px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table{width:100%}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td{padding:7px 10px;vertical-align:top;border-top:1px solid #e5e5e5;line-height:1.4em}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table tr:first-child td,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table tr:first-child td{border-top:0}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.name,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.name{max-width:175px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.name a,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.name a{word-wrap:break-word}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.sparkline,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.sparkline{vertical-align:middle}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table .wc_sparkline,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table .wc_sparkline{width:32px;height:1em;display:block;float:right}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget form,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget p,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget form,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget p{margin:0;padding:10px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget form .submit,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget p .submit,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget form .submit,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget p .submit{margin-top:10px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget #product_ids,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget #product_ids{width:100%}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .select_all,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .select_none,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .select_all,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .select_none{float:right;color:#999;margin-left:4px;margin-top:10px}.woocommerce-reports-wide .postbox .chart-legend,.woocommerce-reports-wrap .postbox .chart-legend{list-style:none;margin:0 0 1em;padding:0;border:1px solid #dfdfdf;border-right-width:0;border-bottom-width:0;background:#fff}.woocommerce-reports-wide .postbox .chart-legend li,.woocommerce-reports-wrap .postbox .chart-legend li{border-right:5px solid #aaa;color:#aaa;padding:1em;display:block;margin:0;-webkit-transition:all ease .5s;box-shadow:inset 0 -1px 0 0 #dfdfdf}.woocommerce-reports-wide .postbox .chart-legend li strong,.woocommerce-reports-wrap .postbox .chart-legend li strong{font-size:1.618em;line-height:1.2em;color:#464646;font-weight:400;display:block;font-family:HelveticaNeue-Light,'Helvetica Neue Light','Helvetica Neue',sans-serif}.woocommerce-reports-wide .postbox .chart-legend li strong del,.woocommerce-reports-wrap .postbox .chart-legend li strong del{color:#e74c3c;font-weight:400}.woocommerce-reports-wide .postbox .chart-legend li:hover,.woocommerce-reports-wrap .postbox .chart-legend li:hover{box-shadow:inset 0 -1px 0 0 #dfdfdf,inset 300px 0 0 rgba(156,93,144,.1);border-right:5px solid #9c5d90!important;padding-left:1.5em;color:#9c5d90}.woocommerce-reports-wide .postbox .pie-chart-legend,.woocommerce-reports-wrap .postbox .pie-chart-legend{margin:12px 0 0;overflow:hidden}.woocommerce-reports-wide .postbox .pie-chart-legend li,.woocommerce-reports-wrap .postbox .pie-chart-legend li{float:left;margin:0;padding:6px 0 0;border-top:4px solid #999;text-align:center;box-sizing:border-box;width:50%}.woocommerce-reports-wide .postbox .stat,.woocommerce-reports-wrap .postbox .stat{font-size:1.5em!important;font-weight:700;text-align:center}.woocommerce-reports-wide .postbox .chart-placeholder,.woocommerce-reports-wrap .postbox .chart-placeholder{width:100%;height:650px;overflow:hidden;position:relative}.woocommerce-reports-wide .postbox .chart-prompt,.woocommerce-reports-wrap .postbox .chart-prompt{line-height:650px;margin:0;color:#999;font-size:1.2em;font-style:italic;text-align:center}.woocommerce-reports-wide .postbox .chart-container,.woocommerce-reports-wrap .postbox .chart-container{background:#fff;padding:12px;position:relative;border:1px solid #dfdfdf;border-radius:3px}.woocommerce-reports-wide .postbox .main .chart-legend,.woocommerce-reports-wrap .postbox .main .chart-legend{margin-top:12px}.woocommerce-reports-wide .postbox .main .chart-legend li,.woocommerce-reports-wrap .postbox .main .chart-legend li{border-right:0;margin:0 8px 0 0;float:left;border-top:4px solid #aaa}.woocommerce-reports-wide .woocommerce-reports-main,.woocommerce-reports-wrap .woocommerce-reports-main{float:left;min-width:100%}.woocommerce-reports-wide .woocommerce-reports-main table td,.woocommerce-reports-wrap .woocommerce-reports-main table td{padding:9px}.woocommerce-reports-wide .woocommerce-reports-sidebar,.woocommerce-reports-wrap .woocommerce-reports-sidebar{display:inline;width:281px;margin-left:-300px;clear:both;float:left}.woocommerce-reports-wide .woocommerce-reports-left,.woocommerce-reports-wrap .woocommerce-reports-left{width:49.5%;float:left}.woocommerce-reports-wide .woocommerce-reports-right,.woocommerce-reports-wrap .woocommerce-reports-right{width:49.5%;float:right}.woocommerce-reports-wide .column-wc_actions a.edit,.woocommerce-reports-wide .column-wc_actions a.view,.woocommerce-reports-wrap .column-wc_actions a.edit,.woocommerce-reports-wrap .column-wc_actions a.view{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.woocommerce-reports-wide .column-wc_actions a.edit::after,.woocommerce-reports-wide .column-wc_actions a.view::after,.woocommerce-reports-wrap .column-wc_actions a.edit::after,.woocommerce-reports-wrap .column-wc_actions a.view::after{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;line-height:1.85}.woocommerce-reports-wide .column-wc_actions a.edit::after,.woocommerce-reports-wrap .column-wc_actions a.edit::after{content:'\f464'}.woocommerce-reports-wide .column-wc_actions a.view::after,.woocommerce-reports-wrap .column-wc_actions a.view::after{content:'\f177'}.woocommerce-wide-reports-wrap{padding-bottom:11px}.woocommerce-wide-reports-wrap .widefat .export-data{float:right}.woocommerce-wide-reports-wrap .widefat td,.woocommerce-wide-reports-wrap .widefat th{vertical-align:middle;padding:7px}form.report_filters div,form.report_filters input,form.report_filters label,form.report_filters p{vertical-align:middle}.chart-tooltip{position:absolute;display:none;line-height:1}table.bar_chart{width:100%}table.bar_chart thead th{text-align:left;color:#ccc;padding:6px 0}table.bar_chart tbody th{padding:6px 0;width:25%;text-align:left!important;font-weight:400!important;border-bottom:1px solid #fee}table.bar_chart tbody td{text-align:right;line-height:24px;padding:6px 6px 6px 0;border-bottom:1px solid #fee}table.bar_chart tbody td span{color:#8a4b75;display:block}table.bar_chart tbody td span.alt{color:#47a03e;margin-top:6px}table.bar_chart tbody td.bars{position:relative;text-align:left;padding:6px 6px 6px 0;border-bottom:1px solid #fee}table.bar_chart tbody td.bars a,table.bar_chart tbody td.bars span{text-decoration:none;clear:both;background:#8a4b75;float:left;display:block;line-height:24px;height:24px;-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-khtml-border-radius:3px;border-radius:3px}.post-type-product .woocommerce-BlankState-message::before,.post-type-shop_coupon .woocommerce-BlankState-message::before,.post-type-shop_order .woocommerce-BlankState-message::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center}table.bar_chart tbody td.bars span.alt{clear:both;background:#47a03e}table.bar_chart tbody td.bars span.alt span{margin:0;color:#c5dec2!important;text-shadow:0 1px 0 #47a03e;background:0 0}.post-type-shop_order .woocommerce-BlankState-message::before{content:""}.post-type-shop_coupon .woocommerce-BlankState-message::before{content:""}.post-type-product .woocommerce-BlankState-message::before{content:""}.woocommerce-BlankState{text-align:center;padding:5em 0 0}.woocommerce-BlankState .woocommerce-BlankState-message{color:#aaa;margin:0 auto 1.5em;line-height:1.5em;font-size:1.2em;max-width:500px}.woocommerce-BlankState .woocommerce-BlankState-message::before{color:#ddd;text-shadow:0 -1px 1px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.8);font-size:8em;display:block;position:relative!important;top:auto;left:auto;line-height:1em;margin:0 0 .1875em}.woocommerce-BlankState .woocommerce-BlankState-cta{font-size:1.2em;padding:.75em 1.5em;height:auto}@media only screen and (max-width:1280px){#order_data .order_data_column{width:48%}#order_data .order_data_column:first-child{width:100%}.woocommerce_options_panel .description{display:block;clear:both;margin-left:0}.woocommerce_options_panel .dimensions_field .wrap,.woocommerce_options_panel .short,.woocommerce_options_panel input[type=text].short,.woocommerce_options_panel input[type=number].short,.woocommerce_options_panel input[type=email].short,.woocommerce_options_panel input[type=password].short{width:80%}.woocommerce_options_panel .downloadable_files,.woocommerce_variations .downloadable_files{padding:0;clear:both}.woocommerce_options_panel .downloadable_files label,.woocommerce_variations .downloadable_files label{position:static}.woocommerce_options_panel .downloadable_files table,.woocommerce_variations .downloadable_files table{margin:0 12px 24px;width:94%}.woocommerce_options_panel .downloadable_files table .sort,.woocommerce_variations .downloadable_files table .sort{visibility:hidden}.woocommerce_options_panel .woocommerce_variable_attributes .downloadable_files table,.woocommerce_variations .woocommerce_variable_attributes .downloadable_files table{margin:0 0 1em;width:100%}}@media only screen and (max-width:900px){#woocommerce-coupon-data ul.coupon_data_tabs,#woocommerce-product-data .wc-tabs-back,#woocommerce-product-data ul.product_data_tabs{width:10%}#woocommerce-coupon-data .wc-metaboxes-wrapper,#woocommerce-coupon-data .woocommerce_options_panel,#woocommerce-product-data .wc-metaboxes-wrapper,#woocommerce-product-data .woocommerce_options_panel{width:90%}#woocommerce-coupon-data ul.coupon_data_tabs li a,#woocommerce-product-data ul.product_data_tabs li a{position:relative;text-indent:-999px;padding:10px}#woocommerce-coupon-data ul.coupon_data_tabs li a::before,#woocommerce-product-data ul.product_data_tabs li a::before{position:absolute;top:0;right:0;bottom:0;left:0;text-indent:0;text-align:center;line-height:40px;width:100%;height:40px}}@media only screen and (max-width:782px){#wp-excerpt-media-buttons a{font-size:16px;line-height:37px;height:39px;padding:0 20px 0 15px}#wp-excerpt-editor-tools{padding-top:20px;padding-right:15px;overflow:hidden;margin-bottom:-1px}.post-type-product .wp-list-table .is-expanded td:not(.hidden),.post-type-shop_order .wp-list-table .is-expanded td:not(.hidden){overflow:visible}#woocommerce-product-data .checkbox{width:25px}.variations-pagenav{float:none;text-align:center;font-size:18px}.variations-pagenav .displaying-num{font-size:16px}.variations-pagenav a{padding:8px 20px 11px;font-size:18px}.variations-pagenav select{padding:0 20px}.variations-defaults{float:none;text-align:center;margin-top:10px}.post-type-product .wp-list-table .column-thumb{display:none;text-align:left;padding-bottom:0}.post-type-product .wp-list-table .column-thumb::before{display:none!important}.post-type-product .wp-list-table .column-thumb img{max-width:32px}.post-type-product .wp-list-table .toggle-row{top:-28px}.post-type-shop_order .wp-list-table .column-order_status{display:none;text-align:left;padding-bottom:0}.post-type-shop_order .wp-list-table .column-order_status mark{margin:0}.post-type-shop_order .wp-list-table .column-order_status::before{display:none!important}.post-type-shop_order .wp-list-table .column-customer_message,.post-type-shop_order .wp-list-table .column-order_notes{text-align:inherit}.post-type-shop_order .wp-list-table .column-order_notes .note-on{font-size:1.3em;margin:0}.post-type-shop_order .wp-list-table .toggle-row{top:-15px}}@media only screen and (max-width:500px){.woocommerce_options_panel label,.woocommerce_options_panel legend{float:none;width:auto;display:block;margin:0}.woocommerce_options_panel fieldset.form-field,.woocommerce_options_panel p.form-field{padding:5px 20px!important}}.wc-backbone-modal *{box-sizing:border-box}.wc-backbone-modal .wc-backbone-modal-content{position:fixed;background:#fff;z-index:100000;left:50%;top:50%;transform:translate(-50%,-50%);width:500px}.wc-backbone-modal .wc-backbone-modal-content article{overflow:auto}.wc-backbone-modal.wc-backbone-modal-shipping-method-settings .wc-backbone-modal-content{width:75%;min-width:500px}.wc-backbone-modal .select2-container{width:100%!important}.wc-backbone-modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;min-height:360px;background:#000;opacity:.7;z-index:99900}.wc-backbone-modal-main{padding-bottom:55px}.wc-backbone-modal-main article,.wc-backbone-modal-main header{display:block;position:relative}.wc-backbone-modal-main .wc-backbone-modal-header{height:auto;background:#fcfcfc;padding:1em 1.5em;border-bottom:1px solid #ddd}.wc-backbone-modal-main .wc-backbone-modal-header h1{margin:0;font-size:18px;font-weight:700;line-height:1.5em}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link{cursor:pointer;color:#777;height:54px;width:54px;padding:0;position:absolute;top:0;right:0;text-align:center;border:0;border-left:1px solid #ddd;background-color:transparent;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link::before{font:400 22px/50px dashicons!important;color:#666;display:block;content:'\f335';font-weight:300}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link:focus,.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link:hover{background:#ddd;border-color:#ccc;color:#000}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link:focus{outline:0}.wc-backbone-modal-main article{padding:1.5em}.wc-backbone-modal-main article p{margin:1.5em 0}.wc-backbone-modal-main article p:last-child,.wc-backbone-modal-main footer .inner .button{margin-bottom:0}.wc-backbone-modal-main article p:first-child{margin-top:0}.wc-backbone-modal-main article .pagination{padding:10px 0 0;text-align:center}.wc-backbone-modal-main footer{position:absolute;left:0;right:0;bottom:0;z-index:100;padding:1em 1.5em;background:#fcfcfc;border-top:1px solid #dfdfdf;box-shadow:0 -4px 4px -4px rgba(0,0,0,.1)}.select2-container .select2-selection,.select2-dropdown{border-color:#ddd}.wc-backbone-modal-main footer .inner{float:right;line-height:23px}.select2-drop,.select2-dropdown{z-index:999999!important}.select2-results{line-height:1.5em}.select2-results .select2-results__group,.select2-results .select2-results__option{margin:0;padding:8px}.select2-dropdown--below{box-shadow:0 1px 1px rgba(0,0,0,.1)}.select2-dropdown--above{box-shadow:0 -1px 1px rgba(0,0,0,.1)}.select2-selection__rendered.ui-sortable li{cursor:move}.select2-container .select2-search__field{min-width:150px}.select2-container .select2-selection--single{height:32px}.select2-container .select2-selection--single .select2-selection__rendered{line-height:32px;padding-right:24px}.select2-container .select2-selection--single .select2-selection__arrow{right:3px;height:30px}.select2-container .select2-selection--multiple{min-height:28px;border-radius:0;line-height:1.5}.select2-container .select2-selection--multiple li{margin:0}.select2-container .select2-selection--multiple .select2-selection__choice{padding:2px 6px}.select2-container .select2-selection__clear{color:#999;margin-top:-1px}.select2-container .select2-search--inline .select2-search__field{font-family:inherit;font-size:inherit;font-weight:inherit;padding:3px 0}.woocommerce table.form-table .select2-container{min-width:400px!important}.post-type-shop_order .tablenav .actions{overflow:visible}.post-type-shop_order .tablenav input,.post-type-shop_order .tablenav select{line-height:32px;height:32px}.post-type-shop_order .tablenav .select2-container{float:left;width:200px!important;font-size:14px;vertical-align:middle;margin:1px 6px 4px 1px} \ No newline at end of file +@charset "UTF-8";.button.wc-reload::after,.woocommerce-help-tip::after{speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased}@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg)}}@-moz-keyframes spin{100%{-moz-transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}.blockUI.blockOverlay::before{height:1em;width:1em;display:block;position:absolute;top:50%;left:50%;margin-left:-.5em;margin-top:-.5em;content:'';-webkit-animation:spin 1s ease-in-out infinite;-moz-animation:spin 1s ease-in-out infinite;animation:spin 1s ease-in-out infinite;background:url(../images/icons/loader.svg) center center;background-size:cover;line-height:1;text-align:center;font-size:2em;color:rgba(0,0,0,.75)}.wc_addons_wrap .addons-featured{max-width:1140px;margin:-1%}.wc_addons_wrap .addons-banner-block-item-icon,.wc_addons_wrap .addons-column-block-item-icon{align-items:center;display:flex;justify-content:center}.wc_addons_wrap .addons-banner-block{background:#fff;box-shadow:0 0 1px rgba(0,0,0,.2);margin:2% 1% 0;max-width:1140px;padding:20px}.wc_addons_wrap .addons-banner-block img{height:62px}.wc_addons_wrap .addons-banner-block p{margin:0 0 20px}.wc_addons_wrap .addons-banner-block-items{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-around;margin:0 -10px}.wc_addons_wrap .addons-banner-block-item{border:1px solid #e6e6e6;border-radius:3px;flex:1 1 200px;margin:10px;max-width:350px;min-width:200px;width:30%}.wc_addons_wrap .addons-banner-block-item-icon{background:#f7f7f7;height:143px}.wc_addons_wrap .addons-banner-block-item-content{display:flex;flex-direction:column;height:184px;justify-content:space-between;padding:24px}.wc_addons_wrap .addons-banner-block-item-content h3{margin-top:0}.wc_addons_wrap .addons-banner-block-item-content p{margin:0 0 auto}.wc_addons_wrap .addons-column-section{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-around}.wc_addons_wrap .addons-column{flex:1 1 200px;margin:0 1%;width:49.5%}.wc_addons_wrap .addons-column-block,.wc_addons_wrap .addons-small-dark-block,.wc_addons_wrap .addons-small-light-block{box-sizing:border-box;box-shadow:0 0 1px rgba(0,0,0,.2);margin:4% 0 0;padding:20px}.wc_addons_wrap .addons-column-block img{max-height:50px;max-width:50px}.wc_addons_wrap .addons-column-block,.wc_addons_wrap .addons-small-light-block{background:#fff}.wc_addons_wrap .addons-column-block-left{float:left}.wc_addons_wrap .addons-column-block-right{float:right}.wc_addons_wrap .addons-column-block-item{display:flex;border-top:2px solid #f9f9f9;flex-direction:row;flex-wrap:wrap;justify-content:space-between;margin:0 -20px;padding:20px}.wc_addons_wrap .addons-column-block-item-icon{background:#f7f7f7;border:1px solid #e6e6e6;height:100px;margin:0 10px 10px 0;width:100px}.wc_addons_wrap .addons-column-block-item-content{display:flex;flex:1 1 200px;flex-wrap:wrap;height:20%;justify-content:space-between;min-width:200px}.wc_addons_wrap .addons-column-block-item-content h2{float:left;margin-top:8px}.wc_addons_wrap .addons-column-block-item-content a{float:right}.wc_addons_wrap .addons-column-block-item-content p{float:left}.wc_addons_wrap .addons-small-dark-block{background-color:#54687d;text-align:center}.wc_addons_wrap .addons-small-dark-items{display:flex;flex-wrap:wrap;justify-content:space-around}.wc_addons_wrap .addons-small-dark-item{margin:0 0 20px}.wc_addons_wrap .addons-small-dark-block h1{color:#fff}.wc_addons_wrap .addons-small-dark-block p{color:#fafafa}.wc_addons_wrap .addons-small-dark-item-icon img{height:30px}.wc_addons_wrap .addons-small-dark-item a{margin:28px auto 0}.wc_addons_wrap .addons-small-light-block{display:flex;flex-wrap:wrap}.wc_addons_wrap .addons-small-light-block h1{margin-top:-12px}.wc_addons_wrap .addons-small-light-block p{margin-top:0}.wc_addons_wrap .addons-small-light-block img{height:225px;margin:0 0 0 -20px}.wc_addons_wrap .addons-small-light-block-content{display:flex;flex:1 1 100px;flex-direction:column;justify-content:space-around}.wc_addons_wrap .addons-small-light-block-buttons{display:flex;justify-content:space-between}.wc_addons_wrap .addons-small-light-block-content a{width:48%}.wc_addons_wrap .addons-button{border-radius:3px;cursor:pointer;display:block;height:37px;line-height:37px;text-align:center;text-decoration:none;width:124px}.wc_addons_wrap .addons-button-solid{background-color:#955a89;color:#fff}.wc_addons_wrap .addons-button-solid:hover{color:#fff;opacity:.8}.wc_addons_wrap .addons-button-outline-green{border:1px solid #73ae39;color:#73ae39}.wc_addons_wrap .addons-button-outline-green:hover{color:#73ae39;opacity:.8}.wc_addons_wrap .addons-button-outline-white{border:1px solid #fff;color:#fff}.wc_addons_wrap .addons-button-outline-white:hover{color:#fff;opacity:.8}.wc_addons_wrap .addons-button-installed{background:#e6e6e6;color:#3c3c3c}.wc_addons_wrap .addons-button-installed:hover{color:#3c3c3c;opacity:.8}@media only screen and (max-width:400px){.wc_addons_wrap .addons-featured{margin:-1% -5%}.wc_addons_wrap .addons-button,.wc_addons_wrap .addons-small-dark-item{width:100%}.wc_addons_wrap .addons-column-block-item-icon{background:0 0;border:none;height:75px;margin:0 10px 10px 0;width:75px}}.wc_addons_wrap .products{overflow:hidden}.wc_addons_wrap .products li{float:left;margin:0 1em 1em 0!important;padding:0;vertical-align:top;width:300px}.wc_addons_wrap .products li a{text-decoration:none;color:inherit;border:1px solid #ddd;display:block;min-height:220px;overflow:hidden;background:#f5f5f5;box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(0,0,0,.1)}.wc_addons_wrap .products li a img{max-width:258px;max-height:24px;padding:17px 20px;display:block;margin:0;background:#fff;border-right:260px solid #fff}.wc_addons_wrap .products li a .price,.wc_addons_wrap .products li a img.extension-thumb+h3{display:none}.wc_addons_wrap .products li a h2,.wc_addons_wrap .products li a h3{margin:0!important;padding:20px!important;background:#fff}.wc_addons_wrap .products li a p{padding:20px!important;margin:0!important;border-top:1px solid #f1f1f1}.wc_addons_wrap .products li a:focus,.wc_addons_wrap .products li a:hover{background-color:#fff}.wc_addons_wrap .storefront{background:url(../images/storefront-bg.jpg) bottom right #f6f6f6;border:1px solid #ddd;padding:20px;overflow:hidden;zoom:1}.wc_addons_wrap .storefront img{width:278px;height:auto;float:left;margin:0 20px 0 0;box-shadow:0 1px 6px rgba(0,0,0,.1)}.wc_addons_wrap .storefront p{max-width:750px}.woocommerce-BlankState a.button-primary,.woocommerce-BlankState button.button-primary,.woocommerce-message a.button-primary,.woocommerce-message button.button-primary{background:#bb77ae;border-color:#a36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;color:#fff;text-shadow:0 -1px 1px #a36597,1px 0 1px #a36597,0 1px 1px #a36597,-1px 0 1px #a36597;display:inline-block}.woocommerce-BlankState a.button-primary:active,.woocommerce-BlankState a.button-primary:focus,.woocommerce-BlankState a.button-primary:hover,.woocommerce-BlankState button.button-primary:active,.woocommerce-BlankState button.button-primary:focus,.woocommerce-BlankState button.button-primary:hover,.woocommerce-message a.button-primary:active,.woocommerce-message a.button-primary:focus,.woocommerce-message a.button-primary:hover,.woocommerce-message button.button-primary:active,.woocommerce-message button.button-primary:focus,.woocommerce-message button.button-primary:hover{background:#a36597;border-color:#a36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597}.woocommerce-message{position:relative;border-left-color:#cc99c2!important;overflow:hidden}.woocommerce-message a.docs,.woocommerce-message a.skip{text-decoration:none!important}.woocommerce-message a.woocommerce-message-close{position:absolute;top:10px;right:10px;padding:10px 15px 10px 21px;font-size:13px;line-height:1.23076923;text-decoration:none}.woocommerce-message a.woocommerce-message-close::before{position:absolute;top:8px;left:0;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.woocommerce-message .twitter-share-button{margin-top:-3px;margin-left:3px;vertical-align:middle}#variable_product_options #message,#variable_product_options .notice{margin:10px}.clear{clear:both}#woocommerce-fields-bulk.inline-edit-col label,#woocommerce-fields.inline-edit-col{clear:left}.wrap.woocommerce div.error,.wrap.woocommerce div.updated{margin-top:10px}mark.amount{background:0 0;color:inherit}.simplify-commerce-banner{overflow:hidden}.simplify-commerce-banner img{float:right;padding:15px 0;margin-left:1em;width:200px}.woocommerce-help-tip{color:#666;display:inline-block;font-size:1.1em;font-style:normal;height:16px;line-height:16px;position:relative;vertical-align:middle;width:16px}.woocommerce-help-tip::after{font-family:Dashicons;font-weight:400;line-height:1;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";cursor:help}h2 .woocommerce-help-tip{margin-top:-5px;margin-left:.25em}table.wc_status_table{margin-bottom:1em}table.wc_status_table h2{font-size:14px;margin:0}table.wc_status_table tr:nth-child(2n) td,table.wc_status_table tr:nth-child(2n) th{background:#fcfcfc}table.wc_status_table th{font-weight:700;padding:9px}table.wc_status_table td:first-child{width:33%}table.wc_status_table td.help{width:1em}table.wc_status_table td{padding:9px;font-size:1.1em}table.wc_status_table td mark{background:0 0}table.wc_status_table td mark.yes{color:#7ad03a}table.wc_status_table td mark.no{color:#999}table.wc_status_table td mark.error{color:#a00}table.wc_status_table td ul{margin:0}table.wc_status_table .help_tip{cursor:help}#debug-report{display:none;margin:10px 0;padding:0;position:relative}#debug-report textarea{font-family:monospace;width:100%;margin:0;height:300px;padding:20px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;resize:none;font-size:12px;line-height:20px;outline:0}.wp-list-table.logs .log-level{display:inline;padding:.2em .6em .3em;font-size:80%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.2em}.wp-list-table.logs .log-level:empty{display:none}.wp-list-table.logs .log-level--alert,.wp-list-table.logs .log-level--emergency{background-color:#ff4136}.wp-list-table.logs .log-level--critical,.wp-list-table.logs .log-level--error{background-color:#ff851b}.wp-list-table.logs .log-level--notice,.wp-list-table.logs .log-level--warning{color:#222;background-color:#ffdc00}.wp-list-table.logs .log-level--info{background-color:#0074d9}.wp-list-table.logs .log-level--debug{background-color:#3d9970}@media screen and (min-width:783px){.wp-list-table.logs .column-timestamp{width:18%}.wp-list-table.logs .column-level{width:14%}.wp-list-table.logs .column-source{width:15%}}#log-viewer-select{padding:10px 0 8px;line-height:28px}#log-viewer-select h2 a{vertical-align:middle}#log-viewer{background:#fff;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);padding:5px 20px}#log-viewer pre{font-family:monospace;white-space:pre-wrap}.inline-edit-product.quick-edit-row .inline-edit-col-center,.inline-edit-product.quick-edit-row .inline-edit-col-right{float:right!important}#woocommerce-fields.inline-edit-col label.featured,#woocommerce-fields.inline-edit-col label.manage_stock{margin-left:10px}#woocommerce-fields.inline-edit-col .dimensions div{display:block;margin:.2em 0}#woocommerce-fields.inline-edit-col .dimensions div span.title{display:block;float:left;width:5em}#woocommerce-fields.inline-edit-col .dimensions div span.input-text-wrap{display:block;margin-left:5em}#woocommerce-fields.inline-edit-col .text{box-sizing:border-box;width:99%;float:left;margin:1px 1% 1px 1px}#woocommerce-fields.inline-edit-col .height,#woocommerce-fields.inline-edit-col .length,#woocommerce-fields.inline-edit-col .width{width:32.33%}#woocommerce-fields.inline-edit-col .height{margin-right:0}#woocommerce-fields-bulk.inline-edit-col .inline-edit-group label{clear:none;width:49%;margin:.2em 0}#woocommerce-fields-bulk.inline-edit-col .inline-edit-group.dimensions label{width:75%;max-width:75%}#woocommerce-fields-bulk.inline-edit-col .length,#woocommerce-fields-bulk.inline-edit-col .regular_price,#woocommerce-fields-bulk.inline-edit-col .sale_price,#woocommerce-fields-bulk.inline-edit-col .stock,#woocommerce-fields-bulk.inline-edit-col .weight{box-sizing:border-box;width:100%;margin-left:4.4em}#woocommerce-fields-bulk.inline-edit-col .height,#woocommerce-fields-bulk.inline-edit-col .length,#woocommerce-fields-bulk.inline-edit-col .width{box-sizing:border-box;width:25%}.column-coupon_code{line-height:2.25em}.column-coupon_code,ul.wc_coupon_list{margin:0;overflow:hidden;zoom:1;clear:both}ul.wc_coupon_list li{margin:0}ul.wc_coupon_list li.code{display:inline-block}ul.wc_coupon_list li.code::after{content:', '}ul.wc_coupon_list li.code:last-of-type::after{display:none}ul.wc_coupon_list li.code .tips{cursor:pointer}ul.wc_coupon_list_block{margin:0;padding-bottom:2px}ul.wc_coupon_list_block li{border-top:1px solid #fff;border-bottom:1px solid #ccc;line-height:2.5em;margin:0;padding:.5em 0}ul.wc_coupon_list_block li:first-child{border-top:0;padding-top:0}ul.wc_coupon_list_block li:last-child{border-bottom:0;padding-bottom:0}.button.wc-reload{text-indent:-9999px;position:relative;padding:0;height:28px;width:28px!important;display:inline-block}.button.wc-reload::after{font-family:Dashicons;font-weight:400;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";line-height:28px}#order_data h2,#order_data p.order_number{font-family:HelveticaNeue-Light,'Helvetica Neue Light','Helvetica Neue',sans-serif;font-weight:400}#woocommerce-order-data .handlediv,#woocommerce-order-data .hndle{display:none}#woocommerce-order-data .inside{display:block!important}#order_data{padding:23px 24px 12px}#order_data h2{margin:0;font-size:21px;line-height:1.2;text-shadow:1px 1px 1px #fff;padding:0}#order_data h3{font-size:14px}#order_data h3,#order_data h4{color:#333;margin:1.33em 0 0}#order_data p{color:#777}#order_data p.order_number{margin:0;line-height:1.6em;font-size:16px}#order_data .order_data_column_container{clear:both}#order_data .order_data_column{width:32%;padding:0 2% 0 0;float:left}#order_data .order_data_column>h3 span{display:block}#order_data .order_data_column:last-child{padding-right:0}#order_data .order_data_column p{padding:0!important}#order_data .order_data_column .address strong{display:block}#order_data .order_data_column .form-field{float:left;clear:left;width:48%;padding:0;margin:9px 0 0}#order_data .order_data_column .form-field label{display:block;padding:0 0 3px}#order_data .order_data_column .form-field input,#order_data .order_data_column .form-field select,#order_data .order_data_column .form-field textarea{width:100%}#order_data .order_data_column .form-field .select2-container{width:100%!important}#order_data .order_data_column .form-field .date-picker{width:50%}#order_data .order_data_column .form-field .hour,#order_data .order_data_column .form-field .minute{width:3.5em}#order_data .order_data_column .form-field small{display:block;margin:5px 0 0;color:#999}#order_data .order_data_column ._billing_address_2_field,#order_data .order_data_column ._billing_last_name_field,#order_data .order_data_column ._billing_phone_field,#order_data .order_data_column ._billing_postcode_field,#order_data .order_data_column ._billing_state_field,#order_data .order_data_column ._shipping_address_2_field,#order_data .order_data_column ._shipping_last_name_field,#order_data .order_data_column ._shipping_postcode_field,#order_data .order_data_column ._shipping_state_field,#order_data .order_data_column .form-field.last{float:right;clear:right}#order_data .order_data_column ._billing_company_field,#order_data .order_data_column ._shipping_company_field,#order_data .order_data_column ._transaction_id_field,#order_data .order_data_column .form-field-wide{width:100%;clear:both}#order_data .order_data_column ._billing_company_field .wc-customer-search,#order_data .order_data_column ._billing_company_field .wc-enhanced-select,#order_data .order_data_column ._billing_company_field input,#order_data .order_data_column ._billing_company_field select,#order_data .order_data_column ._billing_company_field textarea,#order_data .order_data_column ._shipping_company_field .wc-customer-search,#order_data .order_data_column ._shipping_company_field .wc-enhanced-select,#order_data .order_data_column ._shipping_company_field input,#order_data .order_data_column ._shipping_company_field select,#order_data .order_data_column ._shipping_company_field textarea,#order_data .order_data_column ._transaction_id_field .wc-customer-search,#order_data .order_data_column ._transaction_id_field .wc-enhanced-select,#order_data .order_data_column ._transaction_id_field input,#order_data .order_data_column ._transaction_id_field select,#order_data .order_data_column ._transaction_id_field textarea,#order_data .order_data_column .form-field-wide .wc-customer-search,#order_data .order_data_column .form-field-wide .wc-enhanced-select,#order_data .order_data_column .form-field-wide input,#order_data .order_data_column .form-field-wide select,#order_data .order_data_column .form-field-wide textarea{width:100%}#order_data .order_data_column p.none_set{color:#999}#order_data .order_data_column div.edit_address{display:none;zoom:1;padding-right:1px}#order_data .order_data_column .wc-customer-user label a,#order_data .order_data_column .wc-order-status label a{float:right}#order_data .order_data_column a.edit_address{width:14px;height:0;padding:14px 0 0;margin:0 0 0 6px;overflow:hidden;position:relative;color:#999;border:0;float:right}#order_data .order_data_column a.edit_address:focus,#order_data .order_data_column a.edit_address:hover{color:#000}#order_data .order_data_column a.edit_address::after{position:absolute;top:0;left:0;text-align:center;vertical-align:top;line-height:14px;font-size:14px;font-weight:400;-webkit-font-smoothing:antialiased;font-family:Dashicons;content:'\f464'}#order_data .order_data_column .billing-same-as-shipping,#order_data .order_data_column .load_customer_billing,#order_data .order_data_column .load_customer_shipping{font-size:13px;display:inline-block;font-weight:400}#order_data .order_data_column .load_customer_shipping{margin-right:.3em}.order_actions{margin:0;overflow:hidden;zoom:1}.order_actions li{border-top:1px solid #fff;border-bottom:1px solid #ddd;padding:6px 0;margin:0;line-height:1.6em;float:left;width:50%;text-align:center}.order_actions li a{float:none;text-align:center;text-decoration:underline}.order_actions li.wide{width:auto;float:none;clear:both;padding:6px;text-align:left;overflow:hidden}.order_actions li #delete-action{line-height:25px;vertical-align:middle;text-align:left;float:left}.order_actions li .save_order{float:right}.order_actions li#actions{overflow:hidden}.order_actions li#actions .button{width:24px;box-sizing:border-box;float:right}.order_actions li#actions select{width:225px;box-sizing:border-box;float:left}#woocommerce-order-items .inside{margin:0;padding:0;background:#fefefe}#woocommerce-order-items .wc-order-data-row{border-bottom:1px solid #dfdfdf;padding:1.5em 2em;background:#f8f8f8;line-height:2em;text-align:right}#woocommerce-order-items .wc-order-data-row::after,#woocommerce-order-items .wc-order-data-row::before{content:' ';display:table}#woocommerce-order-items .wc-order-data-row::after{clear:both}#woocommerce-order-items .wc-order-data-row p{margin:0;line-height:2em}#woocommerce-order-items .wc-order-data-row .wc-used-coupons{text-align:left}#woocommerce-order-items .wc-order-data-row .wc-used-coupons .tips{display:inline-block}#woocommerce-order-items .wc-used-coupons{float:left;width:50%}#woocommerce-order-items .wc-order-totals{float:right;width:50%;margin:0;padding:0;text-align:right}#woocommerce-order-items .wc-order-totals .amount{font-weight:700}#woocommerce-order-items .wc-order-totals .label{vertical-align:top}#woocommerce-order-items .wc-order-totals .total{font-size:1em!important;width:10em;margin:0 0 0 .5em;box-sizing:border-box}#woocommerce-order-items .wc-order-totals .total input[type=text]{width:96%;float:right}#woocommerce-order-items .wc-order-totals .refunded-total{color:#a00}#woocommerce-order-items .refund-actions{margin-top:5px;padding-top:12px;border-top:1px solid #dfdfdf}#woocommerce-order-items .refund-actions .button{float:right;margin-left:4px}#woocommerce-order-items .refund-actions .cancel-action,#woocommerce-order-items .wc-order-item-bulk-edit .cancel-action{float:left;margin-left:0}#woocommerce-order-items .add_meta{margin-left:0!important}#woocommerce-order-items h3 small{color:#999}#woocommerce-order-items .amount{white-space:nowrap}#woocommerce-order-items .add-items .description{margin-right:10px}#woocommerce-order-items .add-items .button{float:left;margin-right:.25em}#woocommerce-order-items .add-items .button-primary{float:none;margin-right:0}#woocommerce-order-items .inside{display:block!important}#woocommerce-order-items .handlediv,#woocommerce-order-items .hndle{display:none}#woocommerce-order-items .woocommerce_order_items_wrapper{margin:0;overflow-x:auto}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items{width:100%;background:#fff}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th{text-align:left;padding:1em;font-weight:400;color:#999;background:#f8f8f8;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th.sortable{cursor:pointer}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th:last-child{padding-right:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th:first-child{padding-left:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th .wc-arrow{float:right;position:relative;margin-right:-1em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td{padding:1.5em 1em 1em;text-align:left;line-height:1.5em;vertical-align:top;border-bottom:1px solid #f8f8f8}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td textarea{width:100%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td select{width:50%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td textarea{font-size:14px;padding:4px;color:#555}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th:last-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td:last-child{padding-right:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td:first-child{padding-left:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr td{cursor:pointer}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr.selected{background:#f5ebf3}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr.selected td{border-color:#e6cce1;opacity:.8}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr:last-child td{border-bottom:1px solid #dfdfdf}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr:first-child td{border-top:8px solid #f8f8f8}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody#order_line_items tr:first-child td{border-top:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb{text-align:left;width:38px;padding-bottom:1.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb .wc-order-item-thumbnail{width:38px;height:38px;border:2px solid #e8e8e8;background:#f8f8f8;color:#ccc;position:relative;font-size:21px;display:block;text-align:center}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb .wc-order-item-thumbnail::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;height:100%;text-align:center;content:"";width:38px;line-height:38px;display:block}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb .wc-order-item-thumbnail img{width:100%;height:100%;margin:0;padding:0;position:relative}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.name .wc-order-item-sku,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.name .wc-order-item-variation{display:block;margin-top:.5em;font-size:.92em!important;color:#888}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item{min-width:200px}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .center,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .variation-id{text-align:center}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class{text-align:right}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class label{white-space:nowrap;color:#999;font-size:.833em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class label input{display:inline}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class input{width:70px;vertical-align:middle;text-align:right}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class select{width:85px;height:26px;vertical-align:middle;font-size:1em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input{display:inline-block;background:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);margin:1px 0;min-width:80px;overflow:hidden;line-height:1em;text-align:right}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input{width:100%;box-sizing:border-box}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input label{font-size:.75em;padding:4px 6px 0;color:#555;display:block}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input input{width:100%;box-sizing:border-box;border:0;box-shadow:none;margin:0;padding:0 6px 4px;color:#555;background:0 0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input input::-webkit-input-placeholder{color:#ddd}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input:first-child{border-bottom:1px dashed #ddd;background:#fff}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input:first-child label{color:#ccc}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .view{white-space:nowrap}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .edit{text-align:left}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class small.times{font-size:.92em!important;color:#888}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-taxes{margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-taxes label{display:block}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-discount{display:block;margin-top:.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class small.times{margin-right:.25em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity{text-align:center}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity input{text-align:center;width:50px}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items span.subtotal{opacity:.5}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.tax_class,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.tax_class{text-align:left}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .calculated{border-color:#ae8ca2;border-style:dotted}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta{width:100%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta{margin:.5em 0 0;font-size:.92em!important;color:#888}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.fee .thumb div::before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.refund .thumb div::before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .thumb div::before{color:#ccc;top:0;left:0;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-align:center;font-family:WooCommerce}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr th,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr th{border:0;padding:0 4px .5em 0;line-height:1.5em;width:20%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td{padding:0 4px .5em 0;border:0;line-height:1.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td input{width:100%;margin:0;position:relative;border-bottom:0;box-shadow:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .refund_by,ul.order_notes li p.meta .exact-date{border-bottom:1px dotted #999}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td textarea{width:100%;height:4em;margin:0;box-shadow:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td input:focus+textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td input:focus+textarea{border-top-color:#999}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td p,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td p{margin:0 0 .5em;line-height:1.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td p:last-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td p:last-child{margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.fee .thumb div{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.5em;line-height:1em;vertical-align:middle;margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.fee .thumb div::before{line-height:1;margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.refund .thumb div{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.5em;line-height:1em;vertical-align:middle;margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.refund .thumb div::before{line-height:1;margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .thumb div{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.5em;line-height:1em;vertical-align:middle;margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .thumb div::before{line-height:1;margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .shipping_method,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .shipping_method_name{width:100%;margin:0 0 .5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax{white-space:nowrap}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;float:right;font-size:14px;visibility:hidden;margin:3px -18px 0 0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax::before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";color:#999}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax:hover::before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax:hover::before{color:#a00}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax:hover .delete-order-tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax:hover .delete-order-tax{visibility:visible}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items small.refunded{display:block;color:#a00;white-space:nowrap;margin-top:.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items small.refunded::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-indent:0;width:100%;height:100%;text-align:center;content:"";position:relative;top:auto;left:auto;margin:-1px 4px 0 0;vertical-align:middle;line-height:1em}#woocommerce-order-items .wc-order-edit-line-item{padding-left:0}#woocommerce-order-items .wc-order-edit-line-item-actions{width:44px;text-align:right;padding-left:0;vertical-align:middle}#woocommerce-order-items .wc-order-edit-line-item-actions a{color:#ccc;display:inline-block;cursor:pointer;padding:0 0 .5em;margin:0 0 0 12px;vertical-align:middle;text-decoration:none;line-height:16px;width:16px;overflow:hidden}#woocommerce-order-items .wc-order-edit-line-item-actions a::before{margin:0;padding:0;font-size:16px;width:16px;height:16px}#woocommerce-order-items .wc-order-edit-line-item-actions .delete-order-item::before,#woocommerce-order-items .wc-order-edit-line-item-actions .delete_refund::before,#woocommerce-order-items .wc-order-edit-line-item-actions .edit-order-item::before{font-family:Dashicons;-webkit-font-smoothing:antialiased;top:0;left:0;width:100%;height:100%;margin:0;text-align:center;position:relative;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;text-indent:0}#woocommerce-order-items .wc-order-edit-line-item-actions a:hover::before{color:#999}#woocommerce-order-items .wc-order-edit-line-item-actions a:first-child{margin-left:0}#woocommerce-order-items .wc-order-edit-line-item-actions .edit-order-item::before{content:""}#woocommerce-order-items .wc-order-edit-line-item-actions .delete-order-item::before,#woocommerce-order-items .wc-order-edit-line-item-actions .delete_refund::before{content:""}#woocommerce-order-items .wc-order-edit-line-item-actions .delete-order-item:hover::before,#woocommerce-order-items .wc-order-edit-line-item-actions .delete_refund:hover::before{color:#a00}#woocommerce-order-items tbody tr .wc-order-edit-line-item-actions{visibility:hidden}#woocommerce-order-items tbody tr:hover .wc-order-edit-line-item-actions{visibility:visible}#woocommerce-order-items .wc-order-totals .wc-order-edit-line-item-actions{width:1.5em;visibility:visible!important}#woocommerce-order-items .wc-order-totals .wc-order-edit-line-item-actions a{padding:0}#woocommerce-order-downloads .buttons{float:left;padding:0;margin:0;vertical-align:top}#woocommerce-order-downloads .buttons .add_item_id,#woocommerce-order-downloads .buttons .select2-container{width:400px!important;margin-right:9px;vertical-align:top;float:left}#woocommerce-order-downloads .buttons button{margin:2px 0 0}#woocommerce-order-downloads h3 small{color:#999}#poststuff #woocommerce-order-actions .inside{margin:0;padding:0}#poststuff #woocommerce-order-actions .inside ul.order_actions li{padding:6px 10px;box-sizing:border-box}#poststuff #woocommerce-order-actions .inside ul.order_actions li:last-child{border-bottom:0}#poststuff #woocommerce-order-notes .inside{margin:0;padding:0}#poststuff #woocommerce-order-notes .inside ul.order_notes li{padding:0 10px}#woocommerce_customers p.search-box{margin:6px 0 4px;float:left}#woocommerce_customers .tablenav{float:right;clear:none}#woocommerce-product-images .inside #product_images_container ul::after,.woocommerce_variable_attributes .data::after{clear:both}.widefat.customers td{vertical-align:middle;padding:4px 7px}.widefat .column-order_title{width:15%}.widefat .column-order_title time{display:block;color:#999;margin:3px 0}.widefat .column-orders,.widefat .column-paying,.widefat .column-spent{text-align:center;width:8%}.widefat .column-last_order{width:11%}.widefat .column-order_actions,.widefat .column-user_actions,.widefat .column-wc_actions{width:110px}.widefat .column-order_actions a.button,.widefat .column-user_actions a.button,.widefat .column-wc_actions a.button{float:left;margin:0 4px 2px 0;cursor:pointer;padding:3px 4px;height:auto}.widefat .column-order_actions a.button img,.widefat .column-user_actions a.button img,.widefat .column-wc_actions a.button img{display:block;width:12px;height:auto}.widefat small.meta{display:block;color:#999;font-size:inherit;margin:3px 0}.widefat .column-order_date,.widefat .column-order_total{width:9%}.widefat .column-order_status{width:45px;text-align:center}.widefat .column-order_status mark{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;background:0 0;font-size:1.4em;margin:0 auto}.widefat .column-order_status mark.cancelled::after,.widefat .column-order_status mark.completed::after,.widefat .column-order_status mark.failed::after,.widefat .column-order_status mark.on-hold::after,.widefat .column-order_status mark.pending::after,.widefat .column-order_status mark.processing::after,.widefat .column-order_status mark.refunded::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center}.column-customer_message .note-on::after,.column-order_notes .note-on::after{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;top:0;left:0;text-align:center;line-height:16px;font-family:WooCommerce}.widefat .column-order_status mark.pending::after{content:'\e012';color:#ffba00}.widefat .column-order_status mark.completed::after{content:'\e015';color:#2ea2cc}.widefat .column-order_status mark.on-hold::after{content:'\e033';color:#999}.widefat .column-order_status mark.failed::after{content:'\e016';color:#d0c21f}.widefat .column-order_status mark.cancelled::after{content:'\e013';color:#a00}.widefat .column-order_status mark.processing::after{content:'\e011';color:#73a724}.widefat .column-order_status mark.refunded::after{content:'\e014';color:#999}.widefat td.column-order_status{padding-top:9px}.column-customer_message .note-on{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto;color:#999}.column-customer_message .note-on::after{margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}.column-order_notes .note-on{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto;color:#999}.column-order_notes .note-on::after{margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}.order_actions .complete,.order_actions .processing,.order_actions .view{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.order_actions .processing::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";line-height:1.85}.order_actions .complete::after,.order_actions .view::after{font-family:Dashicons;text-indent:0;position:absolute;width:100%;height:100%;left:0;line-height:1.85;margin:0;text-align:center;font-weight:400;top:0;speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased}.order_actions .complete::after{content:""}.order_actions .view::after{content:""}.user_actions .edit,.user_actions .link,.user_actions .refresh,.user_actions .view{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.user_actions .edit::after,.user_actions .link::after,.user_actions .refresh::after,.user_actions .view::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";line-height:1.85}.user_actions .edit::after{font-family:Dashicons;content:'\f464'}.user_actions .link::after{content:'\e00d'}.user_actions .view::after{content:'\e010'}.user_actions .refresh::after{content:'\e031'}.attributes-table td,.attributes-table th{width:15%;vertical-align:top}.attributes-table .attribute-terms{width:32%}.attributes-table .attribute-actions{width:2em}.attributes-table .attribute-actions .configure-terms{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.attributes-table .attribute-actions .configure-terms::after{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";font-family:Dashicons;line-height:1.85}ul.order_notes{padding:2px 0 0}ul.order_notes li .note_content{padding:10px;background:#efefef;position:relative}ul.order_notes li .note_content p{margin:0;padding:0;word-wrap:break-word}ul.order_notes li p.meta{padding:10px;color:#999;margin:0;font-size:11px}ul.order_notes li a.delete_note{color:#a00}table.wp-list-table .row-actions,table.wp-list-table span.na{color:#999}ul.order_notes li .note_content::after{content:'';display:block;position:absolute;bottom:-10px;left:20px;width:0;height:0;border-width:10px 10px 0 0;border-style:solid;border-color:#efefef transparent}ul.order_notes li.customer-note .note_content{background:#a7cedc}ul.order_notes li.customer-note .note_content::after{border-color:#a7cedc transparent}ul.order_notes li.system-note .note_content{background:#d7cad2}ul.order_notes li.system-note .note_content::after{border-color:#d7cad2 transparent}.add_note{border-top:1px solid #ddd;padding:10px 10px 0}.add_note h4{margin-top:5px!important}.add_note #add_order_note{width:100%;height:50px}table.wp-list-table .column-thumb{width:52px;text-align:center;white-space:nowrap}table.wp-list-table .column-name{width:22%}table.wp-list-table .column-product_cat,table.wp-list-table .column-product_tag{width:11%!important}table.wp-list-table .column-featured,table.wp-list-table .column-product_type{width:48px;text-align:left!important}table.wp-list-table .column-customer_message,table.wp-list-table .column-order_notes{width:48px;text-align:center}table.wp-list-table .column-customer_message img,table.wp-list-table .column-order_notes img{margin:0 auto;padding-top:0!important}table.wp-list-table .manage-column.column-featured img,table.wp-list-table .manage-column.column-product_type img{padding-left:2px}table.wp-list-table .column-price .woocommerce-price-suffix{display:none}table.wp-list-table img{margin:1px 2px}table.wp-list-table td.column-thumb img{margin:0;width:auto;height:auto;max-width:40px;max-height:40px;vertical-align:middle}table.wp-list-table .column-is_in_stock{text-align:left!important}table.wp-list-table span.wc-featured,table.wp-list-table span.wc-image,table.wp-list-table span.wc-type{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto}table.wp-list-table span.wc-featured::before,table.wp-list-table span.wc-image::before,table.wp-list-table span.wc-type::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:""}table.wp-list-table span.wc-featured::before{content:'\f155'}table.wp-list-table span.wc-featured.not-featured::before{content:'\f154'}table.wp-list-table td.column-featured span.wc-featured{font-size:1.6em;cursor:pointer}table.wp-list-table span.wc-type::before{font-family:WooCommerce;content:'\e006'}table.wp-list-table span.product-type{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.6em;margin:0 auto}table.wp-list-table span.product-type::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:""}table.wp-list-table span.product-type.grouped::before{content:'\e002'}table.wp-list-table span.product-type.external::before{content:'\e034'}table.wp-list-table span.product-type.variable::before{content:'\e003'}table.wp-list-table span.product-type.downloadable::before{content:'\e001'}table.wp-list-table span.product-type.virtual::before{content:'\e000'}table.wp-list-table mark.instock{font-weight:700;color:#7ad03a;background:0 0;line-height:1}table.wp-list-table mark.outofstock{font-weight:700;color:#a44;background:0 0;line-height:1}table.wp-list-table .notes_head,table.wp-list-table .order-notes_head,table.wp-list-table .status_head{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto}table.wp-list-table .notes_head::after,table.wp-list-table .order-notes_head::after,table.wp-list-table .status_head::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center}table.wc_emails .wc-email-settings-table-name,table.wc_emails td.name,table.wc_gateways .wc-email-settings-table-name,table.wc_gateways td.name,table.wc_shipping .wc-email-settings-table-name,table.wc_shipping td.name{font-weight:700}table.wp-list-table .order-notes_head::after{content:'\e028'}table.wp-list-table .notes_head::after{content:'\e026'}table.wp-list-table .status_head::after{content:'\e011'}table.wp-list-table .column-order_items{width:12%}table.wp-list-table .column-order_items table.order_items{width:100%;margin:3px 0 0;padding:0;display:none}table.wp-list-table .column-order_items table.order_items td{border:0;margin:0;padding:0 0 3px}table.wp-list-table .column-order_items table.order_items td.qty{color:#999;padding-right:6px;text-align:left}mark.notice{background:#fff;color:#a00;margin:0 0 0 10px}a.export_rates,a.import_rates{float:right;margin-left:9px;margin-top:-2px;margin-bottom:0}#rates-search{float:right}#rates-search input.wc-tax-rates-search-field{padding:4px 8px;font-size:1.2em}#rates-pagination{float:right;margin-right:.5em}#rates-pagination .tablenav{margin:0}table.wc_input_table,table.wc_tax_rates{width:100%}table.wc_input_table span.tips,table.wc_tax_rates span.tips{color:#2ea2cc}table.wc_input_table th,table.wc_tax_rates th{white-space:nowrap;padding:10px}table.wc_input_table td,table.wc_tax_rates td{padding:0;border-right:1px solid #dfdfdf;border-bottom:1px solid #dfdfdf;border-top:0;background:#fff;cursor:default}table.wc_input_table td input[type=text],table.wc_input_table td input[type=number],table.wc_tax_rates td input[type=text],table.wc_tax_rates td input[type=number]{width:100%;padding:8px 10px;margin:0;border:0;outline:0;background:0 0}table.wc_input_table td input[type=text]:focus,table.wc_input_table td input[type=number]:focus,table.wc_tax_rates td input[type=text]:focus,table.wc_tax_rates td input[type=number]:focus{outline:0;box-shadow:none}table.wc_input_table td.apply_to_shipping,table.wc_input_table td.compound,table.wc_tax_rates td.apply_to_shipping,table.wc_tax_rates td.compound{padding:5px 7px;vertical-align:middle}table.wc_input_table td.apply_to_shipping input,table.wc_input_table td.compound input,table.wc_tax_rates td.apply_to_shipping input,table.wc_tax_rates td.compound input{width:auto;padding:0}table.wc_input_table td:last-child,table.wc_tax_rates td:last-child{border-right:0}table.wc_input_table tr.current td,table.wc_tax_rates tr.current td{background-color:#fefbcc}table.wc_input_table .cost,table.wc_input_table .cost input,table.wc_input_table .item_cost,table.wc_input_table .item_cost input,table.wc_tax_rates .cost,table.wc_tax_rates .cost input,table.wc_tax_rates .item_cost,table.wc_tax_rates .item_cost input{text-align:right}table.wc_input_table th.sort,table.wc_tax_rates th.sort{width:17px;padding:0 4px}table.wc_input_table td.sort,table.wc_tax_rates td.sort{padding:0 4px}table.wc_input_table .ui-sortable:not(.ui-sortable-disabled) td.sort,table.wc_tax_rates .ui-sortable:not(.ui-sortable-disabled) td.sort{cursor:move;font-size:15px;background:#f9f9f9;text-align:center;vertical-align:middle}table.wc_input_table .ui-sortable:not(.ui-sortable-disabled) td.sort::before,table.wc_tax_rates .ui-sortable:not(.ui-sortable-disabled) td.sort::before{content:'\f333';font-family:Dashicons;text-align:center;line-height:1;color:#999;display:block;width:17px;float:left;height:100%}table.wc_input_table .ui-sortable:not(.ui-sortable-disabled) td.sort:hover::before,table.wc_tax_rates .ui-sortable:not(.ui-sortable-disabled) td.sort:hover::before{color:#333}table.wc_input_table .button,table.wc_tax_rates .button{float:left;margin-right:5px}table.wc_input_table .export,table.wc_input_table .import,table.wc_tax_rates .export,table.wc_tax_rates .import{float:right;margin-right:0;margin-left:5px}table.wc_input_table span.tips,table.wc_tax_rates span.tips{padding:0 3px}table.wc_input_table .pagination,table.wc_tax_rates .pagination{float:right}table.wc_input_table .pagination .button,table.wc_tax_rates .pagination .button{margin-left:5px;margin-right:0}table.wc_input_table .pagination .current,table.wc_tax_rates .pagination .current{background:#bbb;text-shadow:none}table.wc_input_table tr:last-child td,table.wc_tax_rates tr:last-child td{border-bottom:0}table.wc_emails,table.wc_gateways,table.wc_shipping{position:relative}table.wc_emails td,table.wc_gateways td,table.wc_shipping td{vertical-align:middle;padding:7px;line-height:2em}table.wc_emails tr:nth-child(odd) td,table.wc_gateways tr:nth-child(odd) td,table.wc_shipping tr:nth-child(odd) td{background:#f9f9f9}table.wc_emails th,table.wc_gateways th,table.wc_shipping th{padding:9px 7px!important;vertical-align:middle}table.wc_emails .settings,table.wc_gateways .settings,table.wc_shipping .settings{text-align:right}table.wc_emails .default,table.wc_emails .radio,table.wc_emails .status,table.wc_gateways .default,table.wc_gateways .radio,table.wc_gateways .status,table.wc_shipping .default,table.wc_shipping .radio,table.wc_shipping .status{text-align:center}table.wc_emails .default .tips,table.wc_emails .radio .tips,table.wc_emails .status .tips,table.wc_gateways .default .tips,table.wc_gateways .radio .tips,table.wc_gateways .status .tips,table.wc_shipping .default .tips,table.wc_shipping .radio .tips,table.wc_shipping .status .tips{margin:0 auto}table.wc_emails .default input,table.wc_emails .radio input,table.wc_emails .status input,table.wc_gateways .default input,table.wc_gateways .radio input,table.wc_gateways .status input,table.wc_shipping .default input,table.wc_shipping .radio input,table.wc_shipping .status input{margin:0}table.wc_emails th.sort,table.wc_gateways th.sort,table.wc_shipping th.sort{width:28px;padding:0}table.wc_emails td.sort,table.wc_gateways td.sort,table.wc_shipping td.sort{padding:0 7px;cursor:move;font-size:15px;text-align:center;vertical-align:middle}table.wc_emails td.sort::before,table.wc_gateways td.sort::before,table.wc_shipping td.sort::before{content:'\f333';font-family:Dashicons;text-align:center;line-height:1;color:#999;display:block;width:17px;float:left;height:100%}table.wc_emails .wc-email-settings-table-name span,table.wc_gateways .wc-email-settings-table-name span,table.wc_shipping .wc-email-settings-table-name span{font-weight:400;color:#999;margin:0 0 0 4px!important}table.wc_emails .wc-email-settings-table-status,table.wc_gateways .wc-email-settings-table-status,table.wc_shipping .wc-email-settings-table-status{text-align:center;width:1em}table.wc_emails .wc-email-settings-table-status .tips,table.wc_gateways .wc-email-settings-table-status .tips,table.wc_shipping .wc-email-settings-table-status .tips{margin:0 auto}table.wc_emails .wc-email-settings-table-actions a,table.wc_gateways .wc-email-settings-table-actions a,table.wc_shipping .wc-email-settings-table-actions a{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}table.wc_emails .wc-email-settings-table-actions a::after,table.wc_gateways .wc-email-settings-table-actions a::after,table.wc_shipping .wc-email-settings-table-actions a::after{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";font-family:Dashicons;line-height:1.85}.wc-shipping-zone-settings th{padding:24px 24px 24px 0}.wc-shipping-zone-settings td.forminp{padding:15px 10px}.wc-shipping-zone-settings td.forminp input,.wc-shipping-zone-settings td.forminp textarea{padding:8px;width:448px;max-width:100%!important}.wc-shipping-zone-settings td.forminp .wc-shipping-zone-region-select{width:448px;max-width:100%!important}.wc-shipping-zone-settings td.forminp .wc-shipping-zone-region-select .select2-choices{padding:8px 8px 4px;border-color:#DDD;min-height:0;line-height:1}.wc-shipping-zone-settings td.forminp .wc-shipping-zone-region-select .select2-choices input{padding:0}.wc-shipping-zone-settings td.forminp .wc-shipping-zone-region-select .select2-choices li{margin:0 4px 4px 0}.wc-shipping-zone-settings .wc-shipping-zone-postcodes-toggle{margin:.5em 0 0;font-size:.9em;text-decoration:underline;display:block}.wc-shipping-zone-settings .wc-shipping-zone-postcodes-toggle+.wc-shipping-zone-postcodes{display:none}.wc-shipping-zone-settings .wc-shipping-zone-postcodes textarea{margin:10px 0}.wc-shipping-zone-settings .wc-shipping-zone-postcodes .description{font-size:.9em;color:#999}.wc-shipping-zone-settings+p.submit{margin-top:0}table tr table.wc-shipping-zone-methods tr .row-actions,table tr:hover table.wc-shipping-zone-methods tr .row-actions{position:relative}table tr table.wc-shipping-zone-methods tr:hover .row-actions,table tr:hover table.wc-shipping-zone-methods tr:hover .row-actions{position:static}.wc-shipping-zones-heading .page-title-action{display:inline-block}table.wc-shipping-classes td,table.wc-shipping-classes th,table.wc-shipping-zone-methods td,table.wc-shipping-zone-methods th,table.wc-shipping-zones td,table.wc-shipping-zones th{vertical-align:top;line-height:24px;padding:1em!important;font-size:14px;background:#fff}table.wc-shipping-classes td li,table.wc-shipping-classes th li,table.wc-shipping-zone-methods td li,table.wc-shipping-zone-methods th li,table.wc-shipping-zones td li,table.wc-shipping-zones th li{line-height:24px;font-size:14px}table.wc-shipping-classes td .woocommerce-help-tip,table.wc-shipping-classes th .woocommerce-help-tip,table.wc-shipping-zone-methods td .woocommerce-help-tip,table.wc-shipping-zone-methods th .woocommerce-help-tip,table.wc-shipping-zones td .woocommerce-help-tip,table.wc-shipping-zones th .woocommerce-help-tip{margin:0!important}table.wc-shipping-classes thead th,table.wc-shipping-zone-methods thead th,table.wc-shipping-zones thead th{vertical-align:middle}table.wc-shipping-classes thead .wc-shipping-zone-sort,table.wc-shipping-zone-methods thead .wc-shipping-zone-sort,table.wc-shipping-zones thead .wc-shipping-zone-sort{text-align:center}table.wc-shipping-classes tbody td,table.wc-shipping-zone-methods tbody td,table.wc-shipping-zones tbody td{padding:1.5em 1em!important}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state,table.wc-shipping-classes td.wc-shipping-zones-blank-state,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state,table.wc-shipping-zones td.wc-shipping-zones-blank-state{background:#f7f1f6!important;overflow:hidden;position:relative;padding:7.5em 7.5%!important;border-bottom:2px solid #eee2ec}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state,table.wc-shipping-classes td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state,table.wc-shipping-zones td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state{padding:2em!important}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state p,table.wc-shipping-classes td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state p,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state p,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state p,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state.wc-shipping-zone-method-blank-state p,table.wc-shipping-zones td.wc-shipping-zones-blank-state.wc-shipping-zone-method-blank-state p{margin-bottom:0}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state li,table.wc-shipping-classes td.wc-shipping-zone-method-blank-state p,table.wc-shipping-classes td.wc-shipping-zones-blank-state li,table.wc-shipping-classes td.wc-shipping-zones-blank-state p,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state p,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state p,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state p,table.wc-shipping-zones td.wc-shipping-zones-blank-state li,table.wc-shipping-zones td.wc-shipping-zones-blank-state p{color:#a46497;font-size:1.5em;line-height:1.5em;margin:0 0 1em;position:relative;z-index:1;text-shadow:1px 1px 1px #fff}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state li.main,table.wc-shipping-classes td.wc-shipping-zone-method-blank-state p.main,table.wc-shipping-classes td.wc-shipping-zones-blank-state li.main,table.wc-shipping-classes td.wc-shipping-zones-blank-state p.main,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state li.main,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state p.main,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state li.main,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state p.main,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state li.main,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state p.main,table.wc-shipping-zones td.wc-shipping-zones-blank-state li.main,table.wc-shipping-zones td.wc-shipping-zones-blank-state p.main{font-size:2em}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state li,table.wc-shipping-classes td.wc-shipping-zones-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state li,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zones td.wc-shipping-zones-blank-state li{margin-left:1em;list-style:circle inside}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state::before,table.wc-shipping-classes td.wc-shipping-zones-blank-state::before,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state::before,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state::before,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state::before,table.wc-shipping-zones td.wc-shipping-zones-blank-state::before{content:'\e01b';font-family:WooCommerce;text-align:center;line-height:1;color:#eee2ec;display:block;width:1em;font-size:40em;top:50%;right:-3.75%;margin-top:-.1875em;position:absolute}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state .button-primary,table.wc-shipping-classes td.wc-shipping-zones-blank-state .button-primary,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state .button-primary,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state .button-primary,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state .button-primary,table.wc-shipping-zones td.wc-shipping-zones-blank-state .button-primary{background-color:#804877;border-color:#804877;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 0 rgba(0,0,0,.15);margin:0;opacity:1;text-shadow:0 -1px 1px #8a4f7f,1px 0 1px #8a4f7f,0 1px 1px #8a4f7f,-1px 0 1px #8a4f7f;font-size:1.5em;padding:.75em 1em;height:auto;position:relative;z-index:1}table.wc-shipping-classes .wc-shipping-class-rows tr:nth-child(odd) td,table.wc-shipping-classes .wc-shipping-zone-method-rows tr:nth-child(odd) td,table.wc-shipping-classes tbody.wc-shipping-zone-rows tr:nth-child(odd) td,table.wc-shipping-classes tr.odd td,table.wc-shipping-zone-methods .wc-shipping-class-rows tr:nth-child(odd) td,table.wc-shipping-zone-methods .wc-shipping-zone-method-rows tr:nth-child(odd) td,table.wc-shipping-zone-methods tbody.wc-shipping-zone-rows tr:nth-child(odd) td,table.wc-shipping-zone-methods tr.odd td,table.wc-shipping-zones .wc-shipping-class-rows tr:nth-child(odd) td,table.wc-shipping-zones .wc-shipping-zone-method-rows tr:nth-child(odd) td,table.wc-shipping-zones tbody.wc-shipping-zone-rows tr:nth-child(odd) td,table.wc-shipping-zones tr.odd td{background:#f9f9f9}table.wc-shipping-classes p,table.wc-shipping-classes ul,table.wc-shipping-zone-methods p,table.wc-shipping-zone-methods ul,table.wc-shipping-zones p,table.wc-shipping-zones ul{margin:0}table.wc-shipping-classes td.wc-shipping-zone-method-sort,table.wc-shipping-classes td.wc-shipping-zone-sort,table.wc-shipping-zone-methods td.wc-shipping-zone-method-sort,table.wc-shipping-zone-methods td.wc-shipping-zone-sort,table.wc-shipping-zones td.wc-shipping-zone-method-sort,table.wc-shipping-zones td.wc-shipping-zone-sort{cursor:move;font-size:15px;text-align:center}table.wc-shipping-classes td.wc-shipping-zone-method-sort::before,table.wc-shipping-classes td.wc-shipping-zone-sort::before,table.wc-shipping-zone-methods td.wc-shipping-zone-method-sort::before,table.wc-shipping-zone-methods td.wc-shipping-zone-sort::before,table.wc-shipping-zones td.wc-shipping-zone-method-sort::before,table.wc-shipping-zones td.wc-shipping-zone-sort::before{content:'\f333';font-family:Dashicons;text-align:center;color:#999;display:block;width:17px;float:left;height:100%;line-height:24px}table.wc-shipping-classes td.wc-shipping-zone-method-sort:hover::before,table.wc-shipping-classes td.wc-shipping-zone-sort:hover::before,table.wc-shipping-zone-methods td.wc-shipping-zone-method-sort:hover::before,table.wc-shipping-zone-methods td.wc-shipping-zone-sort:hover::before,table.wc-shipping-zones td.wc-shipping-zone-method-sort:hover::before,table.wc-shipping-zones td.wc-shipping-zone-sort:hover::before{color:#333}table.wc-shipping-classes td.wc-shipping-zone-worldwide,table.wc-shipping-zone-methods td.wc-shipping-zone-worldwide,table.wc-shipping-zones td.wc-shipping-zone-worldwide{text-align:center}table.wc-shipping-classes td.wc-shipping-zone-worldwide::before,table.wc-shipping-zone-methods td.wc-shipping-zone-worldwide::before,table.wc-shipping-zones td.wc-shipping-zone-worldwide::before{content:'\f319';font-family:dashicons;text-align:center;color:#999;display:block;width:17px;float:left;height:100%;line-height:24px}table.wc-shipping-classes .wc-shipping-zone-methods,table.wc-shipping-classes .wc-shipping-zone-name,table.wc-shipping-zone-methods .wc-shipping-zone-methods,table.wc-shipping-zone-methods .wc-shipping-zone-name,table.wc-shipping-zones .wc-shipping-zone-methods,table.wc-shipping-zones .wc-shipping-zone-name{width:25%}table.wc-shipping-classes .wc-shipping-class-description input,table.wc-shipping-classes .wc-shipping-class-description select,table.wc-shipping-classes .wc-shipping-class-description textarea,table.wc-shipping-classes .wc-shipping-class-name input,table.wc-shipping-classes .wc-shipping-class-name select,table.wc-shipping-classes .wc-shipping-class-name textarea,table.wc-shipping-classes .wc-shipping-class-slug input,table.wc-shipping-classes .wc-shipping-class-slug select,table.wc-shipping-classes .wc-shipping-class-slug textarea,table.wc-shipping-classes .wc-shipping-zone-name input,table.wc-shipping-classes .wc-shipping-zone-name select,table.wc-shipping-classes .wc-shipping-zone-name textarea,table.wc-shipping-classes .wc-shipping-zone-region input,table.wc-shipping-classes .wc-shipping-zone-region select,table.wc-shipping-classes .wc-shipping-zone-region textarea,table.wc-shipping-zone-methods .wc-shipping-class-description input,table.wc-shipping-zone-methods .wc-shipping-class-description select,table.wc-shipping-zone-methods .wc-shipping-class-description textarea,table.wc-shipping-zone-methods .wc-shipping-class-name input,table.wc-shipping-zone-methods .wc-shipping-class-name select,table.wc-shipping-zone-methods .wc-shipping-class-name textarea,table.wc-shipping-zone-methods .wc-shipping-class-slug input,table.wc-shipping-zone-methods .wc-shipping-class-slug select,table.wc-shipping-zone-methods .wc-shipping-class-slug textarea,table.wc-shipping-zone-methods .wc-shipping-zone-name input,table.wc-shipping-zone-methods .wc-shipping-zone-name select,table.wc-shipping-zone-methods .wc-shipping-zone-name textarea,table.wc-shipping-zone-methods .wc-shipping-zone-region input,table.wc-shipping-zone-methods .wc-shipping-zone-region select,table.wc-shipping-zone-methods .wc-shipping-zone-region textarea,table.wc-shipping-zones .wc-shipping-class-description input,table.wc-shipping-zones .wc-shipping-class-description select,table.wc-shipping-zones .wc-shipping-class-description textarea,table.wc-shipping-zones .wc-shipping-class-name input,table.wc-shipping-zones .wc-shipping-class-name select,table.wc-shipping-zones .wc-shipping-class-name textarea,table.wc-shipping-zones .wc-shipping-class-slug input,table.wc-shipping-zones .wc-shipping-class-slug select,table.wc-shipping-zones .wc-shipping-class-slug textarea,table.wc-shipping-zones .wc-shipping-zone-name input,table.wc-shipping-zones .wc-shipping-zone-name select,table.wc-shipping-zones .wc-shipping-zone-name textarea,table.wc-shipping-zones .wc-shipping-zone-region input,table.wc-shipping-zones .wc-shipping-zone-region select,table.wc-shipping-zones .wc-shipping-zone-region textarea{width:100%}table.wc-shipping-classes .wc-shipping-class-description a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-class-description a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-class-name a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-class-name a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-class-slug a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-class-slug a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-zone-name a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-zone-name a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-zone-region a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-zone-region a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-class-description a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-class-description a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-class-name a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-class-name a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-class-slug a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-class-slug a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-zone-name a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-zone-name a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-zone-region a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-zone-region a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-class-description a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-class-description a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-class-name a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-class-name a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-class-slug a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-class-slug a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-zone-name a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-zone-name a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-zone-region a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-zone-region a.wc-shipping-zone-delete{color:#a00}table.wc-shipping-classes .wc-shipping-class-description a.wc-shipping-class-delete:hover,table.wc-shipping-classes .wc-shipping-class-description a.wc-shipping-zone-delete:hover,table.wc-shipping-classes .wc-shipping-class-name a.wc-shipping-class-delete:hover,table.wc-shipping-classes .wc-shipping-class-name a.wc-shipping-zone-delete:hover,table.wc-shipping-classes .wc-shipping-class-slug a.wc-shipping-class-delete:hover,table.wc-shipping-classes .wc-shipping-class-slug a.wc-shipping-zone-delete:hover,table.wc-shipping-classes .wc-shipping-zone-name a.wc-shipping-class-delete:hover,table.wc-shipping-classes .wc-shipping-zone-name a.wc-shipping-zone-delete:hover,table.wc-shipping-classes .wc-shipping-zone-region a.wc-shipping-class-delete:hover,table.wc-shipping-classes .wc-shipping-zone-region a.wc-shipping-zone-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-description a.wc-shipping-class-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-description a.wc-shipping-zone-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-name a.wc-shipping-class-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-name a.wc-shipping-zone-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-slug a.wc-shipping-class-delete:hover,table.wc-shipping-zone-methods .wc-shipping-class-slug a.wc-shipping-zone-delete:hover,table.wc-shipping-zone-methods .wc-shipping-zone-name a.wc-shipping-class-delete:hover,table.wc-shipping-zone-methods .wc-shipping-zone-name a.wc-shipping-zone-delete:hover,table.wc-shipping-zone-methods .wc-shipping-zone-region a.wc-shipping-class-delete:hover,table.wc-shipping-zone-methods .wc-shipping-zone-region a.wc-shipping-zone-delete:hover,table.wc-shipping-zones .wc-shipping-class-description a.wc-shipping-class-delete:hover,table.wc-shipping-zones .wc-shipping-class-description a.wc-shipping-zone-delete:hover,table.wc-shipping-zones .wc-shipping-class-name a.wc-shipping-class-delete:hover,table.wc-shipping-zones .wc-shipping-class-name a.wc-shipping-zone-delete:hover,table.wc-shipping-zones .wc-shipping-class-slug a.wc-shipping-class-delete:hover,table.wc-shipping-zones .wc-shipping-class-slug a.wc-shipping-zone-delete:hover,table.wc-shipping-zones .wc-shipping-zone-name a.wc-shipping-class-delete:hover,table.wc-shipping-zones .wc-shipping-zone-name a.wc-shipping-zone-delete:hover,table.wc-shipping-zones .wc-shipping-zone-region a.wc-shipping-class-delete:hover,table.wc-shipping-zones .wc-shipping-zone-region a.wc-shipping-zone-delete:hover{color:red}table.wc-shipping-classes .wc-shipping-class-count,table.wc-shipping-zone-methods .wc-shipping-class-count,table.wc-shipping-zones .wc-shipping-class-count{text-align:center}table.wc-shipping-classes td.wc-shipping-zone-methods,table.wc-shipping-zone-methods td.wc-shipping-zone-methods,table.wc-shipping-zones td.wc-shipping-zone-methods{color:#555}table.wc-shipping-classes td.wc-shipping-zone-methods .method_disabled,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .method_disabled,table.wc-shipping-zones td.wc-shipping-zone-methods .method_disabled{text-decoration:line-through}table.wc-shipping-classes td.wc-shipping-zone-methods ul,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul,table.wc-shipping-zones td.wc-shipping-zone-methods ul{position:relative;padding-right:32px}table.wc-shipping-classes td.wc-shipping-zone-methods ul li,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li,table.wc-shipping-zones td.wc-shipping-zone-methods ul li{color:#555;display:inline;margin:0}table.wc-shipping-classes td.wc-shipping-zone-methods ul li::before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li::before,table.wc-shipping-zones td.wc-shipping-zone-methods ul li::before{content:', '}table.wc-shipping-classes td.wc-shipping-zone-methods ul li:first-child::before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li:first-child::before,table.wc-shipping-zones td.wc-shipping-zone-methods ul li:first-child::before{content:''}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method{display:block;width:24px;padding:24px 0 0;height:0;overflow:hidden;cursor:pointer}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method::before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method::before,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method::before{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;font-family:Dashicons;content:'\f502';color:#999;vertical-align:middle;line-height:24px;font-size:16px;margin:0}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method.disabled,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method.disabled,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method.disabled{cursor:not-allowed}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method.disabled::before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method.disabled::before,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method.disabled::before{color:#ccc}table.wc-shipping-classes .wc-shipping-zone-method-title,table.wc-shipping-zone-methods .wc-shipping-zone-method-title,table.wc-shipping-zones .wc-shipping-zone-method-title{width:25%}table.wc-shipping-classes .wc-shipping-zone-method-title .wc-shipping-zone-method-delete,table.wc-shipping-zone-methods .wc-shipping-zone-method-title .wc-shipping-zone-method-delete,table.wc-shipping-zones .wc-shipping-zone-method-title .wc-shipping-zone-method-delete{color:red}table.wc-shipping-classes .wc-shipping-zone-method-enabled,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled,table.wc-shipping-zones .wc-shipping-zone-method-enabled{text-align:center}table.wc-shipping-classes .wc-shipping-zone-method-enabled a,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled a,table.wc-shipping-zones .wc-shipping-zone-method-enabled a{display:inline-block}table.wc-shipping-classes .wc-shipping-zone-method-enabled .woocommerce-input-toggle,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled .woocommerce-input-toggle,table.wc-shipping-zones .wc-shipping-zone-method-enabled .woocommerce-input-toggle{margin-top:3px}table.wc-shipping-classes .wc-shipping-zone-method-type,table.wc-shipping-zone-methods .wc-shipping-zone-method-type,table.wc-shipping-zones .wc-shipping-zone-method-type{display:block}table.wc-shipping-classes tfoot input,table.wc-shipping-classes tfoot select,table.wc-shipping-zone-methods tfoot input,table.wc-shipping-zone-methods tfoot select,table.wc-shipping-zones tfoot input,table.wc-shipping-zones tfoot select{vertical-align:middle!important}table.wc-shipping-classes tfoot .button-secondary,table.wc-shipping-zone-methods tfoot .button-secondary,table.wc-shipping-zones tfoot .button-secondary{float:right}table.wc-shipping-classes .editing .wc-shipping-zone-edit,table.wc-shipping-classes .editing .wc-shipping-zone-view,table.wc-shipping-zone-methods .editing .wc-shipping-zone-edit,table.wc-shipping-zone-methods .editing .wc-shipping-zone-view,table.wc-shipping-zones .editing .wc-shipping-zone-edit,table.wc-shipping-zones .editing .wc-shipping-zone-view{display:none}.woocommerce-input-toggle{height:16px;width:32px;border:2px solid #935687;background-color:#935687;display:inline-block;text-indent:-9999px;border-radius:10em;position:relative}.woocommerce-input-toggle:before{content:"";display:block;width:16px;height:16px;background:#fff;position:absolute;top:0;right:0;border-radius:100%}.woocommerce-input-toggle.woocommerce-input-toggle--disabled{border-color:#999;background-color:#999}.woocommerce-input-toggle.woocommerce-input-toggle--disabled:before{right:auto;left:0}.wc-modal-shipping-method-settings{background:#f8f8f8;padding:1em!important}.wc-modal-shipping-method-settings form .form-table{width:100%;background:#fff;margin:0 0 1.5em}.wc-modal-shipping-method-settings form .form-table tr th{width:30%;position:relative}.wc-modal-shipping-method-settings form .form-table tr th .woocommerce-help-tip{float:right;margin:-8px -.5em 0 0;vertical-align:middle;right:0;top:50%;position:absolute}.wc-modal-shipping-method-settings form .form-table tr td input,.wc-modal-shipping-method-settings form .form-table tr td select,.wc-modal-shipping-method-settings form .form-table tr td textarea{width:50%;min-width:250px}.wc-modal-shipping-method-settings form .form-table tr td input[type=checkbox]{width:auto;min-width:16px}.wc-modal-shipping-method-settings form .form-table tr td,.wc-modal-shipping-method-settings form .form-table tr th{vertical-align:middle;margin:0;line-height:24px;padding:1em;border-bottom:1px solid #f8f8f8}.wc-modal-shipping-method-settings form .form-table:last-of-type{margin-bottom:0}.wc-backbone-modal .wc-shipping-zone-method-selector p{margin-top:0}.wc-backbone-modal .wc-shipping-zone-method-selector .wc-shipping-zone-method-description{margin:.75em 1px 0;line-height:1.5em;color:#999;font-style:italic}.wc-backbone-modal .wc-shipping-zone-method-selector select{width:100%;cursor:pointer}img.help_tip{margin:0 0 0 9px;vertical-align:middle}.postbox img.help_tip{margin-top:0}.postbox .woocommerce-help-tip{margin:0 0 0 9px}.status-disabled,.status-enabled,.status-manual{font-size:1.4em;display:block;text-indent:-9999px;position:relative;height:1em;width:1em}.status-disabled::before,.status-enabled::before,.status-manual::before{font-family:WooCommerce;line-height:1;margin:0;position:absolute;width:100%;height:100%;text-indent:0;top:0;font-variant:normal;-webkit-font-smoothing:antialiased;font-weight:400;text-align:center;left:0;speak:none;text-transform:none}.status-manual::before{content:"";color:#999}.status-enabled::before{content:"";color:#a46497}.status-disabled::before{content:"";color:#ccc}.woocommerce h2.woo-nav-tab-wrapper{margin-bottom:1em}.woocommerce nav.woo-nav-tab-wrapper{margin:1.5em 0 1em;border-bottom:1px solid #ccc}.woocommerce .subsubsub{margin:-8px 0 0}.woocommerce .wc-admin-breadcrumb{margin-left:.5em}.woocommerce .wc-admin-breadcrumb a{color:#a46497}.woocommerce #template div{margin:0}.woocommerce #template div p .button{float:right;margin-left:10px;margin-top:-4px}.woocommerce #template div .editor textarea{margin-bottom:8px}.woocommerce textarea[disabled=disabled]{background:#dfdfdf!important}.woocommerce table.form-table{margin:0;position:relative}.woocommerce table.form-table .forminp-radio ul{margin:0}.woocommerce table.form-table .forminp-radio ul li{line-height:1.4em}.woocommerce table.form-table textarea.input-text{height:100%;min-width:150px;display:block}.woocommerce table.form-table input.regular-input{width:400px}.woocommerce table.form-table textarea.wide-input{width:100%}.woocommerce table.form-table .woocommerce-help-tip,.woocommerce table.form-table img.help_tip{padding:0;margin:-4px 0 0 5px;vertical-align:middle;cursor:help;line-height:1}.woocommerce table.form-table span.help_tip{cursor:help;color:#2ea2cc}.woocommerce table.form-table th{position:relative;padding-right:24px}.woocommerce table.form-table .select2-container{vertical-align:top;margin-bottom:3px}.woocommerce table.form-table table.widefat th{padding-right:inherit}.woocommerce table.form-table th .woocommerce-help-tip,.woocommerce table.form-table th img.help_tip{margin:2px -24px 0 0;float:right}.woocommerce table.form-table .wp-list-table .woocommerce-help-tip{float:none}.woocommerce table.form-table fieldset{margin-top:4px}.woocommerce table.form-table fieldset .woocommerce-help-tip,.woocommerce table.form-table fieldset img.help_tip{margin:-3px 0 0 5px}.woocommerce table.form-table fieldset p.description{margin-bottom:8px}.woocommerce table.form-table fieldset:first-child{margin-top:0}.woocommerce table.form-table .iris-picker{z-index:100;display:none;position:absolute;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.2)}.woocommerce table.form-table .iris-picker .ui-slider{border:0!important;margin:0!important;width:auto!important;height:auto!important;background:none!important}.woocommerce table.form-table .iris-picker .ui-slider .ui-slider-handle{margin-bottom:0!important}.woocommerce table.form-table .colorpickpreview{padding:3px 3px 3px 20px;border:1px solid #ddd;border-right:0;margin-left:-3px}.woocommerce table.form-table .colorpick{border-left:0}.woocommerce table.form-table .image_width_settings{vertical-align:middle}.woocommerce table.form-table .image_width_settings label{margin-left:10px}.woocommerce table.form-table .wc_emails_wrapper{padding:0 15px 10px 0}.woocommerce #tabs-wrap table a.remove{margin-left:4px}.woocommerce #tabs-wrap table p{margin:0 0 4px!important;overflow:hidden;zoom:1}.woocommerce #tabs-wrap table p a.add{float:left}#wp-excerpt-editor-container{background:#fff}#product_variation-parent #parent_id{width:100%}#postimagediv img{border:1px solid #d5d5d5;max-width:100%}#woocommerce-product-images .inside{margin:0;padding:0}#woocommerce-product-images .inside .add_product_images{padding:0 12px 12px}#woocommerce-product-images .inside #product_images_container{padding:0 0 0 9px}#woocommerce-product-images .inside #product_images_container ul{margin:0;padding:0}#woocommerce-product-images .inside #product_images_container ul::after,#woocommerce-product-images .inside #product_images_container ul::before{content:' ';display:table}#woocommerce-product-images .inside #product_images_container ul li.add,#woocommerce-product-images .inside #product_images_container ul li.image,#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder{width:80px;float:left;cursor:move;border:1px solid #d5d5d5;margin:9px 9px 0 0;background:#f7f7f7;border-radius:2px;position:relative;box-sizing:border-box}#woocommerce-product-images .inside #product_images_container ul li.add img,#woocommerce-product-images .inside #product_images_container ul li.image img,#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder img{width:100%;height:auto;display:block}#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder{border:3px dashed #ddd;position:relative}#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder::after{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";font-size:2.618em;line-height:72px;color:#ddd}#woocommerce-product-images .inside #product_images_container ul ul.actions{position:absolute;top:-8px;right:-8px;padding:2px;display:none}#woocommerce-product-images .inside #product_images_container ul ul.actions li{float:right;margin:0 0 0 2px}#woocommerce-product-images .inside #product_images_container ul ul.actions li a{width:1em;margin:0;height:0;display:block;overflow:hidden}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.tips{cursor:pointer}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.delete{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.4em}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.delete::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";color:#999}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.delete:hover::before{color:#a00}#woocommerce-product-images .inside #product_images_container ul li:hover ul.actions{display:block}#woocommerce-product-data .hndle{padding:10px}#woocommerce-product-data .hndle span{display:block;vertical-align:middle;line-height:24px}#woocommerce-product-data .hndle span span{display:inline;line-height:inherit;vertical-align:baseline}#woocommerce-product-data .hndle select{margin:0 0 0 .5em}#woocommerce-product-data .hndle label{padding-right:1em;font-size:12px;vertical-align:baseline}#woocommerce-product-data .hndle label:first-child{margin-right:1em;border-right:1px solid #dfdfdf}#woocommerce-product-data .hndle input,#woocommerce-product-data .hndle select{margin-top:-3px 0 0;vertical-align:middle}#woocommerce-product-data>.handlediv{margin-top:4px}#woocommerce-product-data .wrap{margin:0}#woocommerce-coupon-description{padding:3px 8px;font-size:1.7em;line-height:1.42em;height:auto;width:100%;outline:0;margin:10px 0;display:block}#woocommerce-coupon-description::-webkit-input-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-description::-moz-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-description:-ms-input-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-description:-moz-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-data .panel-wrap,#woocommerce-product-data .panel-wrap{background:#fff}#woocommerce-coupon-data .wc-metaboxes-wrapper,#woocommerce-coupon-data .woocommerce_options_panel,#woocommerce-product-data .wc-metaboxes-wrapper,#woocommerce-product-data .woocommerce_options_panel{float:left;width:80%}#woocommerce-coupon-data .wc-metaboxes-wrapper .wc-radios,#woocommerce-coupon-data .woocommerce_options_panel .wc-radios,#woocommerce-product-data .wc-metaboxes-wrapper .wc-radios,#woocommerce-product-data .woocommerce_options_panel .wc-radios{display:block;float:left;margin:0}#woocommerce-coupon-data .wc-metaboxes-wrapper .wc-radios li,#woocommerce-coupon-data .woocommerce_options_panel .wc-radios li,#woocommerce-product-data .wc-metaboxes-wrapper .wc-radios li,#woocommerce-product-data .woocommerce_options_panel .wc-radios li{display:block;padding:0 0 10px}#woocommerce-coupon-data .wc-metaboxes-wrapper .wc-radios li input,#woocommerce-coupon-data .woocommerce_options_panel .wc-radios li input,#woocommerce-product-data .wc-metaboxes-wrapper .wc-radios li input,#woocommerce-product-data .woocommerce_options_panel .wc-radios li input{width:auto}#woocommerce-coupon-data .panel-wrap,#woocommerce-product-data .panel-wrap,.woocommerce .panel-wrap{overflow:hidden}#woocommerce-coupon-data ul.wc-tabs,#woocommerce-product-data ul.wc-tabs,.woocommerce ul.wc-tabs{margin:0;width:20%;float:left;line-height:1em;padding:0 0 10px;position:relative;background-color:#fafafa;border-right:1px solid #eee;box-sizing:border-box}#woocommerce-coupon-data ul.wc-tabs::after,#woocommerce-product-data ul.wc-tabs::after,.woocommerce ul.wc-tabs::after{content:'';display:block;width:100%;height:9999em;position:absolute;bottom:-9999em;left:0;background-color:#fafafa;border-right:1px solid #eee}#woocommerce-coupon-data ul.wc-tabs li,#woocommerce-product-data ul.wc-tabs li,.woocommerce ul.wc-tabs li{margin:0;padding:0;display:block;position:relative}#woocommerce-coupon-data ul.wc-tabs li a,#woocommerce-product-data ul.wc-tabs li a,.woocommerce ul.wc-tabs li a{margin:0;padding:10px;display:block;box-shadow:none;text-decoration:none;line-height:20px!important;border-bottom:1px solid #eee}#woocommerce-coupon-data ul.wc-tabs li a span,#woocommerce-product-data ul.wc-tabs li a span,.woocommerce ul.wc-tabs li a span{margin-left:.618em;margin-right:.618em}#woocommerce-coupon-data ul.wc-tabs li a::before,#woocommerce-product-data ul.wc-tabs li a::before,.woocommerce ul.wc-tabs li a::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;content:"";text-decoration:none}#woocommerce-coupon-data ul.wc-tabs li.general_options a::before,#woocommerce-product-data ul.wc-tabs li.general_options a::before,.woocommerce ul.wc-tabs li.general_options a::before{content:'\f107'}#woocommerce-coupon-data ul.wc-tabs li.inventory_options a::before,#woocommerce-product-data ul.wc-tabs li.inventory_options a::before,.woocommerce ul.wc-tabs li.inventory_options a::before{content:'\f481'}#woocommerce-coupon-data ul.wc-tabs li.shipping_options a::before,#woocommerce-product-data ul.wc-tabs li.shipping_options a::before,.woocommerce ul.wc-tabs li.shipping_options a::before{font-family:WooCommerce;content:'\e01a'}#woocommerce-coupon-data ul.wc-tabs li.linked_product_options a::before,#woocommerce-product-data ul.wc-tabs li.linked_product_options a::before,.woocommerce ul.wc-tabs li.linked_product_options a::before{content:'\f103'}#woocommerce-coupon-data ul.wc-tabs li.attribute_options a::before,#woocommerce-product-data ul.wc-tabs li.attribute_options a::before,.woocommerce ul.wc-tabs li.attribute_options a::before{content:'\f175'}#woocommerce-coupon-data ul.wc-tabs li.advanced_options a::before,#woocommerce-product-data ul.wc-tabs li.advanced_options a::before,.woocommerce ul.wc-tabs li.advanced_options a::before{font-family:Dashicons;content:'\f111'}#woocommerce-coupon-data ul.wc-tabs li.variations_options a::before,#woocommerce-product-data ul.wc-tabs li.variations_options a::before,.woocommerce ul.wc-tabs li.variations_options a::before{content:'\f509'}#woocommerce-coupon-data ul.wc-tabs li.usage_restriction_options a::before,#woocommerce-product-data ul.wc-tabs li.usage_restriction_options a::before,.woocommerce ul.wc-tabs li.usage_restriction_options a::before{font-family:WooCommerce;content:'\e602'}#woocommerce-coupon-data ul.wc-tabs li.usage_limit_options a::before,#woocommerce-product-data ul.wc-tabs li.usage_limit_options a::before,.woocommerce ul.wc-tabs li.usage_limit_options a::before{font-family:WooCommerce;content:'\e601'}#woocommerce-coupon-data ul.wc-tabs li.general_coupon_data a::before,#woocommerce-product-data ul.wc-tabs li.general_coupon_data a::before,.woocommerce ul.wc-tabs li.general_coupon_data a::before{font-family:WooCommerce;content:'\e600'}#woocommerce-coupon-data ul.wc-tabs li.active a,#woocommerce-product-data ul.wc-tabs li.active a,.woocommerce ul.wc-tabs li.active a{color:#555;position:relative;background-color:#eee}.woocommerce_page_wc-settings input[type=email],.woocommerce_page_wc-settings input[type=url]{direction:ltr}.woocommerce_page_wc-settings .shippingrows th.check-column{padding-top:20px}.woocommerce_page_wc-settings .shippingrows tfoot th{padding-left:10px}.woocommerce_page_wc-settings .shippingrows .add.button::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none}.woocommerce_page_wc-settings h3.wc-settings-sub-title{font-size:1.2em}#woocommerce-coupon-data .inside,#woocommerce-order-data .inside,#woocommerce-order-downloads .inside,#woocommerce-product-data .inside,#woocommerce-product-type-options .inside{margin:0;padding:0}.panel,.woocommerce_options_panel{padding:9px;color:#555}.panel .form-field .woocommerce-help-tip,.woocommerce_options_panel .form-field .woocommerce-help-tip{font-size:1.4em}.panel,.woocommerce_page_settings .woocommerce_options_panel{padding:0}#woocommerce-product-specs .inside,#woocommerce-product-type-options .panel{margin:0;padding:9px}#woocommerce-product-type-options .panel p,.woocommerce_options_panel fieldset.form-field,.woocommerce_options_panel p{margin:0 0 9px;font-size:12px;padding:5px 9px;line-height:24px}#woocommerce-product-type-options .panel p::after,.woocommerce_options_panel fieldset.form-field::after,.woocommerce_options_panel p::after{content:'.';display:block;height:0;clear:both;visibility:hidden}.woocommerce_options_panel .checkbox,.woocommerce_variable_attributes .checkbox{width:auto;margin:4px 0!important;vertical-align:middle;float:left}.woocommerce_options_panel .downloadable_files table,.woocommerce_variations .downloadable_files table{width:100%;padding:0!important}.woocommerce_options_panel .downloadable_files table th,.woocommerce_variations .downloadable_files table th{padding:7px 0 7px 7px!important}.woocommerce_options_panel .downloadable_files table th.sort,.woocommerce_variations .downloadable_files table th.sort{width:17px;padding:7px!important}.woocommerce_options_panel .downloadable_files table th .woocommerce-help-tip,.woocommerce_variations .downloadable_files table th .woocommerce-help-tip{font-size:1.1em;margin-left:0}.woocommerce_options_panel .downloadable_files table td,.woocommerce_variations .downloadable_files table td{vertical-align:middle!important;padding:4px 0 4px 7px!important;position:relative}.woocommerce_options_panel .downloadable_files table td:last-child,.woocommerce_variations .downloadable_files table td:last-child{padding-right:7px!important}.woocommerce_options_panel .downloadable_files table td input.input_text,.woocommerce_variations .downloadable_files table td input.input_text{width:100%;float:none;min-width:0;margin:1px 0}.woocommerce_options_panel .downloadable_files table td .upload_file_button,.woocommerce_variations .downloadable_files table td .upload_file_button{width:auto;float:right;cursor:pointer}.woocommerce_options_panel .downloadable_files table td .delete,.woocommerce_variations .downloadable_files table td .delete{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.2em}.woocommerce_options_panel .downloadable_files table td .delete::before,.woocommerce_variations .downloadable_files table td .delete::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";color:#999}.woocommerce_options_panel .downloadable_files table td .delete:hover::before,.woocommerce_variations .downloadable_files table td .delete:hover::before{color:#a00}.woocommerce_options_panel .downloadable_files table td.sort,.woocommerce_variations .downloadable_files table td.sort{width:17px;cursor:move;font-size:15px;text-align:center;background:#f9f9f9;padding-right:7px!important}.woocommerce_options_panel .downloadable_files table td.sort::before,.woocommerce_variations .downloadable_files table td.sort::before{content:'\f333';font-family:Dashicons;text-align:center;line-height:1;color:#999;display:block;width:17px;float:left;height:100%}.woocommerce_options_panel .downloadable_files table td.sort:hover::before,.woocommerce_variations .downloadable_files table td.sort:hover::before{color:#333}.woocommerce_variation h3 .sort{width:17px;height:26px;cursor:move;float:right;font-size:15px;font-weight:400;margin-right:.5em;visibility:hidden;text-align:center;vertical-align:middle}.woocommerce_variation h3 .sort::before{content:'\f333';font-family:Dashicons;text-align:center;line-height:28px;color:#999;display:block;width:17px;float:left;height:100%}.woocommerce_variation h3 .sort:hover::before{color:#777}.woocommerce_variation h3:hover .sort,.woocommerce_variation.ui-sortable-helper .sort{visibility:visible}.woocommerce_options_panel{min-height:175px;box-sizing:border-box}.woocommerce_options_panel .downloadable_files{padding:0 9px 0 162px;position:relative;margin:9px 0}.woocommerce_options_panel .downloadable_files label{position:absolute;left:0;margin:0 0 0 12px;line-height:24px}.woocommerce_options_panel p{margin:9px 0}.woocommerce_options_panel fieldset.form-field,.woocommerce_options_panel p.form-field{padding:5px 20px 5px 162px!important}.woocommerce_options_panel .sale_price_dates_fields .short:first-of-type{margin-bottom:1em}.woocommerce_options_panel .sale_price_dates_fields .short:nth-of-type(2){clear:left}.woocommerce_options_panel label,.woocommerce_options_panel legend{float:left;width:150px;padding:0;margin:0 0 0 -150px}.woocommerce_options_panel label .req,.woocommerce_options_panel legend .req{font-weight:700;font-style:normal;color:#a00}.woocommerce_options_panel .description{padding:0;margin:0 0 0 7px;clear:none;display:inline}.woocommerce_options_panel .description-block{margin-left:0;display:block}.woocommerce_options_panel input,.woocommerce_options_panel select,.woocommerce_options_panel textarea{margin:0}.woocommerce_options_panel textarea{float:left;height:3.5em;line-height:1.5em;vertical-align:top}.woocommerce_options_panel input[type=text],.woocommerce_options_panel input[type=number],.woocommerce_options_panel input[type=email],.woocommerce_options_panel input[type=password]{width:50%;float:left}.woocommerce_options_panel input.button{width:auto;margin-left:8px}.woocommerce_options_panel select{float:left}.woocommerce_options_panel .short,.woocommerce_options_panel input[type=text].short,.woocommerce_options_panel input[type=number].short,.woocommerce_options_panel input[type=email].short,.woocommerce_options_panel input[type=password].short{width:50%}.woocommerce_options_panel .sized{width:auto!important;margin-right:6px}.woocommerce_options_panel .options_group{border-top:1px solid #fff;border-bottom:1px solid #eee}.woocommerce_options_panel .options_group:first-child{border-top:0}.woocommerce_options_panel .options_group:last-child{border-bottom:0}.woocommerce_options_panel .options_group fieldset{margin:9px 0;font-size:12px;padding:5px 9px;line-height:24px}.woocommerce_options_panel .options_group fieldset label{width:auto;float:none}.woocommerce_options_panel .options_group fieldset ul{float:left;width:50%;margin:0;padding:0}.woocommerce_options_panel .options_group fieldset ul li{margin:0;width:auto}.woocommerce_options_panel .options_group fieldset ul li input{width:auto;float:none;margin-right:4px}.woocommerce_options_panel .options_group fieldset ul.wc-radios label{margin-left:0}.woocommerce_options_panel .dimensions_field .wrap{display:block;width:50%}.woocommerce_options_panel .dimensions_field .wrap input{width:30.75%;margin-right:3.8%}.woocommerce_options_panel .dimensions_field .wrap .last{margin-right:0}.woocommerce_options_panel.padded{padding:1em}#woocommerce-product-data input.dp-applied,.woocommerce_options_panel .select2-container{float:left}#grouped_product_options,#simple_product_options,#virtual_product_options{padding:12px;font-style:italic;color:#666}.wc-metaboxes-wrapper .toolbar{margin:0!important;border-top:1px solid #fff;border-bottom:1px solid #eee;padding:9px 12px!important}.wc-metaboxes-wrapper .toolbar:first-child{border-top:0}.wc-metaboxes-wrapper .toolbar:last-child{border-bottom:0}.wc-metaboxes-wrapper .toolbar .add_variation{float:right;margin-left:5px}.wc-metaboxes-wrapper .toolbar .cancel-variation-changes,.wc-metaboxes-wrapper .toolbar .save-variation-changes{float:left;margin-right:5px}.wc-metaboxes-wrapper p.toolbar{overflow:hidden;zoom:1}.wc-metaboxes-wrapper .expand-close{margin-right:2px;color:#777;font-size:12px;font-style:italic}.wc-metaboxes-wrapper .expand-close a{background:0 0;padding:0;font-size:12px;text-decoration:none}.wc-metaboxes-wrapper#product_attributes .expand-close{float:right;line-height:28px}.wc-metaboxes-wrapper .fr,.wc-metaboxes-wrapper button.add_variable_attribute{float:right;margin:0 0 0 6px}.wc-metaboxes-wrapper .wc-metaboxes{border-bottom:1px solid #eee}.wc-metaboxes-wrapper .wc-metabox-sortable-placeholder{border-color:#bbb;background-color:#f5f5f5;margin-bottom:9px;border-width:1px;border-style:dashed}.wc-metaboxes-wrapper .wc-metabox{background:#fff;border-bottom:1px solid #eee;margin:0!important}.wc-metaboxes-wrapper .wc-metabox select{font-weight:400}.wc-metaboxes-wrapper .wc-metabox:last-of-type{border-bottom:0}.wc-metaboxes-wrapper .wc-metabox .handlediv{width:27px}.wc-metaboxes-wrapper .wc-metabox .handlediv::before{content:'\f142'!important;cursor:pointer;display:inline-block;font:400 20px/1 Dashicons;line-height:.5!important;padding:8px 10px;position:relative;right:12px;top:0}.wc-metaboxes-wrapper .wc-metabox.closed{border-radius:3px}.wc-metaboxes-wrapper .wc-metabox.closed .handlediv::before{content:'\f140'!important}.wc-metaboxes-wrapper .wc-metabox.closed h3{border:0}.wc-metaboxes-wrapper .wc-metabox h3{margin:0!important;padding:.75em .75em .75em 1em!important;font-size:1em!important;overflow:hidden;zoom:1;cursor:move}.wc-metaboxes-wrapper .wc-metabox h3 a.delete,.wc-metaboxes-wrapper .wc-metabox h3 button{float:right}.wc-metaboxes-wrapper .wc-metabox h3 a.delete{color:red;font-weight:400;line-height:26px;text-decoration:none;position:relative;visibility:hidden}.wc-metaboxes-wrapper .wc-metabox h3 strong{line-height:26px;font-weight:700}.wc-metaboxes-wrapper .wc-metabox h3 select{font-family:sans-serif;max-width:20%;margin:.25em .25em .25em 0}.wc-metaboxes-wrapper .wc-metabox h3 .handlediv{background-position:6px 5px!important;visibility:hidden;height:26px}.wc-metaboxes-wrapper .wc-metabox h3.fixed{cursor:pointer!important}.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3{cursor:pointer;padding:.5em .75em .5em 1em!important}.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3 .handlediv,.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3 .sort,.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3 a.delete{margin-top:.25em}.wc-metaboxes-wrapper .wc-metabox h3:hover .handlediv,.wc-metaboxes-wrapper .wc-metabox h3:hover a.delete,.wc-metaboxes-wrapper .wc-metabox.ui-sortable-helper .handlediv,.wc-metaboxes-wrapper .wc-metabox.ui-sortable-helper a.delete{visibility:visible}.wc-metaboxes-wrapper .wc-metabox table{width:100%;position:relative;background-color:#fdfdfd;padding:1em;border-top:1px solid #eee}.wc-metaboxes-wrapper .wc-metabox table td{text-align:left;padding:0 6px 1em 0;vertical-align:top;border:0}.wc-metaboxes-wrapper .wc-metabox table td label{text-align:left;display:block;line-height:21px}.wc-metaboxes-wrapper .wc-metabox table td input{float:left;min-width:200px}.wc-metaboxes-wrapper .wc-metabox table td input,.wc-metaboxes-wrapper .wc-metabox table td textarea{width:100%;margin:0;display:block;font-size:14px;padding:4px;color:#555}.wc-metaboxes-wrapper .wc-metabox table td .select2-container,.wc-metaboxes-wrapper .wc-metabox table td select{width:100%!important}.wc-metaboxes-wrapper .wc-metabox table td input.short{width:200px}.wc-metaboxes-wrapper .wc-metabox table td input.checkbox{width:16px;min-width:inherit;vertical-align:text-bottom;display:inline-block;float:none}.wc-metaboxes-wrapper .wc-metabox table td.attribute_name{width:200px}.wc-metaboxes-wrapper .wc-metabox table .minus,.wc-metaboxes-wrapper .wc-metabox table .plus{margin-top:6px}.wc-metaboxes-wrapper .wc-metabox table .fl{float:left}.wc-metaboxes-wrapper .wc-metabox table .fr{float:right}.variations-pagenav{float:right;line-height:24px}.variations-pagenav .displaying-num{color:#777;font-size:12px;font-style:italic}.variations-pagenav a{padding:0 10px 3px;background:rgba(0,0,0,.05);font-size:16px;font-weight:400;text-decoration:none}.variations-pagenav a.disabled,.variations-pagenav a.disabled:active,.variations-pagenav a.disabled:focus,.variations-pagenav a.disabled:hover{color:#a0a5aa;background:rgba(0,0,0,.05)}.variations-defaults{float:left}.variations-defaults select{margin:.25em .25em .25em 0}.woocommerce_variable_attributes{background-color:#fdfdfd;border-top:1px solid #eee}.woocommerce_variable_attributes .data{padding:1em 2em}.woocommerce_variable_attributes .data::after,.woocommerce_variable_attributes .data::before{content:' ';display:table}.woocommerce_variable_attributes .upload_image_button{display:block;width:64px;height:64px;float:left;margin-right:20px;position:relative;cursor:pointer}.woocommerce_variable_attributes .upload_image_button img{width:100%;height:auto;display:none}.woocommerce_variable_attributes .upload_image_button::before{content:'\f128';font-family:Dashicons;position:absolute;top:0;left:0;right:0;bottom:0;text-align:center;line-height:64px;font-size:64px;font-weight:400;-webkit-font-smoothing:antialiased}.woocommerce_variable_attributes .upload_image_button.remove img{display:block}.woocommerce_variable_attributes .upload_image_button.remove::before{content:'\f335';display:none}.woocommerce_variable_attributes .upload_image_button.remove:hover::before{display:block}.woocommerce_variable_attributes .options{border:1px solid #eee;border-width:1px 0;padding:.25em 0}.woocommerce_variable_attributes .options label{display:inline-block;padding:4px 1em 2px 0}.woocommerce_variable_attributes .options input[type=checkbox]{margin:0 5px 0 .5em!important;vertical-align:middle}.form-row label{display:inline-block}.form-row .woocommerce-help-tip{float:right}.form-row input[type=number],.form-row input[type=text],.form-row select,.form-row textarea{width:100%;vertical-align:middle;margin:2px 0 0;padding:6px}.form-row select{height:30px;line-height:30px}.form-row.dimensions_field .wrap{clear:left;display:block}.form-row.dimensions_field input{width:33%;float:left;vertical-align:middle}.form-row.dimensions_field input:last-of-type{margin-right:0;width:34%}.form-row.form-row-first,.form-row.form-row-last{width:48%;float:right}.form-row.form-row-first{clear:both;float:left}.form-row.form-row-full{clear:both}.tips{cursor:help;text-decoration:none}img.tips{padding:5px 0 0}#tiptip_holder{display:none;position:absolute;top:0;left:0;z-index:9999999}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_top #tiptip_arrow_inner{margin-top:-7px;margin-left:-6px;border-top-color:#333}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_bottom #tiptip_arrow_inner{margin-top:-5px;margin-left:-6px;border-bottom-color:#333}#tiptip_holder.tip_right{padding-left:5px}#tiptip_holder.tip_right #tiptip_arrow_inner{margin-top:-6px;margin-left:-5px;border-right-color:#333}#tiptip_holder.tip_left{padding-right:5px}#tiptip_holder.tip_left #tiptip_arrow_inner{margin-top:-6px;margin-left:-7px;border-left-color:#333}#tiptip_content,.chart-tooltip,.wc_error_tip{color:#fff;font-size:.8em;max-width:150px;background:#333;text-align:center;border-radius:3px;padding:.618em 1em;box-shadow:0 1px 3px rgba(0,0,0,.2)}#tiptip_content code,.chart-tooltip code,.wc_error_tip code{padding:1px;background:#888}#tiptip_arrow,#tiptip_arrow_inner{position:absolute;border-color:transparent;border-style:solid;border-width:6px;height:0;width:0}.wc_error_tip{max-width:20em;line-height:1.8em;position:absolute;white-space:normal;background:#d82223;margin:1.5em 1px 0 -1em;z-index:9999999}.wc_error_tip::after{content:'';display:block;border:8px solid #d82223;border-right-color:transparent;border-left-color:transparent;border-top-color:transparent;position:absolute;top:-3px;left:50%;margin:-1em 0 0 -3px}img.ui-datepicker-trigger{vertical-align:middle;margin-top:-1px;cursor:pointer}.wc-metabox-content img.ui-datepicker-trigger,.woocommerce_options_panel img.ui-datepicker-trigger{float:left;margin-right:8px;margin-top:4px;margin-left:4px}#ui-datepicker-div{display:none}.woocommerce-reports-wide.woocommerce-reports-wrap,.woocommerce-reports-wrap.woocommerce-reports-wrap{margin-left:300px;padding-top:18px}.woocommerce-reports-wide.halved,.woocommerce-reports-wrap.halved{margin:0;overflow:hidden;zoom:1}.woocommerce-reports-wide .widefat td,.woocommerce-reports-wrap .widefat td{vertical-align:top;padding:7px}.woocommerce-reports-wide .widefat td .description,.woocommerce-reports-wrap .widefat td .description{margin:4px 0 0}.woocommerce-reports-wide .postbox::after,.woocommerce-reports-wrap .postbox::after{content:'.';display:block;height:0;clear:both;visibility:hidden}.woocommerce-reports-wide .postbox h3,.woocommerce-reports-wrap .postbox h3{cursor:default!important}.woocommerce-reports-wide .postbox .inside,.woocommerce-reports-wrap .postbox .inside{padding:10px;margin:0!important}.woocommerce-reports-wide .postbox div.stats_range,.woocommerce-reports-wide .postbox h3.stats_range,.woocommerce-reports-wrap .postbox div.stats_range,.woocommerce-reports-wrap .postbox h3.stats_range{border-bottom-color:#dfdfdf;margin:0;padding:0!important}.woocommerce-reports-wide .postbox div.stats_range .export_csv,.woocommerce-reports-wide .postbox h3.stats_range .export_csv,.woocommerce-reports-wrap .postbox div.stats_range .export_csv,.woocommerce-reports-wrap .postbox h3.stats_range .export_csv{float:right;line-height:26px;border-left:1px solid #dfdfdf;padding:10px;display:block;text-decoration:none}.woocommerce-reports-wide .postbox div.stats_range .export_csv::before,.woocommerce-reports-wide .postbox h3.stats_range .export_csv::before,.woocommerce-reports-wrap .postbox div.stats_range .export_csv::before,.woocommerce-reports-wrap .postbox h3.stats_range .export_csv::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;content:"";text-decoration:none;margin-right:4px}.woocommerce-reports-wide .postbox div.stats_range ul,.woocommerce-reports-wide .postbox h3.stats_range ul,.woocommerce-reports-wrap .postbox div.stats_range ul,.woocommerce-reports-wrap .postbox h3.stats_range ul{list-style:none;margin:0;padding:0;zoom:1;background:#f5f5f5;border-bottom:1px solid #ccc}.woocommerce-reports-wide .postbox div.stats_range ul::after,.woocommerce-reports-wide .postbox div.stats_range ul::before,.woocommerce-reports-wide .postbox h3.stats_range ul::after,.woocommerce-reports-wide .postbox h3.stats_range ul::before,.woocommerce-reports-wrap .postbox div.stats_range ul::after,.woocommerce-reports-wrap .postbox div.stats_range ul::before,.woocommerce-reports-wrap .postbox h3.stats_range ul::after,.woocommerce-reports-wrap .postbox h3.stats_range ul::before{content:' ';display:table}.woocommerce-reports-wide .postbox div.stats_range ul::after,.woocommerce-reports-wide .postbox h3.stats_range ul::after,.woocommerce-reports-wrap .postbox div.stats_range ul::after,.woocommerce-reports-wrap .postbox h3.stats_range ul::after{clear:both}.woocommerce-reports-wide .postbox div.stats_range ul li,.woocommerce-reports-wide .postbox h3.stats_range ul li,.woocommerce-reports-wrap .postbox div.stats_range ul li,.woocommerce-reports-wrap .postbox h3.stats_range ul li{float:left;margin:0;padding:0;line-height:26px;font-weight:700;font-size:14px}.woocommerce-reports-wide .postbox div.stats_range ul li a,.woocommerce-reports-wide .postbox h3.stats_range ul li a,.woocommerce-reports-wrap .postbox div.stats_range ul li a,.woocommerce-reports-wrap .postbox h3.stats_range ul li a{border-right:1px solid #dfdfdf;padding:10px;display:block;text-decoration:none}.woocommerce-reports-wide .postbox div.stats_range ul li.active,.woocommerce-reports-wide .postbox h3.stats_range ul li.active,.woocommerce-reports-wrap .postbox div.stats_range ul li.active,.woocommerce-reports-wrap .postbox h3.stats_range ul li.active{background:#fff;-webkit-box-shadow:0 4px 0 0 #fff;box-shadow:0 4px 0 0 #fff}.woocommerce-reports-wide .postbox div.stats_range ul li.active a,.woocommerce-reports-wide .postbox h3.stats_range ul li.active a,.woocommerce-reports-wrap .postbox div.stats_range ul li.active a,.woocommerce-reports-wrap .postbox h3.stats_range ul li.active a{color:#777}.woocommerce-reports-wide .postbox div.stats_range ul li.custom,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom{padding:9px 10px;vertical-align:middle}.woocommerce-reports-wide .postbox div.stats_range ul li.custom div,.woocommerce-reports-wide .postbox div.stats_range ul li.custom form,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom div,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom form,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom div,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom form,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom div,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom form{display:inline;margin:0}.woocommerce-reports-wide .postbox div.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wide .postbox div.stats_range ul li.custom form input.range_datepicker,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom form input.range_datepicker,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom form input.range_datepicker,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom form input.range_datepicker{padding:0;margin:0 10px 0 0;background:0 0;border:0;color:#777;text-align:center;-webkit-box-shadow:none;box-shadow:none}.woocommerce-reports-wide .postbox div.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wide .postbox div.stats_range ul li.custom form input.range_datepicker.from,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom form input.range_datepicker.from,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom form input.range_datepicker.from,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom form input.range_datepicker.from{margin-right:0}.woocommerce-reports-wide .postbox .chart-with-sidebar,.woocommerce-reports-wrap .postbox .chart-with-sidebar{padding:12px 12px 12px 249px;margin:0!important}.woocommerce-reports-wide .postbox .chart-with-sidebar .chart-sidebar,.woocommerce-reports-wrap .postbox .chart-with-sidebar .chart-sidebar{width:225px;margin-left:-237px;float:left}.woocommerce-reports-wide .postbox .chart-widgets,.woocommerce-reports-wrap .postbox .chart-widgets{margin:0;padding:0}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget{margin:0 0 1em;background:#fafafa;border:1px solid #dfdfdf}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget::after,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget::after{content:'.';display:block;height:0;clear:both;visibility:hidden}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget h4,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget h4{background:#fff;border:1px solid #dfdfdf;border-left-width:0;border-right-width:0;padding:10px;margin:0;color:#2ea2cc;border-top-width:0;background-image:-webkit-gradient(linear,left bottom,left top,from(#ececec),to(#f9f9f9));background-image:-webkit-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-moz-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-o-linear-gradient(bottom,#ececec,#f9f9f9);background-image:linear-gradient(to top,#ececec,#f9f9f9)}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.count,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table tr.active td,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.count,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table tr.active td{background:#f5f5f5}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget h4.section_title:hover,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget h4.section_title:hover{color:#a00}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title{cursor:pointer}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title span,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title span{display:block}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title span::after,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title span::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin-left:.618em;content:"";text-decoration:none;float:right;font-size:.9em;line-height:1.618}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title.open,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title.open{color:#333}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title.open span::after,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title.open span::after{display:none}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section{border-bottom:1px solid #dfdfdf}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section .select2-container,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section .select2-container{width:100%!important}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section:last-of-type,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section:last-of-type{border-radius:0 0 3px 3px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table{width:100%}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td{padding:7px 10px;vertical-align:top;border-top:1px solid #e5e5e5;line-height:1.4em}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table tr:first-child td,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table tr:first-child td{border-top:0}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.name,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.name{max-width:175px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.name a,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.name a{word-wrap:break-word}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.sparkline,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.sparkline{vertical-align:middle}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table .wc_sparkline,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table .wc_sparkline{width:32px;height:1em;display:block;float:right}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget form,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget p,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget form,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget p{margin:0;padding:10px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget form .submit,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget p .submit,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget form .submit,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget p .submit{margin-top:10px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget #product_ids,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget #product_ids{width:100%}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .select_all,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .select_none,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .select_all,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .select_none{float:right;color:#999;margin-left:4px;margin-top:10px}.woocommerce-reports-wide .postbox .chart-legend,.woocommerce-reports-wrap .postbox .chart-legend{list-style:none;margin:0 0 1em;padding:0;border:1px solid #dfdfdf;border-right-width:0;border-bottom-width:0;background:#fff}.woocommerce-reports-wide .postbox .chart-legend li,.woocommerce-reports-wrap .postbox .chart-legend li{border-right:5px solid #aaa;color:#aaa;padding:1em;display:block;margin:0;-webkit-transition:all ease .5s;box-shadow:inset 0 -1px 0 0 #dfdfdf}.woocommerce-reports-wide .postbox .chart-legend li strong,.woocommerce-reports-wrap .postbox .chart-legend li strong{font-size:1.618em;line-height:1.2em;color:#464646;font-weight:400;display:block;font-family:HelveticaNeue-Light,'Helvetica Neue Light','Helvetica Neue',sans-serif}.woocommerce-reports-wide .postbox .chart-legend li strong del,.woocommerce-reports-wrap .postbox .chart-legend li strong del{color:#e74c3c;font-weight:400}.woocommerce-reports-wide .postbox .chart-legend li:hover,.woocommerce-reports-wrap .postbox .chart-legend li:hover{box-shadow:inset 0 -1px 0 0 #dfdfdf,inset 300px 0 0 rgba(156,93,144,.1);border-right:5px solid #9c5d90!important;padding-left:1.5em;color:#9c5d90}.woocommerce-reports-wide .postbox .pie-chart-legend,.woocommerce-reports-wrap .postbox .pie-chart-legend{margin:12px 0 0;overflow:hidden}.woocommerce-reports-wide .postbox .pie-chart-legend li,.woocommerce-reports-wrap .postbox .pie-chart-legend li{float:left;margin:0;padding:6px 0 0;border-top:4px solid #999;text-align:center;box-sizing:border-box;width:50%}.woocommerce-reports-wide .postbox .stat,.woocommerce-reports-wrap .postbox .stat{font-size:1.5em!important;font-weight:700;text-align:center}.woocommerce-reports-wide .postbox .chart-placeholder,.woocommerce-reports-wrap .postbox .chart-placeholder{width:100%;height:650px;overflow:hidden;position:relative}.woocommerce-reports-wide .postbox .chart-prompt,.woocommerce-reports-wrap .postbox .chart-prompt{line-height:650px;margin:0;color:#999;font-size:1.2em;font-style:italic;text-align:center}.woocommerce-reports-wide .postbox .chart-container,.woocommerce-reports-wrap .postbox .chart-container{background:#fff;padding:12px;position:relative;border:1px solid #dfdfdf;border-radius:3px}.woocommerce-reports-wide .postbox .main .chart-legend,.woocommerce-reports-wrap .postbox .main .chart-legend{margin-top:12px}.woocommerce-reports-wide .postbox .main .chart-legend li,.woocommerce-reports-wrap .postbox .main .chart-legend li{border-right:0;margin:0 8px 0 0;float:left;border-top:4px solid #aaa}.woocommerce-reports-wide .woocommerce-reports-main,.woocommerce-reports-wrap .woocommerce-reports-main{float:left;min-width:100%}.woocommerce-reports-wide .woocommerce-reports-main table td,.woocommerce-reports-wrap .woocommerce-reports-main table td{padding:9px}.woocommerce-reports-wide .woocommerce-reports-sidebar,.woocommerce-reports-wrap .woocommerce-reports-sidebar{display:inline;width:281px;margin-left:-300px;clear:both;float:left}.woocommerce-reports-wide .woocommerce-reports-left,.woocommerce-reports-wrap .woocommerce-reports-left{width:49.5%;float:left}.woocommerce-reports-wide .woocommerce-reports-right,.woocommerce-reports-wrap .woocommerce-reports-right{width:49.5%;float:right}.woocommerce-reports-wide .column-wc_actions a.edit,.woocommerce-reports-wide .column-wc_actions a.view,.woocommerce-reports-wrap .column-wc_actions a.edit,.woocommerce-reports-wrap .column-wc_actions a.view{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.woocommerce-reports-wide .column-wc_actions a.edit::after,.woocommerce-reports-wide .column-wc_actions a.view::after,.woocommerce-reports-wrap .column-wc_actions a.edit::after,.woocommerce-reports-wrap .column-wc_actions a.view::after{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;line-height:1.85}.woocommerce-reports-wide .column-wc_actions a.edit::after,.woocommerce-reports-wrap .column-wc_actions a.edit::after{content:'\f464'}.woocommerce-reports-wide .column-wc_actions a.view::after,.woocommerce-reports-wrap .column-wc_actions a.view::after{content:'\f177'}.woocommerce-wide-reports-wrap{padding-bottom:11px}.woocommerce-wide-reports-wrap .widefat .export-data{float:right}.woocommerce-wide-reports-wrap .widefat td,.woocommerce-wide-reports-wrap .widefat th{vertical-align:middle;padding:7px}form.report_filters div,form.report_filters input,form.report_filters label,form.report_filters p{vertical-align:middle}.chart-tooltip{position:absolute;display:none;line-height:1}table.bar_chart{width:100%}table.bar_chart thead th{text-align:left;color:#ccc;padding:6px 0}table.bar_chart tbody th{padding:6px 0;width:25%;text-align:left!important;font-weight:400!important;border-bottom:1px solid #fee}table.bar_chart tbody td{text-align:right;line-height:24px;padding:6px 6px 6px 0;border-bottom:1px solid #fee}table.bar_chart tbody td span{color:#8a4b75;display:block}table.bar_chart tbody td span.alt{color:#47a03e;margin-top:6px}table.bar_chart tbody td.bars{position:relative;text-align:left;padding:6px 6px 6px 0;border-bottom:1px solid #fee}table.bar_chart tbody td.bars a,table.bar_chart tbody td.bars span{text-decoration:none;clear:both;background:#8a4b75;float:left;display:block;line-height:24px;height:24px;-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-khtml-border-radius:3px;border-radius:3px}.post-type-product .woocommerce-BlankState-message::before,.post-type-shop_coupon .woocommerce-BlankState-message::before,.post-type-shop_order .woocommerce-BlankState-message::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center}table.bar_chart tbody td.bars span.alt{clear:both;background:#47a03e}table.bar_chart tbody td.bars span.alt span{margin:0;color:#c5dec2!important;text-shadow:0 1px 0 #47a03e;background:0 0}.post-type-shop_order .woocommerce-BlankState-message::before{content:""}.post-type-shop_coupon .woocommerce-BlankState-message::before{content:""}.post-type-product .woocommerce-BlankState-message::before{content:""}.woocommerce-BlankState{text-align:center;padding:5em 0 0}.woocommerce-BlankState .woocommerce-BlankState-message{color:#aaa;margin:0 auto 1.5em;line-height:1.5em;font-size:1.2em;max-width:500px}.woocommerce-BlankState .woocommerce-BlankState-message::before{color:#ddd;text-shadow:0 -1px 1px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.8);font-size:8em;display:block;position:relative!important;top:auto;left:auto;line-height:1em;margin:0 0 .1875em}.woocommerce-BlankState .woocommerce-BlankState-cta{font-size:1.2em;padding:.75em 1.5em;height:auto}@media only screen and (max-width:1280px){#order_data .order_data_column{width:48%}#order_data .order_data_column:first-child{width:100%}.woocommerce_options_panel .description{display:block;clear:both;margin-left:0}.woocommerce_options_panel .dimensions_field .wrap,.woocommerce_options_panel .short,.woocommerce_options_panel input[type=text].short,.woocommerce_options_panel input[type=number].short,.woocommerce_options_panel input[type=email].short,.woocommerce_options_panel input[type=password].short{width:80%}.woocommerce_options_panel .downloadable_files,.woocommerce_variations .downloadable_files{padding:0;clear:both}.woocommerce_options_panel .downloadable_files label,.woocommerce_variations .downloadable_files label{position:static}.woocommerce_options_panel .downloadable_files table,.woocommerce_variations .downloadable_files table{margin:0 12px 24px;width:94%}.woocommerce_options_panel .downloadable_files table .sort,.woocommerce_variations .downloadable_files table .sort{visibility:hidden}.woocommerce_options_panel .woocommerce_variable_attributes .downloadable_files table,.woocommerce_variations .woocommerce_variable_attributes .downloadable_files table{margin:0 0 1em;width:100%}}@media only screen and (max-width:900px){#woocommerce-coupon-data ul.coupon_data_tabs,#woocommerce-product-data .wc-tabs-back,#woocommerce-product-data ul.product_data_tabs{width:10%}#woocommerce-coupon-data .wc-metaboxes-wrapper,#woocommerce-coupon-data .woocommerce_options_panel,#woocommerce-product-data .wc-metaboxes-wrapper,#woocommerce-product-data .woocommerce_options_panel{width:90%}#woocommerce-coupon-data ul.coupon_data_tabs li a,#woocommerce-product-data ul.product_data_tabs li a{position:relative;text-indent:-999px;padding:10px}#woocommerce-coupon-data ul.coupon_data_tabs li a::before,#woocommerce-product-data ul.product_data_tabs li a::before{position:absolute;top:0;right:0;bottom:0;left:0;text-indent:0;text-align:center;line-height:40px;width:100%;height:40px}}@media only screen and (max-width:782px){#wp-excerpt-media-buttons a{font-size:16px;line-height:37px;height:39px;padding:0 20px 0 15px}#wp-excerpt-editor-tools{padding-top:20px;padding-right:15px;overflow:hidden;margin-bottom:-1px}.post-type-product .wp-list-table .is-expanded td:not(.hidden),.post-type-shop_order .wp-list-table .is-expanded td:not(.hidden){overflow:visible}#woocommerce-product-data .checkbox{width:25px}.variations-pagenav{float:none;text-align:center;font-size:18px}.variations-pagenav .displaying-num{font-size:16px}.variations-pagenav a{padding:8px 20px 11px;font-size:18px}.variations-pagenav select{padding:0 20px}.variations-defaults{float:none;text-align:center;margin-top:10px}.post-type-product .wp-list-table .column-thumb{display:none;text-align:left;padding-bottom:0}.post-type-product .wp-list-table .column-thumb::before{display:none!important}.post-type-product .wp-list-table .column-thumb img{max-width:32px}.post-type-product .wp-list-table .toggle-row{top:-28px}.post-type-shop_order .wp-list-table .column-order_status{display:none;text-align:left;padding-bottom:0}.post-type-shop_order .wp-list-table .column-order_status mark{margin:0}.post-type-shop_order .wp-list-table .column-order_status::before{display:none!important}.post-type-shop_order .wp-list-table .column-customer_message,.post-type-shop_order .wp-list-table .column-order_notes{text-align:inherit}.post-type-shop_order .wp-list-table .column-order_notes .note-on{font-size:1.3em;margin:0}.post-type-shop_order .wp-list-table .toggle-row{top:-15px}}@media only screen and (max-width:500px){.woocommerce_options_panel label,.woocommerce_options_panel legend{float:none;width:auto;display:block;margin:0}.woocommerce_options_panel fieldset.form-field,.woocommerce_options_panel p.form-field{padding:5px 20px!important}}.wc-backbone-modal *{box-sizing:border-box}.wc-backbone-modal .wc-backbone-modal-content{position:fixed;background:#fff;z-index:100000;left:50%;top:50%;transform:translate(-50%,-50%);width:500px}.wc-backbone-modal .wc-backbone-modal-content article{overflow:auto}.wc-backbone-modal.wc-backbone-modal-shipping-method-settings .wc-backbone-modal-content{width:75%;min-width:500px}.wc-backbone-modal .select2-container{width:100%!important}.wc-backbone-modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;min-height:360px;background:#000;opacity:.7;z-index:99900}.wc-backbone-modal-main{padding-bottom:55px}.wc-backbone-modal-main article,.wc-backbone-modal-main header{display:block;position:relative}.wc-backbone-modal-main .wc-backbone-modal-header{height:auto;background:#fcfcfc;padding:1em 1.5em;border-bottom:1px solid #ddd}.wc-backbone-modal-main .wc-backbone-modal-header h1{margin:0;font-size:18px;font-weight:700;line-height:1.5em}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link{cursor:pointer;color:#777;height:54px;width:54px;padding:0;position:absolute;top:0;right:0;text-align:center;border:0;border-left:1px solid #ddd;background-color:transparent;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link::before{font:400 22px/50px dashicons!important;color:#666;display:block;content:'\f335';font-weight:300}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link:focus,.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link:hover{background:#ddd;border-color:#ccc;color:#000}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link:focus{outline:0}.wc-backbone-modal-main article{padding:1.5em}.wc-backbone-modal-main article p{margin:1.5em 0}.wc-backbone-modal-main article p:last-child,.wc-backbone-modal-main footer .inner .button{margin-bottom:0}.wc-backbone-modal-main article p:first-child{margin-top:0}.wc-backbone-modal-main article .pagination{padding:10px 0 0;text-align:center}.wc-backbone-modal-main footer{position:absolute;left:0;right:0;bottom:0;z-index:100;padding:1em 1.5em;background:#fcfcfc;border-top:1px solid #dfdfdf;box-shadow:0 -4px 4px -4px rgba(0,0,0,.1)}.select2-container .select2-selection,.select2-dropdown{border-color:#ddd}.wc-backbone-modal-main footer .inner{float:right;line-height:23px}.select2-drop,.select2-dropdown{z-index:999999!important}.select2-results{line-height:1.5em}.select2-results .select2-results__group,.select2-results .select2-results__option{margin:0;padding:8px}.select2-dropdown--below{box-shadow:0 1px 1px rgba(0,0,0,.1)}.select2-dropdown--above{box-shadow:0 -1px 1px rgba(0,0,0,.1)}.select2-selection__rendered.ui-sortable li{cursor:move}.select2-container .select2-search__field{min-width:150px}.select2-container .select2-selection--single{height:32px}.select2-container .select2-selection--single .select2-selection__rendered{line-height:32px;padding-right:24px}.select2-container .select2-selection--single .select2-selection__arrow{right:3px;height:30px}.select2-container .select2-selection--multiple{min-height:28px;border-radius:0;line-height:1.5}.select2-container .select2-selection--multiple li{margin:0}.select2-container .select2-selection--multiple .select2-selection__choice{padding:2px 6px}.select2-container .select2-selection__clear{color:#999;margin-top:-1px}.select2-container .select2-search--inline .select2-search__field{font-family:inherit;font-size:inherit;font-weight:inherit;padding:3px 0}.woocommerce table.form-table .select2-container{min-width:400px!important}.post-type-shop_order .tablenav .actions{overflow:visible}.post-type-shop_order .tablenav input,.post-type-shop_order .tablenav select{line-height:32px;height:32px}.post-type-shop_order .tablenav .select2-container{float:left;width:200px!important;font-size:14px;vertical-align:middle;margin:1px 6px 4px 1px} \ No newline at end of file diff --git a/assets/css/admin.scss b/assets/css/admin.scss index 6bcb019b982..be7b04f12d4 100644 --- a/assets/css/admin.scss +++ b/assets/css/admin.scss @@ -3156,6 +3156,7 @@ img.help_tip { border: 1px solid #ddd; /* rtl:ignore */ border-right: 0; + margin-left: -3px; } .colorpick { From 27b35c0515bddc1f3c4692ee97d21128af79cded Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 5 Apr 2017 18:40:59 +0100 Subject: [PATCH 254/525] Using WPDB is quicker than wp_update_post --- .../class-wc-product-variation-data-store-cpt.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/includes/data-stores/class-wc-product-variation-data-store-cpt.php b/includes/data-stores/class-wc-product-variation-data-store-cpt.php index 643a971f654..3aa4ebd2e5d 100644 --- a/includes/data-stores/class-wc-product-variation-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-variation-data-store-cpt.php @@ -73,12 +73,12 @@ class WC_Product_Variation_Data_Store_CPT extends WC_Product_Data_Store_CPT impl * If a variation title is not in sync with the parent e.g. saved prior to 3.0, or if the parent title has changed, detect here and update. */ if ( version_compare( get_post_meta( $product->get_id(), '_product_version', true ), '3.0', '<' ) && 0 !== strpos( $post_object->post_title, get_post_field( 'post_title', $product->get_parent_id() ) ) ) { + global $wpdb; + $new_title = $this->generate_product_title( $product ); $product->set_name( $new_title ); - wp_update_post( array( - 'ID' => $product->get_id(), - 'post_title' => $new_title, - ) ); + $wpdb->update( $wpdb->posts, array( 'post_title' => $new_title ), array( 'ID' => $product->get_id() ) ); + clean_post_cache( $product->get_id() ); } // Set object_read true once all data is read. From 5389844a1b059c32a1a9499ccda60006e0a3f54d Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Wed, 5 Apr 2017 11:02:26 -0700 Subject: [PATCH 255/525] Use parent data for sold_individually --- ...ss-wc-product-variation-data-store-cpt.php | 3 ++ .../variation-add-to-cart-button.php | 4 +- .../unit-tests/product/product-variation.php | 41 +++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 tests/unit-tests/product/product-variation.php diff --git a/includes/data-stores/class-wc-product-variation-data-store-cpt.php b/includes/data-stores/class-wc-product-variation-data-store-cpt.php index 643a971f654..1e44cdc498e 100644 --- a/includes/data-stores/class-wc-product-variation-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-variation-data-store-cpt.php @@ -280,6 +280,9 @@ class WC_Product_Variation_Data_Store_CPT extends WC_Product_Data_Store_CPT impl 'shipping_class_id' => absint( current( $this->get_term_ids( $product->get_parent_id(), 'product_shipping_class' ) ) ), 'image_id' => get_post_thumbnail_id( $product->get_parent_id() ), ) ); + + // Use the parent sold_individually settings since variations don't have a user-facing way to set sold_individually. + $product->set_sold_individually( get_post_meta( $product->get_parent_id(), '_sold_individually', true ) ); } /** diff --git a/templates/single-product/add-to-cart/variation-add-to-cart-button.php b/templates/single-product/add-to-cart/variation-add-to-cart-button.php index 9219e6cf260..1aa8ace21e8 100644 --- a/templates/single-product/add-to-cart/variation-add-to-cart-button.php +++ b/templates/single-product/add-to-cart/variation-add-to-cart-button.php @@ -21,7 +21,9 @@ global $product; do_action( 'woocommerce_before_add_to_cart_quantity' ); woocommerce_quantity_input( array( - 'input_value' => isset( $_POST['quantity'] ) ? wc_stock_amount( $_POST['quantity'] ) : 1, + 'min_value' => apply_filters( 'woocommerce_quantity_input_min', $product->get_min_purchase_quantity(), $product ), + 'max_value' => apply_filters( 'woocommerce_quantity_input_max', $product->get_max_purchase_quantity(), $product ), + 'input_value' => isset( $_POST['quantity'] ) ? wc_stock_amount( $_POST['quantity'] ) : $product->get_min_purchase_quantity(), ) ); /** diff --git a/tests/unit-tests/product/product-variation.php b/tests/unit-tests/product/product-variation.php new file mode 100644 index 00000000000..c72095c2aa7 --- /dev/null +++ b/tests/unit-tests/product/product-variation.php @@ -0,0 +1,41 @@ +set_sold_individually( true ); + + $attribute = new WC_Product_Attribute(); + $attribute->set_id( 0 ); + $attribute->set_name( 'color' ); + $attribute->set_options( explode( WC_DELIMITER, 'green | red' ) ); + $attribute->set_visible( true ); + $attribute->set_variation( true ); + + $product->set_attributes( array( $attribute ) ); + $product->save(); + + // Create a new variation with the color 'green'. + $variation = new WC_Product_Variation; + $variation->set_parent_id( $product->get_id() ); + $variation->set_attributes( array( 'color' => 'green' ) ); + $variation->set_status( 'private' ); + $variation->save(); + + $variation = wc_get_product( $variation->get_id() ); + $this->assertTrue( $variation->is_sold_individually() ); + } + +} From 160d394070650f2736f52a009260eb4d9ecbbe00 Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Wed, 5 Apr 2017 11:13:31 -0700 Subject: [PATCH 256/525] Clean up test --- tests/unit-tests/product/product-variation.php | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/tests/unit-tests/product/product-variation.php b/tests/unit-tests/product/product-variation.php index c72095c2aa7..1f682226371 100644 --- a/tests/unit-tests/product/product-variation.php +++ b/tests/unit-tests/product/product-variation.php @@ -16,26 +16,13 @@ class WC_Tests_Product_Variation extends WC_Unit_Test_Case { // Create a variable product with sold individually. $product = new WC_Product_Variable; $product->set_sold_individually( true ); - - $attribute = new WC_Product_Attribute(); - $attribute->set_id( 0 ); - $attribute->set_name( 'color' ); - $attribute->set_options( explode( WC_DELIMITER, 'green | red' ) ); - $attribute->set_visible( true ); - $attribute->set_variation( true ); - - $product->set_attributes( array( $attribute ) ); $product->save(); - // Create a new variation with the color 'green'. $variation = new WC_Product_Variation; $variation->set_parent_id( $product->get_id() ); - $variation->set_attributes( array( 'color' => 'green' ) ); - $variation->set_status( 'private' ); $variation->save(); $variation = wc_get_product( $variation->get_id() ); $this->assertTrue( $variation->is_sold_individually() ); } - } From e2881d5af136ec4474f35ec350fcbaf10022a253 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Wed, 5 Apr 2017 15:50:40 -0300 Subject: [PATCH 257/525] Ensure gateways are loaded in emails Fix missing bank details in emails closes #13966 --- includes/class-wc-emails.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/includes/class-wc-emails.php b/includes/class-wc-emails.php index 294533233fd..7c41863bc0b 100644 --- a/includes/class-wc-emails.php +++ b/includes/class-wc-emails.php @@ -112,6 +112,11 @@ class WC_Emails { public static function send_queued_transactional_email( $filter = '', $args = array() ) { if ( apply_filters( 'woocommerce_allow_send_queued_transactional_email', true, $filter, $args ) ) { self::instance(); // Init self so emails exist. + + // Ensure gateways are loaded in case they need to insert data into the emails. + WC()->payment_gateways(); + WC()->shipping(); + do_action_ref_array( $filter . '_notification', $args ); } } From 523d39578a97024353ae0cfd248b94c09062150d Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Wed, 5 Apr 2017 12:03:18 -0700 Subject: [PATCH 258/525] Compare to the order item title instead of variation title --- includes/class-wc-order-item.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/includes/class-wc-order-item.php b/includes/class-wc-order-item.php index 1da9eefb1d8..bd5d445a5d9 100644 --- a/includes/class-wc-order-item.php +++ b/includes/class-wc-order-item.php @@ -186,6 +186,7 @@ class WC_Order_Item extends WC_Data implements ArrayAccess { $meta_data = $this->get_meta_data(); $hideprefix_length = ! empty( $hideprefix ) ? strlen( $hideprefix ) : 0; $product = is_callable( array( $this, 'get_product' ) ) ? $this->get_product() : false; + $order_item_name = $this->get_name(); foreach ( $meta_data as $meta ) { if ( empty( $meta->id ) || "" === $meta->value || is_array( $meta->value ) || ( $hideprefix_length && substr( $meta->key, 0, $hideprefix_length ) === $hideprefix ) ) { @@ -208,7 +209,7 @@ class WC_Order_Item extends WC_Data implements ArrayAccess { // Skip items with values already in the product details area of the product name $value_in_product_name_regex = "/–.*" . preg_quote( $display_value, '/' ) . "/i"; - if ( $product && preg_match( $value_in_product_name_regex, $product->get_name() ) ) { + if ( $product && preg_match( $value_in_product_name_regex, $order_item_name ) ) { continue; } From a6080aa4a9a23edfe9d600007886367f2d862ce6 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 5 Apr 2017 20:21:33 +0100 Subject: [PATCH 259/525] Pass ID, not the product object --- includes/class-wc-post-data.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/class-wc-post-data.php b/includes/class-wc-post-data.php index 2a1de0f555b..495b8c3f0c4 100644 --- a/includes/class-wc-post-data.php +++ b/includes/class-wc-post-data.php @@ -126,10 +126,10 @@ class WC_Post_Data { * @param string $to */ public static function product_type_changed( $product, $from, $to ) { - if ( 'variable' === $from ) { + if ( 'variable' === $from && 'variable' !== $to ) { // If the product is no longer variable, we should ensure all variations are removed. $data_store = WC_Data_Store::load( 'product-variable' ); - $data_store->delete_variations( $product ); + $data_store->delete_variations( $product->get_id() ); } } From 0035afc5a046d907ad288a684e7d19aef496ee6e Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 5 Apr 2017 20:22:05 +0100 Subject: [PATCH 260/525] Make sure we have number > 0 so all variations are not deleted --- .../data-stores/class-wc-product-variable-data-store-cpt.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/includes/data-stores/class-wc-product-variable-data-store-cpt.php b/includes/data-stores/class-wc-product-variable-data-store-cpt.php index 22284be2e03..d609e6f1e92 100644 --- a/includes/data-stores/class-wc-product-variable-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-variable-data-store-cpt.php @@ -393,6 +393,10 @@ class WC_Product_Variable_Data_Store_CPT extends WC_Product_Data_Store_CPT imple * @param $force_delete False to trash. */ public function delete_variations( $product_id, $force_delete = false ) { + if ( ! is_numeric( $product_id ) || 0 <= $product_id ) { + return; + } + $variation_ids = wp_parse_id_list( get_posts( array( 'post_parent' => $product_id, 'post_type' => 'product_variation', From 359213d7201dd5f5a8e382a30b62c6be7b311d4f Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 5 Apr 2017 20:25:21 +0100 Subject: [PATCH 261/525] Fix direction --- .../data-stores/class-wc-product-variable-data-store-cpt.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/data-stores/class-wc-product-variable-data-store-cpt.php b/includes/data-stores/class-wc-product-variable-data-store-cpt.php index d609e6f1e92..72c923d9806 100644 --- a/includes/data-stores/class-wc-product-variable-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-variable-data-store-cpt.php @@ -393,7 +393,7 @@ class WC_Product_Variable_Data_Store_CPT extends WC_Product_Data_Store_CPT imple * @param $force_delete False to trash. */ public function delete_variations( $product_id, $force_delete = false ) { - if ( ! is_numeric( $product_id ) || 0 <= $product_id ) { + if ( ! is_numeric( $product_id ) || 0 >= $product_id ) { return; } From 87199d06277b001ec23fb0d8e2e9938e78efe91c Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Wed, 5 Apr 2017 17:03:05 -0300 Subject: [PATCH 262/525] [REST API] Fixed attributes while trying to save variations Closes #13936 --- includes/api/legacy/v2/class-wc-api-products.php | 2 +- includes/api/legacy/v3/class-wc-api-products.php | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/includes/api/legacy/v2/class-wc-api-products.php b/includes/api/legacy/v2/class-wc-api-products.php index de67231b85d..2c565e815a0 100644 --- a/includes/api/legacy/v2/class-wc-api-products.php +++ b/includes/api/legacy/v2/class-wc-api-products.php @@ -1262,7 +1262,7 @@ class WC_API_Products extends WC_API_Resource { global $wpdb; $id = $product->get_id(); - $attributes = $product->get_variation_attributes(); + $attributes = $product->get_attributes(); foreach ( $request['variations'] as $menu_order => $data ) { $variation_id = isset( $data['id'] ) ? absint( $data['id'] ) : 0; diff --git a/includes/api/legacy/v3/class-wc-api-products.php b/includes/api/legacy/v3/class-wc-api-products.php index d193d9b2341..a2bbcf6bbbd 100644 --- a/includes/api/legacy/v3/class-wc-api-products.php +++ b/includes/api/legacy/v3/class-wc-api-products.php @@ -1751,8 +1751,7 @@ class WC_API_Products extends WC_API_Resource { global $wpdb; $id = $product->get_id(); - $variations = $request['variations']; - $attributes = (array) get_post_meta( $id, '_product_attributes', true ); + $attributes = $product->get_attributes(); foreach ( $variations as $menu_order => $data ) { $variation_id = isset( $data['id'] ) ? absint( $data['id'] ) : 0; From c02cee595ee73b799d4e13a27595bedf6cb7af70 Mon Sep 17 00:00:00 2001 From: Claudiu Lodromanean Date: Wed, 5 Apr 2017 13:37:42 -0700 Subject: [PATCH 263/525] Add missing download_id param --- .../class-wc-customer-download-data-store.php | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/includes/data-stores/class-wc-customer-download-data-store.php b/includes/data-stores/class-wc-customer-download-data-store.php index 591c6e78777..53d85c272df 100644 --- a/includes/data-stores/class-wc-customer-download-data-store.php +++ b/includes/data-stores/class-wc-customer-download-data-store.php @@ -204,14 +204,15 @@ class WC_Customer_Download_Data_Store implements WC_Customer_Download_Data_Store global $wpdb; $args = wp_parse_args( $args, array( - 'user_email' => '', - 'order_id' => '', - 'order_key' => '', - 'product_id' => '', - 'orderby' => 'permission_id', - 'order' => 'DESC', - 'limit' => -1, - 'return' => 'objects', + 'user_email' => '', + 'order_id' => '', + 'order_key' => '', + 'product_id' => '', + 'download_id' => '', + 'orderby' => 'permission_id', + 'order' => 'DESC', + 'limit' => -1, + 'return' => 'objects', ) ); $query = array(); @@ -233,6 +234,10 @@ class WC_Customer_Download_Data_Store implements WC_Customer_Download_Data_Store $query[] = $wpdb->prepare( "AND product_id = %d", $args['product_id'] ); } + if ( $args['download_id'] ) { + $query[] = $wpdb->prepare( "AND download_id = %s", $args['download_id'] ); + } + $allowed_orders = array( 'permission_id', 'download_id', 'product_id', 'order_id', 'order_key', 'user_email', 'user_id', 'downloads_remaining', 'access_granted', 'access_expires', 'download_count' ); $order = in_array( $args['order'], $allowed_orders ) ? $args['order'] : 'permission_id'; $orderby = 'DESC' === strtoupper( $args['orderby'] ) ? 'DESC' : 'ASC'; From 0d1d1fa7153236ec63bde68f6703ce94d668ab1a Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 5 Apr 2017 22:05:08 +0100 Subject: [PATCH 264/525] Include clearfix on billing and shipping wrappers. Fixes #13957 --- assets/css/woocommerce-layout-rtl.css | 2 +- assets/css/woocommerce-layout.css | 2 +- assets/css/woocommerce-layout.scss | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/assets/css/woocommerce-layout-rtl.css b/assets/css/woocommerce-layout-rtl.css index c689d64b22f..ed78d8fbd37 100644 --- a/assets/css/woocommerce-layout-rtl.css +++ b/assets/css/woocommerce-layout-rtl.css @@ -1 +1 @@ -.woocommerce #content div.product .woocommerce-tabs ul.tabs::after,.woocommerce #content div.product .woocommerce-tabs ul.tabs::before,.woocommerce #content div.product div.thumbnails::after,.woocommerce #content div.product div.thumbnails::before,.woocommerce .col2-set::after,.woocommerce .col2-set::before,.woocommerce div.product .woocommerce-tabs ul.tabs::after,.woocommerce div.product .woocommerce-tabs ul.tabs::before,.woocommerce div.product div.thumbnails::after,.woocommerce div.product div.thumbnails::before,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs::after,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs::before,.woocommerce-page #content div.product div.thumbnails::after,.woocommerce-page #content div.product div.thumbnails::before,.woocommerce-page .col2-set::after,.woocommerce-page .col2-set::before,.woocommerce-page div.product .woocommerce-tabs ul.tabs::after,.woocommerce-page div.product .woocommerce-tabs ul.tabs::before,.woocommerce-page div.product div.thumbnails::after,.woocommerce-page div.product div.thumbnails::before{content:' ';display:table}.woocommerce #content div.product .woocommerce-tabs,.woocommerce #content div.product .woocommerce-tabs ul.tabs::after,.woocommerce #content div.product div.thumbnails a.first,.woocommerce #content div.product div.thumbnails::after,.woocommerce .cart-collaterals::after,.woocommerce .col2-set::after,.woocommerce .woocommerce-pagination ul.page-numbers::after,.woocommerce div.product .woocommerce-tabs,.woocommerce div.product .woocommerce-tabs ul.tabs::after,.woocommerce div.product div.thumbnails a.first,.woocommerce div.product div.thumbnails::after,.woocommerce ul.products,.woocommerce ul.products li.first,.woocommerce ul.products::after,.woocommerce-page #content div.product .woocommerce-tabs,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs::after,.woocommerce-page #content div.product div.thumbnails a.first,.woocommerce-page #content div.product div.thumbnails::after,.woocommerce-page .cart-collaterals::after,.woocommerce-page .col2-set::after,.woocommerce-page .woocommerce-pagination ul.page-numbers::after,.woocommerce-page div.product .woocommerce-tabs,.woocommerce-page div.product .woocommerce-tabs ul.tabs::after,.woocommerce-page div.product div.thumbnails a.first,.woocommerce-page div.product div.thumbnails::after,.woocommerce-page ul.products,.woocommerce-page ul.products li.first,.woocommerce-page ul.products::after{clear:both}.woocommerce .woocommerce-error .button,.woocommerce .woocommerce-info .button,.woocommerce .woocommerce-message .button,.woocommerce-page .woocommerce-error .button,.woocommerce-page .woocommerce-info .button,.woocommerce-page .woocommerce-message .button{float:left}.woocommerce .col2-set,.woocommerce-page .col2-set{width:100%}.woocommerce .col2-set .col-1,.woocommerce-page .col2-set .col-1{float:right;width:48%}.woocommerce .col2-set .col-2,.woocommerce-page .col2-set .col-2{float:left;width:48%}.woocommerce img,.woocommerce-page img{height:auto;max-width:100%}.woocommerce #content div.product div.images,.woocommerce div.product div.images,.woocommerce-page #content div.product div.images,.woocommerce-page div.product div.images{float:right;width:48%}.woocommerce #content div.product div.thumbnails a,.woocommerce div.product div.thumbnails a,.woocommerce-page #content div.product div.thumbnails a,.woocommerce-page div.product div.thumbnails a{float:right;width:30.75%;margin-left:3.8%;margin-bottom:1em}.woocommerce #content div.product div.thumbnails a.last,.woocommerce div.product div.thumbnails a.last,.woocommerce-page #content div.product div.thumbnails a.last,.woocommerce-page div.product div.thumbnails a.last{margin-left:0}.woocommerce #content div.product div.thumbnails.columns-1 a,.woocommerce div.product div.thumbnails.columns-1 a,.woocommerce-page #content div.product div.thumbnails.columns-1 a,.woocommerce-page div.product div.thumbnails.columns-1 a{width:100%;margin-left:0;float:none}.woocommerce #content div.product div.thumbnails.columns-2 a,.woocommerce div.product div.thumbnails.columns-2 a,.woocommerce-page #content div.product div.thumbnails.columns-2 a,.woocommerce-page div.product div.thumbnails.columns-2 a{width:48%}.woocommerce #content div.product div.thumbnails.columns-4 a,.woocommerce div.product div.thumbnails.columns-4 a,.woocommerce-page #content div.product div.thumbnails.columns-4 a,.woocommerce-page div.product div.thumbnails.columns-4 a{width:22.05%}.woocommerce #content div.product div.thumbnails.columns-5 a,.woocommerce div.product div.thumbnails.columns-5 a,.woocommerce-page #content div.product div.thumbnails.columns-5 a,.woocommerce-page div.product div.thumbnails.columns-5 a{width:16.9%}.woocommerce #content div.product div.summary,.woocommerce div.product div.summary,.woocommerce-page #content div.product div.summary,.woocommerce-page div.product div.summary{float:left;width:48%}.woocommerce #content div.product .woocommerce-tabs ul.tabs li,.woocommerce div.product .woocommerce-tabs ul.tabs li,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li,.woocommerce-page div.product .woocommerce-tabs ul.tabs li{display:inline-block}.woocommerce #content div.product #reviews .comment::after,.woocommerce #content div.product #reviews .comment::before,.woocommerce .woocommerce-pagination ul.page-numbers::after,.woocommerce .woocommerce-pagination ul.page-numbers::before,.woocommerce div.product #reviews .comment::after,.woocommerce div.product #reviews .comment::before,.woocommerce ul.products::after,.woocommerce ul.products::before,.woocommerce-page #content div.product #reviews .comment::after,.woocommerce-page #content div.product #reviews .comment::before,.woocommerce-page .woocommerce-pagination ul.page-numbers::after,.woocommerce-page .woocommerce-pagination ul.page-numbers::before,.woocommerce-page div.product #reviews .comment::after,.woocommerce-page div.product #reviews .comment::before,.woocommerce-page ul.products::after,.woocommerce-page ul.products::before{content:' ';display:table}.woocommerce #content div.product #reviews .comment::after,.woocommerce div.product #reviews .comment::after,.woocommerce-page #content div.product #reviews .comment::after,.woocommerce-page div.product #reviews .comment::after{clear:both}.woocommerce #content div.product #reviews .comment img,.woocommerce div.product #reviews .comment img,.woocommerce-page #content div.product #reviews .comment img,.woocommerce-page div.product #reviews .comment img{float:left;height:auto}.woocommerce ul.products li.product,.woocommerce-page ul.products li.product{float:right;margin:0 0 2.992em 3.8%;padding:0;position:relative;width:22.05%}.woocommerce ul.products li.last,.woocommerce-page ul.products li.last{margin-left:0}.woocommerce-page.columns-1 ul.products li.product,.woocommerce.columns-1 ul.products li.product{width:100%;margin-left:0}.woocommerce-page.columns-2 ul.products li.product,.woocommerce.columns-2 ul.products li.product{width:48%}.woocommerce-page.columns-3 ul.products li.product,.woocommerce.columns-3 ul.products li.product{width:30.75%}.woocommerce-page.columns-5 ul.products li.product,.woocommerce.columns-5 ul.products li.product{width:16.95%}.woocommerce-page.columns-6 ul.products li.product,.woocommerce.columns-6 ul.products li.product{width:13.5%}.woocommerce .woocommerce-result-count,.woocommerce-page .woocommerce-result-count{float:right}.woocommerce .woocommerce-ordering,.woocommerce-page .woocommerce-ordering{float:left}.woocommerce .woocommerce-pagination ul.page-numbers li,.woocommerce-page .woocommerce-pagination ul.page-numbers li{display:inline-block}.woocommerce #content table.cart img,.woocommerce table.cart img,.woocommerce-page #content table.cart img,.woocommerce-page table.cart img{height:auto}.woocommerce #content table.cart td.actions,.woocommerce table.cart td.actions,.woocommerce-page #content table.cart td.actions,.woocommerce-page table.cart td.actions{text-align:left}.woocommerce #content table.cart td.actions .input-text,.woocommerce table.cart td.actions .input-text,.woocommerce-page #content table.cart td.actions .input-text,.woocommerce-page table.cart td.actions .input-text{width:80px}.woocommerce #content table.cart td.actions .coupon,.woocommerce table.cart td.actions .coupon,.woocommerce-page #content table.cart td.actions .coupon,.woocommerce-page table.cart td.actions .coupon{float:right}.woocommerce #content table.cart td.actions .coupon label,.woocommerce table.cart td.actions .coupon label,.woocommerce-page #content table.cart td.actions .coupon label,.woocommerce-page table.cart td.actions .coupon label{display:none}.woocommerce .cart-collaterals .shipping_calculator::after,.woocommerce .cart-collaterals .shipping_calculator::before,.woocommerce .cart-collaterals::after,.woocommerce .cart-collaterals::before,.woocommerce form .form-row::after,.woocommerce form .form-row::before,.woocommerce ul.cart_list li::after,.woocommerce ul.cart_list li::before,.woocommerce ul.product_list_widget li::after,.woocommerce ul.product_list_widget li::before,.woocommerce-page .cart-collaterals .shipping_calculator::after,.woocommerce-page .cart-collaterals .shipping_calculator::before,.woocommerce-page .cart-collaterals::after,.woocommerce-page .cart-collaterals::before,.woocommerce-page form .form-row::after,.woocommerce-page form .form-row::before,.woocommerce-page ul.cart_list li::after,.woocommerce-page ul.cart_list li::before,.woocommerce-page ul.product_list_widget li::after,.woocommerce-page ul.product_list_widget li::before{content:' ';display:table}.woocommerce .cart-collaterals,.woocommerce-page .cart-collaterals{width:100%}.woocommerce .cart-collaterals .related,.woocommerce-page .cart-collaterals .related{width:30.75%;float:right}.woocommerce .cart-collaterals .cross-sells,.woocommerce-page .cart-collaterals .cross-sells{width:48%;float:right}.woocommerce .cart-collaterals .cross-sells ul.products,.woocommerce-page .cart-collaterals .cross-sells ul.products{float:none}.woocommerce .cart-collaterals .cross-sells ul.products li,.woocommerce-page .cart-collaterals .cross-sells ul.products li{width:48%}.woocommerce .cart-collaterals .shipping_calculator,.woocommerce-page .cart-collaterals .shipping_calculator{width:48%;clear:left;float:left}.woocommerce .cart-collaterals .shipping_calculator::after,.woocommerce form .form-row-wide,.woocommerce form .form-row::after,.woocommerce ul.cart_list li::after,.woocommerce ul.product_list_widget li::after,.woocommerce-page .cart-collaterals .shipping_calculator::after,.woocommerce-page form .form-row-wide,.woocommerce-page form .form-row::after,.woocommerce-page ul.cart_list li::after,.woocommerce-page ul.product_list_widget li::after{clear:both}.woocommerce .cart-collaterals .shipping_calculator .col2-set .col-1,.woocommerce .cart-collaterals .shipping_calculator .col2-set .col-2,.woocommerce-page .cart-collaterals .shipping_calculator .col2-set .col-1,.woocommerce-page .cart-collaterals .shipping_calculator .col2-set .col-2{width:47%}.woocommerce .cart-collaterals .cart_totals,.woocommerce-page .cart-collaterals .cart_totals{float:left;width:48%}.woocommerce ul.cart_list li img,.woocommerce ul.product_list_widget li img,.woocommerce-page ul.cart_list li img,.woocommerce-page ul.product_list_widget li img{float:left;height:auto}.woocommerce form .form-row label,.woocommerce-page form .form-row label{display:block}.woocommerce form .form-row label.checkbox,.woocommerce-page form .form-row label.checkbox{display:inline}.woocommerce form .form-row select,.woocommerce-page form .form-row select{width:100%}.woocommerce form .form-row .input-text,.woocommerce-page form .form-row .input-text{box-sizing:border-box;width:100%}.woocommerce form .form-row-first,.woocommerce form .form-row-last,.woocommerce-page form .form-row-first,.woocommerce-page form .form-row-last{width:47%;overflow:visible}.woocommerce form .form-row-first,.woocommerce-page form .form-row-first{float:right}.woocommerce form .form-row-last,.woocommerce-page form .form-row-last{float:left}.woocommerce #payment .form-row select,.woocommerce-page #payment .form-row select{width:auto}.woocommerce #payment .terms,.woocommerce #payment .wc-terms-and-conditions,.woocommerce-page #payment .terms,.woocommerce-page #payment .wc-terms-and-conditions{text-align:right;padding:0 0 0 1em;float:right}.woocommerce #payment #place_order,.woocommerce-page #payment #place_order{float:left}.woocommerce-account .woocommerce-MyAccount-navigation{float:right;width:30%}.woocommerce-account .woocommerce-MyAccount-content{float:left;width:68%}.woocommerce-page.left-sidebar #content.twentyeleven{width:58.4%;margin:0 7.6%;float:left}.woocommerce-page.right-sidebar #content.twentyeleven{margin:0 7.6%;width:58.4%;float:right}.twentyfourteen .tfwc{padding:12px 10px 0;max-width:474px;margin:0 auto}.twentyfourteen .tfwc .product .entry-summary{padding:0!important;margin:0 0 1.618em!important}.twentyfourteen .tfwc div.product.hentry.has-post-thumbnail{margin-top:0}@media screen and (min-width:673px){.twentyfourteen .tfwc{padding-left:30px;padding-right:30px}}@media screen and (min-width:1040px){.twentyfourteen .tfwc{padding-left:15px;padding-right:15px}}@media screen and (min-width:1110px){.twentyfourteen .tfwc{padding-left:30px;padding-right:30px}}@media screen and (min-width:1218px){.twentyfourteen .tfwc{margin-left:54px}.full-width .twentyfourteen .tfwc{margin-left:auto}}.twentyfifteen .t15wc{padding-right:7.6923%;padding-left:7.6923%;padding-top:7.6923%;margin-bottom:7.6923%;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.15)}.twentyfifteen .t15wc .page-title{margin-right:0}@media screen and (min-width:38.75em){.twentyfifteen .t15wc{margin-left:7.6923%;margin-right:7.6923%;margin-top:8.3333%}}@media screen and (min-width:59.6875em){.twentyfifteen .t15wc{margin-right:8.3333%;margin-left:8.3333%;padding:10%}.single-product .twentyfifteen .entry-summary{padding:0!important}}.twentysixteen .site-main{margin-left:7.6923%;margin-right:7.6923%}.twentysixteen .entry-summary{margin-left:0;margin-right:0}#content .twentysixteen div.product div.images,#content .twentysixteen div.product div.summary{width:46.42857%}@media screen and (min-width:44.375em){.twentysixteen .site-main{margin-left:23.0769%}}@media screen and (min-width:56.875em){.twentysixteen .site-main{margin-left:0;margin-right:0}.no-sidebar .twentysixteen .site-main{margin-left:15%;margin-right:15%}.no-sidebar .twentysixteen .entry-summary{margin-left:0;margin-right:0}}.rtl .woocommerce .col2-set .col-1,.rtl .woocommerce-page .col2-set .col-1{float:left}.rtl .woocommerce .col2-set .col-2,.rtl .woocommerce-page .col2-set .col-2{float:right} \ No newline at end of file +.woocommerce #content div.product .woocommerce-tabs ul.tabs::after,.woocommerce #content div.product .woocommerce-tabs ul.tabs::before,.woocommerce #content div.product div.thumbnails::after,.woocommerce #content div.product div.thumbnails::before,.woocommerce .col2-set::after,.woocommerce .col2-set::before,.woocommerce div.product .woocommerce-tabs ul.tabs::after,.woocommerce div.product .woocommerce-tabs ul.tabs::before,.woocommerce div.product div.thumbnails::after,.woocommerce div.product div.thumbnails::before,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs::after,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs::before,.woocommerce-page #content div.product div.thumbnails::after,.woocommerce-page #content div.product div.thumbnails::before,.woocommerce-page .col2-set::after,.woocommerce-page .col2-set::before,.woocommerce-page div.product .woocommerce-tabs ul.tabs::after,.woocommerce-page div.product .woocommerce-tabs ul.tabs::before,.woocommerce-page div.product div.thumbnails::after,.woocommerce-page div.product div.thumbnails::before{content:' ';display:table}.woocommerce #content div.product .woocommerce-tabs,.woocommerce #content div.product .woocommerce-tabs ul.tabs::after,.woocommerce #content div.product div.thumbnails a.first,.woocommerce #content div.product div.thumbnails::after,.woocommerce .cart-collaterals::after,.woocommerce .col2-set::after,.woocommerce .woocommerce-pagination ul.page-numbers::after,.woocommerce div.product .woocommerce-tabs,.woocommerce div.product .woocommerce-tabs ul.tabs::after,.woocommerce div.product div.thumbnails a.first,.woocommerce div.product div.thumbnails::after,.woocommerce ul.products,.woocommerce ul.products li.first,.woocommerce ul.products::after,.woocommerce-page #content div.product .woocommerce-tabs,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs::after,.woocommerce-page #content div.product div.thumbnails a.first,.woocommerce-page #content div.product div.thumbnails::after,.woocommerce-page .cart-collaterals::after,.woocommerce-page .col2-set::after,.woocommerce-page .woocommerce-pagination ul.page-numbers::after,.woocommerce-page div.product .woocommerce-tabs,.woocommerce-page div.product .woocommerce-tabs ul.tabs::after,.woocommerce-page div.product div.thumbnails a.first,.woocommerce-page div.product div.thumbnails::after,.woocommerce-page ul.products,.woocommerce-page ul.products li.first,.woocommerce-page ul.products::after{clear:both}.woocommerce .woocommerce-error .button,.woocommerce .woocommerce-info .button,.woocommerce .woocommerce-message .button,.woocommerce-page .woocommerce-error .button,.woocommerce-page .woocommerce-info .button,.woocommerce-page .woocommerce-message .button{float:left}.woocommerce .col2-set,.woocommerce-page .col2-set{width:100%}.woocommerce .col2-set .col-1,.woocommerce-page .col2-set .col-1{float:right;width:48%}.woocommerce .col2-set .col-2,.woocommerce-page .col2-set .col-2{float:left;width:48%}.woocommerce img,.woocommerce-page img{height:auto;max-width:100%}.woocommerce #content div.product div.images,.woocommerce div.product div.images,.woocommerce-page #content div.product div.images,.woocommerce-page div.product div.images{float:right;width:48%}.woocommerce #content div.product div.thumbnails a,.woocommerce div.product div.thumbnails a,.woocommerce-page #content div.product div.thumbnails a,.woocommerce-page div.product div.thumbnails a{float:right;width:30.75%;margin-left:3.8%;margin-bottom:1em}.woocommerce #content div.product div.thumbnails a.last,.woocommerce div.product div.thumbnails a.last,.woocommerce-page #content div.product div.thumbnails a.last,.woocommerce-page div.product div.thumbnails a.last{margin-left:0}.woocommerce #content div.product div.thumbnails.columns-1 a,.woocommerce div.product div.thumbnails.columns-1 a,.woocommerce-page #content div.product div.thumbnails.columns-1 a,.woocommerce-page div.product div.thumbnails.columns-1 a{width:100%;margin-left:0;float:none}.woocommerce #content div.product div.thumbnails.columns-2 a,.woocommerce div.product div.thumbnails.columns-2 a,.woocommerce-page #content div.product div.thumbnails.columns-2 a,.woocommerce-page div.product div.thumbnails.columns-2 a{width:48%}.woocommerce #content div.product div.thumbnails.columns-4 a,.woocommerce div.product div.thumbnails.columns-4 a,.woocommerce-page #content div.product div.thumbnails.columns-4 a,.woocommerce-page div.product div.thumbnails.columns-4 a{width:22.05%}.woocommerce #content div.product div.thumbnails.columns-5 a,.woocommerce div.product div.thumbnails.columns-5 a,.woocommerce-page #content div.product div.thumbnails.columns-5 a,.woocommerce-page div.product div.thumbnails.columns-5 a{width:16.9%}.woocommerce #content div.product div.summary,.woocommerce div.product div.summary,.woocommerce-page #content div.product div.summary,.woocommerce-page div.product div.summary{float:left;width:48%}.woocommerce #content div.product .woocommerce-tabs ul.tabs li,.woocommerce div.product .woocommerce-tabs ul.tabs li,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li,.woocommerce-page div.product .woocommerce-tabs ul.tabs li{display:inline-block}.woocommerce #content div.product #reviews .comment::after,.woocommerce #content div.product #reviews .comment::before,.woocommerce .woocommerce-pagination ul.page-numbers::after,.woocommerce .woocommerce-pagination ul.page-numbers::before,.woocommerce div.product #reviews .comment::after,.woocommerce div.product #reviews .comment::before,.woocommerce ul.products::after,.woocommerce ul.products::before,.woocommerce-page #content div.product #reviews .comment::after,.woocommerce-page #content div.product #reviews .comment::before,.woocommerce-page .woocommerce-pagination ul.page-numbers::after,.woocommerce-page .woocommerce-pagination ul.page-numbers::before,.woocommerce-page div.product #reviews .comment::after,.woocommerce-page div.product #reviews .comment::before,.woocommerce-page ul.products::after,.woocommerce-page ul.products::before{content:' ';display:table}.woocommerce #content div.product #reviews .comment::after,.woocommerce div.product #reviews .comment::after,.woocommerce-page #content div.product #reviews .comment::after,.woocommerce-page div.product #reviews .comment::after{clear:both}.woocommerce #content div.product #reviews .comment img,.woocommerce div.product #reviews .comment img,.woocommerce-page #content div.product #reviews .comment img,.woocommerce-page div.product #reviews .comment img{float:left;height:auto}.woocommerce ul.products li.product,.woocommerce-page ul.products li.product{float:right;margin:0 0 2.992em 3.8%;padding:0;position:relative;width:22.05%}.woocommerce ul.products li.last,.woocommerce-page ul.products li.last{margin-left:0}.woocommerce-page.columns-1 ul.products li.product,.woocommerce.columns-1 ul.products li.product{width:100%;margin-left:0}.woocommerce-page.columns-2 ul.products li.product,.woocommerce.columns-2 ul.products li.product{width:48%}.woocommerce-page.columns-3 ul.products li.product,.woocommerce.columns-3 ul.products li.product{width:30.75%}.woocommerce-page.columns-5 ul.products li.product,.woocommerce.columns-5 ul.products li.product{width:16.95%}.woocommerce-page.columns-6 ul.products li.product,.woocommerce.columns-6 ul.products li.product{width:13.5%}.woocommerce .woocommerce-result-count,.woocommerce-page .woocommerce-result-count{float:right}.woocommerce .woocommerce-ordering,.woocommerce-page .woocommerce-ordering{float:left}.woocommerce .woocommerce-pagination ul.page-numbers li,.woocommerce-page .woocommerce-pagination ul.page-numbers li{display:inline-block}.woocommerce #content table.cart img,.woocommerce table.cart img,.woocommerce-page #content table.cart img,.woocommerce-page table.cart img{height:auto}.woocommerce #content table.cart td.actions,.woocommerce table.cart td.actions,.woocommerce-page #content table.cart td.actions,.woocommerce-page table.cart td.actions{text-align:left}.woocommerce #content table.cart td.actions .input-text,.woocommerce table.cart td.actions .input-text,.woocommerce-page #content table.cart td.actions .input-text,.woocommerce-page table.cart td.actions .input-text{width:80px}.woocommerce #content table.cart td.actions .coupon,.woocommerce table.cart td.actions .coupon,.woocommerce-page #content table.cart td.actions .coupon,.woocommerce-page table.cart td.actions .coupon{float:right}.woocommerce #content table.cart td.actions .coupon label,.woocommerce table.cart td.actions .coupon label,.woocommerce-page #content table.cart td.actions .coupon label,.woocommerce-page table.cart td.actions .coupon label{display:none}.woocommerce .cart-collaterals .shipping_calculator::after,.woocommerce .cart-collaterals .shipping_calculator::before,.woocommerce .cart-collaterals::after,.woocommerce .cart-collaterals::before,.woocommerce form .form-row::after,.woocommerce form .form-row::before,.woocommerce ul.cart_list li::after,.woocommerce ul.cart_list li::before,.woocommerce ul.product_list_widget li::after,.woocommerce ul.product_list_widget li::before,.woocommerce-page .cart-collaterals .shipping_calculator::after,.woocommerce-page .cart-collaterals .shipping_calculator::before,.woocommerce-page .cart-collaterals::after,.woocommerce-page .cart-collaterals::before,.woocommerce-page form .form-row::after,.woocommerce-page form .form-row::before,.woocommerce-page ul.cart_list li::after,.woocommerce-page ul.cart_list li::before,.woocommerce-page ul.product_list_widget li::after,.woocommerce-page ul.product_list_widget li::before{display:table;content:' '}.woocommerce .cart-collaterals,.woocommerce-page .cart-collaterals{width:100%}.woocommerce .cart-collaterals .related,.woocommerce-page .cart-collaterals .related{width:30.75%;float:right}.woocommerce .cart-collaterals .cross-sells,.woocommerce-page .cart-collaterals .cross-sells{width:48%;float:right}.woocommerce .cart-collaterals .cross-sells ul.products,.woocommerce-page .cart-collaterals .cross-sells ul.products{float:none}.woocommerce .cart-collaterals .cross-sells ul.products li,.woocommerce-page .cart-collaterals .cross-sells ul.products li{width:48%}.woocommerce .cart-collaterals .shipping_calculator,.woocommerce-page .cart-collaterals .shipping_calculator{width:48%;clear:left;float:left}.woocommerce .cart-collaterals .shipping_calculator::after,.woocommerce .woocommerce-billing-fields::after,.woocommerce .woocommerce-shipping-fields::after,.woocommerce form .form-row-wide,.woocommerce form .form-row::after,.woocommerce ul.cart_list li::after,.woocommerce ul.product_list_widget li::after,.woocommerce-page .cart-collaterals .shipping_calculator::after,.woocommerce-page .woocommerce-billing-fields::after,.woocommerce-page .woocommerce-shipping-fields::after,.woocommerce-page form .form-row-wide,.woocommerce-page form .form-row::after,.woocommerce-page ul.cart_list li::after,.woocommerce-page ul.product_list_widget li::after{clear:both}.woocommerce .cart-collaterals .shipping_calculator .col2-set .col-1,.woocommerce .cart-collaterals .shipping_calculator .col2-set .col-2,.woocommerce-page .cart-collaterals .shipping_calculator .col2-set .col-1,.woocommerce-page .cart-collaterals .shipping_calculator .col2-set .col-2{width:47%}.woocommerce .cart-collaterals .cart_totals,.woocommerce-page .cart-collaterals .cart_totals{float:left;width:48%}.woocommerce ul.cart_list li img,.woocommerce ul.product_list_widget li img,.woocommerce-page ul.cart_list li img,.woocommerce-page ul.product_list_widget li img{float:left;height:auto}.woocommerce form .form-row label,.woocommerce-page form .form-row label{display:block}.woocommerce form .form-row label.checkbox,.woocommerce-page form .form-row label.checkbox{display:inline}.woocommerce form .form-row select,.woocommerce-page form .form-row select{width:100%}.woocommerce form .form-row .input-text,.woocommerce-page form .form-row .input-text{box-sizing:border-box;width:100%}.woocommerce form .form-row-first,.woocommerce form .form-row-last,.woocommerce-page form .form-row-first,.woocommerce-page form .form-row-last{width:47%;overflow:visible}.woocommerce form .form-row-first,.woocommerce-page form .form-row-first{float:right}.woocommerce form .form-row-last,.woocommerce-page form .form-row-last{float:left}.woocommerce #payment .form-row select,.woocommerce-page #payment .form-row select{width:auto}.woocommerce #payment .terms,.woocommerce #payment .wc-terms-and-conditions,.woocommerce-page #payment .terms,.woocommerce-page #payment .wc-terms-and-conditions{text-align:right;padding:0 0 0 1em;float:right}.woocommerce #payment #place_order,.woocommerce-page #payment #place_order{float:left}.woocommerce .woocommerce-billing-fields::after,.woocommerce .woocommerce-billing-fields::before,.woocommerce .woocommerce-shipping-fields::after,.woocommerce .woocommerce-shipping-fields::before,.woocommerce-page .woocommerce-billing-fields::after,.woocommerce-page .woocommerce-billing-fields::before,.woocommerce-page .woocommerce-shipping-fields::after,.woocommerce-page .woocommerce-shipping-fields::before{content:' ';display:table}.woocommerce-account .woocommerce-MyAccount-navigation{float:right;width:30%}.woocommerce-account .woocommerce-MyAccount-content{float:left;width:68%}.woocommerce-page.left-sidebar #content.twentyeleven{width:58.4%;margin:0 7.6%;float:left}.woocommerce-page.right-sidebar #content.twentyeleven{margin:0 7.6%;width:58.4%;float:right}.twentyfourteen .tfwc{padding:12px 10px 0;max-width:474px;margin:0 auto}.twentyfourteen .tfwc .product .entry-summary{padding:0!important;margin:0 0 1.618em!important}.twentyfourteen .tfwc div.product.hentry.has-post-thumbnail{margin-top:0}@media screen and (min-width:673px){.twentyfourteen .tfwc{padding-left:30px;padding-right:30px}}@media screen and (min-width:1040px){.twentyfourteen .tfwc{padding-left:15px;padding-right:15px}}@media screen and (min-width:1110px){.twentyfourteen .tfwc{padding-left:30px;padding-right:30px}}@media screen and (min-width:1218px){.twentyfourteen .tfwc{margin-left:54px}.full-width .twentyfourteen .tfwc{margin-left:auto}}.twentyfifteen .t15wc{padding-right:7.6923%;padding-left:7.6923%;padding-top:7.6923%;margin-bottom:7.6923%;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.15)}.twentyfifteen .t15wc .page-title{margin-right:0}@media screen and (min-width:38.75em){.twentyfifteen .t15wc{margin-left:7.6923%;margin-right:7.6923%;margin-top:8.3333%}}@media screen and (min-width:59.6875em){.twentyfifteen .t15wc{margin-right:8.3333%;margin-left:8.3333%;padding:10%}.single-product .twentyfifteen .entry-summary{padding:0!important}}.twentysixteen .site-main{margin-left:7.6923%;margin-right:7.6923%}.twentysixteen .entry-summary{margin-left:0;margin-right:0}#content .twentysixteen div.product div.images,#content .twentysixteen div.product div.summary{width:46.42857%}@media screen and (min-width:44.375em){.twentysixteen .site-main{margin-left:23.0769%}}@media screen and (min-width:56.875em){.twentysixteen .site-main{margin-left:0;margin-right:0}.no-sidebar .twentysixteen .site-main{margin-left:15%;margin-right:15%}.no-sidebar .twentysixteen .entry-summary{margin-left:0;margin-right:0}}.rtl .woocommerce .col2-set .col-1,.rtl .woocommerce-page .col2-set .col-1{float:left}.rtl .woocommerce .col2-set .col-2,.rtl .woocommerce-page .col2-set .col-2{float:right} \ No newline at end of file diff --git a/assets/css/woocommerce-layout.css b/assets/css/woocommerce-layout.css index e7aa9c38ade..fce73510064 100644 --- a/assets/css/woocommerce-layout.css +++ b/assets/css/woocommerce-layout.css @@ -1 +1 @@ -.woocommerce #content div.product .woocommerce-tabs ul.tabs::after,.woocommerce #content div.product .woocommerce-tabs ul.tabs::before,.woocommerce #content div.product div.thumbnails::after,.woocommerce #content div.product div.thumbnails::before,.woocommerce .col2-set::after,.woocommerce .col2-set::before,.woocommerce div.product .woocommerce-tabs ul.tabs::after,.woocommerce div.product .woocommerce-tabs ul.tabs::before,.woocommerce div.product div.thumbnails::after,.woocommerce div.product div.thumbnails::before,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs::after,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs::before,.woocommerce-page #content div.product div.thumbnails::after,.woocommerce-page #content div.product div.thumbnails::before,.woocommerce-page .col2-set::after,.woocommerce-page .col2-set::before,.woocommerce-page div.product .woocommerce-tabs ul.tabs::after,.woocommerce-page div.product .woocommerce-tabs ul.tabs::before,.woocommerce-page div.product div.thumbnails::after,.woocommerce-page div.product div.thumbnails::before{content:' ';display:table}.woocommerce #content div.product .woocommerce-tabs,.woocommerce #content div.product .woocommerce-tabs ul.tabs::after,.woocommerce #content div.product div.thumbnails a.first,.woocommerce #content div.product div.thumbnails::after,.woocommerce .cart-collaterals::after,.woocommerce .col2-set::after,.woocommerce .woocommerce-pagination ul.page-numbers::after,.woocommerce div.product .woocommerce-tabs,.woocommerce div.product .woocommerce-tabs ul.tabs::after,.woocommerce div.product div.thumbnails a.first,.woocommerce div.product div.thumbnails::after,.woocommerce ul.products,.woocommerce ul.products li.first,.woocommerce ul.products::after,.woocommerce-page #content div.product .woocommerce-tabs,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs::after,.woocommerce-page #content div.product div.thumbnails a.first,.woocommerce-page #content div.product div.thumbnails::after,.woocommerce-page .cart-collaterals::after,.woocommerce-page .col2-set::after,.woocommerce-page .woocommerce-pagination ul.page-numbers::after,.woocommerce-page div.product .woocommerce-tabs,.woocommerce-page div.product .woocommerce-tabs ul.tabs::after,.woocommerce-page div.product div.thumbnails a.first,.woocommerce-page div.product div.thumbnails::after,.woocommerce-page ul.products,.woocommerce-page ul.products li.first,.woocommerce-page ul.products::after{clear:both}.woocommerce .woocommerce-error .button,.woocommerce .woocommerce-info .button,.woocommerce .woocommerce-message .button,.woocommerce-page .woocommerce-error .button,.woocommerce-page .woocommerce-info .button,.woocommerce-page .woocommerce-message .button{float:right}.woocommerce .col2-set,.woocommerce-page .col2-set{width:100%}.woocommerce .col2-set .col-1,.woocommerce-page .col2-set .col-1{float:left;width:48%}.woocommerce .col2-set .col-2,.woocommerce-page .col2-set .col-2{float:right;width:48%}.woocommerce img,.woocommerce-page img{height:auto;max-width:100%}.woocommerce #content div.product div.images,.woocommerce div.product div.images,.woocommerce-page #content div.product div.images,.woocommerce-page div.product div.images{float:left;width:48%}.woocommerce #content div.product div.thumbnails a,.woocommerce div.product div.thumbnails a,.woocommerce-page #content div.product div.thumbnails a,.woocommerce-page div.product div.thumbnails a{float:left;width:30.75%;margin-right:3.8%;margin-bottom:1em}.woocommerce #content div.product div.thumbnails a.last,.woocommerce div.product div.thumbnails a.last,.woocommerce-page #content div.product div.thumbnails a.last,.woocommerce-page div.product div.thumbnails a.last{margin-right:0}.woocommerce #content div.product div.thumbnails.columns-1 a,.woocommerce div.product div.thumbnails.columns-1 a,.woocommerce-page #content div.product div.thumbnails.columns-1 a,.woocommerce-page div.product div.thumbnails.columns-1 a{width:100%;margin-right:0;float:none}.woocommerce #content div.product div.thumbnails.columns-2 a,.woocommerce div.product div.thumbnails.columns-2 a,.woocommerce-page #content div.product div.thumbnails.columns-2 a,.woocommerce-page div.product div.thumbnails.columns-2 a{width:48%}.woocommerce #content div.product div.thumbnails.columns-4 a,.woocommerce div.product div.thumbnails.columns-4 a,.woocommerce-page #content div.product div.thumbnails.columns-4 a,.woocommerce-page div.product div.thumbnails.columns-4 a{width:22.05%}.woocommerce #content div.product div.thumbnails.columns-5 a,.woocommerce div.product div.thumbnails.columns-5 a,.woocommerce-page #content div.product div.thumbnails.columns-5 a,.woocommerce-page div.product div.thumbnails.columns-5 a{width:16.9%}.woocommerce #content div.product div.summary,.woocommerce div.product div.summary,.woocommerce-page #content div.product div.summary,.woocommerce-page div.product div.summary{float:right;width:48%}.woocommerce #content div.product .woocommerce-tabs ul.tabs li,.woocommerce div.product .woocommerce-tabs ul.tabs li,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li,.woocommerce-page div.product .woocommerce-tabs ul.tabs li{display:inline-block}.woocommerce #content div.product #reviews .comment::after,.woocommerce #content div.product #reviews .comment::before,.woocommerce .woocommerce-pagination ul.page-numbers::after,.woocommerce .woocommerce-pagination ul.page-numbers::before,.woocommerce div.product #reviews .comment::after,.woocommerce div.product #reviews .comment::before,.woocommerce ul.products::after,.woocommerce ul.products::before,.woocommerce-page #content div.product #reviews .comment::after,.woocommerce-page #content div.product #reviews .comment::before,.woocommerce-page .woocommerce-pagination ul.page-numbers::after,.woocommerce-page .woocommerce-pagination ul.page-numbers::before,.woocommerce-page div.product #reviews .comment::after,.woocommerce-page div.product #reviews .comment::before,.woocommerce-page ul.products::after,.woocommerce-page ul.products::before{content:' ';display:table}.woocommerce #content div.product #reviews .comment::after,.woocommerce div.product #reviews .comment::after,.woocommerce-page #content div.product #reviews .comment::after,.woocommerce-page div.product #reviews .comment::after{clear:both}.woocommerce #content div.product #reviews .comment img,.woocommerce div.product #reviews .comment img,.woocommerce-page #content div.product #reviews .comment img,.woocommerce-page div.product #reviews .comment img{float:right;height:auto}.woocommerce ul.products li.product,.woocommerce-page ul.products li.product{float:left;margin:0 3.8% 2.992em 0;padding:0;position:relative;width:22.05%}.woocommerce ul.products li.last,.woocommerce-page ul.products li.last{margin-right:0}.woocommerce-page.columns-1 ul.products li.product,.woocommerce.columns-1 ul.products li.product{width:100%;margin-right:0}.woocommerce-page.columns-2 ul.products li.product,.woocommerce.columns-2 ul.products li.product{width:48%}.woocommerce-page.columns-3 ul.products li.product,.woocommerce.columns-3 ul.products li.product{width:30.75%}.woocommerce-page.columns-5 ul.products li.product,.woocommerce.columns-5 ul.products li.product{width:16.95%}.woocommerce-page.columns-6 ul.products li.product,.woocommerce.columns-6 ul.products li.product{width:13.5%}.woocommerce .woocommerce-result-count,.woocommerce-page .woocommerce-result-count{float:left}.woocommerce .woocommerce-ordering,.woocommerce-page .woocommerce-ordering{float:right}.woocommerce .woocommerce-pagination ul.page-numbers li,.woocommerce-page .woocommerce-pagination ul.page-numbers li{display:inline-block}.woocommerce #content table.cart img,.woocommerce table.cart img,.woocommerce-page #content table.cart img,.woocommerce-page table.cart img{height:auto}.woocommerce #content table.cart td.actions,.woocommerce table.cart td.actions,.woocommerce-page #content table.cart td.actions,.woocommerce-page table.cart td.actions{text-align:right}.woocommerce #content table.cart td.actions .input-text,.woocommerce table.cart td.actions .input-text,.woocommerce-page #content table.cart td.actions .input-text,.woocommerce-page table.cart td.actions .input-text{width:80px}.woocommerce #content table.cart td.actions .coupon,.woocommerce table.cart td.actions .coupon,.woocommerce-page #content table.cart td.actions .coupon,.woocommerce-page table.cart td.actions .coupon{float:left}.woocommerce #content table.cart td.actions .coupon label,.woocommerce table.cart td.actions .coupon label,.woocommerce-page #content table.cart td.actions .coupon label,.woocommerce-page table.cart td.actions .coupon label{display:none}.woocommerce .cart-collaterals .shipping_calculator::after,.woocommerce .cart-collaterals .shipping_calculator::before,.woocommerce .cart-collaterals::after,.woocommerce .cart-collaterals::before,.woocommerce form .form-row::after,.woocommerce form .form-row::before,.woocommerce ul.cart_list li::after,.woocommerce ul.cart_list li::before,.woocommerce ul.product_list_widget li::after,.woocommerce ul.product_list_widget li::before,.woocommerce-page .cart-collaterals .shipping_calculator::after,.woocommerce-page .cart-collaterals .shipping_calculator::before,.woocommerce-page .cart-collaterals::after,.woocommerce-page .cart-collaterals::before,.woocommerce-page form .form-row::after,.woocommerce-page form .form-row::before,.woocommerce-page ul.cart_list li::after,.woocommerce-page ul.cart_list li::before,.woocommerce-page ul.product_list_widget li::after,.woocommerce-page ul.product_list_widget li::before{content:' ';display:table}.woocommerce .cart-collaterals,.woocommerce-page .cart-collaterals{width:100%}.woocommerce .cart-collaterals .related,.woocommerce-page .cart-collaterals .related{width:30.75%;float:left}.woocommerce .cart-collaterals .cross-sells,.woocommerce-page .cart-collaterals .cross-sells{width:48%;float:left}.woocommerce .cart-collaterals .cross-sells ul.products,.woocommerce-page .cart-collaterals .cross-sells ul.products{float:none}.woocommerce .cart-collaterals .cross-sells ul.products li,.woocommerce-page .cart-collaterals .cross-sells ul.products li{width:48%}.woocommerce .cart-collaterals .shipping_calculator,.woocommerce-page .cart-collaterals .shipping_calculator{width:48%;clear:right;float:right}.woocommerce .cart-collaterals .shipping_calculator::after,.woocommerce form .form-row-wide,.woocommerce form .form-row::after,.woocommerce ul.cart_list li::after,.woocommerce ul.product_list_widget li::after,.woocommerce-page .cart-collaterals .shipping_calculator::after,.woocommerce-page form .form-row-wide,.woocommerce-page form .form-row::after,.woocommerce-page ul.cart_list li::after,.woocommerce-page ul.product_list_widget li::after{clear:both}.woocommerce .cart-collaterals .shipping_calculator .col2-set .col-1,.woocommerce .cart-collaterals .shipping_calculator .col2-set .col-2,.woocommerce-page .cart-collaterals .shipping_calculator .col2-set .col-1,.woocommerce-page .cart-collaterals .shipping_calculator .col2-set .col-2{width:47%}.woocommerce .cart-collaterals .cart_totals,.woocommerce-page .cart-collaterals .cart_totals{float:right;width:48%}.woocommerce ul.cart_list li img,.woocommerce ul.product_list_widget li img,.woocommerce-page ul.cart_list li img,.woocommerce-page ul.product_list_widget li img{float:right;height:auto}.woocommerce form .form-row label,.woocommerce-page form .form-row label{display:block}.woocommerce form .form-row label.checkbox,.woocommerce-page form .form-row label.checkbox{display:inline}.woocommerce form .form-row select,.woocommerce-page form .form-row select{width:100%}.woocommerce form .form-row .input-text,.woocommerce-page form .form-row .input-text{box-sizing:border-box;width:100%}.woocommerce form .form-row-first,.woocommerce form .form-row-last,.woocommerce-page form .form-row-first,.woocommerce-page form .form-row-last{width:47%;overflow:visible}.woocommerce form .form-row-first,.woocommerce-page form .form-row-first{float:left}.woocommerce form .form-row-last,.woocommerce-page form .form-row-last{float:right}.woocommerce #payment .form-row select,.woocommerce-page #payment .form-row select{width:auto}.woocommerce #payment .terms,.woocommerce #payment .wc-terms-and-conditions,.woocommerce-page #payment .terms,.woocommerce-page #payment .wc-terms-and-conditions{text-align:left;padding:0 1em 0 0;float:left}.woocommerce #payment #place_order,.woocommerce-page #payment #place_order{float:right}.woocommerce-account .woocommerce-MyAccount-navigation{float:left;width:30%}.woocommerce-account .woocommerce-MyAccount-content{float:right;width:68%}.woocommerce-page.left-sidebar #content.twentyeleven{width:58.4%;margin:0 7.6%;float:right}.woocommerce-page.right-sidebar #content.twentyeleven{margin:0 7.6%;width:58.4%;float:left}.twentyfourteen .tfwc{padding:12px 10px 0;max-width:474px;margin:0 auto}.twentyfourteen .tfwc .product .entry-summary{padding:0!important;margin:0 0 1.618em!important}.twentyfourteen .tfwc div.product.hentry.has-post-thumbnail{margin-top:0}@media screen and (min-width:673px){.twentyfourteen .tfwc{padding-right:30px;padding-left:30px}}@media screen and (min-width:1040px){.twentyfourteen .tfwc{padding-right:15px;padding-left:15px}}@media screen and (min-width:1110px){.twentyfourteen .tfwc{padding-right:30px;padding-left:30px}}@media screen and (min-width:1218px){.twentyfourteen .tfwc{margin-right:54px}.full-width .twentyfourteen .tfwc{margin-right:auto}}.twentyfifteen .t15wc{padding-left:7.6923%;padding-right:7.6923%;padding-top:7.6923%;margin-bottom:7.6923%;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.15)}.twentyfifteen .t15wc .page-title{margin-left:0}@media screen and (min-width:38.75em){.twentyfifteen .t15wc{margin-right:7.6923%;margin-left:7.6923%;margin-top:8.3333%}}@media screen and (min-width:59.6875em){.twentyfifteen .t15wc{margin-left:8.3333%;margin-right:8.3333%;padding:10%}.single-product .twentyfifteen .entry-summary{padding:0!important}}.twentysixteen .site-main{margin-right:7.6923%;margin-left:7.6923%}.twentysixteen .entry-summary{margin-right:0;margin-left:0}#content .twentysixteen div.product div.images,#content .twentysixteen div.product div.summary{width:46.42857%}@media screen and (min-width:44.375em){.twentysixteen .site-main{margin-right:23.0769%}}@media screen and (min-width:56.875em){.twentysixteen .site-main{margin-right:0;margin-left:0}.no-sidebar .twentysixteen .site-main{margin-right:15%;margin-left:15%}.no-sidebar .twentysixteen .entry-summary{margin-right:0;margin-left:0}}.rtl .woocommerce .col2-set .col-1,.rtl .woocommerce-page .col2-set .col-1{float:right}.rtl .woocommerce .col2-set .col-2,.rtl .woocommerce-page .col2-set .col-2{float:left} \ No newline at end of file +.woocommerce #content div.product .woocommerce-tabs ul.tabs::after,.woocommerce #content div.product .woocommerce-tabs ul.tabs::before,.woocommerce #content div.product div.thumbnails::after,.woocommerce #content div.product div.thumbnails::before,.woocommerce .col2-set::after,.woocommerce .col2-set::before,.woocommerce div.product .woocommerce-tabs ul.tabs::after,.woocommerce div.product .woocommerce-tabs ul.tabs::before,.woocommerce div.product div.thumbnails::after,.woocommerce div.product div.thumbnails::before,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs::after,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs::before,.woocommerce-page #content div.product div.thumbnails::after,.woocommerce-page #content div.product div.thumbnails::before,.woocommerce-page .col2-set::after,.woocommerce-page .col2-set::before,.woocommerce-page div.product .woocommerce-tabs ul.tabs::after,.woocommerce-page div.product .woocommerce-tabs ul.tabs::before,.woocommerce-page div.product div.thumbnails::after,.woocommerce-page div.product div.thumbnails::before{content:' ';display:table}.woocommerce #content div.product .woocommerce-tabs,.woocommerce #content div.product .woocommerce-tabs ul.tabs::after,.woocommerce #content div.product div.thumbnails a.first,.woocommerce #content div.product div.thumbnails::after,.woocommerce .cart-collaterals::after,.woocommerce .col2-set::after,.woocommerce .woocommerce-pagination ul.page-numbers::after,.woocommerce div.product .woocommerce-tabs,.woocommerce div.product .woocommerce-tabs ul.tabs::after,.woocommerce div.product div.thumbnails a.first,.woocommerce div.product div.thumbnails::after,.woocommerce ul.products,.woocommerce ul.products li.first,.woocommerce ul.products::after,.woocommerce-page #content div.product .woocommerce-tabs,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs::after,.woocommerce-page #content div.product div.thumbnails a.first,.woocommerce-page #content div.product div.thumbnails::after,.woocommerce-page .cart-collaterals::after,.woocommerce-page .col2-set::after,.woocommerce-page .woocommerce-pagination ul.page-numbers::after,.woocommerce-page div.product .woocommerce-tabs,.woocommerce-page div.product .woocommerce-tabs ul.tabs::after,.woocommerce-page div.product div.thumbnails a.first,.woocommerce-page div.product div.thumbnails::after,.woocommerce-page ul.products,.woocommerce-page ul.products li.first,.woocommerce-page ul.products::after{clear:both}.woocommerce .woocommerce-error .button,.woocommerce .woocommerce-info .button,.woocommerce .woocommerce-message .button,.woocommerce-page .woocommerce-error .button,.woocommerce-page .woocommerce-info .button,.woocommerce-page .woocommerce-message .button{float:right}.woocommerce .col2-set,.woocommerce-page .col2-set{width:100%}.woocommerce .col2-set .col-1,.woocommerce-page .col2-set .col-1{float:left;width:48%}.woocommerce .col2-set .col-2,.woocommerce-page .col2-set .col-2{float:right;width:48%}.woocommerce img,.woocommerce-page img{height:auto;max-width:100%}.woocommerce #content div.product div.images,.woocommerce div.product div.images,.woocommerce-page #content div.product div.images,.woocommerce-page div.product div.images{float:left;width:48%}.woocommerce #content div.product div.thumbnails a,.woocommerce div.product div.thumbnails a,.woocommerce-page #content div.product div.thumbnails a,.woocommerce-page div.product div.thumbnails a{float:left;width:30.75%;margin-right:3.8%;margin-bottom:1em}.woocommerce #content div.product div.thumbnails a.last,.woocommerce div.product div.thumbnails a.last,.woocommerce-page #content div.product div.thumbnails a.last,.woocommerce-page div.product div.thumbnails a.last{margin-right:0}.woocommerce #content div.product div.thumbnails.columns-1 a,.woocommerce div.product div.thumbnails.columns-1 a,.woocommerce-page #content div.product div.thumbnails.columns-1 a,.woocommerce-page div.product div.thumbnails.columns-1 a{width:100%;margin-right:0;float:none}.woocommerce #content div.product div.thumbnails.columns-2 a,.woocommerce div.product div.thumbnails.columns-2 a,.woocommerce-page #content div.product div.thumbnails.columns-2 a,.woocommerce-page div.product div.thumbnails.columns-2 a{width:48%}.woocommerce #content div.product div.thumbnails.columns-4 a,.woocommerce div.product div.thumbnails.columns-4 a,.woocommerce-page #content div.product div.thumbnails.columns-4 a,.woocommerce-page div.product div.thumbnails.columns-4 a{width:22.05%}.woocommerce #content div.product div.thumbnails.columns-5 a,.woocommerce div.product div.thumbnails.columns-5 a,.woocommerce-page #content div.product div.thumbnails.columns-5 a,.woocommerce-page div.product div.thumbnails.columns-5 a{width:16.9%}.woocommerce #content div.product div.summary,.woocommerce div.product div.summary,.woocommerce-page #content div.product div.summary,.woocommerce-page div.product div.summary{float:right;width:48%}.woocommerce #content div.product .woocommerce-tabs ul.tabs li,.woocommerce div.product .woocommerce-tabs ul.tabs li,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li,.woocommerce-page div.product .woocommerce-tabs ul.tabs li{display:inline-block}.woocommerce #content div.product #reviews .comment::after,.woocommerce #content div.product #reviews .comment::before,.woocommerce .woocommerce-pagination ul.page-numbers::after,.woocommerce .woocommerce-pagination ul.page-numbers::before,.woocommerce div.product #reviews .comment::after,.woocommerce div.product #reviews .comment::before,.woocommerce ul.products::after,.woocommerce ul.products::before,.woocommerce-page #content div.product #reviews .comment::after,.woocommerce-page #content div.product #reviews .comment::before,.woocommerce-page .woocommerce-pagination ul.page-numbers::after,.woocommerce-page .woocommerce-pagination ul.page-numbers::before,.woocommerce-page div.product #reviews .comment::after,.woocommerce-page div.product #reviews .comment::before,.woocommerce-page ul.products::after,.woocommerce-page ul.products::before{content:' ';display:table}.woocommerce #content div.product #reviews .comment::after,.woocommerce div.product #reviews .comment::after,.woocommerce-page #content div.product #reviews .comment::after,.woocommerce-page div.product #reviews .comment::after{clear:both}.woocommerce #content div.product #reviews .comment img,.woocommerce div.product #reviews .comment img,.woocommerce-page #content div.product #reviews .comment img,.woocommerce-page div.product #reviews .comment img{float:right;height:auto}.woocommerce ul.products li.product,.woocommerce-page ul.products li.product{float:left;margin:0 3.8% 2.992em 0;padding:0;position:relative;width:22.05%}.woocommerce ul.products li.last,.woocommerce-page ul.products li.last{margin-right:0}.woocommerce-page.columns-1 ul.products li.product,.woocommerce.columns-1 ul.products li.product{width:100%;margin-right:0}.woocommerce-page.columns-2 ul.products li.product,.woocommerce.columns-2 ul.products li.product{width:48%}.woocommerce-page.columns-3 ul.products li.product,.woocommerce.columns-3 ul.products li.product{width:30.75%}.woocommerce-page.columns-5 ul.products li.product,.woocommerce.columns-5 ul.products li.product{width:16.95%}.woocommerce-page.columns-6 ul.products li.product,.woocommerce.columns-6 ul.products li.product{width:13.5%}.woocommerce .woocommerce-result-count,.woocommerce-page .woocommerce-result-count{float:left}.woocommerce .woocommerce-ordering,.woocommerce-page .woocommerce-ordering{float:right}.woocommerce .woocommerce-pagination ul.page-numbers li,.woocommerce-page .woocommerce-pagination ul.page-numbers li{display:inline-block}.woocommerce #content table.cart img,.woocommerce table.cart img,.woocommerce-page #content table.cart img,.woocommerce-page table.cart img{height:auto}.woocommerce #content table.cart td.actions,.woocommerce table.cart td.actions,.woocommerce-page #content table.cart td.actions,.woocommerce-page table.cart td.actions{text-align:right}.woocommerce #content table.cart td.actions .input-text,.woocommerce table.cart td.actions .input-text,.woocommerce-page #content table.cart td.actions .input-text,.woocommerce-page table.cart td.actions .input-text{width:80px}.woocommerce #content table.cart td.actions .coupon,.woocommerce table.cart td.actions .coupon,.woocommerce-page #content table.cart td.actions .coupon,.woocommerce-page table.cart td.actions .coupon{float:left}.woocommerce #content table.cart td.actions .coupon label,.woocommerce table.cart td.actions .coupon label,.woocommerce-page #content table.cart td.actions .coupon label,.woocommerce-page table.cart td.actions .coupon label{display:none}.woocommerce .cart-collaterals .shipping_calculator::after,.woocommerce .cart-collaterals .shipping_calculator::before,.woocommerce .cart-collaterals::after,.woocommerce .cart-collaterals::before,.woocommerce form .form-row::after,.woocommerce form .form-row::before,.woocommerce ul.cart_list li::after,.woocommerce ul.cart_list li::before,.woocommerce ul.product_list_widget li::after,.woocommerce ul.product_list_widget li::before,.woocommerce-page .cart-collaterals .shipping_calculator::after,.woocommerce-page .cart-collaterals .shipping_calculator::before,.woocommerce-page .cart-collaterals::after,.woocommerce-page .cart-collaterals::before,.woocommerce-page form .form-row::after,.woocommerce-page form .form-row::before,.woocommerce-page ul.cart_list li::after,.woocommerce-page ul.cart_list li::before,.woocommerce-page ul.product_list_widget li::after,.woocommerce-page ul.product_list_widget li::before{display:table;content:' '}.woocommerce .cart-collaterals,.woocommerce-page .cart-collaterals{width:100%}.woocommerce .cart-collaterals .related,.woocommerce-page .cart-collaterals .related{width:30.75%;float:left}.woocommerce .cart-collaterals .cross-sells,.woocommerce-page .cart-collaterals .cross-sells{width:48%;float:left}.woocommerce .cart-collaterals .cross-sells ul.products,.woocommerce-page .cart-collaterals .cross-sells ul.products{float:none}.woocommerce .cart-collaterals .cross-sells ul.products li,.woocommerce-page .cart-collaterals .cross-sells ul.products li{width:48%}.woocommerce .cart-collaterals .shipping_calculator,.woocommerce-page .cart-collaterals .shipping_calculator{width:48%;clear:right;float:right}.woocommerce .cart-collaterals .shipping_calculator::after,.woocommerce .woocommerce-billing-fields::after,.woocommerce .woocommerce-shipping-fields::after,.woocommerce form .form-row-wide,.woocommerce form .form-row::after,.woocommerce ul.cart_list li::after,.woocommerce ul.product_list_widget li::after,.woocommerce-page .cart-collaterals .shipping_calculator::after,.woocommerce-page .woocommerce-billing-fields::after,.woocommerce-page .woocommerce-shipping-fields::after,.woocommerce-page form .form-row-wide,.woocommerce-page form .form-row::after,.woocommerce-page ul.cart_list li::after,.woocommerce-page ul.product_list_widget li::after{clear:both}.woocommerce .cart-collaterals .shipping_calculator .col2-set .col-1,.woocommerce .cart-collaterals .shipping_calculator .col2-set .col-2,.woocommerce-page .cart-collaterals .shipping_calculator .col2-set .col-1,.woocommerce-page .cart-collaterals .shipping_calculator .col2-set .col-2{width:47%}.woocommerce .cart-collaterals .cart_totals,.woocommerce-page .cart-collaterals .cart_totals{float:right;width:48%}.woocommerce ul.cart_list li img,.woocommerce ul.product_list_widget li img,.woocommerce-page ul.cart_list li img,.woocommerce-page ul.product_list_widget li img{float:right;height:auto}.woocommerce form .form-row label,.woocommerce-page form .form-row label{display:block}.woocommerce form .form-row label.checkbox,.woocommerce-page form .form-row label.checkbox{display:inline}.woocommerce form .form-row select,.woocommerce-page form .form-row select{width:100%}.woocommerce form .form-row .input-text,.woocommerce-page form .form-row .input-text{box-sizing:border-box;width:100%}.woocommerce form .form-row-first,.woocommerce form .form-row-last,.woocommerce-page form .form-row-first,.woocommerce-page form .form-row-last{width:47%;overflow:visible}.woocommerce form .form-row-first,.woocommerce-page form .form-row-first{float:left}.woocommerce form .form-row-last,.woocommerce-page form .form-row-last{float:right}.woocommerce #payment .form-row select,.woocommerce-page #payment .form-row select{width:auto}.woocommerce #payment .terms,.woocommerce #payment .wc-terms-and-conditions,.woocommerce-page #payment .terms,.woocommerce-page #payment .wc-terms-and-conditions{text-align:left;padding:0 1em 0 0;float:left}.woocommerce #payment #place_order,.woocommerce-page #payment #place_order{float:right}.woocommerce .woocommerce-billing-fields::after,.woocommerce .woocommerce-billing-fields::before,.woocommerce .woocommerce-shipping-fields::after,.woocommerce .woocommerce-shipping-fields::before,.woocommerce-page .woocommerce-billing-fields::after,.woocommerce-page .woocommerce-billing-fields::before,.woocommerce-page .woocommerce-shipping-fields::after,.woocommerce-page .woocommerce-shipping-fields::before{content:' ';display:table}.woocommerce-account .woocommerce-MyAccount-navigation{float:left;width:30%}.woocommerce-account .woocommerce-MyAccount-content{float:right;width:68%}.woocommerce-page.left-sidebar #content.twentyeleven{width:58.4%;margin:0 7.6%;float:right}.woocommerce-page.right-sidebar #content.twentyeleven{margin:0 7.6%;width:58.4%;float:left}.twentyfourteen .tfwc{padding:12px 10px 0;max-width:474px;margin:0 auto}.twentyfourteen .tfwc .product .entry-summary{padding:0!important;margin:0 0 1.618em!important}.twentyfourteen .tfwc div.product.hentry.has-post-thumbnail{margin-top:0}@media screen and (min-width:673px){.twentyfourteen .tfwc{padding-right:30px;padding-left:30px}}@media screen and (min-width:1040px){.twentyfourteen .tfwc{padding-right:15px;padding-left:15px}}@media screen and (min-width:1110px){.twentyfourteen .tfwc{padding-right:30px;padding-left:30px}}@media screen and (min-width:1218px){.twentyfourteen .tfwc{margin-right:54px}.full-width .twentyfourteen .tfwc{margin-right:auto}}.twentyfifteen .t15wc{padding-left:7.6923%;padding-right:7.6923%;padding-top:7.6923%;margin-bottom:7.6923%;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.15)}.twentyfifteen .t15wc .page-title{margin-left:0}@media screen and (min-width:38.75em){.twentyfifteen .t15wc{margin-right:7.6923%;margin-left:7.6923%;margin-top:8.3333%}}@media screen and (min-width:59.6875em){.twentyfifteen .t15wc{margin-left:8.3333%;margin-right:8.3333%;padding:10%}.single-product .twentyfifteen .entry-summary{padding:0!important}}.twentysixteen .site-main{margin-right:7.6923%;margin-left:7.6923%}.twentysixteen .entry-summary{margin-right:0;margin-left:0}#content .twentysixteen div.product div.images,#content .twentysixteen div.product div.summary{width:46.42857%}@media screen and (min-width:44.375em){.twentysixteen .site-main{margin-right:23.0769%}}@media screen and (min-width:56.875em){.twentysixteen .site-main{margin-right:0;margin-left:0}.no-sidebar .twentysixteen .site-main{margin-right:15%;margin-left:15%}.no-sidebar .twentysixteen .entry-summary{margin-right:0;margin-left:0}}.rtl .woocommerce .col2-set .col-1,.rtl .woocommerce-page .col2-set .col-1{float:right}.rtl .woocommerce .col2-set .col-2,.rtl .woocommerce-page .col2-set .col-2{float:left} \ No newline at end of file diff --git a/assets/css/woocommerce-layout.scss b/assets/css/woocommerce-layout.scss index f90058ed100..901b760c04c 100644 --- a/assets/css/woocommerce-layout.scss +++ b/assets/css/woocommerce-layout.scss @@ -342,6 +342,11 @@ float: right; } } + + .woocommerce-billing-fields, + .woocommerce-shipping-fields { + @include clearfix(); + } } .woocommerce-account { From 5bcace31fcacc6971b3555dfd0c2c55c54920490 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Wed, 5 Apr 2017 18:13:10 -0300 Subject: [PATCH 265/525] Fixed "singular" and "plural" parameters of WP_List_Table instances Both should be slugs and not translatable. Fixes #13954 --- includes/admin/class-wc-admin-api-keys-table-list.php | 4 ++-- includes/admin/class-wc-admin-log-table-list.php | 4 ++-- includes/admin/class-wc-admin-webhooks-table-list.php | 4 ++-- includes/admin/reports/class-wc-report-customer-list.php | 4 ++-- includes/admin/reports/class-wc-report-stock.php | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/includes/admin/class-wc-admin-api-keys-table-list.php b/includes/admin/class-wc-admin-api-keys-table-list.php index 22f41b2eb16..b4df72c7fa4 100644 --- a/includes/admin/class-wc-admin-api-keys-table-list.php +++ b/includes/admin/class-wc-admin-api-keys-table-list.php @@ -23,8 +23,8 @@ class WC_Admin_API_Keys_Table_List extends WP_List_Table { */ public function __construct() { parent::__construct( array( - 'singular' => __( 'key', 'woocommerce' ), - 'plural' => __( 'keys', 'woocommerce' ), + 'singular' => 'key', + 'plural' => 'keys', 'ajax' => false, ) ); } diff --git a/includes/admin/class-wc-admin-log-table-list.php b/includes/admin/class-wc-admin-log-table-list.php index d97c750bc56..1016705a8ce 100644 --- a/includes/admin/class-wc-admin-log-table-list.php +++ b/includes/admin/class-wc-admin-log-table-list.php @@ -23,8 +23,8 @@ class WC_Admin_Log_Table_List extends WP_List_Table { */ public function __construct() { parent::__construct( array( - 'singular' => __( 'log', 'woocommerce' ), - 'plural' => __( 'logs', 'woocommerce' ), + 'singular' => 'log', + 'plural' => 'logs', 'ajax' => false, ) ); } diff --git a/includes/admin/class-wc-admin-webhooks-table-list.php b/includes/admin/class-wc-admin-webhooks-table-list.php index 201fdb292d5..8a6b54e6b70 100644 --- a/includes/admin/class-wc-admin-webhooks-table-list.php +++ b/includes/admin/class-wc-admin-webhooks-table-list.php @@ -23,8 +23,8 @@ class WC_Admin_Webhooks_Table_List extends WP_List_Table { */ public function __construct() { parent::__construct( array( - 'singular' => __( 'webhook', 'woocommerce' ), - 'plural' => __( 'webhooks', 'woocommerce' ), + 'singular' => 'webhook', + 'plural' => 'webhooks', 'ajax' => false, ) ); } diff --git a/includes/admin/reports/class-wc-report-customer-list.php b/includes/admin/reports/class-wc-report-customer-list.php index f677eaf231c..96e0e7019b7 100644 --- a/includes/admin/reports/class-wc-report-customer-list.php +++ b/includes/admin/reports/class-wc-report-customer-list.php @@ -24,8 +24,8 @@ class WC_Report_Customer_List extends WP_List_Table { public function __construct() { parent::__construct( array( - 'singular' => __( 'Customer', 'woocommerce' ), - 'plural' => __( 'Customers', 'woocommerce' ), + 'singular' => 'customer', + 'plural' => 'customers', 'ajax' => false, ) ); } diff --git a/includes/admin/reports/class-wc-report-stock.php b/includes/admin/reports/class-wc-report-stock.php index 4d527df6f5f..9778538a02e 100644 --- a/includes/admin/reports/class-wc-report-stock.php +++ b/includes/admin/reports/class-wc-report-stock.php @@ -31,8 +31,8 @@ class WC_Report_Stock extends WP_List_Table { public function __construct() { parent::__construct( array( - 'singular' => __( 'Stock', 'woocommerce' ), - 'plural' => __( 'Stock', 'woocommerce' ), + 'singular' => 'stock', + 'plural' => 'stock', 'ajax' => false, ) ); } From 15bf1da7d5d26b7e5953c63fd8358562c6a549ab Mon Sep 17 00:00:00 2001 From: Justin Shreve Date: Wed, 5 Apr 2017 14:39:41 -0700 Subject: [PATCH 266/525] Call save_meta_data before wp_update_post for data stores that use it, and refresh meta cache after. --- .../abstract-wc-order-data-store-cpt.php | 3 +- .../class-wc-coupon-data-store-cpt.php | 4 ++- .../class-wc-product-data-store-cpt.php | 3 +- ...ss-wc-product-variation-data-store-cpt.php | 3 +- .../helpers/class-wc-helper-product.php | 8 +++++ tests/unit-tests/product/data-store.php | 29 +++++++++++++++++++ 6 files changed, 46 insertions(+), 4 deletions(-) diff --git a/includes/data-stores/abstract-wc-order-data-store-cpt.php b/includes/data-stores/abstract-wc-order-data-store-cpt.php index b876864b2bd..6d353b813b5 100644 --- a/includes/data-stores/abstract-wc-order-data-store-cpt.php +++ b/includes/data-stores/abstract-wc-order-data-store-cpt.php @@ -113,6 +113,7 @@ abstract class Abstract_WC_Order_Data_Store_CPT extends WC_Data_Store_WP impleme * @param WC_Order $order */ public function update( &$order ) { + $order->save_meta_data(); $order->set_version( WC_VERSION ); $changes = $order->get_changes(); @@ -129,9 +130,9 @@ abstract class Abstract_WC_Order_Data_Store_CPT extends WC_Data_Store_WP impleme 'post_modified' => isset( $changes['date_modified'] ) ? gmdate( 'Y-m-d H:i:s', $order->get_date_modified( 'edit' )->getOffsetTimestamp() ) : current_time( 'mysql' ), 'post_modified_gmt' => isset( $changes['date_modified'] ) ? gmdate( 'Y-m-d H:i:s', $order->get_date_modified( 'edit' )->getTimestamp() ) : current_time( 'mysql', 1 ), ) ); + $order->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook. } $this->update_post_meta( $order ); - $order->save_meta_data(); $order->apply_changes(); $this->clear_caches( $order ); } diff --git a/includes/data-stores/class-wc-coupon-data-store-cpt.php b/includes/data-stores/class-wc-coupon-data-store-cpt.php index b5543c2d424..226c12d8b27 100644 --- a/includes/data-stores/class-wc-coupon-data-store-cpt.php +++ b/includes/data-stores/class-wc-coupon-data-store-cpt.php @@ -127,14 +127,16 @@ class WC_Coupon_Data_Store_CPT extends WC_Data_Store_WP implements WC_Coupon_Dat * @param WC_Coupon */ public function update( &$coupon ) { + $coupon->save_meta_data(); $post_data = array( 'ID' => $coupon->get_id(), 'post_title' => $coupon->get_code(), 'post_excerpt' => $coupon->get_description(), ); wp_update_post( $post_data ); + $coupon->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook. + $this->update_post_meta( $coupon ); - $coupon->save_meta_data(); $coupon->apply_changes(); do_action( 'woocommerce_update_coupon', $coupon->get_id() ); } diff --git a/includes/data-stores/class-wc-product-data-store-cpt.php b/includes/data-stores/class-wc-product-data-store-cpt.php index 1d71e270b7a..65c582fe583 100644 --- a/includes/data-stores/class-wc-product-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-data-store-cpt.php @@ -162,6 +162,7 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da * @param WC_Product */ public function update( &$product ) { + $product->save_meta_data(); $changes = $product->get_changes(); // Only update the post when the post data changes. @@ -189,6 +190,7 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da $post_data['post_modified_gmt'] = current_time( 'mysql', 1 ); } wp_update_post( $post_data ); + $product->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook. } $this->update_post_meta( $product ); @@ -198,7 +200,6 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da $this->update_version_and_type( $product ); $this->handle_updated_props( $product ); - $product->save_meta_data(); $product->apply_changes(); $this->clear_caches( $product ); diff --git a/includes/data-stores/class-wc-product-variation-data-store-cpt.php b/includes/data-stores/class-wc-product-variation-data-store-cpt.php index 643a971f654..6129aabe3ab 100644 --- a/includes/data-stores/class-wc-product-variation-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-variation-data-store-cpt.php @@ -136,6 +136,7 @@ class WC_Product_Variation_Data_Store_CPT extends WC_Product_Data_Store_CPT impl * @param WC_Product */ public function update( &$product ) { + $product->save_meta_data(); $changes = $product->get_changes(); $title = $this->generate_product_title( $product ); @@ -153,6 +154,7 @@ class WC_Product_Variation_Data_Store_CPT extends WC_Product_Data_Store_CPT impl 'post_modified' => isset( $changes['date_modified'] ) ? gmdate( 'Y-m-d H:i:s', $product->get_date_modified( 'edit' )->getOffsetTimestamp() ) : current_time( 'mysql' ), 'post_modified_gmt' => isset( $changes['date_modified'] ) ? gmdate( 'Y-m-d H:i:s', $product->get_date_modified( 'edit' )->getTimestamp() ) : current_time( 'mysql', 1 ), ) ); + $product->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook. } $this->update_post_meta( $product ); @@ -160,7 +162,6 @@ class WC_Product_Variation_Data_Store_CPT extends WC_Product_Data_Store_CPT impl $this->update_attributes( $product ); $this->handle_updated_props( $product ); - $product->save_meta_data(); $product->apply_changes(); $this->update_version_and_type( $product ); diff --git a/tests/framework/helpers/class-wc-helper-product.php b/tests/framework/helpers/class-wc-helper-product.php index 0b2513cdbed..b62c2c19832 100644 --- a/tests/framework/helpers/class-wc-helper-product.php +++ b/tests/framework/helpers/class-wc-helper-product.php @@ -326,4 +326,12 @@ class WC_Helper_Product { return wp_insert_comment( $data ); } + + /** + * A helper function for hooking into save_post during the test_product_meta_save_post test. + * @since 3.0.1 + */ + public static function save_post_test_update_meta_data_direct( $id ) { + update_post_meta( $id, '_test2', 'world' ); + } } diff --git a/tests/unit-tests/product/data-store.php b/tests/unit-tests/product/data-store.php index 472099228da..7d4016ca745 100644 --- a/tests/unit-tests/product/data-store.php +++ b/tests/unit-tests/product/data-store.php @@ -456,4 +456,33 @@ class WC_Tests_Product_Data_Store extends WC_Unit_Test_Case { $loaded_variation = wc_get_product( $variation->get_id() ); $this->assertEquals( "Test Product", $loaded_variation->get_name() ); } + + /** + * Test to make sure meta can still be set while hooked using save_post. + * https://github.com/woocommerce/woocommerce/issues/13960 + * @since 3.0.01 + */ + function test_product_meta_save_post() { + $product = new WC_Product; + $product->set_name( 'Test Product' ); + $product->save(); + update_post_meta( $product->get_id(), '_test2', 'default' ); // this is the value we don't want to get back. + + // This takes place of WC_Meta_Box do_action( 'woocommerce_admin_process_product_object ' ) just adding simple meta. + $product->update_meta_data( '_test', 'hello' ); + $product->set_name( 'Test Product_' ); + + add_action( 'save_post', array( 'WC_Helper_Product', 'save_post_test_update_meta_data_direct' ), 11 ); + $product->save(); + + $test = get_post_meta( $product->get_id(), '_test', true ); + $test2 = get_post_meta( $product->get_id(), '_test2', true ); + + $this->assertEquals( 'hello', $test ); + $this->assertEquals( 'world', $test2 ); // this would be 'default' without the force meta refresh in WC_Product_Data_Store::update(); + $this->assertEquals( 'world', $product->get_meta( '_test2' ) ); + $this->assertEquals( 'Test Product_', $product->get_name() ); + + remove_action( 'save_post', array( 'WC_Helper_Product', 'save_post_test_update_meta_data_direct' ) ); + } } From 08537218b157693a5d9a9d1617078211f537cbb9 Mon Sep 17 00:00:00 2001 From: Justin Shreve Date: Wed, 5 Apr 2017 14:46:17 -0700 Subject: [PATCH 267/525] mend --- tests/unit-tests/product/data-store.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit-tests/product/data-store.php b/tests/unit-tests/product/data-store.php index 7d4016ca745..306e297468a 100644 --- a/tests/unit-tests/product/data-store.php +++ b/tests/unit-tests/product/data-store.php @@ -460,7 +460,7 @@ class WC_Tests_Product_Data_Store extends WC_Unit_Test_Case { /** * Test to make sure meta can still be set while hooked using save_post. * https://github.com/woocommerce/woocommerce/issues/13960 - * @since 3.0.01 + * @since 3.0.1 */ function test_product_meta_save_post() { $product = new WC_Product; From 70778abadef80732d5a05e3981502b4923984811 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 5 Apr 2017 23:16:45 +0100 Subject: [PATCH 268/525] When setting props, exclude deprecated ones Fixes #13928 --- includes/data-stores/class-wc-customer-data-store.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/includes/data-stores/class-wc-customer-data-store.php b/includes/data-stores/class-wc-customer-data-store.php index eaa6f7d6b35..78a90c66d9c 100644 --- a/includes/data-stores/class-wc-customer-data-store.php +++ b/includes/data-stores/class-wc-customer-data-store.php @@ -132,7 +132,16 @@ class WC_Customer_Data_Store extends WC_Data_Store_WP implements WC_Customer_Dat } $customer_id = $customer->get_id(); - $customer->set_props( array_map( 'wc_flatten_meta_callback', get_user_meta( $customer_id ) ) ); + // Load meta but exclude deprecated props. + $user_meta = array_diff_key( array_map( 'wc_flatten_meta_callback', get_user_meta( $customer_id ) ), array( + 'country' => 1, + 'state' => 1, + 'postcode' => 1, + 'city' => 1, + 'address' => 1, + 'address_2' => 1, + ) ); + $customer->set_props( $user_meta ); $customer->set_props( array( 'is_paying_customer' => get_user_meta( $customer_id, 'paying_customer', true ), 'email' => $user_object->user_email, From e16119f687fdeda87200d721562d63d83b1d8133 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 5 Apr 2017 23:28:13 +0100 Subject: [PATCH 269/525] Cross sells were not showing first last classes since columns (2) was not being set --- includes/wc-template-functions.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/includes/wc-template-functions.php b/includes/wc-template-functions.php index 6029d13b8b8..6593349cc1e 100644 --- a/includes/wc-template-functions.php +++ b/includes/wc-template-functions.php @@ -1375,11 +1375,15 @@ if ( ! function_exists( 'woocommerce_cross_sell_display' ) ) { * @param string $order (default: 'desc') */ function woocommerce_cross_sell_display( $limit = 2, $columns = 2, $orderby = 'rand', $order = 'desc' ) { + global $woocommerce_loop; + if ( is_checkout() ) { return; } // Get visble cross sells then sort them at random. - $cross_sells = array_filter( array_map( 'wc_get_product', WC()->cart->get_cross_sells() ), 'wc_products_array_filter_visible' ); + $cross_sells = array_filter( array_map( 'wc_get_product', WC()->cart->get_cross_sells() ), 'wc_products_array_filter_visible' ); + $woocommerce_loop['name'] = 'cross-sells'; + $woocommerce_loop['columns'] = $columns; // Handle orderby and limit results. $orderby = apply_filters( 'woocommerce_cross_sells_orderby', $orderby ); From 8333d75703d117cf27d521c6433b27b6fa11f74d Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 5 Apr 2017 23:42:33 +0100 Subject: [PATCH 270/525] Hash querystring is v not version. Stops infinite loop. Fixes #13902 --- includes/class-wc-frontend-scripts.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/class-wc-frontend-scripts.php b/includes/class-wc-frontend-scripts.php index 6748d13e24f..b9a9e36065e 100644 --- a/includes/class-wc-frontend-scripts.php +++ b/includes/class-wc-frontend-scripts.php @@ -457,7 +457,7 @@ class WC_Frontend_Scripts { 'wc_ajax_url' => WC_AJAX::get_endpoint( "%%endpoint%%" ), 'home_url' => home_url(), 'is_available' => ! ( is_cart() || is_account_page() || is_checkout() || is_customize_preview() ) ? '1' : '0', - 'hash' => isset( $_GET['version'] ) ? wc_clean( $_GET['version'] ) : '', + 'hash' => isset( $_GET['v'] ) ? wc_clean( $_GET['v'] ) : '', ); break; case 'wc-single-product' : From 37c7e2a6159fd3491a8180312c9b0bddd47e2dc9 Mon Sep 17 00:00:00 2001 From: Gregory Karpinsky Date: Thu, 6 Apr 2017 00:32:36 -0400 Subject: [PATCH 271/525] Docblock fix `get_availability` returns array of strings --- includes/abstracts/abstract-wc-product.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/abstracts/abstract-wc-product.php b/includes/abstracts/abstract-wc-product.php index eae76ea242e..d9b4d9eecbe 100644 --- a/includes/abstracts/abstract-wc-product.php +++ b/includes/abstracts/abstract-wc-product.php @@ -1845,7 +1845,7 @@ class WC_Product extends WC_Abstract_Legacy_Product { /** * Returns the availability of the product. * - * @return string + * @return string[] */ public function get_availability() { return apply_filters( 'woocommerce_get_availability', array( From 2ffb2e8853156551b5fedf3b3a61c11e29f35091 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 6 Apr 2017 02:19:12 -0300 Subject: [PATCH 272/525] Allow search customers by ID in admin customer ajax search Closes #13980 --- assets/js/admin/wc-enhanced-select.js | 6 +++--- assets/js/admin/wc-enhanced-select.min.js | 2 +- includes/class-wc-ajax.php | 22 ++++++++++++++++++++-- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/assets/js/admin/wc-enhanced-select.js b/assets/js/admin/wc-enhanced-select.js index 4379731c339..dea8229cdfb 100644 --- a/assets/js/admin/wc-enhanced-select.js +++ b/assets/js/admin/wc-enhanced-select.js @@ -138,15 +138,15 @@ jQuery( function( $ ) { var select2_args = { allowClear: $( this ).data( 'allow_clear' ) ? true : false, placeholder: $( this ).data( 'placeholder' ), - minimumInputLength: $( this ).data( 'minimum_input_length' ) ? $( this ).data( 'minimum_input_length' ) : '3', + minimumInputLength: $( this ).data( 'minimum_input_length' ) ? $( this ).data( 'minimum_input_length' ) : '1', escapeMarkup: function( m ) { return m; }, ajax: { url: wc_enhanced_select_params.ajax_url, dataType: 'json', - quietMillis: 250, - data: function( params ) { + delay: 250, + data: function( params ) { return { term: params.term, action: 'woocommerce_json_search_customers', diff --git a/assets/js/admin/wc-enhanced-select.min.js b/assets/js/admin/wc-enhanced-select.min.js index 437a454478a..c8bd339fa96 100644 --- a/assets/js/admin/wc-enhanced-select.min.js +++ b/assets/js/admin/wc-enhanced-select.min.js @@ -1 +1 @@ -jQuery(function(a){function b(){return{language:{errorLoading:function(){return wc_enhanced_select_params.i18n_searching},inputTooLong:function(a){var b=a.input.length-a.maximum;return 1===b?wc_enhanced_select_params.i18n_input_too_long_1:wc_enhanced_select_params.i18n_input_too_long_n.replace("%qty%",b)},inputTooShort:function(a){var b=a.minimum-a.input.length;return 1===b?wc_enhanced_select_params.i18n_input_too_short_1:wc_enhanced_select_params.i18n_input_too_short_n.replace("%qty%",b)},loadingMore:function(){return wc_enhanced_select_params.i18n_load_more},maximumSelected:function(a){return 1===a.maximum?wc_enhanced_select_params.i18n_selection_too_long_1:wc_enhanced_select_params.i18n_selection_too_long_n.replace("%qty%",a.maximum)},noResults:function(){return wc_enhanced_select_params.i18n_no_matches},searching:function(){return wc_enhanced_select_params.i18n_searching}}}}a(document.body).on("wc-enhanced-select-init",function(){a(":input.wc-enhanced-select, :input.chosen_select").filter(":not(.enhanced)").each(function(){var c=a.extend({minimumResultsForSearch:10,allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder")},b());a(this).select2(c).addClass("enhanced")}),a(":input.wc-enhanced-select-nostd, :input.chosen_select_nostd").filter(":not(.enhanced)").each(function(){var c=a.extend({minimumResultsForSearch:10,allowClear:!0,placeholder:a(this).data("placeholder")},b());a(this).select2(c).addClass("enhanced")}),a(":input.wc-product-search").filter(":not(.enhanced)").each(function(){var c={allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder"),minimumInputLength:a(this).data("minimum_input_length")?a(this).data("minimum_input_length"):"3",escapeMarkup:function(a){return a},ajax:{url:wc_enhanced_select_params.ajax_url,dataType:"json",quietMillis:250,data:function(b){return{term:b.term,action:a(this).data("action")||"woocommerce_json_search_products_and_variations",security:wc_enhanced_select_params.search_products_nonce,exclude:a(this).data("exclude"),include:a(this).data("include"),limit:a(this).data("limit")}},processResults:function(b){var c=[];return b&&a.each(b,function(a,b){c.push({id:a,text:b})}),{results:c}},cache:!0}};if(c=a.extend(c,b()),a(this).select2(c).addClass("enhanced"),a(this).data("sortable")){var d=a(this),e=a(this).next(".select2-container").find("ul.select2-selection__rendered");e.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){a(e.find(".select2-selection__choice").get().reverse()).each(function(){var b=a(this).data("data").id,c=d.find('option[value="'+b+'"]')[0];d.prepend(c)})}})}}),a(":input.wc-customer-search").filter(":not(.enhanced)").each(function(){var c={allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder"),minimumInputLength:a(this).data("minimum_input_length")?a(this).data("minimum_input_length"):"3",escapeMarkup:function(a){return a},ajax:{url:wc_enhanced_select_params.ajax_url,dataType:"json",quietMillis:250,data:function(b){return{term:b.term,action:"woocommerce_json_search_customers",security:wc_enhanced_select_params.search_customers_nonce,exclude:a(this).data("exclude")}},processResults:function(b){var c=[];return b&&a.each(b,function(a,b){c.push({id:a,text:b})}),{results:c}},cache:!0}};if(c=a.extend(c,b()),a(this).select2(c).addClass("enhanced"),a(this).data("sortable")){var d=a(this),e=a(this).next(".select2-container").find("ul.select2-selection__rendered");e.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){a(e.find(".select2-selection__choice").get().reverse()).each(function(){var b=a(this).data("data").id,c=d.find('option[value="'+b+'"]')[0];d.prepend(c)})}})}})}).on("wc_backbone_modal_before_remove",function(){a(".wc-enhanced-select, :input.wc-product-search, :input.wc-customer-search").filter(".select2-hidden-accessible").select2("close")}).trigger("wc-enhanced-select-init"),a("html").on("click",function(b){this===b.target&&a(".wc-enhanced-select, :input.wc-product-search, :input.wc-customer-search").filter(".select2-hidden-accessible").select2("close")})}); \ No newline at end of file +jQuery(function(a){function b(){return{language:{errorLoading:function(){return wc_enhanced_select_params.i18n_searching},inputTooLong:function(a){var b=a.input.length-a.maximum;return 1===b?wc_enhanced_select_params.i18n_input_too_long_1:wc_enhanced_select_params.i18n_input_too_long_n.replace("%qty%",b)},inputTooShort:function(a){var b=a.minimum-a.input.length;return 1===b?wc_enhanced_select_params.i18n_input_too_short_1:wc_enhanced_select_params.i18n_input_too_short_n.replace("%qty%",b)},loadingMore:function(){return wc_enhanced_select_params.i18n_load_more},maximumSelected:function(a){return 1===a.maximum?wc_enhanced_select_params.i18n_selection_too_long_1:wc_enhanced_select_params.i18n_selection_too_long_n.replace("%qty%",a.maximum)},noResults:function(){return wc_enhanced_select_params.i18n_no_matches},searching:function(){return wc_enhanced_select_params.i18n_searching}}}}a(document.body).on("wc-enhanced-select-init",function(){a(":input.wc-enhanced-select, :input.chosen_select").filter(":not(.enhanced)").each(function(){var c=a.extend({minimumResultsForSearch:10,allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder")},b());a(this).select2(c).addClass("enhanced")}),a(":input.wc-enhanced-select-nostd, :input.chosen_select_nostd").filter(":not(.enhanced)").each(function(){var c=a.extend({minimumResultsForSearch:10,allowClear:!0,placeholder:a(this).data("placeholder")},b());a(this).select2(c).addClass("enhanced")}),a(":input.wc-product-search").filter(":not(.enhanced)").each(function(){var c={allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder"),minimumInputLength:a(this).data("minimum_input_length")?a(this).data("minimum_input_length"):"3",escapeMarkup:function(a){return a},ajax:{url:wc_enhanced_select_params.ajax_url,dataType:"json",quietMillis:250,data:function(b){return{term:b.term,action:a(this).data("action")||"woocommerce_json_search_products_and_variations",security:wc_enhanced_select_params.search_products_nonce,exclude:a(this).data("exclude"),include:a(this).data("include"),limit:a(this).data("limit")}},processResults:function(b){var c=[];return b&&a.each(b,function(a,b){c.push({id:a,text:b})}),{results:c}},cache:!0}};if(c=a.extend(c,b()),a(this).select2(c).addClass("enhanced"),a(this).data("sortable")){var d=a(this),e=a(this).next(".select2-container").find("ul.select2-selection__rendered");e.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){a(e.find(".select2-selection__choice").get().reverse()).each(function(){var b=a(this).data("data").id,c=d.find('option[value="'+b+'"]')[0];d.prepend(c)})}})}}),a(":input.wc-customer-search").filter(":not(.enhanced)").each(function(){var c={allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder"),minimumInputLength:a(this).data("minimum_input_length")?a(this).data("minimum_input_length"):"1",escapeMarkup:function(a){return a},ajax:{url:wc_enhanced_select_params.ajax_url,dataType:"json",delay:250,data:function(b){return{term:b.term,action:"woocommerce_json_search_customers",security:wc_enhanced_select_params.search_customers_nonce,exclude:a(this).data("exclude")}},processResults:function(b){var c=[];return b&&a.each(b,function(a,b){c.push({id:a,text:b})}),{results:c}},cache:!0}};if(c=a.extend(c,b()),a(this).select2(c).addClass("enhanced"),a(this).data("sortable")){var d=a(this),e=a(this).next(".select2-container").find("ul.select2-selection__rendered");e.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){a(e.find(".select2-selection__choice").get().reverse()).each(function(){var b=a(this).data("data").id,c=d.find('option[value="'+b+'"]')[0];d.prepend(c)})}})}})}).on("wc_backbone_modal_before_remove",function(){a(".wc-enhanced-select, :input.wc-product-search, :input.wc-customer-search").filter(".select2-hidden-accessible").select2("close")}).trigger("wc-enhanced-select-init"),a("html").on("click",function(b){this===b.target&&a(".wc-enhanced-select, :input.wc-product-search, :input.wc-customer-search").filter(".select2-hidden-accessible").select2("close")})}); \ No newline at end of file diff --git a/includes/class-wc-ajax.php b/includes/class-wc-ajax.php index 27f821bce6d..55f28c4d05d 100644 --- a/includes/class-wc-ajax.php +++ b/includes/class-wc-ajax.php @@ -1229,8 +1229,26 @@ class WC_AJAX { wp_die(); } - $data_store = WC_Data_Store::load( 'customer' ); - $ids = $data_store->search_customers( $term ); + // Stop if it is not numeric and smaller than 3 characters. + if ( ! is_numeric( $term ) && 2 >= strlen( $term ) ) { + wp_die(); + } + + // Search by ID. + if ( is_numeric( $term ) ) { + $customer = new WC_Customer( intval( $term ) ); + + // Customer does not exists. + if ( 0 === $customer->get_id() ) { + wp_die(); + } + + $ids = array( $customer->get_id() ); + } else { + $data_store = WC_Data_Store::load( 'customer' ); + $ids = $data_store->search_customers( $term ); + } + $found_customers = array(); if ( ! empty( $_GET['exclude'] ) ) { From 8614a7922dc86edd7ee2bed8477c2eb3198ed902 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 6 Apr 2017 09:50:34 +0100 Subject: [PATCH 273/525] When forcing shipping to billing, set the shipping fields in the order itself Fixes #14006 --- includes/class-wc-checkout.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/class-wc-checkout.php b/includes/class-wc-checkout.php index fae5a25057f..f404d892f4e 100644 --- a/includes/class-wc-checkout.php +++ b/includes/class-wc-checkout.php @@ -558,7 +558,7 @@ class WC_Checkout { } } - if ( in_array( 'shipping', $skipped ) && WC()->cart->needs_shipping_address() ) { + if ( in_array( 'shipping', $skipped ) && ( WC()->cart->needs_shipping_address() || wc_ship_to_billing_address_only() ) ) { foreach ( $this->get_checkout_fields( 'shipping' ) as $key => $field ) { $data[ $key ] = isset( $data[ 'billing_' . substr( $key, 9 ) ] ) ? $data[ 'billing_' . substr( $key, 9 ) ] : ''; } From 41553930cd0197f78f6e93ffea4c6923c886965e Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 6 Apr 2017 09:59:24 +0100 Subject: [PATCH 274/525] Template version bump Closes #13988 --- templates/checkout/form-billing.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/checkout/form-billing.php b/templates/checkout/form-billing.php index a7b03fb4698..94b1c8a9850 100644 --- a/templates/checkout/form-billing.php +++ b/templates/checkout/form-billing.php @@ -13,7 +13,7 @@ * @see https://docs.woocommerce.com/document/template-structure/ * @author WooThemes * @package WooCommerce/Templates - * @version 2.1.2 + * @version 3.0.0 */ if ( ! defined( 'ABSPATH' ) ) { From 52939e800c8313859e6c2c4330ce45541e17d5fc Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 6 Apr 2017 10:06:21 +0100 Subject: [PATCH 275/525] Hide structured data in hidden element --- includes/class-wc-structured-data.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/includes/class-wc-structured-data.php b/includes/class-wc-structured-data.php index 89f46e98fd7..9f792f85b60 100644 --- a/includes/class-wc-structured-data.php +++ b/includes/class-wc-structured-data.php @@ -132,7 +132,9 @@ class WC_Structured_Data { if ( $plain_text ) { return; } + echo '
    '; $this->output_structured_data(); + echo '
    '; } /** From 09cbf5f816451ee1b74c64baafe85f07f59fccbe Mon Sep 17 00:00:00 2001 From: James Collins Date: Thu, 6 Apr 2017 17:11:59 +0800 Subject: [PATCH 276/525] Avoid deprecated warning when creating an order in unit tests Unexpected deprecated notice for Action: woocommerce_order_add_product --- tests/framework/helpers/class-wc-helper-order.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/framework/helpers/class-wc-helper-order.php b/tests/framework/helpers/class-wc-helper-order.php index ce123d0cc7b..942f57d6bb6 100644 --- a/tests/framework/helpers/class-wc-helper-order.php +++ b/tests/framework/helpers/class-wc-helper-order.php @@ -57,7 +57,12 @@ class WC_Helper_Order { $order = wc_create_order( $order_data ); // Add order products - $order->add_product( $product, 4 ); + $item_1 = new WC_Order_Item_Product(); + $item_1->set_props( array( + 'product' => $product, + 'quantity' => 4, + ) ); + $order->add_item( $item_1 ); // Set billing address $order->set_billing_first_name( 'Jeroen' ); From d570a81241f49fb79007eba78bd0ad489d0911c1 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 6 Apr 2017 10:28:32 +0100 Subject: [PATCH 277/525] Set session data only if the value is empty in customer object. Prevents session data overwriting customer data on login. Fixes #13906 --- .../data-stores/class-wc-customer-data-store-session.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/includes/data-stores/class-wc-customer-data-store-session.php b/includes/data-stores/class-wc-customer-data-store-session.php index 51e537a4c4b..395e5021b9b 100644 --- a/includes/data-stores/class-wc-customer-data-store-session.php +++ b/includes/data-stores/class-wc-customer-data-store-session.php @@ -95,7 +95,10 @@ class WC_Customer_Data_Store_Session extends WC_Data_Store_WP implements WC_Cust $session_key = str_replace( 'billing_', '', $session_key ); } if ( ! empty( $data[ $session_key ] ) && is_callable( array( $customer, "set_{$function_key}" ) ) ) { - $customer->{"set_{$function_key}"}( $data[ $session_key ] ); + // Only set from session if data is already missing. + if ( ! $customer->{"get_{$function_key}"}() ) { + $customer->{"set_{$function_key}"}( $data[ $session_key ] ); + } } } } From eea6867ac9a3b88b5522dc37496ba960318585cb Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 6 Apr 2017 10:41:09 +0100 Subject: [PATCH 278/525] Allow variation image to be unset @claudiosanches is this correct way? Fixes #14008 --- ...ass-wc-rest-product-variations-controller.php | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/includes/api/class-wc-rest-product-variations-controller.php b/includes/api/class-wc-rest-product-variations-controller.php index 7447f1317ad..dd638be983f 100644 --- a/includes/api/class-wc-rest-product-variations-controller.php +++ b/includes/api/class-wc-rest-product-variations-controller.php @@ -259,13 +259,17 @@ class WC_REST_Product_Variations_Controller extends WC_REST_Products_Controller } // Thumbnail. - if ( isset( $request['image'] ) && is_array( $request['image'] ) ) { - $image = $request['image']; - if ( is_array( $image ) ) { - $image['position'] = 0; - } + if ( isset( $request['image'] ) ) { + if ( is_array( $request['image'] ) ) { + $image = $request['image']; + if ( is_array( $image ) ) { + $image['position'] = 0; + } - $variation = $this->set_product_images( $variation, array( $image ) ); + $variation = $this->set_product_images( $variation, array( $image ) ); + } else { + $variation->set_image_id( '' ); + } } // Virtual variation. From 93689a8107d82a1dfd3f085e661119e6326ccde5 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 6 Apr 2017 11:01:20 +0100 Subject: [PATCH 279/525] Show a sale price on variable products if on sale and all prices are the same Fixes #13968 --- includes/class-wc-product-variable.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/includes/class-wc-product-variable.php b/includes/class-wc-product-variable.php index d2ac8dfbbcf..c98748e02a0 100644 --- a/includes/class-wc-product-variable.php +++ b/includes/class-wc-product-variable.php @@ -138,11 +138,14 @@ class WC_Product_Variable extends WC_Product { return apply_filters( 'woocommerce_variable_empty_price_html', '', $this ); } - $min_price = current( $prices['price'] ); - $max_price = end( $prices['price'] ); + $min_price = current( $prices['price'] ); + $max_regular_price = end( $prices['regular_price'] ); + $max_price = end( $prices['price'] ); if ( $min_price !== $max_price ) { $price = apply_filters( 'woocommerce_variable_price_html', wc_format_price_range( $min_price, $max_price ) . $this->get_price_suffix(), $this ); + } elseif ( $this->is_on_sale() ) { + $price = apply_filters( 'woocommerce_variable_price_html', wc_format_sale_price( wc_price( $max_regular_price ), wc_price( $min_price ) ) . $this->get_price_suffix(), $this ); } else { $price = apply_filters( 'woocommerce_variable_price_html', wc_price( $min_price ) . $this->get_price_suffix(), $this ); } From 285daf466b7370c51f34b35f89dcc46278034099 Mon Sep 17 00:00:00 2001 From: James Collins Date: Thu, 6 Apr 2017 18:02:06 +0800 Subject: [PATCH 280/525] Correctly calculate order total when adding the product --- tests/framework/helpers/class-wc-helper-order.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/framework/helpers/class-wc-helper-order.php b/tests/framework/helpers/class-wc-helper-order.php index 942f57d6bb6..b0ab1d97b5b 100644 --- a/tests/framework/helpers/class-wc-helper-order.php +++ b/tests/framework/helpers/class-wc-helper-order.php @@ -57,12 +57,15 @@ class WC_Helper_Order { $order = wc_create_order( $order_data ); // Add order products - $item_1 = new WC_Order_Item_Product(); - $item_1->set_props( array( + $item = new WC_Order_Item_Product(); + $item->set_props( array( 'product' => $product, 'quantity' => 4, + 'subtotal' => wc_get_price_excluding_tax( $product, array( 'qty' => 4 ) ), + 'total' => wc_get_price_excluding_tax( $product, array( 'qty' => 4 ) ), ) ); - $order->add_item( $item_1 ); + $item->save(); + $order->add_item( $item ); // Set billing address $order->set_billing_first_name( 'Jeroen' ); From fe87815d8d8f34eb6386940e110ff0ee1dd53932 Mon Sep 17 00:00:00 2001 From: dixitadusara Date: Thu, 6 Apr 2017 15:44:22 +0530 Subject: [PATCH 281/525] fixes added issue-14020 --- templates/content-product.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/content-product.php b/templates/content-product.php index 42ba59bee6f..bc8204642b8 100644 --- a/templates/content-product.php +++ b/templates/content-product.php @@ -13,7 +13,7 @@ * @see https://docs.woocommerce.com/document/template-structure/ * @author WooThemes * @package WooCommerce/Templates - * @version 2.6.1 + * @version 3.0.0 */ if ( ! defined( 'ABSPATH' ) ) { From 205a9b6c240006c222493adea19f8d86a97755e7 Mon Sep 17 00:00:00 2001 From: dixitadusara Date: Thu, 6 Apr 2017 15:52:34 +0530 Subject: [PATCH 282/525] fixes issue-14015 --- templates/loop/rating.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/loop/rating.php b/templates/loop/rating.php index 2cfc0988a45..3018e4199d8 100644 --- a/templates/loop/rating.php +++ b/templates/loop/rating.php @@ -13,7 +13,7 @@ * @see https://docs.woocommerce.com/document/template-structure/ * @author WooThemes * @package WooCommerce/Templates - * @version 2.0.0 + * @version 3.0.0 */ if ( ! defined( 'ABSPATH' ) ) { From a0843e8bb985cc823ec4745943a7cc71006db843 Mon Sep 17 00:00:00 2001 From: dixitadusara Date: Thu, 6 Apr 2017 16:26:21 +0530 Subject: [PATCH 283/525] fixes issue-14016 --- templates/loop/add-to-cart.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/loop/add-to-cart.php b/templates/loop/add-to-cart.php index 72702739a92..5a20a0cdb31 100644 --- a/templates/loop/add-to-cart.php +++ b/templates/loop/add-to-cart.php @@ -13,7 +13,7 @@ * @see https://docs.woocommerce.com/document/template-structure/ * @author WooThemes * @package WooCommerce/Templates - * @version 2.5.0 + * @version 3.0.0 */ if ( ! defined( 'ABSPATH' ) ) { From fe42b2565c3d235ee75c980996e6c2afe3c0a252 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 6 Apr 2017 12:25:34 +0100 Subject: [PATCH 284/525] Defer variation parent sync to shutdown rather than cron --- includes/abstracts/abstract-wc-product.php | 2 +- includes/class-wc-post-data.php | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/includes/abstracts/abstract-wc-product.php b/includes/abstracts/abstract-wc-product.php index d9b4d9eecbe..e9ab5ae2ab2 100644 --- a/includes/abstracts/abstract-wc-product.php +++ b/includes/abstracts/abstract-wc-product.php @@ -1289,7 +1289,7 @@ class WC_Product extends WC_Abstract_Legacy_Product { $this->data_store->create( $this ); } if ( $this->get_parent_id() ) { - wp_schedule_single_event( time(), 'woocommerce_deferred_product_sync', array( 'product_id' => $this->get_parent_id() ) ); + wc_deferred_product_sync( $this->get_parent_id() ); } return $this->get_id(); } diff --git a/includes/class-wc-post-data.php b/includes/class-wc-post-data.php index 495b8c3f0c4..dc04578b35c 100644 --- a/includes/class-wc-post-data.php +++ b/includes/class-wc-post-data.php @@ -29,7 +29,7 @@ class WC_Post_Data { */ public static function init() { add_filter( 'post_type_link', array( __CLASS__, 'variation_post_link' ), 10, 2 ); - add_action( 'woocommerce_deferred_product_sync', array( __CLASS__, 'deferred_product_sync' ), 10, 1 ); + add_action( 'shutdown', array( __CLASS__, 'do_deferred_product_sync' ), 10 ); add_action( 'set_object_terms', array( __CLASS__, 'set_object_terms' ), 10, 6 ); add_action( 'transition_post_status', array( __CLASS__, 'transition_post_status' ), 10, 3 ); @@ -66,6 +66,18 @@ class WC_Post_Data { return $permalink; } + /** + * Sync products queued to sync. + */ + public static function do_deferred_product_sync() { + global $wc_deferred_product_sync; + + if ( ! empty( $wc_deferred_product_sync ) ) { + $wc_deferred_product_sync = wp_parse_id_list( $wc_deferred_product_sync ); + array_walk( $wc_deferred_product_sync, array( __CLASS__, 'deferred_product_sync' ) ); + } + } + /** * Sync a product. * @param int $product_id From 47411f73977fc25fc10c4d75cbd0016b0d752a79 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 6 Apr 2017 12:25:54 +0100 Subject: [PATCH 285/525] wc_deferred_product_sync queue function --- includes/wc-product-functions.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/includes/wc-product-functions.php b/includes/wc-product-functions.php index e20ce4cffc8..c06f0ca9876 100644 --- a/includes/wc-product-functions.php +++ b/includes/wc-product-functions.php @@ -153,7 +153,6 @@ function wc_delete_product_transients( $post_id = 0 ) { 'wc_related_', 'wc_child_has_weight_', 'wc_child_has_dimensions_', - 'wc_child_is_in_stock_', ); if ( $post_id > 0 ) { @@ -1137,3 +1136,18 @@ function wc_products_array_orderby_price( $a, $b ) { } return ( $a->get_price() < $b->get_price() ) ? -1 : 1; } + +/** + * Queue a product for syncing at the end of the request. + * + * @param int $product_id + */ +function wc_deferred_product_sync( $product_id ) { + global $wc_deferred_product_sync; + + if ( empty( $wc_deferred_product_sync ) ) { + $wc_deferred_product_sync = array(); + } + + $wc_deferred_product_sync[] = $product_id; +} From 7e90a318cd7739ddc1be0d71bc26ed873ee3b63c Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 6 Apr 2017 12:26:10 +0100 Subject: [PATCH 286/525] On variable save, sync with children and avoid transient cache --- includes/class-wc-product-variable.php | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/includes/class-wc-product-variable.php b/includes/class-wc-product-variable.php index d2ac8dfbbcf..06278a16a09 100644 --- a/includes/class-wc-product-variable.php +++ b/includes/class-wc-product-variable.php @@ -345,6 +345,7 @@ class WC_Product_Variable extends WC_Product { if ( ! $this->get_manage_stock() ) { $this->set_stock_quantity( '' ); $this->set_backorders( 'no' ); + $this->set_stock_status( $this->child_is_in_stock() ? 'instock' : 'outofstock' ); // If we are stock managing and we don't have stock, force out of stock status. } elseif ( $this->get_stock_quantity() <= get_option( 'woocommerce_notify_no_stock_amount' ) ) { @@ -412,14 +413,7 @@ class WC_Product_Variable extends WC_Product { * @return boolean */ public function child_is_in_stock() { - $transient_name = 'wc_child_is_in_stock_' . $this->get_id(); - $in_stock = get_transient( $transient_name ); - - if ( false === $in_stock ) { - $in_stock = $this->data_store->child_is_in_stock( $this ); - set_transient( $transient_name, $in_stock, DAY_IN_SECONDS * 30 ); - } - return (bool) $in_stock; + return $this->data_store->child_is_in_stock( $this ); } /** From a7a896008c4f6f44969994b800f7f9336756bfae Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 6 Apr 2017 12:26:19 +0100 Subject: [PATCH 287/525] Fix up the child_is_in_stock function --- .../data-stores/class-wc-product-variable-data-store-cpt.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/data-stores/class-wc-product-variable-data-store-cpt.php b/includes/data-stores/class-wc-product-variable-data-store-cpt.php index 72c923d9806..d1a606c0a03 100644 --- a/includes/data-stores/class-wc-product-variable-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-variable-data-store-cpt.php @@ -290,8 +290,8 @@ class WC_Product_Variable_Data_Store_CPT extends WC_Product_Data_Store_CPT imple public function child_is_in_stock( $product ) { global $wpdb; $children = $product->get_visible_children(); - $oufofstock_children = $children ? $wpdb->get_var( "SELECT COUNT( post_id ) FROM $wpdb->postmeta WHERE meta_key = '_stock_status' AND meta_value = 'instock' AND post_id IN ( " . implode( ',', array_map( 'absint', $children ) ) . " )" ) : 0; - return $children > $oufofstock_children; + $oufofstock_children = $children ? $wpdb->get_var( "SELECT COUNT( post_id ) FROM $wpdb->postmeta WHERE meta_key = '_stock_status' AND meta_value = 'outofstock' AND post_id IN ( " . implode( ',', array_map( 'absint', $children ) ) . " )" ) : 0; + return count( $children ) > $oufofstock_children; } /** From 36e9b73ef36095c524ed73313a1d61b14d0b1549 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 6 Apr 2017 12:40:53 +0100 Subject: [PATCH 288/525] Make sure we have a product before generating JSON --- includes/class-wc-structured-data.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/includes/class-wc-structured-data.php b/includes/class-wc-structured-data.php index 89f46e98fd7..7eef1875046 100644 --- a/includes/class-wc-structured-data.php +++ b/includes/class-wc-structured-data.php @@ -180,6 +180,10 @@ class WC_Structured_Data { global $product; } + if ( ! is_a( $product, 'WC_Product' ) ) { + return; + } + $shop_name = get_bloginfo( 'name' ); $shop_url = home_url(); $currency = get_woocommerce_currency(); From d3d301a26c71d8e77d5bd5e3d2a9c9052d4d3b71 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 6 Apr 2017 13:04:22 +0100 Subject: [PATCH 289/525] Add try/catch block to select2 code to stop it breaking EVERYTHING on conflict/failure --- assets/js/admin/wc-enhanced-select.js | 307 +++++++++++----------- assets/js/admin/wc-enhanced-select.min.js | 2 +- 2 files changed, 157 insertions(+), 152 deletions(-) diff --git a/assets/js/admin/wc-enhanced-select.js b/assets/js/admin/wc-enhanced-select.js index 4379731c339..c208c73b277 100644 --- a/assets/js/admin/wc-enhanced-select.js +++ b/assets/js/admin/wc-enhanced-select.js @@ -46,168 +46,173 @@ jQuery( function( $ ) { }; } - $( document.body ) + try { + $( document.body ) - .on( 'wc-enhanced-select-init', function() { + .on( 'wc-enhanced-select-init', function() { - // Regular select boxes - $( ':input.wc-enhanced-select, :input.chosen_select' ).filter( ':not(.enhanced)' ).each( function() { - var select2_args = $.extend({ - minimumResultsForSearch: 10, - allowClear: $( this ).data( 'allow_clear' ) ? true : false, - placeholder: $( this ).data( 'placeholder' ) - }, getEnhancedSelectFormatString() ); + // Regular select boxes + $( ':input.wc-enhanced-select, :input.chosen_select' ).filter( ':not(.enhanced)' ).each( function() { + var select2_args = $.extend({ + minimumResultsForSearch: 10, + allowClear: $( this ).data( 'allow_clear' ) ? true : false, + placeholder: $( this ).data( 'placeholder' ) + }, getEnhancedSelectFormatString() ); - $( this ).select2( select2_args ).addClass( 'enhanced' ); - }); + $( this ).select2( select2_args ).addClass( 'enhanced' ); + }); - $( ':input.wc-enhanced-select-nostd, :input.chosen_select_nostd' ).filter( ':not(.enhanced)' ).each( function() { - var select2_args = $.extend({ - minimumResultsForSearch: 10, - allowClear: true, - placeholder: $( this ).data( 'placeholder' ) - }, getEnhancedSelectFormatString() ); + $( ':input.wc-enhanced-select-nostd, :input.chosen_select_nostd' ).filter( ':not(.enhanced)' ).each( function() { + var select2_args = $.extend({ + minimumResultsForSearch: 10, + allowClear: true, + placeholder: $( this ).data( 'placeholder' ) + }, getEnhancedSelectFormatString() ); - $( this ).select2( select2_args ).addClass( 'enhanced' ); - }); + $( this ).select2( select2_args ).addClass( 'enhanced' ); + }); - // Ajax product search box - $( ':input.wc-product-search' ).filter( ':not(.enhanced)' ).each( function() { - var select2_args = { - allowClear: $( this ).data( 'allow_clear' ) ? true : false, - placeholder: $( this ).data( 'placeholder' ), - minimumInputLength: $( this ).data( 'minimum_input_length' ) ? $( this ).data( 'minimum_input_length' ) : '3', - escapeMarkup: function( m ) { - return m; - }, - ajax: { - url: wc_enhanced_select_params.ajax_url, - dataType: 'json', - quietMillis: 250, - data: function( params ) { - return { - term: params.term, - action: $( this ).data( 'action' ) || 'woocommerce_json_search_products_and_variations', - security: wc_enhanced_select_params.search_products_nonce, - exclude: $( this ).data( 'exclude' ), - include: $( this ).data( 'include' ), - limit: $( this ).data( 'limit' ) - }; + // Ajax product search box + $( ':input.wc-product-search' ).filter( ':not(.enhanced)' ).each( function() { + var select2_args = { + allowClear: $( this ).data( 'allow_clear' ) ? true : false, + placeholder: $( this ).data( 'placeholder' ), + minimumInputLength: $( this ).data( 'minimum_input_length' ) ? $( this ).data( 'minimum_input_length' ) : '3', + escapeMarkup: function( m ) { + return m; }, - processResults: function( data ) { - var terms = []; - if ( data ) { - $.each( data, function( id, text ) { - terms.push( { id: id, text: text } ); - }); - } - return { - results: terms - }; - }, - cache: true - } - }; - - select2_args = $.extend( select2_args, getEnhancedSelectFormatString() ); - - $( this ).select2( select2_args ).addClass( 'enhanced' ); - - if ( $( this ).data( 'sortable' ) ) { - var $select = $(this); - var $list = $( this ).next( '.select2-container' ).find( 'ul.select2-selection__rendered' ); - - $list.sortable({ - placeholder : 'ui-state-highlight select2-selection__choice', - forcePlaceholderSize: true, - items : 'li:not(.select2-search__field)', - tolerance : 'pointer', - stop: function() { - $( $list.find( '.select2-selection__choice' ).get().reverse() ).each( function() { - var id = $( this ).data( 'data' ).id; - var option = $select.find( 'option[value="' + id + '"]' )[0]; - $select.prepend( option ); - } ); - } - }); - } - }); - - // Ajax customer search boxes - $( ':input.wc-customer-search' ).filter( ':not(.enhanced)' ).each( function() { - var select2_args = { - allowClear: $( this ).data( 'allow_clear' ) ? true : false, - placeholder: $( this ).data( 'placeholder' ), - minimumInputLength: $( this ).data( 'minimum_input_length' ) ? $( this ).data( 'minimum_input_length' ) : '3', - escapeMarkup: function( m ) { - return m; - }, - ajax: { - url: wc_enhanced_select_params.ajax_url, - dataType: 'json', - quietMillis: 250, - data: function( params ) { - return { - term: params.term, - action: 'woocommerce_json_search_customers', - security: wc_enhanced_select_params.search_customers_nonce, - exclude: $( this ).data( 'exclude' ) - }; - }, - processResults: function( data ) { - var terms = []; - if ( data ) { - $.each( data, function( id, text ) { - terms.push({ - id: id, - text: text + ajax: { + url: wc_enhanced_select_params.ajax_url, + dataType: 'json', + quietMillis: 250, + data: function( params ) { + return { + term: params.term, + action: $( this ).data( 'action' ) || 'woocommerce_json_search_products_and_variations', + security: wc_enhanced_select_params.search_products_nonce, + exclude: $( this ).data( 'exclude' ), + include: $( this ).data( 'include' ), + limit: $( this ).data( 'limit' ) + }; + }, + processResults: function( data ) { + var terms = []; + if ( data ) { + $.each( data, function( id, text ) { + terms.push( { id: id, text: text } ); }); - }); - } - return { - results: terms - }; - }, - cache: true - } - }; - - select2_args = $.extend( select2_args, getEnhancedSelectFormatString() ); - - $( this ).select2( select2_args ).addClass( 'enhanced' ); - - if ( $( this ).data( 'sortable' ) ) { - var $select = $(this); - var $list = $( this ).next( '.select2-container' ).find( 'ul.select2-selection__rendered' ); - - $list.sortable({ - placeholder : 'ui-state-highlight select2-selection__choice', - forcePlaceholderSize: true, - items : 'li:not(.select2-search__field)', - tolerance : 'pointer', - stop: function() { - $( $list.find( '.select2-selection__choice' ).get().reverse() ).each( function() { - var id = $( this ).data( 'data' ).id; - var option = $select.find( 'option[value="' + id + '"]' )[0]; - $select.prepend( option ); - } ); + } + return { + results: terms + }; + }, + cache: true } - }); - } - }); - }) + }; - // WooCommerce Backbone Modal - .on( 'wc_backbone_modal_before_remove', function() { - $( '.wc-enhanced-select, :input.wc-product-search, :input.wc-customer-search' ).filter( '.select2-hidden-accessible' ).select2( 'close' ); - }) + select2_args = $.extend( select2_args, getEnhancedSelectFormatString() ); - .trigger( 'wc-enhanced-select-init' ); + $( this ).select2( select2_args ).addClass( 'enhanced' ); - $( 'html' ).on( 'click', function( event ) { - if ( this === event.target ) { - $( '.wc-enhanced-select, :input.wc-product-search, :input.wc-customer-search' ).filter( '.select2-hidden-accessible' ).select2( 'close' ); - } - } ); + if ( $( this ).data( 'sortable' ) ) { + var $select = $(this); + var $list = $( this ).next( '.select2-container' ).find( 'ul.select2-selection__rendered' ); + $list.sortable({ + placeholder : 'ui-state-highlight select2-selection__choice', + forcePlaceholderSize: true, + items : 'li:not(.select2-search__field)', + tolerance : 'pointer', + stop: function() { + $( $list.find( '.select2-selection__choice' ).get().reverse() ).each( function() { + var id = $( this ).data( 'data' ).id; + var option = $select.find( 'option[value="' + id + '"]' )[0]; + $select.prepend( option ); + } ); + } + }); + } + }); + + // Ajax customer search boxes + $( ':input.wc-customer-search' ).filter( ':not(.enhanced)' ).each( function() { + var select2_args = { + allowClear: $( this ).data( 'allow_clear' ) ? true : false, + placeholder: $( this ).data( 'placeholder' ), + minimumInputLength: $( this ).data( 'minimum_input_length' ) ? $( this ).data( 'minimum_input_length' ) : '3', + escapeMarkup: function( m ) { + return m; + }, + ajax: { + url: wc_enhanced_select_params.ajax_url, + dataType: 'json', + quietMillis: 250, + data: function( params ) { + return { + term: params.term, + action: 'woocommerce_json_search_customers', + security: wc_enhanced_select_params.search_customers_nonce, + exclude: $( this ).data( 'exclude' ) + }; + }, + processResults: function( data ) { + var terms = []; + if ( data ) { + $.each( data, function( id, text ) { + terms.push({ + id: id, + text: text + }); + }); + } + return { + results: terms + }; + }, + cache: true + } + }; + + select2_args = $.extend( select2_args, getEnhancedSelectFormatString() ); + + $( this ).select2( select2_args ).addClass( 'enhanced' ); + + if ( $( this ).data( 'sortable' ) ) { + var $select = $(this); + var $list = $( this ).next( '.select2-container' ).find( 'ul.select2-selection__rendered' ); + + $list.sortable({ + placeholder : 'ui-state-highlight select2-selection__choice', + forcePlaceholderSize: true, + items : 'li:not(.select2-search__field)', + tolerance : 'pointer', + stop: function() { + $( $list.find( '.select2-selection__choice' ).get().reverse() ).each( function() { + var id = $( this ).data( 'data' ).id; + var option = $select.find( 'option[value="' + id + '"]' )[0]; + $select.prepend( option ); + } ); + } + }); + } + }); + }) + + // WooCommerce Backbone Modal + .on( 'wc_backbone_modal_before_remove', function() { + $( '.wc-enhanced-select, :input.wc-product-search, :input.wc-customer-search' ).filter( '.select2-hidden-accessible' ).select2( 'close' ); + }) + + .trigger( 'wc-enhanced-select-init' ); + + $( 'html' ).on( 'click', function( event ) { + if ( this === event.target ) { + $( '.wc-enhanced-select, :input.wc-product-search, :input.wc-customer-search' ).filter( '.select2-hidden-accessible' ).select2( 'close' ); + } + } ); + + } catch( err ) { + // If select2 failed (conflict?) log the error but don't stop other scripts breaking. + window.console.log( err ); + } }); diff --git a/assets/js/admin/wc-enhanced-select.min.js b/assets/js/admin/wc-enhanced-select.min.js index 437a454478a..75a98bf2eba 100644 --- a/assets/js/admin/wc-enhanced-select.min.js +++ b/assets/js/admin/wc-enhanced-select.min.js @@ -1 +1 @@ -jQuery(function(a){function b(){return{language:{errorLoading:function(){return wc_enhanced_select_params.i18n_searching},inputTooLong:function(a){var b=a.input.length-a.maximum;return 1===b?wc_enhanced_select_params.i18n_input_too_long_1:wc_enhanced_select_params.i18n_input_too_long_n.replace("%qty%",b)},inputTooShort:function(a){var b=a.minimum-a.input.length;return 1===b?wc_enhanced_select_params.i18n_input_too_short_1:wc_enhanced_select_params.i18n_input_too_short_n.replace("%qty%",b)},loadingMore:function(){return wc_enhanced_select_params.i18n_load_more},maximumSelected:function(a){return 1===a.maximum?wc_enhanced_select_params.i18n_selection_too_long_1:wc_enhanced_select_params.i18n_selection_too_long_n.replace("%qty%",a.maximum)},noResults:function(){return wc_enhanced_select_params.i18n_no_matches},searching:function(){return wc_enhanced_select_params.i18n_searching}}}}a(document.body).on("wc-enhanced-select-init",function(){a(":input.wc-enhanced-select, :input.chosen_select").filter(":not(.enhanced)").each(function(){var c=a.extend({minimumResultsForSearch:10,allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder")},b());a(this).select2(c).addClass("enhanced")}),a(":input.wc-enhanced-select-nostd, :input.chosen_select_nostd").filter(":not(.enhanced)").each(function(){var c=a.extend({minimumResultsForSearch:10,allowClear:!0,placeholder:a(this).data("placeholder")},b());a(this).select2(c).addClass("enhanced")}),a(":input.wc-product-search").filter(":not(.enhanced)").each(function(){var c={allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder"),minimumInputLength:a(this).data("minimum_input_length")?a(this).data("minimum_input_length"):"3",escapeMarkup:function(a){return a},ajax:{url:wc_enhanced_select_params.ajax_url,dataType:"json",quietMillis:250,data:function(b){return{term:b.term,action:a(this).data("action")||"woocommerce_json_search_products_and_variations",security:wc_enhanced_select_params.search_products_nonce,exclude:a(this).data("exclude"),include:a(this).data("include"),limit:a(this).data("limit")}},processResults:function(b){var c=[];return b&&a.each(b,function(a,b){c.push({id:a,text:b})}),{results:c}},cache:!0}};if(c=a.extend(c,b()),a(this).select2(c).addClass("enhanced"),a(this).data("sortable")){var d=a(this),e=a(this).next(".select2-container").find("ul.select2-selection__rendered");e.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){a(e.find(".select2-selection__choice").get().reverse()).each(function(){var b=a(this).data("data").id,c=d.find('option[value="'+b+'"]')[0];d.prepend(c)})}})}}),a(":input.wc-customer-search").filter(":not(.enhanced)").each(function(){var c={allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder"),minimumInputLength:a(this).data("minimum_input_length")?a(this).data("minimum_input_length"):"3",escapeMarkup:function(a){return a},ajax:{url:wc_enhanced_select_params.ajax_url,dataType:"json",quietMillis:250,data:function(b){return{term:b.term,action:"woocommerce_json_search_customers",security:wc_enhanced_select_params.search_customers_nonce,exclude:a(this).data("exclude")}},processResults:function(b){var c=[];return b&&a.each(b,function(a,b){c.push({id:a,text:b})}),{results:c}},cache:!0}};if(c=a.extend(c,b()),a(this).select2(c).addClass("enhanced"),a(this).data("sortable")){var d=a(this),e=a(this).next(".select2-container").find("ul.select2-selection__rendered");e.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){a(e.find(".select2-selection__choice").get().reverse()).each(function(){var b=a(this).data("data").id,c=d.find('option[value="'+b+'"]')[0];d.prepend(c)})}})}})}).on("wc_backbone_modal_before_remove",function(){a(".wc-enhanced-select, :input.wc-product-search, :input.wc-customer-search").filter(".select2-hidden-accessible").select2("close")}).trigger("wc-enhanced-select-init"),a("html").on("click",function(b){this===b.target&&a(".wc-enhanced-select, :input.wc-product-search, :input.wc-customer-search").filter(".select2-hidden-accessible").select2("close")})}); \ No newline at end of file +jQuery(function(a){function b(){return{language:{errorLoading:function(){return wc_enhanced_select_params.i18n_searching},inputTooLong:function(a){var b=a.input.length-a.maximum;return 1===b?wc_enhanced_select_params.i18n_input_too_long_1:wc_enhanced_select_params.i18n_input_too_long_n.replace("%qty%",b)},inputTooShort:function(a){var b=a.minimum-a.input.length;return 1===b?wc_enhanced_select_params.i18n_input_too_short_1:wc_enhanced_select_params.i18n_input_too_short_n.replace("%qty%",b)},loadingMore:function(){return wc_enhanced_select_params.i18n_load_more},maximumSelected:function(a){return 1===a.maximum?wc_enhanced_select_params.i18n_selection_too_long_1:wc_enhanced_select_params.i18n_selection_too_long_n.replace("%qty%",a.maximum)},noResults:function(){return wc_enhanced_select_params.i18n_no_matches},searching:function(){return wc_enhanced_select_params.i18n_searching}}}}try{a(document.body).on("wc-enhanced-select-init",function(){a(":input.wc-enhanced-select, :input.chosen_select").filter(":not(.enhanced)").each(function(){var c=a.extend({minimumResultsForSearch:10,allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder")},b());a(this).select2(c).addClass("enhanced")}),a(":input.wc-enhanced-select-nostd, :input.chosen_select_nostd").filter(":not(.enhanced)").each(function(){var c=a.extend({minimumResultsForSearch:10,allowClear:!0,placeholder:a(this).data("placeholder")},b());a(this).select2(c).addClass("enhanced")}),a(":input.wc-product-search").filter(":not(.enhanced)").each(function(){var c={allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder"),minimumInputLength:a(this).data("minimum_input_length")?a(this).data("minimum_input_length"):"3",escapeMarkup:function(a){return a},ajax:{url:wc_enhanced_select_params.ajax_url,dataType:"json",quietMillis:250,data:function(b){return{term:b.term,action:a(this).data("action")||"woocommerce_json_search_products_and_variations",security:wc_enhanced_select_params.search_products_nonce,exclude:a(this).data("exclude"),include:a(this).data("include"),limit:a(this).data("limit")}},processResults:function(b){var c=[];return b&&a.each(b,function(a,b){c.push({id:a,text:b})}),{results:c}},cache:!0}};if(c=a.extend(c,b()),a(this).select2(c).addClass("enhanced"),a(this).data("sortable")){var d=a(this),e=a(this).next(".select2-container").find("ul.select2-selection__rendered");e.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){a(e.find(".select2-selection__choice").get().reverse()).each(function(){var b=a(this).data("data").id,c=d.find('option[value="'+b+'"]')[0];d.prepend(c)})}})}}),a(":input.wc-customer-search").filter(":not(.enhanced)").each(function(){var c={allowClear:!!a(this).data("allow_clear"),placeholder:a(this).data("placeholder"),minimumInputLength:a(this).data("minimum_input_length")?a(this).data("minimum_input_length"):"3",escapeMarkup:function(a){return a},ajax:{url:wc_enhanced_select_params.ajax_url,dataType:"json",quietMillis:250,data:function(b){return{term:b.term,action:"woocommerce_json_search_customers",security:wc_enhanced_select_params.search_customers_nonce,exclude:a(this).data("exclude")}},processResults:function(b){var c=[];return b&&a.each(b,function(a,b){c.push({id:a,text:b})}),{results:c}},cache:!0}};if(c=a.extend(c,b()),a(this).select2(c).addClass("enhanced"),a(this).data("sortable")){var d=a(this),e=a(this).next(".select2-container").find("ul.select2-selection__rendered");e.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){a(e.find(".select2-selection__choice").get().reverse()).each(function(){var b=a(this).data("data").id,c=d.find('option[value="'+b+'"]')[0];d.prepend(c)})}})}})}).on("wc_backbone_modal_before_remove",function(){a(".wc-enhanced-select, :input.wc-product-search, :input.wc-customer-search").filter(".select2-hidden-accessible").select2("close")}).trigger("wc-enhanced-select-init"),a("html").on("click",function(b){this===b.target&&a(".wc-enhanced-select, :input.wc-product-search, :input.wc-customer-search").filter(".select2-hidden-accessible").select2("close")})}catch(a){window.console.log(a)}}); \ No newline at end of file From bf09c7df82ee753b46b859cee9485ac9725b5718 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 6 Apr 2017 13:08:18 +0100 Subject: [PATCH 290/525] Ensure reg prices are the same --- includes/class-wc-product-variable.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/includes/class-wc-product-variable.php b/includes/class-wc-product-variable.php index c98748e02a0..8029d060c3b 100644 --- a/includes/class-wc-product-variable.php +++ b/includes/class-wc-product-variable.php @@ -138,14 +138,15 @@ class WC_Product_Variable extends WC_Product { return apply_filters( 'woocommerce_variable_empty_price_html', '', $this ); } - $min_price = current( $prices['price'] ); - $max_regular_price = end( $prices['regular_price'] ); - $max_price = end( $prices['price'] ); + $min_price = current( $prices['price'] ); + $max_price = end( $prices['price'] ); + $min_reg_price = current( $prices['regular_price'] ); + $max_reg_price = end( $prices['regular_price'] ); if ( $min_price !== $max_price ) { $price = apply_filters( 'woocommerce_variable_price_html', wc_format_price_range( $min_price, $max_price ) . $this->get_price_suffix(), $this ); - } elseif ( $this->is_on_sale() ) { - $price = apply_filters( 'woocommerce_variable_price_html', wc_format_sale_price( wc_price( $max_regular_price ), wc_price( $min_price ) ) . $this->get_price_suffix(), $this ); + } elseif ( $this->is_on_sale() && $min_reg_price === $max_reg_price ) { + $price = apply_filters( 'woocommerce_variable_price_html', wc_format_sale_price( wc_price( $max_reg_price ), wc_price( $min_price ) ) . $this->get_price_suffix(), $this ); } else { $price = apply_filters( 'woocommerce_variable_price_html', wc_price( $min_price ) . $this->get_price_suffix(), $this ); } From 288026ca9f0177d879f42faf06a0ee7882778388 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 6 Apr 2017 13:46:07 +0100 Subject: [PATCH 291/525] Background Emailer instead of just CRON --- includes/class-wc-background-emailer.php | 79 ++++++++++++++++++++++++ includes/class-wc-emails.php | 28 ++++++--- woocommerce.php | 2 +- 3 files changed, 99 insertions(+), 10 deletions(-) create mode 100644 includes/class-wc-background-emailer.php diff --git a/includes/class-wc-background-emailer.php b/includes/class-wc-background-emailer.php new file mode 100644 index 00000000000..47a0d201cf5 --- /dev/null +++ b/includes/class-wc-background-emailer.php @@ -0,0 +1,79 @@ +cron_hook_identifier ) ) { + wp_schedule_event( time() + 10, $this->cron_interval_identifier, $this->cron_hook_identifier ); + } + } + + /** + * Task + * + * Override this method to perform any actions required on each + * queue item. Return the modified item for further processing + * in the next pass through. Or, return false to remove the + * item from the queue. + * + * @param string $callback Update callback function + * @return mixed + */ + protected function task( $callback ) { + if ( isset( $callback['filter'], $callback['args'] ) ) { + WC_Emails::send_queued_transactional_email( $callback['filter'], $callback['args'] ); + } + return false; + } + + /** + * Save and run queue. + */ + public function dispatch_queue() { + if ( ! empty( $this->data ) ) { + $this->save()->dispatch(); + } + } +} diff --git a/includes/class-wc-emails.php b/includes/class-wc-emails.php index 294533233fd..abc43ea7dad 100644 --- a/includes/class-wc-emails.php +++ b/includes/class-wc-emails.php @@ -23,6 +23,11 @@ class WC_Emails { /** @var WC_Emails The single instance of the class */ protected static $_instance = null; + /** + * Background emailer class. + */ + protected static $background_emailer; + /** * Main WC_Emails Instance. * @@ -83,21 +88,26 @@ class WC_Emails { 'woocommerce_created_customer', ) ); - foreach ( $email_actions as $action ) { - add_action( $action, array( __CLASS__, 'queue_transactional_email' ), 10, 10 ); + if ( apply_filters( 'woocommerce_defer_transactional_emails', true ) ) { + self::$background_emailer = new WC_Background_Emailer(); + + foreach ( $email_actions as $action ) { + add_action( $action, array( __CLASS__, 'queue_transactional_email' ), 10, 10 ); + } + } else { + foreach ( $email_actions as $action ) { + add_action( $action, array( __CLASS__, 'send_transactional_email' ), 10, 10 ); + } } } /** - * Queue transactional email via cron so it's not sent in current request. + * Queue transactional email so it's not sent in current request. */ public static function queue_transactional_email() { - $filter = current_filter(); - $args = func_get_args(); - - wp_schedule_single_event( time() + 5, 'woocommerce_send_queued_transactional_email', array( - 'filter' => $filter, - 'args' => $args, + self::$background_emailer->push_to_queue( array( + 'filter' => current_filter(), + 'args' => func_get_args(), ) ); } diff --git a/woocommerce.php b/woocommerce.php index da8a08edd4a..9601405ca0f 100644 --- a/woocommerce.php +++ b/woocommerce.php @@ -181,7 +181,6 @@ final class WooCommerce { add_action( 'init', array( $this, 'init' ), 0 ); add_action( 'init', array( 'WC_Shortcodes', 'init' ) ); add_action( 'init', array( 'WC_Emails', 'init_transactional_emails' ) ); - add_action( 'woocommerce_send_queued_transactional_email', array( 'WC_Emails', 'send_queued_transactional_email' ), 10, 2 ); add_action( 'init', array( $this, 'wpdb_table_fix' ), 0 ); add_action( 'switch_blog', array( $this, 'wpdb_table_fix' ), 0 ); } @@ -319,6 +318,7 @@ final class WooCommerce { include_once( WC_ABSPATH . 'includes/class-wc-https.php' ); // https Helper include_once( WC_ABSPATH . 'includes/class-wc-deprecated-action-hooks.php' ); include_once( WC_ABSPATH . 'includes/class-wc-deprecated-filter-hooks.php' ); + include_once( WC_ABSPATH . 'includes/class-wc-background-emailer.php' ); /** * Data stores - used to store and retrieve CRUD object data from the database. From 822412d03cf8bbd27bc99182c10603900c892cc2 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 6 Apr 2017 14:11:00 +0100 Subject: [PATCH 292/525] Make sure we have a prefix for strstr Closes #14032 --- includes/data-stores/class-wc-customer-data-store.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/includes/data-stores/class-wc-customer-data-store.php b/includes/data-stores/class-wc-customer-data-store.php index eaa6f7d6b35..8d2208eb360 100644 --- a/includes/data-stores/class-wc-customer-data-store.php +++ b/includes/data-stores/class-wc-customer-data-store.php @@ -75,11 +75,14 @@ class WC_Customer_Data_Store extends WC_Data_Store_WP implements WC_Customer_Dat */ protected function exclude_internal_meta_keys( $meta ) { global $wpdb; + + $table_prefix = $wpdb->prefix ? $wpdb->prefix : 'wp_'; + return ! in_array( $meta->meta_key, $this->internal_meta_keys ) && 0 !== strpos( $meta->meta_key, 'closedpostboxes_' ) && 0 !== strpos( $meta->meta_key, 'metaboxhidden_' ) && 0 !== strpos( $meta->meta_key, 'manageedit-' ) - && ! strstr( $meta->meta_key, $wpdb->prefix ) + && ! strstr( $meta->meta_key, $table_prefix ) && 0 !== stripos( $meta->meta_key, 'wp_' ); } From 261ae0ebda0a3cc79ee6ff711544b7a0d21081ba Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 6 Apr 2017 14:18:17 +0100 Subject: [PATCH 293/525] Only call sync if callable --- includes/legacy/abstract-wc-legacy-product.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/includes/legacy/abstract-wc-legacy-product.php b/includes/legacy/abstract-wc-legacy-product.php index 2b0939407ae..9582a9986e7 100644 --- a/includes/legacy/abstract-wc-legacy-product.php +++ b/includes/legacy/abstract-wc-legacy-product.php @@ -535,10 +535,12 @@ abstract class WC_Abstract_Legacy_Product extends WC_Data { } // Sync prices with children - self::sync( $product_id ); + if ( is_callable( array( __CLASS__, 'sync' ) ) ) { + self::sync( $product_id ); - // Re-load prices - $this->read_product_data(); + // Re-load prices + $this->read_product_data(); + } } /** From 8c053b891e0a062ef9015fe2ec61c73d9a09b8ab Mon Sep 17 00:00:00 2001 From: dixitadusara Date: Thu, 6 Apr 2017 19:12:02 +0530 Subject: [PATCH 294/525] fixes issue-14038 --- templates/single-product/up-sells.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/single-product/up-sells.php b/templates/single-product/up-sells.php index 0558bd6fecc..75ca4e40c22 100644 --- a/templates/single-product/up-sells.php +++ b/templates/single-product/up-sells.php @@ -13,7 +13,7 @@ * @see https://docs.woocommerce.com/document/template-structure/ * @author WooThemes * @package WooCommerce/Templates - * @version 1.6.4 + * @version 3.0.0 */ if ( ! defined( 'ABSPATH' ) ) { From f2fa4f127d291a67c3960ff01701ecac5a13bc1a Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 6 Apr 2017 11:07:48 -0300 Subject: [PATCH 295/525] Added context to string in result-count.php to make GlotPress catch Missing this string on GlotPress, since the first part is equal from the previous translatable string. --- templates/loop/result-count.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/loop/result-count.php b/templates/loop/result-count.php index 81cd8678d71..c1b6c35af15 100644 --- a/templates/loop/result-count.php +++ b/templates/loop/result-count.php @@ -15,7 +15,7 @@ * @see https://docs.woocommerce.com/document/template-structure/ * @author WooThemes * @package WooCommerce/Templates - * @version 2.0.0 + * @version 3.0.0 */ if ( ! defined( 'ABSPATH' ) ) { @@ -40,7 +40,7 @@ if ( ! woocommerce_products_will_display() ) printf( _n( 'Showing the single result', 'Showing all %d results', $total, 'woocommerce' ), $total ); } else { /* translators: 1: first result 2: last result 3: total results */ - printf( _n( 'Showing the single result', 'Showing %1$d–%2$d of %3$d results', $total, 'woocommerce' ), $first, $last, $total ); + printf( _nx( 'Showing the single result', 'Showing %1$d–%2$d of %3$d results', $total, 'with first and last result', 'woocommerce' ), $first, $last, $total ); } ?>

    From e18d9741a443db0f1140bcd765c2a766d5a9f54a Mon Sep 17 00:00:00 2001 From: Manos Psychogyiopoulos Date: Thu, 6 Apr 2017 17:42:51 +0300 Subject: [PATCH 296/525] Fix non-existing stdClass props --- includes/class-wc-form-handler.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/includes/class-wc-form-handler.php b/includes/class-wc-form-handler.php index ce7323896cf..bcb7d0f2c94 100644 --- a/includes/class-wc-form-handler.php +++ b/includes/class-wc-form-handler.php @@ -586,10 +586,10 @@ class WC_Form_Handler { $cart_item_data = apply_filters( 'woocommerce_order_again_cart_item_data', array(), $item, $order ); foreach ( $item->get_meta_data() as $meta ) { - if ( taxonomy_is_product_attribute( $meta->meta_key ) ) { - $variations[ $meta->meta_key ] = $meta->meta_value; - } elseif ( meta_is_product_attribute( $meta->meta_key, $meta->meta_value, $product_id ) ) { - $variations[ $meta->meta_key ] = $meta->meta_value; + if ( taxonomy_is_product_attribute( $meta->key ) ) { + $variations[ $meta->key ] = $meta->value; + } elseif ( meta_is_product_attribute( $meta->key, $meta->value, $product_id ) ) { + $variations[ $meta->key ] = $meta->value; } } From 82cdf65c04a27669fe1579a666945a16ea393f98 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 6 Apr 2017 15:56:55 +0100 Subject: [PATCH 297/525] if product type field is not posted, we should maintain existing type, not change to simple --- includes/admin/meta-boxes/class-wc-meta-box-product-data.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/admin/meta-boxes/class-wc-meta-box-product-data.php b/includes/admin/meta-boxes/class-wc-meta-box-product-data.php index c8684d6215c..e0d312dcf84 100644 --- a/includes/admin/meta-boxes/class-wc-meta-box-product-data.php +++ b/includes/admin/meta-boxes/class-wc-meta-box-product-data.php @@ -290,8 +290,8 @@ class WC_Meta_Box_Product_Data { */ public static function save( $post_id, $post ) { // Process product type first so we have the correct class to run setters. - $product_type = empty( $_POST['product-type'] ) ? 'simple' : sanitize_title( stripslashes( $_POST['product-type'] ) ); - $classname = WC_Product_Factory::get_product_classname( $post_id, $product_type ); + $product_type = empty( $_POST['product-type'] ) ? WC_Product_Factory::get_product_type( $post_id ) : sanitize_title( stripslashes( $_POST['product-type'] ) ); + $classname = WC_Product_Factory::get_product_classname( $post_id, $product_type ? $product_type : 'simple' ); $product = new $classname( $post_id ); $attributes = self::prepare_attributes(); $errors = $product->set_props( array( From 567a551d839ab55887745aff802d878551d88e1a Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 6 Apr 2017 13:00:02 -0300 Subject: [PATCH 298/525] Fixed shortcode render for variations and backwards compatibility Fixes #13949 --- includes/class-wc-product-variable.php | 2 +- templates/single-product/add-to-cart/variation.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/class-wc-product-variable.php b/includes/class-wc-product-variable.php index 8029d060c3b..361c1b117d7 100644 --- a/includes/class-wc-product-variable.php +++ b/includes/class-wc-product-variable.php @@ -294,7 +294,7 @@ class WC_Product_Variable extends WC_Product { 'is_downloadable' => $variation->is_downloadable(), 'is_virtual' => $variation->is_virtual(), 'is_sold_individually' => $variation->is_sold_individually() ? 'yes' : 'no', - 'variation_description' => $variation->get_description(), + 'variation_description' => wc_format_content( $variation->get_description() ), ) ), $this, $variation ); } diff --git a/templates/single-product/add-to-cart/variation.php b/templates/single-product/add-to-cart/variation.php index d0c3f4e159a..dd27206ed0a 100644 --- a/templates/single-product/add-to-cart/variation.php +++ b/templates/single-product/add-to-cart/variation.php @@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) { ?>