Changeset 2864583
- Timestamp:
- 02/13/2023 04:55:03 PM (3 years ago)
- Location:
- faire-for-woocommerce
- Files:
-
- 2 added
- 13 edited
- 1 copied
-
tags/1.3.6 (copied) (copied from faire-for-woocommerce/tags/1.3.4)
-
tags/1.3.6/assets/scripts/admin_settings.js (modified) (2 diffs)
-
tags/1.3.6/dist/scripts/admin_settings.js (modified) (1 diff)
-
tags/1.3.6/dist/scripts/admin_settings.js.map (modified) (1 diff)
-
tags/1.3.6/faire-for-woocommerce.php (modified) (2 diffs)
-
tags/1.3.6/readme.txt (modified) (2 diffs)
-
tags/1.3.6/src/admin/class-assets.php (modified) (1 diff)
-
tags/1.3.6/src/admin/class-settings.php (modified) (8 diffs)
-
tags/1.3.6/src/admin/class-wc-integration-faire.php (modified) (3 diffs)
-
tags/1.3.6/src/class-country.php (added)
-
tags/1.3.6/src/class-faire.php (modified) (2 diffs)
-
tags/1.3.6/src/sync/class-sync-product-linking.php (modified) (6 diffs)
-
tags/1.3.6/src/sync/class-sync-product-unlinking.php (added)
-
tags/1.3.6/src/sync/class-sync-product.php (modified) (5 diffs)
-
tags/1.3.6/src/woocommerce/class-order.php (modified) (2 diffs)
-
trunk/readme.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
faire-for-woocommerce/tags/1.3.6/assets/scripts/admin_settings.js
r2838583 r2864583 297 297 .always( 298 298 () => productTaxonomyManualSyncButton.prop('disabled', false) 299 ); 300 }); 301 } 302 303 /** 304 * Manages manual unlinking of products. 305 */ 306 const manageProductUnlinkingManualSync = () => { 307 const { 308 ajaxUrl, 309 nonceManualSyncProductUnlinking, 310 productUnlinkingManualSyncMsg, 311 productUnlinkingManualSyncSuccessMsg, 312 productUnlinkingManualSyncFailMsg 313 } = faireAdminSettings; 314 315 const productUnlinkingManualSyncButton = $( 316 `#${prefix}${plugin}_product_unlinking_manual_sync` 317 ); 318 319 // Handles click on product unlinking button. 320 productUnlinkingManualSyncButton.on('click', function () { 321 // Add an element to display request results messages. 322 const productUnlinkingSyncMsgElem = addMsgElement( 323 $(this), 324 'faire_product_unlinking_sync_manual_msg' 325 ); 326 327 // Start product unlinking. 328 productUnlinkingSyncMsgElem.html(productUnlinkingManualSyncMsg); 329 productUnlinkingManualSyncButton.prop('disabled', true); 330 331 $.post( 332 ajaxUrl, 333 { 334 action: 'faire_product_unlinking_manual_sync', 335 nonce: nonceManualSyncProductUnlinking, 336 }, 337 response => { 338 if ( response.data !== undefined && response.data.status === 'success' ) { 339 340 if ( response.data.info !== undefined && response.data.info.length > 0 ) { 341 productUnlinkingSyncMsgElem.html(response.data.info); 342 } else { 343 productUnlinkingSyncMsgElem.html(productUnlinkingManualSyncSuccessMsg); 344 } 345 } else { 346 productUnlinkingSyncMsgElem.html(productUnlinkingManualSyncFailMsg); 347 } 348 } 349 ) 350 .fail( 351 response => { 352 if (response.responseText !== undefined) { 353 productUnlinkingSyncMsgElem.html(productUnlinkingManualSyncFailMsg); 354 // eslint-disable-next-line no-console 355 console.error(response.responseText); 356 } 357 } 358 ) 359 .always( 360 () => productUnlinkingManualSyncButton.prop('disabled', false) 299 361 ); 300 362 }); … … 629 691 // Inits manage products manual sync. 630 692 manageProductsManualSync(); 693 // Inits manage products unlinking manual sync. 694 manageProductUnlinkingManualSync(); 631 695 // Inits manage products taxonomy manual sync. 632 696 manageProductTaxonomyManualSync(); -
faire-for-woocommerce/tags/1.3.6/dist/scripts/admin_settings.js
r2838583 r2864583 1 !function(){"use strict";var n,t,a,c,o;n=window.jQuery,t="woocommerce_",a="faire_wc_integration",c=function(t,a){var c=n("#".concat(a));return c.length||(c=t.after('<p id="'.concat(a,'"></p>')).next("#".concat(a))),c},o=function(){var c=faireAdminSettings.productsManualSyncLinkExistingMsg,o=n("#".concat(t).concat(a,"_product_sync_mode")),i=n("#".concat(t).concat(a,"_initial_setup_products_exist")),e=function(){n("#".concat(t).concat(a,"_product_sync_schedule_num, #").concat(t).concat(a,"_product_sync_schedule_time")).closest("tr").toggle("sync_scheduled"===o.val())};o.on("change",(function(n){if(!function(){if("do_not_sync"!==o.val()&&1===parseInt(i.val())){if(!confirm(c))return!1;i.val("")}return!0}())return o.val("do_not_sync").trigger("change"),n.preventDefault(),!1;e()})),e()},n(document).ready((function(){var i,e,r,s,d,l,u,_,p,f,m,g,y,v,S,h,b, A;-1!==window.location.href.indexOf("section=".concat(a))&&(o(),i=n(".".concat(t).concat(a,"_product_pricing_policy")),e=n(".".concat(t).concat(a,"_product_pricing_policy:checked")),r=n("#".concat(t).concat(a,"_product_wholesale_multiplier")),s=n("#".concat(t).concat(a,"_product_wholesale_percentage")),d=function(t){r.closest("tr").toggle("wholesale_multiplier"===n(t).val()),s.closest("tr").toggle("wholesale_percentage"===n(t).val())},i.on("click",(function(){d(this)})),d(e),l=n("#".concat(t).concat(a,"_product_wholesale_map")),u=function(){n("#".concat(t).concat(a,"_product_wholesale_map_field")).closest("tr").toggle(l.is(":checked"))},l.on("click",(function(){u()})),u(),_=faireAdminSettings.ajaxUrl,p=faireAdminSettings.nonceManualSyncProducts,f=faireAdminSettings.productsManualSyncMsg,m=faireAdminSettings.productsManualSyncLinkExistingMsg,g=n("#".concat(t).concat(a,"_product_sync_manual")),y=n("#".concat(t).concat(a,"_initial_setup_products_exist")),g.on("click",(function(){if(1===parseInt(y.val())){if(!confirm(m))return!1;y.val("")}var t=c(n(this),"products_manual_sync_msg");t.html(f),g.prop("disabled",!0),n.post(_,{action:"faire_products_manual_sync",nonce:p},(function(n){t.html(""),void 0!==n.data&&Array.isArray(n.data)&&t.html(n.data.join("<br>"))})).fail((function(n){return t.val(void 0===n.data?"":n.data)})).always((function(){return g.prop("disabled",!1)}))})),function(){var o=faireAdminSettings.ajaxUrl,i=faireAdminSettings.nonceManualSyncProductTaxonomy,e=faireAdminSettings.productTaxonomyManualSyncMsg,r=faireAdminSettings.productTaxonomyManualSyncSuccessMsg,s=faireAdminSettings.productTaxonomyManualSyncFailMsg,d=n("#".concat(t).concat(a,"_product_taxonomy_sync_manual"));d.on("click",(function(){var t=c(n(this),"faire_product_taxonomy_manual_sync_msg");t.html(e),d.prop("disabled",!0),n.post(o,{action:"faire_product_taxonomy_manual_sync",nonce:i},(function(n){void 0!==n.data&&"success"===n.data.status?t.html(r):t.html(s)})).fail((function(n){void 0!==n.responseText&&(t.html(s),console.error(n.responseText))})).always((function(){return d.prop("disabled",!1)}))}))}(),function(){var o=faireAdminSettings.ajaxUrl,i=faireAdminSettings.nonceManualSyncProductLinking,e=faireAdminSettings.productLinkingManualSyncMsg,r=faireAdminSettings.productLinkingManualSyncFailed,s=n("#".concat(t).concat(a,"_product_linking_sync_manual")),d=n("#".concat(t).concat(a,"_product_linking_create_products_csv")),l=n("#".concat(t).concat(a,"_product_linking_create_variations_csv")),u=n("#".concat(t).concat(a,"_initial_setup_products_exist"));s.on("click",(function(){var _=c(n(this),"product_linking_sync_results"),p=n("#".concat(t).concat(a,"_product_linking_sync_results"));_.html(e),s.prop("disabled",!0),n.post(o,{action:"faire_product_linking_manual_sync",nonce:i},(function(n){_.html("");var t=void 0===n.data||void 0===n.data.message?"":n.data.message;p.val(t),void 0!==n.data&&(u.val(""),!0===n.data.products_csv?(d.attr("disabled",!1),d.addClass("button-secondary").removeClass("disabled")):(d.attr("disabled",!0),d.removeClass("button-secondary").addClass("disabled")),!0===n.data.variations_csv?(l.attr("disabled",!1),l.addClass("button-secondary").removeClass("disabled")):(l.attr("disabled",!0),l.removeClass("button-secondary").addClass("disabled")))})).fail((function(n){void 0===n.responseJSON.data?(_.html(r),console.error(n)):_.html(n.responseJSON.data)})).always((function(){return s.prop("disabled",!1)}))}))}(),n("#".concat(t).concat(a,"_product_linking_create_products_csv")).on("click",(function(){window.location=window.location+"&wc_faire_link_products_csv=yes"})),n("#".concat(t).concat(a,"_product_linking_create_variations_csv")).on("click",(function(){window.location=window.location+"&wc_faire_link_variations_csv=yes"})),function(){var o=faireAdminSettings.ajaxUrl,i=faireAdminSettings.nonceManualSyncBrand,e=faireAdminSettings.brandManualSyncMsg,r=faireAdminSettings.brandManualSyncSuccessMsg,s=faireAdminSettings.brandManualSyncFailMsg,d=n("#".concat(t).concat(a,"_brand_sync_manual")),l=n("#".concat(t).concat(a,"_brand_locale")),u=n("#".concat(t).concat(a,"_brand_currency"));d.on("click",(function(){var t=c(n(this),"faire_brand_manual_sync_msg");t.html(e),d.prop("disabled",!0),n.post(o,{action:"faire_brand_manual_sync",nonce:i},(function(n){void 0!==n.data&&"success"===n.data.status?(t.html(r),void 0!==n.data.brand.locale&&l.val(n.data.brand.locale),void 0!==n.data.brand.currency&&u.val(n.data.brand.currency)):t.html(s)})).fail((function(n){void 0!==n.responseText&&(t.html(s),console.error(n.responseText))})).always((function(){return d.prop("disabled",!1)}))}))}(),function(){var o=faireAdminSettings.ajaxUrl,i=faireAdminSettings.nonceManualSyncOrders,e=faireAdminSettings.ordersManualSyncMsg,r=faireAdminSettings.ordersManualSyncFailed,s=n("#".concat(t).concat(a,"_order_sync_manual"));s.on("click",(function(){var d=c(n(this),"order_sync_results"),l=n("#".concat(t).concat(a,"_order_sync_results"));d.html(e),s.prop("disabled",!0),n.post(o,{action:"faire_orders_manual_sync",nonce:i},(function(n){d.html(""),l.val(void 0===n.data?"":n.data)})).fail((function(n){void 0===n.responseJSON.data?(d.html(r),console.error(n)):d.html(n.responseJSON.data)})).always((function(){return s.prop("disabled",!1)}))}))}(),v=n("#".concat(t).concat(a,"_order_sync_mode")),S=function(){var c="sync_scheduled"===v.val();n("#".concat(t).concat(a,"_order_sync_schedule_num")).closest("tr").toggle(c),n("#".concat(t).concat(a,"_order_sync_schedule_time")).closest("tr").toggle(c)},v.on("change",(function(){S()})),S(),function(){var o=faireAdminSettings.ajaxUrl,i=faireAdminSettings.nonceApiTestConnection,e=faireAdminSettings.testingApiConnectionMsg,r=faireAdminSettings.apiKeyEmptyError,s=n("#".concat(t).concat(a,"_test_api_connection"));s.on("click",(function(){if(!s.prop("disabled")){var d=c(n(this),"connection_test_msg");if(!n(n("#".concat(t).concat(a,"_api_key"))).val().trim())return d.html(r),void s.prop("disabled",!1);d.html(e),s.prop("disabled",!0),n.post(o,{action:"faire_test_api_connection",nonce:i},(function(n){return d.html(n.data)})).fail((function(n){return d.html(n.responseJSON.data)})).always((function(){return s.prop("disabled",!1)}))}}))}(),h=n("#".concat(t).concat(a,"_initial_setup")),b="".concat(t).concat(a,"_initial_setup_trigger"),A=n("#mainform button[type=submit]"),h.on("click",(function(){n("<input>").attr({type:"hidden",name:b,value:"yes"}).insertAfter(A),A.trigger("click")})))}))}();1 !function(){"use strict";var n,t,a,c,o;n=window.jQuery,t="woocommerce_",a="faire_wc_integration",c=function(t,a){var c=n("#".concat(a));return c.length||(c=t.after('<p id="'.concat(a,'"></p>')).next("#".concat(a))),c},o=function(){var c=faireAdminSettings.productsManualSyncLinkExistingMsg,o=n("#".concat(t).concat(a,"_product_sync_mode")),i=n("#".concat(t).concat(a,"_initial_setup_products_exist")),e=function(){n("#".concat(t).concat(a,"_product_sync_schedule_num, #").concat(t).concat(a,"_product_sync_schedule_time")).closest("tr").toggle("sync_scheduled"===o.val())};o.on("change",(function(n){if(!function(){if("do_not_sync"!==o.val()&&1===parseInt(i.val())){if(!confirm(c))return!1;i.val("")}return!0}())return o.val("do_not_sync").trigger("change"),n.preventDefault(),!1;e()})),e()},n(document).ready((function(){var i,e,r,s,d,l,u,_,p,f,m,g,y,v,S,h,b,k;-1!==window.location.href.indexOf("section=".concat(a))&&(o(),i=n(".".concat(t).concat(a,"_product_pricing_policy")),e=n(".".concat(t).concat(a,"_product_pricing_policy:checked")),r=n("#".concat(t).concat(a,"_product_wholesale_multiplier")),s=n("#".concat(t).concat(a,"_product_wholesale_percentage")),d=function(t){r.closest("tr").toggle("wholesale_multiplier"===n(t).val()),s.closest("tr").toggle("wholesale_percentage"===n(t).val())},i.on("click",(function(){d(this)})),d(e),l=n("#".concat(t).concat(a,"_product_wholesale_map")),u=function(){n("#".concat(t).concat(a,"_product_wholesale_map_field")).closest("tr").toggle(l.is(":checked"))},l.on("click",(function(){u()})),u(),_=faireAdminSettings.ajaxUrl,p=faireAdminSettings.nonceManualSyncProducts,f=faireAdminSettings.productsManualSyncMsg,m=faireAdminSettings.productsManualSyncLinkExistingMsg,g=n("#".concat(t).concat(a,"_product_sync_manual")),y=n("#".concat(t).concat(a,"_initial_setup_products_exist")),g.on("click",(function(){if(1===parseInt(y.val())){if(!confirm(m))return!1;y.val("")}var t=c(n(this),"products_manual_sync_msg");t.html(f),g.prop("disabled",!0),n.post(_,{action:"faire_products_manual_sync",nonce:p},(function(n){t.html(""),void 0!==n.data&&Array.isArray(n.data)&&t.html(n.data.join("<br>"))})).fail((function(n){return t.val(void 0===n.data?"":n.data)})).always((function(){return g.prop("disabled",!1)}))})),function(){var o=faireAdminSettings.ajaxUrl,i=faireAdminSettings.nonceManualSyncProductUnlinking,e=faireAdminSettings.productUnlinkingManualSyncMsg,r=faireAdminSettings.productUnlinkingManualSyncSuccessMsg,s=faireAdminSettings.productUnlinkingManualSyncFailMsg,d=n("#".concat(t).concat(a,"_product_unlinking_manual_sync"));d.on("click",(function(){var t=c(n(this),"faire_product_unlinking_sync_manual_msg");t.html(e),d.prop("disabled",!0),n.post(o,{action:"faire_product_unlinking_manual_sync",nonce:i},(function(n){void 0!==n.data&&"success"===n.data.status?void 0!==n.data.info&&n.data.info.length>0?t.html(n.data.info):t.html(r):t.html(s)})).fail((function(n){void 0!==n.responseText&&(t.html(s),console.error(n.responseText))})).always((function(){return d.prop("disabled",!1)}))}))}(),function(){var o=faireAdminSettings.ajaxUrl,i=faireAdminSettings.nonceManualSyncProductTaxonomy,e=faireAdminSettings.productTaxonomyManualSyncMsg,r=faireAdminSettings.productTaxonomyManualSyncSuccessMsg,s=faireAdminSettings.productTaxonomyManualSyncFailMsg,d=n("#".concat(t).concat(a,"_product_taxonomy_sync_manual"));d.on("click",(function(){var t=c(n(this),"faire_product_taxonomy_manual_sync_msg");t.html(e),d.prop("disabled",!0),n.post(o,{action:"faire_product_taxonomy_manual_sync",nonce:i},(function(n){void 0!==n.data&&"success"===n.data.status?t.html(r):t.html(s)})).fail((function(n){void 0!==n.responseText&&(t.html(s),console.error(n.responseText))})).always((function(){return d.prop("disabled",!1)}))}))}(),function(){var o=faireAdminSettings.ajaxUrl,i=faireAdminSettings.nonceManualSyncProductLinking,e=faireAdminSettings.productLinkingManualSyncMsg,r=faireAdminSettings.productLinkingManualSyncFailed,s=n("#".concat(t).concat(a,"_product_linking_sync_manual")),d=n("#".concat(t).concat(a,"_product_linking_create_products_csv")),l=n("#".concat(t).concat(a,"_product_linking_create_variations_csv")),u=n("#".concat(t).concat(a,"_initial_setup_products_exist"));s.on("click",(function(){var _=c(n(this),"product_linking_sync_results"),p=n("#".concat(t).concat(a,"_product_linking_sync_results"));_.html(e),s.prop("disabled",!0),n.post(o,{action:"faire_product_linking_manual_sync",nonce:i},(function(n){_.html("");var t=void 0===n.data||void 0===n.data.message?"":n.data.message;p.val(t),void 0!==n.data&&(u.val(""),!0===n.data.products_csv?(d.attr("disabled",!1),d.addClass("button-secondary").removeClass("disabled")):(d.attr("disabled",!0),d.removeClass("button-secondary").addClass("disabled")),!0===n.data.variations_csv?(l.attr("disabled",!1),l.addClass("button-secondary").removeClass("disabled")):(l.attr("disabled",!0),l.removeClass("button-secondary").addClass("disabled")))})).fail((function(n){void 0===n.responseJSON.data?(_.html(r),console.error(n)):_.html(n.responseJSON.data)})).always((function(){return s.prop("disabled",!1)}))}))}(),n("#".concat(t).concat(a,"_product_linking_create_products_csv")).on("click",(function(){window.location=window.location+"&wc_faire_link_products_csv=yes"})),n("#".concat(t).concat(a,"_product_linking_create_variations_csv")).on("click",(function(){window.location=window.location+"&wc_faire_link_variations_csv=yes"})),function(){var o=faireAdminSettings.ajaxUrl,i=faireAdminSettings.nonceManualSyncBrand,e=faireAdminSettings.brandManualSyncMsg,r=faireAdminSettings.brandManualSyncSuccessMsg,s=faireAdminSettings.brandManualSyncFailMsg,d=n("#".concat(t).concat(a,"_brand_sync_manual")),l=n("#".concat(t).concat(a,"_brand_locale")),u=n("#".concat(t).concat(a,"_brand_currency"));d.on("click",(function(){var t=c(n(this),"faire_brand_manual_sync_msg");t.html(e),d.prop("disabled",!0),n.post(o,{action:"faire_brand_manual_sync",nonce:i},(function(n){void 0!==n.data&&"success"===n.data.status?(t.html(r),void 0!==n.data.brand.locale&&l.val(n.data.brand.locale),void 0!==n.data.brand.currency&&u.val(n.data.brand.currency)):t.html(s)})).fail((function(n){void 0!==n.responseText&&(t.html(s),console.error(n.responseText))})).always((function(){return d.prop("disabled",!1)}))}))}(),function(){var o=faireAdminSettings.ajaxUrl,i=faireAdminSettings.nonceManualSyncOrders,e=faireAdminSettings.ordersManualSyncMsg,r=faireAdminSettings.ordersManualSyncFailed,s=n("#".concat(t).concat(a,"_order_sync_manual"));s.on("click",(function(){var d=c(n(this),"order_sync_results"),l=n("#".concat(t).concat(a,"_order_sync_results"));d.html(e),s.prop("disabled",!0),n.post(o,{action:"faire_orders_manual_sync",nonce:i},(function(n){d.html(""),l.val(void 0===n.data?"":n.data)})).fail((function(n){void 0===n.responseJSON.data?(d.html(r),console.error(n)):d.html(n.responseJSON.data)})).always((function(){return s.prop("disabled",!1)}))}))}(),v=n("#".concat(t).concat(a,"_order_sync_mode")),S=function(){var c="sync_scheduled"===v.val();n("#".concat(t).concat(a,"_order_sync_schedule_num")).closest("tr").toggle(c),n("#".concat(t).concat(a,"_order_sync_schedule_time")).closest("tr").toggle(c)},v.on("change",(function(){S()})),S(),function(){var o=faireAdminSettings.ajaxUrl,i=faireAdminSettings.nonceApiTestConnection,e=faireAdminSettings.testingApiConnectionMsg,r=faireAdminSettings.apiKeyEmptyError,s=n("#".concat(t).concat(a,"_test_api_connection"));s.on("click",(function(){if(!s.prop("disabled")){var d=c(n(this),"connection_test_msg");if(!n(n("#".concat(t).concat(a,"_api_key"))).val().trim())return d.html(r),void s.prop("disabled",!1);d.html(e),s.prop("disabled",!0),n.post(o,{action:"faire_test_api_connection",nonce:i},(function(n){return d.html(n.data)})).fail((function(n){return d.html(n.responseJSON.data)})).always((function(){return s.prop("disabled",!1)}))}}))}(),h=n("#".concat(t).concat(a,"_initial_setup")),b="".concat(t).concat(a,"_initial_setup_trigger"),k=n("#mainform button[type=submit]"),h.on("click",(function(){n("<input>").attr({type:"hidden",name:b,value:"yes"}).insertAfter(k),k.trigger("click")})))}))}(); 2 2 //# sourceMappingURL=admin_settings.js.map -
faire-for-woocommerce/tags/1.3.6/dist/scripts/admin_settings.js.map
r2838583 r2864583 1 {"mappings":"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","sources":["assets/scripts/admin_settings.js"],"sourcesContent":["/* global faireAdminSettings */\n\n'use strict';\n\n(function ($) {\n\tconst prefix = 'woocommerce_';\n\tconst plugin = 'faire_wc_integration';\n\n\t/**\n\t * Adds a DOM element with an ID, after one given.\n\t *\n\t * @param {Object} baseElement DOM Element after which the new element will be added.\n\t * @param {string} elementId ID for the new DOM element.\n\t *\n\t * @return {Object} New DOM element.\n\t */\n\tconst addMsgElement = (baseElement, elementId) => {\n\t\tlet newElement = $(`#${elementId}`);\n\t\tif (!newElement.length) {\n\t\t\tnewElement = baseElement\n\t\t\t\t.after(`<p id=\"${elementId}\"></p>`)\n\t\t\t\t.next(`#${elementId}`);\n\t\t}\n\n\t\treturn newElement;\n\t};\n\n\t/**\n\t * Manages product sync mode fields.\n\t */\n\tconst manageProductSyncMode = () => {\n\t\tconst { productsManualSyncLinkExistingMsg } =\n\t\t\tfaireAdminSettings;\n\n\t\tconst productSyncMode = $(`#${prefix}${plugin}_product_sync_mode`);\n\n\t\tconst existingProductsFoundOnIntialSetup = $(\n\t\t\t`#${prefix}${plugin}_initial_setup_products_exist`\n\t\t);\n\n\t\tconst allowSelectCheckProductLinkingWarning = () => {\n\t\t\tif ( productSyncMode.val() !== 'do_not_sync' ) {\n\t\t\t\t// Maybe display product linking warning \n\t\t\t\tif ( parseInt(existingProductsFoundOnIntialSetup.val()) === 1 ) {\n\t\t\t\t\tif ( ! confirm( productsManualSyncLinkExistingMsg ) ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\texistingProductsFoundOnIntialSetup.val(''); // turn off flag if user continued anyway\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\n\t\t// Set visibility of product sync schedule fields.\n\t\tconst setSyncScheduleFieldsVisibility = () => {\n\t\t\t$(\n\t\t\t\t`#${prefix}${plugin}_product_sync_schedule_num, #${prefix}${plugin}_product_sync_schedule_time`\n\t\t\t)\n\t\t\t\t.closest('tr')\n\t\t\t\t.toggle(productSyncMode.val() === 'sync_scheduled');\n\t\t};\n\n\t\t// Handle changes to product sync mode select field.\n\t\tproductSyncMode.on('change', function (e) {\n\t\t\tif ( ! allowSelectCheckProductLinkingWarning() ) {\n\t\t\t\tproductSyncMode.val( 'do_not_sync' ).trigger('change');\n\t\t\t\te.preventDefault();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tsetSyncScheduleFieldsVisibility();\n\t\t});\n\n\t\tsetSyncScheduleFieldsVisibility();\n\t};\n\n\tconst manageProductPricingPolicy = () => {\n\t\tconst productPricePolicy = $(`.${prefix}${plugin}_product_pricing_policy`);\n\t\tconst productPricePolicyChecked = $(`.${prefix}${plugin}_product_pricing_policy:checked`);\n\t\tconst productWholeSaleMultiplier = $(`#${prefix}${plugin}_product_wholesale_multiplier`);\n\t\tconst productWholeSalePercentage = $(`#${prefix}${plugin}_product_wholesale_percentage`);\n\n\t\tconst setProductWholesaleFieldsVisibility = (target) => {\n\t\t\tproductWholeSaleMultiplier\n\t\t\t\t.closest('tr')\n\t\t\t\t.toggle($(target).val() === 'wholesale_multiplier');\n\n\t\t\tproductWholeSalePercentage\n\t\t\t\t.closest('tr')\n\t\t\t\t.toggle($(target).val() === 'wholesale_percentage');\n\t\t}\n\n\t\t// Handle click on product policy radio buttons.\n\t\tproductPricePolicy.on('click', function () {\n\t\t\tsetProductWholesaleFieldsVisibility(this);\n\t\t});\n\n\t\tsetProductWholesaleFieldsVisibility(productPricePolicyChecked);\n\t}\n\n\t/**\n\t * Manages product wholesale mapping.\n\t */\n\tconst manageProductWholesaleMapField = () => {\n\t\tconst productWholesaleMapped = $(\n\t\t\t`#${prefix}${plugin}_product_wholesale_map`\n\t\t);\n\n\t\t// Set visibility of product wholesale map field.\n\t\tconst setProductWholesaleMapFieldVisibility = function () {\n\t\t\t$(`#${prefix}${plugin}_product_wholesale_map_field`)\n\t\t\t\t.closest('tr')\n\t\t\t\t.toggle(productWholesaleMapped.is(':checked'));\n\t\t};\n\n\t\t// Handle click on product wholesale map checkbox.\n\t\tproductWholesaleMapped.on('click', function () {\n\t\t\tsetProductWholesaleMapFieldVisibility();\n\t\t});\n\n\t\tsetProductWholesaleMapFieldVisibility();\n\t};\n\n\t/**\n\t * Implements API connection test functionality.\n\t */\n\tconst testApiConnection = () => {\n\t\tconst {\n\t\t\tajaxUrl,\n\t\t\tnonceApiTestConnection,\n\t\t\ttestingApiConnectionMsg,\n\t\t\tapiKeyEmptyError,\n\t\t} = faireAdminSettings;\n\n\t\tconst testApiConnectionButton = $(\n\t\t\t`#${prefix}${plugin}_test_api_connection`\n\t\t);\n\n\t\t// Handles click on API connection test button.\n\t\ttestApiConnectionButton.on('click', function () {\n\t\t\tif (testApiConnectionButton.prop('disabled')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Add an element to display connection test messages.\n\t\t\tconst connectionTestMsgElem = addMsgElement(\n\t\t\t\t$(this),\n\t\t\t\t'connection_test_msg'\n\t\t\t);\n\n\t\t\t// API key field should not be empty.\n\t\t\tconst apiKeyField = $($(`#${prefix}${plugin}_api_key`));\n\t\t\tif (!apiKeyField.val().trim()) {\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\tconnectionTestMsgElem.html(apiKeyEmptyError);\n\t\t\t\ttestApiConnectionButton.prop('disabled', false);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Start testing the API connection.\n\t\t\tconnectionTestMsgElem.html(testingApiConnectionMsg);\n\t\t\ttestApiConnectionButton.prop('disabled', true);\n\n\t\t\t$.post(\n\t\t\t\tajaxUrl,\n\t\t\t\t{\n\t\t\t\t\taction: 'faire_test_api_connection',\n\t\t\t\t\tnonce: nonceApiTestConnection,\n\t\t\t\t},\n\t\t\t\tresponse => connectionTestMsgElem.html(response.data)\n\t\t\t)\n\t\t\t.fail(\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\tresponse => connectionTestMsgElem.html(response.responseJSON.data)\n\t\t\t)\n\t\t\t.always(\n\t\t\t\t() => testApiConnectionButton.prop('disabled', false)\n\t\t\t);\n\t\t});\n\t};\n\n\t/**\n\t * Manages manual syncing of products.\n\t */\n\tconst manageProductsManualSync = () => {\n\t\tconst { ajaxUrl, nonceManualSyncProducts, productsManualSyncMsg, productsManualSyncLinkExistingMsg } =\n\t\t\tfaireAdminSettings;\n\n\t\tconst productsManualSyncButton = $(\n\t\t\t`#${prefix}${plugin}_product_sync_manual`\n\t\t);\n\n\t\tconst existingProductsFoundOnIntialSetup = $(\n\t\t\t`#${prefix}${plugin}_initial_setup_products_exist`\n\t\t);\n\n\t\t// Handles click on products sync button.\n\t\tproductsManualSyncButton.on('click', function () {\n\n\t\t\t// Maybe display product linking warning \n\t\t\tif ( parseInt(existingProductsFoundOnIntialSetup.val()) === 1 ) {\n\t\t\t\tif ( ! confirm( productsManualSyncLinkExistingMsg ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t} else {\n\t\t\t\t\texistingProductsFoundOnIntialSetup.val(''); // turn off flag if user continued anyway\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add an element to display request results messages.\n\t\t\tconst productsSyncMsgElem = addMsgElement(\n\t\t\t\t$(this),\n\t\t\t\t'products_manual_sync_msg'\n\t\t\t);\n\n\t\t\t// Start syncing products.\n\t\t\tproductsSyncMsgElem.html(productsManualSyncMsg);\n\t\t\tproductsManualSyncButton.prop('disabled', true);\n\n\t\t\t$.post(\n\t\t\t\tajaxUrl,\n\t\t\t\t{\n\t\t\t\t\taction: 'faire_products_manual_sync',\n\t\t\t\t\tnonce: nonceManualSyncProducts,\n\t\t\t\t},\n\t\t\t\tresponse => {\n\t\t\t\t\tproductsSyncMsgElem.html('');\n\t\t\t\t\tif (\n\t\t\t\t\t\tresponse.data !== undefined &&\n\t\t\t\t\t\tArray.isArray(response.data)\n\t\t\t\t\t) {\n\t\t\t\t\t\tproductsSyncMsgElem.html(response.data.join('<br>'));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\t.fail(\n\t\t\t\tresponse => productsSyncMsgElem.val(\n\t\t\t\t\t\tresponse.data === undefined ? '' : response.data\n\t\t\t\t\t)\n\t\t\t)\n\t\t\t.always(\n\t\t\t\t() => productsManualSyncButton.prop('disabled', false)\n\t\t\t);\n\t\t});\n\t};\n\n\t/**\n\t * Manages manual syncing of product taxonomy.\n\t */\n\tconst manageProductTaxonomyManualSync = () => {\n\t\tconst {\n\t\t\tajaxUrl,\n\t\t\tnonceManualSyncProductTaxonomy,\n\t\t\tproductTaxonomyManualSyncMsg,\n\t\t\tproductTaxonomyManualSyncSuccessMsg,\n\t\t\tproductTaxonomyManualSyncFailMsg\n\t\t} = faireAdminSettings;\n\n\t\tconst productTaxonomyManualSyncButton = $(\n\t\t\t`#${prefix}${plugin}_product_taxonomy_sync_manual`\n\t\t);\n\n\t\t// Handles click on taxonomy sync button.\n\t\tproductTaxonomyManualSyncButton.on('click', function () {\n\t\t\t// Add an element to display request results messages.\n\t\t\tconst productTaxonomySyncMsgElem = addMsgElement(\n\t\t\t\t$(this),\n\t\t\t\t'faire_product_taxonomy_manual_sync_msg'\n\t\t\t);\n\n\t\t\t// Start syncing product taxonomy.\n\t\t\tproductTaxonomySyncMsgElem.html(productTaxonomyManualSyncMsg);\n\t\t\tproductTaxonomyManualSyncButton.prop('disabled', true);\n\n\t\t\t$.post(\n\t\t\t\tajaxUrl,\n\t\t\t\t{\n\t\t\t\t\taction: 'faire_product_taxonomy_manual_sync',\n\t\t\t\t\tnonce: nonceManualSyncProductTaxonomy,\n\t\t\t\t},\n\t\t\t\tresponse => {\n\t\t\t\t\tif ( response.data !== undefined && response.data.status === 'success' ) {\n\t\t\t\t\t\tproductTaxonomySyncMsgElem.html(productTaxonomyManualSyncSuccessMsg);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproductTaxonomySyncMsgElem.html(productTaxonomyManualSyncFailMsg);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\t.fail(\n\t\t\t\tresponse => {\n\t\t\t\t\tif (response.responseText !== undefined) {\n\t\t\t\t\t\tproductTaxonomySyncMsgElem.html(productTaxonomyManualSyncFailMsg);\n\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\tconsole.error(response.responseText);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\t.always(\n\t\t\t\t() => productTaxonomyManualSyncButton.prop('disabled', false)\n\t\t\t);\n\t\t});\n\t}\n\n\n\t/**\n\t * Manages manual product linking sync.\n\t */\n\t const manageProductLinkingManualSync = () => {\n\t\tconst {\n\t\t\tajaxUrl,\n\t\t\tnonceManualSyncProductLinking,\n\t\t\tproductLinkingManualSyncMsg,\n\t\t\tproductLinkingManualSyncFailed\n\t\t} = faireAdminSettings;\n\n\t\tconst productLinkingManualSyncButton = $(\n\t\t\t`#${prefix}${plugin}_product_linking_sync_manual`\n\t\t);\n\n\t\tconst downloadProductLinkingButton = $(\n\t\t\t`#${prefix}${plugin}_product_linking_create_products_csv`\n\t\t);\n\n\t\tconst downloadVariationsLinkingButton = $(\n\t\t\t`#${prefix}${plugin}_product_linking_create_variations_csv`\n\t\t);\n\n\t\tconst existingProductsFoundOnIntialSetup = $(\n\t\t\t`#${prefix}${plugin}_initial_setup_products_exist`\n\t\t);\n\n\t\t// Handles click on product linking sync button.\n\t\tproductLinkingManualSyncButton.on('click', function () {\n\t\t\t\n\t\t\t// Add an element to display manual product linking sync messages.\n\t\t\t// Add an element to display connection test messages.\n\t\t\tconst productLinkingSyncMsgElem = addMsgElement(\n\t\t\t\t$(this),\n\t\t\t\t'product_linking_sync_results'\n\t\t\t);\n\n\t\t\tconst productLinkingSyncResults = $(\n\t\t\t\t`#${prefix}${plugin}_product_linking_sync_results`\n\t\t\t);\n\n\t\t\t// Start product linking.\n\t\t\tproductLinkingSyncMsgElem.html(productLinkingManualSyncMsg);\n\t\t\tproductLinkingManualSyncButton.prop('disabled', true);\n\n\t\t\t$.post(\n\t\t\t\tajaxUrl,\n\t\t\t\t{\n\t\t\t\t\taction: 'faire_product_linking_manual_sync',\n\t\t\t\t\tnonce: nonceManualSyncProductLinking,\n\t\t\t\t},\n\t\t\t\tresponse => {\n\t\t\t\t\tproductLinkingSyncMsgElem.html('');\n\n\t\t\t\t\tlet message = ( response.data === undefined || response.data.message === undefined) ? '' : response.data.message;\n\t\t\t\t\tproductLinkingSyncResults.val( message );\n\n\t\t\t\t\t//Enable disable download csv buttons \n\t\t\t\t\tif ( response.data !== undefined ) {\n\n\t\t\t\t\t\texistingProductsFoundOnIntialSetup.val(''); //Reset product linking before sync flag \n\n\t\t\t\t\t\tif ( response.data.products_csv === true ) {\n\t\t\t\t\t\t\tdownloadProductLinkingButton.attr('disabled', false);\n\t\t\t\t\t\t\tdownloadProductLinkingButton.addClass('button-secondary').removeClass('disabled');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdownloadProductLinkingButton.attr('disabled', true);\n\t\t\t\t\t\t\tdownloadProductLinkingButton.removeClass('button-secondary').addClass('disabled');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( response.data.variations_csv === true ) {\n\t\t\t\t\t\t\tdownloadVariationsLinkingButton.attr('disabled', false); \n\t\t\t\t\t\t\tdownloadVariationsLinkingButton.addClass('button-secondary').removeClass('disabled');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdownloadVariationsLinkingButton.attr('disabled', true); \n\t\t\t\t\t\t\tdownloadVariationsLinkingButton.removeClass('button-secondary').addClass('disabled');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\t.fail(\n\t\t\t\tresponse => {\n\t\t\t\t\tif (response.responseJSON.data !== undefined) {\n\t\t\t\t\t\tproductLinkingSyncMsgElem.html(response.responseJSON.data);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tproductLinkingSyncMsgElem.html(productLinkingManualSyncFailed);\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.error(response);\n\t\t\t\t}\n\t\t\t)\n\t\t\t.always(() => productLinkingManualSyncButton.prop('disabled', false));\n\t\t});\n\t};\n\n\t/**\n\t * Manages manual syncing of the brand.\n\t */\n\tconst manageBrandManualSync = () => {\n\t\tconst {\n\t\t\tajaxUrl,\n\t\t\tnonceManualSyncBrand,\n\t\t\tbrandManualSyncMsg,\n\t\t\tbrandManualSyncSuccessMsg,\n\t\t\tbrandManualSyncFailMsg\n\t\t} = faireAdminSettings;\n\n\t\tconst brandManualSyncButton = $(\n\t\t\t`#${prefix}${plugin}_brand_sync_manual`\n\t\t);\n\n\t\tconst brandSyncInputLocaleElem = $(\n\t\t\t`#${prefix}${plugin}_brand_locale`\n\t\t);\n\n\t\tconst brandSyncInputCurrencyElem = $(\n\t\t\t`#${prefix}${plugin}_brand_currency`\n\t\t);\n\n\t\t// Handles click on brand sync button.\n\t\tbrandManualSyncButton.on('click', function () {\n\t\t\t// Add an element to display request results messages.\n\t\t\tconst brandSyncMsgElem = addMsgElement(\n\t\t\t\t$(this),\n\t\t\t\t'faire_brand_manual_sync_msg'\n\t\t\t);\n\n\t\t\t// Start syncing brand.\n\t\t\tbrandSyncMsgElem.html(brandManualSyncMsg);\n\t\t\tbrandManualSyncButton.prop('disabled', true);\n\n\t\t\t$.post(\n\t\t\t\tajaxUrl,\n\t\t\t\t{\n\t\t\t\t\taction: 'faire_brand_manual_sync',\n\t\t\t\t\tnonce: nonceManualSyncBrand,\n\t\t\t\t},\n\t\t\t\tresponse => {\n\t\t\t\t\tif ( response.data === undefined || response.data.status !== 'success' ) {\n\t\t\t\t\t\tbrandSyncMsgElem.html(brandManualSyncFailMsg);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tbrandSyncMsgElem.html(brandManualSyncSuccessMsg);\n\t\t\t if ( response.data.brand.locale !== undefined ) {\n\t\t\t brandSyncInputLocaleElem.val( response.data.brand.locale );\n\t\t\t }\n\t\t\t if ( response.data.brand.currency !== undefined ) {\n\t\t\t brandSyncInputCurrencyElem.val( response.data.brand.currency );\n\t\t\t }\n\t\t\t\t}\n\t\t\t)\n\t\t\t.fail(\n\t\t\t\tresponse => {\n\t\t\t\t\tif (response.responseText !== undefined) {\n\t\t\t\t\t\tbrandSyncMsgElem.html(brandManualSyncFailMsg);\n\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\tconsole.error(response.responseText);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\t.always(\n\t\t\t\t() => brandManualSyncButton.prop('disabled', false)\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Manages manual syncing of orders.\n\t */\n\tconst manageOrdersManualSync = () => {\n\t\tconst {\n\t\t\tajaxUrl,\n\t\t\tnonceManualSyncOrders,\n\t\t\tordersManualSyncMsg,\n\t\t\tordersManualSyncFailed\n\t\t} = faireAdminSettings;\n\n\t\tconst ordersManualSyncButton = $(\n\t\t\t`#${prefix}${plugin}_order_sync_manual`\n\t\t);\n\n\t\t// Handles click on orders sync button.\n\t\tordersManualSyncButton.on('click', function () {\n\t\t\t// Add an element to display manual orders sync messages.\n\t\t\t// Add an element to display connection test messages.\n\t\t\tconst ordersSyncMsgElem = addMsgElement(\n\t\t\t\t$(this),\n\t\t\t\t'order_sync_results'\n\t\t\t);\n\n\t\t\tconst ordersSyncResults = $(\n\t\t\t\t`#${prefix}${plugin}_order_sync_results`\n\t\t\t);\n\n\t\t\t// Start syncing orders.\n\t\t\tordersSyncMsgElem.html(ordersManualSyncMsg);\n\t\t\tordersManualSyncButton.prop('disabled', true);\n\n\t\t\t$.post(\n\t\t\t\tajaxUrl,\n\t\t\t\t{\n\t\t\t\t\taction: 'faire_orders_manual_sync',\n\t\t\t\t\tnonce: nonceManualSyncOrders,\n\t\t\t\t},\n\t\t\t\tresponse => {\n\t\t\t\t\tordersSyncMsgElem.html('');\n\t\t\t\t\tordersSyncResults.val(\n\t\t\t\t\t\tresponse.data === undefined ? '' : response.data\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t)\n\t\t\t.fail(\n\t\t\t\tresponse => {\n\t\t\t\t\tif (response.responseJSON.data !== undefined) {\n\t\t\t\t\t\tordersSyncMsgElem.html(response.responseJSON.data);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tordersSyncMsgElem.html(ordersManualSyncFailed);\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.error(response);\n\t\t\t\t}\n\t\t\t)\n\t\t\t.always(() => ordersManualSyncButton.prop('disabled', false));\n\t\t});\n\t};\n\n\t/**\n\t * Inits manage of settings for orders scheduled syncing.\n\t */\n\tconst manageOrdersSyncScheduleSettings = () => {\n\t\tconst orderSyncMode = $(`#${prefix}${plugin}_order_sync_mode`);\n\n\t\tconst setOrderScheduleSyncSettingsVisibility = function () {\n\t\t\tconst visible = orderSyncMode.val() === 'sync_scheduled';\n\n\t\t\t$(`#${prefix}${plugin}_order_sync_schedule_num`)\n\t\t\t\t.closest('tr')\n\t\t\t\t.toggle(visible);\n\t\t\t$(`#${prefix}${plugin}_order_sync_schedule_time`)\n\t\t\t\t.closest('tr')\n\t\t\t\t.toggle(visible);\n\t\t};\n\n\t\t// Handle click on skip order scheduled syncing checkbox.\n\t\torderSyncMode.on('change', function () {\n\t\t\tsetOrderScheduleSyncSettingsVisibility();\n\t\t});\n\n\t\tsetOrderScheduleSyncSettingsVisibility();\n\t};\n\n\t/**\n\t * Manages finish setup button.\n\t */\n\tconst manageFinishSetupButton = () => {\n\n\t\tconst finishSetupButton = $(\n\t\t\t`#${prefix}${plugin}_initial_setup`\n\t\t);\n\n\t\tconst initialSetupInputName = `${prefix}${plugin}_initial_setup_trigger`;\n\n\t\tconst formSubmitButton = $(\n\t\t\t`#mainform button[type=submit]`\n\t\t);\n\n\t\t// Handles click on products sync button.\n\t\tfinishSetupButton.on('click', function () {\n\n\t\t\t// Add hidden input so we can trigger initial setup\n\t\t\t$('<input>').attr({\n\t\t\t\ttype: 'hidden',\n\t \t\tname: initialSetupInputName,\n\t\t\t\tvalue: 'yes'\n\t\t\t}).insertAfter( formSubmitButton );\n\n\t\t\t// Submit form\n\t\t\tformSubmitButton.trigger('click');\n\t\t});\n\t};\n\n\t/**\n\t * Manages Download product linking CSV button.\n\t */\n\t const manageDownloadProductLinkingCSVButton = () => {\n\n\t\tconst downloadProductLinkingButton = $(\n\t\t\t`#${prefix}${plugin}_product_linking_create_products_csv`\n\t\t);\n\n\t\t// Handles click on download csv button.\n\t\tdownloadProductLinkingButton.on('click', function () {\n\n\t\t\twindow.location = window.location + '&wc_faire_link_products_csv=yes';\n\n\t\t});\n\t};\n\n\t/**\n\t * Manages Download variations linking CSV button.\n\t */\n\t const manageDownloadVariationsLinkingCSVButton = () => {\n\n\t\tconst downloadVariationsLinkingButton = $(\n\t\t\t`#${prefix}${plugin}_product_linking_create_variations_csv`\n\t\t);\n\n\t\t// Handles click on download csv button.\n\t\tdownloadVariationsLinkingButton.on('click', function () {\n\n\t\t\twindow.location = window.location + '&wc_faire_link_variations_csv=yes';\n\n\t\t});\n\t};\n\n\t$(document).ready(() => {\n\t\t// Ensure current page is WooCommerce Faire integration settings.\n\t\tif (window.location.href.indexOf(`section=${plugin}`) === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Inits manage product sync mode.\n\t\tmanageProductSyncMode();\n\t\tmanageProductPricingPolicy();\n\t\t// Inits manage product wholesale mapping.\n\t\tmanageProductWholesaleMapField();\n\t\t// Inits manage products manual sync.\n\t\tmanageProductsManualSync();\n\t\t// Inits manage products taxonomy manual sync.\n\t\tmanageProductTaxonomyManualSync();\n\t\t// Inits manage products linking manual sync.\n\t\tmanageProductLinkingManualSync();\n\t\t// Init download product linking csv button click.\n\t\tmanageDownloadProductLinkingCSVButton();\n\t\t// Init download variations linking csv button click.\n\t\tmanageDownloadVariationsLinkingCSVButton();\n\t\t// Inits manage brand manual sync.\n\t\tmanageBrandManualSync();\n\t\t// Inits manage orders manual sync.\n\t\tmanageOrdersManualSync();\n\t\t// Inits manage of settings for orders scheduled syncing.\n\t\tmanageOrdersSyncScheduleSettings();\n\t\t// Inits API test connection functionality.\n\t\ttestApiConnection();\n\t\t// Init finish setup button click.\n\t\tmanageFinishSetupButton();\n\t});\n})(window.jQuery);\n"],"names":["$","prefix","plugin","addMsgElement","manageProductSyncMode","window","jQuery","baseElement","elementId","newElement","concat","length","after","next","productsManualSyncLinkExistingMsg","faireAdminSettings","productSyncMode","existingProductsFoundOnIntialSetup","setSyncScheduleFieldsVisibility","closest","toggle","val","on","e","parseInt","confirm","allowSelectCheckProductLinkingWarning","trigger","preventDefault","document","ready","productPricePolicy","productPricePolicyChecked","productWholeSaleMultiplier","productWholeSalePercentage","setProductWholesaleFieldsVisibility","productWholesaleMapped","setProductWholesaleMapFieldVisibility","ajaxUrl","nonceManualSyncProducts","productsManualSyncMsg","productsManualSyncButton","orderSyncMode","setOrderScheduleSyncSettingsVisibility","finishSetupButton","initialSetupInputName","formSubmitButton","location","href","indexOf","target","this","is","productsSyncMsgElem","html","prop","post","action","nonce","response","undefined","data","Array","isArray","join","fail","always","nonceManualSyncProductTaxonomy","productTaxonomyManualSyncMsg","productTaxonomyManualSyncSuccessMsg","productTaxonomyManualSyncFailMsg","productTaxonomyManualSyncButton","productTaxonomySyncMsgElem","status","responseText","console","error","manageProductTaxonomyManualSync","nonceManualSyncProductLinking","productLinkingManualSyncMsg","productLinkingManualSyncFailed","productLinkingManualSyncButton","downloadProductLinkingButton","downloadVariationsLinkingButton","productLinkingSyncMsgElem","productLinkingSyncResults","message","products_csv","attr","addClass","removeClass","variations_csv","responseJSON","manageProductLinkingManualSync","nonceManualSyncBrand","brandManualSyncMsg","brandManualSyncSuccessMsg","brandManualSyncFailMsg","brandManualSyncButton","brandSyncInputLocaleElem","brandSyncInputCurrencyElem","brandSyncMsgElem","brand","locale","currency","manageBrandManualSync","nonceManualSyncOrders","ordersManualSyncMsg","ordersManualSyncFailed","ordersManualSyncButton","ordersSyncMsgElem","ordersSyncResults","manageOrdersManualSync","visible","nonceApiTestConnection","testingApiConnectionMsg","apiKeyEmptyError","testApiConnectionButton","connectionTestMsgElem","trim","testApiConnection","type","name","value","insertAfter"],"version":3,"file":"admin_settings.js.map"}1 {"mappings":"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","sources":["assets/scripts/admin_settings.js"],"sourcesContent":["/* global faireAdminSettings */\n\n'use strict';\n\n(function ($) {\n\tconst prefix = 'woocommerce_';\n\tconst plugin = 'faire_wc_integration';\n\n\t/**\n\t * Adds a DOM element with an ID, after one given.\n\t *\n\t * @param {Object} baseElement DOM Element after which the new element will be added.\n\t * @param {string} elementId ID for the new DOM element.\n\t *\n\t * @return {Object} New DOM element.\n\t */\n\tconst addMsgElement = (baseElement, elementId) => {\n\t\tlet newElement = $(`#${elementId}`);\n\t\tif (!newElement.length) {\n\t\t\tnewElement = baseElement\n\t\t\t\t.after(`<p id=\"${elementId}\"></p>`)\n\t\t\t\t.next(`#${elementId}`);\n\t\t}\n\n\t\treturn newElement;\n\t};\n\n\t/**\n\t * Manages product sync mode fields.\n\t */\n\tconst manageProductSyncMode = () => {\n\t\tconst { productsManualSyncLinkExistingMsg } =\n\t\t\tfaireAdminSettings;\n\n\t\tconst productSyncMode = $(`#${prefix}${plugin}_product_sync_mode`);\n\n\t\tconst existingProductsFoundOnIntialSetup = $(\n\t\t\t`#${prefix}${plugin}_initial_setup_products_exist`\n\t\t);\n\n\t\tconst allowSelectCheckProductLinkingWarning = () => {\n\t\t\tif ( productSyncMode.val() !== 'do_not_sync' ) {\n\t\t\t\t// Maybe display product linking warning \n\t\t\t\tif ( parseInt(existingProductsFoundOnIntialSetup.val()) === 1 ) {\n\t\t\t\t\tif ( ! confirm( productsManualSyncLinkExistingMsg ) ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\texistingProductsFoundOnIntialSetup.val(''); // turn off flag if user continued anyway\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\n\t\t// Set visibility of product sync schedule fields.\n\t\tconst setSyncScheduleFieldsVisibility = () => {\n\t\t\t$(\n\t\t\t\t`#${prefix}${plugin}_product_sync_schedule_num, #${prefix}${plugin}_product_sync_schedule_time`\n\t\t\t)\n\t\t\t\t.closest('tr')\n\t\t\t\t.toggle(productSyncMode.val() === 'sync_scheduled');\n\t\t};\n\n\t\t// Handle changes to product sync mode select field.\n\t\tproductSyncMode.on('change', function (e) {\n\t\t\tif ( ! allowSelectCheckProductLinkingWarning() ) {\n\t\t\t\tproductSyncMode.val( 'do_not_sync' ).trigger('change');\n\t\t\t\te.preventDefault();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tsetSyncScheduleFieldsVisibility();\n\t\t});\n\n\t\tsetSyncScheduleFieldsVisibility();\n\t};\n\n\tconst manageProductPricingPolicy = () => {\n\t\tconst productPricePolicy = $(`.${prefix}${plugin}_product_pricing_policy`);\n\t\tconst productPricePolicyChecked = $(`.${prefix}${plugin}_product_pricing_policy:checked`);\n\t\tconst productWholeSaleMultiplier = $(`#${prefix}${plugin}_product_wholesale_multiplier`);\n\t\tconst productWholeSalePercentage = $(`#${prefix}${plugin}_product_wholesale_percentage`);\n\n\t\tconst setProductWholesaleFieldsVisibility = (target) => {\n\t\t\tproductWholeSaleMultiplier\n\t\t\t\t.closest('tr')\n\t\t\t\t.toggle($(target).val() === 'wholesale_multiplier');\n\n\t\t\tproductWholeSalePercentage\n\t\t\t\t.closest('tr')\n\t\t\t\t.toggle($(target).val() === 'wholesale_percentage');\n\t\t}\n\n\t\t// Handle click on product policy radio buttons.\n\t\tproductPricePolicy.on('click', function () {\n\t\t\tsetProductWholesaleFieldsVisibility(this);\n\t\t});\n\n\t\tsetProductWholesaleFieldsVisibility(productPricePolicyChecked);\n\t}\n\n\t/**\n\t * Manages product wholesale mapping.\n\t */\n\tconst manageProductWholesaleMapField = () => {\n\t\tconst productWholesaleMapped = $(\n\t\t\t`#${prefix}${plugin}_product_wholesale_map`\n\t\t);\n\n\t\t// Set visibility of product wholesale map field.\n\t\tconst setProductWholesaleMapFieldVisibility = function () {\n\t\t\t$(`#${prefix}${plugin}_product_wholesale_map_field`)\n\t\t\t\t.closest('tr')\n\t\t\t\t.toggle(productWholesaleMapped.is(':checked'));\n\t\t};\n\n\t\t// Handle click on product wholesale map checkbox.\n\t\tproductWholesaleMapped.on('click', function () {\n\t\t\tsetProductWholesaleMapFieldVisibility();\n\t\t});\n\n\t\tsetProductWholesaleMapFieldVisibility();\n\t};\n\n\t/**\n\t * Implements API connection test functionality.\n\t */\n\tconst testApiConnection = () => {\n\t\tconst {\n\t\t\tajaxUrl,\n\t\t\tnonceApiTestConnection,\n\t\t\ttestingApiConnectionMsg,\n\t\t\tapiKeyEmptyError,\n\t\t} = faireAdminSettings;\n\n\t\tconst testApiConnectionButton = $(\n\t\t\t`#${prefix}${plugin}_test_api_connection`\n\t\t);\n\n\t\t// Handles click on API connection test button.\n\t\ttestApiConnectionButton.on('click', function () {\n\t\t\tif (testApiConnectionButton.prop('disabled')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Add an element to display connection test messages.\n\t\t\tconst connectionTestMsgElem = addMsgElement(\n\t\t\t\t$(this),\n\t\t\t\t'connection_test_msg'\n\t\t\t);\n\n\t\t\t// API key field should not be empty.\n\t\t\tconst apiKeyField = $($(`#${prefix}${plugin}_api_key`));\n\t\t\tif (!apiKeyField.val().trim()) {\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\tconnectionTestMsgElem.html(apiKeyEmptyError);\n\t\t\t\ttestApiConnectionButton.prop('disabled', false);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Start testing the API connection.\n\t\t\tconnectionTestMsgElem.html(testingApiConnectionMsg);\n\t\t\ttestApiConnectionButton.prop('disabled', true);\n\n\t\t\t$.post(\n\t\t\t\tajaxUrl,\n\t\t\t\t{\n\t\t\t\t\taction: 'faire_test_api_connection',\n\t\t\t\t\tnonce: nonceApiTestConnection,\n\t\t\t\t},\n\t\t\t\tresponse => connectionTestMsgElem.html(response.data)\n\t\t\t)\n\t\t\t.fail(\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\tresponse => connectionTestMsgElem.html(response.responseJSON.data)\n\t\t\t)\n\t\t\t.always(\n\t\t\t\t() => testApiConnectionButton.prop('disabled', false)\n\t\t\t);\n\t\t});\n\t};\n\n\t/**\n\t * Manages manual syncing of products.\n\t */\n\tconst manageProductsManualSync = () => {\n\t\tconst { ajaxUrl, nonceManualSyncProducts, productsManualSyncMsg, productsManualSyncLinkExistingMsg } =\n\t\t\tfaireAdminSettings;\n\n\t\tconst productsManualSyncButton = $(\n\t\t\t`#${prefix}${plugin}_product_sync_manual`\n\t\t);\n\n\t\tconst existingProductsFoundOnIntialSetup = $(\n\t\t\t`#${prefix}${plugin}_initial_setup_products_exist`\n\t\t);\n\n\t\t// Handles click on products sync button.\n\t\tproductsManualSyncButton.on('click', function () {\n\n\t\t\t// Maybe display product linking warning \n\t\t\tif ( parseInt(existingProductsFoundOnIntialSetup.val()) === 1 ) {\n\t\t\t\tif ( ! confirm( productsManualSyncLinkExistingMsg ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t} else {\n\t\t\t\t\texistingProductsFoundOnIntialSetup.val(''); // turn off flag if user continued anyway\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add an element to display request results messages.\n\t\t\tconst productsSyncMsgElem = addMsgElement(\n\t\t\t\t$(this),\n\t\t\t\t'products_manual_sync_msg'\n\t\t\t);\n\n\t\t\t// Start syncing products.\n\t\t\tproductsSyncMsgElem.html(productsManualSyncMsg);\n\t\t\tproductsManualSyncButton.prop('disabled', true);\n\n\t\t\t$.post(\n\t\t\t\tajaxUrl,\n\t\t\t\t{\n\t\t\t\t\taction: 'faire_products_manual_sync',\n\t\t\t\t\tnonce: nonceManualSyncProducts,\n\t\t\t\t},\n\t\t\t\tresponse => {\n\t\t\t\t\tproductsSyncMsgElem.html('');\n\t\t\t\t\tif (\n\t\t\t\t\t\tresponse.data !== undefined &&\n\t\t\t\t\t\tArray.isArray(response.data)\n\t\t\t\t\t) {\n\t\t\t\t\t\tproductsSyncMsgElem.html(response.data.join('<br>'));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\t.fail(\n\t\t\t\tresponse => productsSyncMsgElem.val(\n\t\t\t\t\t\tresponse.data === undefined ? '' : response.data\n\t\t\t\t\t)\n\t\t\t)\n\t\t\t.always(\n\t\t\t\t() => productsManualSyncButton.prop('disabled', false)\n\t\t\t);\n\t\t});\n\t};\n\n\t/**\n\t * Manages manual syncing of product taxonomy.\n\t */\n\tconst manageProductTaxonomyManualSync = () => {\n\t\tconst {\n\t\t\tajaxUrl,\n\t\t\tnonceManualSyncProductTaxonomy,\n\t\t\tproductTaxonomyManualSyncMsg,\n\t\t\tproductTaxonomyManualSyncSuccessMsg,\n\t\t\tproductTaxonomyManualSyncFailMsg\n\t\t} = faireAdminSettings;\n\n\t\tconst productTaxonomyManualSyncButton = $(\n\t\t\t`#${prefix}${plugin}_product_taxonomy_sync_manual`\n\t\t);\n\n\t\t// Handles click on taxonomy sync button.\n\t\tproductTaxonomyManualSyncButton.on('click', function () {\n\t\t\t// Add an element to display request results messages.\n\t\t\tconst productTaxonomySyncMsgElem = addMsgElement(\n\t\t\t\t$(this),\n\t\t\t\t'faire_product_taxonomy_manual_sync_msg'\n\t\t\t);\n\n\t\t\t// Start syncing product taxonomy.\n\t\t\tproductTaxonomySyncMsgElem.html(productTaxonomyManualSyncMsg);\n\t\t\tproductTaxonomyManualSyncButton.prop('disabled', true);\n\n\t\t\t$.post(\n\t\t\t\tajaxUrl,\n\t\t\t\t{\n\t\t\t\t\taction: 'faire_product_taxonomy_manual_sync',\n\t\t\t\t\tnonce: nonceManualSyncProductTaxonomy,\n\t\t\t\t},\n\t\t\t\tresponse => {\n\t\t\t\t\tif ( response.data !== undefined && response.data.status === 'success' ) {\n\t\t\t\t\t\tproductTaxonomySyncMsgElem.html(productTaxonomyManualSyncSuccessMsg);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproductTaxonomySyncMsgElem.html(productTaxonomyManualSyncFailMsg);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\t.fail(\n\t\t\t\tresponse => {\n\t\t\t\t\tif (response.responseText !== undefined) {\n\t\t\t\t\t\tproductTaxonomySyncMsgElem.html(productTaxonomyManualSyncFailMsg);\n\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\tconsole.error(response.responseText);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\t.always(\n\t\t\t\t() => productTaxonomyManualSyncButton.prop('disabled', false)\n\t\t\t);\n\t\t});\n\t}\n\n /**\n\t * Manages manual unlinking of products.\n\t */\n\tconst manageProductUnlinkingManualSync = () => {\n\t\tconst {\n\t\t\tajaxUrl,\n\t\t\tnonceManualSyncProductUnlinking,\n\t\t\tproductUnlinkingManualSyncMsg,\n\t\t\tproductUnlinkingManualSyncSuccessMsg,\n\t\t\tproductUnlinkingManualSyncFailMsg\n\t\t} = faireAdminSettings;\n\n\t\tconst productUnlinkingManualSyncButton = $(\n\t\t\t`#${prefix}${plugin}_product_unlinking_manual_sync`\n\t\t);\n\n\t\t// Handles click on product unlinking button.\n\t\tproductUnlinkingManualSyncButton.on('click', function () {\n\t\t\t// Add an element to display request results messages.\n\t\t\tconst productUnlinkingSyncMsgElem = addMsgElement(\n\t\t\t\t$(this),\n\t\t\t\t'faire_product_unlinking_sync_manual_msg'\n\t\t\t);\n\n\t\t\t// Start product unlinking.\n\t\t\tproductUnlinkingSyncMsgElem.html(productUnlinkingManualSyncMsg);\n\t\t\tproductUnlinkingManualSyncButton.prop('disabled', true);\n\n\t\t\t$.post(\n\t\t\t\tajaxUrl,\n\t\t\t\t{\n\t\t\t\t\taction: 'faire_product_unlinking_manual_sync',\n\t\t\t\t\tnonce: nonceManualSyncProductUnlinking,\n\t\t\t\t},\n\t\t\t\tresponse => {\n\t\t\t\t\tif ( response.data !== undefined && response.data.status === 'success' ) {\n\n if ( response.data.info !== undefined && response.data.info.length > 0 ) {\n productUnlinkingSyncMsgElem.html(response.data.info);\n } else {\n productUnlinkingSyncMsgElem.html(productUnlinkingManualSyncSuccessMsg);\n }\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproductUnlinkingSyncMsgElem.html(productUnlinkingManualSyncFailMsg);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\t.fail(\n\t\t\t\tresponse => {\n\t\t\t\t\tif (response.responseText !== undefined) {\n\t\t\t\t\t\tproductUnlinkingSyncMsgElem.html(productUnlinkingManualSyncFailMsg);\n\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\tconsole.error(response.responseText);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\t.always(\n\t\t\t\t() => productUnlinkingManualSyncButton.prop('disabled', false)\n\t\t\t);\n\t\t});\n\t}\n\n\n\t/**\n\t * Manages manual product linking sync.\n\t */\n\t const manageProductLinkingManualSync = () => {\n\t\tconst {\n\t\t\tajaxUrl,\n\t\t\tnonceManualSyncProductLinking,\n\t\t\tproductLinkingManualSyncMsg,\n\t\t\tproductLinkingManualSyncFailed\n\t\t} = faireAdminSettings;\n\n\t\tconst productLinkingManualSyncButton = $(\n\t\t\t`#${prefix}${plugin}_product_linking_sync_manual`\n\t\t);\n\n\t\tconst downloadProductLinkingButton = $(\n\t\t\t`#${prefix}${plugin}_product_linking_create_products_csv`\n\t\t);\n\n\t\tconst downloadVariationsLinkingButton = $(\n\t\t\t`#${prefix}${plugin}_product_linking_create_variations_csv`\n\t\t);\n\n\t\tconst existingProductsFoundOnIntialSetup = $(\n\t\t\t`#${prefix}${plugin}_initial_setup_products_exist`\n\t\t);\n\n\t\t// Handles click on product linking sync button.\n\t\tproductLinkingManualSyncButton.on('click', function () {\n\t\t\t\n\t\t\t// Add an element to display manual product linking sync messages.\n\t\t\t// Add an element to display connection test messages.\n\t\t\tconst productLinkingSyncMsgElem = addMsgElement(\n\t\t\t\t$(this),\n\t\t\t\t'product_linking_sync_results'\n\t\t\t);\n\n\t\t\tconst productLinkingSyncResults = $(\n\t\t\t\t`#${prefix}${plugin}_product_linking_sync_results`\n\t\t\t);\n\n\t\t\t// Start product linking.\n\t\t\tproductLinkingSyncMsgElem.html(productLinkingManualSyncMsg);\n\t\t\tproductLinkingManualSyncButton.prop('disabled', true);\n\n\t\t\t$.post(\n\t\t\t\tajaxUrl,\n\t\t\t\t{\n\t\t\t\t\taction: 'faire_product_linking_manual_sync',\n\t\t\t\t\tnonce: nonceManualSyncProductLinking,\n\t\t\t\t},\n\t\t\t\tresponse => {\n\t\t\t\t\tproductLinkingSyncMsgElem.html('');\n\n\t\t\t\t\tlet message = ( response.data === undefined || response.data.message === undefined) ? '' : response.data.message;\n\t\t\t\t\tproductLinkingSyncResults.val( message );\n\n\t\t\t\t\t//Enable disable download csv buttons \n\t\t\t\t\tif ( response.data !== undefined ) {\n\n\t\t\t\t\t\texistingProductsFoundOnIntialSetup.val(''); //Reset product linking before sync flag \n\n\t\t\t\t\t\tif ( response.data.products_csv === true ) {\n\t\t\t\t\t\t\tdownloadProductLinkingButton.attr('disabled', false);\n\t\t\t\t\t\t\tdownloadProductLinkingButton.addClass('button-secondary').removeClass('disabled');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdownloadProductLinkingButton.attr('disabled', true);\n\t\t\t\t\t\t\tdownloadProductLinkingButton.removeClass('button-secondary').addClass('disabled');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( response.data.variations_csv === true ) {\n\t\t\t\t\t\t\tdownloadVariationsLinkingButton.attr('disabled', false); \n\t\t\t\t\t\t\tdownloadVariationsLinkingButton.addClass('button-secondary').removeClass('disabled');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdownloadVariationsLinkingButton.attr('disabled', true); \n\t\t\t\t\t\t\tdownloadVariationsLinkingButton.removeClass('button-secondary').addClass('disabled');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\t.fail(\n\t\t\t\tresponse => {\n\t\t\t\t\tif (response.responseJSON.data !== undefined) {\n\t\t\t\t\t\tproductLinkingSyncMsgElem.html(response.responseJSON.data);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tproductLinkingSyncMsgElem.html(productLinkingManualSyncFailed);\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.error(response);\n\t\t\t\t}\n\t\t\t)\n\t\t\t.always(() => productLinkingManualSyncButton.prop('disabled', false));\n\t\t});\n\t};\n\n\t/**\n\t * Manages manual syncing of the brand.\n\t */\n\tconst manageBrandManualSync = () => {\n\t\tconst {\n\t\t\tajaxUrl,\n\t\t\tnonceManualSyncBrand,\n\t\t\tbrandManualSyncMsg,\n\t\t\tbrandManualSyncSuccessMsg,\n\t\t\tbrandManualSyncFailMsg\n\t\t} = faireAdminSettings;\n\n\t\tconst brandManualSyncButton = $(\n\t\t\t`#${prefix}${plugin}_brand_sync_manual`\n\t\t);\n\n\t\tconst brandSyncInputLocaleElem = $(\n\t\t\t`#${prefix}${plugin}_brand_locale`\n\t\t);\n\n\t\tconst brandSyncInputCurrencyElem = $(\n\t\t\t`#${prefix}${plugin}_brand_currency`\n\t\t);\n\n\t\t// Handles click on brand sync button.\n\t\tbrandManualSyncButton.on('click', function () {\n\t\t\t// Add an element to display request results messages.\n\t\t\tconst brandSyncMsgElem = addMsgElement(\n\t\t\t\t$(this),\n\t\t\t\t'faire_brand_manual_sync_msg'\n\t\t\t);\n\n\t\t\t// Start syncing brand.\n\t\t\tbrandSyncMsgElem.html(brandManualSyncMsg);\n\t\t\tbrandManualSyncButton.prop('disabled', true);\n\n\t\t\t$.post(\n\t\t\t\tajaxUrl,\n\t\t\t\t{\n\t\t\t\t\taction: 'faire_brand_manual_sync',\n\t\t\t\t\tnonce: nonceManualSyncBrand,\n\t\t\t\t},\n\t\t\t\tresponse => {\n\t\t\t\t\tif ( response.data === undefined || response.data.status !== 'success' ) {\n\t\t\t\t\t\tbrandSyncMsgElem.html(brandManualSyncFailMsg);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tbrandSyncMsgElem.html(brandManualSyncSuccessMsg);\n\t\t\t if ( response.data.brand.locale !== undefined ) {\n\t\t\t brandSyncInputLocaleElem.val( response.data.brand.locale );\n\t\t\t }\n\t\t\t if ( response.data.brand.currency !== undefined ) {\n\t\t\t brandSyncInputCurrencyElem.val( response.data.brand.currency );\n\t\t\t }\n\t\t\t\t}\n\t\t\t)\n\t\t\t.fail(\n\t\t\t\tresponse => {\n\t\t\t\t\tif (response.responseText !== undefined) {\n\t\t\t\t\t\tbrandSyncMsgElem.html(brandManualSyncFailMsg);\n\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\tconsole.error(response.responseText);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\t.always(\n\t\t\t\t() => brandManualSyncButton.prop('disabled', false)\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Manages manual syncing of orders.\n\t */\n\tconst manageOrdersManualSync = () => {\n\t\tconst {\n\t\t\tajaxUrl,\n\t\t\tnonceManualSyncOrders,\n\t\t\tordersManualSyncMsg,\n\t\t\tordersManualSyncFailed\n\t\t} = faireAdminSettings;\n\n\t\tconst ordersManualSyncButton = $(\n\t\t\t`#${prefix}${plugin}_order_sync_manual`\n\t\t);\n\n\t\t// Handles click on orders sync button.\n\t\tordersManualSyncButton.on('click', function () {\n\t\t\t// Add an element to display manual orders sync messages.\n\t\t\t// Add an element to display connection test messages.\n\t\t\tconst ordersSyncMsgElem = addMsgElement(\n\t\t\t\t$(this),\n\t\t\t\t'order_sync_results'\n\t\t\t);\n\n\t\t\tconst ordersSyncResults = $(\n\t\t\t\t`#${prefix}${plugin}_order_sync_results`\n\t\t\t);\n\n\t\t\t// Start syncing orders.\n\t\t\tordersSyncMsgElem.html(ordersManualSyncMsg);\n\t\t\tordersManualSyncButton.prop('disabled', true);\n\n\t\t\t$.post(\n\t\t\t\tajaxUrl,\n\t\t\t\t{\n\t\t\t\t\taction: 'faire_orders_manual_sync',\n\t\t\t\t\tnonce: nonceManualSyncOrders,\n\t\t\t\t},\n\t\t\t\tresponse => {\n\t\t\t\t\tordersSyncMsgElem.html('');\n\t\t\t\t\tordersSyncResults.val(\n\t\t\t\t\t\tresponse.data === undefined ? '' : response.data\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t)\n\t\t\t.fail(\n\t\t\t\tresponse => {\n\t\t\t\t\tif (response.responseJSON.data !== undefined) {\n\t\t\t\t\t\tordersSyncMsgElem.html(response.responseJSON.data);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tordersSyncMsgElem.html(ordersManualSyncFailed);\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.error(response);\n\t\t\t\t}\n\t\t\t)\n\t\t\t.always(() => ordersManualSyncButton.prop('disabled', false));\n\t\t});\n\t};\n\n\t/**\n\t * Inits manage of settings for orders scheduled syncing.\n\t */\n\tconst manageOrdersSyncScheduleSettings = () => {\n\t\tconst orderSyncMode = $(`#${prefix}${plugin}_order_sync_mode`);\n\n\t\tconst setOrderScheduleSyncSettingsVisibility = function () {\n\t\t\tconst visible = orderSyncMode.val() === 'sync_scheduled';\n\n\t\t\t$(`#${prefix}${plugin}_order_sync_schedule_num`)\n\t\t\t\t.closest('tr')\n\t\t\t\t.toggle(visible);\n\t\t\t$(`#${prefix}${plugin}_order_sync_schedule_time`)\n\t\t\t\t.closest('tr')\n\t\t\t\t.toggle(visible);\n\t\t};\n\n\t\t// Handle click on skip order scheduled syncing checkbox.\n\t\torderSyncMode.on('change', function () {\n\t\t\tsetOrderScheduleSyncSettingsVisibility();\n\t\t});\n\n\t\tsetOrderScheduleSyncSettingsVisibility();\n\t};\n\n\t/**\n\t * Manages finish setup button.\n\t */\n\tconst manageFinishSetupButton = () => {\n\n\t\tconst finishSetupButton = $(\n\t\t\t`#${prefix}${plugin}_initial_setup`\n\t\t);\n\n\t\tconst initialSetupInputName = `${prefix}${plugin}_initial_setup_trigger`;\n\n\t\tconst formSubmitButton = $(\n\t\t\t`#mainform button[type=submit]`\n\t\t);\n\n\t\t// Handles click on products sync button.\n\t\tfinishSetupButton.on('click', function () {\n\n\t\t\t// Add hidden input so we can trigger initial setup\n\t\t\t$('<input>').attr({\n\t\t\t\ttype: 'hidden',\n\t \t\tname: initialSetupInputName,\n\t\t\t\tvalue: 'yes'\n\t\t\t}).insertAfter( formSubmitButton );\n\n\t\t\t// Submit form\n\t\t\tformSubmitButton.trigger('click');\n\t\t});\n\t};\n\n\t/**\n\t * Manages Download product linking CSV button.\n\t */\n\t const manageDownloadProductLinkingCSVButton = () => {\n\n\t\tconst downloadProductLinkingButton = $(\n\t\t\t`#${prefix}${plugin}_product_linking_create_products_csv`\n\t\t);\n\n\t\t// Handles click on download csv button.\n\t\tdownloadProductLinkingButton.on('click', function () {\n\n\t\t\twindow.location = window.location + '&wc_faire_link_products_csv=yes';\n\n\t\t});\n\t};\n\n\t/**\n\t * Manages Download variations linking CSV button.\n\t */\n\t const manageDownloadVariationsLinkingCSVButton = () => {\n\n\t\tconst downloadVariationsLinkingButton = $(\n\t\t\t`#${prefix}${plugin}_product_linking_create_variations_csv`\n\t\t);\n\n\t\t// Handles click on download csv button.\n\t\tdownloadVariationsLinkingButton.on('click', function () {\n\n\t\t\twindow.location = window.location + '&wc_faire_link_variations_csv=yes';\n\n\t\t});\n\t};\n\n\t$(document).ready(() => {\n\t\t// Ensure current page is WooCommerce Faire integration settings.\n\t\tif (window.location.href.indexOf(`section=${plugin}`) === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Inits manage product sync mode.\n\t\tmanageProductSyncMode();\n\t\tmanageProductPricingPolicy();\n\t\t// Inits manage product wholesale mapping.\n\t\tmanageProductWholesaleMapField();\n\t\t// Inits manage products manual sync.\n\t\tmanageProductsManualSync();\n // Inits manage products unlinking manual sync.\n\t\tmanageProductUnlinkingManualSync();\n\t\t// Inits manage products taxonomy manual sync.\n\t\tmanageProductTaxonomyManualSync();\n\t\t// Inits manage products linking manual sync.\n\t\tmanageProductLinkingManualSync();\n\t\t// Init download product linking csv button click.\n\t\tmanageDownloadProductLinkingCSVButton();\n\t\t// Init download variations linking csv button click.\n\t\tmanageDownloadVariationsLinkingCSVButton();\n\t\t// Inits manage brand manual sync.\n\t\tmanageBrandManualSync();\n\t\t// Inits manage orders manual sync.\n\t\tmanageOrdersManualSync();\n\t\t// Inits manage of settings for orders scheduled syncing.\n\t\tmanageOrdersSyncScheduleSettings();\n\t\t// Inits API test connection functionality.\n\t\ttestApiConnection();\n\t\t// Init finish setup button click.\n\t\tmanageFinishSetupButton();\n\t});\n})(window.jQuery);\n"],"names":["$","prefix","plugin","addMsgElement","manageProductSyncMode","window","jQuery","baseElement","elementId","newElement","concat","length","after","next","productsManualSyncLinkExistingMsg","faireAdminSettings","productSyncMode","existingProductsFoundOnIntialSetup","setSyncScheduleFieldsVisibility","closest","toggle","val","on","e","parseInt","confirm","allowSelectCheckProductLinkingWarning","trigger","preventDefault","document","ready","productPricePolicy","productPricePolicyChecked","productWholeSaleMultiplier","productWholeSalePercentage","setProductWholesaleFieldsVisibility","productWholesaleMapped","setProductWholesaleMapFieldVisibility","ajaxUrl","nonceManualSyncProducts","productsManualSyncMsg","productsManualSyncButton","orderSyncMode","setOrderScheduleSyncSettingsVisibility","finishSetupButton","initialSetupInputName","formSubmitButton","location","href","indexOf","target","this","is","productsSyncMsgElem","html","prop","post","action","nonce","response","undefined","data","Array","isArray","join","fail","always","nonceManualSyncProductUnlinking","productUnlinkingManualSyncMsg","productUnlinkingManualSyncSuccessMsg","productUnlinkingManualSyncFailMsg","productUnlinkingManualSyncButton","productUnlinkingSyncMsgElem","status","info","responseText","console","error","manageProductUnlinkingManualSync","nonceManualSyncProductTaxonomy","productTaxonomyManualSyncMsg","productTaxonomyManualSyncSuccessMsg","productTaxonomyManualSyncFailMsg","productTaxonomyManualSyncButton","productTaxonomySyncMsgElem","manageProductTaxonomyManualSync","nonceManualSyncProductLinking","productLinkingManualSyncMsg","productLinkingManualSyncFailed","productLinkingManualSyncButton","downloadProductLinkingButton","downloadVariationsLinkingButton","productLinkingSyncMsgElem","productLinkingSyncResults","message","products_csv","attr","addClass","removeClass","variations_csv","responseJSON","manageProductLinkingManualSync","nonceManualSyncBrand","brandManualSyncMsg","brandManualSyncSuccessMsg","brandManualSyncFailMsg","brandManualSyncButton","brandSyncInputLocaleElem","brandSyncInputCurrencyElem","brandSyncMsgElem","brand","locale","currency","manageBrandManualSync","nonceManualSyncOrders","ordersManualSyncMsg","ordersManualSyncFailed","ordersManualSyncButton","ordersSyncMsgElem","ordersSyncResults","manageOrdersManualSync","visible","nonceApiTestConnection","testingApiConnectionMsg","apiKeyEmptyError","testApiConnectionButton","connectionTestMsgElem","trim","testApiConnection","type","name","value","insertAfter"],"version":3,"file":"admin_settings.js.map"} -
faire-for-woocommerce/tags/1.3.6/faire-for-woocommerce.php
r2853863 r2864583 5 5 * Author: Faire 6 6 * Author URI: https://faire.com/ 7 * Version: 1.3. 47 * Version: 1.3.6 8 8 * 9 9 * This program is free software: you can redistribute it and/or modify … … 29 29 } 30 30 31 const VERSION = '1.3. 4';31 const VERSION = '1.3.6'; 32 32 33 33 if ( ! defined( 'FAIRE_WC_PLUGIN_FILE' ) ) { -
faire-for-woocommerce/tags/1.3.6/readme.txt
r2853863 r2864583 4 4 Requires at least: 4.7 5 5 Tested up to: 6.0 6 Stable tag: 1.3. 36 Stable tag: 1.3.6 7 7 Requires PHP: 7.4 8 8 WC requires at least: 6.0 … … 74 74 == Changelog == 75 75 76 = 1.3.6 = 77 * Added product unlinking 78 79 = 1.3.5 = 80 * Fixed country code in imported orders had format ISO_3166-1 alpha-3. 81 * Minor fixes to code format in class settings. 82 76 83 = 1.3.4 = 77 84 * Fixed orders sync should import orders 30 days back only first time. -
faire-for-woocommerce/tags/1.3.6/src/admin/class-assets.php
r2838583 r2864583 83 83 'brandManualSyncSuccessMsg' => __( 'Brand profile successfully synced.', 'faire-for-woocommerce' ), 84 84 'brandManualSyncFailMsg' => __( 'Brand profile syncing failed.', 'faire-for-woocommerce' ), 85 // Product unlinking manual sync. 86 'nonceManualSyncProductUnlinking' => wp_create_nonce( 'faire_product_unlinking_sync' ), 87 'productUnlinkingManualSyncMsg' => __( 'Unlinking products...', 'faire-for-woocommerce' ), 88 'productUnlinkingManualSyncSuccessMsg' => __( 'Products successfully unlinked.', 'faire-for-woocommerce' ), 89 'productUnlinkingManualSyncFailMsg' => __( 'Unlinking products failed.', 'faire-for-woocommerce' ), 85 90 ) 86 91 ); -
faire-for-woocommerce/tags/1.3.6/src/admin/class-settings.php
r2838583 r2864583 8 8 namespace Faire\Wc\Admin; 9 9 10 use Faire\Wc\Country; 10 11 use WC_Settings_API; 11 12 … … 291 292 */ 292 293 public function get_order_sync_skip_orders_create(): bool { 293 if ( TRUE === $this->get_suppress_currency_matching() ) {294 return TRUE;295 }294 if ( TRUE === $this->get_suppress_currency_matching() ) { 295 return TRUE; 296 } 296 297 return $this->get_option( 'order_sync_skip_orders_create', 'no' ) === 'yes'; 297 298 } … … 400 401 ); 401 402 } 402 403 403 404 /** 404 405 * Saves the initial setup found existing products … … 478 479 // phpcs:ignore WordPress.PHP.YodaConditions.NotYoda 479 480 $locale_matches = explode( '_', $wp_locale )[0] === explode( '_', $brand_locale )[0]; 480 if ( TRUE === $this->get_suppress_currency_matching() ) {481 return $locale_matches;482 } else {483 return $locale_matches && ( $this->get_brand_currency() === get_woocommerce_currency() );484 }485 } 486 481 if ( TRUE === $this->get_suppress_currency_matching() ) { 482 return $locale_matches; 483 } else { 484 return $locale_matches && ( $this->get_brand_currency() === get_woocommerce_currency() ); 485 } 486 } 487 487 488 /** 488 489 * Get the 3 letter ISO country code for current WC shop base country code (2 letter ISO) … … 492 493 public function get_shop_iso3_country_code(): string { 493 494 $country_iso2 = WC()->countries->get_base_country(); 494 return $this->convert_country_iso2_to_iso3( $country_iso2 );495 return Country::convert_country_iso2_to_iso3( $country_iso2 ); 495 496 } 496 497 … … 505 506 return in_array( $country_iso2, $eu_countries ) ? true : false; 506 507 } 507 508 /**509 * Get iso3 for iso2 country code510 *511 * @return string512 */513 public function convert_country_iso2_to_iso3( string $country ): string {514 $countries = apply_filters( 'faire_wc_country_iso2_to_iso3', array(515 'AF' => 'AFG', // Afghanistan.516 'AX' => 'ALA', // Aland Islands.517 'AL' => 'ALB', // Albania.518 'DZ' => 'DZA', // Algeria.519 'AS' => 'ASM', // American Samoa.520 'AD' => 'AND', // Andorra.521 'AO' => 'AGO', // Angola.522 'AI' => 'AIA', // Anguilla.523 'AQ' => 'ATA', // Antarctica.524 'AG' => 'ATG', // Antigua and Barbuda.525 'AR' => 'ARG', // Argentina.526 'AM' => 'ARM', // Armenia.527 'AW' => 'ABW', // Aruba.528 'AU' => 'AUS', // Australia.529 'AT' => 'AUT', // Austria.530 'AZ' => 'AZE', // Azerbaijan.531 'BS' => 'BHS', // Bahamas.532 'BH' => 'BHR', // Bahrain.533 'BD' => 'BGD', // Bangladesh.534 'BB' => 'BRB', // Barbados.535 'BY' => 'BLR', // Belarus.536 'BE' => 'BEL', // Belgium.537 'BZ' => 'BLZ', // Belize.538 'BJ' => 'BEN', // Benin.539 'BM' => 'BMU', // Bermuda.540 'BT' => 'BTN', // Bhutan.541 'BO' => 'BOL', // Bolivia.542 'BQ' => 'BES', // Bonaire, Saint Estatius and Saba.543 'BA' => 'BIH', // Bosnia and Herzegovina.544 'BW' => 'BWA', // Botswana.545 'BV' => 'BVT', // Bouvet Islands.546 'BR' => 'BRA', // Brazil.547 'IO' => 'IOT', // British Indian Ocean Territory.548 'BN' => 'BRN', // Brunei.549 'BG' => 'BGR', // Bulgaria.550 'BF' => 'BFA', // Burkina Faso.551 'BI' => 'BDI', // Burundi.552 'KH' => 'KHM', // Cambodia.553 'CM' => 'CMR', // Cameroon.554 'CA' => 'CAN', // Canada.555 'CV' => 'CPV', // Cape Verde.556 'KY' => 'CYM', // Cayman Islands.557 'CF' => 'CAF', // Central African Republic.558 'TD' => 'TCD', // Chad.559 'CL' => 'CHL', // Chile.560 'CN' => 'CHN', // China.561 'CX' => 'CXR', // Christmas Island.562 'CC' => 'CCK', // Cocos (Keeling) Islands.563 'CO' => 'COL', // Colombia.564 'KM' => 'COM', // Comoros.565 'CG' => 'COG', // Congo.566 'CD' => 'COD', // Congo, Democratic Republic of the.567 'CK' => 'COK', // Cook Islands.568 'CR' => 'CRI', // Costa Rica.569 'CI' => 'CIV', // Côte d\'Ivoire.570 'HR' => 'HRV', // Croatia.571 'CU' => 'CUB', // Cuba.572 'CW' => 'CUW', // Curaçao.573 'CY' => 'CYP', // Cyprus.574 'CZ' => 'CZE', // Czech Republic.575 'DK' => 'DNK', // Denmark.576 'DJ' => 'DJI', // Djibouti.577 'DM' => 'DMA', // Dominica.578 'DO' => 'DOM', // Dominican Republic.579 'EC' => 'ECU', // Ecuador.580 'EG' => 'EGY', // Egypt.581 'SV' => 'SLV', // El Salvador.582 'GQ' => 'GNQ', // Equatorial Guinea.583 'ER' => 'ERI', // Eritrea.584 'EE' => 'EST', // Estonia.585 'ET' => 'ETH', // Ethiopia.586 'FK' => 'FLK', // Falkland Islands.587 'FO' => 'FRO', // Faroe Islands.588 'FJ' => 'FIJ', // Fiji.589 'FI' => 'FIN', // Finland.590 'FR' => 'FRA', // France.591 'GF' => 'GUF', // French Guiana.592 'PF' => 'PYF', // French Polynesia.593 'TF' => 'ATF', // French Southern Territories.594 'GA' => 'GAB', // Gabon.595 'GM' => 'GMB', // Gambia.596 'GE' => 'GEO', // Georgia.597 'DE' => 'DEU', // Germany.598 'GH' => 'GHA', // Ghana.599 'GI' => 'GIB', // Gibraltar.600 'GR' => 'GRC', // Greece.601 'GL' => 'GRL', // Greenland.602 'GD' => 'GRD', // Grenada.603 'GP' => 'GLP', // Guadeloupe.604 'GU' => 'GUM', // Guam.605 'GT' => 'GTM', // Guatemala.606 'GG' => 'GGY', // Guernsey.607 'GN' => 'GIN', // Guinea.608 'GW' => 'GNB', // Guinea-Bissau.609 'GY' => 'GUY', // Guyana.610 'HT' => 'HTI', // Haiti.611 'HM' => 'HMD', // Heard Island and McDonald Islands.612 'VA' => 'VAT', // Holy See (Vatican City State).613 'HN' => 'HND', // Honduras.614 'HK' => 'HKG', // Hong Kong.615 'HU' => 'HUN', // Hungary.616 'IS' => 'ISL', // Iceland.617 'IN' => 'IND', // India.618 'ID' => 'IDN', // Indonesia.619 'IR' => 'IRN', // Iran.620 'IQ' => 'IRQ', // Iraq.621 'IE' => 'IRL', // Republic of Ireland.622 'IM' => 'IMN', // Isle of Man.623 'IL' => 'ISR', // Israel.624 'IT' => 'ITA', // Italy.625 'JM' => 'JAM', // Jamaica.626 'JP' => 'JPN', // Japan.627 'JE' => 'JEY', // Jersey.628 'JO' => 'JOR', // Jordan.629 'KZ' => 'KAZ', // Kazakhstan.630 'KE' => 'KEN', // Kenya.631 'KI' => 'KIR', // Kiribati.632 'KP' => 'PRK', // Korea, Democratic People's Republic of.633 'KR' => 'KOR', // Korea, Republic of (South).634 'KW' => 'KWT', // Kuwait.635 'KG' => 'KGZ', // Kyrgyzstan.636 'LA' => 'LAO', // Laos.637 'LV' => 'LVA', // Latvia.638 'LB' => 'LBN', // Lebanon.639 'LS' => 'LSO', // Lesotho.640 'LR' => 'LBR', // Liberia.641 'LY' => 'LBY', // Libya.642 'LI' => 'LIE', // Liechtenstein.643 'LT' => 'LTU', // Lithuania.644 'LU' => 'LUX', // Luxembourg.645 'MO' => 'MAC', // Macao S.A.R., China.646 'MK' => 'MKD', // Macedonia.647 'MG' => 'MDG', // Madagascar.648 'MW' => 'MWI', // Malawi.649 'MY' => 'MYS', // Malaysia.650 'MV' => 'MDV', // Maldives.651 'ML' => 'MLI', // Mali.652 'MT' => 'MLT', // Malta.653 'MH' => 'MHL', // Marshall Islands.654 'MQ' => 'MTQ', // Martinique.655 'MR' => 'MRT', // Mauritania.656 'MU' => 'MUS', // Mauritius.657 'YT' => 'MYT', // Mayotte.658 'MX' => 'MEX', // Mexico.659 'FM' => 'FSM', // Micronesia.660 'MD' => 'MDA', // Moldova.661 'MC' => 'MCO', // Monaco.662 'MN' => 'MNG', // Mongolia.663 'ME' => 'MNE', // Montenegro.664 'MS' => 'MSR', // Montserrat.665 'MA' => 'MAR', // Morocco.666 'MZ' => 'MOZ', // Mozambique.667 'MM' => 'MMR', // Myanmar.668 'NA' => 'NAM', // Namibia.669 'NR' => 'NRU', // Nauru.670 'NP' => 'NPL', // Nepal.671 'NL' => 'NLD', // Netherlands.672 'AN' => 'ANT', // Netherlands Antilles.673 'NC' => 'NCL', // New Caledonia.674 'NZ' => 'NZL', // New Zealand.675 'NI' => 'NIC', // Nicaragua.676 'NE' => 'NER', // Niger.677 'NG' => 'NGA', // Nigeria.678 'NU' => 'NIU', // Niue.679 'NF' => 'NFK', // Norfolk Island.680 'MP' => 'MNP', // Northern Mariana Islands.681 'NO' => 'NOR', // Norway.682 'OM' => 'OMN', // Oman.683 'PK' => 'PAK', // Pakistan.684 'PW' => 'PLW', // Palau.685 'PS' => 'PSE', // Palestinian Territory.686 'PA' => 'PAN', // Panama.687 'PG' => 'PNG', // Papua New Guinea.688 'PY' => 'PRY', // Paraguay.689 'PE' => 'PER', // Peru.690 'PH' => 'PHL', // Philippines.691 'PN' => 'PCN', // Pitcairn.692 'PL' => 'POL', // Poland.693 'PT' => 'PRT', // Portugal.694 'PR' => 'PRI', // Puerto Rico.695 'QA' => 'QAT', // Qatar.696 'RE' => 'REU', // Reunion.697 'RO' => 'ROU', // Romania.698 'RU' => 'RUS', // Russia.699 'RW' => 'RWA', // Rwanda.700 'BL' => 'BLM', // Saint Barthelemy.701 'SH' => 'SHN', // Saint Helena.702 'KN' => 'KNA', // Saint Kitts and Nevis.703 'LC' => 'LCA', // Saint Lucia.704 'MF' => 'MAF', // Saint Martin (French part).705 'SX' => 'SXM', // Sint Maarten / Saint Matin (Dutch part).706 'PM' => 'SPM', // Saint Pierre and Miquelon.707 'VC' => 'VCT', // Saint Vincent and the Grenadines.708 'WS' => 'WSM', // Samoa.709 'SM' => 'SMR', // San Marino.710 'ST' => 'STP', // Sao Tome and Principe.711 'SA' => 'SAU', // Saudi Arabia.712 'SN' => 'SEN', // Senegal.713 'RS' => 'SRB', // Serbia.714 'SC' => 'SYC', // Seychelles.715 'SL' => 'SLE', // Sierra Leone.716 'SG' => 'SGP', // Singapore.717 'SK' => 'SVK', // Slovakia.718 'SI' => 'SVN', // Slovenia.719 'SB' => 'SLB', // Solomon Islands.720 'SO' => 'SOM', // Somalia.721 'ZA' => 'ZAF', // South Africa.722 'GS' => 'SGS', // South Georgia/Sandwich Islands.723 'SS' => 'SSD', // South Sudan.724 'ES' => 'ESP', // Spain.725 'LK' => 'LKA', // Sri Lanka.726 'SD' => 'SDN', // Sudan.727 'SR' => 'SUR', // Suriname.728 'SJ' => 'SJM', // Svalbard and Jan Mayen.729 'SZ' => 'SWZ', // Swaziland.730 'SE' => 'SWE', // Sweden.731 'CH' => 'CHE', // Switzerland.732 'SY' => 'SYR', // Syria.733 'TW' => 'TWN', // Taiwan.734 'TJ' => 'TJK', // Tajikistan.735 'TZ' => 'TZA', // Tanzania.736 'TH' => 'THA', // Thailand.737 'TL' => 'TLS', // Timor-Leste.738 'TG' => 'TGO', // Togo.739 'TK' => 'TKL', // Tokelau.740 'TO' => 'TON', // Tonga.741 'TT' => 'TTO', // Trinidad and Tobago.742 'TN' => 'TUN', // Tunisia.743 'TR' => 'TUR', // Turkey.744 'TM' => 'TKM', // Turkmenistan.745 'TC' => 'TCA', // Turks and Caicos Islands.746 'TV' => 'TUV', // Tuvalu.747 'UG' => 'UGA', // Uganda.748 'UA' => 'UKR', // Ukraine.749 'AE' => 'ARE', // United Arab Emirates.750 'GB' => 'GBR', // United Kingdom.751 'US' => 'USA', // United States.752 'UM' => 'UMI', // United States Minor Outlying Islands.753 'UY' => 'URY', // Uruguay.754 'UZ' => 'UZB', // Uzbekistan.755 'VU' => 'VUT', // Vanuatu.756 'VE' => 'VEN', // Venezuela.757 'VN' => 'VNM', // Vietnam.758 'VG' => 'VGB', // Virgin Islands, British.759 'VI' => 'VIR', // Virgin Island, U.S..760 'WF' => 'WLF', // Wallis and Futuna.761 'EH' => 'ESH', // Western Sahara.762 'YE' => 'YEM', // Yemen.763 'ZM' => 'ZMB', // Zambia.764 'ZW' => 'ZWE', // Zimbabwe.765 ) );766 return isset( $countries[ $country ] ) ? $countries[ $country ] : $country;767 }768 508 769 509 /** … … 807 547 } 808 548 809 /**549 /** 810 550 * Determine faire geo constraint country or country_group based on WC base country 811 551 * … … 837 577 } 838 578 839 /**579 /** 840 580 * Optional override to suppress currency matching WC and Faire 841 581 * -
faire-for-woocommerce/tags/1.3.6/src/admin/class-wc-integration-faire.php
r2853863 r2864583 19 19 use Faire\Wc\Sync\Sync_Brand; 20 20 use Faire\Wc\Sync\Sync_Product_Linking; 21 use Faire\Wc\Sync\Sync_Product_Unlinking; 21 22 use Faire\Wc\Admin\Settings; 22 23 … … 106 107 new Sync_Product_Linking( new Product_Api(), new Settings() ), 107 108 'ajax_product_linking_manual_sync', 109 ) 110 ); 111 112 // Handles the Ajax call to unlink products 113 add_action( 114 'wp_ajax_faire_product_unlinking_manual_sync', 115 array( 116 new Sync_Product_Unlinking( new Settings() ), 117 'ajax_product_unlinking_sync', 108 118 ) 109 119 ); … … 551 561 'desc_tip' => true, 552 562 ), 553 563 // Faire product unlinking sync. 564 'product_unlinking_title' => array( 565 'title' => __( 'Unlink products', 'faire-for-woocommerce' ), 566 'type' => 'title', 567 'description' => __( 'Removes all links between wordpress products and faire products.', 'faire-for-woocommerce' ), 568 ), 569 'product_unlinking_manual_sync' => array( 570 'title' => __( 'Manual Unlink', 'faire-for-woocommerce' ), 571 'label' => __( 'Unlink all products now', 'faire-for-woocommerce' ), 572 'type' => 'button', 573 'description' => __( 'Unlink all wordpress products with faire products and variations.', 'faire-for-woocommerce' ), 574 'desc_tip' => true, 575 ), 554 576 ); 555 577 } -
faire-for-woocommerce/tags/1.3.6/src/class-faire.php
r2838583 r2864583 206 206 array( $this, 'handle_products_custom_query_var' ), 207 207 10, 208 2 209 ); 210 211 // Extends WC_Product_Query to allow retrieving products that have Faire product IDs 212 add_filter( 213 'woocommerce_product_data_store_cpt_get_products_query', 214 array( $this, 'handle_products_faire_meta_exists_custom_query_var' ), 215 11, 208 216 2 209 217 ); … … 330 338 } 331 339 340 /** 341 * Handles custom query vars to get products. 342 * 343 * @param array $query - Args for WP_Query. 344 * @param array $query_vars - Query vars from WC_Product_Query. 345 * 346 * @return array modified $query 347 */ 348 public function handle_products_faire_meta_exists_custom_query_var( 349 array $query, 350 array $query_vars 351 ): array { 352 $settings = new Settings(); 353 354 if ( isset( $query_vars['_faire_id_exists'] ) && '' !== $query_vars['_faire_id_exists'] ) { 355 $query['meta_query'][] = array( 356 'key' => $settings->get_meta_faire_product_id(), 357 'value' => '', 358 'compare' => '!=', 359 ); 360 } 361 362 return $query; 363 } 364 332 365 /** 333 366 * Load Localisation files. -
faire-for-woocommerce/tags/1.3.6/src/sync/class-sync-product-linking.php
r2853863 r2864583 15 15 use Faire\Wc\Sync\Sync_Product_Scheduler; 16 16 use Faire\Wc\Utils; 17 use Faire\Wc\Woocommerce\Product as WC_Product;18 17 19 18 if ( ! defined( 'ABSPATH' ) ) { … … 44 43 */ 45 44 private Settings $settings; 45 46 /** 47 * The scheduler. 48 * 49 * @var Sync_Product_Scheduler 50 */ 51 private Sync_Product_Scheduler $scheduler; 46 52 47 53 /** … … 172 178 $result = array(); 173 179 180 $args = array(); 174 181 $default_args = array( 175 182 'page' => 1, … … 947 954 $row['In stock?'] = 1; 948 955 } 949 $row['Stock'] = ( isset($faire_ variant->available_quantity) && $faire_product->variants[0]->available_quantity !== '' ) ? $faire_product->variants[0]->available_quantity : ''; // Leave empy string for no stock management956 $row['Stock'] = ( isset($faire_product->variants[0]->available_quantity) && $faire_product->variants[0]->available_quantity !== '' ) ? $faire_product->variants[0]->available_quantity : ''; // Leave empy string for no stock management 950 957 951 958 $image_array = []; … … 1256 1263 1257 1264 $product_rows = $this->get_products_create_csv(); 1258 foreach ( $product_rows as $rows ) { 1259 $parent_product = null; // reset for every row group 1260 foreach ( $rows as $row ) { 1261 if ( 'simple' === $row['Type'] || 'variable' === $row['Type'] ) { 1262 $product = null; 1263 try { 1264 $product = $this->create_product( $row ); 1265 } catch ( \WC_Data_Exception $e ) { 1266 error_log('create_product WC_Data_Exception: '.$e->getMessage() ); 1267 } 1268 if ( $product ) { 1269 $parent_product = $product; // Set parent id for use on variations (if nay) 1270 $results[] = Utils::create_import_success_entry( 1271 sprintf( 1272 __( 'Created faire product %s as product id %s.', 'faire-for-woocommerce' ), 1273 '"'.$row['Name'].'"', 1274 $product->get_id() 1275 ) 1276 ); 1277 } else { 1278 $results[] = Utils::create_import_error_entry( 1279 sprintf( 1280 __( 'Failed to create faire product %s as product.', 'faire-for-woocommerce' ), 1281 '"'.$row['Name'].'"', 1282 ) 1283 ); 1284 } 1285 } elseif ( 'variation' === $row['Type'] ) { 1286 1287 // If we have a parent from a previous parent row 1288 if ( $parent_product ) { 1289 $row['Parent'] = 'id:'.$parent_product->get_id(); 1290 } 1291 1292 $variation = null; 1293 try { 1294 $variation = $this->create_variation( $row, $parent_product ); 1295 } catch ( \WC_Data_Exception $e ) { 1296 error_log('create_variation WC_Data_Exception: '.$e->getMessage() ); 1297 } 1298 if ( $variation ) { 1299 $results[] = Utils::create_import_success_entry( 1300 sprintf( 1301 __( 'Created faire variant %s on product id %s.', 'faire-for-woocommerce' ), 1302 '"'.$row['Name'].'"', 1303 $variation->get_id() 1304 ) 1305 ); 1306 } else { 1307 $results[] = Utils::create_import_error_entry( 1308 sprintf( 1309 __( 'Failed to create faire variant %s on product %s.', 'faire-for-woocommerce' ), 1310 '"'.$row['Name'].'"', 1311 $row['Parent'] 1312 ) 1313 ); 1314 } 1315 } 1316 } 1317 } 1265 if ( $product_rows ) { 1266 foreach ( $product_rows as $rows ) { 1267 $parent_product = null; // reset for every row group 1268 foreach ( $rows as $row ) { 1269 if ( 'simple' === $row['Type'] || 'variable' === $row['Type'] ) { 1270 $product = null; 1271 try { 1272 $product = $this->create_product( $row ); 1273 } catch ( \WC_Data_Exception $e ) { 1274 error_log('create_product WC_Data_Exception: '.$e->getMessage() ); 1275 } 1276 if ( $product ) { 1277 $parent_product = $product; // Set parent id for use on variations (if nay) 1278 $results[] = Utils::create_import_success_entry( 1279 sprintf( 1280 __( 'Created faire product %s as product id %s.', 'faire-for-woocommerce' ), 1281 '"'.$row['Name'].'"', 1282 $product->get_id() 1283 ) 1284 ); 1285 } else { 1286 $results[] = Utils::create_import_error_entry( 1287 sprintf( 1288 __( 'Failed to create faire product %s as product.', 'faire-for-woocommerce' ), 1289 '"'.$row['Name'].'"', 1290 ) 1291 ); 1292 } 1293 } elseif ( 'variation' === $row['Type'] ) { 1294 1295 // If we have a parent from a previous parent row 1296 if ( $parent_product ) { 1297 $row['Parent'] = 'id:'.$parent_product->get_id(); 1298 } 1299 1300 $variation = null; 1301 try { 1302 $variation = $this->create_variation( $row, $parent_product ); 1303 } catch ( \WC_Data_Exception $e ) { 1304 error_log('create_variation WC_Data_Exception: '.$e->getMessage() ); 1305 } 1306 if ( $variation ) { 1307 $results[] = Utils::create_import_success_entry( 1308 sprintf( 1309 __( 'Created faire variant %s on product id %s.', 'faire-for-woocommerce' ), 1310 '"'.$row['Name'].'"', 1311 $variation->get_id() 1312 ) 1313 ); 1314 } else { 1315 $results[] = Utils::create_import_error_entry( 1316 sprintf( 1317 __( 'Failed to create faire variant %s on product %s.', 'faire-for-woocommerce' ), 1318 '"'.$row['Name'].'"', 1319 $row['Parent'] 1320 ) 1321 ); 1322 } 1323 } 1324 } 1325 } 1326 } 1318 1327 return $results; 1319 1328 } … … 1327 1336 $results = []; 1328 1337 $product_rows = $this->get_variants_create_csv(); 1329 foreach ( $product_rows as $rows ) {1330 foreach ( $rows as $row) {1331 $variation = null; 1332 try { 1333 $variation = $this->create_variation( $row ); 1334 } catch ( \WC_Data_Exception $e ) { 1335 error_log('create_variation WC_Data_Exception: '.$e->getMessage() ); 1336 } 1337 1338 if ( $variation ) { 1339 $results[] = Utils::create_import_success_entry( 1340 sprintf(1341 __( 'Created faire variant %s on product id %s.', 'faire-for-woocommerce' ), 1342 $faire_variant->id,1343 $variation->get_id()1344 )1345 );1346 } else {1347 $results[] = Utils::create_import_error_entry(1348 sprintf(1349 __( 'Failed to create faire variant %son product %s.', 'faire-for-woocommerce' ),1350 $faire_variant->id, 1351 $row['Parent'] 1352 ) 1353 ); 1354 }1355 } 1356 } 1338 if ( $product_rows ) { 1339 foreach ( $product_rows as $rows ) { 1340 foreach ( $rows as $row ) { 1341 $variation = null; 1342 try { 1343 $variation = $this->create_variation( $row ); 1344 } catch ( \WC_Data_Exception $e ) { 1345 error_log('create_variation WC_Data_Exception: '.$e->getMessage() ); 1346 } 1347 1348 if ( $variation ) { 1349 $results[] = Utils::create_import_success_entry( 1350 sprintf( 1351 __( 'Created faire variant on product id %s.', 'faire-for-woocommerce' ), 1352 $variation->get_id() 1353 ) 1354 ); 1355 } else { 1356 $results[] = Utils::create_import_error_entry( 1357 sprintf( 1358 __( 'Failed to create faire variant on product %s.', 'faire-for-woocommerce' ), 1359 $row['Parent'] 1360 ) 1361 ); 1362 } 1363 } 1364 } 1365 } 1357 1366 return $results; 1358 1367 } -
faire-for-woocommerce/tags/1.3.6/src/sync/class-sync-product.php
r2853863 r2864583 14 14 use Faire\Wc\Utils; 15 15 use Faire\Wc\Sync\Sync_Product_Scheduler; 16 use Faire\Wc\Sync\Sync_Product_Unlinking; 16 17 17 18 if ( ! defined( 'ABSPATH' ) ) { … … 257 258 */ 258 259 public function bulk_actions( $actions ) { 259 $actions['faire_unpublished'] = __( 'Change Faire lifecycle state to unpublished', 'faire-for-woocommerce' ); 260 $actions['faire_published'] = __( 'Change Faire lifecycle state to published', 'faire-for-woocommerce' ); 261 $actions['faire_draft'] = __( 'Change Faire lifecycle state to draft', 'faire-for-woocommerce' ); 260 $actions['faire_unpublished'] = __( 'Change Faire lifecycle state to unpublished', 'faire-for-woocommerce' ); 261 $actions['faire_published'] = __( 'Change Faire lifecycle state to published', 'faire-for-woocommerce' ); 262 $actions['faire_draft'] = __( 'Change Faire lifecycle state to draft', 'faire-for-woocommerce' ); 263 $actions['faire_unlink_product'] = __( 'Unlink from Faire product', 'faire-for-woocommerce' ); 262 264 return $actions; 263 265 } 264 266 265 267 /** 266 * Make the action from selected orders.268 * Handle WP Admin products bulk actions 267 269 */ 268 270 public function handle_bulk_actions( $redirect_to, $action, $post_ids ) { 269 if ( ! in_array( $action, array( 'faire_unpublished', 'faire_published', 'faire_draft' ), true ) ) {271 if ( ! in_array( $action, array( 'faire_unpublished', 'faire_published', 'faire_draft', 'faire_unlink_product' ), true ) ) { 270 272 return $redirect_to; 271 273 } … … 274 276 $bulk_lifecycle_state = ''; 275 277 276 if ( 'faire_unpublished' === $action ) { 277 $bulk_lifecycle_state = 'UNPUBLISHED'; 278 } elseif ( 'faire_published' === $action ) { 279 $bulk_lifecycle_state = 'PUBLISHED'; 280 } elseif ( 'faire_draft' === $action ) { 281 $bulk_lifecycle_state = 'DRAFT'; 282 } 283 284 foreach ( $post_ids as $post_id ) { 285 $product = wc_get_product( $post_id ); 286 287 if ( 'simple' === $product->get_type() ) { 288 $product->update_meta_data( 'woocommerce_faire_product_lifecycle_state', $bulk_lifecycle_state ); 289 $product->save(); 290 } elseif ( 'variable' === $product->get_type() ) { 291 // Save child variation lifecycle state. 292 $variations = $product->get_children(); // use get_children instead of get_available_variations() so that all are returned. 293 if ( $variations ) { 294 foreach ( $variations as $variation_id ) { 295 $variation = wc_get_product( $variation_id ); 296 if ( $variation ) { 297 $variation->update_meta_data( 'woocommerce_faire_product_variation_lifecycle_state', $bulk_lifecycle_state ); 298 $variation->save(); 299 } 300 } 301 } 302 // Save parent product lifecycle state. 303 $product->update_meta_data( 'woocommerce_faire_product_lifecycle_state', $bulk_lifecycle_state ); 304 $product->save(); 305 } 306 307 $processed_ids[] = $post_id; 308 } 309 278 // Handle bulk lifecycle changes 279 if ( in_array( $action, array('faire_unpublished', 'faire_published', 'faire_draft' ) ) ) { 280 281 if ( 'faire_unpublished' === $action ) { 282 $bulk_lifecycle_state = 'UNPUBLISHED'; 283 } elseif ( 'faire_published' === $action ) { 284 $bulk_lifecycle_state = 'PUBLISHED'; 285 } elseif ( 'faire_draft' === $action ) { 286 $bulk_lifecycle_state = 'DRAFT'; 287 } 288 289 foreach ( $post_ids as $post_id ) { 290 $product = wc_get_product( $post_id ); 291 292 if ( 'simple' === $product->get_type() ) { 293 $product->update_meta_data( 'woocommerce_faire_product_lifecycle_state', $bulk_lifecycle_state ); 294 $product->save(); 295 } elseif ( 'variable' === $product->get_type() ) { 296 // Save child variation lifecycle state. 297 $variations = $product->get_children(); // use get_children instead of get_available_variations() so that all are returned. 298 if ( $variations ) { 299 foreach ( $variations as $variation_id ) { 300 $variation = wc_get_product( $variation_id ); 301 if ( $variation ) { 302 $variation->update_meta_data( 'woocommerce_faire_product_variation_lifecycle_state', $bulk_lifecycle_state ); 303 $variation->save(); 304 } 305 } 306 } 307 // Save parent product lifecycle state. 308 $product->update_meta_data( 'woocommerce_faire_product_lifecycle_state', $bulk_lifecycle_state ); 309 $product->save(); 310 } 311 312 $processed_ids[] = $post_id; 313 } 314 315 } elseif ( 'faire_unlink_product' === $action ) { // Handle bulk unlink product 316 317 $unlinking = new Sync_Product_Unlinking( $this->settings ); 318 $unlinked_ids = $unlinking->unlink_products( $post_ids ); 319 320 $processed_ids = $unlinked_ids; 321 } 322 310 323 $redirect_to = add_query_arg( 311 324 array( … … 321 334 322 335 /** 323 * Undocumented function336 * Show an admin message after bulk actions 324 337 * 325 338 * @return void … … 343 356 // translators: %s single product, %s product count. 344 357 $message = sprintf( _n( '%s product set Lifecycle State to Draft.', '%s products set Lifecycle State to Draft.', $count, 'faire-for-woocommerce' ), $count ); 358 } elseif ( 'faire_unlink_product' === $action ) { 359 // translators: %s single product, %s product count. 360 $message = sprintf( _n( '%s products unlinked.', '%s products were unlinked.', $count, 'faire-for-woocommerce' ), $count ); 345 361 } 346 362 $output = $message ? sprintf( '<div id="message" class="updated fade"><p>%s</p></div>', $message ) : ''; -
faire-for-woocommerce/tags/1.3.6/src/woocommerce/class-order.php
r2849950 r2864583 9 9 10 10 use Exception; 11 use Faire\Wc\Country; 11 12 use Faire\Wc\Faire\Order as Faire_Order; 12 13 use Faire\Wc\Faire\Order_Status as Faire_Order_Status; … … 223 224 'state' => $address->state_code ?? '', 224 225 'postcode' => $address->postal_code, 225 'country' => $address->country_code,226 'country' => Country::convert_country_iso3_to_iso2( $address->country_code ), 226 227 ); 227 228 -
faire-for-woocommerce/trunk/readme.txt
r2853863 r2864583 4 4 Requires at least: 4.7 5 5 Tested up to: 6.0 6 Stable tag: 1.3. 46 Stable tag: 1.3.6 7 7 Requires PHP: 7.4 8 8 WC requires at least: 6.0
Note: See TracChangeset
for help on using the changeset viewer.