CTX Feed – WooCommerce Product Feed Manager Plugin - Version 4.4.26

Version Description

(2021-09-24) = * Fixed: UI issue fixed. * Fixed: Google category mapping issue fixed.

Download this release

Release Info

Developer wahid0003
Plugin Icon 128x128 CTX Feed – WooCommerce Product Feed Manager Plugin
Version 4.4.26
Comparing to
See all releases

Code changes from version 4.4.25 to 4.4.26

README.txt CHANGED
@@ -5,7 +5,7 @@ Tags: Product Feed, WooCommerce, Google Shopping, Google Merchant, Facebook Cata
5
  Requires at least: 4.4
6
  Tested Up To: 5.8
7
  Requires PHP: 5.6
8
- Stable tag: 4.4.25
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -516,6 +516,10 @@ Using pro version:
516
 
517
  == Changelog ==
518
 
 
 
 
 
519
  = 4.4.25 (2021-09-17) =
520
  * Fixed: CTX Custom Field backward compatability issue fixed.
521
 
5
  Requires at least: 4.4
6
  Tested Up To: 5.8
7
  Requires PHP: 5.6
8
+ Stable tag: 4.4.26
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
516
 
517
  == Changelog ==
518
 
519
+ = 4.4.26 (2021-09-24) =
520
+ * Fixed: UI issue fixed.
521
+ * Fixed: Google category mapping issue fixed.
522
+
523
  = 4.4.25 (2021-09-17) =
524
  * Fixed: CTX Custom Field backward compatability issue fixed.
525
 
admin/js/woo-feed-admin.js CHANGED
@@ -231,6 +231,7 @@
231
  if (!self.form.length) return;
232
  helper.common();
233
  // noinspection JSUnresolvedVariable
 
234
  $(document).trigger(new jQuery.Event('feedEditor.init', {
235
  target: this.form
236
  }));
@@ -1284,5 +1285,27 @@
1284
 
1285
  });
1286
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1287
 
1288
  })(jQuery, window, document, wp.ajax, wpf_ajax_obj);
231
  if (!self.form.length) return;
232
  helper.common();
233
  // noinspection JSUnresolvedVariable
234
+ $(document).trigger('feed_editor_init');
235
  $(document).trigger(new jQuery.Event('feedEditor.init', {
236
  target: this.form
237
  }));
1285
 
1286
  });
1287
 
1288
+ /*
1289
+ * Issue fix for feed edit page unsupported `Feed Type` not disabling
1290
+ *
1291
+ * @since 4.4.22
1292
+ * */
1293
+ $(document).on( "feed_editor_init", function(){
1294
+
1295
+ let types = $('.merchant-info-section.feed_file_type .data').html().split(",").map(function(t) {
1296
+ return t.trim().toLowerCase();
1297
+ });
1298
+
1299
+ let feedType = $("#feedType");
1300
+
1301
+ if (types.length) {
1302
+ feedType.find('option').each(function() {
1303
+ let opt = $(this);
1304
+ opt.val() && !helper.in_array(opt.val(), types) ? opt.disabled(!0) : opt.disabled(!1);
1305
+ });
1306
+ if (types.length === 1) feedType.find('option[value="' + types[0] + '"]').attr('selected', 'selected');
1307
+ } else feedType.find('option').disabled(!1);
1308
+
1309
+ } );
1310
 
1311
  })(jQuery, window, document, wp.ajax, wpf_ajax_obj);
admin/js/woo-feed-admin.min.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _createClass(e,t,o){return t&&_defineProperties(e.prototype,t),o&&_defineProperties(e,o),e}!function(s,n,c,l,d){s.fn.disabled=function(o){return s(this).each(function(){var e=s(this),t="disabled";void 0!==e.prop(t)?e.prop(t,void 0===o||!0===o):!0===o?e.addClass(t):e.removeClass(t)}),self},s.fn.isDisabled=function(){var e=s(this),t="disabled";return void 0!==e.prop(t)?e.prop(t):e.hasClass(t)};function e(e){s(e.currentTarget).removeClass(function(e,t){return(t.match(/\btooltipped-\S+/g)||[]).join(" ")}).removeClass("tooltipped").removeAttr("aria-label")}function a(e,t){s(e).addClass("tooltipped tooltipped-s").attr("aria-label",t)}function r(e,t){return s.extend(!0,{},e,t)}function t(){o=s(".toClipboard"),!ClipboardJS.isSupported()||/iPhone|iPad/i.test(navigator.userAgent)?o.find("img").hide(0):(o.each(function(){s(this).on("mouseleave",e).on("blur",e)}),new ClipboardJS(".toClipboard").on("error",function(e){var t,o;a(e.trigger,(t=e.action,o="cut"===t?"X":"C",/iPhone|iPad/i.test(navigator.userAgent)?"No support :(":/Mac/i.test(navigator.userAgent)?"Press ⌘-"+o+" to "+t:"Press Ctrl-"+o+" to "+t))}).on("success",function(e){a(e.trigger,"Copied")}))}var o,i,f=function(){function n(e,t,o){_classCallCheck(this,n),this.productCustomFields(e,t,o)}return _createClass(n,[{key:"cacheClear",value:function(){var e={action:"woo_feed_product_attribute_cache_remove",nonce:wpf_ajax_obj.ajax.nonce};s.ajax({method:"POST",url:wpf_ajax_obj.wpf_ajax_url,data:e})}},{key:"productCustomFields",value:function(t,e,o){var n=this,a=1<arguments.length&&void 0!==e&&e,r=2<arguments.length?o:void 0,i={action:"woo_feed_custom_fields_status_change",nonce:wpf_ajax_obj.ajax.nonce,field:t,status:a,isTaxonomy:r};s.ajax({method:"POST",url:wpf_ajax_obj.wpf_ajax_url,data:i,success:function(e){e.success?n.cacheClear():console.log(e),s("#"+t+"-switcher").closest("td").find(".switch-loader").hide()}})}}]),n}(),_={in_array:function(e,t){try{return-1!==t.indexOf(e)}catch(e){return!1}},selectize_render_item:function(e,t){return'<div class="item wapk-selectize-item">'.concat(t(e.text),"</div>")},ajax_fail:function(e){console.warn(e),alert(e.hasOwnProperty("statusText")&&e.hasOwnProperty("status")?d.ajax.error+"\n"+e.statusText+" ("+e.status+")":e)},sortable:function(e,o,n,a){return(e||s(".sorted_table")).each(function(){var e=s(this),t=e.find("tbody > tr:eq(0) > td").length||n||9;e.wf_sortable(r({containerSelector:"table",itemPath:"> tbody",itemSelector:"tr",handle:"i.wf_sortedtable",placeholder:'<tr class="placeholder"><td colspan="'.concat(t,'"></td></tr>'),onDrop:function(e,t,o,n){e.removeClass(t.group.options.draggedClass).removeAttr("style"),s("body").removeClass(t.group.options.bodyClass),a&&"function"==typeof a&&a(e,t,o,n)}},o))})},selectize:function(e,t){return(e||s("select.selectize")).not(".selectized").not(".selectize-google-category").each(function(){var e=s(this);e.selectize(r({create:e.data("create")||!1,plugins:e.data("plugins")?e.data("plugins").split(",").map(function(e){return e.trim()}):[],render:{item:_.selectize_render_item}},t))})},fancySelect:function(e,t){return(e||s("select.fancySelect")).not(".FancySelectInit").each(function(){s(this).fancySelect(r({maxItemShow:3},t))})},reindex_config_table:function(){s("#table-1").find("tbody tr").each(function(o,e){s(e).find("[name]").each(function(e,t){s(t).attr("name",s(t).attr("name").replace(/(\[\d\])/g,"[".concat(o,"]")))})})},common:function(){_.sortable(s(".sorted_table"),{},9,_.reindex_config_table),_.selectize(),_.fancySelect(s(".outputType"))}},u={form:null,init:function(){this.form=s(".generateFeed"),this.form.length&&(_.common(),s(c).trigger(new jQuery.Event("feedEditor.init",{target:this.form})))},renderMerchantInfo:function(o,n,a){function e(e){var t;a.hasOwnProperty(e)&&(o.find(".merchant-info-section."+e+" .data").html(a[e]),"feed_file_type"===e&&((t=a[e].split(",").map(function(e){return e.trim().toLowerCase()}).filter(function(e){return""!==e&&e!==d.na.toLowerCase()})).length?(n.find("option").removeAttr("selected").each(function(){var e=s(this);e.val()&&!_.in_array(e.val(),t)?e.disabled(!0):e.disabled(!1)}),1===t.length&&n.find('option[value="'+t[0]+'"]').attr("selected","selected")):n.find("option").disabled(!1)))}for(var t in a)e(t);o.find(".spinner").removeClass("is-active"),n.disabled(!1),n.trigger("change"),s(c).trigger("woo_feed_config_loaded"),n.parent().find(".spinner").removeClass("is-active")},renderMerchantTemplate:function(o,n){function e(t){if(n.hasOwnProperty(t))if("tabs"===t)o.html(n[t]);else{var e=s('[name="'+t+'"]');e.length&&e.each(function(){var e=s(this);e.is("select")?e.find('[value="'+n[t]+'"]').prop("selected",!0):(e.is("[type=checkbox]")||e.is("[type=radio]"))&&e.val()===n[t]?e.prop("checked",!0):e.val(n[t])}).trigger("change")}}for(var t in n)e(t);u.init()}},p=[],h=[],g=function(){function e(){_classCallCheck(this,e),this._feed=d.generator.feed,this._limit=d.generator.limit,this._progress=0,this._timer=null,this._color=!1,this._total_batch=0,this._current_batch=0,this._product_ids=[],this._progress_per_batch=0,this._refresh=!0,this._regenerate=d.generator.regenerate,n.isRegenerating=!1,this._all_btn=s(".wpf_regenerate"),this._current_btn=s("#".concat(this._feed.replace("wf_config","wf_feed_"))),this._current_btn_label=""}return _createClass(e,[{key:"init",value:function(){var o=this;""!==this._feed&&this._regenerate&&!1===n.isRegenerating&&this.generate();var e=n.location.search;return"webappick-manage-feeds"===new URLSearchParams(e).get("page")&&s("body").addClass("woo-import-popup-body"),s(c).on("click",".woo-feed-campaign-close-button",function(e){e.preventDefault(),s(this).parent(".woo-feed-promotion").hide();var t=s(this).data("condition");1===t&&l.post("woo_feed_hide_promotion",{_ajax_nonce:d.nonce,condition:t}).then(function(e){o._log(e)}).fail(function(e){o._log(e),o._updateProgressStatus(e.message),o._color="red"})}),s(c).on("click",".wpf_regenerate",function(e){e.preventDefault(),o._current_btn=s(this),o._current_btn.hasClass("disabled")||!0===n.isRegenerating||(o._feed=o._current_btn.attr("id").replace("wf_feed_","wf_config"),""!==o._feed&&o.generate())}),this}},{key:"_block_button",value:function(){this._all_btn.length&&this._all_btn.addClass("disabled"),this._current_btn.length&&(this._current_btn.find("span").addClass("wpf_spin reverse_spin"),this._current_btn_label=this._current_btn.attr("title"),this._current_btn.attr("aria-label",d.regenerate).attr("title",d.regenerate))}},{key:"_unblock_button",value:function(){this._all_btn.length&&this._all_btn.removeClass("disabled"),this._current_btn.length&&(this._current_btn.find("span").removeClass("wpf_spin"),this._current_btn.find("span").removeClass("reverse_spin"),this._current_btn.attr("aria-label",this._current_btn_label).attr("title",this._current_btn_label))}},{key:"generate",value:function(){var t=this,o=this;n.isRegenerating=!0,this._block_button(),this._resetProgressBar(),this._progressBarActive(),this._log("Counting Total Products"),this._updateProgressStatus("Fetching products."),this._get_product_ids().then(function(e){t._progress=10,o._log({response:e}),e.success?(o._log("Total ".concat(e.total," Products found.")),o._product_ids=e.product,o._total_batch=t._product_ids.length,o._current_batch=0,o._progress_per_batch=(90-t._progress)/t._total_batch,o._process_batch(),o._updateProgressStatus("Processing Products...")):o._updateProgressStatus(e.data.message)}).fail(function(e){o._log(e),o._updateProgressStatus(e.message),o._color="red",setTimeout(function(){o._stopProgressBar(),o._unblock_button()},1500)})}},{key:"_get_product_ids",value:function(){return this._progress=5,l.post("get_product_information",{_ajax_nonce:d.nonce,feed:this._feed,limit:this._limit})}},{key:"_process_batch",value:function(){var t=this,e="Processing Batch ".concat(this._current_batch+1," of ").concat(this._total_batch);this._updateProgressStatus(e),this._log(e),l.post("make_batch_feed",{_ajax_nonce:d.nonce,feed:this._feed,products:this._product_ids[this._current_batch],loop:this._current_batch}).then(function(e){t._current_batch++,t._log("Batch ".concat(t._current_batch," Completed")),t._log(e),t._current_batch<t._total_batch&&(t._process_batch(),t._progress+=t._progress_per_batch),t._current_batch===t._total_batch&&t._save_feed_file()}).fail(function(e){t._log(e),t._updateProgressStatus(e.message),t._color="red",setTimeout(function(){t._stopProgressBar(),t._unblock_button()},1500)})}},{key:"_save_feed_file",value:function(){var t=this;this._log("Saving feed file"),this._updateProgressStatus("Saving feed file"),l.post("save_feed_file",{_ajax_nonce:d.nonce,feed:this._feed}).then(function(e){t._log(e),t._progress=100,t._refresh&&(n.location.href="".concat(d.pages.list.feed,"&link=").concat(e.url,"&cat=").concat(e.cat)),setTimeout(function(){t._stopProgressBar(),setTimeout(function(){t._resetProgressBar(!0),t._unblock_button()},3e3)},2500)}).fail(function(e){t._log(e),t._updateProgressStatus(e.message),t._color="red",setTimeout(function(){t._stopProgressBar(),t._unblock_button()},1500)})}},{key:"_log",value:function(e){return d.wpf_debug&&console.log(e),this}},{key:"_progressBarActive",value:function(e){var t=0<arguments.length&&void 0!==e?e:0,o=this;return this._toggleProgressBar(!0),this._timer=setInterval(function(){o._updateProgressBar()},t||1e3),this}},{key:"_stopProgressBar",value:function(){return clearInterval(this._timer),this}},{key:"_resetProgressBar",value:function(e){return this._toggleProgressBar(!1),this._updateProgressStatus(""),clearInterval(this._timer),this._color=!1,this._timer=null,this._progress=0,e&&this._updateProgressBar(),this}},{key:"_toggleProgressBar",value:function(e){var t=s("#feed_progress_table");return e?t.show():t.hide(),this}},{key:"_updateProgressStatus",value:function(e){return s(".feed-progress-status").html(e),this}},{key:"_getErrorMessageByCode",value:function(e){s(".feed-progress-status").css({color:this._color}),s(".feed-progress-percentage").css({color:this._color}),s(".wpf_spin").css({color:this._color});var t=e.status+" : "+e.statusText+". ";500===e.status&&(t+="Please increase your PHP max_execution_time. Please <a target='_blank' href='https://webappick.com/docs/woo-feed/faq-for-woocommerce-product-feed/how-to-solve-processing-10-feed-generation-stuck-error/'>read this doc</a>."),this._updateProgressStatus(t)}},{key:"_updateProgressBar",value:function(){var e=s(".feed-progress-percentage"),t=s(".feed-progress-bar-fill"),o="".concat(Math.round(this._progress),"%");t.css({width:o}),e.text(o)}}]),e}();n.wf={helper:_,feedEditor:u,generator:g},s(n).on("load",function(){null!==s(location).attr("href").match(/webappick.*feed/g)&&s("#wpbody-content").addClass("woofeed-body-content");var e=n.location.search;new URLSearchParams(e).get("action");t(),postboxes.add_postbox_toggles(pagenow),(new g).init(),""!==d.generator.feed&&d.generator.regenerate,u.init(),_.common(),s(".wfmasterTooltip").hover(function(){var e=s(this),t=e.attr("wftitle");e.data("tipText",t).removeAttr("wftitle"),s('<p class="wftooltip"></p>').text(t).appendTo("body").fadeIn("slow")},function(){var e=s(this);e.attr("wftitle",e.data("tipText")),s(".wftooltip").remove()}).mousemove(function(e){s(".wftooltip").css({top:e.pageY+10,left:e.pageX+20})}),s(".generateFeed").validate(),s(c).on("blur",'input[name="wfDAttributeName"]',function(e){e.preventDefault();var t=s(this).val();t=(t=t.toLowerCase()).split(" ").join("_"),s("#wfDAttributeCode").val(t)}).on("click","[data-toggle_slide]",function(e){e.preventDefault(),s(s(this).data("toggle_slide")).slideToggle("fast")}).on("click","#wf_newRow",function(){var e=s("#table-1 tbody"),t=s("#feed_config_template").text().trim().replace(/__idx__/g,e.find("tr").length);e.append(t),_.fancySelect(s(".outputType"))}).on("click",".single-feed-delete",function(e){e.preventDefault(),confirm(d.form.del_confirm)&&(n.location.href=s(this).attr("val"))}).on("click",".wf_clean_cache_wrapper",function(e){e.preventDefault();var t=s(".woo-feed-clean-cache-nonce").val(),o=s(".woo-feed-cache-loader");o.show(),l.post("clear_cache_data",{_ajax_clean_nonce:t}).then(function(e){e.success&&(o.hide(),location.reload())}).fail(function(e){console.log("something wrong")})}).on("click","#woo-feed-copy-status-btn",function(e){e.preventDefault();var t=s("#woo-feed-copy-status-btn"),o=s("#woo-feed-status-area");t.val("Copied"),o.css("visibility","visible"),o.select(),c.execCommand("copy")}).on("change",".wf_attr.wf_attributes",function(e){e.preventDefault(),s(".fancy-picker-picked").trigger("click");var t,o,n=s(this).val(),a=s(this).parents("tr").find(".outputType"),r=s(this).parents("tr").find(".fancy-picker-content .fancy-picker-option"),i=s(this).parents("tr").find(".fancy-picker-data span");o=["price","current_price","sale_price","price_with_tax","current_price_with_tax","sale_price_with_tax","shipping_cost"].includes(n)?(t="for_price","Price"):""!==n&&-1!==n.indexOf("wf_taxo")?(t="for_custom_taxo","parent_if_empty"):(t="for_all","Default"),r.removeClass("selected"),"for_custom_taxo"!==t&&"for_price"!==t||r.each(function(e){o===s(this).text()&&(s(this).addClass("selected"),i.text(o),a.find("option").text(o),a.find("option").val(s(this).data("value")))})}).on("click","#doaction, #doaction2",function(){return confirm(d.form.del_confirm_multi)}).on("change",".dType",function(){var e=s(this),t=e.val(),o=e.closest("tr");"pattern"===t?(o.find(".value_attribute").hide(),o.find(".value_pattern").show()):"attribute"===t?(o.find(".value_attribute").show(),o.find(".value_pattern").hide()):"remove"===t&&(o.find(".value_attribute").hide(),o.find(".value_pattern").hide())}).on("click",".delRow",function(e){e.preventDefault(),s(this).closest("tr").remove(),_.reindex_config_table()}).on("submit","#generateFeed",function(){s(this).validate(),s(this).valid()&&s(".makeFeedResponse").show().html('<b style="color: darkblue;"><i class="dashicons dashicons-sos wpf_spin"></i> '.concat(d.form.generate,"</b>"))}).on("submit","#updatefeed",function(e,t){s(this).validate(),s(this).valid()&&s(".makeFeedResponse").show().html('<b style="color: darkblue;"><i class="dashicons dashicons-sos wpf_spin"></i> '.concat(t&&t.save?d.form.save:d.form.generate,"</b>"))}).on("ready woo_feed_config_loaded",function(){"0"===s("#ftpenabled").val()?(s(".google-merchant-message").hide("slow"),s(".woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select").attr("disabled","disabled")):("google"===s("#provider").val()?s(".google-merchant-message").show("slow"):s(".google-merchant-message").hide("slow"),s(".woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select").removeAttr("disabled")),s("#ftpenabled").on("change",function(){"0"===s("#ftpenabled").val()?(s(".google-merchant-message").hide("slow"),s(".woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select").attr("disabled","disabled")):(s(".woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select").removeAttr("disabled"),"google"===s("#provider").val()?s(".google-merchant-message").show("slow"):s(".google-merchant-message").hide("slow"))})}).on("change",".ftporsftp",function(){var e=s(this).val(),t=s(".ssh2_status");"sftp"===e?(t.show().css("color","dodgerblue").text(d.form.sftp_checking),l.post("get_ssh2_status",{_ajax_nonce:d.nonce,server:e}).then(function(e){"exists"===e?(t.css("color","#2CC185").text(d.form.sftp_available),setTimeout(function(){t.hide()},1500)):t.show().css("color","red").text(d.form.sftp_warning)}).fail(function(e){t.hide(),_.ajax_fail(e)})):t.hide()}).on("click",'[name="save_feed_config"]',function(e){e.preventDefault(),s("#updatefeed").trigger("submit",{save:!0})}).on("change","#provider",function(e){e.preventDefault();var t=s(this).val(),o=s(this).find(":selected").text(),n=s("#filename").val(),a=s("#feedType"),r=s("#providerPage"),i=s("#feed_merchant_info");r.html('<h3><span style="float:none;margin: -3px 0 0;" class="spinner is-active"></span> '+d.form.loading_tmpl+"</h3>"),i.find(".spinner").addClass("is-active"),a.disabled(!0),a.parent().find(".spinner").addClass("is-active"),i.find(".merchant-info-section .data").html(""),p.hasOwnProperty(t)?(u.renderMerchantInfo(i,a,p[t]),s(c).trigger("woo_feed_config_loaded")):l.send("woo_feed_get_merchant_info",{type:"GET",data:{nonce:d.nonce,provider:t,templateName:o}}).then(function(e){p[t]=e,u.renderMerchantInfo(i,a,e)}).then(function(){s(c).trigger("woo_feed_config_loaded")}).fail(_.ajax_fail),h.hasOwnProperty(t)?(u.renderMerchantTemplate(r,h[t]),s(c).trigger("woo_feed_config_loaded")):l.post("get_feed_merchant",{_ajax_nonce:d.nonce,merchant:t}).then(function(e){h[t]=e,u.renderMerchantTemplate(r,e),s("#utm_source").val(o),s("#utm_campaign").val(n),"bing"===t&&(s("#delimiter option").removeAttr("selected"),s('#delimiter option[value="tab"]').attr("selected","selected"),s("#enclosure option").removeAttr("selected"),s('#enclosure option[value=" "]').attr("selected","selected")),"google_product_review"!==t&&s('.wf_attributes option[value="reviewer_name"]').hide()}).then(function(){s(c).trigger("woo_feed_config_loaded")}).fail(_.ajax_fail)}).on("change",".woo_feed_status_input",function(){var e=s(this);l.post("update_feed_status",{_ajax_nonce:d.nonce,feedName:e.val(),status:e[0].checked?1:0})}),s(c).on("change",'[name="is_outOfStock"], [name="product_visibility"]',function(){var e=s(".out-of-stock-visibility");"n"===s('[name="is_outOfStock"]:checked').val()&&"1"===s('[name="product_visibility"]:checked').val()?e.show():e.hide()}).on("change",".attr_type",function(){var e=s(this),t=e.val(),o=e.closest("tr");"pattern"===t?(o.find(".wf_attr").hide(),o.find(".wf_attr").val(""),o.find(".wf_default").show()):(o.find(".wf_attr").show(),o.find(".wf_default").hide(),o.find(".wf_default").val(""))}).on("change",".wf_mattributes, .attr_type",function(){var e=s(this).closest("tr"),t=e.find(".wf_mattributes"),o=e.find(".attr_type"),n=e.find("td:eq(4)"),a=s("#provider").val();if(d.form.google_category.hasOwnProperty(t.val())&&"pattern"===o.val()&&_.in_array(a,d.form.google_category[t.val()])){if(0===n.find("select.selectize").length){n.find("input.wf_default").remove(),n.append('<span class="wf_default wf_attributes"><select name="default[]" class="selectize"></select></span>'),n.append('<span style="font-size:x-small;"><a style="color: red" href="https://webappick.com/docs/woo-feed/feed-configuration/how-to-map-store-category-with-merchant-category/" target="_blank">'.concat(d.learn_more,"</a></span>")),i||n.append('<span class="spinner is-active" style="margin: 0;"></span>');var r=n.find(".wf_attributes select");_.selectize(r,{preload:!0,placeholder:d.form.select_category,load:function(e,t){i?t(i):l.send("get_google_categories",{type:"GET",data:{_ajax_nonce:d.nonce,action:"get_google_categories",provider:a}}).then(function(e){t(i=e),n.find(".spinner").remove()}).fail(_.ajax_fail)}})}}else"current_category"!==t.val()&&0===n.find("input.wf_default").length&&(n.find("span").remove(),n.append('<input autocomplete="off" class="wf_default wf_attributes" type="text" name="default[]" value="">'),"pattern"!==o.val()&&n.find("input.wf_default").hide())}).on("change","#feedType,#provider",function(e){var t=s("#feedType").val(),o=s("#provider").val(),n=s(".itemWrapper"),a=s(".wf_csvtxt");""!==t&&_.in_array(o,d.form.item_wrapper_hidden)&&n.hide(),"feedType"===e.target.id&&("csv"===t||"txt"===t||"tsv"===t?(n.hide(),a.show(),"tsv"===t?s("#delimiter option:last").prop("selected","selected"):"csv"===t&&s("#delimiter option:first").prop("selected","selected")):"xml"===t?(n.show(),a.hide()):"json"===t&&(n.hide(),a.hide()))}).trigger("change"),s(c).on("click",'.woofeed-custom-fields [id*="-switcher"]',function(){s(this).closest("td").find(".switch-loader").show();var e=s(this).attr("id").split("-")[0],t=s(this).data("taxonomy"),o=s(this).prop("checked");new f(e,o,t)}).ready(function(){var e=s(".wapk-feed-buy-now-container");e.position();s(n).scroll(function(){s(n).scrollTop()<=5e3?e.addClass("fixed"):e.removeClass("fixed")})})}),s(c).on("click","#woo-feed-debug-log-download",function(e){e.preventDefault(),s("<a />",{download:new Date+".log",href:URL.createObjectURL(new Blob([s("#woo-feed-debug-log").val()],{type:"text/plain"}))}).appendTo("body")[0].click()}).on("keyup","#filename",function(e){var t=s("#filename").val();s("#utm_campaign").val(t)}).on("change","#category-mapping-form #providers",function(e){var t=s(this).find(":selected").val();-1!==["google","facebook","pinterest","bing","bing_local_inventory","snapchat"].indexOf(t)?(s('input[id*="cat_mapping_"]').css("display","none"),s(".wf_default.wf_attributes").css("display","block").css("width","100%")):(s('input[id*="cat_mapping_"]').css("display","block"),s(".wf_default.wf_attributes").css("display","none").css("width","100%"))}).on("click",'span[id*="cat-map-"]',function(e){e.preventDefault();var t=s("#category-mapping-form #providers").val(),o=s(this).attr("id").replace(/[^\d.]/g,""),n="group-child-"+o;if(-1!==["google","facebook","pinterest","bing","bing_local_inventory","snapchat"].indexOf(t)){var a=s(this).parents("tr").find(".selectized").val();a&&s("."+n).parents("tr").find("select").each(function(e,t){s(t).data("selectize").setValue(a)})}else{var r=s("#cat_mapping_"+o).val();s("."+n).parents("tr").find("input").val(r)}}),s(c).ready(function(){l.send("get_google_categories",{type:"GET",data:{_ajax_nonce:d.nonce,action:"get_google_categories"}}).then(function(e){s(".selectize-google-category").selectize({valueField:"value",labelField:"text",placeholder:"Select a category",searchField:["value","text"],options:e,render:{option:function(e,t){return'<div class="item wapk-selectize-item">'.concat(t(e.value+" - "+e.text),"</div>")},item:function(e,t){return'<div class="item wapk-selectize-item">'.concat(t(e.value+" - "+e.text),"</div>")}}})}).fail(_.ajax_fail)})}(jQuery,window,document,wp.ajax,wpf_ajax_obj);
2
  //# sourceMappingURL=woo-feed-admin.min.js.map
