CTX Feed – WooCommerce Product Feed Manager Plugin - Version 4.0.1

Version Description

(2020-10-12) = * Fix: Edit page fatal error.

Download this release

Release Info

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

Code changes from version 4.0.0 to 4.0.1

README.txt CHANGED
@@ -5,7 +5,7 @@ Tags:product feed,woocommerce product feed,google shopping feed,google shopping,
5
  Requires at least: 3.6
6
  Tested Up To: 5.5
7
  Requires PHP: 5.6
8
- Stable tag: 4.0.0
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -308,6 +308,9 @@ Using pro version:
308
 
309
  == Changelog ==
310
 
 
 
 
311
  = 4.0.0 (2020-10-11) =
312
  * Fix: Code Refactor.
313
 
5
  Requires at least: 3.6
6
  Tested Up To: 5.5
7
  Requires PHP: 5.6
8
+ Stable tag: 4.0.1
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
308
 
309
  == Changelog ==
310
 
311
+ = 4.0.1 (2020-10-12) =
312
+ * Fix: Edit page fatal error.
313
+
314
  = 4.0.0 (2020-10-11) =
315
  * Fix: Code Refactor.
316
 
admin/class-woo-feed-admin.php CHANGED
@@ -74,7 +74,7 @@ class Woo_Feed_Admin {
74
  wp_register_style( 'slick', plugin_dir_url( __FILE__ ) . 'css/slick' . $ext, array(), $this->version );
75
  wp_register_style( 'slick-theme', plugin_dir_url( __FILE__ ) . 'css/slick-theme' . $ext, array(), $this->version );
76
  $mainDeps = array( 'selectize', 'fancy-select', 'list-tables', 'edit' );
77
- if ( 'woo-feed_page_webappick-feed-pro-vs-free' === $hook ) {
78
  $mainDeps = array_merge( $mainDeps, array( 'slick', 'slick-theme' ) );
79
  }
80
  }
@@ -147,8 +147,8 @@ class Woo_Feed_Admin {
147
  ],
148
  ],
149
  'nonce' => wp_create_nonce( 'wpf_feed_nonce' ),
150
- 'is_feed_edit' => isset( $_GET['page'], $_GET['action'] ) && 'webappick-manage-feeds' === $_GET['page'] && 'edit-feed' === $_GET['action'], // phpcs:ignore WordPress.Security.NonceVerification.Recommended
151
- 'is_feed_add' => isset( $_GET['page'] ) && 'webappick-new-feed' === $_GET['page'], // phpcs:ignore WordPress.Security.NonceVerification.Recommended
152
  'na' => esc_html__( 'N/A', 'woo-feed' ),
153
  'regenerate' => esc_html__( 'Generating...', 'woo-feed' ),
154
  'learn_more' => esc_html__( 'Learn More..', 'woo-feed' ),
@@ -178,9 +178,9 @@ class Woo_Feed_Admin {
178
  ],
179
  );
180
  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
181
- if ( ( isset( $_GET['feed_created'] ) || isset( $_GET['feed_updated'] ) || isset( $_GET['feed_imported'] ) ) && isset( $_GET['feed_regenerate'] ) && 1 === $_GET['feed_regenerate'] ) {
182
  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
183
- $fileName = isset( $_GET['feed_name'] ) && ! empty( $_GET['feed_name'] ) ? sanitize_text_field( wp_unslash($_GET['feed_name']) ) : ''; // trigger feed regenerate...
184
  if ( ! empty( $fileName ) ) {
185
  // filename must be wf_config+XXX format for js to work.
186
  $js_opts['generator']['feed'] = 'wf_config' . woo_feed_extract_feed_option_name( $fileName );
74
  wp_register_style( 'slick', plugin_dir_url( __FILE__ ) . 'css/slick' . $ext, array(), $this->version );
75
  wp_register_style( 'slick-theme', plugin_dir_url( __FILE__ ) . 'css/slick-theme' . $ext, array(), $this->version );
76
  $mainDeps = array( 'selectize', 'fancy-select', 'list-tables', 'edit' );
77
+ if ( 'woo-feed_page_webappick-feed-pro-vs-free' == $hook ) {
78
  $mainDeps = array_merge( $mainDeps, array( 'slick', 'slick-theme' ) );
79
  }
80
  }
147
  ],
148
  ],
149
  'nonce' => wp_create_nonce( 'wpf_feed_nonce' ),
150
+ 'is_feed_edit' => isset( $_GET['page'], $_GET['action'] ) && 'webappick-manage-feeds' == $_GET['page'] && 'edit-feed' == $_GET['action'], // phpcs:ignore WordPress.Security.NonceVerification.Recommended
151
+ 'is_feed_add' => isset( $_GET['page'] ) && 'webappick-new-feed' == $_GET['page'], // phpcs:ignore WordPress.Security.NonceVerification.Recommended
152
  'na' => esc_html__( 'N/A', 'woo-feed' ),
153
  'regenerate' => esc_html__( 'Generating...', 'woo-feed' ),
154
  'learn_more' => esc_html__( 'Learn More..', 'woo-feed' ),
178
  ],
179
  );
180
  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
