Version Description
(2020-01-02) = * Menu Icon Changed. * Update Feed Configuration without generating. * Fix Admin Notice UI.
Download this release
Release Info
Developer | wahid0003 |
Plugin | CTX Feed – WooCommerce Product Feed Manager Plugin |
Version | 3.2.7 |
Comparing to | |
See all releases |
Code changes from version 3.2.6 to 3.2.7
- README.txt +6 -1
- admin/class-woo-feed-admin.php +5 -4
- admin/class-woo-feed-manage-list.php +38 -28
- admin/css/woo-feed-admin.css +170 -78
- admin/images/woo-feed-icon.svg +16 -0
- admin/images/woo-feed-pro-horizontal-logo.svg +33 -0
- admin/js/woo-feed-admin.js +15 -4
- admin/partials/woo-feed-admin-display.php +1 -2
- admin/partials/woo-feed-edit-template.php +3 -2
- admin/partials/woo-feed-manage-list.php +432 -328
- admin/partials/woo-feed-pro-vs-free.php +3 -3
- includes/classes/class-woo-feed-admin-message.php +47 -29
- includes/classes/class-woo-feed-list-table.php +8 -8
- includes/classes/class-woo-feed-tracker.php +6 -1
- includes/helper.php +117 -1
- libs/WebAppick/AppServices/Client.php +1 -1
- libs/WebAppick/AppServices/Insights.php +2 -1
- woo-feed.php +47 -37
README.txt
CHANGED
@@ -5,7 +5,7 @@ Tags:woocommerce,google product feed,facebook product feed,woocommerce product f
|
|
5 |
Requires at least: 3.6
|
6 |
Tested Up To: 5.4-alpha-46743
|
7 |
Requires PHP: 5.6
|
8 |
-
Stable tag: 3.2.
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
@@ -305,6 +305,11 @@ Using pro version:
|
|
305 |
|
306 |
== Changelog ==
|
307 |
|
|
|
|
|
|
|
|
|
|
|
308 |
= 3.2.6 (2019-12-25) =
|
309 |
* New template structure implemented.
|
310 |
* Merchant info metabox in feed template edit page.
|
5 |
Requires at least: 3.6
|
6 |
Tested Up To: 5.4-alpha-46743
|
7 |
Requires PHP: 5.6
|
8 |
+
Stable tag: 3.2.7
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
305 |
|
306 |
== Changelog ==
|
307 |
|
308 |
+
= 3.2.7 (2020-01-02) =
|
309 |
+
* Menu Icon Changed.
|
310 |
+
* Update Feed Configuration without generating.
|
311 |
+
* Fix Admin Notice UI.
|
312 |
+
|
313 |
= 3.2.6 (2019-12-25) =
|
314 |
* New template structure implemented.
|
315 |
* Merchant info metabox in feed template edit page.
|
admin/class-woo-feed-admin.php
CHANGED
@@ -127,9 +127,10 @@ class Woo_Feed_Admin
|
|
127 |
wp_register_script($this->woo_feed, plugin_dir_url(__FILE__) . 'js/woo-feed-admin.js', $feedScriptDependency, $this->version, false);
|
128 |
|
129 |
wp_localize_script($this->woo_feed, 'wpf_ajax_obj', array(
|
130 |
-
'wpf_ajax_url'
|
131 |
-
'nonce'
|
132 |
-
'na'
|
|
|
133 |
));
|
134 |
|
135 |
wp_enqueue_script($this->woo_feed);
|
@@ -173,7 +174,7 @@ class Woo_Feed_Admin
|
|
173 |
add_submenu_page( 'webappick-manage-feeds', __('Make Feed', 'woo-feed'), __('Make Feed', 'woo-feed'), 'manage_woocommerce', 'webappick-new-feed', 'woo_feed_generate_feed' );
|
174 |
add_submenu_page( 'webappick-manage-feeds', __('Settings', 'woo-feed'), __('Settings', 'woo-feed'), 'manage_woocommerce', 'webappick-feed-settings', 'woo_feed_config_feed' );
|
175 |
add_submenu_page( 'webappick-manage-feeds', __('Documentation', 'woo-feed'), '<span class="woo-feed-docs">' . __('Docs', 'woo-feed') . '</span>', 'manage_woocommerce', 'webappick-feed-docs', array( WooFeedDocs::getInstance(), 'woo_feed_docs' ) );
|
176 |
-
add_submenu_page( 'webappick-manage-feeds', __('Premium', 'woo-feed'), __('Premium', 'woo-feed'), 'manage_woocommerce', 'webappick-feed-pro-vs-free', 'woo_feed_pro_vs_free' );
|
177 |
}
|
178 |
}
|
179 |
|
127 |
wp_register_script($this->woo_feed, plugin_dir_url(__FILE__) . 'js/woo-feed-admin.js', $feedScriptDependency, $this->version, false);
|
128 |
|
129 |
wp_localize_script($this->woo_feed, 'wpf_ajax_obj', array(
|
130 |
+
'wpf_ajax_url' => admin_url('admin-ajax.php'),
|
131 |
+
'nonce' => wp_create_nonce('wpf_feed_nonce'),
|
132 |
+
'na' => esc_html__( 'N/A', 'woo-feed' ),
|
133 |
+
'regenerate' => esc_html__( 'Generating...', 'woo-feed' ),
|
134 |
));
|
135 |
|
136 |
wp_enqueue_script($this->woo_feed);
|
174 |
add_submenu_page( 'webappick-manage-feeds', __('Make Feed', 'woo-feed'), __('Make Feed', 'woo-feed'), 'manage_woocommerce', 'webappick-new-feed', 'woo_feed_generate_feed' );
|
175 |
add_submenu_page( 'webappick-manage-feeds', __('Settings', 'woo-feed'), __('Settings', 'woo-feed'), 'manage_woocommerce', 'webappick-feed-settings', 'woo_feed_config_feed' );
|
176 |
add_submenu_page( 'webappick-manage-feeds', __('Documentation', 'woo-feed'), '<span class="woo-feed-docs">' . __('Docs', 'woo-feed') . '</span>', 'manage_woocommerce', 'webappick-feed-docs', array( WooFeedDocs::getInstance(), 'woo_feed_docs' ) );
|
177 |
+
add_submenu_page( 'webappick-manage-feeds', __('Premium', 'woo-feed'), '<span class="woo-feed-premium">' . __('Premium', 'woo-feed') . '</span>', 'manage_woocommerce', 'webappick-feed-pro-vs-free', 'woo_feed_pro_vs_free' );
|
178 |
}
|
179 |
}
|
180 |
|
admin/class-woo-feed-manage-list.php
CHANGED
@@ -69,10 +69,13 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table
|
|
69 |
$getItem = $item['option_name'];
|
70 |
$statusId = $item['option_id'];
|
71 |
$itemInfo = unserialize(get_option($getItem));
|
|
|
|
|
|
|
|
|
72 |
switch ($column_name) {
|
73 |
case 'option_name':
|
74 |
-
|
75 |
-
return str_replace("wf_feed_", "", $name);
|
76 |
case 'status':
|
77 |
if(!isset($itemInfo['status']) || $itemInfo['status'] == 1){
|
78 |
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.'"/>
|
@@ -101,11 +104,11 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table
|
|
101 |
case 'view':
|
102 |
$view = $itemInfo['url'];
|
103 |
/** @noinspection HtmlUnknownTarget */
|
104 |
-
|
105 |
-
'<a href="%1$s"
|
106 |
-
<
|
107 |
-
<a href="%1$s"
|
108 |
-
$view, __( 'View' ), $getItem, __( 'Regenerate' ), __( 'Download' ) );
|
109 |
default:
|
110 |
return false;
|
111 |
}
|
@@ -333,20 +336,22 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table
|
|
333 |
public function process_bulk_action()
|
334 |
{
|
335 |
//Detect when a bulk action is being triggered...
|
336 |
-
if ('delete-feed' === $this->current_action()) {
|
337 |
// In our file that handles the request, verify the nonce.
|
338 |
$nonce = esc_attr($_REQUEST['_wpnonce']);
|
339 |
if (!wp_verify_nonce($nonce, 'wf_delete_feed')) {
|
340 |
-
update_option('wpf_message', 'Failed To Delete Feed. You do not have sufficient permission to delete.');
|
341 |
-
wp_redirect(admin_url("admin.php?page=
|
|
|
342 |
} else {
|
343 |
if (self::delete_feed(absint($_GET['feed']))) {
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
} else {
|
348 |
-
update_option('wpf_message', 'Failed To Delete Feed');
|
349 |
-
wp_redirect(admin_url("admin.php?page=
|
|
|
350 |
}
|
351 |
|
352 |
}
|
@@ -354,9 +359,9 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table
|
|
354 |
//Detect when a bulk action is being triggered...
|
355 |
if ('edit-feed' === $this->current_action()) {
|
356 |
// In our file that handles the request, verify the nonce.
|
357 |
-
$nonce = esc_attr($_REQUEST['_wpnonce']);
|
358 |
-
if (!wp_verify_nonce($nonce, 'wf_edit_feed')) {
|
359 |
-
|
360 |
}
|
361 |
}
|
362 |
|
@@ -368,17 +373,24 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table
|
|
368 |
if ('bulk-delete' === $this->current_action()) {
|
369 |
$nonce = esc_attr($_REQUEST['_wpnonce']);
|
370 |
if (!wp_verify_nonce($nonce, "bulk-" . $this->_args['plural'])) {
|
371 |
-
|
372 |
} else {
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
|
|
|
|
378 |
|
379 |
}
|
380 |
-
|
381 |
-
|
|
|
|
|
|
|
|
|
|
|
382 |
}
|
383 |
}
|
384 |
}
|
@@ -532,6 +544,4 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table
|
|
532 |
*/
|
533 |
$this->items = $data;
|
534 |
}
|
535 |
-
|
536 |
-
|
537 |
}
|
69 |
$getItem = $item['option_name'];
|
70 |
$statusId = $item['option_id'];
|
71 |
$itemInfo = unserialize(get_option($getItem));
|
72 |
+
global $regenerating, $regeneratingName;
|
73 |
+
$optionName = str_replace("wf_feed_", "", $getItem );
|
74 |
+
$spinIcon = ( $regenerating === true && $optionName === $regeneratingName ) ? ' wpf_spin_reverse' : '';
|
75 |
+
$disableBtn = $regenerating === true ? ' disabled' : '';
|
76 |
switch ($column_name) {
|
77 |
case 'option_name':
|
78 |
+
return $optionName;
|
|
|
79 |
case 'status':
|
80 |
if(!isset($itemInfo['status']) || $itemInfo['status'] == 1){
|
81 |
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.'"/>
|
104 |
case 'view':
|
105 |
$view = $itemInfo['url'];
|
106 |
/** @noinspection HtmlUnknownTarget */
|
107 |
+
return sprintf(
|
108 |
+
'<a href="%1$s" title="%2$s" aria-label="%2$s" target="_blank"><span class="dashicons dashicons-external" aria-hidden="true"></span></a>
|
109 |
+
<a id="%3$s" class="wpf_regenerate%6$s" href="#" title="%4$s" aria-label="%4$s"><span class="dashicons dashicons-update-alt%7$s" aria-hidden="true"></span></a>
|
110 |
+
<a href="%1$s" title="%5$s" aria-label="%5$s" download><span class="dashicons dashicons-download" aria-hidden="true"></span></a>',
|
111 |
+
$view, __( 'View' ), $getItem, __( 'Regenerate' ), __( 'Download' ), $disableBtn, $spinIcon );
|
112 |
default:
|
113 |
return false;
|
114 |
}
|
336 |
public function process_bulk_action()
|
337 |
{
|
338 |
//Detect when a bulk action is being triggered...
|
339 |
+
if ( 'delete-feed' === $this->current_action() ) {
|
340 |
// In our file that handles the request, verify the nonce.
|
341 |
$nonce = esc_attr($_REQUEST['_wpnonce']);
|
342 |
if (!wp_verify_nonce($nonce, 'wf_delete_feed')) {
|
343 |
+
update_option('wpf_message', esc_html__( 'Failed To Delete Feed. You do not have sufficient permission to delete.', 'woo-feed' ), false );
|
344 |
+
wp_redirect(admin_url("admin.php?page=webappick-manage-feeds&wpf_message=error"));
|
345 |
+
wp_die();
|
346 |
} else {
|
347 |
if (self::delete_feed(absint($_GET['feed']))) {
|
348 |
+
update_option( 'wpf_message', esc_html__( 'Feed Deleted Successfully', 'woo-feed' ), false );
|
349 |
+
wp_redirect(admin_url("admin.php?page=webappick-manage-feeds&wpf_message=success"));
|
350 |
+
wp_die();
|
351 |
} else {
|
352 |
+
update_option( 'wpf_message', esc_html__( 'Failed To Delete Feed', 'woo-feed' ), false );
|
353 |
+
wp_redirect(admin_url("admin.php?page=webappick-manage-feeds&wpf_message=error"));
|
354 |
+
wp_die();
|
355 |
}
|
356 |
|
357 |
}
|
359 |
//Detect when a bulk action is being triggered...
|
360 |
if ('edit-feed' === $this->current_action()) {
|
361 |
// In our file that handles the request, verify the nonce.
|
362 |
+
$nonce = esc_attr( $_REQUEST['_wpnonce'] );
|
363 |
+
if ( ! wp_verify_nonce( $nonce, 'wf_edit_feed' ) ) {
|
364 |
+
wp_die( esc_html__( 'You do not have sufficient permission to delete!', 'woo-feed' ) );
|
365 |
}
|
366 |
}
|
367 |
|
373 |
if ('bulk-delete' === $this->current_action()) {
|
374 |
$nonce = esc_attr($_REQUEST['_wpnonce']);
|
375 |
if (!wp_verify_nonce($nonce, "bulk-" . $this->_args['plural'])) {
|
376 |
+
wp_die( esc_html__( 'You do not have sufficient permission to delete!', 'woo-feed' ) );
|
377 |
} else {
|
378 |
+
$delete_ids = array_map( 'absint', $_POST['feed'] );
|
379 |
+
$delete_ids = array_filter( $delete_ids );
|
380 |
+
// loop over the array of record IDs and delete them
|
381 |
+
if ( ! empty( $delete_ids ) ) {
|
382 |
+
$count = count( $delete_ids );
|
383 |
+
foreach ( $delete_ids as $id ) {
|
384 |
+
self::delete_feed( $id );
|
385 |
|
386 |
}
|
387 |
+
$message = sprintf(
|
388 |
+
esc_html( _n( '%d Feed Successfully Deleted.', '%d Feeds Successfully Deleted.', $count, 'woo-feed' ) ),
|
389 |
+
$count
|
390 |
+
);
|
391 |
+
update_option( 'wpf_message', $message );
|
392 |
+
wp_redirect(admin_url("admin.php?page=webappick-manage-feeds&wpf_message=success"));
|
393 |
+
wp_die();
|
394 |
}
|
395 |
}
|
396 |
}
|
544 |
*/
|
545 |
$this->items = $data;
|
546 |
}
|
|
|
|
|
547 |
}
|
admin/css/woo-feed-admin.css
CHANGED
@@ -2,10 +2,18 @@
|
|
2 |
* All of the CSS for your admin-specific functionality should be
|
3 |
* included in this file.
|
4 |
*/
|
5 |
-
.
|
6 |
-webkit-animation: spin 1000ms infinite linear;
|
7 |
animation: spin 1000ms infinite linear;
|
8 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
@-webkit-keyframes spin {
|
10 |
0% {
|
11 |
-webkit-transform: rotate(0deg);
|
@@ -285,25 +293,23 @@ p {
|
|
285 |
color: white;
|
286 |
}
|
287 |
|
|
|
|
|
|
|
|
|
|
|
288 |
.wf_tabs .wf-tab-content {
|
289 |
z-index: 2;
|
290 |
display: none;
|
291 |
overflow: hidden;
|
292 |
width: 100%;
|
293 |
font-size: 0.9rem;
|
294 |
-
/*line-height: 5px;*/
|
295 |
-
/*padding: 5px;*/
|
296 |
position: absolute;
|
297 |
left: 0;
|
298 |
background: #fff;
|
299 |
border: 2px solid #CCC;
|
300 |
}
|
301 |
|
302 |
-
.wf_tabs [id^="tab"]:checked + label {
|
303 |
-
background: #2CC185;
|
304 |
-
color: white;
|
305 |
-
}
|
306 |
-
|
307 |
.wf_tabs [id^="tab"]:checked ~ [id^="wf-tab-content"] {
|
308 |
display: block;
|
309 |
}
|
@@ -367,7 +373,7 @@ input[class=woo_feed_status_input]:checked + label:before{
|
|
367 |
.widefat td.column-url, .widefat th.column-url,
|
368 |
.column-url { color: #008779; font-weight: bold; }
|
369 |
|
370 |
-
|
371 |
.feed-progress-container {
|
372 |
width:100%;
|
373 |
color: white;
|
@@ -625,6 +631,33 @@ input[class=woo_feed_status_input]:checked + label:before{
|
|
625 |
ul.tracker_collection_list { list-style: initial; padding: initial; margin: -10px 0 0 30px; font-size: 11px !important; }
|
626 |
ul.tracker_collection_list li { margin: 0; }
|
627 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
628 |
/** Admin Page Wrapper **/
|
629 |
.wapk-admin, .wapk-admin * {
|
630 |
-webkit-box-sizing: border-box;
|
@@ -676,7 +709,7 @@ ul.tracker_collection_list li { margin: 0; }
|
|
676 |
line-height: 1.3;
|
677 |
}
|
678 |
.wapk-admin .wapk-section,
|
679 |
-
.wapk-admin
|
680 |
/* Restore .warp margin */
|
681 |
margin: 15px 20px 0 20px;
|
682 |
position: relative;
|
@@ -702,7 +735,7 @@ ul.tracker_collection_list li { margin: 0; }
|
|
702 |
vertical-align: middle;
|
703 |
}
|
704 |
/** Extend WP Core UI PostBox For Docs **/
|
705 |
-
|
706 |
@media only screen and (max-width: 850px) {
|
707 |
.wapk-feed-docs .postbox { display: block; width: auto; float: none; margin-right: auto; }
|
708 |
}
|
@@ -713,7 +746,9 @@ ul.tracker_collection_list li { margin: 0; }
|
|
713 |
.wapk-feed-docs .postbox ul { margin-bottom: 0; }
|
714 |
.wapk-feed-docs .postbox .toggle-indicator:before { content: "\F142"; display: inline-block; font: 400 20px/1 dashicons; speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none!important; }
|
715 |
.wapk-feed-docs .postbox.closed .toggle-indicator:before { content: "\F140"; }
|
716 |
-
|
|
|
|
|
717 |
#poststuff #feed_merchant_info .inside { margin: 0; padding: 0; }
|
718 |
#feed_merchant_info ul.data { margin-left: 24px; margin-top: 5px; }
|
719 |
#feed_merchant_info ul.data li { margin-bottom: 5px; }
|
@@ -726,13 +761,14 @@ ul.tracker_collection_list li { margin: 0; }
|
|
726 |
.wp-submenu li.current span.woo-feed-docs { color: #ce7304; }
|
727 |
.wapk-admin .wapk-feed-docs .postbox .hndle { cursor: default; }
|
728 |
|
|
|
729 |
/** Admin Call-To-Action **/
|
730 |
.wapk-cta { position: relative; display: flex; width: 100%; padding: 100px 15px; background: linear-gradient(45deg, #6CD5FF 33%, #c2efef 100%); justify-content: center; align-items: center; }
|
731 |
.wapk-cta-icon .dashicons { font-size: 100px; width: 100px; height: auto; margin: 0 10px -8px 0; color: #02658c; }
|
732 |
.wapk-cta-content {width: 50%;}
|
733 |
.wapk-cta-content h2 { font-size: 2em; margin: 0.5em 0; }
|
734 |
.wapk-cta-action {}
|
735 |
-
.wapk-cta-action a.button { font-size: 24px; height: auto !important; padding: 10px 20px; }
|
736 |
@media (max-width: 600px) {
|
737 |
.wapk-cta { display: block; text-align: center; padding: 4em 0; }
|
738 |
.wapk-cta-content { width: 100%; margin: 2em 0; }
|
@@ -741,160 +777,215 @@ ul.tracker_collection_list li { margin: 0; }
|
|
741 |
/** Override .wp-core-ui .button styles with prefix .wapk-admin **/
|
742 |
/* @TODO refactor with scss */
|
743 |
/* Button Skin */
|
744 |
-
.wapk-
|
745 |
-
.wapk-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
746 |
color: #00D4D4;
|
747 |
border-color: #00D4D4;
|
|
|
748 |
}
|
749 |
-
.wapk-
|
750 |
-
.wapk-
|
751 |
width: 15px;
|
752 |
margin-left: 5px;
|
753 |
fill: #00D4D4;
|
754 |
}
|
755 |
-
.wapk-
|
756 |
-
.wapk-
|
757 |
color: #00D4D4;
|
758 |
}
|
759 |
-
.wapk-
|
760 |
-
.wapk-
|
761 |
-
.wapk-
|
762 |
-
.wapk-
|
763 |
-
.wapk-
|
764 |
-
.wapk-
|
765 |
border-color: #00bbbb;
|
766 |
color: #00bbbb;
|
767 |
}
|
768 |
-
.wapk-
|
769 |
-
.wapk-
|
770 |
-
.wapk-
|
771 |
-
.wapk-
|
772 |
-
.wapk-
|
773 |
-
.wapk-
|
774 |
fill: #00bbbb;
|
775 |
}
|
776 |
-
.wapk-
|
777 |
-
.wapk-
|
778 |
-
.wapk-
|
779 |
-
.wapk-
|
780 |
-
.wapk-
|
781 |
-
.wapk-
|
782 |
color: #00bbbb;
|
783 |
}
|
784 |
-
.wapk-
|
785 |
-
.wapk-
|
786 |
-
.wapk-
|
787 |
border-color: #00D4D4;
|
788 |
color: #00bbbb;
|
789 |
box-shadow: 0 0 0 1px #00D4D4;
|
790 |
}
|
791 |
-
.wapk-
|
792 |
-
.wapk-
|
793 |
-
.wapk-
|
794 |
fill: #00bbbb;
|
795 |
}
|
796 |
-
.wapk-
|
797 |
-
.wapk-
|
798 |
-
.wapk-
|
799 |
color: #00bbbb;
|
800 |
}
|
801 |
-
.wapk-
|
802 |
background: #00bbbb;
|
803 |
border-color: #00bbbb;
|
804 |
}
|
805 |
-
.wapk-
|
806 |
-
.wapk-
|
807 |
-
.wapk-
|
808 |
border-color: #00bbbb;
|
809 |
color: #00bbbb;
|
810 |
box-shadow: inset 0 2px 5px -3px #00bbbb;
|
811 |
}
|
812 |
-
.wapk-
|
813 |
-
.wapk-
|
814 |
-
.wapk-
|
815 |
fill: #00bbbb;
|
816 |
}
|
817 |
-
.wapk-
|
818 |
-
.wapk-
|
819 |
-
.wapk-
|
820 |
color: #00bbbb;
|
821 |
}
|
822 |
-
.wapk-
|
823 |
background: #00D4D4;
|
824 |
border-color: #00D4D4;
|
825 |
color: #fff;
|
|
|
826 |
box-shadow: 0 1px 0 #00bbbb;
|
827 |
text-shadow: 0 -1px 1px #00bbbb, 1px 0 1px #00bbbb, 0 1px 1px #00bbbb, -1px 0 1px #00bbbb;
|
828 |
}
|
829 |
-
.wapk-
|
830 |
fill: #fff;
|
831 |
}
|
832 |
-
.wapk-
|
|
|
833 |
background: #00e3e3;
|
834 |
border-color: #00c5c5;
|
835 |
color: #fff;
|
836 |
}
|
837 |
-
.wapk-
|
|
|
838 |
fill: #fff;
|
839 |
}
|
840 |
-
.wapk-
|
841 |
box-shadow: 0 0 0 1px #fff, 0 0 0 3px #00D4D4;
|
842 |
}
|
843 |
-
.wapk-
|
844 |
background: #00bbbb;
|
845 |
border-color: #00bbbb;
|
846 |
color: #fff;
|
847 |
}
|
848 |
-
.wapk-
|
849 |
fill: #fff;
|
850 |
}
|
851 |
-
.wapk-
|
|
|
|
|
852 |
background: #00D4D4;
|
853 |
color: #fff;
|
854 |
border-color: #008888;
|
855 |
box-shadow: inset 0 2px 5px -3px black;
|
856 |
}
|
857 |
-
.wapk-
|
|
|
|
|
858 |
fill: #fff;
|
859 |
}
|
860 |
-
.wapk-
|
|
|
|
|
|
|
861 |
color: #c7d1d1 !important;
|
862 |
background: #22ffff !important;
|
863 |
border-color: #22ffff !important;
|
864 |
text-shadow: none !important;
|
865 |
}
|
866 |
-
.wapk-
|
|
|
|
|
|
|
867 |
fill: #c7d1d1 !important;
|
868 |
}
|
869 |
-
.wapk-
|
870 |
box-shadow: 0 2px 0 #00bbbb;
|
871 |
}
|
872 |
-
.wapk-
|
873 |
box-shadow: 0 2px 0 #00bbbb, 0 1px 0 #00c5c5, 0 0 2px 1px #00eeee;
|
874 |
}
|
875 |
-
.wapk-
|
|
|
|
|
|
|
876 |
box-shadow: inset 0 3px 0 #00a1a1;
|
877 |
}
|
878 |
-
.wapk-
|
879 |
border-color: #00D4D4;
|
880 |
}
|
881 |
|
882 |
/* Button Sizes */
|
883 |
-
.wapk-
|
884 |
-
.wapk-
|
885 |
height: 30px;
|
886 |
line-height: 28px;
|
887 |
padding: 0 12px 2px;
|
888 |
}
|
889 |
-
.wapk-
|
890 |
-
.wapk-
|
891 |
font-size: 18px;
|
892 |
height: 50px;
|
893 |
line-height: 48px;
|
894 |
padding: 0 36px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
895 |
}
|
896 |
@media screen and (max-width: 782px) {
|
897 |
-
.
|
|
|
|
|
|
|
898 |
padding: 6px 14px;
|
899 |
line-height: normal;
|
900 |
font-size: 14px;
|
@@ -918,6 +1009,9 @@ ul.tracker_collection_list li { margin: 0; }
|
|
918 |
/**
|
919 |
* Premium Page Design
|
920 |
*/
|
|
|
|
|
|
|
921 |
.woo_feed_free_manage_attribute {
|
922 |
margin: 0 auto;
|
923 |
width: 100%;
|
@@ -1297,7 +1391,6 @@ span.wapk-price__table__feature span.dashicons {
|
|
1297 |
font-size: 14px;
|
1298 |
text-transform: uppercase;
|
1299 |
letter-spacing: 3px;
|
1300 |
-
background-color: #23d378;
|
1301 |
border-radius: 100px 100px 100px 100px;
|
1302 |
padding: 16px 42px;
|
1303 |
transition: all 250ms;
|
@@ -1305,7 +1398,6 @@ span.wapk-price__table__feature span.dashicons {
|
|
1305 |
.wapk-price__table__footer a:hover,
|
1306 |
.wapk-price__table__footer a:focus,
|
1307 |
.wapk-price__table__footer a:active {
|
1308 |
-
background-color: #ef2e5e;
|
1309 |
transform: scale(1.02) !important;
|
1310 |
}
|
1311 |
.wapk-price__table__ribbon {
|
2 |
* All of the CSS for your admin-specific functionality should be
|
3 |
* included in this file.
|
4 |
*/
|
5 |
+
.wpf_spin, .wpf_spin_reverse {
|
6 |
-webkit-animation: spin 1000ms infinite linear;
|
7 |
animation: spin 1000ms infinite linear;
|
8 |
}
|
9 |
+
.wpf_spin_reverse {
|
10 |
+
animation-direction: reverse;
|
11 |
+
}
|
12 |
+
.wpf_regenerate.disabled {
|
13 |
+
color: #737373;
|
14 |
+
box-shadow: none;
|
15 |
+
cursor: not-allowed;
|
16 |
+
}
|
17 |
@-webkit-keyframes spin {
|
18 |
0% {
|
19 |
-webkit-transform: rotate(0deg);
|
293 |
color: white;
|
294 |
}
|
295 |
|
296 |
+
.wf_tabs [id^="tab"]:checked + label {
|
297 |
+
background: #2CC185;
|
298 |
+
color: white;
|
299 |
+
}
|
300 |
+
|
301 |
.wf_tabs .wf-tab-content {
|
302 |
z-index: 2;
|
303 |
display: none;
|
304 |
overflow: hidden;
|
305 |
width: 100%;
|
306 |
font-size: 0.9rem;
|
|
|
|
|
307 |
position: absolute;
|
308 |
left: 0;
|
309 |
background: #fff;
|
310 |
border: 2px solid #CCC;
|
311 |
}
|
312 |
|
|
|
|
|
|
|
|
|
|
|
313 |
.wf_tabs [id^="tab"]:checked ~ [id^="wf-tab-content"] {
|
314 |
display: block;
|
315 |
}
|
373 |
.widefat td.column-url, .widefat th.column-url,
|
374 |
.column-url { color: #008779; font-weight: bold; }
|
375 |
|
376 |
+
/** Feed Progress **/
|
377 |
.feed-progress-container {
|
378 |
width:100%;
|
379 |
color: white;
|
631 |
ul.tracker_collection_list { list-style: initial; padding: initial; margin: -10px 0 0 30px; font-size: 11px !important; }
|
632 |
ul.tracker_collection_list li { margin: 0; }
|
633 |
|
634 |
+
/** Info Message Table **/
|
635 |
+
table.wf-info-table th,
|
636 |
+
table.wf-rate-table th { vertical-align: middle; text-align: center; max-width: 100%; font-weight: 500; }
|
637 |
+
table.wf-info-table th strong,
|
638 |
+
table.wf-rate-table th strong { font-weight: bold; }
|
639 |
+
table.wf-info-table th:first-child img { margin: 0 0 -5px 5px; }
|
640 |
+
table.wf-rate-table a { color:#0073aa; }
|
641 |
+
table.wf-rate-table a.review-star:after {
|
642 |
+
content: "\f155\f155\f155\f155\f155" !important;
|
643 |
+
font-family: dashicons;
|
644 |
+
font-size: 10px;
|
645 |
+
font-weight: 100;
|
646 |
+
text-rendering: auto;
|
647 |
+
-webkit-font-smoothing: antialiased;
|
648 |
+
-moz-osx-font-smoothing: grayscale;
|
649 |
+
/*content: '★★★★★'; /*★★★★★*/
|
650 |
+
/*content: '\2605\2605\2605\2605\2605';*/
|
651 |
+
color:#0073aa;text-decoration: underline;
|
652 |
+
}
|
653 |
+
|
654 |
+
/** Admin Menu Icon **/
|
655 |
+
#adminmenu #toplevel_page_webappick-manage-feeds div.wp-menu-image::before {
|
656 |
+
content: "";
|
657 |
+
background: url(../images/woo-feed-icon.svg) no-repeat center center;
|
658 |
+
background-size: 20px 20px;
|
659 |
+
}
|
660 |
+
|
661 |
/** Admin Page Wrapper **/
|
662 |
.wapk-admin, .wapk-admin * {
|
663 |
-webkit-box-sizing: border-box;
|
709 |
line-height: 1.3;
|
710 |
}
|
711 |
.wapk-admin .wapk-section,
|
712 |
+
.wapk-admin >.notice {
|
713 |
/* Restore .warp margin */
|
714 |
margin: 15px 20px 0 20px;
|
715 |
position: relative;
|
735 |
vertical-align: middle;
|
736 |
}
|
737 |
/** Extend WP Core UI PostBox For Docs **/
|
738 |
+
.wapk-admin .wapk-section.wapk-feed-docs .postbox { width: 355px; margin-right: 20px; display: inline-block; vertical-align: top; }
|
739 |
@media only screen and (max-width: 850px) {
|
740 |
.wapk-feed-docs .postbox { display: block; width: auto; float: none; margin-right: auto; }
|
741 |
}
|
746 |
.wapk-feed-docs .postbox ul { margin-bottom: 0; }
|
747 |
.wapk-feed-docs .postbox .toggle-indicator:before { content: "\F142"; display: inline-block; font: 400 20px/1 dashicons; speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none!important; }
|
748 |
.wapk-feed-docs .postbox.closed .toggle-indicator:before { content: "\F140"; }
|
749 |
+
.wapk-section #post-body.columns-2 #side-sortables {
|
750 |
+
min-height: 196px;
|
751 |
+
}
|
752 |
#poststuff #feed_merchant_info .inside { margin: 0; padding: 0; }
|
753 |
#feed_merchant_info ul.data { margin-left: 24px; margin-top: 5px; }
|
754 |
#feed_merchant_info ul.data li { margin-bottom: 5px; }
|
761 |
.wp-submenu li.current span.woo-feed-docs { color: #ce7304; }
|
762 |
.wapk-admin .wapk-feed-docs .postbox .hndle { cursor: default; }
|
763 |
|
764 |
+
|
765 |
/** Admin Call-To-Action **/
|
766 |
.wapk-cta { position: relative; display: flex; width: 100%; padding: 100px 15px; background: linear-gradient(45deg, #6CD5FF 33%, #c2efef 100%); justify-content: center; align-items: center; }
|
767 |
.wapk-cta-icon .dashicons { font-size: 100px; width: 100px; height: auto; margin: 0 10px -8px 0; color: #02658c; }
|
768 |
.wapk-cta-content {width: 50%;}
|
769 |
.wapk-cta-content h2 { font-size: 2em; margin: 0.5em 0; }
|
770 |
.wapk-cta-action {}
|
771 |
+
.wapk-cta-action a.wapk-button { font-size: 24px; height: auto !important; padding: 10px 20px; }
|
772 |
@media (max-width: 600px) {
|
773 |
.wapk-cta { display: block; text-align: center; padding: 4em 0; }
|
774 |
.wapk-cta-content { width: 100%; margin: 2em 0; }
|
777 |
/** Override .wp-core-ui .button styles with prefix .wapk-admin **/
|
778 |
/* @TODO refactor with scss */
|
779 |
/* Button Skin */
|
780 |
+
.wapk-button,
|
781 |
+
.wapk-button-primary,
|
782 |
+
.wapk-button-secondary {
|
783 |
+
display: inline-block;
|
784 |
+
text-decoration: none;
|
785 |
+
font-size: 13px;
|
786 |
+
line-height: 2.15384615;
|
787 |
+
min-height: 30px;
|
788 |
+
margin: 0;
|
789 |
+
padding: 0 10px;
|
790 |
+
cursor: pointer;
|
791 |
+
border-width: 1px;
|
792 |
+
border-style: solid;
|
793 |
+
-webkit-appearance: none;
|
794 |
+
border-radius: 3px;
|
795 |
+
white-space: nowrap;
|
796 |
+
box-sizing: border-box;
|
797 |
+
}
|
798 |
+
.wapk-button,
|
799 |
+
.wapk-button-secondary {
|
800 |
color: #00D4D4;
|
801 |
border-color: #00D4D4;
|
802 |
+
text-decoration: none;
|
803 |
}
|
804 |
+
.wapk-button > svg,
|
805 |
+
.wapk-button-secondary > svg {
|
806 |
width: 15px;
|
807 |
margin-left: 5px;
|
808 |
fill: #00D4D4;
|
809 |
}
|
810 |
+
.wapk-button > .dashicons,
|
811 |
+
.wapk-button-secondary > .dashicons {
|
812 |
color: #00D4D4;
|
813 |
}
|
814 |
+
.wapk-button.hover,
|
815 |
+
.wapk-button:hover,
|
816 |
+
.wapk-button-secondary:hover,
|
817 |
+
.wapk-button.focus,
|
818 |
+
.wapk-button:focus,
|
819 |
+
.wapk-button-secondary:focus {
|
820 |
border-color: #00bbbb;
|
821 |
color: #00bbbb;
|
822 |
}
|
823 |
+
.wapk-button.hover > svg,
|
824 |
+
.wapk-button:hover > svg,
|
825 |
+
.wapk-button-secondary:hover > svg,
|
826 |
+
.wapk-button.focus > svg,
|
827 |
+
.wapk-button:focus > svg,
|
828 |
+
.wapk-button-secondary:focus > svg {
|
829 |
fill: #00bbbb;
|
830 |
}
|
831 |
+
.wapk-button.hover > .dashicons,
|
832 |
+
.wapk-button:hover > .dashicons,
|
833 |
+
.wapk-button-secondary:hover > .dashicons,
|
834 |
+
.wapk-button.focus > .dashicons,
|
835 |
+
.wapk-button:focus > .dashicons,
|
836 |
+
.wapk-button-secondary:focus > .dashicons {
|
837 |
color: #00bbbb;
|
838 |
}
|
839 |
+
.wapk-button.focus,
|
840 |
+
.wapk-button:focus,
|
841 |
+
.wapk-button-secondary:focus {
|
842 |
border-color: #00D4D4;
|
843 |
color: #00bbbb;
|
844 |
box-shadow: 0 0 0 1px #00D4D4;
|
845 |
}
|
846 |
+
.wapk-button.focus > svg,
|
847 |
+
.wapk-button:focus > svg,
|
848 |
+
.wapk-button-secondary:focus > svg {
|
849 |
fill: #00bbbb;
|
850 |
}
|
851 |
+
.wapk-button.focus > .dashicons,
|
852 |
+
.wapk-button:focus > .dashicons,
|
853 |
+
.wapk-button-secondary:focus > .dashicons {
|
854 |
color: #00bbbb;
|
855 |
}
|
856 |
+
.wapk-button:active {
|
857 |
background: #00bbbb;
|
858 |
border-color: #00bbbb;
|
859 |
}
|
860 |
+
.wapk-button.active,
|
861 |
+
.wapk-button.active:focus,
|
862 |
+
.wapk-button.active:hover {
|
863 |
border-color: #00bbbb;
|
864 |
color: #00bbbb;
|
865 |
box-shadow: inset 0 2px 5px -3px #00bbbb;
|
866 |
}
|
867 |
+
.wapk-button.active > svg,
|
868 |
+
.wapk-button.active:focus > svg,
|
869 |
+
.wapk-button.active:hover > svg {
|
870 |
fill: #00bbbb;
|
871 |
}
|
872 |
+
.wapk-button.active > .dashicons,
|
873 |
+
.wapk-button.active:focus > .dashicons,
|
874 |
+
.wapk-button.active:hover > .dashicons {
|
875 |
color: #00bbbb;
|
876 |
}
|
877 |
+
.wapk-button-primary {
|
878 |
background: #00D4D4;
|
879 |
border-color: #00D4D4;
|
880 |
color: #fff;
|
881 |
+
text-decoration: none;
|
882 |
box-shadow: 0 1px 0 #00bbbb;
|
883 |
text-shadow: 0 -1px 1px #00bbbb, 1px 0 1px #00bbbb, 0 1px 1px #00bbbb, -1px 0 1px #00bbbb;
|
884 |
}
|
885 |
+
.wapk-button-primary > svg {
|
886 |
fill: #fff;
|
887 |
}
|
888 |
+
.wapk-button-primary:hover,
|
889 |
+
.wapk-button-primary:focus {
|
890 |
background: #00e3e3;
|
891 |
border-color: #00c5c5;
|
892 |
color: #fff;
|
893 |
}
|
894 |
+
.wapk-button-primary:hover > svg,
|
895 |
+
.wapk-button-primary:focus > svg {
|
896 |
fill: #fff;
|
897 |
}
|
898 |
+
.wapk-button-primary:focus {
|
899 |
box-shadow: 0 0 0 1px #fff, 0 0 0 3px #00D4D4;
|
900 |
}
|
901 |
+
.wapk-button-primary:active {
|
902 |
background: #00bbbb;
|
903 |
border-color: #00bbbb;
|
904 |
color: #fff;
|
905 |
}
|
906 |
+
.wapk-button-primary:active > svg {
|
907 |
fill: #fff;
|
908 |
}
|
909 |
+
.wapk-button-primary.active,
|
910 |
+
.wapk-button-primary.active:focus,
|
911 |
+
.wapk-button-primary.active:hover {
|
912 |
background: #00D4D4;
|
913 |
color: #fff;
|
914 |
border-color: #008888;
|
915 |
box-shadow: inset 0 2px 5px -3px black;
|
916 |
}
|
917 |
+
.wapk-button-primary.active > svg,
|
918 |
+
.wapk-button-primary.active:focus > svg,
|
919 |
+
.wapk-button-primary.active:hover > svg {
|
920 |
fill: #fff;
|
921 |
}
|
922 |
+
.wapk-button-primary[disabled],
|
923 |
+
.wapk-button-primary:disabled,
|
924 |
+
.wapk-button-primary.wapk-button-primary-disabled,
|
925 |
+
.wapk-button-primary.disabled {
|
926 |
color: #c7d1d1 !important;
|
927 |
background: #22ffff !important;
|
928 |
border-color: #22ffff !important;
|
929 |
text-shadow: none !important;
|
930 |
}
|
931 |
+
.wapk-button-primary[disabled] > svg,
|
932 |
+
.wapk-button-primary:disabled > svg,
|
933 |
+
.wapk-button-primary.wapk-button-primary-disabled > svg,
|
934 |
+
.wapk-button-primary.disabled > svg {
|
935 |
fill: #c7d1d1 !important;
|
936 |
}
|
937 |
+
.wapk-button.wapk-button-primary.wapk-button-hero {
|
938 |
box-shadow: 0 2px 0 #00bbbb;
|
939 |
}
|
940 |
+
.wapk-button.wapk-button-primary.wapk-button-hero:focus {
|
941 |
box-shadow: 0 2px 0 #00bbbb, 0 1px 0 #00c5c5, 0 0 2px 1px #00eeee;
|
942 |
}
|
943 |
+
.wapk-button.wapk-button-primary.wapk-button-hero.active,
|
944 |
+
.wapk-button.wapk-button-primary.wapk-button-hero.active:hover,
|
945 |
+
.wapk-button.wapk-button-primary.wapk-button-hero.active:focus,
|
946 |
+
.wapk-button.wapk-button-primary.wapk-button-hero:active {
|
947 |
box-shadow: inset 0 3px 0 #00a1a1;
|
948 |
}
|
949 |
+
.wapk-button-group > .wapk-button.active {
|
950 |
border-color: #00D4D4;
|
951 |
}
|
952 |
|
953 |
/* Button Sizes */
|
954 |
+
.wapk-button.wapk-button-xl,
|
955 |
+
.wapk-button-group.wapk-button-xl .wapk-button {
|
956 |
height: 30px;
|
957 |
line-height: 28px;
|
958 |
padding: 0 12px 2px;
|
959 |
}
|
960 |
+
.wapk-button.wapk-button-hero,
|
961 |
+
.wapk-button-group.wapk-button-hero .wapk-button {
|
962 |
font-size: 18px;
|
963 |
height: 50px;
|
964 |
line-height: 48px;
|
965 |
padding: 0 36px;
|
966 |
+
min-height: 46px;
|
967 |
+
}
|
968 |
+
|
969 |
+
@media screen and (min-width: 782px) {
|
970 |
+
th#status { width: 80px; }
|
971 |
+
th#provider { width: 80px; }
|
972 |
+
th#type { width: 50px; }
|
973 |
+
th#option_name { width: 100px; }
|
974 |
+
td.option_name.column-option_name >span:first-child { display: none; }
|
975 |
+
th#last_updated { width: 90px; }
|
976 |
+
th#view { width: 90px; }
|
977 |
+
}
|
978 |
+
@media screen and (min-width: 960px) {
|
979 |
+
th#status, th#provider, th#view { width: 100px; }
|
980 |
+
th#type { width: 80px; }
|
981 |
+
th#option_name { width: 150px; }
|
982 |
+
th#last_updated { width: 140px; }
|
983 |
}
|
984 |
@media screen and (max-width: 782px) {
|
985 |
+
table.wf-info-table { margin-top: 10px; }
|
986 |
+
table.wf-info-table th:first-child img { margin: 0 auto; display: block; }
|
987 |
+
|
988 |
+
.wapk-button.wapk-button-xl {
|
989 |
padding: 6px 14px;
|
990 |
line-height: normal;
|
991 |
font-size: 14px;
|
1009 |
/**
|
1010 |
* Premium Page Design
|
1011 |
*/
|
1012 |
+
.wp-submenu li span.woo-feed-premium { font-weight: bold; color: #28e499; }
|
1013 |
+
.wp-submenu li:hover span.woo-feed-premium,
|
1014 |
+
.wp-submenu li.current span.woo-feed-premium { color: #1dc381; }
|
1015 |
.woo_feed_free_manage_attribute {
|
1016 |
margin: 0 auto;
|
1017 |
width: 100%;
|
1391 |
font-size: 14px;
|
1392 |
text-transform: uppercase;
|
1393 |
letter-spacing: 3px;
|
|
|
1394 |
border-radius: 100px 100px 100px 100px;
|
1395 |
padding: 16px 42px;
|
1396 |
transition: all 250ms;
|
1398 |
.wapk-price__table__footer a:hover,
|
1399 |
.wapk-price__table__footer a:focus,
|
1400 |
.wapk-price__table__footer a:active {
|
|
|
1401 |
transform: scale(1.02) !important;
|
1402 |
}
|
1403 |
.wapk-price__table__ribbon {
|
admin/images/woo-feed-icon.svg
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<svg width="58px" height="75px" viewBox="0 0 58 75" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
3 |
+
<!-- Generator: Sketch 61 (89581) - https://sketch.com -->
|
4 |
+
<title>file-icon copy</title>
|
5 |
+
<desc>Created with Sketch.</desc>
|
6 |
+
<g id="Wordpress-Banner_design" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
7 |
+
<g id="icon-128x128-" transform="translate(-35.000000, -10.000000)" fill-rule="nonzero">
|
8 |
+
<g id="file-icon-copy" transform="translate(35.000000, 10.000000)">
|
9 |
+
<path d="M6.8377752,4 L47.8644264,4 C52.9098644,4 57,8.10494903 57,13.1686603 L57,68.138756 C57,71.3758317 54.3853014,74 51.1599073,74 L8.48551564,74 C5.45594901,74 3,71.5351562 3,68.4946172 L3,7.7888756 C3.03416325,5.68621911 4.74242801,4 6.8377752,4 Z" id="Path" fill="#0088F7"></path>
|
10 |
+
<path d="M56,15 L49.5105348,15 C45.9148657,15 43,12.0851343 43,8.48946515 L43,2 C50.1748912,2.01160049 55.9883995,7.82510883 56,15 Z" id="Path" fill="#FFFFFF"></path>
|
11 |
+
<path d="M36.7494904,13 L21.3399131,13 C20.3533288,13.1044429 19.603851,13.9499622 19.603851,14.9585292 C19.603851,15.9670962 20.3533288,16.8126155 21.3399131,16.9170584 L36.7494904,16.9170584 C37.7360747,16.8126155 38.4855525,15.9670962 38.4855525,14.9585292 C38.4855525,13.9499622 37.7360747,13.1044429 36.7494904,13 Z M44.5167503,49.523923 C44.0595474,49.0728946 43.4117619,48.882439 42.7883788,49.0157641 C42.6634363,49.0157641 42.5384937,49.0157641 42.3927275,49.1428038 L42.0803712,49.3333634 C41.9644511,49.4018595 41.859183,49.4874875 41.7680149,49.5874429 C41.3837972,49.9364937 41.1704713,50.440027 41.1849498,50.9637066 C41.1849498,51.0907464 41.1849498,51.2177861 41.1849498,51.3659991 C41.1849498,51.5142121 41.1849498,51.6200786 41.3098923,51.7682916 C41.4348348,51.9165046 41.4348348,51.9588512 41.4973061,52.0858909 C41.57128,52.2050279 41.6625482,52.3121051 41.7680149,52.4034903 C42.1095704,52.7965966 42.6059714,53.0140202 43.1215588,52.9963423 C43.63752,53.0337477 44.132485,52.7821111 44.4126315,52.3399704 C44.5161224,52.2523054 44.6011192,52.1442761 44.6625166,52.0223711 C44.7387767,51.9255745 44.8018187,51.8187409 44.8499303,51.7047717 C44.9227107,51.5828055 44.965564,51.4448256 44.9748728,51.3024793 C45.0083757,51.1705452 45.0083757,51.0321208 44.9748728,50.9001868 C45.0092361,50.3976096 44.8442498,49.9019678 44.5167503,49.523923 L44.5167503,49.523923 Z M33.4801611,49.0792839 L14.9261972,49.0792839 C13.8623878,49.0792839 13,49.9561473 13,51.0378131 C13,52.119479 13.8623878,52.9963423 14.9261972,52.9963423 L33.4801611,52.9963423 C34.5439705,52.9963423 35.4063583,52.119479 35.4063583,51.0378131 C35.4063583,49.9561473 34.5439705,49.0792839 33.4801611,49.0792839 L33.4801611,49.0792839 Z M43.1007351,40.9487411 L14.9261972,40.9487411 C13.9396128,41.0531839 13.190135,41.8987033 13.190135,42.9072703 C13.190135,43.9158373 13.9396128,44.7613566 14.9261972,44.8657995 L43.1632063,44.8657995 C44.1497907,44.7613566 44.8992685,43.9158373 44.8992685,42.9072703 C44.8992685,41.8987033 44.1497907,41.0531839 43.1632063,40.9487411 L43.1007351,40.9487411 Z M43.1007351,32.585292 L14.9261972,32.585292 C13.9396128,32.6897349 13.190135,33.5352543 13.190135,34.5438212 C13.190135,35.5523882 13.9396128,36.3979076 14.9261972,36.5023505 L43.1632063,36.5023505 C44.1497907,36.3979076 44.8992685,35.5523882 44.8992685,34.5438212 C44.8992685,33.5352543 44.1497907,32.6897349 43.1632063,32.585292 L43.1007351,32.585292 Z" id="Shape" fill="#FFFFFF"></path>
|
12 |
+
<path d="M49.5829713,16.7343226 L56.0158084,16.7343226 C56.784191,16.7046708 57.4742187,16.2529667 57.8119901,15.5585108 C57.9367201,15.3188338 58.0012521,15.052128 57.9999816,14.7816351 L57.9999816,14.6346586 C57.9170055,11.5427931 56.8887567,8.55164981 55.05506,6.06802925 L55.05506,5.92105277 L54.7000008,5.48012332 L54.7000008,5.48012332 C54.4075991,5.12318043 54.0734257,4.76623754 53.7392524,4.40929465 C50.9890207,1.58861139 47.2252375,0 43.2963351,0 L8.35433383,0 C3.76472159,0 0.03442209,3.72183462 0,8.33566643 L0,66.6013438 C0,71.3255879 3.80122189,75 7.08029792,75 L48.1627346,75 C53.7601382,75 57.8119901,71.4515678 57.8119901,66.6013438 L57.8119901,44.218925 L57.8119901,23.2222845 C57.8175599,22.7155279 57.6226399,22.2273055 57.2701166,21.8650365 C56.9175932,21.5027674 56.436348,21.2961318 55.932265,21.2905936 L55.932265,21.2905936 C55.4209411,21.2849131 54.9289109,21.4866054 54.5673283,21.8501064 C54.2057456,22.2136074 54.0051177,22.7082479 54.0107682,23.2222845 L54.0107682,44.218925 L54.0107682,66.5803472 C54.0107682,69.2889138 51.6924406,71.0946249 48.2253921,71.0946249 L7.08029792,71.0946249 C5.12773818,70.4779266 3.81629757,68.6373057 3.8638794,66.5803472 L3.8638794,8.33566643 C3.85829314,7.13669274 4.32959915,5.98520271 5.1729367,5.13739099 C6.01627426,4.28957926 7.16168751,3.81577283 8.35433383,3.82138872 L41.2077516,3.82138872 L41.2077516,8.33566643 C41.2077447,10.5667712 42.0907974,12.7061904 43.662059,14.281849 C45.2333206,15.8575075 47.3636477,16.7399004 49.5829713,16.7343226 Z M49.5829713,12.8499441 C48.3867178,12.8611973 47.2359054,12.3898809 46.388029,11.5414525 C45.5401526,10.693024 45.0659885,9.53830569 45.0715812,8.33566643 L45.0715812,4.01035848 C49.5649482,4.81782831 53.0822447,8.35378511 53.8854532,12.8709408 L49.5829713,12.8499441 Z" id="Shape" fill="#2E3B50"></path>
|
13 |
+
</g>
|
14 |
+
</g>
|
15 |
+
</g>
|
16 |
+
</svg>
|
admin/images/woo-feed-pro-horizontal-logo.svg
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<svg width="123px" height="25px" viewBox="0 0 123 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
3 |
+
<!-- Generator: Sketch 61 (89581) - https://sketch.com -->
|
4 |
+
<title>Group 3</title>
|
5 |
+
<desc>Created with Sketch.</desc>
|
6 |
+
<g id="Wordpress-Banner_design" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
7 |
+
<g id="icon-128x128-" transform="translate(-2.000000, -49.000000)">
|
8 |
+
<g id="Group-3" transform="translate(2.000000, 49.000000)">
|
9 |
+
<g id="Group" fill-rule="nonzero">
|
10 |
+
<g id="file-icon-copy">
|
11 |
+
<path d="M2.20818849,1 L15.1239861,1 C16.7123647,1 18,2.34876897 18,4.01255981 L18,22.0741627 C18,23.1377733 17.1768542,24 16.1614523,24 L2.72692159,24 C1.77316913,24 1,23.1901227 1,22.1910885 L1,2.24491627 C1.0107551,1.55404342 1.54854215,1 2.20818849,1 Z" id="Path" fill="#0088F7"></path>
|
12 |
+
<path d="M18,5 L16.0032415,5 C14.8968818,5 14,4.10311823 14,2.99675851 L14,1 C16.2076588,1.00356938 17.9964306,2.79234118 18,5 Z" id="Path" fill="#FFFFFF"></path>
|
13 |
+
<path d="M12.4217157,4 L7.60622285,4 C7.29791524,4.03394393 7.06370343,4.30873772 7.06370343,4.63652199 C7.06370343,4.96430626 7.29791524,5.23910005 7.60622285,5.27304398 L12.4217157,5.27304398 C12.7300234,5.23910005 12.9642352,4.96430626 12.9642352,4.63652199 C12.9642352,4.30873772 12.7300234,4.03394393 12.4217157,4 Z M14.8489845,15.870275 C14.7061086,15.7236907 14.5036756,15.6617927 14.3088684,15.7051233 C14.2698238,15.7051233 14.2307793,15.7051233 14.1852273,15.7464112 L14.087616,15.8083431 C14.051391,15.8306043 14.0184947,15.8584334 13.9900046,15.8909189 C13.8699366,16.0043604 13.8032723,16.1680088 13.8077968,16.3382047 C13.8077968,16.3794926 13.8077968,16.4207805 13.8077968,16.4689497 C13.8077968,16.5171189 13.8077968,16.5515255 13.8468413,16.5996948 C13.8858859,16.647864 13.8858859,16.6616266 13.9054082,16.7029146 C13.928525,16.7416341 13.9570463,16.7764341 13.9900046,16.8061343 C14.0967407,16.9338939 14.2518661,17.0045566 14.4129871,16.9988113 C14.574225,17.010968 14.7289016,16.9291861 14.8164473,16.7854904 C14.8487882,16.7569993 14.8753497,16.7218897 14.8945364,16.6822706 C14.9183677,16.6508117 14.9380683,16.6160908 14.9531032,16.5790508 C14.9758471,16.5394118 14.9892388,16.4945683 14.9921478,16.4483058 C15.0026174,16.4054272 15.0026174,16.3604393 14.9921478,16.3175607 C15.0028863,16.1542231 14.951328,15.9931395 14.8489845,15.870275 L14.8489845,15.870275 Z M11.4000504,15.7257673 L5.60193661,15.7257673 C5.2694962,15.7257673 5,16.0107479 5,16.3622893 C5,16.7138307 5.2694962,16.9988113 5.60193661,16.9988113 L11.4000504,16.9988113 C11.7324908,16.9988113 12.001987,16.7138307 12.001987,16.3622893 C12.001987,16.0107479 11.7324908,15.7257673 11.4000504,15.7257673 L11.4000504,15.7257673 Z M14.4064797,13.0833409 L5.60193661,13.0833409 C5.29362901,13.1172848 5.0594172,13.3920786 5.0594172,13.7198628 C5.0594172,14.0476471 5.29362901,14.3224409 5.60193661,14.3563848 L14.426002,14.3563848 C14.7343096,14.3224409 14.9685214,14.0476471 14.9685214,13.7198628 C14.9685214,13.3920786 14.7343096,13.1172848 14.426002,13.0833409 L14.4064797,13.0833409 Z M14.4064797,10.3652199 L5.60193661,10.3652199 C5.29362901,10.3991638 5.0594172,10.6739576 5.0594172,11.0017419 C5.0594172,11.3295262 5.29362901,11.60432 5.60193661,11.6382639 L14.426002,11.6382639 C14.7343096,11.60432 14.9685214,11.3295262 14.9685214,11.0017419 C14.9685214,10.6739576 14.7343096,10.3991638 14.426002,10.3652199 L14.4064797,10.3652199 Z" id="Shape" fill="#FFFFFF"></path>
|
14 |
+
<path d="M16.2426925,5.57810754 L18.3500005,5.57810754 C18.601712,5.56822361 18.8277555,5.41765557 18.9384047,5.18617025 C18.9792645,5.10627795 19.0004043,5.01737599 18.9999881,4.92721169 L18.9999881,4.87821953 C18.9728063,3.84759771 18.6359663,2.85054994 18.0352727,2.02267642 L18.0352727,1.97368426 L17.9189602,1.82670777 L17.9189602,1.82670777 C17.8231735,1.70772681 17.713703,1.58874585 17.6042324,1.46976488 C16.7032947,0.529537129 15.4703317,0 14.1832778,0 L2.73676369,0 C1.23327049,0 0.0112761984,1.24061154 0,2.77855548 L0,22.2004479 C0,23.775196 1.24522748,25 2.31940723,25 L15.7774427,25 C17.6110743,25 18.9384047,23.8171893 18.9384047,22.2004479 L18.9384047,14.7396417 L18.9384047,7.74076151 C18.9402293,7.57184262 18.8763762,7.40910183 18.7608945,7.28834549 C18.6454127,7.16758914 18.4877635,7.09871059 18.3226329,7.09686454 L18.3226329,7.09686454 C18.1551303,7.09497104 17.993948,7.16220179 17.8754986,7.28336879 C17.7570491,7.40453579 17.6913262,7.56941596 17.6931772,7.74076151 L17.6931772,14.7396417 L17.6931772,22.1934491 C17.6931772,23.0963046 16.9337253,23.6982083 15.7979684,23.6982083 L2.31940723,23.6982083 C1.67977578,23.4926422 1.25016606,22.8791019 1.26575321,22.1934491 L1.26575321,2.77855548 C1.26392323,2.37889758 1.41831653,1.99506757 1.69458219,1.71246366 C1.97084786,1.42985975 2.34606932,1.27192428 2.73676369,1.27379624 L13.4990869,1.27379624 L13.4990869,2.77855548 C13.4990846,3.52225707 13.7883604,4.23539681 14.3030839,4.76061632 C14.8178074,5.28583583 15.5156729,5.5799668 16.2426925,5.57810754 Z M16.2426925,4.28331471 C15.8508165,4.28706575 15.4738263,4.12996031 15.1960738,3.84715082 C14.9183213,3.56434134 14.7629917,3.17943523 14.7648238,2.77855548 L14.7648238,1.33678616 C16.2367884,1.60594277 17.3890058,2.78459504 17.6521258,4.29031359 L16.2426925,4.28331471 Z" id="Shape" fill="#2E3B50"></path>
|
15 |
+
</g>
|
16 |
+
<g id="text-copy" transform="translate(25.000000, 5.000000)">
|
17 |
+
<path d="M9.02369668,2.46990881 C9.2107425,3.14427558 9.41295419,3.84761905 9.63033175,4.57993921 C9.84770932,5.31225937 10.0701422,6.04457953 10.2976303,6.7768997 C10.5301738,7.50921986 10.7601896,8.22836879 10.9876777,8.9343465 C11.2151659,9.64032421 11.4375987,10.3067882 11.6549763,10.9337386 C11.8369668,10.2593718 12.0139021,9.52705167 12.185782,8.73677812 C12.3576619,7.94650456 12.5295419,7.12198582 12.7014218,6.26322188 C12.8733017,5.40972644 13.042654,4.53779129 13.2094787,3.64741641 C13.3763033,2.75704154 13.5279621,1.8745694 13.664455,1 L16,1 C15.5703002,3.34974671 15.0951027,5.60729483 14.5744076,7.77264438 C14.0537125,9.93799392 13.4698262,12.0058764 12.8227488,13.9762918 L10.6464455,13.9762918 C9.72638231,11.4684904 8.83917852,8.72360689 7.98483412,5.74164134 C7.53491311,7.25369807 7.07993681,8.6893617 6.61990521,10.0486322 C6.15987362,11.4079027 5.69731438,12.7250253 5.23222749,14 L3.06350711,14 C2.42654028,12.0243161 1.85781991,9.95116515 1.35734597,7.78054711 C0.856872038,5.60992908 0.404423381,3.34974671 0,1 L2.40379147,1 C2.54533965,1.84822695 2.69447077,2.71752786 2.85118483,3.60790274 C3.00789889,4.49827761 3.17219589,5.37021277 3.34407583,6.22370821 C3.51595577,7.08247214 3.69036335,7.91225937 3.86729858,8.71306991 C4.04423381,9.51388045 4.22116904,10.2514691 4.39810427,10.9258359 C4.63064771,10.2883485 4.86319115,9.61661601 5.0957346,8.9106383 C5.32827804,8.20466059 5.56082148,7.4881459 5.79336493,6.76109422 C6.02590837,6.02877406 6.24834123,5.30172239 6.46066351,4.57993921 C6.67298578,3.85815603 6.87014218,3.16008105 7.0521327,2.48571429 L9.02369668,2.46990881 Z" id="Path" fill="#2E3B50"></path>
|
18 |
+
<path d="M26.9996531,8.47024937 C27.0074002,9.24137774 26.885323,10.0082129 26.6386532,10.737891 C26.4183769,11.3854613 26.0698643,11.9807813 25.6144208,12.4874572 C25.1707559,12.9715337 24.6297019,13.3538098 24.0277001,13.6085384 C23.3812481,13.8785504 22.6869098,14.0115185 21.9876306,13.9992183 C21.2898029,14.007172 20.5979545,13.868349 19.9559565,13.5915524 C19.354251,13.3251484 18.8160351,12.9312701 18.3776312,12.4364989 C17.9336031,11.9420954 17.5886161,11.3652334 17.3617941,10.737891 C17.1110599,10.0063108 16.9888819,9.23596797 17.0007942,8.46175633 C16.99351,7.68924891 17.1214122,6.92153209 17.3785848,6.19411471 C17.6113591,5.56394749 17.9651704,4.98664352 18.4196079,4.49550675 C18.8642722,4.0146967 19.4052194,3.63539151 20.0063286,3.38291854 C20.6454978,3.1189924 21.3309469,2.98897514 22.021212,3.00073175 C22.7152838,2.99508464 23.4033775,3.1308387 24.0444908,3.39990462 C24.6451553,3.65262047 25.1838678,4.03526684 25.6228161,4.52098587 C26.0719328,5.0308693 26.4171431,5.62542172 26.6386532,6.27055206 C26.8822542,6.97755454 27.0043528,7.72154353 26.9996531,8.47024937 Z M24.531421,8.47024937 C24.5822345,7.59121999 24.3526877,6.71891431 23.8765838,5.98178871 C23.4278306,5.4022344 22.7405392,5.06366156 22.0128167,5.06366156 C21.2850942,5.06366156 20.5978027,5.4022344 20.1490495,5.98178871 C19.6640801,6.71586733 19.4256406,7.58840701 19.4690264,8.47024937 C19.4114356,9.36863088 19.6410211,10.2619275 20.1238635,11.0181613 C20.568813,11.60379 21.257496,11.9470101 21.9876306,11.9470101 C22.7177653,11.9470101 23.4064482,11.60379 23.8513978,11.0181613 C24.3448474,10.2625994 24.583402,9.36580325 24.531421,8.46175633 L24.531421,8.47024937 Z" id="Shape" fill="#2E3B50"></path>
|
19 |
+
<path d="M37.9992565,8.49997514 C38.0052591,9.27027664 37.8803324,10.0359406 37.6298759,10.7638742 C37.3983877,11.4076815 37.0384122,11.9970095 36.5721041,12.495588 C36.1284568,12.9770623 35.5874243,13.3572835 34.9854463,13.6106428 C34.3390199,13.8792033 33.6447091,14.0114565 32.9454577,13.9992225 C32.2476577,14.0071334 31.5558367,13.8690567 30.9138642,13.593748 C30.3167471,13.3326772 29.7816246,12.9468283 29.3439965,12.4617985 C28.9034894,11.9446538 28.5696061,11.3445091 28.3617798,10.6962951 C28.1110555,9.96864757 27.9888823,9.20244585 28.0007942,8.43239606 C27.9935103,7.66404135 28.1214073,6.90045147 28.3785698,6.1769444 C28.6113348,5.55016471 28.9651321,4.9759641 29.4195516,4.48746749 C29.8641983,4.00924209 30.405124,3.6319759 31.0062094,3.38086012 C31.6453532,3.11835275 32.3307752,2.98903441 33.0210129,3.00072782 C33.7150572,2.99511106 34.4031235,3.13013536 35.0442114,3.39775489 C35.6448521,3.64911224 36.1835432,4.02970165 36.6224741,4.51280965 C37.0715729,5.01995214 37.4167696,5.61130848 37.6382709,6.25297086 C37.8885761,6.9748872 38.0107654,7.73547146 37.9992565,8.49997514 L37.9992565,8.49997514 Z M35.5311222,8.49997514 C35.5905548,7.62186647 35.3667935,6.74790114 34.8931011,6.00799671 C34.4443657,5.43155785 33.7571015,5.09480505 33.0294079,5.09480505 C32.3017143,5.09480505 31.6144501,5.43155785 31.1657147,6.00799671 C30.6807644,6.7381292 30.4423344,7.60597846 30.4857185,8.48308037 C30.42813,9.37663254 30.6577064,10.2651271 31.1405296,11.0172957 C31.5854615,11.5997763 32.2741172,11.9411514 33.0042228,11.9411514 C33.7343285,11.9411514 34.4229842,11.5997763 34.8679161,11.0172957 C35.3536877,10.2661327 35.5862271,9.37756277 35.5311222,8.48308037 L35.5311222,8.49997514 Z" id="Shape" fill="#2E3B50"></path>
|
20 |
+
<polygon id="Path" fill="#0088F7" points="40 13.9684466 40.0687023 1 48 1.0473301 48 3.05097087 42.351145 3.05097087 42.2900763 6.34830097 47.3053435 6.34830097 47.3053435 8.35194175 42.2900763 8.35194175 42.2900763 14"></polygon>
|
21 |
+
<path d="M49.0054054,9.54891633 C48.9931281,8.72371947 49.1293347,7.90349841 49.4068813,7.13127314 C49.6438401,6.50205059 49.9987995,5.92914093 50.4507186,5.44650437 C50.874418,4.99794323 51.3832446,4.64780662 51.9442089,4.41879542 C52.4788002,4.16944986 53.0538158,4.02935761 53.6384371,4.00602707 C54.8473249,3.93889362 56.0227721,4.43524572 56.8502442,5.36226593 C57.6882209,6.50223635 58.0918031,7.92859041 57.9824062,9.36359176 C57.9824062,9.49837327 57.9824062,9.64719451 57.9824062,9.81005549 C57.9824062,9.97291647 57.9824062,10.1217377 57.9824062,10.2565192 L51.4142607,10.2565192 C51.4215515,10.994507 51.7108168,11.6985597 52.2172125,12.210851 C52.8368925,12.7147273 53.6108485,12.9634102 54.3932118,12.91003 C54.9081338,12.9174758 55.4223195,12.8666388 55.9268497,12.7584008 C56.3025333,12.6814039 56.6707399,12.5686188 57.0268936,12.4214471 L57.3239858,14.4010504 C57.1553967,14.4851344 56.9809129,14.5555393 56.8020671,14.6116465 C56.5380564,14.6918333 56.2699899,14.7565165 55.9991154,14.8053949 C55.7154057,14.8615539 55.4076075,14.909289 55.0757208,14.9486002 C54.7396884,14.9858483 54.4018872,15.002724 54.0640016,14.9991433 C53.2852337,15.0125012 52.5112122,14.8695376 51.7836185,14.5779511 C51.1711715,14.3312964 50.6215055,13.9391677 50.177715,13.4323084 C49.7604372,12.9450715 49.4457929,12.3709908 49.2543204,11.7475396 C49.0609684,11.0331023 48.9769511,10.2909922 49.0054054,9.54891633 L49.0054054,9.54891633 Z M55.6939937,8.50435969 C55.6974617,8.18206038 55.6541414,7.86108529 55.5655214,7.55246533 C55.486599,7.26761403 55.3557042,7.00155076 55.1801045,6.76904785 C55.0100379,6.54922961 54.7962989,6.37099103 54.5538022,6.24676953 C54.277217,6.11270217 53.975171,6.04644558 53.6705552,6.05302113 C53.3493104,6.04340229 53.0303642,6.11263184 52.7391311,6.25519338 C52.4785052,6.38712229 52.2462685,6.57343657 52.0566221,6.80274323 C51.8691199,7.03182457 51.7222673,7.29430469 51.6230282,7.57773686 C51.5192832,7.86887489 51.4465748,8.17116599 51.4062312,8.47908816 L55.6939937,8.50435969 Z" id="Shape" fill="#0088F7"></path>
|
22 |
+
<path d="M60.0050243,9.47310173 C59.9927794,8.64790487 60.1286279,7.82768382 60.4054449,7.05545855 C60.6417808,6.426236 60.9958071,5.85332633 61.4465382,5.37068977 C61.8691239,4.92212864 62.3766129,4.57199203 62.9361026,4.34298082 C63.4816487,4.11649258 64.0634138,4.00211054 64.6499024,4.00602707 C65.8556124,3.93889362 67.0279697,4.43524572 67.8532666,5.36226593 C68.6890404,6.50223635 69.0915617,7.92859041 68.9824525,9.36359176 C68.9824525,9.49837327 68.9824525,9.64719451 68.9824525,9.81005549 C68.9824525,9.97853237 68.9824525,10.1301616 68.9824525,10.2565192 L62.4315727,10.2565192 C62.4388443,10.994507 62.7273492,11.6985597 63.2324138,12.210851 C63.8504648,12.7147273 64.6223863,12.9634102 65.402693,12.91003 C65.9162639,12.9175414 66.4291047,12.8667037 66.9322994,12.7584008 C67.3069955,12.6814039 67.6742341,12.5686188 68.0294516,12.4214471 L68.3257628,14.4010504 C68.1576293,14.4851649 67.9836019,14.5555707 67.8052161,14.6116465 C67.5418828,14.6917659 67.2745246,14.7564482 67.0043751,14.8053949 C66.7214113,14.8615539 66.4144222,14.909289 66.0834079,14.9486002 C65.7482601,14.985867 65.411346,15.0027428 65.0743482,14.9991433 C64.2976275,15.0125012 63.5256406,14.8695376 62.7999596,14.5779511 C62.1891225,14.3312964 61.6409015,13.9391677 61.1982775,13.4323084 C60.7822919,12.9449228 60.4684998,12.3708881 60.2773103,11.7475396 C60.0686341,11.0102194 59.9766449,10.2418219 60.0050243,9.47310173 Z M66.6760303,8.4285451 C66.6792414,8.10626272 66.6360402,7.78532678 66.5478957,7.47665074 C66.4689918,7.19187879 66.3384591,6.9258522 66.163492,6.69323326 C65.9938724,6.47341502 65.7806953,6.29517643 65.538836,6.17095494 C65.2629778,6.03688757 64.9617259,5.97063099 64.6579108,5.97720653 C64.3375105,5.9675877 64.0194027,6.03681724 63.7289352,6.17937878 C63.4689944,6.3113077 63.2373682,6.49762197 63.0482203,6.72692863 C62.8612109,6.95600997 62.7147444,7.21849009 62.6157662,7.50192227 C62.5122939,7.7930603 62.4397767,8.0953514 62.3995391,8.40327356 L66.6760303,8.4285451 Z" id="Shape" fill="#0088F7"></path>
|
23 |
+
<path d="M78.9519219,13.5051782 C78.3862429,13.6547831 77.8107644,13.7698782 77.2291217,13.8497363 C76.5082085,13.9552705 75.7792523,14.0053743 75.0495792,13.9995442 C74.3298235,14.005418 73.6151833,13.8860363 72.9421539,13.6474957 C72.3379434,13.4368504 71.7907808,13.1043915 71.3395491,12.6737446 C70.8974095,12.2452579 70.5562049,11.7349374 70.3379211,11.1756661 C70.0999147,10.5277398 69.9859883,9.84565938 70.0013741,9.1607504 C69.9956862,8.48364594 70.0983188,7.8095509 70.305869,7.16081552 C70.4890015,6.61270899 70.7857852,6.10366927 71.1792886,5.66273696 C71.5541354,5.21392394 72.0374419,4.85455041 72.5895808,4.61408197 C73.1841814,4.37690263 73.8263689,4.26195113 74.4726415,4.27701429 C74.9037576,4.27207957 75.3332267,4.32762721 75.7467123,4.44180294 C76.0727361,4.53503689 76.3891777,4.65536331 76.6922491,4.80134179 L76.6922491,0.307106105 L79,0 L78.9519219,13.5051782 Z M72.3812422,9.08584648 C72.3214361,9.88959129 72.5715928,10.686776 73.0863883,11.3329643 C73.5775864,11.8783651 74.3116281,12.1799459 75.0736182,12.1494171 C75.3866427,12.1542194 75.6996971,12.1417136 76.0111421,12.1119652 C76.226472,12.0898337 76.440437,12.0573321 76.652184,12.0145901 L76.652184,6.68143038 C76.4024939,6.52834302 76.1333047,6.40504336 75.8508816,6.31440114 C75.5063502,6.1992465 75.1430269,6.14095243 74.7771364,6.1421221 C74.0577886,6.08414974 73.3585015,6.38256782 72.9341408,6.92861335 C72.525183,7.58057088 72.3327361,8.33143666 72.3812422,9.08584648 L72.3812422,9.08584648 Z" id="Shape" fill="#0088F7"></path>
|
24 |
+
</g>
|
25 |
+
</g>
|
26 |
+
<g id="Group-2" transform="translate(107.000000, 0.000000)">
|
27 |
+
<rect id="Rectangle" fill="#0088F7" x="0" y="0" width="16" height="8" rx="2"></rect>
|
28 |
+
<path d="M3.789,6 L3.789,4.166 L4.601,4.166 C5.16566667,4.166 5.60083333,4.026 5.9065,3.746 C6.21216667,3.466 6.365,3.09033333 6.365,2.619 C6.365,2.13833333 6.21683333,1.758 5.9205,1.478 C5.62416667,1.198 5.18433333,1.058 4.601,1.058 L4.601,1.058 L2.802,1.058 L2.802,6 L3.789,6 Z M4.496,3.375 L3.789,3.375 L3.789,1.856 L4.496,1.856 C4.804,1.856 5.02566667,1.92133333 5.161,2.052 C5.29633333,2.18266667 5.364,2.37166667 5.364,2.619 C5.364,3.123 5.07466667,3.375 4.496,3.375 L4.496,3.375 Z M8.22933333,6 L8.22933333,4.131 C8.22933333,3.459 8.591,3.123 9.31433333,3.123 L9.31433333,3.123 L9.60133333,3.123 L9.60133333,2.066 C9.30733333,2.066 9.04133333,2.13716667 8.80333333,2.2795 C8.56533333,2.42183333 8.374,2.61666667 8.22933333,2.864 L8.22933333,2.864 L8.22933333,2.122 L7.24233333,2.122 L7.24233333,6 L8.22933333,6 Z M12.1726667,6.049 C12.5506667,6.049 12.8901667,5.9685 13.1911667,5.8075 C13.4921667,5.6465 13.729,5.41666667 13.9016667,5.118 C14.0743333,4.81933333 14.1606667,4.467 14.1606667,4.061 C14.1606667,3.655 14.0743333,3.3015 13.9016667,3.0005 C13.729,2.6995 13.4921667,2.46966667 13.1911667,2.311 C12.8901667,2.15233333 12.5506667,2.073 12.1726667,2.073 C11.7946667,2.073 11.4551667,2.15233333 11.1541667,2.311 C10.8531667,2.46966667 10.6163333,2.6995 10.4436667,3.0005 C10.271,3.3015 10.1846667,3.655 10.1846667,4.061 C10.1846667,4.467 10.271,4.81933333 10.4436667,5.118 C10.6163333,5.41666667 10.8531667,5.6465 11.1541667,5.8075 C11.4551667,5.9685 11.7946667,6.049 12.1726667,6.049 Z M12.1726667,5.195 C11.8973333,5.195 11.664,5.09816667 11.4726667,4.9045 C11.2813333,4.71083333 11.1856667,4.42966667 11.1856667,4.061 C11.1856667,3.69233333 11.2813333,3.41116667 11.4726667,3.2175 C11.664,3.02383333 11.8973333,2.927 12.1726667,2.927 C12.448,2.927 12.6813333,3.02383333 12.8726667,3.2175 C13.064,3.41116667 13.1596667,3.69233333 13.1596667,4.061 C13.1596667,4.42966667 13.064,4.71083333 12.8726667,4.9045 C12.6813333,5.09816667 12.448,5.195 12.1726667,5.195 Z" id="Pro" fill="#FFFFFF" fill-rule="nonzero"></path>
|
29 |
+
</g>
|
30 |
+
</g>
|
31 |
+
</g>
|
32 |
+
</g>
|
33 |
+
</svg>
|
admin/js/woo-feed-admin.js
CHANGED
@@ -18,9 +18,20 @@
|
|
18 |
*/
|
19 |
$.fn.disabled = function( status ) {
|
20 |
$(this).each( function(){
|
21 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
} );
|
23 |
-
return
|
|
|
|
|
|
|
|
|
|
|
24 |
};
|
25 |
|
26 |
function clearTooltip( event ) {
|
@@ -226,7 +237,7 @@
|
|
226 |
$(this).validate();
|
227 |
if ($(this).valid()) {
|
228 |
// noinspection SpellCheckingInspection
|
229 |
-
$(".makeFeedResponse").show().html("<b style='color: darkblue;'><i class='dashicons dashicons-sos
|
230 |
}
|
231 |
});
|
232 |
|
@@ -239,7 +250,7 @@
|
|
239 |
$(this).validate();
|
240 |
if ($(this).valid()) {
|
241 |
// noinspection SpellCheckingInspection
|
242 |
-
$(".makeFeedResponse").show().html("<b style='color: darkblue;'><i class='dashicons dashicons-sos
|
243 |
}
|
244 |
});
|
245 |
|
18 |
*/
|
19 |
$.fn.disabled = function( status ) {
|
20 |
$(this).each( function(){
|
21 |
+
// noinspection ES6ConvertVarToLetConst
|
22 |
+
var self = $(this), prop = 'disabled';
|
23 |
+
if( typeof( self.prop( prop ) ) !== 'undefined' ) {
|
24 |
+
self.prop( prop, status === void 0 || status === true );
|
25 |
+
} else {
|
26 |
+
!0===status?self.addClass( prop ):self.removeClass( prop );
|
27 |
+
}
|
28 |
} );
|
29 |
+
return self; // method chaining
|
30 |
+
};
|
31 |
+
$.fn.isDisabled = function() {
|
32 |
+
// noinspection ES6ConvertVarToLetConst
|
33 |
+
var self = $(this), prop = 'disabled';
|
34 |
+
return ( typeof( self.prop( prop ) ) !== 'undefined' )? self.prop( prop ) : self.hasClass( prop );
|
35 |
};
|
36 |
|
37 |
function clearTooltip( event ) {
|
237 |
$(this).validate();
|
238 |
if ($(this).valid()) {
|
239 |
// noinspection SpellCheckingInspection
|
240 |
+
$(".makeFeedResponse").show().html("<b style='color: darkblue;'><i class='dashicons dashicons-sos wpf_spin'></i> Delivering Configuration...</b>");
|
241 |
}
|
242 |
});
|
243 |
|
250 |
$(this).validate();
|
251 |
if ($(this).valid()) {
|
252 |
// noinspection SpellCheckingInspection
|
253 |
+
$(".makeFeedResponse").show().html("<b style='color: darkblue;'><i class='dashicons dashicons-sos wpf_spin'></i> Delivering Configuration...</b>");
|
254 |
}
|
255 |
});
|
256 |
|
admin/partials/woo-feed-admin-display.php
CHANGED
@@ -45,7 +45,7 @@ register_and_do_woo_feed_meta_boxes( $current_screen, $feedRules );
|
|
45 |
<hr class="wp-header-end">
|
46 |
<div class="wapk-section">
|
47 |
<form action="" name="feed" id="generateFeed" class="generateFeed add-new" method="post" autocomplete="off">
|
48 |
-
<input type="hidden" name="
|
49 |
<input type="hidden" name="feed_id" value="">
|
50 |
<?php
|
51 |
wp_nonce_field('woo_feed_form_nonce');
|
@@ -61,7 +61,6 @@ register_and_do_woo_feed_meta_boxes( $current_screen, $feedRules );
|
|
61 |
</div>
|
62 |
</div>
|
63 |
<div class="clear"></div>
|
64 |
-
<br/><br/>
|
65 |
<div id="providerPage"></div>
|
66 |
</div>
|
67 |
</form>
|
45 |
<hr class="wp-header-end">
|
46 |
<div class="wapk-section">
|
47 |
<form action="" name="feed" id="generateFeed" class="generateFeed add-new" method="post" autocomplete="off">
|
48 |
+
<input type="hidden" name="original_feed_name" value="">
|
49 |
<input type="hidden" name="feed_id" value="">
|
50 |
<?php
|
51 |
wp_nonce_field('woo_feed_form_nonce');
|
61 |
</div>
|
62 |
</div>
|
63 |
<div class="clear"></div>
|
|
|
64 |
<div id="providerPage"></div>
|
65 |
</div>
|
66 |
</form>
|
admin/partials/woo-feed-edit-template.php
CHANGED
@@ -33,7 +33,7 @@ register_and_do_woo_feed_meta_boxes( $current_screen, $feedRules );
|
|
33 |
<div class="wapk-section"><?php echo WPFFWMessage()->infoMessage1(); ?></div>
|
34 |
<div class="wapk-section">
|
35 |
<form action="" name="feed" id="updatefeed" class="generateFeed" method="post" autocomplete="off">
|
36 |
-
<input type="hidden" name="
|
37 |
<input type="hidden" name="feed_id" value="<?php echo esc_attr( $feedId ); ?>">
|
38 |
<?php
|
39 |
wp_nonce_field('wf_edit_feed');
|
@@ -49,7 +49,6 @@ register_and_do_woo_feed_meta_boxes( $current_screen, $feedRules );
|
|
49 |
</div>
|
50 |
</div>
|
51 |
<div class="clear"></div>
|
52 |
-
<br/><br/>
|
53 |
<ul class="wf_tabs">
|
54 |
<li>
|
55 |
<input type="radio" name="wf_tabs" id="tab1" checked/>
|
@@ -179,6 +178,7 @@ register_and_do_woo_feed_meta_boxes( $current_screen, $feedRules );
|
|
179 |
<div class="makeFeedComplete"></div>
|
180 |
</td>
|
181 |
<td align="right">
|
|
|
182 |
<button name="<?php echo isset($_GET['action']) ? esc_attr($_GET['action']) : ''; ?>" type="submit" class="wfbtn updatefeed"><?php _e('Update and Generate Feed', 'woo-feed'); ?></button>
|
183 |
</td>
|
184 |
</tr>
|
@@ -257,6 +257,7 @@ register_and_do_woo_feed_meta_boxes( $current_screen, $feedRules );
|
|
257 |
<div class="makeFeedComplete"></div>
|
258 |
</td>
|
259 |
<td align="right">
|
|
|
260 |
<button name="<?php echo isset($_GET['action']) ? esc_attr($_GET['action']) : ''; ?>" type="submit" class="wfbtn updatefeed"><?php _e('Update and Generate Feed', 'woo-feed'); ?></button>
|
261 |
</td>
|
262 |
</tr>
|
33 |
<div class="wapk-section"><?php echo WPFFWMessage()->infoMessage1(); ?></div>
|
34 |
<div class="wapk-section">
|
35 |
<form action="" name="feed" id="updatefeed" class="generateFeed" method="post" autocomplete="off">
|
36 |
+
<input type="hidden" name="original_feed_name" value="<?php echo esc_attr( str_replace( [ 'wf_feed_', 'wf_config' ], '', $fname ) ); ?>">
|
37 |
<input type="hidden" name="feed_id" value="<?php echo esc_attr( $feedId ); ?>">
|
38 |
<?php
|
39 |
wp_nonce_field('wf_edit_feed');
|
49 |
</div>
|
50 |
</div>
|
51 |
<div class="clear"></div>
|
|
|
52 |
<ul class="wf_tabs">
|
53 |
<li>
|
54 |
<input type="radio" name="wf_tabs" id="tab1" checked/>
|
178 |
<div class="makeFeedComplete"></div>
|
179 |
</td>
|
180 |
<td align="right">
|
181 |
+
<button name="save_feed_config" type="submit" class="wfbtn updatefeed"><?php _e('Save', 'woo-feed'); ?></button>
|
182 |
<button name="<?php echo isset($_GET['action']) ? esc_attr($_GET['action']) : ''; ?>" type="submit" class="wfbtn updatefeed"><?php _e('Update and Generate Feed', 'woo-feed'); ?></button>
|
183 |
</td>
|
184 |
</tr>
|
257 |
<div class="makeFeedComplete"></div>
|
258 |
</td>
|
259 |
<td align="right">
|
260 |
+
<button name="save_feed_config" type="submit" class="wfbtn updatefeed"><?php _e('Save', 'woo-feed'); ?></button>
|
261 |
<button name="<?php echo isset($_GET['action']) ? esc_attr($_GET['action']) : ''; ?>" type="submit" class="wfbtn updatefeed"><?php _e('Update and Generate Feed', 'woo-feed'); ?></button>
|
262 |
</td>
|
263 |
</tr>
|
admin/partials/woo-feed-manage-list.php
CHANGED
@@ -11,372 +11,476 @@
|
|
11 |
*/
|
12 |
$myListTable = new Woo_Feed_Manage_list();
|
13 |
$limit = get_option( "woo_feed_per_batch", 200 );
|
14 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
# Checking woo version to run different version of feed processing
|
16 |
$woo32 = "no";
|
17 |
if (woo_feed_wc_version_check(3.2)) {
|
18 |
$woo32 = 'yes';
|
19 |
}
|
20 |
?>
|
21 |
-
<div class="wrap">
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
table: $( '#feedprogresstable' ),
|
132 |
-
status: $( '.feed-progress-status' ),
|
133 |
-
percentage: $( '.feed-progress-percentage' ),
|
134 |
-
bar: $( '.feed-progress-bar-fill' ),
|
135 |
-
barProgress: 10, // Variable responsible to hold progress bar width
|
136 |
-
},
|
137 |
-
regenerateBtn = $( '.wpf_regenerate' ),
|
138 |
-
fileName = "<?php echo isset( $fileName )? $fileName : ''; ?>", // wf_config+xxxx
|
139 |
-
limit = <?php echo ( $limit ) ? $limit : 200; ?>;
|
140 |
let woo32 = "<?php echo $woo32; ?>";
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
|
|
149 |
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
generate_feed();
|
158 |
-
}
|
159 |
-
//==================Manage Feed==============================
|
160 |
-
// Feed Regenerate
|
161 |
-
regenerateBtn.on( "click", function () {
|
162 |
-
var el = $( this );
|
163 |
-
regenerateBtn.disabled();
|
164 |
-
fileName = el.attr( 'id' ).replace( "wf_feed_", "wf_config" );
|
165 |
-
el.val( 'Generating...' );
|
166 |
-
if( fileName ) {
|
167 |
feedProgress.table.show();
|
168 |
generate_feed();
|
169 |
}
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
function generate_feed() {
|
188 |
-
console.log( "Counting Total Products" );
|
189 |
-
feedProgress.status.text( "Fetching products." );
|
190 |
-
showFeedProgress();
|
191 |
-
$.ajax({
|
192 |
-
url : opts.wpf_ajax_url,
|
193 |
-
type : 'post',
|
194 |
-
data : {
|
195 |
-
_ajax_nonce: opts.nonce,
|
196 |
-
action: "get_product_information",
|
197 |
-
feed: fileName,
|
198 |
-
limit: limit,
|
199 |
-
},
|
200 |
-
success : function(response) {
|
201 |
-
console.log( response );
|
202 |
-
if(response.success) {
|
203 |
-
if (woo32 === 'yes') {
|
204 |
-
processFeed_v3(response.data.product);
|
205 |
-
let total = response.data.total;
|
206 |
-
console.log("Total " + total + " Products found.");
|
207 |
-
feedProgress.status.text( "Processing Products..." );
|
208 |
-
} else {
|
209 |
-
feedProgress.status.text( "Delivering Feed Configuration." );
|
210 |
-
processFeed( parseInt( response.data.product ) );
|
211 |
-
//feedProgress.status.text("Total "+products+" products found.");
|
212 |
-
feedProgress.status.text( "Processing Products..." );
|
213 |
-
}
|
214 |
-
|
215 |
-
}else{
|
216 |
-
feedProgress.status.text(response.data.message);
|
217 |
-
showFeedProgress( 'red' );
|
218 |
-
}
|
219 |
}
|
220 |
});
|
221 |
-
}
|
222 |
-
function processFeed_v3(batches, n) {
|
223 |
-
let totalBatch = batches.length;
|
224 |
-
let progressBatch = 90 / totalBatch;
|
225 |
-
if (typeof(n) === 'undefined') n = 0;
|
226 |
-
|
227 |
-
let batch = batches[n];
|
228 |
-
let pbatch = n + 1;
|
229 |
-
feedProgress.status.text( "Processing Batch " + pbatch + " of " + totalBatch);
|
230 |
-
showFeedProgress();
|
231 |
-
console.log( "Processing Batch " + pbatch + " of " + totalBatch );
|
232 |
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
feed: fileName,
|
240 |
-
products: batch,
|
241 |
-
loop: n,
|
242 |
-
},
|
243 |
-
success: function (response) {
|
244 |
-
console.log( "Batch "+ pbatch +" Completed.");
|
245 |
-
console.log(response);
|
246 |
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
}
|
260 |
-
},
|
261 |
-
error: function (response) {
|
262 |
-
console.log(response);
|
263 |
-
}
|
264 |
-
});
|
265 |
-
}
|
266 |
-
function processFeed( n, offset, batch ) {
|
267 |
-
if ( typeof( offset ) === 'undefined' ) offset = 0;
|
268 |
-
if ( typeof( batch ) === 'undefined' ) batch = 0;
|
269 |
-
var batches = Math.ceil( n/limit ),
|
270 |
-
progressBatch = 90 / batches;
|
271 |
-
console.log( ( limit*batch ) + " out of " + n + " products processed." );
|
272 |
-
feedProgress.status.text( "Processing products..." + Math.round( feedProgress.barProgress ) + "%" );
|
273 |
-
if( batch < batches ) {
|
274 |
-
console.log( "Processing Batch " + batch + " of " + batches );
|
275 |
$.ajax({
|
276 |
url : opts.wpf_ajax_url,
|
277 |
type : 'post',
|
278 |
data : {
|
279 |
_ajax_nonce: opts.nonce,
|
280 |
-
|
|
|
281 |
limit: limit,
|
282 |
-
offset: offset,
|
283 |
-
feed: fileName
|
284 |
},
|
285 |
success : function(response) {
|
286 |
console.log( response );
|
287 |
-
if(
|
288 |
-
if(
|
289 |
-
|
290 |
-
|
291 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
292 |
processFeed( n, offset, batch );
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
298 |
batch++;
|
299 |
processFeed( n, offset, batch );
|
300 |
feedProgress.barProgress = feedProgress.barProgress + progressBatch;
|
301 |
showFeedProgress();
|
302 |
-
}else{
|
303 |
-
feedProgress.status.text( "Saving feed file." );
|
304 |
-
save_feed_file();
|
305 |
}
|
|
|
306 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
307 |
},
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
processFeed( n, offset, batch );
|
313 |
-
feedProgress.barProgress = feedProgress.barProgress + progressBatch;
|
314 |
showFeedProgress();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
315 |
}
|
316 |
-
|
|
|
|
|
|
|
317 |
}
|
318 |
});
|
319 |
-
}else{
|
320 |
-
feedProgress.status.text("Saving feed file.");
|
321 |
-
save_feed_file();
|
322 |
}
|
323 |
-
}
|
324 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
325 |
/**
|
326 |
-
*
|
327 |
-
*
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
// var searchParam = new URLSearchParams(params);
|
333 |
-
// var old_lang = searchParam.get('old_lang');
|
334 |
-
$.ajax({
|
335 |
-
url : opts.wpf_ajax_url,
|
336 |
-
type : 'post',
|
337 |
-
data : {
|
338 |
-
_ajax_nonce: opts.nonce,
|
339 |
-
action: "save_feed_file",
|
340 |
-
feed: fileName
|
341 |
-
},
|
342 |
-
success : function( response ) {
|
343 |
-
console.log( response );
|
344 |
-
if( response.success ) {
|
345 |
-
feedProgress.barProgress = 100;
|
346 |
-
showFeedProgress();
|
347 |
-
feedProgress.status.text( response.data.message );
|
348 |
-
regenerateBtn.val( 'Regenerate' );
|
349 |
-
regenerateBtn.disabled( false );
|
350 |
-
// var default_polylang = (response.data.default_polylang) ? response.data.default_polylang : '';
|
351 |
-
window.location.href = "<?php echo admin_url( 'admin.php?WPFP_WPML_CURLANG=yes&page=webappick-manage-feeds&link=' ); ?>" + response.data.url + "&cat=" + response.data.cat;
|
352 |
-
// Polylang code
|
353 |
-
// window.location.href = "<?php // echo admin_url('admin.php?WPFP_WPML_CURLANG=yes&page=webappick-manage-feeds&link='); ?>"+url+"&cat="+cat + "&lang=" + old_lang;
|
354 |
-
}else{
|
355 |
-
showFeedProgress( "red" );
|
356 |
-
feedProgress.status.text( response.data.message );
|
357 |
-
}
|
358 |
-
},
|
359 |
-
error:function ( response ) {
|
360 |
-
console.log( response );
|
361 |
-
feedProgress.status.text( "Failed to save feed file." );
|
362 |
-
}
|
363 |
-
});
|
364 |
-
}
|
365 |
-
|
366 |
-
/*########################################################
|
367 |
-
#######-------------------------------------------#######
|
368 |
-
####### Ajax Feed Making Functions End #######
|
369 |
-
#######-------------------------------------------#######
|
370 |
-
#########################################################
|
371 |
*/
|
372 |
-
});
|
373 |
-
|
374 |
-
|
375 |
-
*
|
376 |
-
* Ideally, it is not considered best practise to attach more than a
|
377 |
-
* single DOM-ready or window-load handler for a particular page.
|
378 |
-
* Although scripts in the WordPress core, Plugins and Themes may be
|
379 |
-
* practising this, we should strive to set a better example in our own work.
|
380 |
-
*/
|
381 |
-
})( jQuery, window, document, wpf_ajax_obj );
|
382 |
-
</script>
|
11 |
*/
|
12 |
$myListTable = new Woo_Feed_Manage_list();
|
13 |
$limit = get_option( "woo_feed_per_batch", 200 );
|
14 |
+
$fileName = '';
|
15 |
+
$message = [];
|
16 |
+
global $regenerating, $regeneratingName;
|
17 |
+
$regenerating = false;
|
18 |
+
if( ( isset( $_GET['feed_updated'] ) || isset( $_GET['feed_created'] ) ) && isset( $_GET['feed_regenerate'], $_GET['feed_name'] ) ) {
|
19 |
+
$canBeRegenerated = false;
|
20 |
+
if( isset( $_GET['feed_created'] ) ) {
|
21 |
+
$message[] = [
|
22 |
+
'notice' => esc_html__( 'Feed Config Created Successfully.', 'woo-feed' ),
|
23 |
+
'type' => 'success',
|
24 |
+
'dismissible' => true,
|
25 |
+
];
|
26 |
+
$canBeRegenerated = true;
|
27 |
+
}
|
28 |
+
if( isset( $_GET['feed_updated'] ) ) {
|
29 |
+
$message[] = [
|
30 |
+
'notice' => esc_html__( 'Feed Config Updated Successfully.', 'woo-feed' ),
|
31 |
+
'type' => 'updated',
|
32 |
+
'dismissible' => true,
|
33 |
+
];
|
34 |
+
$canBeRegenerated = true;
|
35 |
+
}
|
36 |
+
if( $canBeRegenerated && $_GET['feed_regenerate'] == 1 ) {
|
37 |
+
// filename must be wf_config+xxxx format
|
38 |
+
$fileName = sanitize_text_field( $_GET['feed_name'] ); //trigger feed regenerate...
|
39 |
+
$fileName = str_replace( [ 'wf_feed_', 'wf_config' ], '', $fileName );
|
40 |
+
$regeneratingName = $fileName;
|
41 |
+
$fileName = 'wf_config' . $fileName; // to be safe...
|
42 |
+
$regenerating = true;
|
43 |
+
}
|
44 |
+
}
|
45 |
+
// schedule updated
|
46 |
+
if( isset( $_GET['schedule_updated'] ) && ! empty( $_GET['schedule_updated'] ) ) {
|
47 |
+
if( $_GET['schedule_updated'] == 1 ) {
|
48 |
+
$message[] = [
|
49 |
+
'notice' => esc_html__( 'Feed auto update interval updated.', 'woo-feed' ),
|
50 |
+
'type' => 'updated',
|
51 |
+
'dismissible' => true,
|
52 |
+
];
|
53 |
+
}
|
54 |
+
if( $_GET['schedule_updated'] == 2 ) {
|
55 |
+
$message[] = [
|
56 |
+
'notice' => esc_html__( 'Unable to save auto update interval.', 'woo-feed' ),
|
57 |
+
'type' => 'warning',
|
58 |
+
'dismissible' => true,
|
59 |
+
];
|
60 |
+
}
|
61 |
+
if( $_GET['schedule_updated'] == 3 ) {
|
62 |
+
$message[] = [
|
63 |
+
'notice' => esc_html__( 'Invalid interval value.', 'woo-feed' ),
|
64 |
+
'type' => 'error',
|
65 |
+
'dismissible' => true,
|
66 |
+
];
|
67 |
+
}
|
68 |
+
if( $_GET['schedule_updated'] == 4 ) {
|
69 |
+
$message[] = [
|
70 |
+
'notice' => esc_html__( 'Invalid request.', 'woo-feed' ),
|
71 |
+
'type' => 'error',
|
72 |
+
'dismissible' => true,
|
73 |
+
];
|
74 |
+
}
|
75 |
+
}
|
76 |
+
// get updated link
|
77 |
+
if( isset( $_GET['link'] ) && ! empty( $_GET['link'] ) ) {
|
78 |
+
$link = filter_input( INPUT_GET, 'link', FILTER_VALIDATE_URL );
|
79 |
+
/**
|
80 |
+
* @TODO use session/cookies/localstorage or transient api for this message
|
81 |
+
* @see settings_errors()
|
82 |
+
*/
|
83 |
+
if( isset( $link ) && ! empty( $link ) ) {
|
84 |
+
/** @noinspection HtmlUnknownTarget */
|
85 |
+
$link = sprintf( '<a href="%1$s" target="_blank">%1$s</a>', esc_url( $link ) );
|
86 |
+
$notice = sprintf( esc_html__( 'Feed Generated Successfully. Feed URL: %s', 'woo-feed' ), $link );
|
87 |
+
$notice = '<b style="color: #008779;">' . $notice . '</b>';
|
88 |
+
if ( isset( $_GET['cat'] ) && $_GET['cat'] == 'no' ) {
|
89 |
+
$notice .= sprintf( '<br/><br/><b style="color: #f49242;">%s</b>', esc_html__( 'Warning:', 'woo-feed' ) );
|
90 |
+
$link = 'https://webappick.helpscoutdocs.com/article/19-how-to-map-store-category-with-merchant-category';
|
91 |
+
$link = sprintf( '<a href="%s" target="_blank">%s</a>', esc_url( $link ), esc_html__( 'Learn more...', 'woo-feed' ) );
|
92 |
+
$notice .= sprintf( '<ul><li>%s %s</li></ul>', esc_html__( 'Google Product category is not selected. Your AdWords CPC rate will be high. Add proper Google Product Category to each product & reduce CPC rate.', 'woo-feed' ), $link );
|
93 |
+
}
|
94 |
+
$message[] = [
|
95 |
+
'notice' => $notice,
|
96 |
+
'type' => 'updated',
|
97 |
+
'dismissible' => true,
|
98 |
+
];
|
99 |
+
}
|
100 |
+
}
|
101 |
+
// get error messages
|
102 |
+
if ( isset( $_GET['wpf_message'] ) && ! empty( $_GET['wpf_message'] ) ) {
|
103 |
+
$type = sanitize_text_field( $_GET['wpf_message'] );
|
104 |
+
$error = esc_html( get_option('wpf_message') );
|
105 |
+
delete_option( 'wpf_message' ); // empty message cache
|
106 |
+
if( $dir = get_option("WPF_DIRECTORY_PERMISSION_CHECK", false ) ) {
|
107 |
+
$error .= ' ' . esc_html( $dir );
|
108 |
+
delete_option( 'WPF_DIRECTORY_PERMISSION_CHECK' ); // empty message cache
|
109 |
+
}
|
110 |
+
$error = trim( $error );
|
111 |
+
if( ! empty( $error ) ) {
|
112 |
+
$message[] = [
|
113 |
+
'notice' => $error,
|
114 |
+
'type' => $type,
|
115 |
+
'dismissible' => true,
|
116 |
+
];
|
117 |
+
}
|
118 |
+
}
|
119 |
# Checking woo version to run different version of feed processing
|
120 |
$woo32 = "no";
|
121 |
if (woo_feed_wc_version_check(3.2)) {
|
122 |
$woo32 = 'yes';
|
123 |
}
|
124 |
?>
|
125 |
+
<div class="wrap wapk-admin">
|
126 |
+
<div class="wapk-section">
|
127 |
+
<h1 class="wp-heading-inline"><?php _e('Manage Feed', 'woo-feed'); ?></h1>
|
128 |
+
<a href="<?php echo admin_url('admin.php?page=webappick-new-feed'); ?>" class="page-title-action"><?php _e('New Feed', 'woo-feed'); ?></a>
|
129 |
+
<hr class="wp-header-end">
|
130 |
+
<?php echo WPFFWMessage()->infoMessage1(); ?>
|
131 |
+
<div id="feed_progress_table" style="display: none;">
|
132 |
+
<table class="table widefat fixed">
|
133 |
+
<thead>
|
134 |
+
<tr>
|
135 |
+
<th><b><?php esc_html_e( 'Generating Product Feed', 'woo-feed' ); ?></b></th>
|
136 |
+
</tr>
|
137 |
+
</thead>
|
138 |
+
<tbody>
|
139 |
+
<tr>
|
140 |
+
<td>
|
141 |
+
<div class="feed-progress-container">
|
142 |
+
<div class="feed-progress-bar" >
|
143 |
+
<span class="feed-progress-bar-fill"></span>
|
144 |
+
</div>
|
145 |
+
</div>
|
146 |
+
</td>
|
147 |
+
</tr>
|
148 |
+
<tr>
|
149 |
+
<td>
|
150 |
+
<div style="float: left;"><b style='color: darkblue;'><i class='dashicons dashicons-sos wpf_spin'></i></b> </div>
|
151 |
+
<div class="feed-progress-status"></div>
|
152 |
+
<div class="feed-progress-percentage"></div>
|
153 |
+
</td>
|
154 |
+
</tr>
|
155 |
+
</tbody>
|
156 |
+
</table>
|
157 |
+
<br>
|
158 |
+
</div>
|
159 |
+
<?php
|
160 |
+
if( ! empty( $message ) ) {
|
161 |
+
foreach ( $message as $notice ) {
|
162 |
+
if( ! isset( $notice['notice'] ) || ! isset( $notice['type'] ) ) {continue;}
|
163 |
+
$isDismissible = isset( $notice['dismissible'] ) && $notice['dismissible'] == true ? ' is-dismissible' : '';
|
164 |
+
printf( '<div class="notice notice-%1$s %1$s%3$s"><p>%2$s</p></div>', $notice['type'], $notice['notice'], $isDismissible );
|
165 |
+
}
|
166 |
+
}
|
167 |
+
$myListTable->prepare_items();
|
168 |
+
?>
|
169 |
+
<table class=" widefat fixed">
|
170 |
+
<thead>
|
171 |
+
<tr>
|
172 |
+
<th><b><?php esc_html_e( 'Auto Update Feed Interval', 'woo-feed' ); ?></b></th>
|
173 |
+
</tr>
|
174 |
+
</thead>
|
175 |
+
<tbody>
|
176 |
+
<tr>
|
177 |
+
<td>
|
178 |
+
<form action="" method="post">
|
179 |
+
<?php wp_nonce_field( 'wf_schedule', 'wf_schedule_nonce' ); ?>
|
180 |
+
<label for="wf_schedule"><b><?php esc_html_e( 'Interval', 'woo-feed' ); ?></b></label>
|
181 |
+
<select name="wf_schedule" id="wf_schedule"><?php
|
182 |
+
$interval = get_option('wf_schedule');
|
183 |
+
foreach( woo_feed_get_schedule_interval_options() as $k=>$v ) {
|
184 |
+
printf( '<option value="%s" %s>%s</option>', $k, selected( $interval, $k, false ), $v );
|
185 |
+
}
|
186 |
+
?></select>
|
187 |
+
<button type="submit" class="button button-primary"><?php esc_html_e('Update Interval', 'woo-feed' ); ?></button>
|
188 |
+
</form>
|
189 |
+
</td>
|
190 |
+
</tr>
|
191 |
+
</tbody>
|
192 |
+
</table>
|
193 |
+
<form id="contact-filter" method="post">
|
194 |
+
<!-- For plugins, we also need to ensure that the form posts back to our current page -->
|
195 |
+
<input type="hidden" name="page" value="<?php echo esc_attr( $_REQUEST['page'] ); ?>"/>
|
196 |
+
<?php //$myListTable->search_box('search', 'search_id'); ?>
|
197 |
+
<!-- Now we can render the completed list table -->
|
198 |
+
<?php $myListTable->display() ?>
|
199 |
+
</form>
|
200 |
+
</div>
|
201 |
+
<script type="text/javascript">
|
202 |
+
(function( $, window, document, opts ) {
|
203 |
+
'use strict';
|
204 |
+
/**
|
205 |
+
* All of the code for your admin-facing JavaScript source
|
206 |
+
* should reside in this file.
|
207 |
+
*
|
208 |
+
* Note: It has been assumed you will write jQuery code here, so the
|
209 |
+
* $ function reference has been prepared for usage within the scope
|
210 |
+
* of this function.
|
211 |
+
*
|
212 |
+
* This enables you to define handlers, for when the DOM is ready:
|
213 |
+
*
|
214 |
+
* $(function() {
|
215 |
+
* });
|
216 |
+
*
|
217 |
+
*/
|
218 |
+
/**
|
219 |
+
* On Window Load
|
220 |
+
* @TODO move this to js file so we can minify this.
|
221 |
+
*/
|
222 |
+
$( window ).load(function() {
|
223 |
+
// noinspection ES6ConvertVarToLetConst
|
224 |
+
var feedProgress = {
|
225 |
+
table: $( '#feed_progress_table' ),
|
226 |
+
status: $( '.feed-progress-status' ),
|
227 |
+
percentage: $( '.feed-progress-percentage' ),
|
228 |
+
bar: $( '.feed-progress-bar-fill' ),
|
229 |
+
barProgress: 10, // Variable responsible to hold progress bar width
|
230 |
+
},
|
231 |
+
isRegenerating = false,
|
232 |
+
regenerateBtn = $( '.wpf_regenerate' ),
|
233 |
+
fileName = "<?php echo isset( $fileName )? $fileName : ''; ?>", // wf_config+xxxx
|
234 |
+
limit = <?php echo ( $limit ) ? $limit : 200; ?>;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
235 |
let woo32 = "<?php echo $woo32; ?>";
|
236 |
+
// feed delete alert
|
237 |
+
$( '.single-feed-delete' ).click( function ( event ) {
|
238 |
+
//@TODO move to js file with proper i18n entries.
|
239 |
+
event.preventDefault();
|
240 |
+
if ( confirm( '<?php _e('Are You Sure to Delete?','woo-feed');?>' ) ) {
|
241 |
+
var url = jQuery(this).attr('val');
|
242 |
+
window.location.href = url;
|
243 |
+
}
|
244 |
+
});
|
245 |
|
246 |
+
// bulk delete alert
|
247 |
+
$('#doaction, #doaction2').click(function () {
|
248 |
+
//@TODO move to js file with proper i18n entries.
|
249 |
+
return confirm('<?php _e('Are You Sure to Delete?','woo-feed'); ?>');
|
250 |
+
});
|
251 |
+
// generate feed
|
252 |
+
if( fileName !== "" ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
253 |
feedProgress.table.show();
|
254 |
generate_feed();
|
255 |
}
|
256 |
+
//==================Manage Feed==============================
|
257 |
+
// Feed Regenerate
|
258 |
+
regenerateBtn.on( "click", function ( e ) {
|
259 |
+
e.preventDefault();
|
260 |
+
// noinspection ES6ConvertVarToLetConst
|
261 |
+
var el = $( this );
|
262 |
+
if( el.hasClass('disabled') || isRegenerating === true ) return;
|
263 |
+
isRegenerating = true;
|
264 |
+
regenerateBtn.addClass('disabled');
|
265 |
+
fileName = el.attr( 'id' ).replace( "wf_feed_", "wf_config" );
|
266 |
+
// noinspection JSUnresolvedVariable
|
267 |
+
el.attr( 'aria-label', opts.regenerate ).attr( 'title', opts.regenerate );
|
268 |
+
el.find('span').addClass('wpf_spin_reverse');
|
269 |
+
if( fileName ) {
|
270 |
+
feedProgress.table.show();
|
271 |
+
generate_feed();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
272 |
}
|
273 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
274 |
|
275 |
+
/*#######################################################
|
276 |
+
#######-------------------------------------------#######
|
277 |
+
####### Ajax Feed Making Functions Start #######
|
278 |
+
#######-------------------------------------------#######
|
279 |
+
#########################################################
|
280 |
+
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
281 |
|
282 |
+
function showFeedProgress( color ){
|
283 |
+
feedProgress.bar.css( {
|
284 |
+
width: feedProgress.barProgress + '%',
|
285 |
+
background: color || "#3DC264",
|
286 |
+
} );
|
287 |
+
feedProgress.percentage.text( Math.round( feedProgress.barProgress ) + '%' );
|
288 |
+
}
|
289 |
|
290 |
+
function generate_feed() {
|
291 |
+
console.log( "Counting Total Products" );
|
292 |
+
feedProgress.status.text( "Fetching products." );
|
293 |
+
showFeedProgress();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
294 |
$.ajax({
|
295 |
url : opts.wpf_ajax_url,
|
296 |
type : 'post',
|
297 |
data : {
|
298 |
_ajax_nonce: opts.nonce,
|
299 |
+
action: "get_product_information",
|
300 |
+
feed: fileName,
|
301 |
limit: limit,
|
|
|
|
|
302 |
},
|
303 |
success : function(response) {
|
304 |
console.log( response );
|
305 |
+
if(response.success) {
|
306 |
+
if (woo32 === 'yes') {
|
307 |
+
processFeed_v3(response.data.product);
|
308 |
+
let total = response.data.total;
|
309 |
+
console.log("Total " + total + " Products found.");
|
310 |
+
feedProgress.status.text( "Processing Products..." );
|
311 |
+
} else {
|
312 |
+
feedProgress.status.text( "Delivering Feed Configuration." );
|
313 |
+
processFeed( parseInt( response.data.product ) );
|
314 |
+
//feedProgress.status.text("Total "+products+" products found.");
|
315 |
+
feedProgress.status.text( "Processing Products..." );
|
316 |
+
}
|
317 |
+
|
318 |
+
}else{
|
319 |
+
feedProgress.status.text(response.data.message);
|
320 |
+
showFeedProgress( 'red' );
|
321 |
+
}
|
322 |
+
}
|
323 |
+
});
|
324 |
+
}
|
325 |
+
function processFeed_v3(batches, n) {
|
326 |
+
let totalBatch = batches.length;
|
327 |
+
let progressBatch = 90 / totalBatch;
|
328 |
+
if (typeof(n) === 'undefined') n = 0;
|
329 |
+
|
330 |
+
let batch = batches[n];
|
331 |
+
let productBatch = n + 1;
|
332 |
+
feedProgress.status.text( "Processing Batch " + productBatch + " of " + totalBatch);
|
333 |
+
showFeedProgress();
|
334 |
+
console.log( "Processing Batch " + productBatch + " of " + totalBatch );
|
335 |
+
|
336 |
+
$.ajax({
|
337 |
+
url: opts.wpf_ajax_url,
|
338 |
+
type: 'post',
|
339 |
+
data: {
|
340 |
+
_ajax_nonce: opts.nonce,
|
341 |
+
action: "make_batch_feed",
|
342 |
+
feed: fileName,
|
343 |
+
products: batch,
|
344 |
+
loop: n,
|
345 |
+
},
|
346 |
+
success: function (response) {
|
347 |
+
console.log( "Batch "+ productBatch +" Completed.");
|
348 |
+
console.log(response);
|
349 |
+
|
350 |
+
if (productBatch < totalBatch) {
|
351 |
+
n = n + 1;
|
352 |
+
processFeed_v3(batches, n);
|
353 |
+
|
354 |
+
feedProgress.barProgress = feedProgress.barProgress + progressBatch;
|
355 |
+
showFeedProgress();
|
356 |
+
}
|
357 |
+
|
358 |
+
if (productBatch === totalBatch) {
|
359 |
+
console.log( "Saving feed file.");
|
360 |
+
feedProgress.status.text("Saving feed file.");
|
361 |
+
save_feed_file();
|
362 |
+
}
|
363 |
+
},
|
364 |
+
error: function (response) {
|
365 |
+
console.log(response);
|
366 |
+
}
|
367 |
+
});
|
368 |
+
}
|
369 |
+
function processFeed( n, offset, batch ) {
|
370 |
+
if ( typeof( offset ) === 'undefined' ) offset = 0;
|
371 |
+
if ( typeof( batch ) === 'undefined' ) batch = 0;
|
372 |
+
var batches = Math.ceil( n/limit ),
|
373 |
+
progressBatch = 90 / batches;
|
374 |
+
console.log( ( limit*batch ) + " out of " + n + " products processed." );
|
375 |
+
feedProgress.status.text( "Processing products..." + Math.round( feedProgress.barProgress ) + "%" );
|
376 |
+
if( batch < batches ) {
|
377 |
+
console.log( "Processing Batch " + batch + " of " + batches );
|
378 |
+
$.ajax({
|
379 |
+
url : opts.wpf_ajax_url,
|
380 |
+
type : 'post',
|
381 |
+
data : {
|
382 |
+
_ajax_nonce: opts.nonce,
|
383 |
+
action: "make_batch_feed",
|
384 |
+
limit: limit,
|
385 |
+
offset: offset,
|
386 |
+
feed: fileName
|
387 |
+
},
|
388 |
+
success : function(response) {
|
389 |
+
console.log( response );
|
390 |
+
if( response.success ) {
|
391 |
+
if( response.data.products === "yes" ) {
|
392 |
+
offset = offset+limit;
|
393 |
+
batch++;
|
394 |
+
setTimeout( function(){
|
395 |
+
processFeed( n, offset, batch );
|
396 |
+
}, 2000 );
|
397 |
+
feedProgress.barProgress = feedProgress.barProgress + progressBatch;
|
398 |
+
showFeedProgress();
|
399 |
+
} else if( n > offset ) {
|
400 |
+
offset = offset+limit;
|
401 |
+
batch++;
|
402 |
processFeed( n, offset, batch );
|
403 |
+
feedProgress.barProgress = feedProgress.barProgress + progressBatch;
|
404 |
+
showFeedProgress();
|
405 |
+
}else{
|
406 |
+
feedProgress.status.text( "Saving feed file." );
|
407 |
+
save_feed_file();
|
408 |
+
}
|
409 |
+
}
|
410 |
+
},
|
411 |
+
error:function (response) {
|
412 |
+
if( response.status !== "200" ) {
|
413 |
+
offset = (offset-limit)+10;
|
414 |
batch++;
|
415 |
processFeed( n, offset, batch );
|
416 |
feedProgress.barProgress = feedProgress.barProgress + progressBatch;
|
417 |
showFeedProgress();
|
|
|
|
|
|
|
418 |
}
|
419 |
+
console.log(response);
|
420 |
}
|
421 |
+
});
|
422 |
+
}else{
|
423 |
+
feedProgress.status.text("Saving feed file.");
|
424 |
+
save_feed_file();
|
425 |
+
}
|
426 |
+
}
|
427 |
+
|
428 |
+
/**
|
429 |
+
* Save feed file into WordPress upload directory
|
430 |
+
* after successfully processing the feed
|
431 |
+
*/
|
432 |
+
function save_feed_file(){
|
433 |
+
// polylang codes
|
434 |
+
// var params = window.location.search.slice(1);
|
435 |
+
// var searchParam = new URLSearchParams(params);
|
436 |
+
// var old_lang = searchParam.get('old_lang');
|
437 |
+
$.ajax({
|
438 |
+
url : opts.wpf_ajax_url,
|
439 |
+
type : 'post',
|
440 |
+
data : {
|
441 |
+
_ajax_nonce: opts.nonce,
|
442 |
+
action: "save_feed_file",
|
443 |
+
feed: fileName
|
444 |
},
|
445 |
+
success : function( response ) {
|
446 |
+
console.log( response );
|
447 |
+
if( response.success ) {
|
448 |
+
feedProgress.barProgress = 100;
|
|
|
|
|
449 |
showFeedProgress();
|
450 |
+
feedProgress.status.text( response.data.message );
|
451 |
+
regenerateBtn.val( 'Regenerate' );
|
452 |
+
regenerateBtn.disabled( false );
|
453 |
+
// var default_polylang = (response.data.default_polylang) ? response.data.default_polylang : '';
|
454 |
+
window.location.href = "<?php echo admin_url( 'admin.php?page=webappick-manage-feeds&WPFP_WPML_CURLANG=yes&link=' ); ?>" + response.data.url + "&cat=" + response.data.cat;
|
455 |
+
// Polylang code
|
456 |
+
// window.location.href = "<?php // echo admin_url('admin.php?WPFP_WPML_CURLANG=yes&page=webappick-manage-feeds&link='); ?>"+url+"&cat="+cat + "&lang=" + old_lang;
|
457 |
+
}else{
|
458 |
+
showFeedProgress( "red" );
|
459 |
+
feedProgress.status.text( response.data.message );
|
460 |
}
|
461 |
+
},
|
462 |
+
error:function ( response ) {
|
463 |
+
console.log( response );
|
464 |
+
feedProgress.status.text( "Failed to save feed file." );
|
465 |
}
|
466 |
});
|
|
|
|
|
|
|
467 |
}
|
|
|
468 |
|
469 |
+
/*########################################################
|
470 |
+
#######-------------------------------------------#######
|
471 |
+
####### Ajax Feed Making Functions End #######
|
472 |
+
#######-------------------------------------------#######
|
473 |
+
#########################################################
|
474 |
+
*/
|
475 |
+
});
|
476 |
/**
|
477 |
+
* ...and/or other possibilities.
|
478 |
+
*
|
479 |
+
* Ideally, it is not considered best practise to attach more than a
|
480 |
+
* single DOM-ready or window-load handler for a particular page.
|
481 |
+
* Although scripts in the WordPress core, Plugins and Themes may be
|
482 |
+
* practising this, we should strive to set a better example in our own work.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
483 |
*/
|
484 |
+
})( jQuery, window, document, wpf_ajax_obj );
|
485 |
+
</script>
|
486 |
+
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
admin/partials/woo-feed-pro-vs-free.php
CHANGED
@@ -331,7 +331,7 @@ $testimonials = array(
|
|
331 |
<?php } ?>
|
332 |
</div>
|
333 |
<div class="feed-features__more">
|
334 |
-
<a class="button button-primary button-hero" href="https://webappick.com/plugin/woocommerce-product-feed-pro/" target="_blank">See All Features <svg aria-hidden="true" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 17.5 12.5" xml:space="preserve"><path d="M10.6,1.5c-0.4-0.4-0.4-0.9,0-1.3c0.4-0.3,0.9-0.3,1.3,0l5.3,5.3c0.2,0.2,0.3,0.4,0.3,0.7s-0.1,0.5-0.3,0.7 l-5.3,5.3c-0.4,0.4-0.9,0.4-1.3,0c-0.4-0.4-0.4-0.9,0-1.3l3.8-3.8H0.9C0.4,7.1,0,6.7,0,6.2s0.4-0.9,0.9-0.9h13.5L10.6,1.5z M10.6,1.5"></path></svg></a>
|
335 |
</div>
|
336 |
</div>
|
337 |
<div class="clear"></div>
|
@@ -399,7 +399,7 @@ $testimonials = array(
|
|
399 |
</div>
|
400 |
<?php printf( '<ul class="wapk-price__table__features">%s</ul>', $pricingFeatures ); ?>
|
401 |
<div class="wapk-price__table__footer">
|
402 |
-
<a href="<?php echo esc_url( $price['cart_url'] . '&utm_source=freePlugin&utm_medium=go_premium&utm_campaign=free_to_pro&utm_term=wooFeed' ); ?>" class="button button-primary button-hero" target="_blank"><?php esc_html_e( 'Buy Now', 'woo-feed' ); ?></a>
|
403 |
</div>
|
404 |
</div>
|
405 |
<?php if( ! empty( $price['featured'] ) ) { ?>
|
@@ -477,7 +477,7 @@ $testimonials = array(
|
|
477 |
<p><?php _e( 'Have we not answered your question?<br>Don\'t worry, you can contact us for more information...', 'woo-feed') ?></p>
|
478 |
</div>
|
479 |
<div class="wapk-cta-action">
|
480 |
-
<a href="https://webappick.com/support/" class="button button-primary" target="_blank"><?php _e( 'Get Support', 'woo-feed' ); ?></a>
|
481 |
</div>
|
482 |
</div>
|
483 |
</div>
|
331 |
<?php } ?>
|
332 |
</div>
|
333 |
<div class="feed-features__more">
|
334 |
+
<a class="wapk-button wapk-button-primary wapk-button-hero" href="https://webappick.com/plugin/woocommerce-product-feed-pro/" target="_blank">See All Features <svg aria-hidden="true" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 17.5 12.5" xml:space="preserve"><path d="M10.6,1.5c-0.4-0.4-0.4-0.9,0-1.3c0.4-0.3,0.9-0.3,1.3,0l5.3,5.3c0.2,0.2,0.3,0.4,0.3,0.7s-0.1,0.5-0.3,0.7 l-5.3,5.3c-0.4,0.4-0.9,0.4-1.3,0c-0.4-0.4-0.4-0.9,0-1.3l3.8-3.8H0.9C0.4,7.1,0,6.7,0,6.2s0.4-0.9,0.9-0.9h13.5L10.6,1.5z M10.6,1.5"></path></svg></a>
|
335 |
</div>
|
336 |
</div>
|
337 |
<div class="clear"></div>
|
399 |
</div>
|
400 |
<?php printf( '<ul class="wapk-price__table__features">%s</ul>', $pricingFeatures ); ?>
|
401 |
<div class="wapk-price__table__footer">
|
402 |
+
<a href="<?php echo esc_url( $price['cart_url'] . '&utm_source=freePlugin&utm_medium=go_premium&utm_campaign=free_to_pro&utm_term=wooFeed' ); ?>" class="wapk-button wapk-button-primary wapk-button-hero" target="_blank"><?php esc_html_e( 'Buy Now', 'woo-feed' ); ?></a>
|
403 |
</div>
|
404 |
</div>
|
405 |
<?php if( ! empty( $price['featured'] ) ) { ?>
|
477 |
<p><?php _e( 'Have we not answered your question?<br>Don\'t worry, you can contact us for more information...', 'woo-feed') ?></p>
|
478 |
</div>
|
479 |
<div class="wapk-cta-action">
|
480 |
+
<a href="https://webappick.com/support/" class="wapk-button wapk-button-primary" target="_blank"><?php _e( 'Get Support', 'woo-feed' ); ?></a>
|
481 |
</div>
|
482 |
</div>
|
483 |
</div>
|
includes/classes/class-woo-feed-admin-message.php
CHANGED
@@ -10,35 +10,53 @@
|
|
10 |
* @subpackage Woo_Feed/includes
|
11 |
* @author Ohidul Islam <wahid@webappick.com>
|
12 |
*/
|
13 |
-
class Woo_Feed_Message
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
}
|
43 |
}
|
44 |
|
10 |
* @subpackage Woo_Feed/includes
|
11 |
* @author Ohidul Islam <wahid@webappick.com>
|
12 |
*/
|
13 |
+
class Woo_Feed_Message {
|
14 |
+
|
15 |
+
public function infoMessage1() {
|
16 |
+
$reviewURL = 'https://wordpress.org/support/plugin/webappick-product-feed-for-woocommerce/reviews/?rate=5#new-post';
|
17 |
+
?>
|
18 |
+
<table class="wf-info-table widefat fixed">
|
19 |
+
<tbody>
|
20 |
+
<tr>
|
21 |
+
<th>
|
22 |
+
<strong><a style="color:#ee264a;" href="http://bit.ly/2KIwvTt" target="_blank">
|
23 |
+
<span><?php _e( 'Get', 'woo-feed' ); ?></span>
|
24 |
+
<img src="<?php echo esc_url( WOO_FEED_PLUGIN_URL ); ?>admin/images/woo-feed-pro-horizontal-logo.svg" alt="PREMIUM">
|
25 |
+
</a></strong>
|
26 |
+
</th>
|
27 |
+
<th>
|
28 |
+
<strong>
|
29 |
+
<a style="color:#0073aa;" href="http://webappick.helpscoutdocs.com/" target="_blank" ><?php _e( 'Documentation', 'woo-feed' ); ?></a>
|
30 |
+
</strong>
|
31 |
+
</th>
|
32 |
+
<th>
|
33 |
+
<strong>
|
34 |
+
<a style="color:#ee264a;" href="http://bit.ly/2u6giNz" target="_blank"><?php _e( 'Video Tutorials', 'woo-feed' ); ?></a>
|
35 |
+
</strong>
|
36 |
+
</th>
|
37 |
+
<th>
|
38 |
+
<strong>
|
39 |
+
<a style="color:#0DD41E;" href="https://webappick.com/support/" target="_blank"><?php _e( 'Get Free Support', 'woo-feed' ); ?></a>
|
40 |
+
</strong>
|
41 |
+
</th>
|
42 |
+
</tr>
|
43 |
+
</tbody>
|
44 |
+
</table>
|
45 |
+
<table class="wf-rate-table widefat fixed">
|
46 |
+
<tbody>
|
47 |
+
<tr>
|
48 |
+
<th><?php
|
49 |
+
/** @noinspection HtmlUnknownTarget */
|
50 |
+
printf(
|
51 |
+
__( 'If you like <strong>WooCommerce Product Feed</strong>, Please leave us a <a class="review-star" href="%1$s" target="_blank" aria-label="5 Star"><span aria-hidden="true"></span></a> rating <a href="%1$s" target="_blank">here.</a>', 'woo-feed' ),
|
52 |
+
$reviewURL
|
53 |
+
);
|
54 |
+
?></th>
|
55 |
+
</tr>
|
56 |
+
</tbody>
|
57 |
+
</table><br>
|
58 |
+
<?php
|
59 |
+
return ob_get_clean();
|
60 |
}
|
61 |
}
|
62 |
|
includes/classes/class-woo-feed-list-table.php
CHANGED
@@ -791,9 +791,9 @@ class Woo_Feed_List_Table {
|
|
791 |
}
|
792 |
|
793 |
if ( $disable_first ) {
|
794 |
-
$page_links[] = '<span class="tablenav-pages-navspan" aria-hidden="true">«</span>';
|
795 |
} else {
|
796 |
-
$page_links[] = sprintf( "<a class='first-page' href='%s'><span class='screen-reader-text'>%s</span><span aria-hidden='true'>%s</span></a>",
|
797 |
esc_url( remove_query_arg( 'paged', $current_url ) ),
|
798 |
__( 'First page' ),
|
799 |
'«'
|
@@ -801,9 +801,9 @@ class Woo_Feed_List_Table {
|
|
801 |
}
|
802 |
|
803 |
if ( $disable_prev ) {
|
804 |
-
$page_links[] = '<span class="tablenav-pages-navspan" aria-hidden="true">‹</span>';
|
805 |
} else {
|
806 |
-
$page_links[] = sprintf( "<a class='prev-page' href='%s'><span class='screen-reader-text'>%s</span><span aria-hidden='true'>%s</span></a>",
|
807 |
esc_url( add_query_arg( 'paged', max( 1, $current-1 ), $current_url ) ),
|
808 |
__( 'Previous page' ),
|
809 |
'‹'
|
@@ -824,9 +824,9 @@ class Woo_Feed_List_Table {
|
|
824 |
$page_links[] = $total_pages_before . sprintf( _x( '%1$s of %2$s', 'paging' ), $html_current_page, $html_total_pages ) . $total_pages_after;
|
825 |
|
826 |
if ( $disable_next ) {
|
827 |
-
$page_links[] = '<span class="tablenav-pages-navspan" aria-hidden="true">›</span>';
|
828 |
} else {
|
829 |
-
$page_links[] = sprintf( "<a class='next-page' href='%s'><span class='screen-reader-text'>%s</span><span aria-hidden='true'>%s</span></a>",
|
830 |
esc_url( add_query_arg( 'paged', min( $total_pages, $current+1 ), $current_url ) ),
|
831 |
__( 'Next page' ),
|
832 |
'›'
|
@@ -834,9 +834,9 @@ class Woo_Feed_List_Table {
|
|
834 |
}
|
835 |
|
836 |
if ( $disable_last ) {
|
837 |
-
$page_links[] = '<span class="tablenav-pages-navspan" aria-hidden="true">»</span>';
|
838 |
} else {
|
839 |
-
$page_links[] = sprintf( "<a class='last-page' href='%s'><span class='screen-reader-text'>%s</span><span aria-hidden='true'>%s</span></a>",
|
840 |
esc_url( add_query_arg( 'paged', $total_pages, $current_url ) ),
|
841 |
__( 'Last page' ),
|
842 |
'»'
|
791 |
}
|
792 |
|
793 |
if ( $disable_first ) {
|
794 |
+
$page_links[] = '<span class="tablenav-pages-navspan button disabled" aria-hidden="true">«</span>';
|
795 |
} else {
|
796 |
+
$page_links[] = sprintf( "<a class='first-page button' href='%s'><span class='screen-reader-text'>%s</span><span aria-hidden='true'>%s</span></a>",
|
797 |
esc_url( remove_query_arg( 'paged', $current_url ) ),
|
798 |
__( 'First page' ),
|
799 |
'«'
|
801 |
}
|
802 |
|
803 |
if ( $disable_prev ) {
|
804 |
+
$page_links[] = '<span class="tablenav-pages-navspan button disabled" aria-hidden="true">‹</span>';
|
805 |
} else {
|
806 |
+
$page_links[] = sprintf( "<a class='prev-page button' href='%s'><span class='screen-reader-text'>%s</span><span aria-hidden='true'>%s</span></a>",
|
807 |
esc_url( add_query_arg( 'paged', max( 1, $current-1 ), $current_url ) ),
|
808 |
__( 'Previous page' ),
|
809 |
'‹'
|
824 |
$page_links[] = $total_pages_before . sprintf( _x( '%1$s of %2$s', 'paging' ), $html_current_page, $html_total_pages ) . $total_pages_after;
|
825 |
|
826 |
if ( $disable_next ) {
|
827 |
+
$page_links[] = '<span class="tablenav-pages-navspan button disabled" aria-hidden="true">›</span>';
|
828 |
} else {
|
829 |
+
$page_links[] = sprintf( "<a class='next-page button' href='%s'><span class='screen-reader-text'>%s</span><span aria-hidden='true'>%s</span></a>",
|
830 |
esc_url( add_query_arg( 'paged', min( $total_pages, $current+1 ), $current_url ) ),
|
831 |
__( 'Next page' ),
|
832 |
'›'
|
834 |
}
|
835 |
|
836 |
if ( $disable_last ) {
|
837 |
+
$page_links[] = '<span class="tablenav-pages-navspan button disabled" aria-hidden="true">»</span>';
|
838 |
} else {
|
839 |
+
$page_links[] = sprintf( "<a class='last-page button' href='%s'><span class='screen-reader-text'>%s</span><span aria-hidden='true'>%s</span></a>",
|
840 |
esc_url( add_query_arg( 'paged', $total_pages, $current_url ) ),
|
841 |
__( 'Last page' ),
|
842 |
'»'
|
includes/classes/class-woo-feed-tracker.php
CHANGED
@@ -81,7 +81,10 @@ if( ! class_exists( 'WooFeedTracker' ) ) {
|
|
81 |
// $this->license = $client->license();
|
82 |
// $this->updater = $client->updater();
|
83 |
// $this->license->add_settings_page( [ 'type' => 'submenu', 'parent_slug' => 'webappick-manage-feeds', ] );
|
84 |
-
|
|
|
|
|
|
|
85 |
$catCount = wp_count_terms( 'product_cat', ['hide_empty'=> false, 'parent' => 0] );
|
86 |
if( is_wp_error( $catCount ) ) $catCount = 0;
|
87 |
/**
|
@@ -92,6 +95,7 @@ if( ! class_exists( 'WooFeedTracker' ) ) {
|
|
92 |
'products' => $this->insights->get_post_count( 'product' ),
|
93 |
'variations' => $this->insights->get_post_count( 'product_variation' ),
|
94 |
'batch_limit' => get_option( 'woo_feed_per_batch' ),
|
|
|
95 |
|
96 |
'product_cat_num' => $catCount,
|
97 |
] );
|
@@ -115,6 +119,7 @@ if( ! class_exists( 'WooFeedTracker' ) ) {
|
|
115 |
$data = array_merge( $data, [
|
116 |
esc_html__( 'Number of products in your site.', 'woo-feed' ),
|
117 |
esc_html__( 'Number of product categories in your site.', 'woo-feed' ),
|
|
|
118 |
esc_html__( 'Site name, language and url.', 'woo-feed' ),
|
119 |
esc_html__( 'Number of active and inactive plugins.', 'woo-feed' ),
|
120 |
esc_html__( 'Your name and email address.', 'woo-feed' )
|
81 |
// $this->license = $client->license();
|
82 |
// $this->updater = $client->updater();
|
83 |
// $this->license->add_settings_page( [ 'type' => 'submenu', 'parent_slug' => 'webappick-manage-feeds', ] );
|
84 |
+
$result = [];
|
85 |
+
// global $wpdb;
|
86 |
+
// $query = $wpdb->prepare("SELECT * FROM $wpdb->options WHERE option_name LIKE %s;", "wf_feed_%");
|
87 |
+
// $result = $wpdb->get_results($query, 'ARRAY_A');
|
88 |
$catCount = wp_count_terms( 'product_cat', ['hide_empty'=> false, 'parent' => 0] );
|
89 |
if( is_wp_error( $catCount ) ) $catCount = 0;
|
90 |
/**
|
95 |
'products' => $this->insights->get_post_count( 'product' ),
|
96 |
'variations' => $this->insights->get_post_count( 'product_variation' ),
|
97 |
'batch_limit' => get_option( 'woo_feed_per_batch' ),
|
98 |
+
'feed_configs' => json_encode( $result ),
|
99 |
|
100 |
'product_cat_num' => $catCount,
|
101 |
] );
|
119 |
$data = array_merge( $data, [
|
120 |
esc_html__( 'Number of products in your site.', 'woo-feed' ),
|
121 |
esc_html__( 'Number of product categories in your site.', 'woo-feed' ),
|
122 |
+
esc_html__( 'Feed Configuration.', 'woo-feed' ),
|
123 |
esc_html__( 'Site name, language and url.', 'woo-feed' ),
|
124 |
esc_html__( 'Number of active and inactive plugins.', 'woo-feed' ),
|
125 |
esc_html__( 'Your name and email address.', 'woo-feed' )
|
includes/helper.php
CHANGED
@@ -490,8 +490,92 @@ if( ! function_exists( 'woo_feed_unique_feed_slug' ) ) {
|
|
490 |
return $slug;
|
491 |
}
|
492 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
493 |
|
494 |
// File process
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
495 |
if( ! function_exists( 'woo_feed_get_file_dir' ) ) {
|
496 |
/**
|
497 |
* Get Feed Directory
|
@@ -584,6 +668,32 @@ if( ! function_exists( 'woo_feed_unlink_tempFiles' ) ) {
|
|
584 |
}
|
585 |
}
|
586 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
587 |
// Feed Functions
|
588 |
if( ! function_exists( 'woo_feed_get_field_output_type_options' ) ) {
|
589 |
function woo_feed_get_field_output_type_options() {
|
@@ -610,10 +720,16 @@ if( ! function_exists( 'woo_feed_get_schedule_interval_options' ) ) {
|
|
610 |
6 * HOUR_IN_SECONDS => esc_html__( '6 Hours', 'woo-feed' ),
|
611 |
HOUR_IN_SECONDS => esc_html__( '1 Hours', 'woo-feed' ),
|
612 |
15 * MINUTE_IN_SECONDS => esc_html__( '15 Minutes', 'woo-feed' ),
|
613 |
-
5 * MINUTE_IN_SECONDS => esc_html__( '5 Minutes', 'woo-feed' ),
|
614 |
] );
|
615 |
}
|
616 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
617 |
if( ! function_exists('woo_feed_stripInvalidXml' ) ) {
|
618 |
/**
|
619 |
* Remove non supported xml character
|
490 |
return $slug;
|
491 |
}
|
492 |
}
|
493 |
+
if( ! function_exists( 'generate_unique_feed_file_name' ) ) {
|
494 |
+
function generate_unique_feed_file_name( $filename, $type, $provider ) {
|
495 |
+
|
496 |
+
$feedDir = woo_feed_get_file_dir( $provider, $type );
|
497 |
+
$raw_filename = sanitize_title( $filename, '', 'save' );
|
498 |
+
// check option name uniqueness ...
|
499 |
+
$raw_filename = woo_feed_unique_feed_slug( $raw_filename, null );
|
500 |
+
$raw_filename = sanitize_file_name( $raw_filename . '.' . $type );
|
501 |
+
$raw_filename = wp_unique_filename( $feedDir, $raw_filename );
|
502 |
+
$raw_filename = str_replace( '.' . $type , '', $raw_filename );
|
503 |
+
return $raw_filename;
|
504 |
+
}
|
505 |
+
}
|
506 |
|
507 |
// File process
|
508 |
+
if( ! function_exists( 'woo_feed_save_feed_config_data' ) ) {
|
509 |
+
/**
|
510 |
+
* Sanitize And Save Feed config data (array) to db (option table)
|
511 |
+
* @param array $data data to be saved in db
|
512 |
+
* @param null $fileName feed (file) name. optional, if empty or null name will be auto generated
|
513 |
+
* @param bool $configOnly save only wf_config or both wf_config and wf_feed_. default is only wf_config
|
514 |
+
*
|
515 |
+
* @return bool|string return false if failed to update. return filename if success
|
516 |
+
*/
|
517 |
+
function woo_feed_save_feed_config_data( $data, $fileName = null, $configOnly = true ) {
|
518 |
+
if( ! is_array( $data ) ) return false;
|
519 |
+
if( ! isset( $data['filename'], $data['feedType'], $data['provider'], $data['mattributes'] ) ) return false;
|
520 |
+
// Sanitize Fields
|
521 |
+
$data = woo_feed_sanitize_form_fields( $data );
|
522 |
+
if( empty( $fileName ) ) {
|
523 |
+
$fileName = generate_unique_feed_file_name( $data['filename'], $data['feedType'], $data['provider'] );
|
524 |
+
} else {
|
525 |
+
$fileName = str_replace( [ 'wf_feed_', 'wf_config' ], '', $fileName );
|
526 |
+
}
|
527 |
+
/**
|
528 |
+
* Before Updating Config to db
|
529 |
+
*
|
530 |
+
* @param array $config sanitized config
|
531 |
+
* @param string $feed_option_name option name
|
532 |
+
*/
|
533 |
+
do_action( 'woo_feed_before_update_config', $data, "wf_config" . $fileName );
|
534 |
+
# Store Config
|
535 |
+
$update = update_option( "wf_config" . $fileName, $data, false );
|
536 |
+
// save if config update ok...
|
537 |
+
if( $update && $configOnly === false ) {
|
538 |
+
$oldFeed = maybe_unserialize( get_option( "wf_feed_" . $fileName ) );
|
539 |
+
$feedData = array(
|
540 |
+
'feedrules' => $data,
|
541 |
+
'url' => woo_feed_get_file_url( $fileName, $data['provider'], $data['feedType'] ),
|
542 |
+
'last_updated' => date("Y-m-d H:i:s"),
|
543 |
+
'status' => isset( $oldFeed['status'] ) ? $oldFeed['status'] : 1,
|
544 |
+
);
|
545 |
+
$update = update_option( 'wf_feed_' . $fileName, maybe_serialize( $feedData ), false );
|
546 |
+
}
|
547 |
+
// return filename on success or update status
|
548 |
+
return $update ? $fileName : $update;
|
549 |
+
}
|
550 |
+
}
|
551 |
+
if( ! function_exists( 'woo_feed_get_file_url' ) ) {
|
552 |
+
/**
|
553 |
+
* Get Feed File URL
|
554 |
+
* @param string $fileName
|
555 |
+
* @param string $provider
|
556 |
+
* @param string $type
|
557 |
+
*
|
558 |
+
* @return string
|
559 |
+
*/
|
560 |
+
function woo_feed_get_file_url( $fileName, $provider, $type ) {
|
561 |
+
$upload_dir = wp_upload_dir();
|
562 |
+
return esc_url( sprintf( '%s/woo-feed/%s/%s/%s.%s', $upload_dir['baseurl'], $provider, $type, $fileName, $type ) );
|
563 |
+
}
|
564 |
+
}
|
565 |
+
if( ! function_exists( 'woo_feed_check_feed_file' ) ) {
|
566 |
+
/**
|
567 |
+
* Check if feed file exists
|
568 |
+
* @param string $fileName
|
569 |
+
* @param string $provider
|
570 |
+
* @param string $type
|
571 |
+
*
|
572 |
+
* @return bool
|
573 |
+
*/
|
574 |
+
function woo_feed_check_feed_file( $fileName, $provider, $type ) {
|
575 |
+
$upload_dir = wp_upload_dir();
|
576 |
+
return file_exists( sprintf( '%s/woo-feed/%s/%s/%s.%s', $upload_dir['basedir'], $provider, $type, $fileName, $type ) );
|
577 |
+
}
|
578 |
+
}
|
579 |
if( ! function_exists( 'woo_feed_get_file_dir' ) ) {
|
580 |
/**
|
581 |
* Get Feed Directory
|
668 |
}
|
669 |
}
|
670 |
|
671 |
+
// Mics..
|
672 |
+
if( ! function_exists( 'woo_feed_remove_query_args' ) ) {
|
673 |
+
/**
|
674 |
+
* Add more items to the removable query args array...
|
675 |
+
* @param array $removable_query_args
|
676 |
+
*
|
677 |
+
* @return array
|
678 |
+
*/
|
679 |
+
function woo_feed_remove_query_args( $removable_query_args ) {
|
680 |
+
if( isset( $_GET['page'] ) && 'webappick-manage-feeds' == $_GET['page'] ) {
|
681 |
+
$removable_query_args[] = 'feed_created';
|
682 |
+
$removable_query_args[] = 'feed_updated';
|
683 |
+
$removable_query_args[] = 'feed_regenerate';
|
684 |
+
$removable_query_args[] = 'feed_name';
|
685 |
+
$removable_query_args[] = 'link';
|
686 |
+
$removable_query_args[] = 'wpf_message';
|
687 |
+
$removable_query_args[] = 'cat';
|
688 |
+
$removable_query_args[] = 'schedule_updated';
|
689 |
+
/** @noinspection SpellCheckingInspection */
|
690 |
+
$removable_query_args[] = 'WPFP_WPML_CURLANG';
|
691 |
+
}
|
692 |
+
return $removable_query_args;
|
693 |
+
}
|
694 |
+
add_filter( 'removable_query_args', 'woo_feed_remove_query_args', 10, 1 );
|
695 |
+
}
|
696 |
+
|
697 |
// Feed Functions
|
698 |
if( ! function_exists( 'woo_feed_get_field_output_type_options' ) ) {
|
699 |
function woo_feed_get_field_output_type_options() {
|
720 |
6 * HOUR_IN_SECONDS => esc_html__( '6 Hours', 'woo-feed' ),
|
721 |
HOUR_IN_SECONDS => esc_html__( '1 Hours', 'woo-feed' ),
|
722 |
15 * MINUTE_IN_SECONDS => esc_html__( '15 Minutes', 'woo-feed' ),
|
|
|
723 |
] );
|
724 |
}
|
725 |
}
|
726 |
+
if( ! function_exists( 'woo_feed_get_minimum_interval_option' ) ) {
|
727 |
+
function woo_feed_get_minimum_interval_option(){
|
728 |
+
$intervals = array_keys( woo_feed_get_schedule_interval_options() );
|
729 |
+
if( ! empty( $intervals ) ) return end( $intervals );
|
730 |
+
return 15* MINUTE_IN_SECONDS;
|
731 |
+
}
|
732 |
+
}
|
733 |
if( ! function_exists('woo_feed_stripInvalidXml' ) ) {
|
734 |
/**
|
735 |
* Remove non supported xml character
|
libs/WebAppick/AppServices/Client.php
CHANGED
@@ -195,7 +195,7 @@ class Client {
|
|
195 |
$this->basename = plugin_basename( $this->file );
|
196 |
/** @noinspection SpellCheckingInspection, PhpUnusedLocalVariableInspection */
|
197 |
list( $this->slug, $mainfile ) = explode( '/', $this->basename );
|
198 |
-
if( ! function_exists( '
|
199 |
$plugin_data = get_plugin_data( $this->file );
|
200 |
$this->project_version = $plugin_data['Version'];
|
201 |
$this->type = 'plugin';
|
195 |
$this->basename = plugin_basename( $this->file );
|
196 |
/** @noinspection SpellCheckingInspection, PhpUnusedLocalVariableInspection */
|
197 |
list( $this->slug, $mainfile ) = explode( '/', $this->basename );
|
198 |
+
if( ! function_exists( 'get_plugin_data' ) ) require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
199 |
$plugin_data = get_plugin_data( $this->file );
|
200 |
$this->project_version = $plugin_data['Version'];
|
201 |
$this->type = 'plugin';
|
libs/WebAppick/AppServices/Insights.php
CHANGED
@@ -552,7 +552,7 @@ class Insights {
|
|
552 |
if ( 'yes' !== $allowed ) return;
|
553 |
// re-schedule and delete the last sent time so we could force send again
|
554 |
wp_schedule_event( time(), 'weekly', $this->client->getSlug() . '_tracker_send_event' );
|
555 |
-
wp_schedule_event( time(), 'daily', $this->client->getSlug() . '_license_check_event' );
|
556 |
delete_option( $this->client->getSlug() . '_tracking_last_send' );
|
557 |
$this->send_tracking_data( true );
|
558 |
}
|
@@ -564,6 +564,7 @@ class Insights {
|
|
564 |
*/
|
565 |
public function deactivation_cleanup() {
|
566 |
$this->__clear_schedule_event();
|
|
|
567 |
if ( 'theme' == $this->client->getType() ) {
|
568 |
delete_option( $this->client->getSlug() . '_tracking_last_send' );
|
569 |
delete_option( $this->client->getSlug() . '_allow_tracking' );
|
552 |
if ( 'yes' !== $allowed ) return;
|
553 |
// re-schedule and delete the last sent time so we could force send again
|
554 |
wp_schedule_event( time(), 'weekly', $this->client->getSlug() . '_tracker_send_event' );
|
555 |
+
// wp_schedule_event( time(), 'daily', $this->client->getSlug() . '_license_check_event' );
|
556 |
delete_option( $this->client->getSlug() . '_tracking_last_send' );
|
557 |
$this->send_tracking_data( true );
|
558 |
}
|
564 |
*/
|
565 |
public function deactivation_cleanup() {
|
566 |
$this->__clear_schedule_event();
|
567 |
+
// wp_clear_scheduled_hook( $this->client->getSlug() . '_license_check_event' );
|
568 |
if ( 'theme' == $this->client->getType() ) {
|
569 |
delete_option( $this->client->getSlug() . '_tracking_last_send' );
|
570 |
delete_option( $this->client->getSlug() . '_allow_tracking' );
|
woo-feed.php
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
* Plugin Name: WooCommerce Product Feed
|
16 |
* Plugin URI: https://webappick.com/
|
17 |
* Description: This plugin generate WooCommerce product feed for Shopping Engines like Google Shopping,Facebook Product Feed,eBay,Amazon,Idealo and many more..
|
18 |
-
* Version: 3.2.
|
19 |
* Author: WebAppick
|
20 |
* Author URI: https://webappick.com/
|
21 |
* License: GPL v2
|
@@ -41,7 +41,7 @@ if ( ! defined( 'WOO_FEED_FREE_VERSION' ) ) {
|
|
41 |
* Plugin Version
|
42 |
* @var string
|
43 |
*/
|
44 |
-
define( 'WOO_FEED_FREE_VERSION', '3.2.
|
45 |
}
|
46 |
if ( ! defined( 'WOO_FEED_FREE_FILE') ) {
|
47 |
/**
|
@@ -245,8 +245,8 @@ if ( ! function_exists( 'woo_feed_make_batch_feed' ) ) {
|
|
245 |
|
246 |
//$limit=sanitize_text_field($_POST['limit']);
|
247 |
//$offset=sanitize_text_field($_POST['offset']);
|
248 |
-
$feedName=sanitize_text_field(str_replace("wf_feed_",""
|
249 |
-
$feedInfo=get_option($feedName);
|
250 |
|
251 |
if(!$feedInfo){
|
252 |
$getFeedConfig=unserialize(get_option($feedName));
|
@@ -258,7 +258,7 @@ if ( ! function_exists( 'woo_feed_make_batch_feed' ) ) {
|
|
258 |
$feedInfo['productIds'] = $products;
|
259 |
|
260 |
|
261 |
-
if($offset==0){
|
262 |
$fileName = str_replace(" ", "",$feedInfo['filename']);
|
263 |
$type = $feedInfo['feedType'];
|
264 |
$feedService = $feedInfo['provider'];
|
@@ -673,27 +673,20 @@ if ( ! function_exists( 'woo_feed_generate_feed' ) ) {
|
|
673 |
if ( ! in_array( $_POST['feedType'], array( 'xml', 'csv', 'txt', 'tsv' ) ) ) {
|
674 |
wp_die( 'Invalid Feed Type!' );
|
675 |
}
|
676 |
-
// Sanitize Fields
|
677 |
-
$_data = woo_feed_sanitize_form_fields( $_POST );
|
678 |
-
//@TODO simplefy feed db, combine wf_config & wf_feed_ prefix...
|
679 |
-
$feedDir = woo_feed_get_file_dir( $_data['provider'], $_data['feedType'] );
|
680 |
-
$_data['filename'] = sanitize_title( $_data['filename'], '', 'save' );
|
681 |
-
// check option name uniqueness ...
|
682 |
-
$_data['filename'] = woo_feed_unique_feed_slug( $_data['filename'], null );
|
683 |
-
$_data['filename'] = sanitize_file_name( $_data['filename'] . '.' . $_data['feedType'] );
|
684 |
-
$_data['filename'] = wp_unique_filename( $feedDir, $_data['filename'] );
|
685 |
-
$_data['filename'] = str_replace( '.' . $_data['feedType'] , '', $_data['filename'] );
|
686 |
-
# Option Name
|
687 |
-
$fileName = "wf_config" . $_data['filename'];
|
688 |
-
# Store Config
|
689 |
-
update_option( $fileName, $_data );
|
690 |
|
|
|
691 |
# Schedule Cron
|
692 |
-
$arg = array(
|
693 |
|
694 |
wp_schedule_event(time(), 'woo_feed_corn', 'woo_feed_update_single_feed', $arg );
|
695 |
|
696 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
697 |
} else {
|
698 |
echo "<div class='notice notice-warning is-dismissible'><p>" . __("You are awesome for using <b>WooCommerce Product Feed</b>. Free version works great for up to <b>2000 products including variations.</b>", 'woo-feed') . "</p></div>";
|
699 |
require WOO_FEED_FREE_ADMIN_PATH . "partials/woo-feed-admin-display.php";
|
@@ -706,9 +699,9 @@ if ( ! function_exists( 'woo_feed_manage_feed' ) ) {
|
|
706 |
*/
|
707 |
function woo_feed_manage_feed() {
|
708 |
// Manage action for category mapping
|
709 |
-
if
|
710 |
if( ! defined( 'WOO_FEED_EDIT_CONFIG' ) ) define( 'WOO_FEED_EDIT_CONFIG', true );
|
711 |
-
if
|
712 |
# Verify Nonce
|
713 |
if ( ! wp_verify_nonce( $_POST['_wpnonce'], 'wf_edit_feed' ) ) {
|
714 |
wp_die( 'Failed security check' );
|
@@ -717,18 +710,28 @@ if ( ! function_exists( 'woo_feed_manage_feed' ) ) {
|
|
717 |
if ( ! in_array( $_POST['feedType'], array( 'xml', 'csv', 'txt', 'tsv' ) ) ) {
|
718 |
wp_die( 'Invalid Feed Type!' );
|
719 |
}
|
720 |
-
//
|
721 |
-
|
722 |
-
|
723 |
-
$
|
724 |
-
|
725 |
-
|
726 |
|
727 |
-
|
728 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
729 |
}
|
730 |
|
731 |
if ( isset( $_GET['feed'] ) && ! empty( $_GET['feed'] ) ) {
|
|
|
732 |
global $wpdb, $feedRules, $fname, $feedId, $provider;
|
733 |
$fname = sanitize_text_field( $_GET['feed'] );
|
734 |
$feedInfo = unserialize( get_option( $fname ) );
|
@@ -742,13 +745,20 @@ if ( ! function_exists( 'woo_feed_manage_feed' ) ) {
|
|
742 |
} else {
|
743 |
# Update Interval
|
744 |
if ( isset( $_POST['wf_schedule'] ) ) {
|
745 |
-
if (
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
750 |
}
|
751 |
-
|
752 |
require WOO_FEED_FREE_ADMIN_PATH . "partials/woo-feed-manage-list.php";
|
753 |
}
|
754 |
}
|
15 |
* Plugin Name: WooCommerce Product Feed
|
16 |
* Plugin URI: https://webappick.com/
|
17 |
* Description: This plugin generate WooCommerce product feed for Shopping Engines like Google Shopping,Facebook Product Feed,eBay,Amazon,Idealo and many more..
|
18 |
+
* Version: 3.2.7
|
19 |
* Author: WebAppick
|
20 |
* Author URI: https://webappick.com/
|
21 |
* License: GPL v2
|
41 |
* Plugin Version
|
42 |
* @var string
|
43 |
*/
|
44 |
+
define( 'WOO_FEED_FREE_VERSION', '3.2.7' );
|
45 |
}
|
46 |
if ( ! defined( 'WOO_FEED_FREE_FILE') ) {
|
47 |
/**
|
245 |
|
246 |
//$limit=sanitize_text_field($_POST['limit']);
|
247 |
//$offset=sanitize_text_field($_POST['offset']);
|
248 |
+
$feedName = sanitize_text_field( str_replace( "wf_feed_", "", $_POST['feed'] ) );
|
249 |
+
$feedInfo = get_option( $feedName );
|
250 |
|
251 |
if(!$feedInfo){
|
252 |
$getFeedConfig=unserialize(get_option($feedName));
|
258 |
$feedInfo['productIds'] = $products;
|
259 |
|
260 |
|
261 |
+
if( $offset == 0 ){
|
262 |
$fileName = str_replace(" ", "",$feedInfo['filename']);
|
263 |
$type = $feedInfo['feedType'];
|
264 |
$feedService = $feedInfo['provider'];
|
673 |
if ( ! in_array( $_POST['feedType'], array( 'xml', 'csv', 'txt', 'tsv' ) ) ) {
|
674 |
wp_die( 'Invalid Feed Type!' );
|
675 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
676 |
|
677 |
+
$fileName = woo_feed_save_feed_config_data( $_POST );
|
678 |
# Schedule Cron
|
679 |
+
$arg = array( $fileName );
|
680 |
|
681 |
wp_schedule_event(time(), 'woo_feed_corn', 'woo_feed_update_single_feed', $arg );
|
682 |
|
683 |
+
wp_redirect( add_query_arg( [
|
684 |
+
'feed_created' => false !== $fileName,
|
685 |
+
'feed_regenerate' => 1,
|
686 |
+
'feed_name' => $fileName,
|
687 |
+
], admin_url( 'admin.php?page=webappick-manage-feeds' ) ) );
|
688 |
+
die();
|
689 |
+
|
690 |
} else {
|
691 |
echo "<div class='notice notice-warning is-dismissible'><p>" . __("You are awesome for using <b>WooCommerce Product Feed</b>. Free version works great for up to <b>2000 products including variations.</b>", 'woo-feed') . "</p></div>";
|
692 |
require WOO_FEED_FREE_ADMIN_PATH . "partials/woo-feed-admin-display.php";
|
699 |
*/
|
700 |
function woo_feed_manage_feed() {
|
701 |
// Manage action for category mapping
|
702 |
+
if( isset( $_GET['action'] ) && $_GET['action'] == 'edit-feed' ) {
|
703 |
if( ! defined( 'WOO_FEED_EDIT_CONFIG' ) ) define( 'WOO_FEED_EDIT_CONFIG', true );
|
704 |
+
if( count( $_POST ) && isset( $_POST['provider'], $_POST['feed_id'], $_POST['filename'], $_POST['feedType'] ) ) {
|
705 |
# Verify Nonce
|
706 |
if ( ! wp_verify_nonce( $_POST['_wpnonce'], 'wf_edit_feed' ) ) {
|
707 |
wp_die( 'Failed security check' );
|
710 |
if ( ! in_array( $_POST['feedType'], array( 'xml', 'csv', 'txt', 'tsv' ) ) ) {
|
711 |
wp_die( 'Invalid Feed Type!' );
|
712 |
}
|
713 |
+
// check if name is changed... save as new, rename feed isn't implemented ... it can be...
|
714 |
+
// @TODO delete old feed save data as new feed.
|
715 |
+
// old/original name
|
716 |
+
$original_name = ( isset( $_POST['original_feed_name'] ) && ! empty( $_POST['original_feed_name'] ) ) ? sanitize_text_field( $_POST['original_feed_name'] ) : '';
|
717 |
+
$fileName = sanitize_text_field( $_POST['filename'] );
|
718 |
+
$fileName = ( $original_name === $fileName ) ? $fileName : null;
|
719 |
|
720 |
+
// if form submitted via $_POST['edit-feed'] then only config and regenerate otherwise only update the config...
|
721 |
+
// no need to check other submit button ... eg. $_POST['save_feed_config']
|
722 |
+
$fileName = woo_feed_save_feed_config_data( $_POST, $fileName, isset( $_POST['edit-feed'] ) );
|
723 |
+
// redirect to the feed list with status
|
724 |
+
// @TODO this should be handled in admin_init action for proper redirection to work...
|
725 |
+
wp_redirect( add_query_arg( [
|
726 |
+
'feed_updated' => false !== $fileName,
|
727 |
+
'feed_regenerate' => (int) isset( $_POST['edit-feed'] ),
|
728 |
+
'feed_name' => $fileName,
|
729 |
+
], admin_url( 'admin.php?page=webappick-manage-feeds' ) ) );
|
730 |
+
die();
|
731 |
}
|
732 |
|
733 |
if ( isset( $_GET['feed'] ) && ! empty( $_GET['feed'] ) ) {
|
734 |
+
|
735 |
global $wpdb, $feedRules, $fname, $feedId, $provider;
|
736 |
$fname = sanitize_text_field( $_GET['feed'] );
|
737 |
$feedInfo = unserialize( get_option( $fname ) );
|
745 |
} else {
|
746 |
# Update Interval
|
747 |
if ( isset( $_POST['wf_schedule'] ) ) {
|
748 |
+
if( isset( $_POST['wf_schedule_nonce'] ) && wp_verify_nonce( $_POST['wf_schedule_nonce'],'wf_schedule' ) ) {
|
749 |
+
$interval = absint( $_POST['wf_schedule'] );
|
750 |
+
if( $interval >= woo_feed_get_minimum_interval_option() ) {
|
751 |
+
if ( update_option('wf_schedule', sanitize_text_field( $_POST['wf_schedule'] ) ) ) {
|
752 |
+
wp_clear_scheduled_hook('woo_feed_update');
|
753 |
+
add_filter( 'cron_schedules', 'Woo_Feed_installer::cron_schedules' );
|
754 |
+
wp_schedule_event( time(), 'woo_feed_corn', 'woo_feed_update' );
|
755 |
+
$update = 1; // success
|
756 |
+
} else $update = 2; // db fail
|
757 |
+
} else $update = 3; // invalid value
|
758 |
+
} else $update = 4; // invalid nonce
|
759 |
+
wp_redirect( add_query_arg( [ 'schedule_updated' => $update ], admin_url( 'admin.php?page=webappick-manage-feeds' ) ) );
|
760 |
+
wp_die();
|
761 |
}
|
|
|
762 |
require WOO_FEED_FREE_ADMIN_PATH . "partials/woo-feed-manage-list.php";
|
763 |
}
|
764 |
}
|