1
+ "use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _createClass(e,t,o){return t&&_defineProperties(e.prototype,t),o&&_defineProperties(e,o),e}!function(s,n,c,l,d){s.fn.disabled=function(o){return s(this).each(function(){var e=s(this),t="disabled";void 0!==e.prop(t)?e.prop(t,void 0===o||!0===o):!0===o?e.addClass(t):e.removeClass(t)}),self},s.fn.isDisabled=function(){var e=s(this),t="disabled";return void 0!==e.prop(t)?e.prop(t):e.hasClass(t)};function e(e){s(e.currentTarget).removeClass(function(e,t){return(t.match(/\btooltipped-\S+/g)||[]).join(" ")}).removeClass("tooltipped").removeAttr("aria-label")}function a(e,t){s(e).addClass("tooltipped tooltipped-s").attr("aria-label",t)}function i(e,t){return s.extend(!0,{},e,t)}function t(){o=s(".toClipboard"),!ClipboardJS.isSupported()||/iPhone|iPad/i.test(navigator.userAgent)?o.find("img").hide(0):(o.each(function(){s(this).on("mouseleave",e).on("blur",e)}),new ClipboardJS(".toClipboard").on("error",function(e){var t,o;a(e.trigger,(t=e.action,o="cut"===t?"X":"C",/iPhone|iPad/i.test(navigator.userAgent)?"No support :(":/Mac/i.test(navigator.userAgent)?"Press ⌘-"+o+" to "+t:"Press Ctrl-"+o+" to "+t))}).on("success",function(e){a(e.trigger,"Copied")}))}var o,r,f=function(){function n(e,t,o){_classCallCheck(this,n),this.productCustomFields(e,t,o)}return _createClass(n,[{key:"cacheClear",value:function(){var e={action:"woo_feed_product_attribute_cache_remove",nonce:wpf_ajax_obj.ajax.nonce};s.ajax({method:"POST",url:wpf_ajax_obj.wpf_ajax_url,data:e})}},{key:"productCustomFields",value:function(t,e,o){var n=this,a=1<arguments.length&&void 0!==e&&e,i=2<arguments.length?o:void 0,r={action:"woo_feed_custom_fields_status_change",nonce:wpf_ajax_obj.ajax.nonce,field:t,status:a,isTaxonomy:i};s.ajax({method:"POST",url:wpf_ajax_obj.wpf_ajax_url,data:r,success:function(e){e.success?n.cacheClear():console.log(e),s("#"+t+"-switcher").closest("td").find(".switch-loader").hide()}})}}]),n}(),_={in_array:function(e,t){try{return-1!==t.indexOf(e)}catch(e){return!1}},selectize_render_item:function(e,t){return'<div class="item wapk-selectize-item">'.concat(t(e.text),"</div>")},ajax_fail:function(e){console.warn(e),alert(e.hasOwnProperty("statusText")&&e.hasOwnProperty("status")?d.ajax.error+"\n"+e.statusText+" ("+e.status+")":e)},sortable:function(e,o,n,a){return(e||s(".sorted_table")).each(function(){var e=s(this),t=e.find("tbody > tr:eq(0) > td").length||n||9;e.wf_sortable(i({containerSelector:"table",itemPath:"> tbody",itemSelector:"tr",handle:"i.wf_sortedtable",placeholder:'<tr class="placeholder"><td colspan="'.concat(t,'"></td></tr>'),onDrop:function(e,t,o,n){e.removeClass(t.group.options.draggedClass).removeAttr("style"),s("body").removeClass(t.group.options.bodyClass),a&&"function"==typeof a&&a(e,t,o,n)}},o))})},selectize:function(e,t){return(e||s("select.selectize")).not(".selectized").not(".selectize-google-category").each(function(){var e=s(this);e.selectize(i({create:e.data("create")||!1,plugins:e.data("plugins")?e.data("plugins").split(",").map(function(e){return e.trim()}):[],render:{item:_.selectize_render_item}},t))})},fancySelect:function(e,t){return(e||s("select.fancySelect")).not(".FancySelectInit").each(function(){s(this).fancySelect(i({maxItemShow:3},t))})},reindex_config_table:function(){s("#table-1").find("tbody tr").each(function(o,e){s(e).find("[name]").each(function(e,t){s(t).attr("name",s(t).attr("name").replace(/(\[\d\])/g,"[".concat(o,"]")))})})},common:function(){_.sortable(s(".sorted_table"),{},9,_.reindex_config_table),_.selectize(),_.fancySelect(s(".outputType"))}},u={form:null,init:function(){this.form=s(".generateFeed"),this.form.length&&(_.common(),s(c).trigger("feed_editor_init"),s(c).trigger(new jQuery.Event("feedEditor.init",{target:this.form})))},renderMerchantInfo:function(o,n,a){function e(e){var t;a.hasOwnProperty(e)&&(o.find(".merchant-info-section."+e+" .data").html(a[e]),"feed_file_type"===e&&((t=a[e].split(",").map(function(e){return e.trim().toLowerCase()}).filter(function(e){return""!==e&&e!==d.na.toLowerCase()})).length?(n.find("option").removeAttr("selected").each(function(){var e=s(this);e.val()&&!_.in_array(e.val(),t)?e.disabled(!0):e.disabled(!1)}),1===t.length&&n.find('option[value="'+t[0]+'"]').attr("selected","selected")):n.find("option").disabled(!1)))}for(var t in a)e(t);o.find(".spinner").removeClass("is-active"),n.disabled(!1),n.trigger("change"),s(c).trigger("woo_feed_config_loaded"),n.parent().find(".spinner").removeClass("is-active")},renderMerchantTemplate:function(o,n){function e(t){if(n.hasOwnProperty(t))if("tabs"===t)o.html(n[t]);else{var e=s('[name="'+t+'"]');e.length&&e.each(function(){var e=s(this);e.is("select")?e.find('[value="'+n[t]+'"]').prop("selected",!0):(e.is("[type=checkbox]")||e.is("[type=radio]"))&&e.val()===n[t]?e.prop("checked",!0):e.val(n[t])}).trigger("change")}}for(var t in n)e(t);u.init()}},p=[],h=[],g=function(){function e(){_classCallCheck(this,e),this._feed=d.generator.feed,this._limit=d.generator.limit,this._progress=0,this._timer=null,this._color=!1,this._total_batch=0,this._current_batch=0,this._product_ids=[],this._progress_per_batch=0,this._refresh=!0,this._regenerate=d.generator.regenerate,n.isRegenerating=!1,this._all_btn=s(".wpf_regenerate"),this._current_btn=s("#".concat(this._feed.replace("wf_config","wf_feed_"))),this._current_btn_label=""}return _createClass(e,[{key:"init",value:function(){var o=this;""!==this._feed&&this._regenerate&&!1===n.isRegenerating&&this.generate();var e=n.location.search;return"webappick-manage-feeds"===new URLSearchParams(e).get("page")&&s("body").addClass("woo-import-popup-body"),s(c).on("click",".woo-feed-campaign-close-button",function(e){e.preventDefault(),s(this).parent(".woo-feed-promotion").hide();var t=s(this).data("condition");1===t&&l.post("woo_feed_hide_promotion",{_ajax_nonce:d.nonce,condition:t}).then(function(e){o._log(e)}).fail(function(e){o._log(e),o._updateProgressStatus(e.message),o._color="red"})}),s(c).on("click",".wpf_regenerate",function(e){e.preventDefault(),o._current_btn=s(this),o._current_btn.hasClass("disabled")||!0===n.isRegenerating||(o._feed=o._current_btn.attr("id").replace("wf_feed_","wf_config"),""!==o._feed&&o.generate())}),this}},{key:"_block_button",value:function(){this._all_btn.length&&this._all_btn.addClass("disabled"),this._current_btn.length&&(this._current_btn.find("span").addClass("wpf_spin reverse_spin"),this._current_btn_label=this._current_btn.attr("title"),this._current_btn.attr("aria-label",d.regenerate).attr("title",d.regenerate))}},{key:"_unblock_button",value:function(){this._all_btn.length&&this._all_btn.removeClass("disabled"),this._current_btn.length&&(this._current_btn.find("span").removeClass("wpf_spin"),this._current_btn.find("span").removeClass("reverse_spin"),this._current_btn.attr("aria-label",this._current_btn_label).attr("title",this._current_btn_label))}},{key:"generate",value:function(){var t=this,o=this;n.isRegenerating=!0,this._block_button(),this._resetProgressBar(),this._progressBarActive(),this._log("Counting Total Products"),this._updateProgressStatus("Fetching products."),this._get_product_ids().then(function(e){t._progress=10,o._log({response:e}),e.success?(o._log("Total ".concat(e.total," Products found.")),o._product_ids=e.product,o._total_batch=t._product_ids.length,o._current_batch=0,o._progress_per_batch=(90-t._progress)/t._total_batch,o._process_batch(),o._updateProgressStatus("Processing Products...")):o._updateProgressStatus(e.data.message)}).fail(function(e){o._log(e),o._updateProgressStatus(e.message),o._color="red",setTimeout(function(){o._stopProgressBar(),o._unblock_button()},1500)})}},{key:"_get_product_ids",value:function(){return this._progress=5,l.post("get_product_information",{_ajax_nonce:d.nonce,feed:this._feed,limit:this._limit})}},{key:"_process_batch",value:function(){var t=this,e="Processing Batch ".concat(this._current_batch+1," of ").concat(this._total_batch);this._updateProgressStatus(e),this._log(e),l.post("make_batch_feed",{_ajax_nonce:d.nonce,feed:this._feed,products:this._product_ids[this._current_batch],loop:this._current_batch}).then(function(e){t._current_batch++,t._log("Batch ".concat(t._current_batch," Completed")),t._log(e),t._current_batch<t._total_batch&&(t._process_batch(),t._progress+=t._progress_per_batch),t._current_batch===t._total_batch&&t._save_feed_file()}).fail(function(e){t._log(e),t._updateProgressStatus(e.message),t._color="red",setTimeout(function(){t._stopProgressBar(),t._unblock_button()},1500)})}},{key:"_save_feed_file",value:function(){var t=this;this._log("Saving feed file"),this._updateProgressStatus("Saving feed file"),l.post("save_feed_file",{_ajax_nonce:d.nonce,feed:this._feed}).then(function(e){t._log(e),t._progress=100,t._refresh&&(n.location.href="".concat(d.pages.list.feed,"&link=").concat(e.url,"&cat=").concat(e.cat)),setTimeout(function(){t._stopProgressBar(),setTimeout(function(){t._resetProgressBar(!0),t._unblock_button()},3e3)},2500)}).fail(function(e){t._log(e),t._updateProgressStatus(e.message),t._color="red",setTimeout(function(){t._stopProgressBar(),t._unblock_button()},1500)})}},{key:"_log",value:function(e){return d.wpf_debug&&console.log(e),this}},{key:"_progressBarActive",value:function(e){var t=0<arguments.length&&void 0!==e?e:0,o=this;return this._toggleProgressBar(!0),this._timer=setInterval(function(){o._updateProgressBar()},t||1e3),this}},{key:"_stopProgressBar",value:function(){return clearInterval(this._timer),this}},{key:"_resetProgressBar",value:function(e){return this._toggleProgressBar(!1),this._updateProgressStatus(""),clearInterval(this._timer),this._color=!1,this._timer=null,this._progress=0,e&&this._updateProgressBar(),this}},{key:"_toggleProgressBar",value:function(e){var t=s("#feed_progress_table");return e?t.show():t.hide(),this}},{key:"_updateProgressStatus",value:function(e){return s(".feed-progress-status").html(e),this}},{key:"_getErrorMessageByCode",value:function(e){s(".feed-progress-status").css({color:this._color}),s(".feed-progress-percentage").css({color:this._color}),s(".wpf_spin").css({color:this._color});var t=e.status+" : "+e.statusText+". ";500===e.status&&(t+="Please increase your PHP max_execution_time. Please <a target='_blank' href='https://webappick.com/docs/woo-feed/faq-for-woocommerce-product-feed/how-to-solve-processing-10-feed-generation-stuck-error/'>read this doc</a>."),this._updateProgressStatus(t)}},{key:"_updateProgressBar",value:function(){var e=s(".feed-progress-percentage"),t=s(".feed-progress-bar-fill"),o="".concat(Math.round(this._progress),"%");t.css({width:o}),e.text(o)}}]),e}();n.wf={helper:_,feedEditor:u,generator:g},s(n).on("load",function(){null!==s(location).attr("href").match(/webappick.*feed/g)&&s("#wpbody-content").addClass("woofeed-body-content");var e=n.location.search;new URLSearchParams(e).get("action");t(),postboxes.add_postbox_toggles(pagenow),(new g).init(),""!==d.generator.feed&&d.generator.regenerate,u.init(),_.common(),s(".wfmasterTooltip").hover(function(){var e=s(this),t=e.attr("wftitle");e.data("tipText",t).removeAttr("wftitle"),s('<p class="wftooltip"></p>').text(t).appendTo("body").fadeIn("slow")},function(){var e=s(this);e.attr("wftitle",e.data("tipText")),s(".wftooltip").remove()}).mousemove(function(e){s(".wftooltip").css({top:e.pageY+10,left:e.pageX+20})}),s(".generateFeed").validate(),s(c).on("blur",'input[name="wfDAttributeName"]',function(e){e.preventDefault();var t=s(this).val();t=(t=t.toLowerCase()).split(" ").join("_"),s("#wfDAttributeCode").val(t)}).on("click","[data-toggle_slide]",function(e){e.preventDefault(),s(s(this).data("toggle_slide")).slideToggle("fast")}).on("click","#wf_newRow",function(){var e=s("#table-1 tbody"),t=s("#feed_config_template").text().trim().replace(/__idx__/g,e.find("tr").length);e.append(t),_.fancySelect(s(".outputType"))}).on("click",".single-feed-delete",function(e){e.preventDefault(),confirm(d.form.del_confirm)&&(n.location.href=s(this).attr("val"))}).on("click",".wf_clean_cache_wrapper",function(e){e.preventDefault();var t=s(".woo-feed-clean-cache-nonce").val(),o=s(".woo-feed-cache-loader");o.show(),l.post("clear_cache_data",{_ajax_clean_nonce:t}).then(function(e){e.success&&(o.hide(),location.reload())}).fail(function(e){console.log("something wrong")})}).on("click","#woo-feed-copy-status-btn",function(e){e.preventDefault();var t=s("#woo-feed-copy-status-btn"),o=s("#woo-feed-status-area");t.val("Copied"),o.css("visibility","visible"),o.select(),c.execCommand("copy")}).on("change",".wf_attr.wf_attributes",function(e){e.preventDefault(),s(".fancy-picker-picked").trigger("click");var t,o,n=s(this).val(),a=s(this).parents("tr").find(".outputType"),i=s(this).parents("tr").find(".fancy-picker-content .fancy-picker-option"),r=s(this).parents("tr").find(".fancy-picker-data span");o=["price","current_price","sale_price","price_with_tax","current_price_with_tax","sale_price_with_tax","shipping_cost"].includes(n)?(t="for_price","Price"):""!==n&&-1!==n.indexOf("wf_taxo")?(t="for_custom_taxo","parent_if_empty"):(t="for_all","Default"),i.removeClass("selected"),"for_custom_taxo"!==t&&"for_price"!==t||i.each(function(e){o===s(this).text()&&(s(this).addClass("selected"),r.text(o),a.find("option").text(o),a.find("option").val(s(this).data("value")))})}).on("click","#doaction, #doaction2",function(){return confirm(d.form.del_confirm_multi)}).on("change",".dType",function(){var e=s(this),t=e.val(),o=e.closest("tr");"pattern"===t?(o.find(".value_attribute").hide(),o.find(".value_pattern").show()):"attribute"===t?(o.find(".value_attribute").show(),o.find(".value_pattern").hide()):"remove"===t&&(o.find(".value_attribute").hide(),o.find(".value_pattern").hide())}).on("click",".delRow",function(e){e.preventDefault(),s(this).closest("tr").remove(),_.reindex_config_table()}).on("submit","#generateFeed",function(){s(this).validate(),s(this).valid()&&s(".makeFeedResponse").show().html('<b style="color: darkblue;"><i class="dashicons dashicons-sos wpf_spin"></i> '.concat(d.form.generate,"</b>"))}).on("submit","#updatefeed",function(e,t){s(this).validate(),s(this).valid()&&s(".makeFeedResponse").show().html('<b style="color: darkblue;"><i class="dashicons dashicons-sos wpf_spin"></i> '.concat(t&&t.save?d.form.save:d.form.generate,"</b>"))}).on("ready woo_feed_config_loaded",function(){"0"===s("#ftpenabled").val()?(s(".google-merchant-message").hide("slow"),s(".woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select").attr("disabled","disabled")):("google"===s("#provider").val()?s(".google-merchant-message").show("slow"):s(".google-merchant-message").hide("slow"),s(".woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select").removeAttr("disabled")),s("#ftpenabled").on("change",function(){"0"===s("#ftpenabled").val()?(s(".google-merchant-message").hide("slow"),s(".woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select").attr("disabled","disabled")):(s(".woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select").removeAttr("disabled"),"google"===s("#provider").val()?s(".google-merchant-message").show("slow"):s(".google-merchant-message").hide("slow"))})}).on("change",".ftporsftp",function(){var e=s(this).val(),t=s(".ssh2_status");"sftp"===e?(t.show().css("color","dodgerblue").text(d.form.sftp_checking),l.post("get_ssh2_status",{_ajax_nonce:d.nonce,server:e}).then(function(e){"exists"===e?(t.css("color","#2CC185").text(d.form.sftp_available),setTimeout(function(){t.hide()},1500)):t.show().css("color","red").text(d.form.sftp_warning)}).fail(function(e){t.hide(),_.ajax_fail(e)})):t.hide()}).on("click",'[name="save_feed_config"]',function(e){e.preventDefault(),s("#updatefeed").trigger("submit",{save:!0})}).on("change","#provider",function(e){e.preventDefault();var t=s(this).val(),o=s(this).find(":selected").text(),n=s("#filename").val(),a=s("#feedType"),i=s("#providerPage"),r=s("#feed_merchant_info");i.html('<h3><span style="float:none;margin: -3px 0 0;" class="spinner is-active"></span> '+d.form.loading_tmpl+"</h3>"),r.find(".spinner").addClass("is-active"),a.disabled(!0),a.parent().find(".spinner").addClass("is-active"),r.find(".merchant-info-section .data").html(""),p.hasOwnProperty(t)?(u.renderMerchantInfo(r,a,p[t]),s(c).trigger("woo_feed_config_loaded")):l.send("woo_feed_get_merchant_info",{type:"GET",data:{nonce:d.nonce,provider:t,templateName:o}}).then(function(e){p[t]=e,u.renderMerchantInfo(r,a,e)}).then(function(){s(c).trigger("woo_feed_config_loaded")}).fail(_.ajax_fail),h.hasOwnProperty(t)?(u.renderMerchantTemplate(i,h[t]),s(c).trigger("woo_feed_config_loaded")):l.post("get_feed_merchant",{_ajax_nonce:d.nonce,merchant:t}).then(function(e){h[t]=e,u.renderMerchantTemplate(i,e),s("#utm_source").val(o),s("#utm_campaign").val(n),"bing"===t&&(s("#delimiter option").removeAttr("selected"),s('#delimiter option[value="tab"]').attr("selected","selected"),s("#enclosure option").removeAttr("selected"),s('#enclosure option[value=" "]').attr("selected","selected")),"google_product_review"!==t&&s('.wf_attributes option[value="reviewer_name"]').hide()}).then(function(){s(c).trigger("woo_feed_config_loaded")}).fail(_.ajax_fail)}).on("change",".woo_feed_status_input",function(){var e=s(this);l.post("update_feed_status",{_ajax_nonce:d.nonce,feedName:e.val(),status:e[0].checked?1:0})}),s(c).on("change",'[name="is_outOfStock"], [name="product_visibility"]',function(){var e=s(".out-of-stock-visibility");"n"===s('[name="is_outOfStock"]:checked').val()&&"1"===s('[name="product_visibility"]:checked').val()?e.show():e.hide()}).on("change",".attr_type",function(){var e=s(this),t=e.val(),o=e.closest("tr");"pattern"===t?(o.find(".wf_attr").hide(),o.find(".wf_attr").val(""),o.find(".wf_default").show()):(o.find(".wf_attr").show(),o.find(".wf_default").hide(),o.find(".wf_default").val(""))}).on("change",".wf_mattributes, .attr_type",function(){var e=s(this).closest("tr"),t=e.find(".wf_mattributes"),o=e.find(".attr_type"),n=e.find("td:eq(4)"),a=s("#provider").val();if(d.form.google_category.hasOwnProperty(t.val())&&"pattern"===o.val()&&_.in_array(a,d.form.google_category[t.val()])){if(0===n.find("select.selectize").length){n.find("input.wf_default").remove(),n.append('<span class="wf_default wf_attributes"><select name="default[]" class="selectize"></select></span>'),n.append('<span style="font-size:x-small;"><a style="color: red" href="https://webappick.com/docs/woo-feed/feed-configuration/how-to-map-store-category-with-merchant-category/" target="_blank">'.concat(d.learn_more,"</a></span>")),r||n.append('<span class="spinner is-active" style="margin: 0;"></span>');var i=n.find(".wf_attributes select");_.selectize(i,{preload:!0,placeholder:d.form.select_category,load:function(e,t){r?t(r):l.send("get_google_categories",{type:"GET",data:{_ajax_nonce:d.nonce,action:"get_google_categories",provider:a}}).then(function(e){t(r=e),n.find(".spinner").remove()}).fail(_.ajax_fail)}})}}else"current_category"!==t.val()&&0===n.find("input.wf_default").length&&(n.find("span").remove(),n.append('<input autocomplete="off" class="wf_default wf_attributes" type="text" name="default[]" value="">'),"pattern"!==o.val()&&n.find("input.wf_default").hide())}).on("change","#feedType,#provider",function(e){var t=s("#feedType").val(),o=s("#provider").val(),n=s(".itemWrapper"),a=s(".wf_csvtxt");""!==t&&_.in_array(o,d.form.item_wrapper_hidden)&&n.hide(),"feedType"===e.target.id&&("csv"===t||"txt"===t||"tsv"===t?(n.hide(),a.show(),"tsv"===t?s("#delimiter option:last").prop("selected","selected"):"csv"===t&&s("#delimiter option:first").prop("selected","selected")):"xml"===t?(n.show(),a.hide()):"json"===t&&(n.hide(),a.hide()))}).trigger("change"),s(c).on("click",'.woofeed-custom-fields [id*="-switcher"]',function(){s(this).closest("td").find(".switch-loader").show();var e=s(this).attr("id").split("-")[0],t=s(this).data("taxonomy"),o=s(this).prop("checked");new f(e,o,t)}).ready(function(){var e=s(".wapk-feed-buy-now-container");e.position();s(n).scroll(function(){s(n).scrollTop()<=5e3?e.addClass("fixed"):e.removeClass("fixed")})})}),s(c).on("click","#woo-feed-debug-log-download",function(e){e.preventDefault(),s("<a />",{download:new Date+".log",href:URL.createObjectURL(new Blob([s("#woo-feed-debug-log").val()],{type:"text/plain"}))}).appendTo("body")[0].click()}).on("keyup","#filename",function(e){var t=s("#filename").val();s("#utm_campaign").val(t)}).on("change","#category-mapping-form #providers",function(e){var t=s(this).find(":selected").val();-1!==["google","facebook","pinterest","bing","bing_local_inventory","snapchat"].indexOf(t)?(s('input[id*="cat_mapping_"]').css("display","none"),s(".wf_default.wf_attributes").css("display","block").css("width","100%")):(s('input[id*="cat_mapping_"]').css("display","block"),s(".wf_default.wf_attributes").css("display","none").css("width","100%"))}).on("click",'span[id*="cat-map-"]',function(e){e.preventDefault();var t=s("#category-mapping-form #providers").val(),o=s(this).attr("id").replace(/[^\d.]/g,""),n="group-child-"+o;if(-1!==["google","facebook","pinterest","bing","bing_local_inventory","snapchat"].indexOf(t)){var a=s(this).parents("tr").find(".selectized").val();a&&s("."+n).parents("tr").find("select").each(function(e,t){s(t).data("selectize").setValue(a)})}else{var i=s("#cat_mapping_"+o).val();s("."+n).parents("tr").find("input").val(i)}}),s(c).ready(function(){l.send("get_google_categories",{type:"GET",data:{_ajax_nonce:d.nonce,action:"get_google_categories"}}).then(function(e){s(".selectize-google-category").selectize({valueField:"value",labelField:"text",placeholder:"Select a category",searchField:["value","text"],options:e,render:{option:function(e,t){return'<div class="item wapk-selectize-item">'.concat(t(e.value+" - "+e.text),"</div>")},item:function(e,t){return'<div class="item wapk-selectize-item">'.concat(t(e.value+" - "+e.text),"</div>")}}})}).fail(_.ajax_fail)}),s(c).on("feed_editor_init",function(){var t=s(".merchant-info-section.feed_file_type .data").html().split(",").map(function(e){return e.trim().toLowerCase()}),e=s("#feedType");t.length?(e.find("option").each(function(){var e=s(this);e.val()&&!_.in_array(e.val(),t)?e.disabled(!0):e.disabled(!1)}),1===t.length&&e.find('option[value="'+t[0]+'"]').attr("selected","selected")):e.find("option").disabled(!1)})}(jQuery,window,document,wp.ajax,wpf_ajax_obj);
2
  //# sourceMappingURL=woo-feed-admin.min.js.map
admin/js/woo-feed-admin.min.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["woo-feed-admin.js"],"names":["_defineProperties","target","props","descriptor","i","enumerable","configurable","writable","Object","defineProperty","key","_createClass","Constructor","protoProps","staticProps","prototype","window","wpAjax","$","document","opts","self","prop","status","addClass","removeClass","hasClass","currentTarget","clearTooltip","userAgent","actionMsg","match","actionKey","index","join","removeAttr","elem","attr","msg","extend","_default","_args","clip","$copyBtn","ClipboardJS","isSupported","test","navigator","feedGenerator","this","on","action","showTooltip","event","trigger","wpf_ajax_obj","success","url","data","_classCallCheck","WooFeedCustomFields","productCustomFields","field","isTaxonomy","value","ajax","nonce","method","response","wpf_ajax_url","clipboard","googleCategories","log","closest","find","hide","in_array","needle","haystack","indexOf","console","selectize_render_item","escape","sortable","onDrop","text","ajax_fail","column_count","warn","wf_sortable","containerSelector","e","hasOwnProperty","error","statusText","el","config","column","_onDrop","each","length","selectize","itemPath","itemSelector","concat","plugins","$item","container","group","options","draggedClass","bodyClass","render","item","helper","not","fancySelect","maxItemShow","create","split","map","s","handle","placeholder","form","replace","x","reindex_config_table","init","renderMerchantInfo","merchantInfo","jQuery","k","opt","feedType","r","types","html","t","trim","toLowerCase","na","disabled","val","_loop2","renderMerchantTemplate","_loop","filter","contentSettings","feedForm","feedEditor","merchantInfoCache","tooltip","css","top","_regenerate","isRegenerating","feed","_progress","_product_ids","_progress_per_batch","_refresh","_feed","_all_btn","generate","_current_btn","condition","_current_batch","then","URLSearchParams","preventDefault","parent","_current_btn_label","_ajax_nonce","_log","_updateProgressStatus","message","_color","regenerate","setTimeout","_this2","_stopProgressBar","_process_batch","fail","limit","_limit","_block_button","_progressBarActive","_save_feed_file","loop","_get_product_ids","_total_batch","_unblock_button","_resetProgressBar","refreshInterval","post","arguments","undefined","clearInterval","_timer","setInterval","_updateProgressBar","update","_toggleProgressBar","table","show","color","width","generator","current_page_url_query","wf","postboxes","location","pagenow","attr_name","hover","title","appendTo","remove","left","pageX","confirm","href","slideToggle","loader","reload","button","status_area","select","execCommand","progress_message","current_attribute_value","fancyOption","selectIf","selectKey","outputSelect","parents","includes","page_action","add_postbox_toggles","row","del_confirm_multi","type","template","append","validate","valid","save","price_attributes","server","sftp_checking","fancyDataPicker","merchant","sftp_warning","name","templateName","loading_tmpl","provider","send","merchantTemplateCache","outOfStockVisibilityRow","feedName","checked","valueColumn","attribute","load","google_category","query","learn_more","preload","cb","wf_csv_txt","itemWrapper","item_wrapper_hidden","id","windowpos","scroll","Date","click","catField","setValue","catId","scrollTop","option"],"mappings":"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","file":"woo-feed-admin.min.js","sourcesContent":["// noinspection JSUnresolvedletiable\n/**!\n * WooFeed Scripts\n * @version 3.3.6\n * @package WooFeed\n * @copyright 2020 WebAppick\n *\n */\n/* global ajaxurl, wpAjax, postboxes, pagenow, alert, deleteUserSetting, typenow, adminpage, thousandsSeparator, decimalPoint, isRtl */\n// noinspection JSUnresolvedVariable\n(function($, window, document, wpAjax, opts) {\n \"use strict\";\n /**\n * All of the code for your admin-facing JavaScript source\n * should reside in this file.\n *\n * Note: It has been assumed you will write jQuery code here, so the\n * $ function reference has been prepared for usage within the scope\n * of this function.\n *\n * This enables you to define handlers, for when the DOM is ready:\n */\n\n /**\n * disable element utility\n *\n * @since 3.1.9\n *\n * @param {*} status\n * @returns {jQuery|HTMLElement}\n */\n $.fn.disabled = function(status) {\n $(this).each(function() {\n let self = $(this),\n prop = 'disabled';\n\n if (typeof self.prop(prop) !== 'undefined') {\n self.prop(prop, status === void 0 || status === true);\n } else {\n !0 === status ? self.addClass(prop) : self.removeClass(prop);\n }\n });\n return self; // method chaining\n };\n\n /**\n * Check if a HTMLElement or jQuery is disabled\n */\n $.fn.isDisabled = function() {\n let self = $(this),\n prop = 'disabled';\n return typeof self.prop(prop) !== 'undefined' ? self.prop(prop) : self.hasClass(prop);\n };\n\n /**\n * Clear Tooltip for clip board js\n * @param {Object} event\n */\n const clearTooltip = (event) => {\n $(event.currentTarget).removeClass( (index, className) => (className.match(/\\btooltipped-\\S+/g) || []).join(' ') ).removeClass('tooltipped').removeAttr('aria-label');\n };\n\n const showTooltip = (elem, msg) => {\n $(elem).addClass('tooltipped tooltipped-s').attr('aria-label', msg);\n };\n\n const fallbackMessage = (action) =>{\n let actionMsg,\n actionKey = action === 'cut' ? 'X' : 'C';\n\n if (/iPhone|iPad/i.test(navigator.userAgent)) {\n actionMsg = 'No support :(';\n } else if (/Mac/i.test(navigator.userAgent)) {\n actionMsg = 'Press ⌘-' + actionKey + ' to ' + action;\n } else {\n actionMsg = 'Press Ctrl-' + actionKey + ' to ' + action;\n }\n\n return actionMsg;\n };\n\n /**\n * Alias of jQuery.extend()\n * @param {Object} _default\n * @param {Object} _args\n */\n const extend = (_default, _args) => $.extend(true, {}, _default, _args);\n\n\t/*\n\t* Handles product attributes\n\t*\n\t* @since 4.4.18\n\t* */\n\tclass WooFeedCustomFields {\n\n\t\tconstructor( field, status, isTaxonomy ) {\n\t\t\tthis.productCustomFields( field, status, isTaxonomy );\n\t\t}\n\n\t\tcacheClear() {\n\t\t\tlet data = {\n\t\t\t\taction: 'woo_feed_product_attribute_cache_remove',\n\t\t\t\tnonce: wpf_ajax_obj.ajax.nonce,\n\t\t\t};\n\t\t\t$.ajax({\n\t\t\t\tmethod: 'POST',\n\t\t\t\turl: wpf_ajax_obj.wpf_ajax_url,\n\t\t\t\tdata\n\t\t\t});\n\t\t}\n\n\t\tproductCustomFields( field, status = false, isTaxonomy ) {\n\t\t\tlet data = {\n\t\t\t\taction: 'woo_feed_custom_fields_status_change',\n\t\t\t\tnonce: wpf_ajax_obj.ajax.nonce,\n\t\t\t\tfield,\n\t\t\t\tstatus,\n\t\t\t\tisTaxonomy\n\t\t\t};\n\t\t\t$.ajax({\n\t\t\t\tmethod: 'POST',\n\t\t\t\turl: wpf_ajax_obj.wpf_ajax_url,\n\t\t\t\tdata,\n\t\t\t\tsuccess: ( response ) => {\n\t\t\t\t\tif( response.success ) {\n\t\t\t\t\t\tthis.cacheClear();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.log( response );\n\t\t\t\t\t}\n $('#'+field+'-switcher').closest('td').find('.switch-loader').hide();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n let $copyBtn,\n clipboard,\n googleCategories,\n helper = {\n in_array: (needle, haystack) => {\n try {\n return haystack.indexOf(needle) !== -1;\n } catch (e) {\n return false;\n }\n },\n selectize_render_item: (data, escape) => `<div class=\"item wapk-selectize-item\">${escape(data.text)}</div>`, // phpcs:ignore WordPressVIPMinimum.JS.StringConcat.Found,\n ajax_fail: e => {\n console.warn(e);\n alert(e.hasOwnProperty('statusText') && e.hasOwnProperty('status') ? opts.ajax.error + '\\n' + e.statusText + ' (' + e.status + ')' : e);\n },\n /**\n * Initialize Sortable\n * @param {jQuery|HTMLElement} el\n * @param {object} config\n * @param {int|boolean} column\n * @param {function} onDrop\n * @return {jQuery|HTMLElement}\n */\n sortable: (el, config, column, onDrop) => {\n return (el || $('.sorted_table')).each(function() {\n let self = $(this),\n column_count = self.find('tbody > tr:eq(0) > td').length || column || 9;\n self.wf_sortable(extend({\n containerSelector: 'table',\n itemPath: '> tbody',\n itemSelector: 'tr',\n handle: 'i.wf_sortedtable',\n placeholder: `<tr class=\"placeholder\"><td colspan=\"${column_count}\"></td></tr>`,\n onDrop: ($item, container, _super, event) => {\n $item.removeClass(container.group.options.draggedClass).removeAttr('style');\n $(\"body\").removeClass(container.group.options.bodyClass);\n if ( onDrop && 'function' === typeof( onDrop ) ) {\n onDrop( $item, container, _super, event );\n }\n },\n }, config));\n });\n },\n selectize: (el, config) => {\n return (el || $('select.selectize')).not('.selectized').not('.selectize-google-category').each(function() {\n let self = $(this);\n self.selectize(extend({\n create: self.data('create') || false,\n plugins: self.data('plugins') ? self.data('plugins').split(',').map(function(s) {\n return s.trim();\n }) : [],\n //['remove_button'],\n render: {\n item: helper.selectize_render_item\n }\n }, config));\n });\n },\n fancySelect: (el, config) => {\n return (el || $('select.fancySelect')).not('.FancySelectInit').each(function() {\n let self = $(this);\n self.fancySelect(extend({\n maxItemShow: 3\n }, config));\n });\n },\n reindex_config_table: () => {\n $('#table-1').find('tbody tr').each( ( x, el ) => {\n $(el).find('[name]').each( ( x1, el ) => {\n $(el).attr('name', $(el).attr('name').replace(/(\\[\\d\\])/g, `[${x}]`));\n } );\n } );\n },\n common: () => {\n helper.sortable( $('.sorted_table'), {}, 9, helper.reindex_config_table );\n helper.selectize();\n helper.fancySelect($('.outputType'));\n }\n },\n // helper functions\n feedEditor = {\n /**\n * The Editor Form Elem.\n * @type {jQuery|HTMLElement}\n */\n form: null,\n\n /**\n * Initialize The Feed Editor {Tabs...}\n * @returns {void}\n */\n init: function () {\n let self = this;\n self.form = $('.generateFeed');\n if (!self.form.length) return;\n helper.common();\n // noinspection JSUnresolvedVariable\n $(document).trigger(new jQuery.Event('feedEditor.init', {\n target: this.form\n }));\n },\n\n /**\n * Render Merchant info ajax response and handle allowed feed type for selected merchant\n * @param {jQuery|HTMLElement} merchantInfo jQuery dom object\n * @param {jQuery|HTMLElement} feedType jQuery dom object\n * @param {Object} r ajax response object\n */\n renderMerchantInfo: function (merchantInfo, feedType, r) {\n for (let k in r) {\n if (r.hasOwnProperty(k)) {\n merchantInfo.find('.merchant-info-section.' + k + ' .data').html(r[k]); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html\n\n if ('feed_file_type' === k) {\n (function() {\n let types = r[k].split(\",\").map(function(t) {\n return t.trim().toLowerCase();\n }).filter(function(t) {\n // noinspection JSUnresolvedVariable\n return t !== '' && t !== opts.na.toLowerCase();\n });\n\n if (types.length) {\n feedType.find('option').removeAttr('selected').each(function() {\n let opt = $(this);\n opt.val() && !helper.in_array(opt.val(), types) ? opt.disabled(!0) : opt.disabled(!1);\n });\n if (types.length === 1) feedType.find('option[value=\"' + types[0] + '\"]').attr('selected', 'selected');\n } else feedType.find('option').disabled(!1);\n })();\n }\n }\n }\n\n merchantInfo.find('.spinner').removeClass('is-active');\n feedType.disabled(!1);\n feedType.trigger('change');\n\n /**\n * Triggers after merchant configuration is fetched & loaded\n * */\n $(document).trigger('woo_feed_config_loaded');\n\n feedType.parent().find('.spinner').removeClass('is-active');\n },\n\n /**\n * Render Feed Template Tabs and settings while creating new feed.\n * @param {jQuery|HTMLElement} feedForm feed from query dom object\n * @param {object} r merchant template ajax response object\n */\n renderMerchantTemplate: function (feedForm, r) {\n let _loop = function _loop(k) {\n if (r.hasOwnProperty(k)) {\n if ('tabs' === k) {\n // noinspection JSUnresolvedFunction\n feedForm.html(r[k]); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html\n } else {\n let contentSettings = $('[name=\"' + k + '\"]');\n\n if (contentSettings.length) {\n contentSettings.each(function() {\n let elem = $(this);\n\n if (elem.is('select')) {\n elem.find('[value=\"' + r[k] + '\"]').prop('selected', true);\n } else if ((elem.is('[type=checkbox]') || elem.is('[type=radio]')) && elem.val() === r[k]) {\n elem.prop('checked', true);\n } else {\n elem.val(r[k]); // type=text\n }\n }).trigger('change');\n }\n }\n }\n };\n\n for (let k in r) {\n _loop(k);\n }\n\n feedEditor.init();\n }\n },\n // Feed Editor Table\n merchantInfoCache = [],\n merchantTemplateCache = [],\n tooltip = () => {\n // Tooltip only Text\n $('.wfmasterTooltip')\n .hover(function () {\n // Hover over code\n let self = $(this), title = self.attr('wftitle');\n self.data('tipText', title).removeAttr('wftitle');\n $('<p class=\"wftooltip\"></p>').text(title).appendTo('body').fadeIn('slow');\n }, function () {\n // Hover out code\n let self = $(this);\n self.attr('wftitle', self.data('tipText'));\n $('.wftooltip').remove();\n })\n .mousemove(function (e) {\n $('.wftooltip').css({\n top: e.pageY + 10,\n left: e.pageX + 20\n });\n });\n },\n clip = () => {\n $copyBtn = $('.toClipboard');\n if (!ClipboardJS.isSupported() || /iPhone|iPad/i.test(navigator.userAgent)) {\n $copyBtn.find('img').hide(0);\n } else {\n $copyBtn.each(function() {\n $(this).on('mouseleave', clearTooltip).on('blur', clearTooltip);\n });\n clipboard = new ClipboardJS('.toClipboard');\n clipboard.on('error', function(event) {\n showTooltip(event.trigger, fallbackMessage(event.action));\n }).on('success', function(event) {\n showTooltip(event.trigger, 'Copied');\n });\n }\n };\n\n /**\n * Feed Generator Module\n */\n class feedGenerator {\n\n /**\n * Constructor\n * @constructor\n */\n constructor() {\n this._feed = opts.generator.feed; // wf_config+xxxx\n this._limit = opts.generator.limit;\n this._progress = 0;\n this._timer = null;\n this._color = false;\n // batch info\n this._total_batch = 0;\n this._current_batch = 0;\n this._product_ids = [];\n this._progress_per_batch = 0;\n this._refresh = true;\n // noinspection JSUnresolvedVariable\n this._regenerate = opts.generator.regenerate;\n window.isRegenerating = false;\n this._all_btn = $('.wpf_regenerate');\n this._current_btn = $(`#${this._feed.replace( 'wf_config', 'wf_feed_' )}`);\n this._current_btn_label = '';\n }\n\n /**\n * Init Hooks (Event)\n * @return {feedGenerator}\n */\n init() {\n let self = this;\n if ( '' !== this._feed && this._regenerate && false === window.isRegenerating ) {\n this.generate();\n }\n\n //thickbox body add feed plugin class to make it unique and custom style\n let current_page_query = window.location.search;\n let params = new URLSearchParams(current_page_query);\n let page_name = params.get(\"page\");\n if( \"webappick-manage-feeds\" === page_name ) {\n $('body').addClass('woo-import-popup-body');\n }\n\n $(document).on('click', '.woo-feed-campaign-close-button', function(event) {\n event.preventDefault();\n\n $(this).parent('.woo-feed-promotion').hide();\n let condition = $(this).data('condition');\n if(1 === condition) {\n wpAjax.post( 'woo_feed_hide_promotion', {\n _ajax_nonce: opts.nonce,\n condition: condition,\n } ).then( response => {\n self._log( response );\n } ).fail( error => {\n self._log( error );\n self._updateProgressStatus( error.message );\n self._color = 'red';\n } );\n }\n });\n\n $(document).on('click', '.wpf_regenerate', function(event) {\n event.preventDefault();\n self._current_btn = $( this );\n if( self._current_btn.hasClass('disabled') || window.isRegenerating === true ) return;\n self._feed = self._current_btn.attr('id').replace( 'wf_feed_', 'wf_config' );\n if( '' !== self._feed ) {\n self.generate();\n }\n });\n return this;\n }\n\n _block_button() {\n if ( this._all_btn.length ) {\n this._all_btn.addClass('disabled');\n }\n if ( this._current_btn.length ) {\n this._current_btn.find('span').addClass('wpf_spin reverse_spin');\n this._current_btn_label = this._current_btn.attr('title');\n // noinspection JSUnresolvedVariable\n this._current_btn.attr( 'aria-label', opts.regenerate ).attr( 'title', opts.regenerate );\n }\n }\n\n _unblock_button() {\n if ( this._all_btn.length ) {\n this._all_btn.removeClass('disabled');\n }\n if ( this._current_btn.length ) {\n this._current_btn.find('span').removeClass('wpf_spin');\n this._current_btn.find('span').removeClass('reverse_spin');\n this._current_btn.attr( 'aria-label', this._current_btn_label ).attr( 'title', this._current_btn_label );\n }\n }\n\n /**\n * Generate Feed\n * @return void\n */\n generate() {\n let self = this;\n window.isRegenerating = true;\n this._block_button();\n this._resetProgressBar();\n this._progressBarActive();\n this._log( 'Counting Total Products' );\n this._updateProgressStatus( 'Fetching products.' );\n this._get_product_ids().then( response => {\n this._progress = 10;\n self._log( {response} );\n if(response.success) {\n self._log( `Total ${response.total} Products found.` );\n self._product_ids = response.product;\n self._total_batch = this._product_ids.length;\n self._current_batch = 0;\n self._progress_per_batch = ( 90 - this._progress ) / this._total_batch;\n self._process_batch();\n self._updateProgressStatus( 'Processing Products...' );\n } else {\n self._updateProgressStatus( response.data.message );\n }\n }).fail( error => {\n self._log( error );\n self._updateProgressStatus( error.message );\n self._color = 'red';\n setTimeout( function(){\n self._stopProgressBar();\n self._unblock_button();\n }, 1500 );\n } );\n }\n\n /**\n * Get Product Ids\n * @returns {$.promise}\n * @private\n */\n _get_product_ids() {\n this._progress = 5;\n return wpAjax.post( 'get_product_information', {\n _ajax_nonce: opts.nonce,\n feed: this._feed,\n limit: this._limit,\n } );\n }\n\n /**\n * Run the Batch\n * @private\n */\n _process_batch() {\n let self = this;\n let status = `Processing Batch ${this._current_batch+1} of ${this._total_batch}`;\n this._updateProgressStatus( status );\n this._log( status );\n wpAjax.post( 'make_batch_feed', {\n _ajax_nonce: opts.nonce,\n feed: this._feed,\n products: this._product_ids[this._current_batch],\n loop: this._current_batch,\n } ).then( response => {\n self._current_batch++;\n self._log( `Batch ${self._current_batch} Completed` );\n self._log( response );\n if ( self._current_batch < self._total_batch ) {\n self._process_batch();\n self._progress += self._progress_per_batch;\n }\n if ( self._current_batch === self._total_batch ) {\n self._save_feed_file();\n }\n } ).fail( error => {\n self._log( error );\n self._updateProgressStatus( error.message );\n self._color = 'red';\n setTimeout( function(){\n self._stopProgressBar();\n self._unblock_button();\n }, 1500 );\n } );\n }\n\n /**\n * Save Feed Data from temp to feed file\n * @private\n */\n _save_feed_file() {\n let self = this;\n this._log( 'Saving feed file' );\n this._updateProgressStatus( 'Saving feed file' );\n wpAjax.post( 'save_feed_file', {\n _ajax_nonce: opts.nonce,\n feed: this._feed,\n } ).then( response => {\n self._log( response );\n self._progress = 100;\n if ( self._refresh ) {\n window.location.href = `${opts.pages.list.feed}&link=${response.url}&cat=${response.cat}`;\n }\n setTimeout( function(){\n self._stopProgressBar();\n setTimeout( function(){\n self._resetProgressBar( true );\n self._unblock_button();\n }, 3000 );\n }, 2500 );\n } ).fail( error => {\n self._log( error );\n self._updateProgressStatus( error.message );\n self._color = 'red';\n setTimeout( function(){\n self._stopProgressBar();\n self._unblock_button();\n }, 1500 );\n } );\n }\n\n /**\n * Console log wrapper with debug settings.\n * @param data\n * @returns {feedGenerator}\n * @private\n */\n _log( data ) {\n // noinspection JSUnresolvedVariable\n if ( opts.wpf_debug ) {\n console.log( data );\n }\n return this;\n }\n\n /**\n * Run the progressbar refresh interval\n * @param {int} refreshInterval\n * @returns {feedGenerator}\n * @private\n */\n _progressBarActive( refreshInterval = 0 ) {\n let self = this;\n this._toggleProgressBar( true );\n this._timer = setInterval( function(){\n self._updateProgressBar();\n }, refreshInterval || 1000 );\n return this;\n }\n\n /**\n * Stop Progressbar\n * @returns {feedGenerator}\n * @private\n */\n _stopProgressBar() {\n clearInterval( this._timer );\n return this;\n }\n\n /**\n * Reset Progressbar\n * @returns {feedGenerator}\n * @private\n */\n _resetProgressBar( update ) {\n this._toggleProgressBar( false );\n this._updateProgressStatus( '' );\n clearInterval( this._timer );\n this._color = false;\n this._timer = null;\n this._progress = 0;\n if ( update ) {\n this._updateProgressBar();\n }\n return this;\n }\n\n /**\n * Show hide the progress bar el\n * @param status\n * @returns {feedGenerator}\n * @private\n */\n _toggleProgressBar( status ) {\n let table = $('#feed_progress_table');\n if ( status ) {\n table.show();\n } else {\n table.hide();\n }\n return this;\n }\n\n /**\n * Update Progress bar text status\n * @param {string} status\n * @returns {feedGenerator}\n * @private\n */\n _updateProgressStatus( status ) {\n $( '.feed-progress-status' ).html( status );\n return this;\n }\n\n _getErrorMessageByCode( error ){\n let progress_message = $( '.feed-progress-status' );\n progress_message.css( {'color':this._color});\n $( '.feed-progress-percentage' ).css( {'color':this._color});\n $( '.wpf_spin' ).css( {'color':this._color});\n\n let message=error.status +' : '+ error.statusText+'. ';\n if(500===error.status){\n message+= \"Please increase your PHP max_execution_time. Please <a target='_blank' href='https://webappick.com/docs/woo-feed/faq-for-woocommerce-product-feed/how-to-solve-processing-10-feed-generation-stuck-error/'>read this doc</a>.\";\n }\n\n this._updateProgressStatus(message);\n\n }\n\n /**\n * Update Progress Data\n * hooked with setInterval\n * @private\n */\n _updateProgressBar() {\n let percentage = $( '.feed-progress-percentage' ),\n bar = $( '.feed-progress-bar-fill' ),\n _progress = `${Math.round( this._progress )}%`;\n bar.css( {\n width: _progress,\n } );\n percentage.text( _progress );\n }\n }\n // expose to the global scope\n window.wf = {\n helper: helper,\n feedEditor: feedEditor,\n generator: feedGenerator,\n };\n\n $(window).on('load', function() {\n // Template loading ui conflict\n if ($(location).attr(\"href\").match(/webappick.*feed/g) !== null) {\n $('#wpbody-content').addClass('woofeed-body-content');\n }\n\n // on edit page show item wrapper dropdown\n let current_page_url_query = window.location.search;\n let urlParams = new URLSearchParams(current_page_url_query);\n let page_action = urlParams.get('action');\n\n // ClipBoardJS\n clip();\n // postbox toggle\n postboxes.add_postbox_toggles(pagenow);\n // initialize generator\n let generator = new feedGenerator();\n generator.init();\n // noinspection JSUnresolvedVariable\n if( '' !== opts.generator.feed && opts.generator.regenerate ) {\n\n }\n // initialize editor\n feedEditor.init();\n helper.common(); // Generate Feed Add Table Row\n tooltip();\n // validate feed editor\n $(\".generateFeed\").validate();\n\n // document events\n $(document)\n .on('blur', 'input[name=\"wfDAttributeName\"]', function(e) {\n e.preventDefault();\n let attr_name = $(this).val();\n attr_name = attr_name.toLowerCase();\n attr_name = attr_name.split(' ').join('_');\n\n $('#wfDAttributeCode').val(attr_name);\n\n })\n .on('click', '[data-toggle_slide]', function(e) {\n e.preventDefault();\n $($(this).data('toggle_slide')).slideToggle('fast');\n })\n // XML Feed Wrapper\n .on('click', '#wf_newRow', function () {\n let tbody = $('#table-1 tbody'),\n template = $('#feed_config_template').text().trim().replace(/__idx__/g, tbody.find('tr').length);\n tbody.append(template);\n helper.fancySelect($('.outputType'));\n })\n // feed delete alert.\n .on('click', '.single-feed-delete', function (event) {\n event.preventDefault();\n // noinspection JSUnresolvedVariable\n if (confirm(opts.form.del_confirm)) {\n window.location.href = $(this).attr('val');\n }\n })\n // clear cache data.\n .on('click', '.wf_clean_cache_wrapper', function(event) {\n event.preventDefault();\n var nonce = $('.woo-feed-clean-cache-nonce').val();\n var loader = $('.woo-feed-cache-loader');\n\n //show loader\n loader.show();\n\n // passed cache nonce\n wpAjax.post('clear_cache_data', {\n _ajax_clean_nonce: nonce\n }).then(function (response) {\n if( response.success ) {\n loader.hide(); //hide loader\n location.reload();\n }\n }).fail(function (e) {\n console.log('something wrong');\n });\n\n })// Copy Status\n .on('click', '#woo-feed-copy-status-btn', function(event) {\n event.preventDefault();\n let button = $('#woo-feed-copy-status-btn');\n let status_area = $('#woo-feed-status-area');\n button.val('Copied');\n status_area.css('visibility','visible');\n status_area.select();\n\n document.execCommand('copy');\n })\n // feed value dropdown change.\n .on('change', '.wf_attr.wf_attributes', function(event) {\n event.preventDefault();\n\n $('.fancy-picker-picked').trigger(\"click\"); // trigger fancy select box clicked\n\n // price attributes\n var price_attributes = ['price', 'current_price', 'sale_price', 'price_with_tax', 'current_price_with_tax', 'sale_price_with_tax', 'shipping_cost'];\n // current value\n var current_attribute_value = $(this).val();\n var outputSelect = $(this).parents('tr').find('.outputType');\n var fancyOption = $(this).parents('tr').find('.fancy-picker-content .fancy-picker-option');\n var fancyDataPicker = $(this).parents('tr').find('.fancy-picker-data span');\n var selectIf, selectKey;\n\n // when any attribute is selected, pick the key\n if( price_attributes.includes(current_attribute_value) ) {\n // when select any price attribute\n selectIf = 'for_price';\n selectKey = \"Price\";\n } else if ( \"\" !== current_attribute_value && -1 !== current_attribute_value.indexOf('wf_taxo') ) {\n\n // when select any custom taxonomy\n selectIf = 'for_custom_taxo';\n selectKey = \"parent_if_empty\";\n } else {\n\n selectIf = 'for_all';\n selectKey = 'Default';\n }\n\n // remove selected class from old selected option\n fancyOption.removeClass('selected');\n\n // when value dropdown is selected as price or any custom taxonomy\n if( selectIf === 'for_custom_taxo' || selectIf === 'for_price' ) {\n\n // update \"Option Type\" when select key matches\n fancyOption.each(function(item) {\n if( selectKey === $(this).text() ) {\n $(this).addClass('selected');\n fancyDataPicker.text(selectKey);\n outputSelect.find(\"option\").text(selectKey);\n outputSelect.find(\"option\").val( $(this).data('value') );\n }\n });\n }\n\n })\n // bulk delete alert.\n .on('click', '#doaction, #doaction2', function () {\n // noinspection JSUnresolvedVariable\n return confirm(opts.form.del_confirm_multi);\n })\n // Generate Feed Table Row Delete\n .on('change', '.dType', function () {\n let self = $(this),\n type = self.val(),\n row = self.closest('tr');\n\n if (type === 'pattern') {\n row.find('.value_attribute').hide();\n row.find('.value_pattern').show();\n } else if (type === 'attribute') {\n row.find('.value_attribute').show();\n row.find('.value_pattern').hide();\n } else if (type === 'remove') {\n row.find('.value_attribute').hide();\n row.find('.value_pattern').hide();\n }\n })\n // Generate Feed Form Submit\n .on('click', '.delRow', function (e) {\n e.preventDefault();\n $(this).closest('tr').remove();\n helper.reindex_config_table();\n })\n .on('submit', '#generateFeed', function () {\n // Feed Generating form validation\n $(this).validate();\n\n if ($(this).valid()) {\n $(\".makeFeedResponse\")\n .show()\n .html(`<b style=\"color: darkblue;\"><i class=\"dashicons dashicons-sos wpf_spin\"></i> ${opts.form.generate}</b>`); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html, WordPressVIPMinimum.JS.StringConcat.Found\n }\n })\n // Generate Update Feed Form Submit\n .on('submit', '#updatefeed', function (e, data) {\n // Feed Generating form validation\n $(this).validate();\n\n if ($(this).valid()) {\n $(\".makeFeedResponse\")\n .show()\n .html(`<b style=\"color: darkblue;\"><i class=\"dashicons dashicons-sos wpf_spin\"></i> ${data && data.save ? opts.form.save : opts.form.generate}</b>`); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html, WordPressVIPMinimum.JS.StringConcat.Found\n }\n })\n .on( 'ready woo_feed_config_loaded', function(){\n\n if( $('#ftpenabled').val() === '0' ){\n $('.google-merchant-message').hide('slow');\n $('.woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select').attr('disabled','disabled');\n } else {\n if( $('#provider').val() === 'google' ) {\n $('.google-merchant-message').show('slow');\n } else {\n $('.google-merchant-message').hide('slow');\n }\n $('.woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select').removeAttr('disabled');\n }\n\n $('#ftpenabled').on('change', function(){\n if( $('#ftpenabled').val() === '0' ){\n $('.google-merchant-message').hide('slow');\n $('.woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select').attr('disabled','disabled');\n } else {\n\n $('.woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select').removeAttr('disabled');\n\n // Google merchant specific message\n if( $('#provider').val() === 'google' ){\n $('.google-merchant-message').show('slow');\n } else {\n $('.google-merchant-message').hide('slow');\n }\n\n }\n });\n })\n .on('change', '.ftporsftp', function () {\n let server = $(this).val(),\n status = $('.ssh2_status');\n\n if (server === 'sftp') {\n // noinspection JSUnresolvedVariable\n status.show().css('color', 'dodgerblue').text(opts.form.sftp_checking);\n wpAjax.post('get_ssh2_status', {\n _ajax_nonce: opts.nonce,\n server: server\n }).then(function (response) {\n if (response === 'exists') {\n // noinspection JSUnresolvedVariable\n status.css('color', '#2CC185').text(opts.form.sftp_available);\n setTimeout(function () {\n status.hide();\n }, 1500);\n } else {\n // noinspection JSUnresolvedVariable\n status.show().css('color', 'red').text(opts.form.sftp_warning);\n }\n }).fail(function (e) {\n status.hide();\n helper.ajax_fail(e);\n });\n } else {\n status.hide();\n }\n })\n .on('click', '[name=\"save_feed_config\"]', function (e) {\n e.preventDefault();\n $('#updatefeed').trigger('submit', {\n save: true\n });\n })\n .on('change', '#provider', function (event) {\n event.preventDefault();\n\n let merchant = $(this).val(),\n templateName = $(this).find(':selected').text(),\n name = $('#filename').val(),\n feedType = $(\"#feedType\"),\n feedForm = $(\"#providerPage\"),\n merchantInfo = $('#feed_merchant_info'); // set loading..\n\n // noinspection JSUnresolvedVariable\n feedForm.html('<h3><span style=\"float:none;margin: -3px 0 0;\" class=\"spinner is-active\"></span> ' + opts.form.loading_tmpl + '</h3>'); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html, WordPressVIPMinimum.JS.StringConcat.Found\n\n merchantInfo.find('.spinner').addClass('is-active');\n feedType.disabled(!0); // disable dropdown\n\n feedType.parent().find('.spinner').addClass('is-active');\n merchantInfo.find('.merchant-info-section .data').html(''); // remove previous data\n // Get Merchant info for selected Provider/Merchant\n\n if (merchantInfoCache.hasOwnProperty(merchant)) {\n feedEditor.renderMerchantInfo(merchantInfo, feedType, merchantInfoCache[merchant]);\n\n /**\n * Triggers after merchant configuration is fetched & loaded\n * */\n $(document).trigger('woo_feed_config_loaded');\n\n } else {\n wpAjax.send('woo_feed_get_merchant_info', {\n type: 'GET',\n data: {\n nonce: opts.nonce,\n provider: merchant,\n templateName: templateName\n }\n }).then(function (r) {\n merchantInfoCache[merchant] = r;\n feedEditor.renderMerchantInfo(merchantInfo, feedType, r);\n }).then(function(){\n\n /**\n * Triggers after merchant configuration is fetched & loaded\n * */\n $(document).trigger('woo_feed_config_loaded');\n\n }).fail(helper.ajax_fail);\n } // Get FeedForm For Selected Provider/Merchant\n\n\n if (merchantTemplateCache.hasOwnProperty(merchant)) {\n feedEditor.renderMerchantTemplate(feedForm, merchantTemplateCache[merchant]);\n\n /**\n * Triggers after merchant configuration is fetched & loaded\n * */\n $(document).trigger('woo_feed_config_loaded');\n\n } else {\n wpAjax.post('get_feed_merchant', {\n _ajax_nonce: opts.nonce,\n merchant: merchant\n }).then(function (r) {\n merchantTemplateCache[merchant] = r;\n feedEditor.renderMerchantTemplate(feedForm, r);\n $('#utm_source').val(templateName);\n $('#utm_campaign').val(name);\n //when merchant is bing, change delimiter and enclosure\n if( 'bing' === merchant ) {\n //delimiter value\n $(\"#delimiter option\").removeAttr('selected');\n $(\"#delimiter option[value=\\\"tab\\\"]\").attr('selected', 'selected');\n\n //enclosure value\n $(\"#enclosure option\").removeAttr('selected');\n $(\"#enclosure option[value=\\\" \\\"]\").attr('selected', 'selected');\n }\n\n //reviewer options hide\n if( 'google_product_review' !== merchant) {\n $('.wf_attributes option[value=\"reviewer_name\"]').hide();\n }\n }).then(function(){\n\n /**\n * Triggers after merchant configuration is fetched & loaded\n * */\n $(document).trigger('woo_feed_config_loaded');\n\n }).fail(helper.ajax_fail);\n }\n })\n // Feed Active and Inactive status change via ajax\n .on('change', '.woo_feed_status_input', function () {\n let self = $(this);\n wpAjax.post('update_feed_status', {\n _ajax_nonce: opts.nonce,\n feedName: self.val(),\n status: self[0].checked ? 1 : 0\n });\n });\n // event with trigger\n $(document)\n .on('change', '[name=\"is_outOfStock\"], [name=\"product_visibility\"]', function () {\n let outOfStockVisibilityRow = $('.out-of-stock-visibility');\n if ($('[name=\"is_outOfStock\"]:checked').val() === 'n' && $('[name=\"product_visibility\"]:checked').val() === '1') {\n outOfStockVisibilityRow.show();\n } else {\n outOfStockVisibilityRow.hide();\n }\n })\n .on('change', '.attr_type', function () {\n // Attribute type selection\n let self = $(this),\n type = self.val(),\n row = self.closest('tr');\n\n if (type === 'pattern') {\n row.find('.wf_attr').hide();\n row.find('.wf_attr').val('');\n row.find('.wf_default').show();\n } else {\n row.find('.wf_attr').show();\n row.find('.wf_default').hide();\n row.find('.wf_default').val('');\n }\n })\n .on('change', '.wf_mattributes, .attr_type', function () {\n let row = $(this).closest('tr'),\n attribute = row.find('.wf_mattributes'),\n type = row.find('.attr_type'),\n valueColumn = row.find('td:eq(4)'),\n provider = $('#provider').val();\n\n // noinspection JSUnresolvedVariable\n if (opts.form.google_category.hasOwnProperty(attribute.val()) && type.val() === 'pattern' && helper.in_array(provider, opts.form.google_category[attribute.val()])) {\n if (valueColumn.find('select.selectize').length === 0) {\n valueColumn.find('input.wf_default').remove();\n valueColumn.append('<span class=\"wf_default wf_attributes\"><select name=\"default[]\" class=\"selectize\"></select></span>');\n // noinspection JSUnresolvedVariable\n valueColumn.append(`<span style=\"font-size:x-small;\"><a style=\"color: red\" href=\"https://webappick.com/docs/woo-feed/feed-configuration/how-to-map-store-category-with-merchant-category/\" target=\"_blank\">${opts.learn_more}</a></span>`);\n\n if (!googleCategories) {\n valueColumn.append('<span class=\"spinner is-active\" style=\"margin: 0;\"></span>');\n }\n\n let select = valueColumn.find('.wf_attributes select');\n // noinspection JSUnresolvedVariable\n helper.selectize(select, {\n preload: true,\n placeholder: opts.form.select_category,\n load: function load(query, cb) {\n if (!googleCategories) {\n wpAjax.send('get_google_categories', {\n type: 'GET',\n data: {\n _ajax_nonce: opts.nonce,\n action: \"get_google_categories\",\n provider: provider\n }\n }).then(function (r) {\n googleCategories = r;\n cb(googleCategories);\n valueColumn.find('.spinner').remove();\n }).fail(helper.ajax_fail);\n } else {\n cb(googleCategories);\n }\n }\n });\n }\n } else {\n if (attribute.val() !== 'current_category' && valueColumn.find('input.wf_default').length === 0) {\n valueColumn.find('span').remove();\n valueColumn.append('<input autocomplete=\"off\" class=\"wf_default wf_attributes\" type=\"text\" name=\"default[]\" value=\"\">');\n\n if (type.val() !== 'pattern') {\n valueColumn.find('input.wf_default').hide();\n }\n }\n }\n })\n .on('change', '#feedType,#provider', function (e) {\n let type = $('#feedType').val(),\n provider = $('#provider').val(),\n itemWrapper = $('.itemWrapper'),\n wf_csv_txt = $('.wf_csvtxt');\n\n // noinspection JSUnresolvedVariable\n if (type !== '' && helper.in_array(provider, opts.form.item_wrapper_hidden)) {\n itemWrapper.hide();\n }\n\n //when feed type is changed\n if( 'feedType' === e.target.id ) {\n if (type === 'csv' || type === 'txt' || type === 'tsv') {\n itemWrapper.hide();\n wf_csv_txt.show();\n\n if( 'tsv' === type ) {\n $('#delimiter option:last').prop(\"selected\", \"selected\");\n } else if( 'csv' === type ) {\n $('#delimiter option:first').prop(\"selected\", \"selected\");\n }\n } else if( 'xml' === type ) {\n itemWrapper.show();\n wf_csv_txt.hide();\n } else if( 'json' === type ) {\n itemWrapper.hide();\n wf_csv_txt.hide();\n }\n }\n\n })\n .trigger('change');\n\n\n $(document)\n\t\t\t.on('click', '.woofeed-custom-fields [id*=\"-switcher\"]', function () {\n\t\t\t $(this).closest('td').find('.switch-loader').show();\n\t\t\t\tlet field = $(this).attr( 'id' ).split( '-' )[0],\n\t\t\t\t\tisTaxonomy = $(this).data( 'taxonomy' ),\n\t\t\t\t\tstatus = $(this).prop( 'checked' );\n\t\t\t\tnew WooFeedCustomFields( field, status, isTaxonomy );\n\n\t\t\t})\n\n\t\t\t// Remove sticky cart on feature page\n\t\t\t.ready(function() {\n\t\t\t\tvar s = $(\".wapk-feed-buy-now-container\");\n\t\t\t\tvar pos = s.position();\n\t\t\t\t$(window).scroll(function() {\n\t\t\t\t\tvar windowpos = $(window).scrollTop();\n\t\t\t\t\tif ( windowpos <= 5000 ) {\n\t\t\t\t\t\ts.addClass(\"fixed\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts.removeClass(\"fixed\");\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n });\n\n $(document)\n\t\t.on('click', '#woo-feed-debug-log-download', function (e) {\n\t\t\te.preventDefault();\n\t\t\t$(\"<a />\", {\n\t\t\t\tdownload: new Date() + \".log\",\n\t\t\t\thref: URL.createObjectURL(\n\t\t\t\t\tnew Blob([$(\"#woo-feed-debug-log\").val()], {\n\t\t\t\t\t\ttype: \"text/plain\"\n\t\t\t\t\t})),\n\t\t\t}).appendTo(\"body\")[0].click();\n\t\t})\n\t\t.on('keyup', '#filename', function(e) {\n\t\t\tvar name = $('#filename').val();\n\t\t\t$('#utm_campaign').val(name);\n\t\t})\n\n // var providerVal = $('#category-mapping-form #providers').val();\n\t\t// console.log(providerVal)\n\t\t.on('change', '#category-mapping-form #providers', function(e) {\n\t\t\tvar provider = $(this).find(':selected').val(),\n\t\t\t\tgoogleMap = ['google', 'facebook', 'pinterest', 'bing', 'bing_local_inventory', 'snapchat'];\n\t\t\tif( googleMap.indexOf(provider) !== -1 ) {\n\t\t\t\t$('input[id*=\"cat_mapping_\"]').css('display', 'none');\n\t\t\t\t$('.wf_default.wf_attributes').css('display', 'block').css('width', '100%');\n\t\t\t\t// $('#category-mapping-form .dashicons').css('display', 'block');\n\t\t\t} else {\n\t\t\t\t$('input[id*=\"cat_mapping_\"]').css('display', 'block');\n\t\t\t\t$('.wf_default.wf_attributes').css('display', 'none').css('width', '100%');\n\t\t\t\t// $('#category-mapping-form .dashicons').css('display', 'none');\n\t\t\t}\n\t\t})\n\n // Copy parent category ids to child categories.\n\t\t.on('click', 'span[id*=\"cat-map-\"]', function(e) {\n\t\t\te.preventDefault();\n\t\t\tvar providerName = $('#category-mapping-form #providers').val(),\n\t\t\t\tgoogleMap = ['google', 'facebook', 'pinterest', 'bing', 'bing_local_inventory', 'snapchat'],\n\t\t\t\tcatId = $(this).attr('id').replace(/[^\\d.]/g, ''),\n\t\t\t\tgroupId = 'group-child-' + catId;\n\n\t\t\tif( googleMap.indexOf(providerName) !== -1) {\n\t\t\t\tvar catField = $(this).parents('tr').find('.selectized').val();\n\n\t\t\t\tif (catField) {\n\t\t\t\t\t$('.' + groupId).parents('tr').find('select').each(function (i, v) {\n\t\t\t\t\t\t$(v).data('selectize').setValue(catField);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tvar value = $('#cat_mapping_'+catId).val();\n\t\t\t\t$('.'+groupId).parents('tr').find('input').val(value);\n\t\t\t}\n\n\t\t});\n\n $(document).ready(function (){\n\n wpAjax.send('get_google_categories', {\n type: 'GET',\n data: {\n _ajax_nonce: opts.nonce,\n action: \"get_google_categories\",\n // provider: provider\n }\n }).then(function (response) {\n $('.selectize-google-category').selectize({\n valueField: 'value',\n labelField: 'text',\n placeholder: 'Select a category',\n searchField: ['value', 'text'],\n options: response,\n render: {\n option: (data, escape) => `<div class=\"item wapk-selectize-item\">${escape(data.value + ' - ' + data.text)}</div>`,\n item: (data, escape) => `<div class=\"item wapk-selectize-item\">${escape(data.value + ' - ' + data.text)}</div>`\n }\n });\n }).fail(helper.ajax_fail);\n\n\n\n });\n\n\n})(jQuery, window, document, wp.ajax, wpf_ajax_obj);\n"]}
1
+ {"version":3,"sources":["woo-feed-admin.js"],"names":["_defineProperties","target","props","descriptor","i","enumerable","configurable","writable","Object","defineProperty","key","_createClass","Constructor","protoProps","staticProps","prototype","window","wpAjax","$","document","opts","self","prop","status","addClass","removeClass","hasClass","currentTarget","clearTooltip","userAgent","actionMsg","match","actionKey","index","join","removeAttr","elem","attr","msg","extend","_default","_args","clip","$copyBtn","ClipboardJS","isSupported","test","navigator","feedGenerator","this","on","action","showTooltip","event","trigger","wpf_ajax_obj","success","url","data","_classCallCheck","WooFeedCustomFields","productCustomFields","field","isTaxonomy","value","ajax","nonce","method","response","wpf_ajax_url","clipboard","googleCategories","log","closest","find","hide","in_array","needle","haystack","indexOf","console","selectize_render_item","escape","sortable","onDrop","text","ajax_fail","column_count","warn","wf_sortable","containerSelector","e","hasOwnProperty","error","statusText","el","config","column","_onDrop","each","length","selectize","itemPath","itemSelector","concat","plugins","$item","container","group","options","draggedClass","bodyClass","render","item","helper","not","fancySelect","maxItemShow","create","split","map","s","handle","placeholder","form","replace","x","reindex_config_table","init","renderMerchantInfo","jQuery","k","opt","merchantInfo","feedType","r","types","html","t","trim","toLowerCase","na","disabled","val","_loop2","renderMerchantTemplate","_loop","filter","contentSettings","feedForm","feedEditor","merchantInfoCache","tooltip","css","top","_regenerate","isRegenerating","feed","_progress","_product_ids","_progress_per_batch","_refresh","_feed","_all_btn","generate","_current_btn","condition","_current_batch","then","URLSearchParams","preventDefault","parent","_current_btn_label","_ajax_nonce","_log","_updateProgressStatus","message","_color","regenerate","setTimeout","_this2","_stopProgressBar","_process_batch","fail","limit","_limit","_block_button","_progressBarActive","_save_feed_file","loop","_get_product_ids","_total_batch","_unblock_button","_resetProgressBar","refreshInterval","post","arguments","undefined","clearInterval","_timer","setInterval","_updateProgressBar","update","_toggleProgressBar","table","show","color","width","generator","current_page_url_query","wf","postboxes","location","pagenow","attr_name","hover","title","appendTo","remove","left","pageX","confirm","href","slideToggle","loader","reload","button","status_area","select","execCommand","progress_message","current_attribute_value","fancyOption","selectIf","selectKey","outputSelect","parents","includes","page_action","add_postbox_toggles","row","del_confirm_multi","type","template","append","validate","valid","save","price_attributes","server","sftp_checking","fancyDataPicker","merchant","sftp_warning","name","templateName","loading_tmpl","provider","send","merchantTemplateCache","outOfStockVisibilityRow","feedName","checked","valueColumn","attribute","load","google_category","query","learn_more","preload","cb","wf_csv_txt","itemWrapper","item_wrapper_hidden","id","windowpos","scroll","Date","click","catField","setValue","catId","scrollTop","option","download","searchField"],"mappings":"yHAAA,SAAAA,kBAAAC,EAAAC,+BACA,IAAAC,EAAAD,EAAAE,GACAD,EAAAE,WAAAF,EAAAE,aAAA,EACAF,EAAAG,cAAA,EACA,UAAAH,IAAAA,EAAAI,UAAA,GACAC,OAAAC,eAAAR,EAAAE,EAAAO,IAAAP,IALA,SAAAQ,aAAAC,EAAAC,EAAAC,GAEA,OAOAD,GAAAb,kBAAAY,EAAAG,UAAAF,GARAC,GAAAE,kBAAAC,EAAAH,GACAF,GAcA,SAAAM,EAAAF,EAAAG,EAAAF,EAAAG,4DAqBgBC,IAAAA,EAAAA,EAAAA,MADJC,EAAAD,gBAIC,IAAAA,EAAAA,KAAAC,GAHGD,EAAAA,KAAAA,OAAAA,IAAAA,IAAAA,IAAAA,IAQZ,IAAAE,EAAAF,EAAAG,SAAAF,GAAAD,EAAAI,YAAAH,sCAII,IACIA,EAAAA,EAAAA,MACJJ,EAAA,WAHJ,YACI,IAAAG,EAAAC,KAAAA,GAAAD,EAAAC,KAAAA,GAAAD,EAAAK,SAAAJ,IAUQK,SAWRC,EAXoCC,GAAAC,EAAAA,EAAAA,eAAiCC,YAAMC,SAAhBC,EAA4CC,GAAYT,OAAAA,EAAAA,MAAAA,sBAAAA,IAAAA,KAAAA,OADvHK,YAAA,cAAAK,WAAAH,cAKYR,SAANY,EAAAA,EAAAA,GADNlB,EAPJkB,GAAAZ,SAAA,2BAAAa,KAAA,aAAAC,mBAtDA,OAAApB,EAAAqB,QAAA,EAAA,GAAAC,EAAAC,GA8G2D,SAkNnDC,IA1LJC,EAAAzB,EAAA,iBA8LQ0B,YAAAC,eAAA,eAAAC,KAAAC,UAAAlB,kCApUZc,EAqUcK,KAAAA,WAGM9B,EAAA+B,MAAAC,GAAA,aAAAtB,GAAAsB,GAAA,OAAAtB,KACAP,IAAAA,YAAAA,gBACAH,GAAAA,QAAAA,SAAAA,GAxQZ,IAAAiC,EAGAnB,EAsQWoB,EAAAC,EAAAC,SAzQXH,EAyQuBE,EAAAF,OAtQvBnB,EAAA,QAAAmB,EAAA,IAAA,6CACgB,gBAAZZ,OAAAO,KAAAC,UAAAP,WAAAV,WAAAA,EAAAA,OAAAA,EAGH,cAAAE,EAAA,OAAAmB,MAkQsBD,GAAA,UAAA,SAAAG,4BAjRrBA,IA8DDE,EAELC,EAlCJC,EAHI,WAIJC,SAAAA,EAAAA,EAAAA,EAAAA,GAJIC,gBAAAV,KAAAW,GArFJX,KAAAY,oBAAAC,EAAAvC,EAAAwC,GAsHU,OARiDpD,aAAAiD,EAAA,CAAA,kBAAAI,MAAA,WAAA,IAAAN,EAAbK,CArGDZ,OAmFtCS,0CAELT,MAAAA,aAAAc,KAAAC,OAoBEJ,EAAAA,KAAAA,CAnBDvC,OAAAA,OACAwC,IAAAA,aAAAA,aAJIH,KAnFsCF,MAAAD,CA0F1CC,IAAAA,sBACCP,MAAAA,SAAAA,EAAAA,EAAAA,GACAe,IAAAA,EAAAA,KAEDhD,EAAE+C,EAFDC,UAECD,aAAAA,IAHDd,GAAAA,EAIAgB,EAAAA,EAAAA,UAAQC,OAJRjB,OAIAgB,EACAV,EAAAA,+CACAC,MAAAA,aAAAA,KAAAA,MAHMI,MAAAA,EA9FmCvC,OAAAA,EAAAwC,WAAAA,WAT7CI,OAAA,OAAAV,IAAAF,aAAAc,oBA8G2Db,QAAA,SAAAY,GAyBnDE,EAzBmDd,QAAAe,EAAAA,aACpDb,QAAOc,IAAAJ,GAGVN,EAAAA,IAAAA,EAHU,aAAAW,QAAA,MAAAC,KAAA,kBAAAC,cADgCZ,EAzB1C,MAsCCa,SAAA,SAAAC,EAAAC,GACC,IACA,OAAA,IAAAA,EAAAC,QAAAF,GACAG,MAAAA,GACA,OAAA,IAEDC,sBAAA,SAAAvB,EAAAwB,GAXFC,MAAAA,yCAAAC,OAAAF,EAAAxB,EAAA2B,MAAA,WA7G0CC,UAwJrBC,SAAoBb,GAxJCrD,QAAAmE,KAAAC,GAAAC,MAAAA,EAAAA,eAAA,eAAAC,EAAAC,eAAA,UAAAxE,EAAA6C,KAAA4B,MAAA,KAAAF,EAAAG,WAAA,KAAAH,EAAApE,OAAA,IAAAoE,IAqIzBR,SAAA,SAAAY,EAAAC,EAAAC,EAAAC,GACH,OAAAH,GAAA7E,EAAA,kBAAAiF,KAAA,WAtI4B,IAAA9E,EAgI5B2E,EAhI4B/C,MAwIjCgC,EAdT5D,EAAAqD,KAAA,yBAAA0B,QAAAH,GAAA,EArB2ClC,EAAAA,YAAAA,EAAAA,CA2B7BsC,kBAAA,QAQwGC,SAAA,UAClGC,aAAA,KACPlF,OAAAgF,mBACQT,YAAevE,wCADvBmF,OAAAjB,EAAA,gBAVCkB,OAAAA,SAAAC,EAAAC,EAAAjD,EAAAL,GA+CWqD,EAAAjF,YAAOkF,EAAPC,MAAAC,QAAAC,cAAA3E,WAAA,SAlChBjB,EAAA,QAHIO,YAAAkF,EAAAC,MAAAC,QAAAE,WAKhBC,GAAA,mBAAAd,GACAe,EAAAP,EAAAQ,EAAAjC,EAAAA,KARyHe,OAc/FK,UAAMN,SAAAA,EAAAC,GACA,OAAC3E,GAAbH,EAAA,qBAAYiG,IAAA,eAAAA,IAAA,8BAAAhB,KAAA,WACRZ,IAAAA,EAAY6B,EAAAA,MAChBC,EAAAA,UAAAA,EAAwB,CADKC,OAEzB5B,EAFAH,KAAAA,YAAAA,EAGAe,QALEjF,EAAAqC,KAAA,WAAArC,EAAAqC,KAAA,WAAA6D,MAAA,KAAAC,IAAA,SAAAC,GAjDoB1D,OAAAA,EAAAA,SAwDtB2D,GAEQxG,OAAAwD,CACEjD,KAAAA,EAAAA,wBAFVkG,OAMKT,YAAA/B,SAAAY,EAAAC,GACJkB,OAAAnB,GAAAM,EAAAA,uBAAAc,IAAA,oBAAAhB,KAAA,WAZLiB,EAAAA,MAHJA,YAAA7E,EAAA,CAjD2C8E,YAAA,GAoE/ChB,OAGQhF,qBAAAA,WACIiG,EAAAA,YAAAA,KAAAA,YAAAA,KAAAA,SAAAA,EAAAA,GACAb,EAAAA,GAAAA,KAAAA,UAAAA,KAAAA,SAAAA,EAAAA,GACImB,EAAA7B,GAAA1D,KALG,OAAAnB,EAAA6E,GAAA1D,KAAA,QAAAwF,QAAA,YAAA,IAAArB,OAAAsB,EAAA,YASHb,OAAAA,WADIC,EAAA/B,SAAAjE,EAAA,iBAAA,GAAA,EAAAgG,EAAAa,sBAGT/B,EATHK,YAFJa,EAAA7F,YAAAH,EAAA,qBA1CC0G,KA0Cc,KA2BdI,KAAA,WACJ/E,KACOgF,KAAAA,EAAAA,iBADPhF,KACa2E,KAAAxB,SAEHC,EAAAA,0CA5EnBnF,EAAAC,GAAAmC,QAAA,IAAA4E,OAAAC,MAAA,kBAAA,CAgFIlI,OAAAgD,KAAA2E,UAURK,mBAAAG,SAAAC,EAAAC,EAAAC,GACAH,SAAAA,EAAAlB,GAMgB,IAoCKsB,EAzCSD,EAAA3C,eAH9BuC,KAIgBE,EAAA3D,KAAA8D,0BAAA9D,EAAA,UAAA+D,KAAAF,EAAAC,IAEuB,mBAf/BL,KAqDaK,EAAAD,EAAAJ,GAAAZ,MAAA,KAAAC,IAAA,SAAAkB,GA3DK,OAAAA,EAAAC,OAAAC,mCACS,MAAA,KAAAF,GAAAA,IAAAtH,EAAAyH,GAAAD,iBAyBFhB,QADjBU,EAAAQ,KAAA,UAAA3G,WAAA,YAAAgE,KAAA,WAlBKmC,IAAAF,EAAA9E,EAAAL,MAuBTmF,EAAAW,QAAA7B,EAAAtC,SAAAwD,EAAAW,MAAAP,GAAAJ,EAAAU,UAAA,GAAAV,EAAAU,UAAA,KAEZ,IAAAN,EAAApC,QAAAkC,EAAA5D,KAAA,iBAAA8D,EAAA,GAAA,MAAAnG,KAAA,WAAA,6CAOwBgG,IAAAA,IAAAA,KAAAA,EAqCxBW,EAAAb,GAjCgCc,EAAAA,KAAAA,YAAYxH,YAAA,aACR6G,EAAAY,UAASP,GACVQ,EAAO7F,QAAAsC,UAKAQ,EAAAA,GAAQgD,QAAAA,gFAS7BhH,uBAAA,SAAAiH,EAAAd,GAvBgD,SAAAW,EAAAf,GA6D7B/F,GAAAA,EAAAA,eAAA+F,GA5DP,GAAA,SAAAA,EAuBhBkB,EAAAZ,KAAAF,EAAAJ,QAyCQ,CAvCIzD,IAAAA,EAAAA,EAAAA,UAAAA,EAAAA,gBAIb0E,EAAAjD,KAAA,WAChB+C,IAAA9G,EAAAlB,EAAA+B,qBAEiBqG,EAAAA,KAAmBtB,WAAnBO,EAAAJ,GAAA,MAAA7G,KAAA,YAAA,IAEDgH,EAAAA,GAAAA,oBAAAA,EAAAA,GAAAA,kBAAAA,EAAAA,QAAAA,EAAAA,GAzK2ClG,EAAAd,KAAA,WAAA,GA4K/CiI,EAAAA,IAAAhB,EAAAJ,MAEZqB,QAAA,WAM4BnI,IAAAA,IAAW8G,KAAGI,EACdrH,EAAAiH,GAGIiB,EAAAA,SA4CZlI,EAAgBuI,GAtCQC,EAsCJ,GAEZ1G,EAAA,WAKR,SAAK2G,IAuCb3I,gBAAO4I,KAAAA,GArCHjH,KAAAA,MAAS+B,EAAAA,UAATmF,KAEAlH,KAAAA,OAAAA,EAAAA,UAAAA,MAAAM,KAAA6G,UAAA,EAGAxF,KAAAA,OAAAA,KACAA,KAAAA,QAAAA,4CAjWhBrB,KAAA8G,aAAA,GAAA9G,KAAA+G,oBAAA,EAAA/G,KAAAgH,UAiWgB,0CAAAjJ,EAAA4I,gBAAAM,EAKHjH,KAAAkH,SAAAC,EAAAA,mBAhOTnH,KAAAoH,aAoOJnJ,EAAA,IAAAsF,OAAAvD,KAAAiH,MAAArC,QAAA,YAAA,yCAjW6C,OAsW7ClH,aAAAqC,EAAA,CAAA,YAEA9B,MAAAC,WACQkC,IAAAA,EAAAJ,KACI,KAAa7B,KAAAA,OAAeyI,KAAMnG,cAAA,IAAlC1C,EAAA4I,gCAGAU,IAAAA,EAAAA,EAAAA,SAAAA,OA6BA,MAzBKC,2BAHSC,IACdC,gBAAArG,GA0CuBA,IAAAA,qDAtClB4F,EAAAA,GAAAA,GAAAA,QAAL,kCAAKA,SAAAA,GACL3G,EAAAqH,iBA2CKxJ,EAAA+B,MAAA0H,OAAA,uBAAAhG,OAzCAgF,IAdjBW,EAAApJ,EAAA+B,MAAAS,KAAA,aAiBiB2G,IAAAA,GACAO,EAAAA,KAAAA,0BAAAA,CACRC,YAAAR,EAAAA,MAEDhJ,UAAA6I,qBACR7I,EAAAyJ,KAAA1G,KACA/C,KAAAA,SAAA+I,GACA/I,EAAAyJ,KAAAjF,GA2CYxE,EAAA0J,sBAAAlF,EAAAmF,SApbZ3J,EAAA4J,OAAA,UAybgB/J,EAAAC,GAAKgJ,GAAAA,QAAS3I,kBAAd,SAAA6B,GA7CCA,EAAAqH,wCACDrJ,EAAK+I,aAAAA,SAAL,cAAA,IAAApJ,EAAA4I,iBAGJvI,EAAA6I,MAAAG,EAAAA,aAAAhI,KAAAb,MAAAA,QAAA,WAAA,aA6CI,KAAKoJ,EAAAA,uBA1CT3H,OAnZZ,CAAAvC,IAAA,gBAqZkBsD,MAAA,WACLf,KAAAkH,SAAAA,QAgDAlH,KAAAkH,SAAA3I,SAAA,YA7CSkJ,KAAAA,aAAAA,kIAkDTzH,KAAAoH,aAAAhI,KAAA,aAAAjB,EAAA8J,YAAA7I,KAAA,QAAAjB,EAAA8J,eA3CWZ,CAFoC5J,IAAA,kBAIpCW,MAAAA,iCAlaxB4B,KAAAkH,SAAA1I,YAAA,YA8ZoBwB,KAAAoH,aAAAjE,gEAsDRpF,KAAAA,aAAO4I,KAAAA,QAAPnI,YAAA,gBA/CYJ,KAAAA,aAAAA,KAAAA,aAAAA,KAAAA,oBAAAA,KAAAA,QAAAA,KAAAA,uBAGP,gBAhBL2C,MAAA,WAmBE7C,IAAAA,EAAU+B,KACFwH,EAAAA,KAAAA,EAAAA,gBAAAA,uBAEGL,KAAAA,oBACThJ,KAAAA,qBACIA,KAAAA,KAAAA,qHALRA,EAAAA,UAAA0J,GAUH1J,EAAAA,KAAAA,CA5aoC+C,SAAAA,eA+a5B/C,EAAAA,KAAK8I,SAAAA,OAAAA,EAAkBtE,MAAAmF,qBACnBb,EAAAA,aAAS3I,EAAT2I,QACRgB,EAAAA,aAAAC,EAAArB,aAAA3D,OAmDO/E,EAAAA,eAAKgK,wDAjDJhB,EAFRiB,iBAGGjK,EAAA0J,sBAAA,2BAGH1J,EAAA0J,sBAAA3G,EAAAV,KAAAsH,WAvbgCO,KAAA,SAAA1F,GAAAxE,EAAAyJ,KAAAjF,GAT7CxE,EAAA0J,sBAAAlF,EAAAmF,SAAA3J,EAAA4J,OAS6C,MA2b5BE,WAAKhB,WACN9I,EAAAgK,mBAuDAxB,EAAAA,mBArDC2B,UAvcjB,CAAA9K,IAAA,mBA+cAsD,MAAA,kBACAf,KAAA6G,UAAA,oCACAe,YAAAE,EAAAA,sBAwDYS,MAAAvI,KAAAwI,WArDO7B,sBA6DHvI,MAAAA,sBA5DCqK,EAAAA,oBAAAA,OAAAA,KAAAA,eAAAA,EAAAA,QAAAA,OAAAA,KAAAA,cA8DDzI,KAAA8H,sBAAUR,gBA5DToB,EAAAA,KAAAA,kBAAAA,qBAgED9B,KAAA5G,KAAK5B,MA/DEA,SAAAA,KAAAuK,aAAA3I,KAAAsH,gBAiENsB,KAAA5I,KAAAsH,iBAhEAQ,KAAAA,SAAAA,GAkED1J,EAAAA,iBAjECyK,EAAAA,KAAAA,SAAAA,OAAAA,EAAAA,eAAAA,eACGzK,EAAAA,KAACyI,GACMzI,EAAAA,eAAAgK,EAAAU,kCAAX1K,EAkEUyI,WAAVzI,EAAA2I,qBAOR3I,EAAAkJ,iBAAAlJ,EAAA0K,cAtEY1K,EAAAA,oBAEAA,KAAAA,SAAAA,aAjepBA,EAAA0J,sBAAAlF,EAAAmF,SA0iBY3J,EAAA4J,OAAW,4BAvEH5J,EAAAA,mBAyERA,EAAA2K,8BAOItL,IAAA,kBAzEKqK,MAAAA,WA2EJ,IAAA1J,EAAA4B,KA1EIgI,KAAAA,KAAAA,mEA8EG5J,EAAAA,KAAAA,iBAAK4K,qBA3EJD,KAAAA,KAAAA,QAFTxB,KAAA,SACSa,GAnBbhK,EAAAyJ,KAAA1G,GAyBJ/C,EAAAA,UAAAwE,IACRxE,EAAA4I,sGAGA5I,WAAA,gCA9e6C8J,WA6e7C,WA7e6C9J,EA2dzBA,mBAAAA,GAsBRA,EAAA2K,mBACInB,MACAhB,QACA2B,KAAAA,SAAAA,GAH2CnK,EAAAyJ,KAAAjF,sCA1f3DxE,EAAA4J,OAAA,MAAAE,WAigBQ,WACR9J,EAAAgK,mBAEArG,EAAAA,mBA8Ea,WAllBbtE,IAAA,OAAAsD,MAAA,SAAAN,UA4lBkDtC,EAAtB8K,WAlFhBjL,QAAOkL,IAAMzI,UA8FzB,CArFgBhD,IAAA,uCAnhBhB,IAAAwL,EAAA,EAAAE,UAAAhG,aAAAiG,QAAA,EAAAhL,EAAA4B,KAyhBiB,OAkFLqJ,KAAAA,oBAAoBC,GArFftJ,KAAAsJ,OAAAC,YAAA,WACDnL,EAAAoL,sBACIpL,GAAAA,KACH4B,QA6FLvC,IAAA,oCAxFIyK,OADA9J,cAAAA,KAAckL,QACdpB,OAKP,CAEDzK,IAAA,oBAERsD,MAAA,SAAA0I,GAKiB3B,OAJjB9H,KAAA0J,oBAAA,GA/hB6C1J,KAAA8H,sBAAA,IAAAuB,cAAArJ,KAAAsJ,uBAT7CtJ,KAAAsJ,OAAA,KAAAtJ,KAAA6G,UAAA,EAwoBY4C,6BA7FAzJ,OAyGZ,CAjGgBvC,IAAA,qBACIM,MAAAA,SAAAA,mCApjBpB,OAAAO,EAAAqL,EAAAC,OAsjBgB1B,EAAAA,OAtjBhBlI,OA2jBqB/B,CAHDR,IAAA,wBAAAsD,MAGC,SAAAzC,UAELgK,EAAAA,yBAAM1F,KAAAtE,UAuGNyJ,CArGA3J,IAAAA,2CACK4J,EAAAA,yBAED5J,IAAAA,CACAA,MAAAA,KAAAA,SAEPH,EAAA,6BAAAuI,IAAA,CACJqD,MAAA7J,KAAAgI,6BAtkBT6B,MAAA7J,KAAAgI,SAAA,IAAAD,EAykBAnF,EAAAtE,OAAA,MAAAsE,EAAAC,WAAA,KACA,MACAD,EAAAtE,SADAyJ,GAEAlB,iOAyGgBiD,KAAAA,sBAAOjD,+BApGP9E,MAAAA,WACHkC,IAAAA,EADGlC,EAAAA,6BA4GRsE,EAAAA,EAAAA,2BA1GI0D,EAAAhK,GAAAA,OAAAA,KAAAA,MAAAA,KAAAA,WAAAA,KAIZhC,EAAAA,IAAAkC,CACA6J,MAAAjD,IAEA5I,EAAAmE,KAAAyE,OAjlB6CmD,EA2UjB,GA0QhBvK,EAAAwK,GAgHJ,UA/GIC,WAAKZ,eAGLS,EAAAA,GAAAA,GAAOhF,OACV,WAEDkD,OAAAhK,EAAAkM,UAAAhM,KAAA4L,QAAAnD,MAAA,mGA5lBqC,IAAAY,gBAAAwC,qBAumB7CtH,UAAA+E,oBAAA2C,UAEAC,IAAAA,GACAA,OANS,KAQQX,EARRK,UAQQL,MAAAA,EARRK,UAQG9B,WAuHC5B,EArHDgD,OAVHpF,EAWQ+D,SAzUuB7I,EAjBxC,oBAAAmL,MAAA,WAhL2D,IAmMnBnL,EAAAA,EAAAA,MACHO,EAAAtB,EAAAgB,KAAA,qDACJnB,EAAA,6BAVDmE,KAAAmI,GAAAC,SAAA3K,QAAAC,OAAAlB,SAWHc,WAERA,IAAAA,EAAAwD,EAAAA,MAtBLjF,EAAAmB,KAAA,UAAAhB,EAAAqC,KAAA9B,YA+DCV,EAAA,cAzCIwM,WAGLpJ,UAAiB,SAAA1B,GACb0B,EAAAA,cAAAmF,IAAA,CACHrG,IAAAA,EAAAA,MAAAC,GAwCAsK,KAzCGhI,EAyCEiI,MAzCF,OAiUHlB,EAAAA,iBAAStF,WAdjBlG,EAAAC,GAwIO+B,GAAS,OAAA,iCAAwC,SAAAyC,GAvH9CtC,EAAAA,qCAInBrC,GADQsM,EAAAO,EAAAjG,eACRkG,MAAA5M,KAAAgB,KAAAG,KACAnB,EAAA,qBAAA6H,IAAAuE,KAtBSpK,GAwBT,QAAA,sBAAA,SAAAyC,GAxBSA,EAyBTzC,iBAwHgBG,EAAAA,EAAAA,MAAMqH,KAAAA,iBAANqD,YAAA,UArvB6B7K,GAAA,QAAA8K,aAAA,qCA0vB7BA,EAAOnB,EAAP,yBAzHMA,OAAAA,OAAAA,QAAAA,WAAAA,EAAAA,KAAAA,MAAAA,oBACH5L,EAAAA,YAAAC,EAAA,kBAAAgC,GAAA,QAEN,sBAAA,SAAAG,GA4HOA,EAAAqH,+CA1HX0C,EAAAA,SAAAa,KAAA/M,EAAA+B,MAAAZ,KAAA,UAIT2C,GAAAA,QAAA,0BAAA,SAAA3B,GACAA,EATmBqH,iBAWnB,IAAAxG,EAAAhD,EAAA,+BAAA6H,MAzCSiF,EAAA9M,EAqKgB,0BAzwBoB8M,EAAAE,OA+oB9BA,EAAAA,KAAAnF,mBAAA,CACIoF,kBAAPjK,IACHiK,KAAAA,SAAAC,GAjpBoCjN,EAAAkN,UAomBpCL,EAgDOM,OACmBjL,SAAQqH,YAC/Ba,KAAA,SAAA5F,sCACAzC,GAAA,QAAAqL,4BAAAxF,SAAA1F,GAEI2H,EAAAA,iBAqIA,IAAAkD,EAAIM,EAAAA,6BApILL,EAAMtI,EAAAA,yBACLmF,EAAOyD,IAAAA,wCAGN1D,EAAAA,SAER5J,EAAAkN,YAAA,UAGTK,GAAAA,SAAAA,yBAAA,SAAArL,GACAA,EANiB0H,iBAQjB7J,EAAA,wBAAAoC,QAAA,SAtqB6C,IA4qBxBkL,EAAE1E,EAHE4E,EAAAxN,EAAA+B,MAAA8F,MApBS4F,EAsBbzN,EAAA+B,MAAA2L,QAAA,MAAAlK,KAAA,kJAMjBgK,EAjrByC,CAAA,QAAA,gBAAA,aAAA,iBAAA,yBAAA,sBAAA,iBA+qBpCG,SAAAN,IA/qBoCC,EAAAA,YAirBzCE,SA0I0B,KAAMlN,IAAR,IAAA+M,EAAAxJ,QAAA,YAzIZ4J,EAAAA,kBAAAA,oBAGG3L,EArrB0B,UAkrBzC,WAqJYwL,EAAOX,YAAajG,YAvIR6C,oBA5FnBgE,GA4FmCxB,cAAAA,GAChC6B,EA2IY3I,KAAO,SA3InB2I,GAAAA,IAIJrK,EAAAA,MAAAY,sCACU0J,EAAAA,KAAAA,GA0IEC,EAAStK,KAAA,UAAAW,KAAoBV,GAxIzBqK,EAAIhM,KAAAA,UAAJ+F,IAAhB8D,EAAgB5J,MAAAS,KAAA,eA8IJsL,GAAAA,QAAItK,wBAAyBC,WAtIzC,OAAAkJ,QAAAzM,EAAAwG,KAAAqH,qBA5GC/L,GAuPIA,SAvPJ,SAAA,WA+GCyC,IAAAtE,EAAAqJ,EAAAA,MA0IMxJ,EAAEG,EAAMoD,MAtIXvB,EAAAA,EAAG6E,QAAAA,MAGa,YAAAmH,GACAhO,EAAGoM,KAAH,oBAAA3I,wCAKJ,cAAAuK,GACPxE,EAAAA,KAAF,oBACemC,OAGNmC,EAAAtK,KAAA,kBAAAC,QAELwK,WAAAA,IAnIXH,EAoIaI,KAAAA,oBAANzK,OACOyC,EAAAA,KAAAA,kBAAAA,UAIDsD,GAAAA,QAAAA,UAAAA,SACN/E,GAkIIzE,EAAAA,iBA/HHA,EAAA+B,MAAAwB,QAAA,MAAAiJ,SAELxG,EACaa,yBAEA7E,GAAA,SAAK,gBAAA,WAmIVhC,EAAAA,MAAEmO,WAEFnO,EAAA+B,MAAMqM,SA9HEpO,EAAAA,qBAAA2L,OAAApE,KAAA,gFAAAjC,OAAApF,EAAAwG,KAAAwC,SAAA,WAGK5G,GAAAA,SAAAA,cAAAA,SAAAA,EAAAA,GACFmB,EAAAA,MAAP0K,4BAEHnO,EAAAA,qBAAA2L,OAAApE,KAAA,gFAAAjC,OAAA9C,GAAAA,EAAA6L,KAAAnO,EAAAwG,KAAA2H,KAAAnO,EAAAwG,KAAAwC,SAAA,WAEWlJ,GAAAA,+BAAZyD,WARJ,MAAAzD,EAAAA,eAAA6H,OAWF7H,EAAA,4BAAAyD,KAAA,QAEQ+F,EAAAA,iHAANrI,KAAMqI,WAAN,cAGA,WAAWxJ,EAAA,aAAX6H,MACgB7H,EAAAA,4BAAA2L,KAAA,QAGK3L,EAAAA,4BAAAyD,KAAA,QAMnBzD,EAAA,iHApBGiB,WAAA,aAuBDqN,EAAAA,eA6HUtM,GAAC,SAAA,yCA1HXyL,EAAAA,4BAAuBC,KAAAA,QACvBJ,EAAAA,iHAAAA,KAAAA,WAAAA,cAEUE,EAAAA,iHAEdvM,WAAA,YACqB0M,WAAjBW,EAAAA,aAAiBX,MADrB3N,EAAA,4BAEI2L,KAAA,QAEA3L,EAAA,4BAAAyD,KAAA,aAKYzB,GAAA,SAAA,aAFZ,WAGG,IAAAuM,EAPQvO,EAOR+B,MAAA8F,MAEHxH,EAAAL,EAAA,gBAIJ,SAAAuO,GAyHQlO,EAAAA,OAAOoD,IAAP,QAAA,cAAAU,KAAAjE,EAAAwG,KAAA8H,eAxHIjO,EAAAA,KAAY,kBAAZA,CA0HPoJ,YA7IS6D,EAAAA,MAsBVD,OAAagB,IAEblO,KAAAA,SAAA6C,GACAoK,WAAAA,GAGQmB,EAAAA,IAAAA,QAAAA,WAAAA,KAAAA,EAAAA,KAAAA,gBACAhB,WAAAA,WACAA,EAAajK,QADbiK,OASZpN,EAAAqO,OAAAnG,IAAA,QAAA,OAAApE,KAAAjE,EAAAwG,KAAAiI,gBAAAtE,KAGJuE,SAAAnK,GAHIpE,EAIU+G,OAJVpB,EAKamC,UAAb1D,oEAMI0C,EAAAA,iBACGC,EAAAA,eAAQQ,QAjBd,SAiBgC,aAG1BT,GAAAA,SAAa,YAAb,SAAAhF,GACHA,EAAAqH,qCAEHqF,EAAAxG,EAAAA,MAAA7E,KAAAkB,aAAAgK,OAELtG,EAAAA,EAAAA,aAAArB,MAEMyC,EAAAA,EAAAA,aACFxJ,EAAAA,EAAAA,iBACAgG,EAAAA,EAAAA,uBAIQmI,EAVP5G,KAUD,oFAAArH,EAAAwG,KAAAoI,aAAA,SAEId,EAAiBxK,KAiHyB,YAAAlD,SAAA,aAhHxCkC,EAAAA,UAAF,GAKRuM,EAAAA,SAAAvL,KAAAkL,YALQpO,SAAA,aAMMuO,EAAAA,KAAAA,gCAAeA,KAAAA,IAkHjBxG,EAAAA,eAA8BhB,IA9GlCe,EAAAA,mBAAiBrB,EAAAI,EAAAC,EAAjBsH,IAUE1O,EAAAA,GAAAC,QAAAmC,2BAGIrC,EAAAiP,KAAA,6BAAA,kBAGLhM,MAAAiM,EAAAA,MA4GD7G,SAAAA,EA1GHyG,aAAAA,KAED7O,KAAAA,SAAAA,UACUA,EAAAC,mBAAyBkH,EAAAC,EAAzBC,KALLiC,KAAA,WAQMtJ,EAAAC,GAKCmC,QAAA,4BACE6M,KAAAA,EAAAA,gCAVd7G,EAAAL,uBAAAI,EAAA8G,EAAAP,IAuBI1O,EAAAA,GAAAoC,QAAA,2BAEYrC,EAhBqBkL,KAkBrBsD,oBAAAA,kCACJjF,KAAA,SAAUpG,GACGlD,EAAA0O,GAAArH,EACbe,EAAAL,uBAAAI,EAAAd,GACOkB,EAAAA,eAAIV,IAAAgH,GAEApL,EAAAA,iBAAAA,IAAAA,GAEd,SAAAiL,IAGA1O,EAAA,qBAAAoE,WAlCE,YAmCCpE,EAAA,kCAAAmB,KAAA,WAAA,YAdRa,EAAA,qBAAAf,WAAA,YAkBGjB,EAAA,gCAAAmB,KAAA,WAAA,aAKLqI,0BAAFkF,GAJI1O,EAAOyD,gDAAAA,yBAaPoL,EAAAA,GAAYzM,QAAA,4BACH8M,KAAAA,EAAAA,aAGT/H,GAAAA,SAAAA,yBAAAA,WAEJ,IAqGHnF,EAAGhC,EAAA+B,MApGSwF,EAAAA,KAAAA,qBAAAA,CAsGToC,YAAW3J,EAAEgD,MAAbmM,SApGkBhP,EAAAA,MAoGlBE,OAnGSuH,EAATzH,GAAuBiP,QAAA,EAmGvB,MA/FAtB,EAAAA,GAAAtK,GAAA,SAAA,sDAAA,WAsGIsK,IAAAA,EAAwBnC,EAAAA,4BAnGb5E,MAAAA,EAAAA,kCAAAA,OAAAA,MAAAA,EAAAA,uCAAAA,MAEX+G,EAAAnC,OAEpBuD,EAAAzL,SAGuBzB,GAAA,SAAA,aAAA,WAAA,IAAA7B,EACuCH,EAAA+B,MADvCiM,EAGOqB,EAAAA,MAHPvB,EAIY5N,EAAAA,QADL,MAAAwG,YAAAsH,GAKFF,EAAAtK,KAAA6L,YAAa7L,OACjB6E,EAAAA,KAAAA,YAAiB7E,IAAjB,IACWuD,EAAAA,KAAAA,eAAAA,SAGXsI,EAAAA,KAAAA,YAAAnB,oCAExBJ,EAAAtK,KAAA,eAAAH,IAAA,OAGmCe,GAAAA,SAAAA,8BAAAA,uCAoGXkL,EAAIpC,EAAM1J,KAAG6L,0CAhGjBJ,EAAqB9J,EAAAA,KAACT,YACXqD,EAAAA,EAAAA,aAD0B2G,MAIzDa,GAAAA,EAAAA,KAAAC,gBAAAC,eAAAH,EAAAzH,QAAA,YAAAmG,EAAAnG,OAAA7B,EAAAtC,SAAAqL,EAAA7O,EAAAwG,KAAA8I,gBAAAF,EAAAzH,SACA,GAAA,IAAAwH,EAAAhM,KAAAA,oBAAA6B,OAAA,CAkGoCnF,EAAAA,KAAM,oBAAMyM,SAjGRwB,EAAAA,OAAA,sGAGarE,EAAAA,OAAAA,0LAD9BrE,OAAApF,EAAAwP,WAAA,gBAGWhB,GAHXW,EAAAnB,OAAA,8DAOsBW,IAAAA,EAAAA,EAArBxL,KAAAA,yBAmGa2C,EAAAb,UAAEkF,EAAW,CAhG1BsF,SAbxB,EAc4BC,YAAAvM,EAAAA,KAAAA,gBACCkM,KAAA,SAAAE,EAAAG,GACCvM,EAkBF2C,EAAAA,GAvC6B0I,EAArCO,KAAAA,wBAAAA,CAwBUjB,KAAA,MA3CAxL,KA4CA,CAGNmH,YAAA9B,EAAA7E,MA+FAqM,OAAAA,wBACAA,SAAAA,KA9FM/F,KAAA0E,SAAA3G,GAEFuI,EADHP,EAAAhI,GAGDgI,EAAA7L,KAAA,YAAAgJ,WACxBnC,KAAArE,EAAA5B,mBAY8BjE,qBAAAA,EAAAA,OAAAA,IAAAA,EAAAA,KAAAA,oBAAAA,SACFA,EAGpBqD,KAAA,QAAAgJ,wHA6FY,YAAJwB,EAAInG,OA3FJwH,EADR7L,KACkB,oBAAAC,UAGNyL,GAAAA,SAAAA,sBAAA,SAAAzK,GACGzE,IAAAA,EAAAA,EAAA,aAAA6H,MACHqH,EAFAA,EAEuB,aAACzL,MAC3BzD,EAAAA,EAAA,gBAES6P,EAAA7P,EAAA,cAEV8P,KAAAA,GAAAnE,EAAAjI,SAAAqL,EAAA7O,EAAAwG,KAAAqJ,sBACgBlI,EAAAA,OAIH,aAAApD,EAAA1F,OAAAiR,KACA,QAAAhC,GAAA,QAAAA,GAAA,QAAAA,GAvHhBhM,EA0HgByB,OAGZoM,EACJ7N,OAEG,QACIsN,EADJtP,EAAA,0BAEoBwC,KAAA,WAFpB,YAGI6M,QAAAA,GAHJrP,EAAA,2BAAAI,KAI8ByH,WAE9BhF,aAIQwM,QAAWrB,GA2F/B8B,EAAUnE,OAzFU0D,EAAAA,QA2FpB,SAAiBrB,IAzFG8B,EAAAG,oBA6FlB7N,QA5FsBiN,UAGJ9I,EAAAA,GAAAhG,GAAAA,QAAU,2CAAV,WA2FlBP,EAAA+B,MAAAwB,QAAA,MAAAC,KAAA,kBAAAmI,OAzFkB3F,IAmFpBpD,EAAA5C,EAAA+B,MAAAZ,KAAA,MAAAkF,MAAA,KAAA,GAlFwBsJ,EAxBX3P,EAAA+B,MAAAS,KAAA,YAvejBnC,EAAAL,EAAA+B,MAAA3B,KAAA,WAkgBgC,IAAAH,EACIF,EAAAA,EAAAA,KAEIyC,MAAAA,WACImH,IAAAA,EAAAA,EAAAA,gCACA1H,EAAAA,WAFE+L,EAAAA,GAAAkC,OAAA,WAEFjO,EAAAA,GAAAA,aAMJoN,IACH9I,EAAAjG,SAAA,SAIRiG,EAAAhG,YAAA,0EAKL8O,EAAAA,iBACAA,EAAAA,QAAAA,CA2FpBrP,SAAE,IAAAmQ,KAAA,OAxFsBd,KAJJA,IAIIA,gBAAAA,IAAAA,KAAAA,CAAAA,EAAAA,uBAAAA,OAAAA,CACHrP,KAAA,kBAGZuM,SAAA,QAAA,GAAA6D,UA7BmBpO,GA+BhB,QAAA,YAAA,SAAAyC,GA/BgB,IA+BhBmK,EA/BgB5O,EAkCZ6P,aAAAA,MA0FjBpL,EAAAA,iBAAAoD,IAAA+G,KAvFa5M,GAAA,SAIA,oCAAA,SAJAyC,GAAA,IAAAsK,EA2FL/O,EAAG+B,MAAAyB,KAAA,aA3FEqE,OAM8B,+EAA1BwI,QAAatB,yDAETc,EAAAA,6BAAAA,IAAAA,UAAAA,SAAAA,IAAAA,QAAAA,UAEA7P,EAAAA,6BAAAsQ,IAAAA,UAAqBD,SACjBrQ,EAAAA,6BAsFvBuI,IAAA,UAAA,QAAAA,IAAA,QAAA,WAlFgBvG,GAAA,QAAAc,uBAAMyN,SAAqB1I,GACxBiI,EAAAA,iBACAD,IAAAA,EAAAA,EAAAA,qCAAAA,MAIHU,EAAAtQ,EAAA8B,MAAAZ,KAAA,MAAAwF,QAAA,UAAA,IAIRvE,EAAQ4M,eAAAuB,EAKb/N,IAAOe,IAnEiB,CAAA,SAAA,WAAA,YAAA,OAAA,uBAAA,YAmEjBA,QAAAA,GAAAA,CACFoG,IAAAA,EAAAA,EAAWxI,MAAM6B,QADfO,MAAAA,KAAAA,eAAAA,SAAAA,EAAAA,IAAAA,GAAAA,QAAAA,MAAAA,KAAAA,UAAAA,KAAAA,SAAAA,EAAAA,GALFnB,EAaVkH,GAAAA,KAAA,aAAApG,SAAAmN,SAGW9J,CACA2J,IAAAA,EAAAA,EAAAA,gBAAOK,GAHA1I,MAIZoI,EAAAA,IAAAA,GAAcnQ,QAAAA,MAAQ0Q,KAJV,SAAA3I,IAAA/E,MAMf2N,EAAAA,GAAAA,MAAA,WAAA1Q,EAAAiP,KAAA,wBAAA,CAAAhB,KAAA,MACMjI,KAAAA,CAAA4D,YAAAzJ,EAAA8C,MAAAf,OAAA,2BArBCG,KAiBTiI,SAAAjG,GArBiBpE,EAAA,8BAAAmF,UAAA,CAoCjBuL,WAAAA,QACA9D,WAAAA,OAEEoB,YAAAA,oBAD0C2C,YAAA,CAAA,QAAA,QAHlChL,QAAAzC,UAQXlB,OAXC,SAWWQ,EAXXwB,GAaC,MAAA,yCAAFsB,OAACtB,EAACxB,EAAF6D,MAAAC,MAAA9D,EAAA2B,MAAA,WAAE4B,KAAA,SAAAvD,EAAAwB,GAME+K,MAAAA,yCAAAA,OAAAA,EAAAA,EAAAA,MAAAA,MAAAA,EAAAA,MAAAA,gBAGD1E,KAAArE,EAAA5B,oaA1rCN","file":"woo-feed-admin.min.js","sourcesContent":["// noinspection JSUnresolvedletiable\n/**!\n * WooFeed Scripts\n * @version 3.3.6\n * @package WooFeed\n * @copyright 2020 WebAppick\n *\n */\n/* global ajaxurl, wpAjax, postboxes, pagenow, alert, deleteUserSetting, typenow, adminpage, thousandsSeparator, decimalPoint, isRtl */\n// noinspection JSUnresolvedVariable\n(function($, window, document, wpAjax, opts) {\n \"use strict\";\n /**\n * All of the code for your admin-facing JavaScript source\n * should reside in this file.\n *\n * Note: It has been assumed you will write jQuery code here, so the\n * $ function reference has been prepared for usage within the scope\n * of this function.\n *\n * This enables you to define handlers, for when the DOM is ready:\n */\n\n /**\n * disable element utility\n *\n * @since 3.1.9\n *\n * @param {*} status\n * @returns {jQuery|HTMLElement}\n */\n $.fn.disabled = function(status) {\n $(this).each(function() {\n let self = $(this),\n prop = 'disabled';\n\n if (typeof self.prop(prop) !== 'undefined') {\n self.prop(prop, status === void 0 || status === true);\n } else {\n !0 === status ? self.addClass(prop) : self.removeClass(prop);\n }\n });\n return self; // method chaining\n };\n\n /**\n * Check if a HTMLElement or jQuery is disabled\n */\n $.fn.isDisabled = function() {\n let self = $(this),\n prop = 'disabled';\n return typeof self.prop(prop) !== 'undefined' ? self.prop(prop) : self.hasClass(prop);\n };\n\n /**\n * Clear Tooltip for clip board js\n * @param {Object} event\n */\n const clearTooltip = (event) => {\n $(event.currentTarget).removeClass( (index, className) => (className.match(/\\btooltipped-\\S+/g) || []).join(' ') ).removeClass('tooltipped').removeAttr('aria-label');\n };\n\n const showTooltip = (elem, msg) => {\n $(elem).addClass('tooltipped tooltipped-s').attr('aria-label', msg);\n };\n\n const fallbackMessage = (action) =>{\n let actionMsg,\n actionKey = action === 'cut' ? 'X' : 'C';\n\n if (/iPhone|iPad/i.test(navigator.userAgent)) {\n actionMsg = 'No support :(';\n } else if (/Mac/i.test(navigator.userAgent)) {\n actionMsg = 'Press ⌘-' + actionKey + ' to ' + action;\n } else {\n actionMsg = 'Press Ctrl-' + actionKey + ' to ' + action;\n }\n\n return actionMsg;\n };\n\n /**\n * Alias of jQuery.extend()\n * @param {Object} _default\n * @param {Object} _args\n */\n const extend = (_default, _args) => $.extend(true, {}, _default, _args);\n\n\t/*\n\t* Handles product attributes\n\t*\n\t* @since 4.4.18\n\t* */\n\tclass WooFeedCustomFields {\n\n\t\tconstructor( field, status, isTaxonomy ) {\n\t\t\tthis.productCustomFields( field, status, isTaxonomy );\n\t\t}\n\n\t\tcacheClear() {\n\t\t\tlet data = {\n\t\t\t\taction: 'woo_feed_product_attribute_cache_remove',\n\t\t\t\tnonce: wpf_ajax_obj.ajax.nonce,\n\t\t\t};\n\t\t\t$.ajax({\n\t\t\t\tmethod: 'POST',\n\t\t\t\turl: wpf_ajax_obj.wpf_ajax_url,\n\t\t\t\tdata\n\t\t\t});\n\t\t}\n\n\t\tproductCustomFields( field, status = false, isTaxonomy ) {\n\t\t\tlet data = {\n\t\t\t\taction: 'woo_feed_custom_fields_status_change',\n\t\t\t\tnonce: wpf_ajax_obj.ajax.nonce,\n\t\t\t\tfield,\n\t\t\t\tstatus,\n\t\t\t\tisTaxonomy\n\t\t\t};\n\t\t\t$.ajax({\n\t\t\t\tmethod: 'POST',\n\t\t\t\turl: wpf_ajax_obj.wpf_ajax_url,\n\t\t\t\tdata,\n\t\t\t\tsuccess: ( response ) => {\n\t\t\t\t\tif( response.success ) {\n\t\t\t\t\t\tthis.cacheClear();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.log( response );\n\t\t\t\t\t}\n $('#'+field+'-switcher').closest('td').find('.switch-loader').hide();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n let $copyBtn,\n clipboard,\n googleCategories,\n helper = {\n in_array: (needle, haystack) => {\n try {\n return haystack.indexOf(needle) !== -1;\n } catch (e) {\n return false;\n }\n },\n selectize_render_item: (data, escape) => `<div class=\"item wapk-selectize-item\">${escape(data.text)}</div>`, // phpcs:ignore WordPressVIPMinimum.JS.StringConcat.Found,\n ajax_fail: e => {\n console.warn(e);\n alert(e.hasOwnProperty('statusText') && e.hasOwnProperty('status') ? opts.ajax.error + '\\n' + e.statusText + ' (' + e.status + ')' : e);\n },\n /**\n * Initialize Sortable\n * @param {jQuery|HTMLElement} el\n * @param {object} config\n * @param {int|boolean} column\n * @param {function} onDrop\n * @return {jQuery|HTMLElement}\n */\n sortable: (el, config, column, onDrop) => {\n return (el || $('.sorted_table')).each(function() {\n let self = $(this),\n column_count = self.find('tbody > tr:eq(0) > td').length || column || 9;\n self.wf_sortable(extend({\n containerSelector: 'table',\n itemPath: '> tbody',\n itemSelector: 'tr',\n handle: 'i.wf_sortedtable',\n placeholder: `<tr class=\"placeholder\"><td colspan=\"${column_count}\"></td></tr>`,\n onDrop: ($item, container, _super, event) => {\n $item.removeClass(container.group.options.draggedClass).removeAttr('style');\n $(\"body\").removeClass(container.group.options.bodyClass);\n if ( onDrop && 'function' === typeof( onDrop ) ) {\n onDrop( $item, container, _super, event );\n }\n },\n }, config));\n });\n },\n selectize: (el, config) => {\n return (el || $('select.selectize')).not('.selectized').not('.selectize-google-category').each(function() {\n let self = $(this);\n self.selectize(extend({\n create: self.data('create') || false,\n plugins: self.data('plugins') ? self.data('plugins').split(',').map(function(s) {\n return s.trim();\n }) : [],\n //['remove_button'],\n render: {\n item: helper.selectize_render_item\n }\n }, config));\n });\n },\n fancySelect: (el, config) => {\n return (el || $('select.fancySelect')).not('.FancySelectInit').each(function() {\n let self = $(this);\n self.fancySelect(extend({\n maxItemShow: 3\n }, config));\n });\n },\n reindex_config_table: () => {\n $('#table-1').find('tbody tr').each( ( x, el ) => {\n $(el).find('[name]').each( ( x1, el ) => {\n $(el).attr('name', $(el).attr('name').replace(/(\\[\\d\\])/g, `[${x}]`));\n } );\n } );\n },\n common: () => {\n helper.sortable( $('.sorted_table'), {}, 9, helper.reindex_config_table );\n helper.selectize();\n helper.fancySelect($('.outputType'));\n }\n },\n // helper functions\n feedEditor = {\n /**\n * The Editor Form Elem.\n * @type {jQuery|HTMLElement}\n */\n form: null,\n\n /**\n * Initialize The Feed Editor {Tabs...}\n * @returns {void}\n */\n init: function () {\n let self = this;\n self.form = $('.generateFeed');\n if (!self.form.length) return;\n helper.common();\n // noinspection JSUnresolvedVariable\n $(document).trigger('feed_editor_init');\n $(document).trigger(new jQuery.Event('feedEditor.init', {\n target: this.form\n }));\n },\n\n /**\n * Render Merchant info ajax response and handle allowed feed type for selected merchant\n * @param {jQuery|HTMLElement} merchantInfo jQuery dom object\n * @param {jQuery|HTMLElement} feedType jQuery dom object\n * @param {Object} r ajax response object\n */\n renderMerchantInfo: function (merchantInfo, feedType, r) {\n for (let k in r) {\n if (r.hasOwnProperty(k)) {\n merchantInfo.find('.merchant-info-section.' + k + ' .data').html(r[k]); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html\n\n if ('feed_file_type' === k) {\n (function() {\n let types = r[k].split(\",\").map(function(t) {\n return t.trim().toLowerCase();\n }).filter(function(t) {\n // noinspection JSUnresolvedVariable\n return t !== '' && t !== opts.na.toLowerCase();\n });\n\n if (types.length) {\n feedType.find('option').removeAttr('selected').each(function() {\n let opt = $(this);\n opt.val() && !helper.in_array(opt.val(), types) ? opt.disabled(!0) : opt.disabled(!1);\n });\n if (types.length === 1) feedType.find('option[value=\"' + types[0] + '\"]').attr('selected', 'selected');\n } else feedType.find('option').disabled(!1);\n })();\n }\n }\n }\n\n merchantInfo.find('.spinner').removeClass('is-active');\n feedType.disabled(!1);\n feedType.trigger('change');\n\n /**\n * Triggers after merchant configuration is fetched & loaded\n * */\n $(document).trigger('woo_feed_config_loaded');\n\n feedType.parent().find('.spinner').removeClass('is-active');\n },\n\n /**\n * Render Feed Template Tabs and settings while creating new feed.\n * @param {jQuery|HTMLElement} feedForm feed from query dom object\n * @param {object} r merchant template ajax response object\n */\n renderMerchantTemplate: function (feedForm, r) {\n let _loop = function _loop(k) {\n if (r.hasOwnProperty(k)) {\n if ('tabs' === k) {\n // noinspection JSUnresolvedFunction\n feedForm.html(r[k]); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html\n } else {\n let contentSettings = $('[name=\"' + k + '\"]');\n\n if (contentSettings.length) {\n contentSettings.each(function() {\n let elem = $(this);\n\n if (elem.is('select')) {\n elem.find('[value=\"' + r[k] + '\"]').prop('selected', true);\n } else if ((elem.is('[type=checkbox]') || elem.is('[type=radio]')) && elem.val() === r[k]) {\n elem.prop('checked', true);\n } else {\n elem.val(r[k]); // type=text\n }\n }).trigger('change');\n }\n }\n }\n };\n\n for (let k in r) {\n _loop(k);\n }\n\n feedEditor.init();\n }\n },\n // Feed Editor Table\n merchantInfoCache = [],\n merchantTemplateCache = [],\n tooltip = () => {\n // Tooltip only Text\n $('.wfmasterTooltip')\n .hover(function () {\n // Hover over code\n let self = $(this), title = self.attr('wftitle');\n self.data('tipText', title).removeAttr('wftitle');\n $('<p class=\"wftooltip\"></p>').text(title).appendTo('body').fadeIn('slow');\n }, function () {\n // Hover out code\n let self = $(this);\n self.attr('wftitle', self.data('tipText'));\n $('.wftooltip').remove();\n })\n .mousemove(function (e) {\n $('.wftooltip').css({\n top: e.pageY + 10,\n left: e.pageX + 20\n });\n });\n },\n clip = () => {\n $copyBtn = $('.toClipboard');\n if (!ClipboardJS.isSupported() || /iPhone|iPad/i.test(navigator.userAgent)) {\n $copyBtn.find('img').hide(0);\n } else {\n $copyBtn.each(function() {\n $(this).on('mouseleave', clearTooltip).on('blur', clearTooltip);\n });\n clipboard = new ClipboardJS('.toClipboard');\n clipboard.on('error', function(event) {\n showTooltip(event.trigger, fallbackMessage(event.action));\n }).on('success', function(event) {\n showTooltip(event.trigger, 'Copied');\n });\n }\n };\n\n /**\n * Feed Generator Module\n */\n class feedGenerator {\n\n /**\n * Constructor\n * @constructor\n */\n constructor() {\n this._feed = opts.generator.feed; // wf_config+xxxx\n this._limit = opts.generator.limit;\n this._progress = 0;\n this._timer = null;\n this._color = false;\n // batch info\n this._total_batch = 0;\n this._current_batch = 0;\n this._product_ids = [];\n this._progress_per_batch = 0;\n this._refresh = true;\n // noinspection JSUnresolvedVariable\n this._regenerate = opts.generator.regenerate;\n window.isRegenerating = false;\n this._all_btn = $('.wpf_regenerate');\n this._current_btn = $(`#${this._feed.replace( 'wf_config', 'wf_feed_' )}`);\n this._current_btn_label = '';\n }\n\n /**\n * Init Hooks (Event)\n * @return {feedGenerator}\n */\n init() {\n let self = this;\n if ( '' !== this._feed && this._regenerate && false === window.isRegenerating ) {\n this.generate();\n }\n\n //thickbox body add feed plugin class to make it unique and custom style\n let current_page_query = window.location.search;\n let params = new URLSearchParams(current_page_query);\n let page_name = params.get(\"page\");\n if( \"webappick-manage-feeds\" === page_name ) {\n $('body').addClass('woo-import-popup-body');\n }\n\n $(document).on('click', '.woo-feed-campaign-close-button', function(event) {\n event.preventDefault();\n\n $(this).parent('.woo-feed-promotion').hide();\n let condition = $(this).data('condition');\n if(1 === condition) {\n wpAjax.post( 'woo_feed_hide_promotion', {\n _ajax_nonce: opts.nonce,\n condition: condition,\n } ).then( response => {\n self._log( response );\n } ).fail( error => {\n self._log( error );\n self._updateProgressStatus( error.message );\n self._color = 'red';\n } );\n }\n });\n\n $(document).on('click', '.wpf_regenerate', function(event) {\n event.preventDefault();\n self._current_btn = $( this );\n if( self._current_btn.hasClass('disabled') || window.isRegenerating === true ) return;\n self._feed = self._current_btn.attr('id').replace( 'wf_feed_', 'wf_config' );\n if( '' !== self._feed ) {\n self.generate();\n }\n });\n return this;\n }\n\n _block_button() {\n if ( this._all_btn.length ) {\n this._all_btn.addClass('disabled');\n }\n if ( this._current_btn.length ) {\n this._current_btn.find('span').addClass('wpf_spin reverse_spin');\n this._current_btn_label = this._current_btn.attr('title');\n // noinspection JSUnresolvedVariable\n this._current_btn.attr( 'aria-label', opts.regenerate ).attr( 'title', opts.regenerate );\n }\n }\n\n _unblock_button() {\n if ( this._all_btn.length ) {\n this._all_btn.removeClass('disabled');\n }\n if ( this._current_btn.length ) {\n this._current_btn.find('span').removeClass('wpf_spin');\n this._current_btn.find('span').removeClass('reverse_spin');\n this._current_btn.attr( 'aria-label', this._current_btn_label ).attr( 'title', this._current_btn_label );\n }\n }\n\n /**\n * Generate Feed\n * @return void\n */\n generate() {\n let self = this;\n window.isRegenerating = true;\n this._block_button();\n this._resetProgressBar();\n this._progressBarActive();\n this._log( 'Counting Total Products' );\n this._updateProgressStatus( 'Fetching products.' );\n this._get_product_ids().then( response => {\n this._progress = 10;\n self._log( {response} );\n if(response.success) {\n self._log( `Total ${response.total} Products found.` );\n self._product_ids = response.product;\n self._total_batch = this._product_ids.length;\n self._current_batch = 0;\n self._progress_per_batch = ( 90 - this._progress ) / this._total_batch;\n self._process_batch();\n self._updateProgressStatus( 'Processing Products...' );\n } else {\n self._updateProgressStatus( response.data.message );\n }\n }).fail( error => {\n self._log( error );\n self._updateProgressStatus( error.message );\n self._color = 'red';\n setTimeout( function(){\n self._stopProgressBar();\n self._unblock_button();\n }, 1500 );\n } );\n }\n\n /**\n * Get Product Ids\n * @returns {$.promise}\n * @private\n */\n _get_product_ids() {\n this._progress = 5;\n return wpAjax.post( 'get_product_information', {\n _ajax_nonce: opts.nonce,\n feed: this._feed,\n limit: this._limit,\n } );\n }\n\n /**\n * Run the Batch\n * @private\n */\n _process_batch() {\n let self = this;\n let status = `Processing Batch ${this._current_batch+1} of ${this._total_batch}`;\n this._updateProgressStatus( status );\n this._log( status );\n wpAjax.post( 'make_batch_feed', {\n _ajax_nonce: opts.nonce,\n feed: this._feed,\n products: this._product_ids[this._current_batch],\n loop: this._current_batch,\n } ).then( response => {\n self._current_batch++;\n self._log( `Batch ${self._current_batch} Completed` );\n self._log( response );\n if ( self._current_batch < self._total_batch ) {\n self._process_batch();\n self._progress += self._progress_per_batch;\n }\n if ( self._current_batch === self._total_batch ) {\n self._save_feed_file();\n }\n } ).fail( error => {\n self._log( error );\n self._updateProgressStatus( error.message );\n self._color = 'red';\n setTimeout( function(){\n self._stopProgressBar();\n self._unblock_button();\n }, 1500 );\n } );\n }\n\n /**\n * Save Feed Data from temp to feed file\n * @private\n */\n _save_feed_file() {\n let self = this;\n this._log( 'Saving feed file' );\n this._updateProgressStatus( 'Saving feed file' );\n wpAjax.post( 'save_feed_file', {\n _ajax_nonce: opts.nonce,\n feed: this._feed,\n } ).then( response => {\n self._log( response );\n self._progress = 100;\n if ( self._refresh ) {\n window.location.href = `${opts.pages.list.feed}&link=${response.url}&cat=${response.cat}`;\n }\n setTimeout( function(){\n self._stopProgressBar();\n setTimeout( function(){\n self._resetProgressBar( true );\n self._unblock_button();\n }, 3000 );\n }, 2500 );\n } ).fail( error => {\n self._log( error );\n self._updateProgressStatus( error.message );\n self._color = 'red';\n setTimeout( function(){\n self._stopProgressBar();\n self._unblock_button();\n }, 1500 );\n } );\n }\n\n /**\n * Console log wrapper with debug settings.\n * @param data\n * @returns {feedGenerator}\n * @private\n */\n _log( data ) {\n // noinspection JSUnresolvedVariable\n if ( opts.wpf_debug ) {\n console.log( data );\n }\n return this;\n }\n\n /**\n * Run the progressbar refresh interval\n * @param {int} refreshInterval\n * @returns {feedGenerator}\n * @private\n */\n _progressBarActive( refreshInterval = 0 ) {\n let self = this;\n this._toggleProgressBar( true );\n this._timer = setInterval( function(){\n self._updateProgressBar();\n }, refreshInterval || 1000 );\n return this;\n }\n\n /**\n * Stop Progressbar\n * @returns {feedGenerator}\n * @private\n */\n _stopProgressBar() {\n clearInterval( this._timer );\n return this;\n }\n\n /**\n * Reset Progressbar\n * @returns {feedGenerator}\n * @private\n */\n _resetProgressBar( update ) {\n this._toggleProgressBar( false );\n this._updateProgressStatus( '' );\n clearInterval( this._timer );\n this._color = false;\n this._timer = null;\n this._progress = 0;\n if ( update ) {\n this._updateProgressBar();\n }\n return this;\n }\n\n /**\n * Show hide the progress bar el\n * @param status\n * @returns {feedGenerator}\n * @private\n */\n _toggleProgressBar( status ) {\n let table = $('#feed_progress_table');\n if ( status ) {\n table.show();\n } else {\n table.hide();\n }\n return this;\n }\n\n /**\n * Update Progress bar text status\n * @param {string} status\n * @returns {feedGenerator}\n * @private\n */\n _updateProgressStatus( status ) {\n $( '.feed-progress-status' ).html( status );\n return this;\n }\n\n _getErrorMessageByCode( error ){\n let progress_message = $( '.feed-progress-status' );\n progress_message.css( {'color':this._color});\n $( '.feed-progress-percentage' ).css( {'color':this._color});\n $( '.wpf_spin' ).css( {'color':this._color});\n\n let message=error.status +' : '+ error.statusText+'. ';\n if(500===error.status){\n message+= \"Please increase your PHP max_execution_time. Please <a target='_blank' href='https://webappick.com/docs/woo-feed/faq-for-woocommerce-product-feed/how-to-solve-processing-10-feed-generation-stuck-error/'>read this doc</a>.\";\n }\n\n this._updateProgressStatus(message);\n\n }\n\n /**\n * Update Progress Data\n * hooked with setInterval\n * @private\n */\n _updateProgressBar() {\n let percentage = $( '.feed-progress-percentage' ),\n bar = $( '.feed-progress-bar-fill' ),\n _progress = `${Math.round( this._progress )}%`;\n bar.css( {\n width: _progress,\n } );\n percentage.text( _progress );\n }\n }\n // expose to the global scope\n window.wf = {\n helper: helper,\n feedEditor: feedEditor,\n generator: feedGenerator,\n };\n\n $(window).on('load', function() {\n // Template loading ui conflict\n if ($(location).attr(\"href\").match(/webappick.*feed/g) !== null) {\n $('#wpbody-content').addClass('woofeed-body-content');\n }\n\n // on edit page show item wrapper dropdown\n let current_page_url_query = window.location.search;\n let urlParams = new URLSearchParams(current_page_url_query);\n let page_action = urlParams.get('action');\n\n // ClipBoardJS\n clip();\n // postbox toggle\n postboxes.add_postbox_toggles(pagenow);\n // initialize generator\n let generator = new feedGenerator();\n generator.init();\n // noinspection JSUnresolvedVariable\n if( '' !== opts.generator.feed && opts.generator.regenerate ) {\n\n }\n // initialize editor\n feedEditor.init();\n helper.common(); // Generate Feed Add Table Row\n tooltip();\n // validate feed editor\n $(\".generateFeed\").validate();\n\n // document events\n $(document)\n .on('blur', 'input[name=\"wfDAttributeName\"]', function(e) {\n e.preventDefault();\n let attr_name = $(this).val();\n attr_name = attr_name.toLowerCase();\n attr_name = attr_name.split(' ').join('_');\n\n $('#wfDAttributeCode').val(attr_name);\n\n })\n .on('click', '[data-toggle_slide]', function(e) {\n e.preventDefault();\n $($(this).data('toggle_slide')).slideToggle('fast');\n })\n // XML Feed Wrapper\n .on('click', '#wf_newRow', function () {\n let tbody = $('#table-1 tbody'),\n template = $('#feed_config_template').text().trim().replace(/__idx__/g, tbody.find('tr').length);\n tbody.append(template);\n helper.fancySelect($('.outputType'));\n })\n // feed delete alert.\n .on('click', '.single-feed-delete', function (event) {\n event.preventDefault();\n // noinspection JSUnresolvedVariable\n if (confirm(opts.form.del_confirm)) {\n window.location.href = $(this).attr('val');\n }\n })\n // clear cache data.\n .on('click', '.wf_clean_cache_wrapper', function(event) {\n event.preventDefault();\n var nonce = $('.woo-feed-clean-cache-nonce').val();\n var loader = $('.woo-feed-cache-loader');\n\n //show loader\n loader.show();\n\n // passed cache nonce\n wpAjax.post('clear_cache_data', {\n _ajax_clean_nonce: nonce\n }).then(function (response) {\n if( response.success ) {\n loader.hide(); //hide loader\n location.reload();\n }\n }).fail(function (e) {\n console.log('something wrong');\n });\n\n })// Copy Status\n .on('click', '#woo-feed-copy-status-btn', function(event) {\n event.preventDefault();\n let button = $('#woo-feed-copy-status-btn');\n let status_area = $('#woo-feed-status-area');\n button.val('Copied');\n status_area.css('visibility','visible');\n status_area.select();\n\n document.execCommand('copy');\n })\n // feed value dropdown change.\n .on('change', '.wf_attr.wf_attributes', function(event) {\n event.preventDefault();\n\n $('.fancy-picker-picked').trigger(\"click\"); // trigger fancy select box clicked\n\n // price attributes\n var price_attributes = ['price', 'current_price', 'sale_price', 'price_with_tax', 'current_price_with_tax', 'sale_price_with_tax', 'shipping_cost'];\n // current value\n var current_attribute_value = $(this).val();\n var outputSelect = $(this).parents('tr').find('.outputType');\n var fancyOption = $(this).parents('tr').find('.fancy-picker-content .fancy-picker-option');\n var fancyDataPicker = $(this).parents('tr').find('.fancy-picker-data span');\n var selectIf, selectKey;\n\n // when any attribute is selected, pick the key\n if( price_attributes.includes(current_attribute_value) ) {\n // when select any price attribute\n selectIf = 'for_price';\n selectKey = \"Price\";\n } else if ( \"\" !== current_attribute_value && -1 !== current_attribute_value.indexOf('wf_taxo') ) {\n\n // when select any custom taxonomy\n selectIf = 'for_custom_taxo';\n selectKey = \"parent_if_empty\";\n } else {\n\n selectIf = 'for_all';\n selectKey = 'Default';\n }\n\n // remove selected class from old selected option\n fancyOption.removeClass('selected');\n\n // when value dropdown is selected as price or any custom taxonomy\n if( selectIf === 'for_custom_taxo' || selectIf === 'for_price' ) {\n\n // update \"Option Type\" when select key matches\n fancyOption.each(function(item) {\n if( selectKey === $(this).text() ) {\n $(this).addClass('selected');\n fancyDataPicker.text(selectKey);\n outputSelect.find(\"option\").text(selectKey);\n outputSelect.find(\"option\").val( $(this).data('value') );\n }\n });\n }\n\n })\n // bulk delete alert.\n .on('click', '#doaction, #doaction2', function () {\n // noinspection JSUnresolvedVariable\n return confirm(opts.form.del_confirm_multi);\n })\n // Generate Feed Table Row Delete\n .on('change', '.dType', function () {\n let self = $(this),\n type = self.val(),\n row = self.closest('tr');\n\n if (type === 'pattern') {\n row.find('.value_attribute').hide();\n row.find('.value_pattern').show();\n } else if (type === 'attribute') {\n row.find('.value_attribute').show();\n row.find('.value_pattern').hide();\n } else if (type === 'remove') {\n row.find('.value_attribute').hide();\n row.find('.value_pattern').hide();\n }\n })\n // Generate Feed Form Submit\n .on('click', '.delRow', function (e) {\n e.preventDefault();\n $(this).closest('tr').remove();\n helper.reindex_config_table();\n })\n .on('submit', '#generateFeed', function () {\n // Feed Generating form validation\n $(this).validate();\n\n if ($(this).valid()) {\n $(\".makeFeedResponse\")\n .show()\n .html(`<b style=\"color: darkblue;\"><i class=\"dashicons dashicons-sos wpf_spin\"></i> ${opts.form.generate}</b>`); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html, WordPressVIPMinimum.JS.StringConcat.Found\n }\n })\n // Generate Update Feed Form Submit\n .on('submit', '#updatefeed', function (e, data) {\n // Feed Generating form validation\n $(this).validate();\n\n if ($(this).valid()) {\n $(\".makeFeedResponse\")\n .show()\n .html(`<b style=\"color: darkblue;\"><i class=\"dashicons dashicons-sos wpf_spin\"></i> ${data && data.save ? opts.form.save : opts.form.generate}</b>`); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html, WordPressVIPMinimum.JS.StringConcat.Found\n }\n })\n .on( 'ready woo_feed_config_loaded', function(){\n\n if( $('#ftpenabled').val() === '0' ){\n $('.google-merchant-message').hide('slow');\n $('.woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select').attr('disabled','disabled');\n } else {\n if( $('#provider').val() === 'google' ) {\n $('.google-merchant-message').show('slow');\n } else {\n $('.google-merchant-message').hide('slow');\n }\n $('.woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select').removeAttr('disabled');\n }\n\n $('#ftpenabled').on('change', function(){\n if( $('#ftpenabled').val() === '0' ){\n $('.google-merchant-message').hide('slow');\n $('.woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select').attr('disabled','disabled');\n } else {\n\n $('.woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select').removeAttr('disabled');\n\n // Google merchant specific message\n if( $('#provider').val() === 'google' ){\n $('.google-merchant-message').show('slow');\n } else {\n $('.google-merchant-message').hide('slow');\n }\n\n }\n });\n })\n .on('change', '.ftporsftp', function () {\n let server = $(this).val(),\n status = $('.ssh2_status');\n\n if (server === 'sftp') {\n // noinspection JSUnresolvedVariable\n status.show().css('color', 'dodgerblue').text(opts.form.sftp_checking);\n wpAjax.post('get_ssh2_status', {\n _ajax_nonce: opts.nonce,\n server: server\n }).then(function (response) {\n if (response === 'exists') {\n // noinspection JSUnresolvedVariable\n status.css('color', '#2CC185').text(opts.form.sftp_available);\n setTimeout(function () {\n status.hide();\n }, 1500);\n } else {\n // noinspection JSUnresolvedVariable\n status.show().css('color', 'red').text(opts.form.sftp_warning);\n }\n }).fail(function (e) {\n status.hide();\n helper.ajax_fail(e);\n });\n } else {\n status.hide();\n }\n })\n .on('click', '[name=\"save_feed_config\"]', function (e) {\n e.preventDefault();\n $('#updatefeed').trigger('submit', {\n save: true\n });\n })\n .on('change', '#provider', function (event) {\n event.preventDefault();\n\n let merchant = $(this).val(),\n templateName = $(this).find(':selected').text(),\n name = $('#filename').val(),\n feedType = $(\"#feedType\"),\n feedForm = $(\"#providerPage\"),\n merchantInfo = $('#feed_merchant_info'); // set loading..\n\n // noinspection JSUnresolvedVariable\n feedForm.html('<h3><span style=\"float:none;margin: -3px 0 0;\" class=\"spinner is-active\"></span> ' + opts.form.loading_tmpl + '</h3>'); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html, WordPressVIPMinimum.JS.StringConcat.Found\n\n merchantInfo.find('.spinner').addClass('is-active');\n feedType.disabled(!0); // disable dropdown\n\n feedType.parent().find('.spinner').addClass('is-active');\n merchantInfo.find('.merchant-info-section .data').html(''); // remove previous data\n // Get Merchant info for selected Provider/Merchant\n\n if (merchantInfoCache.hasOwnProperty(merchant)) {\n feedEditor.renderMerchantInfo(merchantInfo, feedType, merchantInfoCache[merchant]);\n\n /**\n * Triggers after merchant configuration is fetched & loaded\n * */\n $(document).trigger('woo_feed_config_loaded');\n\n } else {\n wpAjax.send('woo_feed_get_merchant_info', {\n type: 'GET',\n data: {\n nonce: opts.nonce,\n provider: merchant,\n templateName: templateName\n }\n }).then(function (r) {\n merchantInfoCache[merchant] = r;\n feedEditor.renderMerchantInfo(merchantInfo, feedType, r);\n }).then(function(){\n\n /**\n * Triggers after merchant configuration is fetched & loaded\n * */\n $(document).trigger('woo_feed_config_loaded');\n\n }).fail(helper.ajax_fail);\n } // Get FeedForm For Selected Provider/Merchant\n\n\n if (merchantTemplateCache.hasOwnProperty(merchant)) {\n feedEditor.renderMerchantTemplate(feedForm, merchantTemplateCache[merchant]);\n\n /**\n * Triggers after merchant configuration is fetched & loaded\n * */\n $(document).trigger('woo_feed_config_loaded');\n\n } else {\n wpAjax.post('get_feed_merchant', {\n _ajax_nonce: opts.nonce,\n merchant: merchant\n }).then(function (r) {\n merchantTemplateCache[merchant] = r;\n feedEditor.renderMerchantTemplate(feedForm, r);\n $('#utm_source').val(templateName);\n $('#utm_campaign').val(name);\n //when merchant is bing, change delimiter and enclosure\n if( 'bing' === merchant ) {\n //delimiter value\n $(\"#delimiter option\").removeAttr('selected');\n $(\"#delimiter option[value=\\\"tab\\\"]\").attr('selected', 'selected');\n\n //enclosure value\n $(\"#enclosure option\").removeAttr('selected');\n $(\"#enclosure option[value=\\\" \\\"]\").attr('selected', 'selected');\n }\n\n //reviewer options hide\n if( 'google_product_review' !== merchant) {\n $('.wf_attributes option[value=\"reviewer_name\"]').hide();\n }\n }).then(function(){\n\n /**\n * Triggers after merchant configuration is fetched & loaded\n * */\n $(document).trigger('woo_feed_config_loaded');\n\n }).fail(helper.ajax_fail);\n }\n })\n // Feed Active and Inactive status change via ajax\n .on('change', '.woo_feed_status_input', function () {\n let self = $(this);\n wpAjax.post('update_feed_status', {\n _ajax_nonce: opts.nonce,\n feedName: self.val(),\n status: self[0].checked ? 1 : 0\n });\n });\n // event with trigger\n $(document)\n .on('change', '[name=\"is_outOfStock\"], [name=\"product_visibility\"]', function () {\n let outOfStockVisibilityRow = $('.out-of-stock-visibility');\n if ($('[name=\"is_outOfStock\"]:checked').val() === 'n' && $('[name=\"product_visibility\"]:checked').val() === '1') {\n outOfStockVisibilityRow.show();\n } else {\n outOfStockVisibilityRow.hide();\n }\n })\n .on('change', '.attr_type', function () {\n // Attribute type selection\n let self = $(this),\n type = self.val(),\n row = self.closest('tr');\n\n if (type === 'pattern') {\n row.find('.wf_attr').hide();\n row.find('.wf_attr').val('');\n row.find('.wf_default').show();\n } else {\n row.find('.wf_attr').show();\n row.find('.wf_default').hide();\n row.find('.wf_default').val('');\n }\n })\n .on('change', '.wf_mattributes, .attr_type', function () {\n let row = $(this).closest('tr'),\n attribute = row.find('.wf_mattributes'),\n type = row.find('.attr_type'),\n valueColumn = row.find('td:eq(4)'),\n provider = $('#provider').val();\n\n // noinspection JSUnresolvedVariable\n if (opts.form.google_category.hasOwnProperty(attribute.val()) && type.val() === 'pattern' && helper.in_array(provider, opts.form.google_category[attribute.val()])) {\n if (valueColumn.find('select.selectize').length === 0) {\n valueColumn.find('input.wf_default').remove();\n valueColumn.append('<span class=\"wf_default wf_attributes\"><select name=\"default[]\" class=\"selectize\"></select></span>');\n // noinspection JSUnresolvedVariable\n valueColumn.append(`<span style=\"font-size:x-small;\"><a style=\"color: red\" href=\"https://webappick.com/docs/woo-feed/feed-configuration/how-to-map-store-category-with-merchant-category/\" target=\"_blank\">${opts.learn_more}</a></span>`);\n\n if (!googleCategories) {\n valueColumn.append('<span class=\"spinner is-active\" style=\"margin: 0;\"></span>');\n }\n\n let select = valueColumn.find('.wf_attributes select');\n // noinspection JSUnresolvedVariable\n helper.selectize(select, {\n preload: true,\n placeholder: opts.form.select_category,\n load: function load(query, cb) {\n if (!googleCategories) {\n wpAjax.send('get_google_categories', {\n type: 'GET',\n data: {\n _ajax_nonce: opts.nonce,\n action: \"get_google_categories\",\n provider: provider\n }\n }).then(function (r) {\n googleCategories = r;\n cb(googleCategories);\n valueColumn.find('.spinner').remove();\n }).fail(helper.ajax_fail);\n } else {\n cb(googleCategories);\n }\n }\n });\n }\n } else {\n if (attribute.val() !== 'current_category' && valueColumn.find('input.wf_default').length === 0) {\n valueColumn.find('span').remove();\n valueColumn.append('<input autocomplete=\"off\" class=\"wf_default wf_attributes\" type=\"text\" name=\"default[]\" value=\"\">');\n\n if (type.val() !== 'pattern') {\n valueColumn.find('input.wf_default').hide();\n }\n }\n }\n })\n .on('change', '#feedType,#provider', function (e) {\n let type = $('#feedType').val(),\n provider = $('#provider').val(),\n itemWrapper = $('.itemWrapper'),\n wf_csv_txt = $('.wf_csvtxt');\n\n // noinspection JSUnresolvedVariable\n if (type !== '' && helper.in_array(provider, opts.form.item_wrapper_hidden)) {\n itemWrapper.hide();\n }\n\n //when feed type is changed\n if( 'feedType' === e.target.id ) {\n if (type === 'csv' || type === 'txt' || type === 'tsv') {\n itemWrapper.hide();\n wf_csv_txt.show();\n\n if( 'tsv' === type ) {\n $('#delimiter option:last').prop(\"selected\", \"selected\");\n } else if( 'csv' === type ) {\n $('#delimiter option:first').prop(\"selected\", \"selected\");\n }\n } else if( 'xml' === type ) {\n itemWrapper.show();\n wf_csv_txt.hide();\n } else if( 'json' === type ) {\n itemWrapper.hide();\n wf_csv_txt.hide();\n }\n }\n\n })\n .trigger('change');\n\n\n $(document)\n\t\t\t.on('click', '.woofeed-custom-fields [id*=\"-switcher\"]', function () {\n\t\t\t $(this).closest('td').find('.switch-loader').show();\n\t\t\t\tlet field = $(this).attr( 'id' ).split( '-' )[0],\n\t\t\t\t\tisTaxonomy = $(this).data( 'taxonomy' ),\n\t\t\t\t\tstatus = $(this).prop( 'checked' );\n\t\t\t\tnew WooFeedCustomFields( field, status, isTaxonomy );\n\n\t\t\t})\n\n\t\t\t// Remove sticky cart on feature page\n\t\t\t.ready(function() {\n\t\t\t\tvar s = $(\".wapk-feed-buy-now-container\");\n\t\t\t\tvar pos = s.position();\n\t\t\t\t$(window).scroll(function() {\n\t\t\t\t\tvar windowpos = $(window).scrollTop();\n\t\t\t\t\tif ( windowpos <= 5000 ) {\n\t\t\t\t\t\ts.addClass(\"fixed\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts.removeClass(\"fixed\");\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n });\n\n $(document)\n\t\t.on('click', '#woo-feed-debug-log-download', function (e) {\n\t\t\te.preventDefault();\n\t\t\t$(\"<a />\", {\n\t\t\t\tdownload: new Date() + \".log\",\n\t\t\t\thref: URL.createObjectURL(\n\t\t\t\t\tnew Blob([$(\"#woo-feed-debug-log\").val()], {\n\t\t\t\t\t\ttype: \"text/plain\"\n\t\t\t\t\t})),\n\t\t\t}).appendTo(\"body\")[0].click();\n\t\t})\n\t\t.on('keyup', '#filename', function(e) {\n\t\t\tvar name = $('#filename').val();\n\t\t\t$('#utm_campaign').val(name);\n\t\t})\n\n // var providerVal = $('#category-mapping-form #providers').val();\n\t\t// console.log(providerVal)\n\t\t.on('change', '#category-mapping-form #providers', function(e) {\n\t\t\tvar provider = $(this).find(':selected').val(),\n\t\t\t\tgoogleMap = ['google', 'facebook', 'pinterest', 'bing', 'bing_local_inventory', 'snapchat'];\n\t\t\tif( googleMap.indexOf(provider) !== -1 ) {\n\t\t\t\t$('input[id*=\"cat_mapping_\"]').css('display', 'none');\n\t\t\t\t$('.wf_default.wf_attributes').css('display', 'block').css('width', '100%');\n\t\t\t\t// $('#category-mapping-form .dashicons').css('display', 'block');\n\t\t\t} else {\n\t\t\t\t$('input[id*=\"cat_mapping_\"]').css('display', 'block');\n\t\t\t\t$('.wf_default.wf_attributes').css('display', 'none').css('width', '100%');\n\t\t\t\t// $('#category-mapping-form .dashicons').css('display', 'none');\n\t\t\t}\n\t\t})\n\n // Copy parent category ids to child categories.\n\t\t.on('click', 'span[id*=\"cat-map-\"]', function(e) {\n\t\t\te.preventDefault();\n\t\t\tvar providerName = $('#category-mapping-form #providers').val(),\n\t\t\t\tgoogleMap = ['google', 'facebook', 'pinterest', 'bing', 'bing_local_inventory', 'snapchat'],\n\t\t\t\tcatId = $(this).attr('id').replace(/[^\\d.]/g, ''),\n\t\t\t\tgroupId = 'group-child-' + catId;\n\n\t\t\tif( googleMap.indexOf(providerName) !== -1) {\n\t\t\t\tvar catField = $(this).parents('tr').find('.selectized').val();\n\n\t\t\t\tif (catField) {\n\t\t\t\t\t$('.' + groupId).parents('tr').find('select').each(function (i, v) {\n\t\t\t\t\t\t$(v).data('selectize').setValue(catField);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tvar value = $('#cat_mapping_'+catId).val();\n\t\t\t\t$('.'+groupId).parents('tr').find('input').val(value);\n\t\t\t}\n\n\t\t});\n\n $(document).ready(function (){\n\n wpAjax.send('get_google_categories', {\n type: 'GET',\n data: {\n _ajax_nonce: opts.nonce,\n action: \"get_google_categories\",\n // provider: provider\n }\n }).then(function (response) {\n $('.selectize-google-category').selectize({\n valueField: 'value',\n labelField: 'text',\n placeholder: 'Select a category',\n searchField: ['value', 'text'],\n options: response,\n render: {\n option: (data, escape) => `<div class=\"item wapk-selectize-item\">${escape(data.value + ' - ' + data.text)}</div>`,\n item: (data, escape) => `<div class=\"item wapk-selectize-item\">${escape(data.value + ' - ' + data.text)}</div>`\n }\n });\n }).fail(helper.ajax_fail);\n\n\n\n });\n\n /*\n * Issue fix for feed edit page unsupported `Feed Type` not disabling\n *\n * @since 4.4.22\n * */\n $(document).on( \"feed_editor_init\", function(){\n\n let types = $('.merchant-info-section.feed_file_type .data').html().split(\",\").map(function(t) {\n return t.trim().toLowerCase();\n });\n\n let feedType = $(\"#feedType\");\n\n if (types.length) {\n feedType.find('option').each(function() {\n let opt = $(this);\n opt.val() && !helper.in_array(opt.val(), types) ? opt.disabled(!0) : opt.disabled(!1);\n });\n if (types.length === 1) feedType.find('option[value=\"' + types[0] + '\"]').attr('selected', 'selected');\n } else feedType.find('option').disabled(!1);\n\n } );\n\n})(jQuery, window, document, wp.ajax, wpf_ajax_obj);\n"]}
includes/classes/class-woo-feed-dropdown.php CHANGED
@@ -131,12 +131,8 @@ class Woo_Feed_Dropdown {
131
  list( $catId, $cat ) = explode( '-', $line );
132
  $catId = (int) trim( $catId );
133
  $cat = trim( $cat );
134
- $str .= sprintf(
135
- '<option value="%s" %s>%s</option>',
136
- $catId,
137
- selected( $selected, is_numeric( $selected ) ? $catId : $cat, false ),
138
- $cat
139
- );
140
  }
