Changeset 2868951
- Timestamp:
- 02/21/2023 06:29:59 PM (3 years ago)
- Location:
- shop-2-api/trunk
- Files:
-
- 9 edited
-
assets/shop2api_order.js (modified) (5 diffs)
-
includes/Api/Shop2ApiConnect.php (modified) (2 diffs)
-
includes/Base/AjaxButtonActions.php (modified) (19 diffs)
-
includes/Base/Enqueue.php (modified) (13 diffs)
-
includes/Base/EnqueueWC.php (modified) (4 diffs)
-
includes/Base/EnqueueWCAPI.php (modified) (4 diffs)
-
readme.txt (modified) (1 diff)
-
shop-2-api.php (modified) (2 diffs)
-
templates/bol-order-sync.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
shop-2-api/trunk/assets/shop2api_order.js
r2858515 r2868951 41 41 42 42 // Select change 43 $(document).on( 'change', '#orders-ean', handle_cat_change); 43 $(document).on( 'change', '#orders-ean', handle_cat_change_ean); 44 $(document).on( 'change', '#orders-combideal-ean', handle_cat_change_ean_combi); 44 45 }) 45 46 46 function handle_cat_change (e,) {47 function handle_cat_change_ean() { 47 48 $('#orders-ean-value').children().remove() 48 49 if ($(this).val() === 'Product') { 49 populate_product_dropdown( );50 populate_product_dropdown($('#orders-ean-value')); 50 51 } 51 52 if ($(this).val() === 'MetaData') { 52 populate_metadata_dropdown(); 53 populate_metadata_dropdown($('#orders-ean-value')); 54 } 55 } 56 57 function handle_cat_change_ean_combi() { 58 $('#orders-combideal-ean-value').children().remove() 59 if ($(this).val() === 'Product') { 60 populate_product_dropdown($('#orders-combideal-ean-value')); 61 } 62 if ($(this).val() === 'MetaData') { 63 populate_metadata_dropdown($('#orders-combideal-ean-value')); 53 64 } 54 65 } … … 69 80 } 70 81 71 function populate_product_dropdown( ) {82 function populate_product_dropdown(_select_ean) { 72 83 let woocommerce_option_properties = settings.wc_field_options.success.schema.properties; 73 let _select = $('#wc-price-field');74 let _select_ean = $('#orders-ean-value');75 84 76 85 for (const item in woocommerce_option_properties) { … … 82 91 let value_text = item + '|' + sub_item; 83 92 let dropdown_values = {"value": value_text, "text": value_text} 84 $('<option />', dropdown_values).appendTo(_select);85 93 $('<option />', dropdown_values).appendTo(_select_ean); 86 94 } 87 95 } else { 88 96 let dropdown_values = {"value": item, "text": item} 89 $('<option />', dropdown_values).appendTo(_select);90 97 $('<option />', dropdown_values).appendTo(_select_ean); 91 98 } … … 100 107 101 108 $('#orders-active').prop('checked', order_data.active); 109 $('#orders-combideals-active').prop('checked', order_data.combi_deal_active); 102 110 $('#orders-status').val(order_data.status); 103 111 $('#orders-paid').prop('checked', order_data.paid); 104 112 105 113 document.getElementById("orders-ean").value = order_data.woocommerce_ean_category; 114 document.getElementById("orders-combideal-ean").value = order_data.combi_deal_ean_category; 115 106 116 if (order_data.woocommerce_ean_category === 'Product') { 107 populate_product_dropdown( );108 document.getElementById("orders-ean-value").value = order_data.woocommerce_ean_field;117 populate_product_dropdown($('#orders-ean-value')); 118 populate_product_dropdown($('#orders-combideal-ean-value')); 109 119 } 110 120 111 121 if (order_data.woocommerce_ean_category === 'MetaData') { 112 populate_metadata_dropdown( );113 document.getElementById("orders-ean-value").value = order_data.woocommerce_ean_field;122 populate_metadata_dropdown($('#orders-ean-value')); 123 populate_metadata_dropdown($('#orders-combideal-ean-value')); 114 124 } 115 125 126 document.getElementById("orders-ean-value").value = order_data.woocommerce_ean_field; 127 document.getElementById("orders-combideal-ean-value").value = order_data.combi_deal_ean_field; 116 128 return 117 129 } … … 120 132 } 121 133 122 // function populate_attribute_dropdown() { 123 // for (let i in settings.wc_metadata_dropdown_values.success) { 124 // let wc_metadata_val = settings.wc_metadata_dropdown_values.success[i]; 125 // let _select_ean_dropdown = $('#orders-ean-value'); 126 // 127 // let dropdown_values = { 128 // 'value': wc_metadata_val['bol_category'], 129 // 'text': wc_metadata_val['woocommerce_field'] 130 // } 131 // 132 // $('<option />', dropdown_values).appendTo(_select_ean_dropdown); 133 // } 134 // } 135 136 function populate_metadata_dropdown() { 137 for (i in settings.wc_metadata_dropdown_values.success) { 134 function populate_metadata_dropdown(_select_ean_dropdown) { 135 for (let i in settings.wc_metadata_dropdown_values.success) { 138 136 let wc_metadata_val = settings.wc_metadata_dropdown_values.success[i]; 139 let _select_ean_dropdown = $('#orders-ean-value');140 137 141 138 let dropdown_values = { -
shop-2-api/trunk/includes/Api/Shop2ApiConnect.php
r2858515 r2868951 456 456 457 457 // Set Order data 458 public function set_order_data($active, $status, $paid, $woocommerce_ean_field, $woocommerce_ean_category) 458 public function set_order_data( 459 $active, $status, $paid, $woocommerce_ean_field, $woocommerce_ean_category, $combideal_active, 460 $combideal_ean_field, $combideal_ean_category 461 ) 459 462 { 460 463 $order = $this->get_order(); … … 476 479 "product" => $order["id"], 477 480 "woocommerce_ean_field" => $woocommerce_ean_field, 478 "woocommerce_ean_category" => $woocommerce_ean_category 481 "woocommerce_ean_category" => $woocommerce_ean_category, 482 "combi_deal_active" => ($combideal_active != ''), 483 "combi_deal_ean_field" => $combideal_ean_field, 484 "combi_deal_ean_category" => $combideal_ean_category, 479 485 ]; 480 486 -
shop-2-api/trunk/includes/Base/AjaxButtonActions.php
r2858515 r2868951 19 19 } 20 20 21 public function register() 22 {21 public function register(): void 22 { 23 23 //Bol Api Information 24 24 add_action( 'wp_ajax_get_shop_2_api_information_bol', array( $this, 'get_shop_2_api_information_bol' ) ); … … 77 77 } 78 78 79 private function check_nonce() 80 {79 private function check_nonce(): void 80 { 81 81 // check the nonce 82 82 if ( ! wp_verify_nonce( $_POST['nonce'], 'ajax-nonce' ) ) … … 86 86 } 87 87 88 public function get_wc_summary_report_offer() 88 public function get_wc_summary_report_offer(): void 89 89 { 90 90 require_once SHOP2API_PLUGIN_PATH . '/includes/Api/Shop2ApiConnect.php'; … … 94 94 } 95 95 96 public function get_wc_summary_report_product() 96 public function get_wc_summary_report_product(): void 97 97 { 98 98 require_once SHOP2API_PLUGIN_PATH . '/includes/Api/Shop2ApiConnect.php'; … … 102 102 } 103 103 104 public function get_wc_summary_report_order() 104 public function get_wc_summary_report_order(): void 105 105 { 106 106 require_once SHOP2API_PLUGIN_PATH . '/includes/Api/Shop2ApiConnect.php'; … … 110 110 } 111 111 112 public function get_wc_order_report_data() 112 public function get_wc_order_report_data(): void 113 113 { 114 114 require_once SHOP2API_PLUGIN_PATH . '/includes/Api/Shop2ApiConnect.php'; … … 118 118 } 119 119 120 public function set_wc_order_status() 120 public function set_wc_order_status(): void 121 121 { 122 122 $new_status = $_POST['status']; … … 129 129 } 130 130 131 public function start_stop_sync_for_wc_id() 131 public function start_stop_sync_for_wc_id(): void 132 132 { 133 133 $this->check_nonce(); … … 158 158 } 159 159 160 public function remove_ean_from_bol() 160 public function remove_ean_from_bol(): void 161 161 { 162 162 $this->check_nonce(); … … 165 165 } 166 166 167 public function set_shop_2_api_information_bol() 168 {167 public function set_shop_2_api_information_bol(): void 168 { 169 169 $this->check_nonce(); 170 170 … … 178 178 } 179 179 180 public function set_shop_2_api_information_wc() 181 {180 public function set_shop_2_api_information_wc(): void 181 { 182 182 $this->check_nonce(); 183 183 … … 191 191 } 192 192 193 public function get_shop_2_api_information_bol() 194 {193 public function get_shop_2_api_information_bol(): void 194 { 195 195 $shop_2_api_response = $this->shop_2_api_connections->get_bol_connection_info(); 196 196 $this->handle_api_response($shop_2_api_response); 197 197 } 198 198 199 public function get_shop_2_api_information_wc() 200 {199 public function get_shop_2_api_information_wc(): void 200 { 201 201 $shop_2_api_response = $this->shop_2_api_connections->get_wc_connection_info(); 202 202 $this->handle_api_response($shop_2_api_response); 203 203 } 204 204 205 public function set_shop_2_api_bol_wc_offer_mapping() 206 {205 public function set_shop_2_api_bol_wc_offer_mapping(): void 206 { 207 207 $this->check_nonce(); 208 208 … … 214 214 } 215 215 216 public function get_woocommerce_values() 217 {216 public function get_woocommerce_values(): void 217 { 218 218 $shop_2_api_response = $this->shop_2_api_connections->get_wc_product_values($_POST['value']); 219 219 $this->handle_api_response($shop_2_api_response); 220 220 } 221 221 222 public function get_bol_offer_info() 223 {222 public function get_bol_offer_info(): void 223 { 224 224 $shop_2_api_response = $this->shop_2_api_connections->get_bol_offer_info(); 225 225 $this->handle_api_response($shop_2_api_response); 226 226 } 227 227 228 public function get_bol_category_info() 229 {228 public function get_bol_category_info(): void 229 { 230 230 $shop_2_api_response = $this->shop_2_api_connections->get_bol_category_info(); 231 231 $this->handle_api_response($shop_2_api_response); 232 232 } 233 233 234 public function get_bol_category_info_by_value() 235 {234 public function get_bol_category_info_by_value(): void 235 { 236 236 $this->check_nonce(); 237 237 … … 240 240 } 241 241 242 public function register_shop_2_api_free_account() 243 {242 public function register_shop_2_api_free_account(): void 243 { 244 244 $shop_2_api_response = $this->shop_2_api_connections->register_shop_2_api_free_account($_POST['email']); 245 245 … … 259 259 } 260 260 261 public function get_bol_wc_mapping_info() 262 {261 public function get_bol_wc_mapping_info(): void 262 { 263 263 $shop_2_api_response = $this->shop_2_api_connections->get_bol_wc_mapping_info(); 264 264 $this->handle_api_response($shop_2_api_response); 265 265 } 266 266 267 public function sync_woocommerce_to_bol() 268 {267 public function sync_woocommerce_to_bol(): void 268 { 269 269 $shop_2_api_response = $this->shop_2_api_connections->sync_woocommerce_to_bol(); 270 270 $this->handle_api_response($shop_2_api_response); 271 271 } 272 272 273 public function get_bol_connection_report() 274 {273 public function get_bol_connection_report(): void 274 { 275 275 $shop_2_api_response = $this->shop_2_api_connections->get_bol_connection_report(); 276 276 $this->handle_api_response($shop_2_api_response); 277 277 } 278 278 279 public function get_koopblok_data() 280 {279 public function get_koopblok_data(): void 280 { 281 281 $shop_2_api_response = $this->shop_2_api_connections->get_koopblok_data(); 282 282 $this->handle_api_response($shop_2_api_response); 283 283 } 284 284 285 public function set_koopblok_data() 286 {285 public function set_koopblok_data(): void 286 { 287 287 $this->check_nonce(); 288 288 $shop_2_api_response = $this->shop_2_api_connections->set_koopblok_data( … … 300 300 } 301 301 302 public function get_order_data() 302 public function get_order_data(): void 303 303 { 304 304 $shop_2_api_response = $this->shop_2_api_connections->get_order_data(); … … 306 306 } 307 307 308 public function set_order_data() 308 public function set_order_data(): void 309 309 { 310 310 $this->check_nonce(); 311 311 $shop_2_api_response = $this->shop_2_api_connections->set_order_data( 312 312 $_POST['orders-active'], $_POST['orders-status'], $_POST['orders-paid'], $_POST['orders-ean-value'], 313 $_POST['orders-ean'] 313 $_POST['orders-ean'], $_POST['orders-combideals-active'], $_POST['orders-combideal-ean-value'], 314 $_POST['orders-combideal-ean'] 314 315 ); 315 316 … … 317 318 } 318 319 319 public function get_user_message() 320 public function get_user_message(): void 320 321 { 321 322 $shop_2_api_response = $this->shop_2_api_connections->get_user_message(); … … 323 324 } 324 325 325 private static function handle_api_response($shop_2_api_response) 326 {326 private static function handle_api_response($shop_2_api_response): void 327 { 327 328 $return = 'Error Reaching the Server'; 328 329 if ( is_wp_error( $shop_2_api_response ) ) -
shop-2-api/trunk/includes/Base/Enqueue.php
r2858515 r2868951 11 11 class Shop2Api_Enqueue 12 12 { 13 public function version_id() 13 public function version_id(): string 14 14 { 15 15 if (WP_DEBUG) … … 18 18 } 19 19 20 public function register() 20 public function register(): void 21 21 { 22 22 add_action('admin_notices', array($this, 'get_server_user_message')); … … 41 41 * @param string $taxonomy Taxonomy Slug 42 42 */ 43 public function fire_update_events($term_id, $tt_id, $taxonomy) 43 public function fire_update_events($term_id, $tt_id, $taxonomy): void 44 44 { 45 45 require_once SHOP2API_PLUGIN_PATH . '/includes/Api/Shop2ApiConnect.php'; … … 53 53 } 54 54 55 public function fire_update_events_attr($id) 55 public function fire_update_events_attr($id): void 56 56 { 57 57 require_once SHOP2API_PLUGIN_PATH . '/includes/Api/Shop2ApiConnect.php'; … … 68 68 } 69 69 70 public function fire_sync_event($product_id) 70 public function fire_sync_event($product_id): void 71 71 { 72 72 if (isset($_POST['shop2api_sync_called'])) { … … 83 83 } 84 84 85 function get_server_user_message() 85 function get_server_user_message(): void 86 86 { 87 87 require_once SHOP2API_PLUGIN_PATH . '/includes/Base/CommonFunctions.php'; … … 102 102 } 103 103 104 public function enqueue_items($hook) 104 public function enqueue_items($hook): void 105 105 { 106 106 $this->add_wc_style_scripts(); … … 153 153 } 154 154 155 private function add_wc_style_scripts() 155 private function add_wc_style_scripts(): void 156 156 { 157 157 wp_enqueue_style('bol2api_styles_wc', SHOP2API_PLUGIN_URL . '/assets/bol2api_styles_wc.css', [], $this->version_id()); 158 158 } 159 159 160 private function add_common_styles_scripts() 160 private function add_common_styles_scripts(): void 161 161 { 162 162 wp_enqueue_style('google-icons', 'https://fonts.googleapis.com/icon?family=Material+Icons|Material+Icons+Outlined', [], $this->version_id()); … … 165 165 } 166 166 167 private function add_dashboard_localize() 167 private function add_dashboard_localize(): void 168 168 { 169 169 require_once SHOP2API_PLUGIN_PATH . '/includes/Api/Shop2ApiConnect.php'; … … 188 188 } 189 189 190 private function add_other_localize() 190 private function add_other_localize(): void 191 191 { 192 192 $shop_2_api_connection = new Shop2ApiConnect(); … … 200 200 } 201 201 202 private function add_mapping_localize() 202 private function add_mapping_localize(): void 203 203 { 204 204 require_once SHOP2API_PLUGIN_PATH . '/includes/Api/Shop2ApiConnect.php'; … … 227 227 } 228 228 229 private function add_orders_localize() 229 private function add_orders_localize(): void 230 230 { 231 231 require_once SHOP2API_PLUGIN_PATH . '/includes/Api/Shop2ApiConnect.php'; … … 252 252 } 253 253 254 private function add_koopblock_localize() 254 private function add_koopblock_localize(): void 255 255 { 256 256 require_once SHOP2API_PLUGIN_PATH . '/includes/Api/Shop2ApiConnect.php'; -
shop-2-api/trunk/includes/Base/EnqueueWC.php
r2858515 r2868951 107 107 //'description' => __( 'An optional EAN Number that you can map on Shop-2-api or use for orders.', 'woocommerce' ), 108 108 'value' => $shop2api_ean_number 109 ) 110 ); 111 // Add COMBI EAN Number 112 $shop2api_combi_ean_number = get_post_meta( $post->ID, 'shop2api_combi_ean_number', true); 113 woocommerce_wp_text_input( 114 array( 115 'id' => 'shop2api_combi_ean_number', 116 'wrapper_class' => 'cfwc-custom-field', 117 'label' => __('Combideal EAN Number', 'woocommerce'), 118 //'description' => __( 'An optional EAN Number that you can map on Shop-2-api or use for orders.', 'woocommerce' ), 119 'value' => $shop2api_combi_ean_number 109 120 ) 110 121 ); … … 214 225 $shop2api_ean_number = $_POST['shop2api_ean_number'] ?? ''; 215 226 update_post_meta($post_id, 'shop2api_ean_number', $shop2api_ean_number); 227 228 $shop2api_combi_ean_number = $_POST['shop2api_combi_ean_number'] ?? ''; 229 update_post_meta($post_id, 'shop2api_combi_ean_number', $shop2api_combi_ean_number); 216 230 } 217 231 … … 228 242 $shop2api_ean_number = $_POST['shop2api_ean_number'] ?? ''; 229 243 update_post_meta($variation_id, 'shop2api_ean_number', $shop2api_ean_number); 244 245 $shop2api_combi_ean_number = $_POST['shop2api_combi_ean_number'] ?? ''; 246 update_post_meta($variation_id, 'shop2api_combi_ean_number', $shop2api_combi_ean_number); 230 247 } 231 248 … … 275 292 //'description' => __( 'An optional EAN Number that you can map on Shop-2-api or use for orders.', 'woocommerce' ), 276 293 'value' => $shop2api_ean_number ? $shop2api_ean_number : '' 294 ) 295 ); 296 297 // Combi EAN Number 298 $shop2api_combi_ean_number = get_post_meta( $variation->ID, 'shop2api_combi_ean_number', true); 299 woocommerce_wp_text_input( 300 array( 301 'id' => 'shop2api_combi_ean_number', 302 'wrapper_class' => 'cfwc-custom-field', 303 'label' => __('Combideal EAN Number', 'woocommerce'), 304 //'description' => __( 'An optional EAN Number that you can map on Shop-2-api or use for orders.', 'woocommerce' ), 305 'value' => $shop2api_combi_ean_number ? $shop2api_combi_ean_number : '' 277 306 ) 278 307 ); -
shop-2-api/trunk/includes/Base/EnqueueWCAPI.php
r2858517 r2868951 14 14 { 15 15 // Custom API Endpoint for getting Metadata 16 add_action( 'rest_api_init', array($this, 'register_ meta_field_search_endpoint' ));16 add_action( 'rest_api_init', array($this, 'register_shop2api_woocommerce_endpoints' )); 17 17 } 18 18 19 19 20 20 //Add Custom API End-Point 21 22 function register_meta_field_search_endpoint(): void 21 function register_shop2api_woocommerce_endpoints(): void 23 22 { 24 23 register_rest_route( 'shop-2-api/v1', '/search-meta', array( … … 26 25 'callback' => array($this, 'meta_field_search_callback'), 27 26 ) ); 27 register_rest_route( 'shop-2-api/v1', '/search-meta-contains', array( 28 'methods' => 'GET', 29 'callback' => array($this, 'meta_field_search_callback'), 30 ) ); 28 31 } 29 32 30 function meta_field_search_callback( $request) {33 function meta_field_search_callback($request) { 31 34 $meta_key = $request->get_param( 'meta_key' ); 32 $meta_value = $request->get_param( 'meta_value' ); 35 $meta_value = esc_sql($request->get_param( 'meta_value' )); 36 $compare_operator = $request->get_param( 'compare_operator' ); 37 33 38 $args = array( 34 39 'post_type' => 'product', … … 37 42 'key' => $meta_key, 38 43 'value' => $meta_value, 39 'compare' => '='44 'compare' => $compare_operator 40 45 ) 41 46 ) 42 47 ); 48 43 49 $query = new WP_Query( $args ); 44 50 if ( $query->have_posts() ) { … … 53 59 'meta_key' => $meta_key, 54 60 'meta_value' => $meta_value, 61 'stock_quantity' => $product->get_stock_quantity() 55 62 ); 56 63 } 57 64 return rest_ensure_response( $products ); 58 65 } else { 59 return new WP_Error( 'no_products_found', 'No products found. ', array( 'status' => 402 ) );66 return new WP_Error( 'no_products_found', 'No products found. (' . $meta_value . ')', array( 'status' => 402 ) ); 60 67 } 61 68 } -
shop-2-api/trunk/readme.txt
r2858515 r2868951 125 125 2) Small WooCommerce API Changes 126 126 127 = 1.0.21 = 128 1) Implementation of Combo Deals 129 127 130 == Instructions == 128 131 1) After installing Shop2Api, a new menu item will be available in your WordPress installation, you can continue and click on it and enter you token which was mailed to you. -
shop-2-api/trunk/shop-2-api.php
r2858515 r2868951 5 5 Plugin URI: https://wordpress.org/plugins/shop-2-api/ 6 6 Description: The plugin Shop2Api will sync products between e-Commerce platforms. The current supported e-Commerce platforms are WooCommerce to Bol.com, and we are working on Amazon, Shopify and others. We added a koopblok service so that you can check if you lower your price can you get koopblok. 7 Version: 1.0.2 07 Version: 1.0.21 8 8 Requires at least: 5.0 9 9 Requires PHP: 7.2 … … 34 34 define('SHOP2API_PLUGIN_URL', plugin_dir_url( __FILE__ )); 35 35 define('SHOP2API_PLUGIN', plugin_basename( __FILE__ )); 36 define ('VERSION', '1.0.2 0');36 define ('VERSION', '1.0.21'); 37 37 38 38 // Register items in the project. -
shop-2-api/trunk/templates/bol-order-sync.php
r2858515 r2868951 29 29 </td> 30 30 <td> 31 <select name="orders-ean" id="orders-ean" >31 <select name="orders-ean" id="orders-ean"> 32 32 <option value="Product" selected>WooCommerce Product Field</option> 33 33 <option value="MetaData">WooCommerce Metadata Field</option> … … 35 35 <span id="sku" class="error-message"></span> 36 36 </td> 37 <td><select name="orders-ean-value" id="orders-ean-value" ></select></td>37 <td><select name="orders-ean-value" id="orders-ean-value"></select></td> 38 38 </tr> 39 39 <tr> … … 69 69 </tr> 70 70 <tr> 71 <td title=" I Have Combi Deals" style="padding: 15px 0px 0px 0px;">71 <td title="Activate the Combi Checks, when orders come in a check will be done if there is any combi deals related to the ean number" style="padding: 15px 0px 0px 0px;"> 72 72 <span class="dashicons dashicons-info-outline"></span> 73 73 </td> 74 74 <td> 75 <label for="orders- enable_combi">Enable Combi-Deals</label>75 <label for="orders-combideals-active">Combi Deal Service Active</label> 76 76 </td> 77 77 <td> 78 <input type="checkbox" name="orders- enable_combi" id="orders-enable_combi"/>79 <span id=" enable_combi" class="error-message"></span>78 <input type="checkbox" name="orders-combideals-active" id="orders-combideals-active"/> 79 <span id="combideals-active" class="error-message"></span> 80 80 </td> 81 81 </tr> 82 82 <tr> 83 <td title=" The EAN Number field which combines all the Combi Deals." style="padding: 15px 0px 0px 0px;">83 <td title="EAN Number Field in WC" style="padding: 15px 0px 0px 0px;"> 84 84 <span class="dashicons dashicons-info-outline"></span> 85 85 </td> 86 86 <td> 87 <label for="orders- active">Combi EAN Number</label>87 <label for="orders-combideal-ean">Combi EAN Field</label> 88 88 </td> 89 89 <td> 90 <input type="checkbox" name="orders-combideals" id="orders-active"/> 91 <span id="combideals" class="error-message"></span> 90 <select name="orders-combideal-ean" id="orders-combideal-ean"> 91 <option value="Product" selected>WooCommerce Product Field</option> 92 <option value="MetaData">WooCommerce Metadata Field</option> 93 </select> 94 <span id="orders-combideal-ean" class="error-message"></span> 92 95 </td> 96 <td><select name="orders-combideal-ean-value" id="orders-combideal-ean-value"></select></td> 93 97 </tr> 94 98 </tbody> 95 99 </table> 96 100 <br/> 97 <button type='submit' class='btn primary' title="Save the data to Shop-2-API" id="save-order-data">101 <button type='submit' class='btn primary' title="Save the data to Shop-2-API" id="save-order-data"> 98 102 Save 99 103 </button>
Note: See TracChangeset
for help on using the changeset viewer.