Version Description
(2021-08-03) = * Added: Google Merchant SFTP/FTP upload compatability added. * Added: Feed log download option from manage feed page. * Fixed: Status page undefined index error solved. * Fixed: SFTP error fixed.
Download this release
Release Info
Developer | wahid0003 |
Plugin | CTX Feed – WooCommerce Product Feed Manager Plugin |
Version | 4.4.17 |
Comparing to | |
See all releases |
Code changes from version 4.4.15 to 4.4.17
- README.txt +15 -3
- admin/class-woo-feed-manage-list.php +13 -4
- admin/css/woo-feed-admin.css +4 -1
- admin/css/woo-feed-admin.min.css +1 -1
- admin/css/woo-feed-admin.scss +5 -1
- admin/js/woo-feed-admin.js +65 -3
- admin/js/woo-feed-admin.min.js +1 -1
- admin/js/woo-feed-admin.min.js.map +1 -1
- admin/partials/woo-feed-content-settings.php +1 -1
- admin/partials/woo-feed-edit-ftp.php +3 -2
- admin/partials/woo-feed-status.php +14 -13
- includes/class-woo-feed.php +0 -5
- includes/classes/class-woo-feed-products-v3.php +41 -29
- includes/helper.php +82 -6
- includes/hooks.php +1 -0
- languages/woo-feed.pot +99 -91
- libs/WebAppick/Attributes/AvailabilityDate.php +87 -61
- includes/classes/class-woo-feed-ftp.php → libs/WebAppick/FTP/FTPConnection.php +2 -4
- libs/WebAppick/FTP/SFTPConnection.php +2 -0
- woo-feed.php +3 -3
README.txt
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
-
|
2 |
-
Contributors: wahid0003, webappick, mhamudul_hk, shuvo586, nayanchamp7
|
3 |
Donate link: https://webappick.com
|
4 |
Tags: Product Feed, WooCommerce, Google Shopping, Google Merchant, Facebook Catalog, Bing Shopping, Instagram Shop, Skroutz Data Feed, xml feed, csv feed, txt feed, woocommerce product feed
|
5 |
Requires at least: 4.4
|
6 |
Tested Up To: 5.8
|
7 |
Requires PHP: 5.6
|
8 |
-
Stable tag: 4.4.
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
@@ -516,6 +516,18 @@ Using pro version:
|
|
516 |
|
517 |
== Changelog ==
|
518 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
519 |
= 4.4.15 (2021-07-28) =
|
520 |
* Added: WordPress 5.8 version compatibility tested.
|
521 |
* Fixed: Bundled product compatibility issues fixed.
|
1 |
+
=== CTX Feed - WooCommerce Product Feed Generator ===
|
2 |
+
Contributors: wahid0003, webappick, mhamudul_hk, shuvo586, nayanchamp7, aihimel, mrinal013
|
3 |
Donate link: https://webappick.com
|
4 |
Tags: Product Feed, WooCommerce, Google Shopping, Google Merchant, Facebook Catalog, Bing Shopping, Instagram Shop, Skroutz Data Feed, xml feed, csv feed, txt feed, woocommerce product feed
|
5 |
Requires at least: 4.4
|
6 |
Tested Up To: 5.8
|
7 |
Requires PHP: 5.6
|
8 |
+
Stable tag: 4.4.17
|
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.17 (2021-08-03) =
|
520 |
+
* Added: Google Merchant SFTP/FTP upload compatability added.
|
521 |
+
* Added: Feed log download option from manage feed page.
|
522 |
+
* Fixed: Status page undefined index error solved.
|
523 |
+
* Fixed: SFTP error fixed.
|
524 |
+
|
525 |
+
= 4.4.16 (2021-07-30) =
|
526 |
+
* Added: Availability date custom field for product variation.
|
527 |
+
* Added: Supports custom stock status(availability). But custom stock status will return in stock for Google, Facebook, Pinterest & Bing.
|
528 |
+
* Fixed: Variation image validation added.
|
529 |
+
* Fixed: Feed generation stuck issue for orphaned woocommerce variation fixed.
|
530 |
+
|
531 |
= 4.4.15 (2021-07-28) =
|
532 |
* Added: WordPress 5.8 version compatibility tested.
|
533 |
* Fixed: Bundled product compatibility issues fixed.
|
admin/class-woo-feed-manage-list.php
CHANGED
@@ -102,13 +102,17 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
|
|
102 |
case 'last_updated':
|
103 |
return $itemInfo[ $column_name ];
|
104 |
case 'view':
|
105 |
-
|
|
|
|
|
|
|
106 |
/** @noinspection HtmlUnknownTarget */
|
107 |
return sprintf(
|
108 |
'<a href="%1$s" title="%2$s" aria-label="%2$s" target="_blank"><span class="dashicons dashicons-external" aria-hidden="true"></span></a>
|
109 |
<a id="%3$s" class="wpf_regenerate%6$s" href="#" title="%4$s" aria-label="%4$s"><span class="dashicons dashicons-update-alt%7$s" aria-hidden="true"></span></a>
|
110 |
<a href="%1$s" title="%5$s" aria-label="%5$s" download><span class="dashicons dashicons-download" aria-hidden="true"></span></a>
|
111 |
-
<a href="%9$s" title="%8$s" aria-label="%8$s"><span class="dashicons dashicons-
|
|
|
112 |
$itemInfo['url'],
|
113 |
esc_html__( 'View', 'woo-feed' ),
|
114 |
$getItem,
|
@@ -117,8 +121,13 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
|
|
117 |
$disableBtn,
|
118 |
$spinIcon,
|
119 |
esc_html__( 'Export Feed Config', 'woo-feed' ),
|
120 |
-
esc_url( $export_url )
|
121 |
-
|
|
|
|
|
|
|
|
|
|
|
122 |
default:
|
123 |
return false;
|
124 |
}
|
102 |
case 'last_updated':
|
103 |
return $itemInfo[ $column_name ];
|
104 |
case 'view':
|
105 |
+
|
106 |
+
$export_url = wp_nonce_url( admin_url( 'admin-post.php?action=wf_export_feed&feed=' . $getItem ), 'wpf-export' );
|
107 |
+
$log_download_url = wp_nonce_url( admin_url( 'admin-post.php?action=wf_download_feed_log&feed=' . $getItem ), 'wpf-log-download' );
|
108 |
+
|
109 |
/** @noinspection HtmlUnknownTarget */
|
110 |
return sprintf(
|
111 |
'<a href="%1$s" title="%2$s" aria-label="%2$s" target="_blank"><span class="dashicons dashicons-external" aria-hidden="true"></span></a>
|
112 |
<a id="%3$s" class="wpf_regenerate%6$s" href="#" title="%4$s" aria-label="%4$s"><span class="dashicons dashicons-update-alt%7$s" aria-hidden="true"></span></a>
|
113 |
<a href="%1$s" title="%5$s" aria-label="%5$s" download><span class="dashicons dashicons-download" aria-hidden="true"></span></a>
|
114 |
+
<a href="%9$s" title="%8$s" aria-label="%8$s"><span class="dashicons dashicons-migrate" aria-hidden="true"></span></a>
|
115 |
+
<a href="%10$s" title="%11$s" aria-label="%11$s"><span class="dashicons dashicons-media-text" aria-hidden="true"></span></a>',
|
116 |
$itemInfo['url'],
|
117 |
esc_html__( 'View', 'woo-feed' ),
|
118 |
$getItem,
|
121 |
$disableBtn,
|
122 |
$spinIcon,
|
123 |
esc_html__( 'Export Feed Config', 'woo-feed' ),
|
124 |
+
esc_url( $export_url ),
|
125 |
+
esc_url( $log_download_url ),
|
126 |
+
esc_html__( 'Download Feed Log', 'woo-feed'
|
127 |
+
)
|
128 |
+
|
129 |
+
|
130 |
+
);
|
131 |
default:
|
132 |
return false;
|
133 |
}
|
admin/css/woo-feed-admin.css
CHANGED
@@ -29,6 +29,9 @@
|
|
29 |
-webkit-transform: rotate(359deg);
|
30 |
transform: rotate(359deg); } }
|
31 |
|
|
|
|
|
|
|
32 |
.wfbtn {
|
33 |
background: #3498db;
|
34 |
background-image: linear-gradient(125deg, #3cb0fd 0%, #152f8c 140%);
|
@@ -1220,7 +1223,7 @@ table.wf-rate-table a.review-star:after {
|
|
1220 |
th#last_updated {
|
1221 |
width: 90px; }
|
1222 |
th#view {
|
1223 |
-
width:
|
1224 |
|
1225 |
@media screen and (min-width: 960px) {
|
1226 |
th#status, th#provider {
|
29 |
-webkit-transform: rotate(359deg);
|
30 |
transform: rotate(359deg); } }
|
31 |
|
32 |
+
.webappick-info {
|
33 |
+
color: #42a5fa; }
|
34 |
+
|
35 |
.wfbtn {
|
36 |
background: #3498db;
|
37 |
background-image: linear-gradient(125deg, #3cb0fd 0%, #152f8c 140%);
|
1223 |
th#last_updated {
|
1224 |
width: 90px; }
|
1225 |
th#view {
|
1226 |
+
width: 135px; } }
|
1227 |
|
1228 |
@media screen and (min-width: 960px) {
|
1229 |
th#status, th#provider {
|
admin/css/woo-feed-admin.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.wpf_spin{-webkit-animation:spin 1s infinite linear;animation:spin 1s infinite linear}.wpf_spin.reverse_spin{animation-direction:reverse}.wpf_regenerate.disabled{color:#737373;box-shadow:none;cursor:not-allowed}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.wfbtn{background:#3498db;background-image:linear-gradient(125deg,#3cb0fd 0,#152f8c 140%);border-radius:17px;box-shadow:inset 0 1px 3px #666;font-family:Arial,sans-serif;color:#fff;font-size:20px;padding:10px 20px 10px 20px;border:solid #2b698f 0;text-decoration:none}.wfbtn:hover{background:#3cb0fd;background-image:linear-gradient(to bottom,#3cb0fd,#3498db);text-decoration:none}.woo_feed_manage_list_table .wf_update_interval_btn{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%);border:none}.woo_feed_manage_list_table .wf_update_interval_btn:hover{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%)}.woo-feed-promotion{position:relative;display:none}.woo-feed-promotion .woo-feed-campaign-close-button{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);right:15px;width:24px;height:24px;border-radius:12px;background:#595d6b;line-height:24px;color:#fff;cursor:pointer;transition:.3s ease}.woo-feed-promotion .woo-feed-campaign-close-button:hover{background:#fff;color:#d61e48}.wftooltip{display:none;position:absolute;border:1px solid #333;background-color:#161616;border-radius:5px;padding:10px;color:#fff;font-size:12px}.feed-actions .makeFeedResponse{width:70%;color:green}.woo-feed-mapping-input{width:100%}.requiredIn{color:red}.generalInput{width:200px}.generalInput:not(.selectize-control){margin:5px auto}.error{color:red}.widefat td input,.widefat td select{max-width:100%}#wf_newRow{margin-left:0}.mtable tbody tr{height:25px;border:1px solid #ccc;text-align:left;-ms-flex-align:baseline;align-items:baseline;font-weight:700}.mtable th:nth-child(1){width:17px}.mtable th:nth-child(2){width:160px}.mtable th:nth-child(3){width:100px}.mtable th:nth-child(4){width:100px}.mtable th:nth-child(5){width:150px}.mtable th:nth-child(6){width:100px}.mtable th:nth-child(7){width:150px}.mtable th:nth-child(8){width:90px}.mtable th:nth-child(9){width:29px}.mtable2 tbody tr{height:25px;border:1px solid #ccc;text-align:left;-ms-flex-align:baseline;align-items:baseline;font-weight:700}.mtable2 th:nth-child(1){width:30px}.mtable2 th:nth-child(2){width:150px}.mtable2 th:nth-child(3){width:230px}.mtable2 th:nth-child(4){width:220px}.mtable2 th:nth-child(7){width:50px}.mtable2 th:nth-child(8){width:50px}.mtable2 th:nth-child(9){width:29px}.wp-admin select.wf_mattributes{width:150px;left:0;height:25px}div#wf-tab-content1 select:not([name^=output_type]){width:100%}div#wf-tab-content1 input{width:100%}div#wf-tab-content1 .dashicons{vertical-align:middle}.wf_attributes{width:150px;left:0}.wf_compare{max-width:245px;left:0}.wf_ps{width:100px;left:0}.wf_sortedtable{cursor:move}.sorted_table{position:relative}.sorted_table .dragged{position:absolute;opacity:.8;z-index:9999;background:#fff;width:100%;display:table}.sorted_table tbody tr.placeholder td{border:1px dashed #2cc185;height:46px}.wfnoempty{width:120px}.wf_tabs{position:relative;margin:0 auto;width:100%;list-style:none}.wf_tabs:after{display:table;clear:both;content:""}.wf_tabs li{float:left;width:20%;display:block;border:2px solid #ccc}.wf_tabs li>input[type=radio][name=wf_tabs]{position:absolute;top:auto;left:-9999px}.wf-tab-name{display:block;padding:15px;font-size:15px;font-weight:700;line-height:1;background:#fff;cursor:pointer;position:relative;text-align:center;text-transform:uppercase;color:#2cc185}.wf-tab-name:hover{background:#2cc185;color:#fff}.wf_tabs [id^=tab]:checked+label{background:#2cc185;color:#fff}.wf_tabs .wf-tab-content{z-index:2;display:none;width:100%;font-size:.9rem;position:absolute;left:0;background:#fff;border:2px solid #ccc}.wf_tabs [id^=tab]:checked~[id^=wf-tab-content]{display:block}[id^=wf-tab-content]{margin-bottom:40px}div#wf-tab-content2 table:first-child{padding:10px 0}div#wf-tab-content2 table:first-child td:nth-child(1){width:260px}div#wf-tab-content2 table:first-child td:nth-child(2){width:260px}table.feed-actions tr td:last-child{text-align:right}select.selectize{display:none}body.no-js select.selectize{display:block!important}.wp-list-table .option_name .wf_feed_option_name_link{font-weight:700;color:#30336b}.wp-list-table #option_name a{color:#32373c}.selectize-dropdown .active{background-color:#edf9ff}.selectize-dropdown .create{padding:5px 8px}.wapk-selectize-item{background:#0073aa!important;color:#f1f1f1!important;font-weight:700!important;border-color:#0073aa!important;padding-left:5px;padding-right:5px}.selectize-input.full #googleTaxonomyId-selectized{opacity:0;position:absolute;left:-10000px}.selectize-dropdown [data-selectable].option{cursor:default}.selectize-control.plugin-remove_button [data-value] .remove{border-left:1px solid #f1f1f1!important}.selectize-dropdown .optgroup-header{font-weight:700;background:#efefef;color:#5a5a5a}.selectize-dropdown [data-selectable].option{cursor:pointer}.wf_status_wrap label{width:55px;height:28px;box-sizing:border-box;float:left;border-radius:100px;position:relative;cursor:pointer;transition:.3s ease;background:linear-gradient(125deg,#e2e2e2 0,#ccc 140%)}input[class=woo_feed_status_input]:checked+label{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%)}input[class=woo_feed_status_input]:checked+label:before{left:29px}.wf_status_wrap label:before{transition:.3s ease;content:'';width:20px;height:20px;position:absolute;background:#fff;left:6px;top:4px;box-sizing:border-box;color:#000;border-radius:100px;box-shadow:0 1.5px 2px 0 #000}.view span.dashicons.dashicons-external{color:#22a6b3}.view span.dashicons.dashicons-sos{color:#22a6b3}.view span.dashicons.dashicons-download{color:#ee5253}.view span.dashicons.dashicons-media-code{color:#576574}.column-url,.widefat td.column-url,.widefat th.column-url{color:#1e8f9a;font-weight:700}.feed-progress-container{width:100%;color:#fff;text-align:center;font-weight:300}.feed-progress-bar{width:100%;background:#eee;padding:3px;border-radius:50px;box-shadow:inset 0 1px 3px rgba(0,0,0,.2)}.feed-progress-bar-fill{height:20px;display:block;background:linear-gradient(to right top,#10ac84,#13b389,#15ba8f,#18c194,#1ac89a,#13cba1,#0acfa9,#00d2b0,#00d2ba,#00d2c3,#00d2cb,#00d2d3);width:0;border-radius:50px;transition:width .8s ease}.feed-progress-status{float:left;font-weight:700;color:#00008b}.feed-progress-percentage{text-align:right;font-weight:bolder;color:#1dd1a1;font-family:'Arial Black',sans-serif;font-size:large}#wpbody-content.woofeed-body-content{overflow:visible!important}.clippy{position:relative;width:13px;margin-top:-3px;margin-left:3px;top:3px}.column-url .clippy{display:none}.column-url:hover .clippy{display:inline-block}.tooltipped{position:relative}.tooltipped:after{position:absolute;z-index:1000000;display:none;padding:5px 8px;font:normal normal 11px/1.5 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";color:#fff;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:rgba(0,0,0,.8);border-radius:3px;-webkit-font-smoothing:subpixel-antialiased}.tooltipped:before{position:absolute;z-index:1000001;display:none;width:0;height:0;color:rgba(0,0,0,.8);pointer-events:none;content:"";border:5px solid transparent}.tooltipped:hover:before{display:inline-block;text-decoration:none}.tooltipped:hover:after{display:inline-block;text-decoration:none}.tooltipped:active:before{display:inline-block;text-decoration:none}.tooltipped:active:after{display:inline-block;text-decoration:none}.tooltipped:focus:before{display:inline-block;text-decoration:none}.tooltipped:focus:after{display:inline-block;text-decoration:none}.tooltipped-multiline:hover:after{display:table-cell}.tooltipped-multiline:active:after{display:table-cell}.tooltipped-multiline:focus:after{display:table-cell}.tooltipped-multiline:after{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;word-break:break-word;word-wrap:normal;white-space:pre-line;border-collapse:separate}.tooltipped-s:after{top:100%;right:50%;margin-top:5px;-webkit-transform:translateX(50%);transform:translateX(50%)}.tooltipped-s:before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,.8)}.tooltipped-se:after{top:100%;margin-top:5px;right:auto;left:50%;margin-left:-15px}.tooltipped-se:before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,.8)}.tooltipped-sw:after{top:100%;right:50%;margin-top:5px;margin-right:-15px}.tooltipped-sw:before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,.8)}.tooltipped-n:after{right:50%;bottom:100%;margin-bottom:5px;-webkit-transform:translateX(50%);transform:translateX(50%)}.tooltipped-n:before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,.8)}.tooltipped-ne:after{bottom:100%;margin-bottom:5px;right:auto;left:50%;margin-left:-15px}.tooltipped-ne:before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,.8)}.tooltipped-nw:after{right:50%;bottom:100%;margin-bottom:5px;margin-right:-15px}.tooltipped-nw:before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,.8)}.tooltipped-w:after{right:100%;bottom:50%;margin-right:5px;-webkit-transform:translateY(50%);transform:translateY(50%)}.tooltipped-w:before{top:50%;bottom:50%;left:-5px;margin-top:-5px;border-left-color:rgba(0,0,0,.8)}.tooltipped-e:after{bottom:50%;left:100%;margin-left:5px;-webkit-transform:translateY(50%);transform:translateY(50%)}.tooltipped-e:before{top:50%;right:-5px;bottom:50%;margin-top:-5px;border-right-color:rgba(0,0,0,.8)}.tooltipped-multiline.tooltipped-s:after{right:auto;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.tooltipped-multiline.tooltipped-n:after{right:auto;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.tooltipped-multiline.tooltipped-w:after{right:100%}.tooltipped-multiline.tooltipped-e:after{right:100%}.tooltipped-sticky:before{display:inline-block}.tooltipped-sticky:after{display:inline-block}.tooltipped-sticky.tooltipped-multiline:after{display:table-cell}.fullscreen-overlay-enabled.dark-theme .tooltipped:after{color:#000;background:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-s:before{border-bottom-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-se:before{border-bottom-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-sw:before{border-bottom-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-n:before{border-top-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-ne:before{border-top-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-nw:before{border-top-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-e:before{border-right-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-w:before{border-left-color:rgba(255,255,255,.8)}@media screen and (min-width:0\0){.tooltipped-multiline:after{width:250px}}ul.tracker_collection_list{list-style:initial;padding:initial;margin:-10px 0 0 30px;font-size:11px!important}ul.tracker_collection_list li{margin:0}table.wf-info-table,table.wf-rate-table{vertical-align:middle;text-align:center;max-width:100%;font-weight:500}table.wf-info-table th,table.wf-rate-table th{text-align:center}table.wf-info-table th .woo-feed-top-header,table.wf-rate-table th .woo-feed-top-header{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}table.wf-info-table th .woo-feed-top-header .get-woo-feed-pro,table.wf-rate-table th .woo-feed-top-header .get-woo-feed-pro{margin-left:20px}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons{float:right;display:-ms-flexbox;display:flex;border-radius:7px;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a{padding:8px 20px;background:#576574;color:#fff;box-sizing:border-box;display:inline-block;transition:.3s ease}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-doc-link,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-doc-link{background:#576574;border-top-left-radius:5px;border-bottom-left-radius:5px}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-video-link,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-video-link{background:#ee5253}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-support-link,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-support-link{background:#22a6b3;border-top-right-radius:5px;border-bottom-right-radius:5px}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a span.dashicons,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a span.dashicons{font-size:18px;line-height:1.2}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a:hover,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a:hover{background:#30336b;box-shadow:0 0 33px 0 rgba(0,0,0,.12)}table.wf-info-table strong,table.wf-rate-table strong{font-weight:700}table.wf-info-table th:first-child img{margin:0 0 -5px 5px}table.wf-rate-table a{color:#0073aa}table.wf-rate-table a.review-star:after{content:"\f155\f155\f155\f155\f155"!important;font-family:dashicons;font-size:10px;font-weight:100;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#0073aa;text-decoration:underline}#adminmenu #toplevel_page_webappick-manage-feeds div.wp-menu-image::before{content:"";background:url(../images/woo-feed-icon.svg) no-repeat center center;background-size:20px 20px;opacity:.6}#adminmenu #toplevel_page_webappick-manage-feeds:hover div.wp-menu-image::before{opacity:1}#adminmenu #toplevel_page_webappick-manage-feeds.wp-has-current-submenu div.wp-menu-image::before{opacity:1}.wapk-admin,.wapk-admin *{box-sizing:border-box}.wapk-admin{position:relative;display:block;-webkit-hyphens:manual;-ms-hyphens:manual;-moz-hyphens:manual;hyphens:manual;color:#1b2730;margin:0 0 0 -10px}@media screen and (min-width:783px){.wapk-admin{margin:0 0 0 -20px}}.text-center{text-align:center}.wapk-admin h1,.wapk-admin h2,.wapk-admin h3,.wapk-admin h4,.wapk-admin h5,.wapk-admin h6,.wapk-admin p{color:#1b2730}.wapk-admin sup{vertical-align:baseline;position:relative;top:-6px}.wapk-admin sub{vertical-align:baseline;position:relative;top:4px}.wapk-admin .wapk-section{margin:10px 20px 0 22px;position:relative;display:block}.wapk-admin .wapk-section [class$=icon32]+h2{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px 0;line-height:1.3}.wapk-admin .wapk-section h1{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px 0;line-height:1.3}.wapk-admin .wapk-section>h2:first-child{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px 0;line-height:1.3}.wapk-admin>.notice{margin:10px 20px 0 22px;position:relative;display:block}.wapk-admin span.help{display:block;float:left;width:100%;font-size:.9em;color:#636363;margin-top:5px;font-weight:500}.wapk-admin span.help .dashicons{width:11px;height:12px;font-size:inherit;vertical-align:middle}.clear:after{content:"";display:table;clear:both}.wapk-feed-docs .postbox{width:355px;margin-right:20px;display:inline-block;vertical-align:top}.wapk-feed-docs .postbox .hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4;cursor:pointer}.wapk-feed-docs .postbox .dashicons{color:#ccc}.wapk-feed-docs .postbox a{text-decoration:none}.wapk-feed-docs .postbox .inside{margin-bottom:0}.wapk-feed-docs .postbox ul{margin-bottom:0}.wapk-feed-docs .postbox .toggle-indicator:before{content:"\F142";display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.wapk-feed-docs .postbox li{width:100%;display:block;float:left}.wapk-feed-docs .postbox li span{display:inline-block;float:left;margin-right:4px}.wapk-feed-docs .postbox li a{display:inline-block;float:left;width:calc(100% - 24px)}.wapk-feed-docs .postbox.closed .toggle-indicator:before{content:"\F140"}.wapk-section #post-body.columns-2 #side-sortables{min-height:196px}#poststuff #feed_merchant_info .inside{margin:0;padding:0}#feed_merchant_info ul.data{margin-left:24px;margin-top:5px}#feed_merchant_info ul.data li{margin-bottom:5px}.merchant-info-section{padding:6px 10px 8px}.merchant-info-section.woo-feed-open-file{text-align:center}.merchant-info-section.woo-feed-open-file a{line-height:1.5;text-decoration:none}.generateFeed .wf-tab-content table:first-child{border:none;box-shadow:none}.generateFeed table th{font-weight:700}@media only screen and (max-width:850px){.wapk-feed-docs .postbox{display:block;width:auto;float:none;margin-right:auto}}.wp-submenu li span.woo-feed-docs{font-weight:700;color:#f18500}.wp-submenu li:hover span.woo-feed-docs{color:#ce7304}.wp-submenu li.current span.woo-feed-docs{color:#ce7304}.wapk-admin .wapk-feed-docs .postbox .hndle{cursor:default}.wapk-cta{position:relative;display:-ms-flexbox;display:flex;width:100%;padding:100px 15px;background:linear-gradient(45deg,#6cd5ff 33%,#c2efef 100%);-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.wapk-cta-icon .dashicons{font-size:100px;width:100px;height:auto;margin:0 10px -8px 0;color:#02658c}.wapk-cta-content{width:50%}.wapk-cta-content h2{font-size:2em;margin:.5em 0}.wapk-cta-action a.wapk-button{font-size:24px;height:auto!important;padding:10px 20px}@media (max-width:600px){.wapk-cta{display:block;text-align:center;padding:4em 0}.wapk-cta-content{width:100%;margin:2em 0}}.wapk-button{color:#00d4d4;border-color:#00d4d4;display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wapk-button>svg{width:15px;margin-left:5px;fill:#00d4d4}.wapk-button>.dashicons{color:#00d4d4}.wapk-button:hover{border-color:#0bb;color:#0bb}.wapk-button:hover>svg{fill:#0bb}.wapk-button:hover>.dashicons{color:#0bb}.wapk-button:focus{border-color:#00d4d4;color:#0bb;box-shadow:0 0 0 1px #00d4d4}.wapk-button:focus>svg{fill:#0bb}.wapk-button:focus>.dashicons{color:#0bb}.wapk-button:active{background:#0bb;border-color:#0bb}.wapk-button-secondary{color:#00d4d4;border-color:#00d4d4;display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wapk-button-secondary>svg{width:15px;margin-left:5px;fill:#00d4d4}.wapk-button-secondary>.dashicons{color:#00d4d4}.wapk-button-secondary:hover{border-color:#0bb;color:#0bb}.wapk-button-secondary:hover>svg{fill:#0bb}.wapk-button-secondary:hover>.dashicons{color:#0bb}.wapk-button-secondary:focus{border-color:#00d4d4;color:#0bb;box-shadow:0 0 0 1px #00d4d4}.wapk-button-secondary:focus>svg{fill:#0bb}.wapk-button-secondary:focus>.dashicons{color:#0bb}.wapk-button-primary{display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box;background:#00d4d4;border-color:#00d4d4;color:#fff;box-shadow:0 1px 0 #0bb;text-shadow:0 -1px 1px #0bb,1px 0 1px #0bb,0 1px 1px #0bb,-1px 0 1px #0bb}.wapk-button-primary>svg{fill:#fff}.wapk-button-primary:hover{background:#00e3e3;border-color:#00c5c5;color:#fff}.wapk-button-primary:hover>svg{fill:#fff}.wapk-button-primary:focus{background:#00e3e3;border-color:#00c5c5;color:#fff;box-shadow:0 0 0 1px #fff,0 0 0 3px #00d4d4}.wapk-button-primary:focus>svg{fill:#fff}.wapk-button-primary:active{background:#0bb;border-color:#0bb;color:#fff}.wapk-button-primary:active>svg{fill:#fff}.wapk-button-primary:disabled{color:#c7d1d1!important;background:#2ff!important;border-color:#2ff!important;text-shadow:none!important}.wapk-button-primary:disabled>svg{fill:#c7d1d1!important}.wapk-button.hover{border-color:#0bb;color:#0bb}.wapk-button.hover>svg{fill:#0bb}.wapk-button.hover>.dashicons{color:#0bb}.wapk-button.focus{border-color:#00d4d4;color:#0bb;box-shadow:0 0 0 1px #00d4d4}.wapk-button.focus>svg{fill:#0bb}.wapk-button.focus>.dashicons{color:#0bb}.wapk-button.active{border-color:#0bb;color:#0bb;box-shadow:inset 0 2px 5px -3px #0bb}.wapk-button.active:focus{border-color:#0bb;color:#0bb;box-shadow:inset 0 2px 5px -3px #0bb}.wapk-button.active:focus>svg{fill:#0bb}.wapk-button.active:focus>.dashicons{color:#0bb}.wapk-button.active:hover{border-color:#0bb;color:#0bb;box-shadow:inset 0 2px 5px -3px #0bb}.wapk-button.active:hover>svg{fill:#0bb}.wapk-button.active:hover>.dashicons{color:#0bb}.wapk-button.active>svg{fill:#0bb}.wapk-button.active>.dashicons{color:#0bb}.wapk-button-primary.active{background:#00d4d4;color:#fff;border-color:#088;box-shadow:inset 0 2px 5px -3px #000}.wapk-button-primary.active:focus{background:#00d4d4;color:#fff;border-color:#088;box-shadow:inset 0 2px 5px -3px #000}.wapk-button-primary.active:focus>svg{fill:#fff}.wapk-button-primary.active:hover{background:#00d4d4;color:#fff;border-color:#088;box-shadow:inset 0 2px 5px -3px #000}.wapk-button-primary.active:hover>svg{fill:#fff}.wapk-button-primary.active>svg{fill:#fff}.wapk-button-primary[disabled]{color:#c7d1d1!important;background:#2ff!important;border-color:#2ff!important;text-shadow:none!important}.wapk-button-primary[disabled]>svg{fill:#c7d1d1!important}.wapk-button-primary.wapk-button-primary-disabled{color:#c7d1d1!important;background:#2ff!important;border-color:#2ff!important;text-shadow:none!important}.wapk-button-primary.wapk-button-primary-disabled>svg{fill:#c7d1d1!important}.wapk-button-primary.disabled{color:#c7d1d1!important;background:#2ff!important;border-color:#2ff!important;text-shadow:none!important}.wapk-button-primary.disabled>svg{fill:#c7d1d1!important}.wapk-button-primary.wapk-button-hero{box-shadow:0 2px 0 #0bb}.wapk-button-primary.wapk-button-hero:focus{box-shadow:0 2px 0 #0bb,0 1px 0 #00c5c5,0 0 2px 1px #0ee}.wapk-button-primary.wapk-button-hero:active{box-shadow:inset 0 3px 0 #00a1a1}.wapk-button-primary.wapk-button-hero.active{box-shadow:inset 0 3px 0 #00a1a1}.wapk-button-primary.wapk-button-hero.active:focus,.wapk-button-primary.wapk-button-hero.active:hover{box-shadow:inset 0 3px 0 #00a1a1}.wapk-button-group>.wapk-button.active{border-color:#00d4d4}.wapk-button.wapk-button-xl{height:30px;line-height:28px;padding:0 12px 2px}.wapk-button-group.wapk-button-xl .wapk-button{height:30px;line-height:28px;padding:0 12px 2px}.wapk-button.wapk-button-hero{font-size:18px;height:50px;line-height:48px;padding:0 36px;min-height:46px}.wapk-button-group.wapk-button-hero .wapk-button{font-size:18px;height:50px;line-height:48px;padding:0 36px;min-height:46px}@media screen and (min-width:782px){th#provider,th#status{width:80px}th#type{width:50px}th#option_name{width:100px}td.option_name.column-option_name>span:first-child{display:none}th#last_updated{width:90px}th#view{width:111px}}@media screen and (min-width:960px){th#provider,th#status{width:100px}th#type{width:80px}th#option_name{width:150px}th#last_updated{width:140px}}@media screen and (max-width:782px){table.wf-info-table{margin-top:10px}table.wf-info-table th:first-child img{margin:0 auto;display:block}.wapk-button.wapk-button-xl{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}}.wapk-feed-docs .wapk-feed-cta{margin:0}.campaign_configurator{background:#fff;padding:20px 0}.campaign_configurator table{margin:0 auto;width:51%;min-width:574px;border:none;box-shadow:none}.campaign_configurator th{min-width:120px}@media screen and (max-width:782px){.campaign_configurator{padding:0}.campaign_configurator table{width:auto;min-width:auto;max-width:100%}.campaign_configurator th{min-width:auto}}#wf-tab-content-config td>input:not([type=checkbox]):not([type=radio]),#wf-tab-content-config td>select,#wf-tab-content-config td>textarea{width:100%!important}.woo-feed-filters td>div:nth-child(2n):not(.clear):not(.selectize){width:120px;display:block}.woo-feed-filters td>div:not(.clear){float:left;margin-right:10px}.woo-feed-filters tr>td:first-child{width:290px;padding-left:40px}.woo-feed-filters,.woo-feed-ftp{margin:15px auto 25px}.wf_clean_cache_wrapper{display:-ms-flexbox;display:flex;margin-left:auto}@-webkit-keyframes LoaderClockWise{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes LoaderClockWise{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.woo-feed-cache-loader{width:18px;margin-right:5px;animation:LoaderClockWise 1s linear infinite;-webkit-animation:LoaderClockWise 1s linear infinite;display:none}.woo-feed-table-heading .woo-feed-table-heading-title{float:left;margin-right:auto;display:inline-block;line-height:30px}.woo-feed-table-heading .wf_clean_cache_wrapper{float:right;font-weight:400}.wf_clean_cache_wrapper button{background:linear-gradient(125deg,#eb4d4b 0,#ff9671 130%);color:#fff;border:none;font-weight:500;display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;border-radius:3px;cursor:pointer;outline:0}.wf_clean_cache_wrapper button:hover{background:#ff7979;color:#fff}input[type=submit][data-id=wf_action_submit]{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%);color:#fff;border:1px;padding:0 20px}input[type=submit][data-id=wf_action_submit]:hover{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%);color:#fff}.woo-import-popup-body #TB_window{width:500px!important}.woo-import-popup-body #TB_window #TB_title{border:none;background:#fff;text-align:center;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;height:35px!important}.woo-import-popup-body #TB_window #TB_title #TB_ajaxWindowTitle{color:#30336b;font-weight:700}.woo-import-popup-body #TB_window #TB_closeWindowButton{top:-14.5px;right:-14.5px;border:none;outline:0}.woo-import-popup-body #TB_window #TB_closeWindowButton .tb-close-icon{background:#ff5e55;color:#fff;border-radius:50%}.woo-import-popup-body #TB_window #TB_closeWindowButton:focus{outline:0;border:0}.woo-import-popup-body #TB_window #TB_ajaxContent{position:relative;width:100%!important;height:auto!important;border:none;box-sizing:border-box;overflow:hidden;background:#f7fcff;padding:30px 20px}.woo-import-popup-body #TB_window #TB_ajaxContent:before{content:'';width:115%;display:block;background:#4bcffa;position:absolute;height:130%;z-index:0;left:-36%;top:-85px;-webkit-transform:rotate(115deg);transform:rotate(115deg)}.woo-import-popup-body #TB_window #TB_ajaxContent table{border:none;position:relative;z-index:1;border-radius:3px;text-align:center;padding:20px;box-shadow:0 12px 20px -17px #000}.woo-import-popup-body #TB_window #TB_ajaxContent table input{width:60%}.woo-import-popup-body #TB_window #TB_ajaxContent table input:focus{outline:2px solid #68b8f7}.woo-import-popup-body #TB_window #TB_ajaxContent table input[type=file]{padding:3px 0;cursor:pointer}.woo-import-popup-body #TB_window #TB_ajaxContent table input[type=text]{border-radius:25px;font-size:14px;padding:1px 20px;text-align:center}.woo-import-popup-body #TB_window #TB_ajaxContent table input[type=submit]{background:#17c0eb;border-radius:25px;border:0;box-shadow:1px 4px 7px -3px #45364a;font-weight:600;transition:.3s ease}.woo-import-popup-body #TB_window #TB_ajaxContent table input[type=submit]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px)}.woo-feed-notice .woo-feed-review-notice-logo{width:90px;height:90px;float:left;margin-right:5px;background:url(../images/woo-feed-logo.svg) no-repeat}.woo-feed-status-table-wrapper .woo-feed-status-table{width:100%;max-width:900px;border-collapse:collapse;border-spacing:.5rem;box-shadow:0 0 20px rgba(0,0,0,.1)}.woo-feed-status-table-wrapper .woo-feed-status-table tr:nth-child(even){background:#f1f1f1}.woo-feed-status-table-wrapper .woo-feed-status-table tr:nth-child(odd){background:#fafafc}.woo-feed-status-table-wrapper .woo-feed-status-table tr th{background:#353b48;color:#fff}.woo-feed-status-table-wrapper .woo-feed-status-table tr th.woo-feed-status-message-header{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}.woo-feed-status-table-wrapper .woo-feed-status-table tr th.woo-feed-status-message-header #woo-feed-copy-status-btn{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%);border:none}.woo-feed-status-table-wrapper .woo-feed-status-table tr td,.woo-feed-status-table-wrapper .woo-feed-status-table tr th{padding:.5rem 20px;text-align:left}input[id^=woo_feed_identifier_]{display:block;width:100%!important}#taxonomy-woo-feed-brand #newwoo-feed-brand_parent,.taxonomy-woo-feed-brand .form-field.term-parent-wrap{display:none}.wapk-admin .switch{position:relative;display:inline-block;width:60px;height:34px}.wapk-admin .switch input{opacity:0;width:0;height:0}.wapk-admin .slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;transition:.4s}.wapk-admin .slider:before{position:absolute;content:"";height:26px;width:26px;left:4px;bottom:4px;background-color:#fff;transition:.4s}.wapk-admin input:checked+.slider{background-color:#18c194}.wapk-admin input:focus+.slider{box-shadow:0 0 1px #2196f3}.wapk-admin input:checked+.slider:before{-webkit-transform:translateX(26px);transform:translateX(26px)}.wapk-admin .slider.round{border-radius:34px}.wapk-admin .slider.round:before{border-radius:50%}
|
1 |
+
.wpf_spin{-webkit-animation:spin 1s infinite linear;animation:spin 1s infinite linear}.wpf_spin.reverse_spin{animation-direction:reverse}.wpf_regenerate.disabled{color:#737373;box-shadow:none;cursor:not-allowed}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.webappick-info{color:#42a5fa}.wfbtn{background:#3498db;background-image:linear-gradient(125deg,#3cb0fd 0,#152f8c 140%);border-radius:17px;box-shadow:inset 0 1px 3px #666;font-family:Arial,sans-serif;color:#fff;font-size:20px;padding:10px 20px 10px 20px;border:solid #2b698f 0;text-decoration:none}.wfbtn:hover{background:#3cb0fd;background-image:linear-gradient(to bottom,#3cb0fd,#3498db);text-decoration:none}.woo_feed_manage_list_table .wf_update_interval_btn{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%);border:none}.woo_feed_manage_list_table .wf_update_interval_btn:hover{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%)}.woo-feed-promotion{position:relative;display:none}.woo-feed-promotion .woo-feed-campaign-close-button{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);right:15px;width:24px;height:24px;border-radius:12px;background:#595d6b;line-height:24px;color:#fff;cursor:pointer;transition:.3s ease}.woo-feed-promotion .woo-feed-campaign-close-button:hover{background:#fff;color:#d61e48}.wftooltip{display:none;position:absolute;border:1px solid #333;background-color:#161616;border-radius:5px;padding:10px;color:#fff;font-size:12px}.feed-actions .makeFeedResponse{width:70%;color:green}.woo-feed-mapping-input{width:100%}.requiredIn{color:red}.generalInput{width:200px}.generalInput:not(.selectize-control){margin:5px auto}.error{color:red}.widefat td input,.widefat td select{max-width:100%}#wf_newRow{margin-left:0}.mtable tbody tr{height:25px;border:1px solid #ccc;text-align:left;-ms-flex-align:baseline;align-items:baseline;font-weight:700}.mtable th:nth-child(1){width:17px}.mtable th:nth-child(2){width:160px}.mtable th:nth-child(3){width:100px}.mtable th:nth-child(4){width:100px}.mtable th:nth-child(5){width:150px}.mtable th:nth-child(6){width:100px}.mtable th:nth-child(7){width:150px}.mtable th:nth-child(8){width:90px}.mtable th:nth-child(9){width:29px}.mtable2 tbody tr{height:25px;border:1px solid #ccc;text-align:left;-ms-flex-align:baseline;align-items:baseline;font-weight:700}.mtable2 th:nth-child(1){width:30px}.mtable2 th:nth-child(2){width:150px}.mtable2 th:nth-child(3){width:230px}.mtable2 th:nth-child(4){width:220px}.mtable2 th:nth-child(7){width:50px}.mtable2 th:nth-child(8){width:50px}.mtable2 th:nth-child(9){width:29px}.wp-admin select.wf_mattributes{width:150px;left:0;height:25px}div#wf-tab-content1 select:not([name^=output_type]){width:100%}div#wf-tab-content1 input{width:100%}div#wf-tab-content1 .dashicons{vertical-align:middle}.wf_attributes{width:150px;left:0}.wf_compare{max-width:245px;left:0}.wf_ps{width:100px;left:0}.wf_sortedtable{cursor:move}.sorted_table{position:relative}.sorted_table .dragged{position:absolute;opacity:.8;z-index:9999;background:#fff;width:100%;display:table}.sorted_table tbody tr.placeholder td{border:1px dashed #2cc185;height:46px}.wfnoempty{width:120px}.wf_tabs{position:relative;margin:0 auto;width:100%;list-style:none}.wf_tabs:after{display:table;clear:both;content:""}.wf_tabs li{float:left;width:20%;display:block;border:2px solid #ccc}.wf_tabs li>input[type=radio][name=wf_tabs]{position:absolute;top:auto;left:-9999px}.wf-tab-name{display:block;padding:15px;font-size:15px;font-weight:700;line-height:1;background:#fff;cursor:pointer;position:relative;text-align:center;text-transform:uppercase;color:#2cc185}.wf-tab-name:hover{background:#2cc185;color:#fff}.wf_tabs [id^=tab]:checked+label{background:#2cc185;color:#fff}.wf_tabs .wf-tab-content{z-index:2;display:none;width:100%;font-size:.9rem;position:absolute;left:0;background:#fff;border:2px solid #ccc}.wf_tabs [id^=tab]:checked~[id^=wf-tab-content]{display:block}[id^=wf-tab-content]{margin-bottom:40px}div#wf-tab-content2 table:first-child{padding:10px 0}div#wf-tab-content2 table:first-child td:nth-child(1){width:260px}div#wf-tab-content2 table:first-child td:nth-child(2){width:260px}table.feed-actions tr td:last-child{text-align:right}select.selectize{display:none}body.no-js select.selectize{display:block!important}.wp-list-table .option_name .wf_feed_option_name_link{font-weight:700;color:#30336b}.wp-list-table #option_name a{color:#32373c}.selectize-dropdown .active{background-color:#edf9ff}.selectize-dropdown .create{padding:5px 8px}.wapk-selectize-item{background:#0073aa!important;color:#f1f1f1!important;font-weight:700!important;border-color:#0073aa!important;padding-left:5px;padding-right:5px}.selectize-input.full #googleTaxonomyId-selectized{opacity:0;position:absolute;left:-10000px}.selectize-dropdown [data-selectable].option{cursor:default}.selectize-control.plugin-remove_button [data-value] .remove{border-left:1px solid #f1f1f1!important}.selectize-dropdown .optgroup-header{font-weight:700;background:#efefef;color:#5a5a5a}.selectize-dropdown [data-selectable].option{cursor:pointer}.wf_status_wrap label{width:55px;height:28px;box-sizing:border-box;float:left;border-radius:100px;position:relative;cursor:pointer;transition:.3s ease;background:linear-gradient(125deg,#e2e2e2 0,#ccc 140%)}input[class=woo_feed_status_input]:checked+label{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%)}input[class=woo_feed_status_input]:checked+label:before{left:29px}.wf_status_wrap label:before{transition:.3s ease;content:'';width:20px;height:20px;position:absolute;background:#fff;left:6px;top:4px;box-sizing:border-box;color:#000;border-radius:100px;box-shadow:0 1.5px 2px 0 #000}.view span.dashicons.dashicons-external{color:#22a6b3}.view span.dashicons.dashicons-sos{color:#22a6b3}.view span.dashicons.dashicons-download{color:#ee5253}.view span.dashicons.dashicons-media-code{color:#576574}.column-url,.widefat td.column-url,.widefat th.column-url{color:#1e8f9a;font-weight:700}.feed-progress-container{width:100%;color:#fff;text-align:center;font-weight:300}.feed-progress-bar{width:100%;background:#eee;padding:3px;border-radius:50px;box-shadow:inset 0 1px 3px rgba(0,0,0,.2)}.feed-progress-bar-fill{height:20px;display:block;background:linear-gradient(to right top,#10ac84,#13b389,#15ba8f,#18c194,#1ac89a,#13cba1,#0acfa9,#00d2b0,#00d2ba,#00d2c3,#00d2cb,#00d2d3);width:0;border-radius:50px;transition:width .8s ease}.feed-progress-status{float:left;font-weight:700;color:#00008b}.feed-progress-percentage{text-align:right;font-weight:bolder;color:#1dd1a1;font-family:'Arial Black',sans-serif;font-size:large}#wpbody-content.woofeed-body-content{overflow:visible!important}.clippy{position:relative;width:13px;margin-top:-3px;margin-left:3px;top:3px}.column-url .clippy{display:none}.column-url:hover .clippy{display:inline-block}.tooltipped{position:relative}.tooltipped:after{position:absolute;z-index:1000000;display:none;padding:5px 8px;font:normal normal 11px/1.5 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";color:#fff;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:rgba(0,0,0,.8);border-radius:3px;-webkit-font-smoothing:subpixel-antialiased}.tooltipped:before{position:absolute;z-index:1000001;display:none;width:0;height:0;color:rgba(0,0,0,.8);pointer-events:none;content:"";border:5px solid transparent}.tooltipped:hover:before{display:inline-block;text-decoration:none}.tooltipped:hover:after{display:inline-block;text-decoration:none}.tooltipped:active:before{display:inline-block;text-decoration:none}.tooltipped:active:after{display:inline-block;text-decoration:none}.tooltipped:focus:before{display:inline-block;text-decoration:none}.tooltipped:focus:after{display:inline-block;text-decoration:none}.tooltipped-multiline:hover:after{display:table-cell}.tooltipped-multiline:active:after{display:table-cell}.tooltipped-multiline:focus:after{display:table-cell}.tooltipped-multiline:after{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;word-break:break-word;word-wrap:normal;white-space:pre-line;border-collapse:separate}.tooltipped-s:after{top:100%;right:50%;margin-top:5px;-webkit-transform:translateX(50%);transform:translateX(50%)}.tooltipped-s:before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,.8)}.tooltipped-se:after{top:100%;margin-top:5px;right:auto;left:50%;margin-left:-15px}.tooltipped-se:before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,.8)}.tooltipped-sw:after{top:100%;right:50%;margin-top:5px;margin-right:-15px}.tooltipped-sw:before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,.8)}.tooltipped-n:after{right:50%;bottom:100%;margin-bottom:5px;-webkit-transform:translateX(50%);transform:translateX(50%)}.tooltipped-n:before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,.8)}.tooltipped-ne:after{bottom:100%;margin-bottom:5px;right:auto;left:50%;margin-left:-15px}.tooltipped-ne:before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,.8)}.tooltipped-nw:after{right:50%;bottom:100%;margin-bottom:5px;margin-right:-15px}.tooltipped-nw:before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,.8)}.tooltipped-w:after{right:100%;bottom:50%;margin-right:5px;-webkit-transform:translateY(50%);transform:translateY(50%)}.tooltipped-w:before{top:50%;bottom:50%;left:-5px;margin-top:-5px;border-left-color:rgba(0,0,0,.8)}.tooltipped-e:after{bottom:50%;left:100%;margin-left:5px;-webkit-transform:translateY(50%);transform:translateY(50%)}.tooltipped-e:before{top:50%;right:-5px;bottom:50%;margin-top:-5px;border-right-color:rgba(0,0,0,.8)}.tooltipped-multiline.tooltipped-s:after{right:auto;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.tooltipped-multiline.tooltipped-n:after{right:auto;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.tooltipped-multiline.tooltipped-w:after{right:100%}.tooltipped-multiline.tooltipped-e:after{right:100%}.tooltipped-sticky:before{display:inline-block}.tooltipped-sticky:after{display:inline-block}.tooltipped-sticky.tooltipped-multiline:after{display:table-cell}.fullscreen-overlay-enabled.dark-theme .tooltipped:after{color:#000;background:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-s:before{border-bottom-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-se:before{border-bottom-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-sw:before{border-bottom-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-n:before{border-top-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-ne:before{border-top-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-nw:before{border-top-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-e:before{border-right-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-w:before{border-left-color:rgba(255,255,255,.8)}@media screen and (min-width:0\0){.tooltipped-multiline:after{width:250px}}ul.tracker_collection_list{list-style:initial;padding:initial;margin:-10px 0 0 30px;font-size:11px!important}ul.tracker_collection_list li{margin:0}table.wf-info-table,table.wf-rate-table{vertical-align:middle;text-align:center;max-width:100%;font-weight:500}table.wf-info-table th,table.wf-rate-table th{text-align:center}table.wf-info-table th .woo-feed-top-header,table.wf-rate-table th .woo-feed-top-header{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}table.wf-info-table th .woo-feed-top-header .get-woo-feed-pro,table.wf-rate-table th .woo-feed-top-header .get-woo-feed-pro{margin-left:20px}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons{float:right;display:-ms-flexbox;display:flex;border-radius:7px;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a{padding:8px 20px;background:#576574;color:#fff;box-sizing:border-box;display:inline-block;transition:.3s ease}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-doc-link,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-doc-link{background:#576574;border-top-left-radius:5px;border-bottom-left-radius:5px}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-video-link,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-video-link{background:#ee5253}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-support-link,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-support-link{background:#22a6b3;border-top-right-radius:5px;border-bottom-right-radius:5px}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a span.dashicons,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a span.dashicons{font-size:18px;line-height:1.2}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a:hover,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a:hover{background:#30336b;box-shadow:0 0 33px 0 rgba(0,0,0,.12)}table.wf-info-table strong,table.wf-rate-table strong{font-weight:700}table.wf-info-table th:first-child img{margin:0 0 -5px 5px}table.wf-rate-table a{color:#0073aa}table.wf-rate-table a.review-star:after{content:"\f155\f155\f155\f155\f155"!important;font-family:dashicons;font-size:10px;font-weight:100;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#0073aa;text-decoration:underline}#adminmenu #toplevel_page_webappick-manage-feeds div.wp-menu-image::before{content:"";background:url(../images/woo-feed-icon.svg) no-repeat center center;background-size:20px 20px;opacity:.6}#adminmenu #toplevel_page_webappick-manage-feeds:hover div.wp-menu-image::before{opacity:1}#adminmenu #toplevel_page_webappick-manage-feeds.wp-has-current-submenu div.wp-menu-image::before{opacity:1}.wapk-admin,.wapk-admin *{box-sizing:border-box}.wapk-admin{position:relative;display:block;-webkit-hyphens:manual;-ms-hyphens:manual;-moz-hyphens:manual;hyphens:manual;color:#1b2730;margin:0 0 0 -10px}@media screen and (min-width:783px){.wapk-admin{margin:0 0 0 -20px}}.text-center{text-align:center}.wapk-admin h1,.wapk-admin h2,.wapk-admin h3,.wapk-admin h4,.wapk-admin h5,.wapk-admin h6,.wapk-admin p{color:#1b2730}.wapk-admin sup{vertical-align:baseline;position:relative;top:-6px}.wapk-admin sub{vertical-align:baseline;position:relative;top:4px}.wapk-admin .wapk-section{margin:10px 20px 0 22px;position:relative;display:block}.wapk-admin .wapk-section [class$=icon32]+h2{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px 0;line-height:1.3}.wapk-admin .wapk-section h1{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px 0;line-height:1.3}.wapk-admin .wapk-section>h2:first-child{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px 0;line-height:1.3}.wapk-admin>.notice{margin:10px 20px 0 22px;position:relative;display:block}.wapk-admin span.help{display:block;float:left;width:100%;font-size:.9em;color:#636363;margin-top:5px;font-weight:500}.wapk-admin span.help .dashicons{width:11px;height:12px;font-size:inherit;vertical-align:middle}.clear:after{content:"";display:table;clear:both}.wapk-feed-docs .postbox{width:355px;margin-right:20px;display:inline-block;vertical-align:top}.wapk-feed-docs .postbox .hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4;cursor:pointer}.wapk-feed-docs .postbox .dashicons{color:#ccc}.wapk-feed-docs .postbox a{text-decoration:none}.wapk-feed-docs .postbox .inside{margin-bottom:0}.wapk-feed-docs .postbox ul{margin-bottom:0}.wapk-feed-docs .postbox .toggle-indicator:before{content:"\F142";display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.wapk-feed-docs .postbox li{width:100%;display:block;float:left}.wapk-feed-docs .postbox li span{display:inline-block;float:left;margin-right:4px}.wapk-feed-docs .postbox li a{display:inline-block;float:left;width:calc(100% - 24px)}.wapk-feed-docs .postbox.closed .toggle-indicator:before{content:"\F140"}.wapk-section #post-body.columns-2 #side-sortables{min-height:196px}#poststuff #feed_merchant_info .inside{margin:0;padding:0}#feed_merchant_info ul.data{margin-left:24px;margin-top:5px}#feed_merchant_info ul.data li{margin-bottom:5px}.merchant-info-section{padding:6px 10px 8px}.merchant-info-section.woo-feed-open-file{text-align:center}.merchant-info-section.woo-feed-open-file a{line-height:1.5;text-decoration:none}.generateFeed .wf-tab-content table:first-child{border:none;box-shadow:none}.generateFeed table th{font-weight:700}@media only screen and (max-width:850px){.wapk-feed-docs .postbox{display:block;width:auto;float:none;margin-right:auto}}.wp-submenu li span.woo-feed-docs{font-weight:700;color:#f18500}.wp-submenu li:hover span.woo-feed-docs{color:#ce7304}.wp-submenu li.current span.woo-feed-docs{color:#ce7304}.wapk-admin .wapk-feed-docs .postbox .hndle{cursor:default}.wapk-cta{position:relative;display:-ms-flexbox;display:flex;width:100%;padding:100px 15px;background:linear-gradient(45deg,#6cd5ff 33%,#c2efef 100%);-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.wapk-cta-icon .dashicons{font-size:100px;width:100px;height:auto;margin:0 10px -8px 0;color:#02658c}.wapk-cta-content{width:50%}.wapk-cta-content h2{font-size:2em;margin:.5em 0}.wapk-cta-action a.wapk-button{font-size:24px;height:auto!important;padding:10px 20px}@media (max-width:600px){.wapk-cta{display:block;text-align:center;padding:4em 0}.wapk-cta-content{width:100%;margin:2em 0}}.wapk-button{color:#00d4d4;border-color:#00d4d4;display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wapk-button>svg{width:15px;margin-left:5px;fill:#00d4d4}.wapk-button>.dashicons{color:#00d4d4}.wapk-button:hover{border-color:#0bb;color:#0bb}.wapk-button:hover>svg{fill:#0bb}.wapk-button:hover>.dashicons{color:#0bb}.wapk-button:focus{border-color:#00d4d4;color:#0bb;box-shadow:0 0 0 1px #00d4d4}.wapk-button:focus>svg{fill:#0bb}.wapk-button:focus>.dashicons{color:#0bb}.wapk-button:active{background:#0bb;border-color:#0bb}.wapk-button-secondary{color:#00d4d4;border-color:#00d4d4;display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wapk-button-secondary>svg{width:15px;margin-left:5px;fill:#00d4d4}.wapk-button-secondary>.dashicons{color:#00d4d4}.wapk-button-secondary:hover{border-color:#0bb;color:#0bb}.wapk-button-secondary:hover>svg{fill:#0bb}.wapk-button-secondary:hover>.dashicons{color:#0bb}.wapk-button-secondary:focus{border-color:#00d4d4;color:#0bb;box-shadow:0 0 0 1px #00d4d4}.wapk-button-secondary:focus>svg{fill:#0bb}.wapk-button-secondary:focus>.dashicons{color:#0bb}.wapk-button-primary{display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box;background:#00d4d4;border-color:#00d4d4;color:#fff;box-shadow:0 1px 0 #0bb;text-shadow:0 -1px 1px #0bb,1px 0 1px #0bb,0 1px 1px #0bb,-1px 0 1px #0bb}.wapk-button-primary>svg{fill:#fff}.wapk-button-primary:hover{background:#00e3e3;border-color:#00c5c5;color:#fff}.wapk-button-primary:hover>svg{fill:#fff}.wapk-button-primary:focus{background:#00e3e3;border-color:#00c5c5;color:#fff;box-shadow:0 0 0 1px #fff,0 0 0 3px #00d4d4}.wapk-button-primary:focus>svg{fill:#fff}.wapk-button-primary:active{background:#0bb;border-color:#0bb;color:#fff}.wapk-button-primary:active>svg{fill:#fff}.wapk-button-primary:disabled{color:#c7d1d1!important;background:#2ff!important;border-color:#2ff!important;text-shadow:none!important}.wapk-button-primary:disabled>svg{fill:#c7d1d1!important}.wapk-button.hover{border-color:#0bb;color:#0bb}.wapk-button.hover>svg{fill:#0bb}.wapk-button.hover>.dashicons{color:#0bb}.wapk-button.focus{border-color:#00d4d4;color:#0bb;box-shadow:0 0 0 1px #00d4d4}.wapk-button.focus>svg{fill:#0bb}.wapk-button.focus>.dashicons{color:#0bb}.wapk-button.active{border-color:#0bb;color:#0bb;box-shadow:inset 0 2px 5px -3px #0bb}.wapk-button.active:focus{border-color:#0bb;color:#0bb;box-shadow:inset 0 2px 5px -3px #0bb}.wapk-button.active:focus>svg{fill:#0bb}.wapk-button.active:focus>.dashicons{color:#0bb}.wapk-button.active:hover{border-color:#0bb;color:#0bb;box-shadow:inset 0 2px 5px -3px #0bb}.wapk-button.active:hover>svg{fill:#0bb}.wapk-button.active:hover>.dashicons{color:#0bb}.wapk-button.active>svg{fill:#0bb}.wapk-button.active>.dashicons{color:#0bb}.wapk-button-primary.active{background:#00d4d4;color:#fff;border-color:#088;box-shadow:inset 0 2px 5px -3px #000}.wapk-button-primary.active:focus{background:#00d4d4;color:#fff;border-color:#088;box-shadow:inset 0 2px 5px -3px #000}.wapk-button-primary.active:focus>svg{fill:#fff}.wapk-button-primary.active:hover{background:#00d4d4;color:#fff;border-color:#088;box-shadow:inset 0 2px 5px -3px #000}.wapk-button-primary.active:hover>svg{fill:#fff}.wapk-button-primary.active>svg{fill:#fff}.wapk-button-primary[disabled]{color:#c7d1d1!important;background:#2ff!important;border-color:#2ff!important;text-shadow:none!important}.wapk-button-primary[disabled]>svg{fill:#c7d1d1!important}.wapk-button-primary.wapk-button-primary-disabled{color:#c7d1d1!important;background:#2ff!important;border-color:#2ff!important;text-shadow:none!important}.wapk-button-primary.wapk-button-primary-disabled>svg{fill:#c7d1d1!important}.wapk-button-primary.disabled{color:#c7d1d1!important;background:#2ff!important;border-color:#2ff!important;text-shadow:none!important}.wapk-button-primary.disabled>svg{fill:#c7d1d1!important}.wapk-button-primary.wapk-button-hero{box-shadow:0 2px 0 #0bb}.wapk-button-primary.wapk-button-hero:focus{box-shadow:0 2px 0 #0bb,0 1px 0 #00c5c5,0 0 2px 1px #0ee}.wapk-button-primary.wapk-button-hero:active{box-shadow:inset 0 3px 0 #00a1a1}.wapk-button-primary.wapk-button-hero.active{box-shadow:inset 0 3px 0 #00a1a1}.wapk-button-primary.wapk-button-hero.active:focus,.wapk-button-primary.wapk-button-hero.active:hover{box-shadow:inset 0 3px 0 #00a1a1}.wapk-button-group>.wapk-button.active{border-color:#00d4d4}.wapk-button.wapk-button-xl{height:30px;line-height:28px;padding:0 12px 2px}.wapk-button-group.wapk-button-xl .wapk-button{height:30px;line-height:28px;padding:0 12px 2px}.wapk-button.wapk-button-hero{font-size:18px;height:50px;line-height:48px;padding:0 36px;min-height:46px}.wapk-button-group.wapk-button-hero .wapk-button{font-size:18px;height:50px;line-height:48px;padding:0 36px;min-height:46px}@media screen and (min-width:782px){th#provider,th#status{width:80px}th#type{width:50px}th#option_name{width:100px}td.option_name.column-option_name>span:first-child{display:none}th#last_updated{width:90px}th#view{width:135px}}@media screen and (min-width:960px){th#provider,th#status{width:100px}th#type{width:80px}th#option_name{width:150px}th#last_updated{width:140px}}@media screen and (max-width:782px){table.wf-info-table{margin-top:10px}table.wf-info-table th:first-child img{margin:0 auto;display:block}.wapk-button.wapk-button-xl{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}}.wapk-feed-docs .wapk-feed-cta{margin:0}.campaign_configurator{background:#fff;padding:20px 0}.campaign_configurator table{margin:0 auto;width:51%;min-width:574px;border:none;box-shadow:none}.campaign_configurator th{min-width:120px}@media screen and (max-width:782px){.campaign_configurator{padding:0}.campaign_configurator table{width:auto;min-width:auto;max-width:100%}.campaign_configurator th{min-width:auto}}#wf-tab-content-config td>input:not([type=checkbox]):not([type=radio]),#wf-tab-content-config td>select,#wf-tab-content-config td>textarea{width:100%!important}.woo-feed-filters td>div:nth-child(2n):not(.clear):not(.selectize){width:120px;display:block}.woo-feed-filters td>div:not(.clear){float:left;margin-right:10px}.woo-feed-filters tr>td:first-child{width:290px;padding-left:40px}.woo-feed-filters,.woo-feed-ftp{margin:15px auto 25px}.wf_clean_cache_wrapper{display:-ms-flexbox;display:flex;margin-left:auto}@-webkit-keyframes LoaderClockWise{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes LoaderClockWise{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.woo-feed-cache-loader{width:18px;margin-right:5px;animation:LoaderClockWise 1s linear infinite;-webkit-animation:LoaderClockWise 1s linear infinite;display:none}.woo-feed-table-heading .woo-feed-table-heading-title{float:left;margin-right:auto;display:inline-block;line-height:30px}.woo-feed-table-heading .wf_clean_cache_wrapper{float:right;font-weight:400}.wf_clean_cache_wrapper button{background:linear-gradient(125deg,#eb4d4b 0,#ff9671 130%);color:#fff;border:none;font-weight:500;display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;border-radius:3px;cursor:pointer;outline:0}.wf_clean_cache_wrapper button:hover{background:#ff7979;color:#fff}input[type=submit][data-id=wf_action_submit]{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%);color:#fff;border:1px;padding:0 20px}input[type=submit][data-id=wf_action_submit]:hover{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%);color:#fff}.woo-import-popup-body #TB_window{width:500px!important}.woo-import-popup-body #TB_window #TB_title{border:none;background:#fff;text-align:center;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;height:35px!important}.woo-import-popup-body #TB_window #TB_title #TB_ajaxWindowTitle{color:#30336b;font-weight:700}.woo-import-popup-body #TB_window #TB_closeWindowButton{top:-14.5px;right:-14.5px;border:none;outline:0}.woo-import-popup-body #TB_window #TB_closeWindowButton .tb-close-icon{background:#ff5e55;color:#fff;border-radius:50%}.woo-import-popup-body #TB_window #TB_closeWindowButton:focus{outline:0;border:0}.woo-import-popup-body #TB_window #TB_ajaxContent{position:relative;width:100%!important;height:auto!important;border:none;box-sizing:border-box;overflow:hidden;background:#f7fcff;padding:30px 20px}.woo-import-popup-body #TB_window #TB_ajaxContent:before{content:'';width:115%;display:block;background:#4bcffa;position:absolute;height:130%;z-index:0;left:-36%;top:-85px;-webkit-transform:rotate(115deg);transform:rotate(115deg)}.woo-import-popup-body #TB_window #TB_ajaxContent table{border:none;position:relative;z-index:1;border-radius:3px;text-align:center;padding:20px;box-shadow:0 12px 20px -17px #000}.woo-import-popup-body #TB_window #TB_ajaxContent table input{width:60%}.woo-import-popup-body #TB_window #TB_ajaxContent table input:focus{outline:2px solid #68b8f7}.woo-import-popup-body #TB_window #TB_ajaxContent table input[type=file]{padding:3px 0;cursor:pointer}.woo-import-popup-body #TB_window #TB_ajaxContent table input[type=text]{border-radius:25px;font-size:14px;padding:1px 20px;text-align:center}.woo-import-popup-body #TB_window #TB_ajaxContent table input[type=submit]{background:#17c0eb;border-radius:25px;border:0;box-shadow:1px 4px 7px -3px #45364a;font-weight:600;transition:.3s ease}.woo-import-popup-body #TB_window #TB_ajaxContent table input[type=submit]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px)}.woo-feed-notice .woo-feed-review-notice-logo{width:90px;height:90px;float:left;margin-right:5px;background:url(../images/woo-feed-logo.svg) no-repeat}.woo-feed-status-table-wrapper .woo-feed-status-table{width:100%;max-width:900px;border-collapse:collapse;border-spacing:.5rem;box-shadow:0 0 20px rgba(0,0,0,.1)}.woo-feed-status-table-wrapper .woo-feed-status-table tr:nth-child(even){background:#f1f1f1}.woo-feed-status-table-wrapper .woo-feed-status-table tr:nth-child(odd){background:#fafafc}.woo-feed-status-table-wrapper .woo-feed-status-table tr th{background:#353b48;color:#fff}.woo-feed-status-table-wrapper .woo-feed-status-table tr th.woo-feed-status-message-header{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}.woo-feed-status-table-wrapper .woo-feed-status-table tr th.woo-feed-status-message-header #woo-feed-copy-status-btn{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%);border:none}.woo-feed-status-table-wrapper .woo-feed-status-table tr td,.woo-feed-status-table-wrapper .woo-feed-status-table tr th{padding:.5rem 20px;text-align:left}input[id^=woo_feed_identifier_]{display:block;width:100%!important}#taxonomy-woo-feed-brand #newwoo-feed-brand_parent,.taxonomy-woo-feed-brand .form-field.term-parent-wrap{display:none}.wapk-admin .switch{position:relative;display:inline-block;width:60px;height:34px}.wapk-admin .switch input{opacity:0;width:0;height:0}.wapk-admin .slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;transition:.4s}.wapk-admin .slider:before{position:absolute;content:"";height:26px;width:26px;left:4px;bottom:4px;background-color:#fff;transition:.4s}.wapk-admin input:checked+.slider{background-color:#18c194}.wapk-admin input:focus+.slider{box-shadow:0 0 1px #2196f3}.wapk-admin input:checked+.slider:before{-webkit-transform:translateX(26px);transform:translateX(26px)}.wapk-admin .slider.round{border-radius:34px}.wapk-admin .slider.round:before{border-radius:50%}
|
admin/css/woo-feed-admin.scss
CHANGED
@@ -26,6 +26,10 @@
|
|
26 |
}
|
27 |
}
|
28 |
|
|
|
|
|
|
|
|
|
29 |
.wfbtn {
|
30 |
background: #3498db;
|
31 |
background-image: -webkit-linear-gradient(125deg, #3cb0fd 0%, #152f8c 140%);
|
@@ -1691,7 +1695,7 @@ table {
|
|
1691 |
width: 90px;
|
1692 |
}
|
1693 |
th#view {
|
1694 |
-
width:
|
1695 |
}
|
1696 |
}
|
1697 |
@media screen and (min-width: 960px) {
|
26 |
}
|
27 |
}
|
28 |
|
29 |
+
.webappick-info{
|
30 |
+
color: #42a5fa;
|
31 |
+
}
|
32 |
+
|
33 |
.wfbtn {
|
34 |
background: #3498db;
|
35 |
background-image: -webkit-linear-gradient(125deg, #3cb0fd 0%, #152f8c 140%);
|
1695 |
width: 90px;
|
1696 |
}
|
1697 |
th#view {
|
1698 |
+
width: 135px;
|
1699 |
}
|
1700 |
}
|
1701 |
@media screen and (min-width: 960px) {
|
admin/js/woo-feed-admin.js
CHANGED
@@ -224,6 +224,12 @@
|
|
224 |
merchantInfo.find('.spinner').removeClass('is-active');
|
225 |
feedType.disabled(!1);
|
226 |
feedType.trigger('change');
|
|
|
|
|
|
|
|
|
|
|
|
|
227 |
feedType.parent().find('.spinner').removeClass('is-active');
|
228 |
},
|
229 |
|
@@ -823,6 +829,38 @@
|
|
823 |
.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
|
824 |
}
|
825 |
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
826 |
.on('change', '.ftporsftp', function () {
|
827 |
let server = $(this).val(),
|
828 |
status = $('.ssh2_status');
|
@@ -878,11 +916,15 @@
|
|
878 |
feedType.parent().find('.spinner').addClass('is-active');
|
879 |
merchantInfo.find('.merchant-info-section .data').html(''); // remove previous data
|
880 |
// Get Merchant info for selected Provider/Merchant
|
881 |
-
|
882 |
-
|
883 |
|
884 |
if (merchantInfoCache.hasOwnProperty(merchant)) {
|
885 |
feedEditor.renderMerchantInfo(merchantInfo, feedType, merchantInfoCache[merchant]);
|
|
|
|
|
|
|
|
|
|
|
|
|
886 |
} else {
|
887 |
wpAjax.send('woo_feed_get_merchant_info', {
|
888 |
type: 'GET',
|
@@ -893,15 +935,28 @@
|
|
893 |
}
|
894 |
}).then(function (r) {
|
895 |
merchantInfoCache[merchant] = r;
|
896 |
-
feedEditor.renderMerchantInfo(merchantInfo, feedType, r)
|
897 |
// console.log('filter load')
|
898 |
// $('#utm_source').val(templateName)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
899 |
}).fail(helper.ajax_fail);
|
900 |
} // Get FeedForm For Selected Provider/Merchant
|
901 |
|
902 |
|
903 |
if (merchantTemplateCache.hasOwnProperty(merchant)) {
|
904 |
feedEditor.renderMerchantTemplate(feedForm, merchantTemplateCache[merchant]);
|
|
|
|
|
|
|
|
|
|
|
|
|
905 |
} else {
|
906 |
wpAjax.post('get_feed_merchant', {
|
907 |
_ajax_nonce: opts.nonce,
|
@@ -926,6 +981,13 @@
|
|
926 |
if( 'google_product_review' !== merchant) {
|
927 |
$('.wf_attributes option[value="reviewer_name"]').hide();
|
928 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
929 |
}).fail(helper.ajax_fail);
|
930 |
}
|
931 |
})
|
224 |
merchantInfo.find('.spinner').removeClass('is-active');
|
225 |
feedType.disabled(!1);
|
226 |
feedType.trigger('change');
|
227 |
+
|
228 |
+
/**
|
229 |
+
* Triggers after merchant configuration is fetched & loaded
|
230 |
+
* */
|
231 |
+
$(document).trigger('woo_feed_config_loaded');
|
232 |
+
|
233 |
feedType.parent().find('.spinner').removeClass('is-active');
|
234 |
},
|
235 |
|
829 |
.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
|
830 |
}
|
831 |
})
|
832 |
+
.on( 'ready woo_feed_config_loaded', function(){
|
833 |
+
console.log("Ready Provided");
|
834 |
+
if( $('#ftpenabled').val() == 0 ){
|
835 |
+
$('.google-merchant-message').hide('slow');
|
836 |
+
$('.woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select').attr('disabled','disabled');
|
837 |
+
} else {
|
838 |
+
if( $('#provider').val() == 'google' ) {
|
839 |
+
$('.google-merchant-message').show('slow');
|
840 |
+
} else {
|
841 |
+
$('.google-merchant-message').hide('slow');
|
842 |
+
}
|
843 |
+
$('.woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select').removeAttr('disabled');
|
844 |
+
}
|
845 |
+
|
846 |
+
$('#ftpenabled').on('change', function(){
|
847 |
+
if( $('#ftpenabled').val() == 0 ){
|
848 |
+
$('.google-merchant-message').hide('slow');
|
849 |
+
$('.woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select').attr('disabled','disabled');
|
850 |
+
} else {
|
851 |
+
|
852 |
+
$('.woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select').removeAttr('disabled');
|
853 |
+
|
854 |
+
// Google merchant specific message
|
855 |
+
if( $('#provider').val() == 'google' ){
|
856 |
+
$('.google-merchant-message').show('slow');
|
857 |
+
} else {
|
858 |
+
$('.google-merchant-message').hide('slow');
|
859 |
+
}
|
860 |
+
|
861 |
+
}
|
862 |
+
});
|
863 |
+
})
|
864 |
.on('change', '.ftporsftp', function () {
|
865 |
let server = $(this).val(),
|
866 |
status = $('.ssh2_status');
|
916 |
feedType.parent().find('.spinner').addClass('is-active');
|
917 |
merchantInfo.find('.merchant-info-section .data').html(''); // remove previous data
|
918 |
// Get Merchant info for selected Provider/Merchant
|
|
|
|
|
919 |
|
920 |
if (merchantInfoCache.hasOwnProperty(merchant)) {
|
921 |
feedEditor.renderMerchantInfo(merchantInfo, feedType, merchantInfoCache[merchant]);
|
922 |
+
|
923 |
+
/**
|
924 |
+
* Triggers after merchant configuration is fetched & loaded
|
925 |
+
* */
|
926 |
+
$(document).trigger('woo_feed_config_loaded');
|
927 |
+
|
928 |
} else {
|
929 |
wpAjax.send('woo_feed_get_merchant_info', {
|
930 |
type: 'GET',
|
935 |
}
|
936 |
}).then(function (r) {
|
937 |
merchantInfoCache[merchant] = r;
|
938 |
+
feedEditor.renderMerchantInfo(merchantInfo, feedType, r)
|
939 |
// console.log('filter load')
|
940 |
// $('#utm_source').val(templateName)
|
941 |
+
}).then(function(){
|
942 |
+
|
943 |
+
/**
|
944 |
+
* Triggers after merchant configuration is fetched & loaded
|
945 |
+
* */
|
946 |
+
$(document).trigger('woo_feed_config_loaded');
|
947 |
+
|
948 |
}).fail(helper.ajax_fail);
|
949 |
} // Get FeedForm For Selected Provider/Merchant
|
950 |
|
951 |
|
952 |
if (merchantTemplateCache.hasOwnProperty(merchant)) {
|
953 |
feedEditor.renderMerchantTemplate(feedForm, merchantTemplateCache[merchant]);
|
954 |
+
|
955 |
+
/**
|
956 |
+
* Triggers after merchant configuration is fetched & loaded
|
957 |
+
* */
|
958 |
+
$(document).trigger('woo_feed_config_loaded');
|
959 |
+
|
960 |
} else {
|
961 |
wpAjax.post('get_feed_merchant', {
|
962 |
_ajax_nonce: opts.nonce,
|
981 |
if( 'google_product_review' !== merchant) {
|
982 |
$('.wf_attributes option[value="reviewer_name"]').hide();
|
983 |
}
|
984 |
+
}).then(function(){
|
985 |
+
|
986 |
+
/**
|
987 |
+
* Triggers after merchant configuration is fetched & loaded
|
988 |
+
* */
|
989 |
+
$(document).trigger('woo_feed_config_loaded');
|
990 |
+
|
991 |
}).fail(helper.ajax_fail);
|
992 |
}
|
993 |
})
|
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 n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}!function(s,o,r,c,l){s.fn.disabled=function(n){return s(this).each(function(){var e=s(this),t="disabled";void 0!==e.prop(t)?e.prop(t,void 0===n||!0===n):!0===n?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(){n=s(".toClipboard"),!ClipboardJS.isSupported()||/iPhone|iPad/i.test(navigator.userAgent)?n.find("img").hide(0):(n.each(function(){s(this).on("mouseleave",e).on("blur",e)}),new ClipboardJS(".toClipboard").on("error",function(e){var t,n;a(e.trigger,(t=e.action,n="cut"===t?"X":"C",/iPhone|iPad/i.test(navigator.userAgent)?"No support :(":/Mac/i.test(navigator.userAgent)?"Press ⌘-"+n+" to "+t:"Press Ctrl-"+n+" to "+t))}).on("success",function(e){a(e.trigger,"Copied")}))}var n,d,f={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")?l.ajax.error+"\n"+e.statusText+" ("+e.status+")":e)},sortable:function(e,n,a,o){return(e||s(".sorted_table")).each(function(){var e=s(this),t=e.find("tbody > tr:eq(0) > td").length||a||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,n,a){e.removeClass(t.group.options.draggedClass).removeAttr("style"),s("body").removeClass(t.group.options.bodyClass),o&&"function"==typeof o&&o(e,t,n,a)}},n))})},selectize:function(e,t){return(e||s("select.selectize")).not(".selectized").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:f.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(n,e){s(e).find("[name]").each(function(e,t){s(t).attr("name",s(t).attr("name").replace(/(\[\d\])/g,"[".concat(n,"]")))})})},common:function(){f.sortable(s(".sorted_table"),{},9,f.reindex_config_table),f.selectize(),f.fancySelect(s(".outputType"))}},_={form:null,init:function(){this.form=s(".generateFeed"),this.form.length&&(f.common(),s(r).trigger(new jQuery.Event("feedEditor.init",{target:this.form})))},renderMerchantInfo:function(n,a,o){function e(e){var t;o.hasOwnProperty(e)&&(n.find(".merchant-info-section."+e+" .data").html(o[e]),"feed_file_type"===e&&((t=o[e].split(",").map(function(e){return e.trim().toLowerCase()}).filter(function(e){return""!==e&&e!==l.na.toLowerCase()})).length?(a.find("option").removeAttr("selected").each(function(){var e=s(this);e.val()&&!f.in_array(e.val(),t)?e.disabled(!0):e.disabled(!1)}),1===t.length&&a.find('option[value="'+t[0]+'"]').attr("selected","selected")):a.find("option").disabled(!1)))}for(var t in o)e(t);n.find(".spinner").removeClass("is-active"),a.disabled(!1),a.trigger("change"),a.parent().find(".spinner").removeClass("is-active")},renderMerchantTemplate:function(n,a){function e(t){if(a.hasOwnProperty(t))if("tabs"===t)n.html(a[t]);else{var e=s('[name="'+t+'"]');e.length&&e.each(function(){var e=s(this);e.is("select")?e.find('[value="'+a[t]+'"]').prop("selected",!0):(e.is("[type=checkbox]")||e.is("[type=radio]"))&&e.val()===a[t]?e.prop("checked",!0):e.val(a[t])}).trigger("change")}}for(var t in a)e(t);_.init()}},u=[],p=[],h=function(){function e(){_classCallCheck(this,e),this._feed=l.generator.feed,this._limit=l.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=l.generator.regenerate,o.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 n=this;""!==this._feed&&this._regenerate&&!1===o.isRegenerating&&this.generate();var e=o.location.search;return"webappick-manage-feeds"===new URLSearchParams(e).get("page")&&s("body").addClass("woo-import-popup-body"),s(r).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&&c.post("woo_feed_hide_promotion",{_ajax_nonce:l.nonce,condition:t}).then(function(e){n._log(e)}).fail(function(e){n._log(e),n._updateProgressStatus(e.message),n._color="red"})}),s(r).on("click",".wpf_regenerate",function(e){e.preventDefault(),n._current_btn=s(this),n._current_btn.hasClass("disabled")||!0===o.isRegenerating||(n._feed=n._current_btn.attr("id").replace("wf_feed_","wf_config"),""!==n._feed&&n.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",l.regenerate).attr("title",l.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,n=this;o.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,n._log({response:e}),e.success?(n._log("Total ".concat(e.total," Products found.")),n._product_ids=e.product,n._total_batch=t._product_ids.length,n._current_batch=0,n._progress_per_batch=(90-t._progress)/t._total_batch,n._process_batch(),n._updateProgressStatus("Processing Products...")):n._updateProgressStatus(e.data.message)}).fail(function(e){n._log(e),n._updateProgressStatus(e.message),n._color="red",setTimeout(function(){n._stopProgressBar(),n._unblock_button()},1500)})}},{key:"_get_product_ids",value:function(){return this._progress=5,c.post("get_product_information",{_ajax_nonce:l.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),c.post("make_batch_feed",{_ajax_nonce:l.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"),c.post("save_feed_file",{_ajax_nonce:l.nonce,feed:this._feed}).then(function(e){t._log(e),t._progress=100,t._refresh&&(o.location.href="".concat(l.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 l.wpf_debug&&console.log(e),this}},{key:"_progressBarActive",value:function(e){var t=0<arguments.length&&void 0!==e?e:0,n=this;return this._toggleProgressBar(!0),this._timer=setInterval(function(){n._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").text(e),this}},{key:"_updateProgressBar",value:function(){var e=s(".feed-progress-percentage"),t=s(".feed-progress-bar-fill"),n="".concat(Math.round(this._progress),"%");t.css({width:n}),e.text(n)}}]),e}();o.wf={helper:f,feedEditor:_,generator:h},s(o).on("load",function(){null!==s(location).attr("href").match(/webappick.*feed/g)&&s("#wpbody-content").addClass("woofeed-body-content");var e=o.location.search;new URLSearchParams(e).get("action");t(),postboxes.add_postbox_toggles(pagenow),(new h).init(),""!==l.generator.feed&&l.generator.regenerate,_.init(),f.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(r).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),f.fancySelect(s(".outputType"))}).on("click",".single-feed-delete",function(e){e.preventDefault(),confirm(l.form.del_confirm)&&(o.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(),n=s(".woo-feed-cache-loader");n.show(),c.post("clear_cache_data",{_ajax_clean_nonce:t}).then(function(e){e.success&&(n.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"),n=s("#woo-feed-status-area");t.val("Copied"),n.css("visibility","visible"),n.select(),r.execCommand("copy")}).on("change",".wf_attr.wf_attributes",function(e){e.preventDefault(),s(".fancy-picker-picked").trigger("click");var t,n,a=s(this).val(),o=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");n=["price","current_price","sale_price","price_with_tax","current_price_with_tax","sale_price_with_tax","shipping_cost"].includes(a)?(t="for_price","Price"):""!==a&&-1!==a.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){n===s(this).text()&&(s(this).addClass("selected"),i.text(n),o.find("option").text(n),o.find("option").val(s(this).data("value")))})}).on("click","#doaction, #doaction2",function(){return confirm(l.form.del_confirm_multi)}).on("change",".dType",function(){var e=s(this),t=e.val(),n=e.closest("tr");"pattern"===t?(n.find(".value_attribute").hide(),n.find(".value_pattern").show()):"attribute"===t?(n.find(".value_attribute").show(),n.find(".value_pattern").hide()):"remove"===t&&(n.find(".value_attribute").hide(),n.find(".value_pattern").hide())}).on("click",".delRow",function(e){e.preventDefault(),s(this).closest("tr").remove(),f.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(l.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?l.form.save:l.form.generate,"</b>"))}).on("change",".ftporsftp",function(){var e=s(this).val(),t=s(".ssh2_status");"sftp"===e?(t.show().css("color","dodgerblue").text(l.form.sftp_checking),c.post("get_ssh2_status",{_ajax_nonce:l.nonce,server:e}).then(function(e){"exists"===e?(t.css("color","#2CC185").text(l.form.sftp_available),setTimeout(function(){t.hide()},1500)):t.show().css("color","red").text(l.form.sftp_warning)}).fail(function(e){t.hide(),f.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(),n=s(this).find(":selected").text(),a=s("#filename").val(),o=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> '+l.form.loading_tmpl+"</h3>"),i.find(".spinner").addClass("is-active"),o.disabled(!0),o.parent().find(".spinner").addClass("is-active"),i.find(".merchant-info-section .data").html(""),u.hasOwnProperty(t)?_.renderMerchantInfo(i,o,u[t]):c.send("woo_feed_get_merchant_info",{type:"GET",data:{nonce:l.nonce,provider:t,templateName:n}}).then(function(e){u[t]=e,_.renderMerchantInfo(i,o,e)}).fail(f.ajax_fail),p.hasOwnProperty(t)?_.renderMerchantTemplate(r,p[t]):c.post("get_feed_merchant",{_ajax_nonce:l.nonce,merchant:t}).then(function(e){p[t]=e,_.renderMerchantTemplate(r,e),s("#utm_source").val(n),s("#utm_campaign").val(a),"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()}).fail(f.ajax_fail)}).on("change",".woo_feed_status_input",function(){var e=s(this);c.post("update_feed_status",{_ajax_nonce:l.nonce,feedName:e.val(),status:e[0].checked?1:0})}),s(r).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(),n=e.closest("tr");"pattern"===t?(n.find(".wf_attr").hide(),n.find(".wf_attr").val(""),n.find(".wf_default").show()):(n.find(".wf_attr").show(),n.find(".wf_default").hide(),n.find(".wf_default").val(""))}).on("change",".wf_mattributes, .attr_type",function(){var e=s(this).closest("tr"),t=e.find(".wf_mattributes"),n=e.find(".attr_type"),a=e.find("td:eq(4)"),o=s("#provider").val();if(l.form.google_category.hasOwnProperty(t.val())&&"pattern"===n.val()&&f.in_array(o,l.form.google_category[t.val()])){if(0===a.find("select.selectize").length){a.find("input.wf_default").remove(),a.append('<span class="wf_default wf_attributes"><select name="default[]" class="selectize"></select></span>'),a.append('<span style="font-size:x-small;"><a style="color: red" href="http://webappick.helpscoutdocs.com/article/19-how-to-map-store-category-with-merchant-category" target="_blank">'.concat(l.learn_more,"</a></span>")),d||a.append('<span class="spinner is-active" style="margin: 0;"></span>');var r=a.find(".wf_attributes select");f.selectize(r,{preload:!0,placeholder:l.form.select_category,load:function(e,t){d?t(d):c.send("get_google_categories",{type:"GET",data:{_ajax_nonce:l.nonce,action:"get_google_categories",provider:o}}).then(function(e){t(d=e),a.find(".spinner").remove()}).fail(f.ajax_fail)}})}}else"current_category"!==t.val()&&0===a.find("input.wf_default").length&&(a.find("span").remove(),a.append('<input autocomplete="off" class="wf_default wf_attributes" type="text" name="default[]" value="">'),"pattern"!==n.val()&&a.find("input.wf_default").hide())}).on("change","#feedType,#provider",function(e){var t=s("#feedType").val(),n=s("#provider").val(),a=s(".itemWrapper"),o=s(".wf_csvtxt");""!==t&&f.in_array(n,l.form.item_wrapper_hidden)&&a.hide(),"feedType"===e.target.id&&("csv"===t||"txt"===t||"tsv"===t?(a.hide(),o.show(),"tsv"===t?s("#delimiter option:last").prop("selected","selected"):"csv"===t&&s("#delimiter option:first").prop("selected","selected")):"xml"===t&&(a.show(),o.hide()))}).trigger("change");var a=function(){function a(e,t,n){_classCallCheck(this,a),this.productCustomFields(e,t,n)}return _createClass(a,[{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(e,t,n){var a=this,o=1<arguments.length&&void 0!==t&&t,r=2<arguments.length?n:void 0,i={action:"woo_feed_custom_fields_status_change",nonce:wpf_ajax_obj.ajax.nonce,field:e,status:o,isTaxonomy:r};s.ajax({method:"POST",url:wpf_ajax_obj.wpf_ajax_url,data:i,success:function(e){e.success?a.cacheClear():console.log(e)}})}}]),a}();s(r).on("click",'.woofeed-custom-fields [id*="-switcher"]',function(){var e=s(this).attr("id").split("-")[0],t=s(this).data("taxonomy"),n=s(this).prop("checked");new a(e,n,t)}),s(r).ready(function(){var e=s(".wapk-feed-buy-now-container");e.position();s(o).scroll(function(){s(o).scrollTop()<=5e3?e.addClass("fixed"):e.removeClass("fixed")})})}),s(r).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()}),s(r).on("keyup","#filename",function(e){var t=s("#filename").val();s("#utm_campaign").val(t)})}(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 n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}!function(s,a,c,l,d){s.fn.disabled=function(n){return s(this).each(function(){var e=s(this),t="disabled";void 0!==e.prop(t)?e.prop(t,void 0===n||!0===n):!0===n?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 o(e,t){s(e).addClass("tooltipped tooltipped-s").attr("aria-label",t)}function r(e,t){return s.extend(!0,{},e,t)}function t(){n=s(".toClipboard"),!ClipboardJS.isSupported()||/iPhone|iPad/i.test(navigator.userAgent)?n.find("img").hide(0):(n.each(function(){s(this).on("mouseleave",e).on("blur",e)}),new ClipboardJS(".toClipboard").on("error",function(e){var t,n;o(e.trigger,(t=e.action,n="cut"===t?"X":"C",/iPhone|iPad/i.test(navigator.userAgent)?"No support :(":/Mac/i.test(navigator.userAgent)?"Press ⌘-"+n+" to "+t:"Press Ctrl-"+n+" to "+t))}).on("success",function(e){o(e.trigger,"Copied")}))}var n,i,f={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,n,o,a){return(e||s(".sorted_table")).each(function(){var e=s(this),t=e.find("tbody > tr:eq(0) > td").length||o||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,n,o){e.removeClass(t.group.options.draggedClass).removeAttr("style"),s("body").removeClass(t.group.options.bodyClass),a&&"function"==typeof a&&a(e,t,n,o)}},n))})},selectize:function(e,t){return(e||s("select.selectize")).not(".selectized").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:f.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(n,e){s(e).find("[name]").each(function(e,t){s(t).attr("name",s(t).attr("name").replace(/(\[\d\])/g,"[".concat(n,"]")))})})},common:function(){f.sortable(s(".sorted_table"),{},9,f.reindex_config_table),f.selectize(),f.fancySelect(s(".outputType"))}},_={form:null,init:function(){this.form=s(".generateFeed"),this.form.length&&(f.common(),s(c).trigger(new jQuery.Event("feedEditor.init",{target:this.form})))},renderMerchantInfo:function(n,o,a){function e(e){var t;a.hasOwnProperty(e)&&(n.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?(o.find("option").removeAttr("selected").each(function(){var e=s(this);e.val()&&!f.in_array(e.val(),t)?e.disabled(!0):e.disabled(!1)}),1===t.length&&o.find('option[value="'+t[0]+'"]').attr("selected","selected")):o.find("option").disabled(!1)))}for(var t in a)e(t);n.find(".spinner").removeClass("is-active"),o.disabled(!1),o.trigger("change"),s(c).trigger("woo_feed_config_loaded"),o.parent().find(".spinner").removeClass("is-active")},renderMerchantTemplate:function(n,o){function e(t){if(o.hasOwnProperty(t))if("tabs"===t)n.html(o[t]);else{var e=s('[name="'+t+'"]');e.length&&e.each(function(){var e=s(this);e.is("select")?e.find('[value="'+o[t]+'"]').prop("selected",!0):(e.is("[type=checkbox]")||e.is("[type=radio]"))&&e.val()===o[t]?e.prop("checked",!0):e.val(o[t])}).trigger("change")}}for(var t in o)e(t);_.init()}},u=[],p=[],h=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,a.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 n=this;""!==this._feed&&this._regenerate&&!1===a.isRegenerating&&this.generate();var e=a.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){n._log(e)}).fail(function(e){n._log(e),n._updateProgressStatus(e.message),n._color="red"})}),s(c).on("click",".wpf_regenerate",function(e){e.preventDefault(),n._current_btn=s(this),n._current_btn.hasClass("disabled")||!0===a.isRegenerating||(n._feed=n._current_btn.attr("id").replace("wf_feed_","wf_config"),""!==n._feed&&n.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,n=this;a.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,n._log({response:e}),e.success?(n._log("Total ".concat(e.total," Products found.")),n._product_ids=e.product,n._total_batch=t._product_ids.length,n._current_batch=0,n._progress_per_batch=(90-t._progress)/t._total_batch,n._process_batch(),n._updateProgressStatus("Processing Products...")):n._updateProgressStatus(e.data.message)}).fail(function(e){n._log(e),n._updateProgressStatus(e.message),n._color="red",setTimeout(function(){n._stopProgressBar(),n._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&&(a.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,n=this;return this._toggleProgressBar(!0),this._timer=setInterval(function(){n._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").text(e),this}},{key:"_updateProgressBar",value:function(){var e=s(".feed-progress-percentage"),t=s(".feed-progress-bar-fill"),n="".concat(Math.round(this._progress),"%");t.css({width:n}),e.text(n)}}]),e}();a.wf={helper:f,feedEditor:_,generator:h},s(a).on("load",function(){null!==s(location).attr("href").match(/webappick.*feed/g)&&s("#wpbody-content").addClass("woofeed-body-content");var e=a.location.search;new URLSearchParams(e).get("action");t(),postboxes.add_postbox_toggles(pagenow),(new h).init(),""!==d.generator.feed&&d.generator.regenerate,_.init(),f.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("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),f.fancySelect(s(".outputType"))}).on("click",".single-feed-delete",function(e){e.preventDefault(),confirm(d.form.del_confirm)&&(a.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(),n=s(".woo-feed-cache-loader");n.show(),l.post("clear_cache_data",{_ajax_clean_nonce:t}).then(function(e){e.success&&(n.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"),n=s("#woo-feed-status-area");t.val("Copied"),n.css("visibility","visible"),n.select(),c.execCommand("copy")}).on("change",".wf_attr.wf_attributes",function(e){e.preventDefault(),s(".fancy-picker-picked").trigger("click");var t,n,o=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");n=["price","current_price","sale_price","price_with_tax","current_price_with_tax","sale_price_with_tax","shipping_cost"].includes(o)?(t="for_price","Price"):""!==o&&-1!==o.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){n===s(this).text()&&(s(this).addClass("selected"),i.text(n),a.find("option").text(n),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(),n=e.closest("tr");"pattern"===t?(n.find(".value_attribute").hide(),n.find(".value_pattern").show()):"attribute"===t?(n.find(".value_attribute").show(),n.find(".value_pattern").hide()):"remove"===t&&(n.find(".value_attribute").hide(),n.find(".value_pattern").hide())}).on("click",".delRow",function(e){e.preventDefault(),s(this).closest("tr").remove(),f.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(){console.log("Ready Provided"),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(),f.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(),n=s(this).find(":selected").text(),o=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(""),u.hasOwnProperty(t)?(_.renderMerchantInfo(i,a,u[t]),s(c).trigger("woo_feed_config_loaded")):l.send("woo_feed_get_merchant_info",{type:"GET",data:{nonce:d.nonce,provider:t,templateName:n}}).then(function(e){u[t]=e,_.renderMerchantInfo(i,a,e)}).then(function(){s(c).trigger("woo_feed_config_loaded")}).fail(f.ajax_fail),p.hasOwnProperty(t)?(_.renderMerchantTemplate(r,p[t]),s(c).trigger("woo_feed_config_loaded")):l.post("get_feed_merchant",{_ajax_nonce:d.nonce,merchant:t}).then(function(e){p[t]=e,_.renderMerchantTemplate(r,e),s("#utm_source").val(n),s("#utm_campaign").val(o),"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(f.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(),n=e.closest("tr");"pattern"===t?(n.find(".wf_attr").hide(),n.find(".wf_attr").val(""),n.find(".wf_default").show()):(n.find(".wf_attr").show(),n.find(".wf_default").hide(),n.find(".wf_default").val(""))}).on("change",".wf_mattributes, .attr_type",function(){var e=s(this).closest("tr"),t=e.find(".wf_mattributes"),n=e.find(".attr_type"),o=e.find("td:eq(4)"),a=s("#provider").val();if(d.form.google_category.hasOwnProperty(t.val())&&"pattern"===n.val()&&f.in_array(a,d.form.google_category[t.val()])){if(0===o.find("select.selectize").length){o.find("input.wf_default").remove(),o.append('<span class="wf_default wf_attributes"><select name="default[]" class="selectize"></select></span>'),o.append('<span style="font-size:x-small;"><a style="color: red" href="http://webappick.helpscoutdocs.com/article/19-how-to-map-store-category-with-merchant-category" target="_blank">'.concat(d.learn_more,"</a></span>")),i||o.append('<span class="spinner is-active" style="margin: 0;"></span>');var r=o.find(".wf_attributes select");f.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),o.find(".spinner").remove()}).fail(f.ajax_fail)}})}}else"current_category"!==t.val()&&0===o.find("input.wf_default").length&&(o.find("span").remove(),o.append('<input autocomplete="off" class="wf_default wf_attributes" type="text" name="default[]" value="">'),"pattern"!==n.val()&&o.find("input.wf_default").hide())}).on("change","#feedType,#provider",function(e){var t=s("#feedType").val(),n=s("#provider").val(),o=s(".itemWrapper"),a=s(".wf_csvtxt");""!==t&&f.in_array(n,d.form.item_wrapper_hidden)&&o.hide(),"feedType"===e.target.id&&("csv"===t||"txt"===t||"tsv"===t?(o.hide(),a.show(),"tsv"===t?s("#delimiter option:last").prop("selected","selected"):"csv"===t&&s("#delimiter option:first").prop("selected","selected")):"xml"===t&&(o.show(),a.hide()))}).trigger("change");var o=function(){function o(e,t,n){_classCallCheck(this,o),this.productCustomFields(e,t,n)}return _createClass(o,[{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(e,t,n){var o=this,a=1<arguments.length&&void 0!==t&&t,r=2<arguments.length?n:void 0,i={action:"woo_feed_custom_fields_status_change",nonce:wpf_ajax_obj.ajax.nonce,field:e,status:a,isTaxonomy:r};s.ajax({method:"POST",url:wpf_ajax_obj.wpf_ajax_url,data:i,success:function(e){e.success?o.cacheClear():console.log(e)}})}}]),o}();s(c).on("click",'.woofeed-custom-fields [id*="-switcher"]',function(){var e=s(this).attr("id").split("-")[0],t=s(this).data("taxonomy"),n=s(this).prop("checked");new o(e,n,t)}),s(c).ready(function(){var e=s(".wapk-feed-buy-now-container");e.position();s(a).scroll(function(){s(a).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()}),s(c).on("keyup","#filename",function(e){var t=s("#filename").val();s("#utm_campaign").val(t)})}(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","_createClass","Constructor","protoProps","staticProps","prototype","window","wpAjax","self","prop","showTooltip","$","hasClass","currentTarget","clearTooltip","removeClass","actionMsg","className","match","index","action","removeAttr","actionKey","elem","addClass","attr","msg","extend","_default","_args","clip","$copyBtn","feedGenerator","left","event","trigger","test","navigator","on","console","googleCategories","in_array","needle","haystack","sortable","escape","data","text","ajax_fail","column_count","find","warn","wf_sortable","selectize_render_item","e","hasOwnProperty","opts","ajax","error","statusText","status","el","config","column","_onDrop","each","this","length","selectize","itemPath","create","concat","plugins","$item","container","containerSelector","group","options","bodyClass","itemSelector","handle","onDrop","fancySelect","maxItemShow","split","map","s","trim","helper","render","item","replace","x","form","merchantInfo","document","jQuery","k","init","renderMerchantInfo","opt","feedType","r","types","html","t","toLowerCase","na","disabled","val","_loop2","feedForm","contentSettings","renderMerchantTemplate","feedEditor","is","merchantInfoCache","tooltip","css","top","isRegenerating","_feed","_current_btn","feed","_limit","generator","limit","_progress","_product_ids","_progress_per_batch","_refresh","_all_btn","generate","condition","then","_current_btn_label","response","_color","preventDefault","parent","hide","_ajax_nonce","_log","_updateProgressStatus","message","key","regenerate","_block_button","value","_this","product","setTimeout","_stopProgressBar","_process_batch","_current_batch","_total_batch","post","_save_feed_file","fail","_resetProgressBar","_unblock_button","refreshInterval","arguments","undefined","clearInterval","_timer","_updateProgressBar","update","table","show","width","bar","wf","current_page_url_query","postboxes","location","setInterval","URLSearchParams","pagenow","template","common","hover","title","appendTo","userAgent","merchantTemplateCache","remove","ClipboardJS","clipboard","slideToggle","loader","tbody","reload","nonce","status_area","select","execCommand","button","fancyOption","fancyDataPicker","selectIf","price_attributes","selectKey","percentage","outputSelect","parents","includes","current_attribute_value","indexOf","del_confirm_multi","row","closest","reindex_config_table","type","_ajax_clean_nonce","server","validate","save","sftp_checking","sftp_available","templateName","merchant","loading_tmpl","name","checked","feedName","outOfStockVisibilityRow","valueColumn","provider","attribute","preload","load","cb","query","send","itemWrapper","wf_csv_txt","WooFeedCustomFields","productCustomFields","url","field","isTaxonomy","select_category","ready","URL","position","scroll","scrollTop"],"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\t\"use strict\";\n\t/**\n\t * All of the code for your admin-facing JavaScript source\n\t * should reside in this file.\n\t *\n\t * Note: It has been assumed you will write jQuery code here, so the\n\t * $ function reference has been prepared for usage within the scope\n\t * of this function.\n\t *\n\t * This enables you to define handlers, for when the DOM is ready:\n\t */\n\n\t/**\n\t * disable element utility\n\t *\n\t * @since 3.1.9\n\t *\n\t * @param {*} status\n\t * @returns {jQuery|HTMLElement}\n\t */\n\t$.fn.disabled = function(status) {\n\t\t$(this).each(function() {\n\t\t\tlet self = $(this),\n\t\t\t\tprop = 'disabled';\n\n\t\t\tif (typeof self.prop(prop) !== 'undefined') {\n\t\t\t\tself.prop(prop, status === void 0 || status === true);\n\t\t\t} else {\n\t\t\t\t!0 === status ? self.addClass(prop) : self.removeClass(prop);\n\t\t\t}\n\t\t});\n\t\treturn self; // method chaining\n\t};\n\t\n\t/**\n\t * Check if a HTMLElement or jQuery is disabled\n\t */\n\t$.fn.isDisabled = function() {\n\t\tlet self = $(this),\n\t\t\tprop = 'disabled';\n\t\treturn typeof self.prop(prop) !== 'undefined' ? self.prop(prop) : self.hasClass(prop);\n\t};\n\t\n\t/**\n\t * Clear Tooltip for clip board js\n\t * @param {Object} event\n\t */\n\tconst clearTooltip = (event) => {\n\t\t$(event.currentTarget).removeClass( (index, className) => (className.match(/\\btooltipped-\\S+/g) || []).join(' ') ).removeClass('tooltipped').removeAttr('aria-label');\n\t};\n\n\tconst showTooltip = (elem, msg) => {\n\t\t$(elem).addClass('tooltipped tooltipped-s').attr('aria-label', msg);\n\t};\n\n\tconst fallbackMessage = (action) =>{\n\t\tlet actionMsg,\n\t\t\tactionKey = action === 'cut' ? 'X' : 'C';\n\n\t\tif (/iPhone|iPad/i.test(navigator.userAgent)) {\n\t\t\tactionMsg = 'No support :(';\n\t\t} else if (/Mac/i.test(navigator.userAgent)) {\n\t\t\tactionMsg = 'Press ⌘-' + actionKey + ' to ' + action;\n\t\t} else {\n\t\t\tactionMsg = 'Press Ctrl-' + actionKey + ' to ' + action;\n\t\t}\n\n\t\treturn actionMsg;\n\t};\n\t\n\t/**\n\t * Alias of jQuery.extend()\n\t * @param {Object} _default\n\t * @param {Object} _args\n\t */\n\tconst extend = (_default, _args) => $.extend(true, {}, _default, _args);\n\t\n\tlet $copyBtn,\n\t\tclipboard,\n\t\tgoogleCategories,\n\t\thelper = {\n\t\t\tin_array: (needle, haystack) => {\n\t\t\t\ttry {\n\t\t\t\t\treturn haystack.indexOf(needle) !== -1;\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tselectize_render_item: (data, escape) => `<div class=\"item wapk-selectize-item\">${ escape(data.text)}</div>`, // phpcs:ignore WordPressVIPMinimum.JS.StringConcat.Found,\n\t\t\tajax_fail: e => {\n\t\t\t\tconsole.warn(e);\n\t\t\t\talert(e.hasOwnProperty('statusText') && e.hasOwnProperty('status') ? opts.ajax.error + '\\n' + e.statusText + ' (' + e.status + ')' : e);\n\t\t\t},\n\t\t\t/**\n\t\t\t * Initialize Sortable\n\t\t\t * @param {jQuery|HTMLElement} el\n\t\t\t * @param {object} config\n\t\t\t * @param {int|boolean} column\n\t\t\t * @param {function} onDrop\n\t\t\t * @return {jQuery|HTMLElement}\n\t\t\t */\n\t\t\tsortable: (el, config, column, onDrop) => {\n\t\t\t\treturn (el || $('.sorted_table')).each(function() {\n\t\t\t\t\tlet self = $(this),\n\t\t\t\t\t\tcolumn_count = self.find('tbody > tr:eq(0) > td').length || column || 9;\n\t\t\t\t\tself.wf_sortable(extend({\n\t\t\t\t\t\tcontainerSelector: 'table',\n\t\t\t\t\t\titemPath: '> tbody',\n\t\t\t\t\t\titemSelector: 'tr',\n\t\t\t\t\t\thandle: 'i.wf_sortedtable',\n\t\t\t\t\t\tplaceholder: `<tr class=\"placeholder\"><td colspan=\"${column_count}\"></td></tr>`,\n\t\t\t\t\t\tonDrop: ($item, container, _super, event) => {\n\t\t\t\t\t\t\t$item.removeClass(container.group.options.draggedClass).removeAttr('style');\n\t\t\t\t\t\t\t$(\"body\").removeClass(container.group.options.bodyClass);\n\t\t\t\t\t\t\tif ( onDrop && 'function' === typeof( onDrop ) ) {\n\t\t\t\t\t\t\t\tonDrop( $item, container, _super, event );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t}, config));\n\t\t\t\t});\n\t\t\t},\n\t\t\tselectize: (el, config) => {\n\t\t\t\treturn (el || $('select.selectize')).not('.selectized').each(function() {\n\t\t\t\t\tlet self = $(this);\n\t\t\t\t\tself.selectize(extend({\n\t\t\t\t\t\tcreate: self.data('create') || false,\n\t\t\t\t\t\tplugins: self.data('plugins') ? self.data('plugins').split(',').map(function(s) {\n\t\t\t\t\t\t\treturn s.trim();\n\t\t\t\t\t\t}) : [],\n\t\t\t\t\t\t//['remove_button'],\n\t\t\t\t\t\trender: {\n\t\t\t\t\t\t\titem: helper.selectize_render_item\n\t\t\t\t\t\t}\n\t\t\t\t\t}, config));\n\t\t\t\t});\n\t\t\t},\n\t\t\tfancySelect: (el, config) => {\n\t\t\t\treturn (el || $('select.fancySelect')).not('.FancySelectInit').each(function() {\n\t\t\t\t\tlet self = $(this);\n\t\t\t\t\tself.fancySelect(extend({\n\t\t\t\t\t\tmaxItemShow: 3\n\t\t\t\t\t}, config));\n\t\t\t\t});\n\t\t\t},\n\t\t\treindex_config_table: () => {\n\t\t\t\t$('#table-1').find('tbody tr').each( ( x, el ) => {\n\t\t\t\t\t$(el).find('[name]').each( ( x1, el ) => {\n\t\t\t\t\t\t$(el).attr('name', $(el).attr('name').replace(/(\\[\\d\\])/g, `[${x}]`));\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tcommon: () => {\n\t\t\t\thelper.sortable( $('.sorted_table'), {}, 9, helper.reindex_config_table );\n\t\t\t\thelper.selectize();\n\t\t\t\thelper.fancySelect($('.outputType'));\n\t\t\t}\n\t\t},\n\t\t// helper functions\n\t\tfeedEditor = {\n\t\t\t/**\n\t\t\t * The Editor Form Elem.\n\t\t\t * @type {jQuery|HTMLElement}\n\t\t\t */\n\t\t\tform: null,\n\n\t\t\t/**\n\t\t\t * Initialize The Feed Editor {Tabs...}\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tinit: function () {\n\t\t\t\tlet self = this;\n\t\t\t\tself.form = $('.generateFeed');\n\t\t\t\tif (!self.form.length) return;\n\t\t\t\thelper.common();\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\t$(document).trigger(new jQuery.Event('feedEditor.init', {\n\t\t\t\t\ttarget: this.form\n\t\t\t\t}));\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Render Merchant info ajax response and handle allowed feed type for selected merchant\n\t\t\t * @param {jQuery|HTMLElement} merchantInfo jQuery dom object\n\t\t\t * @param {jQuery|HTMLElement} feedType jQuery dom object\n\t\t\t * @param {Object} r ajax response object\n\t\t\t */\n\t\t\trenderMerchantInfo: function (merchantInfo, feedType, r) {\n\t\t\t\tfor (let k in r) {\n\t\t\t\t\tif (r.hasOwnProperty(k)) {\n\t\t\t\t\t\tmerchantInfo.find('.merchant-info-section.' + k + ' .data').html(r[k]); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html\n\n\t\t\t\t\t\tif ('feed_file_type' === k) {\n\t\t\t\t\t\t\t(function() {\n\t\t\t\t\t\t\t\tlet types = r[k].split(\",\").map(function(t) {\n\t\t\t\t\t\t\t\t\treturn t.trim().toLowerCase();\n\t\t\t\t\t\t\t\t}).filter(function(t) {\n\t\t\t\t\t\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\t\t\t\t\t\treturn t !== '' && t !== opts.na.toLowerCase();\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (types.length) {\n\t\t\t\t\t\t\t\t\tfeedType.find('option').removeAttr('selected').each(function() {\n\t\t\t\t\t\t\t\t\t\tlet opt = $(this);\n\t\t\t\t\t\t\t\t\t\topt.val() && !helper.in_array(opt.val(), types) ? opt.disabled(!0) : opt.disabled(!1);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tif (types.length === 1) feedType.find('option[value=\"' + types[0] + '\"]').attr('selected', 'selected');\n\t\t\t\t\t\t\t\t} else feedType.find('option').disabled(!1);\n\t\t\t\t\t\t\t})();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tmerchantInfo.find('.spinner').removeClass('is-active');\n\t\t\t\tfeedType.disabled(!1);\n\t\t\t\tfeedType.trigger('change');\n\t\t\t\tfeedType.parent().find('.spinner').removeClass('is-active');\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Render Feed Template Tabs and settings while creating new feed.\n\t\t\t * @param {jQuery|HTMLElement} feedForm feed from query dom object\n\t\t\t * @param {object} r merchant template ajax response object\n\t\t\t */\n\t\t\trenderMerchantTemplate: function (feedForm, r) {\n\t\t\t\tlet _loop = function _loop(k) {\n\t\t\t\t\tif (r.hasOwnProperty(k)) {\n\t\t\t\t\t\tif ('tabs' === k) {\n\t\t\t\t\t\t\t// noinspection JSUnresolvedFunction\n\t\t\t\t\t\t\tfeedForm.html(r[k]); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlet contentSettings = $('[name=\"' + k + '\"]');\n\n\t\t\t\t\t\t\tif (contentSettings.length) {\n\t\t\t\t\t\t\t\tcontentSettings.each(function() {\n\t\t\t\t\t\t\t\t\tlet elem = $(this);\n\n\t\t\t\t\t\t\t\t\tif (elem.is('select')) {\n\t\t\t\t\t\t\t\t\t\telem.find('[value=\"' + r[k] + '\"]').prop('selected', true);\n\t\t\t\t\t\t\t\t\t} else if ((elem.is('[type=checkbox]') || elem.is('[type=radio]')) && elem.val() === r[k]) {\n\t\t\t\t\t\t\t\t\t\telem.prop('checked', true);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\telem.val(r[k]); // type=text\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}).trigger('change');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tfor (let k in r) {\n\t\t\t\t\t_loop(k);\n\t\t\t\t}\n\n\t\t\t\tfeedEditor.init();\n\t\t\t}\n\t\t},\n\t\t// Feed Editor Table\n\t\tmerchantInfoCache = [],\n\t\tmerchantTemplateCache = [],\n\t\ttooltip = () => {\n\t\t\t// Tooltip only Text\n\t\t\t$('.wfmasterTooltip')\n\t\t\t\t.hover(function () {\n\t\t\t\t\t// Hover over code\n\t\t\t\t\tlet self = $(this), title = self.attr('wftitle');\n\t\t\t\t\tself.data('tipText', title).removeAttr('wftitle');\n\t\t\t\t\t$('<p class=\"wftooltip\"></p>').text(title).appendTo('body').fadeIn('slow');\n\t\t\t\t}, function () {\n\t\t\t\t\t// Hover out code\n\t\t\t\t\tlet self = $(this);\n\t\t\t\t\tself.attr('wftitle', self.data('tipText'));\n\t\t\t\t\t$('.wftooltip').remove();\n\t\t\t\t})\n\t\t\t\t.mousemove(function (e) {\n\t\t\t\t\t$('.wftooltip').css({\n\t\t\t\t\t\ttop: e.pageY + 10,\n\t\t\t\t\t\tleft: e.pageX + 20\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t},\n\t\tclip = () => {\n\t\t\t$copyBtn = $('.toClipboard');\n\t\t\tif (!ClipboardJS.isSupported() || /iPhone|iPad/i.test(navigator.userAgent)) {\n\t\t\t\t$copyBtn.find('img').hide(0);\n\t\t\t} else {\n\t\t\t\t$copyBtn.each(function() {\n\t\t\t\t\t$(this).on('mouseleave', clearTooltip).on('blur', clearTooltip);\n\t\t\t\t});\n\t\t\t\tclipboard = new ClipboardJS('.toClipboard');\n\t\t\t\tclipboard.on('error', function(event) {\n\t\t\t\t\tshowTooltip(event.trigger, fallbackMessage(event.action));\n\t\t\t\t}).on('success', function(event) {\n\t\t\t\t\tshowTooltip(event.trigger, 'Copied');\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t\n\t/**\n\t * Feed Generator Module\n\t */\n\tclass feedGenerator {\n\t\t\n\t\t/**\n\t\t * Constructor\n\t\t * @constructor\n\t\t */\n\t\tconstructor() {\n\t\t\tthis._feed = opts.generator.feed; // wf_config+xxxx\n\t\t\tthis._limit = opts.generator.limit;\n\t\t\tthis._progress = 0;\n\t\t\tthis._timer = null;\n\t\t\tthis._color = false;\n\t\t\t// batch info\n\t\t\tthis._total_batch = 0;\n\t\t\tthis._current_batch = 0;\n\t\t\tthis._product_ids = [];\n\t\t\tthis._progress_per_batch = 0;\n\t\t\tthis._refresh = true;\n\t\t\t// noinspection JSUnresolvedVariable\n\t\t\tthis._regenerate = opts.generator.regenerate;\n\t\t\twindow.isRegenerating = false;\n\t\t\tthis._all_btn = $('.wpf_regenerate');\n\t\t\tthis._current_btn = $(`#${this._feed.replace( 'wf_config', 'wf_feed_' )}`);\n\t\t\tthis._current_btn_label = '';\n\t\t}\n\t\t\n\t\t/**\n\t\t * Init Hooks (Event)\n\t\t * @return {feedGenerator}\n\t\t */\n\t\tinit() {\n\t\t\tlet self = this;\n\t\t\tif ( '' !== this._feed && this._regenerate && false === window.isRegenerating ) {\n\t\t\t\tthis.generate();\n\t\t\t}\n\n\t\t\t//thickbox body add feed plugin class to make it unique and custom style\n\t\t\tlet current_page_query = window.location.search;\n\t\t\tlet params = new URLSearchParams(current_page_query);\n\t\t\tlet page_name = params.get(\"page\");\n\t\t\tif( \"webappick-manage-feeds\" === page_name ) {\n\t\t\t\t$('body').addClass('woo-import-popup-body');\n\t\t\t}\n\n\t\t\t$(document).on('click', '.woo-feed-campaign-close-button', function(event) {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t$(this).parent('.woo-feed-promotion').hide();\n\t\t\t\tlet condition = $(this).data('condition');\n\t\t\t\tif(1 === condition) {\n\t\t\t\t\twpAjax.post( 'woo_feed_hide_promotion', {\n\t\t\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\t\t\tcondition: condition,\n\t\t\t\t\t} ).then( response => {\n\t\t\t\t\t\tself._log( response );\n\t\t\t\t\t} ).fail( error => {\n\t\t\t\t\t\tself._log( error );\n\t\t\t\t\t\tself._updateProgressStatus( error.message );\n\t\t\t\t\t\tself._color = 'red';\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t});\n\t\t\t$(document).on('click', '.wpf_regenerate', function(event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tself._current_btn = $( this );\n\t\t\t\tif( self._current_btn.hasClass('disabled') || window.isRegenerating === true ) return;\n\t\t\t\tself._feed = self._current_btn.attr('id').replace( 'wf_feed_', 'wf_config' );\n\t\t\t\tif( '' !== self._feed ) {\n\t\t\t\t\tself.generate();\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t_block_button() {\n\t\t\tif ( this._all_btn.length ) {\n\t\t\t\tthis._all_btn.addClass('disabled');\n\t\t\t}\n\t\t\tif ( this._current_btn.length ) {\n\t\t\t\tthis._current_btn.find('span').addClass('wpf_spin reverse_spin');\n\t\t\t\tthis._current_btn_label = this._current_btn.attr('title');\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\tthis._current_btn.attr( 'aria-label', opts.regenerate ).attr( 'title', opts.regenerate );\n\t\t\t}\n\t\t}\n\t\t\n\t\t_unblock_button() {\n\t\t\tif ( this._all_btn.length ) {\n\t\t\t\tthis._all_btn.removeClass('disabled');\n\t\t\t}\n\t\t\tif ( this._current_btn.length ) {\n\t\t\t\tthis._current_btn.find('span').removeClass('wpf_spin');\n\t\t\t\tthis._current_btn.find('span').removeClass('reverse_spin');\n\t\t\t\tthis._current_btn.attr( 'aria-label', this._current_btn_label ).attr( 'title', this._current_btn_label );\n\t\t\t}\n\t\t}\n\t\t\n\t\t/**\n\t\t * Generate Feed\n\t\t * @return void\n\t\t */\n\t\tgenerate() {\n\t\t\tlet self = this;\n\t\t\twindow.isRegenerating = true;\n\t\t\tthis._block_button();\n\t\t\tthis._resetProgressBar();\n\t\t\tthis._progressBarActive();\n\t\t\tthis._log( 'Counting Total Products' );\n\t\t\tthis._updateProgressStatus( 'Fetching products.' );\n\t\t\tthis._get_product_ids().then( response => {\n\t\t\t\tthis._progress = 10;\n\t\t\t\tself._log( {response} );\n\t\t\t\tif(response.success) {\n\t\t\t\t\tself._log( `Total ${response.total} Products found.` );\n\t\t\t\t\tself._product_ids = response.product;\n\t\t\t\t\tself._total_batch = this._product_ids.length;\n\t\t\t\t\tself._current_batch = 0;\n\t\t\t\t\tself._progress_per_batch = ( 90 - this._progress ) / this._total_batch;\n\t\t\t\t\tself._process_batch();\n\t\t\t\t\tself._updateProgressStatus( 'Processing Products...' );\n\t\t\t\t} else {\n\t\t\t\t\tself._updateProgressStatus( response.data.message );\n\t\t\t\t}\n\t\t\t}).fail( error => {\n\t\t\t\tself._log( error );\n\t\t\t\tself._updateProgressStatus( error.message );\n\t\t\t\tself._color = 'red';\n\t\t\t\tsetTimeout( function(){\n\t\t\t\t\tself._stopProgressBar();\n\t\t\t\t\tself._unblock_button();\n\t\t\t\t}, 1500 );\n\t\t\t} );\n\t\t}\n\t\t\n\t\t/**\n\t\t * Get Product Ids\n\t\t * @returns {$.promise}\n\t\t * @private\n\t\t */\n\t\t_get_product_ids() {\n\t\t\tthis._progress = 5;\n\t\t\treturn wpAjax.post( 'get_product_information', {\n\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\tfeed: this._feed,\n\t\t\t\tlimit: this._limit,\n\t\t\t} );\n\t\t}\n\t\t\n\t\t/**\n\t\t * Run the Batch\n\t\t * @private\n\t\t */\n\t\t_process_batch() {\n\t\t\tlet self = this;\n\t\t\tlet status = `Processing Batch ${this._current_batch+1} of ${this._total_batch}`;\n\t\t\tthis._updateProgressStatus( status );\n\t\t\tthis._log( status );\n\t\t\twpAjax.post( 'make_batch_feed', {\n\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\tfeed: this._feed,\n\t\t\t\tproducts: this._product_ids[this._current_batch],\n\t\t\t\tloop: this._current_batch,\n\t\t\t} ).then( response => {\n\t\t\t\tself._current_batch++;\n\t\t\t\tself._log( `Batch ${self._current_batch} Completed` );\n\t\t\t\tself._log( response );\n\t\t\t\tif ( self._current_batch < self._total_batch ) {\n\t\t\t\t\tself._process_batch();\n\t\t\t\t\tself._progress += self._progress_per_batch;\n\t\t\t\t}\n\t\t\t\tif ( self._current_batch === self._total_batch ) {\n\t\t\t\t\tself._save_feed_file();\n\t\t\t\t}\n\t\t\t} ).fail( error => {\n\t\t\t\tself._log( error );\n\t\t\t\tself._updateProgressStatus( error.message );\n\t\t\t\tself._color = 'red';\n\t\t\t\tsetTimeout( function(){\n\t\t\t\t\tself._stopProgressBar();\n\t\t\t\t\tself._unblock_button();\n\t\t\t\t}, 1500 );\n\t\t\t} );\n\t\t}\n\t\t\n\t\t/**\n\t\t * Save Feed Data from temp to feed file\n\t\t * @private\n\t\t */\n\t\t_save_feed_file() {\n\t\t\tlet self = this;\n\t\t\tthis._log( 'Saving feed file' );\n\t\t\tthis._updateProgressStatus( 'Saving feed file' );\n\t\t\twpAjax.post( 'save_feed_file', {\n\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\tfeed: this._feed,\n\t\t\t} ).then( response => {\n\t\t\t\tself._log( response );\n\t\t\t\tself._progress = 100;\n\t\t\t\tif ( self._refresh ) {\n\t\t\t\t\twindow.location.href = `${opts.pages.list.feed}&link=${response.url}&cat=${response.cat}`;\n\t\t\t\t}\n\t\t\t\tsetTimeout( function(){\n\t\t\t\t\tself._stopProgressBar();\n\t\t\t\t\tsetTimeout( function(){\n\t\t\t\t\t\tself._resetProgressBar( true );\n\t\t\t\t\t\tself._unblock_button();\n\t\t\t\t\t}, 3000 );\n\t\t\t\t}, 2500 );\n\t\t\t} ).fail( error => {\n\t\t\t\tself._log( error );\n\t\t\t\tself._updateProgressStatus( error.message );\n\t\t\t\tself._color = 'red';\n\t\t\t\tsetTimeout( function(){\n\t\t\t\t\tself._stopProgressBar();\n\t\t\t\t\tself._unblock_button();\n\t\t\t\t}, 1500 );\n\t\t\t} );\n\t\t}\n\t\t\n\t\t/**\n\t\t * Console log wrapper with debug settings.\n\t\t * @param data\n\t\t * @returns {feedGenerator}\n\t\t * @private\n\t\t */\n\t\t_log( data ) {\n\t\t\t// noinspection JSUnresolvedVariable\n\t\t\tif ( opts.wpf_debug ) {\n\t\t\t\tconsole.log( data );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t/**\n\t\t * Run the progressbar refresh interval\n\t\t * @param {int} refreshInterval\n\t\t * @returns {feedGenerator}\n\t\t * @private\n\t\t */\n\t\t_progressBarActive( refreshInterval = 0 ) {\n\t\t\tlet self = this;\n\t\t\tthis._toggleProgressBar( true );\n\t\t\tthis._timer = setInterval( function(){\n\t\t\t\tself._updateProgressBar();\n\t\t\t}, refreshInterval || 1000 );\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t/**\n\t\t * Stop Progressbar\n\t\t * @returns {feedGenerator}\n\t\t * @private\n\t\t */\n\t\t_stopProgressBar() {\n\t\t\tclearInterval( this._timer );\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t/**\n\t\t * Reset Progressbar\n\t\t * @returns {feedGenerator}\n\t\t * @private\n\t\t */\n\t\t_resetProgressBar( update ) {\n\t\t\tthis._toggleProgressBar( false );\n\t\t\tthis._updateProgressStatus( '' );\n\t\t\tclearInterval( this._timer );\n\t\t\tthis._color = false;\n\t\t\tthis._timer = null;\n\t\t\tthis._progress = 0;\n\t\t\tif ( update ) {\n\t\t\t\tthis._updateProgressBar();\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t/**\n\t\t * Show hide the progress bar el\n\t\t * @param status\n\t\t * @returns {feedGenerator}\n\t\t * @private\n\t\t */\n\t\t_toggleProgressBar( status ) {\n\t\t\tlet table = $('#feed_progress_table');\n\t\t\tif ( status ) {\n\t\t\t\ttable.show();\n\t\t\t} else {\n\t\t\t\ttable.hide();\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t/**\n\t\t * Update Progress bar text status\n\t\t * @param {string} status\n\t\t * @returns {feedGenerator}\n\t\t * @private\n\t\t */\n\t\t_updateProgressStatus( status ) {\n\t\t\t$( '.feed-progress-status' ).text( status );\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t/**\n\t\t * Update Progress Data\n\t\t * hooked with setInterval\n\t\t * @private\n\t\t */\n\t\t_updateProgressBar() {\n\t\t\tlet percentage = $( '.feed-progress-percentage' ),\n\t\t\t\tbar = $( '.feed-progress-bar-fill' ),\n\t\t\t\t_progress = `${Math.round( this._progress )}%`;\n\t\t\tbar.css( {\n\t\t\t\twidth: _progress,\n\t\t\t} );\n\t\t\tpercentage.text( _progress );\n\t\t}\n\t}\n\t// expose to the global scope\n\twindow.wf = {\n\t\thelper: helper,\n\t\tfeedEditor: feedEditor,\n\t\tgenerator: feedGenerator,\n\t};\n\t$(window).on('load', function() {\n\t\t// Template loading ui conflict\n\t\tif ($(location).attr(\"href\").match(/webappick.*feed/g) !== null) {\n\t\t\t$('#wpbody-content').addClass('woofeed-body-content');\n\t\t}\n\n\t\t// on edit page show item wrapper dropdown\n\t\tlet current_page_url_query = window.location.search;\n\t\tlet urlParams = new URLSearchParams(current_page_url_query);\n\t\tlet page_action = urlParams.get('action');\n\n\t\t// ClipBoardJS\n\t\tclip();\n\t\t// postbox toggle\n\t\tpostboxes.add_postbox_toggles(pagenow);\n\t\t// initialize generator\n\t\tlet generator = new feedGenerator();\n\t\tgenerator.init();\n\t\t// noinspection JSUnresolvedVariable\n\t\tif( '' !== opts.generator.feed && opts.generator.regenerate ) {\n\t\t\n\t\t}\n\t\t// initialize editor\n\t\tfeedEditor.init();\n\t\thelper.common(); // Generate Feed Add Table Row\n\t\ttooltip();\n\t\t// validate feed editor\n\t\t$(\".generateFeed\").validate();\n\t\t// document events\n\t\t$(document)\n\t\t\t.on('click', '[data-toggle_slide]', function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\t$($(this).data('toggle_slide')).slideToggle('fast');\n\t\t\t})\n\t\t\t// XML Feed Wrapper\n\t\t\t.on('click', '#wf_newRow', function () {\n\t\t\t\tlet tbody = $('#table-1 tbody'),\n\t\t\t\t\ttemplate = $('#feed_config_template').text().trim().replace(/__idx__/g, tbody.find('tr').length);\n\t\t\t\ttbody.append(template);\n\t\t\t\thelper.fancySelect($('.outputType'));\n\t\t\t})\n\t\t\t// feed delete alert.\n\t\t\t.on('click', '.single-feed-delete', function (event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\tif (confirm(opts.form.del_confirm)) {\n\t\t\t\t\twindow.location.href = $(this).attr('val');\n\t\t\t\t}\n\t\t\t})\n\t\t\t// clear cache data.\n\t\t\t.on('click', '.wf_clean_cache_wrapper', function(event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tvar nonce = $('.woo-feed-clean-cache-nonce').val();\n\t\t\t\tvar loader = $('.woo-feed-cache-loader');\n\n\t\t\t\t//show loader\n\t\t\t\tloader.show();\n\n\t\t\t\t// passed cache nonce\n\t\t\t\twpAjax.post('clear_cache_data', {\n\t\t\t\t\t_ajax_clean_nonce: nonce\n\t\t\t\t}).then(function (response) {\n\t\t\t\t\tif( response.success ) {\n\t\t\t\t\t\tloader.hide(); //hide loader\n\t\t\t\t\t\tlocation.reload();\n\t\t\t\t\t}\n\t\t\t\t}).fail(function (e) {\n\t\t\t\t\tconsole.log('something wrong');\n\t\t\t\t});\n\n\t\t\t})// Copy Status\n\t\t\t.on('click', '#woo-feed-copy-status-btn', function(event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tlet button = $('#woo-feed-copy-status-btn');\n\t\t\t\tlet status_area = $('#woo-feed-status-area');\n\t\t\t\tbutton.val('Copied');\n\t\t\t\tstatus_area.css('visibility','visible');\n\t\t\t\tstatus_area.select();\n\n\t\t\t\tdocument.execCommand('copy');\n\t\t\t})\n\t\t\t// feed value dropdown change.\n\t\t\t.on('change', '.wf_attr.wf_attributes', function(event) {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t$('.fancy-picker-picked').trigger(\"click\"); // trigger fancy select box clicked\n\n\t\t\t\t// price attributes\n\t\t\t\tvar price_attributes = ['price', 'current_price', 'sale_price', 'price_with_tax', 'current_price_with_tax', 'sale_price_with_tax', 'shipping_cost'];\n\t\t\t\t// current value\n\t\t\t\tvar current_attribute_value = $(this).val();\n\t\t\t\tvar outputSelect = $(this).parents('tr').find('.outputType');\n\t\t\t\tvar fancyOption = $(this).parents('tr').find('.fancy-picker-content .fancy-picker-option');\n\t\t\t\tvar fancyDataPicker = $(this).parents('tr').find('.fancy-picker-data span');\n\t\t\t\tvar selectIf, selectKey;\n\n\t\t\t\t// when any attribute is selected, pick the key\n\t\t\t\tif( price_attributes.includes(current_attribute_value) ) {\n\t\t\t\t\t// when select any price attribute\n\t\t\t\t\tselectIf = 'for_price';\n\t\t\t\t\tselectKey = \"Price\";\n\t\t\t\t} else if ( \"\" !== current_attribute_value && -1 !== current_attribute_value.indexOf('wf_taxo') ) {\n\n\t\t\t\t\t// when select any custom taxonomy\n\t\t\t\t\tselectIf = 'for_custom_taxo';\n\t\t\t\t\tselectKey = \"parent_if_empty\";\n\t\t\t\t} else {\n\n\t\t\t\t\tselectIf = 'for_all';\n\t\t\t\t\tselectKey = 'Default';\n\t\t\t\t}\n\n\t\t\t\t// remove selected class from old selected option\n\t\t\t\tfancyOption.removeClass('selected');\n\n\t\t\t\t// when value dropdown is selected as price or any custom taxonomy\n\t\t\t\tif( selectIf === 'for_custom_taxo' || selectIf === 'for_price' ) {\n\n\t\t\t\t\t// update \"Option Type\" when select key matches\n\t\t\t\t\tfancyOption.each(function(item) {\n\t\t\t\t\t\tif( selectKey === $(this).text() ) {\n\t\t\t\t\t\t\t$(this).addClass('selected');\n\t\t\t\t\t\t\tfancyDataPicker.text(selectKey);\n\t\t\t\t\t\t\toutputSelect.find(\"option\").text(selectKey);\n\t\t\t\t\t\t\toutputSelect.find(\"option\").val( $(this).data('value') );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\n\t\t\t\t\t// update \"Option Type\" when select key matches\n\t\t\t\t\t// fancyOption.each(function(item) {\n\t\t\t\t\t// \tif( \"parent_if_empty\" !== $(this).text() && \"for_all\" === selectIf ) {\n\t\t\t\t\t// \t\t$(this).addClass('selected');\n\t\t\t\t\t// \t\tfancyDataPicker.text(selectKey);\n\t\t\t\t\t// \t\toutputSelect.find(\"option\").text(selectKey);\n\t\t\t\t\t// \t\toutputSelect.find(\"option\").val( $(this).data('value') );\n\t\t\t\t\t// \t}\n\t\t\t\t\t// });\n\t\t\t\t}\n\n\t\t\t})\n\t\t\t// bulk delete alert.\n\t\t\t.on('click', '#doaction, #doaction2', function () {\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\treturn confirm(opts.form.del_confirm_multi);\n\t\t\t})\n\t\t\t// Generate Feed Table Row Delete\n\t\t\t.on('change', '.dType', function () {\n\t\t\t\tlet self = $(this),\n\t\t\t\t\ttype = self.val(),\n\t\t\t\t\trow = self.closest('tr');\n\t\t\t\t\n\t\t\t\tif (type === 'pattern') {\n\t\t\t\t\trow.find('.value_attribute').hide();\n\t\t\t\t\trow.find('.value_pattern').show();\n\t\t\t\t} else if (type === 'attribute') {\n\t\t\t\t\trow.find('.value_attribute').show();\n\t\t\t\t\trow.find('.value_pattern').hide();\n\t\t\t\t} else if (type === 'remove') {\n\t\t\t\t\trow.find('.value_attribute').hide();\n\t\t\t\t\trow.find('.value_pattern').hide();\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Generate Feed Form Submit\n\t\t\t.on('click', '.delRow', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\t$(this).closest('tr').remove();\n\t\t\t\thelper.reindex_config_table();\n\t\t\t})\n\t\t\t.on('submit', '#generateFeed', function () {\n\t\t\t\t// Feed Generating form validation\n\t\t\t\t$(this).validate();\n\t\t\t\t\n\t\t\t\tif ($(this).valid()) {\n\t\t\t\t\t$(\".makeFeedResponse\")\n\t\t\t\t\t\t.show()\n\t\t\t\t\t\t.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\t\t\t\t}\n\t\t\t})\n\t\t\t// Generate Update Feed Form Submit\n\t\t\t.on('submit', '#updatefeed', function (e, data) {\n\t\t\t\t// Feed Generating form validation\n\t\t\t\t$(this).validate();\n\t\t\t\t\n\t\t\t\tif ($(this).valid()) {\n\t\t\t\t\t$(\".makeFeedResponse\")\n\t\t\t\t\t\t.show()\n\t\t\t\t\t\t.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\t\t\t\t}\n\t\t\t})\n\t\t\t.on('change', '.ftporsftp', function () {\n\t\t\t\tlet server = $(this).val(),\n\t\t\t\t\tstatus = $('.ssh2_status');\n\t\t\t\t\n\t\t\t\tif (server === 'sftp') {\n\t\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\t\tstatus.show().css('color', 'dodgerblue').text(opts.form.sftp_checking);\n\t\t\t\t\twpAjax.post('get_ssh2_status', {\n\t\t\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\t\t\tserver: server\n\t\t\t\t\t}).then(function (response) {\n\t\t\t\t\t\tif (response === 'exists') {\n\t\t\t\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\t\t\t\tstatus.css('color', '#2CC185').text(opts.form.sftp_available);\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\tstatus.hide();\n\t\t\t\t\t\t\t}, 1500);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\t\t\t\tstatus.show().css('color', 'red').text(opts.form.sftp_warning);\n\t\t\t\t\t\t}\n\t\t\t\t\t}).fail(function (e) {\n\t\t\t\t\t\tstatus.hide();\n\t\t\t\t\t\thelper.ajax_fail(e);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tstatus.hide();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('click', '[name=\"save_feed_config\"]', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\t$('#updatefeed').trigger('submit', {\n\t\t\t\t\tsave: true\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('change', '#provider', function (event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\t//if (!$(this).closest('.generateFeed').hasClass('add-new')) return; // only for new feed.\n\n\t\t\t\tlet merchant = $(this).val(),\n\t\t\t\t\ttemplateName = $(this).find(':selected').text(),\n\t\t\t\t\tname = $('#filename').val(),\n\t\t\t\t\tfeedType = $(\"#feedType\"),\n\t\t\t\t\tfeedForm = $(\"#providerPage\"),\n\t\t\t\t\tmerchantInfo = $('#feed_merchant_info'); // set loading..\n\t\t\t\t\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\tfeedForm.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\t\t\t\t\n\t\t\t\tmerchantInfo.find('.spinner').addClass('is-active');\n\t\t\t\tfeedType.disabled(!0); // disable dropdown\n\t\t\t\t\n\t\t\t\tfeedType.parent().find('.spinner').addClass('is-active');\n\t\t\t\tmerchantInfo.find('.merchant-info-section .data').html(''); // remove previous data\n\t\t\t\t// Get Merchant info for selected Provider/Merchant\n\n\n\t\t\t\t\n\t\t\t\tif (merchantInfoCache.hasOwnProperty(merchant)) {\n\t\t\t\t\tfeedEditor.renderMerchantInfo(merchantInfo, feedType, merchantInfoCache[merchant]);\n\t\t\t\t} else {\n\t\t\t\t\twpAjax.send('woo_feed_get_merchant_info', {\n\t\t\t\t\t\ttype: 'GET',\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tnonce: opts.nonce,\n\t\t\t\t\t\t\tprovider: merchant,\n\t\t\t\t\t\t\ttemplateName: templateName\n\t\t\t\t\t\t}\n\t\t\t\t\t}).then(function (r) {\n\t\t\t\t\t\tmerchantInfoCache[merchant] = r;\n\t\t\t\t\t\tfeedEditor.renderMerchantInfo(merchantInfo, feedType, r);\n\t\t\t\t\t\t// console.log('filter load')\n\t\t\t\t\t\t// $('#utm_source').val(templateName)\n\t\t\t\t\t}).fail(helper.ajax_fail);\n\t\t\t\t} // Get FeedForm For Selected Provider/Merchant\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tif (merchantTemplateCache.hasOwnProperty(merchant)) {\n\t\t\t\t\tfeedEditor.renderMerchantTemplate(feedForm, merchantTemplateCache[merchant]);\n\t\t\t\t} else {\n\t\t\t\t\twpAjax.post('get_feed_merchant', {\n\t\t\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\t\t\tmerchant: merchant\n\t\t\t\t\t}).then(function (r) {\n\t\t\t\t\t\tmerchantTemplateCache[merchant] = r;\n\t\t\t\t\t\tfeedEditor.renderMerchantTemplate(feedForm, r);\n\t\t\t\t\t\t$('#utm_source').val(templateName);\n\t\t\t\t\t\t$('#utm_campaign').val(name);\n\t\t\t\t\t\t//when merchant is bing, change delimiter and enclosure\n\t\t\t\t\t\tif( 'bing' === merchant ) {\n\t\t\t\t\t\t\t//delimiter value\n\t\t\t\t\t\t\t$(\"#delimiter option\").removeAttr('selected');\n\t\t\t\t\t\t\t$(\"#delimiter option[value=\\\"tab\\\"]\").attr('selected', 'selected');\n\n\t\t\t\t\t\t\t//enclosure value\n\t\t\t\t\t\t\t$(\"#enclosure option\").removeAttr('selected');\n\t\t\t\t\t\t\t$(\"#enclosure option[value=\\\" \\\"]\").attr('selected', 'selected');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//reviewer options hide\n\t\t\t\t\t\tif( 'google_product_review' !== merchant) {\n\t\t\t\t\t\t\t$('.wf_attributes option[value=\"reviewer_name\"]').hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}).fail(helper.ajax_fail);\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Feed Active and Inactive status change via ajax\n\t\t\t.on('change', '.woo_feed_status_input', function () {\n\t\t\t\tlet self = $(this);\n\t\t\t\twpAjax.post('update_feed_status', {\n\t\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\t\tfeedName: self.val(),\n\t\t\t\t\tstatus: self[0].checked ? 1 : 0\n\t\t\t\t});\n\t\t\t});\n\t\t// event with trigger\n\t\t$(document)\n\t\t\t.on('change', '[name=\"is_outOfStock\"], [name=\"product_visibility\"]', function () {\n\t\t\t\tlet outOfStockVisibilityRow = $('.out-of-stock-visibility');\n\t\t\t\tif ($('[name=\"is_outOfStock\"]:checked').val() === 'n' && $('[name=\"product_visibility\"]:checked').val() === '1') {\n\t\t\t\t\toutOfStockVisibilityRow.show();\n\t\t\t\t} else {\n\t\t\t\t\toutOfStockVisibilityRow.hide();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('change', '.attr_type', function () {\n\t\t\t\t// Attribute type selection\n\t\t\t\tlet self = $(this),\n\t\t\t\t\ttype = self.val(),\n\t\t\t\t\trow = self.closest('tr');\n\t\t\t\t\n\t\t\t\tif (type === 'pattern') {\n\t\t\t\t\trow.find('.wf_attr').hide();\n\t\t\t\t\trow.find('.wf_attr').val('');\n\t\t\t\t\trow.find('.wf_default').show();\n\t\t\t\t} else {\n\t\t\t\t\trow.find('.wf_attr').show();\n\t\t\t\t\trow.find('.wf_default').hide();\n\t\t\t\t\trow.find('.wf_default').val('');\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('change', '.wf_mattributes, .attr_type', function () {\n\t\t\t\tlet row = $(this).closest('tr'),\n\t\t\t\t\tattribute = row.find('.wf_mattributes'),\n\t\t\t\t\ttype = row.find('.attr_type'),\n\t\t\t\t\tvalueColumn = row.find('td:eq(4)'),\n\t\t\t\t\tprovider = $('#provider').val();\n\t\t\t\t\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\tif (opts.form.google_category.hasOwnProperty(attribute.val()) && type.val() === 'pattern' && helper.in_array(provider, opts.form.google_category[attribute.val()])) {\n\t\t\t\t\tif (valueColumn.find('select.selectize').length === 0) {\n\t\t\t\t\t\tvalueColumn.find('input.wf_default').remove();\n\t\t\t\t\t\tvalueColumn.append('<span class=\"wf_default wf_attributes\"><select name=\"default[]\" class=\"selectize\"></select></span>');\n\t\t\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\t\t\tvalueColumn.append(`<span style=\"font-size:x-small;\"><a style=\"color: red\" href=\"http://webappick.helpscoutdocs.com/article/19-how-to-map-store-category-with-merchant-category\" target=\"_blank\">${opts.learn_more}</a></span>`);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (!googleCategories) {\n\t\t\t\t\t\t\tvalueColumn.append('<span class=\"spinner is-active\" style=\"margin: 0;\"></span>');\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet select = valueColumn.find('.wf_attributes select');\n\t\t\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\t\t\thelper.selectize(select, {\n\t\t\t\t\t\t\tpreload: true,\n\t\t\t\t\t\t\tplaceholder: opts.form.select_category,\n\t\t\t\t\t\t\tload: function load(query, cb) {\n\t\t\t\t\t\t\t\tif (!googleCategories) {\n\t\t\t\t\t\t\t\t\twpAjax.send('get_google_categories', {\n\t\t\t\t\t\t\t\t\t\ttype: 'GET',\n\t\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\t\t\t\t\t\t\t\taction: \"get_google_categories\",\n\t\t\t\t\t\t\t\t\t\t\tprovider: provider\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}).then(function (r) {\n\t\t\t\t\t\t\t\t\t\tgoogleCategories = r;\n\t\t\t\t\t\t\t\t\t\tcb(googleCategories);\n\t\t\t\t\t\t\t\t\t\tvalueColumn.find('.spinner').remove();\n\t\t\t\t\t\t\t\t\t}).fail(helper.ajax_fail);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcb(googleCategories);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (attribute.val() !== 'current_category' && valueColumn.find('input.wf_default').length === 0) {\n\t\t\t\t\t\tvalueColumn.find('span').remove();\n\t\t\t\t\t\tvalueColumn.append('<input autocomplete=\"off\" class=\"wf_default wf_attributes\" type=\"text\" name=\"default[]\" value=\"\">');\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (type.val() !== 'pattern') {\n\t\t\t\t\t\t\tvalueColumn.find('input.wf_default').hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('change', '#feedType,#provider', function (e) {\n\t\t\t\tlet type = $('#feedType').val(),\n\t\t\t\t\tprovider = $('#provider').val(),\n\t\t\t\t\titemWrapper = $('.itemWrapper'),\n\t\t\t\t\twf_csv_txt = $('.wf_csvtxt');\n\t\t\t\t\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\tif (type !== '' && helper.in_array(provider, opts.form.item_wrapper_hidden)) {\n\t\t\t\t\titemWrapper.hide();\n\t\t\t\t}\n\n\t\t\t\t//when feed type is changed\n\t\t\t\tif( 'feedType' === e.target.id ) {\n\t\t\t\t\tif (type === 'csv' || type === 'txt' || type === 'tsv') {\n\t\t\t\t\t\titemWrapper.hide();\n\t\t\t\t\t\twf_csv_txt.show();\n\n\t\t\t\t\t\tif( 'tsv' === type ) {\n\t\t\t\t\t\t\t$('#delimiter option:last').prop(\"selected\", \"selected\");\n\t\t\t\t\t\t} else if( 'csv' === type ) {\n\t\t\t\t\t\t\t$('#delimiter option:first').prop(\"selected\", \"selected\");\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if( type === 'xml' ) {\n\t\t\t\t\t\titemWrapper.show();\n\t\t\t\t\t\twf_csv_txt.hide();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t})\n\t\t\t.trigger('change');\n\n\n\t\t// product Attribute class\n\t\tclass WooFeedCustomFields {\n\n\t\t\tconstructor( field, status, isTaxonomy ) {\n\t\t\t\tthis.productCustomFields( field, status, isTaxonomy );\n\t\t\t}\n\n\t\t\tcacheClear() {\n\t\t\t\tlet data = {\n\t\t\t\t\taction: 'woo_feed_product_attribute_cache_remove',\n\t\t\t\t\tnonce: wpf_ajax_obj.ajax.nonce,\n\t\t\t\t};\n\t\t\t\t$.ajax({\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\turl: wpf_ajax_obj.wpf_ajax_url,\n\t\t\t\t\tdata\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tproductCustomFields( field, status = false, isTaxonomy ) {\n\t\t\t\tlet data = {\n\t\t\t\t\taction: 'woo_feed_custom_fields_status_change',\n\t\t\t\t\tnonce: wpf_ajax_obj.ajax.nonce,\n\t\t\t\t\tfield,\n\t\t\t\t\tstatus,\n\t\t\t\t\tisTaxonomy\n\t\t\t\t};\n\t\t\t\t$.ajax({\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\turl: wpf_ajax_obj.wpf_ajax_url,\n\t\t\t\t\tdata,\n\t\t\t\t\tsuccess: ( response ) => {\n\t\t\t\t\t\tif( response.success ) {\n\t\t\t\t\t\t\tthis.cacheClear();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( response );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t$(document).on('click', '.woofeed-custom-fields [id*=\"-switcher\"]', function () {\n\t\t\tlet field = $(this).attr( 'id' ).split( '-' )[0],\n\t\t\t\tisTaxonomy = $(this).data( 'taxonomy' ),\n\t\t\t\tstatus = $(this).prop( 'checked' );\n\t\t\tnew WooFeedCustomFields( field, status, isTaxonomy );\n\t\t});\n\n\t\t// Remove sticky cart on feature page\n\t\t$(document).ready(function() {\n\t\t\tvar s = $(\".wapk-feed-buy-now-container\");\n\t\t\tvar pos = s.position();\n\t\t\t$(window).scroll(function() {\n\t\t\t\tvar windowpos = $(window).scrollTop();\n\t\t\t\tif ( windowpos <= 5000 ) {\n\t\t\t\t\ts.addClass(\"fixed\");\n\t\t\t\t} else {\n\t\t\t\t\ts.removeClass(\"fixed\");\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t});\n\n\t$(document).on('click', '#woo-feed-debug-log-download', function (e) {\n\t\te.preventDefault();\n\t\t$(\"<a />\", {\n\t\t\tdownload: new Date() + \".log\",\n\t\t\thref: URL.createObjectURL(\n\t\t\t\tnew Blob([$(\"#woo-feed-debug-log\").val()], {\n\t\t\t\t\ttype: \"text/plain\"\n\t\t\t\t})),\n\t\t}).appendTo(\"body\")[0].click();\n\t});\n\n\t$(document).on('keyup', '#filename', function(e) {\n\t\tvar name = $('#filename').val();\n\t\t$('#utm_campaign').val(name);\n\t});\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","_createClass","Constructor","protoProps","staticProps","prototype","window","wpAjax","self","prop","showTooltip","$","hasClass","currentTarget","clearTooltip","removeClass","actionMsg","className","match","index","action","removeAttr","actionKey","elem","addClass","attr","msg","extend","_default","_args","clip","$copyBtn","top","this","on","event","test","navigator","console","googleCategories","in_array","needle","haystack","sortable","escape","data","text","ajax_fail","column_count","find","warn","wf_sortable","selectize_render_item","e","hasOwnProperty","opts","ajax","error","statusText","status","el","config","column","_onDrop","each","length","selectize","itemPath","create","concat","plugins","$item","container","containerSelector","group","options","bodyClass","itemSelector","handle","onDrop","fancySelect","maxItemShow","split","map","s","trim","helper","render","item","replace","x","form","merchantInfo","document","trigger","jQuery","k","init","renderMerchantInfo","opt","feedType","r","types","html","t","toLowerCase","na","disabled","val","renderMerchantTemplate","_loop","contentSettings","feedForm","feedEditor","merchantInfoCache","css","clipboard","_regenerate","isRegenerating","_feed","_current_btn","feed","_limit","generator","limit","_progress","_product_ids","_progress_per_batch","_refresh","_all_btn","generate","feedGenerator","condition","_current_btn_label","then","URLSearchParams","response","_color","preventDefault","parent","hide","_ajax_nonce","_log","_updateProgressStatus","message","key","value","_block_button","_this","product","setTimeout","_stopProgressBar","_process_batch","_current_batch","_total_batch","post","loop","_resetProgressBar","_unblock_button","refreshInterval","arguments","undefined","_timer","clearInterval","update","table","show","width","bar","wf","current_page_url_query","postboxes","regenerate","_updateProgressBar","pagenow","template","common","hover","title","appendTo","userAgent","remove","ClipboardJS","pageX","location","slideToggle","loader","tbody","reload","nonce","button","status_area","select","execCommand","fail","current_attribute_value","fancyOption","fancyDataPicker","selectIf","price_attributes","selectKey","outputSelect","parents","includes","confirm","del_confirm_multi","closest","reindex_config_table","type","_ajax_clean_nonce","row","valid","validate","save","log","server","sftp_available","templateName","name","merchant","loading_tmpl","provider","merchantTemplateCache","outOfStockVisibilityRow","feedName","checked","valueColumn","append","load","google_category","attribute","learn_more","preload","cb","query","itemWrapper","wf_csv_txt","item_wrapper_hidden","WooFeedCustomFields","productCustomFields","placeholder","url","field","isTaxonomy","success","_this2","wpf_ajax_obj","wpf_ajax_url","download","URL","position","scroll","scrollTop"],"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\t\"use strict\";\n\t/**\n\t * All of the code for your admin-facing JavaScript source\n\t * should reside in this file.\n\t *\n\t * Note: It has been assumed you will write jQuery code here, so the\n\t * $ function reference has been prepared for usage within the scope\n\t * of this function.\n\t *\n\t * This enables you to define handlers, for when the DOM is ready:\n\t */\n\n\t/**\n\t * disable element utility\n\t *\n\t * @since 3.1.9\n\t *\n\t * @param {*} status\n\t * @returns {jQuery|HTMLElement}\n\t */\n\t$.fn.disabled = function(status) {\n\t\t$(this).each(function() {\n\t\t\tlet self = $(this),\n\t\t\t\tprop = 'disabled';\n\n\t\t\tif (typeof self.prop(prop) !== 'undefined') {\n\t\t\t\tself.prop(prop, status === void 0 || status === true);\n\t\t\t} else {\n\t\t\t\t!0 === status ? self.addClass(prop) : self.removeClass(prop);\n\t\t\t}\n\t\t});\n\t\treturn self; // method chaining\n\t};\n\t\n\t/**\n\t * Check if a HTMLElement or jQuery is disabled\n\t */\n\t$.fn.isDisabled = function() {\n\t\tlet self = $(this),\n\t\t\tprop = 'disabled';\n\t\treturn typeof self.prop(prop) !== 'undefined' ? self.prop(prop) : self.hasClass(prop);\n\t};\n\t\n\t/**\n\t * Clear Tooltip for clip board js\n\t * @param {Object} event\n\t */\n\tconst clearTooltip = (event) => {\n\t\t$(event.currentTarget).removeClass( (index, className) => (className.match(/\\btooltipped-\\S+/g) || []).join(' ') ).removeClass('tooltipped').removeAttr('aria-label');\n\t};\n\n\tconst showTooltip = (elem, msg) => {\n\t\t$(elem).addClass('tooltipped tooltipped-s').attr('aria-label', msg);\n\t};\n\n\tconst fallbackMessage = (action) =>{\n\t\tlet actionMsg,\n\t\t\tactionKey = action === 'cut' ? 'X' : 'C';\n\n\t\tif (/iPhone|iPad/i.test(navigator.userAgent)) {\n\t\t\tactionMsg = 'No support :(';\n\t\t} else if (/Mac/i.test(navigator.userAgent)) {\n\t\t\tactionMsg = 'Press ⌘-' + actionKey + ' to ' + action;\n\t\t} else {\n\t\t\tactionMsg = 'Press Ctrl-' + actionKey + ' to ' + action;\n\t\t}\n\n\t\treturn actionMsg;\n\t};\n\t\n\t/**\n\t * Alias of jQuery.extend()\n\t * @param {Object} _default\n\t * @param {Object} _args\n\t */\n\tconst extend = (_default, _args) => $.extend(true, {}, _default, _args);\n\t\n\tlet $copyBtn,\n\t\tclipboard,\n\t\tgoogleCategories,\n\t\thelper = {\n\t\t\tin_array: (needle, haystack) => {\n\t\t\t\ttry {\n\t\t\t\t\treturn haystack.indexOf(needle) !== -1;\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tselectize_render_item: (data, escape) => `<div class=\"item wapk-selectize-item\">${ escape(data.text)}</div>`, // phpcs:ignore WordPressVIPMinimum.JS.StringConcat.Found,\n\t\t\tajax_fail: e => {\n\t\t\t\tconsole.warn(e);\n\t\t\t\talert(e.hasOwnProperty('statusText') && e.hasOwnProperty('status') ? opts.ajax.error + '\\n' + e.statusText + ' (' + e.status + ')' : e);\n\t\t\t},\n\t\t\t/**\n\t\t\t * Initialize Sortable\n\t\t\t * @param {jQuery|HTMLElement} el\n\t\t\t * @param {object} config\n\t\t\t * @param {int|boolean} column\n\t\t\t * @param {function} onDrop\n\t\t\t * @return {jQuery|HTMLElement}\n\t\t\t */\n\t\t\tsortable: (el, config, column, onDrop) => {\n\t\t\t\treturn (el || $('.sorted_table')).each(function() {\n\t\t\t\t\tlet self = $(this),\n\t\t\t\t\t\tcolumn_count = self.find('tbody > tr:eq(0) > td').length || column || 9;\n\t\t\t\t\tself.wf_sortable(extend({\n\t\t\t\t\t\tcontainerSelector: 'table',\n\t\t\t\t\t\titemPath: '> tbody',\n\t\t\t\t\t\titemSelector: 'tr',\n\t\t\t\t\t\thandle: 'i.wf_sortedtable',\n\t\t\t\t\t\tplaceholder: `<tr class=\"placeholder\"><td colspan=\"${column_count}\"></td></tr>`,\n\t\t\t\t\t\tonDrop: ($item, container, _super, event) => {\n\t\t\t\t\t\t\t$item.removeClass(container.group.options.draggedClass).removeAttr('style');\n\t\t\t\t\t\t\t$(\"body\").removeClass(container.group.options.bodyClass);\n\t\t\t\t\t\t\tif ( onDrop && 'function' === typeof( onDrop ) ) {\n\t\t\t\t\t\t\t\tonDrop( $item, container, _super, event );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t}, config));\n\t\t\t\t});\n\t\t\t},\n\t\t\tselectize: (el, config) => {\n\t\t\t\treturn (el || $('select.selectize')).not('.selectized').each(function() {\n\t\t\t\t\tlet self = $(this);\n\t\t\t\t\tself.selectize(extend({\n\t\t\t\t\t\tcreate: self.data('create') || false,\n\t\t\t\t\t\tplugins: self.data('plugins') ? self.data('plugins').split(',').map(function(s) {\n\t\t\t\t\t\t\treturn s.trim();\n\t\t\t\t\t\t}) : [],\n\t\t\t\t\t\t//['remove_button'],\n\t\t\t\t\t\trender: {\n\t\t\t\t\t\t\titem: helper.selectize_render_item\n\t\t\t\t\t\t}\n\t\t\t\t\t}, config));\n\t\t\t\t});\n\t\t\t},\n\t\t\tfancySelect: (el, config) => {\n\t\t\t\treturn (el || $('select.fancySelect')).not('.FancySelectInit').each(function() {\n\t\t\t\t\tlet self = $(this);\n\t\t\t\t\tself.fancySelect(extend({\n\t\t\t\t\t\tmaxItemShow: 3\n\t\t\t\t\t}, config));\n\t\t\t\t});\n\t\t\t},\n\t\t\treindex_config_table: () => {\n\t\t\t\t$('#table-1').find('tbody tr').each( ( x, el ) => {\n\t\t\t\t\t$(el).find('[name]').each( ( x1, el ) => {\n\t\t\t\t\t\t$(el).attr('name', $(el).attr('name').replace(/(\\[\\d\\])/g, `[${x}]`));\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tcommon: () => {\n\t\t\t\thelper.sortable( $('.sorted_table'), {}, 9, helper.reindex_config_table );\n\t\t\t\thelper.selectize();\n\t\t\t\thelper.fancySelect($('.outputType'));\n\t\t\t}\n\t\t},\n\t\t// helper functions\n\t\tfeedEditor = {\n\t\t\t/**\n\t\t\t * The Editor Form Elem.\n\t\t\t * @type {jQuery|HTMLElement}\n\t\t\t */\n\t\t\tform: null,\n\n\t\t\t/**\n\t\t\t * Initialize The Feed Editor {Tabs...}\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tinit: function () {\n\t\t\t\tlet self = this;\n\t\t\t\tself.form = $('.generateFeed');\n\t\t\t\tif (!self.form.length) return;\n\t\t\t\thelper.common();\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\t$(document).trigger(new jQuery.Event('feedEditor.init', {\n\t\t\t\t\ttarget: this.form\n\t\t\t\t}));\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Render Merchant info ajax response and handle allowed feed type for selected merchant\n\t\t\t * @param {jQuery|HTMLElement} merchantInfo jQuery dom object\n\t\t\t * @param {jQuery|HTMLElement} feedType jQuery dom object\n\t\t\t * @param {Object} r ajax response object\n\t\t\t */\n\t\t\trenderMerchantInfo: function (merchantInfo, feedType, r) {\n\t\t\t\tfor (let k in r) {\n\t\t\t\t\tif (r.hasOwnProperty(k)) {\n\t\t\t\t\t\tmerchantInfo.find('.merchant-info-section.' + k + ' .data').html(r[k]); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html\n\n\t\t\t\t\t\tif ('feed_file_type' === k) {\n\t\t\t\t\t\t\t(function() {\n\t\t\t\t\t\t\t\tlet types = r[k].split(\",\").map(function(t) {\n\t\t\t\t\t\t\t\t\treturn t.trim().toLowerCase();\n\t\t\t\t\t\t\t\t}).filter(function(t) {\n\t\t\t\t\t\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\t\t\t\t\t\treturn t !== '' && t !== opts.na.toLowerCase();\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (types.length) {\n\t\t\t\t\t\t\t\t\tfeedType.find('option').removeAttr('selected').each(function() {\n\t\t\t\t\t\t\t\t\t\tlet opt = $(this);\n\t\t\t\t\t\t\t\t\t\topt.val() && !helper.in_array(opt.val(), types) ? opt.disabled(!0) : opt.disabled(!1);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tif (types.length === 1) feedType.find('option[value=\"' + types[0] + '\"]').attr('selected', 'selected');\n\t\t\t\t\t\t\t\t} else feedType.find('option').disabled(!1);\n\t\t\t\t\t\t\t})();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tmerchantInfo.find('.spinner').removeClass('is-active');\n\t\t\t\tfeedType.disabled(!1);\n\t\t\t\tfeedType.trigger('change');\n\n\t\t\t\t/**\n\t\t\t\t * Triggers after merchant configuration is fetched & loaded\n\t\t\t\t * */\n\t\t\t\t$(document).trigger('woo_feed_config_loaded');\n\n\t\t\t\tfeedType.parent().find('.spinner').removeClass('is-active');\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Render Feed Template Tabs and settings while creating new feed.\n\t\t\t * @param {jQuery|HTMLElement} feedForm feed from query dom object\n\t\t\t * @param {object} r merchant template ajax response object\n\t\t\t */\n\t\t\trenderMerchantTemplate: function (feedForm, r) {\n\t\t\t\tlet _loop = function _loop(k) {\n\t\t\t\t\tif (r.hasOwnProperty(k)) {\n\t\t\t\t\t\tif ('tabs' === k) {\n\t\t\t\t\t\t\t// noinspection JSUnresolvedFunction\n\t\t\t\t\t\t\tfeedForm.html(r[k]); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlet contentSettings = $('[name=\"' + k + '\"]');\n\n\t\t\t\t\t\t\tif (contentSettings.length) {\n\t\t\t\t\t\t\t\tcontentSettings.each(function() {\n\t\t\t\t\t\t\t\t\tlet elem = $(this);\n\n\t\t\t\t\t\t\t\t\tif (elem.is('select')) {\n\t\t\t\t\t\t\t\t\t\telem.find('[value=\"' + r[k] + '\"]').prop('selected', true);\n\t\t\t\t\t\t\t\t\t} else if ((elem.is('[type=checkbox]') || elem.is('[type=radio]')) && elem.val() === r[k]) {\n\t\t\t\t\t\t\t\t\t\telem.prop('checked', true);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\telem.val(r[k]); // type=text\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}).trigger('change');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tfor (let k in r) {\n\t\t\t\t\t_loop(k);\n\t\t\t\t}\n\n\t\t\t\tfeedEditor.init();\n\t\t\t}\n\t\t},\n\t\t// Feed Editor Table\n\t\tmerchantInfoCache = [],\n\t\tmerchantTemplateCache = [],\n\t\ttooltip = () => {\n\t\t\t// Tooltip only Text\n\t\t\t$('.wfmasterTooltip')\n\t\t\t\t.hover(function () {\n\t\t\t\t\t// Hover over code\n\t\t\t\t\tlet self = $(this), title = self.attr('wftitle');\n\t\t\t\t\tself.data('tipText', title).removeAttr('wftitle');\n\t\t\t\t\t$('<p class=\"wftooltip\"></p>').text(title).appendTo('body').fadeIn('slow');\n\t\t\t\t}, function () {\n\t\t\t\t\t// Hover out code\n\t\t\t\t\tlet self = $(this);\n\t\t\t\t\tself.attr('wftitle', self.data('tipText'));\n\t\t\t\t\t$('.wftooltip').remove();\n\t\t\t\t})\n\t\t\t\t.mousemove(function (e) {\n\t\t\t\t\t$('.wftooltip').css({\n\t\t\t\t\t\ttop: e.pageY + 10,\n\t\t\t\t\t\tleft: e.pageX + 20\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t},\n\t\tclip = () => {\n\t\t\t$copyBtn = $('.toClipboard');\n\t\t\tif (!ClipboardJS.isSupported() || /iPhone|iPad/i.test(navigator.userAgent)) {\n\t\t\t\t$copyBtn.find('img').hide(0);\n\t\t\t} else {\n\t\t\t\t$copyBtn.each(function() {\n\t\t\t\t\t$(this).on('mouseleave', clearTooltip).on('blur', clearTooltip);\n\t\t\t\t});\n\t\t\t\tclipboard = new ClipboardJS('.toClipboard');\n\t\t\t\tclipboard.on('error', function(event) {\n\t\t\t\t\tshowTooltip(event.trigger, fallbackMessage(event.action));\n\t\t\t\t}).on('success', function(event) {\n\t\t\t\t\tshowTooltip(event.trigger, 'Copied');\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t\n\t/**\n\t * Feed Generator Module\n\t */\n\tclass feedGenerator {\n\t\t\n\t\t/**\n\t\t * Constructor\n\t\t * @constructor\n\t\t */\n\t\tconstructor() {\n\t\t\tthis._feed = opts.generator.feed; // wf_config+xxxx\n\t\t\tthis._limit = opts.generator.limit;\n\t\t\tthis._progress = 0;\n\t\t\tthis._timer = null;\n\t\t\tthis._color = false;\n\t\t\t// batch info\n\t\t\tthis._total_batch = 0;\n\t\t\tthis._current_batch = 0;\n\t\t\tthis._product_ids = [];\n\t\t\tthis._progress_per_batch = 0;\n\t\t\tthis._refresh = true;\n\t\t\t// noinspection JSUnresolvedVariable\n\t\t\tthis._regenerate = opts.generator.regenerate;\n\t\t\twindow.isRegenerating = false;\n\t\t\tthis._all_btn = $('.wpf_regenerate');\n\t\t\tthis._current_btn = $(`#${this._feed.replace( 'wf_config', 'wf_feed_' )}`);\n\t\t\tthis._current_btn_label = '';\n\t\t}\n\t\t\n\t\t/**\n\t\t * Init Hooks (Event)\n\t\t * @return {feedGenerator}\n\t\t */\n\t\tinit() {\n\t\t\tlet self = this;\n\t\t\tif ( '' !== this._feed && this._regenerate && false === window.isRegenerating ) {\n\t\t\t\tthis.generate();\n\t\t\t}\n\n\t\t\t//thickbox body add feed plugin class to make it unique and custom style\n\t\t\tlet current_page_query = window.location.search;\n\t\t\tlet params = new URLSearchParams(current_page_query);\n\t\t\tlet page_name = params.get(\"page\");\n\t\t\tif( \"webappick-manage-feeds\" === page_name ) {\n\t\t\t\t$('body').addClass('woo-import-popup-body');\n\t\t\t}\n\n\t\t\t$(document).on('click', '.woo-feed-campaign-close-button', function(event) {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t$(this).parent('.woo-feed-promotion').hide();\n\t\t\t\tlet condition = $(this).data('condition');\n\t\t\t\tif(1 === condition) {\n\t\t\t\t\twpAjax.post( 'woo_feed_hide_promotion', {\n\t\t\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\t\t\tcondition: condition,\n\t\t\t\t\t} ).then( response => {\n\t\t\t\t\t\tself._log( response );\n\t\t\t\t\t} ).fail( error => {\n\t\t\t\t\t\tself._log( error );\n\t\t\t\t\t\tself._updateProgressStatus( error.message );\n\t\t\t\t\t\tself._color = 'red';\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t});\n\t\t\t$(document).on('click', '.wpf_regenerate', function(event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tself._current_btn = $( this );\n\t\t\t\tif( self._current_btn.hasClass('disabled') || window.isRegenerating === true ) return;\n\t\t\t\tself._feed = self._current_btn.attr('id').replace( 'wf_feed_', 'wf_config' );\n\t\t\t\tif( '' !== self._feed ) {\n\t\t\t\t\tself.generate();\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t_block_button() {\n\t\t\tif ( this._all_btn.length ) {\n\t\t\t\tthis._all_btn.addClass('disabled');\n\t\t\t}\n\t\t\tif ( this._current_btn.length ) {\n\t\t\t\tthis._current_btn.find('span').addClass('wpf_spin reverse_spin');\n\t\t\t\tthis._current_btn_label = this._current_btn.attr('title');\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\tthis._current_btn.attr( 'aria-label', opts.regenerate ).attr( 'title', opts.regenerate );\n\t\t\t}\n\t\t}\n\t\t\n\t\t_unblock_button() {\n\t\t\tif ( this._all_btn.length ) {\n\t\t\t\tthis._all_btn.removeClass('disabled');\n\t\t\t}\n\t\t\tif ( this._current_btn.length ) {\n\t\t\t\tthis._current_btn.find('span').removeClass('wpf_spin');\n\t\t\t\tthis._current_btn.find('span').removeClass('reverse_spin');\n\t\t\t\tthis._current_btn.attr( 'aria-label', this._current_btn_label ).attr( 'title', this._current_btn_label );\n\t\t\t}\n\t\t}\n\t\t\n\t\t/**\n\t\t * Generate Feed\n\t\t * @return void\n\t\t */\n\t\tgenerate() {\n\t\t\tlet self = this;\n\t\t\twindow.isRegenerating = true;\n\t\t\tthis._block_button();\n\t\t\tthis._resetProgressBar();\n\t\t\tthis._progressBarActive();\n\t\t\tthis._log( 'Counting Total Products' );\n\t\t\tthis._updateProgressStatus( 'Fetching products.' );\n\t\t\tthis._get_product_ids().then( response => {\n\t\t\t\tthis._progress = 10;\n\t\t\t\tself._log( {response} );\n\t\t\t\tif(response.success) {\n\t\t\t\t\tself._log( `Total ${response.total} Products found.` );\n\t\t\t\t\tself._product_ids = response.product;\n\t\t\t\t\tself._total_batch = this._product_ids.length;\n\t\t\t\t\tself._current_batch = 0;\n\t\t\t\t\tself._progress_per_batch = ( 90 - this._progress ) / this._total_batch;\n\t\t\t\t\tself._process_batch();\n\t\t\t\t\tself._updateProgressStatus( 'Processing Products...' );\n\t\t\t\t} else {\n\t\t\t\t\tself._updateProgressStatus( response.data.message );\n\t\t\t\t}\n\t\t\t}).fail( error => {\n\t\t\t\tself._log( error );\n\t\t\t\tself._updateProgressStatus( error.message );\n\t\t\t\tself._color = 'red';\n\t\t\t\tsetTimeout( function(){\n\t\t\t\t\tself._stopProgressBar();\n\t\t\t\t\tself._unblock_button();\n\t\t\t\t}, 1500 );\n\t\t\t} );\n\t\t}\n\t\t\n\t\t/**\n\t\t * Get Product Ids\n\t\t * @returns {$.promise}\n\t\t * @private\n\t\t */\n\t\t_get_product_ids() {\n\t\t\tthis._progress = 5;\n\t\t\treturn wpAjax.post( 'get_product_information', {\n\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\tfeed: this._feed,\n\t\t\t\tlimit: this._limit,\n\t\t\t} );\n\t\t}\n\t\t\n\t\t/**\n\t\t * Run the Batch\n\t\t * @private\n\t\t */\n\t\t_process_batch() {\n\t\t\tlet self = this;\n\t\t\tlet status = `Processing Batch ${this._current_batch+1} of ${this._total_batch}`;\n\t\t\tthis._updateProgressStatus( status );\n\t\t\tthis._log( status );\n\t\t\twpAjax.post( 'make_batch_feed', {\n\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\tfeed: this._feed,\n\t\t\t\tproducts: this._product_ids[this._current_batch],\n\t\t\t\tloop: this._current_batch,\n\t\t\t} ).then( response => {\n\t\t\t\tself._current_batch++;\n\t\t\t\tself._log( `Batch ${self._current_batch} Completed` );\n\t\t\t\tself._log( response );\n\t\t\t\tif ( self._current_batch < self._total_batch ) {\n\t\t\t\t\tself._process_batch();\n\t\t\t\t\tself._progress += self._progress_per_batch;\n\t\t\t\t}\n\t\t\t\tif ( self._current_batch === self._total_batch ) {\n\t\t\t\t\tself._save_feed_file();\n\t\t\t\t}\n\t\t\t} ).fail( error => {\n\t\t\t\tself._log( error );\n\t\t\t\tself._updateProgressStatus( error.message );\n\t\t\t\tself._color = 'red';\n\t\t\t\tsetTimeout( function(){\n\t\t\t\t\tself._stopProgressBar();\n\t\t\t\t\tself._unblock_button();\n\t\t\t\t}, 1500 );\n\t\t\t} );\n\t\t}\n\t\t\n\t\t/**\n\t\t * Save Feed Data from temp to feed file\n\t\t * @private\n\t\t */\n\t\t_save_feed_file() {\n\t\t\tlet self = this;\n\t\t\tthis._log( 'Saving feed file' );\n\t\t\tthis._updateProgressStatus( 'Saving feed file' );\n\t\t\twpAjax.post( 'save_feed_file', {\n\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\tfeed: this._feed,\n\t\t\t} ).then( response => {\n\t\t\t\tself._log( response );\n\t\t\t\tself._progress = 100;\n\t\t\t\tif ( self._refresh ) {\n\t\t\t\t\twindow.location.href = `${opts.pages.list.feed}&link=${response.url}&cat=${response.cat}`;\n\t\t\t\t}\n\t\t\t\tsetTimeout( function(){\n\t\t\t\t\tself._stopProgressBar();\n\t\t\t\t\tsetTimeout( function(){\n\t\t\t\t\t\tself._resetProgressBar( true );\n\t\t\t\t\t\tself._unblock_button();\n\t\t\t\t\t}, 3000 );\n\t\t\t\t}, 2500 );\n\t\t\t} ).fail( error => {\n\t\t\t\tself._log( error );\n\t\t\t\tself._updateProgressStatus( error.message );\n\t\t\t\tself._color = 'red';\n\t\t\t\tsetTimeout( function(){\n\t\t\t\t\tself._stopProgressBar();\n\t\t\t\t\tself._unblock_button();\n\t\t\t\t}, 1500 );\n\t\t\t} );\n\t\t}\n\t\t\n\t\t/**\n\t\t * Console log wrapper with debug settings.\n\t\t * @param data\n\t\t * @returns {feedGenerator}\n\t\t * @private\n\t\t */\n\t\t_log( data ) {\n\t\t\t// noinspection JSUnresolvedVariable\n\t\t\tif ( opts.wpf_debug ) {\n\t\t\t\tconsole.log( data );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t/**\n\t\t * Run the progressbar refresh interval\n\t\t * @param {int} refreshInterval\n\t\t * @returns {feedGenerator}\n\t\t * @private\n\t\t */\n\t\t_progressBarActive( refreshInterval = 0 ) {\n\t\t\tlet self = this;\n\t\t\tthis._toggleProgressBar( true );\n\t\t\tthis._timer = setInterval( function(){\n\t\t\t\tself._updateProgressBar();\n\t\t\t}, refreshInterval || 1000 );\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t/**\n\t\t * Stop Progressbar\n\t\t * @returns {feedGenerator}\n\t\t * @private\n\t\t */\n\t\t_stopProgressBar() {\n\t\t\tclearInterval( this._timer );\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t/**\n\t\t * Reset Progressbar\n\t\t * @returns {feedGenerator}\n\t\t * @private\n\t\t */\n\t\t_resetProgressBar( update ) {\n\t\t\tthis._toggleProgressBar( false );\n\t\t\tthis._updateProgressStatus( '' );\n\t\t\tclearInterval( this._timer );\n\t\t\tthis._color = false;\n\t\t\tthis._timer = null;\n\t\t\tthis._progress = 0;\n\t\t\tif ( update ) {\n\t\t\t\tthis._updateProgressBar();\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t/**\n\t\t * Show hide the progress bar el\n\t\t * @param status\n\t\t * @returns {feedGenerator}\n\t\t * @private\n\t\t */\n\t\t_toggleProgressBar( status ) {\n\t\t\tlet table = $('#feed_progress_table');\n\t\t\tif ( status ) {\n\t\t\t\ttable.show();\n\t\t\t} else {\n\t\t\t\ttable.hide();\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t/**\n\t\t * Update Progress bar text status\n\t\t * @param {string} status\n\t\t * @returns {feedGenerator}\n\t\t * @private\n\t\t */\n\t\t_updateProgressStatus( status ) {\n\t\t\t$( '.feed-progress-status' ).text( status );\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t/**\n\t\t * Update Progress Data\n\t\t * hooked with setInterval\n\t\t * @private\n\t\t */\n\t\t_updateProgressBar() {\n\t\t\tlet percentage = $( '.feed-progress-percentage' ),\n\t\t\t\tbar = $( '.feed-progress-bar-fill' ),\n\t\t\t\t_progress = `${Math.round( this._progress )}%`;\n\t\t\tbar.css( {\n\t\t\t\twidth: _progress,\n\t\t\t} );\n\t\t\tpercentage.text( _progress );\n\t\t}\n\t}\n\t// expose to the global scope\n\twindow.wf = {\n\t\thelper: helper,\n\t\tfeedEditor: feedEditor,\n\t\tgenerator: feedGenerator,\n\t};\n\t$(window).on('load', function() {\n\t\t// Template loading ui conflict\n\t\tif ($(location).attr(\"href\").match(/webappick.*feed/g) !== null) {\n\t\t\t$('#wpbody-content').addClass('woofeed-body-content');\n\t\t}\n\n\t\t// on edit page show item wrapper dropdown\n\t\tlet current_page_url_query = window.location.search;\n\t\tlet urlParams = new URLSearchParams(current_page_url_query);\n\t\tlet page_action = urlParams.get('action');\n\n\t\t// ClipBoardJS\n\t\tclip();\n\t\t// postbox toggle\n\t\tpostboxes.add_postbox_toggles(pagenow);\n\t\t// initialize generator\n\t\tlet generator = new feedGenerator();\n\t\tgenerator.init();\n\t\t// noinspection JSUnresolvedVariable\n\t\tif( '' !== opts.generator.feed && opts.generator.regenerate ) {\n\t\t\n\t\t}\n\t\t// initialize editor\n\t\tfeedEditor.init();\n\t\thelper.common(); // Generate Feed Add Table Row\n\t\ttooltip();\n\t\t// validate feed editor\n\t\t$(\".generateFeed\").validate();\n\t\t// document events\n\t\t$(document)\n\t\t\t.on('click', '[data-toggle_slide]', function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\t$($(this).data('toggle_slide')).slideToggle('fast');\n\t\t\t})\n\t\t\t// XML Feed Wrapper\n\t\t\t.on('click', '#wf_newRow', function () {\n\t\t\t\tlet tbody = $('#table-1 tbody'),\n\t\t\t\t\ttemplate = $('#feed_config_template').text().trim().replace(/__idx__/g, tbody.find('tr').length);\n\t\t\t\ttbody.append(template);\n\t\t\t\thelper.fancySelect($('.outputType'));\n\t\t\t})\n\t\t\t// feed delete alert.\n\t\t\t.on('click', '.single-feed-delete', function (event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\tif (confirm(opts.form.del_confirm)) {\n\t\t\t\t\twindow.location.href = $(this).attr('val');\n\t\t\t\t}\n\t\t\t})\n\t\t\t// clear cache data.\n\t\t\t.on('click', '.wf_clean_cache_wrapper', function(event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tvar nonce = $('.woo-feed-clean-cache-nonce').val();\n\t\t\t\tvar loader = $('.woo-feed-cache-loader');\n\n\t\t\t\t//show loader\n\t\t\t\tloader.show();\n\n\t\t\t\t// passed cache nonce\n\t\t\t\twpAjax.post('clear_cache_data', {\n\t\t\t\t\t_ajax_clean_nonce: nonce\n\t\t\t\t}).then(function (response) {\n\t\t\t\t\tif( response.success ) {\n\t\t\t\t\t\tloader.hide(); //hide loader\n\t\t\t\t\t\tlocation.reload();\n\t\t\t\t\t}\n\t\t\t\t}).fail(function (e) {\n\t\t\t\t\tconsole.log('something wrong');\n\t\t\t\t});\n\n\t\t\t})// Copy Status\n\t\t\t.on('click', '#woo-feed-copy-status-btn', function(event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tlet button = $('#woo-feed-copy-status-btn');\n\t\t\t\tlet status_area = $('#woo-feed-status-area');\n\t\t\t\tbutton.val('Copied');\n\t\t\t\tstatus_area.css('visibility','visible');\n\t\t\t\tstatus_area.select();\n\n\t\t\t\tdocument.execCommand('copy');\n\t\t\t})\n\t\t\t// feed value dropdown change.\n\t\t\t.on('change', '.wf_attr.wf_attributes', function(event) {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t$('.fancy-picker-picked').trigger(\"click\"); // trigger fancy select box clicked\n\n\t\t\t\t// price attributes\n\t\t\t\tvar price_attributes = ['price', 'current_price', 'sale_price', 'price_with_tax', 'current_price_with_tax', 'sale_price_with_tax', 'shipping_cost'];\n\t\t\t\t// current value\n\t\t\t\tvar current_attribute_value = $(this).val();\n\t\t\t\tvar outputSelect = $(this).parents('tr').find('.outputType');\n\t\t\t\tvar fancyOption = $(this).parents('tr').find('.fancy-picker-content .fancy-picker-option');\n\t\t\t\tvar fancyDataPicker = $(this).parents('tr').find('.fancy-picker-data span');\n\t\t\t\tvar selectIf, selectKey;\n\n\t\t\t\t// when any attribute is selected, pick the key\n\t\t\t\tif( price_attributes.includes(current_attribute_value) ) {\n\t\t\t\t\t// when select any price attribute\n\t\t\t\t\tselectIf = 'for_price';\n\t\t\t\t\tselectKey = \"Price\";\n\t\t\t\t} else if ( \"\" !== current_attribute_value && -1 !== current_attribute_value.indexOf('wf_taxo') ) {\n\n\t\t\t\t\t// when select any custom taxonomy\n\t\t\t\t\tselectIf = 'for_custom_taxo';\n\t\t\t\t\tselectKey = \"parent_if_empty\";\n\t\t\t\t} else {\n\n\t\t\t\t\tselectIf = 'for_all';\n\t\t\t\t\tselectKey = 'Default';\n\t\t\t\t}\n\n\t\t\t\t// remove selected class from old selected option\n\t\t\t\tfancyOption.removeClass('selected');\n\n\t\t\t\t// when value dropdown is selected as price or any custom taxonomy\n\t\t\t\tif( selectIf === 'for_custom_taxo' || selectIf === 'for_price' ) {\n\n\t\t\t\t\t// update \"Option Type\" when select key matches\n\t\t\t\t\tfancyOption.each(function(item) {\n\t\t\t\t\t\tif( selectKey === $(this).text() ) {\n\t\t\t\t\t\t\t$(this).addClass('selected');\n\t\t\t\t\t\t\tfancyDataPicker.text(selectKey);\n\t\t\t\t\t\t\toutputSelect.find(\"option\").text(selectKey);\n\t\t\t\t\t\t\toutputSelect.find(\"option\").val( $(this).data('value') );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\n\t\t\t\t\t// update \"Option Type\" when select key matches\n\t\t\t\t\t// fancyOption.each(function(item) {\n\t\t\t\t\t// \tif( \"parent_if_empty\" !== $(this).text() && \"for_all\" === selectIf ) {\n\t\t\t\t\t// \t\t$(this).addClass('selected');\n\t\t\t\t\t// \t\tfancyDataPicker.text(selectKey);\n\t\t\t\t\t// \t\toutputSelect.find(\"option\").text(selectKey);\n\t\t\t\t\t// \t\toutputSelect.find(\"option\").val( $(this).data('value') );\n\t\t\t\t\t// \t}\n\t\t\t\t\t// });\n\t\t\t\t}\n\n\t\t\t})\n\t\t\t// bulk delete alert.\n\t\t\t.on('click', '#doaction, #doaction2', function () {\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\treturn confirm(opts.form.del_confirm_multi);\n\t\t\t})\n\t\t\t// Generate Feed Table Row Delete\n\t\t\t.on('change', '.dType', function () {\n\t\t\t\tlet self = $(this),\n\t\t\t\t\ttype = self.val(),\n\t\t\t\t\trow = self.closest('tr');\n\t\t\t\t\n\t\t\t\tif (type === 'pattern') {\n\t\t\t\t\trow.find('.value_attribute').hide();\n\t\t\t\t\trow.find('.value_pattern').show();\n\t\t\t\t} else if (type === 'attribute') {\n\t\t\t\t\trow.find('.value_attribute').show();\n\t\t\t\t\trow.find('.value_pattern').hide();\n\t\t\t\t} else if (type === 'remove') {\n\t\t\t\t\trow.find('.value_attribute').hide();\n\t\t\t\t\trow.find('.value_pattern').hide();\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Generate Feed Form Submit\n\t\t\t.on('click', '.delRow', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\t$(this).closest('tr').remove();\n\t\t\t\thelper.reindex_config_table();\n\t\t\t})\n\t\t\t.on('submit', '#generateFeed', function () {\n\t\t\t\t// Feed Generating form validation\n\t\t\t\t$(this).validate();\n\t\t\t\t\n\t\t\t\tif ($(this).valid()) {\n\t\t\t\t\t$(\".makeFeedResponse\")\n\t\t\t\t\t\t.show()\n\t\t\t\t\t\t.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\t\t\t\t}\n\t\t\t})\n\t\t\t// Generate Update Feed Form Submit\n\t\t\t.on('submit', '#updatefeed', function (e, data) {\n\t\t\t\t// Feed Generating form validation\n\t\t\t\t$(this).validate();\n\t\t\t\t\n\t\t\t\tif ($(this).valid()) {\n\t\t\t\t\t$(\".makeFeedResponse\")\n\t\t\t\t\t\t.show()\n\t\t\t\t\t\t.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\t\t\t\t}\n\t\t\t})\n\t\t\t.on( 'ready woo_feed_config_loaded', function(){\n\t\t\t\tconsole.log(\"Ready Provided\");\n\t\t\t\tif( $('#ftpenabled').val() == 0 ){\n\t\t\t\t\t$('.google-merchant-message').hide('slow');\n\t\t\t\t\t$('.woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select').attr('disabled','disabled');\n\t\t\t\t} else {\n\t\t\t\t\tif( $('#provider').val() == 'google' ) {\n\t\t\t\t\t\t$('.google-merchant-message').show('slow');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$('.google-merchant-message').hide('slow');\n\t\t\t\t\t}\n\t\t\t\t\t$('.woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select').removeAttr('disabled');\n\t\t\t\t}\n\n\t\t\t\t$('#ftpenabled').on('change', function(){\n\t\t\t\t\tif( $('#ftpenabled').val() == 0 ){\n\t\t\t\t\t\t$('.google-merchant-message').hide('slow');\n\t\t\t\t\t\t$('.woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select').attr('disabled','disabled');\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t$('.woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) input, .woo-feed-ftp .ftpconfig tr:not(.ftpcontroller) select').removeAttr('disabled');\n\n\t\t\t\t\t\t// Google merchant specific message\n\t\t\t\t\t\tif( $('#provider').val() == 'google' ){\n\t\t\t\t\t\t\t$('.google-merchant-message').show('slow');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$('.google-merchant-message').hide('slow');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('change', '.ftporsftp', function () {\n\t\t\t\tlet server = $(this).val(),\n\t\t\t\t\tstatus = $('.ssh2_status');\n\t\t\t\t\n\t\t\t\tif (server === 'sftp') {\n\t\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\t\tstatus.show().css('color', 'dodgerblue').text(opts.form.sftp_checking);\n\t\t\t\t\twpAjax.post('get_ssh2_status', {\n\t\t\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\t\t\tserver: server\n\t\t\t\t\t}).then(function (response) {\n\t\t\t\t\t\tif (response === 'exists') {\n\t\t\t\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\t\t\t\tstatus.css('color', '#2CC185').text(opts.form.sftp_available);\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\tstatus.hide();\n\t\t\t\t\t\t\t}, 1500);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\t\t\t\tstatus.show().css('color', 'red').text(opts.form.sftp_warning);\n\t\t\t\t\t\t}\n\t\t\t\t\t}).fail(function (e) {\n\t\t\t\t\t\tstatus.hide();\n\t\t\t\t\t\thelper.ajax_fail(e);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tstatus.hide();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('click', '[name=\"save_feed_config\"]', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\t$('#updatefeed').trigger('submit', {\n\t\t\t\t\tsave: true\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('change', '#provider', function (event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\t//if (!$(this).closest('.generateFeed').hasClass('add-new')) return; // only for new feed.\n\n\t\t\t\tlet merchant = $(this).val(),\n\t\t\t\t\ttemplateName = $(this).find(':selected').text(),\n\t\t\t\t\tname = $('#filename').val(),\n\t\t\t\t\tfeedType = $(\"#feedType\"),\n\t\t\t\t\tfeedForm = $(\"#providerPage\"),\n\t\t\t\t\tmerchantInfo = $('#feed_merchant_info'); // set loading..\n\t\t\t\t\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\tfeedForm.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\t\t\t\t\n\t\t\t\tmerchantInfo.find('.spinner').addClass('is-active');\n\t\t\t\tfeedType.disabled(!0); // disable dropdown\n\t\t\t\t\n\t\t\t\tfeedType.parent().find('.spinner').addClass('is-active');\n\t\t\t\tmerchantInfo.find('.merchant-info-section .data').html(''); // remove previous data\n\t\t\t\t// Get Merchant info for selected Provider/Merchant\n\t\t\t\t\n\t\t\t\tif (merchantInfoCache.hasOwnProperty(merchant)) {\n\t\t\t\t\tfeedEditor.renderMerchantInfo(merchantInfo, feedType, merchantInfoCache[merchant]);\n\n\t\t\t\t\t/**\n\t\t\t\t\t * Triggers after merchant configuration is fetched & loaded\n\t\t\t\t\t * */\n\t\t\t\t\t$(document).trigger('woo_feed_config_loaded');\n\n\t\t\t\t} else {\n\t\t\t\t\twpAjax.send('woo_feed_get_merchant_info', {\n\t\t\t\t\t\ttype: 'GET',\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tnonce: opts.nonce,\n\t\t\t\t\t\t\tprovider: merchant,\n\t\t\t\t\t\t\ttemplateName: templateName\n\t\t\t\t\t\t}\n\t\t\t\t\t}).then(function (r) {\n\t\t\t\t\t\tmerchantInfoCache[merchant] = r;\n\t\t\t\t\t\tfeedEditor.renderMerchantInfo(merchantInfo, feedType, r)\n\t\t\t\t\t\t// console.log('filter load')\n\t\t\t\t\t\t// $('#utm_source').val(templateName)\n\t\t\t\t\t}).then(function(){\n\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * Triggers after merchant configuration is fetched & loaded\n\t\t\t\t\t\t * */\n\t\t\t\t\t\t$(document).trigger('woo_feed_config_loaded');\n\n\t\t\t\t\t}).fail(helper.ajax_fail);\n\t\t\t\t} // Get FeedForm For Selected Provider/Merchant\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tif (merchantTemplateCache.hasOwnProperty(merchant)) {\n\t\t\t\t\tfeedEditor.renderMerchantTemplate(feedForm, merchantTemplateCache[merchant]);\n\n\t\t\t\t\t/**\n\t\t\t\t\t * Triggers after merchant configuration is fetched & loaded\n\t\t\t\t\t * */\n\t\t\t\t\t$(document).trigger('woo_feed_config_loaded');\n\n\t\t\t\t} else {\n\t\t\t\t\twpAjax.post('get_feed_merchant', {\n\t\t\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\t\t\tmerchant: merchant\n\t\t\t\t\t}).then(function (r) {\n\t\t\t\t\t\tmerchantTemplateCache[merchant] = r;\n\t\t\t\t\t\tfeedEditor.renderMerchantTemplate(feedForm, r);\n\t\t\t\t\t\t$('#utm_source').val(templateName);\n\t\t\t\t\t\t$('#utm_campaign').val(name);\n\t\t\t\t\t\t//when merchant is bing, change delimiter and enclosure\n\t\t\t\t\t\tif( 'bing' === merchant ) {\n\t\t\t\t\t\t\t//delimiter value\n\t\t\t\t\t\t\t$(\"#delimiter option\").removeAttr('selected');\n\t\t\t\t\t\t\t$(\"#delimiter option[value=\\\"tab\\\"]\").attr('selected', 'selected');\n\n\t\t\t\t\t\t\t//enclosure value\n\t\t\t\t\t\t\t$(\"#enclosure option\").removeAttr('selected');\n\t\t\t\t\t\t\t$(\"#enclosure option[value=\\\" \\\"]\").attr('selected', 'selected');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//reviewer options hide\n\t\t\t\t\t\tif( 'google_product_review' !== merchant) {\n\t\t\t\t\t\t\t$('.wf_attributes option[value=\"reviewer_name\"]').hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}).then(function(){\n\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t* Triggers after merchant configuration is fetched & loaded\n\t\t\t\t\t\t* */\n\t\t\t\t\t\t$(document).trigger('woo_feed_config_loaded');\n\n\t\t\t\t\t}).fail(helper.ajax_fail);\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Feed Active and Inactive status change via ajax\n\t\t\t.on('change', '.woo_feed_status_input', function () {\n\t\t\t\tlet self = $(this);\n\t\t\t\twpAjax.post('update_feed_status', {\n\t\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\t\tfeedName: self.val(),\n\t\t\t\t\tstatus: self[0].checked ? 1 : 0\n\t\t\t\t});\n\t\t\t});\n\t\t// event with trigger\n\t\t$(document)\n\t\t\t.on('change', '[name=\"is_outOfStock\"], [name=\"product_visibility\"]', function () {\n\t\t\t\tlet outOfStockVisibilityRow = $('.out-of-stock-visibility');\n\t\t\t\tif ($('[name=\"is_outOfStock\"]:checked').val() === 'n' && $('[name=\"product_visibility\"]:checked').val() === '1') {\n\t\t\t\t\toutOfStockVisibilityRow.show();\n\t\t\t\t} else {\n\t\t\t\t\toutOfStockVisibilityRow.hide();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('change', '.attr_type', function () {\n\t\t\t\t// Attribute type selection\n\t\t\t\tlet self = $(this),\n\t\t\t\t\ttype = self.val(),\n\t\t\t\t\trow = self.closest('tr');\n\t\t\t\t\n\t\t\t\tif (type === 'pattern') {\n\t\t\t\t\trow.find('.wf_attr').hide();\n\t\t\t\t\trow.find('.wf_attr').val('');\n\t\t\t\t\trow.find('.wf_default').show();\n\t\t\t\t} else {\n\t\t\t\t\trow.find('.wf_attr').show();\n\t\t\t\t\trow.find('.wf_default').hide();\n\t\t\t\t\trow.find('.wf_default').val('');\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('change', '.wf_mattributes, .attr_type', function () {\n\t\t\t\tlet row = $(this).closest('tr'),\n\t\t\t\t\tattribute = row.find('.wf_mattributes'),\n\t\t\t\t\ttype = row.find('.attr_type'),\n\t\t\t\t\tvalueColumn = row.find('td:eq(4)'),\n\t\t\t\t\tprovider = $('#provider').val();\n\t\t\t\t\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\tif (opts.form.google_category.hasOwnProperty(attribute.val()) && type.val() === 'pattern' && helper.in_array(provider, opts.form.google_category[attribute.val()])) {\n\t\t\t\t\tif (valueColumn.find('select.selectize').length === 0) {\n\t\t\t\t\t\tvalueColumn.find('input.wf_default').remove();\n\t\t\t\t\t\tvalueColumn.append('<span class=\"wf_default wf_attributes\"><select name=\"default[]\" class=\"selectize\"></select></span>');\n\t\t\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\t\t\tvalueColumn.append(`<span style=\"font-size:x-small;\"><a style=\"color: red\" href=\"http://webappick.helpscoutdocs.com/article/19-how-to-map-store-category-with-merchant-category\" target=\"_blank\">${opts.learn_more}</a></span>`);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (!googleCategories) {\n\t\t\t\t\t\t\tvalueColumn.append('<span class=\"spinner is-active\" style=\"margin: 0;\"></span>');\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet select = valueColumn.find('.wf_attributes select');\n\t\t\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\t\t\thelper.selectize(select, {\n\t\t\t\t\t\t\tpreload: true,\n\t\t\t\t\t\t\tplaceholder: opts.form.select_category,\n\t\t\t\t\t\t\tload: function load(query, cb) {\n\t\t\t\t\t\t\t\tif (!googleCategories) {\n\t\t\t\t\t\t\t\t\twpAjax.send('get_google_categories', {\n\t\t\t\t\t\t\t\t\t\ttype: 'GET',\n\t\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\t\t\t\t\t\t\t\taction: \"get_google_categories\",\n\t\t\t\t\t\t\t\t\t\t\tprovider: provider\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}).then(function (r) {\n\t\t\t\t\t\t\t\t\t\tgoogleCategories = r;\n\t\t\t\t\t\t\t\t\t\tcb(googleCategories);\n\t\t\t\t\t\t\t\t\t\tvalueColumn.find('.spinner').remove();\n\t\t\t\t\t\t\t\t\t}).fail(helper.ajax_fail);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcb(googleCategories);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (attribute.val() !== 'current_category' && valueColumn.find('input.wf_default').length === 0) {\n\t\t\t\t\t\tvalueColumn.find('span').remove();\n\t\t\t\t\t\tvalueColumn.append('<input autocomplete=\"off\" class=\"wf_default wf_attributes\" type=\"text\" name=\"default[]\" value=\"\">');\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (type.val() !== 'pattern') {\n\t\t\t\t\t\t\tvalueColumn.find('input.wf_default').hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('change', '#feedType,#provider', function (e) {\n\t\t\t\tlet type = $('#feedType').val(),\n\t\t\t\t\tprovider = $('#provider').val(),\n\t\t\t\t\titemWrapper = $('.itemWrapper'),\n\t\t\t\t\twf_csv_txt = $('.wf_csvtxt');\n\t\t\t\t\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\tif (type !== '' && helper.in_array(provider, opts.form.item_wrapper_hidden)) {\n\t\t\t\t\titemWrapper.hide();\n\t\t\t\t}\n\n\t\t\t\t//when feed type is changed\n\t\t\t\tif( 'feedType' === e.target.id ) {\n\t\t\t\t\tif (type === 'csv' || type === 'txt' || type === 'tsv') {\n\t\t\t\t\t\titemWrapper.hide();\n\t\t\t\t\t\twf_csv_txt.show();\n\n\t\t\t\t\t\tif( 'tsv' === type ) {\n\t\t\t\t\t\t\t$('#delimiter option:last').prop(\"selected\", \"selected\");\n\t\t\t\t\t\t} else if( 'csv' === type ) {\n\t\t\t\t\t\t\t$('#delimiter option:first').prop(\"selected\", \"selected\");\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if( type === 'xml' ) {\n\t\t\t\t\t\titemWrapper.show();\n\t\t\t\t\t\twf_csv_txt.hide();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t})\n\t\t\t.trigger('change');\n\n\n\t\t// product Attribute class\n\t\tclass WooFeedCustomFields {\n\n\t\t\tconstructor( field, status, isTaxonomy ) {\n\t\t\t\tthis.productCustomFields( field, status, isTaxonomy );\n\t\t\t}\n\n\t\t\tcacheClear() {\n\t\t\t\tlet data = {\n\t\t\t\t\taction: 'woo_feed_product_attribute_cache_remove',\n\t\t\t\t\tnonce: wpf_ajax_obj.ajax.nonce,\n\t\t\t\t};\n\t\t\t\t$.ajax({\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\turl: wpf_ajax_obj.wpf_ajax_url,\n\t\t\t\t\tdata\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tproductCustomFields( field, status = false, isTaxonomy ) {\n\t\t\t\tlet data = {\n\t\t\t\t\taction: 'woo_feed_custom_fields_status_change',\n\t\t\t\t\tnonce: wpf_ajax_obj.ajax.nonce,\n\t\t\t\t\tfield,\n\t\t\t\t\tstatus,\n\t\t\t\t\tisTaxonomy\n\t\t\t\t};\n\t\t\t\t$.ajax({\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\turl: wpf_ajax_obj.wpf_ajax_url,\n\t\t\t\t\tdata,\n\t\t\t\t\tsuccess: ( response ) => {\n\t\t\t\t\t\tif( response.success ) {\n\t\t\t\t\t\t\tthis.cacheClear();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( response );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t$(document).on('click', '.woofeed-custom-fields [id*=\"-switcher\"]', function () {\n\t\t\tlet field = $(this).attr( 'id' ).split( '-' )[0],\n\t\t\t\tisTaxonomy = $(this).data( 'taxonomy' ),\n\t\t\t\tstatus = $(this).prop( 'checked' );\n\t\t\tnew WooFeedCustomFields( field, status, isTaxonomy );\n\t\t});\n\n\t\t// Remove sticky cart on feature page\n\t\t$(document).ready(function() {\n\t\t\tvar s = $(\".wapk-feed-buy-now-container\");\n\t\t\tvar pos = s.position();\n\t\t\t$(window).scroll(function() {\n\t\t\t\tvar windowpos = $(window).scrollTop();\n\t\t\t\tif ( windowpos <= 5000 ) {\n\t\t\t\t\ts.addClass(\"fixed\");\n\t\t\t\t} else {\n\t\t\t\t\ts.removeClass(\"fixed\");\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t});\n\n\t$(document).on('click', '#woo-feed-debug-log-download', function (e) {\n\t\te.preventDefault();\n\t\t$(\"<a />\", {\n\t\t\tdownload: new Date() + \".log\",\n\t\t\thref: URL.createObjectURL(\n\t\t\t\tnew Blob([$(\"#woo-feed-debug-log\").val()], {\n\t\t\t\t\ttype: \"text/plain\"\n\t\t\t\t})),\n\t\t}).appendTo(\"body\")[0].click();\n\t});\n\n\t$(document).on('keyup', '#filename', function(e) {\n\t\tvar name = $('#filename').val();\n\t\t$('#utm_campaign').val(name);\n\t});\n\n})(jQuery, window, document, wp.ajax, wpf_ajax_obj);\n"]}
|
admin/partials/woo-feed-content-settings.php
CHANGED
@@ -60,7 +60,7 @@ global $feedRules, $wooFeedDropDown, $merchant;
|
|
60 |
</td>
|
61 |
</tr>
|
62 |
<tr>
|
63 |
-
<th><label for="feedType"><?php esc_html_e( '
|
64 |
<td>
|
65 |
<select name="feedType" id="feedType" class="generalInput" required>
|
66 |
<option value=""></option>
|
60 |
</td>
|
61 |
</tr>
|
62 |
<tr>
|
63 |
+
<th><label for="feedType"><?php esc_html_e( 'File Type', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
|
64 |
<td>
|
65 |
<select name="feedType" id="feedType" class="generalInput" required>
|
66 |
<option value=""></option>
|
admin/partials/woo-feed-edit-ftp.php
CHANGED
@@ -10,14 +10,15 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
10 |
</tr>
|
11 |
</tbody>
|
12 |
<?php } else { ?>
|
13 |
-
<tbody>
|
14 |
-
<tr>
|
15 |
<td><label for="ftpenabled"><?php esc_html_e( 'Enabled', 'woo-feed' ); ?></label></td>
|
16 |
<td>
|
17 |
<select name="ftpenabled" id="ftpenabled">
|
18 |
<option <?php echo ( '0' == $feedRules['ftpenabled'] ) ? 'selected="selected" ' : ''; ?>value="0"><?php esc_html_e( 'Disabled', 'woo-feed' ); ?></option>
|
19 |
<option <?php echo ( '1' == $feedRules['ftpenabled'] ) ? 'selected="selected" ' : ''; ?>value="1"><?php esc_html_e( 'Enabled', 'woo-feed' ); ?></option>
|
20 |
</select>
|
|
|
21 |
</td>
|
22 |
</tr>
|
23 |
<tr>
|
10 |
</tr>
|
11 |
</tbody>
|
12 |
<?php } else { ?>
|
13 |
+
<tbody class="ftpconfig">
|
14 |
+
<tr class="ftpcontroller">
|
15 |
<td><label for="ftpenabled"><?php esc_html_e( 'Enabled', 'woo-feed' ); ?></label></td>
|
16 |
<td>
|
17 |
<select name="ftpenabled" id="ftpenabled">
|
18 |
<option <?php echo ( '0' == $feedRules['ftpenabled'] ) ? 'selected="selected" ' : ''; ?>value="0"><?php esc_html_e( 'Disabled', 'woo-feed' ); ?></option>
|
19 |
<option <?php echo ( '1' == $feedRules['ftpenabled'] ) ? 'selected="selected" ' : ''; ?>value="1"><?php esc_html_e( 'Enabled', 'woo-feed' ); ?></option>
|
20 |
</select>
|
21 |
+
<div class="google-merchant-message webappick-info"><?php _e( 'For Google SFTP/FTP upload, first you need to create a feed on your Google Merchant Center.', 'woo-feed' ); ?></div>
|
22 |
</td>
|
23 |
</tr>
|
24 |
<tr>
|
admin/partials/woo-feed-status.php
CHANGED
@@ -50,7 +50,7 @@
|
|
50 |
<table class="woo-feed-status-table">
|
51 |
<tbody>
|
52 |
<tr>
|
53 |
-
<td style="text-align: right"><input type="button" class="button button-primary" style="width:200px;height: 50px;font-size: large;font-weight: bold;" id="woo-feed-copy-status-btn" value="Copy Status"/></td>
|
54 |
</tr>
|
55 |
</tbody>
|
56 |
</table>
|
@@ -61,7 +61,6 @@
|
|
61 |
<th colspan="2"><?php esc_html_e('Environment', 'woo-feed'); ?></th>
|
62 |
<th class="woo-feed-status-message-header">
|
63 |
<span><?php esc_html_e('Message', 'woo-feed'); ?></span>
|
64 |
-
<input type="button" class="button button-primary" id="woo-feed-copy-status-btn" value="Copy Status"/>
|
65 |
</th>
|
66 |
</tr>
|
67 |
</thead>
|
@@ -71,17 +70,19 @@
|
|
71 |
$status_text = "`\n";
|
72 |
|
73 |
foreach ( $system_data->get_woo_feed_status() as $key => $woo_feed_status ) {
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
<
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
|
|
|
|
85 |
}
|
86 |
|
87 |
// Feed Files
|
50 |
<table class="woo-feed-status-table">
|
51 |
<tbody>
|
52 |
<tr>
|
53 |
+
<td style="text-align: right"><input type="button" class="button button-primary" style="width:200px;height: 50px;background: linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%);font-size: large;font-weight: bold;" id="woo-feed-copy-status-btn" value="Copy Status"/></td>
|
54 |
</tr>
|
55 |
</tbody>
|
56 |
</table>
|
61 |
<th colspan="2"><?php esc_html_e('Environment', 'woo-feed'); ?></th>
|
62 |
<th class="woo-feed-status-message-header">
|
63 |
<span><?php esc_html_e('Message', 'woo-feed'); ?></span>
|
|
|
64 |
</th>
|
65 |
</tr>
|
66 |
</thead>
|
70 |
$status_text = "`\n";
|
71 |
|
72 |
foreach ( $system_data->get_woo_feed_status() as $key => $woo_feed_status ) {
|
73 |
+
if( isset($woo_feed_status['label']) && $woo_feed_status['status'] && $woo_feed_status['message'] ) {
|
74 |
+
$label = $woo_feed_status['label'];
|
75 |
+
$status_icon = $woo_feed_status['status'];
|
76 |
+
$message = $woo_feed_status['message'];
|
77 |
+
$status_text .= $label.": ". wp_strip_all_tags(str_replace(array( '☞', '<br/>' ),[ "\n☞", "\n" ], $message))."\n\n";
|
78 |
+
?>
|
79 |
+
<tr data-status="<?php esc_attr($key); ?>">
|
80 |
+
<td style="font-weight: bold;width:40%;" ><?php echo esc_attr($label); ?></td>
|
81 |
+
<td style="width: 5%;"><?php echo $status_icon; //phpcs:ignore?></td>
|
82 |
+
<td><?php echo $message; //phpcs:ignore?></td>
|
83 |
+
</tr>
|
84 |
+
<?php
|
85 |
+
}
|
86 |
}
|
87 |
|
88 |
// Feed Files
|
includes/class-woo-feed.php
CHANGED
@@ -138,11 +138,6 @@ class Woo_Feed {
|
|
138 |
* The class responsible for generating feed
|
139 |
*/
|
140 |
require_once WOO_FEED_FREE_PATH . 'includes/feeds/class-woo-feed-generate.php';
|
141 |
-
|
142 |
-
/**
|
143 |
-
* The class is a FTP library
|
144 |
-
*/
|
145 |
-
require_once WOO_FEED_FREE_PATH . 'includes/classes/class-woo-feed-ftp.php';
|
146 |
|
147 |
/**
|
148 |
* The class is a shipping calculation library
|
138 |
* The class responsible for generating feed
|
139 |
*/
|
140 |
require_once WOO_FEED_FREE_PATH . 'includes/feeds/class-woo-feed-generate.php';
|
|
|
|
|
|
|
|
|
|
|
141 |
|
142 |
/**
|
143 |
* The class is a shipping calculation library
|
includes/classes/class-woo-feed-products-v3.php
CHANGED
@@ -219,7 +219,7 @@ class Woo_Feed_Products_v3
|
|
219 |
/**
|
220 |
* Already Processed merchant attributes by the attribute loop
|
221 |
* this will ensure unique merchant attribute.
|
222 |
-
* @see
|
223 |
* @var array
|
224 |
*/
|
225 |
protected $processed_merchant_attributes = array();
|
@@ -360,7 +360,7 @@ class Woo_Feed_Products_v3
|
|
360 |
/**
|
361 |
* Get Products using WP_Query
|
362 |
*
|
363 |
-
*
|
364 |
*/
|
365 |
public function get_wp_query_products()
|
366 |
{
|
@@ -382,8 +382,7 @@ class Woo_Feed_Products_v3
|
|
382 |
*/
|
383 |
public function query_products()
|
384 |
{
|
385 |
-
$products = [];
|
386 |
-
if ('wc' == $this->queryType) {
|
387 |
$products = $this->get_wc_query_products();
|
388 |
} elseif ('wp' == $this->queryType) {
|
389 |
$products = $this->get_wp_query_products();
|
@@ -606,7 +605,7 @@ class Woo_Feed_Products_v3
|
|
606 |
if (!empty($attributeValue)) {
|
607 |
$attributeValue = trim($attributeValue);
|
608 |
|
609 |
-
if ('custom' === $this->config['provider'] && strpos($attributeValue, '<![CDATA[') === false) {
|
610 |
$attributeValue = htmlentities($attributeValue, ENT_XML1 | ENT_QUOTES, 'UTF-8');
|
611 |
}
|
612 |
}
|
@@ -622,7 +621,7 @@ class Woo_Feed_Products_v3
|
|
622 |
$this->feedBody .= "\n";
|
623 |
} else {
|
624 |
$this->feedBody .= '<' . $getReplacedAttribute . '/>';
|
625 |
-
|
626 |
}
|
627 |
} elseif (in_array($feedType, ['csv', 'tsv', 'xls'], true)) {
|
628 |
$merchant_attribute = woo_feed_replace_to_merchant_attribute($merchant_attribute, $merchant, $feedType);
|
@@ -744,6 +743,12 @@ class Woo_Feed_Products_v3
|
|
744 |
return true;
|
745 |
}
|
746 |
|
|
|
|
|
|
|
|
|
|
|
|
|
747 |
// Skip for invisible products
|
748 |
if (!$product->is_visible()) {
|
749 |
woo_feed_log_feed_process($this->config['filename'], 'Skipping Product :: Product is not visible.');
|
@@ -1777,7 +1782,12 @@ class Woo_Feed_Products_v3
|
|
1777 |
// Get Variation Description
|
1778 |
if ($product->is_type('variation') && empty($description)) {
|
1779 |
$parent = wc_get_product($product->get_parent_id());
|
1780 |
-
|
|
|
|
|
|
|
|
|
|
|
1781 |
}
|
1782 |
$description = $this->remove_short_codes($description);
|
1783 |
|
@@ -2193,24 +2203,22 @@ class Woo_Feed_Products_v3
|
|
2193 |
*/
|
2194 |
protected function image($product)
|
2195 |
{
|
|
|
2196 |
if ($product->is_type('variation')) {
|
2197 |
-
|
2198 |
-
|
2199 |
-
|
2200 |
$image = woo_feed_get_formatted_url($getImage[0]);
|
2201 |
-
|
2202 |
-
$getImage = wp_get_attachment_image_src(get_post_thumbnail_id($product->get_parent_id()),
|
2203 |
-
'single-post-thumbnail');
|
2204 |
$image = woo_feed_get_formatted_url($getImage[0]);
|
2205 |
-
|
2206 |
} else {
|
2207 |
-
|
2208 |
-
|
2209 |
-
|
2210 |
-
$image = isset($getImage[0]) ? woo_feed_get_formatted_url($getImage[0]) : '';
|
2211 |
-
|
2212 |
-
$image = woo_feed_get_formatted_url(wp_get_attachment_url($product->get_id()));
|
2213 |
-
endif;
|
2214 |
}
|
2215 |
|
2216 |
return apply_filters('woo_feed_filter_product_image', $image, $product, $this->config);
|
@@ -2512,20 +2520,18 @@ class Woo_Feed_Products_v3
|
|
2512 |
{
|
2513 |
$status = $product->get_stock_status();
|
2514 |
if ('instock' == $status) {
|
2515 |
-
$
|
2516 |
} elseif ('outofstock' == $status) {
|
2517 |
-
$
|
2518 |
} elseif ('onbackorder' == $status) {
|
2519 |
-
$
|
2520 |
-
} else {
|
2521 |
-
$availability = 'in stock';
|
2522 |
}
|
2523 |
|
2524 |
-
return apply_filters('woo_feed_filter_product_availability', $
|
2525 |
}
|
2526 |
|
2527 |
/**
|
2528 |
-
* Get Product Availability
|
2529 |
*
|
2530 |
* @param WC_Product $product
|
2531 |
*
|
@@ -2541,7 +2547,13 @@ class Woo_Feed_Products_v3
|
|
2541 |
return '';
|
2542 |
}
|
2543 |
|
2544 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
2545 |
|
2546 |
if ('' !== $availability_date && in_array($this->config['provider'], [
|
2547 |
'google',
|
219 |
/**
|
220 |
* Already Processed merchant attributes by the attribute loop
|
221 |
* this will ensure unique merchant attribute.
|
222 |
+
* @see Woo_Feed_Products_v::exclude_current_attribute()
|
223 |
* @var array
|
224 |
*/
|
225 |
protected $processed_merchant_attributes = array();
|
360 |
/**
|
361 |
* Get Products using WP_Query
|
362 |
*
|
363 |
+
* return array
|
364 |
*/
|
365 |
public function get_wp_query_products()
|
366 |
{
|
382 |
*/
|
383 |
public function query_products()
|
384 |
{
|
385 |
+
$products = []; if ('wc' == $this->queryType) {
|
|
|
386 |
$products = $this->get_wc_query_products();
|
387 |
} elseif ('wp' == $this->queryType) {
|
388 |
$products = $this->get_wp_query_products();
|
605 |
if (!empty($attributeValue)) {
|
606 |
$attributeValue = trim($attributeValue);
|
607 |
|
608 |
+
if ('custom' === $this->config['provider'] && strpos($attributeValue, '<![CDATA[') === false ) {
|
609 |
$attributeValue = htmlentities($attributeValue, ENT_XML1 | ENT_QUOTES, 'UTF-8');
|
610 |
}
|
611 |
}
|
621 |
$this->feedBody .= "\n";
|
622 |
} else {
|
623 |
$this->feedBody .= '<' . $getReplacedAttribute . '/>';
|
624 |
+
$this->feedBody .= "\n";
|
625 |
}
|
626 |
} elseif (in_array($feedType, ['csv', 'tsv', 'xls'], true)) {
|
627 |
$merchant_attribute = woo_feed_replace_to_merchant_attribute($merchant_attribute, $merchant, $feedType);
|
743 |
return true;
|
744 |
}
|
745 |
|
746 |
+
// Skip orphaned variation
|
747 |
+
if( $product->is_type( 'variation' ) && ! $product->get_parent_id() ){
|
748 |
+
woo_feed_log_feed_process($this->config['filename'], sprintf('Skipping Product :: Orphaned variation product [id: %s] skipped.', $product->get_id()));
|
749 |
+
return true;
|
750 |
+
}
|
751 |
+
|
752 |
// Skip for invisible products
|
753 |
if (!$product->is_visible()) {
|
754 |
woo_feed_log_feed_process($this->config['filename'], 'Skipping Product :: Product is not visible.');
|
1782 |
// Get Variation Description
|
1783 |
if ($product->is_type('variation') && empty($description)) {
|
1784 |
$parent = wc_get_product($product->get_parent_id());
|
1785 |
+
|
1786 |
+
if( is_object($parent) ) {
|
1787 |
+
$description = $parent->get_description();
|
1788 |
+
} else {
|
1789 |
+
$description = '';
|
1790 |
+
}
|
1791 |
}
|
1792 |
$description = $this->remove_short_codes($description);
|
1793 |
|
2203 |
*/
|
2204 |
protected function image($product)
|
2205 |
{
|
2206 |
+
$image = '';
|
2207 |
if ($product->is_type('variation')) {
|
2208 |
+
// Variation product type
|
2209 |
+
if (has_post_thumbnail( $product->get_id() ) ) {
|
2210 |
+
$getImage = wp_get_attachment_image_src( get_post_thumbnail_id( $product->get_id() ), 'single-post-thumbnail' );
|
2211 |
$image = woo_feed_get_formatted_url($getImage[0]);
|
2212 |
+
} elseif ( has_post_thumbnail( $product->get_parent_id() ) ) {
|
2213 |
+
$getImage = wp_get_attachment_image_src(get_post_thumbnail_id($product->get_parent_id()), 'single-post-thumbnail');
|
|
|
2214 |
$image = woo_feed_get_formatted_url($getImage[0]);
|
2215 |
+
}
|
2216 |
} else {
|
2217 |
+
// All product type except variation
|
2218 |
+
if ( has_post_thumbnail( $product->get_id() ) ) {
|
2219 |
+
$getImage = wp_get_attachment_image_src( get_post_thumbnail_id( $product->get_id() ), 'single-post-thumbnail' );
|
2220 |
+
$image = isset( $getImage[0] ) ? woo_feed_get_formatted_url( $getImage[0] ) : '';
|
2221 |
+
}
|
|
|
|
|
2222 |
}
|
2223 |
|
2224 |
return apply_filters('woo_feed_filter_product_image', $image, $product, $this->config);
|
2520 |
{
|
2521 |
$status = $product->get_stock_status();
|
2522 |
if ('instock' == $status) {
|
2523 |
+
$status = 'in stock';
|
2524 |
} elseif ('outofstock' == $status) {
|
2525 |
+
$status = 'out of stock';
|
2526 |
} elseif ('onbackorder' == $status) {
|
2527 |
+
$status = 'on backorder';
|
|
|
|
|
2528 |
}
|
2529 |
|
2530 |
+
return apply_filters('woo_feed_filter_product_availability', $status, $product, $this->config);
|
2531 |
}
|
2532 |
|
2533 |
/**
|
2534 |
+
* Get Product Availability Date
|
2535 |
*
|
2536 |
* @param WC_Product $product
|
2537 |
*
|
2547 |
return '';
|
2548 |
}
|
2549 |
|
2550 |
+
$meta_field_name = 'woo_feed_availability_date';
|
2551 |
+
|
2552 |
+
if( $product->is_type( 'variation' ) ){
|
2553 |
+
$meta_field_name .= '_var';
|
2554 |
+
}
|
2555 |
+
|
2556 |
+
$availability_date = get_post_meta($product->get_id(), $meta_field_name, true);
|
2557 |
|
2558 |
if ('' !== $availability_date && in_array($this->config['provider'], [
|
2559 |
'google',
|
includes/helper.php
CHANGED
@@ -489,21 +489,28 @@ if (!function_exists('woo_feed_handle_file_transfer')) {
|
|
489 |
} else {
|
490 |
$ftp_port = false;
|
491 |
}
|
492 |
-
|
|
|
493 |
$ftp_port = 'sftp' === $ftporsftp ? 22 : 21;
|
494 |
}
|
|
|
495 |
woo_feed_log_feed_process($info['filename'], sprintf('Uploading Feed file via %s.', $ftporsftp));
|
|
|
496 |
try {
|
497 |
if ('ftp' === $ftporsftp) {
|
498 |
-
|
|
|
499 |
if ($ftp->connect($ftpHost, $ftp_user, $ftp_password, $ftp_passive_mode, $ftp_port)) {
|
500 |
return $ftp->upload_file($fileFrom, $ftpPath . $fileTo);
|
501 |
}
|
|
|
502 |
} elseif ('sftp' === $ftporsftp) {
|
503 |
-
|
|
|
504 |
$sftp->login($ftp_user, $ftp_password);
|
505 |
|
506 |
return $sftp->upload_file($fileFrom, $fileTo, $ftpPath);
|
|
|
507 |
}
|
508 |
} catch (Exception $e) {
|
509 |
$message = 'Error Uploading Feed Via ' . $ftporsftp . PHP_EOL . 'Caught Exception :: ' . $e->getMessage();
|
@@ -888,7 +895,7 @@ if (!function_exists('woo_feed_merchant_info_metabox')) {
|
|
888 |
</strong>
|
889 |
<?php } elseif ('feed_file_type' === $k) { ?>
|
890 |
<span class="dashicons dashicons-media-text" style="color: #82878c;"
|
891 |
-
aria-hidden="true"></span> <?php esc_html_e('
|
892 |
<strong class="data" style="display: block;padding-left: 24px;margin-top: 5px;">
|
893 |
<?php
|
894 |
if (empty($v)) {
|
@@ -1870,6 +1877,68 @@ if (!function_exists('woo_feed_import_config')) {
|
|
1870 |
}
|
1871 |
}
|
1872 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1873 |
// Feed Functions.
|
1874 |
if (!function_exists('woo_feed_generate_feed')) {
|
1875 |
/**
|
@@ -2966,6 +3035,7 @@ if (!function_exists('woo_feed_add_custom_identifier_for_variation')) {
|
|
2966 |
'label' => esc_html($custom_field_label),
|
2967 |
'desc_tip' => true,
|
2968 |
'description' => esc_html($custom_field_description),
|
|
|
2969 |
)
|
2970 |
);
|
2971 |
}
|
@@ -5324,11 +5394,17 @@ if (!function_exists('woo_feed_availability_attribute_value_modify')) {
|
|
5324 |
|| 'pinterest' === $feed_config['provider']) {
|
5325 |
if ('on backorder' === $attribute_value) {
|
5326 |
return 'preorder';
|
|
|
|
|
5327 |
}
|
5328 |
}
|
5329 |
|
5330 |
-
if ('facebook' === $feed_config['provider']
|
5331 |
-
|
|
|
|
|
|
|
|
|
5332 |
}
|
5333 |
|
5334 |
return $attribute_value;
|
489 |
} else {
|
490 |
$ftp_port = false;
|
491 |
}
|
492 |
+
|
493 |
+
if ( ! $ftp_port || ! ( ( 1 <= $ftp_port ) && ( $ftp_port <= 65535 ) ) ) {
|
494 |
$ftp_port = 'sftp' === $ftporsftp ? 22 : 21;
|
495 |
}
|
496 |
+
|
497 |
woo_feed_log_feed_process($info['filename'], sprintf('Uploading Feed file via %s.', $ftporsftp));
|
498 |
+
|
499 |
try {
|
500 |
if ('ftp' === $ftporsftp) {
|
501 |
+
|
502 |
+
$ftp = new WebAppick\FTP\FTPConnection();
|
503 |
if ($ftp->connect($ftpHost, $ftp_user, $ftp_password, $ftp_passive_mode, $ftp_port)) {
|
504 |
return $ftp->upload_file($fileFrom, $ftpPath . $fileTo);
|
505 |
}
|
506 |
+
|
507 |
} elseif ('sftp' === $ftporsftp) {
|
508 |
+
|
509 |
+
$sftp = new WebAppick\FTP\SFTPConnection($ftpHost, $ftp_port);
|
510 |
$sftp->login($ftp_user, $ftp_password);
|
511 |
|
512 |
return $sftp->upload_file($fileFrom, $fileTo, $ftpPath);
|
513 |
+
|
514 |
}
|
515 |
} catch (Exception $e) {
|
516 |
$message = 'Error Uploading Feed Via ' . $ftporsftp . PHP_EOL . 'Caught Exception :: ' . $e->getMessage();
|
895 |
</strong>
|
896 |
<?php } elseif ('feed_file_type' === $k) { ?>
|
897 |
<span class="dashicons dashicons-media-text" style="color: #82878c;"
|
898 |
+
aria-hidden="true"></span> <?php esc_html_e('Supported File Types:', 'woo-feed'); ?>
|
899 |
<strong class="data" style="display: block;padding-left: 24px;margin-top: 5px;">
|
900 |
<?php
|
901 |
if (empty($v)) {
|
1877 |
}
|
1878 |
}
|
1879 |
|
1880 |
+
if (!function_exists('woo_feed_download_feed_log')) {
|
1881 |
+
|
1882 |
+
/**
|
1883 |
+
* Handle latest log download request
|
1884 |
+
*
|
1885 |
+
* @return void
|
1886 |
+
* @since 4.4.15
|
1887 |
+
*/
|
1888 |
+
function woo_feed_download_feed_log()
|
1889 |
+
{
|
1890 |
+
if (
|
1891 |
+
isset( $_REQUEST['feed'], $_REQUEST['_wpnonce'] )
|
1892 |
+
&& wp_verify_nonce( sanitize_text_field( wp_unslash( $_REQUEST['_wpnonce'] ) ), 'wpf-log-download')
|
1893 |
+
) {
|
1894 |
+
$feed_name = sanitize_text_field(wp_unslash($_REQUEST['feed']));
|
1895 |
+
$feed_name = str_replace( 'wf_feed_', '', $feed_name );
|
1896 |
+
$log_file_path = Woo_Feed_Log_Handler_File::get_log_file_path( $feed_name );
|
1897 |
+
|
1898 |
+
if( $log_file_path && file_exists( $log_file_path ) ){
|
1899 |
+
$log_data = file_get_contents( $log_file_path );
|
1900 |
+
} else {
|
1901 |
+
$log_data = 'No log is generated.';
|
1902 |
+
}
|
1903 |
+
|
1904 |
+
if (!empty($feed_name)) {
|
1905 |
+
$feed_details = maybe_unserialize(get_option('wf_feed_' . $feed_name));
|
1906 |
+
$feed_details = (isset($feed['feedrules']) && is_array($feed['feedrules'])) ? $feed['feedrules'] : [];
|
1907 |
+
}
|
1908 |
+
|
1909 |
+
if (!is_array($feed_details)) {
|
1910 |
+
wp_die(esc_html__('Invalid Request', 'woo-feed'), esc_html__('Invalid Request', 'woo-feed'), ['back_link' => true]);
|
1911 |
+
}
|
1912 |
+
|
1913 |
+
$file_name = sprintf(
|
1914 |
+
'%s-%s-%s.log',
|
1915 |
+
sanitize_title($feed_name),
|
1916 |
+
gmdate( 'Y-m-d', time() ),
|
1917 |
+
time()
|
1918 |
+
);
|
1919 |
+
|
1920 |
+
// Let set the header...
|
1921 |
+
if (!headers_sent()) {
|
1922 |
+
status_header(200);
|
1923 |
+
header('Content-Type: application/octet-stream;');
|
1924 |
+
header('Content-disposition: attachment; filename=' . $file_name);
|
1925 |
+
header('Content-Length: ' . strlen($log_data));
|
1926 |
+
header('Pragma: no-cache');
|
1927 |
+
header('Expires: 0');
|
1928 |
+
}
|
1929 |
+
|
1930 |
+
// exporting data.
|
1931 |
+
echo $log_data; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
1932 |
+
} else {
|
1933 |
+
wp_die(
|
1934 |
+
esc_html__('Invalid Request', 'woo-feed'),
|
1935 |
+
esc_html__('Invalid Request', 'woo-feed'),
|
1936 |
+
['back_link' => true]
|
1937 |
+
);
|
1938 |
+
}
|
1939 |
+
}
|
1940 |
+
}
|
1941 |
+
|
1942 |
// Feed Functions.
|
1943 |
if (!function_exists('woo_feed_generate_feed')) {
|
1944 |
/**
|
3035 |
'label' => esc_html($custom_field_label),
|
3036 |
'desc_tip' => true,
|
3037 |
'description' => esc_html($custom_field_description),
|
3038 |
+
'wrapper_class' => 'form-row form-row-full',
|
3039 |
)
|
3040 |
);
|
3041 |
}
|
5394 |
|| 'pinterest' === $feed_config['provider']) {
|
5395 |
if ('on backorder' === $attribute_value) {
|
5396 |
return 'preorder';
|
5397 |
+
} else if( ! in_array( $attribute_value, [ 'in stock', 'out of stock', 'on backorder' ] ) ) {
|
5398 |
+
return 'in stock';
|
5399 |
}
|
5400 |
}
|
5401 |
|
5402 |
+
if ('facebook' === $feed_config['provider'] ) {
|
5403 |
+
if( 'on backorder' === $attribute_value ){
|
5404 |
+
return 'available for order';
|
5405 |
+
}else if( ! in_array( $attribute_value, [ 'in stock', 'out of stock', 'on backorder' ] ) ) {
|
5406 |
+
return 'in stock';
|
5407 |
+
}
|
5408 |
}
|
5409 |
|
5410 |
return $attribute_value;
|
includes/hooks.php
CHANGED
@@ -22,6 +22,7 @@ add_filter( 'woo_feed_parsed_rules', 'woo_feed_filter_parsed_rules', 10, 2 );
|
|
22 |
// Mics.
|
23 |
add_action( 'admin_post_wf_export_csv_feed', 'woo_feed_export_csv_feed', 10 );
|
24 |
add_action( 'admin_post_wf_export_feed', 'woo_feed_export_config', 10 );
|
|
|
25 |
add_action( 'admin_post_wpf_import', 'woo_feed_import_config' );
|
26 |
|
27 |
// Product Loop Start.
|
22 |
// Mics.
|
23 |
add_action( 'admin_post_wf_export_csv_feed', 'woo_feed_export_csv_feed', 10 );
|
24 |
add_action( 'admin_post_wf_export_feed', 'woo_feed_export_config', 10 );
|
25 |
+
add_action( 'admin_post_wf_download_feed_log', 'woo_feed_download_feed_log', 10 );
|
26 |
add_action( 'admin_post_wpf_import', 'woo_feed_import_config' );
|
27 |
|
28 |
// Product Loop Start.
|
languages/woo-feed.pot
CHANGED
@@ -16,7 +16,7 @@ msgstr ""
|
|
16 |
msgid "Unauthorized Action."
|
17 |
msgstr ""
|
18 |
|
19 |
-
#: woo-feed.php:236, woo-feed.php:355, includes/helper.php:
|
20 |
msgid "Invalid Request."
|
21 |
msgstr ""
|
22 |
|
@@ -44,7 +44,7 @@ msgstr ""
|
|
44 |
msgid "Invalid Merchant"
|
45 |
msgstr ""
|
46 |
|
47 |
-
#: admin/class-woo-feed-admin.php:148, includes/helper.php:
|
48 |
msgid "N/A"
|
49 |
msgstr ""
|
50 |
|
@@ -156,11 +156,11 @@ msgstr ""
|
|
156 |
msgid "Template"
|
157 |
msgstr ""
|
158 |
|
159 |
-
#: admin/class-woo-feed-category-list.php:250, admin/class-woo-feed-manage-list.php:
|
160 |
msgid "Action"
|
161 |
msgstr ""
|
162 |
|
163 |
-
#: admin/class-woo-feed-category-list.php:296, admin/class-woo-feed-manage-list.php:
|
164 |
msgid "Delete"
|
165 |
msgstr ""
|
166 |
|
@@ -168,7 +168,7 @@ msgstr ""
|
|
168 |
msgid "Failed To Delete Mapping. You do not have sufficient permission to delete."
|
169 |
msgstr ""
|
170 |
|
171 |
-
#: admin/class-woo-feed-category-list.php:335, admin/class-woo-feed-manage-list.php:
|
172 |
msgid "You do not have sufficient permission to delete!"
|
173 |
msgstr ""
|
174 |
|
@@ -180,51 +180,55 @@ msgstr ""
|
|
180 |
msgid "feeds"
|
181 |
msgstr ""
|
182 |
|
183 |
-
#: admin/class-woo-feed-manage-list.php:
|
184 |
msgid "View"
|
185 |
msgstr ""
|
186 |
|
187 |
-
#: admin/class-woo-feed-manage-list.php:
|
188 |
msgid "Regenerate"
|
189 |
msgstr ""
|
190 |
|
191 |
-
#: admin/class-woo-feed-manage-list.php:
|
192 |
msgid "Download"
|
193 |
msgstr ""
|
194 |
|
195 |
-
#: admin/class-woo-feed-manage-list.php:
|
196 |
msgid "Export Feed Config"
|
197 |
msgstr ""
|
198 |
|
199 |
-
#: admin/class-woo-feed-manage-list.php:
|
|
|
|
|
|
|
|
|
200 |
msgid "No feed available."
|
201 |
msgstr ""
|
202 |
|
203 |
-
#: admin/class-woo-feed-manage-list.php:
|
204 |
msgid "Auto Update"
|
205 |
msgstr ""
|
206 |
|
207 |
-
#: admin/class-woo-feed-manage-list.php:
|
208 |
msgid "Feed Name"
|
209 |
msgstr ""
|
210 |
|
211 |
-
#: admin/class-woo-feed-manage-list.php:
|
212 |
msgid "Provider"
|
213 |
msgstr ""
|
214 |
|
215 |
-
#: admin/class-woo-feed-manage-list.php:
|
216 |
msgid "Type"
|
217 |
msgstr ""
|
218 |
|
219 |
-
#: admin/class-woo-feed-manage-list.php:
|
220 |
msgid "Feed URL"
|
221 |
msgstr ""
|
222 |
|
223 |
-
#: admin/class-woo-feed-manage-list.php:
|
224 |
msgid "Last Updated"
|
225 |
msgstr ""
|
226 |
|
227 |
-
#: admin/class-woo-feed-manage-list.php:
|
228 |
msgid "Failed To Delete Feed. You do not have sufficient permission to delete."
|
229 |
msgstr ""
|
230 |
|
@@ -315,183 +319,183 @@ msgstr ""
|
|
315 |
msgid "1 Month"
|
316 |
msgstr ""
|
317 |
|
318 |
-
#: includes/helper.php:418, includes/helper.php:
|
319 |
msgid "1 Week"
|
320 |
msgstr ""
|
321 |
|
322 |
-
#: includes/helper.php:419, includes/helper.php:
|
323 |
msgid "24 Hours"
|
324 |
msgstr ""
|
325 |
|
326 |
-
#: includes/helper.php:420, includes/helper.php:
|
327 |
msgid "12 Hours"
|
328 |
msgstr ""
|
329 |
|
330 |
-
#: includes/helper.php:421, includes/helper.php:
|
331 |
msgid "6 Hours"
|
332 |
msgstr ""
|
333 |
|
334 |
-
#: includes/helper.php:422, includes/helper.php:
|
335 |
msgid "1 Hours"
|
336 |
msgstr ""
|
337 |
|
338 |
-
#: includes/helper.php:
|
339 |
msgid "Feed Specification:"
|
340 |
msgstr ""
|
341 |
|
342 |
-
#: includes/helper.php:
|
343 |
msgid "Open Feed File"
|
344 |
msgstr ""
|
345 |
|
346 |
-
#: includes/helper.php:
|
347 |
msgid "Invalid Request"
|
348 |
msgstr ""
|
349 |
|
350 |
-
#: includes/helper.php:
|
351 |
msgid "Empty File Uploaded. Try again."
|
352 |
msgstr ""
|
353 |
|
354 |
-
#: includes/helper.php:
|
355 |
msgid "Empty File"
|
356 |
msgstr ""
|
357 |
|
358 |
-
#: includes/helper.php:
|
359 |
msgid "« Back"
|
360 |
msgstr ""
|
361 |
|
362 |
-
#: includes/helper.php:
|
363 |
msgid "Unable to read file content"
|
364 |
msgstr ""
|
365 |
|
366 |
-
#: includes/helper.php:
|
367 |
msgid "Invalid File"
|
368 |
msgstr ""
|
369 |
|
370 |
-
#: includes/helper.php:
|
371 |
msgid "Unable to read data from file."
|
372 |
msgstr ""
|
373 |
|
374 |
-
#: includes/helper.php:
|
375 |
msgid "Unable to read file info."
|
376 |
msgstr ""
|
377 |
|
378 |
-
#: includes/helper.php:
|
379 |
msgid "Unable to read feed data from file."
|
380 |
msgstr ""
|
381 |
|
382 |
-
#: includes/helper.php:
|
383 |
msgid "Unable to verify the file."
|
384 |
msgstr ""
|
385 |
|
386 |
-
#: includes/helper.php:
|
387 |
msgid "Invalid or corrupted config file."
|
388 |
msgstr ""
|
389 |
|
390 |
-
#: includes/helper.php:
|
391 |
msgid "Brand"
|
392 |
msgstr ""
|
393 |
|
394 |
-
#: includes/helper.php:
|
395 |
msgid "GTIN"
|
396 |
msgstr ""
|
397 |
|
398 |
-
#: includes/helper.php:
|
399 |
msgid "MPN"
|
400 |
msgstr ""
|
401 |
|
402 |
-
#: includes/helper.php:
|
403 |
msgid "EAN"
|
404 |
msgstr ""
|
405 |
|
406 |
-
#: includes/helper.php:
|
407 |
msgid "ISBN"
|
408 |
msgstr ""
|
409 |
|
410 |
-
#: includes/helper.php:
|
411 |
msgid "Age group"
|
412 |
msgstr ""
|
413 |
|
414 |
-
#: includes/helper.php:
|
415 |
msgid "Gender"
|
416 |
msgstr ""
|
417 |
|
418 |
-
#: includes/helper.php:
|
419 |
msgid "Material"
|
420 |
msgstr ""
|
421 |
|
422 |
-
#: includes/helper.php:
|
423 |
msgid "Cost of good sold"
|
424 |
msgstr ""
|
425 |
|
426 |
-
#: includes/helper.php:
|
427 |
msgid "Unit"
|
428 |
msgstr ""
|
429 |
|
430 |
-
#: includes/helper.php:
|
431 |
msgid "Unit Price Measure"
|
432 |
msgstr ""
|
433 |
|
434 |
-
#: includes/helper.php:
|
435 |
msgid "Unit Price Base Measure"
|
436 |
msgstr ""
|
437 |
|
438 |
-
#: includes/helper.php:
|
439 |
msgid "Custom field 0"
|
440 |
msgstr ""
|
441 |
|
442 |
-
#: includes/helper.php:
|
443 |
msgid "Custom field 1"
|
444 |
msgstr ""
|
445 |
|
446 |
-
#: includes/helper.php:
|
447 |
msgid "Custom field 2"
|
448 |
msgstr ""
|
449 |
|
450 |
-
#: includes/helper.php:
|
451 |
msgid "Custom field 3"
|
452 |
msgstr ""
|
453 |
|
454 |
-
#: includes/helper.php:
|
455 |
msgid "Custom field 4"
|
456 |
msgstr ""
|
457 |
|
458 |
-
#: includes/helper.php:
|
459 |
msgid "CUSTOM FIELDS by CTX Feed"
|
460 |
msgstr ""
|
461 |
|
462 |
-
#: includes/helper.php:
|
463 |
msgid " here."
|
464 |
msgstr ""
|
465 |
|
466 |
-
#: includes/helper.php:
|
467 |
msgid "Mapping Not Changed"
|
468 |
msgstr ""
|
469 |
|
470 |
-
#: includes/helper.php:
|
471 |
msgid "Mapping Updated Successfully"
|
472 |
msgstr ""
|
473 |
|
474 |
-
#: includes/helper.php:
|
475 |
msgid "Clear Cache"
|
476 |
msgstr ""
|
477 |
|
478 |
-
#: includes/helper.php:
|
479 |
msgid "User meta updated successfully."
|
480 |
msgstr ""
|
481 |
|
482 |
-
#: includes/helper.php:
|
483 |
msgid "by CTX Feed"
|
484 |
msgstr ""
|
485 |
|
486 |
-
#: includes/helper.php:
|
487 |
msgid "Name"
|
488 |
msgstr ""
|
489 |
|
490 |
-
#: includes/helper.php:
|
491 |
msgid "with commas"
|
492 |
msgstr ""
|
493 |
|
494 |
-
#: includes/helper.php:
|
495 |
msgid "Option Already Added."
|
496 |
msgstr ""
|
497 |
|
@@ -585,7 +589,7 @@ msgid "Filename should be unique. Otherwise it will override the existing filena
|
|
585 |
msgstr ""
|
586 |
|
587 |
#: admin/partials/woo-feed-content-settings.php:63
|
588 |
-
msgid "
|
589 |
msgstr ""
|
590 |
|
591 |
#: admin/partials/woo-feed-content-settings.php:83
|
@@ -1106,7 +1110,7 @@ msgstr ""
|
|
1106 |
msgid "Availability"
|
1107 |
msgstr ""
|
1108 |
|
1109 |
-
#: includes/classes/class-woo-feed-dropdown.php:336
|
1110 |
msgid "Availability Date"
|
1111 |
msgstr ""
|
1112 |
|
@@ -1430,33 +1434,6 @@ msgstr ""
|
|
1430 |
msgid "Select Attributes"
|
1431 |
msgstr ""
|
1432 |
|
1433 |
-
#: includes/classes/class-woo-feed-ftp.php:79
|
1434 |
-
msgid "FTP connection has failed!"
|
1435 |
-
msgstr ""
|
1436 |
-
|
1437 |
-
#. translators: 1: ftp username, 2: server host, 3: server port
|
1438 |
-
#: includes/classes/class-woo-feed-ftp.php:81
|
1439 |
-
msgid "Attempted to connect to %1$s@%2$s:%3$s"
|
1440 |
-
msgstr ""
|
1441 |
-
|
1442 |
-
#: includes/classes/class-woo-feed-ftp.php:90
|
1443 |
-
msgid "FTP Login has failed!"
|
1444 |
-
msgstr ""
|
1445 |
-
|
1446 |
-
#. translators: 1: ftp username, 2: server host, 3: server port
|
1447 |
-
#: includes/classes/class-woo-feed-ftp.php:92
|
1448 |
-
msgid "Attempted to login %1$s@%2$s:%3$s"
|
1449 |
-
msgstr ""
|
1450 |
-
|
1451 |
-
#: includes/classes/class-woo-feed-ftp.php:124
|
1452 |
-
msgid "File Permission Granted"
|
1453 |
-
msgstr ""
|
1454 |
-
|
1455 |
-
#. translators: Permission Mode
|
1456 |
-
#: includes/classes/class-woo-feed-ftp.php:150
|
1457 |
-
msgid "Directory \"%s\" created successfully."
|
1458 |
-
msgstr ""
|
1459 |
-
|
1460 |
#: includes/classes/class-woo-feed-list-table.php:182
|
1461 |
msgid "List View"
|
1462 |
msgstr ""
|
@@ -2256,3 +2233,34 @@ msgstr ""
|
|
2256 |
#: libs/WebAppick/AppServices/Promotions.php:373
|
2257 |
msgid "Method must be invoked inside admin_init action"
|
2258 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
msgid "Unauthorized Action."
|
17 |
msgstr ""
|
18 |
|
19 |
+
#: woo-feed.php:236, woo-feed.php:355, includes/helper.php:1870, includes/classes/class-woo-feed-webappick-api.php:427, includes/classes/class-woo-feed-webappick-api.php:451
|
20 |
msgid "Invalid Request."
|
21 |
msgstr ""
|
22 |
|
44 |
msgid "Invalid Merchant"
|
45 |
msgstr ""
|
46 |
|
47 |
+
#: admin/class-woo-feed-admin.php:148, includes/helper.php:808
|
48 |
msgid "N/A"
|
49 |
msgstr ""
|
50 |
|
156 |
msgid "Template"
|
157 |
msgstr ""
|
158 |
|
159 |
+
#: admin/class-woo-feed-category-list.php:250, admin/class-woo-feed-manage-list.php:300, admin/class-woo-feed-option-list.php:248, admin/partials/woo-feed-settings.php:195
|
160 |
msgid "Action"
|
161 |
msgstr ""
|
162 |
|
163 |
+
#: admin/class-woo-feed-category-list.php:296, admin/class-woo-feed-manage-list.php:346, admin/class-woo-feed-option-list.php:295
|
164 |
msgid "Delete"
|
165 |
msgstr ""
|
166 |
|
168 |
msgid "Failed To Delete Mapping. You do not have sufficient permission to delete."
|
169 |
msgstr ""
|
170 |
|
171 |
+
#: admin/class-woo-feed-category-list.php:335, admin/class-woo-feed-manage-list.php:387, admin/class-woo-feed-manage-list.php:396, admin/class-woo-feed-option-list.php:336
|
172 |
msgid "You do not have sufficient permission to delete!"
|
173 |
msgstr ""
|
174 |
|
180 |
msgid "feeds"
|
181 |
msgstr ""
|
182 |
|
183 |
+
#: admin/class-woo-feed-manage-list.php:117, includes/helper.php:943
|
184 |
msgid "View"
|
185 |
msgstr ""
|
186 |
|
187 |
+
#: admin/class-woo-feed-manage-list.php:119
|
188 |
msgid "Regenerate"
|
189 |
msgstr ""
|
190 |
|
191 |
+
#: admin/class-woo-feed-manage-list.php:120, admin/partials/woo-feed-status.php:46
|
192 |
msgid "Download"
|
193 |
msgstr ""
|
194 |
|
195 |
+
#: admin/class-woo-feed-manage-list.php:123
|
196 |
msgid "Export Feed Config"
|
197 |
msgstr ""
|
198 |
|
199 |
+
#: admin/class-woo-feed-manage-list.php:126
|
200 |
+
msgid "Download Feed Log"
|
201 |
+
msgstr ""
|
202 |
+
|
203 |
+
#: admin/class-woo-feed-manage-list.php:228
|
204 |
msgid "No feed available."
|
205 |
msgstr ""
|
206 |
|
207 |
+
#: admin/class-woo-feed-manage-list.php:294
|
208 |
msgid "Auto Update"
|
209 |
msgstr ""
|
210 |
|
211 |
+
#: admin/class-woo-feed-manage-list.php:295
|
212 |
msgid "Feed Name"
|
213 |
msgstr ""
|
214 |
|
215 |
+
#: admin/class-woo-feed-manage-list.php:296
|
216 |
msgid "Provider"
|
217 |
msgstr ""
|
218 |
|
219 |
+
#: admin/class-woo-feed-manage-list.php:297, admin/partials/woo-feed-edit-config.php:12
|
220 |
msgid "Type"
|
221 |
msgstr ""
|
222 |
|
223 |
+
#: admin/class-woo-feed-manage-list.php:298
|
224 |
msgid "Feed URL"
|
225 |
msgstr ""
|
226 |
|
227 |
+
#: admin/class-woo-feed-manage-list.php:299
|
228 |
msgid "Last Updated"
|
229 |
msgstr ""
|
230 |
|
231 |
+
#: admin/class-woo-feed-manage-list.php:366
|
232 |
msgid "Failed To Delete Feed. You do not have sufficient permission to delete."
|
233 |
msgstr ""
|
234 |
|
319 |
msgid "1 Month"
|
320 |
msgstr ""
|
321 |
|
322 |
+
#: includes/helper.php:418, includes/helper.php:2026
|
323 |
msgid "1 Week"
|
324 |
msgstr ""
|
325 |
|
326 |
+
#: includes/helper.php:419, includes/helper.php:2027
|
327 |
msgid "24 Hours"
|
328 |
msgstr ""
|
329 |
|
330 |
+
#: includes/helper.php:420, includes/helper.php:2028
|
331 |
msgid "12 Hours"
|
332 |
msgstr ""
|
333 |
|
334 |
+
#: includes/helper.php:421, includes/helper.php:2029
|
335 |
msgid "6 Hours"
|
336 |
msgstr ""
|
337 |
|
338 |
+
#: includes/helper.php:422, includes/helper.php:2030
|
339 |
msgid "1 Hours"
|
340 |
msgstr ""
|
341 |
|
342 |
+
#: includes/helper.php:874
|
343 |
msgid "Feed Specification:"
|
344 |
msgstr ""
|
345 |
|
346 |
+
#: includes/helper.php:944
|
347 |
msgid "Open Feed File"
|
348 |
msgstr ""
|
349 |
|
350 |
+
#: includes/helper.php:1696, includes/helper.php:1696, includes/helper.php:1871, includes/helper.php:1910, includes/helper.php:1910, libs/WebAppick/AppServices/Insights.php:813, libs/WebAppick/AppServices/Promotions.php:362
|
351 |
msgid "Invalid Request"
|
352 |
msgstr ""
|
353 |
|
354 |
+
#: includes/helper.php:1756
|
355 |
msgid "Empty File Uploaded. Try again."
|
356 |
msgstr ""
|
357 |
|
358 |
+
#: includes/helper.php:1757
|
359 |
msgid "Empty File"
|
360 |
msgstr ""
|
361 |
|
362 |
+
#: includes/helper.php:1760, includes/helper.php:1771, includes/helper.php:1783, includes/helper.php:1794, includes/helper.php:1808, includes/helper.php:1818, includes/helper.php:1830, includes/helper.php:1874
|
363 |
msgid "« Back"
|
364 |
msgstr ""
|
365 |
|
366 |
+
#: includes/helper.php:1767
|
367 |
msgid "Unable to read file content"
|
368 |
msgstr ""
|
369 |
|
370 |
+
#: includes/helper.php:1768, includes/helper.php:1780, includes/helper.php:1791, includes/helper.php:1805, includes/helper.php:1815, includes/helper.php:1827
|
371 |
msgid "Invalid File"
|
372 |
msgstr ""
|
373 |
|
374 |
+
#: includes/helper.php:1779
|
375 |
msgid "Unable to read data from file."
|
376 |
msgstr ""
|
377 |
|
378 |
+
#: includes/helper.php:1790
|
379 |
msgid "Unable to read file info."
|
380 |
msgstr ""
|
381 |
|
382 |
+
#: includes/helper.php:1804
|
383 |
msgid "Unable to read feed data from file."
|
384 |
msgstr ""
|
385 |
|
386 |
+
#: includes/helper.php:1814
|
387 |
msgid "Unable to verify the file."
|
388 |
msgstr ""
|
389 |
|
390 |
+
#: includes/helper.php:1826
|
391 |
msgid "Invalid or corrupted config file."
|
392 |
msgstr ""
|
393 |
|
394 |
+
#: includes/helper.php:2843
|
395 |
msgid "Brand"
|
396 |
msgstr ""
|
397 |
|
398 |
+
#: includes/helper.php:2844
|
399 |
msgid "GTIN"
|
400 |
msgstr ""
|
401 |
|
402 |
+
#: includes/helper.php:2845
|
403 |
msgid "MPN"
|
404 |
msgstr ""
|
405 |
|
406 |
+
#: includes/helper.php:2846
|
407 |
msgid "EAN"
|
408 |
msgstr ""
|
409 |
|
410 |
+
#: includes/helper.php:2847
|
411 |
msgid "ISBN"
|
412 |
msgstr ""
|
413 |
|
414 |
+
#: includes/helper.php:2848
|
415 |
msgid "Age group"
|
416 |
msgstr ""
|
417 |
|
418 |
+
#: includes/helper.php:2849
|
419 |
msgid "Gender"
|
420 |
msgstr ""
|
421 |
|
422 |
+
#: includes/helper.php:2850
|
423 |
msgid "Material"
|
424 |
msgstr ""
|
425 |
|
426 |
+
#: includes/helper.php:2851
|
427 |
msgid "Cost of good sold"
|
428 |
msgstr ""
|
429 |
|
430 |
+
#: includes/helper.php:2852
|
431 |
msgid "Unit"
|
432 |
msgstr ""
|
433 |
|
434 |
+
#: includes/helper.php:2853, includes/classes/class-woo-feed-dropdown.php:405
|
435 |
msgid "Unit Price Measure"
|
436 |
msgstr ""
|
437 |
|
438 |
+
#: includes/helper.php:2854, includes/classes/class-woo-feed-dropdown.php:406
|
439 |
msgid "Unit Price Base Measure"
|
440 |
msgstr ""
|
441 |
|
442 |
+
#: includes/helper.php:2855
|
443 |
msgid "Custom field 0"
|
444 |
msgstr ""
|
445 |
|
446 |
+
#: includes/helper.php:2856
|
447 |
msgid "Custom field 1"
|
448 |
msgstr ""
|
449 |
|
450 |
+
#: includes/helper.php:2857
|
451 |
msgid "Custom field 2"
|
452 |
msgstr ""
|
453 |
|
454 |
+
#: includes/helper.php:2858
|
455 |
msgid "Custom field 3"
|
456 |
msgstr ""
|
457 |
|
458 |
+
#: includes/helper.php:2859
|
459 |
msgid "Custom field 4"
|
460 |
msgstr ""
|
461 |
|
462 |
+
#: includes/helper.php:2928, includes/helper.php:3015
|
463 |
msgid "CUSTOM FIELDS by CTX Feed"
|
464 |
msgstr ""
|
465 |
|
466 |
+
#: includes/helper.php:2940
|
467 |
msgid " here."
|
468 |
msgstr ""
|
469 |
|
470 |
+
#: includes/helper.php:3101
|
471 |
msgid "Mapping Not Changed"
|
472 |
msgstr ""
|
473 |
|
474 |
+
#: includes/helper.php:3107
|
475 |
msgid "Mapping Updated Successfully"
|
476 |
msgstr ""
|
477 |
|
478 |
+
#: includes/helper.php:3218
|
479 |
msgid "Clear Cache"
|
480 |
msgstr ""
|
481 |
|
482 |
+
#: includes/helper.php:3417
|
483 |
msgid "User meta updated successfully."
|
484 |
msgstr ""
|
485 |
|
486 |
+
#: includes/helper.php:3493, includes/helper.php:3495
|
487 |
msgid "by CTX Feed"
|
488 |
msgstr ""
|
489 |
|
490 |
+
#: includes/helper.php:3499, libs/WebAppick/AppServices/Insights.php:977
|
491 |
msgid "Name"
|
492 |
msgstr ""
|
493 |
|
494 |
+
#: includes/helper.php:3503
|
495 |
msgid "with commas"
|
496 |
msgstr ""
|
497 |
|
498 |
+
#: includes/helper.php:4678
|
499 |
msgid "Option Already Added."
|
500 |
msgstr ""
|
501 |
|
589 |
msgstr ""
|
590 |
|
591 |
#: admin/partials/woo-feed-content-settings.php:63
|
592 |
+
msgid "File Type"
|
593 |
msgstr ""
|
594 |
|
595 |
#: admin/partials/woo-feed-content-settings.php:83
|
1110 |
msgid "Availability"
|
1111 |
msgstr ""
|
1112 |
|
1113 |
+
#: includes/classes/class-woo-feed-dropdown.php:336, libs/WebAppick/Attributes/AvailabilityDate.php:47, libs/WebAppick/Attributes/AvailabilityDate.php:77
|
1114 |
msgid "Availability Date"
|
1115 |
msgstr ""
|
1116 |
|
1434 |
msgid "Select Attributes"
|
1435 |
msgstr ""
|
1436 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1437 |
#: includes/classes/class-woo-feed-list-table.php:182
|
1438 |
msgid "List View"
|
1439 |
msgstr ""
|
2233 |
#: libs/WebAppick/AppServices/Promotions.php:373
|
2234 |
msgid "Method must be invoked inside admin_init action"
|
2235 |
msgstr ""
|
2236 |
+
|
2237 |
+
#: libs/WebAppick/Attributes/AvailabilityDate.php:51, libs/WebAppick/Attributes/AvailabilityDate.php:80
|
2238 |
+
msgid "Set availability date for backorder products."
|
2239 |
+
msgstr ""
|
2240 |
+
|
2241 |
+
#: libs/WebAppick/FTP/FTPConnection.php:77
|
2242 |
+
msgid "FTP connection has failed!"
|
2243 |
+
msgstr ""
|
2244 |
+
|
2245 |
+
#. translators: 1: ftp username, 2: server host, 3: server port
|
2246 |
+
#: libs/WebAppick/FTP/FTPConnection.php:79
|
2247 |
+
msgid "Attempted to connect to %1$s@%2$s:%3$s"
|
2248 |
+
msgstr ""
|
2249 |
+
|
2250 |
+
#: libs/WebAppick/FTP/FTPConnection.php:88
|
2251 |
+
msgid "FTP Login has failed!"
|
2252 |
+
msgstr ""
|
2253 |
+
|
2254 |
+
#. translators: 1: ftp username, 2: server host, 3: server port
|
2255 |
+
#: libs/WebAppick/FTP/FTPConnection.php:90
|
2256 |
+
msgid "Attempted to login %1$s@%2$s:%3$s"
|
2257 |
+
msgstr ""
|
2258 |
+
|
2259 |
+
#: libs/WebAppick/FTP/FTPConnection.php:122
|
2260 |
+
msgid "File Permission Granted"
|
2261 |
+
msgstr ""
|
2262 |
+
|
2263 |
+
#. translators: Permission Mode
|
2264 |
+
#: libs/WebAppick/FTP/FTPConnection.php:148
|
2265 |
+
msgid "Directory \"%s\" created successfully."
|
2266 |
+
msgstr ""
|
libs/WebAppick/Attributes/AvailabilityDate.php
CHANGED
@@ -8,104 +8,130 @@ namespace WebAppick\Attributes;
|
|
8 |
|
9 |
class AvailabilityDate implements AttributeInterface {
|
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
public function __construct () {
|
12 |
|
13 |
// Display Field
|
14 |
-
add_action( 'woocommerce_product_options_inventory_product_data' , [&$this, '
|
|
|
15 |
|
16 |
// Save Field
|
17 |
-
add_action('woocommerce_process_product_meta', [ &$this, '
|
|
|
18 |
|
19 |
|
20 |
}
|
21 |
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
|
|
|
|
|
|
26 |
|
27 |
global $woocommerce, $post;
|
28 |
|
29 |
$availability_date = get_post_meta( $post->ID, 'woo_feed_availability_date', true );
|
30 |
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
$('.form-field.woo_feed_availability_date_field').show();
|
43 |
-
|
44 |
-
} else{
|
45 |
-
|
46 |
-
$('.form-field.woo_feed_availability_date_field').hide();
|
47 |
-
|
48 |
-
}
|
49 |
-
|
50 |
-
});
|
51 |
-
|
52 |
-
// On change
|
53 |
-
$('#_stock_status').on('change', function(e){
|
54 |
-
|
55 |
-
if($(e.target).val() == 'onbackorder'){
|
56 |
-
|
57 |
-
$('.form-field.woo_feed_availability_date_field').show('medium');
|
58 |
-
|
59 |
-
} else{
|
60 |
|
61 |
-
|
62 |
|
63 |
-
|
64 |
|
65 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
|
67 |
-
|
68 |
-
</script>
|
69 |
|
70 |
-
|
71 |
|
72 |
// Add Availability Date Field
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
)
|
|
|
82 |
);
|
83 |
-
|
|
|
84 |
|
85 |
}
|
86 |
|
87 |
-
/**
|
|
|
|
|
88 |
* @param $post_id
|
|
|
|
|
|
|
89 |
*/
|
90 |
-
public function
|
91 |
|
92 |
-
if( isset( $_POST['woo_feed_availability_date'] ) && !empty( $_POST['woo_feed_availability_date'] ) )
|
93 |
-
update_post_meta(
|
|
|
|
|
94 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
95 |
}
|
96 |
|
97 |
-
/**
|
98 |
-
|
99 |
-
|
|
|
|
|
100 |
* @return false|string
|
|
|
101 |
*/
|
102 |
-
public function get_value($
|
103 |
|
104 |
-
if( $
|
105 |
return '';
|
106 |
}
|
107 |
|
108 |
-
$value = get_post_meta( $
|
109 |
|
110 |
if( isset( $value ) && !empty( $value ) && $value !== false ) {
|
111 |
return date( 'c', strtotime( $value ) );
|
8 |
|
9 |
class AvailabilityDate implements AttributeInterface {
|
10 |
|
11 |
+
/**
|
12 |
+
* Initializes hooks
|
13 |
+
*
|
14 |
+
* @return void
|
15 |
+
* @since 4.4.14
|
16 |
+
*/
|
17 |
public function __construct () {
|
18 |
|
19 |
// Display Field
|
20 |
+
add_action( 'woocommerce_product_options_inventory_product_data' , [&$this, 'admin_render_simple'], 11 ); // Simple product
|
21 |
+
add_action( 'woocommerce_product_after_variable_attributes' , [&$this, 'admin_render_variable'], 11, 3 ); // Variable product
|
22 |
|
23 |
// Save Field
|
24 |
+
add_action('woocommerce_process_product_meta', [ &$this, 'admin_simple_save' ] ); // Simple product
|
25 |
+
add_action('woocommerce_save_product_variation', [ &$this, 'admin_variable_save' ], 10, 2 ); // Variable product
|
26 |
|
27 |
|
28 |
}
|
29 |
|
30 |
+
/**
|
31 |
+
* Renders availability date fields for simple product.
|
32 |
+
*
|
33 |
+
* @return void
|
34 |
+
* @since 4.4.14
|
35 |
+
*/
|
36 |
+
public function admin_render_simple() {
|
37 |
|
38 |
global $woocommerce, $post;
|
39 |
|
40 |
$availability_date = get_post_meta( $post->ID, 'woo_feed_availability_date', true );
|
41 |
|
42 |
+
// Add Availability Date Field
|
43 |
+
$field_data = array(
|
44 |
+
'id' => "woo_feed_availability_date",
|
45 |
+
'name' => "woo_feed_availability_date",
|
46 |
+
'placeholder' => '',
|
47 |
+
'label' => __('Availability Date', 'woo-feed'),
|
48 |
+
'type' => 'date',
|
49 |
+
'value' => esc_attr( $availability_date ),
|
50 |
+
'desc_tip' => false,
|
51 |
+
'description' => __( 'Set availability date for backorder products.', 'woo-feed' ),
|
52 |
+
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
|
54 |
+
woocommerce_wp_text_input( $field_data );
|
55 |
|
56 |
+
}
|
57 |
|
58 |
+
/**
|
59 |
+
* Renders availability date fields for variable products.
|
60 |
+
*
|
61 |
+
* @param int $loop
|
62 |
+
*
|
63 |
+
* @return void
|
64 |
+
* @since 4.4.14
|
65 |
+
*/
|
66 |
+
public function admin_render_variable( $loop, $variation_data, $variation ) {
|
67 |
|
68 |
+
global $post;
|
|
|
69 |
|
70 |
+
$availability_date = get_post_meta( $variation->ID, 'woo_feed_availability_date_var', true );
|
71 |
|
72 |
// Add Availability Date Field
|
73 |
+
$field_data = array(
|
74 |
+
'id' => "woo_feed_availability_date_var{$loop}",
|
75 |
+
'name' => "woo_feed_availability_date_var[{$loop}]",
|
76 |
+
'placeholder' => '',
|
77 |
+
'label' => __('Availability Date', 'woo-feed'),
|
78 |
+
'type' => 'date',
|
79 |
+
'desc_tip' => true,
|
80 |
+
'description' => __( 'Set availability date for backorder products.', 'woo-feed' ),
|
81 |
+
'value' => esc_attr( $availability_date ),
|
82 |
+
'wrapper_class' => 'form-row form-row-full',
|
83 |
);
|
84 |
+
|
85 |
+
woocommerce_wp_text_input( $field_data );
|
86 |
|
87 |
}
|
88 |
|
89 |
+
/**
|
90 |
+
* Saves availability date fields for simple product
|
91 |
+
*
|
92 |
* @param $post_id
|
93 |
+
*
|
94 |
+
* @return void
|
95 |
+
* @since 4.4.14
|
96 |
*/
|
97 |
+
public function admin_simple_save( $post_id ){
|
98 |
|
99 |
+
if( isset( $_POST['woo_feed_availability_date'] ) && !empty( $_POST['woo_feed_availability_date'] ) ) {
|
100 |
+
update_post_meta($post_id, 'woo_feed_availability_date', esc_attr($_POST['woo_feed_availability_date']));
|
101 |
+
}
|
102 |
+
}
|
103 |
|
104 |
+
/**
|
105 |
+
* Saves availability date fields for variable product
|
106 |
+
*
|
107 |
+
* @param int $post_id
|
108 |
+
* @param int $loop
|
109 |
+
*
|
110 |
+
* @return void
|
111 |
+
* @since 4.4.14
|
112 |
+
*/
|
113 |
+
public function admin_variable_save( $post_id, $loop ){
|
114 |
+
|
115 |
+
if( isset( $_POST['woo_feed_availability_date_var'][$loop] ) && !empty( $_POST['woo_feed_availability_date_var'][$loop] ) ) {
|
116 |
+
update_post_meta($post_id, 'woo_feed_availability_date_var', esc_attr($_POST['woo_feed_availability_date_var'][$loop]));
|
117 |
+
}
|
118 |
}
|
119 |
|
120 |
+
/**
|
121 |
+
* Generates value for feed
|
122 |
+
*
|
123 |
+
* @param $product
|
124 |
+
*
|
125 |
* @return false|string
|
126 |
+
* @since 4.4.14
|
127 |
*/
|
128 |
+
public function get_value( $product ){
|
129 |
|
130 |
+
if( $product->get_stock_status() !== 'onbackorder' ) {
|
131 |
return '';
|
132 |
}
|
133 |
|
134 |
+
$value = get_post_meta( $product->get_id(), 'woo_feed_availability_date', true );
|
135 |
|
136 |
if( isset( $value ) && !empty( $value ) && $value !== false ) {
|
137 |
return date( 'c', strtotime( $value ) );
|
includes/classes/class-woo-feed-ftp.php → libs/WebAppick/FTP/FTPConnection.php
RENAMED
@@ -10,14 +10,12 @@
|
|
10 |
* @author Ohidul Islam <wahid@webappick.com>
|
11 |
*/
|
12 |
|
13 |
-
|
14 |
-
die(); // If this file is called directly, abort.
|
15 |
-
}
|
16 |
|
17 |
/**
|
18 |
* Class FTPClient
|
19 |
*/
|
20 |
-
class
|
21 |
/**
|
22 |
* Holds The FTP Connection Resource
|
23 |
*
|
10 |
* @author Ohidul Islam <wahid@webappick.com>
|
11 |
*/
|
12 |
|
13 |
+
namespace WebAppick\FTP;
|
|
|
|
|
14 |
|
15 |
/**
|
16 |
* Class FTPClient
|
17 |
*/
|
18 |
+
class FTPConnection {
|
19 |
/**
|
20 |
* Holds The FTP Connection Resource
|
21 |
*
|
libs/WebAppick/FTP/SFTPConnection.php
CHANGED
@@ -1,6 +1,8 @@
|
|
1 |
<?php
|
2 |
/** @noinspection PhpUnhandledExceptionInspection */
|
3 |
|
|
|
|
|
4 |
class SFTPConnection {
|
5 |
|
6 |
private $connection;
|
1 |
<?php
|
2 |
/** @noinspection PhpUnhandledExceptionInspection */
|
3 |
|
4 |
+
namespace WebAppick\FTP;
|
5 |
+
|
6 |
class SFTPConnection {
|
7 |
|
8 |
private $connection;
|
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.
|
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.
|
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.
|
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.17
|
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.5.2
|
29 |
*/
|
30 |
|
31 |
if ( ! defined( 'ABSPATH' ) ) {
|
42 |
* @var string
|
43 |
* @since 3.1.6
|
44 |
*/
|
45 |
+
define( 'WOO_FEED_FREE_VERSION', '4.4.17' );
|
46 |
}
|
47 |
|
48 |
if ( ! defined( 'WOO_FEED_FREE_FILE' ) ) {
|