141
  }
142
  if ( ! empty( $str ) ) {
@@ -202,7 +198,7 @@ class Woo_Feed_Dropdown {
202
  $customAttributes = $wpdb->get_results( $sql ); // phpcs:ignore
203
 
204
  if ( ! empty( $customAttributes ) ) {
205
- foreach ( $customAttributes as $key => $value ) {
206
  $product_attr = maybe_unserialize( $value->type );
207
  if ( ! empty( $product_attr ) && is_array( $product_attr ) ) {
208
  foreach ( $product_attr as $key => $arr_value ) {
@@ -312,7 +308,6 @@ class Woo_Feed_Dropdown {
312
  $attributes = array(
313
  '--1' => esc_html__( 'Primary Attributes', 'woo-feed' ),
314
  'id' => esc_html__( 'Product Id', 'woo-feed' ),
315
- 'parent_id' => esc_html__( 'Parent Product Id (WPML)', 'woo-feed' ),
316
  'title' => esc_html__( 'Product Title', 'woo-feed' ),
317
  'parent_title' => esc_html__( 'Parent Title', 'woo-feed' ),
318
  'description' => esc_html__( 'Product Description', 'woo-feed' ),
131
  list( $catId, $cat ) = explode( '-', $line );
132
  $catId = (int) trim( $catId );
133
  $cat = trim( $cat );
134
+ $is_selected = selected( $selected, is_numeric( $selected ) ? $catId : $cat, false );
135
+ $str .= "<option value='{$catId}' {$is_selected} >{$cat}</option>";
 
 
 
 
136
  }
137
  }
138
  if ( ! empty( $str ) ) {
198
  $customAttributes = $wpdb->get_results( $sql ); // phpcs:ignore
199
 
200
  if ( ! empty( $customAttributes ) ) {
201
+ foreach ( $customAttributes as $value ) {
202
  $product_attr = maybe_unserialize( $value->type );
203
  if ( ! empty( $product_attr ) && is_array( $product_attr ) ) {
204
  foreach ( $product_attr as $key => $arr_value ) {
308
  $attributes = array(
309
  '--1' => esc_html__( 'Primary Attributes', 'woo-feed' ),
310
  'id' => esc_html__( 'Product Id', 'woo-feed' ),
 
311
  'title' => esc_html__( 'Product Title', 'woo-feed' ),
312
  'parent_title' => esc_html__( 'Parent Title', 'woo-feed' ),
313
  'description' => esc_html__( 'Product Description', 'woo-feed' ),
includes/classes/class-woo-feed-products-v3.php CHANGED
@@ -2200,8 +2200,27 @@ class Woo_Feed_Products_v3
2200
  */
2201
  protected function link($product)
2202
  {
2203
- $utm = $this->config['campaign_parameters'];
2204
- if (!empty($utm['utm_source']) && !empty($utm['utm_medium']) && !empty($utm['utm_campaign'])) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2205
  $utm = [
2206
  'utm_source' => str_replace(' ', '+', $utm['utm_source'] ),
2207
  'utm_medium' => str_replace(' ', '+', $utm['utm_medium'] ),
@@ -2210,12 +2229,11 @@ class Woo_Feed_Products_v3
2210
  'utm_content' => str_replace(' ', '+', $utm['utm_content'] ),
2211
  ];
2212
 
2213
- return add_query_arg(array_filter($utm), $product->get_permalink());
2214
- }
2215
 
2216
- $link = $product->get_permalink();
2217
 
2218
- return apply_filters('woo_feed_filter_product_link', $link, $product, $this->config);
2219
  }
2220
 
2221
  /**
2200
  */
2201
  protected function link($product)
2202
  {
2203
+
2204
+ $link = $product->get_permalink();
2205
+
2206
+ $link = $this->add_utm_tracker( $link );
2207
+
2208
+ return apply_filters('woo_feed_filter_product_link', $link, $product, $this->config);
2209
+ }
2210
+
2211
+ /**
2212
+ * Adding UTM Tracker Query Arguments to URL
2213
+ * @param string $url
2214
+ *
2215
+ * @return string $url
2216
+ * @since 4.4.26
2217
+ */
2218
+ protected function add_utm_tracker( $url ){
2219
+
2220
+ $utm = $this->config[ 'campaign_parameters' ];
2221
+
2222
+ if( !empty( $utm['utm_source'] ) && !empty( $utm['utm_medium'] ) && !empty( $utm['utm_campaign'] ) ){
2223
+
2224
  $utm = [
2225
  'utm_source' => str_replace(' ', '+', $utm['utm_source'] ),
2226
  'utm_medium' => str_replace(' ', '+', $utm['utm_medium'] ),
2229
  'utm_content' => str_replace(' ', '+', $utm['utm_content'] ),
2230
  ];
2231
 
2232
+ $url = add_query_arg( array_filter( $utm ), $url );
 
2233
 
2234
+ }
2235
 
2236
+ return $url;
2237
  }
2238
 
2239
  /**
languages/woo-feed.pot CHANGED
@@ -148,7 +148,7 @@ msgstr ""
148
  msgid "Category Mapping"
149
  msgstr ""
150
 
151
- #: admin/class-woo-feed-admin.php:234, admin/class-woo-feed-admin.php:234, includes/classes/class-woo-feed-dropdown.php:532
152
  msgid "WP Options"
153
  msgstr ""
154
 
@@ -569,7 +569,7 @@ msgstr ""
569
  msgid "Cost of good sold"
570
  msgstr ""
571
 
572
- #: includes/helper.php:2885, includes/classes/class-woo-feed-dropdown.php:337, libs/WebAppick/Attributes/AvailabilityDate.php:47, libs/WebAppick/Attributes/AvailabilityDate.php:77
573
  msgid "Availability Date"
574
  msgstr ""
575
 
@@ -577,11 +577,11 @@ msgstr ""
577
  msgid "Unit"
578
  msgstr ""
579
 
580
- #: includes/helper.php:2887, includes/classes/class-woo-feed-dropdown.php:406
581
  msgid "Unit Price Measure"
582
  msgstr ""
583
 
584
- #: includes/helper.php:2888, includes/classes/class-woo-feed-dropdown.php:407
585
  msgid "Unit Price Base Measure"
586
  msgstr ""
587
 
@@ -1344,423 +1344,419 @@ msgstr ""
1344
  msgid "Settings Updated."
1345
  msgstr ""
1346
 
1347
- #: includes/classes/class-woo-feed-dropdown.php:313, includes/classes/class-woo-feed-products.php:1784
1348
  msgid "Primary Attributes"
1349
  msgstr ""
1350
 
1351
- #: includes/classes/class-woo-feed-dropdown.php:314, includes/classes/class-woo-feed-products.php:1711
1352
  msgid "Product Id"
1353
  msgstr ""
1354
 
1355
- #: includes/classes/class-woo-feed-dropdown.php:315
1356
- msgid "Parent Product Id (WPML)"
1357
- msgstr ""
1358
-
1359
- #: includes/classes/class-woo-feed-dropdown.php:316, includes/classes/class-woo-feed-products.php:1712
1360
  msgid "Product Title"
1361
  msgstr ""
1362
 
1363
- #: includes/classes/class-woo-feed-dropdown.php:317
1364
  msgid "Parent Title"
1365
  msgstr ""
1366
 
1367
- #: includes/classes/class-woo-feed-dropdown.php:318, includes/classes/class-woo-feed-products.php:1713
1368
  msgid "Product Description"
1369
  msgstr ""
1370
 
1371
- #: includes/classes/class-woo-feed-dropdown.php:319
1372
  msgid "Product Description (with HTML)"
1373
  msgstr ""
1374
 
1375
- #: includes/classes/class-woo-feed-dropdown.php:320, includes/classes/class-woo-feed-products.php:1714
1376
  msgid "Product Short Description"
1377
  msgstr ""
1378
 
1379
- #: includes/classes/class-woo-feed-dropdown.php:321
1380
  msgid "Parent Category"
1381
  msgstr ""
1382
 
1383
- #: includes/classes/class-woo-feed-dropdown.php:322
1384
  msgid "Parent Category ID"
1385
  msgstr ""
1386
 
1387
- #: includes/classes/class-woo-feed-dropdown.php:323
1388
  msgid "Child Category"
1389
  msgstr ""
1390
 
1391
- #: includes/classes/class-woo-feed-dropdown.php:324
1392
  msgid "Child Category ID"
1393
  msgstr ""
1394
 
1395
- #: includes/classes/class-woo-feed-dropdown.php:325
1396
  msgid "Product Category [Category Path]"
1397
  msgstr ""
1398
 
1399
- #: includes/classes/class-woo-feed-dropdown.php:326
1400
  msgid "Product Full Category [Category Full Path]"
1401
  msgstr ""
1402
 
1403
- #: includes/classes/class-woo-feed-dropdown.php:327, includes/classes/class-woo-feed-products.php:1716
1404
  msgid "Product URL"
1405
  msgstr ""
1406
 
1407
- #: includes/classes/class-woo-feed-dropdown.php:328
1408
  msgid "Parent URL"
1409
  msgstr ""
1410
 
1411
- #: includes/classes/class-woo-feed-dropdown.php:329
1412
  msgid "Canonical URL"
1413
  msgstr ""
1414
 
1415
- #: includes/classes/class-woo-feed-dropdown.php:330, includes/classes/class-woo-feed-products.php:1717
1416
  msgid "External Product URL"
1417
  msgstr ""
1418
 
1419
- #: includes/classes/class-woo-feed-dropdown.php:331
1420
  msgid "Add to Cart URL"
1421
  msgstr ""
1422
 
1423
- #: includes/classes/class-woo-feed-dropdown.php:332, includes/classes/class-woo-feed-products.php:1719
1424
  msgid "Parent Id [Group Id]"
1425
  msgstr ""
1426
 
1427
- #: includes/classes/class-woo-feed-dropdown.php:333, includes/classes/class-woo-feed-products.php:1720
1428
  msgid "SKU"
1429
  msgstr ""
1430
 
1431
- #: includes/classes/class-woo-feed-dropdown.php:334
1432
  msgid "SKU_ID"
1433
  msgstr ""
1434
 
1435
- #: includes/classes/class-woo-feed-dropdown.php:335, includes/classes/class-woo-feed-products.php:1721
1436
  msgid "Parent SKU"
1437
  msgstr ""
1438
 
1439
- #: includes/classes/class-woo-feed-dropdown.php:336, includes/classes/class-woo-feed-products.php:1722
1440
  msgid "Availability"
1441
  msgstr ""
1442
 
1443
- #: includes/classes/class-woo-feed-dropdown.php:338, includes/classes/class-woo-feed-products.php:1723
1444
  msgid "Quantity"
1445
  msgstr ""
1446
 
1447
- #: includes/classes/class-woo-feed-dropdown.php:339, includes/classes/class-woo-feed-products.php:1724
1448
  msgid "Regular Price"
1449
  msgstr ""
1450
 
1451
- #: includes/classes/class-woo-feed-dropdown.php:340, includes/classes/class-woo-feed-products.php:1725
1452
  msgid "Price"
1453
  msgstr ""
1454
 
1455
- #: includes/classes/class-woo-feed-dropdown.php:341, includes/classes/class-woo-feed-products.php:1726
1456
  msgid "Sale Price"
1457
  msgstr ""
1458
 
1459
- #: includes/classes/class-woo-feed-dropdown.php:342, includes/classes/class-woo-feed-products.php:1727
1460
  msgid "Regular Price With Tax"
1461
  msgstr ""
1462
 
1463
- #: includes/classes/class-woo-feed-dropdown.php:343, includes/classes/class-woo-feed-products.php:1728
1464
  msgid "Price With Tax"
1465
  msgstr ""
1466
 
1467
- #: includes/classes/class-woo-feed-dropdown.php:344, includes/classes/class-woo-feed-products.php:1729
1468
  msgid "Sale Price With Tax"
1469
  msgstr ""
1470
 
1471
- #: includes/classes/class-woo-feed-dropdown.php:345, includes/classes/class-woo-feed-products.php:1730
1472
  msgid "Sale Start Date"
1473
  msgstr ""
1474
 
1475
- #: includes/classes/class-woo-feed-dropdown.php:346, includes/classes/class-woo-feed-products.php:1731
1476
  msgid "Sale End Date"
1477
  msgstr ""
1478
 
1479
- #: includes/classes/class-woo-feed-dropdown.php:347
1480
  msgid "Reviewer Name"
1481
  msgstr ""
1482
 
1483
- #: includes/classes/class-woo-feed-dropdown.php:348, includes/classes/class-woo-feed-products.php:1732
1484
  msgid "Weight"
1485
  msgstr ""
1486
 
1487
- #: includes/classes/class-woo-feed-dropdown.php:349
1488
  msgid "Weight Unit"
1489
  msgstr ""
1490
 
1491
- #: includes/classes/class-woo-feed-dropdown.php:350, includes/classes/class-woo-feed-products.php:1733
1492
  msgid "Width"
1493
  msgstr ""
1494
 
1495
- #: includes/classes/class-woo-feed-dropdown.php:351, includes/classes/class-woo-feed-products.php:1734
1496
  msgid "Height"
1497
  msgstr ""
1498
 
1499
- #: includes/classes/class-woo-feed-dropdown.php:352, includes/classes/class-woo-feed-products.php:1735
1500
  msgid "Length"
1501
  msgstr ""
1502
 
1503
- #: includes/classes/class-woo-feed-dropdown.php:353
1504
  msgid "Shipping (Google Format)"
1505
  msgstr ""
1506
 
1507
- #: includes/classes/class-woo-feed-dropdown.php:354
1508
  msgid "Shipping Cost"
1509
  msgstr ""
1510
 
1511
- #: includes/classes/class-woo-feed-dropdown.php:355, includes/classes/class-woo-feed-products.php:1736
1512
  msgid "Shipping Class"
1513
  msgstr ""
1514
 
1515
- #: includes/classes/class-woo-feed-dropdown.php:356, includes/classes/class-woo-feed-products.php:1737
1516
  msgid "Product Type"
1517
  msgstr ""
1518
 
1519
- #: includes/classes/class-woo-feed-dropdown.php:357, includes/classes/class-woo-feed-products.php:1738
1520
  msgid "Variation Type"
1521
  msgstr ""
1522
 
1523
- #: includes/classes/class-woo-feed-dropdown.php:358, includes/classes/class-woo-feed-products.php:1739
1524
  msgid "Visibility"
1525
  msgstr ""
1526
 
1527
- #: includes/classes/class-woo-feed-dropdown.php:359, includes/classes/class-woo-feed-products.php:1740
1528
  msgid "Total Rating"
1529
  msgstr ""
1530
 
1531
- #: includes/classes/class-woo-feed-dropdown.php:360, includes/classes/class-woo-feed-products.php:1741
1532
  msgid "Average Rating"
1533
  msgstr ""
1534
 
1535
- #: includes/classes/class-woo-feed-dropdown.php:361, includes/classes/class-woo-feed-products.php:1742
1536
  msgid "Tags"
1537
  msgstr ""
1538
 
1539
- #: includes/classes/class-woo-feed-dropdown.php:362, includes/classes/class-woo-feed-products.php:1743
1540
  msgid "Sale Price Effective Date"
1541
  msgstr ""
1542
 
1543
- #: includes/classes/class-woo-feed-dropdown.php:363, includes/classes/class-woo-feed-products.php:1744
1544
  msgid "Is Bundle"
1545
  msgstr ""
1546
 
1547
- #: includes/classes/class-woo-feed-dropdown.php:364, includes/classes/class-woo-feed-products.php:1745
1548
  msgid "Author Name"
1549
  msgstr ""
1550
 
1551
- #: includes/classes/class-woo-feed-dropdown.php:365, includes/classes/class-woo-feed-products.php:1746
1552
  msgid "Author Email"
1553
  msgstr ""
1554
 
1555
- #: includes/classes/class-woo-feed-dropdown.php:366, includes/classes/class-woo-feed-products.php:1747
1556
  msgid "Date Created"
1557
  msgstr ""
1558
 
1559
- #: includes/classes/class-woo-feed-dropdown.php:367, includes/classes/class-woo-feed-products.php:1748
1560
  msgid "Date Updated"
1561
  msgstr ""
1562
 
1563
- #: includes/classes/class-woo-feed-dropdown.php:368
1564
  msgid "Tax"
1565
  msgstr ""
1566
 
1567
- #: includes/classes/class-woo-feed-dropdown.php:369
1568
  msgid "Tax Class"
1569
  msgstr ""
1570
 
1571
- #: includes/classes/class-woo-feed-dropdown.php:370
1572
  msgid "Tax Status"
1573
  msgstr ""
1574
 
1575
- #: includes/classes/class-woo-feed-dropdown.php:379
1576
  msgid "Custom Fields by CTX Feed"
1577
  msgstr ""
1578
 
1579
- #: includes/classes/class-woo-feed-dropdown.php:389
1580
  msgid "Subscription & Installment"
1581
  msgstr ""
1582
 
1583
- #: includes/classes/class-woo-feed-dropdown.php:393
1584
  msgid "Subscription Period"
1585
  msgstr ""
1586
 
1587
- #: includes/classes/class-woo-feed-dropdown.php:394
1588
  msgid "Subscription Period Length"
1589
  msgstr ""
1590
 
1591
- #: includes/classes/class-woo-feed-dropdown.php:395
1592
  msgid "Subscription Amount"
1593
  msgstr ""
1594
 
1595
- #: includes/classes/class-woo-feed-dropdown.php:396
1596
  msgid "Installment Months"
1597
  msgstr ""
1598
 
1599
- #: includes/classes/class-woo-feed-dropdown.php:397
1600
  msgid "Installment Amount"
1601
  msgstr ""
1602
 
1603
- #: includes/classes/class-woo-feed-dropdown.php:424
1604
  msgid "Unit Price"
1605
  msgstr ""
1606
 
1607
- #: includes/classes/class-woo-feed-dropdown.php:411
1608
  msgid "WooCommerce Germanized"
1609
  msgstr ""
1610
 
1611
- #: includes/classes/class-woo-feed-dropdown.php:432
1612
  msgid "ALL IN ONE SEO"
1613
  msgstr ""
1614
 
1615
- #: includes/classes/class-woo-feed-dropdown.php:436, includes/classes/class-woo-feed-products.php:1769
1616
  msgid "Title [All in One SEO]"
1617
  msgstr ""
1618
 
1619
- #: includes/classes/class-woo-feed-dropdown.php:437, includes/classes/class-woo-feed-products.php:1770
1620
  msgid "Description [All in One SEO]"
1621
  msgstr ""
1622
 
1623
- #: includes/classes/class-woo-feed-dropdown.php:438
1624
  msgid "Canonical URL [All in One SEO]"
1625
  msgstr ""
1626
 
1627
- #: includes/classes/class-woo-feed-dropdown.php:446
1628
  msgid "Yoast SEO"
1629
  msgstr ""
1630
 
1631
- #: includes/classes/class-woo-feed-dropdown.php:449, includes/classes/class-woo-feed-products.php:1776
1632
  msgid "Title [Yoast SEO]"
1633
  msgstr ""
1634
 
1635
- #: includes/classes/class-woo-feed-dropdown.php:450, includes/classes/class-woo-feed-products.php:1777
1636
  msgid "Description [Yoast SEO]"
1637
  msgstr ""
1638
 
1639
- #: includes/classes/class-woo-feed-dropdown.php:451
1640
  msgid "Canonical URL [Yoast SEO]"
1641
  msgstr ""
1642
 
1643
- #: includes/classes/class-woo-feed-dropdown.php:457
1644
  msgid "GTIN8 [Yoast SEO]"
1645
  msgstr ""
1646
 
1647
- #: includes/classes/class-woo-feed-dropdown.php:458
1648
  msgid "GTIN12 / UPC [Yoast SEO]"
1649
  msgstr ""
1650
 
1651
- #: includes/classes/class-woo-feed-dropdown.php:459
1652
  msgid "GTIN13 / EAN [Yoast SEO]"
1653
  msgstr ""
1654
 
1655
- #: includes/classes/class-woo-feed-dropdown.php:460
1656
  msgid "GTIN14 / ITF-14 [Yoast SEO]"
1657
  msgstr ""
1658
 
1659
- #: includes/classes/class-woo-feed-dropdown.php:461
1660
  msgid "ISBN [Yoast SEO]"
1661
  msgstr ""
1662
 
1663
- #: includes/classes/class-woo-feed-dropdown.php:462
1664
  msgid "MPN [Yoast SEO]"
1665
  msgstr ""
1666
 
1667
- #: includes/classes/class-woo-feed-dropdown.php:475
1668
  msgid "Rank Math SEO"
1669
  msgstr ""
1670
 
1671
- #: includes/classes/class-woo-feed-dropdown.php:479
1672
  msgid "Title [RankMath SEO]"
1673
  msgstr ""
1674
 
1675
- #: includes/classes/class-woo-feed-dropdown.php:480
1676
  msgid "Description [RankMath SEO]"
1677
  msgstr ""
1678
 
1679
- #: includes/classes/class-woo-feed-dropdown.php:481
1680
  msgid "Canonical URL [RankMath SEO]"
1681
  msgstr ""
1682
 
1683
- #: includes/classes/class-woo-feed-dropdown.php:482
1684
  msgid "GTIN [RankMath Pro SEO]"
1685
  msgstr ""
1686
 
1687
- #: includes/classes/class-woo-feed-dropdown.php:489, includes/classes/class-woo-feed-products.php:1793
1688
  msgid "Image Attributes"
1689
  msgstr ""
1690
 
1691
- #: includes/classes/class-woo-feed-dropdown.php:491, includes/classes/class-woo-feed-products.php:1751
1692
  msgid "Main Image"
1693
  msgstr ""
1694
 
1695
- #: includes/classes/class-woo-feed-dropdown.php:492, includes/classes/class-woo-feed-products.php:1752
1696
  msgid "Featured Image"
1697
  msgstr ""
1698
 
1699
- #: includes/classes/class-woo-feed-dropdown.php:493, includes/classes/class-woo-feed-products.php:1753
1700
  msgid "Images [Comma Separated]"
1701
  msgstr ""
1702
 
1703
- #: includes/classes/class-woo-feed-dropdown.php:494, includes/classes/class-woo-feed-products.php:1754
1704
  msgid "Additional Image 1"
1705
  msgstr ""
1706
 
1707
- #: includes/classes/class-woo-feed-dropdown.php:495, includes/classes/class-woo-feed-products.php:1755
1708
  msgid "Additional Image 2"
1709
  msgstr ""
1710
 
1711
- #: includes/classes/class-woo-feed-dropdown.php:496, includes/classes/class-woo-feed-products.php:1756
1712
  msgid "Additional Image 3"
1713
  msgstr ""
1714
 
1715
- #: includes/classes/class-woo-feed-dropdown.php:497, includes/classes/class-woo-feed-products.php:1757
1716
  msgid "Additional Image 4"
1717
  msgstr ""
1718
 
1719
- #: includes/classes/class-woo-feed-dropdown.php:498, includes/classes/class-woo-feed-products.php:1758
1720
  msgid "Additional Image 5"
1721
  msgstr ""
1722
 
1723
- #: includes/classes/class-woo-feed-dropdown.php:499, includes/classes/class-woo-feed-products.php:1759
1724
  msgid "Additional Image 6"
1725
  msgstr ""
1726
 
1727
- #: includes/classes/class-woo-feed-dropdown.php:500, includes/classes/class-woo-feed-products.php:1760
1728
  msgid "Additional Image 7"
1729
  msgstr ""
1730
 
1731
- #: includes/classes/class-woo-feed-dropdown.php:501, includes/classes/class-woo-feed-products.php:1761
1732
  msgid "Additional Image 8"
1733
  msgstr ""
1734
 
1735
- #: includes/classes/class-woo-feed-dropdown.php:502, includes/classes/class-woo-feed-products.php:1762
1736
  msgid "Additional Image 9"
1737
  msgstr ""
1738
 
1739
- #: includes/classes/class-woo-feed-dropdown.php:503, includes/classes/class-woo-feed-products.php:1763
1740
  msgid "Additional Image 10"
1741
  msgstr ""
1742
 
1743
- #: includes/classes/class-woo-feed-dropdown.php:510
1744
  msgid "Product Attributes"
1745
  msgstr ""
1746
 
1747
- #: includes/classes/class-woo-feed-dropdown.php:518, includes/classes/class-woo-feed-products.php:1813
1748
  msgid "Product Custom Attributes"
1749
  msgstr ""
1750
 
1751
- #: includes/classes/class-woo-feed-dropdown.php:525
1752
  msgid "Product Taxonomies"
1753
  msgstr ""
1754
 
1755
- #: includes/classes/class-woo-feed-dropdown.php:540
1756
  msgid "Category Mappings"
1757
  msgstr ""
1758
 
1759
- #: includes/classes/class-woo-feed-dropdown.php:546
1760
  msgid "Custom Fields & Post Metas (Premium)"
1761
  msgstr ""
1762
 
1763
- #: includes/classes/class-woo-feed-dropdown.php:587, includes/classes/class-woo-feed-products.php:1803
1764
  msgid "Select Attributes"
1765
  msgstr ""
1766
 
148
  msgid "Category Mapping"
149
  msgstr ""
150
 
151
+ #: admin/class-woo-feed-admin.php:234, admin/class-woo-feed-admin.php:234, includes/classes/class-woo-feed-dropdown.php:527
152
  msgid "WP Options"
153
  msgstr ""
154
 
569
  msgid "Cost of good sold"
570
  msgstr ""
571
 
572
+ #: includes/helper.php:2885, includes/classes/class-woo-feed-dropdown.php:332, libs/WebAppick/Attributes/AvailabilityDate.php:47, libs/WebAppick/Attributes/AvailabilityDate.php:77
573
  msgid "Availability Date"
574
  msgstr ""
575
 
577
  msgid "Unit"
578
  msgstr ""
579
 
580
+ #: includes/helper.php:2887, includes/classes/class-woo-feed-dropdown.php:401
581
  msgid "Unit Price Measure"
582
  msgstr ""
583
 
584
+ #: includes/helper.php:2888, includes/classes/class-woo-feed-dropdown.php:402
585
  msgid "Unit Price Base Measure"
586
  msgstr ""
587
 
1344
  msgid "Settings Updated."
1345
  msgstr ""
1346
 
1347
+ #: includes/classes/class-woo-feed-dropdown.php:309, includes/classes/class-woo-feed-products.php:1784
1348
  msgid "Primary Attributes"
1349
  msgstr ""
1350
 
1351
+ #: includes/classes/class-woo-feed-dropdown.php:310, includes/classes/class-woo-feed-products.php:1711
1352
  msgid "Product Id"
1353
  msgstr ""
1354
 
1355
+ #: includes/classes/class-woo-feed-dropdown.php:311, includes/classes/class-woo-feed-products.php:1712
 
 
 
 
1356
  msgid "Product Title"
1357
  msgstr ""
1358
 
1359
+ #: includes/classes/class-woo-feed-dropdown.php:312
1360
  msgid "Parent Title"
1361
  msgstr ""
1362
 
1363
+ #: includes/classes/class-woo-feed-dropdown.php:313, includes/classes/class-woo-feed-products.php:1713
1364
  msgid "Product Description"
1365
  msgstr ""
1366
 
1367
+ #: includes/classes/class-woo-feed-dropdown.php:314
1368
  msgid "Product Description (with HTML)"
1369
  msgstr ""
1370
 
1371
+ #: includes/classes/class-woo-feed-dropdown.php:315, includes/classes/class-woo-feed-products.php:1714
1372
  msgid "Product Short Description"
1373
  msgstr ""
1374
 
1375
+ #: includes/classes/class-woo-feed-dropdown.php:316
1376
  msgid "Parent Category"
1377
  msgstr ""
1378
 
1379
+ #: includes/classes/class-woo-feed-dropdown.php:317
1380
  msgid "Parent Category ID"
1381
  msgstr ""
1382
 
1383
+ #: includes/classes/class-woo-feed-dropdown.php:318
1384
  msgid "Child Category"
1385
  msgstr ""
1386
 
1387
+ #: includes/classes/class-woo-feed-dropdown.php:319
1388
  msgid "Child Category ID"
1389
  msgstr ""
1390
 
1391
+ #: includes/classes/class-woo-feed-dropdown.php:320
1392
  msgid "Product Category [Category Path]"
1393
  msgstr ""
1394
 
1395
+ #: includes/classes/class-woo-feed-dropdown.php:321
1396
  msgid "Product Full Category [Category Full Path]"
1397
  msgstr ""
1398
 
1399
+ #: includes/classes/class-woo-feed-dropdown.php:322, includes/classes/class-woo-feed-products.php:1716
1400
  msgid "Product URL"
1401
  msgstr ""
1402
 
1403
+ #: includes/classes/class-woo-feed-dropdown.php:323
1404
  msgid "Parent URL"
1405
  msgstr ""
1406
 
1407
+ #: includes/classes/class-woo-feed-dropdown.php:324
1408
  msgid "Canonical URL"
1409
  msgstr ""
1410
 
1411
+ #: includes/classes/class-woo-feed-dropdown.php:325, includes/classes/class-woo-feed-products.php:1717
1412
  msgid "External Product URL"
1413
  msgstr ""
1414
 
1415
+ #: includes/classes/class-woo-feed-dropdown.php:326
1416
  msgid "Add to Cart URL"
1417
  msgstr ""
1418
 
1419
+ #: includes/classes/class-woo-feed-dropdown.php:327, includes/classes/class-woo-feed-products.php:1719
1420
  msgid "Parent Id [Group Id]"
1421
  msgstr ""
1422
 
1423
+ #: includes/classes/class-woo-feed-dropdown.php:328, includes/classes/class-woo-feed-products.php:1720
1424
  msgid "SKU"
1425
  msgstr ""
1426
 
1427
+ #: includes/classes/class-woo-feed-dropdown.php:329
1428
  msgid "SKU_ID"
1429
  msgstr ""
1430
 
1431
+ #: includes/classes/class-woo-feed-dropdown.php:330, includes/classes/class-woo-feed-products.php:1721
1432
  msgid "Parent SKU"
1433
  msgstr ""
1434
 
1435
+ #: includes/classes/class-woo-feed-dropdown.php:331, includes/classes/class-woo-feed-products.php:1722
1436
  msgid "Availability"
1437
  msgstr ""
1438
 
1439
+ #: includes/classes/class-woo-feed-dropdown.php:333, includes/classes/class-woo-feed-products.php:1723
1440
  msgid "Quantity"
1441
  msgstr ""
1442
 
1443
+ #: includes/classes/class-woo-feed-dropdown.php:334, includes/classes/class-woo-feed-products.php:1724
1444
  msgid "Regular Price"
1445
  msgstr ""
1446
 
1447
+ #: includes/classes/class-woo-feed-dropdown.php:335, includes/classes/class-woo-feed-products.php:1725
1448
  msgid "Price"
1449
  msgstr ""
1450
 
1451
+ #: includes/classes/class-woo-feed-dropdown.php:336, includes/classes/class-woo-feed-products.php:1726
1452
  msgid "Sale Price"
1453
  msgstr ""
1454
 
1455
+ #: includes/classes/class-woo-feed-dropdown.php:337, includes/classes/class-woo-feed-products.php:1727
1456
  msgid "Regular Price With Tax"
1457
  msgstr ""
1458
 
1459
+ #: includes/classes/class-woo-feed-dropdown.php:338, includes/classes/class-woo-feed-products.php:1728
1460
  msgid "Price With Tax"
1461
  msgstr ""
1462
 
1463
+ #: includes/classes/class-woo-feed-dropdown.php:339, includes/classes/class-woo-feed-products.php:1729
1464
  msgid "Sale Price With Tax"
1465
  msgstr ""
1466
 
1467
+ #: includes/classes/class-woo-feed-dropdown.php:340, includes/classes/class-woo-feed-products.php:1730
1468
  msgid "Sale Start Date"
1469
  msgstr ""
1470
 
1471
+ #: includes/classes/class-woo-feed-dropdown.php:341, includes/classes/class-woo-feed-products.php:1731
1472
  msgid "Sale End Date"
1473
  msgstr ""
1474
 
1475
+ #: includes/classes/class-woo-feed-dropdown.php:342
1476
  msgid "Reviewer Name"
1477
  msgstr ""
1478
 
1479
+ #: includes/classes/class-woo-feed-dropdown.php:343, includes/classes/class-woo-feed-products.php:1732
1480
  msgid "Weight"
1481
  msgstr ""
1482
 
1483
+ #: includes/classes/class-woo-feed-dropdown.php:344
1484
  msgid "Weight Unit"
1485
  msgstr ""
1486
 
1487
+ #: includes/classes/class-woo-feed-dropdown.php:345, includes/classes/class-woo-feed-products.php:1733
1488
  msgid "Width"
1489
  msgstr ""
1490
 
1491
+ #: includes/classes/class-woo-feed-dropdown.php:346, includes/classes/class-woo-feed-products.php:1734
1492
  msgid "Height"
1493
  msgstr ""
1494
 
1495
+ #: includes/classes/class-woo-feed-dropdown.php:347, includes/classes/class-woo-feed-products.php:1735
1496
  msgid "Length"
1497
  msgstr ""
1498
 
1499
+ #: includes/classes/class-woo-feed-dropdown.php:348
1500
  msgid "Shipping (Google Format)"
1501
  msgstr ""
1502
 
1503
+ #: includes/classes/class-woo-feed-dropdown.php:349
1504
  msgid "Shipping Cost"
1505
  msgstr ""
1506
 
1507
+ #: includes/classes/class-woo-feed-dropdown.php:350, includes/classes/class-woo-feed-products.php:1736
1508
  msgid "Shipping Class"
1509
  msgstr ""
1510
 
1511
+ #: includes/classes/class-woo-feed-dropdown.php:351, includes/classes/class-woo-feed-products.php:1737
1512
  msgid "Product Type"
1513
  msgstr ""
1514
 
1515
+ #: includes/classes/class-woo-feed-dropdown.php:352, includes/classes/class-woo-feed-products.php:1738
1516
  msgid "Variation Type"
1517
  msgstr ""
1518
 
1519
+ #: includes/classes/class-woo-feed-dropdown.php:353, includes/classes/class-woo-feed-products.php:1739
1520
  msgid "Visibility"
1521
  msgstr ""
1522
 
1523
+ #: includes/classes/class-woo-feed-dropdown.php:354, includes/classes/class-woo-feed-products.php:1740
1524
  msgid "Total Rating"
1525
  msgstr ""
1526
 
1527
+ #: includes/classes/class-woo-feed-dropdown.php:355, includes/classes/class-woo-feed-products.php:1741
1528
  msgid "Average Rating"
1529
  msgstr ""
1530
 
1531
+ #: includes/classes/class-woo-feed-dropdown.php:356, includes/classes/class-woo-feed-products.php:1742
1532
  msgid "Tags"
1533
  msgstr ""
1534
 
1535
+ #: includes/classes/class-woo-feed-dropdown.php:357, includes/classes/class-woo-feed-products.php:1743
1536
  msgid "Sale Price Effective Date"
1537
  msgstr ""
1538
 
1539
+ #: includes/classes/class-woo-feed-dropdown.php:358, includes/classes/class-woo-feed-products.php:1744
1540
  msgid "Is Bundle"
1541
  msgstr ""
1542
 
1543
+ #: includes/classes/class-woo-feed-dropdown.php:359, includes/classes/class-woo-feed-products.php:1745
1544
  msgid "Author Name"
1545
  msgstr ""
1546
 
1547
+ #: includes/classes/class-woo-feed-dropdown.php:360, includes/classes/class-woo-feed-products.php:1746
1548
  msgid "Author Email"
1549
  msgstr ""
1550
 
1551
+ #: includes/classes/class-woo-feed-dropdown.php:361, includes/classes/class-woo-feed-products.php:1747
1552
  msgid "Date Created"
1553
  msgstr ""
1554
 
1555
+ #: includes/classes/class-woo-feed-dropdown.php:362, includes/classes/class-woo-feed-products.php:1748
1556
  msgid "Date Updated"
1557
  msgstr ""
1558
 
1559
+ #: includes/classes/class-woo-feed-dropdown.php:363
1560
  msgid "Tax"
1561
  msgstr ""
1562
 
1563
+ #: includes/classes/class-woo-feed-dropdown.php:364
1564
  msgid "Tax Class"
1565
  msgstr ""
1566
 
1567
+ #: includes/classes/class-woo-feed-dropdown.php:365
1568
  msgid "Tax Status"
1569
  msgstr ""
1570
 
1571
+ #: includes/classes/class-woo-feed-dropdown.php:374
1572
  msgid "Custom Fields by CTX Feed"
1573
  msgstr ""
1574
 
1575
+ #: includes/classes/class-woo-feed-dropdown.php:384
1576
  msgid "Subscription & Installment"
1577
  msgstr ""
1578
 
1579
+ #: includes/classes/class-woo-feed-dropdown.php:388
1580
  msgid "Subscription Period"
1581
  msgstr ""
1582
 
1583
+ #: includes/classes/class-woo-feed-dropdown.php:389
1584
  msgid "Subscription Period Length"
1585
  msgstr ""
1586
 
1587
+ #: includes/classes/class-woo-feed-dropdown.php:390
1588
  msgid "Subscription Amount"
1589
  msgstr ""
1590
 
1591
+ #: includes/classes/class-woo-feed-dropdown.php:391
1592
  msgid "Installment Months"
1593
  msgstr ""
1594
 
1595
+ #: includes/classes/class-woo-feed-dropdown.php:392
1596
  msgid "Installment Amount"
1597
  msgstr ""
1598
 
1599
+ #: includes/classes/class-woo-feed-dropdown.php:419
1600
  msgid "Unit Price"
1601
  msgstr ""
1602
 
1603
+ #: includes/classes/class-woo-feed-dropdown.php:406
1604
  msgid "WooCommerce Germanized"
1605
  msgstr ""
1606
 
1607
+ #: includes/classes/class-woo-feed-dropdown.php:427
1608
  msgid "ALL IN ONE SEO"
1609
  msgstr ""
1610
 
1611
+ #: includes/classes/class-woo-feed-dropdown.php:431, includes/classes/class-woo-feed-products.php:1769
1612
  msgid "Title [All in One SEO]"
1613
  msgstr ""
1614
 
1615
+ #: includes/classes/class-woo-feed-dropdown.php:432, includes/classes/class-woo-feed-products.php:1770
1616
  msgid "Description [All in One SEO]"
1617
  msgstr ""
1618
 
1619
+ #: includes/classes/class-woo-feed-dropdown.php:433
1620
  msgid "Canonical URL [All in One SEO]"
1621
  msgstr ""
1622
 
1623
+ #: includes/classes/class-woo-feed-dropdown.php:441
1624
  msgid "Yoast SEO"
1625
  msgstr ""
1626
 
1627
+ #: includes/classes/class-woo-feed-dropdown.php:444, includes/classes/class-woo-feed-products.php:1776
1628
  msgid "Title [Yoast SEO]"
1629
  msgstr ""
1630
 
1631
+ #: includes/classes/class-woo-feed-dropdown.php:445, includes/classes/class-woo-feed-products.php:1777
1632
  msgid "Description [Yoast SEO]"
1633
  msgstr ""
1634
 
1635
+ #: includes/classes/class-woo-feed-dropdown.php:446
1636
  msgid "Canonical URL [Yoast SEO]"
1637
  msgstr ""
1638
 
1639
+ #: includes/classes/class-woo-feed-dropdown.php:452
1640
  msgid "GTIN8 [Yoast SEO]"
1641
  msgstr ""
1642
 
1643
+ #: includes/classes/class-woo-feed-dropdown.php:453
1644
  msgid "GTIN12 / UPC [Yoast SEO]"
1645
  msgstr ""
1646
 
1647
+ #: includes/classes/class-woo-feed-dropdown.php:454
1648
  msgid "GTIN13 / EAN [Yoast SEO]"
1649
  msgstr ""
1650
 
1651
+ #: includes/classes/class-woo-feed-dropdown.php:455
1652
  msgid "GTIN14 / ITF-14 [Yoast SEO]"
1653
  msgstr ""
1654
 
1655
+ #: includes/classes/class-woo-feed-dropdown.php:456
1656
  msgid "ISBN [Yoast SEO]"
1657
  msgstr ""
1658
 
1659
+ #: includes/classes/class-woo-feed-dropdown.php:457
1660
  msgid "MPN [Yoast SEO]"
1661
  msgstr ""
1662
 
1663
+ #: includes/classes/class-woo-feed-dropdown.php:470
1664
  msgid "Rank Math SEO"
1665
  msgstr ""
1666
 
1667
+ #: includes/classes/class-woo-feed-dropdown.php:474
1668
  msgid "Title [RankMath SEO]"
1669
  msgstr ""
1670
 
1671
+ #: includes/classes/class-woo-feed-dropdown.php:475
1672
  msgid "Description [RankMath SEO]"
1673
  msgstr ""
1674
 
1675
+ #: includes/classes/class-woo-feed-dropdown.php:476
1676
  msgid "Canonical URL [RankMath SEO]"
1677
  msgstr ""
1678
 
1679
+ #: includes/classes/class-woo-feed-dropdown.php:477
1680
  msgid "GTIN [RankMath Pro SEO]"
1681
  msgstr ""
1682
 
1683
+ #: includes/classes/class-woo-feed-dropdown.php:484, includes/classes/class-woo-feed-products.php:1793
1684
  msgid "Image Attributes"
1685
  msgstr ""
1686
 
1687
+ #: includes/classes/class-woo-feed-dropdown.php:486, includes/classes/class-woo-feed-products.php:1751
1688
  msgid "Main Image"
1689
  msgstr ""
1690
 
1691
+ #: includes/classes/class-woo-feed-dropdown.php:487, includes/classes/class-woo-feed-products.php:1752
1692
  msgid "Featured Image"
1693
  msgstr ""
1694
 
1695
+ #: includes/classes/class-woo-feed-dropdown.php:488, includes/classes/class-woo-feed-products.php:1753
1696
  msgid "Images [Comma Separated]"
1697
  msgstr ""
1698
 
1699
+ #: includes/classes/class-woo-feed-dropdown.php:489, includes/classes/class-woo-feed-products.php:1754
1700
  msgid "Additional Image 1"
1701
  msgstr ""
1702
 
1703
+ #: includes/classes/class-woo-feed-dropdown.php:490, includes/classes/class-woo-feed-products.php:1755
1704
  msgid "Additional Image 2"
1705
  msgstr ""
1706
 
1707
+ #: includes/classes/class-woo-feed-dropdown.php:491, includes/classes/class-woo-feed-products.php:1756
1708
  msgid "Additional Image 3"
1709
  msgstr ""
1710
 
1711
+ #: includes/classes/class-woo-feed-dropdown.php:492, includes/classes/class-woo-feed-products.php:1757
1712
  msgid "Additional Image 4"
1713
  msgstr ""
1714
 
1715
+ #: includes/classes/class-woo-feed-dropdown.php:493, includes/classes/class-woo-feed-products.php:1758
1716
  msgid "Additional Image 5"
1717
  msgstr ""
1718
 
1719
+ #: includes/classes/class-woo-feed-dropdown.php:494, includes/classes/class-woo-feed-products.php:1759
1720
  msgid "Additional Image 6"
1721
  msgstr ""
1722
 
1723
+ #: includes/classes/class-woo-feed-dropdown.php:495, includes/classes/class-woo-feed-products.php:1760
1724
  msgid "Additional Image 7"
1725
  msgstr ""
1726
 
1727
+ #: includes/classes/class-woo-feed-dropdown.php:496, includes/classes/class-woo-feed-products.php:1761
1728
  msgid "Additional Image 8"
1729
  msgstr ""
1730
 
1731
+ #: includes/classes/class-woo-feed-dropdown.php:497, includes/classes/class-woo-feed-products.php:1762
1732
  msgid "Additional Image 9"
1733
  msgstr ""
1734
 
1735
+ #: includes/classes/class-woo-feed-dropdown.php:498, includes/classes/class-woo-feed-products.php:1763
1736
  msgid "Additional Image 10"
1737
  msgstr ""
1738
 
1739
+ #: includes/classes/class-woo-feed-dropdown.php:505
1740
  msgid "Product Attributes"
1741
  msgstr ""
1742
 
1743
+ #: includes/classes/class-woo-feed-dropdown.php:513, includes/classes/class-woo-feed-products.php:1813
1744
  msgid "Product Custom Attributes"
1745
  msgstr ""
1746
 
1747
+ #: includes/classes/class-woo-feed-dropdown.php:520
1748
  msgid "Product Taxonomies"
1749
  msgstr ""
1750
 
1751
+ #: includes/classes/class-woo-feed-dropdown.php:535
1752
  msgid "Category Mappings"
1753
  msgstr ""
1754
 
1755
+ #: includes/classes/class-woo-feed-dropdown.php:541
1756
  msgid "Custom Fields & Post Metas (Premium)"
1757
  msgstr ""
1758
 
1759
+ #: includes/classes/class-woo-feed-dropdown.php:582, includes/classes/class-woo-feed-products.php:1803
1760
  msgid "Select Attributes"
1761
  msgstr ""
1762
 
woo-feed.php CHANGED
@@ -10,7 +10,7 @@
10
  * Plugin Name: CTX Feed
11
  * Plugin URI: https://webappick.com/
12
  * Description: Easily generate woocommerce product feed for any marketing channel like Google Shopping(Merchant), Facebook Remarketing, Bing, eBay & more. Support 100+ Merchants.
13
- * Version: 4.4.25
14
  * Author: WebAppick
15
  * Author URI: https://webappick.com/
16
  * License: GPL v2
@@ -25,7 +25,7 @@
25
  *
26
  * WC Requirement & Test
27
  * WC requires at least: 3.2
28
- * WC tested up to: 5.5.2
29
  */
30
 
31
  if ( ! defined( 'ABSPATH' ) ) {
@@ -42,7 +42,7 @@ if ( ! defined( 'WOO_FEED_FREE_VERSION' ) ) {
42
  * @var string
43
  * @since 3.1.6
44
  */
45
- define( 'WOO_FEED_FREE_VERSION', '4.4.25' );
46
  }
47
 
48
  if ( ! defined( 'WOO_FEED_FREE_FILE' ) ) {
10
  * Plugin Name: CTX Feed
11
  * Plugin URI: https://webappick.com/
12
  * Description: Easily generate woocommerce product feed for any marketing channel like Google Shopping(Merchant), Facebook Remarketing, Bing, eBay & more. Support 100+ Merchants.
13
+ * Version: 4.4.26
14
  * Author: WebAppick
15
  * Author URI: https://webappick.com/
16
  * License: GPL v2
25
  *
26
  * WC Requirement & Test
27
  * WC requires at least: 3.2
28
+ * WC tested up to: 5.7.1
29
  */
30
 
31
  if ( ! defined( 'ABSPATH' ) ) {
42
  * @var string
43
  * @since 3.1.6
44
  */
45
+ define( 'WOO_FEED_FREE_VERSION', '4.4.26' );
46
  }
47
 
48
  if ( ! defined( 'WOO_FEED_FREE_FILE' ) ) {