181
+ if ( ( isset( $_GET['feed_created'] ) || isset( $_GET['feed_updated'] ) || isset( $_GET['feed_imported'] ) ) && isset( $_GET['feed_regenerate'] ) && 1 == $_GET['feed_regenerate'] ) {
182
  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
183
+ $fileName = isset( $_GET['feed_name'] ) && ! empty( $_GET['feed_name'] ) ? sanitize_text_field( $_GET['feed_name'] ) : ''; // trigger feed regenerate...
184
  if ( ! empty( $fileName ) ) {
185
  // filename must be wf_config+XXX format for js to work.
186
  $js_opts['generator']['feed'] = 'wf_config' . woo_feed_extract_feed_option_name( $fileName );
admin/class-woo-feed-category-list.php CHANGED
@@ -183,7 +183,7 @@ class Woo_Feed_Category_list extends Woo_Feed_List_Table {
183
 
184
  /** Text displayed when no contact data is available */
185
  public function no_items() {
186
- esc_html_e( 'No mapping available.', 'woo-feed' );
187
  }
188
 
189
 
@@ -307,7 +307,7 @@ class Woo_Feed_Category_list extends Woo_Feed_List_Table {
307
  * @see $this->prepare_items()
308
  **************************************************************************/
309
  public function process_bulk_action() {
310
- $nonce = isset( $_REQUEST['_wpnonce'] ) && ! empty( sanitize_text_field( wp_unslash($_REQUEST['_wpnonce']) ) ) ? sanitize_text_field( wp_unslash($_REQUEST['_wpnonce']) ) : '';
311
  // Detect when a bulk action is being triggered...
312
  if ( 'delete-mapping' === $this->current_action() ) {
313
  // In our file that handles the request, verify the nonce.
@@ -337,7 +337,7 @@ class Woo_Feed_Category_list extends Woo_Feed_List_Table {
337
  }
338
 
339
  // If the delete bulk action is triggered
340
- if ( ( isset( $_POST['mapping'] ) ) && ( isset( $_POST['action'] ) && 'bulk-delete' === $_POST['action'] ) || ( isset( $_POST['action2'] ) && 'bulk-delete' === $_POST['action2'] ) ) {
341
  if ( 'bulk-delete' === $this->current_action() ) {
342
  if ( ! wp_verify_nonce( $nonce, 'bulk-' . $this->_args['plural'] ) ) {
343
  update_option( 'wpf_message', esc_html__( 'Failed To Delete Mapping. You do not have sufficient permission to delete.', 'woo-feed' ), false );
183
 
184
  /** Text displayed when no contact data is available */
185
  public function no_items() {
186
+ _e( 'No mapping available.', 'woo-feed' );
187
  }
188
 
189
 
307
  * @see $this->prepare_items()
308
  **************************************************************************/
309
  public function process_bulk_action() {
310
+ $nonce = isset( $_REQUEST['_wpnonce'] ) && ! empty( $_REQUEST['_wpnonce'] ) ? sanitize_text_field( $_REQUEST['_wpnonce'] ) : '';
311
  // Detect when a bulk action is being triggered...
312
  if ( 'delete-mapping' === $this->current_action() ) {
313
  // In our file that handles the request, verify the nonce.
337
  }
338
 
339
  // If the delete bulk action is triggered
340
+ if ( ( isset( $_POST['mapping'] ) ) && ( isset( $_POST['action'] ) && 'bulk-delete' == $_POST['action'] ) || ( isset( $_POST['action2'] ) && 'bulk-delete' == $_POST['action2'] ) ) {
341
  if ( 'bulk-delete' === $this->current_action() ) {
342
  if ( ! wp_verify_nonce( $nonce, 'bulk-' . $this->_args['plural'] ) ) {
343
  update_option( 'wpf_message', esc_html__( 'Failed To Delete Mapping. You do not have sufficient permission to delete.', 'woo-feed' ), false );
admin/class-woo-feed-manage-list.php CHANGED
@@ -76,7 +76,7 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
76
  case 'option_name':
77
  return $optionName;
78
  case 'status':
79
- if ( ! isset( $itemInfo['status'] ) || ( isset( $itemInfo['status'] ) && 1 === $itemInfo['status'] ) ) {
80
  return ' <div class="wf_status_wrap"><input style="display: none;" data-index=' . $statusId . ' id=' . $statusId . ' checked class="woo_feed_status_input" type="checkbox" value="' . $getItem . '"/>
81
  <label for=' . $statusId . ' class= "woo-feed_active_status"></label></div>';
82
  } else {
@@ -215,7 +215,7 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
215
 
216
  /** Text displayed when no data is available */
217
  public function no_items() {
218
- esc_html_e( 'No feed available.', 'woo-feed' );
219
  }
220
 
221
 
@@ -351,7 +351,7 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
351
  // Detect when a bulk action is being triggered...
352
  if ( 'delete-feed' === $this->current_action() ) {
353
  // In our file that handles the request, verify the nonce.
354
- $nonce = isset( $_REQUEST['_wpnonce'] ) && ! empty( wp_unslash( $_REQUEST['_wpnonce'] ) ) ? wp_unslash( sanitize_text_field( $_REQUEST['_wpnonce'] ) ) : '';
355
  if ( ! wp_verify_nonce( $nonce, 'wf_delete_feed' ) ) {
356
  update_option( 'wpf_message', esc_html__( 'Failed To Delete Feed. You do not have sufficient permission to delete.', 'woo-feed' ), false );
357
  wp_safe_redirect( admin_url( 'admin.php?page=webappick-manage-feeds&wpf_message=error' ) );
@@ -372,16 +372,16 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
372
  // Detect when a bulk action is being triggered...
373
  if ( 'edit-feed' === $this->current_action() ) {
374
  // In our file that handles the request, verify the nonce.
375
- $nonce = isset( $_REQUEST['_wpnonce'] ) && ! empty( wp_unslash( $_REQUEST['_wpnonce'] ) ) ? wp_unslash( sanitize_text_field( $_REQUEST['_wpnonce'] ) ) : '';
376
  if ( ! wp_verify_nonce( $nonce, 'wf_edit_feed' ) ) {
377
  wp_die( esc_html__( 'You do not have sufficient permission to delete!', 'woo-feed' ), 403 );
378
  }
379
  }
380
 
381
  // If the delete bulk action is triggered
382
- if ( ( isset( $_POST['feed'] ) ) && ( isset( $_POST['action'] ) && 'bulk-delete' === $_POST['action'] ) || ( isset( $_POST['action2'] ) && 'bulk-delete' === $_POST['action2'] ) ) {
383
  if ( 'bulk-delete' === $this->current_action() ) {
384
- $nonce = isset( $_REQUEST['_wpnonce'] ) && ! empty( $_REQUEST['_wpnonce'] ) ? wp_unslash( sanitize_text_field( $_REQUEST['_wpnonce'] ) ) : '';
385
  if ( ! wp_verify_nonce( $nonce, 'bulk-' . $this->_args['plural'] ) ) {
386
  wp_die( esc_html__( 'You do not have sufficient permission to delete!', 'woo-feed' ), 403 );
387
  } else {
76
  case 'option_name':
77
  return $optionName;
78
  case 'status':
79
+ if ( ! isset( $itemInfo['status'] ) || ( isset( $itemInfo['status'] ) && 1 == $itemInfo['status'] ) ) {
80
  return ' <div class="wf_status_wrap"><input style="display: none;" data-index=' . $statusId . ' id=' . $statusId . ' checked class="woo_feed_status_input" type="checkbox" value="' . $getItem . '"/>
81
  <label for=' . $statusId . ' class= "woo-feed_active_status"></label></div>';
82
  } else {
215
 
216
  /** Text displayed when no data is available */
217
  public function no_items() {
218
+ _e( 'No feed available.', 'woo-feed' );
219
  }
220
 
221
 
351
  // Detect when a bulk action is being triggered...
352
  if ( 'delete-feed' === $this->current_action() ) {
353
  // In our file that handles the request, verify the nonce.
354
+ $nonce = isset( $_REQUEST['_wpnonce'] ) && ! empty( $_REQUEST['_wpnonce'] ) ? sanitize_text_field( $_REQUEST['_wpnonce'] ) : '';
355
  if ( ! wp_verify_nonce( $nonce, 'wf_delete_feed' ) ) {
356
  update_option( 'wpf_message', esc_html__( 'Failed To Delete Feed. You do not have sufficient permission to delete.', 'woo-feed' ), false );
357
  wp_safe_redirect( admin_url( 'admin.php?page=webappick-manage-feeds&wpf_message=error' ) );
372
  // Detect when a bulk action is being triggered...
373
  if ( 'edit-feed' === $this->current_action() ) {
374
  // In our file that handles the request, verify the nonce.
375
+ $nonce = isset( $_REQUEST['_wpnonce'] ) && ! empty( $_REQUEST['_wpnonce'] ) ? sanitize_text_field( $_REQUEST['_wpnonce'] ) : '';
376
  if ( ! wp_verify_nonce( $nonce, 'wf_edit_feed' ) ) {
377
  wp_die( esc_html__( 'You do not have sufficient permission to delete!', 'woo-feed' ), 403 );
378
  }
379
  }
380
 
381
  // If the delete bulk action is triggered
382
+ if ( ( isset( $_POST['feed'] ) ) && ( isset( $_POST['action'] ) && 'bulk-delete' == $_POST['action'] ) || ( isset( $_POST['action2'] ) && 'bulk-delete' == $_POST['action2'] ) ) {
383
  if ( 'bulk-delete' === $this->current_action() ) {
384
+ $nonce = isset( $_REQUEST['_wpnonce'] ) && ! empty( $_REQUEST['_wpnonce'] ) ? sanitize_text_field( $_REQUEST['_wpnonce'] ) : '';
385
  if ( ! wp_verify_nonce( $nonce, 'bulk-' . $this->_args['plural'] ) ) {
386
  wp_die( esc_html__( 'You do not have sufficient permission to delete!', 'woo-feed' ), 403 );
387
  } else {
admin/css/woo-feed-admin.css CHANGED
@@ -1,1322 +1,1322 @@
1
  /**
2
  * All of the CSS for your admin-specific functionality should be
3
  * included in this file.
4
- */
5
- .wpf_spin {
6
- -webkit-animation: spin 1000ms infinite linear;
7
- animation: spin 1000ms infinite linear; }
8
- .wpf_spin.reverse_spin {
9
- animation-direction: reverse; }
10
-
11
- .wpf_regenerate.disabled {
12
- color: #737373;
13
- box-shadow: none;
14
- cursor: not-allowed; }
15
-
16
- @-webkit-keyframes spin {
17
- 0% {
18
- -webkit-transform: rotate(0deg);
19
- transform: rotate(0deg); }
20
- 100% {
21
- -webkit-transform: rotate(359deg);
22
- transform: rotate(359deg); } }
23
-
24
- @keyframes spin {
25
- 0% {
26
- -webkit-transform: rotate(0deg);
27
- transform: rotate(0deg); }
28
- 100% {
29
- -webkit-transform: rotate(359deg);
30
- transform: rotate(359deg); } }
31
-
32
- .wfbtn {
33
- background: #3498db;
34
- background-image: linear-gradient(to bottom, #3498db, #2980b9);
35
- border-radius: 17px;
36
- box-shadow: 0 1px 3px #666666;
37
- font-family: Arial, sans-serif;
38
- color: #ffffff;
39
- font-size: 20px;
40
- padding: 10px 20px 10px 20px;
41
- border: solid #2b698f 3px;
42
- text-decoration: none; }
43
- .wfbtn:hover {
44
- background: #3cb0fd;
45
- background-image: linear-gradient(to bottom, #3cb0fd, #3498db);
46
- text-decoration: none; }
47
-
48
- .wftooltip {
49
- display: none;
50
- position: absolute;
51
- border: 1px solid #333;
52
- background-color: #161616;
53
- border-radius: 5px;
54
- padding: 10px;
55
- color: #fff;
56
- font-size: 12px; }
57
-
58
- .feed-actions .makeFeedResponse {
59
- width: 70%;
60
- color: green; }
61
-
62
- .woo-feed-mapping-input {
63
- width: 100%; }
64
-
65
- .requiredIn {
66
- color: red; }
67
-
68
- .generalInput {
69
- width: 200px; }
70
- .generalInput:not(.selectize-control) {
71
- margin: 5px auto; }
72
-
73
- .error {
74
- color: red; }
75
-
76
- .widefat td select, .widefat td input {
77
- max-width: 100%; }
78
-
79
- #wf_newRow {
80
- margin-left: 0; }
81
-
82
- .mtable tbody tr {
83
- height: 25px;
84
- border: 1px solid #CCC;
85
- text-align: left;
86
- -ms-flex-align: baseline;
87
- align-items: baseline;
88
- font-weight: bold; }
89
-
90
- .mtable th:nth-child(1) {
91
- width: 17px; }
92
-
93
- .mtable th:nth-child(2) {
94
- width: 160px; }
95
-
96
- .mtable th:nth-child(3) {
97
- width: 100px; }
98
-
99
- .mtable th:nth-child(4) {
100
- width: 100px; }
101
-
102
- .mtable th:nth-child(5) {
103
- width: 150px; }
104
-
105
- .mtable th:nth-child(6) {
106
- width: 100px; }
107
-
108
- .mtable th:nth-child(7) {
109
- width: 150px; }
110
-
111
- .mtable th:nth-child(8) {
112
- width: 90px; }
113
-
114
- .mtable th:nth-child(9) {
115
- width: 29px; }
116
-
117
- .mtable2 tbody tr {
118
- height: 25px;
119
- border: 1px solid #CCC;
120
- text-align: left;
121
- -ms-flex-align: baseline;
122
- align-items: baseline;
123
- font-weight: bold; }
124
-
125
- .mtable2 th:nth-child(1) {
126
- width: 30px; }
127
-
128
- .mtable2 th:nth-child(2) {
129
- width: 150px; }
130
-
131
- .mtable2 th:nth-child(3) {
132
- width: 230px; }
133
-
134
- .mtable2 th:nth-child(4) {
135
- width: 220px; }
136
-
137
- .mtable2 th:nth-child(7) {
138
- width: 50px; }
139
-
140
- .mtable2 th:nth-child(8) {
141
- width: 50px; }
142
-
143
- .mtable2 th:nth-child(9) {
144
- width: 29px; }
145
-
146
- .wp-admin select.wf_mattributes {
147
- width: 150px;
148
- left: 0;
149
- height: 25px; }
150
-
151
- div#wf-tab-content1 select:not([name^="output_type"]) {
152
- width: 100%; }
153
-
154
- div#wf-tab-content1 input {
155
- width: 100%; }
156
-
157
- div#wf-tab-content1 .dashicons {
158
- vertical-align: middle; }
159
-
160
- .wf_attributes {
161
- width: 150px;
162
- left: 0; }
163
-
164
- .wf_compare {
165
- max-width: 245px;
166
- left: 0; }
167
-
168
- .wf_ps {
169
- width: 100px;
170
- left: 0; }
171
-
172
- .wf_sortedtable {
173
- cursor: move; }
174
-
175
- .sorted_table {
176
- position: relative; }
177
- .sorted_table .dragged {
178
- position: absolute;
179
- opacity: 0.8;
180
- z-index: 9999;
181
- background: #fff;
182
- width: 100%;
183
- display: table; }
184
- .sorted_table tbody tr.placeholder td {
185
- border: 1px dashed #2cc185;
186
- height: 46px; }
187
-
188
- .wfnoempty {
189
- width: 120px; }
190
-
191
- /*==================Tab Design=======================*/
192
- p {
193
- color: #222; }
194
-
195
- .wf_tabs {
196
- position: relative;
197
- margin: 0 auto;
198
- width: 100%;
199
- list-style: none;
200
- /*bottom: 50px;*/ }
201
-
202
- .wf_tabs:after {
203
- display: table;
204
- clear: both;
205
- content: ""; }
206
-
207
- .wf_tabs li {
208
- float: left;
209
- width: 20%;
210
- display: block;
211
- border: 2px solid #CCC; }
212
-
213
- .wf_tabs li > input[type="radio"][name="wf_tabs"] {
214
- position: absolute;
215
- top: auto;
216
- left: -9999px; }
217
-
218
- .wf-tab-name {
219
- display: block;
220
- padding: 15px;
221
- font-size: 15px;
222
- font-weight: bold;
223
- line-height: 1;
224
- background: #fff;
225
- cursor: pointer;
226
- position: relative;
227
- text-align: center;
228
- text-transform: uppercase;
229
- color: #2CC185; }
230
-
231
- .wf-tab-name:hover {
232
- background: #2CC185;
233
- color: white; }
234
-
235
- .wf_tabs [id^="tab"]:checked + label {
236
- background: #2CC185;
237
- color: white; }
238
-
239
- .wf_tabs .wf-tab-content {
240
- z-index: 2;
241
- display: none;
242
- width: 100%;
243
- font-size: 0.9rem;
244
- position: absolute;
245
- left: 0;
246
- background: #fff;
247
- border: 2px solid #CCC; }
248
-
249
- .wf_tabs [id^="tab"]:checked ~ [id^="wf-tab-content"] {
250
- display: block; }
251
-
252
- [id^="wf-tab-content"] {
253
- margin-bottom: 40px; }
254
-
255
- div#wf-tab-content2 table:first-child {
256
- padding: 10px 0; }
257
-
258
- div#wf-tab-content2 table:first-child td:nth-child(1) {
259
- width: 260px; }
260
-
261
- div#wf-tab-content2 table:first-child td:nth-child(2) {
262
- width: 260px; }
263
-
264
- table.feed-actions tr td:last-child {
265
- text-align: right; }
266
-
267
- /* Selectize */
268
- select.selectize {
269
- display: none; }
270
-
271
- body.no-js select.selectize {
272
- display: block !important; }
273
-
274
- .wp-list-table .option_name .wf_feed_option_name_link {
275
- font-weight: 700;
276
- color: #30336b; }
277
-
278
- .wp-list-table #option_name a {
279
- color: #32373c; }
280
-
281
- /* fallback combat */
282
- .selectize-dropdown .active {
283
- background-color: #edf9ff; }
284
-
285
- .selectize-dropdown .create {
286
- padding: 5px 8px; }
287
-
288
- .wapk-selectize-item {
289
- background: #0073aa !important;
290
- color: #f1f1f1 !important;
291
- font-weight: bold !important;
292
- border-color: #0073aa !important;
293
- padding-left: 5px;
294
- padding-right: 5px; }
295
-
296
- .selectize-input.full #googleTaxonomyId-selectized {
297
- opacity: 0;
298
- position: absolute;
299
- left: -10000px; }
300
-
301
- .selectize-dropdown [data-selectable].option {
302
- cursor: default; }
303
-
304
- .selectize-control.plugin-remove_button [data-value] .remove {
305
- border-left: 1px solid #f1f1f1 !important; }
306
-
307
- .selectize-dropdown .optgroup-header {
308
- font-weight: 700;
309
- background: #efefef;
310
- color: #5a5a5a; }
311
-
312
- .selectize-dropdown [data-selectable].option {
313
- cursor: pointer; }
314
-
315
- /* Feed active and inactive button CSS */
316
- .wf_status_wrap label {
317
- width: 55px;
318
- height: 30px;
319
- box-sizing: border-box;
320
- float: left;
321
- border-radius: 100px;
322
- position: relative;
323
- cursor: pointer;
324
- transition: .3s ease;
325
- background: #d3d3d3; }
326
-
327
- input[class=woo_feed_status_input]:checked + label {
328
- background: #4fbe79; }
329
-
330
- input[class=woo_feed_status_input]:checked + label:before {
331
- left: 29px; }
332
-
333
- .wf_status_wrap label:before {
334
- transition: .3s ease;
335
- content: '';
336
- width: 20px;
337
- height: 20px;
338
- position: absolute;
339
- background: white;
340
- left: 6px;
341
- top: 5px;
342
- box-sizing: border-box;
343
- color: black;
344
- border-radius: 100px;
345
- box-shadow: 0px 1.5px 2px 0px #000; }
346
-
347
- .view span.dashicons.dashicons-external {
348
- color: #30336b; }
349
-
350
- .view span.dashicons.dashicons-sos {
351
- color: #22a6b3; }
352
-
353
- .view span.dashicons.dashicons-download {
354
- color: #ee5253; }
355
-
356
- .view span.dashicons.dashicons-media-code {
357
- color: #576574; }
358
-
359
- /* list table style */
360
- .widefat td.column-url, .widefat th.column-url,
361
- .column-url {
362
- color: #1e8f9a;
363
- font-weight: bold; }
364
-
365
- /** Feed Progress **/
366
- .feed-progress-container {
367
- width: 100%;
368
- color: white;
369
- text-align: center;
370
- font-weight: 300; }
371
-
372
- .feed-progress-bar {
373
- width: 100%;
374
- background: #eee;
375
- padding: 3px;
376
- border-radius: 3px;
377
- box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2); }
378
-
379
- .feed-progress-bar-fill {
380
- height: 20px;
381
- display: block;
382
- background: #3DC264;
383
- width: 0;
384
- border-radius: 3px;
385
- transition: width 0.8s ease; }
386
-
387
- .feed-progress-status {
388
- float: left;
389
- font-weight: bold;
390
- color: darkblue; }
391
-
392
- .feed-progress-percentage {
393
- text-align: right;
394
- font-weight: bolder;
395
- color: #41f49d;
396
- font-family: 'Arial Black', sans-serif;
397
- font-size: large; }
398
-
399
- #wpbody-content.woofeed-body-content {
400
- overflow: visible !important; }
401
-
402
- .clippy {
403
- position: relative;
404
- width: 13px;
405
- margin-top: -3px;
406
- margin-left: 3px;
407
- top: 3px; }
408
-
409
- .column-url .clippy {
410
- display: none; }
411
-
412
- .column-url:hover .clippy {
413
- display: inline-block; }
414
-
415
  /**
416
  * Primer Tooltip
417
- */
418
- .tooltipped {
419
- position: relative; }
420
- .tooltipped:after {
421
- position: absolute;
422
- z-index: 1000000;
423
- display: none;
424
- padding: 5px 8px;
425
- font: normal normal 11px/1.5 Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
426
- color: #fff;
427
- text-align: center;
428
- text-decoration: none;
429
- text-shadow: none;
430
- text-transform: none;
431
- letter-spacing: normal;
432
- word-wrap: break-word;
433
- white-space: pre;
434
- pointer-events: none;
435
- content: attr(aria-label);
436
- background: rgba(0, 0, 0, 0.8);
437
- border-radius: 3px;
438
- -webkit-font-smoothing: subpixel-antialiased; }
439
- .tooltipped:before {
440
- position: absolute;
441
- z-index: 1000001;
442
- display: none;
443
- width: 0;
444
- height: 0;
445
- color: rgba(0, 0, 0, 0.8);
446
- pointer-events: none;
447
- content: "";
448
- border: 5px solid transparent; }
449
- .tooltipped:hover:before {
450
- display: inline-block;
451
- text-decoration: none; }
452
- .tooltipped:hover:after {
453
- display: inline-block;
454
- text-decoration: none; }
455
- .tooltipped:active:before {
456
- display: inline-block;
457
- text-decoration: none; }
458
- .tooltipped:active:after {
459
- display: inline-block;
460
- text-decoration: none; }
461
- .tooltipped:focus:before {
462
- display: inline-block;
463
- text-decoration: none; }
464
- .tooltipped:focus:after {
465
- display: inline-block;
466
- text-decoration: none; }
467
- .tooltipped-multiline:hover:after {
468
- display: table-cell; }
469
- .tooltipped-multiline:active:after {
470
- display: table-cell; }
471
- .tooltipped-multiline:focus:after {
472
- display: table-cell; }
473
- .tooltipped-multiline:after {
474
- width: -webkit-max-content;
475
- width: -moz-max-content;
476
- width: max-content;
477
- max-width: 250px;
478
- word-break: break-word;
479
- word-wrap: normal;
480
- white-space: pre-line;
481
- border-collapse: separate; }
482
- .tooltipped-s:after {
483
- top: 100%;
484
- right: 50%;
485
- margin-top: 5px;
486
- -webkit-transform: translateX(50%);
487
- transform: translateX(50%); }
488
- .tooltipped-s:before {
489
- top: auto;
490
- right: 50%;
491
- bottom: -5px;
492
- margin-right: -5px;
493
- border-bottom-color: rgba(0, 0, 0, 0.8); }
494
- .tooltipped-se:after {
495
- top: 100%;
496
- margin-top: 5px;
497
- right: auto;
498
- left: 50%;
499
- margin-left: -15px; }
500
- .tooltipped-se:before {
501
- top: auto;
502
- right: 50%;
503
- bottom: -5px;
504
- margin-right: -5px;
505
- border-bottom-color: rgba(0, 0, 0, 0.8); }
506
- .tooltipped-sw:after {
507
- top: 100%;
508
- right: 50%;
509
- margin-top: 5px;
510
- margin-right: -15px; }
511
- .tooltipped-sw:before {
512
- top: auto;
513
- right: 50%;
514
- bottom: -5px;
515
- margin-right: -5px;
516
- border-bottom-color: rgba(0, 0, 0, 0.8); }
517
- .tooltipped-n:after {
518
- right: 50%;
519
- bottom: 100%;
520
- margin-bottom: 5px;
521
- -webkit-transform: translateX(50%);
522
- transform: translateX(50%); }
523
- .tooltipped-n:before {
524
- top: -5px;
525
- right: 50%;
526
- bottom: auto;
527
- margin-right: -5px;
528
- border-top-color: rgba(0, 0, 0, 0.8); }
529
- .tooltipped-ne:after {
530
- bottom: 100%;
531
- margin-bottom: 5px;
532
- right: auto;
533
- left: 50%;
534
- margin-left: -15px; }
535
- .tooltipped-ne:before {
536
- top: -5px;
537
- right: 50%;
538
- bottom: auto;
539
- margin-right: -5px;
540
- border-top-color: rgba(0, 0, 0, 0.8); }
541
- .tooltipped-nw:after {
542
- right: 50%;
543
- bottom: 100%;
544
- margin-bottom: 5px;
545
- margin-right: -15px; }
546
- .tooltipped-nw:before {
547
- top: -5px;
548
- right: 50%;
549
- bottom: auto;
550
- margin-right: -5px;
551
- border-top-color: rgba(0, 0, 0, 0.8); }
552
- .tooltipped-w:after {
553
- right: 100%;
554
- bottom: 50%;
555
- margin-right: 5px;
556
- -webkit-transform: translateY(50%);
557
- transform: translateY(50%); }
558
- .tooltipped-w:before {
559
- top: 50%;
560
- bottom: 50%;
561
- left: -5px;
562
- margin-top: -5px;
563
- border-left-color: rgba(0, 0, 0, 0.8); }
564
- .tooltipped-e:after {
565
- bottom: 50%;
566
- left: 100%;
567
- margin-left: 5px;
568
- -webkit-transform: translateY(50%);
569
- transform: translateY(50%); }
570
- .tooltipped-e:before {
571
- top: 50%;
572
- right: -5px;
573
- bottom: 50%;
574
- margin-top: -5px;
575
- border-right-color: rgba(0, 0, 0, 0.8); }
576
- .tooltipped-multiline.tooltipped-s:after {
577
- right: auto;
578
- left: 50%;
579
- -webkit-transform: translateX(-50%);
580
- transform: translateX(-50%); }
581
- .tooltipped-multiline.tooltipped-n:after {
582
- right: auto;
583
- left: 50%;
584
- -webkit-transform: translateX(-50%);
585
- transform: translateX(-50%); }
586
- .tooltipped-multiline.tooltipped-w:after {
587
- right: 100%; }
588
- .tooltipped-multiline.tooltipped-e:after {
589
- right: 100%; }
590
- .tooltipped-sticky:before {
591
- display: inline-block; }
592
- .tooltipped-sticky:after {
593
- display: inline-block; }
594
- .tooltipped-sticky.tooltipped-multiline:after {
595
- display: table-cell; }
596
-
597
- .fullscreen-overlay-enabled.dark-theme .tooltipped:after {
598
- color: #000;
599
- background: rgba(255, 255, 255, 0.8); }
600
-
601
- .fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-s:before {
602
- border-bottom-color: rgba(255, 255, 255, 0.8); }
603
-
604
- .fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-se:before {
605
- border-bottom-color: rgba(255, 255, 255, 0.8); }
606
-
607
- .fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-sw:before {
608
- border-bottom-color: rgba(255, 255, 255, 0.8); }
609
-
610
- .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-n:before {
611
- border-top-color: rgba(255, 255, 255, 0.8); }
612
-
613
- .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-ne:before {
614
- border-top-color: rgba(255, 255, 255, 0.8); }
615
-
616
- .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-nw:before {
617
- border-top-color: rgba(255, 255, 255, 0.8); }
618
-
619
- .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-e:before {
620
- border-right-color: rgba(255, 255, 255, 0.8); }
621
-
622
- .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-w:before {
623
- border-left-color: rgba(255, 255, 255, 0.8); }
624
-
625
- @media screen and (min-width: 0\0) {
626
- .tooltipped-multiline:after {
627
- width: 250px; } }
628
-
629
- ul.tracker_collection_list {
630
- list-style: initial;
631
- padding: initial;
632
- margin: -10px 0 0 30px;
633
- font-size: 11px !important; }
634
- ul.tracker_collection_list li {
635
- margin: 0; }
636
-
637
- /** Info Message Table **/
638
- table.wf-info-table, table.wf-rate-table {
639
- vertical-align: middle;
640
- text-align: center;
641
- max-width: 100%;
642
- font-weight: 500; }
643
- table.wf-info-table th, table.wf-rate-table th {
644
- text-align: center; }
645
- table.wf-info-table th .woo-feed-top-header, table.wf-rate-table th .woo-feed-top-header {
646
- display: -ms-flexbox;
647
- display: flex;
648
- -ms-flex-pack: justify;
649
- justify-content: space-between;
650
- -ms-flex-align: center;
651
- align-items: center; }
652
- 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 {
653
- margin-left: 20px; }
654
- 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 {
655
- float: right;
656
- display: -ms-flexbox;
657
- display: flex;
658
- border-radius: 7px;
659
- -ms-flex-pack: center;
660
- justify-content: center;
661
- -ms-flex-align: center;
662
- align-items: center; }
663
- 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 {
664
- padding: 8px 20px;
665
- background: #576574;
666
- color: #fff;
667
- box-sizing: border-box;
668
- display: inline-block;
669
- transition: .3s ease; }
670
- 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 {
671
- background: #576574;
672
- border-top-left-radius: 5px;
673
- border-bottom-left-radius: 5px; }
674
- 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 {
675
- background: #ee5253; }
676
- 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 {
677
- background: #22a6b3;
678
- border-top-right-radius: 5px;
679
- border-bottom-right-radius: 5px; }
680
- 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 {
681
- font-size: 18px;
682
- line-height: 1.2; }
683
- 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 {
684
- background: #30336b;
685
- box-shadow: 0px 0px 33px 0px rgba(0, 0, 0, 0.12); }
686
- table.wf-info-table strong, table.wf-rate-table strong {
687
- font-weight: bold; }
688
-
689
- table.wf-info-table th:first-child img {
690
- margin: 0 0 -5px 5px; }
691
-
692
- table.wf-rate-table a {
693
- color: #0073aa; }
694
-
695
- table.wf-rate-table a.review-star:after {
696
- content: "\f155\f155\f155\f155\f155" !important;
697
- font-family: dashicons;
698
- font-size: 10px;
699
- font-weight: 100;
700
- text-rendering: auto;
701
- -webkit-font-smoothing: antialiased;
702
- -moz-osx-font-smoothing: grayscale;
703
- color: #0073aa;
704
- text-decoration: underline; }
705
-
706
- /** Admin Menu Icon **/
707
- #adminmenu #toplevel_page_webappick-manage-feeds div.wp-menu-image::before {
708
- content: "";
709
- background: url(../images/woo-feed-icon.svg) no-repeat center center;
710
- background-size: 20px 20px;
711
- opacity: 0.6;
712
- filter: alpha(opacity=60); }
713
-
714
- #adminmenu #toplevel_page_webappick-manage-feeds:hover div.wp-menu-image::before {
715
- opacity: 1;
716
- filter: alpha(opacity=100); }
717
-
718
- #adminmenu #toplevel_page_webappick-manage-feeds.wp-has-current-submenu div.wp-menu-image::before {
719
- opacity: 1;
720
- filter: alpha(opacity=100); }
721
-
722
- /** Admin Page Wrapper **/
723
- .wapk-admin, .wapk-admin * {
724
- box-sizing: border-box; }
725
-
726
- .wapk-admin {
727
- position: relative;
728
- display: block;
729
- -webkit-hyphens: manual;
730
- -ms-hyphens: manual;
731
- -moz-hyphens: manual;
732
- hyphens: manual;
733
- color: #1B2730;
734
- /* reset .warp margin to use full width except menu area */
735
- margin: 0 0 0 -10px; }
736
-
737
- @media screen and (min-width: 783px) {
738
- .wapk-admin {
739
- margin: 0 0 0 -20px; } }
740
-
741
- .text-center {
742
- text-align: center; }
743
-
744
- .wapk-admin h1, .wapk-admin h2, .wapk-admin h3,
745
- .wapk-admin h4, .wapk-admin h5, .wapk-admin h6,
746
- .wapk-admin p {
747
- color: #1B2730; }
748
-
749
- .wapk-admin sup {
750
- vertical-align: baseline;
751
- position: relative;
752
- top: -6px; }
753
-
754
- .wapk-admin sub {
755
- vertical-align: baseline;
756
- position: relative;
757
- top: 4px; }
758
-
759
- /* WP.Core.UI Compat */
760
- .wapk-admin .wapk-section {
761
- margin: 10px 20px 0 22px;
762
- position: relative;
763
- display: block; }
764
- .wapk-admin .wapk-section [class$=icon32] + h2 {
765
- font-size: 23px;
766
- font-weight: 400;
767
- margin: 0;
768
- padding: 9px 0 4px 0;
769
- line-height: 1.3; }
770
- .wapk-admin .wapk-section h1 {
771
- font-size: 23px;
772
- font-weight: 400;
773
- margin: 0;
774
- padding: 9px 0 4px 0;
775
- line-height: 1.3; }
776
- .wapk-admin .wapk-section > h2:first-child {
777
- font-size: 23px;
778
- font-weight: 400;
779
- margin: 0;
780
- padding: 9px 0 4px 0;
781
- line-height: 1.3; }
782
-
783
- .wapk-admin > .notice {
784
- margin: 10px 20px 0 22px;
785
- position: relative;
786
- display: block; }
787
-
788
- .wapk-admin span.help {
789
- display: block;
790
- float: left;
791
- width: 100%;
792
- font-size: 0.9em;
793
- color: #636363;
794
- margin-top: 5px;
795
- font-weight: 500; }
796
- .wapk-admin span.help .dashicons {
797
- width: 11px;
798
- height: 12px;
799
- font-size: inherit;
800
- vertical-align: middle; }
801
-
802
- .clear:after {
803
- content: "";
804
- display: table;
805
- clear: both; }
806
-
807
- /*.wapk-admin .help a { color: inherit; text-decoration: underline; }*/
808
- /** Extend WP Core UI PostBox For Docs **/
809
- .wapk-feed-docs .postbox {
810
- width: 355px;
811
- margin-right: 20px;
812
- display: inline-block;
813
- vertical-align: top; }
814
- .wapk-feed-docs .postbox .hndle {
815
- font-size: 14px;
816
- padding: 8px 12px;
817
- margin: 0;
818
- line-height: 1.4;
819
- cursor: pointer; }
820
- .wapk-feed-docs .postbox .dashicons {
821
- color: #ccc; }
822
- .wapk-feed-docs .postbox a {
823
- text-decoration: none; }
824
- .wapk-feed-docs .postbox .inside {
825
- margin-bottom: 0; }
826
- .wapk-feed-docs .postbox ul {
827
- margin-bottom: 0; }
828
- .wapk-feed-docs .postbox .toggle-indicator:before {
829
- content: "\F142";
830
- display: inline-block;
831
- font: 400 20px/1 dashicons;
832
- speak: none;
833
- -webkit-font-smoothing: antialiased;
834
- -moz-osx-font-smoothing: grayscale;
835
- text-decoration: none !important; }
836
- .wapk-feed-docs .postbox li {
837
- width: 100%;
838
- display: block;
839
- float: left; }
840
- .wapk-feed-docs .postbox li span {
841
- display: inline-block;
842
- float: left;
843
- margin-right: 4px; }
844
- .wapk-feed-docs .postbox li a {
845
- display: inline-block;
846
- float: left;
847
- width: calc(100% - 24px); }
848
-
849
- .wapk-feed-docs .postbox.closed .toggle-indicator:before {
850
- content: "\F140"; }
851
-
852
- .wapk-section #post-body.columns-2 #side-sortables {
853
- min-height: 196px; }
854
-
855
- #poststuff #feed_merchant_info .inside {
856
- margin: 0;
857
- padding: 0; }
858
-
859
- #feed_merchant_info ul.data {
860
- margin-left: 24px;
861
- margin-top: 5px; }
862
- #feed_merchant_info ul.data li {
863
- margin-bottom: 5px; }
864
-
865
- .merchant-info-section {
866
- padding: 6px 10px 8px; }
867
-
868
- .generateFeed .wf-tab-content table:first-child {
869
- border: none;
870
- box-shadow: none; }
871
-
872
- .generateFeed table th {
873
- font-weight: bold; }
874
-
875
- @media only screen and (max-width: 850px) {
876
- .wapk-feed-docs .postbox {
877
- display: block;
878
- width: auto;
879
- float: none;
880
- margin-right: auto; } }
881
-
882
- /** Admin Feed Help Docs **/
883
- .wp-submenu li span.woo-feed-docs {
884
- font-weight: bold;
885
- color: #f18500; }
886
-
887
- .wp-submenu li:hover span.woo-feed-docs {
888
- color: #ce7304; }
889
-
890
- .wp-submenu li.current span.woo-feed-docs {
891
- color: #ce7304; }
892
-
893
- .wapk-admin .wapk-feed-docs .postbox .hndle {
894
- cursor: default; }
895
-
896
- /** Admin Call-To-Action **/
897
- .wapk-cta {
898
- position: relative;
899
- display: -ms-flexbox;
900
- display: flex;
901
- width: 100%;
902
- padding: 100px 15px;
903
- background: linear-gradient(45deg, #6CD5FF 33%, #c2efef 100%);
904
- -ms-flex-pack: center;
905
- justify-content: center;
906
- -ms-flex-align: center;
907
- align-items: center; }
908
- .wapk-cta-icon .dashicons {
909
- font-size: 100px;
910
- width: 100px;
911
- height: auto;
912
- margin: 0 10px -8px 0;
913
- color: #02658c; }
914
- .wapk-cta-content {
915
- width: 50%; }
916
- .wapk-cta-content h2 {
917
- font-size: 2em;
918
- margin: 0.5em 0; }
919
- .wapk-cta-action a.wapk-button {
920
- font-size: 24px;
921
- height: auto !important;
922
- padding: 10px 20px; }
923
-
924
- @media (max-width: 600px) {
925
- .wapk-cta {
926
- display: block;
927
- text-align: center;
928
- padding: 4em 0; }
929
- .wapk-cta-content {
930
- width: 100%;
931
- margin: 2em 0; } }
932
-
933
- /** Override .wp-core-ui .wapk-button styles with prefix .wapk-admin **/
934
- /* Button Skin */
935
- .wapk-button {
936
- color: #00D4D4;
937
- border-color: #00D4D4;
938
- display: inline-block;
939
- text-decoration: none;
940
- font-size: 13px;
941
- line-height: 2.15384615;
942
- min-height: 30px;
943
- margin: 0;
944
- padding: 0 10px;
945
- cursor: pointer;
946
- border-width: 1px;
947
- border-style: solid;
948
- -webkit-appearance: none;
949
- border-radius: 3px;
950
- white-space: nowrap;
951
- box-sizing: border-box; }
952
- .wapk-button > svg {
953
- width: 15px;
954
- margin-left: 5px;
955
- fill: #00D4D4; }
956
- .wapk-button > .dashicons {
957
- color: #00D4D4; }
958
- .wapk-button:hover {
959
- border-color: #00bbbb;
960
- color: #00bbbb; }
961
- .wapk-button:hover > svg {
962
- fill: #00bbbb; }
963
- .wapk-button:hover > .dashicons {
964
- color: #00bbbb; }
965
- .wapk-button:focus {
966
- border-color: #00D4D4;
967
- color: #00bbbb;
968
- box-shadow: 0 0 0 1px #00D4D4; }
969
- .wapk-button:focus > svg {
970
- fill: #00bbbb; }
971
- .wapk-button:focus > .dashicons {
972
- color: #00bbbb; }
973
- .wapk-button:active {
974
- background: #00bbbb;
975
- border-color: #00bbbb; }
976
- .wapk-button-secondary {
977
- color: #00D4D4;
978
- border-color: #00D4D4;
979
- display: inline-block;
980
- text-decoration: none;
981
- font-size: 13px;
982
- line-height: 2.15384615;
983
- min-height: 30px;
984
- margin: 0;
985
- padding: 0 10px;
986
- cursor: pointer;
987
- border-width: 1px;
988
- border-style: solid;
989
- -webkit-appearance: none;
990
- border-radius: 3px;
991
- white-space: nowrap;
992
- box-sizing: border-box; }
993
- .wapk-button-secondary > svg {
994
- width: 15px;
995
- margin-left: 5px;
996
- fill: #00D4D4; }
997
- .wapk-button-secondary > .dashicons {
998
- color: #00D4D4; }
999
- .wapk-button-secondary:hover {
1000
- border-color: #00bbbb;
1001
- color: #00bbbb; }
1002
- .wapk-button-secondary:hover > svg {
1003
- fill: #00bbbb; }
1004
- .wapk-button-secondary:hover > .dashicons {
1005
- color: #00bbbb; }
1006
- .wapk-button-secondary:focus {
1007
- border-color: #00D4D4;
1008
- color: #00bbbb;
1009
- box-shadow: 0 0 0 1px #00D4D4; }
1010
- .wapk-button-secondary:focus > svg {
1011
- fill: #00bbbb; }
1012
- .wapk-button-secondary:focus > .dashicons {
1013
- color: #00bbbb; }
1014
- .wapk-button-primary {
1015
- display: inline-block;
1016
- text-decoration: none;
1017
- font-size: 13px;
1018
- line-height: 2.15384615;
1019
- min-height: 30px;
1020
- margin: 0;
1021
- padding: 0 10px;
1022
- cursor: pointer;
1023
- border-width: 1px;
1024
- border-style: solid;
1025
- -webkit-appearance: none;
1026
- border-radius: 3px;
1027
- white-space: nowrap;
1028
- box-sizing: border-box;
1029
- background: #00D4D4;
1030
- border-color: #00D4D4;
1031
- color: #fff;
1032
- box-shadow: 0 1px 0 #00bbbb;
1033
- text-shadow: 0 -1px 1px #00bbbb, 1px 0 1px #00bbbb, 0 1px 1px #00bbbb, -1px 0 1px #00bbbb; }
1034
- .wapk-button-primary > svg {
1035
- fill: #fff; }
1036
- .wapk-button-primary:hover {
1037
- background: #00e3e3;
1038
- border-color: #00c5c5;
1039
- color: #fff; }
1040
- .wapk-button-primary:hover > svg {
1041
- fill: #fff; }
1042
- .wapk-button-primary:focus {
1043
- background: #00e3e3;
1044
- border-color: #00c5c5;
1045
- color: #fff;
1046
- box-shadow: 0 0 0 1px #fff, 0 0 0 3px #00D4D4; }
1047
- .wapk-button-primary:focus > svg {
1048
- fill: #fff; }
1049
- .wapk-button-primary:active {
1050
- background: #00bbbb;
1051
- border-color: #00bbbb;
1052
- color: #fff; }
1053
- .wapk-button-primary:active > svg {
1054
- fill: #fff; }
1055
- .wapk-button-primary:disabled {
1056
- color: #c7d1d1 !important;
1057
- background: #22ffff !important;
1058
- border-color: #22ffff !important;
1059
- text-shadow: none !important; }
1060
- .wapk-button-primary:disabled > svg {
1061
- fill: #c7d1d1 !important; }
1062
- .wapk-button.hover {
1063
- border-color: #00bbbb;
1064
- color: #00bbbb; }
1065
- .wapk-button.hover > svg {
1066
- fill: #00bbbb; }
1067
- .wapk-button.hover > .dashicons {
1068
- color: #00bbbb; }
1069
- .wapk-button.focus {
1070
- border-color: #00D4D4;
1071
- color: #00bbbb;
1072
- box-shadow: 0 0 0 1px #00D4D4; }
1073
- .wapk-button.focus > svg {
1074
- fill: #00bbbb; }
1075
- .wapk-button.focus > .dashicons {
1076
- color: #00bbbb; }
1077
- .wapk-button.active {
1078
- border-color: #00bbbb;
1079
- color: #00bbbb;
1080
- box-shadow: inset 0 2px 5px -3px #00bbbb; }
1081
- .wapk-button.active:focus {
1082
- border-color: #00bbbb;
1083
- color: #00bbbb;
1084
- box-shadow: inset 0 2px 5px -3px #00bbbb; }
1085
- .wapk-button.active:focus > svg {
1086
- fill: #00bbbb; }
1087
- .wapk-button.active:focus > .dashicons {
1088
- color: #00bbbb; }
1089
- .wapk-button.active:hover {
1090
- border-color: #00bbbb;
1091
- color: #00bbbb;
1092
- box-shadow: inset 0 2px 5px -3px #00bbbb; }
1093
- .wapk-button.active:hover > svg {
1094
- fill: #00bbbb; }
1095
- .wapk-button.active:hover > .dashicons {
1096
- color: #00bbbb; }
1097
- .wapk-button.active > svg {
1098
- fill: #00bbbb; }
1099
- .wapk-button.active > .dashicons {
1100
- color: #00bbbb; }
1101
- .wapk-button-primary.active {
1102
- background: #00D4D4;
1103
- color: #fff;
1104
- border-color: #008888;
1105
- box-shadow: inset 0 2px 5px -3px black; }
1106
- .wapk-button-primary.active:focus {
1107
- background: #00D4D4;
1108
- color: #fff;
1109
- border-color: #008888;
1110
- box-shadow: inset 0 2px 5px -3px black; }
1111
- .wapk-button-primary.active:focus > svg {
1112
- fill: #fff; }
1113
- .wapk-button-primary.active:hover {
1114
- background: #00D4D4;
1115
- color: #fff;
1116
- border-color: #008888;
1117
- box-shadow: inset 0 2px 5px -3px black; }
1118
- .wapk-button-primary.active:hover > svg {
1119
- fill: #fff; }
1120
- .wapk-button-primary.active > svg {
1121
- fill: #fff; }
1122
- .wapk-button-primary[disabled] {
1123
- color: #c7d1d1 !important;
1124
- background: #22ffff !important;
1125
- border-color: #22ffff !important;
1126
- text-shadow: none !important; }
1127
- .wapk-button-primary[disabled] > svg {
1128
- fill: #c7d1d1 !important; }
1129
- .wapk-button-primary.wapk-button-primary-disabled {
1130
- color: #c7d1d1 !important;
1131
- background: #22ffff !important;
1132
- border-color: #22ffff !important;
1133
- text-shadow: none !important; }
1134
- .wapk-button-primary.wapk-button-primary-disabled > svg {
1135
- fill: #c7d1d1 !important; }
1136
- .wapk-button-primary.disabled {
1137
- color: #c7d1d1 !important;
1138
- background: #22ffff !important;
1139
- border-color: #22ffff !important;
1140
- text-shadow: none !important; }
1141
- .wapk-button-primary.disabled > svg {
1142
- fill: #c7d1d1 !important; }
1143
- .wapk-button-primary.wapk-button-hero {
1144
- box-shadow: 0 2px 0 #00bbbb; }
1145
- .wapk-button-primary.wapk-button-hero:focus {
1146
- box-shadow: 0 2px 0 #00bbbb, 0 1px 0 #00c5c5, 0 0 2px 1px #00eeee; }
1147
- .wapk-button-primary.wapk-button-hero:active {
1148
- box-shadow: inset 0 3px 0 #00a1a1; }
1149
- .wapk-button-primary.wapk-button-hero.active {
1150
- box-shadow: inset 0 3px 0 #00a1a1; }
1151
- .wapk-button-primary.wapk-button-hero.active:hover, .wapk-button-primary.wapk-button-hero.active:focus {
1152
- box-shadow: inset 0 3px 0 #00a1a1; }
1153
- .wapk-button-group > .wapk-button.active {
1154
- border-color: #00D4D4; }
1155
-
1156
- /* Button Sizes */
1157
- .wapk-button.wapk-button-xl {
1158
- height: 30px;
1159
- line-height: 28px;
1160
- padding: 0 12px 2px; }
1161
-
1162
- .wapk-button-group.wapk-button-xl .wapk-button {
1163
- height: 30px;
1164
- line-height: 28px;
1165
- padding: 0 12px 2px; }
1166
-
1167
- .wapk-button.wapk-button-hero {
1168
- font-size: 18px;
1169
- height: 50px;
1170
- line-height: 48px;
1171
- padding: 0 36px;
1172
- min-height: 46px; }
1173
-
1174
- .wapk-button-group.wapk-button-hero .wapk-button {
1175
- font-size: 18px;
1176
- height: 50px;
1177
- line-height: 48px;
1178
- padding: 0 36px;
1179
- min-height: 46px; }
1180
-
1181
- @media screen and (min-width: 782px) {
1182
- th#status,
1183
- th#provider {
1184
- width: 80px; }
1185
- th#type {
1186
- width: 50px; }
1187
- th#option_name {
1188
- width: 100px; }
1189
- td.option_name.column-option_name > span:first-child {
1190
- display: none; }
1191
- th#last_updated {
1192
- width: 90px; }
1193
- th#view {
1194
- width: 111px; } }
1195
-
1196
- @media screen and (min-width: 960px) {
1197
- th#status, th#provider {
1198
- width: 100px; }
1199
- th#type {
1200
- width: 80px; }
1201
- th#option_name {
1202
- width: 150px; }
1203
- th#last_updated {
1204
- width: 140px; } }
1205
-
1206
- @media screen and (max-width: 782px) {
1207
- table.wf-info-table {
1208
- margin-top: 10px; }
1209
- table.wf-info-table th:first-child img {
1210
- margin: 0 auto;
1211
- display: block; }
1212
- .wapk-button.wapk-button-xl {
1213
- padding: 6px 14px;
1214
- line-height: normal;
1215
- font-size: 14px;
1216
- vertical-align: middle;
1217
- height: auto;
1218
- margin-bottom: 4px; } }
1219
-
1220
- .wapk-feed-docs .wapk-feed-cta {
1221
- margin: 0; }
1222
-
1223
- .campaign_configurator {
1224
- background: #FFF;
1225
- padding: 20px 0; }
1226
- .campaign_configurator table {
1227
- margin: 0 auto;
1228
- width: 51%;
1229
- min-width: 574px;
1230
- border: none;
1231
- box-shadow: none; }
1232
- .campaign_configurator th {
1233
- min-width: 120px; }
1234
-
1235
- @media screen and (max-width: 782px) {
1236
- .campaign_configurator {
1237
- padding: 0; }
1238
- .campaign_configurator table {
1239
- width: auto;
1240
- min-width: auto;
1241
- max-width: 100%; }
1242
- .campaign_configurator th {
1243
- min-width: auto; } }
1244
-
1245
- #wf-tab-content-config td > input:not([type="checkbox"]):not([type="radio"]),
1246
- #wf-tab-content-config td > select,
1247
- #wf-tab-content-config td > textarea {
1248
- width: 100% !important; }
1249
-
1250
- .woo-feed-filters td > div:nth-child(2n):not(.clear):not(.selectize) {
1251
- width: 120px;
1252
- display: block; }
1253
-
1254
- .woo-feed-filters td > div:not(.clear) {
1255
- float: left;
1256
- margin-right: 10px; }
1257
-
1258
- .woo-feed-filters tr > td:first-child {
1259
- width: 290px;
1260
- padding-left: 40px; }
1261
-
1262
- .woo-feed-filters,
1263
- .woo-feed-ftp {
1264
- margin: 15px auto 25px; }
1265
-
1266
- .wf_clean_cache_wrapper {
1267
- display: -ms-flexbox;
1268
- display: flex;
1269
- margin-left: auto; }
1270
-
1271
- @-webkit-keyframes LoaderClockWise {
1272
- from {
1273
- -webkit-transform: rotate(0deg);
1274
- transform: rotate(0deg); }
1275
- to {
1276
- -webkit-transform: rotate(360deg);
1277
- transform: rotate(360deg); } }
1278
-
1279
- @keyframes LoaderClockWise {
1280
- from {
1281
- -webkit-transform: rotate(0deg);
1282
- transform: rotate(0deg); }
1283
- to {
1284
- -webkit-transform: rotate(360deg);
1285
- transform: rotate(360deg); } }
1286
-
1287
- .woo-feed-cache-loader {
1288
- width: 18px;
1289
- margin-right: 5px;
1290
- animation: LoaderClockWise 1s linear infinite;
1291
- -webkit-animation: LoaderClockWise 1s linear infinite;
1292
- display: none; }
1293
-
1294
- .woo-feed-table-heading .woo-feed-table-heading-title {
1295
- float: left;
1296
- margin-right: auto;
1297
- display: inline-block;
1298
- line-height: 30px; }
1299
-
1300
- .woo-feed-table-heading .wf_clean_cache_wrapper {
1301
- float: right;
1302
- font-weight: normal; }
1303
-
1304
- .wf_clean_cache_wrapper button {
1305
- background: #eb4d4b;
1306
- color: #fff;
1307
- border: none;
1308
- font-weight: 500;
1309
- display: inline-block;
1310
- text-decoration: none;
1311
- font-size: 13px;
1312
- line-height: 2.15384615;
1313
- min-height: 30px;
1314
- margin: 0;
1315
- padding: 0 10px;
1316
- border-radius: 3px;
1317
- cursor: pointer;
1318
- outline: none; }
1319
-
1320
- .wf_clean_cache_wrapper button:hover {
1321
- background: #ff7979;
1322
- color: #fff; }
1
  /**
2
  * All of the CSS for your admin-specific functionality should be
3
  * included in this file.
4
+ */
5
+ .wpf_spin {
6
+ -webkit-animation: spin 1000ms infinite linear;
7
+ animation: spin 1000ms infinite linear; }
8
+ .wpf_spin.reverse_spin {
9
+ animation-direction: reverse; }
10
+
11
+ .wpf_regenerate.disabled {
12
+ color: #737373;
13
+ box-shadow: none;
14
+ cursor: not-allowed; }
15
+
16
+ @-webkit-keyframes spin {
17
+ 0% {
18
+ -webkit-transform: rotate(0deg);
19
+ transform: rotate(0deg); }
20
+ 100% {
21
+ -webkit-transform: rotate(359deg);
22
+ transform: rotate(359deg); } }
23
+
24
+ @keyframes spin {
25
+ 0% {
26
+ -webkit-transform: rotate(0deg);
27
+ transform: rotate(0deg); }
28
+ 100% {
29
+ -webkit-transform: rotate(359deg);
30
+ transform: rotate(359deg); } }
31
+
32
+ .wfbtn {
33
+ background: #3498db;
34
+ background-image: linear-gradient(to bottom, #3498db, #2980b9);
35
+ border-radius: 17px;
36
+ box-shadow: 0 1px 3px #666666;
37
+ font-family: Arial, sans-serif;
38
+ color: #ffffff;
39
+ font-size: 20px;
40
+ padding: 10px 20px 10px 20px;
41
+ border: solid #2b698f 3px;
42
+ text-decoration: none; }
43
+ .wfbtn:hover {
44
+ background: #3cb0fd;
45
+ background-image: linear-gradient(to bottom, #3cb0fd, #3498db);
46
+ text-decoration: none; }
47
+
48
+ .wftooltip {
49
+ display: none;
50
+ position: absolute;
51
+ border: 1px solid #333;
52
+ background-color: #161616;
53
+ border-radius: 5px;
54
+ padding: 10px;
55
+ color: #fff;
56
+ font-size: 12px; }
57
+
58
+ .feed-actions .makeFeedResponse {
59
+ width: 70%;
60
+ color: green; }
61
+
62
+ .woo-feed-mapping-input {
63
+ width: 100%; }
64
+
65
+ .requiredIn {
66
+ color: red; }
67
+
68
+ .generalInput {
69
+ width: 200px; }
70
+ .generalInput:not(.selectize-control) {
71
+ margin: 5px auto; }
72
+
73
+ .error {
74
+ color: red; }
75
+
76
+ .widefat td select, .widefat td input {
77
+ max-width: 100%; }
78
+
79
+ #wf_newRow {
80
+ margin-left: 0; }
81
+
82
+ .mtable tbody tr {
83
+ height: 25px;
84
+ border: 1px solid #CCC;
85
+ text-align: left;
86
+ -ms-flex-align: baseline;
87
+ align-items: baseline;
88
+ font-weight: bold; }
89
+
90
+ .mtable th:nth-child(1) {
91
+ width: 17px; }
92
+
93
+ .mtable th:nth-child(2) {
94
+ width: 160px; }
95
+
96
+ .mtable th:nth-child(3) {
97
+ width: 100px; }
98
+
99
+ .mtable th:nth-child(4) {
100
+ width: 100px; }
101
+
102
+ .mtable th:nth-child(5) {
103
+ width: 150px; }
104
+
105
+ .mtable th:nth-child(6) {
106
+ width: 100px; }
107
+
108
+ .mtable th:nth-child(7) {
109
+ width: 150px; }
110
+
111
+ .mtable th:nth-child(8) {
112
+ width: 90px; }
113
+
114
+ .mtable th:nth-child(9) {
115
+ width: 29px; }
116
+
117
+ .mtable2 tbody tr {
118
+ height: 25px;
119
+ border: 1px solid #CCC;
120
+ text-align: left;
121
+ -ms-flex-align: baseline;
122
+ align-items: baseline;
123
+ font-weight: bold; }
124
+
125
+ .mtable2 th:nth-child(1) {
126
+ width: 30px; }
127
+
128
+ .mtable2 th:nth-child(2) {
129
+ width: 150px; }
130
+
131
+ .mtable2 th:nth-child(3) {
132
+ width: 230px; }
133
+
134
+ .mtable2 th:nth-child(4) {
135
+ width: 220px; }
136
+
137
+ .mtable2 th:nth-child(7) {
138
+ width: 50px; }
139
+
140
+ .mtable2 th:nth-child(8) {
141
+ width: 50px; }
142
+
143
+ .mtable2 th:nth-child(9) {
144
+ width: 29px; }
145
+
146
+ .wp-admin select.wf_mattributes {
147
+ width: 150px;
148
+ left: 0;
149
+ height: 25px; }
150
+
151
+ div#wf-tab-content1 select:not([name^="output_type"]) {
152
+ width: 100%; }
153
+
154
+ div#wf-tab-content1 input {
155
+ width: 100%; }
156
+
157
+ div#wf-tab-content1 .dashicons {
158
+ vertical-align: middle; }
159
+
160
+ .wf_attributes {
161
+ width: 150px;
162
+ left: 0; }
163
+
164
+ .wf_compare {
165
+ max-width: 245px;
166
+ left: 0; }
167
+
168
+ .wf_ps {
169
+ width: 100px;
170
+ left: 0; }
171
+
172
+ .wf_sortedtable {
173
+ cursor: move; }
174
+
175
+ .sorted_table {
176
+ position: relative; }
177
+ .sorted_table .dragged {
178
+ position: absolute;
179
+ opacity: 0.8;
180
+ z-index: 9999;
181
+ background: #fff;
182
+ width: 100%;
183
+ display: table; }
184
+ .sorted_table tbody tr.placeholder td {
185
+ border: 1px dashed #2cc185;
186
+ height: 46px; }
187
+
188
+ .wfnoempty {
189
+ width: 120px; }
190
+
191
+ /*==================Tab Design=======================*/
192
+ p {
193
+ color: #222; }
194
+
195
+ .wf_tabs {
196
+ position: relative;
197
+ margin: 0 auto;
198
+ width: 100%;
199
+ list-style: none;
200
+ /*bottom: 50px;*/ }
201
+
202
+ .wf_tabs:after {
203
+ display: table;
204
+ clear: both;
205
+ content: ""; }
206
+
207
+ .wf_tabs li {
208
+ float: left;
209
+ width: 20%;
210
+ display: block;
211
+ border: 2px solid #CCC; }
212
+
213
+ .wf_tabs li > input[type="radio"][name="wf_tabs"] {
214
+ position: absolute;
215
+ top: auto;
216
+ left: -9999px; }
217
+
218
+ .wf-tab-name {
219
+ display: block;
220
+ padding: 15px;
221
+ font-size: 15px;
222
+ font-weight: bold;
223
+ line-height: 1;
224
+ background: #fff;
225
+ cursor: pointer;
226
+ position: relative;
227
+ text-align: center;
228
+ text-transform: uppercase;
229
+ color: #2CC185; }
230
+
231
+ .wf-tab-name:hover {
232
+ background: #2CC185;
233
+ color: white; }
234
+
235
+ .wf_tabs [id^="tab"]:checked + label {
236
+ background: #2CC185;
237
+ color: white; }
238
+
239
+ .wf_tabs .wf-tab-content {
240
+ z-index: 2;
241
+ display: none;
242
+ width: 100%;
243
+ font-size: 0.9rem;
244
+ position: absolute;
245
+ left: 0;
246
+ background: #fff;
247
+ border: 2px solid #CCC; }
248
+
249
+ .wf_tabs [id^="tab"]:checked ~ [id^="wf-tab-content"] {
250
+ display: block; }
251
+
252
+ [id^="wf-tab-content"] {
253
+ margin-bottom: 40px; }
254
+
255
+ div#wf-tab-content2 table:first-child {
256
+ padding: 10px 0; }
257
+
258
+ div#wf-tab-content2 table:first-child td:nth-child(1) {
259
+ width: 260px; }
260
+
261
+ div#wf-tab-content2 table:first-child td:nth-child(2) {
262
+ width: 260px; }
263
+
264
+ table.feed-actions tr td:last-child {
265
+ text-align: right; }
266
+
267
+ /* Selectize */
268
+ select.selectize {
269
+ display: none; }
270
+
271
+ body.no-js select.selectize {
272
+ display: block !important; }
273
+
274
+ .wp-list-table .option_name .wf_feed_option_name_link {
275
+ font-weight: 700;
276
+ color: #30336b; }
277
+
278
+ .wp-list-table #option_name a {
279
+ color: #32373c; }
280
+
281
+ /* fallback combat */
282
+ .selectize-dropdown .active {
283
+ background-color: #edf9ff; }
284
+
285
+ .selectize-dropdown .create {
286
+ padding: 5px 8px; }
287
+
288
+ .wapk-selectize-item {
289
+ background: #0073aa !important;
290
+ color: #f1f1f1 !important;
291
+ font-weight: bold !important;
292
+ border-color: #0073aa !important;
293
+ padding-left: 5px;
294
+ padding-right: 5px; }
295
+
296
+ .selectize-input.full #googleTaxonomyId-selectized {
297
+ opacity: 0;
298
+ position: absolute;
299
+ left: -10000px; }
300
+
301
+ .selectize-dropdown [data-selectable].option {
302
+ cursor: default; }
303
+
304
+ .selectize-control.plugin-remove_button [data-value] .remove {
305
+ border-left: 1px solid #f1f1f1 !important; }
306
+
307
+ .selectize-dropdown .optgroup-header {
308
+ font-weight: 700;
309
+ background: #efefef;
310
+ color: #5a5a5a; }
311
+
312
+ .selectize-dropdown [data-selectable].option {
313
+ cursor: pointer; }
314
+
315
+ /* Feed active and inactive button CSS */
316
+ .wf_status_wrap label {
317
+ width: 55px;
318
+ height: 30px;
319
+ box-sizing: border-box;
320
+ float: left;
321
+ border-radius: 100px;
322
+ position: relative;
323
+ cursor: pointer;
324
+ transition: .3s ease;
325
+ background: #d3d3d3; }
326
+
327
+ input[class=woo_feed_status_input]:checked + label {
328
+ background: #4fbe79; }
329
+
330
+ input[class=woo_feed_status_input]:checked + label:before {
331
+ left: 29px; }
332
+
333
+ .wf_status_wrap label:before {
334
+ transition: .3s ease;
335
+ content: '';
336
+ width: 20px;
337
+ height: 20px;
338
+ position: absolute;
339
+ background: white;
340
+ left: 6px;
341
+ top: 5px;
342
+ box-sizing: border-box;
343
+ color: black;
344
+ border-radius: 100px;
345
+ box-shadow: 0px 1.5px 2px 0px #000; }
346
+
347
+ .view span.dashicons.dashicons-external {
348
+ color: #30336b; }
349
+
350
+ .view span.dashicons.dashicons-sos {
351
+ color: #22a6b3; }
352
+
353
+ .view span.dashicons.dashicons-download {
354
+ color: #ee5253; }
355
+
356
+ .view span.dashicons.dashicons-media-code {
357
+ color: #576574; }
358
+
359
+ /* list table style */
360
+ .widefat td.column-url, .widefat th.column-url,
361
+ .column-url {
362
+ color: #1e8f9a;
363
+ font-weight: bold; }
364
+
365
+ /** Feed Progress **/
366
+ .feed-progress-container {
367
+ width: 100%;
368
+ color: white;
369
+ text-align: center;
370
+ font-weight: 300; }
371
+
372
+ .feed-progress-bar {
373
+ width: 100%;
374
+ background: #eee;
375
+ padding: 3px;
376
+ border-radius: 3px;
377
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2); }
378
+
379
+ .feed-progress-bar-fill {
380
+ height: 20px;
381
+ display: block;
382
+ background: #3DC264;
383
+ width: 0;
384
+ border-radius: 3px;
385
+ transition: width 0.8s ease; }
386
+
387
+ .feed-progress-status {
388
+ float: left;
389
+ font-weight: bold;
390
+ color: darkblue; }
391
+
392
+ .feed-progress-percentage {
393
+ text-align: right;
394
+ font-weight: bolder;
395
+ color: #41f49d;
396
+ font-family: 'Arial Black', sans-serif;
397
+ font-size: large; }
398
+
399
+ #wpbody-content.woofeed-body-content {
400
+ overflow: visible !important; }
401
+
402
+ .clippy {
403
+ position: relative;
404
+ width: 13px;
405
+ margin-top: -3px;
406
+ margin-left: 3px;
407
+ top: 3px; }
408
+
409
+ .column-url .clippy {
410
+ display: none; }
411
+
412
+ .column-url:hover .clippy {
413
+ display: inline-block; }
414
+
415
  /**
416
  * Primer Tooltip
417
+ */
418
+ .tooltipped {
419
+ position: relative; }
420
+ .tooltipped:after {
421
+ position: absolute;
422
+ z-index: 1000000;
423
+ display: none;
424
+ padding: 5px 8px;
425
+ font: normal normal 11px/1.5 Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
426
+ color: #fff;
427
+ text-align: center;
428
+ text-decoration: none;
429
+ text-shadow: none;
430
+ text-transform: none;
431
+ letter-spacing: normal;
432
+ word-wrap: break-word;
433
+ white-space: pre;
434
+ pointer-events: none;
435
+ content: attr(aria-label);
436
+ background: rgba(0, 0, 0, 0.8);
437
+ border-radius: 3px;
438
+ -webkit-font-smoothing: subpixel-antialiased; }
439
+ .tooltipped:before {
440
+ position: absolute;
441
+ z-index: 1000001;
442
+ display: none;
443
+ width: 0;
444
+ height: 0;
445
+ color: rgba(0, 0, 0, 0.8);
446
+ pointer-events: none;
447
+ content: "";
448
+ border: 5px solid transparent; }
449
+ .tooltipped:hover:before {
450
+ display: inline-block;
451
+ text-decoration: none; }
452
+ .tooltipped:hover:after {
453
+ display: inline-block;
454
+ text-decoration: none; }
455
+ .tooltipped:active:before {
456
+ display: inline-block;
457
+ text-decoration: none; }
458
+ .tooltipped:active:after {
459
+ display: inline-block;
460
+ text-decoration: none; }
461
+ .tooltipped:focus:before {
462
+ display: inline-block;
463
+ text-decoration: none; }
464
+ .tooltipped:focus:after {
465
+ display: inline-block;
466
+ text-decoration: none; }
467
+ .tooltipped-multiline:hover:after {
468
+ display: table-cell; }
469
+ .tooltipped-multiline:active:after {
470
+ display: table-cell; }
471
+ .tooltipped-multiline:focus:after {
472
+ display: table-cell; }
473
+ .tooltipped-multiline:after {
474
+ width: -webkit-max-content;
475
+ width: -moz-max-content;
476
+ width: max-content;
477
+ max-width: 250px;
478
+ word-break: break-word;
479
+ word-wrap: normal;
480
+ white-space: pre-line;
481
+ border-collapse: separate; }
482
+ .tooltipped-s:after {
483
+ top: 100%;
484
+ right: 50%;
485
+ margin-top: 5px;
486
+ -webkit-transform: translateX(50%);
487
+ transform: translateX(50%); }
488
+ .tooltipped-s:before {
489
+ top: auto;
490
+ right: 50%;
491
+ bottom: -5px;
492
+ margin-right: -5px;
493
+ border-bottom-color: rgba(0, 0, 0, 0.8); }
494
+ .tooltipped-se:after {
495
+ top: 100%;
496
+ margin-top: 5px;
497
+ right: auto;
498
+ left: 50%;
499
+ margin-left: -15px; }
500
+ .tooltipped-se:before {
501
+ top: auto;
502
+ right: 50%;
503
+ bottom: -5px;
504
+ margin-right: -5px;
505
+ border-bottom-color: rgba(0, 0, 0, 0.8); }
506
+ .tooltipped-sw:after {
507
+ top: 100%;
508
+ right: 50%;
509
+ margin-top: 5px;
510
+ margin-right: -15px; }
511
+ .tooltipped-sw:before {
512
+ top: auto;
513
+ right: 50%;
514
+ bottom: -5px;
515
+ margin-right: -5px;
516
+ border-bottom-color: rgba(0, 0, 0, 0.8); }
517
+ .tooltipped-n:after {
518
+ right: 50%;
519
+ bottom: 100%;
520
+ margin-bottom: 5px;
521
+ -webkit-transform: translateX(50%);
522
+ transform: translateX(50%); }
523
+ .tooltipped-n:before {
524
+ top: -5px;
525
+ right: 50%;
526
+ bottom: auto;
527
+ margin-right: -5px;
528
+ border-top-color: rgba(0, 0, 0, 0.8); }
529
+ .tooltipped-ne:after {
530
+ bottom: 100%;
531
+ margin-bottom: 5px;
532
+ right: auto;
533
+ left: 50%;
534
+ margin-left: -15px; }
535
+ .tooltipped-ne:before {
536
+ top: -5px;
537
+ right: 50%;
538
+ bottom: auto;
539
+ margin-right: -5px;
540
+ border-top-color: rgba(0, 0, 0, 0.8); }
541
+ .tooltipped-nw:after {
542
+ right: 50%;
543
+ bottom: 100%;
544
+ margin-bottom: 5px;
545
+ margin-right: -15px; }
546
+ .tooltipped-nw:before {
547
+ top: -5px;
548
+ right: 50%;
549
+ bottom: auto;
550
+ margin-right: -5px;
551
+ border-top-color: rgba(0, 0, 0, 0.8); }
552
+ .tooltipped-w:after {
553
+ right: 100%;
554
+ bottom: 50%;
555
+ margin-right: 5px;
556
+ -webkit-transform: translateY(50%);
557
+ transform: translateY(50%); }
558
+ .tooltipped-w:before {
559
+ top: 50%;
560
+ bottom: 50%;
561
+ left: -5px;
562
+ margin-top: -5px;
563
+ border-left-color: rgba(0, 0, 0, 0.8); }
564
+ .tooltipped-e:after {
565
+ bottom: 50%;
566
+ left: 100%;
567
+ margin-left: 5px;
568
+ -webkit-transform: translateY(50%);
569
+ transform: translateY(50%); }
570
+ .tooltipped-e:before {
571
+ top: 50%;
572
+ right: -5px;
573
+ bottom: 50%;
574
+ margin-top: -5px;
575
+ border-right-color: rgba(0, 0, 0, 0.8); }
576
+ .tooltipped-multiline.tooltipped-s:after {
577
+ right: auto;
578
+ left: 50%;
579
+ -webkit-transform: translateX(-50%);
580
+ transform: translateX(-50%); }
581
+ .tooltipped-multiline.tooltipped-n:after {
582
+ right: auto;
583
+ left: 50%;
584
+ -webkit-transform: translateX(-50%);
585
+ transform: translateX(-50%); }
586
+ .tooltipped-multiline.tooltipped-w:after {
587
+ right: 100%; }
588
+ .tooltipped-multiline.tooltipped-e:after {
589
+ right: 100%; }
590
+ .tooltipped-sticky:before {
591
+ display: inline-block; }
592
+ .tooltipped-sticky:after {
593
+ display: inline-block; }
594
+ .tooltipped-sticky.tooltipped-multiline:after {
595
+ display: table-cell; }
596
+
597
+ .fullscreen-overlay-enabled.dark-theme .tooltipped:after {
598
+ color: #000;
599
+ background: rgba(255, 255, 255, 0.8); }
600
+
601
+ .fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-s:before {
602
+ border-bottom-color: rgba(255, 255, 255, 0.8); }
603
+
604
+ .fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-se:before {
605
+ border-bottom-color: rgba(255, 255, 255, 0.8); }
606
+
607
+ .fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-sw:before {
608
+ border-bottom-color: rgba(255, 255, 255, 0.8); }
609
+
610
+ .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-n:before {
611
+ border-top-color: rgba(255, 255, 255, 0.8); }
612
+
613
+ .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-ne:before {
614
+ border-top-color: rgba(255, 255, 255, 0.8); }
615
+
616
+ .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-nw:before {
617
+ border-top-color: rgba(255, 255, 255, 0.8); }
618
+
619
+ .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-e:before {
620
+ border-right-color: rgba(255, 255, 255, 0.8); }
621
+
622
+ .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-w:before {
623
+ border-left-color: rgba(255, 255, 255, 0.8); }
624
+
625
+ @media screen and (min-width: 0\0) {
626
+ .tooltipped-multiline:after {
627
+ width: 250px; } }
628
+
629
+ ul.tracker_collection_list {
630
+ list-style: initial;
631
+ padding: initial;
632
+ margin: -10px 0 0 30px;
633
+ font-size: 11px !important; }
634
+ ul.tracker_collection_list li {
635
+ margin: 0; }
636
+
637
+ /** Info Message Table **/
638
+ table.wf-info-table, table.wf-rate-table {
639
+ vertical-align: middle;
640
+ text-align: center;
641
+ max-width: 100%;
642
+ font-weight: 500; }
643
+ table.wf-info-table th, table.wf-rate-table th {
644
+ text-align: center; }
645
+ table.wf-info-table th .woo-feed-top-header, table.wf-rate-table th .woo-feed-top-header {
646
+ display: -ms-flexbox;
647
+ display: flex;
648
+ -ms-flex-pack: justify;
649
+ justify-content: space-between;
650
+ -ms-flex-align: center;
651
+ align-items: center; }
652
+ 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 {
653
+ margin-left: 20px; }
654
+ 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 {
655
+ float: right;
656
+ display: -ms-flexbox;
657
+ display: flex;
658
+ border-radius: 7px;
659
+ -ms-flex-pack: center;
660
+ justify-content: center;
661
+ -ms-flex-align: center;
662
+ align-items: center; }
663
+ 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 {
664
+ padding: 8px 20px;
665
+ background: #576574;
666
+ color: #fff;
667
+ box-sizing: border-box;
668
+ display: inline-block;
669
+ transition: .3s ease; }
670
+ 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 {
671
+ background: #576574;
672
+ border-top-left-radius: 5px;
673
+ border-bottom-left-radius: 5px; }
674
+ 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 {
675
+ background: #ee5253; }
676
+ 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 {
677
+ background: #22a6b3;
678
+ border-top-right-radius: 5px;
679
+ border-bottom-right-radius: 5px; }
680
+ 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 {
681
+ font-size: 18px;
682
+ line-height: 1.2; }
683
+ 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 {
684
+ background: #30336b;
685
+ box-shadow: 0px 0px 33px 0px rgba(0, 0, 0, 0.12); }
686
+ table.wf-info-table strong, table.wf-rate-table strong {
687
+ font-weight: bold; }
688
+
689
+ table.wf-info-table th:first-child img {
690
+ margin: 0 0 -5px 5px; }
691
+
692
+ table.wf-rate-table a {
693
+ color: #0073aa; }
694
+
695
+ table.wf-rate-table a.review-star:after {
696
+ content: "\f155\f155\f155\f155\f155" !important;
697
+ font-family: dashicons;
698
+ font-size: 10px;
699
+ font-weight: 100;
700
+ text-rendering: auto;
701
+ -webkit-font-smoothing: antialiased;
702
+ -moz-osx-font-smoothing: grayscale;
703
+ color: #0073aa;
704
+ text-decoration: underline; }
705
+
706
+ /** Admin Menu Icon **/
707
+ #adminmenu #toplevel_page_webappick-manage-feeds div.wp-menu-image::before {
708
+ content: "";
709
+ background: url(../images/woo-feed-icon.svg) no-repeat center center;
710
+ background-size: 20px 20px;
711
+ opacity: 0.6;
712
+ filter: alpha(opacity=60); }
713
+
714
+ #adminmenu #toplevel_page_webappick-manage-feeds:hover div.wp-menu-image::before {
715
+ opacity: 1;
716
+ filter: alpha(opacity=100); }
717
+
718
+ #adminmenu #toplevel_page_webappick-manage-feeds.wp-has-current-submenu div.wp-menu-image::before {
719
+ opacity: 1;
720
+ filter: alpha(opacity=100); }
721
+
722
+ /** Admin Page Wrapper **/
723
+ .wapk-admin, .wapk-admin * {
724
+ box-sizing: border-box; }
725
+
726
+ .wapk-admin {
727
+ position: relative;
728
+ display: block;
729
+ -webkit-hyphens: manual;
730
+ -ms-hyphens: manual;
731
+ -moz-hyphens: manual;
732
+ hyphens: manual;
733
+ color: #1B2730;
734
+ /* reset .warp margin to use full width except menu area */
735
+ margin: 0 0 0 -10px; }
736
+
737
+ @media screen and (min-width: 783px) {
738
+ .wapk-admin {
739
+ margin: 0 0 0 -20px; } }
740
+
741
+ .text-center {
742
+ text-align: center; }
743
+
744
+ .wapk-admin h1, .wapk-admin h2, .wapk-admin h3,
745
+ .wapk-admin h4, .wapk-admin h5, .wapk-admin h6,
746
+ .wapk-admin p {
747
+ color: #1B2730; }
748
+
749
+ .wapk-admin sup {
750
+ vertical-align: baseline;
751
+ position: relative;
752
+ top: -6px; }
753
+
754
+ .wapk-admin sub {
755
+ vertical-align: baseline;
756
+ position: relative;
757
+ top: 4px; }
758
+
759
+ /* WP.Core.UI Compat */
760
+ .wapk-admin .wapk-section {
761
+ margin: 10px 20px 0 22px;
762
+ position: relative;
763
+ display: block; }
764
+ .wapk-admin .wapk-section [class$=icon32] + h2 {
765
+ font-size: 23px;
766
+ font-weight: 400;
767
+ margin: 0;
768
+ padding: 9px 0 4px 0;
769
+ line-height: 1.3; }
770
+ .wapk-admin .wapk-section h1 {
771
+ font-size: 23px;
772
+ font-weight: 400;
773
+ margin: 0;
774
+ padding: 9px 0 4px 0;
775
+ line-height: 1.3; }
776
+ .wapk-admin .wapk-section > h2:first-child {
777
+ font-size: 23px;
778
+ font-weight: 400;
779
+ margin: 0;
780
+ padding: 9px 0 4px 0;
781
+ line-height: 1.3; }
782
+
783
+ .wapk-admin > .notice {
784
+ margin: 10px 20px 0 22px;
785
+ position: relative;
786
+ display: block; }
787
+
788
+ .wapk-admin span.help {
789
+ display: block;
790
+ float: left;
791
+ width: 100%;
792
+ font-size: 0.9em;
793
+ color: #636363;
794
+ margin-top: 5px;
795
+ font-weight: 500; }
796
+ .wapk-admin span.help .dashicons {
797
+ width: 11px;
798
+ height: 12px;
799
+ font-size: inherit;
800
+ vertical-align: middle; }
801
+
802
+ .clear:after {
803
+ content: "";
804
+ display: table;
805
+ clear: both; }
806
+
807
+ /*.wapk-admin .help a { color: inherit; text-decoration: underline; }*/
808
+ /** Extend WP Core UI PostBox For Docs **/
809
+ .wapk-feed-docs .postbox {
810
+ width: 355px;
811
+ margin-right: 20px;
812
+ display: inline-block;
813
+ vertical-align: top; }
814
+ .wapk-feed-docs .postbox .hndle {
815
+ font-size: 14px;
816
+ padding: 8px 12px;
817
+ margin: 0;
818
+ line-height: 1.4;
819
+ cursor: pointer; }
820
+ .wapk-feed-docs .postbox .dashicons {
821
+ color: #ccc; }
822
+ .wapk-feed-docs .postbox a {
823
+ text-decoration: none; }
824
+ .wapk-feed-docs .postbox .inside {
825
+ margin-bottom: 0; }
826
+ .wapk-feed-docs .postbox ul {
827
+ margin-bottom: 0; }
828
+ .wapk-feed-docs .postbox .toggle-indicator:before {
829
+ content: "\F142";
830
+ display: inline-block;
831
+ font: 400 20px/1 dashicons;
832
+ speak: none;
833
+ -webkit-font-smoothing: antialiased;
834
+ -moz-osx-font-smoothing: grayscale;
835
+ text-decoration: none !important; }
836
+ .wapk-feed-docs .postbox li {
837
+ width: 100%;
838
+ display: block;
839
+ float: left; }
840
+ .wapk-feed-docs .postbox li span {
841
+ display: inline-block;
842
+ float: left;
843
+ margin-right: 4px; }
844
+ .wapk-feed-docs .postbox li a {
845
+ display: inline-block;
846
+ float: left;
847
+ width: calc(100% - 24px); }
848
+
849
+ .wapk-feed-docs .postbox.closed .toggle-indicator:before {
850
+ content: "\F140"; }
851
+
852
+ .wapk-section #post-body.columns-2 #side-sortables {
853
+ min-height: 196px; }
854
+
855
+ #poststuff #feed_merchant_info .inside {
856
+ margin: 0;
857
+ padding: 0; }
858
+
859
+ #feed_merchant_info ul.data {
860
+ margin-left: 24px;
861
+ margin-top: 5px; }
862
+ #feed_merchant_info ul.data li {
863
+ margin-bottom: 5px; }
864
+
865
+ .merchant-info-section {
866
+ padding: 6px 10px 8px; }
867
+
868
+ .generateFeed .wf-tab-content table:first-child {
869
+ border: none;
870
+ box-shadow: none; }
871
+
872
+ .generateFeed table th {
873
+ font-weight: bold; }
874
+
875
+ @media only screen and (max-width: 850px) {
876
+ .wapk-feed-docs .postbox {
877
+ display: block;
878
+ width: auto;
879
+ float: none;
880
+ margin-right: auto; } }
881
+
882
+ /** Admin Feed Help Docs **/
883
+ .wp-submenu li span.woo-feed-docs {
884
+ font-weight: bold;
885
+ color: #f18500; }
886
+
887
+ .wp-submenu li:hover span.woo-feed-docs {
888
+ color: #ce7304; }
889
+
890
+ .wp-submenu li.current span.woo-feed-docs {
891
+ color: #ce7304; }
892
+
893
+ .wapk-admin .wapk-feed-docs .postbox .hndle {
894
+ cursor: default; }
895
+
896
+ /** Admin Call-To-Action **/
897
+ .wapk-cta {
898
+ position: relative;
899
+ display: -ms-flexbox;
900
+ display: flex;
901
+ width: 100%;
902
+ padding: 100px 15px;
903
+ background: linear-gradient(45deg, #6CD5FF 33%, #c2efef 100%);
904
+ -ms-flex-pack: center;
905
+ justify-content: center;
906
+ -ms-flex-align: center;
907
+ align-items: center; }
908
+ .wapk-cta-icon .dashicons {
909
+ font-size: 100px;
910
+ width: 100px;
911
+ height: auto;
912
+ margin: 0 10px -8px 0;
913
+ color: #02658c; }
914
+ .wapk-cta-content {
915
+ width: 50%; }
916
+ .wapk-cta-content h2 {
917
+ font-size: 2em;
918
+ margin: 0.5em 0; }
919
+ .wapk-cta-action a.wapk-button {
920
+ font-size: 24px;
921
+ height: auto !important;
922
+ padding: 10px 20px; }
923
+
924
+ @media (max-width: 600px) {
925
+ .wapk-cta {
926
+ display: block;
927
+ text-align: center;
928
+ padding: 4em 0; }
929
+ .wapk-cta-content {
930
+ width: 100%;
931
+ margin: 2em 0; } }
932
+
933
+ /** Override .wp-core-ui .wapk-button styles with prefix .wapk-admin **/
934
+ /* Button Skin */
935
+ .wapk-button {
936
+ color: #00D4D4;
937
+ border-color: #00D4D4;
938
+ display: inline-block;
939
+ text-decoration: none;
940
+ font-size: 13px;
941
+ line-height: 2.15384615;
942
+ min-height: 30px;
943
+ margin: 0;
944
+ padding: 0 10px;
945
+ cursor: pointer;
946
+ border-width: 1px;
947
+ border-style: solid;
948
+ -webkit-appearance: none;
949
+ border-radius: 3px;
950
+ white-space: nowrap;
951
+ box-sizing: border-box; }
952
+ .wapk-button > svg {
953
+ width: 15px;
954
+ margin-left: 5px;
955
+ fill: #00D4D4; }
956
+ .wapk-button > .dashicons {
957
+ color: #00D4D4; }
958
+ .wapk-button:hover {
959
+ border-color: #00bbbb;
960
+ color: #00bbbb; }
961
+ .wapk-button:hover > svg {
962
+ fill: #00bbbb; }
963
+ .wapk-button:hover > .dashicons {
964
+ color: #00bbbb; }
965
+ .wapk-button:focus {
966
+ border-color: #00D4D4;
967
+ color: #00bbbb;
968
+ box-shadow: 0 0 0 1px #00D4D4; }
969
+ .wapk-button:focus > svg {
970
+ fill: #00bbbb; }
971
+ .wapk-button:focus > .dashicons {
972
+ color: #00bbbb; }
973
+ .wapk-button:active {
974
+ background: #00bbbb;
975
+ border-color: #00bbbb; }
976
+ .wapk-button-secondary {
977
+ color: #00D4D4;
978
+ border-color: #00D4D4;
979
+ display: inline-block;
980
+ text-decoration: none;
981
+ font-size: 13px;
982
+ line-height: 2.15384615;
983
+ min-height: 30px;
984
+ margin: 0;
985
+ padding: 0 10px;
986
+ cursor: pointer;
987
+ border-width: 1px;
988
+ border-style: solid;
989
+ -webkit-appearance: none;
990
+ border-radius: 3px;
991
+ white-space: nowrap;
992
+ box-sizing: border-box; }
993
+ .wapk-button-secondary > svg {
994
+ width: 15px;
995
+ margin-left: 5px;
996
+ fill: #00D4D4; }
997
+ .wapk-button-secondary > .dashicons {
998
+ color: #00D4D4; }
999
+ .wapk-button-secondary:hover {
1000
+ border-color: #00bbbb;
1001
+ color: #00bbbb; }
1002
+ .wapk-button-secondary:hover > svg {
1003
+ fill: #00bbbb; }
1004
+ .wapk-button-secondary:hover > .dashicons {
1005
+ color: #00bbbb; }
1006
+ .wapk-button-secondary:focus {
1007
+ border-color: #00D4D4;
1008
+ color: #00bbbb;
1009
+ box-shadow: 0 0 0 1px #00D4D4; }
1010
+ .wapk-button-secondary:focus > svg {
1011
+ fill: #00bbbb; }
1012
+ .wapk-button-secondary:focus > .dashicons {
1013
+ color: #00bbbb; }
1014
+ .wapk-button-primary {
1015
+ display: inline-block;
1016
+ text-decoration: none;
1017
+ font-size: 13px;
1018
+ line-height: 2.15384615;
1019
+ min-height: 30px;
1020
+ margin: 0;
1021
+ padding: 0 10px;
1022
+ cursor: pointer;
1023
+ border-width: 1px;
1024
+ border-style: solid;
1025
+ -webkit-appearance: none;
1026
+ border-radius: 3px;
1027
+ white-space: nowrap;
1028
+ box-sizing: border-box;
1029
+ background: #00D4D4;
1030
+ border-color: #00D4D4;
1031
+ color: #fff;
1032
+ box-shadow: 0 1px 0 #00bbbb;
1033
+ text-shadow: 0 -1px 1px #00bbbb, 1px 0 1px #00bbbb, 0 1px 1px #00bbbb, -1px 0 1px #00bbbb; }
1034
+ .wapk-button-primary > svg {
1035
+ fill: #fff; }
1036
+ .wapk-button-primary:hover {
1037
+ background: #00e3e3;
1038
+ border-color: #00c5c5;
1039
+ color: #fff; }
1040
+ .wapk-button-primary:hover > svg {
1041
+ fill: #fff; }
1042
+ .wapk-button-primary:focus {
1043
+ background: #00e3e3;
1044
+ border-color: #00c5c5;
1045
+ color: #fff;
1046
+ box-shadow: 0 0 0 1px #fff, 0 0 0 3px #00D4D4; }
1047
+ .wapk-button-primary:focus > svg {
1048
+ fill: #fff; }
1049
+ .wapk-button-primary:active {
1050
+ background: #00bbbb;
1051
+ border-color: #00bbbb;
1052
+ color: #fff; }
1053
+ .wapk-button-primary:active > svg {
1054
+ fill: #fff; }
1055
+ .wapk-button-primary:disabled {
1056
+ color: #c7d1d1 !important;
1057
+ background: #22ffff !important;
1058
+ border-color: #22ffff !important;
1059
+ text-shadow: none !important; }
1060
+ .wapk-button-primary:disabled > svg {
1061
+ fill: #c7d1d1 !important; }
1062
+ .wapk-button.hover {
1063
+ border-color: #00bbbb;
1064
+ color: #00bbbb; }
1065
+ .wapk-button.hover > svg {
1066
+ fill: #00bbbb; }
1067
+ .wapk-button.hover > .dashicons {
1068
+ color: #00bbbb; }
1069
+ .wapk-button.focus {
1070
+ border-color: #00D4D4;
1071
+ color: #00bbbb;
1072
+ box-shadow: 0 0 0 1px #00D4D4; }
1073
+ .wapk-button.focus > svg {
1074
+ fill: #00bbbb; }
1075
+ .wapk-button.focus > .dashicons {
1076
+ color: #00bbbb; }
1077
+ .wapk-button.active {
1078
+ border-color: #00bbbb;
1079
+ color: #00bbbb;
1080
+ box-shadow: inset 0 2px 5px -3px #00bbbb; }
1081
+ .wapk-button.active:focus {
1082
+ border-color: #00bbbb;
1083
+ color: #00bbbb;
1084
+ box-shadow: inset 0 2px 5px -3px #00bbbb; }
1085
+ .wapk-button.active:focus > svg {
1086
+ fill: #00bbbb; }
1087
+ .wapk-button.active:focus > .dashicons {
1088
+ color: #00bbbb; }
1089
+ .wapk-button.active:hover {
1090
+ border-color: #00bbbb;
1091
+ color: #00bbbb;
1092
+ box-shadow: inset 0 2px 5px -3px #00bbbb; }
1093
+ .wapk-button.active:hover > svg {
1094
+ fill: #00bbbb; }
1095
+ .wapk-button.active:hover > .dashicons {
1096
+ color: #00bbbb; }
1097
+ .wapk-button.active > svg {
1098
+ fill: #00bbbb; }
1099
+ .wapk-button.active > .dashicons {
1100
+ color: #00bbbb; }
1101
+ .wapk-button-primary.active {
1102
+ background: #00D4D4;
1103
+ color: #fff;
1104
+ border-color: #008888;
1105
+ box-shadow: inset 0 2px 5px -3px black; }
1106
+ .wapk-button-primary.active:focus {
1107
+ background: #00D4D4;
1108
+ color: #fff;
1109
+ border-color: #008888;
1110
+ box-shadow: inset 0 2px 5px -3px black; }
1111
+ .wapk-button-primary.active:focus > svg {
1112
+ fill: #fff; }
1113
+ .wapk-button-primary.active:hover {
1114
+ background: #00D4D4;
1115
+ color: #fff;
1116
+ border-color: #008888;
1117
+ box-shadow: inset 0 2px 5px -3px black; }
1118
+ .wapk-button-primary.active:hover > svg {
1119
+ fill: #fff; }
1120
+ .wapk-button-primary.active > svg {
1121
+ fill: #fff; }
1122
+ .wapk-button-primary[disabled] {
1123
+ color: #c7d1d1 !important;
1124
+ background: #22ffff !important;
1125
+ border-color: #22ffff !important;
1126
+ text-shadow: none !important; }
1127
+ .wapk-button-primary[disabled] > svg {
1128
+ fill: #c7d1d1 !important; }
1129
+ .wapk-button-primary.wapk-button-primary-disabled {
1130
+ color: #c7d1d1 !important;
1131
+ background: #22ffff !important;
1132
+ border-color: #22ffff !important;
1133
+ text-shadow: none !important; }
1134
+ .wapk-button-primary.wapk-button-primary-disabled > svg {
1135
+ fill: #c7d1d1 !important; }
1136
+ .wapk-button-primary.disabled {
1137
+ color: #c7d1d1 !important;
1138
+ background: #22ffff !important;
1139
+ border-color: #22ffff !important;
1140
+ text-shadow: none !important; }
1141
+ .wapk-button-primary.disabled > svg {
1142
+ fill: #c7d1d1 !important; }
1143
+ .wapk-button-primary.wapk-button-hero {
1144
+ box-shadow: 0 2px 0 #00bbbb; }
1145
+ .wapk-button-primary.wapk-button-hero:focus {
1146
+ box-shadow: 0 2px 0 #00bbbb, 0 1px 0 #00c5c5, 0 0 2px 1px #00eeee; }
1147
+ .wapk-button-primary.wapk-button-hero:active {
1148
+ box-shadow: inset 0 3px 0 #00a1a1; }
1149
+ .wapk-button-primary.wapk-button-hero.active {
1150
+ box-shadow: inset 0 3px 0 #00a1a1; }
1151
+ .wapk-button-primary.wapk-button-hero.active:hover, .wapk-button-primary.wapk-button-hero.active:focus {
1152
+ box-shadow: inset 0 3px 0 #00a1a1; }
1153
+ .wapk-button-group > .wapk-button.active {
1154
+ border-color: #00D4D4; }
1155
+
1156
+ /* Button Sizes */
1157
+ .wapk-button.wapk-button-xl {
1158
+ height: 30px;
1159
+ line-height: 28px;
1160
+ padding: 0 12px 2px; }
1161
+
1162
+ .wapk-button-group.wapk-button-xl .wapk-button {
1163
+ height: 30px;
1164
+ line-height: 28px;
1165
+ padding: 0 12px 2px; }
1166
+
1167
+ .wapk-button.wapk-button-hero {
1168
+ font-size: 18px;
1169
+ height: 50px;
1170
+ line-height: 48px;
1171
+ padding: 0 36px;
1172
+ min-height: 46px; }
1173
+
1174
+ .wapk-button-group.wapk-button-hero .wapk-button {
1175
+ font-size: 18px;
1176
+ height: 50px;
1177
+ line-height: 48px;
1178
+ padding: 0 36px;
1179
+ min-height: 46px; }
1180
+
1181
+ @media screen and (min-width: 782px) {
1182
+ th#status,
1183
+ th#provider {
1184
+ width: 80px; }
1185
+ th#type {
1186
+ width: 50px; }
1187
+ th#option_name {
1188
+ width: 100px; }
1189
+ td.option_name.column-option_name > span:first-child {
1190
+ display: none; }
1191
+ th#last_updated {
1192
+ width: 90px; }
1193
+ th#view {
1194
+ width: 111px; } }
1195
+
1196
+ @media screen and (min-width: 960px) {
1197
+ th#status, th#provider {
1198
+ width: 100px; }
1199
+ th#type {
1200
+ width: 80px; }
1201
+ th#option_name {
1202
+ width: 150px; }
1203
+ th#last_updated {
1204
+ width: 140px; } }
1205
+
1206
+ @media screen and (max-width: 782px) {
1207
+ table.wf-info-table {
1208
+ margin-top: 10px; }
1209
+ table.wf-info-table th:first-child img {
1210
+ margin: 0 auto;
1211
+ display: block; }
1212
+ .wapk-button.wapk-button-xl {
1213
+ padding: 6px 14px;
1214
+ line-height: normal;
1215
+ font-size: 14px;
1216
+ vertical-align: middle;
1217
+ height: auto;
1218
+ margin-bottom: 4px; } }
1219
+
1220
+ .wapk-feed-docs .wapk-feed-cta {
1221
+ margin: 0; }
1222
+
1223
+ .campaign_configurator {
1224
+ background: #FFF;
1225
+ padding: 20px 0; }
1226
+ .campaign_configurator table {
1227
+ margin: 0 auto;
1228
+ width: 51%;
1229
+ min-width: 574px;
1230
+ border: none;
1231
+ box-shadow: none; }
1232
+ .campaign_configurator th {
1233
+ min-width: 120px; }
1234
+
1235
+ @media screen and (max-width: 782px) {
1236
+ .campaign_configurator {
1237
+ padding: 0; }
1238
+ .campaign_configurator table {
1239
+ width: auto;
1240
+ min-width: auto;
1241
+ max-width: 100%; }
1242
+ .campaign_configurator th {
1243
+ min-width: auto; } }
1244
+
1245
+ #wf-tab-content-config td > input:not([type="checkbox"]):not([type="radio"]),
1246
+ #wf-tab-content-config td > select,
1247
+ #wf-tab-content-config td > textarea {
1248
+ width: 100% !important; }
1249
+
1250
+ .woo-feed-filters td > div:nth-child(2n):not(.clear):not(.selectize) {
1251
+ width: 120px;
1252
+ display: block; }
1253
+
1254
+ .woo-feed-filters td > div:not(.clear) {
1255
+ float: left;
1256
+ margin-right: 10px; }
1257
+
1258
+ .woo-feed-filters tr > td:first-child {
1259
+ width: 290px;
1260
+ padding-left: 40px; }
1261
+
1262
+ .woo-feed-filters,
1263
+ .woo-feed-ftp {
1264
+ margin: 15px auto 25px; }
1265
+
1266
+ .wf_clean_cache_wrapper {
1267
+ display: -ms-flexbox;
1268
+ display: flex;
1269
+ margin-left: auto; }
1270
+
1271
+ @-webkit-keyframes LoaderClockWise {
1272
+ from {
1273
+ -webkit-transform: rotate(0deg);
1274
+ transform: rotate(0deg); }
1275
+ to {
1276
+ -webkit-transform: rotate(360deg);
1277
+ transform: rotate(360deg); } }
1278
+
1279
+ @keyframes LoaderClockWise {
1280
+ from {
1281
+ -webkit-transform: rotate(0deg);
1282
+ transform: rotate(0deg); }
1283
+ to {
1284
+ -webkit-transform: rotate(360deg);
1285
+ transform: rotate(360deg); } }
1286
+
1287
+ .woo-feed-cache-loader {
1288
+ width: 18px;
1289
+ margin-right: 5px;
1290
+ animation: LoaderClockWise 1s linear infinite;
1291
+ -webkit-animation: LoaderClockWise 1s linear infinite;
1292
+ display: none; }
1293
+
1294
+ .woo-feed-table-heading .woo-feed-table-heading-title {
1295
+ float: left;
1296
+ margin-right: auto;
1297
+ display: inline-block;
1298
+ line-height: 30px; }
1299
+
1300
+ .woo-feed-table-heading .wf_clean_cache_wrapper {
1301
+ float: right;
1302
+ font-weight: normal; }
1303
+
1304
+ .wf_clean_cache_wrapper button {
1305
+ background: #eb4d4b;
1306
+ color: #fff;
1307
+ border: none;
1308
+ font-weight: 500;
1309
+ display: inline-block;
1310
+ text-decoration: none;
1311
+ font-size: 13px;
1312
+ line-height: 2.15384615;
1313
+ min-height: 30px;
1314
+ margin: 0;
1315
+ padding: 0 10px;
1316
+ border-radius: 3px;
1317
+ cursor: pointer;
1318
+ outline: none; }
1319
+
1320
+ .wf_clean_cache_wrapper button:hover {
1321
+ background: #ff7979;
1322
+ color: #fff; }
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,a,n,o,c){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 r(e,t){s(e).addClass("tooltipped tooltipped-s").attr("aria-label",t)}function i(e,t){return s.extend(!0,{},e,t)}function t(){l=s(".toClipboard"),!ClipboardJS.isSupported()||/iPhone|iPad/i.test(navigator.userAgent)?l.find("img").hide(0):(l.each(function(){s(this).on("mouseleave",e).on("blur",e)}),new ClipboardJS(".toClipboard").on("error",function(e){var t,n;r(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){r(e.trigger,"Copied!")}))}var l,_,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")?c.ajax.error+"\n"+e.statusText+" ("+e.status+")":e)},sortable:function(e,n,a,r){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),r&&"function"==typeof r&&r(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"))}},d={form:null,init:function(){this.form=s(".generateFeed"),this.form.length&&(f.common(),s(n).trigger(new jQuery.Event("feedEditor.init",{target:this.form})))},renderMerchantInfo:function(n,a,r){function e(e){var t;r.hasOwnProperty(e)&&(n.find(".merchant-info-section."+e+" .data").html(r[e]),"feed_file_type"===e&&((t=r[e].split(",").map(function(e){return e.trim().toLowerCase()}).filter(function(e){return""!==e&&e!==c.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 r)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);d.init()}},u=[],h=[],p=function(){function e(){_classCallCheck(this,e),this._feed=c.generator.feed,this._limit=c.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=c.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 t=this;return""!==this._feed&&this._regenerate&&!1===a.isRegenerating&&this.generate(),s(n).on("click",".wpf_regenerate",function(e){e.preventDefault(),t._current_btn=s(this),t._current_btn.hasClass("disabled")||!0===a.isRegenerating||(t._feed=t._current_btn.attr("id").replace("wf_feed_","wf_config"),""!==t._feed&&t.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",c.regenerate).attr("title",c.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,o.post("get_product_information",{_ajax_nonce:c.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),o.post("make_batch_feed",{_ajax_nonce:c.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"),o.post("save_feed_file",{_ajax_nonce:c.nonce,feed:this._feed}).then(function(e){t._log(e),t._progress=100,t._refresh&&(a.location.href="".concat(c.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 c.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,background:this._color||"#3DC264"}),e.text(n)}}]),e}();a.wf={helper:f,feedEditor:d,generator:p},s(a).load(function(){null!==s(location).attr("href").match(/webappick.*feed/g)&&s("#wpbody-content").addClass("woofeed-body-content");var e=a.location.search;"edit-feed"===new URLSearchParams(e).get("action")&&s(".itemWrapper").show(),t(),postboxes.add_postbox_toggles(pagenow),(new p).init(),""!==c.generator.feed&&c.generator.regenerate,d.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(n).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(c.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(),o.post("clear_cache_data",{_ajax_clean_nonce:t}).then(function(e){e.success&&n.hide()}).fail(function(e){console.log("something wrong")})}).on("change",".wf_attr.wf_attributes",function(e){e.preventDefault(),s(".fancy-picker-picked").trigger("click");var t,n,a=s(this).val(),r=s(this).parents("tr").find(".outputType"),i=s(this).parents("tr").find(".fancy-picker-content .fancy-picker-option"),o=s(this).parents("tr").find(".fancy-picker-data span");""!==a&&-1!==a.indexOf("wf_taxo")&&(t="for_custom_taxo",n="parent_if_empty"),["price","current_price","sale_price","price_with_tax","current_price_with_tax","sale_price_with_tax"].includes(a)&&(t="for_price",n="Price"),i.removeClass("selected"),"for_custom_taxo"!==t&&"for_price"!==t||i.each(function(e){n===s(this).text()&&(s(this).addClass("selected"),o.text(n),r.find("option").text(n),r.find("option").val(s(this).data("value")))})}).on("click","#doaction, #doaction2",function(){return confirm(c.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(c.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?c.form.save:c.form.generate,"</b>"))}).on("change",".ftporsftp",function(){var e=s(this).val(),t=s(".ssh2_status");"sftp"===e?(t.show().css("color","dodgerblue").text(c.form.sftp_checking),o.post("get_ssh2_status",{_ajax_nonce:c.nonce,server:e}).then(function(e){"exists"===e?(t.css("color","#2CC185").text(c.form.sftp_available),setTimeout(function(){t.hide()},1500)):t.show().css("color","red").text(c.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){if(e.preventDefault(),s(this).closest(".generateFeed").hasClass("add-new")){var t=s(this).val(),n=s("#feedType"),a=s("#providerPage"),r=s("#feed_merchant_info");a.html('<h3><span style="float:none;margin: -3px 0 0;" class="spinner is-active"></span> '+c.form.loading_tmpl+"</h3>"),r.find(".spinner").addClass("is-active"),n.disabled(!0),n.parent().find(".spinner").addClass("is-active"),r.find(".merchant-info-section .data").html(""),u.hasOwnProperty(t)?d.renderMerchantInfo(r,n,u[t]):o.send("woo_feed_get_merchant_info",{type:"GET",data:{nonce:c.nonce,provider:t}}).then(function(e){u[t]=e,d.renderMerchantInfo(r,n,e)}).fail(f.ajax_fail),h.hasOwnProperty(t)?d.renderMerchantTemplate(a,h[t]):o.post("get_feed_merchant",{_ajax_nonce:c.nonce,merchant:t}).then(function(e){h[t]=e,d.renderMerchantTemplate(a,e)}).fail(f.ajax_fail)}}).on("change",".woo_feed_status_input",function(){var e=s(this);o.post("update_feed_status",{_ajax_nonce:c.nonce,feedName:e.val(),status:e[0].checked?1:0})}),s(n).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)"),r=s("#provider").val();if(c.form.google_category.hasOwnProperty(t.val())&&"pattern"===n.val()&&f.in_array(r,c.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(c.learn_more,"</a></span>")),_||a.append('<span class="spinner is-active" style="margin: 0;"></span>');var i=a.find(".wf_attributes select");f.selectize(i,{preload:!0,placeholder:c.form.select_category,load:function(e,t){_?t(_):o.send("get_google_categories",{type:"GET",data:{_ajax_nonce:c.nonce,action:"get_google_categories",provider:r}}).then(function(e){t(_=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(){var e=s("#feedType").val(),t=s("#provider").val(),n=s(".itemWrapper"),a=s(".wf_csvtxt");""!==e&&f.in_array(t,c.form.item_wrapper_hidden)?n.hide():"xml"===e?(n.show(),a.hide()):"csv"===e||"txt"===e?(n.hide(),a.show()):(n.hide(),a.hide())}).trigger("change")})}(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 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,a,n,o,c){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 r(e,t){s(e).addClass("tooltipped tooltipped-s").attr("aria-label",t)}function i(e,t){return s.extend(!0,{},e,t)}function t(){l=s(".toClipboard"),!ClipboardJS.isSupported()||/iPhone|iPad/i.test(navigator.userAgent)?l.find("img").hide(0):(l.each(function(){s(this).on("mouseleave",e).on("blur",e)}),new ClipboardJS(".toClipboard").on("error",function(e){var t,n;r(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){r(e.trigger,"Copied!")}))}var l,_,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")?c.ajax.error+"\n"+e.statusText+" ("+e.status+")":e)},sortable:function(e,n,a,r){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),r&&"function"==typeof r&&r(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"))}},d={form:null,init:function(){this.form=s(".generateFeed"),this.form.length&&(f.common(),s(n).trigger(new jQuery.Event("feedEditor.init",{target:this.form})))},renderMerchantInfo:function(n,a,r){function e(e){var t;r.hasOwnProperty(e)&&(n.find(".merchant-info-section."+e+" .data").html(r[e]),"feed_file_type"===e&&((t=r[e].split(",").map(function(e){return e.trim().toLowerCase()}).filter(function(e){return""!==e&&e!==c.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 r)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);d.init()}},u=[],h=[],p=function(){function e(){_classCallCheck(this,e),this._feed=c.generator.feed,this._limit=c.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=c.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 t=this;return""!==this._feed&&this._regenerate&&!1===a.isRegenerating&&this.generate(),s(n).on("click",".wpf_regenerate",function(e){e.preventDefault(),t._current_btn=s(this),t._current_btn.hasClass("disabled")||!0===a.isRegenerating||(t._feed=t._current_btn.attr("id").replace("wf_feed_","wf_config"),""!==t._feed&&t.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",c.regenerate).attr("title",c.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,o.post("get_product_information",{_ajax_nonce:c.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),o.post("make_batch_feed",{_ajax_nonce:c.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"),o.post("save_feed_file",{_ajax_nonce:c.nonce,feed:this._feed}).then(function(e){t._log(e),t._progress=100,t._refresh&&(a.location.href="".concat(c.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 c.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,background:this._color||"#3DC264"}),e.text(n)}}]),e}();a.wf={helper:f,feedEditor:d,generator:p},s(a).load(function(){null!==s(location).attr("href").match(/webappick.*feed/g)&&s("#wpbody-content").addClass("woofeed-body-content");var e=a.location.search;"edit-feed"===new URLSearchParams(e).get("action")&&s(".itemWrapper").show(),t(),postboxes.add_postbox_toggles(pagenow),(new p).init(),""!==c.generator.feed&&c.generator.regenerate,d.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(n).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(c.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(),o.post("clear_cache_data",{_ajax_clean_nonce:t}).then(function(e){e.success&&n.hide()}).fail(function(e){console.log("something wrong")})}).on("change",".wf_attr.wf_attributes",function(e){e.preventDefault(),s(".fancy-picker-picked").trigger("click");var t,n,a=s(this).val(),r=s(this).parents("tr").find(".outputType"),i=s(this).parents("tr").find(".fancy-picker-content .fancy-picker-option"),o=s(this).parents("tr").find(".fancy-picker-data span");""!==a&&-1!==a.indexOf("wf_taxo")&&(t="for_custom_taxo",n="parent_if_empty"),["price","current_price","sale_price","price_with_tax","current_price_with_tax","sale_price_with_tax"].includes(a)&&(t="for_price",n="Price"),i.removeClass("selected"),"for_custom_taxo"!==t&&"for_price"!==t||i.each(function(e){n===s(this).text()&&(s(this).addClass("selected"),o.text(n),r.find("option").text(n),r.find("option").val(s(this).data("value")))})}).on("click","#doaction, #doaction2",function(){return confirm(c.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(c.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?c.form.save:c.form.generate,"</b>"))}).on("change",".ftporsftp",function(){var e=s(this).val(),t=s(".ssh2_status");"sftp"===e?(t.show().css("color","dodgerblue").text(c.form.sftp_checking),o.post("get_ssh2_status",{_ajax_nonce:c.nonce,server:e}).then(function(e){"exists"===e?(t.css("color","#2CC185").text(c.form.sftp_available),setTimeout(function(){t.hide()},1500)):t.show().css("color","red").text(c.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){if(e.preventDefault(),s(this).closest(".generateFeed").hasClass("add-new")){var t=s(this).val(),n=s("#feedType"),a=s("#providerPage"),r=s("#feed_merchant_info");a.html('<h3><span style="float:none;margin: -3px 0 0;" class="spinner is-active"></span> '+c.form.loading_tmpl+"</h3>"),r.find(".spinner").addClass("is-active"),n.disabled(!0),n.parent().find(".spinner").addClass("is-active"),r.find(".merchant-info-section .data").html(""),u.hasOwnProperty(t)?d.renderMerchantInfo(r,n,u[t]):o.send("woo_feed_get_merchant_info",{type:"GET",data:{nonce:c.nonce,provider:t}}).then(function(e){u[t]=e,d.renderMerchantInfo(r,n,e)}).fail(f.ajax_fail),h.hasOwnProperty(t)?d.renderMerchantTemplate(a,h[t]):o.post("get_feed_merchant",{_ajax_nonce:c.nonce,merchant:t}).then(function(e){h[t]=e,d.renderMerchantTemplate(a,e)}).fail(f.ajax_fail)}}).on("change",".woo_feed_status_input",function(){var e=s(this);o.post("update_feed_status",{_ajax_nonce:c.nonce,feedName:e.val(),status:e[0].checked?1:0})}),s(n).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)"),r=s("#provider").val();if(c.form.google_category.hasOwnProperty(t.val())&&"pattern"===n.val()&&f.in_array(r,c.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(c.learn_more,"</a></span>")),_||a.append('<span class="spinner is-active" style="margin: 0;"></span>');var i=a.find(".wf_attributes select");f.selectize(i,{preload:!0,placeholder:c.form.select_category,load:function(e,t){_?t(_):o.send("get_google_categories",{type:"GET",data:{_ajax_nonce:c.nonce,action:"get_google_categories",provider:r}}).then(function(e){t(_=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(){var e=s("#feedType").val(),t=s("#provider").val(),n=s(".itemWrapper"),a=s(".wf_csvtxt");""!==e&&f.in_array(t,c.form.item_wrapper_hidden)?n.hide():"xml"===e?(n.show(),a.hide()):"csv"===e||"txt"===e?(n.hide(),a.show()):(n.hide(),a.hide())}).trigger("change")})}(jQuery,window,document,wp.ajax,wpf_ajax_obj);
2
+ //# sourceMappingURL=woo-feed-admin.min.js.map
admin/partials/woo-feed-admin-display.php CHANGED
@@ -35,7 +35,7 @@ woo_feed_register_and_do_woo_feed_meta_boxes( $wf_current_screen, $feedRules );
35
  ?>
36
  <div class="wrap wapk-admin" id="Feed">
37
  <div class="wapk-section">
38
- <h1 class="wp-heading-inline"><?php esc_html_e( 'New WooCommerce Product Feed', 'woo-feed' ); ?></h1>
39
  </div>
40
  <div class="wapk-section"><?php WPFFWMessage()->displayMessages(); ?></div>
41
  <hr class="wp-header-end">
@@ -49,7 +49,7 @@ woo_feed_register_and_do_woo_feed_meta_boxes( $wf_current_screen, $feedRules );
49
  wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false );
50
  ?>
51
  <div id="poststuff">
52
- <div id="post-body" class="metabox-holder columns-<?php echo 1 === get_current_screen()->get_columns() ? '1' : '2'; ?>">
53
  <div id="post-body-content">
54
  <?php require_once WOO_FEED_FREE_ADMIN_PATH . 'partials/woo-feed-content-settings.php'; ?>
55
  </div>
35
  ?>
36
  <div class="wrap wapk-admin" id="Feed">
37
  <div class="wapk-section">
38
+ <h1 class="wp-heading-inline"><?php _e( 'New WooCommerce Product Feed', 'woo-feed' ); ?></h1>
39
  </div>
40
  <div class="wapk-section"><?php WPFFWMessage()->displayMessages(); ?></div>
41
  <hr class="wp-header-end">
49
  wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false );
50
  ?>
51
  <div id="poststuff">
52
+ <div id="post-body" class="metabox-holder columns-<?php echo 1 == get_current_screen()->get_columns() ? '1' : '2'; ?>">
53
  <div id="post-body-content">
54
  <?php require_once WOO_FEED_FREE_ADMIN_PATH . 'partials/woo-feed-content-settings.php'; ?>
55
  </div>
admin/partials/woo-feed-category-mapping.php CHANGED
@@ -63,7 +63,7 @@ if ( isset( $_GET['action'], $_GET['cmapping'] ) ) { // phpcs:ignore
63
  <tfoot>
64
  <tr>
65
  <td colspan="2">
66
- <button name="<?php echo isset( $_GET['action'] ) ? wp_unslash( esc_attr( sanitize_text_field( $_GET['action'] ) ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended ?>" type="submit" class="button button-large button-primary"><?php esc_html_e( 'Save Mapping', 'woo-feed' ); ?></button>
67
  </td>
68
  </tr>
69
  </tfoot>
63
  <tfoot>
64
  <tr>
65
  <td colspan="2">
66
+ <button name="<?php echo isset( $_GET['action'] ) ? esc_attr( sanitize_text_field( $_GET['action'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended ?>" type="submit" class="button button-large button-primary"><?php esc_html_e( 'Save Mapping', 'woo-feed' ); ?></button>
67
  </td>
68
  </tr>
69
  </tfoot>
admin/partials/woo-feed-content-settings.php CHANGED
@@ -23,14 +23,14 @@ global $feedRules, $wooFeedDropDown, $merchant;
23
  <thead>
24
  <tr>
25
  <th colspan="2" class="woo-feed-table-heading">
26
- <span class="woo-feed-table-heading-title"><?php esc_html_e( 'Content Settings', 'woo-feed' ); ?></span>
27
  <?php woo_feed_clear_cache_button(); ?>
28
  </th>
29
  </tr>
30
  </thead>
31
  <tbody>
32
  <tr>
33
- <th><label for="provider"><?php esc_html_e( 'Template', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
34
  <td>
35
  <select wftitle="<?php esc_attr_e( 'Select a template', 'woo-feed' ); ?>" name="provider" id="provider" class="generalInput wfmasterTooltip" required>
36
  <?php
@@ -41,13 +41,13 @@ global $feedRules, $wooFeedDropDown, $merchant;
41
  </td>
42
  </tr>
43
  <tr>
44
- <th><label for="filename"><?php esc_html_e( 'File Name', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
45
  <td>
46
  <input name="filename" value="<?php echo isset( $feedRules['filename'] ) ? esc_attr( $feedRules['filename'] ) : ''; ?>" type="text" id="filename" class="generalInput wfmasterTooltip" wftitle="<?php esc_attr_e( 'Filename should be unique. Otherwise it will override the existing filename.', 'woo-feed' ); ?>" required>
47
  </td>
48
  </tr>
49
  <tr>
50
- <th><label for="feedType"><?php esc_html_e( 'Feed Type', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
51
  <td>
52
  <select name="feedType" id="feedType" class="generalInput" required>
53
  <option value=""></option>
@@ -61,13 +61,13 @@ global $feedRules, $wooFeedDropDown, $merchant;
61
  </td>
62
  </tr>
63
  <tr class="itemWrapper" style="display: none;">
64
- <th><label for="itemsWrapper"><?php esc_html_e( 'Items Wrapper', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
65
  <td>
66
  <input name="itemsWrapper" id="itemsWrapper" type="text" value="<?php echo esc_attr( wp_unslash($feedRules['itemsWrapper']) ); ?>" class="generalInput" required="required">
67
  </td>
68
  </tr>
69
  <tr class="itemWrapper" style="display: none;">
70
- <th><label for="itemWrapper"><?php esc_html_e( 'Single Item Wrapper', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
71
  <td>
72
  <input name="itemWrapper" id="itemWrapper" type="text" value="<?php echo esc_attr( wp_unslash($feedRules['itemWrapper'] )); ?>" class="generalInput" required="required">
73
  </td>
@@ -86,7 +86,7 @@ global $feedRules, $wooFeedDropDown, $merchant;
86
  */
87
  ?>
88
  <tr class="wf_csvtxt" style="display: none;">
89
- <th><label for="delimiter"><?php esc_html_e( 'Delimiter', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
90
  <td>
91
  <select name="delimiter" id="delimiter" class="generalInput">
92
  <?php
@@ -98,7 +98,7 @@ global $feedRules, $wooFeedDropDown, $merchant;
98
  </td>
99
  </tr>
100
  <tr class="wf_csvtxt" style="display: none;">
101
- <th><label for="enclosure"><?php esc_html_e( 'Enclosure', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
102
  <td>
103
  <select name="enclosure" id="enclosure" class="generalInput">
104
  <?php
23
  <thead>
24
  <tr>
25
  <th colspan="2" class="woo-feed-table-heading">
26
+ <span class="woo-feed-table-heading-title"><?php _e( 'Content Settings', 'woo-feed' ); ?></span>
27
  <?php woo_feed_clear_cache_button(); ?>
28
  </th>
29
  </tr>
30
  </thead>
31
  <tbody>
32
  <tr>
33
+ <th><label for="provider"><?php _e( 'Template', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
34
  <td>
35
  <select wftitle="<?php esc_attr_e( 'Select a template', 'woo-feed' ); ?>" name="provider" id="provider" class="generalInput wfmasterTooltip" required>
36
  <?php
41
  </td>
42
  </tr>
43
  <tr>
44
+ <th><label for="filename"><?php _e( 'File Name', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
45
  <td>
46
  <input name="filename" value="<?php echo isset( $feedRules['filename'] ) ? esc_attr( $feedRules['filename'] ) : ''; ?>" type="text" id="filename" class="generalInput wfmasterTooltip" wftitle="<?php esc_attr_e( 'Filename should be unique. Otherwise it will override the existing filename.', 'woo-feed' ); ?>" required>
47
  </td>
48
  </tr>
49
  <tr>
50
+ <th><label for="feedType"><?php _e( 'Feed Type', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
51
  <td>
52
  <select name="feedType" id="feedType" class="generalInput" required>
53
  <option value=""></option>
61
  </td>
62
  </tr>
63
  <tr class="itemWrapper" style="display: none;">
64
+ <th><label for="itemsWrapper"><?php _e( 'Items Wrapper', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
65
  <td>
66
  <input name="itemsWrapper" id="itemsWrapper" type="text" value="<?php echo esc_attr( wp_unslash($feedRules['itemsWrapper']) ); ?>" class="generalInput" required="required">
67
  </td>
68
  </tr>
69
  <tr class="itemWrapper" style="display: none;">
70
+ <th><label for="itemWrapper"><?php _e( 'Single Item Wrapper', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
71
  <td>
72
  <input name="itemWrapper" id="itemWrapper" type="text" value="<?php echo esc_attr( wp_unslash($feedRules['itemWrapper'] )); ?>" class="generalInput" required="required">
73
  </td>
86
  */
87
  ?>
88
  <tr class="wf_csvtxt" style="display: none;">
89
+ <th><label for="delimiter"><?php _e( 'Delimiter', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
90
  <td>
91
  <select name="delimiter" id="delimiter" class="generalInput">
92
  <?php
98
  </td>
99
  </tr>
100
  <tr class="wf_csvtxt" style="display: none;">
101
+ <th><label for="enclosure"><?php _e( 'Enclosure', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
102
  <td>
103
  <select name="enclosure" id="enclosure" class="generalInput">
104
  <?php
admin/partials/woo-feed-edit-config.php CHANGED
@@ -7,13 +7,13 @@ if ( ! defined( 'ABSPATH' ) ) {
7
  <thead>
8
  <tr>
9
  <th></th>
10
- <th><?php echo esc_html( ucfirst( $provider ) ); ?> <?php esc_html_e( 'Attributes', 'woo-feed' ); ?></th>
11
- <th><?php esc_html_e( 'Prefix', 'woo-feed' ); ?></th>
12
- <th><?php esc_html_e( 'Type', 'woo-feed' ); ?></th>
13
- <th><?php esc_html_e( 'Value', 'woo-feed' ); ?></th>
14
- <th><?php esc_html_e( 'Suffix', 'woo-feed' ); ?></th>
15
- <th><?php esc_html_e( 'Output Type', 'woo-feed' ); ?></th>
16
- <th><?php esc_html_e( 'Command', 'woo-feed' ); ?></th>
17
  <th></th>
18
  </tr>
19
  </thead>
@@ -50,19 +50,19 @@ if ( ! defined( 'ABSPATH' ) ) {
50
  </td>
51
  <td>
52
  <select name="type[<?php echo esc_attr( $k ); ?>]" class="attr_type wfnoempty">
53
- <option <?php echo ( 'attribute' === $attr_type[ $k ] ) ? 'selected="selected" ' : ''; ?>value="attribute"><?php esc_html_e( 'Attribute', 'woo-feed' ); ?></option>
54
- <option <?php echo ( 'pattern' === $attr_type[ $k ] ) ? 'selected="selected" ' : ''; ?> value="pattern"><?php esc_html_e( 'Pattern', 'woo-feed' ); ?></option>
55
  </select>
56
  </td>
57
  <td>
58
- <select <?php echo ( 'attribute' === $attr_type[ $k ] ) ? '' : 'style=" display: none;" '; ?>name="attributes[<?php echo esc_attr( $k ); ?>]" class="wf_attr wf_attributes">
59
  <?php
60
  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
61
  echo $wooFeedDropDown->product_attributes_dropdown( esc_attr( $wooAttributes[ $k ] ) );
62
  ?>
63
  </select>
64
  <?php if ( woo_feed_merchant_require_google_category( $feedRules['provider'], $mAttribute ) ) { ?>
65
- <span <?php echo ( 'pattern' === $attr_type[ $k ] ) ? '' : 'style=" display: none;" '; ?>class="wf_default wf_attributes">
66
  <select name="default[<?php echo esc_attr( $k ); ?>]" class="selectize" data-placeholder="<?php esc_attr_e( 'Select A Category', 'woo-feed' ); ?>">
67
  <?php
68
  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
@@ -72,7 +72,7 @@ if ( ! defined( 'ABSPATH' ) ) {
72
  </span>
73
  <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">Learn More..</a></span>
74
  <?php } else { ?>
75
- <input <?php echo ( 'pattern' === $attr_type[ $k ] ) ? '' : 'style=" display: none;"'; ?>autocomplete="off" class="wf_default wf_attributes " type="text" name="default[<?php echo esc_attr( $k ); ?>]" value="<?php echo esc_attr( $default[ $k ] ); ?>"/>
76
  <?php } ?>
77
  </td>
78
  <td>
@@ -121,8 +121,8 @@ if ( ! defined( 'ABSPATH' ) ) {
121
  </td>
122
  <td>
123
  <select name="type[__idx__]" class="attr_type wfnoempty">
124
- <option value="attribute"><?php esc_html_e( 'Attribute', 'woo-feed' ); ?></option>
125
- <option value="pattern"><?php esc_html_e( 'Pattern', 'woo-feed' ); ?></option>
126
  </select>
127
  </td>
128
  <td>
@@ -153,7 +153,7 @@ if ( ! defined( 'ABSPATH' ) ) {
153
  </td>
154
  </tr>
155
  </script>
156
- <button type="button" class="button-small button-primary" id="wf_newRow"><?php esc_html_e( 'Add New Attribute', 'woo-feed' ); ?></button>
157
  </td>
158
  <td colspan="6"></td>
159
  </tr>
7
  <thead>
8
  <tr>
9
  <th></th>
10
+ <th><?php echo esc_html( ucfirst( $provider ) ); ?> <?php _e( 'Attributes', 'woo-feed' ); ?></th>
11
+ <th><?php _e( 'Prefix', 'woo-feed' ); ?></th>
12
+ <th><?php _e( 'Type', 'woo-feed' ); ?></th>
13
+ <th><?php _e( 'Value', 'woo-feed' ); ?></th>
14
+ <th><?php _e( 'Suffix', 'woo-feed' ); ?></th>
15
+ <th><?php _e( 'Output Type', 'woo-feed' ); ?></th>
16
+ <th><?php _e( 'Command', 'woo-feed' ); ?></th>
17
  <th></th>
18
  </tr>
19
  </thead>
50
  </td>
51
  <td>
52
  <select name="type[<?php echo esc_attr( $k ); ?>]" class="attr_type wfnoempty">
53
+ <option <?php echo ( 'attribute' == $attr_type[ $k ] ) ? 'selected="selected" ' : ''; ?>value="attribute"><?php _e( 'Attribute', 'woo-feed' ); ?></option>
54
+ <option <?php echo ( 'pattern' == $attr_type[ $k ] ) ? 'selected="selected" ' : ''; ?> value="pattern"><?php _e( 'Pattern', 'woo-feed' ); ?></option>
55
  </select>
56
  </td>
57
  <td>
58
+ <select <?php echo ( 'attribute' == $attr_type[ $k ] ) ? '' : 'style=" display: none;" '; ?>name="attributes[<?php echo esc_attr( $k ); ?>]" class="wf_attr wf_attributes">
59
  <?php
60
  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
61
  echo $wooFeedDropDown->product_attributes_dropdown( esc_attr( $wooAttributes[ $k ] ) );
62
  ?>
63
  </select>
64
  <?php if ( woo_feed_merchant_require_google_category( $feedRules['provider'], $mAttribute ) ) { ?>
65
+ <span <?php echo ( 'pattern' == $attr_type[ $k ] ) ? '' : 'style=" display: none;" '; ?>class="wf_default wf_attributes">
66
  <select name="default[<?php echo esc_attr( $k ); ?>]" class="selectize" data-placeholder="<?php esc_attr_e( 'Select A Category', 'woo-feed' ); ?>">
67
  <?php
68
  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
72
  </span>
73
  <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">Learn More..</a></span>
74
  <?php } else { ?>
75
+ <input <?php echo ( 'pattern' == $attr_type[ $k ] ) ? '' : 'style=" display: none;"'; ?>autocomplete="off" class="wf_default wf_attributes " type="text" name="default[<?php echo esc_attr( $k ); ?>]" value="<?php echo esc_attr( $default[ $k ] ); ?>"/>
76
  <?php } ?>
77
  </td>
78
  <td>
121
  </td>
122
  <td>
123
  <select name="type[__idx__]" class="attr_type wfnoempty">
124
+ <option value="attribute"><?php _e( 'Attribute', 'woo-feed' ); ?></option>
125
+ <option value="pattern"><?php _e( 'Pattern', 'woo-feed' ); ?></option>
126
  </select>
127
  </td>
128
  <td>
153
  </td>
154
  </tr>
155
  </script>
156
+ <button type="button" class="button-small button-primary" id="wf_newRow"><?php _e( 'Add New Attribute', 'woo-feed' ); ?></button>
157
  </td>
158
  <td colspan="6"></td>
159
  </tr>
admin/partials/woo-feed-edit-filter.php CHANGED
@@ -7,7 +7,7 @@ if ( ! defined( 'ABSPATH' ) ) {
7
  <tbody>
8
 
9
  <tr>
10
- <td colspan="2"><?php esc_html_e( 'Campaign URL Builder', 'woo-feed' ); ?></td>
11
  </tr>
12
  <tr>
13
  <td colspan="2">
7
  <tbody>
8
 
9
  <tr>
10
+ <td colspan="2"><?php _e( 'Campaign URL Builder', 'woo-feed' ); ?></td>
11
  </tr>
12
  <tr>
13
  <td colspan="2">
admin/partials/woo-feed-edit-ftp.php CHANGED
@@ -12,50 +12,50 @@ if ( ! defined( 'ABSPATH' ) ) {
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>
24
- <td><label for="ftporsftp"><?php esc_html_e( 'Server Type', 'woo-feed' ); ?></label></td>
25
  <td>
26
  <select name="ftporsftp" id="ftporsftp" class="ftporsftp">
27
- <option <?php echo ( 'ftp' === $feedRules['ftporsftp'] ) ? 'selected="selected" ' : ''; ?> value="ftp"><?php esc_html_e( 'FTP', 'woo-feed' ); ?></option>
28
- <option <?php echo ( 'sftp' === $feedRules['ftporsftp'] ) ? 'selected="selected" ' : ''; ?>value="sftp"><?php esc_html_e( 'SFTP', 'woo-feed' ); ?></option>
29
  </select>
30
  <span class="ssh2_status"></span>
31
  </td>
32
  </tr>
33
  <tr>
34
- <td><label for="ftphost"><?php esc_html_e( 'Host Name', 'woo-feed' ); ?></label></td>
35
  <td><input type="text" id="ftphost" value="<?php echo esc_attr( $feedRules['ftphost'] ); ?>" name="ftphost" autocomplete="off"/></td>
36
  </tr>
37
  <tr>
38
- <td><label for="ftpport"><?php esc_html_e( 'Port', 'woo-feed' ); ?></label></td>
39
  <td><input type="text" id="ftpport" value="<?php echo isset( $feedRules['ftpport'] ) ? esc_attr( $feedRules['ftpport'] ) : 21; ?>" name="ftpport" autocomplete="off"/></td>
40
  </tr>
41
  <tr>
42
- <td><label for="ftpuser"><?php esc_html_e( 'User Name', 'woo-feed' ); ?></label></td>
43
  <td><input type="text" id="ftpuser" value="<?php echo esc_attr( $feedRules['ftpuser'] ); ?>" name="ftpuser" autocomplete="off"/></td>
44
  </tr>
45
  <tr>
46
- <td><label for="ftppassword"><?php esc_html_e( 'Password', 'woo-feed' ); ?></label></td>
47
  <td><input type="password" id="ftppassword" value="<?php echo esc_attr( $feedRules['ftppassword'] ); ?>" name="ftppassword" autocomplete="off"/></td>
48
  </tr>
49
  <tr>
50
- <td><label for="ftppath"><?php esc_html_e( 'Path', 'woo-feed' ); ?></label></td>
51
  <td><input type="text" id="ftppath" value="<?php echo esc_attr( $feedRules['ftppath'] ); ?>" name="ftppath" autocomplete="off"/></td>
52
  </tr>
53
  <tr>
54
- <td><label for="ftpmode"><?php esc_html_e( 'Connection Mode', 'woo-feed' ); ?></label></td>
55
  <td>
56
  <select name="ftpmode" id="ftpmode" class="ftpmode">
57
- <option <?php echo (isset($feedRules['ftpmode']) && 'active' === $feedRules['ftpmode'] ) ? 'selected="selected" ' : ''; ?> value="active"><?php esc_html_e( 'Active', 'woo-feed' ); ?></option>
58
- <option <?php echo (isset($feedRules['ftpmode']) && 'passive' === $feedRules['ftpmode'] ) ? 'selected="selected" ' : ''; ?>value="passive"><?php esc_html_e( 'Passive', 'woo-feed' ); ?></option>
59
  </select>
60
  </td>
61
  </tr>
12
  <?php } else { ?>
13
  <tbody>
14
  <tr>
15
+ <td><label for="ftpenabled"><?php _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 _e( 'Disabled', 'woo-feed' ); ?></option>
19
+ <option <?php echo ( '1' == $feedRules['ftpenabled'] ) ? 'selected="selected" ' : ''; ?>value="1"><?php _e( 'Enabled', 'woo-feed' ); ?></option>
20
  </select>
21
  </td>
22
  </tr>
23
  <tr>
24
+ <td><label for="ftporsftp"><?php _e( 'Server Type', 'woo-feed' ); ?></label></td>
25
  <td>
26
  <select name="ftporsftp" id="ftporsftp" class="ftporsftp">
27
+ <option <?php echo ( 'ftp' == $feedRules['ftporsftp'] ) ? 'selected="selected" ' : ''; ?> value="ftp"><?php _e( 'FTP', 'woo-feed' ); ?></option>
28
+ <option <?php echo ( 'sftp' == $feedRules['ftporsftp'] ) ? 'selected="selected" ' : ''; ?>value="sftp"><?php _e( 'SFTP', 'woo-feed' ); ?></option>
29
  </select>
30
  <span class="ssh2_status"></span>
31
  </td>
32
  </tr>
33
  <tr>
34
+ <td><label for="ftphost"><?php _e( 'Host Name', 'woo-feed' ); ?></label></td>
35
  <td><input type="text" id="ftphost" value="<?php echo esc_attr( $feedRules['ftphost'] ); ?>" name="ftphost" autocomplete="off"/></td>
36
  </tr>
37
  <tr>
38
+ <td><label for="ftpport"><?php _e( 'Port', 'woo-feed' ); ?></label></td>
39
  <td><input type="text" id="ftpport" value="<?php echo isset( $feedRules['ftpport'] ) ? esc_attr( $feedRules['ftpport'] ) : 21; ?>" name="ftpport" autocomplete="off"/></td>
40
  </tr>
41
  <tr>
42
+ <td><label for="ftpuser"><?php _e( 'User Name', 'woo-feed' ); ?></label></td>
43
  <td><input type="text" id="ftpuser" value="<?php echo esc_attr( $feedRules['ftpuser'] ); ?>" name="ftpuser" autocomplete="off"/></td>
44
  </tr>
45
  <tr>
46
+ <td><label for="ftppassword"><?php _e( 'Password', 'woo-feed' ); ?></label></td>
47
  <td><input type="password" id="ftppassword" value="<?php echo esc_attr( $feedRules['ftppassword'] ); ?>" name="ftppassword" autocomplete="off"/></td>
48
  </tr>
49
  <tr>
50
+ <td><label for="ftppath"><?php _e( 'Path', 'woo-feed' ); ?></label></td>
51
  <td><input type="text" id="ftppath" value="<?php echo esc_attr( $feedRules['ftppath'] ); ?>" name="ftppath" autocomplete="off"/></td>
52
  </tr>
53
  <tr>
54
+ <td><label for="ftpmode"><?php _e( 'Connection Mode', 'woo-feed' ); ?></label></td>
55
  <td>
56
  <select name="ftpmode" id="ftpmode" class="ftpmode">
57
+ <option <?php echo (isset($feedRules['ftpmode']) && 'active' == $feedRules['ftpmode'] ) ? 'selected="selected" ' : ''; ?> value="active"><?php _e( 'Active', 'woo-feed' ); ?></option>
58
+ <option <?php echo (isset($feedRules['ftpmode']) && 'passive' == $feedRules['ftpmode'] ) ? 'selected="selected" ' : ''; ?>value="passive"><?php _e( 'Passive', 'woo-feed' ); ?></option>
59
  </select>
60
  </td>
61
  </tr>
admin/partials/woo-feed-edit-tabs.php CHANGED
@@ -93,9 +93,9 @@ $isEdit = defined( 'WOO_FEED_EDIT_CONFIG' ) && WOO_FEED_EDIT_CONFIG;
93
  </td>
94
  <td>
95
  <?php if ( defined( 'WOO_FEED_EDIT_CONFIG' ) && WOO_FEED_EDIT_CONFIG ) { ?>
96
- <button name="save_feed_config" type="submit" class="wfbtn updatefeed"><?php esc_html_e( 'Save', 'woo-feed' ); ?></button>
97
  <?php } ?>
98
- <button name="<?php echo isset( $_GET['action'] ) ? esc_attr( wp_unslash( sanitize_text_field( $_GET['action'] ) ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended ?>" type="submit" class="wfbtn updatefeed"><?php _e( 'Update and Generate Feed', 'woo-feed' ); ?></button>
99
  </td>
100
  </tr>
101
  </table>
93
  </td>
94
  <td>
95
  <?php if ( defined( 'WOO_FEED_EDIT_CONFIG' ) && WOO_FEED_EDIT_CONFIG ) { ?>
96
+ <button name="save_feed_config" type="submit" class="wfbtn updatefeed"><?php _e( 'Save', 'woo-feed' ); ?></button>
97
  <?php } ?>
98
+ <button name="<?php echo isset( $_GET['action'] ) ? esc_attr( sanitize_text_field( $_GET['action'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended ?>" type="submit" class="wfbtn updatefeed"><?php _e( 'Update and Generate Feed', 'woo-feed' ); ?></button>
99
  </td>
100
  </tr>
101
  </table>
admin/partials/woo-feed-edit-template.php CHANGED
@@ -35,7 +35,7 @@ woo_feed_register_and_do_woo_feed_meta_boxes( $wf_current_screen, $feedRules );
35
  <!--suppress SpellCheckingInspection, HtmlFormInputWithoutLabel, HtmlDeprecatedAttribute -->
36
  <div class="wrap wapk-admin" id="Feed">
37
  <div class="wapk-section">
38
- <h2><?php sanitize_text_field( $_GET['action'] )( 'Edit WooCommerce Product Feed', 'woo-feed' ); ?></h2>
39
  </div>
40
  <div class="wapk-section"><?php WPFFWMessage()->displayMessages(); ?></div>
41
  <div class="wapk-section">
@@ -48,7 +48,7 @@ woo_feed_register_and_do_woo_feed_meta_boxes( $wf_current_screen, $feedRules );
48
  wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false );
49
  ?>
50
  <div id="poststuff">
51
- <div id="post-body" class="metabox-holder columns-<?php echo 1 === get_current_screen()->get_columns() ? '1' : '2'; ?>">
52
  <div id="post-body-content">
53
  <?php require_once WOO_FEED_FREE_ADMIN_PATH . 'partials/woo-feed-content-settings.php'; ?>
54
  </div>
35
  <!--suppress SpellCheckingInspection, HtmlFormInputWithoutLabel, HtmlDeprecatedAttribute -->
36
  <div class="wrap wapk-admin" id="Feed">
37
  <div class="wapk-section">
38
+ <h2><?php _e( 'Edit WooCommerce Product Feed', 'woo-feed' ); ?></h2>
39
  </div>
40
  <div class="wapk-section"><?php WPFFWMessage()->displayMessages(); ?></div>
41
  <div class="wapk-section">
48
  wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false );
49
  ?>
50
  <div id="poststuff">
51
+ <div id="post-body" class="metabox-holder columns-<?php echo 1 == get_current_screen()->get_columns() ? '1' : '2'; ?>">
52
  <div id="post-body-content">
53
  <?php require_once WOO_FEED_FREE_ADMIN_PATH . 'partials/woo-feed-content-settings.php'; ?>
54
  </div>
admin/partials/woo-feed-manage-list.php CHANGED
@@ -17,10 +17,10 @@ $message = array();
17
  global $regenerating, $regeneratingName, $plugin_page;
18
  $regenerating = false;
19
  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
20
- if ( ( isset( $_GET['feed_created'] ) || isset( $_GET['feed_updated'] ) || isset( $_GET['feed_imported'] ) ) && isset( $_GET['feed_regenerate'] ) && 1 === $_GET['feed_regenerate'] ) {
21
  // filename must be wf_config+XXX format for js to work.
22
  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
23
- $fileName = isset( $_GET['feed_name'] ) && ! empty( $_GET['feed_name'] ) ? wp_unslash( sanitize_text_field( $_GET['feed_name'] ) ) : ''; // trigger feed regenerate...
24
  if ( ! empty( $fileName ) ) {
25
  $fileName = woo_feed_extract_feed_option_name( $fileName );
26
  $regeneratingName = $fileName;
@@ -31,9 +31,9 @@ if ( ( isset( $_GET['feed_created'] ) || isset( $_GET['feed_updated'] ) || isset
31
  ?>
32
  <div class="wrap wapk-admin">
33
  <div class="wapk-section">
34
- <h1 class="wp-heading-inline"><?php esc_html_e( 'Manage Feed', 'woo-feed' ); ?></h1>
35
- <a href="<?php echo esc_url( admin_url( 'admin.php?page=webappick-new-feed' ) ); ?>" class="page-title-action"><?php esc_html_e( 'New Feed', 'woo-feed' ); ?></a>
36
- <a href="#TB_inline?&width=300&height=152&inlineId=wpf_importer" name="Import Feed Config" class="thickbox page-title-action"><?php esc_html_e( 'Import Feed', 'woo-feed' ); ?></a>
37
  <div id="wpf_importer" style="display: none;">
38
  <form action="<?php echo esc_url( admin_url( 'admin-post.php?action=wpf_import' ) ); ?>" method="post" enctype="multipart/form-data">
39
  <?php wp_nonce_field( 'wpf_import' ); ?>
@@ -94,7 +94,7 @@ if ( ( isset( $_GET['feed_created'] ) || isset( $_GET['feed_updated'] ) || isset
94
  <tr>
95
  <th>
96
  <b><?php esc_html_e( 'Auto Update Feed Interval', 'woo-feed' ); ?></b>
97
- <span style="float: right;"><?php echo sprintf( 'Version %s', esc_html(WOO_FEED_FREE_VERSION ) ); ?></span>
98
  </th>
99
  </tr>
100
  </thead>
@@ -103,7 +103,7 @@ if ( ( isset( $_GET['feed_created'] ) || isset( $_GET['feed_updated'] ) || isset
103
  <td>
104
  <form action="" method="post" style="display: flex;align-items: center;">
105
  <?php wp_nonce_field( 'wf_schedule', 'wf_schedule_nonce' ); ?>
106
- <label for="wf_schedule"><b><?php esc_html_e( 'Interval', 'woo-feed' ); ?></b></label>
107
  <select name="wf_schedule" id="wf_schedule" style="margin: 0 5px;">
108
  <?php
109
  $interval = get_option( 'wf_schedule' );
17
  global $regenerating, $regeneratingName, $plugin_page;
18
  $regenerating = false;
19
  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
20
+ if ( ( isset( $_GET['feed_created'] ) || isset( $_GET['feed_updated'] ) || isset( $_GET['feed_imported'] ) ) && isset( $_GET['feed_regenerate'] ) && 1 == $_GET['feed_regenerate'] ) {
21
  // filename must be wf_config+XXX format for js to work.
22
  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
23
+ $fileName = isset( $_GET['feed_name'] ) && ! empty( $_GET['feed_name'] ) ? sanitize_text_field( $_GET['feed_name'] ) : ''; // trigger feed regenerate...
24
  if ( ! empty( $fileName ) ) {
25
  $fileName = woo_feed_extract_feed_option_name( $fileName );
26
  $regeneratingName = $fileName;
31
  ?>
32
  <div class="wrap wapk-admin">
33
  <div class="wapk-section">
34
+ <h1 class="wp-heading-inline"><?php _e( 'Manage Feed', 'woo-feed' ); ?></h1>
35
+ <a href="<?php echo esc_url( admin_url( 'admin.php?page=webappick-new-feed' ) ); ?>" class="page-title-action"><?php _e( 'New Feed', 'woo-feed' ); ?></a>
36
+ <a href="#TB_inline?&width=300&height=152&inlineId=wpf_importer" name="Import Feed Config" class="thickbox page-title-action"><?php _e( 'Import Feed', 'woo-feed' ); ?></a>
37
  <div id="wpf_importer" style="display: none;">
38
  <form action="<?php echo esc_url( admin_url( 'admin-post.php?action=wpf_import' ) ); ?>" method="post" enctype="multipart/form-data">
39
  <?php wp_nonce_field( 'wpf_import' ); ?>
94
  <tr>
95
  <th>
96
  <b><?php esc_html_e( 'Auto Update Feed Interval', 'woo-feed' ); ?></b>
97
+ <span style="float: right;"><?php echo sprintf( 'Version %s', WOO_FEED_FREE_VERSION ); ?></span>
98
  </th>
99
  </tr>
100
  </thead>
103
  <td>
104
  <form action="" method="post" style="display: flex;align-items: center;">
105
  <?php wp_nonce_field( 'wf_schedule', 'wf_schedule_nonce' ); ?>
106
+ <label for="wf_schedule"><b><?php _e( 'Interval', 'woo-feed' ); ?></b></label>
107
  <select name="wf_schedule" id="wf_schedule" style="margin: 0 5px;">
108
  <?php
109
  $interval = get_option( 'wf_schedule' );
admin/partials/woo-feed-pro-vs-free.php CHANGED
@@ -398,7 +398,7 @@ $testimonials = array(
398
  <span class="wapk-price__table__currency"><?php echo esc_html( $price['currency'] ); ?></span>
399
  <?php } ?>
400
  <span class="wapk-price__table__amount"><?php
401
- if ( 0 === $integer && 0 === $decimal ) printf( '<span class="free">%s</span>', esc_html_x( 'Free', 'Free Package Price Display', 'woo-feed' ) );
402
  if ( $integer > 0 || $decimal > 0 ) printf( '<span class="integer-part">%d</span>', esc_html( $integer ) );
403
  if ( $decimal > 0 ) printf( '<span class="decimal-part">.%d</span>', esc_html( $decimal ) );
404
  if ( ! empty( $price['period'] ) ) printf( '<span class="period">/%s</span>', esc_html( $price['period'] ) );
@@ -490,7 +490,7 @@ $testimonials = array(
490
  <span class="dashicons dashicons-editor-help" aria-hidden="true"></span>
491
  </div>
492
  <div class="wapk-cta-content">
493
- <h2><?php esc_html_e( 'Still need help?', 'woo-feed' ); ?></h2>
494
  <p><?php _e( 'Have we not answered your question?<br>Don\'t worry, you can contact us for more information...', 'woo-feed') ?></p>
495
  </div>
496
  <div class="wapk-cta-action">
398
  <span class="wapk-price__table__currency"><?php echo esc_html( $price['currency'] ); ?></span>
399
  <?php } ?>
400
  <span class="wapk-price__table__amount"><?php
401
+ if ( 0 == $integer && 0 == $decimal ) printf( '<span class="free">%s</span>', esc_html_x( 'Free', 'Free Package Price Display', 'woo-feed' ) );
402
  if ( $integer > 0 || $decimal > 0 ) printf( '<span class="integer-part">%d</span>', esc_html( $integer ) );
403
  if ( $decimal > 0 ) printf( '<span class="decimal-part">.%d</span>', esc_html( $decimal ) );
404
  if ( ! empty( $price['period'] ) ) printf( '<span class="period">/%s</span>', esc_html( $price['period'] ) );
490
  <span class="dashicons dashicons-editor-help" aria-hidden="true"></span>
491
  </div>
492
  <div class="wapk-cta-content">
493
+ <h2><?php _e( 'Still need help?', 'woo-feed' ); ?></h2>
494
  <p><?php _e( 'Have we not answered your question?<br>Don\'t worry, you can contact us for more information...', 'woo-feed') ?></p>
495
  </div>
496
  <div class="wapk-cta-action">
includes/classes/class-woo-feed-products-v3.php CHANGED
@@ -1604,8 +1604,8 @@ class Woo_Feed_Products_v3
1604
  }
1605
 
1606
  $separator = apply_filters('woo_feed_product_type_separator', '>', $this->config, $product);
1607
-
1608
- return wp_strip_all_tags(wc_get_product_category_list($id, $separator, ''));
1609
  }
1610
 
1611
  /**
1604
  }
1605
 
1606
  $separator = apply_filters('woo_feed_product_type_separator', '>', $this->config, $product);
1607
+
1608
+ return woo_feed_get_terms_list_hierarchical_order($id, 'product_cat');
1609
  }
1610
 
1611
  /**
includes/helper.php CHANGED
@@ -2780,7 +2780,7 @@ if ( ! function_exists( 'woo_feed_clear_cache_data' ) ) {
2780
  }
2781
  add_action( 'wp_ajax_clear_cache_data', 'woo_feed_clear_cache_data' );
2782
 
2783
- if ( ! function_exists('woo_feed_get_terms_list_hierarchical_order') ) {
2784
  /**
2785
  * Get product terms list by hierarchical order.
2786
  *
@@ -2788,13 +2788,13 @@ if ( ! function_exists('woo_feed_get_terms_list_hierarchical_order') ) {
2788
  * @param string $taxonomy post taxonomy
2789
  * @since 4.2.1
2790
  */
2791
- function woo_feed_get_terms_list_hierarchical_order( $id, $taxonomy = 'product_cat' ) {
2792
  $terms = get_the_terms($id, $taxonomy);
2793
- if ( $terms ) {
2794
- foreach ( $terms as $key => $term ) {
2795
- if ( $term->parent != 0 ) {
2796
  $terms[] = $term;
2797
- unset($terms[ $key ]);
2798
  }
2799
  }
2800
 
2780
  }
2781
  add_action( 'wp_ajax_clear_cache_data', 'woo_feed_clear_cache_data' );
2782
 
2783
+ if( ! function_exists('woo_feed_get_terms_list_hierarchical_order') ) {
2784
  /**
2785
  * Get product terms list by hierarchical order.
2786
  *
2788
  * @param string $taxonomy post taxonomy
2789
  * @since 4.2.1
2790
  */
2791
+ function woo_feed_get_terms_list_hierarchical_order($id, $taxonomy = 'product_cat') {
2792
  $terms = get_the_terms($id, $taxonomy);
2793
+ if($terms) {
2794
+ foreach($terms as $key => $term) {
2795
+ if($term->parent != 0) {
2796
  $terms[] = $term;
2797
+ unset($terms[$key]);
2798
  }
2799
  }
2800
 
woo-feed.php CHANGED
@@ -10,8 +10,7 @@
10
  * Plugin Name: WooCommerce Product 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
- *
14
- * Version: 4.0.0
15
  * Author: WebAppick
16
  * Author URI: https://webappick.com/
17
  * License: GPL v2
@@ -39,7 +38,7 @@ if ( ! defined( 'WOO_FEED_FREE_VERSION' ) ) {
39
  * @var string
40
  * @since 3.1.6
41
  */
42
- define( 'WOO_FEED_FREE_VERSION', '4.0.0' );
43
  }
44
 
45
  if ( ! defined( 'WOO_FEED_FREE_FILE' ) ) {
@@ -203,7 +202,7 @@ if ( ! function_exists( 'woo_feed_get_product_information' ) ) {
203
  wp_send_json_error( esc_html__( 'Invalid Request.', 'woo-feed' ) );
204
  die();
205
  }
206
- $feed = sanitize_text_field( $_REQUEST['feed'] );
207
  $feed = woo_feed_extract_feed_option_name( $feed );
208
  $limit = isset( $_REQUEST['limit'] ) ? absint( $_REQUEST['limit'] ) : 200;
209
  $getConfig = maybe_unserialize( get_option( 'wf_config' . $feed ) );
@@ -306,7 +305,7 @@ if ( ! function_exists( 'woo_feed_make_batch_feed' ) ) {
306
  die();
307
  }
308
 
309
- $feedName = woo_feed_extract_feed_option_name( sanitize_text_field( $_REQUEST['feed'] ) );
310
  $feedInfo = get_option( 'wf_config' . $feedName, false );
311
 
312
  if ( ! $feedInfo ) {
@@ -317,7 +316,7 @@ if ( ! function_exists( 'woo_feed_make_batch_feed' ) ) {
317
  $feedInfo['productIds'] = isset( $_REQUEST['products'] ) ? array_map( 'absint', $_REQUEST['products'] ) : [];
318
  $offset = isset( $_REQUEST['loop'] ) ? absint( $_REQUEST['loop'] ) : 0;
319
  if ( woo_feed_is_debugging_enabled() ) {
320
- if ( 0 == $offset ) {
321
  woo_feed_log_feed_process( $feedInfo['filename'], 'Generating Feed... ' );
322
  }
323
  if ( woo_feed_is_debugging_enabled() ) {
@@ -330,7 +329,7 @@ if ( ! function_exists( 'woo_feed_make_batch_feed' ) ) {
330
  }
331
  }
332
 
333
- if ( 0 == $offset ) {
334
  woo_feed_unlink_tempFiles( $feedInfo, $feedName );
335
  }
336
  $feed_data = woo_feed_generate_batch_data( $feedInfo, $feedName );
@@ -374,7 +373,7 @@ if ( ! function_exists( 'woo_feed_save_feed_file' ) ) {
374
  die();
375
  }
376
 
377
- $feedName = woo_feed_extract_feed_option_name( sanitize_text_field( $_REQUEST['feed'] ) );
378
  $info = get_option( 'wf_config' . $feedName, false );
379
 
380
  if ( ! $info ) {
@@ -399,7 +398,7 @@ if ( ! function_exists( 'woo_feed_save_feed_file' ) ) {
399
  woo_feed_log_feed_process( $info['filename'], 'Unable to Get Footer Chunk' );
400
  }
401
 
402
- if ( 'csv' == $type ) {
403
  $csvHead[0] = $feedHeader;
404
  if ( ! empty( $csvHead ) && ! empty( $feedBody ) ) {
405
  $string = array_merge( $csvHead, $feedBody );
@@ -420,7 +419,7 @@ if ( ! function_exists( 'woo_feed_save_feed_file' ) ) {
420
  $file = $path . '/' . $feedName . '.' . $type;
421
  try {
422
  $save = new Woo_Feed_Savefile();
423
- if ( 'csv' == $type ) {
424
  $saveFile = $save->saveCSVFile( $path, $file, $string, $info );
425
  } else {
426
  $saveFile = $save->saveFile( $path, $file, $string );
@@ -530,7 +529,7 @@ if ( ! function_exists( 'woo_feed_generate_batch_data' ) ) {
530
  $feedBody = 'wf_store_feed_body_info_' . $feedSlug;
531
  $prevFeed = woo_feed_get_batch_feed_info( $feedService, $type, $feedBody );
532
  if ( $prevFeed ) {
533
- if ( 'csv' == $type ) {
534
  if ( ! empty( $prevFeed ) ) {
535
  $newFeed = array_merge( $prevFeed, $feed['body'] );
536
  woo_feed_save_batch_feed_info( $feedService, $type, $newFeed, $feedBody, $info );
@@ -568,11 +567,11 @@ if ( ! function_exists( 'woo_feed_generate_new_feed' ) ) {
568
  function woo_feed_generate_new_feed() {
569
  if ( isset( $_POST['provider'], $_POST['_wpnonce'], $_POST['filename'], $_POST['feedType'] ) ) {
570
  // Verify Nonce.
571
- if ( ! wp_verify_nonce( sanitize_text_field( $_POST['_wpnonce'] ), 'woo_feed_form_nonce' ) ) {
572
  wp_die( esc_html__( 'Failed security check', 'woo-feed' ), 403 );
573
  }
574
  // Check feed type (file ext).
575
- if ( ! woo_feed_check_valid_extension( sanitize_text_field( $_POST['feedType'] ) ) ) {
576
  wp_die( esc_html__( 'Invalid Feed Type!', 'woo-feed' ), 400 );
577
  }
578
 
@@ -602,22 +601,22 @@ if ( ! function_exists( 'woo_feed_manage_feed' ) ) {
602
 
603
  // @TODO use admin_post_ action for form handling.
604
  // Manage action for category mapping.
605
- if ( isset( $_GET['action'] ) && 'edit-feed' == $_GET['action'] ) {
606
  if ( ! defined( 'WOO_FEED_EDIT_CONFIG' ) ) define( 'WOO_FEED_EDIT_CONFIG', true );
607
  if ( count( $_POST ) && isset( $_POST['provider'], $_POST['feed_id'], $_POST['feed_option_name'], $_POST['filename'], $_POST['feedType'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
608
- $nonce = isset( $_POST['_wpnonce'] ) && ! empty( $_POST['_wpnonce'] ) ? sanitize_text_field( $_POST['_wpnonce'] ) : '';
609
  if ( ! wp_verify_nonce( $nonce, 'wf_edit_feed' ) ) {
610
  wp_die( esc_html__( 'Failed security check', 'woo-feed' ), 403 );
611
  }
612
  // Check feed type (file ext)
613
- if ( ! woo_feed_check_valid_extension( sanitize_text_field( $_POST['feedType'] ) ) ) {
614
  wp_die( esc_html__( 'Invalid Feed Type!', 'woo-feed' ), 400 );
615
  }
616
 
617
 
618
  // check if name is changed... save as new, rename feed isn't implemented ... it can be...
619
  // delete old feed save data as new feed.
620
- $feed_option_name = ( isset( $_POST['feed_option_name'] ) && ! empty( $_POST['feed_option_name'] ) ) ? sanitize_text_field( $_POST['feed_option_name'] ) : null;
621
  // if ( $_POST['filename'] !== $_POST['feed_option_name'] ) {
622
  // $feed_option_name = ( isset( $_POST['filename'] ) && ! empty( $_POST['filename'] ) ) ? sanitize_text_field( $_POST['filename'] ) : null;
623
  // // Delete old feed info & file
@@ -652,7 +651,7 @@ if ( ! function_exists( 'woo_feed_manage_feed' ) ) {
652
  }
653
  if ( isset( $_GET['feed'] ) && ! empty( $_GET['feed'] ) ) {
654
  global $wpdb, $feedRules, $feedName, $feedId, $provider;
655
- $feedName = sanitize_text_field( $_GET['feed'] );
656
  $feedInfo = maybe_unserialize( get_option( $feedName ) );
657
  if ( false !== $feedInfo ) {
658
  $query = $wpdb->prepare( "SELECT option_id FROM $wpdb->options WHERE option_name = %s LIMIT 1", $feedName );
@@ -674,10 +673,10 @@ if ( ! function_exists( 'woo_feed_manage_feed' ) ) {
674
  } else {
675
  // Update Interval.
676
  if ( isset( $_POST['wf_schedule'] ) ) {
677
- if ( isset( $_POST['wf_schedule_nonce'] ) && wp_verify_nonce( sanitize_text_field( $_POST['wf_schedule_nonce'] ), 'wf_schedule' ) ) {
678
  $interval = absint( $_POST['wf_schedule'] );
679
  if ( $interval >= woo_feed_get_minimum_interval_option() ) {
680
- if ( update_option( 'wf_schedule', sanitize_text_field( $_POST['wf_schedule'] ), false ) ) {
681
  wp_clear_scheduled_hook( 'woo_feed_update' );
682
  add_filter( 'cron_schedules', 'Woo_Feed_installer::cron_schedules' ); // phpcs:ignore
683
  //wp_schedule_event( time(), 'woo_feed_corn', 'woo_feed_update' );
@@ -715,7 +714,7 @@ if ( ! function_exists( 'feed_merchant_view' ) ) {
715
  die();
716
  }
717
  global $feedRules, $wooFeedDropDown, $merchant, $provider;
718
- $provider = isset( $_REQUEST['merchant'] ) && ! empty( $_REQUEST['merchant'] ) ? strtolower( sanitize_text_field( $_REQUEST['merchant'] ) ) : '';
719
  if ( empty( $provider ) ) {
720
  wp_send_json_error( esc_html__( 'Invalid Merchant', 'woo-feed' ) );
721
  wp_die();
@@ -796,10 +795,10 @@ if ( ! function_exists( 'woo_feed_update_feed_status' ) ) {
796
  wp_die();
797
  }
798
 
799
- $feedName = sanitize_text_field( $_POST['feedName'] );
800
  if ( ! empty( $feedName ) ) {
801
  $feedInfo = maybe_unserialize( get_option( $feedName ) );
802
- $feedInfo['status'] = isset( $_POST['status'] ) && 1 == $_POST['status'] ? 1 : 0;
803
 
804
  $feed_slug = str_replace('wf_feed_','wf_config',$feedName);
805
  if ( 1 === $feedInfo['status'] ) {
@@ -810,7 +809,7 @@ if ( ! function_exists( 'woo_feed_update_feed_status' ) ) {
810
  wp_clear_scheduled_hook( 'woo_feed_update_single_feed',[ $feed_slug ]);
811
  }
812
 
813
- update_option( sanitize_text_field( $_POST['feedName'] ), serialize( $feedInfo ), false ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize
814
  wp_send_json_success( array( 'status' => true ) );
815
  } else {
816
  wp_send_json_error( array( 'status' => false ) );
@@ -830,8 +829,8 @@ if ( ! function_exists( 'woo_feed_config_feed' ) ) {
830
 
831
  $data = [
832
  'per_batch' => isset( $_POST['batch_limit'] ) ? absint( $_POST['batch_limit'] ) : '',
833
- 'product_query_type' => isset( $_POST['product_query_type'] ) ? sanitize_text_field( $_POST['product_query_type'] ) : '',
834
- 'enable_error_debugging' => isset( $_POST['enable_error_debugging'] ) ? sanitize_text_field( $_POST['enable_error_debugging'] ) : '',
835
  'cache_ttl' => isset( $_POST['cache_ttl'] ) ? absint( $_POST['cache_ttl'] ) : '',
836
  ];
837
 
@@ -898,7 +897,7 @@ if ( ! class_exists('webappick_suggest_plugin') ) {
898
  static function add_plugin_favs( $plugin_slug, $res ) {
899
  if ( ! empty($res->plugins) && is_array($res->plugins) ) {
900
  foreach ( $res->plugins as $plugin ) {
901
- if ( is_object($plugin) && ! empty($plugin->slug) && $plugin->slug == $plugin_slug ) {
902
  return $res;
903
  }
904
  } // foreach
10
  * Plugin Name: WooCommerce Product 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.0.1
 
14
  * Author: WebAppick
15
  * Author URI: https://webappick.com/
16
  * License: GPL v2
38
  * @var string
39
  * @since 3.1.6
40
  */
41
+ define( 'WOO_FEED_FREE_VERSION', '4.0.1' );
42
  }
43
 
44
  if ( ! defined( 'WOO_FEED_FREE_FILE' ) ) {
202
  wp_send_json_error( esc_html__( 'Invalid Request.', 'woo-feed' ) );
203
  die();
204
  }
205
+ $feed = sanitize_text_field( wp_unslash( $_REQUEST['feed'] ) );
206
  $feed = woo_feed_extract_feed_option_name( $feed );
207
  $limit = isset( $_REQUEST['limit'] ) ? absint( $_REQUEST['limit'] ) : 200;
208
  $getConfig = maybe_unserialize( get_option( 'wf_config' . $feed ) );
305
  die();
306
  }
307
 
308
+ $feedName = woo_feed_extract_feed_option_name( sanitize_text_field( wp_unslash( $_REQUEST['feed'] ) ) );
309
  $feedInfo = get_option( 'wf_config' . $feedName, false );
310
 
311
  if ( ! $feedInfo ) {
316
  $feedInfo['productIds'] = isset( $_REQUEST['products'] ) ? array_map( 'absint', $_REQUEST['products'] ) : [];
317
  $offset = isset( $_REQUEST['loop'] ) ? absint( $_REQUEST['loop'] ) : 0;
318
  if ( woo_feed_is_debugging_enabled() ) {
319
+ if ( 0 === $offset ) {
320
  woo_feed_log_feed_process( $feedInfo['filename'], 'Generating Feed... ' );
321
  }
322
  if ( woo_feed_is_debugging_enabled() ) {
329
  }
330
  }
331
 
332
+ if ( 0 === $offset ) {
333
  woo_feed_unlink_tempFiles( $feedInfo, $feedName );
334
  }
335
  $feed_data = woo_feed_generate_batch_data( $feedInfo, $feedName );
373
  die();
374
  }
375
 
376
+ $feedName = woo_feed_extract_feed_option_name( sanitize_text_field( wp_unslash( $_REQUEST['feed'] ) ) );
377
  $info = get_option( 'wf_config' . $feedName, false );
378
 
379
  if ( ! $info ) {
398
  woo_feed_log_feed_process( $info['filename'], 'Unable to Get Footer Chunk' );
399
  }
400
 
401
+ if ( 'csv' === $type ) {
402
  $csvHead[0] = $feedHeader;
403
  if ( ! empty( $csvHead ) && ! empty( $feedBody ) ) {
404
  $string = array_merge( $csvHead, $feedBody );
419
  $file = $path . '/' . $feedName . '.' . $type;
420
  try {
421
  $save = new Woo_Feed_Savefile();
422
+ if ( 'csv' === $type ) {
423
  $saveFile = $save->saveCSVFile( $path, $file, $string, $info );
424
  } else {
425
  $saveFile = $save->saveFile( $path, $file, $string );
529
  $feedBody = 'wf_store_feed_body_info_' . $feedSlug;
530
  $prevFeed = woo_feed_get_batch_feed_info( $feedService, $type, $feedBody );
531
  if ( $prevFeed ) {
532
+ if ( 'csv' === $type ) {
533
  if ( ! empty( $prevFeed ) ) {
534
  $newFeed = array_merge( $prevFeed, $feed['body'] );
535
  woo_feed_save_batch_feed_info( $feedService, $type, $newFeed, $feedBody, $info );
567
  function woo_feed_generate_new_feed() {
568
  if ( isset( $_POST['provider'], $_POST['_wpnonce'], $_POST['filename'], $_POST['feedType'] ) ) {
569
  // Verify Nonce.
570
+ if ( ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['_wpnonce'] ) ), 'woo_feed_form_nonce' ) ) {
571
  wp_die( esc_html__( 'Failed security check', 'woo-feed' ), 403 );
572
  }
573
  // Check feed type (file ext).
574
+ if ( ! woo_feed_check_valid_extension( sanitize_text_field( wp_unslash( $_POST['feedType'] ) ) ) ) {
575
  wp_die( esc_html__( 'Invalid Feed Type!', 'woo-feed' ), 400 );
576
  }
577
 
601
 
602
  // @TODO use admin_post_ action for form handling.
603
  // Manage action for category mapping.
604
+ if ( isset( $_GET['action'] ) && 'edit-feed' === $_GET['action'] ) {
605
  if ( ! defined( 'WOO_FEED_EDIT_CONFIG' ) ) define( 'WOO_FEED_EDIT_CONFIG', true );
606
  if ( count( $_POST ) && isset( $_POST['provider'], $_POST['feed_id'], $_POST['feed_option_name'], $_POST['filename'], $_POST['feedType'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
607
+ $nonce = isset( $_POST['_wpnonce'] ) && ! empty( $_POST['_wpnonce'] ) ? sanitize_text_field( wp_unslash( $_POST['_wpnonce'] ) ) : '';
608
  if ( ! wp_verify_nonce( $nonce, 'wf_edit_feed' ) ) {
609
  wp_die( esc_html__( 'Failed security check', 'woo-feed' ), 403 );
610
  }
611
  // Check feed type (file ext)
612
+ if ( ! woo_feed_check_valid_extension( sanitize_text_field( wp_unslash( $_POST['feedType'] ) ) ) ) {
613
  wp_die( esc_html__( 'Invalid Feed Type!', 'woo-feed' ), 400 );
614
  }
615
 
616
 
617
  // check if name is changed... save as new, rename feed isn't implemented ... it can be...
618
  // delete old feed save data as new feed.
619
+ $feed_option_name = ( isset( $_POST['feed_option_name'] ) && ! empty( $_POST['feed_option_name'] ) ) ? sanitize_text_field( wp_unslash( $_POST['feed_option_name'] ) ) : null;
620
  // if ( $_POST['filename'] !== $_POST['feed_option_name'] ) {
621
  // $feed_option_name = ( isset( $_POST['filename'] ) && ! empty( $_POST['filename'] ) ) ? sanitize_text_field( $_POST['filename'] ) : null;
622
  // // Delete old feed info & file
651
  }
652
  if ( isset( $_GET['feed'] ) && ! empty( $_GET['feed'] ) ) {
653
  global $wpdb, $feedRules, $feedName, $feedId, $provider;
654
+ $feedName = sanitize_text_field( wp_unslash( $_GET['feed'] ) );
655
  $feedInfo = maybe_unserialize( get_option( $feedName ) );
656
  if ( false !== $feedInfo ) {
657
  $query = $wpdb->prepare( "SELECT option_id FROM $wpdb->options WHERE option_name = %s LIMIT 1", $feedName );
673
  } else {
674
  // Update Interval.
675
  if ( isset( $_POST['wf_schedule'] ) ) {
676
+ if ( isset( $_POST['wf_schedule_nonce'] ) && wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['wf_schedule_nonce'] ) ), 'wf_schedule' ) ) {
677
  $interval = absint( $_POST['wf_schedule'] );
678
  if ( $interval >= woo_feed_get_minimum_interval_option() ) {
679
+ if ( update_option( 'wf_schedule', sanitize_text_field( wp_unslash( $_POST['wf_schedule'] ) ), false ) ) {
680
  wp_clear_scheduled_hook( 'woo_feed_update' );
681
  add_filter( 'cron_schedules', 'Woo_Feed_installer::cron_schedules' ); // phpcs:ignore
682
  //wp_schedule_event( time(), 'woo_feed_corn', 'woo_feed_update' );
714
  die();
715
  }
716
  global $feedRules, $wooFeedDropDown, $merchant, $provider;
717
+ $provider = isset( $_REQUEST['merchant'] ) && ! empty( $_REQUEST['merchant'] ) ? strtolower( sanitize_text_field( wp_unslash( $_REQUEST['merchant'] ) ) ) : '';
718
  if ( empty( $provider ) ) {
719
  wp_send_json_error( esc_html__( 'Invalid Merchant', 'woo-feed' ) );
720
  wp_die();
795
  wp_die();
796
  }
797
 
798
+ $feedName = isset( $_POST['feedName'] ) ? sanitize_text_field( wp_unslash( $_POST['feedName'] ) ) : '';
799
  if ( ! empty( $feedName ) ) {
800
  $feedInfo = maybe_unserialize( get_option( $feedName ) );
801
+ $feedInfo['status'] = isset( $_POST['status'] ) && 1 === $_POST['status'] ? 1 : 0;
802
 
803
  $feed_slug = str_replace('wf_feed_','wf_config',$feedName);
804
  if ( 1 === $feedInfo['status'] ) {
809
  wp_clear_scheduled_hook( 'woo_feed_update_single_feed',[ $feed_slug ]);
810
  }
811
 
812
+ update_option( $feedName, serialize( $feedInfo ), false ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize
813
  wp_send_json_success( array( 'status' => true ) );
814
  } else {
815
  wp_send_json_error( array( 'status' => false ) );
829
 
830
  $data = [
831
  'per_batch' => isset( $_POST['batch_limit'] ) ? absint( $_POST['batch_limit'] ) : '',
832
+ 'product_query_type' => isset( $_POST['product_query_type'] ) ? sanitize_text_field( wp_unslash( $_POST['product_query_type'] ) ) : '',
833
+ 'enable_error_debugging' => isset( $_POST['enable_error_debugging'] ) ? sanitize_text_field( wp_unslash( $_POST['enable_error_debugging'] ) ) : '',
834
  'cache_ttl' => isset( $_POST['cache_ttl'] ) ? absint( $_POST['cache_ttl'] ) : '',
835
  ];
836
 
897
  static function add_plugin_favs( $plugin_slug, $res ) {
898
  if ( ! empty($res->plugins) && is_array($res->plugins) ) {
899
  foreach ( $res->plugins as $plugin ) {
900
+ if ( is_object($plugin) && ! empty($plugin->slug) && $plugin->slug === $plugin_slug ) {
901
  return $res;
902
  }
903
  } // foreach